diff --git a/assets/index.1d741587.js b/assets/index.1d741587.js deleted file mode 100644 index 218d6240c..000000000 --- a/assets/index.1d741587.js +++ /dev/null @@ -1 +0,0 @@ -var Xe=Object.defineProperty,Ke=Object.defineProperties;var Qe=Object.getOwnPropertyDescriptors;var rt=Object.getOwnPropertySymbols;var Ye=Object.prototype.hasOwnProperty,Ze=Object.prototype.propertyIsEnumerable;var it=(n,t,e)=>t in n?Xe(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,l=(n,t)=>{for(var e in t||(t={}))Ye.call(t,e)&&it(n,e,t[e]);if(rt)for(var e of rt(t))Ze.call(t,e)&&it(n,e,t[e]);return n},p=(n,t)=>Ke(n,Qe(t));import{P as O,z as Je,A as We,B as rn,C as no,D as to,H as eo,E as oo}from"./index.8e502404.js";const cn=(n,t)=>Array(Math.abs(t)+1).join(n);function ro(n,t,e){return function(...o){return console.warn(`${n} is deprecated. Use ${t}.`),e.apply(this,o)}}function jt(n){return n!==null&&typeof n=="object"&&typeof n.name=="string"}function It(n){return n!==null&&typeof n=="object"&&typeof n.step=="number"&&typeof n.alt=="number"}const St=[0,2,4,-1,1,3,5],Tt=St.map(n=>Math.floor(n*7/12));function Et(n){const{step:t,alt:e,oct:o,dir:r=1}=n,i=St[t]+7*e;if(o===void 0)return[r*i];const m=o-Tt[t]-4*e;return[r*i,r*m]}const io=[3,0,4,1,5,2,6];function Ct(n){const[t,e,o]=n,r=io[mo(t)],i=Math.floor((t+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const m=e+4*i+Tt[r];return{step:r,alt:i,oct:m,dir:o}}function mo(n){const t=(n+1)%7;return t<0?7+t:t}const xt={empty:!0,name:"",pc:"",acc:""},mt=new Map,so=n=>"CDEFGAB".charAt(n),ao=n=>n<0?cn("b",-n):cn("#",n),co=n=>n[0]==="b"?-n.length:n.length;function y(n){const t=mt.get(n);if(t)return t;const e=typeof n=="string"?lo(n):It(n)?y(fo(n)):jt(n)?y(n.name):xt;return mt.set(n,e),e}const uo=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function Mo(n){const t=uo.exec(n);return[t[1].toUpperCase(),t[2].replace(/x/g,"##"),t[3],t[4]]}function xn(n){return y(Ct(n))}const Po=(n,t)=>(n%t+t)%t,En=[0,2,4,5,7,9,11];function lo(n){const t=Mo(n);if(t[0]===""||t[3]!=="")return xt;const e=t[0],o=t[1],r=t[2],i=(e.charCodeAt(0)+3)%7,m=co(o),s=r.length?+r:void 0,a=Et({step:i,alt:m,oct:s}),u=e+o+r,c=e+o,d=(En[i]+m+120)%12,P=s===void 0?Po(En[i]+m,12)-12*99:En[i]+m+12*(s+1),b=P>=0&&P<=127?P:null,h=s===void 0?null:Math.pow(2,(P-69)/12)*440;return{empty:!1,acc:o,alt:m,chroma:d,coord:a,freq:h,height:P,letter:e,midi:b,name:u,oct:s,pc:c,step:i}}function fo(n){const{step:t,alt:e,oct:o}=n,r=so(t);if(!r)return"";const i=r+ao(e);return o||o===0?i+o:i}const _n={empty:!0,name:"",acc:""},ho="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",po="(AA|A|P|M|m|d|dd)([-+]?\\d+)",yo=new RegExp("^"+ho+"|"+po+"$");function bo(n){const t=yo.exec(`${n}`);return t===null?["",""]:t[1]?[t[1],t[2]]:[t[4],t[3]]}const st={};function $(n){return typeof n=="string"?st[n]||(st[n]=go(n)):It(n)?$(Ao(n)):jt(n)?$(n.name):_n}const at=[0,2,4,5,7,9,11],_t="PMMPPMM";function go(n){const t=bo(n);if(t[0]==="")return _n;const e=+t[0],o=t[1],r=(Math.abs(e)-1)%7,i=_t[r];if(i==="M"&&o==="P")return _n;const m=i==="M"?"majorable":"perfectable",s=""+e+o,a=e<0?-1:1,u=e===8||e===-8?e:a*(r+1),c=$o(m,o),d=Math.floor((Math.abs(e)-1)/7),P=a*(at[r]+c+12*d),b=(a*(at[r]+c)%12+12)%12,h=Et({step:r,alt:c,oct:d,dir:a});return{empty:!1,name:s,num:e,q:o,step:r,alt:c,dir:a,type:m,simple:u,semitones:P,chroma:b,coord:h,oct:d}}function On(n,t){const[e,o=0]=n,r=e*7+o*12<0,i=t||r?[-e,-o,-1]:[e,o,1];return $(Ct(i))}function $o(n,t){return t==="M"&&n==="majorable"||t==="P"&&n==="perfectable"?0:t==="m"&&n==="majorable"?-1:/^A+$/.test(t)?t.length:/^d+$/.test(t)?-1*(n==="perfectable"?t.length:t.length+1):0}function Ao(n){const{step:t,alt:e,oct:o=0,dir:r}=n;if(!r)return"";const i=t+1+7*o,m=i===0?t+1:i,s=r<0?"-":"",a=_t[t]==="M"?"majorable":"perfectable";return s+m+vo(a,e)}function vo(n,t){return t===0?n==="majorable"?"M":"P":t===-1&&n==="majorable"?"m":t>0?cn("A",t):cn("d",n==="perfectable"?t:t+1)}function Mn(n,t){const e=y(n),o=$(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return xn(m).name}function No(n,t){const e=y(n),o=y(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(m*7/12),a=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return On([m,s],a).name}function jo(n,t){const e=[];for(;t--;e[t]=t+n);return e}function Io(n,t){const e=[];for(;t--;e[t]=n-t);return e}function So(n,t){return nt===0||t)}const D={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},wt=n=>Number(n).toString(2),ct=n=>parseInt(n,2),Eo=/^[01]{12}$/;function Dt(n){return Eo.test(n)}const Co=n=>typeof n=="number"&&n>=0&&n<=4095,xo=n=>n&&Dt(n.chroma),ut={[D.chroma]:D};function V(n){const t=Dt(n)?n:Co(n)?wt(n):Array.isArray(n)?Oo(n):xo(n)?n.chroma:D.chroma;return ut[t]=ut[t]||Fo(t)}const _o=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function wo(n){const t=[];for(let e=0;e<12;e++)n.charAt(e)==="1"&&t.push(_o[e]);return t}function Do(n,t=!0){const o=V(n).chroma.split("");return To(o.map((r,i)=>{const m=Pn(i,o);return t&&m[0]==="0"?null:m.join("")}))}function Vt(n){const t=V(n).setNum;return e=>{const o=V(e).setNum;return t&&t!==o&&(o&t)===o}}function Vo(n){const t=V(n).setNum;return e=>{const o=V(e).setNum;return t&&t!==o&&(o|t)===o}}function ko(n){const t=n.split("");return t.map((e,o)=>Pn(o,t).join(""))}function Fo(n){const t=ct(n),e=ko(n).map(ct).filter(i=>i>=2048).sort()[0],o=wt(e),r=wo(n);return{empty:!1,name:"",setNum:t,chroma:n,normalized:o,intervals:r}}function Oo(n){if(n.length===0)return D.chroma;let t;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;oGo(r,i))}function Go(n,t){mn[t]=n}function Bo(n){const t=e=>n.indexOf(e)!==-1;return t("5A")?"Augmented":t("3M")?"Major":t("5d")?"Diminished":t("3m")?"Minor":"Unknown"}Ro.forEach(([n,t,e])=>qo(n.split(" "),e.split(" "),t));Rn.sort((n,t)=>n.setNum-t.setNum);const Lo=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],Ho=p(l({},D),{intervals:[],aliases:[]});let zn=[],U={};function Uo(){return zn.map(n=>n.name)}function kt(n){return U[n]||Ho}function Ft(){return zn.slice()}function Xo(n,t,e=[]){const o=p(l({},V(n)),{name:t,intervals:n,aliases:e});return zn.push(o),U[o.name]=o,U[o.setNum]=o,U[o.chroma]=o,o.aliases.forEach(r=>Ko(o,r)),o}function Ko(n,t){U[t]=n}Lo.forEach(([n,t,...e])=>Xo(n.split(" "),t,e));function Qo(){return"1P 2M 3M 4P 5P 6m 7m".split(" ")}const Ot=$,Yo=n=>$(n).name,Zo=n=>$(n).semitones,Jo=n=>$(n).q,Wo=n=>$(n).num;function nr(n){const t=$(n);return t.empty?"":t.simple+t.q}function tr(n){const t=$(n);if(t.empty)return"";const e=(7-t.step)%7,o=t.type==="perfectable"?-t.alt:-(t.alt+1);return $({step:e,alt:o,oct:t.oct,dir:t.dir}).name}const er=[1,2,2,3,3,4,5,5,6,6,7,7],or="P m M m M P d P m M m M".split(" ");function rr(n){const t=n<0?-1:1,e=Math.abs(n),o=e%12,r=Math.floor(e/12);return t*(er[o]+7*r)+or[o]}const ir=No,Rt=zt((n,t)=>[n[0]+t[0],n[1]+t[1]]),mr=n=>t=>Rt(n,t),sr=zt((n,t)=>[n[0]-t[0],n[1]-t[1]]);function ar(n,t){const e=Ot(n);if(e.empty)return"";const[o,r,i]=e.coord;return On([o+t,r,i]).name}var dt={names:Qo,get:Ot,name:Yo,num:Wo,semitones:Zo,quality:Jo,fromSemitones:rr,distance:ir,invert:tr,simplify:nr,add:Rt,addTo:mr,substract:sr,transposeFifths:ar};function zt(n){return(t,e)=>{const o=$(t).coord,r=$(e).coord;if(o&&r){const i=n(o,r);return On(i).name}}}const cr=Math.log(2),ur=Math.log(440);function qt(n){const t=12*(Math.log(n)-ur)/cr+69;return Math.round(t*100)/100}const dr="C C# D D# E F F# G G# A A# B".split(" "),Mr="C Db D Eb E F Gb G Ab A Bb B".split(" ");function q(n,t={}){if(isNaN(n)||n===-1/0||n===1/0)return"";n=Math.round(n);const o=(t.sharps===!0?dr:Mr)[n%12];if(t.pitchClass)return o;const r=Math.floor(n/12)-1;return o+r}const Pr=["C","D","E","F","G","A","B"],Gt=n=>n.name,Bt=n=>n.map(y).filter(t=>!t.empty);function lr(n){return n===void 0?Pr.slice():Array.isArray(n)?Bt(n).map(Gt):[]}const v=y,fr=n=>v(n).name,hr=n=>v(n).pc,pr=n=>v(n).acc,yr=n=>v(n).oct,br=n=>v(n).midi,gr=n=>v(n).freq,$r=n=>v(n).chroma;function Lt(n){return q(n)}function Ar(n){return q(qt(n))}function vr(n){return q(qt(n),{sharps:!0})}function Nr(n){return q(n,{sharps:!0})}const qn=Mn,jr=Mn,Ht=n=>t=>qn(t,n),Ir=Ht,Ut=n=>t=>qn(n,t),Sr=Ut;function Xt(n,t){const e=v(n);if(e.empty)return"";const[o,r]=e.coord;return xn(r===void 0?[o+t]:[o+t,r]).name}const Tr=Xt,Gn=(n,t)=>n.height-t.height,Er=(n,t)=>t.height-n.height;function Kt(n,t){return t=t||Gn,Bt(n).sort(t).map(Gt)}function Qt(n){return Kt(n,Gn).filter((t,e,o)=>e===0||t!==o[e-1])}const Cr=n=>{const t=v(n);return t.empty?"":q(t.midi||t.chroma,{sharps:t.alt>0,pitchClass:t.midi===null})};function Yt(n,t){const e=v(n);if(e.empty)return"";const o=v(t||q(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,m=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+m;return o.pc+s}var X={names:lr,get:v,name:fr,pitchClass:hr,accidentals:pr,octave:yr,midi:br,ascending:Gn,descending:Er,sortedNames:Kt,sortedUniqNames:Qt,fromMidi:Lt,fromMidiSharps:Nr,freq:gr,fromFreq:Ar,fromFreqSharps:vr,chroma:$r,transpose:qn,tr:jr,transposeBy:Ht,trBy:Ir,transposeFrom:Ut,trFrom:Sr,transposeFifths:Xt,trFifths:Tr,simplify:Cr,enharmonic:Yt};Object.freeze([]);const Bn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],Mt=p(l({},D),{name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]}),xr=Bn.map(_r),wn={};xr.forEach(n=>{wn[n.name]=n,n.aliases.forEach(t=>{wn[t]=n})});function Zt(n){return typeof n=="string"?wn[n.toLowerCase()]||Mt:n&&n.name?Zt(n.name):Mt}function _r(n){const[t,e,o,r,i,m,s]=n,a=s?[s]:[],u=Number(e).toString(2),c=kt(r).intervals;return{empty:!1,intervals:c,modeNum:t,chroma:u,normalized:u,name:r,setNum:e,alt:o,triad:i,seventh:m,aliases:a}}function Jt(n){return(t,e)=>{const o=Zt(t);if(o.empty)return[];const r=Pn(o.modeNum,n),i=o.intervals.map(m=>Mn(e,m));return r.map((m,s)=>i[s]+m)}}Jt(Bn.map(n=>n[4]));Jt(Bn.map(n=>n[5]));const wr={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Wt(n){if(typeof n!="string")return["",""];const t=n.indexOf(" "),e=y(n.substring(0,t));if(e.empty){const r=y(n);return r.empty?["",n]:[r.name,""]}const o=n.substring(e.name.length+1);return[e.name,o.length?o:""]}const Dr=Uo;function E(n){const t=Array.isArray(n)?n:Wt(n),e=y(t[0]).name,o=kt(t[1]);if(o.empty)return wr;const r=o.name,i=e?o.intervals.map(s=>Mn(e,s)):[],m=e?e+" "+r:r;return p(l({},o),{name:m,type:r,tonic:e,notes:i})}const Vr=ro("Scale.scale","Scale.get",E);function kr(n){const t=E(n),e=Vt(t.chroma);return zo().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function Fr(n){const t=E(n),e=Vo(t.chroma);return Ft().filter(o=>e(o.chroma)).map(o=>o.name)}function Or(n){const t=Vt(E(n).chroma);return Ft().filter(e=>t(e.chroma)).map(e=>e.name)}function ne(n){const t=n.map(r=>y(r).pc).filter(r=>r),e=t[0],o=Qt(t);return Pn(o.indexOf(e),o)}function Rr(n){const t=E(n);if(t.empty)return[];const e=t.tonic?t.notes:t.intervals;return Do(t.chroma).map((o,r)=>{const i=E(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function zr(n){const t=Array.isArray(n)?ne(n):E(n).notes,e=t.map(o=>y(o).chroma);return o=>{const r=y(typeof o=="number"?Lt(o):o),i=r.height;if(i===void 0)return;const m=i%12,s=e.indexOf(m);if(s!==-1)return Yt(r.name,t[s])}}function qr(n){const t=zr(n);return(e,o)=>{const r=y(e).height,i=y(o).height;return r===void 0||i===void 0?[]:So(r,i).map(t).filter(m=>m)}}var Dn={get:E,names:Dr,extended:Fr,modeNames:Rr,reduced:Or,scaleChords:kr,scaleNotes:ne,tokenize:Wt,rangeOf:qr,scale:Vr};function te(n,t,e){let[o,r]=Dn.tokenize(n),{notes:i}=Dn.get(`${o} ${r}`);if(i=i.map(b=>X.get(b).pc),t=Number(t),isNaN(t))throw new Error(`scale offset "${t}" not a number`);const{pc:m,oct:s=3}=X.get(e),a=i.indexOf(m);if(a===-1)throw new Error(`note "${e}" is not in scale "${n}"`);let u=a,c=s,d=m;const P=Math.sign(t);for(;Math.abs(u-a)0&&d[0]==="C"&&(c+=P)}return d+c}O.prototype._transpose=function(n){return this._withHap(t=>{const e=isNaN(Number(n))?String(n):dt.fromSemitones(n);if(typeof t.value=="number"){const o=typeof e=="string"?dt.semitones(e)||0:e;return t.withValue(()=>t.value+o)}return t.withValue(()=>X.simplify(X.transpose(t.value,e)))})};O.prototype._scaleTranspose=function(n){return this._withHap(t=>{if(!t.context.scale)throw new Error("can only use scaleTranspose after .scale");if(typeof t.value!="string")throw new Error("can only use scaleTranspose with notes");return t.withValue(()=>te(t.context.scale,Number(n),t.value))})};O.prototype._scale=function(n){return this._withHap(t=>{let e=t.value;const o=Number(e);if(!isNaN(o)){let[r,i]=Dn.tokenize(n);const{pc:m,oct:s=3}=X.get(r);e=te(m+" "+i,o,m+s)}return t.withValue(()=>e).setContext(p(l({},t.context),{scale:n}))})};O.prototype.define("transpose",(n,t)=>t.transpose(n),{composable:!0,patternified:!0});O.prototype.define("scale",(n,t)=>t.scale(n),{composable:!0,patternified:!0});O.prototype.define("scaleTranspose",(n,t)=>t.scaleTranspose(n),{composable:!0,patternified:!0});var ee={},Ln={},Q={};Q.__esModule=!0;Q.getBestVoicing=void 0;function Gr(n){var t=n.chord,e=n.range,o=n.finder,r=n.picker,i=n.lastVoicing,m=o(t,e);return m.length?r(m,i):[]}Q.getBestVoicing=Gr;var ln={};const R=(n,t)=>Array(Math.abs(t)+1).join(n);function j(n,t,e){return function(...o){return console.warn(`${n} is deprecated. Use ${t}.`),e.apply(this,o)}}function Y(n){return n!==null&&typeof n=="object"&&typeof n.name=="string"}function Z(n){return n!==null&&typeof n=="object"&&typeof n.step=="number"&&typeof n.alt=="number"}const oe=[0,2,4,-1,1,3,5],re=oe.map(n=>Math.floor(n*7/12));function fn(n){const{step:t,alt:e,oct:o,dir:r=1}=n,i=oe[t]+7*e;if(o===void 0)return[r*i];const m=o-re[t]-4*e;return[r*i,r*m]}const Br=[3,0,4,1,5,2,6];function hn(n){const[t,e,o]=n,r=Br[Lr(t)],i=Math.floor((t+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const m=e+4*i+re[r];return{step:r,alt:i,oct:m,dir:o}}function Lr(n){const t=(n+1)%7;return t<0?7+t:t}const ie={empty:!0,name:"",pc:"",acc:""},Pt=new Map,Hn=n=>"CDEFGAB".charAt(n),G=n=>n<0?R("b",-n):R("#",n),J=n=>n[0]==="b"?-n.length:n.length;function M(n){const t=Pt.get(n);if(t)return t;const e=typeof n=="string"?Xr(n):Z(n)?M(Kr(n)):Y(n)?M(n.name):ie;return Pt.set(n,e),e}const Hr=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function pn(n){const t=Hr.exec(n);return[t[1].toUpperCase(),t[2].replace(/x/g,"##"),t[3],t[4]]}function K(n){return M(hn(n))}const Ur=(n,t)=>(n%t+t)%t,Cn=[0,2,4,5,7,9,11];function Xr(n){const t=pn(n);if(t[0]===""||t[3]!=="")return ie;const e=t[0],o=t[1],r=t[2],i=(e.charCodeAt(0)+3)%7,m=J(o),s=r.length?+r:void 0,a=fn({step:i,alt:m,oct:s}),u=e+o+r,c=e+o,d=(Cn[i]+m+120)%12,P=s===void 0?Ur(Cn[i]+m,12)-12*99:Cn[i]+m+12*(s+1),b=P>=0&&P<=127?P:null,h=s===void 0?null:Math.pow(2,(P-69)/12)*440;return{empty:!1,acc:o,alt:m,chroma:d,coord:a,freq:h,height:P,letter:e,midi:b,name:u,oct:s,pc:c,step:i}}function Kr(n){const{step:t,alt:e,oct:o}=n,r=Hn(t);if(!r)return"";const i=r+G(e);return o||o===0?i+o:i}const Vn={empty:!0,name:"",acc:""},Qr="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",Yr="(AA|A|P|M|m|d|dd)([-+]?\\d+)",Zr=new RegExp("^"+Qr+"|"+Yr+"$");function Un(n){const t=Zr.exec(`${n}`);return t===null?["",""]:t[1]?[t[1],t[2]]:[t[4],t[3]]}const lt={};function f(n){return typeof n=="string"?lt[n]||(lt[n]=Jr(n)):Z(n)?f(ni(n)):Y(n)?f(n.name):Vn}const ft=[0,2,4,5,7,9,11],me="PMMPPMM";function Jr(n){const t=Un(n);if(t[0]==="")return Vn;const e=+t[0],o=t[1],r=(Math.abs(e)-1)%7,i=me[r];if(i==="M"&&o==="P")return Vn;const m=i==="M"?"majorable":"perfectable",s=""+e+o,a=e<0?-1:1,u=e===8||e===-8?e:a*(r+1),c=Wr(m,o),d=Math.floor((Math.abs(e)-1)/7),P=a*(ft[r]+c+12*d),b=(a*(ft[r]+c)%12+12)%12,h=fn({step:r,alt:c,oct:d,dir:a});return{empty:!1,name:s,num:e,q:o,step:r,alt:c,dir:a,type:m,simple:u,semitones:P,chroma:b,coord:h,oct:d}}function W(n,t){const[e,o=0]=n,r=e*7+o*12<0,i=t||r?[-e,-o,-1]:[e,o,1];return f(hn(i))}function Wr(n,t){return t==="M"&&n==="majorable"||t==="P"&&n==="perfectable"?0:t==="m"&&n==="majorable"?-1:/^A+$/.test(t)?t.length:/^d+$/.test(t)?-1*(n==="perfectable"?t.length:t.length+1):0}function ni(n){const{step:t,alt:e,oct:o=0,dir:r}=n;if(!r)return"";const i=t+1+7*o,m=i===0?t+1:i,s=r<0?"-":"",a=me[t]==="M"?"majorable":"perfectable";return s+m+ti(a,e)}function ti(n,t){return t===0?n==="majorable"?"M":"P":t===-1&&n==="majorable"?"m":t>0?R("A",t):R("d",n==="perfectable"?t:t+1)}function g(n,t){const e=M(n),o=f(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return K(m).name}function B(n,t){const e=M(n),o=M(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(m*7/12),a=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return W([m,s],a).name}var se=Object.freeze(Object.defineProperty({__proto__:null,accToAlt:J,altToAcc:G,coordToInterval:W,coordToNote:K,decode:hn,deprecate:j,distance:B,encode:fn,fillStr:R,interval:f,isNamed:Y,isPitch:Z,note:M,stepToLetter:Hn,tokenizeInterval:Un,tokenizeNote:pn,transpose:g},Symbol.toStringTag,{value:"Module"}));const ht=(n,t)=>Array(t+1).join(n),ei=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function ae(n){const t=ei.exec(n);return t?[t[1],t[2],t[3]]:["","",""]}function un(n){const[t,e,o]=ae(n);if(e==="")return"";let r=4;for(let m=0;m96?e.toUpperCase()+i+(r+1):e+i+r}function ce(n){const t=M(n);if(t.empty||!t.oct&&t.oct!==0)return"";const{letter:e,acc:o,oct:r}=t,i=o[0]==="b"?o.replace(/b/g,"_"):o.replace(/#/g,"^"),m=r>4?e.toLowerCase():e,s=r===5?"":r>4?ht("'",r-5):ht(",",4-r);return i+m+s}function oi(n,t){return ce(g(un(n),t))}function ri(n,t){return B(un(n),un(t))}var ii={abcToScientificNotation:un,scientificToAbcNotation:ce,tokenize:ae,transpose:oi,distance:ri};function mi(n,t){const e=[];for(;t--;e[t]=t+n);return e}function si(n,t){const e=[];for(;t--;e[t]=n-t);return e}function ai(n,t){return nt===0||t)}function ue(n){return n.map(e=>M(e)).filter(e=>!e.empty).sort((e,o)=>e.height-o.height).map(e=>e.name)}function di(n){return ue(n).filter((t,e,o)=>e===0||t!==o[e-1])}function Mi(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function de(n){return n.length===0?[[]]:de(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}var Pi=Object.freeze(Object.defineProperty({__proto__:null,compact:ui,permutations:de,range:ai,rotate:ci,shuffle:Mi,sortedNoteNames:ue,sortedUniqNoteNames:di},Symbol.toStringTag,{value:"Module"}));function li(n,t){const e=[];for(;t--;e[t]=t+n);return e}function fi(n,t){const e=[];for(;t--;e[t]=n-t);return e}function yn(n,t){return nt===0||t)}function hi(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function Me(n){return n.length===0?[[]]:Me(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}var pi={compact:Xn,permutations:Me,range:yn,rotate:nn,shuffle:hi};const k={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},Kn=n=>Number(n).toString(2),pt=n=>parseInt(n,2),yi=/^[01]{12}$/;function Pe(n){return yi.test(n)}const bi=n=>typeof n=="number"&&n>=0&&n<=4095,gi=n=>n&&Pe(n.chroma),yt={[k.chroma]:k};function A(n){const t=Pe(n)?n:bi(n)?Kn(n):Array.isArray(n)?_i(n):gi(n)?n.chroma:k.chroma;return yt[t]=yt[t]||xi(t)}const $i=j("Pcset.pcset","Pcset.get",A),Ai=n=>A(n).chroma,vi=n=>A(n).intervals,Ni=n=>A(n).setNum,ji=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Ii(n){const t=[];for(let e=0;e<12;e++)n.charAt(e)==="1"&&t.push(ji[e]);return t}function Si(){return yn(2048,4095).map(Kn)}function Qn(n,t=!0){const o=A(n).chroma.split("");return Xn(o.map((r,i)=>{const m=nn(i,o);return t&&m[0]==="0"?null:m.join("")}))}function Ti(n,t){return A(n).setNum===A(t).setNum}function bn(n){const t=A(n).setNum;return e=>{const o=A(e).setNum;return t&&t!==o&&(o&t)===o}}function gn(n){const t=A(n).setNum;return e=>{const o=A(e).setNum;return t&&t!==o&&(o|t)===o}}function le(n){const t=A(n);return e=>{const o=M(e);return t&&!o.empty&&t.chroma.charAt(o.chroma)==="1"}}function Ei(n){const t=le(n);return e=>e.filter(t)}var fe={get:A,chroma:Ai,num:Ni,intervals:vi,chromas:Si,isSupersetOf:gn,isSubsetOf:bn,isNoteIncludedIn:le,isEqual:Ti,filter:Ei,modes:Qn,pcset:$i};function Ci(n){const t=n.split("");return t.map((e,o)=>nn(o,t).join(""))}function xi(n){const t=pt(n),e=Ci(n).map(pt).filter(i=>i>=2048).sort()[0],o=Kn(e),r=Ii(n);return{empty:!1,name:"",setNum:t,chroma:n,normalized:o,intervals:r}}function _i(n){if(n.length===0)return k.chroma;let t;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;on.name).filter(n=>n)}function Fi(){return L.map(n=>n.aliases[0]).filter(n=>n)}function Oi(){return Object.keys(_)}function H(){return L.slice()}const Ri=j("ChordType.entries","ChordType.all",H);function zi(){L=[],_={}}function he(n,t,e){const o=Gi(n),r=p(l({},A(n)),{name:e||"",quality:o,intervals:n,aliases:t});L.push(r),r.name&&(_[r.name]=r),_[r.setNum]=r,_[r.chroma]=r,r.aliases.forEach(i=>qi(r,i))}function qi(n,t){_[t]=n}function Gi(n){const t=e=>n.indexOf(e)!==-1;return t("5A")?"Augmented":t("3M")?"Major":t("5d")?"Diminished":t("3m")?"Minor":"Unknown"}wi.forEach(([n,t,e])=>he(n.split(" "),e.split(" "),t));L.sort((n,t)=>n.setNum-t.setNum);var pe={names:ki,symbols:Fi,get:Yn,all:H,add:he,removeAll:zi,keys:Oi,entries:Ri,chordType:Vi};const Bi=n=>{const t=n.reduce((e,o)=>{const r=M(o).chroma;return r!==void 0&&(e[r]=e[r]||M(o).name),e},{});return e=>t[e]};function Li(n){const t=n.map(o=>M(o).pc).filter(o=>o);return M.length===0?[]:Hi(t,1).filter(o=>o.weight).sort((o,r)=>r.weight-o.weight).map(o=>o.name)}function Hi(n,t){const e=n[0],o=M(e).chroma,r=Bi(n),i=Qn(n,!1),m=[];return i.forEach((s,a)=>{H().filter(c=>c.chroma===s).forEach(c=>{const d=c.aliases[0],P=r(a);a!==o?m.push({weight:.5*t,name:`${P}${d}/${e}`}):m.push({weight:1*t,name:`${P}${d}`})})}),m}const Ui=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],Xi=p(l({},k),{intervals:[],aliases:[]});let $n=[],w={};function ye(){return $n.map(n=>n.name)}function An(n){return w[n]||Xi}const Ki=j("ScaleDictionary.scaleType","ScaleType.get",An);function tn(){return $n.slice()}const Qi=j("ScaleDictionary.entries","ScaleType.all",tn);function Yi(){return Object.keys(w)}function Zi(){$n=[],w={}}function be(n,t,e=[]){const o=p(l({},A(n)),{name:t,intervals:n,aliases:e});return $n.push(o),w[o.name]=o,w[o.setNum]=o,w[o.chroma]=o,o.aliases.forEach(r=>Ji(o,r)),o}function Ji(n,t){w[t]=n}Ui.forEach(([n,t,...e])=>be(n.split(" "),t,e));var ge={names:ye,get:An,all:tn,add:be,removeAll:Zi,keys:Yi,entries:Qi,scaleType:Ki};const kn={empty:!0,name:"",symbol:"",root:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},Wi=/^(6|64|7|9|11|13)$/;function vn(n){const[t,e,o,r]=pn(n);return t===""?["",n]:t==="A"&&r==="ug"?["","aug"]:!r&&(o==="4"||o==="5")?[t+e,o]:Wi.test(o)?[t+e,o+r]:[t+e+o,r]}function en(n){if(n==="")return kn;if(Array.isArray(n)&&n.length===2)return sn(n[1],n[0]);{const[t,e]=vn(n),o=sn(e,t);return o.empty?sn(n):o}}function sn(n,t,e){const o=Yn(n),r=M(t||""),i=M(e||"");if(o.empty||t&&r.empty||e&&i.empty)return kn;const m=B(r.pc,i.pc),s=o.intervals.indexOf(m)+1;if(!i.empty&&!s)return kn;const a=Array.from(o.intervals);for(let P=1;Pg(r,P));n=o.aliases.indexOf(n)!==-1?n:o.aliases[0];const c=`${r.empty?"":r.pc}${n}${i.empty||s<=1?"":"/"+i.pc}`,d=`${t?r.pc+" ":""}${o.name}${s>1&&e?" over "+i.pc:""}`;return p(l({},o),{name:d,symbol:c,type:o.name,root:i.name,intervals:a,rootDegree:s,tonic:r.name,notes:u})}const nm=j("Chord.chord","Chord.get",en);function tm(n,t){const[e,o]=vn(n);return e?g(e,t)+o:n}function em(n){const t=en(n),e=gn(t.chroma);return tn().filter(o=>e(o.chroma)).map(o=>o.name)}function om(n){const t=en(n),e=gn(t.chroma);return H().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}function rm(n){const t=en(n),e=bn(t.chroma);return H().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}var im={getChord:sn,get:en,detect:Li,chordScales:em,extended:om,reduced:rm,tokenize:vn,transpose:tm,chord:nm};const mm=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],Nn=[];mm.forEach(([n,t,e])=>lm(n,t,e));const sm={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function am(){return Nn.reduce((n,t)=>(t.names.forEach(e=>n.push(e)),n),[])}function cm(){return Nn.map(n=>n.shorthand)}const um=/^([^.]+)(\.*)$/;function Zn(n){const[t,e,o]=um.exec(n)||[],r=Nn.find(s=>s.shorthand===e||s.names.includes(e));if(!r)return sm;const i=fm(r.fraction,o.length),m=i[0]/i[1];return p(l({},r),{name:n,dots:o,value:m,fraction:i})}const dm=n=>Zn(n).value,Mm=n=>Zn(n).fraction;var Pm={names:am,shorthands:cm,get:Zn,value:dm,fraction:Mm};function lm(n,t,e){Nn.push({empty:!1,dots:"",name:"",value:1/n,fraction:n<1?[1/n,1]:[1,n],shorthand:t,names:e})}function fm(n,t){const e=Math.pow(2,t);let o=n[0]*e,r=n[1]*e;const i=o;for(let m=0;mf(n).name,ym=n=>f(n).semitones,bm=n=>f(n).q,gm=n=>f(n).num;function Ae(n){const t=f(n);return t.empty?"":t.simple+t.q}function $m(n){const t=f(n);if(t.empty)return"";const e=(7-t.step)%7,o=t.type==="perfectable"?-t.alt:-(t.alt+1);return f({step:e,alt:o,oct:t.oct,dir:t.dir}).name}const Am=[1,2,2,3,3,4,5,5,6,6,7,7],vm="P m M m M P d P m M m M".split(" ");function Nm(n){const t=n<0?-1:1,e=Math.abs(n),o=e%12,r=Math.floor(e/12);return t*(Am[o]+7*r)+vm[o]}const jm=B,ve=je((n,t)=>[n[0]+t[0],n[1]+t[1]]),Im=n=>t=>ve(n,t),Sm=je((n,t)=>[n[0]-t[0],n[1]-t[1]]);function Ne(n,t){const e=$e(n);if(e.empty)return"";const[o,r,i]=e.coord;return W([o+t,r,i]).name}var Tm={names:hm,get:$e,name:pm,num:gm,semitones:ym,quality:bm,fromSemitones:Nm,distance:jm,invert:$m,simplify:Ae,add:ve,addTo:Im,substract:Sm,transposeFifths:Ne};function je(n){return(t,e)=>{const o=f(t).coord,r=f(e).coord;if(o&&r){const i=n(o,r);return W(i).name}}}function Ie(n){return+n>=0&&+n<=127}function Se(n){if(Ie(n))return+n;const t=M(n);return t.empty?null:t.midi}function Em(n,t=440){return Math.pow(2,(n-69)/12)*t}const Cm=Math.log(2),xm=Math.log(440);function Jn(n){const t=12*(Math.log(n)-xm)/Cm+69;return Math.round(t*100)/100}const _m="C C# D D# E F F# G G# A A# B".split(" "),wm="C Db D Eb E F Gb G Ab A Bb B".split(" ");function x(n,t={}){if(isNaN(n)||n===-1/0||n===1/0)return"";n=Math.round(n);const o=(t.sharps===!0?_m:wm)[n%12];if(t.pitchClass)return o;const r=Math.floor(n/12)-1;return o+r}var Dm={isMidi:Ie,toMidi:Se,midiToFreq:Em,midiToNoteName:x,freqToMidi:Jn};const Vm=["C","D","E","F","G","A","B"],Te=n=>n.name,Ee=n=>n.map(M).filter(t=>!t.empty);function km(n){return n===void 0?Vm.slice():Array.isArray(n)?Ee(n).map(Te):[]}const N=M,Fm=n=>N(n).name,Om=n=>N(n).pc,Rm=n=>N(n).acc,zm=n=>N(n).oct,qm=n=>N(n).midi,Gm=n=>N(n).freq,Bm=n=>N(n).chroma;function Ce(n){return x(n)}function Lm(n){return x(Jn(n))}function Hm(n){return x(Jn(n),{sharps:!0})}function Um(n){return x(n,{sharps:!0})}const Wn=g,Xm=g,xe=n=>t=>Wn(t,n),Km=xe,_e=n=>t=>Wn(n,t),Qm=_e;function dn(n,t){const e=N(n);if(e.empty)return"";const[o,r]=e.coord;return K(r===void 0?[o+t]:[o+t,r]).name}const Ym=dn,nt=(n,t)=>n.height-t.height,Zm=(n,t)=>t.height-n.height;function we(n,t){return t=t||nt,Ee(n).sort(t).map(Te)}function De(n){return we(n,nt).filter((t,e,o)=>e===0||t!==o[e-1])}const Jm=n=>{const t=N(n);return t.empty?"":x(t.midi||t.chroma,{sharps:t.alt>0,pitchClass:t.midi===null})};function Ve(n,t){const e=N(n);if(e.empty)return"";const o=N(t||x(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,m=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+m;return o.pc+s}var Wm={names:km,get:N,name:Fm,pitchClass:Om,accidentals:Rm,octave:zm,midi:qm,ascending:nt,descending:Zm,sortedNames:we,sortedUniqNames:De,fromMidi:Ce,fromMidiSharps:Um,freq:Gm,fromFreq:Lm,fromFreqSharps:Hm,chroma:Bm,transpose:Wn,tr:Xm,transposeBy:xe,trBy:Km,transposeFrom:_e,trFrom:Qm,transposeFifths:dn,trFifths:Ym,simplify:Jm,enharmonic:Ve};const ke={empty:!0,name:"",chordType:""},bt={};function T(n){return typeof n=="string"?bt[n]||(bt[n]=ms(n)):typeof n=="number"?T(jn[n]||""):Z(n)?es(n):Y(n)?T(n.name):ke}const ns=j("RomanNumeral.romanNumeral","RomanNumeral.get",T);function ts(n=!0){return(n?jn:is).slice()}function es(n){return T(G(n.alt)+jn[n.step])}const os=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function rs(n){return os.exec(n)||["","","",""]}const Fe="I II III IV V VI VII",jn=Fe.split(" "),is=Fe.toLowerCase().split(" ");function ms(n){const[t,e,o,r]=rs(n);if(!o)return ke;const i=o.toUpperCase(),m=jn.indexOf(i),s=J(e),a=1;return{empty:!1,name:t,roman:o,interval:f({step:m,alt:s,dir:a}).name,acc:e,chordType:r,alt:s,step:m,major:o===i,oct:0,dir:a}}var ss={names:ts,get:T,romanNumeral:ns};const I=Object.freeze([]),Oe={type:"major",tonic:"",alteration:0,keySignature:""},an={tonic:"",grades:I,intervals:I,scale:I,chords:I,chordsHarmonicFunction:I,chordScales:I},as=p(l(l({},Oe),an),{type:"major",minorRelative:"",scale:I,secondaryDominants:I,secondaryDominantsMinorRelative:I,substituteDominants:I,substituteDominantsMinorRelative:I}),cs=p(l({},Oe),{type:"minor",relativeMajor:"",natural:an,harmonic:an,melodic:an}),gt=(n,t,e="")=>t.map((o,r)=>`${n[r]}${e}${o}`);function In(n,t,e,o){return r=>{const i=n.map(s=>T(s).interval||""),m=i.map(s=>g(r,s));return{tonic:r,grades:n,intervals:i,scale:m,chords:gt(m,t),chordsHarmonicFunction:e.slice(),chordScales:gt(m,o," ")}}}const Re=(n,t)=>{const e=M(n),o=M(t);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},us=In("I II III IV V VI VII".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),ds=In("I II bIII IV V bVI bVII".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),Ms=In("I II bIII IV V bVI VII".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),Ps=In("I II bIII IV V VI VII".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function ls(n){const t=M(n).pc;if(!t)return as;const e=us(t),o=Re("C",t),r=i=>{const m=T(i);return m.empty?"":g(n,m.interval)+m.chordType};return p(l({},e),{type:"major",minorRelative:g(t,"-3m"),alteration:o,keySignature:G(o),secondaryDominants:"- VI7 VII7 I7 II7 III7 -".split(" ").map(r),secondaryDominantsMinorRelative:"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ").map(r),substituteDominants:"- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ").map(r),substituteDominantsMinorRelative:"- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" ").map(r)})}function fs(n){const t=M(n).pc;if(!t)return cs;const e=Re("C",t)-3;return{type:"minor",tonic:t,relativeMajor:g(t,"3m"),alteration:e,keySignature:G(e),natural:ds(t),harmonic:Ms(t),melodic:Ps(t)}}function hs(n){return typeof n=="number"?dn("C",n):typeof n=="string"&&/^b+|#+$/.test(n)?dn("C",J(n)):null}var ps={majorKey:ls,majorTonicFromKeySignature:hs,minorKey:fs};const tt=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],$t=p(l({},k),{name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]}),et=tt.map($s),Fn={};et.forEach(n=>{Fn[n.name]=n,n.aliases.forEach(t=>{Fn[t]=n})});function F(n){return typeof n=="string"?Fn[n.toLowerCase()]||$t:n&&n.name?F(n.name):$t}const ys=j("Mode.mode","Mode.get",F);function ze(){return et.slice()}const bs=j("Mode.mode","Mode.all",ze);function gs(){return et.map(n=>n.name)}function $s(n){const[t,e,o,r,i,m,s]=n,a=s?[s]:[],u=Number(e).toString(2),c=An(r).intervals;return{empty:!1,intervals:c,modeNum:t,chroma:u,normalized:u,name:r,setNum:e,alt:o,triad:i,seventh:m,aliases:a}}function As(n,t){return F(n).intervals.map(e=>g(t,e))}function qe(n){return(t,e)=>{const o=F(t);if(o.empty)return[];const r=nn(o.modeNum,n),i=o.intervals.map(m=>g(e,m));return r.map((m,s)=>i[s]+m)}}const vs=qe(tt.map(n=>n[4])),Ns=qe(tt.map(n=>n[5]));function Ge(n,t){const e=F(t),o=F(n);return e.empty||o.empty?"":Ae(Ne("1P",o.alt-e.alt))}function js(n,t,e){return g(e,Ge(n,t))}var Is={get:F,names:gs,all:ze,distance:Ge,relativeTonic:js,notes:As,triads:vs,seventhChords:Ns,entries:bs,mode:ys};function Ss(n,t){return t.map(T).map(o=>g(n,f(o))+o.chordType)}function Ts(n,t){return t.map(e=>{const[o,r]=vn(e),i=B(n,o);return T(f(i)).name+r})}var Es={fromRomanNumerals:Ss,toRomanNumerals:Ts};function Be(n){const t=Xn(n.map(Se));return!n.length||t.length!==n.length?[]:t.reduce((e,o)=>{const r=e[e.length-1];return e.concat(yn(r,o).slice(1))},[t[0]])}function Cs(n,t){return Be(n).map(e=>x(e,t))}var xs={numeric:Be,chromatic:Cs};const _s={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Le(n){if(typeof n!="string")return["",""];const t=n.indexOf(" "),e=M(n.substring(0,t));if(e.empty){const r=M(n);return r.empty?["",n]:[r.name,""]}const o=n.substring(e.name.length+1);return[e.name,o.length?o:""]}const ws=ye;function C(n){const t=Array.isArray(n)?n:Le(n),e=M(t[0]).name,o=An(t[1]);if(o.empty)return _s;const r=o.name,i=e?o.intervals.map(s=>g(e,s)):[],m=e?e+" "+r:r;return p(l({},o),{name:m,type:r,tonic:e,notes:i})}const Ds=j("Scale.scale","Scale.get",C);function Vs(n){const t=C(n),e=bn(t.chroma);return H().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function ks(n){const t=C(n),e=gn(t.chroma);return tn().filter(o=>e(o.chroma)).map(o=>o.name)}function Fs(n){const t=bn(C(n).chroma);return tn().filter(e=>t(e.chroma)).map(e=>e.name)}function He(n){const t=n.map(r=>M(r).pc).filter(r=>r),e=t[0],o=De(t);return nn(o.indexOf(e),o)}function Os(n){const t=C(n);if(t.empty)return[];const e=t.tonic?t.notes:t.intervals;return Qn(t.chroma).map((o,r)=>{const i=C(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function Rs(n){const t=Array.isArray(n)?He(n):C(n).notes,e=t.map(o=>M(o).chroma);return o=>{const r=M(typeof o=="number"?Ce(o):o),i=r.height;if(i===void 0)return;const m=i%12,s=e.indexOf(m);if(s!==-1)return Ve(r.name,t[s])}}function zs(n){const t=Rs(n);return(e,o)=>{const r=M(e).height,i=M(o).height;return r===void 0||i===void 0?[]:yn(r,i).map(t).filter(m=>m)}}var qs={get:C,names:ws,extended:ks,modeNames:Os,reduced:Fs,scaleChords:Vs,scaleNotes:He,tokenize:Le,rangeOf:zs,scale:Ds};const Gs={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Bs=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function Ls(){return Bs.slice()}const Hs=/^(\d?\d(?:\+\d)*)\/(\d)$/,At=new Map;function Us(n){const t=At.get(n);if(t)return t;const e=Ks(ot(n));return At.set(n,e),e}function ot(n){if(typeof n=="string"){const[i,m,s]=Hs.exec(n)||[];return ot([m,s])}const[t,e]=n,o=+e;if(typeof t=="number")return[t,o];const r=t.split("+").map(i=>+i);return r.length===1?[r[0],o]:[r,o]}var Xs={names:Ls,parse:ot,get:Us};function Ks([n,t]){const e=Array.isArray(n)?n.reduce((s,a)=>s+a,0):n,o=t;if(e===0||o===0)return Gs;const r=Array.isArray(n)?`${n.join("+")}/${t}`:`${n}/${t}`,i=Array.isArray(n)?n:[],m=o===4||o===2?"simple":o===8&&e%3===0?"compound":"irregular";return{empty:!1,name:r,type:m,upper:e,lower:o,additive:i}}const Qs=se,Ys=fe,Zs=pe,Js=ge;var Ws=Object.freeze(Object.defineProperty({__proto__:null,Array:Pi,Core:se,ChordDictionary:Zs,PcSet:Ys,ScaleDictionary:Js,Tonal:Qs,AbcNotation:ii,Chord:im,ChordType:pe,Collection:pi,DurationValue:Pm,Interval:Tm,Key:ps,Midi:Dm,Mode:Is,Note:Wm,Pcset:fe,Progression:Es,Range:xs,RomanNumeral:ss,Scale:qs,ScaleType:ge,TimeSignature:Xs,accToAlt:J,altToAcc:G,coordToInterval:W,coordToNote:K,decode:hn,deprecate:j,distance:B,encode:fn,fillStr:R,interval:f,isNamed:Y,isPitch:Z,note:M,stepToLetter:Hn,tokenizeInterval:Un,tokenizeNote:pn,transpose:g},Symbol.toStringTag,{value:"Module"})),Ue=We(Ws),on={};on.__esModule=!0;on.tokenizeChord=void 0;function na(n){var t=(n||"").match(/^([A-G][b#]*)([^\/]*)[\/]?([A-G][b#]*)?$/);return t?t.slice(1):[]}on.tokenizeChord=na;ln.__esModule=!0;ln.voicingsInRange=void 0;var S=Ue,ta=Ln,ea=on;function oa(n,t,e){t===void 0&&(t=ta.lefthand),e===void 0&&(e=["D3","A4"]);var o=(0,ea.tokenizeChord)(n),r=o[0],i=o[1];if(!t[i])return[];var m=t[i].map(function(a){return a.split(" ")}),s=S.Range.chromatic(e);return m.reduce(function(a,u){var c=u.map(function(h){return S.Interval.substract(h,u[0])}),d=S.Note.transpose(r,u[0]),P=s.filter(function(h){return S.Note.chroma(h)===S.Note.chroma(d)}).filter(function(h){return S.Note.midi(S.Note.transpose(h,c[c.length-1]))<=S.Note.midi(e[1])}).map(function(h){return S.Note.enharmonic(h,d)}),b=P.map(function(h){return c.map(function(Tn){return S.Note.transpose(h,Tn)})});return a.concat(b)},[])}ln.voicingsInRange=oa;(function(n){var t=rn&&rn.__assign||function(){return t=Object.assign||function(s){for(var a,u=1,c=arguments.length;uia({chord:n,dictionary:sa,range:e,picker:ma,lastVoicing:t}),z=O;z.prototype.fmapNested=function(n){return new z(t=>this.query(t).map(e=>to(n(e)).query(t).map(o=>new eo(e.whole,e.part,o.value,o.context))).flat())};z.prototype.voicings=function(n){let t;return n!=null&&n.length||(n=["F3","A4"]),this.fmapNested(e=>(t=aa(e.value,t,n),oo(...t)._withContext(()=>({locations:e.context.locations||[]}))))};z.prototype._rootNotes=function(n=2){return this.fmap(t=>{const[e,o]=t.match(/^([a-gA-G][b#]?).*$/);return o+n})};z.prototype.define("voicings",(n,t)=>t.voicings(n),{composable:!0});z.prototype.define("rootNotes",(n,t)=>t.rootNotes(n),{composable:!0,patternified:!0}); diff --git a/assets/index.376adf92.js b/assets/index.376adf92.js new file mode 100644 index 000000000..83a97127f --- /dev/null +++ b/assets/index.376adf92.js @@ -0,0 +1 @@ +var v=Object.defineProperty,A=Object.defineProperties;var T=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var f=(e,t,r)=>t in e?v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))C.call(t,r)&&f(e,r,t[r]);if(x)for(var r of x(t))b.call(t,r)&&f(e,r,t[r]);return e},w=(e,t)=>A(e,T(t));var u=(e,t,r)=>(f(e,typeof t!="symbol"?t+"":t,r),r);import{S as N,I as q,F as O}from"./index.d3c8394c.js";const F=e=>"("+e+")();",M=e=>URL.createObjectURL(new Blob([F(e)],{type:"text/javascript"})),R=e=>new Worker(M(e));class S{constructor(t,r,i=this.interval){u(this,"worker");u(this,"audioContext");u(this,"interval",.2);u(this,"lastEnd",0);this.audioContext=t,this.interval=i,this.worker=R(()=>{let n,o=null;const s=()=>{o&&(clearInterval(o),o=null)},a=()=>{if(s(),!n)throw new Error("no interval set! call worker.postMessage({interval}) before starting.");o=setInterval(()=>postMessage("tick"),n*1e3)};self.onmessage=function(l){l.data=="start"?a():l.data.interval?(n=l.data.interval,o&&a()):l.data=="stop"&&s()}}),this.worker.postMessage({interval:i}),this.worker.onmessage=n=>{if(n.data==="tick"){const o=this.lastEnd||this.audioContext.currentTime,s=this.audioContext.currentTime+this.interval;this.lastEnd=s,r(o,s)}}}start(){console.log("start..."),this.audioContext.resume(),this.worker.postMessage("start")}stop(){console.log("stop..."),this.worker.postMessage("stop")}}class j{constructor({audioContext:t,interval:r=.2,onEvent:i,latency:n=.2}){u(this,"worker");u(this,"pattern");this.worker=new S(t,(o,s)=>{this.pattern.query(new N(new q(o+n,s+n))).forEach(a=>{!a.part.begin.equals(a.whole.begin)||(a.context.onTrigger&&a.context.onTrigger(a.whole.begin,a,t.currentTime,1),i&&(i==null||i(a)))})},r)}start(){if(!this.pattern)throw new Error("Scheduler: no pattern set! call .setPattern first.");this.worker.start()}stop(){this.worker.stop()}setPattern(t){this.pattern=t}}const{Pattern:c,getFrequency:V,patternify2:_}=O;let d;const p=()=>(d||(d=new AudioContext),d),g=.2,I=(e,t,r,i,n,o,s)=>{const a=p().createGain();return a.gain.setValueAtTime(0,o),a.gain.linearRampToValueAtTime(n,o+e),a.gain.linearRampToValueAtTime(r*n,o+e+t),a.gain.setValueAtTime(r*n,s),a.gain.linearRampToValueAtTime(0,s+i),a};c.prototype.withAudioNode=function(e){return this._withHap(t=>t.setContext(w(h({},t.context),{createAudioNode:(r,i)=>{var n,o;return e(r,i,(o=(n=t.context).createAudioNode)==null?void 0:o.call(n,r,t))}})))};c.prototype._wave=function(e){return this.withAudioNode((t,r)=>{const i=p().createOscillator();i.type=e;const n=V(r);i.frequency.value=n;const o=t!=null?t:r.whole.begin.valueOf()+g,s=o+r.duration.valueOf();return i.start(o),i.stop(s),i})};c.prototype.adsr=function(e=.01,t=.05,r=1,i=.01){return this.withAudioNode((n,o,s)=>{var y;const a=((y=o.context)==null?void 0:y.velocity)||1,l=n!=null?n:o.whole.begin.valueOf()+g,k=l+o.duration.valueOf()+g,m=I(e,t,r,i,a,l,k);return s==null||s.connect(m),m})};c.prototype._filter=function(e="lowpass",t=1e3){return this.withAudioNode((r,i,n)=>{const o=p().createBiquadFilter();return o.type=e,o.frequency.value=t,n==null||n.connect(o),o})};c.prototype.filter=function(e,t){return _(c.prototype._filter)(reify(e),reify(t),this)};c.prototype.out=function(){const e=p().createGain();return e.gain.value=.1,e.connect(p().destination),this.withAudioNode((t,r,i)=>{i||console.warn("out: no source! call .osc() first"),i==null||i.connect(e)})._withHap(t=>{const r=(i,n)=>{var o,s;return(s=(o=n.context)==null?void 0:o.createAudioNode)==null?void 0:s.call(o,i,n)};return t.setContext(w(h({},t.context),{onTrigger:r}))})};c.prototype.define("wave",(e,t)=>t.wave(e),{patternified:!0});export{S as ClockWorker,j as Scheduler,p as getAudioContext}; diff --git a/assets/index.64a82e13.js b/assets/index.64a82e13.js new file mode 100644 index 000000000..53d6c9031 --- /dev/null +++ b/assets/index.64a82e13.js @@ -0,0 +1 @@ +import{W as a,G as b}from"./index.d3c8394c.js";export{a as WebMidi,b as enableWebMidi}; diff --git a/assets/index.3f561dd7.js b/assets/index.6ff547a5.js similarity index 71% rename from assets/index.3f561dd7.js rename to assets/index.6ff547a5.js index e0975164a..ddf54f981 100644 --- a/assets/index.3f561dd7.js +++ b/assets/index.6ff547a5.js @@ -1 +1 @@ -import{L as s,Q as d,K as o,M as l,J as r,O as t,N as f}from"./index.8e502404.js";export{s as getLoadedBuffer,d as getLoadedSamples,o as loadBuffer,l as loadGithubSamples,r as loadWebDirt,t as resetLoadedSamples,f as samples}; +import{L as s,Q as d,K as o,M as l,J as r,O as t,N as f}from"./index.d3c8394c.js";export{s as getLoadedBuffer,d as getLoadedSamples,o as loadBuffer,l as loadGithubSamples,r as loadWebDirt,t as resetLoadedSamples,f as samples}; diff --git a/assets/index.78635c27.js b/assets/index.78635c27.js deleted file mode 100644 index 8627f0107..000000000 --- a/assets/index.78635c27.js +++ /dev/null @@ -1 +0,0 @@ -var x=Object.defineProperty,A=Object.defineProperties;var T=Object.getOwnPropertyDescriptors;var k=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var f=(e,t,r)=>t in e?x(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))C.call(t,r)&&f(e,r,t[r]);if(k)for(var r of k(t))b.call(t,r)&&f(e,r,t[r]);return e},w=(e,t)=>A(e,T(t));var u=(e,t,r)=>(f(e,typeof t!="symbol"?t+"":t,r),r);import{S as N,I as q,F as O}from"./index.8e502404.js";const F=e=>"("+e+")();",M=e=>URL.createObjectURL(new Blob([F(e)],{type:"text/javascript"})),R=e=>new Worker(M(e));class S{constructor(t,r,n=this.interval){u(this,"worker");u(this,"audioContext");u(this,"interval",.2);u(this,"lastEnd",0);this.audioContext=t,this.interval=n,this.worker=R(()=>{let i,o=null;const s=()=>{o&&(clearInterval(o),o=null)},a=()=>{if(s(),!i)throw new Error("no interval set! call worker.postMessage({interval}) before starting.");o=setInterval(()=>postMessage("tick"),i*1e3)};self.onmessage=function(l){l.data=="start"?a():l.data.interval?(i=l.data.interval,o&&a()):l.data=="stop"&&s()}}),this.worker.postMessage({interval:n}),this.worker.onmessage=i=>{if(i.data==="tick"){const o=this.lastEnd||this.audioContext.currentTime,s=this.audioContext.currentTime+this.interval;this.lastEnd=s,r(o,s)}}}start(){console.log("start..."),this.audioContext.resume(),this.worker.postMessage("start")}stop(){console.log("stop..."),this.worker.postMessage("stop")}}class j{constructor({audioContext:t,interval:r=.2,onEvent:n}){u(this,"worker");u(this,"pattern");this.worker=new S(t,(i,o)=>{this.pattern.query(new N(new q(i,o))).forEach(s=>{!s.part.begin.equals(s.whole.begin)||(n?n==null||n(s):console.warn("unplayable event: no audio node nor onEvent callback",s))})},r)}start(){if(!this.pattern)throw new Error("Scheduler: no pattern set! call .setPattern first.");this.worker.start()}stop(){this.worker.stop()}setPattern(t){this.pattern=t}}const{Pattern:c,getFrequency:V,patternify2:_}=O;let d;const p=()=>(d||(d=new AudioContext),d),g=.2,I=(e,t,r,n,i,o,s)=>{const a=p().createGain();return a.gain.setValueAtTime(0,o),a.gain.linearRampToValueAtTime(i,o+e),a.gain.linearRampToValueAtTime(r*i,o+e+t),a.gain.setValueAtTime(r*i,s),a.gain.linearRampToValueAtTime(0,s+n),a};c.prototype.withAudioNode=function(e){return this._withHap(t=>t.setContext(w(h({},t.context),{createAudioNode:(r,n)=>{var i,o;return e(r,n,(o=(i=t.context).createAudioNode)==null?void 0:o.call(i,r,t))}})))};c.prototype._wave=function(e){return this.withAudioNode((t,r)=>{const n=p().createOscillator();n.type=e;const i=V(r);n.frequency.value=i;const o=t!=null?t:r.whole.begin.valueOf()+g,s=o+r.duration.valueOf();return n.start(o),n.stop(s),n})};c.prototype.adsr=function(e=.01,t=.05,r=1,n=.01){return this.withAudioNode((i,o,s)=>{var v;const a=((v=o.context)==null?void 0:v.velocity)||1,l=i!=null?i:o.whole.begin.valueOf()+g,m=l+o.duration.valueOf()+g,y=I(e,t,r,n,a,l,m);return s==null||s.connect(y),y})};c.prototype._filter=function(e="lowpass",t=1e3){return this.withAudioNode((r,n,i)=>{const o=p().createBiquadFilter();return o.type=e,o.frequency.value=t,i==null||i.connect(o),o})};c.prototype.filter=function(e,t){return _(c.prototype._filter)(reify(e),reify(t),this)};c.prototype.out=function(){const e=p().createGain();return e.gain.value=.1,e.connect(p().destination),this.withAudioNode((t,r,n)=>{n||console.warn("out: no source! call .osc() first"),n==null||n.connect(e)})._withHap(t=>{const r=(n,i)=>{var o,s;return(s=(o=i.context)==null?void 0:o.createAudioNode)==null?void 0:s.call(o,n,i)};return t.setContext(w(h({},t.context),{onTrigger:r}))})};c.prototype.define("wave",(e,t)=>t.wave(e),{patternified:!0});export{S as ClockWorker,j as Scheduler,p as getAudioContext}; diff --git a/assets/index.8e502404.js b/assets/index.8e502404.js deleted file mode 100644 index c3159c1d0..000000000 --- a/assets/index.8e502404.js +++ /dev/null @@ -1,1219 +0,0 @@ -var Cr=Object.defineProperty,Or=Object.defineProperties;var Dr=Object.getOwnPropertyDescriptors;var _n=Object.getOwnPropertySymbols;var hr=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable;var cr=(a,e,s)=>e in a?Cr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[e]=s,_t=(a,e)=>{for(var s in e||(e={}))hr.call(e,s)&&cr(a,s,e[s]);if(_n)for(var s of _n(e))dr.call(e,s)&&cr(a,s,e[s]);return a},wt=(a,e)=>Or(a,Dr(e));var sn=(a,e)=>{var s={};for(var o in a)hr.call(a,o)&&e.indexOf(o)<0&&(s[o]=a[o]);if(a!=null&&_n)for(var o of _n(a))e.indexOf(o)<0&&dr.call(a,o)&&(s[o]=a[o]);return s};function _mergeNamespaces(a,e){return e.forEach(function(s){s&&typeof s!="string"&&!Array.isArray(s)&&Object.keys(s).forEach(function(o){if(o!=="default"&&!(o in a)){var c=Object.getOwnPropertyDescriptor(s,o);Object.defineProperty(a,o,c.get?c:{enumerable:!0,get:function(){return s[o]}})}})}),Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}const p$3=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))o(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const _ of d.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&o(_)}).observe(document,{childList:!0,subtree:!0});function s(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerpolicy&&(d.referrerPolicy=c.referrerpolicy),c.crossorigin==="use-credentials"?d.credentials="include":c.crossorigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function o(c){if(c.ep)return;c.ep=!0;const d=s(c);fetch(c.href,d)}};p$3();var commonjsGlobal=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function getDefaultExportFromCjs(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}function getAugmentedNamespace(a){if(a.__esModule)return a;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(a).forEach(function(s){var o=Object.getOwnPropertyDescriptor(a,s);Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:function(){return a[s]}})}),e}var react={exports:{}},react_production_min={};/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var getOwnPropertySymbols$1=Object.getOwnPropertySymbols,hasOwnProperty$1=Object.prototype.hasOwnProperty,propIsEnumerable$1=Object.prototype.propertyIsEnumerable;function toObject$1(a){if(a==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(a)}function shouldUseNative$1(){try{if(!Object.assign)return!1;var a=new String("abc");if(a[5]="de",Object.getOwnPropertyNames(a)[0]==="5")return!1;for(var e={},s=0;s<10;s++)e["_"+String.fromCharCode(s)]=s;var o=Object.getOwnPropertyNames(e).map(function(d){return e[d]});if(o.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var objectAssign$1=shouldUseNative$1()?Object.assign:function(a,e){for(var s,o=toObject$1(a),c,d=1;d=ot},c=function(){},a.unstable_forceFrameRate=function(Ct){0>Ct||125>>1,Rt=Ct[It];if(Rt!==void 0&&0ht(Ft,$t))jt!==void 0&&0>ht(jt,Ft)?(Ct[It]=jt,Ct[qt]=$t,It=qt):(Ct[It]=Ft,Ct[Pt]=$t,It=Pt);else if(jt!==void 0&&0>ht(jt,$t))Ct[It]=jt,Ct[qt]=$t,It=qt;else break e}}return bt}return null}function ht(Ct,bt){var $t=Ct.sortIndex-bt.sortIndex;return $t!==0?$t:Ct.id-bt.id}var pt=[],Et=[],gt=1,ft=null,mt=3,yt=!1,vt=!1,At=!1;function St(Ct){for(var bt=ut(Et);bt!==null;){if(bt.callback===null)at(Et);else if(bt.startTime<=Ct)at(Et),bt.sortIndex=bt.expirationTime,ct(pt,bt);else break;bt=ut(Et)}}function Tt(Ct){if(At=!1,St(Ct),!vt)if(ut(pt)!==null)vt=!0,e(Dt);else{var bt=ut(Et);bt!==null&&s(Tt,bt.startTime-Ct)}}function Dt(Ct,bt){vt=!1,At&&(At=!1,o()),yt=!0;var $t=mt;try{for(St(bt),ft=ut(pt);ft!==null&&(!(ft.expirationTime>bt)||Ct&&!a.unstable_shouldYield());){var It=ft.callback;if(typeof It=="function"){ft.callback=null,mt=ft.priorityLevel;var Rt=It(ft.expirationTime<=bt);bt=a.unstable_now(),typeof Rt=="function"?ft.callback=Rt:ft===ut(pt)&&at(pt),St(bt)}else at(pt);ft=ut(pt)}if(ft!==null)var Pt=!0;else{var Ft=ut(Et);Ft!==null&&s(Tt,Ft.startTime-bt),Pt=!1}return Pt}finally{ft=null,mt=$t,yt=!1}}var xt=c;a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(Ct){Ct.callback=null},a.unstable_continueExecution=function(){vt||yt||(vt=!0,e(Dt))},a.unstable_getCurrentPriorityLevel=function(){return mt},a.unstable_getFirstCallbackNode=function(){return ut(pt)},a.unstable_next=function(Ct){switch(mt){case 1:case 2:case 3:var bt=3;break;default:bt=mt}var $t=mt;mt=bt;try{return Ct()}finally{mt=$t}},a.unstable_pauseExecution=function(){},a.unstable_requestPaint=xt,a.unstable_runWithPriority=function(Ct,bt){switch(Ct){case 1:case 2:case 3:case 4:case 5:break;default:Ct=3}var $t=mt;mt=Ct;try{return bt()}finally{mt=$t}},a.unstable_scheduleCallback=function(Ct,bt,$t){var It=a.unstable_now();switch(typeof $t=="object"&&$t!==null?($t=$t.delay,$t=typeof $t=="number"&&0<$t?It+$t:It):$t=It,Ct){case 1:var Rt=-1;break;case 2:Rt=250;break;case 5:Rt=1073741823;break;case 4:Rt=1e4;break;default:Rt=5e3}return Rt=$t+Rt,Ct={id:gt++,callback:bt,priorityLevel:Ct,startTime:$t,expirationTime:Rt,sortIndex:-1},$t>It?(Ct.sortIndex=$t,ct(Et,Ct),ut(pt)===null&&Ct===ut(Et)&&(At?o():At=!0,s(Tt,$t-It))):(Ct.sortIndex=Rt,ct(pt,Ct),vt||yt||(vt=!0,e(Dt))),Ct},a.unstable_wrapCallback=function(Ct){var bt=mt;return function(){var $t=mt;mt=bt;try{return Ct.apply(this,arguments)}finally{mt=$t}}}})(scheduler_production_min);scheduler.exports=scheduler_production_min;/** @license React v17.0.2 - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var aa=react.exports,m$1=objectAssign$1,r=scheduler.exports;function y(a){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+a,s=1;se}return!1}function B(a,e,s,o,c,d,_){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=o,this.attributeNamespace=c,this.mustUseProperty=s,this.propertyName=a,this.type=e,this.sanitizeURL=d,this.removeEmptyString=_}var D={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var e=a[0];D[e]=new B(e,1,!1,a[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});["capture","download"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});["cols","rows","size","span"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});["rowSpan","start"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var e=a.replace(oa,pa);D[e]=new B(e,1,!1,a,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var e=a.replace(oa,pa);D[e]=new B(e,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var e=a.replace(oa,pa);D[e]=new B(e,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});D.xlinkHref=new B("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});function qa(a,e,s,o){var c=D.hasOwnProperty(e)?D[e]:null,d=c!==null?c.type===0:o?!1:!(!(2b||c[_]!==d[b])return` -`+c[_].replace(" at new "," at ");while(1<=_&&0<=b);break}}}finally{Oa=!1,Error.prepareStackTrace=s}return(a=a?a.displayName||a.name:"")?Na(a):""}function Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na("Lazy");case 13:return Na("Suspense");case 19:return Na("SuspenseList");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return""}}function Ra(a){if(a==null)return null;if(typeof a=="function")return a.displayName||a.name||null;if(typeof a=="string")return a;switch(a){case ua:return"Fragment";case ta:return"Portal";case xa:return"Profiler";case wa:return"StrictMode";case Ba:return"Suspense";case Ca:return"SuspenseList"}if(typeof a=="object")switch(a.$$typeof){case za:return(a.displayName||"Context")+".Consumer";case ya:return(a._context.displayName||"Context")+".Provider";case Aa:var e=a.render;return e=e.displayName||e.name||"",a.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:e=a._payload,a=a._init;try{return Ra(a(e))}catch{}}return null}function Sa(a){switch(typeof a){case"boolean":case"number":case"object":case"string":case"undefined":return a;default:return""}}function Ta(a){var e=a.type;return(a=a.nodeName)&&a.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Ua(a){var e=Ta(a)?"checked":"value",s=Object.getOwnPropertyDescriptor(a.constructor.prototype,e),o=""+a[e];if(!a.hasOwnProperty(e)&&typeof s!="undefined"&&typeof s.get=="function"&&typeof s.set=="function"){var c=s.get,d=s.set;return Object.defineProperty(a,e,{configurable:!0,get:function(){return c.call(this)},set:function(_){o=""+_,d.call(this,_)}}),Object.defineProperty(a,e,{enumerable:s.enumerable}),{getValue:function(){return o},setValue:function(_){o=""+_},stopTracking:function(){a._valueTracker=null,delete a[e]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var e=a._valueTracker;if(!e)return!0;var s=e.getValue(),o="";return a&&(o=Ta(a)?a.checked?"true":"false":a.value),a=o,a!==s?(e.setValue(a),!0):!1}function Xa(a){if(a=a||(typeof document!="undefined"?document:void 0),typeof a=="undefined")return null;try{return a.activeElement||a.body}catch{return a.body}}function Ya(a,e){var s=e.checked;return m$1({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s!=null?s:a._wrapperState.initialChecked})}function Za(a,e){var s=e.defaultValue==null?"":e.defaultValue,o=e.checked!=null?e.checked:e.defaultChecked;s=Sa(e.value!=null?e.value:s),a._wrapperState={initialChecked:o,initialValue:s,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function $a(a,e){e=e.checked,e!=null&&qa(a,"checked",e,!1)}function ab(a,e){$a(a,e);var s=Sa(e.value),o=e.type;if(s!=null)o==="number"?(s===0&&a.value===""||a.value!=s)&&(a.value=""+s):a.value!==""+s&&(a.value=""+s);else if(o==="submit"||o==="reset"){a.removeAttribute("value");return}e.hasOwnProperty("value")?bb(a,e.type,s):e.hasOwnProperty("defaultValue")&&bb(a,e.type,Sa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(a.defaultChecked=!!e.defaultChecked)}function cb(a,e,s){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var o=e.type;if(!(o!=="submit"&&o!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+a._wrapperState.initialValue,s||e===a.value||(a.value=e),a.defaultValue=e}s=a.name,s!==""&&(a.name=""),a.defaultChecked=!!a._wrapperState.initialChecked,s!==""&&(a.name=s)}function bb(a,e,s){(e!=="number"||Xa(a.ownerDocument)!==a)&&(s==null?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+s&&(a.defaultValue=""+s))}function db(a){var e="";return aa.Children.forEach(a,function(s){s!=null&&(e+=s)}),e}function eb(a,e){return a=m$1({children:void 0},e),(e=db(e.children))&&(a.children=e),a}function fb(a,e,s,o){if(a=a.options,e){e={};for(var c=0;c=s.length))throw Error(y(93));s=s[0]}e=s}e==null&&(e=""),s=e}a._wrapperState={initialValue:Sa(s)}}function ib(a,e){var s=Sa(e.value),o=Sa(e.defaultValue);s!=null&&(s=""+s,s!==a.value&&(a.value=s),e.defaultValue==null&&a.defaultValue!==s&&(a.defaultValue=s)),o!=null&&(a.defaultValue=""+o)}function jb(a){var e=a.textContent;e===a._wrapperState.initialValue&&e!==""&&e!==null&&(a.value=e)}var kb={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function lb(a){switch(a){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function mb(a,e){return a==null||a==="http://www.w3.org/1999/xhtml"?lb(e):a==="http://www.w3.org/2000/svg"&&e==="foreignObject"?"http://www.w3.org/1999/xhtml":a}var nb,ob=function(a){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(e,s,o,c){MSApp.execUnsafeLocalFunction(function(){return a(e,s,o,c)})}:a}(function(a,e){if(a.namespaceURI!==kb.svg||"innerHTML"in a)a.innerHTML=e;else{for(nb=nb||document.createElement("div"),nb.innerHTML=""+e.valueOf().toString()+"",e=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;e.firstChild;)a.appendChild(e.firstChild)}});function pb(a,e){if(e){var s=a.firstChild;if(s&&s===a.lastChild&&s.nodeType===3){s.nodeValue=e;return}}a.textContent=e}var qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=["Webkit","ms","Moz","O"];Object.keys(qb).forEach(function(a){rb.forEach(function(e){e=e+a.charAt(0).toUpperCase()+a.substring(1),qb[e]=qb[a]})});function sb(a,e,s){return e==null||typeof e=="boolean"||e===""?"":s||typeof e!="number"||e===0||qb.hasOwnProperty(a)&&qb[a]?(""+e).trim():e+"px"}function tb(a,e){a=a.style;for(var s in e)if(e.hasOwnProperty(s)){var o=s.indexOf("--")===0,c=sb(s,e[s],o);s==="float"&&(s="cssFloat"),o?a.setProperty(s,c):a[s]=c}}var ub=m$1({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vb(a,e){if(e){if(ub[a]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(y(137,a));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(y(60));if(!(typeof e.dangerouslySetInnerHTML=="object"&&"__html"in e.dangerouslySetInnerHTML))throw Error(y(61))}if(e.style!=null&&typeof e.style!="object")throw Error(y(62))}}function wb(a,e){if(a.indexOf("-")===-1)return typeof e.is=="string";switch(a){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function xb(a){return a=a.target||a.srcElement||window,a.correspondingUseElement&&(a=a.correspondingUseElement),a.nodeType===3?a.parentNode:a}var yb=null,zb=null,Ab=null;function Bb(a){if(a=Cb(a)){if(typeof yb!="function")throw Error(y(280));var e=a.stateNode;e&&(e=Db(e),yb(a.stateNode,a.type,e))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,e=Ab;if(Ab=zb=null,Bb(a),e)for(a=0;ao?0:1<s;s++)e.push(a);return e}function $c(a,e,s){a.pendingLanes|=e;var o=e-1;a.suspendedLanes&=o,a.pingedLanes&=o,a=a.eventTimes,e=31-Vc(e),a[e]=s}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return a===0?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,e,s,o){Kb||Ib();var c=hd,d=Kb;Kb=!0;try{Hb(c,a,e,s,o)}finally{(Kb=d)||Mb()}}function id$2(a,e,s,o){ed(dd,hd.bind(null,a,e,s,o))}function hd(a,e,s,o){if(fd){var c;if((c=(e&4)===0)&&0=be),ee=String.fromCharCode(32),fe=!1;function ge(a,e){switch(a){case"keyup":return $d.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function he(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var ie$2=!1;function je(a,e){switch(a){case"compositionend":return he(e);case"keypress":return e.which!==32?null:(fe=!0,ee);case"textInput":return a=e.data,a===ee&&fe?null:a;default:return null}}function ke(a,e){if(ie$2)return a==="compositionend"||!ae&&ge(a,e)?(a=nd(),md=ld=kd=null,ie$2=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:s,offset:e-a};a=o}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Ke(s)}}function Me(a,e){return a&&e?a===e?!0:a&&a.nodeType===3?!1:e&&e.nodeType===3?Me(a,e.parentNode):"contains"in a?a.contains(e):a.compareDocumentPosition?!!(a.compareDocumentPosition(e)&16):!1:!1}function Ne(){for(var a=window,e=Xa();e instanceof a.HTMLIFrameElement;){try{var s=typeof e.contentWindow.location.href=="string"}catch{s=!1}if(s)a=e.contentWindow;else break;e=Xa(a.document)}return e}function Oe(a){var e=a&&a.nodeName&&a.nodeName.toLowerCase();return e&&(e==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||e==="textarea"||a.contentEditable==="true")}var Pe=fa&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;function Ue(a,e,s){var o=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Te||Qe==null||Qe!==Xa(o)||(o=Qe,"selectionStart"in o&&Oe(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Se&&Je(Se,o)||(Se=o,o=oe(Re,"onSelect"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I$1(a,e){Af++,zf[Af]=a.current,a.current=e}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;function Ef(a,e){var s=a.type.contextTypes;if(!s)return Cf;var o=a.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===e)return o.__reactInternalMemoizedMaskedChildContext;var c={},d;for(d in s)c[d]=e[d];return o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=c),c}function Ff(a){return a=a.childContextTypes,a!=null}function Gf(){H(N),H(M)}function Hf(a,e,s){if(M.current!==Cf)throw Error(y(168));I$1(M,e),I$1(N,s)}function If(a,e,s){var o=a.stateNode;if(a=e.childContextTypes,typeof o.getChildContext!="function")return s;o=o.getChildContext();for(var c in o)if(!(c in a))throw Error(y(108,Ra(e)||"Unknown",c));return m$1({},s,o)}function Jf(a){return a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf,Df=M.current,I$1(M,a),I$1(N,N.current),!0}function Kf(a,e,s){var o=a.stateNode;if(!o)throw Error(y(169));s?(a=If(a,e,Df),o.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I$1(M,a)):H(N),I$1(N,s)}var Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=Rf!==void 0?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1e4>dg?Sf:function(){return Sf()-dg};function eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332))}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332))}}function gg(a,e){return a=fg(a),Nf(a,e)}function hg(a,e,s){return a=fg(a),Of(a,e,s)}function ig(){if(bg!==null){var a=bg;bg=null,Pf(a)}jg()}function jg(){if(!cg&&ag!==null){cg=!0;var a=0;try{var e=ag;gg(99,function(){for(;aat?(ht=ut,ut=null):ht=ut.sibling;var pt=et(rt,ut,ot[at],lt);if(pt===null){ut===null&&(ut=ht);break}a&&ut&&pt.alternate===null&&e(rt,ut),st=d(pt,st,at),ct===null?dt=pt:ct.sibling=pt,ct=pt,ut=ht}if(at===ot.length)return s(rt,ut),dt;if(ut===null){for(;atat?(ht=ut,ut=null):ht=ut.sibling;var Et=et(rt,ut,pt.value,lt);if(Et===null){ut===null&&(ut=ht);break}a&&ut&&Et.alternate===null&&e(rt,ut),st=d(Et,st,at),ct===null?dt=Et:ct.sibling=Et,ct=Et,ut=ht}if(pt.done)return s(rt,ut),dt;if(ut===null){for(;!pt.done;at++,pt=ot.next())pt=_e(rt,pt.value,lt),pt!==null&&(st=d(pt,st,at),ct===null?dt=pt:ct.sibling=pt,ct=pt);return dt}for(ut=o(rt,ut);!pt.done;at++,pt=ot.next())pt=tt(ut,rt,at,pt.value,lt),pt!==null&&(a&&pt.alternate!==null&&ut.delete(pt.key===null?at:pt.key),st=d(pt,st,at),ct===null?dt=pt:ct.sibling=pt,ct=pt);return a&&ut.forEach(function(gt){return e(rt,gt)}),dt}return function(rt,st,ot,lt){var dt=typeof ot=="object"&&ot!==null&&ot.type===ua&&ot.key===null;dt&&(ot=ot.props.children);var ct=typeof ot=="object"&&ot!==null;if(ct)switch(ot.$$typeof){case sa:e:{for(ct=ot.key,dt=st;dt!==null;){if(dt.key===ct){switch(dt.tag){case 7:if(ot.type===ua){s(rt,dt.sibling),st=c(dt,ot.props.children),st.return=rt,rt=st;break e}break;default:if(dt.elementType===ot.type){s(rt,dt.sibling),st=c(dt,ot.props),st.ref=Qg(rt,dt,ot),st.return=rt,rt=st;break e}}s(rt,dt);break}else e(rt,dt);dt=dt.sibling}ot.type===ua?(st=Xg(ot.props.children,rt.mode,lt,ot.key),st.return=rt,rt=st):(lt=Vg(ot.type,ot.key,ot.props,null,rt.mode,lt),lt.ref=Qg(rt,st,ot),lt.return=rt,rt=lt)}return _(rt);case ta:e:{for(dt=ot.key;st!==null;){if(st.key===dt)if(st.tag===4&&st.stateNode.containerInfo===ot.containerInfo&&st.stateNode.implementation===ot.implementation){s(rt,st.sibling),st=c(st,ot.children||[]),st.return=rt,rt=st;break e}else{s(rt,st);break}else e(rt,st);st=st.sibling}st=Wg(ot,rt.mode,lt),st.return=rt,rt=st}return _(rt)}if(typeof ot=="string"||typeof ot=="number")return ot=""+ot,st!==null&&st.tag===6?(s(rt,st.sibling),st=c(st,ot),st.return=rt,rt=st):(s(rt,st),st=Ug(ot,rt.mode,lt),st.return=rt,rt=st),_(rt);if(Pg(ot))return nt(rt,st,ot,lt);if(La(ot))return it(rt,st,ot,lt);if(ct&&Rg(rt,ot),typeof ot=="undefined"&&!dt)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(rt.type)||"Component"))}return s(rt,st)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);function dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,e){switch(I$1(ch,e),I$1(bh,a),I$1(ah,$g),a=e.nodeType,a){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:mb(null,"");break;default:a=a===8?e.parentNode:e,e=a.namespaceURI||null,a=a.tagName,e=mb(e,a)}H(ah),I$1(ah,e)}function fh(){H(ah),H(bh),H(ch)}function gh(a){dh(ch.current);var e=dh(ah.current),s=mb(e,a.type);e!==s&&(I$1(bh,a),I$1(ah,s))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);function ih(a){for(var e=a;e!==null;){if(e.tag===13){var s=e.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&64)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===a)break;for(;e.sibling===null;){if(e.return===null||e.return===a)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var jh=null,kh=null,lh=!1;function mh(a,e){var s=nh(5,null,null,0);s.elementType="DELETED",s.type="DELETED",s.stateNode=e,s.return=a,s.flags=8,a.lastEffect!==null?(a.lastEffect.nextEffect=s,a.lastEffect=s):a.firstEffect=a.lastEffect=s}function oh(a,e){switch(a.tag){case 5:var s=a.type;return e=e.nodeType!==1||s.toLowerCase()!==e.nodeName.toLowerCase()?null:e,e!==null?(a.stateNode=e,!0):!1;case 6:return e=a.pendingProps===""||e.nodeType!==3?null:e,e!==null?(a.stateNode=e,!0):!1;case 13:return!1;default:return!1}}function ph(a){if(lh){var e=kh;if(e){var s=e;if(!oh(a,e)){if(e=rf(s.nextSibling),!e||!oh(a,e)){a.flags=a.flags&-1025|2,lh=!1,jh=a;return}mh(jh,s)}jh=a,kh=rf(e.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;a!==null&&a.tag!==5&&a.tag!==3&&a.tag!==13;)a=a.return;jh=a}function rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var e=a.type;if(a.tag!==5||e!=="head"&&e!=="body"&&!nf(e,a.memoizedProps))for(e=kh;e;)mh(a,e),e=rf(e.nextSibling);if(qh(a),a.tag===13){if(a=a.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(y(317));e:{for(a=a.nextSibling,e=0;a;){if(a.nodeType===8){var s=a.data;if(s==="/$"){if(e===0){kh=rf(a.nextSibling);break e}e--}else s!=="$"&&s!=="$!"&&s!=="$?"||e++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}function sh(){kh=jh=null,lh=!1}var th=[];function uh(){for(var a=0;ad))throw Error(y(301));d+=1,T$1=S=null,e.updateQueue=null,vh.current=Fh,a=s(o,c)}while(zh)}if(vh.current=Gh,e=S!==null&&S.next!==null,xh=0,T$1=S=R$1=null,yh=!1,e)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return T$1===null?R$1.memoizedState=T$1=a:T$1=T$1.next=a,T$1}function Ih(){if(S===null){var a=R$1.alternate;a=a!==null?a.memoizedState:null}else a=S.next;var e=T$1===null?R$1.memoizedState:T$1.next;if(e!==null)T$1=e,S=a;else{if(a===null)throw Error(y(310));S=a,a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null},T$1===null?R$1.memoizedState=T$1=a:T$1=T$1.next=a}return T$1}function Jh(a,e){return typeof e=="function"?e(a):e}function Kh(a){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=a;var o=S,c=o.baseQueue,d=s.pending;if(d!==null){if(c!==null){var _=c.next;c.next=d.next,d.next=_}o.baseQueue=c=d,s.pending=null}if(c!==null){c=c.next,o=o.baseState;var b=_=d=null,k=c;do{var $=k.lane;if((xh&$)===$)b!==null&&(b=b.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),o=k.eagerReducer===a?k.eagerState:a(o,k.action);else{var j={lane:$,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};b===null?(_=b=j,d=o):b=b.next=j,R$1.lanes|=$,Dg|=$}k=k.next}while(k!==null&&k!==c);b===null?d=o:b.next=_,He(o,e.memoizedState)||(ug=!0),e.memoizedState=o,e.baseState=d,e.baseQueue=b,s.lastRenderedState=o}return[e.memoizedState,s.dispatch]}function Lh(a){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=a;var o=s.dispatch,c=s.pending,d=e.memoizedState;if(c!==null){s.pending=null;var _=c=c.next;do d=a(d,_.action),_=_.next;while(_!==c);He(d,e.memoizedState)||(ug=!0),e.memoizedState=d,e.baseQueue===null&&(e.baseState=d),s.lastRenderedState=d}return[d,o]}function Mh(a,e,s){var o=e._getVersion;o=o(e._source);var c=e._workInProgressVersionPrimary;if(c!==null?a=c===o:(a=a.mutableReadLanes,(a=(xh&a)===a)&&(e._workInProgressVersionPrimary=o,th.push(e))),a)return s(e._source);throw th.push(e),Error(y(350))}function Nh(a,e,s,o){var c=U;if(c===null)throw Error(y(349));var d=e._getVersion,_=d(e._source),b=vh.current,k=b.useState(function(){return Mh(c,e,s)}),$=k[1],j=k[0];k=T$1;var _e=a.memoizedState,et=_e.refs,tt=et.getSnapshot,nt=_e.source;_e=_e.subscribe;var it=R$1;return a.memoizedState={refs:et,source:e,subscribe:o},b.useEffect(function(){et.getSnapshot=s,et.setSnapshot=$;var rt=d(e._source);if(!He(_,rt)){rt=s(e._source),He(j,rt)||($(rt),rt=Ig(it),c.mutableReadLanes|=rt&c.pendingLanes),rt=c.mutableReadLanes,c.entangledLanes|=rt;for(var st=c.entanglements,ot=rt;0s?98:s,function(){a(!0)}),gg(97<\/script>",a=a.removeChild(a.firstChild)):typeof o.is=="string"?a=_.createElement(s,{is:o.is}):(a=_.createElement(s),s==="select"&&(_=a,o.multiple?_.multiple=!0:o.size&&(_.size=o.size))):a=_.createElementNS(a,s),a[wf]=e,a[xf]=o,Bi(a,e,!1,!1),e.stateNode=a,_=wb(s,o),s){case"dialog":G("cancel",a),G("close",a),c=o;break;case"iframe":case"object":case"embed":G("load",a),c=o;break;case"video":case"audio":for(c=0;cJi&&(e.flags|=64,d=!0,Fi(o,!1),e.lanes=33554432)}else{if(!d)if(a=ih(_),a!==null){if(e.flags|=64,d=!0,s=a.updateQueue,s!==null&&(e.updateQueue=s,e.flags|=4),Fi(o,!0),o.tail===null&&o.tailMode==="hidden"&&!_.alternate&&!lh)return e=e.lastEffect=o.lastEffect,e!==null&&(e.nextEffect=null),null}else 2*O()-o.renderingStartTime>Ji&&s!==1073741824&&(e.flags|=64,d=!0,Fi(o,!1),e.lanes=33554432);o.isBackwards?(_.sibling=e.child,e.child=_):(s=o.last,s!==null?s.sibling=_:e.child=_,o.last=_)}return o.tail!==null?(s=o.tail,o.rendering=s,o.tail=s.sibling,o.lastEffect=e.lastEffect,o.renderingStartTime=O(),s.sibling=null,e=P.current,I$1(P,d?e&1|2:e&1),s):null;case 23:case 24:return Ki(),a!==null&&a.memoizedState!==null!=(e.memoizedState!==null)&&o.mode!=="unstable-defer-without-hiding"&&(e.flags|=4),null}throw Error(y(156,e.tag))}function Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var e=a.flags;return e&4096?(a.flags=e&-4097|64,a):null;case 3:if(fh(),H(N),H(M),uh(),e=a.flags,(e&64)!==0)throw Error(y(285));return a.flags=e&-4097|64,a;case 5:return hh(a),null;case 13:return H(P),e=a.flags,e&4096?(a.flags=e&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}function Mi(a,e){try{var s="",o=e;do s+=Qa(o),o=o.return;while(o);var c=s}catch(d){c=` -Error generating stack: `+d.message+` -`+d.stack}return{value:a,source:e,stack:c}}function Ni(a,e){try{console.error(e.value)}catch(s){setTimeout(function(){throw s})}}var Oi=typeof WeakMap=="function"?WeakMap:Map;function Pi(a,e,s){s=zg(-1,s),s.tag=3,s.payload={element:null};var o=e.value;return s.callback=function(){Qi||(Qi=!0,Ri=o),Ni(a,e)},s}function Si(a,e,s){s=zg(-1,s),s.tag=3;var o=a.type.getDerivedStateFromError;if(typeof o=="function"){var c=e.value;s.payload=function(){return Ni(a,e),o(c)}}var d=a.stateNode;return d!==null&&typeof d.componentDidCatch=="function"&&(s.callback=function(){typeof o!="function"&&(Ti===null?Ti=new Set([this]):Ti.add(this),Ni(a,e));var _=e.stack;this.componentDidCatch(e.value,{componentStack:_!==null?_:""})}),s}var Ui=typeof WeakSet=="function"?WeakSet:Set;function Vi(a){var e=a.ref;if(e!==null)if(typeof e=="function")try{e(null)}catch(s){Wi(a,s)}else e.current=null}function Xi(a,e){switch(e.tag){case 0:case 11:case 15:case 22:return;case 1:if(e.flags&256&&a!==null){var s=a.memoizedProps,o=a.memoizedState;a=e.stateNode,e=a.getSnapshotBeforeUpdate(e.elementType===e.type?s:lg(e.type,s),o),a.__reactInternalSnapshotBeforeUpdate=e}return;case 3:e.flags&256&&qf(e.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163))}function Yi(a,e,s){switch(s.tag){case 0:case 11:case 15:case 22:if(e=s.updateQueue,e=e!==null?e.lastEffect:null,e!==null){a=e=e.next;do{if((a.tag&3)===3){var o=a.create;a.destroy=o()}a=a.next}while(a!==e)}if(e=s.updateQueue,e=e!==null?e.lastEffect:null,e!==null){a=e=e.next;do{var c=a;o=c.next,c=c.tag,(c&4)!==0&&(c&1)!==0&&(Zi(s,a),$i(s,a)),a=o}while(a!==e)}return;case 1:a=s.stateNode,s.flags&4&&(e===null?a.componentDidMount():(o=s.elementType===s.type?e.memoizedProps:lg(s.type,e.memoizedProps),a.componentDidUpdate(o,e.memoizedState,a.__reactInternalSnapshotBeforeUpdate))),e=s.updateQueue,e!==null&&Eg(s,e,a);return;case 3:if(e=s.updateQueue,e!==null){if(a=null,s.child!==null)switch(s.child.tag){case 5:a=s.child.stateNode;break;case 1:a=s.child.stateNode}Eg(s,e,a)}return;case 5:a=s.stateNode,e===null&&s.flags&4&&mf(s.type,s.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:s.memoizedState===null&&(s=s.alternate,s!==null&&(s=s.memoizedState,s!==null&&(s=s.dehydrated,s!==null&&Cc(s))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163))}function aj(a,e){for(var s=a;;){if(s.tag===5){var o=s.stateNode;if(e)o=o.style,typeof o.setProperty=="function"?o.setProperty("display","none","important"):o.display="none";else{o=s.stateNode;var c=s.memoizedProps.style;c=c!=null&&c.hasOwnProperty("display")?c.display:null,o.style.display=sb("display",c)}}else if(s.tag===6)s.stateNode.nodeValue=e?"":s.memoizedProps;else if((s.tag!==23&&s.tag!==24||s.memoizedState===null||s===a)&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===a)break;for(;s.sibling===null;){if(s.return===null||s.return===a)return;s=s.return}s.sibling.return=s.return,s=s.sibling}}function bj(a,e){if(Mf&&typeof Mf.onCommitFiberUnmount=="function")try{Mf.onCommitFiberUnmount(Lf,e)}catch{}switch(e.tag){case 0:case 11:case 14:case 15:case 22:if(a=e.updateQueue,a!==null&&(a=a.lastEffect,a!==null)){var s=a=a.next;do{var o=s,c=o.destroy;if(o=o.tag,c!==void 0)if((o&4)!==0)Zi(e,s);else{o=e;try{c()}catch(d){Wi(o,d)}}s=s.next}while(s!==a)}break;case 1:if(Vi(e),a=e.stateNode,typeof a.componentWillUnmount=="function")try{a.props=e.memoizedProps,a.state=e.memoizedState,a.componentWillUnmount()}catch(d){Wi(e,d)}break;case 5:Vi(e);break;case 4:cj(a,e)}}function dj(a){a.alternate=null,a.child=null,a.dependencies=null,a.firstEffect=null,a.lastEffect=null,a.memoizedProps=null,a.memoizedState=null,a.pendingProps=null,a.return=null,a.updateQueue=null}function ej(a){return a.tag===5||a.tag===3||a.tag===4}function fj(a){e:{for(var e=a.return;e!==null;){if(ej(e))break e;e=e.return}throw Error(y(160))}var s=e;switch(e=s.stateNode,s.tag){case 5:var o=!1;break;case 3:e=e.containerInfo,o=!0;break;case 4:e=e.containerInfo,o=!0;break;default:throw Error(y(161))}s.flags&16&&(pb(e,""),s.flags&=-17);e:t:for(s=a;;){for(;s.sibling===null;){if(s.return===null||ej(s.return)){s=null;break e}s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.flags&2||s.child===null||s.tag===4)continue t;s.child.return=s,s=s.child}if(!(s.flags&2)){s=s.stateNode;break e}}o?gj(a,s,e):hj(a,s,e)}function gj(a,e,s){var o=a.tag,c=o===5||o===6;if(c)a=c?a.stateNode:a.stateNode.instance,e?s.nodeType===8?s.parentNode.insertBefore(a,e):s.insertBefore(a,e):(s.nodeType===8?(e=s.parentNode,e.insertBefore(a,s)):(e=s,e.appendChild(a)),s=s._reactRootContainer,s!=null||e.onclick!==null||(e.onclick=jf));else if(o!==4&&(a=a.child,a!==null))for(gj(a,e,s),a=a.sibling;a!==null;)gj(a,e,s),a=a.sibling}function hj(a,e,s){var o=a.tag,c=o===5||o===6;if(c)a=c?a.stateNode:a.stateNode.instance,e?s.insertBefore(a,e):s.appendChild(a);else if(o!==4&&(a=a.child,a!==null))for(hj(a,e,s),a=a.sibling;a!==null;)hj(a,e,s),a=a.sibling}function cj(a,e){for(var s=e,o=!1,c,d;;){if(!o){o=s.return;e:for(;;){if(o===null)throw Error(y(160));switch(c=o.stateNode,o.tag){case 5:d=!1;break e;case 3:c=c.containerInfo,d=!0;break e;case 4:c=c.containerInfo,d=!0;break e}o=o.return}o=!0}if(s.tag===5||s.tag===6){e:for(var _=a,b=s,k=b;;)if(bj(_,k),k.child!==null&&k.tag!==4)k.child.return=k,k=k.child;else{if(k===b)break e;for(;k.sibling===null;){if(k.return===null||k.return===b)break e;k=k.return}k.sibling.return=k.return,k=k.sibling}d?(_=c,b=s.stateNode,_.nodeType===8?_.parentNode.removeChild(b):_.removeChild(b)):c.removeChild(s.stateNode)}else if(s.tag===4){if(s.child!==null){c=s.stateNode.containerInfo,d=!0,s.child.return=s,s=s.child;continue}}else if(bj(a,s),s.child!==null){s.child.return=s,s=s.child;continue}if(s===e)break;for(;s.sibling===null;){if(s.return===null||s.return===e)return;s=s.return,s.tag===4&&(o=!1)}s.sibling.return=s.return,s=s.sibling}}function ij(a,e){switch(e.tag){case 0:case 11:case 14:case 15:case 22:var s=e.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var o=s=s.next;do(o.tag&3)===3&&(a=o.destroy,o.destroy=void 0,a!==void 0&&a()),o=o.next;while(o!==s)}return;case 1:return;case 5:if(s=e.stateNode,s!=null){o=e.memoizedProps;var c=a!==null?a.memoizedProps:o;a=e.type;var d=e.updateQueue;if(e.updateQueue=null,d!==null){for(s[xf]=o,a==="input"&&o.type==="radio"&&o.name!=null&&$a(s,o),wb(a,c),e=wb(a,o),c=0;cc&&(c=_),s&=~d}if(s=c,s=O()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*nj(s/1960))-s,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}V!==5&&(V=2),k=Mi(k,b),et=_;do{switch(et.tag){case 3:d=k,et.flags|=4096,e&=-e,et.lanes|=e;var ct=Pi(et,d,e);Bg(et,ct);break e;case 1:d=k;var ut=et.type,at=et.stateNode;if((et.flags&64)===0&&(typeof ut.getDerivedStateFromError=="function"||at!==null&&typeof at.componentDidCatch=="function"&&(Ti===null||!Ti.has(at)))){et.flags|=4096,e&=-e,et.lanes|=e;var ht=Si(et,d,e);Bg(et,ht);break e}}et=et.return}while(et!==null)}Zj(s)}catch(pt){e=pt,Y===s&&s!==null&&(Y=s=s.return);continue}break}while(1)}function Pj(){var a=oj.current;return oj.current=Gh,a===null?Gh:a}function Tj(a,e){var s=X;X|=16;var o=Pj();U===a&&W===e||Qj(a,e);do try{ak();break}catch(c){Sj(a,c)}while(1);if(qg(),X=s,oj.current=o,Y!==null)throw Error(y(261));return U=null,W=0,V}function ak(){for(;Y!==null;)bk(Y)}function Rj(){for(;Y!==null&&!Qf();)bk(Y)}function bk(a){var e=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps,e===null?Zj(a):Y=e,pj.current=null}function Zj(a){var e=a;do{var s=e.alternate;if(a=e.return,(e.flags&2048)===0){if(s=Gi(s,e,qj),s!==null){Y=s;return}if(s=e,s.tag!==24&&s.tag!==23||s.memoizedState===null||(qj&1073741824)!==0||(s.mode&4)===0){for(var o=0,c=s.child;c!==null;)o|=c.lanes|c.childLanes,c=c.sibling;s.childLanes=o}a!==null&&(a.flags&2048)===0&&(a.firstEffect===null&&(a.firstEffect=e.firstEffect),e.lastEffect!==null&&(a.lastEffect!==null&&(a.lastEffect.nextEffect=e.firstEffect),a.lastEffect=e.lastEffect),1_&&(b=_,_=ct,ct=b),b=Le(ot,ct),d=Le(ot,_),b&&d&&(dt.rangeCount!==1||dt.anchorNode!==b.node||dt.anchorOffset!==b.offset||dt.focusNode!==d.node||dt.focusOffset!==d.offset)&&(lt=lt.createRange(),lt.setStart(b.node,b.offset),dt.removeAllRanges(),ct>_?(dt.addRange(lt),dt.extend(d.node,d.offset)):(lt.setEnd(d.node,d.offset),dt.addRange(lt)))))),lt=[],dt=ot;dt=dt.parentNode;)dt.nodeType===1&<.push({element:dt,left:dt.scrollLeft,top:dt.scrollTop});for(typeof ot.focus=="function"&&ot.focus(),ot=0;otO()-jj?Qj(a,0):uj|=s),Mj(a,e)}function lj(a,e){var s=a.stateNode;s!==null&&s.delete(e),e=0,e===0&&(e=a.mode,(e&2)===0?e=1:(e&4)===0?e=eg()===99?1:2:(Gj===0&&(Gj=tj),e=Yc(62914560&~Gj),e===0&&(e=4194304))),s=Hg(),a=Kj(a,e),a!==null&&($c(a,e,s),Mj(a,s))}var ck;ck=function(a,e,s){var o=e.lanes;if(a!==null)if(a.memoizedProps!==e.pendingProps||N.current)ug=!0;else if((s&o)!==0)ug=(a.flags&16384)!==0;else{switch(ug=!1,e.tag){case 3:ri(e),sh();break;case 5:gh(e);break;case 1:Ff(e.type)&&Jf(e);break;case 4:eh(e,e.stateNode.containerInfo);break;case 10:o=e.memoizedProps.value;var c=e.type._context;I$1(mg,c._currentValue),c._currentValue=o;break;case 13:if(e.memoizedState!==null)return(s&e.child.childLanes)!==0?ti(a,e,s):(I$1(P,P.current&1),e=hi(a,e,s),e!==null?e.sibling:null);I$1(P,P.current&1);break;case 19:if(o=(s&e.childLanes)!==0,(a.flags&64)!==0){if(o)return Ai(a,e,s);e.flags|=64}if(c=e.memoizedState,c!==null&&(c.rendering=null,c.tail=null,c.lastEffect=null),I$1(P,P.current),o)break;return null;case 23:case 24:return e.lanes=0,mi(a,e,s)}return hi(a,e,s)}else ug=!1;switch(e.lanes=0,e.tag){case 2:if(o=e.type,a!==null&&(a.alternate=null,e.alternate=null,e.flags|=2),a=e.pendingProps,c=Ef(e,M.current),tg(e,s),c=Ch(null,e,o,a,c,s),e.flags|=1,typeof c=="object"&&c!==null&&typeof c.render=="function"&&c.$$typeof===void 0){if(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ff(o)){var d=!0;Jf(e)}else d=!1;e.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,xg(e);var _=o.getDerivedStateFromProps;typeof _=="function"&&Gg(e,o,_,a),c.updater=Kg,e.stateNode=c,c._reactInternals=e,Og(e,o,a,s),e=qi(null,e,o,!0,d,s)}else e.tag=0,fi(null,e,c,s),e=e.child;return e;case 16:c=e.elementType;e:{switch(a!==null&&(a.alternate=null,e.alternate=null,e.flags|=2),a=e.pendingProps,d=c._init,c=d(c._payload),e.type=c,d=e.tag=hk(c),a=lg(c,a),d){case 0:e=li(null,e,c,a,s);break e;case 1:e=pi(null,e,c,a,s);break e;case 11:e=gi(null,e,c,a,s);break e;case 14:e=ii(null,e,c,lg(c.type,a),o,s);break e}throw Error(y(306,c,""))}return e;case 0:return o=e.type,c=e.pendingProps,c=e.elementType===o?c:lg(o,c),li(a,e,o,c,s);case 1:return o=e.type,c=e.pendingProps,c=e.elementType===o?c:lg(o,c),pi(a,e,o,c,s);case 3:if(ri(e),o=e.updateQueue,a===null||o===null)throw Error(y(282));if(o=e.pendingProps,c=e.memoizedState,c=c!==null?c.element:null,yg(a,e),Cg(e,o,null,s),o=e.memoizedState.element,o===c)sh(),e=hi(a,e,s);else{if(c=e.stateNode,(d=c.hydrate)&&(kh=rf(e.stateNode.containerInfo.firstChild),jh=e,d=lh=!0),d){if(a=c.mutableSourceEagerHydrationData,a!=null)for(c=0;c{if(o=`${base$1}${o}`,o in seen)return;seen[o]=!0;const c=o.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${d}`))return;const _=document.createElement("link");if(_.rel=c?"stylesheet":scriptRel,c||(_.as="script",_.crossOrigin=""),_.href=o,document.head.appendChild(_),c)return new Promise((b,k)=>{_.addEventListener("load",b),_.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>e())};var fraction$1={exports:{}};/** - * @license Fraction.js v4.2.0 05/03/2022 - * https://www.xarg.org/2014/03/rational-numbers-in-javascript/ - * - * Copyright (c) 2021, Robert Eisele (robert@xarg.org) - * Dual licensed under the MIT or GPL Version 2 licenses. - **/(function(a,e){(function(s){var o=2e3,c={s:1,n:0,d:1};function d(nt,it){if(isNaN(nt=parseInt(nt,10)))throw tt.InvalidParameter;return nt*it}function _(nt,it){if(it===0)throw tt.DivisionByZero;var rt=Object.create(tt.prototype);rt.s=nt<0?-1:1,nt=nt<0?-nt:nt;var st=et(nt,it);return rt.n=nt/st,rt.d=it/st,rt}function b(nt){for(var it={},rt=nt,st=2,ot=4;ot<=rt;){for(;rt%st===0;)rt/=st,it[st]=(it[st]||0)+1;ot+=1+2*st++}return rt!==nt?rt>1&&(it[rt]=(it[rt]||0)+1):it[nt]=(it[nt]||0)+1,it}var k=function(nt,it){var rt=0,st=1,ot=1,lt=0,dt=0,ct=0,ut=1,at=1,ht=0,pt=1,Et=1,gt=1,ft=1e7,mt;if(nt!=null)if(it!==void 0){if(rt=nt,st=it,ot=rt*st,rt%1!==0||st%1!==0)throw tt.NonIntegerParameter}else switch(typeof nt){case"object":{if("d"in nt&&"n"in nt)rt=nt.n,st=nt.d,"s"in nt&&(rt*=nt.s);else if(0 in nt)rt=nt[0],1 in nt&&(st=nt[1]);else throw tt.InvalidParameter;ot=rt*st;break}case"number":{if(nt<0&&(ot=nt,nt=-nt),nt%1===0)rt=nt;else if(nt>0){for(nt>=1&&(at=Math.pow(10,Math.floor(1+Math.log(nt)/Math.LN10)),nt/=at);pt<=ft&><=ft;)if(mt=(ht+Et)/(pt+gt),nt===mt){pt+gt<=ft?(rt=ht+Et,st=pt+gt):gt>pt?(rt=Et,st=gt):(rt=ht,st=pt);break}else nt>mt?(ht+=Et,pt+=gt):(Et+=ht,gt+=pt),pt>ft?(rt=Et,st=gt):(rt=ht,st=pt);rt*=at}else(isNaN(nt)||isNaN(it))&&(st=rt=NaN);break}case"string":{if(pt=nt.match(/\d+|./g),pt===null)throw tt.InvalidParameter;if(pt[ht]==="-"?(ot=-1,ht++):pt[ht]==="+"&&ht++,pt.length===ht+1?dt=d(pt[ht++],ot):pt[ht+1]==="."||pt[ht]==="."?(pt[ht]!=="."&&(lt=d(pt[ht++],ot)),ht++,(ht+1===pt.length||pt[ht+1]==="("&&pt[ht+3]===")"||pt[ht+1]==="'"&&pt[ht+3]==="'")&&(dt=d(pt[ht],ot),ut=Math.pow(10,pt[ht].length),ht++),(pt[ht]==="("&&pt[ht+2]===")"||pt[ht]==="'"&&pt[ht+2]==="'")&&(ct=d(pt[ht+1],ot),at=Math.pow(10,pt[ht+1].length)-1,ht+=3)):pt[ht+1]==="/"||pt[ht+1]===":"?(dt=d(pt[ht],ot),ut=d(pt[ht+2],1),ht+=3):pt[ht+3]==="/"&&pt[ht+1]===" "&&(lt=d(pt[ht],ot),dt=d(pt[ht+2],ot),ut=d(pt[ht+4],1),ht+=5),pt.length<=ht){st=ut*at,ot=rt=ct+st*lt+at*dt;break}}default:throw tt.InvalidParameter}if(st===0)throw tt.DivisionByZero;c.s=ot<0?-1:1,c.n=Math.abs(rt),c.d=Math.abs(st)};function $(nt,it,rt){for(var st=1;it>0;nt=nt*nt%rt,it>>=1)it&1&&(st=st*nt%rt);return st}function j(nt,it){for(;it%2===0;it/=2);for(;it%5===0;it/=5);if(it===1)return 0;for(var rt=10%it,st=1;rt!==1;st++)if(rt=rt*10%it,st>o)return 0;return st}function _e(nt,it,rt){for(var st=1,ot=$(10,rt,it),lt=0;lt<300;lt++){if(st===ot)return lt;st=st*10%it,ot=ot*10%it}return 0}function et(nt,it){if(!nt)return it;if(!it)return nt;for(;;){if(nt%=it,!nt)return it;if(it%=nt,!it)return nt}}function tt(nt,it){if(k(nt,it),this instanceof tt)nt=et(c.d,c.n),this.s=c.s,this.n=c.n/nt,this.d=c.d/nt;else return _(c.s*c.n,c.d)}tt.DivisionByZero=new Error("Division by Zero"),tt.InvalidParameter=new Error("Invalid argument"),tt.NonIntegerParameter=new Error("Parameters must be integer"),tt.prototype={s:1,n:0,d:1,abs:function(){return _(this.n,this.d)},neg:function(){return _(-this.s*this.n,this.d)},add:function(nt,it){return k(nt,it),_(this.s*this.n*c.d+c.s*this.d*c.n,this.d*c.d)},sub:function(nt,it){return k(nt,it),_(this.s*this.n*c.d-c.s*this.d*c.n,this.d*c.d)},mul:function(nt,it){return k(nt,it),_(this.s*c.s*this.n*c.n,this.d*c.d)},div:function(nt,it){return k(nt,it),_(this.s*c.s*this.n*c.d,this.d*c.n)},clone:function(){return _(this.s*this.n,this.d)},mod:function(nt,it){if(isNaN(this.n)||isNaN(this.d))return new tt(NaN);if(nt===void 0)return _(this.s*this.n%this.d,1);if(k(nt,it),c.n===0&&this.d===0)throw tt.DivisionByZero;return _(this.s*(c.d*this.n)%(c.n*this.d),c.d*this.d)},gcd:function(nt,it){return k(nt,it),_(et(c.n,this.n)*et(c.d,this.d),c.d*this.d)},lcm:function(nt,it){return k(nt,it),c.n===0&&this.n===0?_(0,1):_(c.n*this.n,et(c.n,this.n)*et(c.d,this.d))},ceil:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.ceil(nt*this.s*this.n/this.d),nt)},floor:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.floor(nt*this.s*this.n/this.d),nt)},round:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.round(nt*this.s*this.n/this.d),nt)},inverse:function(){return _(this.s*this.d,this.n)},pow:function(nt,it){if(k(nt,it),c.d===1)return c.s<0?_(Math.pow(this.s*this.d,c.n),Math.pow(this.n,c.n)):_(Math.pow(this.s*this.n,c.n),Math.pow(this.d,c.n));if(this.s<0)return null;var rt=b(this.n),st=b(this.d),ot=1,lt=1;for(var dt in rt)if(dt!=="1"){if(dt==="0"){ot=0;break}if(rt[dt]*=c.n,rt[dt]%c.d===0)rt[dt]/=c.d;else return null;ot*=Math.pow(dt,rt[dt])}for(var dt in st)if(dt!=="1"){if(st[dt]*=c.n,st[dt]%c.d===0)st[dt]/=c.d;else return null;lt*=Math.pow(dt,st[dt])}return c.s<0?_(lt,ot):_(ot,lt)},equals:function(nt,it){return k(nt,it),this.s*this.n*c.d===c.s*c.n*this.d},compare:function(nt,it){k(nt,it);var rt=this.s*this.n*c.d-c.s*c.n*this.d;return(0=0;lt--)ot=ot.inverse().add(rt[lt]);if(ot.sub(it).abs().valueOf()0&&(rt+=it,rt+=" ",st%=ot),rt+=st,rt+="/",rt+=ot),rt},toLatex:function(nt){var it,rt="",st=this.n,ot=this.d;return this.s<0&&(rt+="-"),ot===1?rt+=st:(nt&&(it=Math.floor(st/ot))>0&&(rt+=it,st%=ot),rt+="\\frac{",rt+=st,rt+="}{",rt+=ot,rt+="}"),rt},toContinued:function(){var nt,it=this.n,rt=this.d,st=[];if(isNaN(it)||isNaN(rt))return st;do st.push(Math.floor(it/rt)),nt=it%rt,it=rt,rt=nt;while(it!==1);return st},toString:function(nt){var it=this.n,rt=this.d;if(isNaN(it)||isNaN(rt))return"NaN";nt=nt||15;var st=j(it,rt),ot=_e(it,rt,st),lt=this.s<0?"-":"";if(lt+=it/rt|0,it%=rt,it*=10,it&&(lt+="."),st){for(var dt=ot;dt--;)lt+=it/rt|0,it%=rt,it*=10;lt+="(";for(var dt=st;dt--;)lt+=it/rt|0,it%=rt,it*=10;lt+=")"}else for(var dt=nt;it&&dt--;)lt+=it/rt|0,it%=rt,it*=10;return lt}},Object.defineProperty(tt,"__esModule",{value:!0}),tt.default=tt,tt.Fraction=tt,a.exports=tt})()})(fraction$1);var Fraction=getDefaultExportFromCjs(fraction$1.exports);Fraction.prototype.sam=function(){return this.floor()};Fraction.prototype.nextSam=function(){return this.sam().add(1)};Fraction.prototype.wholeCycle=function(){return new TimeSpan$1(this.sam(),this.nextSam())};Fraction.prototype.cyclePos=function(){return this.sub(this.sam())};Fraction.prototype.lt=function(a){return this.compare(a)<0};Fraction.prototype.gt=function(a){return this.compare(a)>0};Fraction.prototype.lte=function(a){return this.compare(a)<=0};Fraction.prototype.gte=function(a){return this.compare(a)>=0};Fraction.prototype.eq=function(a){return this.compare(a)==0};Fraction.prototype.max=function(a){return this.gt(a)?this:a};Fraction.prototype.min=function(a){return this.lt(a)?this:a};Fraction.prototype.show=function(){return this.s*this.n+"/"+this.d};Fraction.prototype.or=function(a){return this.eq(0)?a:this};const fraction=a=>(typeof a=="number"&&(a=String(a)),Fraction(a)),gcd=(...a)=>a.reduce((e,s)=>e.gcd(s),fraction(1));fraction._original=Fraction;class TimeSpan$1{constructor(e,s){this.begin=fraction(e),this.end=fraction(s)}get spanCycles(){const e=[];var s=this.begin;const o=this.end,c=o.sam();for(;o.gt(s);){if(s.sam().equals(c)){e.push(new TimeSpan$1(s,this.end));break}const d=s.nextSam();e.push(new TimeSpan$1(s,d)),s=d}return e}get duration(){return this.end.sub(this.begin)}cycleArc(){const e=this.begin.cyclePos(),s=e.add(this.duration);return new TimeSpan$1(e,s)}withTime(e){return new TimeSpan$1(e(this.begin),e(this.end))}withEnd(e){return new TimeSpan$1(this.begin,e(this.end))}withCycle(e){const s=this.begin.sam(),o=s.add(e(this.begin.sub(s))),c=s.add(e(this.end.sub(s)));return new TimeSpan$1(o,c)}intersection(e){const s=this.begin.max(e.begin),o=this.end.min(e.end);if(!s.gt(o)&&!(s.equals(o)&&(s.equals(this.end)&&this.begin.lt(this.end)||s.equals(e.end)&&e.begin.lt(e.end))))return new TimeSpan$1(s,o)}intersection_e(e){const s=this.intersection(e);if(s==null)throw"TimeSpans do not intersect";return s}midpoint(){return this.begin.add(this.duration.div(fraction(2)))}equals(e){return this.begin.equals(e.begin)&&this.end.equals(e.end)}show(){return this.begin.show()+" -> "+this.end.show()}}class Hap{constructor(e,s,o,c={},d=!1){this.whole=e,this.part=s,this.value=o,this.context=c,this.stateful=d,d&&console.assert(typeof this.value=="function","Stateful values must be functions")}get duration(){return this.whole.end.sub(this.whole.begin)}wholeOrPart(){return this.whole?this.whole:this.part}withSpan(e){const s=this.whole?e(this.whole):void 0;return new Hap(s,e(this.part),this.value,this.context)}withValue(e){return new Hap(this.whole,this.part,e(this.value),this.context)}hasOnset(){return this.whole!=null&&this.whole.begin.equals(this.part.begin)}resolveState(e){if(this.stateful&&this.hasOnset()){console.log("stateful");const s=this.value,[o,c]=s(e);return[o,new Hap(this.whole,this.part,c,this.context,!1)]}return[e,this]}spanEquals(e){return this.whole==null&&e.whole==null||this.whole.equals(e.whole)}equals(e){return this.spanEquals(e)&&this.part.equals(e.part)&&this.value===e.value}show(){return"("+(this.whole==null?"~":this.whole.show())+", "+this.part.show()+", "+this.value+")"}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}combineContext(e){const s=this;return wt(_t(_t({},s.context),e.context),{locations:(s.context.locations||[]).concat(e.context.locations||[])})}setContext(e){return new Hap(this.whole,this.part,this.value,e)}}class State$1{constructor(e,s={}){this.span=e,this.controls=s}setSpan(e){return new State$1(e,this.controls)}withSpan(e){return this.setSpan(e(this.span))}setControls(e){return new State$1(this.span,e)}}const isNote$4=a=>/^[a-gA-G][#b]*[0-9]$/.test(a),tokenizeNote=a=>{var c;if(typeof a!="string")return[];const[e,s="",o]=((c=a.match(/^([a-gA-G])([#b]*)([0-9])?$/))==null?void 0:c.slice(1))||[];return e?[e,s,o?Number(o):void 0]:[]},toMidi=a=>{const[e,s,o]=tokenizeNote(a);if(!e)throw new Error('not a note: "'+a+'"');const c={c:0,d:2,e:4,f:5,g:7,a:9,b:11}[e.toLowerCase()],d=(s==null?void 0:s.split("").reduce((_,b)=>_+{"#":1,b:-1}[b],0))||0;return(Number(o)+1)*12+c+d},fromMidi=a=>Math.pow(2,(a-69)/12)*440,mod=(a,e)=>(a%e+e)%e,getPlayableNoteValue=a=>{let{value:e,context:s}=a;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(a.value);else if(typeof e=="string"&&!isNote$4(e))throw new Error("not a note: "+e);return e},getFrequency=a=>{let{value:e,context:s}=a;if(typeof e=="object"&&e.freq)return e.freq;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(a.value);else if(typeof e=="string"&&isNote$4(e))e=fromMidi(toMidi(a.value));else if(typeof e!="number")throw new Error("not a note or frequency:"+e);return e},rotate=(a,e)=>a.slice(e).concat(a.slice(0,e)),pipe=(...a)=>a.reduce((e,s)=>(...o)=>e(s(...o)),e=>e),compose=(...a)=>pipe(...a.reverse()),removeUndefineds=a=>a.filter(e=>e!=null),flatten$1=a=>[].concat(...a),id$1=a=>a,constant=(a,e)=>a,listRange=(a,e)=>Array.from({length:e-a+1},(s,o)=>o+a);function curry(a,e){const s=function o(...c){if(c.length>=a.length)return a.apply(this,c);{const d=function(..._){return o.apply(this,c.concat(_))};return e&&e(d,c),d}};return e&&e(s,[]),s}function unionWithObj(a,e,s){const o=Object.keys(a).filter(c=>Object.keys(e).includes(c));return Object.assign({},a,e,Object.fromEntries(o.map(c=>[c,s(a[c],e[c])])))}curry((a,e)=>a*e);curry((a,e)=>e.map(a));function drawLine(a,e=60){let s=0,o=fraction(0),c=[""],d="";for(;c[0].lengthj.hasOnset()).map(j=>j.duration),k=gcd(...b),$=k.inverse();c=c.map(j=>j+"|"),d+="|";for(let j=0;j<$;j++){const[_e,et]=[o,o.add(k)],tt=_.filter(it=>it.whole.begin.lte(_e)&&it.whole.end.gte(et)),nt=tt.length-c.length;nt>0&&(c=c.concat(Array(nt).fill(d))),c=c.map((it,rt)=>{const st=tt[rt];if(st){const lt=st.whole.begin.eq(_e)?""+st.value:"-";return it+lt}return it+"."}),d+=".",o=o.add(k)}s++}return c.join(` -`)}class Pattern$4{constructor(e){this.query=e}queryArc(e,s){return this.query(new State$1(new TimeSpan$1(e,s)))}_splitQueries(){const e=this,s=o=>flatten$1(o.span.spanCycles.map(c=>e.query(o.setSpan(c))));return new Pattern$4(s)}withQuerySpan(e){return new Pattern$4(s=>this.query(s.withSpan(e)))}withQueryTime(e){return new Pattern$4(s=>this.query(s.withSpan(o=>o.withTime(e))))}withHapSpan(e){return new Pattern$4(s=>this.query(s).map(o=>o.withSpan(e)))}withHapTime(e){return this.withHapSpan(s=>s.withTime(e))}_withHaps(e){return new Pattern$4(s=>e(this.query(s)))}_withHap(e){return this._withHaps(s=>s.map(e))}_setContext(e){return this._withHap(s=>s.setContext(e))}_withContext(e){return this._withHap(s=>s.setContext(e(s.context)))}_stripContext(){return this._withHap(e=>e.setContext({}))}withLocation(e,s){const o={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{const d=(c.locations||[]).concat([o]);return wt(_t({},c),{locations:d})})}withMiniLocation(e,s){const o={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{let d=c.locations||[];return d=d.map(({start:_,end:b})=>{const k=_.line===1?o.start.column:0;return{start:wt(_t({},_),{line:_.line-1+(o.start.line-1)+1,column:_.column-1+k}),end:wt(_t({},b),{line:b.line-1+(o.start.line-1)+1,column:b.column-1+k})}}),wt(_t({},c),{locations:d})})}withValue(e){return new Pattern$4(s=>this.query(s).map(o=>o.withValue(e)))}fmap(e){return this.withValue(e)}_filterHaps(e){return new Pattern$4(s=>this.query(s).filter(e))}_filterValues(e){return new Pattern$4(s=>this.query(s).filter(o=>e(o.value)))}_removeUndefineds(){return this._filterValues(e=>e!=null)}onsetsOnly(){return this._filterHaps(e=>e.hasOnset())}discreteOnly(){return this._filterHaps(e=>e.whole)}_appWhole(e,s){const o=this,c=function(d){const _=o.query(d),b=s.query(d),k=function($,j){const _e=$.part.intersection(j.part);if(_e!=null)return new Hap(e($.whole,j.whole),_e,$.value(j.value),j.combineContext($))};return flatten$1(_.map($=>removeUndefineds(b.map(j=>k($,j)))))};return new Pattern$4(c)}appBoth(e){const s=function(o,c){if(!(o==null||c==null))return o.intersection_e(c)};return this._appWhole(s,e)}appLeft(e){const s=this,o=function(c){const d=[];for(const _ of s.query(c)){const b=e.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=_.part.intersection(k.part);if(j){const _e=_.value(k.value),et=k.combineContext(_),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(o)}appRight(e){const s=this,o=function(c){const d=[];for(const _ of e.query(c)){const b=s.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=k.part.intersection(_.part);if(j){const _e=k.value(_.value),et=_.combineContext(k),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(o)}firstCycle(e=!1){var s=this;return e||(s=s._stripContext()),s.query(new State$1(new TimeSpan$1(fraction(0),fraction(1))))}get _firstCycleValues(){return this.firstCycle().map(e=>e.value)}get _showFirstCycle(){return this.firstCycle().map(e=>`${e.value}: ${e.whole.begin.toFraction()} - ${e.whole.end.toFraction()}`)}_sortHapsByPart(){return this._withHaps(e=>e.sort((s,o)=>s.part.begin.sub(o.part.begin).or(s.part.end.sub(o.part.end)).or(s.whole.begin.sub(o.whole.begin).or(s.whole.end.sub(o.whole.end)))))}_opIn(e,s){return this.fmap(s).appLeft(reify$1(e))}_opOut(e,s){return this.fmap(s).appRight(reify$1(e))}_opMix(e,s){return this.fmap(s).appBoth(reify$1(e))}_opSqueeze(e,s){const o=reify$1(e);return this.fmap(c=>o.fmap(d=>s(c)(d)))._squeezeJoin()}_opSqueezeOut(e,s){const o=this;return reify$1(e).fmap(d=>o.fmap(_=>s(_)(d)))._squeezeJoin()}_opTrig(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._trigJoin()}_opTrigzero(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._TrigzeroJoin()}_asNumber(e=!1,s=!1){return this._withHap(o=>{const c=Number(o.value);if(!isNaN(c))return o.withValue(()=>c);const d={e:Math.E,pi:Math.PI}[o.value];if(typeof d!="undefined")return o.withValue(()=>d);if(isNote$4(o.value))return new Hap(o.whole,o.part,toMidi(o.value),wt(_t({},o.context),{type:"midi"}));if(!e){if(s)return o;throw new Error('cannot parse as number: "'+o.value+'"')}})}round(){return this._asNumber().fmap(e=>Math.round(e))}floor(){return this._asNumber().fmap(e=>Math.floor(e))}ceil(){return this._asNumber().fmap(e=>Math.ceil(e))}_toBipolar(){return this.fmap(e=>e*2-1)}_fromBipolar(){return this.fmap(e=>(e+1)/2)}range(e,s){return this.mul(s-e).add(e)}rangex(e,s){return this.range(Math.log(e),Math.log(s)).fmap(Math.exp)}range2(e,s){return this._fromBipolar().range(e,s)}_bindWhole(e,s){const o=this,c=function(d){const _=function(k,$){return new Hap(e(k.whole,$.whole),$.part,$.value,Object.assign({},k.context,$.context,{locations:(k.context.locations||[]).concat($.context.locations||[])}))},b=function(k){return s(k.value).query(d.setSpan(k.part)).map($=>_(k,$))};return flatten$1(o.query(d).map(k=>b(k)))};return new Pattern$4(c)}bind(e){const s=function(o,c){if(!(o==null||c==null))return o.intersection_e(c)};return this._bindWhole(s,e)}join(){return this.bind(id$1)}outerBind(e){return this._bindWhole((s,o)=>s,e)}outerJoin(){return this.outerBind(id$1)}innerBind(e){return this._bindWhole((s,o)=>o,e)}innerJoin(){return this.innerBind(id$1)}_trigJoin(e=!1){const s=this;return new Pattern$4(o=>s.discreteOnly().query(o).map(c=>c.value.late(e?c.whole.begin:c.whole.begin.cyclePos()).query(o).map(d=>new Hap(d.whole?d.whole.intersection(c.whole):void 0,d.part.intersection(c.part),d.value).setContext(c.combineContext(d))).filter(d=>d.part)).flat())}_TrigzeroJoin(){return this._trigJoin(!0)}_squeezeJoin(){const e=this;function s(o){const c=e.discreteOnly().query(o);function d(b){const $=b.value._compressSpan(b.wholeOrPart().cycleArc()).query(o.setSpan(b.part));function j(_e,et){let tt;if(et.whole&&_e.whole&&(tt=et.whole.intersection(_e.whole),!tt))return;const nt=et.part.intersection(_e.part);if(!nt)return;const it=et.combineContext(_e);return new Hap(tt,nt,et.value,it)}return $.map(_e=>j(b,_e))}return flatten$1(c.map(d)).filter(b=>b)}return new Pattern$4(s)}_squeezeBind(e){return this.fmap(e)._squeezeJoin()}_apply(e){return e(this)}layer(...e){return stack(...e.map(s=>s(this)))}_patternify(e){const s=this;return function(...c){return c=c.map(_=>isPattern$1(_)?_.fmap(b=>b.value||b):_),sequence(...c).fmap(_=>e.call(s,_)).innerJoin()}}_fastGap(e){const s=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).mul(e).min(1)),b=d.add(c.end.sub(d).mul(e).min(1));return new TimeSpan$1(_,b)},o=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).div(e).min(1)),b=d.add(c.end.sub(d).div(e).min(1));return new TimeSpan$1(_,b)};return this.withQuerySpan(s).withHapSpan(o)._splitQueries()}_compress(e,s){return e.gt(s)||e.gt(1)||s.gt(1)||e.lt(0)||s.lt(0)?silence:this._fastGap(fraction(1).div(s.sub(e)))._late(e)}_compressSpan(e){return this._compress(e.begin,e.end)}_fast(e){return this.withQueryTime(o=>o.mul(e)).withHapTime(o=>o.div(e))}_slow(e){return this._fast(fraction(1).div(e))}_inside(e,s){return s(this._slow(e))._fast(e)}_outside(e,s){return s(this._fast(e))._slow(e)}_ply(e){return this.fmap(s=>pure(s)._fast(e))._squeezeJoin()}_chop(e){const o=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=function(d){return sequence(o.map(_=>Object.assign({},d,_)))};return this._squeezeBind(c)}_striate(e){const o=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=slowcat(...o);return this.set(c)._fast(e)}_cpm(e){return this._fast(e/60)}_early(e){return e=fraction(e),this.withQueryTime(s=>s.add(e)).withHapTime(s=>s.sub(e))}_late(e){return e=fraction(e),this._early(fraction(0).sub(e))}_zoom(e,s){s=fraction(s),e=fraction(e);const o=s.sub(e);return this.withQuerySpan(c=>c.withCycle(d=>d.mul(o).add(e))).withHapSpan(c=>c.withCycle(d=>d.sub(e).div(o)))._splitQueries()}_zoomArc(e){return this.zoom(e.begin,e.end)}_linger(e){return e==0?silence:e<0?this._zoom(e.add(1),1)._slow(e):this._zoom(0,e)._slow(e)}_color(e){return this._withContext(s=>wt(_t({},s),{color:e}))}log(){return this._withHap(e=>{var s;return e.setContext(wt(_t({},e.context),{logs:(((s=e.context)==null?void 0:s.logs)||[]).concat([e.show()])}))})}drawLine(){return console.log(drawLine(this)),this}_segment(e){return this.struct(pure(!0)._fast(e))}invert(){return this.fmap(e=>!e)}inv(){return this.invert()}when(e,s){const o=e._filterValues(id$1),c=e._filterValues(b=>!b),d=o.fmap(b=>k=>k).appRight(s(this)),_=c.fmap(b=>k=>k).appRight(this);return stack(d,_)}off(e,s){return stack(this,s(this.late(e)))}every(e,s){const o=this,c=Array(e-1).fill(o);return c.unshift(s(o)),slowcatPrime(...c)}brak(){return this.when(slowcat(!1,!0),e=>fastcat(e,silence)._late(.25))}rev(){const e=this,s=function(o){const c=o.span,d=c.begin.sam(),_=c.begin.nextSam(),b=function($){const j=$.withTime(et=>d.add(_.sub(et))),_e=j.begin;return j.begin=j.end,j.end=_e,j};return e.query(o.setSpan(b(c))).map($=>$.withSpan(b))};return new Pattern$4(s)._splitQueries()}palindrome(){return this.every(2,rev)}juxBy(e,s){e/=2;const o=function(_,b,k){return b in _?_[b]:k},c=this.withValue(_=>Object.assign({},_,{pan:o(_,"pan",.5)-e})),d=this.withValue(_=>Object.assign({},_,{pan:o(_,"pan",.5)+e}));return stack(c,s(d))}_jux(e){return this.juxBy(1,e)}stack(...e){return stack(this,...e)}sequence(...e){return sequence(this,...e)}seq(...e){return sequence(this,...e)}cat(...e){return cat(this,...e)}fastcat(...e){return fastcat(this,...e)}slowcat(...e){return slowcat(this,...e)}superimpose(...e){return this.stack(...e.map(s=>s(this)))}stutWith(e,s,o){return stack(...listRange(0,e-1).map(c=>o(this.late(fraction(s).mul(c)),c)))}stut(e,s,o){return this.stutWith(e,o,(c,d)=>c.velocity(Math.pow(s,d)))}_echoWith(e,s,o){return stack(...listRange(0,e-1).map(c=>o(this.late(fraction(s).mul(c)),c)))}_echo(e,s,o){return this._echoWith(e,s,(c,d)=>c.velocity(Math.pow(o,d)))}iter(e,s=!1){return slowcat(...listRange(0,e-1).map(o=>s?this.late(o/e):this.early(o/e)))}iterBack(e){return this.iter(e,!0)}_chunk(e,s,o=!1){const c=Array(e-1).fill(!1);c.unshift(!0);const d=sequence(...c).iter(e,o);return this.when(d,s)}_chunkBack(e,s){return this._chunk(e,s,!0)}edit(...e){return stack(...e.map(s=>s(this)))}pipe(e){return e(this)}_bypass(e){return e=Boolean(parseInt(e)),e?silence:this}hush(){return silence}_duration(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(e)))}_legato(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(s.end.sub(s.begin).mul(e))))}_velocity(e){return this._withContext(s=>wt(_t({},s),{velocity:(s.velocity||1)*e}))}_loopAt(e,s=1){return this.speed(1/e*s).unit("c").slow(e)}}function _composeOp(a,e,s){function o(c){return c instanceof Object&&!(c instanceof Function)}return o(a)||o(e)?(o(a)||(a={value:a}),o(e)||(e={value:e}),unionWithObj(a,e,s)):s(a,e)}(function(){const a=o=>o._asNumber(),s={set:[(o,c)=>c],keep:[(o,c)=>o],keepif:[(o,c)=>c?o:void 0],add:[(o,c)=>o+c,o=>o._asNumber(!1,!0)],sub:[(o,c)=>o-c,a],mul:[(o,c)=>o*c,a],div:[(o,c)=>o/c,a],mod:[mod,a],pow:[Math.pow,a],_and:[(o,c)=>o&c,a],_or:[(o,c)=>o|c,a],_xor:[(o,c)=>o^c,a],_lshift:[(o,c)=>o<o>>c,a],lt:[(o,c)=>oo>c],lte:[(o,c)=>o<=c],gte:[(o,c)=>o>=c],eq:[(o,c)=>o==c],eqt:[(o,c)=>o===c],ne:[(o,c)=>o!=c],net:[(o,c)=>o!==c],and:[(o,c)=>o&&c],or:[(o,c)=>o||c],func:[(o,c)=>c(o)]};for(const[o,[c,d]]of Object.entries(s))for(const _ of["In","Out","Mix","Squeeze","SqueezeOut","Trig","Trigzero"])Pattern$4.prototype[o+_]=function(...b){var k=this;b=sequence(b),d&&(k=d(k),b=d(b));var $=k["_op"+_](b,j=>_e=>_composeOp(j,_e,c));return o==="keepif"&&($=$._removeUndefineds()),$},_==="Squeeze"&&(Pattern$4.prototype[o+"SqueezeIn"]=Pattern$4.prototype[o+_]),_==="In"?Pattern$4.prototype[o]=Pattern$4.prototype[o+_]:o==="set"&&(Pattern$4.prototype[_.toLowerCase()]=Pattern$4.prototype[o+_]);Pattern$4.prototype.struct=Pattern$4.prototype.keepifOut,Pattern$4.prototype.structAll=Pattern$4.prototype.keepOut,Pattern$4.prototype.mask=Pattern$4.prototype.keepifIn,Pattern$4.prototype.maskAll=Pattern$4.prototype.keepIn,Pattern$4.prototype.reset=Pattern$4.prototype.keepifTrig,Pattern$4.prototype.resetAll=Pattern$4.prototype.keepTrig,Pattern$4.prototype.restart=Pattern$4.prototype.keepifTrigzero,Pattern$4.prototype.restartAll=Pattern$4.prototype.keepTrigzero})();Pattern$4.prototype.patternified=["apply","chop","color","cpm","duration","early","fast","jux","late","legato","linger","ply","segment","striate","slow","velocity"];Pattern$4.prototype.factories={pure,stack,slowcat,fastcat,cat,timeCat:timeCat$1,sequence,seq:seq$2,polymeter,pm,polyrhythm,pr};const silence=new Pattern$4(a=>[]);function pure(a){function e(s){return s.span.spanCycles.map(o=>new Hap(fraction(o.begin).wholeCycle(),o,a))}return new Pattern$4(e)}function isPattern$1(a){return a instanceof Pattern$4}function reify$1(a){return isPattern$1(a)?a:pure(a)}function stack(...a){a=a.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=s=>flatten$1(a.map(o=>o.query(s)));return new Pattern$4(e)}function slowcat(...a){a=a.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=function(s){const o=s.span,c=mod(o.begin.sam(),a.length),d=a[c];if(!d)return[];const _=o.begin.floor().sub(o.begin.div(a.length).floor());return d.withHapTime(b=>b.add(_)).query(s.setSpan(o.withTime(b=>b.sub(_))))};return new Pattern$4(e)._splitQueries()}function slowcatPrime(...a){a=a.map(reify$1);const e=function(s){const o=Math.floor(s.span.begin)%a.length;return a[o].query(s)};return new Pattern$4(e)._splitQueries()}function fastcat(...a){return slowcat(...a)._fast(a.length)}function cat(...a){return slowcat(...a)}function timeCat$1(...a){const e=a.map(c=>c[0]).reduce((c,d)=>c.add(d),fraction(0));let s=fraction(0);const o=[];for(const[c,d]of a){const _=s.add(c);o.push(reify$1(d)._compress(s.div(e),_.div(e))),s=_}return stack(...o)}function sequence(...a){return fastcat(...a)}function seq$2(...a){return fastcat(...a)}function _sequenceCount(a){return Array.isArray(a)?a.length==0?[silence,0]:a.length==1?_sequenceCount(a[0]):[fastcat(...a.map(e=>_sequenceCount(e)[0])),a.length]:[reify$1(a),1]}function polymeterSteps(a,...e){const s=e.map(c=>_sequenceCount(c));if(s.length==0)return silence;a==0&&(a=s[0][1]);const o=[];for(const c of s)c[1]==0&&next,a==c[1]?o.push(c[0]):o.push(c[0]._fast(fraction(a).div(fraction(c[1]))));return stack(...o)}function polymeter(...a){return polymeterSteps(0,...a)}function pm(...a){polymeter(...a)}function polyrhythm(...a){const e=a.map(s=>sequence(s));return e.length==0?silence:stack(...e)}function pr(a){polyrhythm(a)}const add$1=curry((a,e)=>e.add(a)),chunk=curry((a,e)=>e.chunk(a)),chunkBack=curry((a,e)=>e.chunkBack(a)),div=curry((a,e)=>e.div(a)),early=curry((a,e)=>e.early(a)),echo=curry((a,e,s,o)=>o.echo(a,e,s)),every=curry((a,e,s)=>s.every(a,e)),fast=curry((a,e)=>e.fast(a)),inv=a=>a.inv(),invert=a=>a.invert(),iter=curry((a,e)=>e.iter(a)),iterBack=curry((a,e)=>e.iter(a)),jux=curry((a,e)=>e.jux(a)),juxBy=curry((a,e,s)=>s.juxBy(a,e)),late=curry((a,e)=>e.late(a)),linger=curry((a,e)=>e.linger(a)),mask=curry((a,e)=>e.mask(a)),mul=curry((a,e)=>e.mul(a)),off=curry((a,e,s)=>s.off(a,e)),ply=curry((a,e)=>e.ply(a)),range$2=curry((a,e,s)=>s.range(a,e)),range2=curry((a,e,s)=>s.range2(a,e)),rev=a=>a.rev(),slow=curry((a,e)=>e.slow(a)),struct$1=curry((a,e)=>e.struct(a)),sub=curry((a,e)=>e.sub(a)),superimpose=curry((a,e)=>e.superimpose(...a)),set=curry((a,e)=>e.set(a)),when=curry((a,e,s)=>s.when(a,e));Pattern$4.prototype.composable={fast,slow,early,late,superimpose};function makeComposable(a){return Object.entries(Pattern$4.prototype.composable).forEach(([e,s])=>{a[e]=(...o)=>{const c=compose(a,s(...o));return makeComposable(c)}}),a}const patternify2=a=>(e,s,o)=>e.fmap(c=>d=>a.call(o,c,d)).appLeft(s).innerJoin(),patternify3=a=>(e,s,o,c)=>e.fmap(d=>_=>b=>a.call(c,d,_,b)).appLeft(s).appLeft(o).innerJoin(),patternify4=a=>(e,s,o,c,d)=>e.fmap(_=>b=>k=>$=>a.call(d,_,b,k,$)).appLeft(s).appLeft(o).appLeft(c).innerJoin();Pattern$4.prototype.echo=function(...a){return a=a.map(reify$1),patternify3(Pattern$4.prototype._echo)(...a,this)};Pattern$4.prototype.echoWith=function(...a){return a=a.map(reify$1),patternify3(Pattern$4.prototype._echoWith)(...a,this)};Pattern$4.prototype.chunk=function(...a){return a=a.map(reify$1),patternify2(Pattern$4.prototype._chunk)(...a,this)};Pattern$4.prototype.chunkBack=function(...a){return a=a.map(reify$1),patternify2(Pattern$4.prototype._chunkBack)(...a,this)};Pattern$4.prototype.loopAt=function(...a){return a=a.map(reify$1),patternify2(Pattern$4.prototype._loopAt)(...a,this)};Pattern$4.prototype.zoom=function(...a){return a=a.map(reify$1),patternify2(Pattern$4.prototype._zoom)(...a,this)};Pattern$4.prototype.compress=function(...a){return a=a.map(reify$1),patternify2(Pattern$4.prototype._compress)(...a,this)};Pattern$4.prototype.outside=function(...a){return a=a.map(reify$1),patternify2(Pattern$4.prototype._outside)(...a,this)};Pattern$4.prototype.inside=function(...a){return a=a.map(reify$1),patternify2(Pattern$4.prototype._inside)(...a,this)};Pattern$4.prototype.bootstrap=function(){const a=Object.fromEntries(Object.entries(Pattern$4.prototype.composable).map(([e,s])=>(Pattern$4.prototype[e]&&(Pattern$4.prototype[e]=makeComposable(Pattern$4.prototype[e])),[e,curry(s,makeComposable)])));return this.patternified.forEach(e=>{Pattern$4.prototype[e]=function(...s){return this._patternify(Pattern$4.prototype["_"+e])(...s)}}),a};Pattern$4.prototype.define=(a,e,s={})=>{s.composable&&(Pattern$4.prototype.composable[a]=e),s.patternified&&(Pattern$4.prototype.patternified=Pattern$4.prototype.patternified.concat([a])),Pattern$4.prototype.bootstrap()};Pattern$4.prototype.define("hush",a=>a.hush(),{patternified:!1,composable:!0});Pattern$4.prototype.define("bypass",a=>a.bypass(on),{patternified:!0,composable:!0});const controls={},generic_params=[["s","s","sound"],["f","n","The note or sample number to choose for a synth or sampleset"],["f","note","The note or pitch to play a sound or synth with"],["f","accelerate","a pattern of numbers that speed up (or slow down) samples while they play."],["f","gain","a pattern of numbers that specify volume. Values less than 1 make the sound quieter. Values greater than 1 make the sound louder. For the linear equivalent, see @amp@."],["f","amp","like @gain@, but linear."],["f","attack","a pattern of numbers to specify the attack time (in seconds) of an envelope applied to each sample."],["f","decay",""],["f","sustain",""],["f","release","a pattern of numbers to specify the release time (in seconds) of an envelope applied to each sample."],["f","hold","a pattern of numbers to specify the hold time (in seconds) of an envelope applied to each sample. Only takes effect if `attack` and `release` are also specified."],["f","bandf","A pattern of numbers from 0 to 1. Sets the center frequency of the band-pass filter."],["f","bandq","a pattern of anumbers from 0 to 1. Sets the q-factor of the band-pass filter."],["f","begin","a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. `0.25` to cut off the first quarter from each sample."],["f","end","the same as `begin`, but cuts the end off samples, shortening them; e.g. `0.75` to cut off the last quarter of each sample."],["f","loop","loops the sample (from `begin` to `end`) the specified number of times."],["f","legato","controls the amount of overlap between two adjacent sounds"],["f","crush","bit crushing, a pattern of numbers from 1 (for drastic reduction in bit-depth) to 16 (for barely no reduction)."],["f","coarse","fake-resampling, a pattern of numbers for lowering the sample rate, i.e. 1 for original 2 for half, 3 for a third and so on."],["i","channel","choose the channel the pattern is sent to in superdirt"],["i","cut","In the style of classic drum-machines, `cut` will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open."],["f","cutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the low-pass filter."],["f","hcutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the high-pass filter. Also has alias @hpf@"],["f","hresonance","a pattern of numbers from 0 to 1. Applies the resonance of the high-pass filter. Has alias @hpq@"],["f","resonance","a pattern of numbers from 0 to 1. Specifies the resonance of the low-pass filter."],["f","djf","DJ filter, below 0.5 is low pass filter, above is high pass filter."],["f","delay","a pattern of numbers from 0 to 1. Sets the level of the delay signal."],["f","delayfeedback","a pattern of numbers from 0 to 1. Sets the amount of delay feedback."],["f","delaytime","a pattern of numbers from 0 to 1. Sets the length of the delay."],["f","lock","A pattern of numbers. Specifies whether delaytime is calculated relative to cps. When set to 1, delaytime is a direct multiple of a cycle."],["f","detune",""],["f","dry","when set to `1` will disable all reverb for this pattern. See `room` and `size` for more information about reverb."],["f","fadeTime","Used when using begin/end or chop/striate and friends, to change the fade out time of the 'grain' envelope."],["f","fadeInTime","As with fadeTime, but controls the fade in time of the grain envelope. Not used if the grain begins at position 0 in the sample."],["f","freq",""],["f","gate",""],["f","leslie",""],["f","lrate",""],["f","lsize",""],["f","degree",""],["f","mtranspose",""],["f","ctranspose",""],["f","harmonic",""],["f","stepsPerOctave",""],["f","octaveR",""],["f","nudge","Nudges events into the future by the specified number of seconds. Negative numbers work up to a point as well (due to internal latency)"],["i","octave",""],["f","offset",""],["i","orbit","a pattern of numbers. An `orbit` is a global parameter context for patterns. Patterns with the same orbit will share hardware output bus offset and global effects, e.g. reverb and delay. The maximum number of orbits is specified in the superdirt startup, numbers higher than maximum will wrap around."],["f","overgain",""],["f","overshape",""],["f","pan","a pattern of numbers between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel)"],["f","panspan","a pattern of numbers between -inf and inf, which controls how much multichannel output is fanned out (negative is backwards ordering)"],["f","pansplay","a pattern of numbers between 0.0 and 1.0, which controls the multichannel spread range (multichannel only)"],["f","panwidth","a pattern of numbers between 0.0 and inf, which controls how much each channel is distributed over neighbours (multichannel only)"],["f","panorient","a pattern of numbers between -1.0 and 1.0, which controls the relative position of the centre pan in a pair of adjacent speakers (multichannel only)"],["f","rate","used in SuperDirt softsynths as a control rate or 'speed'"],["f","slide",""],["f","semitone",""],["f","velocity",""],["f","voice",""],["f","room","a pattern of numbers from 0 to 1. Sets the level of reverb."],["f","size","a pattern of numbers from 0 to 1. Sets the perceptual size (reverb time) of the `room` to be used in reverb."],["f","shape","wave shaping distortion, a pattern of numbers from 0 for no distortion up to 1 for loads of distortion."],["f","speed","a pattern of numbers which changes the speed of sample playback, i.e. a cheap way of changing pitch. Negative values will play the sample backwards!"],["s","unit",'used in conjunction with `speed`, accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using `unit "c"` means `speed` will be interpreted in units of cycles, e.g. `speed "1"` means samples will be stretched to fill a cycle. Using `unit "s"` means the playback speed will be adjusted so that the duration is the number of seconds specified by `speed`.'],["f","squiz",""],["f","stutterdepth",""],["f","stuttertime",""],["f","timescale",""],["f","timescalewin",""],["s","vowel","formant filter to make things sound like vowels, a pattern of either `a`, `e`, `i`, `o` or `u`. Use a rest (`~`) for no effect."],["f","waveloss",""],["f","dur",""],["f","expression",""],["f","sustainpedal",""],["f","tremolodepth","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","tremolorate","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","phaserdepth","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","phaserrate","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","fshift","frequency shifter"],["f","fshiftnote","frequency shifter"],["f","fshiftphase","frequency shifter"],["f","triode","tube distortion"],["f","krush","shape/bass enhancer"],["f","kcutoff",""],["f","octer","octaver effect"],["f","octersub","octaver effect"],["f","octersubsub","octaver effect"],["f","ring","ring modulation"],["f","ringf","ring modulation"],["f","ringdf","ring modulation"],["f","distort","noisy fuzzy distortion"],["f","freeze","Spectral freeze"],["f","xsdelay",""],["f","tsdelay",""],["f","real","Spectral conform"],["f","imag",""],["f","enhance","Spectral enhance"],["f","partials",""],["f","comb","Spectral comb"],["f","smear","Spectral smear"],["f","scram","Spectral scramble"],["f","binshift","Spectral binshift"],["f","hbrick","High pass sort of spectral filter"],["f","lbrick","Low pass sort of spectral filter"],["f","midichan",""],["f","control",""],["f","ccn",""],["f","ccv",""],["f","polyTouch",""],["f","midibend",""],["f","miditouch",""],["f","ctlNum",""],["f","frameRate",""],["f","frames",""],["f","hours",""],["s","midicmd",""],["f","minutes",""],["f","progNum",""],["f","seconds",""],["f","songPtr",""],["f","uid",""],["f","val",""],["f","cps",""]],_name=(a,...e)=>sequence(...e).withValue(s=>({[a]:s})),_setter=a=>function(...e){return this.set(a(...e))};generic_params.forEach(([a,e,s])=>{controls[e]=(...o)=>_name(e,...o),Pattern$4.prototype[e]=_setter(controls[e])});controls.createParam=a=>(Pattern$4.prototype[a]=_setter(controls[a]),(...e)=>_name(a,...e));controls.createParams=(...a)=>a.reduce((e,s)=>Object.assign(e,{[s]:createParam(s)}),{});var dist$7={},tokenizer={},utils$1={},unicode$2={};Object.defineProperty(unicode$2,"__esModule",{value:!0});unicode$2.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$2.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$2.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$2.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$2.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$2.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(utils$1,"__esModule",{value:!0});utils$1.isStrictModeReservedWord=isStrictModeReservedWord;utils$1.isWhiteSpace=isWhiteSpace;utils$1.isLineTerminator=isLineTerminator;utils$1.isIdentifierStart=isIdentifierStart$1;utils$1.isIdentifierPart=isIdentifierPart$1;utils$1.isDecimalDigit=isDecimalDigit;utils$1.getHexValue=getHexValue;var _unicode$2=unicode$2,strictReservedWords=["null","true","false","implements","interface","package","private","protected","public","static","let","if","in","do","var","for","new","try","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];function isStrictModeReservedWord(a){return strictReservedWords.indexOf(a)!==-1}function isWhiteSpace(a){return a<128?_unicode$2.whitespaceBool[a]:a===160||a>5759&&_unicode$2.whitespaceArray.indexOf(a)!==-1}function isLineTerminator(a){return a===10||a===13||a===8232||a===8233}function isIdentifierStart$1(a){return a<128?_unicode$2.idStartBool[a]:_unicode$2.idStartLargeRegex.test(String.fromCodePoint(a))}function isIdentifierPart$1(a){return a<128?_unicode$2.idContinueBool[a]:_unicode$2.idContinueLargeRegex.test(String.fromCodePoint(a))}function isDecimalDigit(a){return a>=48&&a<=57}function getHexValue(a){return a>="0"&&a<="9"?a.charCodeAt(0)-48:a>="a"&&a<="f"?a.charCodeAt(0)-87:a>="A"&&a<="F"?a.charCodeAt(0)-55:-1}var errors={};Object.defineProperty(errors,"__esModule",{value:!0});errors.ErrorMessages={UNEXPECTED_TOKEN:function(e){return"Unexpected token "+JSON.stringify(e)},UNEXPECTED_ILLEGAL_TOKEN:function(e){return"Unexpected "+JSON.stringify(e)},UNEXPECTED_ESCAPED_KEYWORD:"Unexpected escaped keyword",UNEXPECTED_NUMBER:"Unexpected number",UNEXPECTED_STRING:"Unexpected string",UNEXPECTED_IDENTIFIER:"Unexpected identifier",UNEXPECTED_RESERVED_WORD:"Unexpected reserved word",UNEXPECTED_TEMPLATE:"Unexpected template",UNEXPECTED_EOS:"Unexpected end of input",UNEXPECTED_LINE_TERMINATOR:"Unexpected line terminator",UNEXPECTED_COMMA_AFTER_REST:"Unexpected comma after rest",UNEXPECTED_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",NEWLINE_AFTER_THROW:"Illegal newline after throw",UNTERMINATED_REGEXP:"Invalid regular expression: missing /",INVALID_LAST_REST_PARAMETER:"Rest parameter must be last formal parameter",INVALID_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",INVALID_REGEXP_FLAGS:"Invalid regular expression flags",INVALID_REGEX:"Invalid regular expression",INVALID_LHS_IN_ASSIGNMENT:"Invalid left-hand side in assignment",INVALID_LHS_IN_BINDING:"Invalid left-hand side in binding",INVALID_LHS_IN_FOR_IN:"Invalid left-hand side in for-in",INVALID_LHS_IN_FOR_OF:"Invalid left-hand side in for-of",INVALID_LHS_IN_FOR_AWAIT:"Invalid left-hand side in for-await",INVALID_UPDATE_OPERAND:"Increment/decrement target must be an identifier or member expression",INVALID_EXPONENTIATION_LHS:"Unary expressions as the left operand of an exponentation expression must be disambiguated with parentheses",MULTIPLE_DEFAULTS_IN_SWITCH:"More than one default clause in switch statement",NO_CATCH_OR_FINALLY:"Missing catch or finally after try",ILLEGAL_RETURN:"Illegal return statement",ILLEGAL_ARROW_FUNCTION_PARAMS:"Illegal arrow function parameter list",INVALID_ASYNC_PARAMS:"Async function parameters must not contain await expressions",INVALID_VAR_INIT_FOR_IN:"Invalid variable declaration in for-in statement",INVALID_VAR_INIT_FOR_OF:"Invalid variable declaration in for-of statement",INVALID_VAR_INIT_FOR_AWAIT:"Invalid variable declaration in for-await statement",UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT:"Binding pattern appears without initializer in for statement init",ILLEGAL_PROPERTY:"Illegal property initializer",INVALID_ID_BINDING_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in binding position in strict mode"},INVALID_ID_IN_LABEL_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in label position in strict mode"},INVALID_ID_IN_EXPRESSION_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in expression position in strict mode"},INVALID_CALL_TO_SUPER:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',INVALID_DELETE_STRICT_MODE:"Identifier expressions must not be deleted in strict mode",DUPLICATE_BINDING:function(e){return"Duplicate binding "+JSON.stringify(e)},ILLEGAL_ID_IN_LEXICAL_DECLARATION:function(e){return"Lexical declarations must not have a binding named "+JSON.stringify(e)},UNITIALIZED_CONST:"Constant lexical declarations must have an initialiser",ILLEGAL_LABEL_IN_BODY:function(e){return"The body of a "+e+" statement must not be a labeled function declaration"},ILLEGEAL_LABEL_IN_IF:"The consequent of an if statement must not be a labeled function declaration",ILLEGAL_LABEL_IN_ELSE:"The alternate of an if statement must not be a labeled function declaration",ILLEGAL_CONTINUE_WITHOUT_ITERATION_WITH_ID:function(e){return"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e)},ILLEGAL_CONTINUE_WITHOUT_ITERATION:"Continue statement must be nested within an iteration statement",ILLEGAL_BREAK_WITHOUT_ITERATION_OR_SWITCH:"Break statement must be nested within an iteration statement or a switch statement",ILLEGAL_WITH_STRICT_MODE:"Strict mode code must not include a with statement",ILLEGAL_ACCESS_SUPER_MEMBER:"Member access on super must be in a method",ILLEGAL_SUPER_CALL:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',DUPLICATE_LABEL_DECLARATION:function(e){return"Label "+JSON.stringify(e)+" has already been declared"},ILLEGAL_BREAK_WITHIN_LABEL:function(e){return"Break statement must be nested within a statement with label "+JSON.stringify(e)},ILLEGAL_YIELD_EXPRESSIONS:function(e){return e+" parameters must not contain yield expressions"},ILLEGAL_YIELD_IDENTIFIER:'"yield" may not be used as an identifier in this context',ILLEGAL_AWAIT_IDENTIFIER:'"await" may not be used as an identifier in this context',DUPLICATE_CONSTRUCTOR:"Duplicate constructor method in class",ILLEGAL_CONSTRUCTORS:"Constructors cannot be async, generators, getters or setters",ILLEGAL_STATIC_CLASS_NAME:'Static class methods cannot be named "prototype"',NEW_TARGET_ERROR:"new.target must be within function (but not arrow expression) code",DUPLICATE_EXPORT:function(e){return"Duplicate export "+JSON.stringify(e)},UNDECLARED_BINDING:function(e){return"Exported binding "+JSON.stringify(e)+" is not declared"},DUPLICATE_PROPTO_PROP:"Duplicate __proto__ property in object literal not allowed",ILLEGAL_LABEL_FUNC_DECLARATION:"Labeled FunctionDeclarations are disallowed in strict mode",ILLEGAL_FUNC_DECL_IF:"FunctionDeclarations in IfStatements are disallowed in strict mode",ILLEGAL_USE_STRICT:'Functions with non-simple parameter lists may not contain a "use strict" directive',ILLEGAL_EXPORTED_NAME:"Names of variables used in an export specifier from the current module must be identifiers",NO_OCTALS_IN_TEMPLATES:"Template literals may not contain octal escape sequences",NO_AWAIT_IN_ASYNC_PARAMS:'Async arrow parameters may not contain "await"'};Object.defineProperty(tokenizer,"__esModule",{value:!0});tokenizer.JsError=tokenizer.TokenType=tokenizer.TokenClass=void 0;var _slicedToArray=function(){function a(e,s){var o=[],c=!0,d=!1,_=void 0;try{for(var b=e[Symbol.iterator](),k;!(c=(k=b.next()).done)&&(o.push(k.value),!(s&&o.length===s));c=!0);}catch($){d=!0,_=$}finally{try{!c&&b.return&&b.return()}finally{if(d)throw _}}return o}return function(e,s){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return a(e,s);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass$e=function(){function a(e,s){for(var o=0;o"},Ident:{name:"Identifier",isIdentifierName:!0},Keyword:{name:"Keyword",isIdentifierName:!0},NumericLiteral:{name:"Numeric"},TemplateElement:{name:"Template"},Punctuator:{name:"Punctuator"},StringLiteral:{name:"String"},RegularExpression:{name:"RegularExpression"},Illegal:{name:"Illegal"}},TokenType=tokenizer.TokenType={EOS:{klass:TokenClass.Eof,name:"EOS"},LPAREN:{klass:TokenClass.Punctuator,name:"("},RPAREN:{klass:TokenClass.Punctuator,name:")"},LBRACK:{klass:TokenClass.Punctuator,name:"["},RBRACK:{klass:TokenClass.Punctuator,name:"]"},LBRACE:{klass:TokenClass.Punctuator,name:"{"},RBRACE:{klass:TokenClass.Punctuator,name:"}"},COLON:{klass:TokenClass.Punctuator,name:":"},SEMICOLON:{klass:TokenClass.Punctuator,name:";"},PERIOD:{klass:TokenClass.Punctuator,name:"."},ELLIPSIS:{klass:TokenClass.Punctuator,name:"..."},ARROW:{klass:TokenClass.Punctuator,name:"=>"},CONDITIONAL:{klass:TokenClass.Punctuator,name:"?"},INC:{klass:TokenClass.Punctuator,name:"++"},DEC:{klass:TokenClass.Punctuator,name:"--"},ASSIGN:{klass:TokenClass.Punctuator,name:"="},ASSIGN_BIT_OR:{klass:TokenClass.Punctuator,name:"|="},ASSIGN_BIT_XOR:{klass:TokenClass.Punctuator,name:"^="},ASSIGN_BIT_AND:{klass:TokenClass.Punctuator,name:"&="},ASSIGN_SHL:{klass:TokenClass.Punctuator,name:"<<="},ASSIGN_SHR:{klass:TokenClass.Punctuator,name:">>="},ASSIGN_SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>="},ASSIGN_ADD:{klass:TokenClass.Punctuator,name:"+="},ASSIGN_SUB:{klass:TokenClass.Punctuator,name:"-="},ASSIGN_MUL:{klass:TokenClass.Punctuator,name:"*="},ASSIGN_DIV:{klass:TokenClass.Punctuator,name:"/="},ASSIGN_MOD:{klass:TokenClass.Punctuator,name:"%="},ASSIGN_EXP:{klass:TokenClass.Punctuator,name:"**="},COMMA:{klass:TokenClass.Punctuator,name:","},OR:{klass:TokenClass.Punctuator,name:"||"},AND:{klass:TokenClass.Punctuator,name:"&&"},BIT_OR:{klass:TokenClass.Punctuator,name:"|"},BIT_XOR:{klass:TokenClass.Punctuator,name:"^"},BIT_AND:{klass:TokenClass.Punctuator,name:"&"},SHL:{klass:TokenClass.Punctuator,name:"<<"},SHR:{klass:TokenClass.Punctuator,name:">>"},SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>"},ADD:{klass:TokenClass.Punctuator,name:"+"},SUB:{klass:TokenClass.Punctuator,name:"-"},MUL:{klass:TokenClass.Punctuator,name:"*"},DIV:{klass:TokenClass.Punctuator,name:"/"},MOD:{klass:TokenClass.Punctuator,name:"%"},EXP:{klass:TokenClass.Punctuator,name:"**"},EQ:{klass:TokenClass.Punctuator,name:"=="},NE:{klass:TokenClass.Punctuator,name:"!="},EQ_STRICT:{klass:TokenClass.Punctuator,name:"==="},NE_STRICT:{klass:TokenClass.Punctuator,name:"!=="},LT:{klass:TokenClass.Punctuator,name:"<"},GT:{klass:TokenClass.Punctuator,name:">"},LTE:{klass:TokenClass.Punctuator,name:"<="},GTE:{klass:TokenClass.Punctuator,name:">="},INSTANCEOF:{klass:TokenClass.Keyword,name:"instanceof"},IN:{klass:TokenClass.Keyword,name:"in"},NOT:{klass:TokenClass.Punctuator,name:"!"},BIT_NOT:{klass:TokenClass.Punctuator,name:"~"},ASYNC:{klass:TokenClass.Keyword,name:"async"},AWAIT:{klass:TokenClass.Keyword,name:"await"},ENUM:{klass:TokenClass.Keyword,name:"enum"},DELETE:{klass:TokenClass.Keyword,name:"delete"},TYPEOF:{klass:TokenClass.Keyword,name:"typeof"},VOID:{klass:TokenClass.Keyword,name:"void"},BREAK:{klass:TokenClass.Keyword,name:"break"},CASE:{klass:TokenClass.Keyword,name:"case"},CATCH:{klass:TokenClass.Keyword,name:"catch"},CLASS:{klass:TokenClass.Keyword,name:"class"},CONTINUE:{klass:TokenClass.Keyword,name:"continue"},DEBUGGER:{klass:TokenClass.Keyword,name:"debugger"},DEFAULT:{klass:TokenClass.Keyword,name:"default"},DO:{klass:TokenClass.Keyword,name:"do"},ELSE:{klass:TokenClass.Keyword,name:"else"},EXPORT:{klass:TokenClass.Keyword,name:"export"},EXTENDS:{klass:TokenClass.Keyword,name:"extends"},FINALLY:{klass:TokenClass.Keyword,name:"finally"},FOR:{klass:TokenClass.Keyword,name:"for"},FUNCTION:{klass:TokenClass.Keyword,name:"function"},IF:{klass:TokenClass.Keyword,name:"if"},IMPORT:{klass:TokenClass.Keyword,name:"import"},LET:{klass:TokenClass.Keyword,name:"let"},NEW:{klass:TokenClass.Keyword,name:"new"},RETURN:{klass:TokenClass.Keyword,name:"return"},SUPER:{klass:TokenClass.Keyword,name:"super"},SWITCH:{klass:TokenClass.Keyword,name:"switch"},THIS:{klass:TokenClass.Keyword,name:"this"},THROW:{klass:TokenClass.Keyword,name:"throw"},TRY:{klass:TokenClass.Keyword,name:"try"},VAR:{klass:TokenClass.Keyword,name:"var"},WHILE:{klass:TokenClass.Keyword,name:"while"},WITH:{klass:TokenClass.Keyword,name:"with"},NULL:{klass:TokenClass.Keyword,name:"null"},TRUE:{klass:TokenClass.Keyword,name:"true"},FALSE:{klass:TokenClass.Keyword,name:"false"},YIELD:{klass:TokenClass.Keyword,name:"yield"},NUMBER:{klass:TokenClass.NumericLiteral,name:""},STRING:{klass:TokenClass.StringLiteral,name:""},REGEXP:{klass:TokenClass.RegularExpression,name:""},IDENTIFIER:{klass:TokenClass.Ident,name:""},CONST:{klass:TokenClass.Keyword,name:"const"},TEMPLATE:{klass:TokenClass.TemplateElement,name:""},ESCAPED_KEYWORD:{klass:TokenClass.Keyword,name:""},ILLEGAL:{klass:TokenClass.Illegal,name:""}},TT=TokenType,I=TT.ILLEGAL,F=!1,T=!0,ONE_CHAR_PUNCTUATOR=[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.NOT,I,I,I,TT.MOD,TT.BIT_AND,I,TT.LPAREN,TT.RPAREN,TT.MUL,TT.ADD,TT.COMMA,TT.SUB,TT.PERIOD,TT.DIV,I,I,I,I,I,I,I,I,I,I,TT.COLON,TT.SEMICOLON,TT.LT,TT.ASSIGN,TT.GT,TT.CONDITIONAL,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACK,I,TT.RBRACK,TT.BIT_XOR,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACE,TT.BIT_OR,TT.RBRACE,TT.BIT_NOT],PUNCTUATOR_START=[F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,F,F,T,T,F,T,T,T,T,T,T,F,T,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,F],JsError=tokenizer.JsError=function(a){_inherits$8(e,a);function e(s,o,c,d){_classCallCheck$i(this,e);var _=_possibleConstructorReturn$8(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,d));_.index=s;try{_.line=o,_.column=c}catch{}return _.parseErrorLine=o,_.parseErrorColumn=c,_.description=d,_.message="["+o+":"+c+"]: "+d,_}return e}(Error);function fromCodePoint$1(a){if(a<=65535)return String.fromCharCode(a);var e=String.fromCharCode(Math.floor((a-65536)/1024)+55296),s=String.fromCharCode((a-65536)%1024+56320);return e+s}function decodeUtf16(a,e){return(a-55296)*1024+(e-56320)+65536}var Tokenizer=function(){function a(e){_classCallCheck$i(this,a),this.source=e,this.index=0,this.line=0,this.lineStart=0,this.startIndex=0,this.startLine=0,this.startLineStart=0,this.lastIndex=0,this.lastLine=0,this.lastLineStart=0,this.hasLineTerminatorBeforeNext=!1,this.tokenIndex=0}return _createClass$e(a,[{key:"saveLexerState",value:function(){return{source:this.source,index:this.index,line:this.line,lineStart:this.lineStart,startIndex:this.startIndex,startLine:this.startLine,startLineStart:this.startLineStart,lastIndex:this.lastIndex,lastLine:this.lastLine,lastLineStart:this.lastLineStart,lookahead:this.lookahead,hasLineTerminatorBeforeNext:this.hasLineTerminatorBeforeNext,tokenIndex:this.tokenIndex}}},{key:"restoreLexerState",value:function(s){this.source=s.source,this.index=s.index,this.line=s.line,this.lineStart=s.lineStart,this.startIndex=s.startIndex,this.startLine=s.startLine,this.startLineStart=s.startLineStart,this.lastIndex=s.lastIndex,this.lastLine=s.lastLine,this.lastLineStart=s.lastLineStart,this.lookahead=s.lookahead,this.hasLineTerminatorBeforeNext=s.hasLineTerminatorBeforeNext,this.tokenIndex=s.tokenIndex}},{key:"createILLEGAL",value:function(){return this.startIndex=this.index,this.startLine=this.line,this.startLineStart=this.lineStart,this.index1?c-1:0),_=1;_10)return TokenType.IDENTIFIER;switch(s.length){case 2:switch(s.charAt(0)){case"i":switch(s.charAt(1)){case"f":return TokenType.IF;case"n":return TokenType.IN}break;case"d":if(s.charAt(1)==="o")return TokenType.DO;break}break;case 3:switch(s.charAt(0)){case"v":if(a.cse2(s,"a","r"))return TokenType.VAR;break;case"f":if(a.cse2(s,"o","r"))return TokenType.FOR;break;case"n":if(a.cse2(s,"e","w"))return TokenType.NEW;break;case"t":if(a.cse2(s,"r","y"))return TokenType.TRY;break;case"l":if(a.cse2(s,"e","t"))return TokenType.LET;break}break;case 4:switch(s.charAt(0)){case"t":if(a.cse3(s,"h","i","s"))return TokenType.THIS;if(a.cse3(s,"r","u","e"))return TokenType.TRUE;break;case"n":if(a.cse3(s,"u","l","l"))return TokenType.NULL;break;case"e":if(a.cse3(s,"l","s","e"))return TokenType.ELSE;if(a.cse3(s,"n","u","m"))return TokenType.ENUM;break;case"c":if(a.cse3(s,"a","s","e"))return TokenType.CASE;break;case"v":if(a.cse3(s,"o","i","d"))return TokenType.VOID;break;case"w":if(a.cse3(s,"i","t","h"))return TokenType.WITH;break}break;case 5:switch(s.charAt(0)){case"a":if(a.cse4(s,"s","y","n","c"))return TokenType.ASYNC;if(a.cse4(s,"w","a","i","t"))return TokenType.AWAIT;break;case"w":if(a.cse4(s,"h","i","l","e"))return TokenType.WHILE;break;case"b":if(a.cse4(s,"r","e","a","k"))return TokenType.BREAK;break;case"f":if(a.cse4(s,"a","l","s","e"))return TokenType.FALSE;break;case"c":if(a.cse4(s,"a","t","c","h"))return TokenType.CATCH;if(a.cse4(s,"o","n","s","t"))return TokenType.CONST;if(a.cse4(s,"l","a","s","s"))return TokenType.CLASS;break;case"t":if(a.cse4(s,"h","r","o","w"))return TokenType.THROW;break;case"y":if(a.cse4(s,"i","e","l","d"))return TokenType.YIELD;break;case"s":if(a.cse4(s,"u","p","e","r"))return TokenType.SUPER;break}break;case 6:switch(s.charAt(0)){case"r":if(a.cse5(s,"e","t","u","r","n"))return TokenType.RETURN;break;case"t":if(a.cse5(s,"y","p","e","o","f"))return TokenType.TYPEOF;break;case"d":if(a.cse5(s,"e","l","e","t","e"))return TokenType.DELETE;break;case"s":if(a.cse5(s,"w","i","t","c","h"))return TokenType.SWITCH;break;case"e":if(a.cse5(s,"x","p","o","r","t"))return TokenType.EXPORT;break;case"i":if(a.cse5(s,"m","p","o","r","t"))return TokenType.IMPORT;break}break;case 7:switch(s.charAt(0)){case"d":if(a.cse6(s,"e","f","a","u","l","t"))return TokenType.DEFAULT;break;case"f":if(a.cse6(s,"i","n","a","l","l","y"))return TokenType.FINALLY;break;case"e":if(a.cse6(s,"x","t","e","n","d","s"))return TokenType.EXTENDS;break}break;case 8:switch(s.charAt(0)){case"f":if(a.cse7(s,"u","n","c","t","i","o","n"))return TokenType.FUNCTION;break;case"c":if(a.cse7(s,"o","n","t","i","n","u","e"))return TokenType.CONTINUE;break;case"d":if(a.cse7(s,"e","b","u","g","g","e","r"))return TokenType.DEBUGGER;break}break;case 10:if(s==="instanceof")return TokenType.INSTANCEOF;break}return TokenType.IDENTIFIER}},{key:"skipSingleLineComment",value:function(s){for(this.index+=s;this.index=o)break;if(c=this.source.charCodeAt(this.index+1),c===47)this.skipSingleLineComment(2),s=!0;else if(c===42)s=this.skipMultiLineComment()||s;else break}else if(!this.moduleIsTheGoalSymbol&&s&&c===45){if(this.index+2>=o)break;if(this.source.charAt(this.index+1)==="-"&&this.source.charAt(this.index+2)===">")this.skipSingleLineComment(3);else break}else if(!this.moduleIsTheGoalSymbol&&c===60)if(this.source.slice(this.index+1,this.index+4)==="!--")this.skipSingleLineComment(4),s=!0;else break;else break}}},{key:"scanHexEscape2",value:function(){if(this.index+2>this.source.length)return-1;var s=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(s===-1)return-1;var o=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));return o===-1?-1:(this.index+=2,s<<4|o)}},{key:"scanUnicode",value:function(){if(this.source.charAt(this.index)==="{"){for(var s=this.index+1,o=0,c=void 0;s1114111)throw this.createILLEGAL();s++}if(c!=="}")throw this.createILLEGAL();if(s===this.index+1)throw++this.index,this.createILLEGAL();return this.index=s+1,o}if(this.index+4>this.source.length)return-1;var _=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(_===-1)return-1;var b=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));if(b===-1)return-1;var k=(0,_utils$1.getHexValue)(this.source.charAt(this.index+2));if(k===-1)return-1;var $=(0,_utils$1.getHexValue)(this.source.charAt(this.index+3));return $===-1?-1:(this.index+=4,_<<12|b<<8|k<<4|$)}},{key:"getEscapedIdentifier",value:function(){for(var s="",o=_utils$1.isIdentifierStart;this.index=this.source.length)throw this.createILLEGAL();if(this.source.charAt(this.index)!=="u")throw this.createILLEGAL();if(++this.index,d=this.scanUnicode(),d<0)throw this.createILLEGAL();c=fromCodePoint$1(d)}else if(d>=55296&&d<=56319){if(this.index>=this.source.length)throw this.createILLEGAL();var b=this.source.charCodeAt(this.index);if(++this.index,!(b>=56320&&b<=57343))throw this.createILLEGAL();d=decodeUtf16(d,b),c=fromCodePoint$1(d)}if(!o(d)){if(s.length<1)throw this.createILLEGAL();return this.index=_,s}o=_utils$1.isIdentifierPart,s+=c}return s}},{key:"getIdentifier",value:function(){for(var s=this.index,o=this.source.length,c=this.index,d=_utils$1.isIdentifierStart;c=55296&&b<=56319)return this.index=s,this.getEscapedIdentifier();if(!d(b))return this.index=c,this.source.slice(s,c);++c,d=_utils$1.isIdentifierPart}return this.index=c,this.source.slice(s,c)}},{key:"scanIdentifier",value:function(){var s=this.getLocation(),o=this.index,c=this.source.charAt(this.index)==="\\"?this.getEscapedIdentifier():this.getIdentifier(),d=this.getSlice(o,s);d.text=c;var _=this.index-o!==c.length,b=this.getKeyword(c);return _&&b!==TokenType.IDENTIFIER&&(b=TokenType.ESCAPED_KEYWORD),{type:b,value:c,slice:d,escaped:_}}},{key:"getLocation",value:function(){return{line:this.startLine+1,column:this.startIndex-this.startLineStart,offset:this.startIndex}}},{key:"getLastTokenEndLocation",value:function(){return{line:this.lastLine+1,column:this.lastIndex-this.lastLineStart,offset:this.lastIndex}}},{key:"getSlice",value:function(s,o){return{text:this.source.slice(s,this.index),start:s,startLocation:o,end:this.index}}},{key:"scanPunctuatorHelper",value:function(){var s=this.source.charAt(this.index);switch(s){case".":{var o=this.source.charAt(this.index+1);if(o!==".")return TokenType.PERIOD;var c=this.source.charAt(this.index+2);return c!=="."?TokenType.PERIOD:TokenType.ELLIPSIS}case"(":return TokenType.LPAREN;case")":case";":case",":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];case"{":return TokenType.LBRACE;case"}":case"[":case"]":case":":case"?":case"~":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];default:if(this.index+1":return TokenType.GTE;case"/":return TokenType.ASSIGN_DIV;case"%":return TokenType.ASSIGN_MOD;case"^":return TokenType.ASSIGN_BIT_XOR;case"&":return TokenType.ASSIGN_BIT_AND}}if(this.index+1"&&_===">")return this.index+3"&&_==="=")return TokenType.ASSIGN_SHR;if(s==="*"&&_==="=")return TokenType.ASSIGN_EXP}switch(s){case"*":return TokenType.EXP;case"+":return TokenType.INC;case"-":return TokenType.DEC;case"<":return TokenType.SHL;case">":return TokenType.SHR;case"&":return TokenType.AND;case"|":return TokenType.OR}}else if(s==="="&&d===">")return TokenType.ARROW}return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)]}},{key:"scanPunctuator",value:function(){var s=this.getLocation(),o=this.index,c=this.scanPunctuatorHelper();return this.index+=c.name.length,{type:c,value:c.name,slice:this.getSlice(o,s)}}},{key:"scanHexLiteral",value:function(s,o){for(var c=this.index;c="0"&&c<="7")this.index++;else{if((0,_utils$1.isIdentifierPart)(c.charCodeAt(0)))throw this.createILLEGAL();break}}if(this.index-s===2)throw this.createILLEGAL();return{type:TokenType.NUMBER,value:parseInt(this.getSlice(s,o).text.substr(2),8),slice:this.getSlice(s,o),octal:!1,noctal:!1}}},{key:"scanLegacyOctalLiteral",value:function(s,o){for(var c=!0;this.index="0"&&d<="7")this.index++;else if(d==="8"||d==="9")c=!1,this.index++;else{if((0,_utils$1.isIdentifierPart)(d.charCodeAt(0)))throw this.createILLEGAL();break}}var _=this.getSlice(s,o);return c?{type:TokenType.NUMBER,slice:_,value:parseInt(_.text.substr(1),8),octal:!0,noctal:!c}:(this.eatDecimalLiteralSuffix(),{type:TokenType.NUMBER,slice:_,value:+_.text,octal:!0,noctal:!c})}},{key:"scanNumericLiteral",value:function(){var s=this.source.charAt(this.index),o=this.getLocation(),c=this.index;if(s==="0")if(this.index++,this.index="0"&&s<="9")return this.scanLegacyOctalLiteral(c,o)}else{var d=this.getSlice(c,o);return{type:TokenType.NUMBER,value:+d.text,slice:d,octal:!1,noctal:!1}}else if(s!==".")for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length){var _=this.getSlice(c,o);return{type:TokenType.NUMBER,value:+_.text,slice:_,octal:!1,noctal:!1}}s=this.source.charAt(this.index)}if(this.eatDecimalLiteralSuffix(),this.index!==this.source.length&&(0,_utils$1.isIdentifierStart)(this.source.charCodeAt(this.index)))throw this.createILLEGAL();var b=this.getSlice(c,o);return{type:TokenType.NUMBER,value:+b.text,slice:b,octal:!1,noctal:!1}}},{key:"eatDecimalLiteralSuffix",value:function(){var s=this.source.charAt(this.index);if(s==="."){if(this.index++,this.index===this.source.length)return;for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length)return;s=this.source.charAt(this.index)}}if(s==="e"||s==="E"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();if(s=this.source.charAt(this.index),s==="+"||s==="-"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();s=this.source.charAt(this.index)}if(s>="0"&&s<="9")for(;s>="0"&&s<="9"&&(this.index++,this.index!==this.source.length);)s=this.source.charAt(this.index);else throw this.createILLEGAL()}}},{key:"scanStringEscape",value:function(s,o){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();var c=this.source.charAt(this.index);if((0,_utils$1.isLineTerminator)(c.charCodeAt(0)))this.index++,c==="\r"&&this.source.charAt(this.index)===` -`&&this.index++,this.lineStart=this.index,this.line++;else switch(c){case"n":s+=` -`,this.index++;break;case"r":s+="\r",this.index++;break;case"t":s+=" ",this.index++;break;case"u":case"x":{var d=void 0;if(this.index++,this.index>=this.source.length)throw this.createILLEGAL();if(d=c==="u"?this.scanUnicode():this.scanHexEscape2(),d<0)throw this.createILLEGAL();s+=fromCodePoint$1(d);break}case"b":s+="\b",this.index++;break;case"f":s+="\f",this.index++;break;case"v":s+="\v",this.index++;break;default:if(c>="0"&&c<="7"){var _=this.index,b=1;c>="0"&&c<="3"&&(b=0);for(var k=0;b<3&&c>="0"&&c<="7";){if(this.index++,(b>0||c!=="0")&&(o=this.source.slice(_,this.index)),k*=8,k+=c-"0",b++,this.index===this.source.length)throw this.createILLEGAL();c=this.source.charAt(this.index)}k===0&&b===1&&(c==="8"||c==="9")&&(o=this.source.slice(_,this.index+1)),s+=String.fromCharCode(k)}else{if(c==="8"||c==="9")throw this.createILLEGAL();s+=c,this.index++}}return[s,o]}},{key:"scanStringLiteral",value:function(){var s="",o=this.source.charAt(this.index),c=this.getLocation(),d=this.index;this.index++;for(var _=null;this.index=this.source.length)return{type:TokenType.EOS,slice:this.getSlice(this.index,s)};var o=this.source.charCodeAt(this.index);if(o<128){if(PUNCTUATOR_START[o])return this.scanPunctuator();if((0,_utils$1.isIdentifierStart)(o)||o===92)return this.scanIdentifier();if(o===46)return this.index+1=48&&o<=57)return this.scanNumericLiteral();throw this.createILLEGAL()}else{if((0,_utils$1.isIdentifierStart)(o)||o>=55296&&o<=56319)return this.scanIdentifier();throw this.createILLEGAL()}}},{key:"eof",value:function(){return this.lookahead.type===TokenType.EOS}},{key:"lex",value:function(){var s=this.lookahead;return this.lookahead=this.advance(),this.tokenIndex++,s}}],[{key:"cse2",value:function(s,o,c){return s.charAt(1)===o&&s.charAt(2)===c}},{key:"cse3",value:function(s,o,c,d){return s.charAt(1)===o&&s.charAt(2)===c&&s.charAt(3)===d}},{key:"cse4",value:function(s,o,c,d,_){return s.charAt(1)===o&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_}},{key:"cse5",value:function(s,o,c,d,_,b){return s.charAt(1)===o&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b}},{key:"cse6",value:function(s,o,c,d,_,b,k){return s.charAt(1)===o&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k}},{key:"cse7",value:function(s,o,c,d,_,b,k,$){return s.charAt(1)===o&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k&&s.charAt(7)===$}}]),a}();tokenizer.default=Tokenizer;var parser$1={},dist$6={},mappings=new Map([["General_Category",new Map([["C","Other"],["Cc","Control"],["cntrl","Control"],["Cf","Format"],["Cn","Unassigned"],["Co","Private_Use"],["Cs","Surrogate"],["L","Letter"],["LC","Cased_Letter"],["Ll","Lowercase_Letter"],["Lm","Modifier_Letter"],["Lo","Other_Letter"],["Lt","Titlecase_Letter"],["Lu","Uppercase_Letter"],["M","Mark"],["Combining_Mark","Mark"],["Mc","Spacing_Mark"],["Me","Enclosing_Mark"],["Mn","Nonspacing_Mark"],["N","Number"],["Nd","Decimal_Number"],["digit","Decimal_Number"],["Nl","Letter_Number"],["No","Other_Number"],["P","Punctuation"],["punct","Punctuation"],["Pc","Connector_Punctuation"],["Pd","Dash_Punctuation"],["Pe","Close_Punctuation"],["Pf","Final_Punctuation"],["Pi","Initial_Punctuation"],["Po","Other_Punctuation"],["Ps","Open_Punctuation"],["S","Symbol"],["Sc","Currency_Symbol"],["Sk","Modifier_Symbol"],["Sm","Math_Symbol"],["So","Other_Symbol"],["Z","Separator"],["Zl","Line_Separator"],["Zp","Paragraph_Separator"],["Zs","Space_Separator"],["Other","Other"],["Control","Control"],["Format","Format"],["Unassigned","Unassigned"],["Private_Use","Private_Use"],["Surrogate","Surrogate"],["Letter","Letter"],["Cased_Letter","Cased_Letter"],["Lowercase_Letter","Lowercase_Letter"],["Modifier_Letter","Modifier_Letter"],["Other_Letter","Other_Letter"],["Titlecase_Letter","Titlecase_Letter"],["Uppercase_Letter","Uppercase_Letter"],["Mark","Mark"],["Spacing_Mark","Spacing_Mark"],["Enclosing_Mark","Enclosing_Mark"],["Nonspacing_Mark","Nonspacing_Mark"],["Number","Number"],["Decimal_Number","Decimal_Number"],["Letter_Number","Letter_Number"],["Other_Number","Other_Number"],["Punctuation","Punctuation"],["Connector_Punctuation","Connector_Punctuation"],["Dash_Punctuation","Dash_Punctuation"],["Close_Punctuation","Close_Punctuation"],["Final_Punctuation","Final_Punctuation"],["Initial_Punctuation","Initial_Punctuation"],["Other_Punctuation","Other_Punctuation"],["Open_Punctuation","Open_Punctuation"],["Symbol","Symbol"],["Currency_Symbol","Currency_Symbol"],["Modifier_Symbol","Modifier_Symbol"],["Math_Symbol","Math_Symbol"],["Other_Symbol","Other_Symbol"],["Separator","Separator"],["Line_Separator","Line_Separator"],["Paragraph_Separator","Paragraph_Separator"],["Space_Separator","Space_Separator"]])],["Script",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])],["Script_Extensions",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])]]);const propertyToValueAliases=mappings,matchPropertyValue=function(a,e){const s=propertyToValueAliases.get(a);if(!s)throw new Error(`Unknown property \`${a}\`.`);const o=s.get(e);if(o)return o;throw new Error(`Unknown value \`${e}\` for property \`${a}\`.`)};var unicodeMatchPropertyValueEcmascript=matchPropertyValue,unicodeCanonicalPropertyNamesEcmascript=new Set(["General_Category","Script","Script_Extensions","Alphabetic","Any","ASCII","ASCII_Hex_Digit","Assigned","Bidi_Control","Bidi_Mirrored","Case_Ignorable","Cased","Changes_When_Casefolded","Changes_When_Casemapped","Changes_When_Lowercased","Changes_When_NFKC_Casefolded","Changes_When_Titlecased","Changes_When_Uppercased","Dash","Default_Ignorable_Code_Point","Deprecated","Diacritic","Emoji","Emoji_Component","Emoji_Modifier","Emoji_Modifier_Base","Emoji_Presentation","Extended_Pictographic","Extender","Grapheme_Base","Grapheme_Extend","Hex_Digit","ID_Continue","ID_Start","Ideographic","IDS_Binary_Operator","IDS_Trinary_Operator","Join_Control","Logical_Order_Exception","Lowercase","Math","Noncharacter_Code_Point","Pattern_Syntax","Pattern_White_Space","Quotation_Mark","Radical","Regional_Indicator","Sentence_Terminal","Soft_Dotted","Terminal_Punctuation","Unified_Ideograph","Uppercase","Variation_Selector","White_Space","XID_Continue","XID_Start"]),unicodePropertyAliasesEcmascript=new Map([["scx","Script_Extensions"],["sc","Script"],["gc","General_Category"],["AHex","ASCII_Hex_Digit"],["Alpha","Alphabetic"],["Bidi_C","Bidi_Control"],["Bidi_M","Bidi_Mirrored"],["Cased","Cased"],["CI","Case_Ignorable"],["CWCF","Changes_When_Casefolded"],["CWCM","Changes_When_Casemapped"],["CWKCF","Changes_When_NFKC_Casefolded"],["CWL","Changes_When_Lowercased"],["CWT","Changes_When_Titlecased"],["CWU","Changes_When_Uppercased"],["Dash","Dash"],["Dep","Deprecated"],["DI","Default_Ignorable_Code_Point"],["Dia","Diacritic"],["Ext","Extender"],["Gr_Base","Grapheme_Base"],["Gr_Ext","Grapheme_Extend"],["Hex","Hex_Digit"],["IDC","ID_Continue"],["Ideo","Ideographic"],["IDS","ID_Start"],["IDSB","IDS_Binary_Operator"],["IDST","IDS_Trinary_Operator"],["Join_C","Join_Control"],["LOE","Logical_Order_Exception"],["Lower","Lowercase"],["Math","Math"],["NChar","Noncharacter_Code_Point"],["Pat_Syn","Pattern_Syntax"],["Pat_WS","Pattern_White_Space"],["QMark","Quotation_Mark"],["Radical","Radical"],["RI","Regional_Indicator"],["SD","Soft_Dotted"],["STerm","Sentence_Terminal"],["Term","Terminal_Punctuation"],["UIdeo","Unified_Ideograph"],["Upper","Uppercase"],["VS","Variation_Selector"],["WSpace","White_Space"],["space","White_Space"],["XIDC","XID_Continue"],["XIDS","XID_Start"]]);const canonicalProperties=unicodeCanonicalPropertyNamesEcmascript,propertyAliases=unicodePropertyAliasesEcmascript,matchProperty=function(a){if(canonicalProperties.has(a))return a;if(propertyAliases.has(a))return propertyAliases.get(a);throw new Error(`Unknown property: ${a}`)};var unicodeMatchPropertyEcmascript=matchProperty,unicode$1={};Object.defineProperty(unicode$1,"__esModule",{value:!0});unicode$1.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$1.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$1.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$1.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$1.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$1.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(dist$6,"__esModule",{value:!0});var _createClass$d=function(){function a(e,s){for(var o=0;o=this.pattern.length}},{key:"backreference",value:function(s){s>this.largestBackreference&&(this.largestBackreference=s)}},{key:"nextCodePoint",value:function(){return this.empty()?null:this.unicode?String.fromCodePoint(this.pattern.codePointAt(this.index)):this.pattern.charAt(this.index)}},{key:"skipCodePoint",value:function(){this.index+=this.nextCodePoint().length}},{key:"eat",value:function(s){return this.index+s.length>this.pattern.length||this.pattern.slice(this.index,this.index+s.length)!==s?!1:(this.index+=s.length,!0)}},{key:"eatIdentifierCodePoint",value:function(){var s=void 0,o=this.index,c=void 0;if(this.match("\\u")){if(this.skipCodePoint(),s=acceptUnicodeEscape(this),!s.matched)return this.index=o,null;s=s.value,c=String.fromCodePoint(s)}else{if(c=this.nextCodePoint(),c==null)return this.index=o,null;this.index+=c.length,s=c.codePointAt(0)}return{character:c,characterValue:s}}},{key:"eatIdentifierStart",value:function(){var s=this.index,o=this.eatIdentifierCodePoint();return o===null?(this.index=s,null):o.character==="_"||o.character==="$"||isIdentifierStart(o.characterValue)?o.character:(this.index=s,null)}},{key:"eatIdentifierPart",value:function(){var s=this.index,o=this.eatIdentifierCodePoint();return o===null?(this.index=s,null):o.character==="\u200C"||o.character==="\u200D"||o.character==="$"||isIdentifierPart(o.characterValue)?o.character:(this.index=s,null)}},{key:"eatAny",value:function(){for(var s=arguments.length,o=Array(s),c=0;c1&&arguments[1]!==void 0?arguments[1]:{},s=e.unicode,o=s===void 0?!1:s,c=new PatternAcceptorState(a,o),d=acceptDisjunction(c);if(d.matched){if(c.unicode&&c.largestBackreference>c.capturingGroups)return!1;if(c.groupingNames.length>0||c.unicode){var _=!0,b=!1,k=void 0;try{for(var $=c.backreferenceNames[Symbol.iterator](),j;!(_=(j=$.next()).done);_=!0){var _e=j.value;if(c.groupingNames.indexOf(_e)===-1)return!1}}catch(et){b=!0,k=et}finally{try{!_&&$.return&&$.return()}finally{if(b)throw k}}}}return d.matched};var backtrackOnFailure=function(e){return function(s){var o=s.index,c=s.largestBackreference,d=s.capturingGroups,_=e(s);return _.matched||(s.index=o,s.largestBackreference=c,s.capturingGroups=d),_}},acceptUnicodeEscape=backtrackOnFailure(function(a){if(!a.eat("u"))return{matched:!1};if(a.unicode&&a.eat("{")){for(var e=[];!a.eat("}");){var s=a.eatAny.apply(a,_toConsumableArray$6(hexDigits));if(s===null)return{matched:!1};e.push(s)}var o=parseInt(e.join(""),16);return o>1114111?{matched:!1}:{matched:!0,value:o}}var c=[0,0,0,0].map(function(){return a.eatAny.apply(a,_toConsumableArray$6(hexDigits))});if(c.some(function(b){return b===null}))return{matched:!1};var d=parseInt(c.join(""),16);if(a.unicode&&d>=55296&&d<=56319){var _=backtrackOnFailure(function(b){if(!b.eat("\\u"))return{matched:!1};var k=[0,0,0,0].map(function(){return b.eatAny.apply(b,_toConsumableArray$6(hexDigits))});if(k.some(function(j){return j===null}))return{matched:!1};var $=parseInt(k.join(""),16);return $<56320||$>=57344?{matched:!1}:{matched:!0,value:65536+((d&1023)<<10)+($&1023)}})(a);if(_.matched)return _}return{matched:!0,value:d}}),acceptDisjunction=function(e,s){do{if(s!==void 0&&e.eat(s))return{matched:!0};if(e.match("|"))continue;if(!acceptAlternative(e,s).matched)return{matched:!1}}while(e.eat("|"));return{matched:s===void 0||!!e.eat(s)}},acceptAlternative=function(e,s){for(;!e.match("|")&&!e.empty()&&(s===void 0||!e.match(s));)if(!acceptTerm(e).matched)return{matched:!1};return{matched:!0}},anyOf=function(){for(var e=arguments.length,s=Array(e),o=0;oparseInt(_))return{matched:!1}}return c.eat("}")?(c.eat("?"),{matched:!0}):{matched:!1}})(s);return o.matched?o:{matched:!s.unicode}}else s.eatAny("*","+","?")&&s.eat("?");return{matched:!0}})},acceptCharacterExcept=function(e){return function(s){var o=s.nextCodePoint();return o===null||e.indexOf(o)!==-1?{matched:!1}:(s.skipCodePoint(),{matched:!0})}},acceptPatternCharacter=acceptCharacterExcept(syntaxCharacters),acceptExtendedPatternCharacter=acceptCharacterExcept(extendedSyntaxCharacters),acceptInvalidBracedQuantifier=function(e){return backtrackOnFailure(function(s){return{matched:!!(s.eat("{")&&acceptDecimal(s).matched&&(!s.eat(",")||s.match("}")||acceptDecimal(s).matched)&&s.eat("}"))}})(e)},acceptAtom=function(e){if(e.unicode)return anyOf(acceptPatternCharacter,function(o){return{matched:!!o.eat(".")}},backtrackOnFailure(function(o){return o.eat("\\")?acceptAtomEscape(o):{matched:!1}}),acceptCharacterClass,acceptLabeledGroup(function(o){return o.eat("?:")}),acceptGrouping)(e);var s=anyOf(function(o){return{matched:!!o.eat(".")}},backtrackOnFailure(function(o){return o.eat("\\")?acceptAtomEscape(o):{matched:!1}}),backtrackOnFailure(function(o){return{matched:o.eat("\\")&&o.match("c")}}),acceptCharacterClass,acceptLabeledGroup(function(o){return o.eat("?:")}),acceptGrouping)(e);return!s.matched&&acceptInvalidBracedQuantifier(e).matched?{matched:!1}:s.matched?s:acceptExtendedPatternCharacter(e)},acceptGrouping=backtrackOnFailure(function(a){if(!a.eat("("))return{matched:!1};var e=backtrackOnFailure(function(s){return a.eat("?")?acceptGroupName(s):{matched:!1}})(a);if(!acceptDisjunction(a,")").matched)return{matched:!1};if(e.matched){if(a.groupingNames.indexOf(e.data)!==-1)return{matched:!1};a.groupingNames.push(e.data)}return a.capturingGroups++,{matched:!0}}),acceptDecimalEscape=backtrackOnFailure(function(a){var e=a.eatAny.apply(a,_toConsumableArray$6(decimalDigits));return e===null?{matched:!1}:e==="0"?{matched:!0}:(a.backreference(parseInt(e+(a.eatNaturalNumber()||""))),{matched:!0})}),acceptCharacterClassEscape=function(e){return e.eatAny("d","D","s","S","w","W")?{matched:!0}:e.unicode?backtrackOnFailure(function(s){return!s.eat("p{")&&!s.eat("P{")?{matched:!1}:acceptUnicodePropertyValueExpression(s).matched?{matched:!!s.eat("}")}:{matched:!1}})(e):{matched:!1}},acceptUnicodePropertyName=function(e){for(var s=[],o=void 0;o=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(["_"]));)s.push(o);return{matched:s.length>0,data:s.join("")}},acceptUnicodePropertyValue=function(e){for(var s=[],o=void 0;o=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(_toConsumableArray$6(decimalDigits),["_"]));)s.push(o);return{matched:s.length>0,data:s.join("")}},illegalLoneUnicodePropertyNames=["General_Category","Script","Script_Extensions","scx","sc","gc"],generalCategoryValues=_mappings2.default.get("General_Category"),acceptLoneUnicodePropertyNameOrValue=function(e){var s=acceptUnicodePropertyValue(e);return!s.matched||illegalLoneUnicodePropertyNames.includes(s.data)?{matched:!1}:{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyEcmascript2.default)(s.data)})||generalCategoryValues.get(s.data)!=null}},acceptUnicodePropertyValueExpression=function(e){return anyOf(backtrackOnFailure(function(s){var o=acceptUnicodePropertyName(s);if(!o.matched||!s.eat("="))return{matched:!1};var c=acceptUnicodePropertyValue(s);return c.matched?{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyValueEcmascript2.default)(_unicodePropertyAliasesEcmascript2.default.get(o.data)||o.data,c.data)})}:{matched:!1}}),backtrackOnFailure(acceptLoneUnicodePropertyNameOrValue))(e)},acceptCharacterEscape=anyOf(function(a){var e=a.eatAny.apply(a,_toConsumableArray$6(controlEscapeCharacters));return e===null?{matched:!1}:{matched:!0,value:controlEscapeCharacterValues[e]}},backtrackOnFailure(function(a){if(!a.eat("c"))return{matched:!1};var e=a.eatAny.apply(a,_toConsumableArray$6(controlCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)%32}}),backtrackOnFailure(function(a){return!a.eat("0")||a.eatAny.apply(a,_toConsumableArray$6(decimalDigits))?{matched:!1}:{matched:!0,value:0}}),backtrackOnFailure(function(a){if(!a.eat("x"))return{matched:!1};var e=[0,0].map(function(){return a.eatAny.apply(a,_toConsumableArray$6(hexDigits))});return e.some(function(s){return s===null})?{matched:!1}:{matched:!0,value:parseInt(e.join(""),16)}}),acceptUnicodeEscape,backtrackOnFailure(function(a){if(a.unicode)return{matched:!1};var e=a.eatAny.apply(a,_toConsumableArray$6(octalDigits));if(e===null)return{matched:!1};var s=parseInt(e,8);if(octalDigits.indexOf(a.nextCodePoint())===-1)return{matched:!0,value:s};var o=a.eatAny.apply(a,_toConsumableArray$6(octalDigits)),c=parseInt(o,8);if(s<4){if(octalDigits.indexOf(a.nextCodePoint())===-1)return{matched:!0,value:s<<3|c};var d=a.eatAny.apply(a,_toConsumableArray$6(octalDigits)),_=parseInt(d,8);return{matched:!0,value:s<<6|c<<3|_}}return{matched:!0,value:s<<3|c}}),backtrackOnFailure(function(a){if(!a.unicode)return{matched:!1};var e=a.eatAny.apply(a,_toConsumableArray$6(syntaxCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)}}),function(a){return!a.unicode||!a.eat("/")?{matched:!1}:{matched:!0,value:"/".charCodeAt(0)}},backtrackOnFailure(function(a){if(a.unicode)return{matched:!1};var e=a.nextCodePoint();return e!==null&&e!=="c"&&e!=="k"?(a.skipCodePoint(),{matched:!0,value:e.codePointAt(0)}):{matched:!1}})),acceptGroupNameBackreference=backtrackOnFailure(function(a){if(!a.eat("k"))return{matched:!1};var e=acceptGroupName(a);return e.matched?(a.backreferenceNames.push(e.data),{matched:!0}):(a.backreferenceNames.push(INVALID_NAMED_BACKREFERENCE_SENTINEL),{matched:!0})}),acceptGroupName=backtrackOnFailure(function(a){if(!a.eat("<"))return{matched:!1};var e=[],s=a.eatIdentifierStart();if(!s)return{matched:!1};e.push(s);for(var o=void 0;o=a.eatIdentifierPart();)e.push(o);return a.eat(">")?{matched:e.length>0,data:e.join("")}:{matched:!1}}),acceptAtomEscape=anyOf(acceptDecimalEscape,acceptCharacterClassEscape,acceptCharacterEscape,acceptGroupNameBackreference),acceptCharacterClass=backtrackOnFailure(function(a){if(!a.eat("["))return{matched:!1};a.eat("^");var e=anyOf(function(k){return{matched:!!k.eat("b"),value:8}},function(k){return{matched:k.unicode&&!!k.eat("-"),value:"-".charCodeAt(0)}},backtrackOnFailure(function(k){if(k.unicode||!k.eat("c"))return{matched:!1};var $=k.eatAny.apply(k,_toConsumableArray$6(decimalDigits).concat(["_"]));return $===null?{matched:!1}:{matched:!0,value:$.charCodeAt(0)%32}}),acceptCharacterClassEscape,acceptCharacterEscape,function(k){return{matched:!k.unicode&&!!k.eat("k"),value:107}}),s=function($){var j=$.nextCodePoint();if(j==="]"||j==="-"||j===null)return{matched:!1};if(j!=="\\")return $.skipCodePoint(),{matched:!0,value:j.codePointAt(0)};$.eat("\\");var _e=e($);return!_e.matched&&$.nextCodePoint()==="c"&&!$.unicode?{matched:!0,value:"\\".charCodeAt(0)}:_e},o=function($){return $.eat("-")?{matched:!0,value:"-".charCodeAt(0)}:s($)},c=function($,j){var _e=function(nt){return nt.value===void 0&&nt.matched};if($.eat("-")){if($.match("]"))return{matched:!0};var et=o($);return et.matched?$.unicode&&(_e(j)||_e(et))?{matched:!1}:!(!$.unicode&&(_e(j)||_e(et)))&&j.value>et.value?{matched:!1}:$.match("]")?{matched:!0}:d($):{matched:!1}}return $.match("]")?{matched:!0}:_($)},d=function($){var j=o($);return j.matched?c($,j):{matched:!1}},_=function($){var j=s($);return j.matched?c($,j):{matched:!1}};if(a.eat("]"))return{matched:!0};var b=d(a);return b.matched&&a.eat("]"),b}),dist$5={};Object.defineProperty(dist$5,"__esModule",{value:!0});function _classCallCheck$g(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}dist$5.ArrayAssignmentTarget=function a(e){var s=e.elements,o=e.rest;_classCallCheck$g(this,a),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=o};dist$5.ArrayBinding=function a(e){var s=e.elements,o=e.rest;_classCallCheck$g(this,a),this.type="ArrayBinding",this.elements=s,this.rest=o};dist$5.ArrayExpression=function a(e){var s=e.elements;_classCallCheck$g(this,a),this.type="ArrayExpression",this.elements=s};dist$5.ArrowExpression=function a(e){var s=e.isAsync,o=e.params,c=e.body;_classCallCheck$g(this,a),this.type="ArrowExpression",this.isAsync=s,this.params=o,this.body=c};dist$5.AssignmentExpression=function a(e){var s=e.binding,o=e.expression;_classCallCheck$g(this,a),this.type="AssignmentExpression",this.binding=s,this.expression=o};dist$5.AssignmentTargetIdentifier=function a(e){var s=e.name;_classCallCheck$g(this,a),this.type="AssignmentTargetIdentifier",this.name=s};dist$5.AssignmentTargetPropertyIdentifier=function a(e){var s=e.binding,o=e.init;_classCallCheck$g(this,a),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=o};dist$5.AssignmentTargetPropertyProperty=function a(e){var s=e.name,o=e.binding;_classCallCheck$g(this,a),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=o};dist$5.AssignmentTargetWithDefault=function a(e){var s=e.binding,o=e.init;_classCallCheck$g(this,a),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=o};dist$5.AwaitExpression=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="AwaitExpression",this.expression=s};dist$5.BinaryExpression=function a(e){var s=e.left,o=e.operator,c=e.right;_classCallCheck$g(this,a),this.type="BinaryExpression",this.left=s,this.operator=o,this.right=c};dist$5.BindingIdentifier=function a(e){var s=e.name;_classCallCheck$g(this,a),this.type="BindingIdentifier",this.name=s};dist$5.BindingPropertyIdentifier=function a(e){var s=e.binding,o=e.init;_classCallCheck$g(this,a),this.type="BindingPropertyIdentifier",this.binding=s,this.init=o};dist$5.BindingPropertyProperty=function a(e){var s=e.name,o=e.binding;_classCallCheck$g(this,a),this.type="BindingPropertyProperty",this.name=s,this.binding=o};dist$5.BindingWithDefault=function a(e){var s=e.binding,o=e.init;_classCallCheck$g(this,a),this.type="BindingWithDefault",this.binding=s,this.init=o};dist$5.Block=function a(e){var s=e.statements;_classCallCheck$g(this,a),this.type="Block",this.statements=s};dist$5.BlockStatement=function a(e){var s=e.block;_classCallCheck$g(this,a),this.type="BlockStatement",this.block=s};dist$5.BreakStatement=function a(e){var s=e.label;_classCallCheck$g(this,a),this.type="BreakStatement",this.label=s};dist$5.CallExpression=function a(e){var s=e.callee,o=e.arguments;_classCallCheck$g(this,a),this.type="CallExpression",this.callee=s,this.arguments=o};dist$5.CatchClause=function a(e){var s=e.binding,o=e.body;_classCallCheck$g(this,a),this.type="CatchClause",this.binding=s,this.body=o};dist$5.ClassDeclaration=function a(e){var s=e.name,o=e.super,c=e.elements;_classCallCheck$g(this,a),this.type="ClassDeclaration",this.name=s,this.super=o,this.elements=c};dist$5.ClassElement=function a(e){var s=e.isStatic,o=e.method;_classCallCheck$g(this,a),this.type="ClassElement",this.isStatic=s,this.method=o};dist$5.ClassExpression=function a(e){var s=e.name,o=e.super,c=e.elements;_classCallCheck$g(this,a),this.type="ClassExpression",this.name=s,this.super=o,this.elements=c};dist$5.CompoundAssignmentExpression=function a(e){var s=e.binding,o=e.operator,c=e.expression;_classCallCheck$g(this,a),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=o,this.expression=c};dist$5.ComputedMemberAssignmentTarget=function a(e){var s=e.object,o=e.expression;_classCallCheck$g(this,a),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=o};dist$5.ComputedMemberExpression=function a(e){var s=e.object,o=e.expression;_classCallCheck$g(this,a),this.type="ComputedMemberExpression",this.object=s,this.expression=o};dist$5.ComputedPropertyName=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="ComputedPropertyName",this.expression=s};dist$5.ConditionalExpression=function a(e){var s=e.test,o=e.consequent,c=e.alternate;_classCallCheck$g(this,a),this.type="ConditionalExpression",this.test=s,this.consequent=o,this.alternate=c};dist$5.ContinueStatement=function a(e){var s=e.label;_classCallCheck$g(this,a),this.type="ContinueStatement",this.label=s};dist$5.DataProperty=function a(e){var s=e.name,o=e.expression;_classCallCheck$g(this,a),this.type="DataProperty",this.name=s,this.expression=o};dist$5.DebuggerStatement=function a(){_classCallCheck$g(this,a),this.type="DebuggerStatement"};dist$5.Directive=function a(e){var s=e.rawValue;_classCallCheck$g(this,a),this.type="Directive",this.rawValue=s};dist$5.DoWhileStatement=function a(e){var s=e.body,o=e.test;_classCallCheck$g(this,a),this.type="DoWhileStatement",this.body=s,this.test=o};dist$5.EmptyStatement=function a(){_classCallCheck$g(this,a),this.type="EmptyStatement"};dist$5.Export=function a(e){var s=e.declaration;_classCallCheck$g(this,a),this.type="Export",this.declaration=s};dist$5.ExportAllFrom=function a(e){var s=e.moduleSpecifier;_classCallCheck$g(this,a),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$5.ExportDefault=function a(e){var s=e.body;_classCallCheck$g(this,a),this.type="ExportDefault",this.body=s};dist$5.ExportFrom=function a(e){var s=e.namedExports,o=e.moduleSpecifier;_classCallCheck$g(this,a),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=o};dist$5.ExportFromSpecifier=function a(e){var s=e.name,o=e.exportedName;_classCallCheck$g(this,a),this.type="ExportFromSpecifier",this.name=s,this.exportedName=o};dist$5.ExportLocalSpecifier=function a(e){var s=e.name,o=e.exportedName;_classCallCheck$g(this,a),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=o};dist$5.ExportLocals=function a(e){var s=e.namedExports;_classCallCheck$g(this,a),this.type="ExportLocals",this.namedExports=s};dist$5.ExpressionStatement=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="ExpressionStatement",this.expression=s};dist$5.ForAwaitStatement=function a(e){var s=e.left,o=e.right,c=e.body;_classCallCheck$g(this,a),this.type="ForAwaitStatement",this.left=s,this.right=o,this.body=c};dist$5.ForInStatement=function a(e){var s=e.left,o=e.right,c=e.body;_classCallCheck$g(this,a),this.type="ForInStatement",this.left=s,this.right=o,this.body=c};dist$5.ForOfStatement=function a(e){var s=e.left,o=e.right,c=e.body;_classCallCheck$g(this,a),this.type="ForOfStatement",this.left=s,this.right=o,this.body=c};dist$5.ForStatement=function a(e){var s=e.init,o=e.test,c=e.update,d=e.body;_classCallCheck$g(this,a),this.type="ForStatement",this.init=s,this.test=o,this.update=c,this.body=d};dist$5.FormalParameters=function a(e){var s=e.items,o=e.rest;_classCallCheck$g(this,a),this.type="FormalParameters",this.items=s,this.rest=o};dist$5.FunctionBody=function a(e){var s=e.directives,o=e.statements;_classCallCheck$g(this,a),this.type="FunctionBody",this.directives=s,this.statements=o};dist$5.FunctionDeclaration=function a(e){var s=e.isAsync,o=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,a),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=o,this.name=c,this.params=d,this.body=_};dist$5.FunctionExpression=function a(e){var s=e.isAsync,o=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,a),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=o,this.name=c,this.params=d,this.body=_};dist$5.Getter=function a(e){var s=e.name,o=e.body;_classCallCheck$g(this,a),this.type="Getter",this.name=s,this.body=o};dist$5.IdentifierExpression=function a(e){var s=e.name;_classCallCheck$g(this,a),this.type="IdentifierExpression",this.name=s};dist$5.IfStatement=function a(e){var s=e.test,o=e.consequent,c=e.alternate;_classCallCheck$g(this,a),this.type="IfStatement",this.test=s,this.consequent=o,this.alternate=c};dist$5.Import=function a(e){var s=e.defaultBinding,o=e.namedImports,c=e.moduleSpecifier;_classCallCheck$g(this,a),this.type="Import",this.defaultBinding=s,this.namedImports=o,this.moduleSpecifier=c};dist$5.ImportNamespace=function a(e){var s=e.defaultBinding,o=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$g(this,a),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=o,this.moduleSpecifier=c};dist$5.ImportSpecifier=function a(e){var s=e.name,o=e.binding;_classCallCheck$g(this,a),this.type="ImportSpecifier",this.name=s,this.binding=o};dist$5.LabeledStatement=function a(e){var s=e.label,o=e.body;_classCallCheck$g(this,a),this.type="LabeledStatement",this.label=s,this.body=o};dist$5.LiteralBooleanExpression=function a(e){var s=e.value;_classCallCheck$g(this,a),this.type="LiteralBooleanExpression",this.value=s};dist$5.LiteralInfinityExpression=function a(){_classCallCheck$g(this,a),this.type="LiteralInfinityExpression"};dist$5.LiteralNullExpression=function a(){_classCallCheck$g(this,a),this.type="LiteralNullExpression"};dist$5.LiteralNumericExpression=function a(e){var s=e.value;_classCallCheck$g(this,a),this.type="LiteralNumericExpression",this.value=s};dist$5.LiteralRegExpExpression=function a(e){var s=e.pattern,o=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$g(this,a),this.type="LiteralRegExpExpression",this.pattern=s,this.global=o,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};dist$5.LiteralStringExpression=function a(e){var s=e.value;_classCallCheck$g(this,a),this.type="LiteralStringExpression",this.value=s};dist$5.Method=function a(e){var s=e.isAsync,o=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,a),this.type="Method",this.isAsync=s,this.isGenerator=o,this.name=c,this.params=d,this.body=_};dist$5.Module=function a(e){var s=e.directives,o=e.items;_classCallCheck$g(this,a),this.type="Module",this.directives=s,this.items=o};dist$5.NewExpression=function a(e){var s=e.callee,o=e.arguments;_classCallCheck$g(this,a),this.type="NewExpression",this.callee=s,this.arguments=o};dist$5.NewTargetExpression=function a(){_classCallCheck$g(this,a),this.type="NewTargetExpression"};dist$5.ObjectAssignmentTarget=function a(e){var s=e.properties,o=e.rest;_classCallCheck$g(this,a),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=o};dist$5.ObjectBinding=function a(e){var s=e.properties,o=e.rest;_classCallCheck$g(this,a),this.type="ObjectBinding",this.properties=s,this.rest=o};dist$5.ObjectExpression=function a(e){var s=e.properties;_classCallCheck$g(this,a),this.type="ObjectExpression",this.properties=s};dist$5.ReturnStatement=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="ReturnStatement",this.expression=s};dist$5.Script=function a(e){var s=e.directives,o=e.statements;_classCallCheck$g(this,a),this.type="Script",this.directives=s,this.statements=o};dist$5.Setter=function a(e){var s=e.name,o=e.param,c=e.body;_classCallCheck$g(this,a),this.type="Setter",this.name=s,this.param=o,this.body=c};dist$5.ShorthandProperty=function a(e){var s=e.name;_classCallCheck$g(this,a),this.type="ShorthandProperty",this.name=s};dist$5.SpreadElement=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="SpreadElement",this.expression=s};dist$5.SpreadProperty=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="SpreadProperty",this.expression=s};dist$5.StaticMemberAssignmentTarget=function a(e){var s=e.object,o=e.property;_classCallCheck$g(this,a),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=o};dist$5.StaticMemberExpression=function a(e){var s=e.object,o=e.property;_classCallCheck$g(this,a),this.type="StaticMemberExpression",this.object=s,this.property=o};dist$5.StaticPropertyName=function a(e){var s=e.value;_classCallCheck$g(this,a),this.type="StaticPropertyName",this.value=s};dist$5.Super=function a(){_classCallCheck$g(this,a),this.type="Super"};dist$5.SwitchCase=function a(e){var s=e.test,o=e.consequent;_classCallCheck$g(this,a),this.type="SwitchCase",this.test=s,this.consequent=o};dist$5.SwitchDefault=function a(e){var s=e.consequent;_classCallCheck$g(this,a),this.type="SwitchDefault",this.consequent=s};dist$5.SwitchStatement=function a(e){var s=e.discriminant,o=e.cases;_classCallCheck$g(this,a),this.type="SwitchStatement",this.discriminant=s,this.cases=o};dist$5.SwitchStatementWithDefault=function a(e){var s=e.discriminant,o=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$g(this,a),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=o,this.defaultCase=c,this.postDefaultCases=d};dist$5.TemplateElement=function a(e){var s=e.rawValue;_classCallCheck$g(this,a),this.type="TemplateElement",this.rawValue=s};dist$5.TemplateExpression=function a(e){var s=e.tag,o=e.elements;_classCallCheck$g(this,a),this.type="TemplateExpression",this.tag=s,this.elements=o};dist$5.ThisExpression=function a(){_classCallCheck$g(this,a),this.type="ThisExpression"};dist$5.ThrowStatement=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="ThrowStatement",this.expression=s};dist$5.TryCatchStatement=function a(e){var s=e.body,o=e.catchClause;_classCallCheck$g(this,a),this.type="TryCatchStatement",this.body=s,this.catchClause=o};dist$5.TryFinallyStatement=function a(e){var s=e.body,o=e.catchClause,c=e.finalizer;_classCallCheck$g(this,a),this.type="TryFinallyStatement",this.body=s,this.catchClause=o,this.finalizer=c};dist$5.UnaryExpression=function a(e){var s=e.operator,o=e.operand;_classCallCheck$g(this,a),this.type="UnaryExpression",this.operator=s,this.operand=o};dist$5.UpdateExpression=function a(e){var s=e.isPrefix,o=e.operator,c=e.operand;_classCallCheck$g(this,a),this.type="UpdateExpression",this.isPrefix=s,this.operator=o,this.operand=c};dist$5.VariableDeclaration=function a(e){var s=e.kind,o=e.declarators;_classCallCheck$g(this,a),this.type="VariableDeclaration",this.kind=s,this.declarators=o};dist$5.VariableDeclarationStatement=function a(e){var s=e.declaration;_classCallCheck$g(this,a),this.type="VariableDeclarationStatement",this.declaration=s};dist$5.VariableDeclarator=function a(e){var s=e.binding,o=e.init;_classCallCheck$g(this,a),this.type="VariableDeclarator",this.binding=s,this.init=o};dist$5.WhileStatement=function a(e){var s=e.test,o=e.body;_classCallCheck$g(this,a),this.type="WhileStatement",this.test=s,this.body=o};dist$5.WithStatement=function a(e){var s=e.object,o=e.body;_classCallCheck$g(this,a),this.type="WithStatement",this.object=s,this.body=o};dist$5.YieldExpression=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="YieldExpression",this.expression=s};dist$5.YieldGeneratorExpression=function a(e){var s=e.expression;_classCallCheck$g(this,a),this.type="YieldGeneratorExpression",this.expression=s};Object.defineProperty(parser$1,"__esModule",{value:!0});parser$1.GenericParser=void 0;var _createClass$c=function(){function a(e,s){for(var o=0;o":Precedence$1.Relational,"<=":Precedence$1.Relational,">=":Precedence$1.Relational,in:Precedence$1.Relational,instanceof:Precedence$1.Relational,"<<":Precedence$1.BitwiseSHIFT,">>":Precedence$1.BitwiseSHIFT,">>>":Precedence$1.BitwiseSHIFT,"+":Precedence$1.Additive,"-":Precedence$1.Additive,"*":Precedence$1.Multiplicative,"%":Precedence$1.Multiplicative,"/":Precedence$1.Multiplicative};function isValidSimpleAssignmentTarget(a){if(a==null)return!1;switch(a.type){case"IdentifierExpression":case"ComputedMemberExpression":case"StaticMemberExpression":return!0}return!1}function isPrefixOperator(a){switch(a.type){case _tokenizer.TokenType.INC:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TYPEOF:return!0}return!1}function isUpdateOperator(a){return a.type===_tokenizer.TokenType.INC||a.type===_tokenizer.TokenType.DEC}parser$1.GenericParser=function(a){_inherits$7(e,a);function e(s){_classCallCheck$f(this,e);var o=_possibleConstructorReturn$7(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,s));return o.allowIn=!0,o.inFunctionBody=!1,o.inParameter=!1,o.allowYieldExpression=!1,o.allowAwaitExpression=!1,o.firstAwaitLocation=null,o.module=!1,o.moduleIsTheGoalSymbol=!1,o.strict=!1,o.isBindingElement=!0,o.isAssignmentTarget=!0,o.firstExprError=null,o}return _createClass$c(e,[{key:"match",value:function(o){return this.lookahead.type===o}},{key:"matchIdentifier",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IDENTIFIER:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.YIELD:case _tokenizer.TokenType.ASYNC:return!0;case _tokenizer.TokenType.AWAIT:return this.moduleIsTheGoalSymbol?!1:(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0);case _tokenizer.TokenType.ESCAPED_KEYWORD:return this.lookahead.value==="await"&&!this.moduleIsTheGoalSymbol?(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0):this.lookahead.value==="let"||this.lookahead.value==="yield"||this.lookahead.value==="async"}return!1}},{key:"eat",value:function(o){return this.lookahead.type===o?this.lex():null}},{key:"expect",value:function(o){if(this.lookahead.type===o)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"matchContextualKeyword",value:function(o){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===o}},{key:"expectContextualKeyword",value:function(o){if(this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===o)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"eatContextualKeyword",value:function(o){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===o?this.lex():null}},{key:"consumeSemicolon",value:function(){if(!this.eat(_tokenizer.TokenType.SEMICOLON)&&!this.hasLineTerminatorBeforeNext&&!this.eof()&&!this.match(_tokenizer.TokenType.RBRACE))throw this.createUnexpected(this.lookahead)}},{key:"startNode",value:function(o){return o}},{key:"copyNode",value:function(o,c){return c}},{key:"finishNode",value:function(o){return o}},{key:"parseModule",value:function(){this.moduleIsTheGoalSymbol=this.module=this.strict=!0,this.lookahead=this.advance();var o=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Module({directives:d,items:_}),o)}},{key:"parseScript",value:function(){this.lookahead=this.advance();var o=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Script({directives:d,statements:_}),o)}},{key:"parseFunctionBody",value:function(){var o=this.inFunctionBody,c=this.module,d=this.strict;this.inFunctionBody=!0,this.module=!1;var _=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);var b=new AST.FunctionBody(this.parseBody());return this.expect(_tokenizer.TokenType.RBRACE),b=this.finishNode(b,_),this.inFunctionBody=o,this.module=c,this.strict=d,b}},{key:"parseBody",value:function(){for(var o=[],c=[],d=!0,_=null;!(this.eof()||this.match(_tokenizer.TokenType.RBRACE));){var b=this.lookahead,k=b.slice.text,$=b.type===_tokenizer.TokenType.STRING,j=this.module,_e=this.getLocation(),et=this.startNode(),tt=j?this.parseModuleItem():this.parseStatementListItem();if(d)if($&&tt.type==="ExpressionStatement"&&tt.expression.type==="LiteralStringExpression"){!_&&b.octal&&(_=this.createErrorWithLocation(_e,"Unexpected legacy octal escape sequence: \\"+b.octal));var nt=k.slice(1,-1);nt==="use strict"&&(this.strict=!0),o.push(this.finishNode(new AST.Directive({rawValue:nt}),et))}else{if(d=!1,_&&this.strict)throw _;c.push(tt)}else c.push(tt)}if(_&&this.strict)throw _;return{directives:o,statements:c}}},{key:"parseImportSpecifier",value:function(){var o=this.startNode(),c=void 0;if(this.matchIdentifier()){if(c=this.parseIdentifier(),!this.eatContextualKeyword("as"))return this.finishNode(new AST.ImportSpecifier({name:null,binding:this.finishNode(new AST.BindingIdentifier({name:c}),o)}),o)}else this.lookahead.type.klass.isIdentifierName&&(c=this.parseIdentifierName(),this.expectContextualKeyword("as"));return this.finishNode(new AST.ImportSpecifier({name:c,binding:this.parseBindingIdentifier()}),o)}},{key:"parseNameSpaceBinding",value:function(){return this.expect(_tokenizer.TokenType.MUL),this.expectContextualKeyword("as"),this.parseBindingIdentifier()}},{key:"parseNamedImports",value:function(){var o=[];for(this.expect(_tokenizer.TokenType.LBRACE);!this.eat(_tokenizer.TokenType.RBRACE);)if(o.push(this.parseImportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return o}},{key:"parseFromClause",value:function(){this.expectContextualKeyword("from");var o=this.expect(_tokenizer.TokenType.STRING).str;return o}},{key:"parseImportDeclaration",value:function(){var o=this.startNode(),c=null,d=void 0;if(this.expect(_tokenizer.TokenType.IMPORT),this.match(_tokenizer.TokenType.STRING))return d=this.lex().str,this.consumeSemicolon(),this.finishNode(new AST.Import({defaultBinding:null,namedImports:[],moduleSpecifier:d}),o);if(this.matchIdentifier()&&(c=this.parseBindingIdentifier(),!this.eat(_tokenizer.TokenType.COMMA))){var _=new AST.Import({defaultBinding:c,namedImports:[],moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(_,o)}if(this.match(_tokenizer.TokenType.MUL)){var b=new AST.ImportNamespace({defaultBinding:c,namespaceBinding:this.parseNameSpaceBinding(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(b,o)}else if(this.match(_tokenizer.TokenType.LBRACE)){var k=new AST.Import({defaultBinding:c,namedImports:this.parseNamedImports(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(k,o)}throw this.createUnexpected(this.lookahead)}},{key:"parseExportSpecifier",value:function(){var o=this.startNode(),c=this.finishNode({type:EXPORT_UNKNOWN_SPECIFIER,isIdentifier:this.matchIdentifier(),value:this.parseIdentifierName()},o);if(this.eatContextualKeyword("as")){var d=this.parseIdentifierName();return this.finishNode({name:c,exportedName:d},o)}return this.finishNode({name:c,exportedName:null},o)}},{key:"parseExportClause",value:function(){this.expect(_tokenizer.TokenType.LBRACE);for(var o=[];!this.eat(_tokenizer.TokenType.RBRACE);)if(o.push(this.parseExportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return o}},{key:"parseExportDeclaration",value:function(){var o=this,c=this.startNode(),d=void 0;switch(this.expect(_tokenizer.TokenType.EXPORT),this.lookahead.type){case _tokenizer.TokenType.MUL:this.lex(),d=new AST.ExportAllFrom({moduleSpecifier:this.parseFromClause()}),this.consumeSemicolon();break;case _tokenizer.TokenType.LBRACE:{var _=this.parseExportClause(),b=null;this.matchContextualKeyword("from")?(b=this.parseFromClause(),d=new AST.ExportFrom({namedExports:_.map(function(_e){return o.copyNode(_e,new AST.ExportFromSpecifier({name:_e.name.value,exportedName:_e.exportedName}))}),moduleSpecifier:b})):(_.forEach(function(_e){var et=_e.name;if(!et.isIdentifier)throw o.createError(_errors$1.ErrorMessages.ILLEGAL_EXPORTED_NAME)}),d=new AST.ExportLocals({namedExports:_.map(function(_e){return o.copyNode(_e,new AST.ExportLocalSpecifier({name:o.copyNode(_e.name,new AST.IdentifierExpression({name:_e.name.value})),exportedName:_e.exportedName}))})})),this.consumeSemicolon();break}case _tokenizer.TokenType.CLASS:d=new AST.Export({declaration:this.parseClass({isExpr:!1,inDefault:!1})});break;case _tokenizer.TokenType.FUNCTION:d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.ASYNC:{var k=this.startNode();this.lex(),d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:k})});break}case _tokenizer.TokenType.DEFAULT:switch(this.lex(),this.lookahead.type){case _tokenizer.TokenType.FUNCTION:d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.CLASS:d=new AST.ExportDefault({body:this.parseClass({isExpr:!1,inDefault:!0})});break;case _tokenizer.TokenType.ASYNC:{var $=this.startNode(),j=this.saveLexerState();if(this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)){d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!1,isAsync:!0,startState:$})});break}this.restoreLexerState(j)}default:d=new AST.ExportDefault({body:this.parseAssignmentExpression()}),this.consumeSemicolon();break}break;case _tokenizer.TokenType.VAR:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.CONST:d=new AST.Export({declaration:this.parseVariableDeclaration(!0)}),this.consumeSemicolon();break;default:throw this.createUnexpected(this.lookahead)}return this.finishNode(d,c)}},{key:"parseModuleItem",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IMPORT:return this.parseImportDeclaration();case _tokenizer.TokenType.EXPORT:return this.parseExportDeclaration();default:return this.parseStatementListItem()}}},{key:"lookaheadLexicalDeclaration",value:function(){if(this.match(_tokenizer.TokenType.LET)||this.match(_tokenizer.TokenType.CONST)){var o=this.saveLexerState();if(this.lex(),this.matchIdentifier()||this.match(_tokenizer.TokenType.LBRACE)||this.match(_tokenizer.TokenType.LBRACK))return this.restoreLexerState(o),!0;this.restoreLexerState(o)}return!1}},{key:"parseStatementListItem",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.FUNCTION:return this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1});case _tokenizer.TokenType.CLASS:return this.parseClass({isExpr:!1,inDefault:!1});case _tokenizer.TokenType.ASYNC:{var o=this.getLocation(),c=this.saveLexerState();return this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:o}):(this.restoreLexerState(c),this.parseStatement())}default:if(this.lookaheadLexicalDeclaration()){var d=this.startNode();return this.finishNode(this.parseVariableDeclarationStatement(),d)}return this.parseStatement()}}},{key:"parseStatement",value:function(){var o=this.startNode(),c=this.isolateCoverGrammar(this.parseStatementHelper);return this.finishNode(c,o)}},{key:"parseStatementHelper",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.SEMICOLON:return this.parseEmptyStatement();case _tokenizer.TokenType.LBRACE:return this.parseBlockStatement();case _tokenizer.TokenType.LPAREN:return this.parseExpressionStatement();case _tokenizer.TokenType.BREAK:return this.parseBreakStatement();case _tokenizer.TokenType.CONTINUE:return this.parseContinueStatement();case _tokenizer.TokenType.DEBUGGER:return this.parseDebuggerStatement();case _tokenizer.TokenType.DO:return this.parseDoWhileStatement();case _tokenizer.TokenType.FOR:return this.parseForStatement();case _tokenizer.TokenType.IF:return this.parseIfStatement();case _tokenizer.TokenType.RETURN:return this.parseReturnStatement();case _tokenizer.TokenType.SWITCH:return this.parseSwitchStatement();case _tokenizer.TokenType.THROW:return this.parseThrowStatement();case _tokenizer.TokenType.TRY:return this.parseTryStatement();case _tokenizer.TokenType.VAR:return this.parseVariableDeclarationStatement();case _tokenizer.TokenType.WHILE:return this.parseWhileStatement();case _tokenizer.TokenType.WITH:return this.parseWithStatement();case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.CLASS:throw this.createUnexpected(this.lookahead);default:{var o=this.saveLexerState();if(this.eat(_tokenizer.TokenType.LET)){if(this.match(_tokenizer.TokenType.LBRACK))throw this.restoreLexerState(o),this.createUnexpected(this.lookahead);this.restoreLexerState(o)}else if(this.eat(_tokenizer.TokenType.ASYNC)){if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION))throw this.createUnexpected(this.lookahead);this.restoreLexerState(o)}var c=this.parseExpression();if(c.type==="IdentifierExpression"&&this.eat(_tokenizer.TokenType.COLON)){var d=this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement();return new AST.LabeledStatement({label:c.name,body:d})}return this.consumeSemicolon(),new AST.ExpressionStatement({expression:c})}}}},{key:"parseEmptyStatement",value:function(){return this.lex(),new AST.EmptyStatement}},{key:"parseBlockStatement",value:function(){return new AST.BlockStatement({block:this.parseBlock()})}},{key:"parseExpressionStatement",value:function(){var o=this.parseExpression();return this.consumeSemicolon(),new AST.ExpressionStatement({expression:o})}},{key:"parseBreakStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.BreakStatement({label:null});var o=null;return this.matchIdentifier()&&(o=this.parseIdentifier()),this.consumeSemicolon(),new AST.BreakStatement({label:o})}},{key:"parseContinueStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ContinueStatement({label:null});var o=null;return this.matchIdentifier()&&(o=this.parseIdentifier()),this.consumeSemicolon(),new AST.ContinueStatement({label:o})}},{key:"parseDebuggerStatement",value:function(){return this.lex(),this.consumeSemicolon(),new AST.DebuggerStatement}},{key:"parseDoWhileStatement",value:function(){this.lex();var o=this.parseStatement();this.expect(_tokenizer.TokenType.WHILE),this.expect(_tokenizer.TokenType.LPAREN);var c=this.parseExpression();return this.expect(_tokenizer.TokenType.RPAREN),this.eat(_tokenizer.TokenType.SEMICOLON),new AST.DoWhileStatement({body:o,test:c})}},{key:"parseForStatement",value:function(){this.lex();var o=this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT);this.expect(_tokenizer.TokenType.LPAREN);var c=null,d=null;if(o&&this.match(_tokenizer.TokenType.SEMICOLON))throw this.createUnexpected(this.lookahead);if(this.eat(_tokenizer.TokenType.SEMICOLON))return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:null,test:c,update:d,body:this.getIteratorStatementEpilogue()});var _=this.match(_tokenizer.TokenType.LET),b=this.lookaheadLexicalDeclaration(),k=this.startNode();if(this.match(_tokenizer.TokenType.VAR)||b){var $=this.allowIn;this.allowIn=!1;var j=this.parseVariableDeclaration(!1);if(this.allowIn=$,j.declarators.length===1&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){var _e=void 0,et=j.declarators[0];if(this.match(_tokenizer.TokenType.IN)){if(o)throw this.createUnexpected(this.lookahead);if(et.init!==null&&(this.strict||j.kind!=="var"||et.binding.type!=="BindingIdentifier"))throw this.createError(_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_IN);_e=AST.ForInStatement,this.lex(),d=this.parseExpression()}else{if(et.init!==null)throw this.createError(o?_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_OF);o?_e=AST.ForAwaitStatement:_e=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression()}var tt=this.getIteratorStatementEpilogue();return new _e({left:j,right:d,body:tt})}else if(o)throw this.createUnexpected(this.lookahead);if(this.expect(_tokenizer.TokenType.SEMICOLON),j.declarators.some(function(ot){return ot.binding.type!=="BindingIdentifier"&&ot.init===null}))throw this.createError(_errors$1.ErrorMessages.UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT);return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:j,test:c,update:d,body:this.getIteratorStatementEpilogue()})}var nt=this.allowIn;this.allowIn=!1;var it=this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget);if(this.allowIn=nt,this.isAssignmentTarget&&it.type!=="AssignmentExpression"&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){if((it.type==="ObjectAssignmentTarget"||it.type==="ArrayAssignmentTarget")&&(this.firstExprError=null),_&&this.matchContextualKeyword("of"))throw this.createError(o?_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);var rt=void 0;if(this.match(_tokenizer.TokenType.IN)){if(o)throw this.createUnexpected(this.lookahead);rt=AST.ForInStatement,this.lex(),d=this.parseExpression()}else o?rt=AST.ForAwaitStatement:rt=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression();return new rt({left:this.transformDestructuring(it),right:d,body:this.getIteratorStatementEpilogue()})}else if(o)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT);if(this.firstExprError)throw this.firstExprError;for(;this.eat(_tokenizer.TokenType.COMMA);){var st=this.parseAssignmentExpression();it=this.finishNode(new AST.BinaryExpression({left:it,operator:",",right:st}),k)}if(this.match(_tokenizer.TokenType.IN))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_IN);if(this.matchContextualKeyword("of"))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);return this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:it,test:c,update:d,body:this.getIteratorStatementEpilogue()})}},{key:"getIteratorStatementEpilogue",value:function(){this.expect(_tokenizer.TokenType.RPAREN);var o=this.parseStatement();return o}},{key:"parseIfStatementChild",value:function(){return this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement()}},{key:"parseIfStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var o=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseIfStatementChild(),d=null;return this.eat(_tokenizer.TokenType.ELSE)&&(d=this.parseIfStatementChild()),new AST.IfStatement({test:o,consequent:c,alternate:d})}},{key:"parseReturnStatement",value:function(){if(!this.inFunctionBody)throw this.createError(_errors$1.ErrorMessages.ILLEGAL_RETURN);if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ReturnStatement({expression:null});var o=null;return!this.match(_tokenizer.TokenType.RBRACE)&&!this.eof()&&(o=this.parseExpression()),this.consumeSemicolon(),new AST.ReturnStatement({expression:o})}},{key:"parseSwitchStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var o=this.parseExpression();if(this.expect(_tokenizer.TokenType.RPAREN),this.expect(_tokenizer.TokenType.LBRACE),this.eat(_tokenizer.TokenType.RBRACE))return new AST.SwitchStatement({discriminant:o,cases:[]});var c=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT)){var d=this.parseSwitchDefault(),_=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT))throw this.createError(_errors$1.ErrorMessages.MULTIPLE_DEFAULTS_IN_SWITCH);return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatementWithDefault({discriminant:o,preDefaultCases:c,defaultCase:d,postDefaultCases:_})}return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatement({discriminant:o,cases:c})}},{key:"parseSwitchCases",value:function(){for(var o=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT));)o.push(this.parseSwitchCase());return o}},{key:"parseSwitchCase",value:function(){var o=this.startNode();return this.expect(_tokenizer.TokenType.CASE),this.finishNode(new AST.SwitchCase({test:this.parseExpression(),consequent:this.parseSwitchCaseBody()}),o)}},{key:"parseSwitchDefault",value:function(){var o=this.startNode();return this.expect(_tokenizer.TokenType.DEFAULT),this.finishNode(new AST.SwitchDefault({consequent:this.parseSwitchCaseBody()}),o)}},{key:"parseSwitchCaseBody",value:function(){return this.expect(_tokenizer.TokenType.COLON),this.parseStatementListInSwitchCaseBody()}},{key:"parseStatementListInSwitchCaseBody",value:function(){for(var o=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT)||this.match(_tokenizer.TokenType.CASE));)o.push(this.parseStatementListItem());return o}},{key:"parseThrowStatement",value:function(){var o=this.lex();if(this.hasLineTerminatorBeforeNext)throw this.createErrorWithLocation(o,_errors$1.ErrorMessages.NEWLINE_AFTER_THROW);var c=this.parseExpression();return this.consumeSemicolon(),new AST.ThrowStatement({expression:c})}},{key:"parseTryStatement",value:function(){this.lex();var o=this.parseBlock();if(this.match(_tokenizer.TokenType.CATCH)){var c=this.parseCatchClause();if(this.eat(_tokenizer.TokenType.FINALLY)){var d=this.parseBlock();return new AST.TryFinallyStatement({body:o,catchClause:c,finalizer:d})}return new AST.TryCatchStatement({body:o,catchClause:c})}if(this.eat(_tokenizer.TokenType.FINALLY)){var _=this.parseBlock();return new AST.TryFinallyStatement({body:o,catchClause:null,finalizer:_})}throw this.createError(_errors$1.ErrorMessages.NO_CATCH_OR_FINALLY)}},{key:"parseVariableDeclarationStatement",value:function(){var o=this.parseVariableDeclaration(!0);return this.consumeSemicolon(),new AST.VariableDeclarationStatement({declaration:o})}},{key:"parseWhileStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var o=this.parseExpression(),c=this.getIteratorStatementEpilogue();return new AST.WhileStatement({test:o,body:c})}},{key:"parseWithStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var o=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseStatement();return new AST.WithStatement({object:o,body:c})}},{key:"parseCatchClause",value:function(){var o=this.startNode();if(this.lex(),this.expect(_tokenizer.TokenType.LPAREN),this.match(_tokenizer.TokenType.RPAREN)||this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var c=this.parseBindingTarget();this.expect(_tokenizer.TokenType.RPAREN);var d=this.parseBlock();return this.finishNode(new AST.CatchClause({binding:c,body:d}),o)}},{key:"parseBlock",value:function(){var o=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);for(var c=[];!this.match(_tokenizer.TokenType.RBRACE);)c.push(this.parseStatementListItem());return this.expect(_tokenizer.TokenType.RBRACE),this.finishNode(new AST.Block({statements:c}),o)}},{key:"parseVariableDeclaration",value:function(o){var c=this.startNode(),d=this.lex(),_=d.type===_tokenizer.TokenType.VAR?"var":d.type===_tokenizer.TokenType.CONST?"const":"let",b=this.parseVariableDeclaratorList(o);return this.finishNode(new AST.VariableDeclaration({kind:_,declarators:b}),c)}},{key:"parseVariableDeclaratorList",value:function(o){var c=[];do c.push(this.parseVariableDeclarator(o));while(this.eat(_tokenizer.TokenType.COMMA));return c}},{key:"parseVariableDeclarator",value:function(o){var c=this.startNode();if(this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var d=this.allowIn;this.allowIn=!0;var _=this.parseBindingTarget();this.allowIn=d,o&&_.type!=="BindingIdentifier"&&!this.match(_tokenizer.TokenType.ASSIGN)&&this.expect(_tokenizer.TokenType.ASSIGN);var b=null;return this.eat(_tokenizer.TokenType.ASSIGN)&&(b=this.parseAssignmentExpression()),this.finishNode(new AST.VariableDeclarator({binding:_,init:b}),c)}},{key:"isolateCoverGrammar",value:function(o){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;if(this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=o.call(this),this.firstExprError!==null)throw this.firstExprError;return this.isBindingElement=c,this.isAssignmentTarget=d,this.firstExprError=_,b}},{key:"inheritCoverGrammar",value:function(o){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;return this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=o.call(this),this.isBindingElement=this.isBindingElement&&c,this.isAssignmentTarget=this.isAssignmentTarget&&d,this.firstExprError=_||this.firstExprError,b}},{key:"parseExpression",value:function(){var o=this.startNode(),c=this.parseAssignmentExpression();if(this.match(_tokenizer.TokenType.COMMA))for(;!this.eof()&&this.match(_tokenizer.TokenType.COMMA);){this.lex();var d=this.parseAssignmentExpression();c=this.finishNode(new AST.BinaryExpression({left:c,operator:",",right:d}),o)}return c}},{key:"finishArrowParams",value:function(o){var c=o.params,d=c===void 0?null:c,_=o.rest,b=_===void 0?null:_;if(o.type!==ARROW_EXPRESSION_PARAMS)if(o.type==="IdentifierExpression")d=[this.targetToBinding(this.transformDestructuring(o))];else throw this.createUnexpected(this.lookahead);return this.copyNode(o,new AST.FormalParameters({items:d,rest:b}))}},{key:"parseArrowExpressionTail",value:function(o,c,d){this.expect(_tokenizer.TokenType.ARROW);var _=this.allowYieldExpression,b=this.allowAwaitExpression,k=this.firstAwaitLocation;this.allowYieldExpression=!1,this.allowAwaitExpression=c,this.firstAwaitLocation=null;var $=void 0;if(this.match(_tokenizer.TokenType.LBRACE)){var j=this.allowIn;this.allowIn=!0,$=this.parseFunctionBody(),this.allowIn=j}else $=this.parseAssignmentExpression();return this.allowYieldExpression=_,this.allowAwaitExpression=b,this.firstAwaitLocation=k,this.finishNode(new AST.ArrowExpression({isAsync:c,params:o,body:$}),d)}},{key:"parseAssignmentExpression",value:function(){return this.isolateCoverGrammar(this.parseAssignmentExpressionOrTarget)}},{key:"parseAssignmentExpressionOrTarget",value:function(){var o=this.startNode();if(this.allowYieldExpression&&this.match(_tokenizer.TokenType.YIELD))return this.isBindingElement=this.isAssignmentTarget=!1,this.parseYieldExpression();var c=this.parseConditionalExpression();if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){this.isBindingElement=this.isAssignmentTarget=!1,this.firstExprError=null;var d=c.type===ARROW_EXPRESSION_PARAMS&&c.isAsync;return this.parseArrowExpressionTail(this.finishArrowParams(c),d,o)}var _=!1,b=this.lookahead;switch(b.type){case _tokenizer.TokenType.ASSIGN_BIT_OR:case _tokenizer.TokenType.ASSIGN_BIT_XOR:case _tokenizer.TokenType.ASSIGN_BIT_AND:case _tokenizer.TokenType.ASSIGN_SHL:case _tokenizer.TokenType.ASSIGN_SHR:case _tokenizer.TokenType.ASSIGN_SHR_UNSIGNED:case _tokenizer.TokenType.ASSIGN_ADD:case _tokenizer.TokenType.ASSIGN_SUB:case _tokenizer.TokenType.ASSIGN_MUL:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.ASSIGN_MOD:case _tokenizer.TokenType.ASSIGN_EXP:_=!0;break}if(_){if(!this.isAssignmentTarget||!isValidSimpleAssignmentTarget(c))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else if(b.type===_tokenizer.TokenType.ASSIGN){if(!this.isAssignmentTarget)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else return c;this.lex();var k=this.parseAssignmentExpression();this.firstExprError=null;var $=void 0;return b.type===_tokenizer.TokenType.ASSIGN?$=new AST.AssignmentExpression({binding:c,expression:k}):($=new AST.CompoundAssignmentExpression({binding:c,operator:b.type.name,expression:k}),this.isBindingElement=this.isAssignmentTarget=!1),this.finishNode($,o)}},{key:"targetToBinding",value:function(o){var c=this;if(o===null)return null;switch(o.type){case"AssignmentTargetIdentifier":return this.copyNode(o,new AST.BindingIdentifier({name:o.name}));case"ArrayAssignmentTarget":return this.copyNode(o,new AST.ArrayBinding({elements:o.elements.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(o.rest)}));case"ObjectAssignmentTarget":return this.copyNode(o,new AST.ObjectBinding({properties:o.properties.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(o.rest)}));case"AssignmentTargetPropertyIdentifier":return this.copyNode(o,new AST.BindingPropertyIdentifier({binding:this.targetToBinding(o.binding),init:o.init}));case"AssignmentTargetPropertyProperty":return this.copyNode(o,new AST.BindingPropertyProperty({name:o.name,binding:this.targetToBinding(o.binding)}));case"AssignmentTargetWithDefault":return this.copyNode(o,new AST.BindingWithDefault({binding:this.targetToBinding(o.binding),init:o.init}))}throw new Error("Not reached")}},{key:"transformDestructuring",value:function(o){var c=this;switch(o.type){case"DataProperty":return this.copyNode(o,new AST.AssignmentTargetPropertyProperty({name:o.name,binding:this.transformDestructuringWithDefault(o.expression)}));case"ShorthandProperty":return this.copyNode(o,new AST.AssignmentTargetPropertyIdentifier({binding:this.copyNode(o,new AST.AssignmentTargetIdentifier({name:o.name.name})),init:null}));case"ObjectExpression":{var d=o.properties.length>0?o.properties[o.properties.length-1]:void 0;return d!=null&&d.type==="SpreadProperty"?this.copyNode(o,new AST.ObjectAssignmentTarget({properties:o.properties.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.transformDestructuring(d.expression)})):this.copyNode(o,new AST.ObjectAssignmentTarget({properties:o.properties.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"ArrayExpression":{var _=o.elements[o.elements.length-1];return _!=null&&_.type==="SpreadElement"?this.copyNode(o,new AST.ArrayAssignmentTarget({elements:o.elements.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.copyNode(_.expression,this.transformDestructuring(_.expression))})):this.copyNode(o,new AST.ArrayAssignmentTarget({elements:o.elements.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"IdentifierExpression":return this.copyNode(o,new AST.AssignmentTargetIdentifier({name:o.name}));case"StaticPropertyName":return this.copyNode(o,new AST.AssignmentTargetIdentifier({name:o.value}));case"ComputedMemberExpression":return this.copyNode(o,new AST.ComputedMemberAssignmentTarget({object:o.object,expression:o.expression}));case"StaticMemberExpression":return this.copyNode(o,new AST.StaticMemberAssignmentTarget({object:o.object,property:o.property}));case"ArrayAssignmentTarget":case"ObjectAssignmentTarget":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":case"AssignmentTargetIdentifier":case"AssignmentTargetPropertyIdentifier":case"AssignmentTargetPropertyProperty":case"AssignmentTargetWithDefault":return o}throw new Error("Not reached")}},{key:"transformDestructuringWithDefault",value:function(o){switch(o.type){case"AssignmentExpression":return this.copyNode(o,new AST.AssignmentTargetWithDefault({binding:this.transformDestructuring(o.binding),init:o.expression}))}return this.transformDestructuring(o)}},{key:"lookaheadAssignmentExpression",value:function(){if(this.matchIdentifier())return!0;switch(this.lookahead.type){case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.CLASS:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.FALSE:case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.INC:case _tokenizer.TokenType.LBRACE:case _tokenizer.TokenType.LBRACK:case _tokenizer.TokenType.LPAREN:case _tokenizer.TokenType.NEW:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.NULL:case _tokenizer.TokenType.NUMBER:case _tokenizer.TokenType.STRING:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.SUPER:case _tokenizer.TokenType.THIS:case _tokenizer.TokenType.TRUE:case _tokenizer.TokenType.TYPEOF:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TEMPLATE:return!0}return!1}},{key:"parseYieldExpression",value:function(){var o=this.startNode();if(this.lex(),this.hasLineTerminatorBeforeNext)return this.finishNode(new AST.YieldExpression({expression:null}),o);var c=!!this.eat(_tokenizer.TokenType.MUL),d=null;(c||this.lookaheadAssignmentExpression())&&(d=this.parseAssignmentExpression());var _=c?AST.YieldGeneratorExpression:AST.YieldExpression;return this.finishNode(new _({expression:d}),o)}},{key:"parseConditionalExpression",value:function(){var o=this.startNode(),c=this.parseBinaryExpression();if(this.firstExprError)return c;if(this.eat(_tokenizer.TokenType.CONDITIONAL)){this.isBindingElement=this.isAssignmentTarget=!1;var d=this.allowIn;this.allowIn=!0;var _=this.isolateCoverGrammar(this.parseAssignmentExpression);this.allowIn=d,this.expect(_tokenizer.TokenType.COLON);var b=this.isolateCoverGrammar(this.parseAssignmentExpression);return this.finishNode(new AST.ConditionalExpression({test:c,consequent:_,alternate:b}),o)}return c}},{key:"isBinaryOperator",value:function(o){switch(o){case _tokenizer.TokenType.OR:case _tokenizer.TokenType.AND:case _tokenizer.TokenType.BIT_OR:case _tokenizer.TokenType.BIT_XOR:case _tokenizer.TokenType.BIT_AND:case _tokenizer.TokenType.EQ:case _tokenizer.TokenType.NE:case _tokenizer.TokenType.EQ_STRICT:case _tokenizer.TokenType.NE_STRICT:case _tokenizer.TokenType.LT:case _tokenizer.TokenType.GT:case _tokenizer.TokenType.LTE:case _tokenizer.TokenType.GTE:case _tokenizer.TokenType.INSTANCEOF:case _tokenizer.TokenType.SHL:case _tokenizer.TokenType.SHR:case _tokenizer.TokenType.SHR_UNSIGNED:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.MUL:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.MOD:return!0;case _tokenizer.TokenType.IN:return this.allowIn;default:return!1}}},{key:"parseBinaryExpression",value:function(){var o=this,c=this.startNode(),d=this.parseExponentiationExpression();if(this.firstExprError)return d;var _=this.lookahead.type;if(!this.isBinaryOperator(_))return d;this.isBindingElement=this.isAssignmentTarget=!1,this.lex();var b=[];b.push({startState:c,left:d,operator:_,precedence:BinaryPrecedence$1[_.name]}),c=this.startNode();var k=this.isolateCoverGrammar(this.parseExponentiationExpression);for(_=this.lookahead.type;this.isBinaryOperator(_);){for(var $=BinaryPrecedence$1[_.name];b.length&&$<=b[b.length-1].precedence;){var j=b[b.length-1],_e=j.operator;d=j.left,b.pop(),c=j.startState,k=this.finishNode(new AST.BinaryExpression({left:d,operator:_e.name,right:k}),c)}this.lex(),b.push({startState:c,left:k,operator:_,precedence:$}),c=this.startNode(),k=this.isolateCoverGrammar(this.parseExponentiationExpression),_=this.lookahead.type}return b.reduceRight(function(et,tt){return o.finishNode(new AST.BinaryExpression({left:tt.left,operator:tt.operator.name,right:et}),tt.startState)},k)}},{key:"parseExponentiationExpression",value:function(){var o=this.startNode(),c=this.lookahead.type===_tokenizer.TokenType.LPAREN,d=this.parseUnaryExpression();if(this.lookahead.type!==_tokenizer.TokenType.EXP)return d;if(d.type==="UnaryExpression"&&!c)throw this.createError(_errors$1.ErrorMessages.INVALID_EXPONENTIATION_LHS);this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=this.isolateCoverGrammar(this.parseExponentiationExpression);return this.finishNode(new AST.BinaryExpression({left:d,operator:"**",right:_}),o)}},{key:"parseUnaryExpression",value:function(){if(this.lookahead.type.klass!==_tokenizer.TokenClass.Punctuator&&this.lookahead.type.klass!==_tokenizer.TokenClass.Keyword)return this.parseUpdateExpression();var o=this.startNode();if(this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT)){this.isBindingElement=this.isAssignmentTarget=!1;var c=this.isolateCoverGrammar(this.parseUnaryExpression);return this.finishNode(new AST.AwaitExpression({expression:c}),o)}var d=this.lookahead;if(!isPrefixOperator(d))return this.parseUpdateExpression();this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=void 0;if(isUpdateOperator(d)){var b=this.getLocation(),k=this.isolateCoverGrammar(this.parseUnaryExpression);if(!isValidSimpleAssignmentTarget(k))throw this.createErrorWithLocation(b,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);k=this.transformDestructuring(k),_=new AST.UpdateExpression({isPrefix:!0,operator:d.value,operand:k})}else{var $=this.isolateCoverGrammar(this.parseUnaryExpression);_=new AST.UnaryExpression({operator:d.value,operand:$})}return this.finishNode(_,o)}},{key:"parseUpdateExpression",value:function(){var o=this.getLocation(),c=this.startNode(),d=this.parseLeftHandSideExpression({allowCall:!0});if(this.firstExprError||this.hasLineTerminatorBeforeNext)return d;var _=this.lookahead;if(!isUpdateOperator(_))return d;if(this.lex(),this.isBindingElement=this.isAssignmentTarget=!1,!isValidSimpleAssignmentTarget(d))throw this.createErrorWithLocation(o,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);return d=this.transformDestructuring(d),this.finishNode(new AST.UpdateExpression({isPrefix:!1,operator:_.value,operand:d}),c)}},{key:"parseLeftHandSideExpression",value:function(o){var c=this,d=o.allowCall,_=this.startNode(),b=this.allowIn;this.allowIn=!0;var k=void 0,$=this.lookahead;if(this.eat(_tokenizer.TokenType.SUPER))if(this.isBindingElement=!1,this.isAssignmentTarget=!1,k=this.finishNode(new AST.Super,_),this.match(_tokenizer.TokenType.LPAREN))if(d)k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.LBRACK))k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_),this.isAssignmentTarget=!0;else if(this.match(_tokenizer.TokenType.PERIOD))k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_),this.isAssignmentTarget=!0;else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.NEW))this.isBindingElement=this.isAssignmentTarget=!1,k=this.parseNewExpression();else if(this.match(_tokenizer.TokenType.ASYNC)){if(k=this.parsePrimaryExpression(),k.type==="IdentifierExpression"&&d&&!this.hasLineTerminatorBeforeNext){if(this.matchIdentifier()){var j=this.startNode(),_e=this.allowAwaitExpression;this.allowAwaitExpression=!0;var et=this.parseBindingIdentifier();return this.allowAwaitExpression=_e,this.ensureArrow(),this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:[et],rest:null,isAsync:!0},j)}if(this.match(_tokenizer.TokenType.LPAREN)){var tt=this.startNode(),nt=this.firstAwaitLocation;this.firstAwaitLocation=null;var it=this.parseArgumentList(),rt=it.args,st=it.locationFollowingFirstSpread;if(this.isBindingElement&&!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){if(st!==null)throw this.createErrorWithLocation(st,_errors$1.ErrorMessages.UNEXPECTED_TOKEN(","));if(this.firstAwaitLocation!==null)throw this.createErrorWithLocation(this.firstAwaitLocation,_errors$1.ErrorMessages.NO_AWAIT_IN_ASYNC_PARAMS);var ot=null;if(rt.length>0&&rt[rt.length-1].type==="SpreadElement"){if(ot=this.targetToBinding(this.transformDestructuringWithDefault(rt[rt.length-1].expression)),ot.init!=null)throw this.createError(_errors$1.ErrorMessages.UNEXPECTED_REST_PARAMETERS_INITIALIZATION);rt=rt.slice(0,-1)}var lt=rt.map(function(dt){return c.targetToBinding(c.transformDestructuringWithDefault(dt))});return this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:lt,rest:ot,isAsync:!0},tt)}this.firstAwaitLocation=nt||this.firstAwaitLocation,this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:rt}),_)}}}else if(k=this.parsePrimaryExpression(),this.firstExprError)return k;for(;;)if(d&&this.match(_tokenizer.TokenType.LPAREN))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else if(this.match(_tokenizer.TokenType.LBRACK))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_);else if(this.match(_tokenizer.TokenType.PERIOD))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_);else if(this.match(_tokenizer.TokenType.TEMPLATE))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.TemplateExpression({tag:k,elements:this.parseTemplateElements()}),_);else break;return this.allowIn=b,k}},{key:"parseTemplateElements",value:function(){var o=this.startNode(),c=this.lookahead;if(c.tail)return this.lex(),[this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),o)];for(var d=[this.finishNode(new AST.TemplateElement({rawValue:this.lex().slice.text.slice(1,-2)}),o)];;){if(d.push(this.parseExpression()),!this.match(_tokenizer.TokenType.RBRACE))throw this.createILLEGAL();if(this.index=this.startIndex,this.line=this.startLine,this.lineStart=this.startLineStart,this.lookahead=this.scanTemplateElement(),o=this.startNode(),c=this.lex(),c.tail)return d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),o)),d;d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-2)}),o))}}},{key:"parseStaticMember",value:function(){if(this.lex(),this.lookahead.type.klass.isIdentifierName)return this.lex().value;throw this.createUnexpected(this.lookahead)}},{key:"parseComputedMember",value:function(){this.lex();var o=this.parseExpression();return this.expect(_tokenizer.TokenType.RBRACK),o}},{key:"parseNewExpression",value:function(){var o=this,c=this.startNode();if(this.lex(),this.eat(_tokenizer.TokenType.PERIOD))return this.expectContextualKeyword("target"),this.finishNode(new AST.NewTargetExpression,c);var d=this.isolateCoverGrammar(function(){return o.parseLeftHandSideExpression({allowCall:!1})});return this.finishNode(new AST.NewExpression({callee:d,arguments:this.match(_tokenizer.TokenType.LPAREN)?this.parseArgumentList().args:[]}),c)}},{key:"parseRegexFlags",value:function(o){for(var c=!1,d=!1,_=!1,b=!1,k=!1,$=!1,j=0;j1?e-1:0),o=1;o1&&c.slice(1).forEach(function(d){o.addError(s(d))})}),this}},{key:"enforceConflictingLexicallyDeclaredNames",value:function(s,o){var c=this;return this.lexicallyDeclaredNames.forEachEntry(function(d,_){s.has(_)&&d.forEach(function(b){c.addError(o(b))})}),this}},{key:"observeFunctionDeclaration",value:function(){return this.observeVarBoundary(),addEach(this.functionDeclarationNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"functionDeclarationNamesAreLexical",value:function(){return addEach(this.lexicallyDeclaredNames,this.functionDeclarationNames),this.functionDeclarationNames=new _multimap2.default,this}},{key:"observeVarDeclaration",value:function(){return addEach(this.varDeclaredNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"recordForOfVars",value:function(){var s=this;return this.varDeclaredNames.forEach(function(o){s.forOfVarDeclaredNames.push(o)}),this}},{key:"observeVarBoundary",value:function(){return this.lexicallyDeclaredNames=new _multimap2.default,this.functionDeclarationNames=new _multimap2.default,this.varDeclaredNames=new _multimap2.default,this.forOfVarDeclaredNames=[],this}},{key:"exportName",value:function(s,o){return this.exportedNames.set(s,o),this}},{key:"exportDeclaredNames",value:function(){return addEach(this.exportedNames,this.lexicallyDeclaredNames,this.varDeclaredNames),addEach(this.exportedBindings,this.lexicallyDeclaredNames,this.varDeclaredNames),this}},{key:"exportBinding",value:function(s,o){return this.exportedBindings.set(s,o),this}},{key:"clearExportedBindings",value:function(){return this.exportedBindings=new _multimap2.default,this}},{key:"observeYieldExpression",value:function(s){return this.yieldExpressions.push(s),this}},{key:"clearYieldExpressions",value:function(){return this.yieldExpressions=[],this}},{key:"observeAwaitExpression",value:function(s){return this.awaitExpressions.push(s),this}},{key:"clearAwaitExpressions",value:function(){return this.awaitExpressions=[],this}},{key:"addError",value:function(s){return this.errors.push(s),this}},{key:"addStrictError",value:function(s){return this.strictErrors.push(s),this}},{key:"enforceStrictErrors",value:function(){return[].push.apply(this.errors,this.strictErrors),this.strictErrors=[],this}},{key:"concat",value:function(s){return this===identity?s:s===identity?this:([].push.apply(this.errors,s.errors),[].push.apply(this.strictErrors,s.strictErrors),[].push.apply(this.usedLabelNames,s.usedLabelNames),[].push.apply(this.freeBreakStatements,s.freeBreakStatements),[].push.apply(this.freeContinueStatements,s.freeContinueStatements),[].push.apply(this.freeLabeledBreakStatements,s.freeLabeledBreakStatements),[].push.apply(this.freeLabeledContinueStatements,s.freeLabeledContinueStatements),[].push.apply(this.newTargetExpressions,s.newTargetExpressions),addEach(this.boundNames,s.boundNames),addEach(this.lexicallyDeclaredNames,s.lexicallyDeclaredNames),addEach(this.functionDeclarationNames,s.functionDeclarationNames),addEach(this.varDeclaredNames,s.varDeclaredNames),[].push.apply(this.forOfVarDeclaredNames,s.forOfVarDeclaredNames),addEach(this.exportedNames,s.exportedNames),addEach(this.exportedBindings,s.exportedBindings),[].push.apply(this.superCallExpressions,s.superCallExpressions),[].push.apply(this.superCallExpressionsInConstructorMethod,s.superCallExpressionsInConstructorMethod),[].push.apply(this.superPropertyExpressions,s.superPropertyExpressions),[].push.apply(this.yieldExpressions,s.yieldExpressions),[].push.apply(this.awaitExpressions,s.awaitExpressions),this)}}],[{key:"empty",value:function(){return identity}}]),a}();identity=new EarlyErrorState;Object.getOwnPropertyNames(EarlyErrorState.prototype).forEach(function(a){a!=="constructor"&&Object.defineProperty(identity,a,{value:function(){return EarlyErrorState.prototype[a].apply(new EarlyErrorState,arguments)},enumerable:!1,writable:!0,configurable:!0})});earlyErrorState.EarlyError=function(a){_inherits$4(e,a);function e(s,o){_classCallCheck$7(this,e);var c=_possibleConstructorReturn$4(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,o));return c.node=s,c.message=o,c}return e}(Error);Object.defineProperty(earlyErrors,"__esModule",{value:!0});earlyErrors.EarlyErrorChecker=void 0;var _createClass$5=function(){function a(e,s){for(var o=0;o1&&s.slice(1).forEach(function(o){e=e.addError(new _earlyErrorState.EarlyError(o,"Duplicate constructor method in class"))}),e}var SUPERCALL_ERROR=function(e){return new _earlyErrorState.EarlyError(e,_errors.ErrorMessages.ILLEGAL_SUPER_CALL)},SUPERPROPERTY_ERROR=function(e){return new _earlyErrorState.EarlyError(e,"Member access on super must be in a method")},DUPLICATE_BINDING=function(e){return new _earlyErrorState.EarlyError(e,"Duplicate binding "+JSON.stringify(e.name))},FREE_CONTINUE=function(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement")},UNBOUND_CONTINUE=function(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e.label))},FREE_BREAK=function(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within an iteration statement or a switch statement")},UNBOUND_BREAK=function(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within a statement with label "+JSON.stringify(e.label))};earlyErrors.EarlyErrorChecker=function(a){_inherits$3(e,a);function e(){return _classCallCheck$6(this,e),_possibleConstructorReturn$3(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,_earlyErrorState.EarlyErrorState))}return _createClass$5(e,[{key:"reduceAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceAssignmentTargetIdentifier",value:function(o){var c=this.identity;return(o.name==="eval"||o.name==="arguments"||(0,_utils.isStrictModeReservedWord)(o.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(o,"The identifier "+JSON.stringify(o.name)+" must not be in binding position in strict mode"))),c}},{key:"reduceArrowExpression",value:function(o,c){var d=c.params,_=c.body,b=o.params.rest==null&&o.params.items.every(function($){return $.type==="BindingIdentifier"});d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),o.body.type==="FunctionBody"&&(_=_.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),isStrictFunctionBody(o.body)&&(d=d.enforceStrictErrors(),_=_.enforceStrictErrors())),d.yieldExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain yield expressions"))}),d.awaitExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain await expressions"))});var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceArrowExpression",this).call(this,o,{params:d,body:_});return!b&&o.body.type==="FunctionBody"&&isStrictFunctionBody(o.body)&&(k=k.addError(new _earlyErrorState.EarlyError(o,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),k=k.clearYieldExpressions(),k=k.clearAwaitExpressions(),k=k.observeVarBoundary(),k}},{key:"reduceAwaitExpression",value:function(o,c){var d=c.expression;return d.observeAwaitExpression(o)}},{key:"reduceBindingIdentifier",value:function(o){var c=this.identity;return(o.name==="eval"||o.name==="arguments"||(0,_utils.isStrictModeReservedWord)(o.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(o,"The identifier "+JSON.stringify(o.name)+" must not be in binding position in strict mode"))),c=c.bindName(o.name,o),c}},{key:"reduceBlock",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBlock",this).apply(this,arguments);return o=o.functionDeclarationNamesAreLexical(),o=o.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),o=o.enforceConflictingLexicallyDeclaredNames(o.varDeclaredNames,DUPLICATE_BINDING),o=o.observeLexicalBoundary(),o}},{key:"reduceBreakStatement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBreakStatement",this).apply(this,arguments);return c=o.label==null?c.addFreeBreakStatement(o):c.addFreeLabeledBreakStatement(o),c}},{key:"reduceCallExpression",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCallExpression",this).apply(this,arguments);return o.callee.type==="Super"&&(c=c.observeSuperCallExpression(o)),c}},{key:"reduceCatchClause",value:function(o,c){var d=c.binding,_=c.body;d=d.observeLexicalDeclaration(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(_.previousLexicallyDeclaredNames,DUPLICATE_BINDING),d.lexicallyDeclaredNames.forEachEntry(function(k,$){_.varDeclaredNames.has($)&&_.varDeclaredNames.get($).forEach(function(j){_.forOfVarDeclaredNames.indexOf(j)>=0&&(d=d.addError(DUPLICATE_BINDING(j)))})});var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCatchClause",this).call(this,o,{binding:d,body:_});return b=b.observeLexicalBoundary(),b}},{key:"reduceClassDeclaration",value:function(o,c){var d=c.name,_=c.super,b=c.elements,k=d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),o.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(o,k),k=k.observeLexicalDeclaration(),k}},{key:"reduceClassElement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceClassElement",this).apply(this,arguments);return!o.isStatic&&isSpecialMethod(o.method)&&(c=c.addError(new _earlyErrorState.EarlyError(o,_errors.ErrorMessages.ILLEGAL_CONSTRUCTORS))),o.isStatic&&o.method.name.type==="StaticPropertyName"&&o.method.name.value==="prototype"&&(c=c.addError(new _earlyErrorState.EarlyError(o,'Static class methods cannot be named "prototype"'))),c}},{key:"reduceClassExpression",value:function(o,c){var d=c.name,_=c.super,b=c.elements,k=o.name==null?this.identity:d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),o.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(o,k),k=k.clearBoundNames(),k}},{key:"reduceCompoundAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCompoundAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceComputedMemberExpression",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceComputedMemberExpression",this).apply(this,arguments);return o.object.type==="Super"&&(c=c.observeSuperPropertyExpression(o)),c}},{key:"reduceContinueStatement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceContinueStatement",this).apply(this,arguments);return c=o.label==null?c.addFreeContinueStatement(o):c.addFreeLabeledContinueStatement(o),c}},{key:"reduceDoWhileStatement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceDoWhileStatement",this).apply(this,arguments);return isLabelledFunction(o.body)&&(c=c.addError(new _earlyErrorState.EarlyError(o.body,"The body of a do-while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements(),c=c.clearFreeBreakStatements(),c}},{key:"reduceExport",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExport",this).apply(this,arguments);return o=o.functionDeclarationNamesAreLexical(),o=o.exportDeclaredNames(),o}},{key:"reduceExportFrom",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFrom",this).apply(this,arguments);return o=o.clearExportedBindings(),o}},{key:"reduceExportFromSpecifier",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFromSpecifier",this).apply(this,arguments);return c=c.exportName(o.exportedName||o.name,o),c=c.exportBinding(o.name,o),c}},{key:"reduceExportLocalSpecifier",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportLocalSpecifier",this).apply(this,arguments);return c=c.exportName(o.exportedName||o.name.name,o),c=c.exportBinding(o.name.name,o),c}},{key:"reduceExportDefault",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportDefault",this).apply(this,arguments);return c=c.functionDeclarationNamesAreLexical(),c=c.exportName("default",o),c}},{key:"reduceFormalParameters",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFormalParameters",this).apply(this,arguments);return o=o.observeLexicalDeclaration(),o}},{key:"reduceForStatement",value:function(o,c){var d=c.init,_=c.test,b=c.update,k=c.body;d!=null&&(d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(k.varDeclaredNames,DUPLICATE_BINDING));var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForStatement",this).call(this,o,{init:d,test:_,update:b,body:k});return o.init!=null&&o.init.type==="VariableDeclaration"&&o.init.kind==="const"&&o.init.declarators.forEach(function(j){j.init==null&&($=$.addError(new _earlyErrorState.EarlyError(j,"Constant lexical declarations must have an initialiser")))}),isLabelledFunction(o.body)&&($=$.addError(new _earlyErrorState.EarlyError(o.body,"The body of a for statement must not be a labeled function declaration"))),$=$.clearFreeContinueStatements(),$=$.clearFreeBreakStatements(),$=$.observeLexicalBoundary(),$}},{key:"reduceForInStatement",value:function(o,c){var d=c.left,_=c.right,b=c.body;d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForInStatement",this).call(this,o,{left:d,right:_,body:b});return isLabelledFunction(o.body)&&(k=k.addError(new _earlyErrorState.EarlyError(o.body,"The body of a for-in statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForOfStatement",value:function(o,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,o,{left:d,right:_,body:b});return isLabelledFunction(o.body)&&(k=k.addError(new _earlyErrorState.EarlyError(o.body,"The body of a for-of statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForAwaitStatement",value:function(o,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,o,{left:d,right:_,body:b});return isLabelledFunction(o.body)&&(k=k.addError(new _earlyErrorState.EarlyError(o.body,"The body of a for-await statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceFunctionBody",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionBody",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.clearUsedLabelNames(),c=c.clearYieldExpressions(),c=c.clearAwaitExpressions(),isStrictFunctionBody(o)&&(c=c.enforceStrictErrors()),c}},{key:"reduceFunctionDeclaration",value:function(o,c){var d=c.name,_=c.params,b=c.body,k=o.params.rest==null&&o.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||o.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e){_e.length>1&&_e.slice(1).forEach(function(et){_=_[$](DUPLICATE_BINDING(et))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),o.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),o.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(o.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionDeclaration",this).call(this,o,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(o.body)&&(j=j.addError(new _earlyErrorState.EarlyError(o,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeFunctionDeclaration(),j}},{key:"reduceFunctionExpression",value:function(o,c){var d=c.name,_=c.params,b=c.body,k=o.params.rest==null&&o.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||o.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e,et){_e.length>1&&_e.slice(1).forEach(function(tt){_=_[$](new _earlyErrorState.EarlyError(tt,"Duplicate binding "+JSON.stringify(et)))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),o.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),o.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(o.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionExpression",this).call(this,o,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(o.body)&&(j=j.addError(new _earlyErrorState.EarlyError(o,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearBoundNames(),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeVarBoundary(),j}},{key:"reduceGetter",value:function(o,c){var d=c.name,_=c.body;_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),isStrictFunctionBody(o.body)&&(_=_.enforceStrictErrors());var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceGetter",this).call(this,o,{name:d,body:_});return b=b.observeVarBoundary(),b}},{key:"reduceIdentifierExpression",value:function(o){var c=this.identity;return(0,_utils.isStrictModeReservedWord)(o.name)&&(c=c.addStrictError(new _earlyErrorState.EarlyError(o,"The identifier "+JSON.stringify(o.name)+" must not be in expression position in strict mode"))),c}},{key:"reduceIfStatement",value:function(o,c){var d=c.test,_=c.consequent,b=c.alternate;return isLabelledFunction(o.consequent)&&(_=_.addError(new _earlyErrorState.EarlyError(o.consequent,"The consequent of an if statement must not be a labeled function declaration"))),o.alternate!=null&&isLabelledFunction(o.alternate)&&(b=b.addError(new _earlyErrorState.EarlyError(o.alternate,"The alternate of an if statement must not be a labeled function declaration"))),o.consequent.type==="FunctionDeclaration"&&(_=_.addStrictError(new _earlyErrorState.EarlyError(o.consequent,"FunctionDeclarations in IfStatements are disallowed in strict mode")),_=_.observeLexicalBoundary()),o.alternate!=null&&o.alternate.type==="FunctionDeclaration"&&(b=b.addStrictError(new _earlyErrorState.EarlyError(o.alternate,"FunctionDeclarations in IfStatements are disallowed in strict mode")),b=b.observeLexicalBoundary()),_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceIfStatement",this).call(this,o,{test:d,consequent:_,alternate:b})}},{key:"reduceImport",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImport",this).apply(this,arguments);return o=o.observeLexicalDeclaration(),o}},{key:"reduceImportNamespace",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImportNamespace",this).apply(this,arguments);return o=o.observeLexicalDeclaration(),o}},{key:"reduceLabeledStatement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceLabeledStatement",this).apply(this,arguments);return(o.label==="yield"||(0,_utils.isStrictModeReservedWord)(o.label))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(o,"The identifier "+JSON.stringify(o.label)+" must not be in label position in strict mode"))),c.usedLabelNames.indexOf(o.label)>=0&&(c=c.addError(new _earlyErrorState.EarlyError(o,"Label "+JSON.stringify(o.label)+" has already been declared"))),o.body.type==="FunctionDeclaration"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(o,"Labeled FunctionDeclarations are disallowed in strict mode"))),c=isIterationStatement(o.body)?c.observeIterationLabel(o.label):c.observeNonIterationLabel(o.label),c}},{key:"reduceLiteralRegExpExpression",value:function(){var o=this.identity;return o}},{key:"reduceMethod",value:function(o,c){var d=c.name,_=c.params,b=c.body,k=o.params.rest==null&&o.params.items.every(function(j){return j.type==="BindingIdentifier"});_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),o.name.type==="StaticPropertyName"&&o.name.value==="constructor"?(b=b.observeConstructorMethod(),_=_.observeConstructorMethod()):(b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR)),o.isGenerator&&_.yieldExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Generator parameters must not contain yield expressions"))}),o.isAsync&&_.awaitExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Async function parameters must not contain await expressions"))}),b=b.clearSuperPropertyExpressions(),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(o.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceMethod",this).call(this,o,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(o.body)&&($=$.addError(new _earlyErrorState.EarlyError(o,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.clearYieldExpressions(),$=$.clearAwaitExpressions(),$=$.observeVarBoundary(),$}},{key:"reduceModule",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceModule",this).apply(this,arguments);return o=o.functionDeclarationNamesAreLexical(),o=o.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),o=o.enforceConflictingLexicallyDeclaredNames(o.varDeclaredNames,DUPLICATE_BINDING),o.exportedNames.forEachEntry(function(c,d){c.length>1&&c.slice(1).forEach(function(_){o=o.addError(new _earlyErrorState.EarlyError(_,"Duplicate export "+JSON.stringify(d)))})}),o.exportedBindings.forEachEntry(function(c,d){!o.lexicallyDeclaredNames.has(d)&&!o.varDeclaredNames.has(d)&&c.forEach(function(_){o=o.addError(new _earlyErrorState.EarlyError(_,"Exported binding "+JSON.stringify(d)+" is not declared"))})}),o.newTargetExpressions.forEach(function(c){o=o.addError(new _earlyErrorState.EarlyError(c,"new.target must be within function (but not arrow expression) code"))}),o=o.enforceFreeContinueStatementErrors(FREE_CONTINUE),o=o.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),o=o.enforceFreeBreakStatementErrors(FREE_BREAK),o=o.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),o=o.enforceSuperCallExpressions(SUPERCALL_ERROR),o=o.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),o=o.enforceStrictErrors(),o}},{key:"reduceNewTargetExpression",value:function(o){return this.identity.observeNewTargetExpression(o)}},{key:"reduceObjectExpression",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceObjectExpression",this).apply(this,arguments);c=c.enforceSuperCallExpressionsInConstructorMethod(SUPERCALL_ERROR);var d=o.properties.filter(function(_){return _.type==="DataProperty"&&_.name.type==="StaticPropertyName"&&_.name.value==="__proto__"});return d.slice(1).forEach(function(_){c=c.addError(new _earlyErrorState.EarlyError(_,"Duplicate __proto__ property in object literal not allowed"))}),c}},{key:"reduceUpdateExpression",value:function(){var o=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUpdateExpression",this).apply(this,arguments);return o=o.clearBoundNames(),o}},{key:"reduceUnaryExpression",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUnaryExpression",this).apply(this,arguments);return o.operator==="delete"&&o.operand.type==="IdentifierExpression"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(o,"Identifier expressions must not be deleted in strict mode"))),c}},{key:"reduceScript",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceScript",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c.newTargetExpressions.forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,"new.target must be within function (but not arrow expression) code"))}),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.enforceSuperCallExpressions(SUPERCALL_ERROR),c=c.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),isStrictFunctionBody(o)&&(c=c.enforceStrictErrors()),c}},{key:"reduceSetter",value:function(o,c){var d=c.name,_=c.param,b=c.body,k=o.param.type==="BindingIdentifier";_=_.observeLexicalDeclaration(),_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),b=b.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(o.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceSetter",this).call(this,o,{name:d,param:_,body:b});return!k&&isStrictFunctionBody(o.body)&&($=$.addError(new _earlyErrorState.EarlyError(o,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.observeVarBoundary(),$}},{key:"reduceStaticMemberExpression",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceStaticMemberExpression",this).apply(this,arguments);return o.object.type==="Super"&&(c=c.observeSuperPropertyExpression(o)),c}},{key:"reduceSwitchStatement",value:function(o,c){var d=c.discriminant,_=c.cases,b=this.append.apply(this,_toConsumableArray$3(_));b=b.functionDeclarationNamesAreLexical(),b=b.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING),b=b.observeLexicalBoundary();var k=this.append(d,b);return k=k.clearFreeBreakStatements(),k}},{key:"reduceSwitchStatementWithDefault",value:function(o,c){var d=c.discriminant,_=c.preDefaultCases,b=c.defaultCase,k=c.postDefaultCases,$=this.append.apply(this,[b].concat(_toConsumableArray$3(_),_toConsumableArray$3(k)));$=$.functionDeclarationNamesAreLexical(),$=$.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),$=$.enforceConflictingLexicallyDeclaredNames($.varDeclaredNames,DUPLICATE_BINDING),$=$.observeLexicalBoundary();var j=this.append(d,$);return j=j.clearFreeBreakStatements(),j}},{key:"reduceVariableDeclaration",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclaration",this).apply(this,arguments);switch(o.kind){case"const":case"let":{c=c.observeLexicalDeclaration(),c.lexicallyDeclaredNames.has("let")&&c.lexicallyDeclaredNames.get("let").forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,'Lexical declarations must not have a binding named "let"'))});break}case"var":c=c.observeVarDeclaration();break}return c}},{key:"reduceVariableDeclarationStatement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclarationStatement",this).apply(this,arguments);return o.declaration.kind==="const"&&o.declaration.declarators.forEach(function(d){d.init==null&&(c=c.addError(new _earlyErrorState.EarlyError(d,"Constant lexical declarations must have an initialiser")))}),c}},{key:"reduceWhileStatement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWhileStatement",this).apply(this,arguments);return isLabelledFunction(o.body)&&(c=c.addError(new _earlyErrorState.EarlyError(o.body,"The body of a while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements().clearFreeBreakStatements(),c}},{key:"reduceWithStatement",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWithStatement",this).apply(this,arguments);return isLabelledFunction(o.body)&&(c=c.addError(new _earlyErrorState.EarlyError(o.body,"The body of a with statement must not be a labeled function declaration"))),c=c.addStrictError(new _earlyErrorState.EarlyError(o,"Strict mode code must not include a with statement")),c}},{key:"reduceYieldExpression",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldExpression",this).apply(this,arguments);return c=c.observeYieldExpression(o),c}},{key:"reduceYieldGeneratorExpression",value:function(o){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldGeneratorExpression",this).apply(this,arguments);return c=c.observeYieldExpression(o),c}}],[{key:"check",value:function(o){return(0,_shiftReducer2.default)(new e,o).errors}}]),e}(_shiftReducer$1.MonoidalReducer);(function(a){Object.defineProperty(a,"__esModule",{value:!0}),a.TokenType=a.TokenClass=a.Tokenizer=a.ParserWithLocation=a.GenericParser=a.EarlyErrorChecker=a.parseScriptWithLocation=a.parseModuleWithLocation=a.parseScript=a.parseModule=void 0;var e=function(){function it(rt,st){for(var ot=0;ot1&&arguments[1]!==void 0?arguments[1]:{},lt=ot.earlyErrors,dt=lt===void 0?!0:lt,ct=new c.GenericParser(st),ut=ct[it]();if(dt){var at=d.EarlyErrorChecker.check(ut);if(at.length>0)throw new o.JsError(0,1,0,at[0].message)}return ut}}function tt(it){return function(st){var ot=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},lt=ot.earlyErrors,dt=lt===void 0?!0:lt,ct=new _e(st),ut=ct[it]();if(dt){var at=d.EarlyErrorChecker.check(ut);if(at.length>0){var ht=at[0],pt=ht.node,Et=ht.message,gt=ct.locations.get(pt).start,ft=gt.offset,mt=gt.line,yt=gt.column;throw new o.JsError(ft,mt,yt,Et)}}return{tree:ut,locations:ct.locations,comments:ct.comments}}}a.parseModule=et("parseModule");var nt=a.parseScript=et("parseScript");a.parseModuleWithLocation=tt("parseModule"),a.parseScriptWithLocation=tt("parseScript"),a.default=nt,a.EarlyErrorChecker=d.EarlyErrorChecker,a.GenericParser=c.GenericParser,a.ParserWithLocation=_e})(dist$7);var dist$2={};Object.defineProperty(dist$2,"__esModule",{value:!0});var _default=dist$2.default=function(){var a={},e={typeName:"Boolean"},s={typeName:"Number"},o={typeName:"String"};function c(pn){return{typeName:"Maybe",argument:pn}}function d(pn){return{typeName:"List",argument:pn}}function _(pn){return{typeName:"Const",argument:pn}}function b(){return{typeName:"Union",arguments:[].slice.call(arguments,0)}}var k={typeName:"Enum",values:["ArrayAssignmentTarget","ArrayBinding","ArrayExpression","ArrowExpression","AssignmentExpression","AssignmentTargetIdentifier","AssignmentTargetPropertyIdentifier","AssignmentTargetPropertyProperty","AssignmentTargetWithDefault","AwaitExpression","BinaryExpression","BindingIdentifier","BindingPropertyIdentifier","BindingPropertyProperty","BindingWithDefault","Block","BlockStatement","BreakStatement","CallExpression","CatchClause","ClassDeclaration","ClassElement","ClassExpression","CompoundAssignmentExpression","ComputedMemberAssignmentTarget","ComputedMemberExpression","ComputedPropertyName","ConditionalExpression","ContinueStatement","DataProperty","DebuggerStatement","Directive","DoWhileStatement","EmptyStatement","Export","ExportAllFrom","ExportDefault","ExportFrom","ExportFromSpecifier","ExportLocalSpecifier","ExportLocals","ExpressionStatement","ForAwaitStatement","ForInStatement","ForOfStatement","ForStatement","FormalParameters","FunctionBody","FunctionDeclaration","FunctionExpression","Getter","IdentifierExpression","IfStatement","Import","ImportNamespace","ImportSpecifier","LabeledStatement","LiteralBooleanExpression","LiteralInfinityExpression","LiteralNullExpression","LiteralNumericExpression","LiteralRegExpExpression","LiteralStringExpression","Method","Module","NewExpression","NewTargetExpression","ObjectAssignmentTarget","ObjectBinding","ObjectExpression","ReturnStatement","Script","Setter","ShorthandProperty","SpreadElement","SpreadProperty","StaticMemberAssignmentTarget","StaticMemberExpression","StaticPropertyName","Super","SwitchCase","SwitchDefault","SwitchStatement","SwitchStatementWithDefault","TemplateElement","TemplateExpression","ThisExpression","ThrowStatement","TryCatchStatement","TryFinallyStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarationStatement","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","YieldGeneratorExpression"]},$={typeName:"Enum",values:["==","!=","===","!==","<","<=",">",">=","in","instanceof","<<",">>",">>>","+","-","*","/","%","**",",","||","&&","|","^","&"]},j={typeName:"Enum",values:["+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","|=","^=","&="]},_e={typeName:"Enum",values:["+","-","!","~","typeof","void","delete"]},et={typeName:"Enum",values:["++","--"]},tt={typeName:"Enum",values:["var","let","const"]},nt=a.ArrayAssignmentTarget={},it=a.ArrayBinding={},rt=a.ArrayExpression={},st=a.ArrowExpression={},ot=a.AssignmentExpression={},lt=a.AssignmentTargetIdentifier={},dt=a.AssignmentTargetPropertyIdentifier={},ct=a.AssignmentTargetPropertyProperty={},ut=a.AssignmentTargetWithDefault={},at=a.AwaitExpression={},ht=a.BinaryExpression={},pt=a.BindingIdentifier={},Et=a.BindingPropertyIdentifier={},gt=a.BindingPropertyProperty={},ft=a.BindingWithDefault={},mt=a.Block={},yt=a.BlockStatement={},vt=a.BreakStatement={},At=a.CallExpression={},St=a.CatchClause={},Tt=a.ClassDeclaration={},Dt=a.ClassElement={},xt=a.ClassExpression={},Ct=a.CompoundAssignmentExpression={},bt=a.ComputedMemberAssignmentTarget={},$t=a.ComputedMemberExpression={},It=a.ComputedPropertyName={},Rt=a.ConditionalExpression={},Pt=a.ContinueStatement={},Ft=a.DataProperty={},qt=a.DebuggerStatement={},jt=a.Directive={},kt=a.DoWhileStatement={},Ut=a.EmptyStatement={},zt=a.Export={},Yt=a.ExportAllFrom={},Xt=a.ExportDefault={},Ot=a.ExportFrom={},Nt=a.ExportFromSpecifier={},Vt=a.ExportLocalSpecifier={},Lt=a.ExportLocals={},Bt=a.ExpressionStatement={},Wt=a.ForAwaitStatement={},Qt=a.ForInStatement={},Gt=a.ForOfStatement={},Zt=a.ForStatement={},Kt=a.FormalParameters={},Jt=a.FunctionBody={},rn=a.FunctionDeclaration={},fn=a.FunctionExpression={},An=a.Getter={},cn=a.IdentifierExpression={},vn=a.IfStatement={},Sn=a.Import={},Cn=a.ImportNamespace={},mn=a.ImportSpecifier={},On=a.LabeledStatement={},Dn=a.LiteralBooleanExpression={},Tn=a.LiteralInfinityExpression={},bn=a.LiteralNullExpression={},xn=a.LiteralNumericExpression={},wn=a.LiteralRegExpExpression={},kn=a.LiteralStringExpression={},Fn=a.Method={},Nn=a.Module={},$n=a.NewExpression={},Pn=a.NewTargetExpression={},tn=a.ObjectAssignmentTarget={},en=a.ObjectBinding={},Bn=a.ObjectExpression={},In=a.ReturnStatement={},Rn=a.Script={},Mn=a.Setter={},Ln=a.ShorthandProperty={},hn=a.SpreadElement={},Wn=a.SpreadProperty={},Vn=a.StaticMemberAssignmentTarget={},Qn=a.StaticMemberExpression={},jn=a.StaticPropertyName={},un=a.Super={},dn=a.SwitchCase={},gn=a.SwitchDefault={},qn=a.SwitchStatement={},Gn=a.SwitchStatementWithDefault={},yn=a.TemplateElement={},Un=a.TemplateExpression={},zn=a.ThisExpression={},Hn=a.ThrowStatement={},Yn=a.TryCatchStatement={},Xn=a.TryFinallyStatement={},Zn=a.UnaryExpression={},Kn=a.UpdateExpression={},an=a.VariableDeclaration={},Jn=a.VariableDeclarationStatement={},En=a.VariableDeclarator={},er=a.WhileStatement={},tr=a.WithStatement={},nr=a.YieldExpression={},rr=a.YieldGeneratorExpression={},Er=b($t,Qn),ir=b(dt,ct);b(Tt,xt);var sr=b(zt,Yt,Xt,Ot,Lt),ln=b(It,jn);b(rn,fn);var or=b(Sn,Cn),_r=b(kt,Wt,Qt,Gt,Zt,er),nn=b(bt,Vn),ar=b(Et,gt),ur=b(An,Fn,Mn),Ar=b(Nn,Rn),vr=b(lt,pt,cn),Sr=b(Ft,ur),Mt=b(rt,st,ot,at,ht,At,xt,Ct,Rt,fn,cn,Dn,Tn,bn,xn,wn,kn,Er,$n,Pn,Bn,Un,zn,Zn,Kn,nr,rr),Ht=b(yt,vt,Tt,Pt,qt,Ut,Bt,rn,vn,_r,On,In,qn,Gn,Hn,Yn,Xn,Jn,tr),lr=b(Sr,Ln,Wn);return b(nt,it,ir,ut,ar,ft,mt,St,Dt,jt,sr,Nt,Vt,Mt,Kt,Jt,or,mn,nn,tn,en,lr,Ar,ln,hn,Ht,un,dn,gn,yn,an,En,vr),nt.typeName="ArrayAssignmentTarget",nt.fields=[{name:"type",type:_(k),value:"ArrayAssignmentTarget"},{name:"elements",type:d(c(b(ut,b(b(nt,tn),b(lt,nn)))))},{name:"rest",type:c(b(b(nt,tn),b(lt,nn)))}],it.typeName="ArrayBinding",it.fields=[{name:"type",type:_(k),value:"ArrayBinding"},{name:"elements",type:d(c(b(ft,b(pt,b(it,en)))))},{name:"rest",type:c(b(pt,b(it,en)))}],rt.typeName="ArrayExpression",rt.fields=[{name:"type",type:_(k),value:"ArrayExpression"},{name:"elements",type:d(c(b(Mt,hn)))}],st.typeName="ArrowExpression",st.fields=[{name:"type",type:_(k),value:"ArrowExpression"},{name:"isAsync",type:e},{name:"params",type:Kt},{name:"body",type:b(Mt,Jt)}],ot.typeName="AssignmentExpression",ot.fields=[{name:"type",type:_(k),value:"AssignmentExpression"},{name:"binding",type:b(b(nt,tn),b(lt,nn))},{name:"expression",type:Mt}],lt.typeName="AssignmentTargetIdentifier",lt.fields=[{name:"type",type:_(k),value:"AssignmentTargetIdentifier"},{name:"name",type:o}],dt.typeName="AssignmentTargetPropertyIdentifier",dt.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyIdentifier"},{name:"binding",type:lt},{name:"init",type:c(Mt)}],ct.typeName="AssignmentTargetPropertyProperty",ct.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyProperty"},{name:"name",type:ln},{name:"binding",type:b(ut,b(b(nt,tn),b(lt,nn)))}],ut.typeName="AssignmentTargetWithDefault",ut.fields=[{name:"type",type:_(k),value:"AssignmentTargetWithDefault"},{name:"binding",type:b(b(nt,tn),b(lt,nn))},{name:"init",type:Mt}],at.typeName="AwaitExpression",at.fields=[{name:"type",type:_(k),value:"AwaitExpression"},{name:"expression",type:Mt}],ht.typeName="BinaryExpression",ht.fields=[{name:"type",type:_(k),value:"BinaryExpression"},{name:"left",type:Mt},{name:"operator",type:$},{name:"right",type:Mt}],pt.typeName="BindingIdentifier",pt.fields=[{name:"type",type:_(k),value:"BindingIdentifier"},{name:"name",type:o}],Et.typeName="BindingPropertyIdentifier",Et.fields=[{name:"type",type:_(k),value:"BindingPropertyIdentifier"},{name:"binding",type:pt},{name:"init",type:c(Mt)}],gt.typeName="BindingPropertyProperty",gt.fields=[{name:"type",type:_(k),value:"BindingPropertyProperty"},{name:"name",type:ln},{name:"binding",type:b(ft,b(pt,b(it,en)))}],ft.typeName="BindingWithDefault",ft.fields=[{name:"type",type:_(k),value:"BindingWithDefault"},{name:"binding",type:b(pt,b(it,en))},{name:"init",type:Mt}],mt.typeName="Block",mt.fields=[{name:"type",type:_(k),value:"Block"},{name:"statements",type:d(Ht)}],yt.typeName="BlockStatement",yt.fields=[{name:"type",type:_(k),value:"BlockStatement"},{name:"block",type:mt}],vt.typeName="BreakStatement",vt.fields=[{name:"type",type:_(k),value:"BreakStatement"},{name:"label",type:c(o)}],At.typeName="CallExpression",At.fields=[{name:"type",type:_(k),value:"CallExpression"},{name:"callee",type:b(Mt,un)},{name:"arguments",type:d(b(Mt,hn))}],St.typeName="CatchClause",St.fields=[{name:"type",type:_(k),value:"CatchClause"},{name:"binding",type:b(pt,b(it,en))},{name:"body",type:mt}],Tt.typeName="ClassDeclaration",Tt.fields=[{name:"type",type:_(k),value:"ClassDeclaration"},{name:"name",type:pt},{name:"super",type:c(Mt)},{name:"elements",type:d(Dt)}],Dt.typeName="ClassElement",Dt.fields=[{name:"type",type:_(k),value:"ClassElement"},{name:"isStatic",type:e},{name:"method",type:ur}],xt.typeName="ClassExpression",xt.fields=[{name:"type",type:_(k),value:"ClassExpression"},{name:"name",type:c(pt)},{name:"super",type:c(Mt)},{name:"elements",type:d(Dt)}],Ct.typeName="CompoundAssignmentExpression",Ct.fields=[{name:"type",type:_(k),value:"CompoundAssignmentExpression"},{name:"binding",type:b(lt,nn)},{name:"operator",type:j},{name:"expression",type:Mt}],bt.typeName="ComputedMemberAssignmentTarget",bt.fields=[{name:"type",type:_(k),value:"ComputedMemberAssignmentTarget"},{name:"object",type:b(Mt,un)},{name:"expression",type:Mt}],$t.typeName="ComputedMemberExpression",$t.fields=[{name:"type",type:_(k),value:"ComputedMemberExpression"},{name:"object",type:b(Mt,un)},{name:"expression",type:Mt}],It.typeName="ComputedPropertyName",It.fields=[{name:"type",type:_(k),value:"ComputedPropertyName"},{name:"expression",type:Mt}],Rt.typeName="ConditionalExpression",Rt.fields=[{name:"type",type:_(k),value:"ConditionalExpression"},{name:"test",type:Mt},{name:"consequent",type:Mt},{name:"alternate",type:Mt}],Pt.typeName="ContinueStatement",Pt.fields=[{name:"type",type:_(k),value:"ContinueStatement"},{name:"label",type:c(o)}],Ft.typeName="DataProperty",Ft.fields=[{name:"type",type:_(k),value:"DataProperty"},{name:"name",type:ln},{name:"expression",type:Mt}],qt.typeName="DebuggerStatement",qt.fields=[{name:"type",type:_(k),value:"DebuggerStatement"}],jt.typeName="Directive",jt.fields=[{name:"type",type:_(k),value:"Directive"},{name:"rawValue",type:o}],kt.typeName="DoWhileStatement",kt.fields=[{name:"type",type:_(k),value:"DoWhileStatement"},{name:"body",type:Ht},{name:"test",type:Mt}],Ut.typeName="EmptyStatement",Ut.fields=[{name:"type",type:_(k),value:"EmptyStatement"}],zt.typeName="Export",zt.fields=[{name:"type",type:_(k),value:"Export"},{name:"declaration",type:b(Tt,rn,an)}],Yt.typeName="ExportAllFrom",Yt.fields=[{name:"type",type:_(k),value:"ExportAllFrom"},{name:"moduleSpecifier",type:o}],Xt.typeName="ExportDefault",Xt.fields=[{name:"type",type:_(k),value:"ExportDefault"},{name:"body",type:b(Tt,Mt,rn)}],Ot.typeName="ExportFrom",Ot.fields=[{name:"type",type:_(k),value:"ExportFrom"},{name:"namedExports",type:d(Nt)},{name:"moduleSpecifier",type:o}],Nt.typeName="ExportFromSpecifier",Nt.fields=[{name:"type",type:_(k),value:"ExportFromSpecifier"},{name:"name",type:o},{name:"exportedName",type:c(o)}],Vt.typeName="ExportLocalSpecifier",Vt.fields=[{name:"type",type:_(k),value:"ExportLocalSpecifier"},{name:"name",type:cn},{name:"exportedName",type:c(o)}],Lt.typeName="ExportLocals",Lt.fields=[{name:"type",type:_(k),value:"ExportLocals"},{name:"namedExports",type:d(Vt)}],Bt.typeName="ExpressionStatement",Bt.fields=[{name:"type",type:_(k),value:"ExpressionStatement"},{name:"expression",type:Mt}],Wt.typeName="ForAwaitStatement",Wt.fields=[{name:"type",type:_(k),value:"ForAwaitStatement"},{name:"left",type:b(b(b(nt,tn),b(lt,nn)),an)},{name:"right",type:Mt},{name:"body",type:Ht}],Qt.typeName="ForInStatement",Qt.fields=[{name:"type",type:_(k),value:"ForInStatement"},{name:"left",type:b(b(b(nt,tn),b(lt,nn)),an)},{name:"right",type:Mt},{name:"body",type:Ht}],Gt.typeName="ForOfStatement",Gt.fields=[{name:"type",type:_(k),value:"ForOfStatement"},{name:"left",type:b(b(b(nt,tn),b(lt,nn)),an)},{name:"right",type:Mt},{name:"body",type:Ht}],Zt.typeName="ForStatement",Zt.fields=[{name:"type",type:_(k),value:"ForStatement"},{name:"init",type:c(b(Mt,an))},{name:"test",type:c(Mt)},{name:"update",type:c(Mt)},{name:"body",type:Ht}],Kt.typeName="FormalParameters",Kt.fields=[{name:"type",type:_(k),value:"FormalParameters"},{name:"items",type:d(b(ft,b(pt,b(it,en))))},{name:"rest",type:c(b(pt,b(it,en)))}],Jt.typeName="FunctionBody",Jt.fields=[{name:"type",type:_(k),value:"FunctionBody"},{name:"directives",type:d(jt)},{name:"statements",type:d(Ht)}],rn.typeName="FunctionDeclaration",rn.fields=[{name:"type",type:_(k),value:"FunctionDeclaration"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:pt},{name:"params",type:Kt},{name:"body",type:Jt}],fn.typeName="FunctionExpression",fn.fields=[{name:"type",type:_(k),value:"FunctionExpression"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:c(pt)},{name:"params",type:Kt},{name:"body",type:Jt}],An.typeName="Getter",An.fields=[{name:"type",type:_(k),value:"Getter"},{name:"name",type:ln},{name:"body",type:Jt}],cn.typeName="IdentifierExpression",cn.fields=[{name:"type",type:_(k),value:"IdentifierExpression"},{name:"name",type:o}],vn.typeName="IfStatement",vn.fields=[{name:"type",type:_(k),value:"IfStatement"},{name:"test",type:Mt},{name:"consequent",type:Ht},{name:"alternate",type:c(Ht)}],Sn.typeName="Import",Sn.fields=[{name:"type",type:_(k),value:"Import"},{name:"defaultBinding",type:c(pt)},{name:"namedImports",type:d(mn)},{name:"moduleSpecifier",type:o}],Cn.typeName="ImportNamespace",Cn.fields=[{name:"type",type:_(k),value:"ImportNamespace"},{name:"defaultBinding",type:c(pt)},{name:"namespaceBinding",type:pt},{name:"moduleSpecifier",type:o}],mn.typeName="ImportSpecifier",mn.fields=[{name:"type",type:_(k),value:"ImportSpecifier"},{name:"name",type:c(o)},{name:"binding",type:pt}],On.typeName="LabeledStatement",On.fields=[{name:"type",type:_(k),value:"LabeledStatement"},{name:"label",type:o},{name:"body",type:Ht}],Dn.typeName="LiteralBooleanExpression",Dn.fields=[{name:"type",type:_(k),value:"LiteralBooleanExpression"},{name:"value",type:e}],Tn.typeName="LiteralInfinityExpression",Tn.fields=[{name:"type",type:_(k),value:"LiteralInfinityExpression"}],bn.typeName="LiteralNullExpression",bn.fields=[{name:"type",type:_(k),value:"LiteralNullExpression"}],xn.typeName="LiteralNumericExpression",xn.fields=[{name:"type",type:_(k),value:"LiteralNumericExpression"},{name:"value",type:s}],wn.typeName="LiteralRegExpExpression",wn.fields=[{name:"type",type:_(k),value:"LiteralRegExpExpression"},{name:"pattern",type:o},{name:"global",type:e},{name:"ignoreCase",type:e},{name:"multiLine",type:e},{name:"dotAll",type:e},{name:"unicode",type:e},{name:"sticky",type:e}],kn.typeName="LiteralStringExpression",kn.fields=[{name:"type",type:_(k),value:"LiteralStringExpression"},{name:"value",type:o}],Fn.typeName="Method",Fn.fields=[{name:"type",type:_(k),value:"Method"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:ln},{name:"params",type:Kt},{name:"body",type:Jt}],Nn.typeName="Module",Nn.fields=[{name:"type",type:_(k),value:"Module"},{name:"directives",type:d(jt)},{name:"items",type:d(b(sr,or,Ht))}],$n.typeName="NewExpression",$n.fields=[{name:"type",type:_(k),value:"NewExpression"},{name:"callee",type:Mt},{name:"arguments",type:d(b(Mt,hn))}],Pn.typeName="NewTargetExpression",Pn.fields=[{name:"type",type:_(k),value:"NewTargetExpression"}],tn.typeName="ObjectAssignmentTarget",tn.fields=[{name:"type",type:_(k),value:"ObjectAssignmentTarget"},{name:"properties",type:d(ir)},{name:"rest",type:c(b(b(nt,tn),b(lt,nn)))}],en.typeName="ObjectBinding",en.fields=[{name:"type",type:_(k),value:"ObjectBinding"},{name:"properties",type:d(ar)},{name:"rest",type:c(b(pt,b(it,en)))}],Bn.typeName="ObjectExpression",Bn.fields=[{name:"type",type:_(k),value:"ObjectExpression"},{name:"properties",type:d(lr)}],In.typeName="ReturnStatement",In.fields=[{name:"type",type:_(k),value:"ReturnStatement"},{name:"expression",type:c(Mt)}],Rn.typeName="Script",Rn.fields=[{name:"type",type:_(k),value:"Script"},{name:"directives",type:d(jt)},{name:"statements",type:d(Ht)}],Mn.typeName="Setter",Mn.fields=[{name:"type",type:_(k),value:"Setter"},{name:"name",type:ln},{name:"param",type:b(ft,b(pt,b(it,en)))},{name:"body",type:Jt}],Ln.typeName="ShorthandProperty",Ln.fields=[{name:"type",type:_(k),value:"ShorthandProperty"},{name:"name",type:cn}],hn.typeName="SpreadElement",hn.fields=[{name:"type",type:_(k),value:"SpreadElement"},{name:"expression",type:Mt}],Wn.typeName="SpreadProperty",Wn.fields=[{name:"type",type:_(k),value:"SpreadProperty"},{name:"expression",type:Mt}],Vn.typeName="StaticMemberAssignmentTarget",Vn.fields=[{name:"type",type:_(k),value:"StaticMemberAssignmentTarget"},{name:"object",type:b(Mt,un)},{name:"property",type:o}],Qn.typeName="StaticMemberExpression",Qn.fields=[{name:"type",type:_(k),value:"StaticMemberExpression"},{name:"object",type:b(Mt,un)},{name:"property",type:o}],jn.typeName="StaticPropertyName",jn.fields=[{name:"type",type:_(k),value:"StaticPropertyName"},{name:"value",type:o}],un.typeName="Super",un.fields=[{name:"type",type:_(k),value:"Super"}],dn.typeName="SwitchCase",dn.fields=[{name:"type",type:_(k),value:"SwitchCase"},{name:"test",type:Mt},{name:"consequent",type:d(Ht)}],gn.typeName="SwitchDefault",gn.fields=[{name:"type",type:_(k),value:"SwitchDefault"},{name:"consequent",type:d(Ht)}],qn.typeName="SwitchStatement",qn.fields=[{name:"type",type:_(k),value:"SwitchStatement"},{name:"discriminant",type:Mt},{name:"cases",type:d(dn)}],Gn.typeName="SwitchStatementWithDefault",Gn.fields=[{name:"type",type:_(k),value:"SwitchStatementWithDefault"},{name:"discriminant",type:Mt},{name:"preDefaultCases",type:d(dn)},{name:"defaultCase",type:gn},{name:"postDefaultCases",type:d(dn)}],yn.typeName="TemplateElement",yn.fields=[{name:"type",type:_(k),value:"TemplateElement"},{name:"rawValue",type:o}],Un.typeName="TemplateExpression",Un.fields=[{name:"type",type:_(k),value:"TemplateExpression"},{name:"tag",type:c(Mt)},{name:"elements",type:d(b(Mt,yn))}],zn.typeName="ThisExpression",zn.fields=[{name:"type",type:_(k),value:"ThisExpression"}],Hn.typeName="ThrowStatement",Hn.fields=[{name:"type",type:_(k),value:"ThrowStatement"},{name:"expression",type:Mt}],Yn.typeName="TryCatchStatement",Yn.fields=[{name:"type",type:_(k),value:"TryCatchStatement"},{name:"body",type:mt},{name:"catchClause",type:St}],Xn.typeName="TryFinallyStatement",Xn.fields=[{name:"type",type:_(k),value:"TryFinallyStatement"},{name:"body",type:mt},{name:"catchClause",type:c(St)},{name:"finalizer",type:mt}],Zn.typeName="UnaryExpression",Zn.fields=[{name:"type",type:_(k),value:"UnaryExpression"},{name:"operator",type:_e},{name:"operand",type:Mt}],Kn.typeName="UpdateExpression",Kn.fields=[{name:"type",type:_(k),value:"UpdateExpression"},{name:"isPrefix",type:e},{name:"operator",type:et},{name:"operand",type:b(lt,nn)}],an.typeName="VariableDeclaration",an.fields=[{name:"type",type:_(k),value:"VariableDeclaration"},{name:"kind",type:tt},{name:"declarators",type:d(En)}],Jn.typeName="VariableDeclarationStatement",Jn.fields=[{name:"type",type:_(k),value:"VariableDeclarationStatement"},{name:"declaration",type:an}],En.typeName="VariableDeclarator",En.fields=[{name:"type",type:_(k),value:"VariableDeclarator"},{name:"binding",type:b(pt,b(it,en))},{name:"init",type:c(Mt)}],er.typeName="WhileStatement",er.fields=[{name:"type",type:_(k),value:"WhileStatement"},{name:"test",type:Mt},{name:"body",type:Ht}],tr.typeName="WithStatement",tr.fields=[{name:"type",type:_(k),value:"WithStatement"},{name:"object",type:Mt},{name:"body",type:Ht}],nr.typeName="YieldExpression",nr.fields=[{name:"type",type:_(k),value:"YieldExpression"},{name:"expression",type:c(Mt)}],rr.typeName="YieldGeneratorExpression",rr.fields=[{name:"type",type:_(k),value:"YieldGeneratorExpression"},{name:"expression",type:Mt}],a}(),estraverse$1={};(function(a){(function e(s){var o,c,d,_,b,k;function $(ct){var ut={},at,ht;for(at in ct)ct.hasOwnProperty(at)&&(ht=ct[at],typeof ht=="object"&&ht!==null?ut[at]=$(ht):ut[at]=ht);return ut}function j(ct,ut){var at,ht,pt,Et;for(ht=ct.length,pt=0;ht;)at=ht>>>1,Et=pt+at,ut(ct[Et])?ht=at:(pt=Et+1,ht-=at+1);return pt}o={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ChainExpression:"ChainExpression",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",PrivateIdentifier:"PrivateIdentifier",Program:"Program",Property:"Property",PropertyDefinition:"PropertyDefinition",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},d={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},_={},b={},k={},c={Break:_,Skip:b,Remove:k};function _e(ct,ut){this.parent=ct,this.key=ut}_e.prototype.replace=function(ut){this.parent[this.key]=ut},_e.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)};function et(ct,ut,at,ht){this.node=ct,this.path=ut,this.wrap=at,this.ref=ht}function tt(){}tt.prototype.path=function(){var ut,at,ht,pt,Et,gt;function ft(mt,yt){if(Array.isArray(yt))for(ht=0,pt=yt.length;ht=0;--at)if(ct[at].node===ut)return!0;return!1}tt.prototype.traverse=function(ut,at){var ht,pt,Et,gt,ft,mt,yt,vt,At,St,Tt,Dt;for(this.__initialize(ut,at),Dt={},ht=this.__worklist,pt=this.__leavelist,ht.push(new et(ut,null,null,null)),pt.push(new et(null,null,null,null));ht.length;){if(Et=ht.pop(),Et===Dt){if(Et=pt.pop(),mt=this.__execute(at.leave,Et),this.__state===_||mt===_)return;continue}if(Et.node){if(mt=this.__execute(at.enter,Et),this.__state===_||mt===_)return;if(ht.push(Dt),pt.push(Et),this.__state===b||mt===b)continue;if(gt=Et.node,ft=gt.type||Et.wrap,St=this.__keys[ft],!St)if(this.__fallback)St=this.__fallback(gt);else throw new Error("Unknown node type "+ft+".");for(vt=St.length;(vt-=1)>=0;)if(yt=St[vt],Tt=gt[yt],!!Tt){if(Array.isArray(Tt)){for(At=Tt.length;(At-=1)>=0;)if(!!Tt[At]&&!rt(pt,Tt[At])){if(it(ft,St[vt]))Et=new et(Tt[At],[yt,At],"Property",null);else if(nt(Tt[At]))Et=new et(Tt[At],[yt,At],null,null);else continue;ht.push(Et)}}else if(nt(Tt)){if(rt(pt,Tt))continue;ht.push(new et(Tt,yt,null,null))}}}}},tt.prototype.replace=function(ut,at){var ht,pt,Et,gt,ft,mt,yt,vt,At,St,Tt,Dt,xt;function Ct(bt){var $t,It,Rt,Pt;if(bt.ref.remove()){for(It=bt.ref.key,Pt=bt.ref.parent,$t=ht.length;$t--;)if(Rt=ht[$t],Rt.ref&&Rt.ref.parent===Pt){if(Rt.ref.key=0;)if(xt=At[yt],St=Et[xt],!!St)if(Array.isArray(St)){for(vt=St.length;(vt-=1)>=0;)if(!!St[vt]){if(it(gt,At[yt]))mt=new et(St[vt],[xt,vt],"Property",new _e(St,vt));else if(nt(St[vt]))mt=new et(St[vt],[xt,vt],null,new _e(St,vt));else continue;ht.push(mt)}}else nt(St)&&ht.push(new et(St,xt,null,new _e(Et,xt)))}}return Dt.root};function st(ct,ut){var at=new tt;return at.traverse(ct,ut)}function ot(ct,ut){var at=new tt;return at.replace(ct,ut)}function lt(ct,ut){var at;return at=j(ut,function(pt){return pt.range[0]>ct.range[0]}),ct.extendedRange=[ct.range[0],ct.range[1]],at!==ut.length&&(ct.extendedRange[1]=ut[at].range[0]),at-=1,at>=0&&(ct.extendedRange[0]=ut[at].range[1]),ct}function dt(ct,ut,at){var ht=[],pt,Et,gt,ft;if(!ct.range)throw new Error("attachComments needs range information");if(!at.length){if(ut.length){for(gt=0,Et=ut.length;gtmt.range[0]));)yt.extendedRange[1]===mt.range[0]?(mt.leadingComments||(mt.leadingComments=[]),mt.leadingComments.push(yt),ht.splice(ft,1)):ft+=1;if(ft===ht.length)return c.Break;if(ht[ft].extendedRange[0]>mt.range[1])return c.Skip}}),ft=0,st(ct,{leave:function(mt){for(var yt;ftmt.range[1])return c.Skip}}),ct}return s.Syntax=o,s.traverse=st,s.replace=ot,s.attachComments=dt,s.VisitorKeys=d,s.VisitorOption=c,s.Controller=tt,s.cloneEnvironment=function(){return e({})},s})(a)})(estraverse$1);const Spec=_default.default||_default,estraverse=estraverse$1.cloneEnvironment();Object.keys(estraverse.Syntax).filter(a=>a!=="Property").forEach(a=>{delete estraverse.Syntax[a],delete estraverse.VisitorKeys[a]});Object.assign(estraverse.Syntax,Object.keys(Spec).reduce((a,e)=>(a[e]=e,a),{}));Object.assign(estraverse.VisitorKeys,Object.keys(Spec).reduce((a,e)=>(a[e]=Spec[e].fields.map(s=>s.name),a),{}));var dist$1={},StaticMemberExpression_1,ReturnStatement_1,LiteralStringExpression_1,LiteralNumericExpression_1,IdentifierExpression_1,CallExpression_1,ArrayExpression_1;Object.defineProperty(dist$1,"__esModule",{value:!0});function _classCallCheck$5(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}dist$1.ArrayAssignmentTarget=function a(e){var s=e.elements,o=e.rest;_classCallCheck$5(this,a),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=o};dist$1.ArrayBinding=function a(e){var s=e.elements,o=e.rest;_classCallCheck$5(this,a),this.type="ArrayBinding",this.elements=s,this.rest=o};ArrayExpression_1=dist$1.ArrayExpression=function a(e){var s=e.elements;_classCallCheck$5(this,a),this.type="ArrayExpression",this.elements=s};dist$1.ArrowExpression=function a(e){var s=e.isAsync,o=e.params,c=e.body;_classCallCheck$5(this,a),this.type="ArrowExpression",this.isAsync=s,this.params=o,this.body=c};dist$1.AssignmentExpression=function a(e){var s=e.binding,o=e.expression;_classCallCheck$5(this,a),this.type="AssignmentExpression",this.binding=s,this.expression=o};dist$1.AssignmentTargetIdentifier=function a(e){var s=e.name;_classCallCheck$5(this,a),this.type="AssignmentTargetIdentifier",this.name=s};dist$1.AssignmentTargetPropertyIdentifier=function a(e){var s=e.binding,o=e.init;_classCallCheck$5(this,a),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=o};dist$1.AssignmentTargetPropertyProperty=function a(e){var s=e.name,o=e.binding;_classCallCheck$5(this,a),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=o};dist$1.AssignmentTargetWithDefault=function a(e){var s=e.binding,o=e.init;_classCallCheck$5(this,a),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=o};dist$1.AwaitExpression=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="AwaitExpression",this.expression=s};dist$1.BinaryExpression=function a(e){var s=e.left,o=e.operator,c=e.right;_classCallCheck$5(this,a),this.type="BinaryExpression",this.left=s,this.operator=o,this.right=c};dist$1.BindingIdentifier=function a(e){var s=e.name;_classCallCheck$5(this,a),this.type="BindingIdentifier",this.name=s};dist$1.BindingPropertyIdentifier=function a(e){var s=e.binding,o=e.init;_classCallCheck$5(this,a),this.type="BindingPropertyIdentifier",this.binding=s,this.init=o};dist$1.BindingPropertyProperty=function a(e){var s=e.name,o=e.binding;_classCallCheck$5(this,a),this.type="BindingPropertyProperty",this.name=s,this.binding=o};dist$1.BindingWithDefault=function a(e){var s=e.binding,o=e.init;_classCallCheck$5(this,a),this.type="BindingWithDefault",this.binding=s,this.init=o};dist$1.Block=function a(e){var s=e.statements;_classCallCheck$5(this,a),this.type="Block",this.statements=s};dist$1.BlockStatement=function a(e){var s=e.block;_classCallCheck$5(this,a),this.type="BlockStatement",this.block=s};dist$1.BreakStatement=function a(e){var s=e.label;_classCallCheck$5(this,a),this.type="BreakStatement",this.label=s};CallExpression_1=dist$1.CallExpression=function a(e){var s=e.callee,o=e.arguments;_classCallCheck$5(this,a),this.type="CallExpression",this.callee=s,this.arguments=o};dist$1.CatchClause=function a(e){var s=e.binding,o=e.body;_classCallCheck$5(this,a),this.type="CatchClause",this.binding=s,this.body=o};dist$1.ClassDeclaration=function a(e){var s=e.name,o=e.super,c=e.elements;_classCallCheck$5(this,a),this.type="ClassDeclaration",this.name=s,this.super=o,this.elements=c};dist$1.ClassElement=function a(e){var s=e.isStatic,o=e.method;_classCallCheck$5(this,a),this.type="ClassElement",this.isStatic=s,this.method=o};dist$1.ClassExpression=function a(e){var s=e.name,o=e.super,c=e.elements;_classCallCheck$5(this,a),this.type="ClassExpression",this.name=s,this.super=o,this.elements=c};dist$1.CompoundAssignmentExpression=function a(e){var s=e.binding,o=e.operator,c=e.expression;_classCallCheck$5(this,a),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=o,this.expression=c};dist$1.ComputedMemberAssignmentTarget=function a(e){var s=e.object,o=e.expression;_classCallCheck$5(this,a),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=o};dist$1.ComputedMemberExpression=function a(e){var s=e.object,o=e.expression;_classCallCheck$5(this,a),this.type="ComputedMemberExpression",this.object=s,this.expression=o};dist$1.ComputedPropertyName=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="ComputedPropertyName",this.expression=s};dist$1.ConditionalExpression=function a(e){var s=e.test,o=e.consequent,c=e.alternate;_classCallCheck$5(this,a),this.type="ConditionalExpression",this.test=s,this.consequent=o,this.alternate=c};dist$1.ContinueStatement=function a(e){var s=e.label;_classCallCheck$5(this,a),this.type="ContinueStatement",this.label=s};dist$1.DataProperty=function a(e){var s=e.name,o=e.expression;_classCallCheck$5(this,a),this.type="DataProperty",this.name=s,this.expression=o};dist$1.DebuggerStatement=function a(){_classCallCheck$5(this,a),this.type="DebuggerStatement"};dist$1.Directive=function a(e){var s=e.rawValue;_classCallCheck$5(this,a),this.type="Directive",this.rawValue=s};dist$1.DoWhileStatement=function a(e){var s=e.body,o=e.test;_classCallCheck$5(this,a),this.type="DoWhileStatement",this.body=s,this.test=o};dist$1.EmptyStatement=function a(){_classCallCheck$5(this,a),this.type="EmptyStatement"};dist$1.Export=function a(e){var s=e.declaration;_classCallCheck$5(this,a),this.type="Export",this.declaration=s};dist$1.ExportAllFrom=function a(e){var s=e.moduleSpecifier;_classCallCheck$5(this,a),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$1.ExportDefault=function a(e){var s=e.body;_classCallCheck$5(this,a),this.type="ExportDefault",this.body=s};dist$1.ExportFrom=function a(e){var s=e.namedExports,o=e.moduleSpecifier;_classCallCheck$5(this,a),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=o};dist$1.ExportFromSpecifier=function a(e){var s=e.name,o=e.exportedName;_classCallCheck$5(this,a),this.type="ExportFromSpecifier",this.name=s,this.exportedName=o};dist$1.ExportLocalSpecifier=function a(e){var s=e.name,o=e.exportedName;_classCallCheck$5(this,a),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=o};dist$1.ExportLocals=function a(e){var s=e.namedExports;_classCallCheck$5(this,a),this.type="ExportLocals",this.namedExports=s};dist$1.ExpressionStatement=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="ExpressionStatement",this.expression=s};dist$1.ForAwaitStatement=function a(e){var s=e.left,o=e.right,c=e.body;_classCallCheck$5(this,a),this.type="ForAwaitStatement",this.left=s,this.right=o,this.body=c};dist$1.ForInStatement=function a(e){var s=e.left,o=e.right,c=e.body;_classCallCheck$5(this,a),this.type="ForInStatement",this.left=s,this.right=o,this.body=c};dist$1.ForOfStatement=function a(e){var s=e.left,o=e.right,c=e.body;_classCallCheck$5(this,a),this.type="ForOfStatement",this.left=s,this.right=o,this.body=c};dist$1.ForStatement=function a(e){var s=e.init,o=e.test,c=e.update,d=e.body;_classCallCheck$5(this,a),this.type="ForStatement",this.init=s,this.test=o,this.update=c,this.body=d};dist$1.FormalParameters=function a(e){var s=e.items,o=e.rest;_classCallCheck$5(this,a),this.type="FormalParameters",this.items=s,this.rest=o};dist$1.FunctionBody=function a(e){var s=e.directives,o=e.statements;_classCallCheck$5(this,a),this.type="FunctionBody",this.directives=s,this.statements=o};dist$1.FunctionDeclaration=function a(e){var s=e.isAsync,o=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,a),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=o,this.name=c,this.params=d,this.body=_};dist$1.FunctionExpression=function a(e){var s=e.isAsync,o=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,a),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=o,this.name=c,this.params=d,this.body=_};dist$1.Getter=function a(e){var s=e.name,o=e.body;_classCallCheck$5(this,a),this.type="Getter",this.name=s,this.body=o};IdentifierExpression_1=dist$1.IdentifierExpression=function a(e){var s=e.name;_classCallCheck$5(this,a),this.type="IdentifierExpression",this.name=s};dist$1.IfStatement=function a(e){var s=e.test,o=e.consequent,c=e.alternate;_classCallCheck$5(this,a),this.type="IfStatement",this.test=s,this.consequent=o,this.alternate=c};dist$1.Import=function a(e){var s=e.defaultBinding,o=e.namedImports,c=e.moduleSpecifier;_classCallCheck$5(this,a),this.type="Import",this.defaultBinding=s,this.namedImports=o,this.moduleSpecifier=c};dist$1.ImportNamespace=function a(e){var s=e.defaultBinding,o=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$5(this,a),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=o,this.moduleSpecifier=c};dist$1.ImportSpecifier=function a(e){var s=e.name,o=e.binding;_classCallCheck$5(this,a),this.type="ImportSpecifier",this.name=s,this.binding=o};dist$1.LabeledStatement=function a(e){var s=e.label,o=e.body;_classCallCheck$5(this,a),this.type="LabeledStatement",this.label=s,this.body=o};dist$1.LiteralBooleanExpression=function a(e){var s=e.value;_classCallCheck$5(this,a),this.type="LiteralBooleanExpression",this.value=s};dist$1.LiteralInfinityExpression=function a(){_classCallCheck$5(this,a),this.type="LiteralInfinityExpression"};dist$1.LiteralNullExpression=function a(){_classCallCheck$5(this,a),this.type="LiteralNullExpression"};LiteralNumericExpression_1=dist$1.LiteralNumericExpression=function a(e){var s=e.value;_classCallCheck$5(this,a),this.type="LiteralNumericExpression",this.value=s};dist$1.LiteralRegExpExpression=function a(e){var s=e.pattern,o=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$5(this,a),this.type="LiteralRegExpExpression",this.pattern=s,this.global=o,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};LiteralStringExpression_1=dist$1.LiteralStringExpression=function a(e){var s=e.value;_classCallCheck$5(this,a),this.type="LiteralStringExpression",this.value=s};dist$1.Method=function a(e){var s=e.isAsync,o=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,a),this.type="Method",this.isAsync=s,this.isGenerator=o,this.name=c,this.params=d,this.body=_};dist$1.Module=function a(e){var s=e.directives,o=e.items;_classCallCheck$5(this,a),this.type="Module",this.directives=s,this.items=o};dist$1.NewExpression=function a(e){var s=e.callee,o=e.arguments;_classCallCheck$5(this,a),this.type="NewExpression",this.callee=s,this.arguments=o};dist$1.NewTargetExpression=function a(){_classCallCheck$5(this,a),this.type="NewTargetExpression"};dist$1.ObjectAssignmentTarget=function a(e){var s=e.properties,o=e.rest;_classCallCheck$5(this,a),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=o};dist$1.ObjectBinding=function a(e){var s=e.properties,o=e.rest;_classCallCheck$5(this,a),this.type="ObjectBinding",this.properties=s,this.rest=o};dist$1.ObjectExpression=function a(e){var s=e.properties;_classCallCheck$5(this,a),this.type="ObjectExpression",this.properties=s};ReturnStatement_1=dist$1.ReturnStatement=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="ReturnStatement",this.expression=s};dist$1.Script=function a(e){var s=e.directives,o=e.statements;_classCallCheck$5(this,a),this.type="Script",this.directives=s,this.statements=o};dist$1.Setter=function a(e){var s=e.name,o=e.param,c=e.body;_classCallCheck$5(this,a),this.type="Setter",this.name=s,this.param=o,this.body=c};dist$1.ShorthandProperty=function a(e){var s=e.name;_classCallCheck$5(this,a),this.type="ShorthandProperty",this.name=s};dist$1.SpreadElement=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="SpreadElement",this.expression=s};dist$1.SpreadProperty=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="SpreadProperty",this.expression=s};dist$1.StaticMemberAssignmentTarget=function a(e){var s=e.object,o=e.property;_classCallCheck$5(this,a),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=o};StaticMemberExpression_1=dist$1.StaticMemberExpression=function a(e){var s=e.object,o=e.property;_classCallCheck$5(this,a),this.type="StaticMemberExpression",this.object=s,this.property=o};dist$1.StaticPropertyName=function a(e){var s=e.value;_classCallCheck$5(this,a),this.type="StaticPropertyName",this.value=s};dist$1.Super=function a(){_classCallCheck$5(this,a),this.type="Super"};dist$1.SwitchCase=function a(e){var s=e.test,o=e.consequent;_classCallCheck$5(this,a),this.type="SwitchCase",this.test=s,this.consequent=o};dist$1.SwitchDefault=function a(e){var s=e.consequent;_classCallCheck$5(this,a),this.type="SwitchDefault",this.consequent=s};dist$1.SwitchStatement=function a(e){var s=e.discriminant,o=e.cases;_classCallCheck$5(this,a),this.type="SwitchStatement",this.discriminant=s,this.cases=o};dist$1.SwitchStatementWithDefault=function a(e){var s=e.discriminant,o=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$5(this,a),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=o,this.defaultCase=c,this.postDefaultCases=d};dist$1.TemplateElement=function a(e){var s=e.rawValue;_classCallCheck$5(this,a),this.type="TemplateElement",this.rawValue=s};dist$1.TemplateExpression=function a(e){var s=e.tag,o=e.elements;_classCallCheck$5(this,a),this.type="TemplateExpression",this.tag=s,this.elements=o};dist$1.ThisExpression=function a(){_classCallCheck$5(this,a),this.type="ThisExpression"};dist$1.ThrowStatement=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="ThrowStatement",this.expression=s};dist$1.TryCatchStatement=function a(e){var s=e.body,o=e.catchClause;_classCallCheck$5(this,a),this.type="TryCatchStatement",this.body=s,this.catchClause=o};dist$1.TryFinallyStatement=function a(e){var s=e.body,o=e.catchClause,c=e.finalizer;_classCallCheck$5(this,a),this.type="TryFinallyStatement",this.body=s,this.catchClause=o,this.finalizer=c};dist$1.UnaryExpression=function a(e){var s=e.operator,o=e.operand;_classCallCheck$5(this,a),this.type="UnaryExpression",this.operator=s,this.operand=o};dist$1.UpdateExpression=function a(e){var s=e.isPrefix,o=e.operator,c=e.operand;_classCallCheck$5(this,a),this.type="UpdateExpression",this.isPrefix=s,this.operator=o,this.operand=c};dist$1.VariableDeclaration=function a(e){var s=e.kind,o=e.declarators;_classCallCheck$5(this,a),this.type="VariableDeclaration",this.kind=s,this.declarators=o};dist$1.VariableDeclarationStatement=function a(e){var s=e.declaration;_classCallCheck$5(this,a),this.type="VariableDeclarationStatement",this.declaration=s};dist$1.VariableDeclarator=function a(e){var s=e.binding,o=e.init;_classCallCheck$5(this,a),this.type="VariableDeclarator",this.binding=s,this.init=o};dist$1.WhileStatement=function a(e){var s=e.test,o=e.body;_classCallCheck$5(this,a),this.type="WhileStatement",this.test=s,this.body=o};dist$1.WithStatement=function a(e){var s=e.object,o=e.body;_classCallCheck$5(this,a),this.type="WithStatement",this.object=s,this.body=o};dist$1.YieldExpression=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="YieldExpression",this.expression=s};dist$1.YieldGeneratorExpression=function a(e){var s=e.expression;_classCallCheck$5(this,a),this.type="YieldGeneratorExpression",this.expression=s};var dist={},minimalCodegen={};/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty=Object.prototype.hasOwnProperty,propIsEnumerable=Object.prototype.propertyIsEnumerable;function toObject(a){if(a==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(a)}function shouldUseNative(){try{if(!Object.assign)return!1;var a=new String("abc");if(a[5]="de",Object.getOwnPropertyNames(a)[0]==="5")return!1;for(var e={},s=0;s<10;s++)e["_"+String.fromCharCode(s)]=s;var o=Object.getOwnPropertyNames(e).map(function(d){return e[d]});if(o.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var objectAssign=shouldUseNative()?Object.assign:function(a,e){for(var s,o=toObject(a),c,d=1;d=48&&rt<=55}s=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function $(rt){return rt===32||rt===9||rt===11||rt===12||rt===160||rt>=5760&&s.indexOf(rt)>=0}function j(rt){return rt===10||rt===13||rt===8232||rt===8233}function _e(rt){if(rt<=65535)return String.fromCharCode(rt);var st=String.fromCharCode(Math.floor((rt-65536)/1024)+55296),ot=String.fromCharCode((rt-65536)%1024+56320);return st+ot}for(o=new Array(128),d=0;d<128;++d)o[d]=d>=97&&d<=122||d>=65&&d<=90||d===36||d===95;for(c=new Array(128),d=0;d<128;++d)c[d]=d>=97&&d<=122||d>=65&&d<=90||d>=48&&d<=57||d===36||d===95;function et(rt){return rt<128?o[rt]:e.NonAsciiIdentifierStart.test(_e(rt))}function tt(rt){return rt<128?c[rt]:e.NonAsciiIdentifierPart.test(_e(rt))}function nt(rt){return rt<128?o[rt]:a.NonAsciiIdentifierStart.test(_e(rt))}function it(rt){return rt<128?c[rt]:a.NonAsciiIdentifierPart.test(_e(rt))}code$1.exports={isDecimalDigit:_,isHexDigit:b,isOctalDigit:k,isWhiteSpace:$,isLineTerminator:j,isIdentifierStartES5:et,isIdentifierPartES5:tt,isIdentifierStartES6:nt,isIdentifierPartES6:it}})();var keyword$1={exports:{}};(function(){var a=code$1.exports;function e(et){switch(et){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function s(et,tt){return!tt&&et==="yield"?!1:o(et,tt)}function o(et,tt){if(tt&&e(et))return!0;switch(et.length){case 2:return et==="if"||et==="in"||et==="do";case 3:return et==="var"||et==="for"||et==="new"||et==="try";case 4:return et==="this"||et==="else"||et==="case"||et==="void"||et==="with"||et==="enum";case 5:return et==="while"||et==="break"||et==="catch"||et==="throw"||et==="const"||et==="yield"||et==="class"||et==="super";case 6:return et==="return"||et==="typeof"||et==="delete"||et==="switch"||et==="export"||et==="import";case 7:return et==="default"||et==="finally"||et==="extends";case 8:return et==="function"||et==="continue"||et==="debugger";case 10:return et==="instanceof";default:return!1}}function c(et,tt){return et==="null"||et==="true"||et==="false"||s(et,tt)}function d(et,tt){return et==="null"||et==="true"||et==="false"||o(et,tt)}function _(et){return et==="eval"||et==="arguments"}function b(et){var tt,nt,it;if(et.length===0||(it=et.charCodeAt(0),!a.isIdentifierStartES5(it)))return!1;for(tt=1,nt=et.length;tt=nt||(rt=et.charCodeAt(tt),!(56320<=rt&&rt<=57343)))return!1;it=k(it,rt)}if(!st(it))return!1;st=a.isIdentifierPartES6}return!0}function j(et,tt){return b(et)&&!c(et,tt)}function _e(et,tt){return $(et)&&!d(et,tt)}keyword$1.exports={isKeywordES5:s,isKeywordES6:o,isReservedWordES5:c,isReservedWordES6:d,isRestrictedWord:_,isIdentifierNameES5:b,isIdentifierNameES6:$,isIdentifierES5:j,isIdentifierES6:_e}})();(function(){utils.ast=ast.exports,utils.code=code$1.exports,utils.keyword=keyword$1.exports})();var coderep={};Object.defineProperty(coderep,"__esModule",{value:!0});var _createClass$4=function(){function a(e,s){for(var o=0;o":Precedence.Relational,"<=":Precedence.Relational,">=":Precedence.Relational,in:Precedence.Relational,instanceof:Precedence.Relational,"<<":Precedence.BitwiseSHIFT,">>":Precedence.BitwiseSHIFT,">>>":Precedence.BitwiseSHIFT,"+":Precedence.Additive,"-":Precedence.Additive,"*":Precedence.Multiplicative,"%":Precedence.Multiplicative,"/":Precedence.Multiplicative,"**":Precedence.Exponential};function getPrecedence(a){switch(a.type){case"ArrayExpression":case"FunctionExpression":case"ClassExpression":case"IdentifierExpression":case"AssignmentTargetIdentifier":case"NewTargetExpression":case"Super":case"LiteralBooleanExpression":case"LiteralNullExpression":case"LiteralNumericExpression":case"LiteralInfinityExpression":case"LiteralRegExpExpression":case"LiteralStringExpression":case"ObjectExpression":case"ThisExpression":case"SpreadElement":case"FunctionBody":return Precedence.Primary;case"ArrowExpression":case"AssignmentExpression":case"CompoundAssignmentExpression":case"YieldExpression":case"YieldGeneratorExpression":return Precedence.Assignment;case"ConditionalExpression":return Precedence.Conditional;case"ComputedMemberExpression":case"StaticMemberExpression":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":switch(a.object.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(a.object);default:return Precedence.Member}case"TemplateExpression":if(a.tag==null)return Precedence.Member;switch(a.tag.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(a.tag);default:return Precedence.Member}case"BinaryExpression":return BinaryPrecedence[a.operator];case"CallExpression":return Precedence.Call;case"NewExpression":return a.arguments.length===0?Precedence.New:Precedence.Member;case"UpdateExpression":return a.isPrefix?Precedence.Prefix:Precedence.Postfix;case"AwaitExpression":case"UnaryExpression":return Precedence.Prefix;default:throw new Error("unreachable: "+a.type)}}function escapeStringLiteral(a){for(var e="",s=0,o=0,c=0,d=a.length;cs?"'":'"';e+=b;for(var k=0;k1&&arguments[1]!==void 0?arguments[1]:!1;_classCallCheck$4(this,e);var c=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return c.token=s,c.isRegExp=o,c}return _createClass$4(e,[{key:"emit",value:function(o){o.put(this.token,this.isRegExp)}}]),e}(CodeRep);coderep.RawToken=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.token=s,o}return _createClass$4(e,[{key:"emit",value:function(o){o.putRaw(this.token)}}]),e}(CodeRep);coderep.NumberCodeRep=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.number=s,o}return _createClass$4(e,[{key:"emit",value:function(o){o.putNumber(this.number)}}]),e}(CodeRep);coderep.Paren=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.expr=s,o}return _createClass$4(e,[{key:"emit",value:function(o){o.put("("),this.expr.emit(o,!1),o.put(")")}},{key:"forEach",value:function(o){o(this),this.expr.forEach(o)}}]),e}(CodeRep);coderep.Bracket=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.expr=s,o}return _createClass$4(e,[{key:"emit",value:function(o){o.put("["),this.expr.emit(o,!1),o.put("]")}},{key:"forEach",value:function(o){o(this),this.expr.forEach(o)}}]),e}(CodeRep);coderep.Brace=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.expr=s,o}return _createClass$4(e,[{key:"emit",value:function(o){o.put("{"),this.expr.emit(o,!1),o.put("}")}},{key:"forEach",value:function(o){o(this),this.expr.forEach(o)}}]),e}(CodeRep);coderep.NoIn=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.expr=s,o}return _createClass$4(e,[{key:"emit",value:function(o){this.expr.emit(o,!0)}},{key:"forEach",value:function(o){o(this),this.expr.forEach(o)}}]),e}(CodeRep);coderep.ContainsIn=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.expr=s,o}return _createClass$4(e,[{key:"emit",value:function(o,c){c?(o.put("("),this.expr.emit(o,!1),o.put(")")):this.expr.emit(o,!1)}},{key:"forEach",value:function(o){o(this),this.expr.forEach(o)}}]),e}(CodeRep);coderep.Seq=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.children=s,o}return _createClass$4(e,[{key:"emit",value:function(o,c){this.children.forEach(function(d){return d.emit(o,c)})}},{key:"forEach",value:function(o){o(this),this.children.forEach(function(c){return c.forEach(o)})}}]),e}(CodeRep);coderep.Semi=function(a){_inherits$2(e,a);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,";"))}return e}(Token);coderep.CommaSep=function(a){_inherits$2(e,a);function e(s){_classCallCheck$4(this,e);var o=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.children=s,o}return _createClass$4(e,[{key:"emit",value:function(o,c){var d=!0;this.children.forEach(function(_){d?d=!1:o.put(","),_.emit(o,c)})}},{key:"forEach",value:function(o){o(this),this.children.forEach(function(c){return c.forEach(o)})}}]),e}(CodeRep);coderep.SemiOp=function(a){_inherits$2(e,a);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this))}return _createClass$4(e,[{key:"emit",value:function(o){o.putOptionalSemi()}}]),e}(CodeRep);Object.defineProperty(minimalCodegen,"__esModule",{value:!0});var _createClass$3=function(){function a(e,s){for(var o=0;o1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep$1.Token(a,e)}function paren(a){return new _coderep$1.Paren(a)}function brace(a){return new _coderep$1.Brace(a)}function bracket$1(a){return new _coderep$1.Bracket(a)}function noIn$1(a){return new _coderep$1.NoIn(a)}function markContainsIn$1(a){return a.containsIn?new _coderep$1.ContainsIn(a):a}function seq$1(){for(var a=arguments.length,e=Array(a),s=0;s0&&c[c.length-1]==null&&(d=seq$1(d,t$1(","))),bracket$1(d)}},{key:"reduceAwaitExpression",value:function(s,o){var c=o.expression;return seq$1(t$1("await"),p$1(s.expression,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,o){var c=o.expression;return seq$1(t$1("..."),p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,o){var c=o.expression;return seq$1(t$1("..."),getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,o){var c=o.binding,d=o.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1("="),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var o=t$1(s.name);return s.name==="let"&&(o.startsWithLet=!0),o}},{key:"reduceAssignmentTargetWithDefault",value:function(s,o){var c=o.binding,d=o.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,o){var c=o.binding,d=o.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,o){var c=o.left,d=o.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep$1.getPrecedence)(s.left)<(0,_coderep$1.getPrecedence)(s)||_e&&((0,_coderep$1.getPrecedence)(s.left)===(0,_coderep$1.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=paren(_),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep$1.getPrecedence)(s.right)<(0,_coderep$1.getPrecedence)(s)||!_e&&(0,_coderep$1.getPrecedence)(s.right)===(0,_coderep$1.getPrecedence)(s))&&(et=paren(et),tt=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,o){var c=o.binding,d=o.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var o=t$1(s.name);return s.name==="let"&&(o.startsWithLet=!0),o}},{key:"reduceArrayAssignmentTarget",value:function(s,o){var c=o.elements,d=o.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceArrayBinding",value:function(s,o){var c=o.elements,d=o.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceObjectAssignmentTarget",value:function(s,o){var c=o.properties,d=o.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,o){var c=o.properties,d=o.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,o){var c=o.binding,d=o.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,o){var c=o.name,d=o.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,o){var c=o.binding,d=o.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,o){var c=o.name,d=o.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBlock",value:function(s,o){var c=o.statements;return brace(seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceBlockStatement",value:function(s,o){var c=o.block;return c}},{key:"reduceBreakStatement",value:function(s){return seq$1(t$1("break"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceCallExpression",value:function(s,o){var c=o.callee,d=o.arguments,_=d.map(function(b,k){return p$1(s.arguments[k],_coderep$1.Precedence.Assignment,b)});return(0,_objectAssign2$1.default)(seq$1(p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c),paren(commaSep(_))),{startsWithCurly:c.startsWithCurly,startsWithLet:c.startsWithLet,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,o){var c=o.binding,d=o.body;return seq$1(t$1("catch"),paren(c),d)}},{key:"reduceClassDeclaration",value:function(s,o){var c=o.name,d=o.super,_=o.elements,b=seq$1(t$1("class"),s.name.name==="*default*"?empty$2():c);return d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b}},{key:"reduceClassExpression",value:function(s,o){var c=o.name,d=o.super,_=o.elements,b=t$1("class");return c!=null&&(b=seq$1(b,c)),d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,o){var c=o.method;return s.isStatic?seq$1(t$1("static"),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,o){var c=o.object,d=o.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,o){var c=o.object,d=o.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,o){var c=o.expression;return bracket$1(p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceConditionalExpression",value:function(s,o){var c=o.test,d=o.consequent,_=o.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2$1.default)(seq$1(p$1(s.test,_coderep$1.Precedence.LogicalOR,c),t$1("?"),p$1(s.consequent,_coderep$1.Precedence.Assignment,d),t$1(":"),p$1(s.alternate,_coderep$1.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq$1(t$1("continue"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceDataProperty",value:function(s,o){var c=o.name,d=o.expression;return seq$1(c,t$1(":"),getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(){return seq$1(t$1("debugger"),semiOp())}},{key:"reduceDoWhileStatement",value:function(s,o){var c=o.body,d=o.test;return seq$1(t$1("do"),c,t$1("while"),paren(d),semiOp())}},{key:"reduceEmptyStatement",value:function(){return semi()}},{key:"reduceExpressionStatement",value:function(s,o){var c=o.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq$1(d?paren(c):c,semiOp())}},{key:"reduceForInStatement",value:function(s,o){var c=o.left,d=o.right,_=o.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("in"),d)),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,o){var c=o.left,d=o.right,_=o.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,o){var c=o.init,d=o.test,_=o.update,b=o.body;return c&&(c.startsWithLetSquareBracket&&(c=paren(c)),c=noIn$1(markContainsIn$1(c))),(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c||empty$2(),semi(),d||empty$2(),semi(),_||empty$2())),b),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,o){var c=o.left,d=o.right,_=o.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),t$1("await"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,o){var c=o.directives,d=o.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),brace(seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d))))}},{key:"reduceFunctionDeclaration",value:function(s,o){var c=o.name,d=o.params,_=o.body;return seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),s.name.name==="*default*"?empty$2():c,d,_)}},{key:"reduceFunctionExpression",value:function(s,o){var c=o.name,d=o.params,_=o.body,b=seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),c||empty$2(),d,_);return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,o){var c=o.items,d=o.rest;return paren(commaSep(c.concat(d==null?[]:[seq$1(t$1("..."),d)])))}},{key:"reduceArrowExpression",value:function(s,o){var c=o.params,d=o.body;c=this.regenerateArrowParams(s.params,c);var _=!1;return s.body.type!=="FunctionBody"&&(d.startsWithCurly?d=paren(d):d.containsIn&&(_=!0)),(0,_objectAssign2$1.default)(seq$1(s.isAsync?t$1("async"):empty$2(),c,t$1("=>"),p$1(s.body,_coderep$1.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,o){var c=o.name,d=o.body;return seq$1(t$1("get"),c,paren(empty$2()),d)}},{key:"reduceIdentifierExpression",value:function(s){var o=t$1(s.name);return s.name==="let"&&(o.startsWithLet=!0),o}},{key:"reduceIfStatement",value:function(s,o){var c=o.test,d=o.consequent,_=o.alternate;return _&&d.endsWithMissingElse&&(d=brace(d)),(0,_objectAssign2$1.default)(seq$1(t$1("if"),paren(c),d,_?seq$1(t$1("else"),_):empty$2()),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,o){var c=o.defaultBinding,d=o.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(brace(commaSep(d))),_.length===0?seq$1(t$1("import"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp()):seq$1(t$1("import"),commaSep(_),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportNamespace",value:function(s,o){var c=o.defaultBinding,d=o.namespaceBinding;return seq$1(t$1("import"),c==null?empty$2():seq$1(c,t$1(",")),t$1("*"),t$1("as"),d,t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportSpecifier",value:function(s,o){var c=o.binding;return s.name==null?c:seq$1(t$1(s.name),t$1("as"),c)}},{key:"reduceExportAllFrom",value:function(s){return seq$1(t$1("export"),t$1("*"),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportFrom",value:function(s,o){var c=o.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportLocals",value:function(s,o){var c=o.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),semiOp())}},{key:"reduceExport",value:function(s,o){var c=o.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq$1(c,semiOp())}return seq$1(t$1("export"),c)}},{key:"reduceExportDefault",value:function(s,o){var c=o.body;switch(c=c.startsWithFunctionOrClass?paren(c):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq$1(t$1("export default"),c);default:return seq$1(t$1("export default"),p$1(s.body,_coderep$1.Precedence.Assignment,c),semiOp())}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?t$1(s.name):seq$1(t$1(s.name),t$1("as"),t$1(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,o){var c=o.name;return s.exportedName==null?c:seq$1(c,t$1("as"),t$1(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,o){var c=o.body;return(0,_objectAssign2$1.default)(seq$1(t$1(s.label+":"),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return t$1(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return t$1("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return t$1("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep$1.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return t$1("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,o){var c=o.name,d=o.params,_=o.body;return seq$1(s.isAsync?t$1("async"):empty$2(),s.isGenerator?t$1("*"):empty$2(),c,d,_)}},{key:"reduceModule",value:function(s,o){var c=o.directives,d=o.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceNewExpression",value:function(s,o){var c=o.callee,d=o.arguments,_=d.map(function(k,$){return p$1(s.arguments[$],_coderep$1.Precedence.Assignment,k)}),b=(0,_coderep$1.getPrecedence)(s.callee)===_coderep$1.Precedence.Call?paren(c):p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c);return seq$1(t$1("new"),b,d.length===0?empty$2():paren(commaSep(_)))}},{key:"reduceNewTargetExpression",value:function(){return t$1("new.target")}},{key:"reduceObjectExpression",value:function(s,o){var c=o.properties,d=brace(commaSep(c));return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,o){var c=o.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2$1.default)(seq$1(p$1(s.operand,_coderep$1.Precedence.New,c),t$1(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,o){var c=o.operand;return seq$1(t$1(s.operator),p$1(s.operand,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,o){var c=o.expression;return seq$1(t$1("return"),c||empty$2(),semiOp())}},{key:"reduceScript",value:function(s,o){var c=o.directives,d=o.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceSetter",value:function(s,o){var c=o.name,d=o.param,_=o.body;return seq$1(t$1("set"),c,paren(d),_)}},{key:"reduceShorthandProperty",value:function(s,o){var c=o.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,o){var c=o.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,o){var c=o.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils$1.keyword.isIdentifierNameES6(s.value))return t$1(s.value);var o=parseFloat(s.value);return o>=0&&o.toString()===s.value?new _coderep$1.NumberCodeRep(o):t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return t$1("super")}},{key:"reduceSwitchCase",value:function(s,o){var c=o.test,d=o.consequent;return seq$1(t$1("case"),c,t$1(":"),seq$1.apply(void 0,_toConsumableArray$2(d)))}},{key:"reduceSwitchDefault",value:function(s,o){var c=o.consequent;return seq$1(t$1("default:"),seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceSwitchStatement",value:function(s,o){var c=o.discriminant,d=o.cases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d))))}},{key:"reduceSwitchStatementWithDefault",value:function(s,o){var c=o.discriminant,d=o.preDefaultCases,_=o.defaultCase,b=o.postDefaultCases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d).concat([_],_toConsumableArray$2(b)))))}},{key:"reduceTemplateExpression",value:function(s,o){var c=o.tag,d=o.elements,_=s.tag==null?empty$2():p$1(s.tag,(0,_coderep$1.getPrecedence)(s),c);_=seq$1(_,t$1("`"));for(var b=0,k=s.elements.length;b0?t$1("}"):empty$2(),d[b],b1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep.Token(s,o)}},{key:"p",value:function(s,o,c){return(0,_coderep.getPrecedence)(s)0&&d[d.length-1]==null&&(_=seq(_,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA))),this.bracket(_,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL)}},{key:"reduceAwaitExpression",value:function(s,o){var c=o.expression;return seq(this.t("await"),this.sep(Sep.AWAIT),this.p(s.expression,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,o){var c=o.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.p(s.expression,_coderep.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,o){var c=o.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,o){var c=o.binding,d=o.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP("=")),this.t("="),this.sep(Sep.AFTER_ASSIGN_OP("=")),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var o=this.t(s.name);return s.name==="let"&&(o.startsWithLet=!0),o}},{key:"reduceAssignmentTargetWithDefault",value:function(s,o){var c=o.binding,d=o.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,o){var c=o.binding,d=o.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_ASSIGN_OP(s.operator)),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,o){var c=o.left,d=o.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep.getPrecedence)(s.left)<(0,_coderep.getPrecedence)(s)||_e&&((0,_coderep.getPrecedence)(s.left)===(0,_coderep.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=this.paren(_,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep.getPrecedence)(s.right)<(0,_coderep.getPrecedence)(s)||!_e&&(0,_coderep.getPrecedence)(s.right)===(0,_coderep.getPrecedence)(s))&&(et=this.paren(et,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),tt=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_BINOP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_BINOP(s.operator)),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,o){var c=o.binding,d=o.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var o=this.t(s.name);return s.name==="let"&&(o.startsWithLet=!0),o}},{key:"reduceArrayAssignmentTarget",value:function(s,o){var c=this,d=o.elements,_=o.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceArrayBinding",value:function(s,o){var c=this,d=o.elements,_=o.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceObjectAssignmentTarget",value:function(s,o){var c=o.properties,d=o.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,o){var c=o.properties,d=o.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,o){var c=o.binding,d=o.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,o){var c=o.name,d=o.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,o){var c=o.binding,d=o.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,o){var c=o.name,d=o.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBlock",value:function(s,o){var c=o.statements;return this.brace(seq.apply(void 0,_toConsumableArray$1(c)),s,Sep.BLOCK_BRACE_INITIAL,Sep.BLOCK_BRACE_FINAL,Sep.BLOCK_EMPTY)}},{key:"reduceBlockStatement",value:function(s,o){var c=o.block;return seq(c,this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceBreakStatement",value:function(s){return seq(this.t("break"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceCallExpression",value:function(s,o){var c=this,d=o.callee,_=o.arguments,b=_.map(function(k,$){return c.p(s.arguments[$],_coderep.Precedence.Assignment,k)});return(0,_objectAssign2.default)(seq(this.p(s.callee,(0,_coderep.getPrecedence)(s),d),this.sep(Sep.CALL),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.CALL_PAREN_BEFORE,Sep.CALL_PAREN_AFTER,Sep.CALL_PAREN_EMPTY)),{startsWithCurly:d.startsWithCurly,startsWithLet:d.startsWithLet,startsWithLetSquareBracket:d.startsWithLetSquareBracket,startsWithFunctionOrClass:d.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,o){var c=o.binding,d=o.body;return seq(this.t("catch"),this.sep(Sep.BEFORE_CATCH_BINDING),this.paren(c,Sep.CATCH_PAREN_BEFORE,Sep.CATCH_PAREN_AFTER),this.sep(Sep.AFTER_CATCH_BINDING),d)}},{key:"reduceClassDeclaration",value:function(s,o){var c=o.name,d=o.super,_=o.elements,b=seq(this.t("class"),s.name.name==="*default*"?empty$1():seq(this.sep(Sep.BEFORE_CLASS_NAME),c));return d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_DECLARATION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_BRACE_INITIAL,Sep.CLASS_BRACE_FINAL,Sep.CLASS_EMPTY),this.sep(Sep.AFTER_STATEMENT(s))),b}},{key:"reduceClassExpression",value:function(s,o){var c=o.name,d=o.super,_=o.elements,b=this.t("class");return c!=null&&(b=seq(b,this.sep(Sep.BEFORE_CLASS_NAME),c)),d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_EXPRESSION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_EXPRESSION_BRACE_INITIAL,Sep.CLASS_EXPRESSION_BRACE_FINAL,Sep.CLASS_EXPRESSION_BRACE_EMPTY)),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,o){var c=o.method;return c=seq(this.sep(Sep.BEFORE_CLASS_ELEMENT),c,this.sep(Sep.AFTER_CLASS_ELEMENT)),s.isStatic?seq(this.t("static"),this.sep(Sep.AFTER_STATIC),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,o){var c=o.object,d=o.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET),this.bracket(d,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,o){var c=o.object,d=o.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_EXPRESSION),this.bracket(d,Sep.COMPUTED_MEMBER_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,o){var c=o.expression;return this.bracket(this.p(s.expression,_coderep.Precedence.Assignment,c),Sep.COMPUTED_PROPERTY_BRACKET_INTIAL,Sep.COMPUTED_PROPERTY_BRACKET_FINAL)}},{key:"reduceConditionalExpression",value:function(s,o){var c=o.test,d=o.consequent,_=o.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2.default)(seq(this.p(s.test,_coderep.Precedence.LogicalOR,c),this.sep(Sep.BEFORE_TERNARY_QUESTION),this.t("?"),this.sep(Sep.AFTER_TERNARY_QUESTION),this.p(s.consequent,_coderep.Precedence.Assignment,d),this.sep(Sep.BEFORE_TERNARY_COLON),this.t(":"),this.sep(Sep.AFTER_TERNARY_COLON),this.p(s.alternate,_coderep.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq(this.t("continue"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDataProperty",value:function(s,o){var c=o.name,d=o.expression;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),this.getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(s){return seq(this.t("debugger"),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDoWhileStatement",value:function(s,o){var c=o.body,d=o.test;return seq(this.t("do"),this.sep(Sep.AFTER_DO),c,this.sep(Sep.BEFORE_DOWHILE_WHILE),this.t("while"),this.sep(Sep.AFTER_DOWHILE_WHILE),this.paren(d,Sep.DO_WHILE_TEST_PAREN_BEFORE,Sep.DO_WHILE_TEST_PAREN_AFTER),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceEmptyStatement",value:function(s){return seq(this.t(";"),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExpressionStatement",value:function(s,o){var c=o.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq(d?this.paren(c,Sep.EXPRESSION_STATEMENT_PAREN_BEFORE,Sep.EXPRESSION_STATEMENT_PAREN_AFTER):c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceForInStatement",value:function(s,o){var c=o.left,d=o.right,_=o.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FORIN_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_IN_LET_PAREN_BEFORE,Sep.FOR_IN_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FORIN_IN),this.t("in"),this.sep(Sep.AFTER_FORIN_FOR),d),Sep.FOR_IN_PAREN_BEFORE,Sep.FOR_IN_PAREN_AFTER),this.sep(Sep.BEFORE_FORIN_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,o){var c=o.left,d=o.right,_=o.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,o){var c=o.init,d=o.test,_=o.update,b=o.body;return c&&(c.startsWithLetSquareBracket&&(c=this.paren(c,Sep.FOR_LET_PAREN_BEFORE,Sep.FOR_LET_PAREN_AFTER)),c=noIn(markContainsIn(c))),(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOR_FOR),this.paren(seq(c?seq(this.sep(Sep.BEFORE_FOR_INIT),c,this.sep(Sep.AFTER_FOR_INIT)):this.sep(Sep.EMPTY_FOR_INIT),this.t(";"),d?seq(this.sep(Sep.BEFORE_FOR_TEST),d,this.sep(Sep.AFTER_FOR_TEST)):this.sep(Sep.EMPTY_FOR_TEST),this.t(";"),_?seq(this.sep(Sep.BEFORE_FOR_UPDATE),_,this.sep(Sep.AFTER_FOR_UPDATE)):this.sep(Sep.EMPTY_FOR_UPDATE))),this.sep(Sep.BEFORE_FOR_BODY),b,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,o){var c=o.left,d=o.right,_=o.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.t("await"),this.sep(Sep.AFTER_FORAWAIT_AWAIT),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,o){var c=o.directives,d=o.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_FUNCTION_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceFunctionDeclaration",value:function(s,o){var c=o.name,d=o.params,_=o.body;return seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),s.name.name==="*default*"?empty$1():c,this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_DECLARATION_BODY),this.brace(_,s,Sep.FUNCTION_BRACE_INITIAL,Sep.FUNCTION_BRACE_FINAL,Sep.FUNCTION_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceFunctionExpression",value:function(s,o){var c=o.name,d=o.params,_=o.body,b=seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),c||empty$1(),this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_EXPRESSION_BODY),this.brace(_,s,Sep.FUNCTION_EXPRESSION_BRACE_INITIAL,Sep.FUNCTION_EXPRESSION_BRACE_FINAL,Sep.FUNCTION_EXPRESSION_EMPTY));return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,o){var c=o.items,d=o.rest;return this.commaSep(c.concat(d==null?[]:[seq(this.t("..."),this.sep(Sep.REST),d)]),Sep.PARAMETER_BEFORE_COMMA,Sep.PARAMETER_AFTER_COMMA)}},{key:"reduceArrowExpression",value:function(s,o){var c=o.params,d=o.body;(s.params.rest!=null||s.params.items.length!==1||s.params.items[0].type!=="BindingIdentifier")&&(c=this.paren(c,Sep.ARROW_PARAMETERS_PAREN_BEFORE,Sep.ARROW_PARAMETERS_PAREN_AFTER,Sep.ARROW_PARAMETERS_PAREN_EMPTY));var _=!1;return s.body.type==="FunctionBody"?d=this.brace(d,s,Sep.ARROW_BRACE_INITIAL,Sep.ARROW_BRACE_FINAL,Sep.ARROW_BRACE_EMPTY):d.startsWithCurly?d=this.paren(d,Sep.ARROW_BODY_PAREN_BEFORE,Sep.ARROW_BODY_PAREN_AFTER):d.containsIn&&(_=!0),(0,_objectAssign2.default)(seq(s.isAsync?seq(this.t("async"),this.sep(Sep.BEFORE_ARROW_ASYNC_PARAMS)):empty$1(),c,this.sep(Sep.BEFORE_ARROW),this.t("=>"),this.sep(Sep.AFTER_ARROW),this.p(s.body,_coderep.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,o){var c=o.name,d=o.body;return seq(this.t("get"),this.sep(Sep.AFTER_GET),c,this.sep(Sep.BEFORE_GET_PARAMS),this.paren(empty$1(),null,null,Sep.GETTER_PARAMS),this.sep(Sep.BEFORE_GET_BODY),this.brace(d,s,Sep.GET_BRACE_INTIAL,Sep.GET_BRACE_FINAL,Sep.GET_BRACE_EMPTY))}},{key:"reduceIdentifierExpression",value:function(s){var o=this.t(s.name);return s.name==="let"&&(o.startsWithLet=!0),o}},{key:"reduceIfStatement",value:function(s,o){var c=o.test,d=o.consequent,_=o.alternate;return _&&d.endsWithMissingElse&&(d=this.brace(d,s,Sep.MISSING_ELSE_INTIIAL,Sep.MISSING_ELSE_FINAL,Sep.MISSING_ELSE_EMPTY)),(0,_objectAssign2.default)(seq(this.t("if"),this.sep(Sep.AFTER_IF),this.paren(c,Sep.IF_PAREN_BEFORE,Sep.IF_PAREN_AFTER),this.sep(Sep.AFTER_IF_TEST),d,_?seq(this.sep(Sep.BEFORE_ELSE),this.t("else"),this.sep(Sep.AFTER_ELSE),_):empty$1(),this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,o){var c=o.defaultBinding,d=o.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(this.brace(this.commaSep(d,Sep.NAMED_IMPORT_BEFORE_COMMA,Sep.NAMED_IMPORT_AFTER_COMMA),s,Sep.IMPORT_BRACE_INTIAL,Sep.IMPORT_BRACE_FINAL,Sep.IMPORT_BRACE_EMPTY)),_.length===0?seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_MODULE),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s))):seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_BINDINGS),this.commaSep(_,Sep.IMPORT_BEFORE_COMMA,Sep.IMPORT_AFTER_COMMA),this.sep(Sep.AFTER_IMPORT_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportNamespace",value:function(s,o){var c=o.defaultBinding,d=o.namespaceBinding;return seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_NAMESPACE),c==null?empty$1():seq(c,this.sep(Sep.IMPORT_BEFORE_COMMA),this.t(","),this.sep(Sep.IMPORT_AFTER_COMMA)),this.sep(Sep.BEFORE_IMPORT_STAR),this.t("*"),this.sep(Sep.AFTER_IMPORT_STAR),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),d,this.sep(Sep.AFTER_NAMESPACE_BINDING),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportSpecifier",value:function(s,o){var c=o.binding;return s.name==null?c:seq(this.t(s.name),this.sep(Sep.BEFORE_IMPORT_AS),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),c)}},{key:"reduceExportAllFrom",value:function(s){return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_STAR),this.t("*"),this.sep(Sep.AFTER_EXPORT_STAR),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportFrom",value:function(s,o){var c=o.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_FROM_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportLocals",value:function(s,o){var c=o.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_LOCAL_BINDINGS),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExport",value:function(s,o){var c=o.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq(c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}return seq(this.t("export"),this.sep(Sep.AFTER_EXPORT),c)}},{key:"reduceExportDefault",value:function(s,o){var c=o.body;switch(c=c.startsWithFunctionOrClass?this.paren(c,Sep.EXPORT_PAREN_BEFORE,Sep.EXPORT_PAREN_AFTER):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),c);default:return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),this.p(s.body,_coderep.Precedence.Assignment,c),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?this.t(s.name):seq(this.t(s.name),this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,o){var c=o.name;return s.exportedName==null?c:seq(c,this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,o){var c=o.body;return(0,_objectAssign2.default)(seq(this.t(s.label),this.sep(Sep.BEFORE_LABEL_COLON),this.t(":"),this.sep(Sep.AFTER_LABEL_COLON),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return this.t(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return this.t("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return this.t("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return this.t("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,o){var c=o.name,d=o.params,_=o.body;return seq(s.isAsync?seq(this.t("async"),this.sep(Sep.AFTER_METHOD_ASYNC)):empty$1(),s.isGenerator?seq(this.t("*"),this.sep(Sep.AFTER_METHOD_GENERATOR_STAR)):empty$1(),c,this.sep(Sep.AFTER_METHOD_NAME),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_METHOD_BODY),this.brace(_,s,Sep.METHOD_BRACE_INTIAL,Sep.METHOD_BRACE_FINAL,Sep.METHOD_BRACE_EMPTY))}},{key:"reduceModule",value:function(s,o){var c=o.directives,d=o.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_MODULE_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceNewExpression",value:function(s,o){var c=this,d=o.callee,_=o.arguments,b=_.map(function($,j){return c.p(s.arguments[j],_coderep.Precedence.Assignment,$)}),k=(0,_coderep.getPrecedence)(s.callee)===_coderep.Precedence.Call?this.paren(d,Sep.NEW_CALLEE_PAREN_BEFORE,Sep.NEW_CALLEE_PAREN_AFTER):this.p(s.callee,(0,_coderep.getPrecedence)(s),d);return seq(this.t("new"),this.sep(Sep.AFTER_NEW),k,_.length===0?this.sep(Sep.EMPTY_NEW_CALL):seq(this.sep(Sep.BEFORE_NEW_ARGS),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.NEW_PAREN_BEFORE,Sep.NEW_PAREN_AFTER,Sep.NEW_PAREN_EMPTY)))}},{key:"reduceNewTargetExpression",value:function(){return seq(this.t("new"),this.sep(Sep.NEW_TARGET_BEFORE_DOT),this.t("."),this.sep(Sep.NEW_TARGET_AFTER_DOT),this.t("target"))}},{key:"reduceObjectExpression",value:function(s,o){var c=o.properties,d=this.brace(this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,o){var c=o.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2.default)(seq(this.p(s.operand,_coderep.Precedence.New,c),this.sep(Sep.BEFORE_POSTFIX(s.operator)),this.t(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,o){var c=o.operand;return seq(this.t(s.operator),this.sep(Sep.UNARY(s.operator)),this.p(s.operand,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,o){var c=o.expression;return seq(this.t("return"),c?seq(this.sep(Sep.RETURN),c):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceScript",value:function(s,o){var c=o.directives,d=o.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_SCRIPT_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceSetter",value:function(s,o){var c=o.name,d=o.param,_=o.body;return seq(this.t("set"),this.sep(Sep.AFTER_SET),c,this.sep(Sep.BEFORE_SET_PARAMS),this.paren(d,Sep.SETTER_PARAM_BEFORE,Sep.SETTER_PARAM_AFTER),this.sep(Sep.BEFORE_SET_BODY),this.brace(_,s,Sep.SET_BRACE_INTIIAL,Sep.SET_BRACE_FINAL,Sep.SET_BRACE_EMPTY))}},{key:"reduceShorthandProperty",value:function(s,o){var c=o.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,o){var c=o.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,o){var c=o.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils.keyword.isIdentifierNameES6(s.value))return this.t(s.value);var o=parseFloat(s.value);return o>=0&&o.toString()===s.value?new _coderep.NumberCodeRep(o):this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return this.t("super")}},{key:"reduceSwitchCase",value:function(s,o){var c=o.test,d=o.consequent;return seq(this.t("case"),this.sep(Sep.BEFORE_CASE_TEST),c,this.sep(Sep.AFTER_CASE_TEST),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(d)),this.sep(Sep.AFTER_CASE_BODY))}},{key:"reduceSwitchDefault",value:function(s,o){var c=o.consequent;return seq(this.t("default"),this.sep(Sep.DEFAULT),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(c)),this.sep(Sep.AFTER_DEFAULT_BODY))}},{key:"reduceSwitchStatement",value:function(s,o){var c=o.discriminant,d=o.cases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d)),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceSwitchStatementWithDefault",value:function(s,o){var c=o.discriminant,d=o.preDefaultCases,_=o.defaultCase,b=o.postDefaultCases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d).concat([_],_toConsumableArray$1(b))),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceTemplateExpression",value:function(s,o){var c=o.tag,d=o.elements,_=s.tag==null?empty$1():seq(this.p(s.tag,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.TEMPLATE_TAG));_=seq(_,this.t("`"));for(var b=0,k=s.elements.length;b0&&($+="}"),$+=s.elements[b].rawValue,b=1e3&&a%10===0?(e=a.toString(10),/[eE]/.test(e)?e.replace(/[eE]\+/,"e"):a.toString(10).replace(/0{3,}$/,function(s){return"e"+s.length})):a%1===0?a>1e15&&a<1e20?"0x"+a.toString(16).toUpperCase():a.toString(10).replace(/[eE]\+/,"e"):a.toString(10).replace(/^0\./,".").replace(/[eE]\+/,"e")}tokenStream.TokenStream=function(){function a(){_classCallCheck$1(this,a),this.result="",this.lastNumber=null,this.lastCodePoint=null,this.lastTokenStr="",this.optionalSemi=!1,this.previousWasRegExp=!1,this.partialHtmlComment=!1}return _createClass$1(a,[{key:"putNumber",value:function(s){var o=renderNumber(s);this.put(o),this.lastNumber=o}},{key:"putOptionalSemi",value:function(){this.optionalSemi=!0}},{key:"putRaw",value:function(s){this.result+=s,this.lastTokenStr=s}},{key:"put",value:function(s,o){if(this.optionalSemi&&(this.optionalSemi=!1,s!=="}"&&(this.result+=";",this.lastCodePoint=";",this.previousWasRegExp=!1)),this.lastNumber!==null&&s.length===1&&s==="."){this.result+=needsDoubleDot(this.lastNumber)?"..":".",this.lastNumber=null,this.lastCodePoint=".";return}var c=[].concat(_toConsumableArray(s)).length;if(c>0){this.lastNumber=null;var d=String.fromCodePoint(s.codePointAt(0)),_=this.lastCodePoint;this.lastCodePoint=String.fromCodePoint(s.codePointAt(c-1));var b=this.previousWasRegExp;this.previousWasRegExp=o,_&&((_==="+"||_==="-")&&_===d||isIdentifierPartES6(_)&&isIdentifierPartES6(d)||_==="/"&&d==="/"||b&&d==="i"||this.partialHtmlComment&&s.startsWith("--"))&&(this.result+=" ")}this.partialHtmlComment=this.lastTokenStr.endsWith("<")&&s==="!",this.result+=s,this.lastTokenStr=s}}]),a}();Object.defineProperty(withLocation,"__esModule",{value:!0});var _createClass=function(){function a(e,s){for(var o=0;o1?c-1:0),_=1;_1?c-1:0),_=1;_1?c-1:0),_=1;_1&&arguments[1]!==void 0?arguments[1]:new _minimalCodegen2.default,s=new TokenStreamWithLocation,o=(0,_shiftReducer.reduce)(addLocationToReducer(e),a);return o.emit(s),{source:s.result,locations:s.locations}}(function(a){Object.defineProperty(a,"__esModule",{value:!0}),a.codeGenWithLocation=a.SemiOp=a.CommaSep=a.Semi=a.Seq=a.ContainsIn=a.NoIn=a.Brace=a.Bracket=a.Paren=a.NumberCodeRep=a.Token=a.Empty=a.CodeRep=a.escapeStringLiteral=a.getPrecedence=a.Precedence=a.Sep=a.FormattedCodeGen=a.ExtensibleCodeGen=a.MinimalCodeGen=void 0,a.default=j;var e=minimalCodegen;Object.defineProperty(a,"MinimalCodeGen",{enumerable:!0,get:function(){return $(e).default}});var s=formattedCodegen;Object.defineProperty(a,"ExtensibleCodeGen",{enumerable:!0,get:function(){return s.ExtensibleCodeGen}}),Object.defineProperty(a,"FormattedCodeGen",{enumerable:!0,get:function(){return s.FormattedCodeGen}}),Object.defineProperty(a,"Sep",{enumerable:!0,get:function(){return s.Sep}});var o=coderep;Object.defineProperty(a,"Precedence",{enumerable:!0,get:function(){return o.Precedence}}),Object.defineProperty(a,"getPrecedence",{enumerable:!0,get:function(){return o.getPrecedence}}),Object.defineProperty(a,"escapeStringLiteral",{enumerable:!0,get:function(){return o.escapeStringLiteral}}),Object.defineProperty(a,"CodeRep",{enumerable:!0,get:function(){return o.CodeRep}}),Object.defineProperty(a,"Empty",{enumerable:!0,get:function(){return o.Empty}}),Object.defineProperty(a,"Token",{enumerable:!0,get:function(){return o.Token}}),Object.defineProperty(a,"NumberCodeRep",{enumerable:!0,get:function(){return o.NumberCodeRep}}),Object.defineProperty(a,"Paren",{enumerable:!0,get:function(){return o.Paren}}),Object.defineProperty(a,"Bracket",{enumerable:!0,get:function(){return o.Bracket}}),Object.defineProperty(a,"Brace",{enumerable:!0,get:function(){return o.Brace}}),Object.defineProperty(a,"NoIn",{enumerable:!0,get:function(){return o.NoIn}}),Object.defineProperty(a,"ContainsIn",{enumerable:!0,get:function(){return o.ContainsIn}}),Object.defineProperty(a,"Seq",{enumerable:!0,get:function(){return o.Seq}}),Object.defineProperty(a,"Semi",{enumerable:!0,get:function(){return o.Semi}}),Object.defineProperty(a,"CommaSep",{enumerable:!0,get:function(){return o.CommaSep}}),Object.defineProperty(a,"SemiOp",{enumerable:!0,get:function(){return o.SemiOp}});var c=withLocation;Object.defineProperty(a,"codeGenWithLocation",{enumerable:!0,get:function(){return $(c).default}});var d=dist$4,_=$(d),b=tokenStream,k=$(e);function $(_e){return _e&&_e.__esModule?_e:{default:_e}}function j(_e){var et=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new k.default,tt=new b.TokenStream,nt=(0,_.default)(et,_e);return nt.emit(tt),tt.result}})(dist);var shiftCodegen=getDefaultExportFromCjs(dist);function bjorklund(a,e){for(var s=[],o=[],c=[e],d=a-e,_=0,b=function(k){if(k==-1)s.push(0);else if(k==-2)s.push(1);else{for(var $=0;$1;)o.push(Math.floor(d/c[_])),c.push(d%c[_]),d=c[_],_++;return o.push(d),b(_),s.reverse()}var bjork=function(a,e){return a>e?bjorklund(a,e):bjorklund(e,a)};const euclid=(a,e,s=0)=>{const o=bjork(e,a);return s?rotate(o,-s):o};Pattern$4.prototype.euclid=function(a,e,s=0){return this.struct(euclid(a,e,s))};Pattern$4.prototype.euclidLegato=function(a,e,s=0){const o=euclid(a,e,s),c=o.indexOf(1),d=rotate(o,c).join("").split("1").slice(1).map(_=>[_.length+1,!0]);return this.struct(timeCat$1(...d)).late(fraction(c).div(e))};function steady(a){return new Pattern$4(e=>[new Hap(void 0,e.span,a)])}const signal=a=>{const e=s=>[new Hap(void 0,s.span,a(s.span.midpoint()))];return new Pattern$4(e)},isaw=signal(a=>1-a%1),isaw2=isaw._toBipolar(),saw=signal(a=>a%1),saw2=saw._toBipolar(),sine2=signal(a=>Math.sin(Math.PI*2*a)),sine=sine2._fromBipolar(),cosine=sine._early(fraction(1).div(4)),cosine2=sine2._early(fraction(1).div(4)),square=signal(a=>Math.floor(a*2%2)),square2=square._toBipolar(),tri=fastcat(isaw,saw),tri2=fastcat(isaw2,saw2),time=signal(id$1),xorwise=a=>{const e=a<<13^a,s=e>>17^e;return s<<5^s},_frac=a=>a-Math.trunc(a),timeToIntSeed=a=>xorwise(Math.trunc(_frac(a/300)*536870912)),intSeedToRand=a=>a%536870912/536870912,timeToRand=a=>Math.abs(intSeedToRand(timeToIntSeed(a))),rand=signal(timeToRand),_brandBy=a=>rand.fmap(e=>ereify$1(a).fmap(_brandBy).innerJoin(),brand=_brandBy(.5),_irand=a=>rand.fmap(e=>Math.trunc(e*a)),irand=a=>reify$1(a).fmap(_irand).innerJoin(),chooseWith=(a,e)=>(e=e.map(reify$1),e.length==0?silence:a.range(0,e.length).fmap(s=>e[Math.floor(s)]).outerJoin()),choose=(...a)=>chooseWith(rand,a),_wchooseWith=function(a,...e){const s=e.map(b=>reify$1(b[0])),o=[];let c=0;for(const b of e)c+=b[1],o.push(c);const d=c,_=function(b){const k=b*d;return s[o.findIndex($=>$>k,o)]};return a.fmap(_)},wchooseWith=(...a)=>_wchooseWith(...a).outerJoin(),wchoose=(...a)=>wchooseWith(rand,...a),wchooseCycles=(...a)=>_wchooseWith(rand,...a).innerJoin(),perlinWith=a=>{const e=a.fmap(Math.floor),s=a.fmap(d=>Math.floor(d)+1),o=d=>6*d**5-15*d**4+10*d**3,c=d=>_=>b=>_+o(d)*(b-_);return a.sub(e).fmap(c).appBoth(e.fmap(timeToRand)).appBoth(s.fmap(timeToRand))},perlin=perlinWith(time);Pattern$4.prototype._degradeByWith=function(a,e){return this.fmap(s=>o=>s).appLeft(a._filterValues(s=>s>e))};Pattern$4.prototype._degradeBy=function(a){return this._degradeByWith(rand,a)};Pattern$4.prototype.degrade=function(){return this._degradeBy(.5)};Pattern$4.prototype._undegradeBy=function(a){return this._degradeByWith(rand.fmap(e=>1-e),a)};Pattern$4.prototype.undegrade=function(){return this._undegradeBy(.5)};Pattern$4.prototype._sometimesBy=function(a,e){return stack(this._degradeBy(a),e(this._undegradeBy(1-a)))};Pattern$4.prototype.sometimesBy=function(a,e){const s=this;return reify$1(a).fmap(o=>s._sometimesBy(o,e)).innerJoin()};Pattern$4.prototype._sometimesByPre=function(a,e){return stack(this._degradeBy(a),e(this).undegradeBy(1-a))};Pattern$4.prototype.sometimesByPre=function(a,e){const s=this;return reify$1(a).fmap(o=>s._sometimesByPre(o,e)).innerJoin()};Pattern$4.prototype.sometimes=function(a){return this._sometimesBy(.5,a)};Pattern$4.prototype.sometimesPre=function(a){return this._sometimesByPre(.5,a)};Pattern$4.prototype._someCyclesBy=function(a,e){return stack(this._degradeByWith(rand._segment(1),a),e(this._degradeByWith(rand.fmap(s=>1-s)._segment(1),1-a)))};Pattern$4.prototype.someCyclesBy=function(a,e){const s=this;return reify$1(a).fmap(o=>s._someCyclesBy(o,e)).innerJoin()};Pattern$4.prototype.someCycles=function(a){return this._someCyclesBy(.5,a)};Pattern$4.prototype.often=function(a){return this.sometimesBy(.75,a)};Pattern$4.prototype.rarely=function(a){return this.sometimesBy(.25,a)};Pattern$4.prototype.almostNever=function(a){return this.sometimesBy(.1,a)};Pattern$4.prototype.almostAlways=function(a){return this.sometimesBy(.9,a)};Pattern$4.prototype.never=function(a){return this};Pattern$4.prototype.always=function(a){return a(this)};Pattern$4.prototype.patternified.push("degradeBy","undegradeBy");let synth$1;try{synth$1=window==null?void 0:window.speechSynthesis}catch{console.warn("cannot use window: not in browser?")}let allVoices=synth$1==null?void 0:synth$1.getVoices();function speak(a,e,s){synth$1.cancel();const o=new SpeechSynthesisUtterance(a);o.lang=e,allVoices=synth$1.getVoices();const c=allVoices.filter(d=>d.lang.includes(e));typeof s=="number"?o.voice=c[s%c.length]:typeof s=="string"&&(o.voice=c.find(d=>d.name===d)),speechSynthesis.speak(o)}Pattern$4.prototype._speak=function(a,e){return this._withHap(s=>{const o=(c,d)=>{speak(d.value,a,e)};return s.setContext(wt(_t({},s.context),{onTrigger:o}))})};Pattern$4.prototype.speak=function(a,e){return patternify2(Pattern$4.prototype._speak)(reify(a),reify(e),this)};var gist=route=>fetch(`https://gist.githubusercontent.com/${route}?cachebust=${Date.now()}`).then(a=>a.text()).then(code=>eval(code)),gist$1=Object.freeze(Object.defineProperty({__proto__:null,default:gist},Symbol.toStringTag,{value:"Module"})),strudel=Object.freeze(Object.defineProperty({__proto__:null,Fraction:fraction,gist:gist$1,Hap,Pattern:Pattern$4,silence,pure,isPattern:isPattern$1,reify:reify$1,stack,slowcat,slowcatPrime,fastcat,cat,timeCat:timeCat$1,sequence,seq:seq$2,polymeterSteps,polymeter,pm,polyrhythm,pr,add:add$1,chunk,chunkBack,div,early,echo,every,fast,inv,invert,iter,iterBack,jux,juxBy,late,linger,mask,mul,off,ply,range:range$2,range2,rev,slow,struct:struct$1,sub,superimpose,set,when,makeComposable,patternify2,patternify3,patternify4,steady,signal,isaw,isaw2,saw,saw2,sine2,sine,cosine,cosine2,square,square2,tri,tri2,time,rand,_brandBy,brandBy,brand,_irand,irand,chooseWith,choose,wchoose,wchooseCycles,perlinWith,perlin,State:State$1,TimeSpan:TimeSpan$1,isNote:isNote$4,tokenizeNote,toMidi,fromMidi,mod,getPlayableNoteValue,getFrequency,rotate,pipe,compose,removeUndefineds,flatten:flatten$1,id:id$1,constant,listRange,curry},Symbol.toStringTag,{value:"Module"}));const{replace}=estraverse,codegen=shiftCodegen.default||shiftCodegen,{Pattern:Pattern$3}=strudel,isNote$3=a=>/^[a-gC-G][bs]?[0-9]$/.test(a);var shapeshifter=a=>{const{code:e,addReturn:s}=wrapAsync(a),o=dist$7.parseScriptWithLocation(e),c=[],d=[],_=replace(o.tree,{enter(k,$){var tt,nt,it;if(d.push($),d.some(rt=>c.includes(rt)))return k;if(isBackTickString(k))return minifyWithLocation(k,k,o.locations,c);if(((tt=k.directives)==null?void 0:tt.length)===1&&!((nt=k.statements)!=null&&nt.length)){const rt=new LiteralStringExpression_1({value:k.directives[0].rawValue}),st=minifyWithLocation(rt,k.directives[0],o.locations,c);return wt(_t({},k),{directives:[],statements:[st]})}if(isStringWithDoubleQuotes(k,o.locations,e))return minifyWithLocation(k,k,o.locations,c);const _e={"*":"fast","/":"slow","&":"stack","&&":"append"};if(k.type==="BinaryExpression"&&_e[k.operator]&&["LiteralNumericExpression","LiteralStringExpression","IdentifierExpression"].includes((it=k.right)==null?void 0:it.type)&&canBeOverloaded(k.left)){let rt=k.left;return k.left.type==="IdentifierExpression"&&(rt=wrapFunction("reify",k.left)),new CallExpression_1({callee:new StaticMemberExpression_1({property:_e[k.operator],object:wrapFunction("reify",rt)}),arguments:[k.right]})}const et=isPatternArg(d)||hasModifierCall($);if(k.type==="CallExpression"&&k.callee.name==="pure"){const rt=k.arguments[0];return reifyWithLocation(rt,k.arguments[0],o.locations,c)}if(k.type==="IdentifierExpression"){if(isNote$3(k.name)){const rt=k.name[1]==="s"?k.name.replace("s","#"):k.name;return et?reifyWithLocation(new LiteralStringExpression_1({value:rt}),k,o.locations,c):new LiteralStringExpression_1({value:rt})}if(k.name==="r")return new IdentifierExpression_1({name:"silence"})}return["LiteralStringExpression"].includes(k.type)&&et?reifyWithLocation(k,k,o.locations,c):addMiniNotationLocations(k,o.locations,c)},leave(){d.pop()}});return s(_),codegen(_)};function wrapAsync(a){return a=`(async () => { -${a} -})()`,{code:a,addReturn:s=>{const o=s.statements[0].expression.callee.body;o.statements=o.statements.slice(0,-1).concat([new ReturnStatement_1({expression:o.statements.slice(-1)[0]})])}}}function addMiniNotationLocations(a,e,s){const o=["mini","m"];if(a.type==="CallExpression"&&o.includes(a.callee.name)){if(a.arguments.length>1)return console.warn("multi arg mini locations not supported yet..."),a;const c=a.arguments[0];return minifyWithLocation(c,c,e,s)}return a.type==="StaticMemberExpression"&&o.includes(a.property)?minifyWithLocation(a.object,a,e,s):a}function wrapFunction(a,...e){return new CallExpression_1({callee:new IdentifierExpression_1({name:a}),arguments:e})}function isBackTickString(a){return a.type==="TemplateExpression"&&a.elements.length===1}function isStringWithDoubleQuotes(a,e,s){if(a.type!=="LiteralStringExpression")return!1;const o=e.get(a);return s.slice(o.start.offset,o.end.offset)[0]==='"'}function isPatternArg(a){if(!a.length)return!1;const e=a.slice(0,-1),s=a[a.length-1];return isPatternFactory(s)?!0:(s==null?void 0:s.type)==="ArrayExpression"?isPatternArg(e):!1}function hasModifierCall(a){return(a==null?void 0:a.type)==="StaticMemberExpression"&&Object.keys(Pattern$3.prototype.composable).includes(a.property)}const factories=Object.keys(Pattern$3.prototype.factories).concat(["mini"]);function isPatternFactory(a){return(a==null?void 0:a.type)==="CallExpression"&&factories.includes(a.callee.name)}function canBeOverloaded(a){return a.type==="IdentifierExpression"&&isNote$3(a.name)||isPatternFactory(a)}function reifyWithLocation(a,e,s,o){const c=getLocationArguments(e,s),d=new CallExpression_1({callee:new StaticMemberExpression_1({object:wrapFunction("reify",a),property:"withLocation"}),arguments:c});return o.push(d),d}function minifyWithLocation(a,e,s,o){const c=getLocationArguments(e,s),d=wrapFunction("mini",a),_=new CallExpression_1({callee:new StaticMemberExpression_1({object:d,property:"withMiniLocation"}),arguments:c});return o.push(_),_}function getLocationArguments(a,e){const s=e.get(a),o=-1;return[new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.start.line+o}),new LiteralNumericExpression_1({value:s.start.column}),new LiteralNumericExpression_1({value:s.start.offset})]}),new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.end.line+o}),new LiteralNumericExpression_1({value:s.end.column}),new LiteralNumericExpression_1({value:s.end.offset})]})]}const{isPattern,Pattern:Pattern$2}=strudel;let scoped=!1;const evalScope=async(...a)=>{scoped&&console.warn("@strudel.cycles/eval evalScope was called more than once."),scoped=!0;const e=await Promise.allSettled(a),s=e.filter(o=>o.status==="fulfilled").map(o=>o.value);e.forEach((o,c)=>{o.status==="rejected"&&console.warn(`evalScope: module with index ${c} could not be loaded:`,o.reason)}),Object.assign(globalThis,...s,Pattern$2.prototype.bootstrap())};function safeEval(a){return Function('"use strict";return ('+a+")")()}const evaluate=async a=>{scoped||await evalScope();const e=shapeshifter(a);let s=await safeEval(e);if(!isPattern(s)){console.log("evaluated",s);const o=`got "${typeof s}" instead of pattern`;throw new Error(o+(typeof s=="function"?", did you forget to call a function?":"."))}return{mode:"javascript",pattern:s}};let extend="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(a=>a?parseInt(a,36):1);for(let a=1;aa)return extend[e-1]<=a;return!1}function isRegionalIndicator(a){return a>=127462&&a<=127487}const ZWJ=8205;function findClusterBreak(a,e,s=!0,o=!0){return(s?nextClusterBreak:prevClusterBreak)(a,e,o)}function nextClusterBreak(a,e,s){if(e==a.length)return e;e&&surrogateLow(a.charCodeAt(e))&&surrogateHigh(a.charCodeAt(e-1))&&e--;let o=codePointAt(a,e);for(e+=codePointSize(o);e=0&&isRegionalIndicator(codePointAt(a,_));)d++,_-=2;if(d%2==0)break;e+=2}else break}return e}function prevClusterBreak(a,e,s){for(;e>0;){let o=nextClusterBreak(a,e-2,s);if(o=56320&&a<57344}function surrogateHigh(a){return a>=55296&&a<56320}function codePointAt(a,e){let s=a.charCodeAt(e);if(!surrogateHigh(s)||e+1==a.length)return s;let o=a.charCodeAt(e+1);return surrogateLow(o)?(s-55296<<10)+(o-56320)+65536:s}function fromCodePoint(a){return a<=65535?String.fromCharCode(a):(a-=65536,String.fromCharCode((a>>10)+55296,(a&1023)+56320))}function codePointSize(a){return a<65536?1:2}function countColumn(a,e,s=a.length){let o=0;for(let c=0;c=e)return c;if(c==a.length)break;d+=a.charCodeAt(c)==9?s-d%s:1,c=findClusterBreak(a,c)}return o===!0?-1:a.length}class Text{constructor(){}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,s,o){let c=[];return this.decompose(0,e,c,2),o.length&&o.decompose(0,o.length,c,3),this.decompose(s,this.length,c,1),TextNode.from(c,this.length-(s-e)+o.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,s=this.length){let o=[];return this.decompose(e,s,o,0),TextNode.from(o,s-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let s=this.scanIdentical(e,1),o=this.length-this.scanIdentical(e,-1),c=new RawTextCursor(this),d=new RawTextCursor(e);for(let _=s,b=s;;){if(c.next(_),d.next(_),_=0,c.lineBreak!=d.lineBreak||c.done!=d.done||c.value!=d.value)return!1;if(b+=c.value.length,c.done||b>=o)return!0}}iter(e=1){return new RawTextCursor(this,e)}iterRange(e,s=this.length){return new PartialTextCursor(this,e,s)}iterLines(e,s){let o;if(e==null)o=this.iter();else{s==null&&(s=this.lines+1);let c=this.line(e).from;o=this.iterRange(c,Math.max(c,s==this.lines+1?this.length:s<=1?0:this.line(s-1).to))}return new LineCursor(o)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?Text.empty:e.length<=32?new TextLeaf(e):TextNode.from(TextLeaf.split(e,[]))}}class TextLeaf extends Text{constructor(e,s=textLength(e)){super(),this.text=e,this.length=s}get lines(){return this.text.length}get children(){return null}lineInner(e,s,o,c){for(let d=0;;d++){let _=this.text[d],b=c+_.length;if((s?o:b)>=e)return new Line(c,b,o,_);c=b+1,o++}}decompose(e,s,o,c){let d=e<=0&&s>=this.length?this:new TextLeaf(sliceText(this.text,e,s),Math.min(s,this.length)-Math.max(0,e));if(c&1){let _=o.pop(),b=appendText(d.text,_.text.slice(),0,d.length);if(b.length<=32)o.push(new TextLeaf(b,_.length+d.length));else{let k=b.length>>1;o.push(new TextLeaf(b.slice(0,k)),new TextLeaf(b.slice(k)))}}else o.push(d)}replace(e,s,o){if(!(o instanceof TextLeaf))return super.replace(e,s,o);let c=appendText(this.text,appendText(o.text,sliceText(this.text,0,e)),s),d=this.length+o.length-(s-e);return c.length<=32?new TextLeaf(c,d):TextNode.from(TextLeaf.split(c,[]),d)}sliceString(e,s=this.length,o=` -`){let c="";for(let d=0,_=0;d<=s&&_e&&_&&(c+=o),ed&&(c+=b.slice(Math.max(0,e-d),s-d)),d=k+1}return c}flatten(e){for(let s of this.text)e.push(s)}scanIdentical(){return 0}static split(e,s){let o=[],c=-1;for(let d of e)o.push(d),c+=d.length+1,o.length==32&&(s.push(new TextLeaf(o,c)),o=[],c=-1);return c>-1&&s.push(new TextLeaf(o,c)),s}}class TextNode extends Text{constructor(e,s){super(),this.children=e,this.length=s,this.lines=0;for(let o of e)this.lines+=o.lines}lineInner(e,s,o,c){for(let d=0;;d++){let _=this.children[d],b=c+_.length,k=o+_.lines-1;if((s?k:b)>=e)return _.lineInner(e,s,o,c);c=b+1,o=k+1}}decompose(e,s,o,c){for(let d=0,_=0;_<=s&&d=_){let $=c&((_<=e?1:0)|(k>=s?2:0));_>=e&&k<=s&&!$?o.push(b):b.decompose(e-_,s-_,o,$)}_=k+1}}replace(e,s,o){if(o.lines=d&&s<=b){let k=_.replace(e-d,s-d,o),$=this.lines-_.lines+k.lines;if(k.lines<$>>5-1&&k.lines>$>>5+1){let j=this.children.slice();return j[c]=k,new TextNode(j,this.length-(s-e)+o.length)}return super.replace(d,b,k)}d=b+1}return super.replace(e,s,o)}sliceString(e,s=this.length,o=` -`){let c="";for(let d=0,_=0;de&&d&&(c+=o),e_&&(c+=b.sliceString(e-_,s-_,o)),_=k+1}return c}flatten(e){for(let s of this.children)s.flatten(e)}scanIdentical(e,s){if(!(e instanceof TextNode))return 0;let o=0,[c,d,_,b]=s>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;c+=s,d+=s){if(c==_||d==b)return o;let k=this.children[c],$=e.children[d];if(k!=$)return o+k.scanIdentical($,s);o+=k.length+1}}static from(e,s=e.reduce((o,c)=>o+c.length+1,-1)){let o=0;for(let tt of e)o+=tt.lines;if(o<32){let tt=[];for(let nt of e)nt.flatten(tt);return new TextLeaf(tt,s)}let c=Math.max(32,o>>5),d=c<<1,_=c>>1,b=[],k=0,$=-1,j=[];function _e(tt){let nt;if(tt.lines>d&&tt instanceof TextNode)for(let it of tt.children)_e(it);else tt.lines>_&&(k>_||!k)?(et(),b.push(tt)):tt instanceof TextLeaf&&k&&(nt=j[j.length-1])instanceof TextLeaf&&tt.lines+nt.lines<=32?(k+=tt.lines,$+=tt.length+1,j[j.length-1]=new TextLeaf(nt.text.concat(tt.text),nt.length+1+tt.length)):(k+tt.lines>c&&et(),k+=tt.lines,$+=tt.length+1,j.push(tt))}function et(){k!=0&&(b.push(j.length==1?j[0]:TextNode.from(j,$)),$=-1,k=j.length=0)}for(let tt of e)_e(tt);return et(),b.length==1?b[0]:new TextNode(b,s)}}Text.empty=new TextLeaf([""],0);function textLength(a){let e=-1;for(let s of a)e+=s.length+1;return e}function appendText(a,e,s=0,o=1e9){for(let c=0,d=0,_=!0;d=s&&(k>o&&(b=b.slice(0,o-c)),c0?1:(e instanceof TextLeaf?e.text.length:e.children.length)<<1]}nextInner(e,s){for(this.done=this.lineBreak=!1;;){let o=this.nodes.length-1,c=this.nodes[o],d=this.offsets[o],_=d>>1,b=c instanceof TextLeaf?c.text.length:c.children.length;if(_==(s>0?b:0)){if(o==0)return this.done=!0,this.value="",this;s>0&&this.offsets[o-1]++,this.nodes.pop(),this.offsets.pop()}else if((d&1)==(s>0?0:1)){if(this.offsets[o]+=s,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(c instanceof TextLeaf){let k=c.text[_+(s<0?-1:0)];if(this.offsets[o]+=s,k.length>Math.max(0,e))return this.value=e==0?k:s>0?k.slice(e):k.slice(0,k.length-e),this;e-=k.length}else{let k=c.children[_+(s<0?-1:0)];e>k.length?(e-=k.length,this.offsets[o]+=s):(s<0&&this.offsets[o]--,this.nodes.push(k),this.offsets.push(s>0?1:(k instanceof TextLeaf?k.text.length:k.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class PartialTextCursor{constructor(e,s,o){this.value="",this.done=!1,this.cursor=new RawTextCursor(e,s>o?-1:1),this.pos=s>o?e.length:0,this.from=Math.min(s,o),this.to=Math.max(s,o)}nextInner(e,s){if(s<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,s<0?this.pos-this.to:this.from-this.pos);let o=s<0?this.pos-this.from:this.to-this.pos;e>o&&(e=o),o-=e;let{value:c}=this.cursor.next(e);return this.pos+=(c.length+e)*s,this.value=c.length<=o?c:s<0?c.slice(c.length-o):c.slice(0,o),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class LineCursor{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:s,lineBreak:o,value:c}=this.inner.next(e);return s?(this.done=!0,this.value=""):o?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=c,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol!="undefined"&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this});class Line{constructor(e,s,o,c){this.from=e,this.to=s,this.number=o,this.text=c}get length(){return this.to-this.from}}const DefaultSplit=/\r\n?|\n/;var MapMode=function(a){return a[a.Simple=0]="Simple",a[a.TrackDel=1]="TrackDel",a[a.TrackBefore=2]="TrackBefore",a[a.TrackAfter=3]="TrackAfter",a}(MapMode||(MapMode={}));class ChangeDesc{constructor(e){this.sections=e}get length(){let e=0;for(let s=0;se)return d+(e-c);d+=b}else{if(o!=MapMode.Simple&&$>=e&&(o==MapMode.TrackDel&&ce||o==MapMode.TrackBefore&&ce))return null;if($>e||$==e&&s<0&&!b)return e==c||s<0?d:d+k;d+=k}c=$}if(e>c)throw new RangeError(`Position ${e} is out of range for changeset of length ${c}`);return d}touchesRange(e,s=e){for(let o=0,c=0;o=0&&c<=s&&b>=e)return cs?"cover":!0;c=b}return!1}toString(){let e="";for(let s=0;s=0?":"+c:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(s=>typeof s!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(e)}}class ChangeSet extends ChangeDesc{constructor(e,s){super(e),this.inserted=s}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return iterChanges(this,(s,o,c,d,_)=>e=e.replace(c,c+(o-s),_),!1),e}mapDesc(e,s=!1){return mapSet(this,e,s,!0)}invert(e){let s=this.sections.slice(),o=[];for(let c=0,d=0;c=0){s[c]=b,s[c+1]=_;let k=c>>1;for(;o.length0&&addInsert(o,s,d.text),d.forward(j),b+=j}let $=e[_++];for(;b<$;){if(d.done)break e;let j=Math.min(d.len,$-b);addSection(s,j,-1),addSection(c,j,d.ins==-1?-1:d.off==0?d.ins:0),d.forward(j),b+=j}}return{changes:new ChangeSet(s,o),filtered:new ChangeDesc(c)}}toJSON(){let e=[];for(let s=0;s>1].toJSON()))}return e}static of(e,s,o){let c=[],d=[],_=0,b=null;function k(j=!1){if(!j&&!c.length)return;_et||_e<0||et>s)throw new RangeError(`Invalid change range ${_e} to ${et} (in doc of length ${s})`);let nt=tt?typeof tt=="string"?Text.of(tt.split(o||DefaultSplit)):tt:Text.empty,it=nt.length;if(_e==et&&it==0)return;_e<_&&k(),_e>_&&addSection(c,_e-_,-1),addSection(c,et-_e,it),addInsert(d,c,nt),_=et}}return $(e),k(!b),b}static empty(e){return new ChangeSet(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let s=[],o=[];for(let c=0;cb&&typeof _!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(d.length==1)s.push(d[0],0);else{for(;o.length=0&&s<=0&&s==a[c+1]?a[c]+=e:e==0&&a[c]==0?a[c+1]+=s:o?(a[c]+=e,a[c+1]+=s):a.push(e,s)}function addInsert(a,e,s){if(s.length==0)return;let o=e.length-2>>1;if(o>1])),!(s||_==a.sections.length||a.sections[_+1]<0);)b=a.sections[_++],k=a.sections[_++];e(c,$,d,j,_e),c=$,d=j}}}function mapSet(a,e,s,o=!1){let c=[],d=o?[]:null,_=new SectionIter(a),b=new SectionIter(e);for(let k=0,$=0;;)if(_.ins==-1)k+=_.len,_.next();else if(b.ins==-1&&$=0&&(_.done||$$&&!_.done&&k+_.len<$+b.len;)k+=_.len,_.next();$+=b.len,b.next()}else if(_.ins>=0){let j=0,_e=k+_.len;for(;;)if(b.ins>=0&&$>k&&$+b.len<_e)j+=b.ins,$+=b.len,b.next();else if(b.ins==-1&&$<_e){let et=Math.min(b.len,_e-$);j+=et,b.forward(et),$+=et}else break;addSection(c,j,_.ins),d&&addInsert(d,c,_.text),k=_e,_.next()}else{if(_.done&&b.done)return d?new ChangeSet(c,d):new ChangeDesc(c);throw new Error("Mismatched change set lengths")}}function composeSets(a,e,s=!1){let o=[],c=s?[]:null,d=new SectionIter(a),_=new SectionIter(e);for(let b=!1;;){if(d.done&&_.done)return c?new ChangeSet(o,c):new ChangeDesc(o);if(d.ins==0)addSection(o,d.len,0,b),d.next();else if(_.len==0&&!_.done)addSection(o,0,_.ins,b),c&&addInsert(c,o,_.text),_.next();else{if(d.done||_.done)throw new Error("Mismatched change set lengths");{let k=Math.min(d.len2,_.len),$=o.length;if(d.ins==-1){let j=_.ins==-1?-1:_.off?0:_.ins;addSection(o,k,j,b),c&&j&&addInsert(c,o,_.text)}else _.ins==-1?(addSection(o,d.off?0:d.len,k,b),c&&addInsert(c,o,d.textBit(k))):(addSection(o,d.off?0:d.len,_.off?0:_.ins,b),c&&!_.off&&addInsert(c,o,_.text));b=(d.ins>k||_.ins>=0&&_.len>k)&&(b||o.length>$),d.forward2(k),_.forward(k)}}}}class SectionIter{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return s>=e.length?Text.empty:e[s]}textBit(e){let{inserted:s}=this.set,o=this.i-2>>1;return o>=s.length&&!e?Text.empty:s[o].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class SelectionRange{constructor(e,s,o){this.from=e,this.to=s,this.flags=o}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,s=-1){let o,c;return this.empty?o=c=e.mapPos(this.from,s):(o=e.mapPos(this.from,1),c=e.mapPos(this.to,-1)),o==this.from&&c==this.to?this:new SelectionRange(o,c,this.flags)}extend(e,s=e){if(e<=this.anchor&&s>=this.anchor)return EditorSelection.range(e,s);let o=Math.abs(e-this.anchor)>Math.abs(s-this.anchor)?e:s;return EditorSelection.range(this.anchor,o)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(e.anchor,e.head)}}class EditorSelection{constructor(e,s=0){this.ranges=e,this.mainIndex=s}map(e,s=-1){return e.empty?this:EditorSelection.create(this.ranges.map(o=>o.map(e,s)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let s=0;se.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(e.ranges.map(s=>SelectionRange.fromJSON(s)),e.main)}static single(e,s=e){return new EditorSelection([EditorSelection.range(e,s)],0)}static create(e,s=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let o=0,c=0;ce?4:0))}}function normalized(a,e=0){let s=a[e];a.sort((o,c)=>o.from-c.from),e=a.indexOf(s);for(let o=1;oc.head?EditorSelection.range(b,_):EditorSelection.range(_,b))}}return new EditorSelection(a,e)}function checkSelection(a,e){for(let s of a.ranges)if(s.to>e)throw new RangeError("Selection points outside of document")}let nextID=0;class Facet{constructor(e,s,o,c,d){this.combine=e,this.compareInput=s,this.compare=o,this.isStatic=c,this.extensions=d,this.id=nextID++,this.default=e([])}static define(e={}){return new Facet(e.combine||(s=>s),e.compareInput||((s,o)=>s===o),e.compare||(e.combine?(s,o)=>s===o:sameArray$1),!!e.static,e.enables)}of(e){return new FacetProvider([],this,0,e)}compute(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,1,s)}computeN(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,2,s)}from(e,s){return s||(s=o=>o),this.compute([e],o=>s(o.field(e)))}}function sameArray$1(a,e){return a==e||a.length==e.length&&a.every((s,o)=>s===e[o])}class FacetProvider{constructor(e,s,o,c){this.dependencies=e,this.facet=s,this.type=o,this.value=c,this.id=nextID++}dynamicSlot(e){var s;let o=this.value,c=this.facet.compareInput,d=this.id,_=e[d]>>1,b=this.type==2,k=!1,$=!1,j=[];for(let _e of this.dependencies)_e=="doc"?k=!0:_e=="selection"?$=!0:(((s=e[_e.id])!==null&&s!==void 0?s:1)&1)==0&&j.push(e[_e.id]);return{create(_e){return _e.values[_]=o(_e),1},update(_e,et){if(k&&et.docChanged||$&&(et.docChanged||et.selection)||j.some(tt=>(ensureAddr(_e,tt)&1)>0)){let tt=o(_e);if(b?!compareArray(tt,_e.values[_],c):!c(tt,_e.values[_]))return _e.values[_]=tt,1}return 0},reconfigure(_e,et){let tt=o(_e),nt=et.config.address[d];if(nt!=null){let it=getAddr(et,nt);if(b?compareArray(tt,it,c):c(tt,it))return _e.values[_]=it,0}return _e.values[_]=tt,1}}}}function compareArray(a,e,s){if(a.length!=e.length)return!1;for(let o=0;oa[k.id]),c=s.map(k=>k.type),d=o.filter(k=>!(k&1)),_=a[e.id]>>1;function b(k){let $=[];for(let j=0;jensureAddr(k,_e)&1))return 0;let j=b(k);return e.compare(j,k.values[_])?0:(k.values[_]=j,1)},reconfigure(k,$){let j=o.some(nt=>ensureAddr(k,nt)&1),_e=$.config.facets[e.id],et=$.facet(e);if(_e&&!j&&sameArray$1(s,_e))return k.values[_]=et,0;let tt=b(k);return e.compare(tt,et)?(k.values[_]=et,0):(k.values[_]=tt,1)}}}const initField=Facet.define({static:!0});class StateField{constructor(e,s,o,c,d){this.id=e,this.createF=s,this.updateF=o,this.compareF=c,this.spec=d,this.provides=void 0}static define(e){let s=new StateField(nextID++,e.create,e.update,e.compare||((o,c)=>o===c),e);return e.provide&&(s.provides=e.provide(s)),s}create(e){let s=e.facet(initField).find(o=>o.field==this);return((s==null?void 0:s.create)||this.createF)(e)}slot(e){let s=e[this.id]>>1;return{create:o=>(o.values[s]=this.create(o),1),update:(o,c)=>{let d=o.values[s],_=this.updateF(d,c);return this.compareF(d,_)?0:(o.values[s]=_,1)},reconfigure:(o,c)=>c.config.address[this.id]!=null?(o.values[s]=c.field(this),0):(o.values[s]=this.create(o),1)}}init(e){return[this,initField.of({field:this,create:e})]}get extension(){return this}}const Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(a){return e=>new PrecExtension(e,a)}const Prec={lowest:prec(Prec_.lowest),low:prec(Prec_.low),default:prec(Prec_.default),high:prec(Prec_.high),highest:prec(Prec_.highest),fallback:prec(Prec_.lowest),extend:prec(Prec_.high),override:prec(Prec_.highest)};class PrecExtension{constructor(e,s){this.inner=e,this.prec=s}}class Compartment{of(e){return new CompartmentInstance(this,e)}reconfigure(e){return Compartment.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class CompartmentInstance{constructor(e,s){this.compartment=e,this.inner=s}}class Configuration{constructor(e,s,o,c,d,_){for(this.base=e,this.compartments=s,this.dynamicSlots=o,this.address=c,this.staticValues=d,this.facets=_,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,s,o){let c=[],d=Object.create(null),_=new Map;for(let et of flatten(e,s,_))et instanceof StateField?c.push(et):(d[et.facet.id]||(d[et.facet.id]=[])).push(et);let b=Object.create(null),k=[],$=[];for(let et of c)b[et.id]=$.length<<1,$.push(tt=>et.slot(tt));let j=o==null?void 0:o.config.facets;for(let et in d){let tt=d[et],nt=tt[0].facet,it=j&&j[et]||[];if(tt.every(rt=>rt.type==0))if(b[nt.id]=k.length<<1|1,sameArray$1(it,tt))k.push(o.facet(nt));else{let rt=nt.combine(tt.map(st=>st.value));k.push(o&&nt.compare(rt,o.facet(nt))?o.facet(nt):rt)}else{for(let rt of tt)rt.type==0?(b[rt.id]=k.length<<1|1,k.push(rt.value)):(b[rt.id]=$.length<<1,$.push(st=>rt.dynamicSlot(st)));b[nt.id]=$.length<<1,$.push(rt=>dynamicFacetSlot(rt,nt,tt))}}let _e=$.map(et=>et(b));return new Configuration(e,_,_e,b,k,d)}}function flatten(a,e,s){let o=[[],[],[],[],[]],c=new Map;function d(_,b){let k=c.get(_);if(k!=null){if(k>=b)return;let $=o[k].indexOf(_);$>-1&&o[k].splice($,1),_ instanceof CompartmentInstance&&s.delete(_.compartment)}if(c.set(_,b),Array.isArray(_))for(let $ of _)d($,b);else if(_ instanceof CompartmentInstance){if(s.has(_.compartment))throw new RangeError("Duplicate use of compartment in extensions");let $=e.get(_.compartment)||_.inner;s.set(_.compartment,$),d($,b)}else if(_ instanceof PrecExtension)d(_.inner,_.prec);else if(_ instanceof StateField)o[b].push(_),_.provides&&d(_.provides,b);else if(_ instanceof FacetProvider)o[b].push(_),_.facet.extensions&&d(_.facet.extensions,b);else{let $=_.extension;if(!$)throw new Error(`Unrecognized extension value in extension set (${_}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);d($,b)}}return d(a,Prec_.default),o.reduce((_,b)=>_.concat(b))}function ensureAddr(a,e){if(e&1)return 2;let s=e>>1,o=a.status[s];if(o==4)throw new Error("Cyclic dependency between fields and/or facets");if(o&2)return o;a.status[s]=4;let c=a.computeSlot(a,a.config.dynamicSlots[s]);return a.status[s]=2|c}function getAddr(a,e){return e&1?a.config.staticValues[e>>1]:a.values[e>>1]}const languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:a=>a.some(e=>e),static:!0}),lineSeparator=Facet.define({combine:a=>a.length?a[0]:void 0,static:!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly$2=Facet.define({combine:a=>a.length?a[0]:!1});class Annotation{constructor(e,s){this.type=e,this.value=s}static define(){return new AnnotationType}}class AnnotationType{of(e){return new Annotation(this,e)}}class StateEffectType{constructor(e){this.map=e}of(e){return new StateEffect(this,e)}}class StateEffect{constructor(e,s){this.type=e,this.value=s}map(e){let s=this.type.map(this.value,e);return s===void 0?void 0:s==this.value?this:new StateEffect(this.type,s)}is(e){return this.type==e}static define(e={}){return new StateEffectType(e.map||(s=>s))}static mapEffects(e,s){if(!e.length)return e;let o=[];for(let c of e){let d=c.map(s);d&&o.push(d)}return o}}StateEffect.reconfigure=StateEffect.define();StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(e,s,o,c,d,_){this.startState=e,this.changes=s,this.selection=o,this.effects=c,this.annotations=d,this.scrollIntoView=_,this._doc=null,this._state=null,o&&checkSelection(o,s.newLength),d.some(b=>b.type==Transaction.time)||(this.annotations=d.concat(Transaction.time.of(Date.now())))}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let s of this.annotations)if(s.type==e)return s.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let s=this.annotation(Transaction.userEvent);return!!(s&&(s==e||s.length>e.length&&s.slice(0,e.length)==e&&s[e.length]=="."))}}Transaction.time=Annotation.define();Transaction.userEvent=Annotation.define();Transaction.addToHistory=Annotation.define();Transaction.remote=Annotation.define();function joinRanges(a,e){let s=[];for(let o=0,c=0;;){let d,_;if(o=a[o]))d=a[o++],_=a[o++];else if(c=0;c--){let d=o[c](a);d instanceof Transaction?a=d:Array.isArray(d)&&d.length==1&&d[0]instanceof Transaction?a=d[0]:a=resolveTransaction(e,asArray$1(d),!1)}return a}function extendTransaction(a){let e=a.startState,s=e.facet(transactionExtender),o=a;for(let c=s.length-1;c>=0;c--){let d=s[c](a);d&&Object.keys(d).length&&(o=mergeTransaction(a,resolveTransactionInner(e,d,a.changes.newLength),!0))}return o==a?a:new Transaction(e,a.changes,a.selection,o.effects,o.annotations,o.scrollIntoView)}const none$3=[];function asArray$1(a){return a==null?none$3:Array.isArray(a)?a:[a]}var CharCategory=function(a){return a[a.Word=0]="Word",a[a.Space=1]="Space",a[a.Other=2]="Other",a}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wordChar;try{wordChar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(a){}function hasWordChar(a){if(wordChar)return wordChar.test(a);for(let e=0;e"\x80"&&(s.toUpperCase()!=s.toLowerCase()||nonASCIISingleCaseWordChar.test(s)))return!0}return!1}function makeCategorizer(a){return e=>{if(!/\S/.test(e))return CharCategory.Space;if(hasWordChar(e))return CharCategory.Word;for(let s=0;s-1)return CharCategory.Word;return CharCategory.Other}}class EditorState{constructor(e,s,o,c,d,_){this.config=e,this.doc=s,this.selection=o,this.values=c,this.status=e.statusTemplate.slice(),this.computeSlot=d,_&&(_._state=this);for(let b=0;bc.set(k,b)),s=null),c.set(_.value.compartment,_.value.extension)):_.is(StateEffect.reconfigure)?(s=null,o=_.value):_.is(StateEffect.appendConfig)&&(s=null,o=asArray$1(o).concat(_.value));let d;s?d=e.startState.values.slice():(s=Configuration.resolve(o,c,this),d=new EditorState(s,this.doc,this.selection,s.dynamicSlots.map(()=>null),(b,k)=>k.reconfigure(b,this),null).values),new EditorState(s,e.newDoc,e.newSelection,d,(_,b)=>b.update(_,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(s=>({changes:{from:s.from,to:s.to,insert:e},range:EditorSelection.cursor(s.from+e.length)}))}changeByRange(e){let s=this.selection,o=e(s.ranges[0]),c=this.changes(o.changes),d=[o.range],_=asArray$1(o.effects);for(let b=1;b_.spec.fromJSON(b,k)))}return EditorState.create({doc:e.doc,selection:EditorSelection.fromJSON(e.selection),extensions:s.extensions?c.concat([s.extensions]):c})}static create(e={}){let s=Configuration.resolve(e.extensions||[],new Map),o=e.doc instanceof Text?e.doc:Text.of((e.doc||"").split(s.staticFacet(EditorState.lineSeparator)||DefaultSplit)),c=e.selection?e.selection instanceof EditorSelection?e.selection:EditorSelection.single(e.selection.anchor,e.selection.head):EditorSelection.single(0);return checkSelection(c,o.length),s.staticFacet(allowMultipleSelections)||(c=c.asSingle()),new EditorState(s,o,c,s.dynamicSlots.map(()=>null),(d,_)=>_.create(d),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||` -`}get readOnly(){return this.facet(readOnly$2)}phrase(e){for(let s of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(s,e))return s[e];return e}languageDataAt(e,s,o=-1){let c=[];for(let d of this.facet(languageData))for(let _ of d(this,s,o))Object.prototype.hasOwnProperty.call(_,e)&&c.push(_[e]);return c}charCategorizer(e){return makeCategorizer(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:s,from:o,length:c}=this.doc.lineAt(e),d=this.charCategorizer(e),_=e-o,b=e-o;for(;_>0;){let k=findClusterBreak(s,_,!1);if(d(s.slice(k,_))!=CharCategory.Word)break;_=k}for(;ba.length?a[0]:4});EditorState.lineSeparator=lineSeparator;EditorState.readOnly=readOnly$2;EditorState.phrases=Facet.define();EditorState.languageData=languageData;EditorState.changeFilter=changeFilter;EditorState.transactionFilter=transactionFilter;EditorState.transactionExtender=transactionExtender;Compartment.reconfigure=StateEffect.define();function combineConfig(a,e,s={}){let o={};for(let c of a)for(let d of Object.keys(c)){let _=c[d],b=o[d];if(b===void 0)o[d]=_;else if(!(b===_||_===void 0))if(Object.hasOwnProperty.call(s,d))o[d]=s[d](b,_);else throw new Error("Config merge conflict for field "+d)}for(let c in e)o[c]===void 0&&(o[c]=e[c]);return o}const C="\u037C",COUNT=typeof Symbol=="undefined"?"__"+C:Symbol.for(C),SET=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),top=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{};class StyleModule{constructor(e,s){this.rules=[];let{finish:o}=s||{};function c(_){return/^@/.test(_)?[_]:_.split(/,\s*/)}function d(_,b,k,$){let j=[],_e=/^@(\w+)\b/.exec(_[0]),et=_e&&_e[1]=="keyframes";if(_e&&b==null)return k.push(_[0]+";");for(let tt in b){let nt=b[tt];if(/&/.test(tt))d(tt.split(/,\s*/).map(it=>_.map(rt=>it.replace(/&/,rt))).reduce((it,rt)=>it.concat(rt)),nt,k);else if(nt&&typeof nt=="object"){if(!_e)throw new RangeError("The value of a property ("+tt+") should be a primitive value.");d(c(tt),nt,j,et)}else nt!=null&&j.push(tt.replace(/_.*/,"").replace(/[A-Z]/g,it=>"-"+it.toLowerCase())+": "+nt+";")}(j.length||et)&&k.push((o&&!_e&&!$?_.map(o):_).join(", ")+" {"+j.join(" ")+"}")}for(let _ in e)d(c(_),e[_],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=top[COUNT]||1;return top[COUNT]=e+1,C+e.toString(36)}static mount(e,s){(e[SET]||new StyleSet(e)).mount(Array.isArray(s)?s:[s])}}let adoptedSet=null;class StyleSet{constructor(e){if(!e.head&&e.adoptedStyleSheets&&typeof CSSStyleSheet!="undefined"){if(adoptedSet)return e.adoptedStyleSheets=[adoptedSet.sheet].concat(e.adoptedStyleSheets),e[SET]=adoptedSet;this.sheet=new CSSStyleSheet,e.adoptedStyleSheets=[this.sheet].concat(e.adoptedStyleSheets),adoptedSet=this}else{this.styleTag=(e.ownerDocument||e).createElement("style");let s=e.head||e;s.insertBefore(this.styleTag,s.firstChild)}this.modules=[],e[SET]=this}mount(e){let s=this.sheet,o=0,c=0;for(let d=0;d-1&&(this.modules.splice(b,1),c--,b=-1),b==-1){if(this.modules.splice(c++,0,_),s)for(let k=0;k<_.rules.length;k++)s.insertRule(_.rules[k],o++)}else{for(;c>1,$=d[k]-e||(o?this.value[k].endSide:this.value[k].startSide)-s;if(k==_)return $>=0?_:b;$>=0?b=k:_=k+1}}between(e,s,o,c){for(let d=this.findIndex(s,-1e9,!0),_=this.findIndex(o,1e9,!1,d);d<_;d++)if(c(this.from[d]+e,this.to[d]+e,this.value[d])===!1)return!1}map(e,s){let o=[],c=[],d=[],_=-1,b=-1;for(let k=0;ktt||et==tt&&$.startSide>0&&$.endSide<=0)continue;(tt-et||$.endSide-$.startSide)<0||(_<0&&(_=et),$.point&&(b=Math.max(b,tt-et)),o.push($),c.push(et-_),d.push(tt-_))}return{mapped:o.length?new Chunk(c,d,o,b):null,pos:_}}}class RangeSet{constructor(e,s,o=RangeSet.empty,c){this.chunkPos=e,this.chunk=s,this.nextLayer=o,this.maxPoint=c}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let s of this.chunk)e+=s.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:s=[],sort:o=!1,filterFrom:c=0,filterTo:d=this.length}=e,_=e.filter;if(s.length==0&&!_)return this;if(o&&(s=s.slice().sort(cmpRange)),this.isEmpty)return s.length?RangeSet.of(s):this;let b=new LayerCursor(this,null,-1).goto(0),k=0,$=[],j=new RangeSetBuilder;for(;b.value||k=0){let _e=s[k++];j.addInner(_e.from,_e.to,_e.value)||$.push(_e)}else b.rangeIndex==1&&b.chunkIndexthis.chunkEnd(b.chunkIndex)||db.to||d=d&&e<=d+_.length&&_.between(d,e-d,s-d,o)===!1)return}this.nextLayer.between(e,s,o)}}iter(e=0){return HeapCursor.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,s=0){return HeapCursor.from(e).goto(s)}static compare(e,s,o,c,d=-1){let _=e.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),b=s.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),k=findSharedChunks(_,b,o),$=new SpanCursor(_,k,d),j=new SpanCursor(b,k,d);o.iterGaps((_e,et,tt)=>compare($,_e,j,et,tt,c)),o.empty&&o.length==0&&compare($,0,j,0,0,c)}static eq(e,s,o=0,c){c==null&&(c=1e9);let d=e.filter(j=>!j.isEmpty&&s.indexOf(j)<0),_=s.filter(j=>!j.isEmpty&&e.indexOf(j)<0);if(d.length!=_.length)return!1;if(!d.length)return!0;let b=findSharedChunks(d,_),k=new SpanCursor(d,b,0).goto(o),$=new SpanCursor(_,b,0).goto(o);for(;;){if(k.to!=$.to||!sameValues(k.active,$.active)||k.point&&(!$.point||!k.point.eq($.point)))return!1;if(k.to>c)return!0;k.next(),$.next()}}static spans(e,s,o,c,d=-1){var _;let b=new SpanCursor(e,null,d,(_=c.filterPoint)===null||_===void 0?void 0:_.bind(c)).goto(s),k=s,$=b.openStart;for(;;){let j=Math.min(b.to,o);if(b.point?(c.point(k,j,b.point,b.activeForPoint(b.to),$),$=b.openEnd(j)+(b.to>j?1:0)):j>k&&(c.span(k,j,b.active,$),$=b.openEnd(j)),b.to>o)break;k=b.to,b.next()}return $}static of(e,s=!1){let o=new RangeSetBuilder;for(let c of e instanceof Range$1?[e]:s?lazySort(e):e)o.add(c.from,c.to,c.value);return o.finish()}}RangeSet.empty=new RangeSet([],[],null,-1);function lazySort(a){if(a.length>1)for(let e=a[0],s=1;s0)return a.slice().sort(cmpRange);e=o}return a}RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}finishChunk(e){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}add(e,s,o){this.addInner(e,s,o)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(e,s,o)}addInner(e,s,o){let c=e-this.lastTo||o.startSide-this.last.endSide;if(c<=0&&(e-this.lastFrom||o.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return c<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(s-this.chunkStart),this.last=o,this.lastFrom=e,this.lastTo=s,this.value.push(o),o.point&&(this.maxPoint=Math.max(this.maxPoint,s-e)),!0)}addChunk(e,s){if((e-this.lastTo||s.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,s.maxPoint),this.chunks.push(s),this.chunkPos.push(e);let o=s.value.length-1;return this.last=s.value[o],this.lastFrom=s.from[o]+e,this.lastTo=s.to[o]+e,!0}finish(){return this.finishInner(RangeSet.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let s=new RangeSet(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,s}}function findSharedChunks(a,e,s){let o=new Map;for(let d of a)for(let _=0;_=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=o&&c.push(new LayerCursor(_,s,o,d));return c.length==1?c[0]:new HeapCursor(c)}get startSide(){return this.value?this.value.startSide:0}goto(e,s=-1e9){for(let o of this.heap)o.goto(e,s);for(let o=this.heap.length>>1;o>=0;o--)heapBubble(this.heap,o);return this.next(),this}forward(e,s){for(let o of this.heap)o.forward(e,s);for(let o=this.heap.length>>1;o>=0;o--)heapBubble(this.heap,o);(this.to-e||this.value.endSide-s)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),heapBubble(this.heap,0)}}}function heapBubble(a,e){for(let s=a[e];;){let o=(e<<1)+1;if(o>=a.length)break;let c=a[o];if(o+1=0&&(c=a[o+1],o++),s.compare(c)<0)break;a[o]=s,a[e]=c,e=o}}class SpanCursor{constructor(e,s,o,c=()=>!0){this.minPoint=o,this.filterPoint=c,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=HeapCursor.from(e,s,o)}goto(e,s=-1e9){return this.cursor.goto(e,s),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=s,this.openStart=-1,this.next(),this}forward(e,s){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-s)<0;)this.removeActive(this.minActive);this.cursor.forward(e,s)}removeActive(e){remove(this.active,e),remove(this.activeTo,e),remove(this.activeRank,e),this.minActive=findMinIndex(this.active,this.activeTo)}addActive(e){let s=0,{value:o,to:c,rank:d}=this.cursor;for(;s-1&&(this.activeTo[d]-this.cursor.from||this.active[d].endSide-this.cursor.startSide)<0){if(this.activeTo[d]>e){this.to=this.activeTo[d],this.endSide=this.active[d].endSide;break}this.removeActive(d),o&&remove(o,d)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let _=this.cursor.value;if(!_.point)this.addActive(o),this.cursor.next();else if(s&&this.cursor.to==this.to&&this.cursor.from=0&&!(this.activeRank[o]e||this.activeTo[o]==e&&this.active[o].endSide>=this.point.endSide)&&s.push(this.active[o]);return s.reverse()}openEnd(e){let s=0;for(let o=this.activeTo.length-1;o>=0&&this.activeTo[o]>e;o--)s++;return s}}function compare(a,e,s,o,c,d){a.goto(e),s.goto(o);let _=o+c,b=o,k=o-e;for(;;){let $=a.to+k-s.to||a.endSide-s.endSide,j=$<0?a.to+k:s.to,_e=Math.min(j,_);if(a.point||s.point?a.point&&s.point&&(a.point==s.point||a.point.eq(s.point))&&sameValues(a.activeForPoint(a.to+k),s.activeForPoint(s.to))||d.comparePoint(b,_e,a.point,s.point):_e>b&&!sameValues(a.active,s.active)&&d.compareRange(b,_e,a.active,s.active),j>_)break;b=j,$<=0&&a.next(),$>=0&&s.next()}}function sameValues(a,e){if(a.length!=e.length)return!1;for(let s=0;s=e;o--)a[o+1]=a[o];a[e]=s}function findMinIndex(a,e){let s=-1,o=1e9;for(let c=0;c",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"',229:"Q"},chrome$1=typeof navigator!="undefined"&&/Chrome\/(\d+)/.exec(navigator.userAgent),safari$1=typeof navigator!="undefined"&&/Apple Computer/.test(navigator.vendor),gecko$1=typeof navigator!="undefined"&&/Gecko\/\d+/.test(navigator.userAgent),mac=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),ie$1=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),brokenModifierNames=chrome$1&&(mac||+chrome$1[1]<57)||gecko$1&&mac;for(var i=0;i<10;i++)base[48+i]=base[96+i]=String(i);for(var i=1;i<=24;i++)base[i+111]="F"+i;for(var i=65;i<=90;i++)base[i]=String.fromCharCode(i+32),shift[i]=String.fromCharCode(i);for(var code in base)shift.hasOwnProperty(code)||(shift[code]=base[code]);function keyName(a){var e=brokenModifierNames&&(a.ctrlKey||a.altKey||a.metaKey)||(safari$1||ie$1)&&a.shiftKey&&a.key&&a.key.length==1,s=!e&&a.key||(a.shiftKey?shift:base)[a.keyCode]||a.key||"Unidentified";return s=="Esc"&&(s="Escape"),s=="Del"&&(s="Delete"),s=="Left"&&(s="ArrowLeft"),s=="Up"&&(s="ArrowUp"),s=="Right"&&(s="ArrowRight"),s=="Down"&&(s="ArrowDown"),s}function getSelection(a){let e;return a.nodeType==11?e=a.getSelection?a:a.ownerDocument:e=a,e.getSelection()}function contains(a,e){return e?a==e||a.contains(e.nodeType!=1?e.parentNode:e):!1}function deepActiveElement(){let a=document.activeElement;for(;a&&a.shadowRoot;)a=a.shadowRoot.activeElement;return a}function hasSelection(a,e){if(!e.anchorNode)return!1;try{return contains(a,e.anchorNode)}catch{return!1}}function clientRectsFor(a){return a.nodeType==3?textRange(a,0,a.nodeValue.length).getClientRects():a.nodeType==1?a.getClientRects():[]}function isEquivalentPosition(a,e,s,o){return s?scanFor(a,e,s,o,-1)||scanFor(a,e,s,o,1):!1}function domIndex(a){for(var e=0;;e++)if(a=a.previousSibling,!a)return e}function scanFor(a,e,s,o,c){for(;;){if(a==s&&e==o)return!0;if(e==(c<0?0:maxOffset(a))){if(a.nodeName=="DIV")return!1;let d=a.parentNode;if(!d||d.nodeType!=1)return!1;e=domIndex(a)+(c<0?0:1),a=d}else if(a.nodeType==1){if(a=a.childNodes[e+(c<0?-1:0)],a.nodeType==1&&a.contentEditable=="false")return!1;e=c<0?maxOffset(a):0}else return!1}}function maxOffset(a){return a.nodeType==3?a.nodeValue.length:a.childNodes.length}const Rect0={left:0,right:0,top:0,bottom:0};function flattenRect(a,e){let s=e?a.left:a.right;return{left:s,right:s,top:a.top,bottom:a.bottom}}function windowRect(a){return{left:0,right:a.innerWidth,top:0,bottom:a.innerHeight}}function scrollRectIntoView(a,e,s,o,c,d,_,b){let k=a.ownerDocument,$=k.defaultView;for(let j=a;j;)if(j.nodeType==1){let _e,et=j==k.body;if(et)_e=windowRect($);else{if(j.scrollHeight<=j.clientHeight&&j.scrollWidth<=j.clientWidth){j=j.parentNode;continue}let it=j.getBoundingClientRect();_e={left:it.left,right:it.left+j.clientWidth,top:it.top,bottom:it.top+j.clientHeight}}let tt=0,nt=0;if(c=="nearest")e.top<_e.top?(nt=-(_e.top-e.top+_),s>0&&e.bottom>_e.bottom+nt&&(nt=e.bottom-_e.bottom+nt+_)):e.bottom>_e.bottom&&(nt=e.bottom-_e.bottom+_,s<0&&e.top-nt<_e.top&&(nt=-(_e.top+nt-e.top+_)));else{let it=e.bottom-e.top,rt=_e.bottom-_e.top;nt=(c=="center"&&it<=rt?e.top+it/2-rt/2:c=="start"||c=="center"&&s<0?e.top-_:e.bottom-rt+_)-_e.top}if(o=="nearest"?e.left<_e.left?(tt=-(_e.left-e.left+d),s>0&&e.right>_e.right+tt&&(tt=e.right-_e.right+tt+d)):e.right>_e.right&&(tt=e.right-_e.right+d,s<0&&e.left<_e.left+tt&&(tt=-(_e.left+tt-e.left+d))):tt=(o=="center"?e.left+(e.right-e.left)/2-(_e.right-_e.left)/2:o=="start"==b?e.left-d:e.right-(_e.right-_e.left)+d)-_e.left,tt||nt)if(et)$.scrollBy(tt,nt);else{if(nt){let it=j.scrollTop;j.scrollTop+=nt,nt=j.scrollTop-it}if(tt){let it=j.scrollLeft;j.scrollLeft+=tt,tt=j.scrollLeft-it}e={left:e.left-tt,top:e.top-nt,right:e.right-tt,bottom:e.bottom-nt}}if(et)break;j=j.assignedSlot||j.parentNode,o=c="nearest"}else if(j.nodeType==11)j=j.host;else break}class DOMSelectionState{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){this.set(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset)}set(e,s,o,c){this.anchorNode=e,this.anchorOffset=s,this.focusNode=o,this.focusOffset=c}}let preventScrollSupported=null;function focusPreventScroll(a){if(a.setActive)return a.setActive();if(preventScrollSupported)return a.focus(preventScrollSupported);let e=[];for(let s=a;s&&(e.push(s,s.scrollTop,s.scrollLeft),s!=s.ownerDocument);s=s.parentNode);if(a.focus(preventScrollSupported==null?{get preventScroll(){return preventScrollSupported={preventScroll:!0},!0}}:void 0),!preventScrollSupported){preventScrollSupported=!1;for(let s=0;ss)return _e.domBoundsAround(e,s,$);if(et>=e&&c==-1&&(c=k,d=$),$>s&&_e.dom.parentNode==this.dom){_=k,b=j;break}j=et,$=et+_e.breakAfter}return{from:d,to:b<0?o+this.length:b,startDOM:(c?this.children[c-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:_=0?this.children[_].dom:null}}markDirty(e=!1){this.dirty|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let s=this.parent;s;s=s.parent){if(e&&(s.dirty|=2),s.dirty&1)return;s.dirty|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.dirty&&this.markParentsDirty(!0))}setDOM(e){this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this}get rootView(){for(let e=this;;){let s=e.parent;if(!s)return e;e=s}}replaceChildren(e,s,o=noChildren){this.markDirty();for(let c=e;cthis.pos||e==this.pos&&(s>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let o=this.children[--this.i];this.pos-=o.length+o.breakAfter}}}function replaceRange(a,e,s,o,c,d,_,b,k){let{children:$}=a,j=$.length?$[e]:null,_e=d.length?d[d.length-1]:null,et=_e?_e.breakAfter:_;if(!(e==o&&j&&!_&&!et&&d.length<2&&j.merge(s,c,d.length?_e:null,s==0,b,k))){if(o<$.length){let tt=$[o];tt&&c0&&(!_&&d.length&&j.merge(s,j.length,d[0],!1,b,0)?j.breakAfter=d.shift().breakAfter:(s2);var browser={mac:ios$1||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios:ios$1,android:/Android\b/.test(nav.userAgent),webkit,safari,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:doc.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const MaxJoinLen=256;class TextView extends ContentView{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,s,o){return o&&(!(o instanceof TextView)||this.length-(s-e)+o.length>MaxJoinLen)?!1:(this.text=this.text.slice(0,e)+(o?o.text:"")+this.text.slice(s),this.markDirty(),!0)}split(e){let s=new TextView(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),s}localPosFromDOM(e,s){return e==this.dom?s:s?this.text.length:0}domAtPos(e){return new DOMPos(this.dom,e)}domBoundsAround(e,s,o){return{from:o,to:o+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,s){return textCoords(this.dom,e,s)}}class MarkView extends ContentView{constructor(e,s=[],o=0){super(),this.mark=e,this.children=s,this.length=o;for(let c of s)c.setParent(this)}setAttrs(e){if(clearAttributes(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let s in this.mark.attrs)e.setAttribute(s,this.mark.attrs[s]);return e}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.dirty|=6)}sync(e){this.dom?this.dirty&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e)}merge(e,s,o,c,d,_){return o&&(!(o instanceof MarkView&&o.mark.eq(this.mark))||e&&d<=0||se&&s.push(o=e&&(c=d),o=k,d++}let _=this.length-e;return this.length=e,c>-1&&(this.children.length=c,this.markDirty()),new MarkView(this.mark,s,_)}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}coordsAt(e,s){return coordsInChildren(this,e,s)}}function textCoords(a,e,s){let o=a.nodeValue.length;e>o&&(e=o);let c=e,d=e,_=0;e==0&&s<0||e==o&&s>=0?browser.chrome||browser.gecko||(e?(c--,_=1):(d++,_=-1)):s<0?c--:d++;let b=textRange(a,c,d).getClientRects();if(!b.length)return Rect0;let k=b[(_?_<0:s>=0)?0:b.length-1];return browser.safari&&!_&&k.width==0&&(k=Array.prototype.find.call(b,$=>$.width)||k),_?flattenRect(k,_<0):k||null}class WidgetView extends ContentView{constructor(e,s,o){super(),this.widget=e,this.length=s,this.side=o,this.prevWidget=null}static create(e,s,o){return new(e.customView||WidgetView)(e,s,o)}split(e){let s=WidgetView.create(this.widget,this.length-e,this.side);return this.length-=e,s}sync(){(!this.dom||!this.widget.updateDOM(this.dom))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}getSide(){return this.side}merge(e,s,o,c,d,_){return o&&(!(o instanceof WidgetView)||!this.widget.compare(o.widget)||e>0&&d<=0||s0?o.length-1:0;c=o[d],!(e>0?d==0:d==o.length-1||c.top0?-1:1);return e==0&&s>0||e==this.length&&s<=0?c:flattenRect(c,e==0)}get isEditable(){return!1}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class CompositionView extends WidgetView{domAtPos(e){let{topView:s,text:o}=this.widget;return s?scanCompositionTree(e,0,s,o,(c,d)=>c.domAtPos(d),c=>new DOMPos(o,Math.min(c,o.nodeValue.length))):new DOMPos(o,Math.min(e,o.nodeValue.length))}sync(){this.setDOM(this.widget.toDOM())}localPosFromDOM(e,s){let{topView:o,text:c}=this.widget;return o?posFromDOMInCompositionTree(e,s,o,c):Math.min(s,this.length)}ignoreMutation(){return!1}get overrideDOMText(){return null}coordsAt(e,s){let{topView:o,text:c}=this.widget;return o?scanCompositionTree(e,s,o,c,(d,_,b)=>d.coordsAt(_,b),(d,_)=>textCoords(c,d,_)):textCoords(c,e,s)}destroy(){var e;super.destroy(),(e=this.widget.topView)===null||e===void 0||e.destroy()}get isEditable(){return!0}}function scanCompositionTree(a,e,s,o,c,d){if(s instanceof MarkView){for(let _ of s.children){let b=contains(_.dom,o),k=b?o.nodeValue.length:_.length;if(a0?-1:1);return o&&o.tops.top?{left:s.left,right:s.right,top:o.top,bottom:o.bottom}:s}get overrideDOMText(){return Text.empty}}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=noChildren;function inlineSiblingRect(a,e){let s=a.parent,o=s?s.children.indexOf(a):-1;for(;s&&o>=0;)if(e<0?o>0:oc&&s<_&&d.dom.parentNode==a)return d.domAtPos(s-c);if(s<=c)break;c=_}}for(;o>0;o--){let c=e[o-1].dom;if(c.parentNode==a)return DOMPos.after(c)}return new DOMPos(a,0)}function joinInlineInto(a,e,s){let o,{children:c}=a;s>0&&e instanceof MarkView&&c.length&&(o=c[c.length-1])instanceof MarkView&&o.mark.eq(e.mark)?joinInlineInto(o,e.children[0],s-1):(c.push(e),e.setParent(a)),a.length+=e.length}function coordsInChildren(a,e,s){for(let d=0,_=0;_0?k>=e:k>e)&&(e0)){let j=0;if(k==d){if(b.getSide()<=0)continue;j=s=-b.getSide()}let _e=b.coordsAt(Math.max(0,e-d),s);return j&&_e?flattenRect(_e,s<0):_e}d=k}let o=a.dom.lastChild;if(!o)return a.dom.getBoundingClientRect();let c=clientRectsFor(o);return c[c.length-1]||null}function combineAttrs(a,e){for(let s in a)s=="class"&&e.class?e.class+=" "+a.class:s=="style"&&e.style?e.style+=";"+a.style:e[s]=a[s];return e}function attrsEq(a,e){if(a==e)return!0;if(!a||!e)return!1;let s=Object.keys(a),o=Object.keys(e);if(s.length!=o.length)return!1;for(let c of s)if(o.indexOf(c)==-1||a[c]!==e[c])return!1;return!0}function updateAttrs(a,e,s){if(e)for(let o in e)s&&o in s||a.removeAttribute(o);if(s)for(let o in s)e&&e[o]==s[o]||a.setAttribute(o,s[o])}class WidgetType{eq(e){return!1}updateDOM(e){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}ignoreEvent(e){return!0}get customView(){return null}destroy(e){}}var BlockType=function(a){return a[a.Text=0]="Text",a[a.WidgetBefore=1]="WidgetBefore",a[a.WidgetAfter=2]="WidgetAfter",a[a.WidgetRange=3]="WidgetRange",a}(BlockType||(BlockType={}));class Decoration extends RangeValue{constructor(e,s,o,c){super(),this.startSide=e,this.endSide=s,this.widget=o,this.spec=c}get heightRelevant(){return!1}static mark(e){return new MarkDecoration(e)}static widget(e){let s=e.side||0,o=!!e.block;return s+=o?s>0?3e8:-4e8:s>0?1e8:-1e8,new PointDecoration(e,s,s,o,e.widget||null,!1)}static replace(e){let s=!!e.block,o,c;if(e.isBlockGap)o=-5e8,c=4e8;else{let{start:d,end:_}=getInclusive(e,s);o=(d?s?-3e8:-1:5e8)-1,c=(_?s?2e8:1:-6e8)+1}return new PointDecoration(e,o,c,s,e.widget||null,!0)}static line(e){return new LineDecoration(e)}static set(e,s=!1){return RangeSet.of(e,s)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Decoration.none=RangeSet.empty;class MarkDecoration extends Decoration{constructor(e){let{start:s,end:o}=getInclusive(e);super(s?-1:5e8,o?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){return this==e||e instanceof MarkDecoration&&this.tagName==e.tagName&&this.class==e.class&&attrsEq(this.attrs,e.attrs)}range(e,s=e){if(e>=s)throw new RangeError("Mark decorations may not be empty");return super.range(e,s)}}MarkDecoration.prototype.point=!1;class LineDecoration extends Decoration{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof LineDecoration&&attrsEq(this.spec.attributes,e.spec.attributes)}range(e,s=e){if(s!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,s)}}LineDecoration.prototype.mapMode=MapMode.TrackBefore;LineDecoration.prototype.point=!0;class PointDecoration extends Decoration{constructor(e,s,o,c,d,_){super(s,o,d,e),this.block=c,this.isReplace=_,this.mapMode=c?s<=0?MapMode.TrackBefore:MapMode.TrackAfter:MapMode.TrackDel}get type(){return this.startSide=5}eq(e){return e instanceof PointDecoration&&widgetsEq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,s=e){if(this.isReplace&&(e>s||e==s&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&s!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,s)}}PointDecoration.prototype.point=!0;function getInclusive(a,e=!1){let{inclusiveStart:s,inclusiveEnd:o}=a;return s==null&&(s=a.inclusive),o==null&&(o=a.inclusive),{start:s!=null?s:e,end:o!=null?o:e}}function widgetsEq(a,e){return a==e||!!(a&&e&&a.compare(e))}function addRange(a,e,s,o=0){let c=s.length-1;c>=0&&s[c]+o>=a?s[c]=Math.max(s[c],e):s.push(a,e)}class LineView extends ContentView{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,s,o,c,d,_){if(o){if(!(o instanceof LineView))return!1;this.dom||o.transferDOM(this)}return c&&this.setDeco(o?o.attrs:null),mergeChildrenInto(this,e,s,o?o.children:[],d,_),!0}split(e){let s=new LineView;if(s.breakAfter=this.breakAfter,this.length==0)return s;let{i:o,off:c}=this.childPos(e);c&&(s.append(this.children[o].split(c),0),this.children[o].merge(c,this.children[o].length,null,!1,0,0),o++);for(let d=o;d0&&this.children[o-1].length==0;)this.children[--o].destroy();return this.children.length=o,this.markDirty(),this.length=e,s}transferDOM(e){!this.dom||(e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){attrsEq(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,s){joinInlineInto(this,e,s)}addLineDeco(e){let s=e.spec.attributes,o=e.spec.class;s&&(this.attrs=combineAttrs(s,this.attrs||{})),o&&(this.attrs=combineAttrs({class:o},this.attrs||{}))}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.dirty|=6)}sync(e){var s;this.dom?this.dirty&4&&(clearAttributes(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e);let o=this.dom.lastChild;for(;o&&ContentView.get(o)instanceof MarkView;)o=o.lastChild;if(!o||!this.length||o.nodeName!="BR"&&((s=ContentView.get(o))===null||s===void 0?void 0:s.isEditable)==!1&&(!browser.ios||!this.children.some(c=>c instanceof TextView))){let c=document.createElement("BR");c.cmIgnore=!0,this.dom.appendChild(c)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0;for(let s of this.children){if(!(s instanceof TextView))return null;let o=clientRectsFor(s.dom);if(o.length!=1)return null;e+=o[0].width}return{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length}}coordsAt(e,s){return coordsInChildren(this,e,s)}become(e){return!1}get type(){return BlockType.Text}static find(e,s){for(let o=0,c=0;o=s){if(d instanceof LineView)return d;if(_>s)break}c=_+d.breakAfter}return null}}class BlockWidgetView extends ContentView{constructor(e,s,o){super(),this.widget=e,this.length=s,this.type=o,this.breakAfter=0,this.prevWidget=null}merge(e,s,o,c,d,_){return o&&(!(o instanceof BlockWidgetView)||!this.widget.compare(o.widget)||e>0&&d<=0||s0;){if(this.textOff==this.text.length){let{value:d,lineBreak:_,done:b}=this.cursor.next(this.skip);if(this.skip=0,b)throw new Error("Ran out of text content when drawing inline views");if(_){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer([]),this.curLine=null,e--;continue}else this.text=d,this.textOff=0}let c=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(s.slice(0,o)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+c)),s),o),this.atCursorPos=!0,this.textOff+=c,e-=c,o=0}}span(e,s,o,c){this.buildText(s-e,o,c),this.pos=s,this.openStart<0&&(this.openStart=c)}point(e,s,o,c,d){let _=s-e;if(o instanceof PointDecoration)if(o.block){let{type:b}=o;b==BlockType.WidgetAfter&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(o.widget||new NullWidget("div"),_,b))}else{let b=WidgetView.create(o.widget||new NullWidget("span"),_,o.startSide),k=this.atCursorPos&&!b.isEditable&&d<=c.length&&(e0),$=!b.isEditable&&(ethis.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}return!0}static build(e,s,o,c,d){let _=new ContentBuilder(e,s,o,d);return _.openEnd=RangeSet.spans(c,s,o,_),_.openStart<0&&(_.openStart=_.openEnd),_.finish(_.openEnd),_}}function wrapMarks(a,e){for(let s of e)a=new MarkView(s,[a],a.length);return a}class NullWidget extends WidgetType{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}}const none$2=[],clickAddsSelectionRange=Facet.define(),dragMovesSelection$1=Facet.define(),mouseSelectionStyle=Facet.define(),exceptionSink=Facet.define(),updateListener=Facet.define(),inputHandler$1=Facet.define(),scrollTo=StateEffect.define({map:(a,e)=>a.map(e)}),centerOn=StateEffect.define({map:(a,e)=>a.map(e)});class ScrollTarget{constructor(e,s="nearest",o="nearest",c=5,d=5){this.range=e,this.y=s,this.x=o,this.yMargin=c,this.xMargin=d}map(e){return e.empty?this:new ScrollTarget(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin)}}const scrollIntoView$1=StateEffect.define({map:(a,e)=>a.map(e)});function logException(a,e,s){let o=a.facet(exceptionSink);o.length?o[0](e):window.onerror?window.onerror(String(e),s,void 0,void 0,e):s?console.error(s+":",e):console.error(e)}const editable=Facet.define({combine:a=>a.length?a[0]:!0});class PluginFieldProvider{constructor(e,s){this.field=e,this.get=s}}class PluginField{from(e){return new PluginFieldProvider(this,e)}static define(){return new PluginField}}PluginField.decorations=PluginField.define();PluginField.atomicRanges=PluginField.define();PluginField.scrollMargins=PluginField.define();let nextPluginID=0;const viewPlugin=Facet.define();class ViewPlugin{constructor(e,s,o){this.id=e,this.create=s,this.fields=o,this.extension=viewPlugin.of(this)}static define(e,s){let{eventHandlers:o,provide:c,decorations:d}=s||{},_=[];if(c)for(let b of Array.isArray(c)?c:[c])_.push(b);return o&&_.push(domEventHandlers.from(b=>({plugin:b,handlers:o}))),d&&_.push(PluginField.decorations.from(d)),new ViewPlugin(nextPluginID++,e,_)}static fromClass(e,s){return ViewPlugin.define(o=>new e(o),s)}}const domEventHandlers=PluginField.define();class PluginInstance{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}takeField(e,s){if(this.spec)for(let{field:o,get:c}of this.spec.fields)o==e&&s.push(c(this.value))}update(e){if(this.value){if(this.mustUpdate){let s=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(s)}catch(o){if(logException(s.state,o,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(s){logException(e.state,s,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var s;if(!((s=this.value)===null||s===void 0)&&s.destroy)try{this.value.destroy()}catch(o){logException(e.state,o,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const editorAttributes=Facet.define(),contentAttributes=Facet.define(),decorations=Facet.define(),styleModule=Facet.define();class ChangedRange{constructor(e,s,o,c){this.fromA=e,this.toA=s,this.fromB=o,this.toB=c}join(e){return new ChangedRange(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let s=e.length,o=this;for(;s>0;s--){let c=e[s-1];if(!(c.fromA>o.toA)){if(c.toAj)break;d+=2}if(!k)return o;new ChangedRange(k.fromA,k.toA,k.fromB,k.toB).addToSet(o),_=k.toA,b=k.toB}}}class ViewUpdate{constructor(e,s,o=none$2){this.view=e,this.state=s,this.transactions=o,this.flags=0,this.startState=e.state,this.changes=ChangeSet.empty(this.startState.doc.length);for(let _ of o)this.changes=this.changes.compose(_.changes);let c=[];this.changes.iterChangedRanges((_,b,k,$)=>c.push(new ChangedRange(_,b,k,$))),this.changedRanges=c;let d=e.hasFocus;d!=e.inputState.notifiedFocused&&(e.inputState.notifiedFocused=d,this.flags|=1)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}var Direction=function(a){return a[a.LTR=0]="LTR",a[a.RTL=1]="RTL",a}(Direction||(Direction={}));const LTR=Direction.LTR,RTL=Direction.RTL;function dec(a){let e=[];for(let s=0;s=s){if(b.level==o)return _;(d<0||(c!=0?c<0?b.froms:e[d].level>b.level))&&(d=_)}}if(d<0)throw new RangeError("Index out of range");return d}}const types=[];function computeOrder(a,e){let s=a.length,o=e==LTR?1:2,c=e==LTR?2:1;if(!a||o==1&&!BidiRE.test(a))return trivialOrder(s);for(let _=0,b=o,k=o;_=0;et-=3)if(BracketStack[et+1]==-j){let tt=BracketStack[et+2],nt=tt&2?o:tt&4?tt&1?c:o:0;nt&&(types[_]=types[BracketStack[et]]=nt),b=et;break}}else{if(BracketStack.length==189)break;BracketStack[b++]=_,BracketStack[b++]=$,BracketStack[b++]=k}else if((_e=types[_])==2||_e==1){let et=_e==o;k=et?0:1;for(let tt=b-3;tt>=0;tt-=3){let nt=BracketStack[tt+2];if(nt&2)break;if(et)BracketStack[tt+2]|=2;else{if(nt&4)break;BracketStack[tt+2]|=4}}}for(let _=0;_b;){let j=$,_e=types[--$]!=2;for(;$>b&&_e==(types[$-1]!=2);)$--;d.push(new BidiSpan($,j,_e?2:1))}else d.push(new BidiSpan(b,_,0))}else for(let _=0;_1)for(let k of this.points)k.node==e&&k.pos>this.text.length&&(k.pos-=_-1);o=d+_}}readNode(e){if(e.cmIgnore)return;let s=ContentView.get(e),o=s&&s.overrideDOMText;if(o!=null){this.findPointInside(e,o.length);for(let c=o.iter();!c.next().done;)c.lineBreak?this.lineBreak():this.append(c.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,s){for(let o of this.points)o.node==e&&e.childNodes[o.offset]==s&&(o.pos=this.text.length)}findPointInside(e,s){for(let o of this.points)(e.nodeType==3?o.node==e:e.contains(o.node))&&(o.pos=this.text.length+Math.min(s,o.offset))}}function isBlockElement(a){return a.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(a.nodeName)}class DOMPoint{constructor(e,s){this.node=e,this.offset=s,this.pos=-1}}class DocView extends ContentView{constructor(e){super(),this.view=e,this.compositionDeco=Decoration.none,this.decorations=[],this.pluginDecorationLength=0,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,e.state.doc.length)],0)}get root(){return this.view.root}get editorView(){return this.view}get length(){return this.view.state.doc.length}update(e){let s=e.changedRanges;this.minWidth>0&&s.length&&(s.every(({fromA:_,toA:b})=>bthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.view.inputState.composing<0?this.compositionDeco=Decoration.none:(e.transactions.length||this.dirty)&&(this.compositionDeco=computeCompositionDeco(this.view,e.changes)),(browser.ie||browser.chrome)&&!this.compositionDeco.size&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,c=this.updateDeco(),d=findChangedDeco(o,c,e.changes);return s=ChangedRange.extendWithRanges(s,d),this.dirty==0&&s.length==0?!1:(this.updateInner(s,e.startState.doc.length),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,s){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,s);let{observer:o}=this.view;o.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.minWidth=this.minWidth?this.minWidth+"px":"";let d=browser.chrome||browser.ios?{node:o.selectionRange.focusNode,written:!1}:void 0;this.sync(d),this.dirty=0,d&&(d.written||o.selectionRange.focusNode!=d.node)&&(this.forceSelection=!0),this.dom.style.height=""});let c=[];if(this.view.viewport.from||this.view.viewport.to=0?e[c]:null;if(!d)break;let{fromA:_,toA:b,fromB:k,toB:$}=d,{content:j,breakAtStart:_e,openStart:et,openEnd:tt}=ContentBuilder.build(this.view.state.doc,k,$,this.decorations,this.pluginDecorationLength),{i:nt,off:it}=o.findPos(b,1),{i:rt,off:st}=o.findPos(_,-1);replaceRange(this,rt,st,nt,it,j,_e,et,tt)}}updateSelection(e=!1,s=!1){if(e&&this.view.observer.readSelectionRange(),!(s||this.mayControlSelection())||browser.ios&&this.view.inputState.rapidCompositionStart)return;let o=this.forceSelection;this.forceSelection=!1;let c=this.view.state.selection.main,d=this.domAtPos(c.anchor),_=c.empty?d:this.domAtPos(c.head);if(browser.gecko&&c.empty&&betweenUneditable(d)){let k=document.createTextNode("");this.view.observer.ignore(()=>d.node.insertBefore(k,d.node.childNodes[d.offset]||null)),d=_=new DOMPos(k,0),o=!0}let b=this.view.observer.selectionRange;(o||!b.focusNode||!isEquivalentPosition(d.node,d.offset,b.anchorNode,b.anchorOffset)||!isEquivalentPosition(_.node,_.offset,b.focusNode,b.focusOffset))&&(this.view.observer.ignore(()=>{browser.android&&browser.chrome&&this.dom.contains(b.focusNode)&&inUneditable(b.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let k=getSelection(this.root);if(c.empty){if(browser.gecko){let $=nextToUneditable(d.node,d.offset);if($&&$!=3){let j=nearbyTextNode(d.node,d.offset,$==1?1:-1);j&&(d=new DOMPos(j,$==1?0:j.nodeValue.length))}}k.collapse(d.node,d.offset),c.bidiLevel!=null&&b.cursorBidiLevel!=null&&(b.cursorBidiLevel=c.bidiLevel)}else if(k.extend)k.collapse(d.node,d.offset),k.extend(_.node,_.offset);else{let $=document.createRange();c.anchor>c.head&&([d,_]=[_,d]),$.setEnd(_.node,_.offset),$.setStart(d.node,d.offset),k.removeAllRanges(),k.addRange($)}}),this.view.observer.setSelectionRange(d,_)),this.impreciseAnchor=d.precise?null:new DOMPos(b.anchorNode,b.anchorOffset),this.impreciseHead=_.precise?null:new DOMPos(b.focusNode,b.focusOffset)}enforceCursorAssoc(){if(this.compositionDeco.size)return;let e=this.view.state.selection.main,s=getSelection(this.root);if(!e.empty||!e.assoc||!s.modify)return;let o=LineView.find(this,e.head);if(!o)return;let c=o.posAtStart;if(e.head==c||e.head==c+o.length)return;let d=this.coordsAt(e.head,-1),_=this.coordsAt(e.head,1);if(!d||!_||d.bottom>_.top)return;let b=this.domAtPos(e.head+e.assoc);s.collapse(b.node,b.offset),s.modify("move",e.assoc<0?"forward":"backward","lineboundary")}mayControlSelection(){return this.view.state.facet(editable)?this.root.activeElement==this.dom:hasSelection(this.dom,this.view.observer.selectionRange)}nearest(e){for(let s=e;s;){let o=ContentView.get(s);if(o&&o.rootView==this)return o;s=s.parentNode}return null}posFromDOM(e,s){let o=this.nearest(e);if(!o)throw new RangeError("Trying to find position for a DOM position outside of the document");return o.localPosFromDOM(e,s)+o.posAtStart}domAtPos(e){let{i:s,off:o}=this.childCursor().findPos(e,-1);for(;s_||e==_&&d.type!=BlockType.WidgetBefore&&d.type!=BlockType.WidgetAfter&&(!c||s==2||this.children[c-1].breakAfter||this.children[c-1].type==BlockType.WidgetBefore&&s>-2))return d.coordsAt(e-_,s);o=_}}measureVisibleLineHeights(){let e=[],{from:s,to:o}=this.view.viewState.viewport,c=this.view.contentDOM.clientWidth,d=c>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,_=-1;for(let b=0,k=0;ko)break;if(b>=s){let _e=$.dom.getBoundingClientRect();if(e.push(_e.height),d){let et=$.dom.lastChild,tt=et?clientRectsFor(et):[];if(tt.length){let nt=tt[tt.length-1],it=this.view.textDirection==Direction.LTR?nt.right-_e.left:_e.right-nt.left;it>_&&(_=it,this.minWidth=c,this.minWidthFrom=b,this.minWidthTo=j)}}}b=j+$.breakAfter}return e}measureTextSize(){for(let c of this.children)if(c instanceof LineView){let d=c.measureTextSize();if(d)return d}let e=document.createElement("div"),s,o;return e.className="cm-line",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let c=clientRectsFor(e.firstChild)[0];s=e.getBoundingClientRect().height,o=c?c.width/27:7,e.remove()}),{lineHeight:s,charWidth:o}}childCursor(e=this.length){let s=this.children.length;return s&&(e-=this.children[--s].length),new ChildCursor(this.children,e,s)}computeBlockGapDeco(){let e=[],s=this.view.viewState;for(let o=0,c=0;;c++){let d=c==s.viewports.length?null:s.viewports[c],_=d?d.from-1:this.length;if(_>o){let b=s.lineBlockAt(_).bottom-s.lineBlockAt(o).top;e.push(Decoration.replace({widget:new BlockGapWidget(b),block:!0,inclusive:!0,isBlockGap:!0}).range(o,_))}if(!d)break;o=d.to+1}return Decoration.set(e)}updateDeco(){let e=this.view.pluginField(PluginField.decorations);return this.pluginDecorationLength=e.length,this.decorations=[...e,...this.view.state.facet(decorations),this.compositionDeco,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(e){let{range:s}=e,o=this.coordsAt(s.head,s.empty?s.assoc:s.head>s.anchor?-1:1),c;if(!o)return;!s.empty&&(c=this.coordsAt(s.anchor,s.anchor>s.head?-1:1))&&(o={left:Math.min(o.left,c.left),top:Math.min(o.top,c.top),right:Math.max(o.right,c.right),bottom:Math.max(o.bottom,c.bottom)});let d=0,_=0,b=0,k=0;for(let j of this.view.pluginField(PluginField.scrollMargins))if(j){let{left:_e,right:et,top:tt,bottom:nt}=j;_e!=null&&(d=Math.max(d,_e)),et!=null&&(_=Math.max(_,et)),tt!=null&&(b=Math.max(b,tt)),nt!=null&&(k=Math.max(k,nt))}let $={left:o.left-d,top:o.top-b,right:o.right+_,bottom:o.bottom+k};scrollRectIntoView(this.view.scrollDOM,$,s.head0&&s<=0)a=a.childNodes[e-1],e=maxOffset(a);else if(a.nodeType==1&&e=0)a=a.childNodes[e],e=0;else return null}}function nextToUneditable(a,e){return a.nodeType!=1?0:(e&&a.childNodes[e-1].contentEditable=="false"?1:0)|(e0;){let $=findClusterBreak(c.text,_,!1);if(o(c.text.slice($,_))!=k)break;_=$}for(;ba?e.left-a:Math.max(0,a-e.right)}function getdy(a,e){return e.top>a?e.top-a:Math.max(0,a-e.bottom)}function yOverlap(a,e){return a.tope.top+1}function upTop(a,e){return ea.bottom?{top:a.top,left:a.left,right:a.right,bottom:e}:a}function domPosAtCoords(a,e,s){let o,c,d,_,b,k,$,j;for(let tt=a.firstChild;tt;tt=tt.nextSibling){let nt=clientRectsFor(tt);for(let it=0;itot||_==ot&&d>st)&&(o=tt,c=rt,d=st,_=ot),st==0?s>rt.bottom&&(!$||$.bottomrt.top)&&(k=tt,j=rt):$&&yOverlap($,rt)?$=upBot($,rt.bottom):j&&yOverlap(j,rt)&&(j=upTop(j,rt.top))}}if($&&$.bottom>=s?(o=b,c=$):j&&j.top<=s&&(o=k,c=j),!o)return{node:a,offset:0};let _e=Math.max(c.left,Math.min(c.right,e));if(o.nodeType==3)return domPosInText(o,_e,s);if(!d&&o.contentEditable=="true")return domPosAtCoords(o,_e,s);let et=Array.prototype.indexOf.call(a.childNodes,o)+(e>=(c.left+c.right)/2?1:0);return{node:a,offset:et}}function domPosInText(a,e,s){let o=a.nodeValue.length,c=-1,d=1e9,_=0;for(let b=0;bs?j.top-s:s-j.bottom)-1;if(j.left-1<=e&&j.right+1>=e&&_e=(j.left+j.right)/2,tt=et;if((browser.chrome||browser.gecko)&&textRange(a,b).getBoundingClientRect().left==j.right&&(tt=!et),_e<=0)return{node:a,offset:b+(tt?1:0)};c=b+(tt?1:0),d=_e}}}return{node:a,offset:c>-1?c:_>0?a.nodeValue.length:0}}function posAtCoords(a,{x:e,y:s},o,c=-1){var d;let _=a.contentDOM.getBoundingClientRect(),b=_.top+a.viewState.paddingTop,k,{docHeight:$}=a.viewState,j=s-b;if(j<0)return 0;if(j>$)return a.state.doc.length;for(let st=a.defaultLineHeight/2,ot=!1;k=a.elementAtHeight(j),k.type!=BlockType.Text;)for(;j=c>0?k.bottom+st:k.top-st,!(j>=0&&j<=$);){if(ot)return o?null:0;ot=!0,c=-c}s=b+j;let _e=k.from;if(_ea.viewport.to)return a.viewport.to==a.state.doc.length?a.state.doc.length:o?null:posAtCoordsImprecise(a,_,k,e,s);let et=a.dom.ownerDocument,tt=a.root.elementFromPoint?a.root:et,nt=tt.elementFromPoint(e,s);nt&&!a.contentDOM.contains(nt)&&(nt=null),nt||(e=Math.max(_.left+1,Math.min(_.right-1,e)),nt=tt.elementFromPoint(e,s),nt&&!a.contentDOM.contains(nt)&&(nt=null));let it,rt=-1;if(nt&&((d=a.docView.nearest(nt))===null||d===void 0?void 0:d.isEditable)!=!1){if(et.caretPositionFromPoint){let st=et.caretPositionFromPoint(e,s);st&&({offsetNode:it,offset:rt}=st)}else if(et.caretRangeFromPoint){let st=et.caretRangeFromPoint(e,s);st&&({startContainer:it,startOffset:rt}=st,browser.safari&&isSuspiciousCaretResult(it,rt,e)&&(it=void 0))}}if(!it||!a.docView.dom.contains(it)){let st=LineView.find(a.docView,_e);if(!st)return j>k.top+k.height/2?k.to:k.from;({node:it,offset:rt}=domPosAtCoords(st.dom,e,s))}return a.docView.posFromDOM(it,rt)}function posAtCoordsImprecise(a,e,s,o,c){let d=Math.round((o-e.left)*a.defaultCharacterWidth);a.lineWrapping&&s.height>a.defaultLineHeight*1.5&&(d+=Math.floor((c-s.top)/a.defaultLineHeight)*a.viewState.heightOracle.lineLength);let _=a.state.sliceDoc(s.from,s.to);return s.from+findColumn(_,d,a.state.tabSize)}function isSuspiciousCaretResult(a,e,s){let o;if(a.nodeType!=3||e!=(o=a.nodeValue.length))return!1;for(let c=a.nextSibling;c;c=c.nextSibling)if(c.nodeType!=1||c.nodeName!="BR")return!1;return textRange(a,o-1,o).getBoundingClientRect().left>s}function moveToLineBoundary(a,e,s,o){let c=a.state.doc.lineAt(e.head),d=!o||!a.lineWrapping?null:a.coordsAtPos(e.assoc<0&&e.head>c.from?e.head-1:e.head);if(d){let k=a.dom.getBoundingClientRect(),$=a.posAtCoords({x:s==(a.textDirection==Direction.LTR)?k.right-1:k.left+1,y:(d.top+d.bottom)/2});if($!=null)return EditorSelection.cursor($,s?-1:1)}let _=LineView.find(a.docView,e.head),b=_?s?_.posAtEnd:_.posAtStart:s?c.to:c.from;return EditorSelection.cursor(b,s?-1:1)}function moveByChar(a,e,s,o){let c=a.state.doc.lineAt(e.head),d=a.bidiSpans(c);for(let _=e,b=null;;){let k=moveVisually(c,d,a.textDirection,_,s),$=movedOver;if(!k){if(c.number==(s?a.state.doc.lines:1))return _;$=` -`,c=a.state.doc.line(c.number+(s?1:-1)),d=a.bidiSpans(c),k=EditorSelection.cursor(s?c.from:c.to)}if(b){if(!b($))return _}else{if(!o)return k;b=o($)}_=k}}function byGroup(a,e,s){let o=a.state.charCategorizer(e),c=o(s);return d=>{let _=o(d);return c==CharCategory.Space&&(c=_),c==_}}function moveVertically(a,e,s,o){let c=e.head,d=s?1:-1;if(c==(s?a.state.doc.length:0))return EditorSelection.cursor(c,e.assoc);let _=e.goalColumn,b,k=a.contentDOM.getBoundingClientRect(),$=a.coordsAtPos(c),j=a.documentTop;if($)_==null&&(_=$.left-k.left),b=d<0?$.top:$.bottom;else{let tt=a.viewState.lineBlockAt(c-j);_==null&&(_=Math.min(k.right-k.left,a.defaultCharacterWidth*(c-tt.from))),b=(d<0?tt.top:tt.bottom)+j}let _e=k.left+_,et=o!=null?o:a.defaultLineHeight>>1;for(let tt=0;;tt+=10){let nt=b+(et+tt)*d,it=posAtCoords(a,{x:_e,y:nt},!1,d);if(ntk.bottom||(d<0?itc))return EditorSelection.cursor(it,e.assoc,void 0,_)}}function skipAtoms(a,e,s){let o=a.pluginField(PluginField.atomicRanges);for(;;){let c=!1;for(let d of o)d.between(s.from-1,s.from+1,(_,b,k)=>{s.from>_&&s.froms.from?EditorSelection.cursor(_,1):EditorSelection.cursor(b,-1),c=!0)});if(!c)return s}}class InputState{constructor(e){this.lastKeyCode=0,this.lastKeyTime=0,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.rapidCompositionStart=!1,this.mouseSelection=null;for(let s in handlers){let o=handlers[s];e.contentDOM.addEventListener(s,c=>{!eventBelongsToEditor(e,c)||this.ignoreDuringComposition(c)||s=="keydown"&&this.keydown(e,c)||(this.mustFlushObserver(c)&&e.observer.forceFlush(),this.runCustomHandlers(s,e,c)?c.preventDefault():o(e,c))}),this.registeredEvents.push(s)}this.notifiedFocused=e.hasFocus,this.ensureHandlers(e),browser.safari&&e.contentDOM.addEventListener("input",()=>null)}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}ensureHandlers(e){let s=this.customHandlers=e.pluginField(domEventHandlers);for(let o of s)for(let c in o.handlers)this.registeredEvents.indexOf(c)<0&&c!="scroll"&&(this.registeredEvents.push(c),e.contentDOM.addEventListener(c,d=>{!eventBelongsToEditor(e,d)||this.runCustomHandlers(c,e,d)&&d.preventDefault()}))}runCustomHandlers(e,s,o){for(let c of this.customHandlers){let d=c.handlers[e];if(d)try{if(d.call(c.plugin,o,s)||o.defaultPrevented)return!0}catch(_){logException(s.state,_)}}return!1}runScrollHandlers(e,s){for(let o of this.customHandlers){let c=o.handlers.scroll;if(c)try{c.call(o.plugin,s,e)}catch(d){logException(e.state,d)}}}keydown(e,s){if(this.lastKeyCode=s.keyCode,this.lastKeyTime=Date.now(),s.keyCode==9&&Date.now()c.keyCode==s.keyCode))&&!(s.ctrlKey||s.altKey||s.metaKey)&&!s.synthetic?(this.pendingIOSKey=o,setTimeout(()=>this.flushIOSKey(e),250),!0):!1}flushIOSKey(e){let s=this.pendingIOSKey;return s?(this.pendingIOSKey=void 0,dispatchKey(e.contentDOM,s.key,s.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:browser.safari&&Date.now()-this.compositionEndedAt<500?(this.compositionEndedAt=0,!0):!1:!1}mustFlushObserver(e){return e.type=="keydown"&&e.keyCode!=229||e.type=="compositionend"&&!browser.ios}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const PendingKeys=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],modifierCodes=[16,17,18,20,91,92,224,225];class MouseSelection{constructor(e,s,o,c){this.view=e,this.style=o,this.mustSelect=c,this.lastEvent=s;let d=e.contentDOM.ownerDocument;d.addEventListener("mousemove",this.move=this.move.bind(this)),d.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=s.shiftKey,this.multiple=e.state.facet(EditorState.allowMultipleSelections)&&addsSelectionRange(e,s),this.dragMove=dragMovesSelection(e,s),this.dragging=isInPrimarySelection(e,s)&&getClickType(s)==1?null:!1,this.dragging===!1&&(s.preventDefault(),this.select(s))}move(e){if(e.buttons==0)return this.destroy();this.dragging===!1&&this.select(this.lastEvent=e)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}select(e){let s=this.style.get(e,this.extend,this.multiple);(this.mustSelect||!s.eq(this.view.state.selection)||s.main.assoc!=this.view.state.selection.main.assoc)&&this.view.dispatch({selection:s,userEvent:"select.pointer",scrollIntoView:!0}),this.mustSelect=!1}update(e){e.docChanged&&this.dragging&&(this.dragging=this.dragging.map(e.changes)),this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function addsSelectionRange(a,e){let s=a.state.facet(clickAddsSelectionRange);return s.length?s[0](e):browser.mac?e.metaKey:e.ctrlKey}function dragMovesSelection(a,e){let s=a.state.facet(dragMovesSelection$1);return s.length?s[0](e):browser.mac?!e.altKey:!e.ctrlKey}function isInPrimarySelection(a,e){let{main:s}=a.state.selection;if(s.empty)return!1;let o=getSelection(a.root);if(o.rangeCount==0)return!0;let c=o.getRangeAt(0).getClientRects();for(let d=0;d=e.clientX&&_.top<=e.clientY&&_.bottom>=e.clientY)return!0}return!1}function eventBelongsToEditor(a,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let s=e.target,o;s!=a.contentDOM;s=s.parentNode)if(!s||s.nodeType==11||(o=ContentView.get(s))&&o.ignoreEvent(e))return!1;return!0}const handlers=Object.create(null),brokenClipboardAPI=browser.ie&&browser.ie_version<15||browser.ios&&browser.webkit_version<604;function capturePaste(a){let e=a.dom.parentNode;if(!e)return;let s=e.appendChild(document.createElement("textarea"));s.style.cssText="position: fixed; left: -10000px; top: 10px",s.focus(),setTimeout(()=>{a.focus(),s.remove(),doPaste(a,s.value)},50)}function doPaste(a,e){let{state:s}=a,o,c=1,d=s.toText(e),_=d.lines==s.selection.ranges.length;if(lastLinewiseCopy!=null&&s.selection.ranges.every(k=>k.empty)&&lastLinewiseCopy==d.toString()){let k=-1;o=s.changeByRange($=>{let j=s.doc.lineAt($.from);if(j.from==k)return{range:$};k=j.from;let _e=s.toText((_?d.line(c++).text:e)+s.lineBreak);return{changes:{from:j.from,insert:_e},range:EditorSelection.cursor($.from+_e.length)}})}else _?o=s.changeByRange(k=>{let $=d.line(c++);return{changes:{from:k.from,to:k.to,insert:$.text},range:EditorSelection.cursor(k.from+$.length)}}):o=s.replaceSelection(d);a.dispatch(o,{userEvent:"input.paste",scrollIntoView:!0})}handlers.keydown=(a,e)=>{a.inputState.setSelectionOrigin("select"),e.keyCode==27?a.inputState.lastEscPress=Date.now():modifierCodes.indexOf(e.keyCode)<0&&(a.inputState.lastEscPress=0)};let lastTouch=0;handlers.touchstart=(a,e)=>{lastTouch=Date.now(),a.inputState.setSelectionOrigin("select.pointer")};handlers.touchmove=a=>{a.inputState.setSelectionOrigin("select.pointer")};handlers.mousedown=(a,e)=>{if(a.observer.flush(),lastTouch>Date.now()-2e3&&getClickType(e)==1)return;let s=null;for(let o of a.state.facet(mouseSelectionStyle))if(s=o(a,e),s)break;if(!s&&e.button==0&&(s=basicMouseSelection(a,e)),s){let o=a.root.activeElement!=a.contentDOM;o&&a.observer.ignore(()=>focusPreventScroll(a.contentDOM)),a.inputState.startMouseSelection(new MouseSelection(a,e,s,o))}};function rangeForClick(a,e,s,o){if(o==1)return EditorSelection.cursor(e,s);if(o==2)return groupAt(a.state,e,s);{let c=LineView.find(a.docView,e),d=a.state.doc.lineAt(c?c.posAtEnd:e),_=c?c.posAtStart:d.from,b=c?c.posAtEnd:d.to;return ba>=e.top&&a<=e.bottom,inside=(a,e,s)=>insideY(e,s)&&a>=s.left&&a<=s.right;function findPositionSide(a,e,s,o){let c=LineView.find(a.docView,e);if(!c)return 1;let d=e-c.posAtStart;if(d==0)return 1;if(d==c.length)return-1;let _=c.coordsAt(d,-1);if(_&&inside(s,o,_))return-1;let b=c.coordsAt(d,1);return b&&inside(s,o,b)?1:_&&insideY(o,_)?-1:1}function queryPos(a,e){let s=a.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:s,bias:findPositionSide(a,s,e.clientX,e.clientY)}}const BadMouseDetail=browser.ie&&browser.ie_version<=11;let lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(a){if(!BadMouseDetail)return a.detail;let e=lastMouseDown,s=lastMouseDownTime;return lastMouseDown=a,lastMouseDownTime=Date.now(),lastMouseDownCount=!e||s>Date.now()-400&&Math.abs(e.clientX-a.clientX)<2&&Math.abs(e.clientY-a.clientY)<2?(lastMouseDownCount+1)%3:1}function basicMouseSelection(a,e){let s=queryPos(a,e),o=getClickType(e),c=a.state.selection,d=s,_=e;return{update(b){b.docChanged&&(s&&(s.pos=b.changes.mapPos(s.pos)),c=c.map(b.changes),_=null)},get(b,k,$){let j;if(_&&b.clientX==_.clientX&&b.clientY==_.clientY?j=d:(j=d=queryPos(a,b),_=b),!j||!s)return c;let _e=rangeForClick(a,j.pos,j.bias,o);if(s.pos!=j.pos&&!k){let et=rangeForClick(a,s.pos,s.bias,o),tt=Math.min(et.from,_e.from),nt=Math.max(et.to,_e.to);_e=tt<_e.from?EditorSelection.range(tt,nt):EditorSelection.range(nt,tt)}return k?c.replaceRange(c.main.extend(_e.from,_e.to)):$?c.addRange(_e):EditorSelection.create([_e])}}}handlers.dragstart=(a,e)=>{let{selection:{main:s}}=a.state,{mouseSelection:o}=a.inputState;o&&(o.dragging=s),e.dataTransfer&&(e.dataTransfer.setData("Text",a.state.sliceDoc(s.from,s.to)),e.dataTransfer.effectAllowed="copyMove")};function dropText(a,e,s,o){if(!s)return;let c=a.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:d}=a.inputState,_=o&&d&&d.dragging&&d.dragMove?{from:d.dragging.from,to:d.dragging.to}:null,b={from:c,insert:s},k=a.state.changes(_?[_,b]:b);a.focus(),a.dispatch({changes:k,selection:{anchor:k.mapPos(c,-1),head:k.mapPos(c,1)},userEvent:_?"move.drop":"input.drop"})}handlers.drop=(a,e)=>{if(!e.dataTransfer)return;if(a.state.readOnly)return e.preventDefault();let s=e.dataTransfer.files;if(s&&s.length){e.preventDefault();let o=Array(s.length),c=0,d=()=>{++c==s.length&&dropText(a,e,o.filter(_=>_!=null).join(a.state.lineBreak),!1)};for(let _=0;_{/[\x00-\x08\x0e-\x1f]{2}/.test(b.result)||(o[_]=b.result),d()},b.readAsText(s[_])}}else dropText(a,e,e.dataTransfer.getData("Text"),!0)};handlers.paste=(a,e)=>{if(a.state.readOnly)return e.preventDefault();a.observer.flush();let s=brokenClipboardAPI?null:e.clipboardData;s?(doPaste(a,s.getData("text/plain")),e.preventDefault()):capturePaste(a)};function captureCopy(a,e){let s=a.dom.parentNode;if(!s)return;let o=s.appendChild(document.createElement("textarea"));o.style.cssText="position: fixed; left: -10000px; top: 10px",o.value=e,o.focus(),o.selectionEnd=e.length,o.selectionStart=0,setTimeout(()=>{o.remove(),a.focus()},50)}function copiedRange(a){let e=[],s=[],o=!1;for(let c of a.selection.ranges)c.empty||(e.push(a.sliceDoc(c.from,c.to)),s.push(c));if(!e.length){let c=-1;for(let{from:d}of a.selection.ranges){let _=a.doc.lineAt(d);_.number>c&&(e.push(_.text),s.push({from:_.from,to:Math.min(a.doc.length,_.to+1)})),c=_.number}o=!0}return{text:e.join(a.lineBreak),ranges:s,linewise:o}}let lastLinewiseCopy=null;handlers.copy=handlers.cut=(a,e)=>{let{text:s,ranges:o,linewise:c}=copiedRange(a.state);if(!s&&!c)return;lastLinewiseCopy=c?s:null;let d=brokenClipboardAPI?null:e.clipboardData;d?(e.preventDefault(),d.clearData(),d.setData("text/plain",s)):captureCopy(a,s),e.type=="cut"&&!a.state.readOnly&&a.dispatch({changes:o,scrollIntoView:!0,userEvent:"delete.cut"})};handlers.focus=handlers.blur=a=>{setTimeout(()=>{a.hasFocus!=a.inputState.notifiedFocused&&a.update([])},10)};function forceClearComposition(a,e){if(a.docView.compositionDeco.size){a.inputState.rapidCompositionStart=e;try{a.update([])}finally{a.inputState.rapidCompositionStart=!1}}}handlers.compositionstart=handlers.compositionupdate=a=>{a.inputState.compositionFirstChange==null&&(a.inputState.compositionFirstChange=!0),a.inputState.composing<0&&(a.inputState.composing=0,a.docView.compositionDeco.size&&(a.observer.flush(),forceClearComposition(a,!0)))};handlers.compositionend=a=>{a.inputState.composing=-1,a.inputState.compositionEndedAt=Date.now(),a.inputState.compositionFirstChange=null,setTimeout(()=>{a.inputState.composing<0&&forceClearComposition(a,!1)},50)};handlers.contextmenu=a=>{a.inputState.lastContextMenu=Date.now()};handlers.beforeinput=(a,e)=>{var s;let o;if(browser.chrome&&browser.android&&(o=PendingKeys.find(c=>c.inputType==e.inputType))&&(a.observer.delayAndroidKey(o.key,o.keyCode),o.key=="Backspace"||o.key=="Delete")){let c=((s=window.visualViewport)===null||s===void 0?void 0:s.height)||0;setTimeout(()=>{var d;(((d=window.visualViewport)===null||d===void 0?void 0:d.height)||0)>c+10&&a.hasFocus&&(a.contentDOM.blur(),a.focus())},100)}};const wrappingWhiteSpace=["pre-wrap","normal","pre-line","break-spaces"];class HeightOracle{constructor(){this.doc=Text.empty,this.lineWrapping=!1,this.direction=Direction.LTR,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.lineLength=30,this.heightChanged=!1}heightForGap(e,s){let o=this.doc.lineAt(s).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(o+=Math.ceil((s-e-o*this.lineLength*.5)/this.lineLength)),this.lineHeight*o}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForStyle(e,s){return wrappingWhiteSpace.indexOf(e)>-1!=this.lineWrapping||this.direction!=s}mustRefreshForHeights(e){let s=!1;for(let o=0;o-1,k=Math.round(o)!=Math.round(this.lineHeight)||this.lineWrapping!=b||this.direction!=s;if(this.lineWrapping=b,this.direction=s,this.lineHeight=o,this.charWidth=c,this.lineLength=d,k){this.heightSamples={};for(let $=0;$<_.length;$++){let j=_[$];j<0?$++:this.heightSamples[Math.floor(j*10)]=!0}}return k}}class MeasuredHeights{constructor(e,s){this.from=e,this.heights=s,this.index=0}get more(){return this.indexs.moveY(e)):this.type):this}}var QueryType$1=function(a){return a[a.ByPos=0]="ByPos",a[a.ByHeight=1]="ByHeight",a[a.ByPosNoHeight=2]="ByPosNoHeight",a}(QueryType$1||(QueryType$1={}));const Epsilon=.001;class HeightMap{constructor(e,s,o=2){this.length=e,this.height=s,this.flags=o}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,s){this.height!=s&&(Math.abs(this.height-s)>Epsilon&&(e.heightChanged=!0),this.height=s)}replace(e,s,o){return HeightMap.of(o)}decomposeLeft(e,s){s.push(this)}decomposeRight(e,s){s.push(this)}applyChanges(e,s,o,c){let d=this;for(let _=c.length-1;_>=0;_--){let{fromA:b,toA:k,fromB:$,toB:j}=c[_],_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0),et=_e.to>=k?_e:d.lineAt(k,QueryType$1.ByPosNoHeight,s,0,0);for(j+=et.to-k,k=et.to;_>0&&_e.from<=c[_-1].toA;)b=c[_-1].fromA,$=c[_-1].fromB,_--,b<_e.from&&(_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0));$+=_e.from-b,b=_e.from;let tt=NodeBuilder.build(o,e,$,j);d=d.replace(b,k,tt)}return d.updateHeight(o,0)}static empty(){return new HeightMapText(0,0)}static of(e){if(e.length==1)return e[0];let s=0,o=e.length,c=0,d=0;for(;;)if(s==o)if(c>d*2){let b=e[s-1];b.break?e.splice(--s,1,b.left,null,b.right):e.splice(--s,1,b.left,b.right),o+=1+b.break,c-=b.size}else if(d>c*2){let b=e[o];b.break?e.splice(o,1,b.left,null,b.right):e.splice(o,1,b.left,b.right),o+=2+b.break,d-=b.size}else break;else if(c0){let d=o[o.length-1];d instanceof HeightMapGap?o[o.length-1]=new HeightMapGap(d.length+c):o.push(null,new HeightMapGap(c-1))}if(e>0){let d=o[0];d instanceof HeightMapGap?o[0]=new HeightMapGap(e+d.length):o.unshift(new HeightMapGap(e-1),null)}return HeightMap.of(o)}decomposeLeft(e,s){s.push(new HeightMapGap(e-1),null)}decomposeRight(e,s){s.push(null,new HeightMapGap(this.length-e-1))}updateHeight(e,s=0,o=!1,c){let d=s+this.length;if(c&&c.from<=s+this.length&&c.more){let _=[],b=Math.max(s,c.from),k=-1,$=e.heightChanged;for(c.from>s&&_.push(new HeightMapGap(c.from-s-1).updateHeight(e,s));b<=d&&c.more;){let _e=e.doc.lineAt(b).length;_.length&&_.push(null);let et=c.heights[c.index++];k==-1?k=et:Math.abs(et-k)>=Epsilon&&(k=-2);let tt=new HeightMapText(_e,et);tt.outdated=!1,_.push(tt),b+=_e+1}b<=d&&_.push(null,new HeightMapGap(d-b).updateHeight(e,b));let j=HeightMap.of(_);return e.heightChanged=$||k<0||Math.abs(j.height-this.height)>=Epsilon||Math.abs(k-this.lines(e.doc,s).lineHeight)>=Epsilon,j}else(o||this.outdated)&&(this.setHeight(e,e.heightForGap(s,s+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class HeightMapBranch extends HeightMap{constructor(e,s,o){super(e.length+s+o.length,e.height+o.height,s|(e.outdated||o.outdated?2:0)),this.left=e,this.right=o,this.size=e.size+o.size}get break(){return this.flags&1}blockAt(e,s,o,c){let d=o+this.left.height;return eb))return $;let j=s==QueryType$1.ByPosNoHeight?QueryType$1.ByPosNoHeight:QueryType$1.ByPos;return k?$.join(this.right.lineAt(b,j,o,_,b)):this.left.lineAt(b,j,o,c,d).join($)}forEachLine(e,s,o,c,d,_){let b=c+this.left.height,k=d+this.left.length+this.break;if(this.break)e=k&&this.right.forEachLine(e,s,o,b,k,_);else{let $=this.lineAt(k,QueryType$1.ByPos,o,c,d);e<$.from&&this.left.forEachLine(e,$.from-1,o,c,d,_),$.to>=e&&$.from<=s&&_($),s>$.to&&this.right.forEachLine($.to+1,s,o,b,k,_)}}replace(e,s,o){let c=this.left.length+this.break;if(sthis.left.length)return this.balanced(this.left,this.right.replace(e-c,s-c,o));let d=[];e>0&&this.decomposeLeft(e,d);let _=d.length;for(let b of o)d.push(b);if(e>0&&mergeGaps(d,_-1),s=o&&s.push(null)),e>o&&this.right.decomposeLeft(e-o,s)}decomposeRight(e,s){let o=this.left.length,c=o+this.break;if(e>=c)return this.right.decomposeRight(e-c,s);e2*s.size||s.size>2*e.size?HeightMap.of(this.break?[e,null,s]:[e,s]):(this.left=e,this.right=s,this.height=e.height+s.height,this.outdated=e.outdated||s.outdated,this.size=e.size+s.size,this.length=e.length+this.break+s.length,this)}updateHeight(e,s=0,o=!1,c){let{left:d,right:_}=this,b=s+d.length+this.break,k=null;return c&&c.from<=s+d.length&&c.more?k=d=d.updateHeight(e,s,o,c):d.updateHeight(e,s,o),c&&c.from<=b+_.length&&c.more?k=_=_.updateHeight(e,b,o,c):_.updateHeight(e,b,o),k?this.balanced(d,_):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function mergeGaps(a,e){let s,o;a[e]==null&&(s=a[e-1])instanceof HeightMapGap&&(o=a[e+1])instanceof HeightMapGap&&a.splice(e-1,3,new HeightMapGap(s.length+1+o.length))}const relevantWidgetHeight=5;class NodeBuilder{constructor(e,s){this.pos=e,this.oracle=s,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,s){if(this.lineStart>-1){let o=Math.min(s,this.lineEnd),c=this.nodes[this.nodes.length-1];c instanceof HeightMapText?c.length+=o-this.pos:(o>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(o-this.pos,-1)),this.writtenTo=o,s>o&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=s}point(e,s,o){if(e=relevantWidgetHeight)&&this.addLineDeco(c,d)}else s>e&&this.span(e,s);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:s}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=s,this.writtenToe&&this.nodes.push(new HeightMapText(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,s){let o=new HeightMapGap(s-e);return this.oracle.doc.lineAt(e).to==s&&(o.flags|=4),o}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof HeightMapText)return e;let s=new HeightMapText(0,-1);return this.nodes.push(s),s}addBlock(e){this.enterLine(),e.type==BlockType.WidgetAfter&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,e.type!=BlockType.WidgetBefore&&(this.covering=e)}addLineDeco(e,s){let o=this.ensureLine();o.length+=s,o.collapsed+=s,o.widgetHeight=Math.max(o.widgetHeight,e),this.writtenTo=this.pos=this.pos+s}finish(e){let s=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(s instanceof HeightMapText)&&!this.isCovered?this.nodes.push(new HeightMapText(0,-1)):(this.writtenTo$.clientHeight||$.scrollWidth>$.clientWidth)&&j.overflow!="visible"){let _e=$.getBoundingClientRect();o=Math.max(o,_e.left),c=Math.min(c,_e.right),d=Math.max(d,_e.top),_=Math.min(_,_e.bottom)}k=j.position=="absolute"||j.position=="fixed"?$.offsetParent:$.parentNode}else if(k.nodeType==11)k=k.host;else break;return{left:o-s.left,right:Math.max(o,c)-s.left,top:d-(s.top+e),bottom:Math.max(d,_)-(s.top+e)}}function fullPixelRange(a,e){let s=a.getBoundingClientRect();return{left:0,right:s.right-s.left,top:e,bottom:s.bottom-(s.top+e)}}class LineGap{constructor(e,s,o){this.from=e,this.to=s,this.size=o}static same(e,s){if(e.length!=s.length)return!1;for(let o=0;os.draw(!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:s}=this.state.selection;for(let o=0;o<=1;o++){let c=o?s.head:s.anchor;if(!e.some(({from:d,to:_})=>c>=d&&c<=_)){let{from:d,to:_}=this.lineBlockAt(c);e.push(new Viewport(d,_))}}this.viewports=e.sort((o,c)=>o.from-c.from),this.scaler=this.heightMap.height<=7e6?IdScaler:new BigScaler(this.heightOracle.doc,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.state.doc,0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:scaleBlock(e,this.scaler))})}update(e,s=null){let o=this.state;this.state=e.state;let c=this.state.facet(decorations),d=e.changedRanges,_=ChangedRange.extendWithRanges(d,heightRelevantDecoChanges(e.startState.facet(decorations),c,e?e.changes:ChangeSet.empty(this.state.doc.length))),b=this.heightMap.height;this.heightMap=this.heightMap.applyChanges(c,o.doc,this.heightOracle.setDoc(this.state.doc),_),this.heightMap.height!=b&&(e.flags|=2);let k=_.length?this.mapViewport(this.viewport,e.changes):this.viewport;(s&&(s.range.headk.to)||!this.viewportIsAppropriate(k))&&(k=this.getViewport(0,s));let $=!e.changes.empty||e.flags&2||k.from!=this.viewport.from||k.to!=this.viewport.to;this.viewport=k,this.updateForViewport(),$&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),s&&(this.scrollTarget=s),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&(this.mustEnforceCursorAssoc=!0)}measure(e){let s=e.contentDOM,o=window.getComputedStyle(s),c=this.heightOracle,d=o.whiteSpace,_=o.direction=="rtl"?Direction.RTL:Direction.LTR,b=this.heightOracle.mustRefreshForStyle(d,_),k=b||this.mustMeasureContent||this.contentDOMHeight!=s.clientHeight,$=0,j=0;if(this.editorWidth!=e.scrollDOM.clientWidth&&(c.lineWrapping&&(k=!0),this.editorWidth=e.scrollDOM.clientWidth,$|=8),k){this.mustMeasureContent=!1,this.contentDOMHeight=s.clientHeight;let st=parseInt(o.paddingTop)||0,ot=parseInt(o.paddingBottom)||0;(this.paddingTop!=st||this.paddingBottom!=ot)&&($|=8,this.paddingTop=st,this.paddingBottom=ot)}let _e=(this.printing?fullPixelRange:visiblePixelRange)(s,this.paddingTop),et=_e.top-this.pixelViewport.top,tt=_e.bottom-this.pixelViewport.bottom;this.pixelViewport=_e;let nt=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(nt!=this.inView&&(this.inView=nt,nt&&(k=!0)),!this.inView)return 0;let it=s.clientWidth;if((this.contentDOMWidth!=it||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=it,this.editorHeight=e.scrollDOM.clientHeight,$|=8),k){let st=e.docView.measureVisibleLineHeights();if(c.mustRefreshForHeights(st)&&(b=!0),b||c.lineWrapping&&Math.abs(it-this.contentDOMWidth)>c.charWidth){let{lineHeight:ot,charWidth:lt}=e.docView.measureTextSize();b=c.refresh(d,_,ot,lt,it/lt,st),b&&(e.docView.minWidth=0,$|=8)}et>0&&tt>0?j=Math.max(et,tt):et<0&&tt<0&&(j=Math.min(et,tt)),c.heightChanged=!1,this.heightMap=this.heightMap.updateHeight(c,0,b,new MeasuredHeights(this.viewport.from,st)),c.heightChanged&&($|=2)}let rt=!this.viewportIsAppropriate(this.viewport,j)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return rt&&(this.viewport=this.getViewport(j,this.scrollTarget)),this.updateForViewport(),($&2||rt)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(b?[]:this.lineGaps)),$|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),$}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,s){let o=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),c=this.heightMap,d=this.state.doc,{visibleTop:_,visibleBottom:b}=this,k=new Viewport(c.lineAt(_-o*1e3,QueryType$1.ByHeight,d,0,0).from,c.lineAt(b+(1-o)*1e3,QueryType$1.ByHeight,d,0,0).to);if(s){let{head:$}=s.range;if($k.to){let j=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),_e=c.lineAt($,QueryType$1.ByPos,d,0,0),et;s.y=="center"?et=(_e.top+_e.bottom)/2-j/2:s.y=="start"||s.y=="nearest"&&$=b+Math.max(10,Math.min(o,250)))&&c>_-2*1e3&&do.from&&b.push({from:o.from,to:d}),_=o.from&&k.from<=o.to&&cutRange(b,k.from-10,k.from+10),!k.empty&&k.to>=o.from&&k.to<=o.to&&cutRange(b,k.to-10,k.to+10);for(let{from:$,to:j}of b)j-$>1e3&&s.push(find(e,_e=>_e.from>=o.from&&_e.to<=o.to&&Math.abs(_e.from-$)<1e3&&Math.abs(_e.to-j)<1e3)||new LineGap($,j,this.gapSize(o,$,j,c)))}return s}gapSize(e,s,o,c){let d=findFraction(c,o)-findFraction(c,s);return this.heightOracle.lineWrapping?e.height*d:c.total*this.heightOracle.charWidth*d}updateLineGaps(e){LineGap.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Decoration.set(e.map(s=>s.draw(this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.state.facet(decorations);this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let s=[];RangeSet.spans(e,this.viewport.from,this.viewport.to,{span(c,d){s.push({from:c,to:d})},point(){}},20);let o=s.length!=this.visibleRanges.length||this.visibleRanges.some((c,d)=>c.from!=s[d].from||c.to!=s[d].to);return this.visibleRanges=s,o?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(s=>s.from<=e&&s.to>=e)||scaleBlock(this.heightMap.lineAt(e,QueryType$1.ByPos,this.state.doc,0,0),this.scaler)}lineBlockAtHeight(e){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(e),QueryType$1.ByHeight,this.state.doc,0,0),this.scaler)}elementAtHeight(e){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(e),this.state.doc,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Viewport{constructor(e,s){this.from=e,this.to=s}}function lineStructure(a,e,s){let o=[],c=a,d=0;return RangeSet.spans(s.facet(decorations),a,e,{span(){},point(_,b){_>c&&(o.push({from:c,to:_}),d+=_-c),c=b}},20),c=1)return e[e.length-1].to;let o=Math.floor(a*s);for(let c=0;;c++){let{from:d,to:_}=e[c],b=_-d;if(o<=b)return d+o;o-=b}}function findFraction(a,e){let s=0;for(let{from:o,to:c}of a.ranges){if(e<=c){s+=e-o;break}s+=c-o}return s/a.total}function cutRange(a,e,s){for(let o=0;oe){let d=[];c.froms&&d.push({from:s,to:c.to}),a.splice(o,1,...d),o+=d.length-1}}}function find(a,e){for(let s of a)if(e(s))return s}const IdScaler={toDOM(a){return a},fromDOM(a){return a},scale:1};class BigScaler{constructor(e,s,o){let c=0,d=0,_=0;this.viewports=o.map(({from:b,to:k})=>{let $=s.lineAt(b,QueryType$1.ByPos,e,0,0).top,j=s.lineAt(k,QueryType$1.ByPos,e,0,0).bottom;return c+=j-$,{from:b,to:k,top:$,bottom:j,domTop:0,domBottom:0}}),this.scale=(7e6-c)/(s.height-c);for(let b of this.viewports)b.domTop=_+(b.top-d)*this.scale,_=b.domBottom=b.domTop+(b.bottom-b.top),d=b.bottom}toDOM(e){for(let s=0,o=0,c=0;;s++){let d=sscaleBlock(c,e)):a.type)}const theme=Facet.define({combine:a=>a.join(" ")}),darkTheme=Facet.define({combine:a=>a.indexOf(!0)>-1}),baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName(),lightDarkIDs={"&light":"."+baseLightID,"&dark":"."+baseDarkID};function buildTheme(a,e,s){return new StyleModule(e,{finish(o){return/&/.test(o)?o.replace(/&\w*/,c=>{if(c=="&")return a;if(!s||!s[c])throw new RangeError(`Unsupported selector: ${c}`);return s[c]}):a+" "+o}})}const baseTheme$8=buildTheme("."+baseThemeID,{"&.cm-editor":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,minHeight:"100%",display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere"},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 4px"},".cm-selectionLayer":{zIndex:-1,contain:"size style"},".cm-selectionBackground":{position:"absolute"},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{zIndex:100,contain:"size style",pointerEvents:"none"},"&.cm-focused .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},".cm-cursor, .cm-dropCursor":{position:"absolute",borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},"&.cm-focused .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#f3f9ff"},"&dark .cm-activeLine":{backgroundColor:"#223039"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},lightDarkIDs),observeOptions={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},useCharData=browser.ie&&browser.ie_version<=11;class DOMObserver{constructor(e,s,o){this.view=e,this.onChange=s,this.onScrollChanged=o,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.scrollTargets=[],this.intersection=null,this.resize=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(c=>{for(let d of c)this.queue.push(d);(browser.ie&&browser.ie_version<=11||browser.ios&&e.composing)&&c.some(d=>d.type=="childList"&&d.removedNodes.length||d.type=="characterData"&&d.oldValue.length>d.target.nodeValue.length)?this.flushSoon():this.flush()}),useCharData&&(this.onCharData=c=>{this.queue.push({target:c.target,type:"characterData",oldValue:c.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),window.addEventListener("resize",this.onResize=this.onResize.bind(this)),typeof ResizeObserver=="function"&&(this.resize=new ResizeObserver(()=>{this.view.docView.lastUpdate{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),c.length>0&&c[c.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(c=>{c.length>0&&c[c.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange(),this.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((s,o)=>s!=e[o]))){this.gapIntersection.disconnect();for(let s of e)this.gapIntersection.observe(s);this.gaps=e}}onSelectionChange(e){if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:s}=this,o=this.selectionRange;if(s.state.facet(editable)?s.root.activeElement!=this.dom:!hasSelection(s.dom,o))return;let c=o.anchorNode&&s.docView.nearest(o.anchorNode);c&&c.ignoreEvent(e)||((browser.ie&&browser.ie_version<=11||browser.android&&browser.chrome)&&!s.state.selection.main.empty&&o.focusNode&&isEquivalentPosition(o.focusNode,o.focusOffset,o.anchorNode,o.anchorOffset)?this.flushSoon():this.flush(!1))}readSelectionRange(){let{root:e}=this.view,s=getSelection(e),o=browser.safari&&e.nodeType==11&&deepActiveElement()==this.view.contentDOM&&safariSelectionRangeHack(this.view)||s;return this.selectionRange.eq(o)?!1:(this.selectionRange.setRange(o),this.selectionChanged=!0)}setSelectionRange(e,s){this.selectionRange.set(e.node,e.offset,s.node,s.offset),this.selectionChanged=!1}listenForScroll(){this.parentCheck=-1;let e=0,s=null;for(let o=this.dom;o;)if(o.nodeType==1)!s&&e{let o=this.delayedAndroidKey;this.delayedAndroidKey=null;let c=this.view.state;dispatchKey(this.view.contentDOM,o.key,o.keyCode)?this.processRecords():this.flush(),this.view.state==c&&this.view.update([])}),(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:s})}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=window.setTimeout(()=>{this.delayedFlush=-1,this.flush()},20))}forceFlush(){this.delayedFlush>=0&&(window.clearTimeout(this.delayedFlush),this.delayedFlush=-1,this.flush())}processRecords(){let e=this.queue;for(let d of this.observer.takeRecords())e.push(d);e.length&&(this.queue=[]);let s=-1,o=-1,c=!1;for(let d of e){let _=this.readMutation(d);!_||(_.typeOver&&(c=!0),s==-1?{from:s,to:o}=_:(s=Math.min(_.from,s),o=Math.max(_.to,o)))}return{from:s,to:o,typeOver:c}}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return;e&&this.readSelectionRange();let{from:s,to:o,typeOver:c}=this.processRecords(),d=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(s<0&&!d)return;this.selectionChanged=!1;let _=this.view.state;this.onChange(s,o,c),this.view.state==_&&this.view.update([])}readMutation(e){let s=this.view.docView.nearest(e.target);if(!s||s.ignoreMutation(e))return null;if(s.markDirty(e.type=="attributes"),e.type=="attributes"&&(s.dirty|=4),e.type=="childList"){let o=findChild(s,e.previousSibling||e.target.previousSibling,-1),c=findChild(s,e.nextSibling||e.target.nextSibling,1);return{from:o?s.posAfter(o):s.posAtStart,to:c?s.posBefore(c):s.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:s.posAtStart,to:s.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}destroy(){var e,s,o;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(s=this.gapIntersection)===null||s===void 0||s.disconnect(),(o=this.resize)===null||o===void 0||o.disconnect();for(let c of this.scrollTargets)c.removeEventListener("scroll",this.onScroll);window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.onResize),window.removeEventListener("beforeprint",this.onPrint),this.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout)}}function findChild(a,e,s){for(;e;){let o=ContentView.get(e);if(o&&o.parent==a)return o;let c=e.parentNode;e=c!=a.dom?c:s>0?e.nextSibling:e.previousSibling}return null}function safariSelectionRangeHack(a){let e=null;function s(k){k.preventDefault(),k.stopImmediatePropagation(),e=k.getTargetRanges()[0]}if(a.contentDOM.addEventListener("beforeinput",s,!0),document.execCommand("indent"),a.contentDOM.removeEventListener("beforeinput",s,!0),!e)return null;let o=e.startContainer,c=e.startOffset,d=e.endContainer,_=e.endOffset,b=a.docView.domAtPos(a.state.selection.main.anchor);return isEquivalentPosition(b.node,b.offset,d,_)&&([o,c,d,_]=[d,_,o,c]),{anchorNode:o,anchorOffset:c,focusNode:d,focusOffset:_}}function applyDOMChange(a,e,s,o){let c,d,_=a.state.selection.main;if(e>-1){let b=a.docView.domBoundsAround(e,s,0);if(!b||a.state.readOnly)return;let{from:k,to:$}=b,j=a.docView.impreciseHead||a.docView.impreciseAnchor?[]:selectionPoints(a),_e=new DOMReader(j,a.state);_e.readRange(b.startDOM,b.endDOM);let et=_.from,tt=null;(a.inputState.lastKeyCode===8&&a.inputState.lastKeyTime>Date.now()-100||browser.android&&_e.text.length<$-k)&&(et=_.to,tt="end");let nt=findDiff(a.state.doc.sliceString(k,$,LineBreakPlaceholder),_e.text,et-k,tt);nt&&(browser.chrome&&a.inputState.lastKeyCode==13&&nt.toB==nt.from+2&&_e.text.slice(nt.from,nt.toB)==LineBreakPlaceholder+LineBreakPlaceholder&&nt.toB--,c={from:k+nt.from,to:k+nt.toA,insert:Text.of(_e.text.slice(nt.from,nt.toB).split(LineBreakPlaceholder))}),d=selectionFromPoints(j,k)}else if(a.hasFocus||!a.state.facet(editable)){let b=a.observer.selectionRange,{impreciseHead:k,impreciseAnchor:$}=a.docView,j=k&&k.node==b.focusNode&&k.offset==b.focusOffset||!contains(a.contentDOM,b.focusNode)?a.state.selection.main.head:a.docView.posFromDOM(b.focusNode,b.focusOffset),_e=$&&$.node==b.anchorNode&&$.offset==b.anchorOffset||!contains(a.contentDOM,b.anchorNode)?a.state.selection.main.anchor:a.docView.posFromDOM(b.anchorNode,b.anchorOffset);(j!=_.head||_e!=_.anchor)&&(d=EditorSelection.single(_e,j))}if(!(!c&&!d)){if(!c&&o&&!_.empty&&d&&d.main.empty?c={from:_.from,to:_.to,insert:a.state.doc.slice(_.from,_.to)}:c&&c.from>=_.from&&c.to<=_.to&&(c.from!=_.from||c.to!=_.to)&&_.to-_.from-(c.to-c.from)<=4&&(c={from:_.from,to:_.to,insert:a.state.doc.slice(_.from,c.from).append(c.insert).append(a.state.doc.slice(c.to,_.to))}),c){let b=a.state;if(browser.ios&&a.inputState.flushIOSKey(a)||browser.android&&(c.from==_.from&&c.to==_.to&&c.insert.length==1&&c.insert.lines==2&&dispatchKey(a.contentDOM,"Enter",13)||c.from==_.from-1&&c.to==_.to&&c.insert.length==0&&dispatchKey(a.contentDOM,"Backspace",8)||c.from==_.from&&c.to==_.to+1&&c.insert.length==0&&dispatchKey(a.contentDOM,"Delete",46)))return;let k=c.insert.toString();if(a.state.facet(inputHandler$1).some(_e=>_e(a,c.from,c.to,k)))return;a.inputState.composing>=0&&a.inputState.composing++;let $;if(c.from>=_.from&&c.to<=_.to&&c.to-c.from>=(_.to-_.from)/3&&(!d||d.main.empty&&d.main.from==c.from+c.insert.length)&&a.inputState.composing<0){let _e=_.fromc.to?b.sliceDoc(c.to,_.to):"";$=b.replaceSelection(a.state.toText(_e+c.insert.sliceString(0,void 0,a.state.lineBreak)+et))}else{let _e=b.changes(c),et=d&&!b.selection.main.eq(d.main)&&d.main.to<=_e.newLength?d.main:void 0;if(b.selection.ranges.length>1&&a.inputState.composing>=0&&c.to<=_.to&&c.to>=_.to-10){let tt=a.state.sliceDoc(c.from,c.to),nt=compositionSurroundingNode(a)||a.state.doc.lineAt(_.head),it=_.to-c.to,rt=_.to-_.from;$=b.changeByRange(st=>{if(st.from==_.from&&st.to==_.to)return{changes:_e,range:et||st.map(_e)};let ot=st.to-it,lt=ot-tt.length;if(st.to-st.from!=rt||a.state.sliceDoc(lt,ot)!=tt||nt&&st.to>=nt.from&&st.from<=nt.to)return{range:st};let dt=b.changes({from:lt,to:ot,insert:c.insert}),ct=st.to-_.to;return{changes:dt,range:et?EditorSelection.range(Math.max(0,et.anchor+ct),Math.max(0,et.head+ct)):st.map(dt)}})}else $={changes:_e,selection:et&&b.selection.replaceRange(et)}}let j="input.type";a.composing&&(j+=".compose",a.inputState.compositionFirstChange&&(j+=".start",a.inputState.compositionFirstChange=!1)),a.dispatch($,{scrollIntoView:!0,userEvent:j})}else if(d&&!d.main.eq(_)){let b=!1,k="select";a.inputState.lastSelectionTime>Date.now()-50&&(a.inputState.lastSelectionOrigin=="select"&&(b=!0),k=a.inputState.lastSelectionOrigin),a.dispatch({selection:d,scrollIntoView:b,userEvent:k})}}}function findDiff(a,e,s,o){let c=Math.min(a.length,e.length),d=0;for(;d0&&b>0&&a.charCodeAt(_-1)==e.charCodeAt(b-1);)_--,b--;if(o=="end"){let k=Math.max(0,d-Math.min(_,b));s-=_+k-d}return _=_?d-s:0,b=d+(b-_),_=d):b=b?d-s:0,_=d+(_-b),b=d),{from:d,toA:_,toB:b}}function selectionPoints(a){let e=[];if(a.root.activeElement!=a.contentDOM)return e;let{anchorNode:s,anchorOffset:o,focusNode:c,focusOffset:d}=a.observer.selectionRange;return s&&(e.push(new DOMPoint(s,o)),(c!=s||d!=o)&&e.push(new DOMPoint(c,d))),e}function selectionFromPoints(a,e){if(a.length==0)return null;let s=a[0].pos,o=a.length==2?a[1].pos:s;return s>-1&&o>-1?EditorSelection.single(s+e,o+e):null}class EditorView{constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: absolute; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=e.dispatch||(s=>this.update([s])),this.dispatch=this.dispatch.bind(this),this.root=e.root||getRoot(e.parent)||document,this.viewState=new ViewState(e.state||EditorState.create()),this.plugins=this.state.facet(viewPlugin).map(s=>new PluginInstance(s));for(let s of this.plugins)s.update(this);this.observer=new DOMObserver(this,(s,o,c)=>{applyDOMChange(this,s,o,c)},s=>{this.inputState.runScrollHandlers(this,s),this.observer.intersecting&&this.measure()}),this.inputState=new InputState(this),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),e.parent&&e.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}dispatch(...e){this._dispatch(e.length==1&&e[0]instanceof Transaction?e[0]:this.state.update(...e))}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let s=!1,o,c=this.state;for(let _ of e){if(_.startState!=c)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");c=_.state}if(this.destroyed){this.viewState.state=c;return}if(c.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(c);o=new ViewUpdate(this,c,e);let d=this.viewState.scrollTarget;try{this.updateState=2;for(let _ of e){if(d&&(d=d.map(_.changes)),_.scrollIntoView){let{main:b}=_.state.selection;d=new ScrollTarget(b.empty?b:EditorSelection.cursor(b.head,b.head>b.anchor?-1:1))}for(let b of _.effects)b.is(scrollTo)?d=new ScrollTarget(b.value):b.is(centerOn)?d=new ScrollTarget(b.value,"center"):b.is(scrollIntoView$1)&&(d=b.value)}this.viewState.update(o,d),this.bidiCache=CachedOrder.update(this.bidiCache,o.changes),o.empty||(this.updatePlugins(o),this.inputState.update(o)),s=this.docView.update(o),this.state.facet(styleModule)!=this.styleModules&&this.mountStyles(),this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(s,e.some(_=>_.isUserEvent("select.pointer")))}finally{this.updateState=0}if(o.startState.facet(theme)!=o.state.facet(theme)&&(this.viewState.mustMeasureContent=!0),(s||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!o.empty)for(let _ of this.state.facet(updateListener))_(o)}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let s=this.hasFocus;try{for(let o of this.plugins)o.destroy(this);this.viewState=new ViewState(e),this.plugins=e.facet(viewPlugin).map(o=>new PluginInstance(o)),this.pluginMap.clear();for(let o of this.plugins)o.update(this);this.docView=new DocView(this),this.inputState.ensureHandlers(this),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}s&&this.focus(),this.requestMeasure()}updatePlugins(e){let s=e.startState.facet(viewPlugin),o=e.state.facet(viewPlugin);if(s!=o){let c=[];for(let d of o){let _=s.indexOf(d);if(_<0)c.push(new PluginInstance(d));else{let b=this.plugins[_];b.mustUpdate=e,c.push(b)}}for(let d of this.plugins)d.mustUpdate!=e&&d.destroy(this);this.plugins=c,this.pluginMap.clear(),this.inputState.ensureHandlers(this)}else for(let c of this.plugins)c.mustUpdate=e;for(let c=0;c-1&&cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,e&&this.observer.flush();let s=null;try{for(let o=0;;o++){this.updateState=1;let c=this.viewport,d=this.viewState.measure(this);if(!d&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(o>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let _=[];d&4||([this.measureRequests,_]=[_,this.measureRequests]);let b=_.map(_e=>{try{return _e.read(this)}catch(et){return logException(this.state,et),BadMeasure}}),k=new ViewUpdate(this,this.state),$=!1,j=!1;k.flags|=d,s?s.flags|=d:s=k,this.updateState=2,k.empty||(this.updatePlugins(k),this.inputState.update(k),this.updateAttrs(),$=this.docView.update(k));for(let _e=0;_e<_.length;_e++)if(b[_e]!=BadMeasure)try{let et=_[_e];et.write&&et.write(b[_e],this)}catch(et){logException(this.state,et)}if(this.viewState.scrollTarget&&(this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,j=!0),$&&this.docView.updateSelection(!0),this.viewport.from==c.from&&this.viewport.to==c.to&&!j&&this.measureRequests.length==0)break}}finally{this.updateState=0,this.measureScheduled=-1}if(s&&!s.empty)for(let o of this.state.facet(updateListener))o(s)}get themeClasses(){return baseThemeID+" "+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+" "+this.state.facet(theme)}updateAttrs(){let e=attrsFromFacet(this,editorAttributes,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),s={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(editable)?"true":"false",class:"cm-content",style:`${browser.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(s["aria-readonly"]="true"),attrsFromFacet(this,contentAttributes,s),this.observer.ignore(()=>{updateAttrs(this.contentDOM,this.contentAttrs,s),updateAttrs(this.dom,this.editorAttrs,e)}),this.editorAttrs=e,this.contentAttrs=s}showAnnouncements(e){let s=!0;for(let o of e)for(let c of o.effects)if(c.is(EditorView.announce)){s&&(this.announceDOM.textContent=""),s=!1;let d=this.announceDOM.appendChild(document.createElement("div"));d.textContent=c.value}}mountStyles(){this.styleModules=this.state.facet(styleModule),StyleModule.mount(this.root,this.styleModules.concat(baseTheme$8).reverse())}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=requestAnimationFrame(()=>this.measure())),e){if(e.key!=null){for(let s=0;so.spec==e)||null),s&&s.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}blockAtHeight(e,s){let o=ensureTop(s,this);return this.elementAtHeight(e-o).moveY(o)}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}visualLineAtHeight(e,s){let o=ensureTop(s,this);return this.lineBlockAtHeight(e-o).moveY(o)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}viewportLines(e,s){let o=ensureTop(s,this);for(let c of this.viewportLineBlocks)e(c.moveY(o))}get viewportLineBlocks(){return this.viewState.viewportLines}visualLineAt(e,s=0){return this.lineBlockAt(e).moveY(s+this.viewState.paddingTop)}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,s,o){return skipAtoms(this,e,moveByChar(this,e,s,o))}moveByGroup(e,s){return skipAtoms(this,e,moveByChar(this,e,s,o=>byGroup(this,e.head,o)))}moveToLineBoundary(e,s,o=!0){return moveToLineBoundary(this,e,s,o)}moveVertically(e,s,o){return skipAtoms(this,e,moveVertically(this,e,s,o))}scrollPosIntoView(e){this.dispatch({effects:scrollTo.of(EditorSelection.cursor(e))})}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,s=0){return this.docView.posFromDOM(e,s)}posAtCoords(e,s=!0){return this.readMeasured(),posAtCoords(this,e,s)}coordsAtPos(e,s=1){this.readMeasured();let o=this.docView.coordsAt(e,s);if(!o||o.left==o.right)return o;let c=this.state.doc.lineAt(e),d=this.bidiSpans(c),_=d[BidiSpan.find(d,e-c.from,-1,s)];return flattenRect(o,_.dir==Direction.LTR==s>0)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.heightOracle.direction}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>MaxBidiLine)return trivialOrder(e.length);let s=this.textDirection;for(let c of this.bidiCache)if(c.from==e.from&&c.dir==s)return c.order;let o=computeOrder(e.text,this.textDirection);return this.bidiCache.push(new CachedOrder(e.from,e.to,s,o)),o}get hasFocus(){var e;return(document.hasFocus()||browser.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()})}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,s={}){return scrollIntoView$1.of(new ScrollTarget(typeof e=="number"?EditorSelection.cursor(e):e,s.y,s.x,s.yMargin,s.xMargin))}static domEventHandlers(e){return ViewPlugin.define(()=>({}),{eventHandlers:e})}static theme(e,s){let o=StyleModule.newName(),c=[theme.of(o),styleModule.of(buildTheme(`.${o}`,e))];return s&&s.dark&&c.push(darkTheme.of(!0)),c}static baseTheme(e){return Prec.lowest(styleModule.of(buildTheme("."+baseThemeID,e,lightDarkIDs)))}}EditorView.scrollTo=scrollTo;EditorView.centerOn=centerOn;EditorView.styleModule=styleModule;EditorView.inputHandler=inputHandler$1;EditorView.exceptionSink=exceptionSink;EditorView.updateListener=updateListener;EditorView.editable=editable;EditorView.mouseSelectionStyle=mouseSelectionStyle;EditorView.dragMovesSelection=dragMovesSelection$1;EditorView.clickAddsSelectionRange=clickAddsSelectionRange;EditorView.decorations=decorations;EditorView.darkTheme=darkTheme;EditorView.contentAttributes=contentAttributes;EditorView.editorAttributes=editorAttributes;EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"});EditorView.announce=StateEffect.define();const MaxBidiLine=4096;function ensureTop(a,e){return(a==null?e.contentDOM.getBoundingClientRect().top:a)+e.viewState.paddingTop}const BadMeasure={};class CachedOrder{constructor(e,s,o,c){this.from=e,this.to=s,this.dir=o,this.order=c}static update(e,s){if(s.empty)return e;let o=[],c=e.length?e[e.length-1].dir:Direction.LTR;for(let d=Math.max(0,e.length-10);d=0;c--){let d=o[c],_=typeof d=="function"?d(a):d;_&&combineAttrs(_,s)}return s}const currentPlatform=browser.mac?"mac":browser.windows?"win":browser.linux?"linux":"key";function normalizeKeyName(a,e){const s=a.split(/-(?!$)/);let o=s[s.length-1];o=="Space"&&(o=" ");let c,d,_,b;for(let k=0;ko.concat(c),[]))),s}function runScopeHandlers(a,e,s){return runHandlers(getKeymap(a.state),e,a,s)}let storedPrefix=null;const PrefixTimeout=4e3;function buildKeymap(a,e=currentPlatform){let s=Object.create(null),o=Object.create(null),c=(_,b)=>{let k=o[_];if(k==null)o[_]=b;else if(k!=b)throw new Error("Key binding "+_+" is used both as a regular binding and as a multi-stroke prefix")},d=(_,b,k,$)=>{let j=s[_]||(s[_]=Object.create(null)),_e=b.split(/ (?!$)/).map(nt=>normalizeKeyName(nt,e));for(let nt=1;nt<_e.length;nt++){let it=_e.slice(0,nt).join(" ");c(it,!0),j[it]||(j[it]={preventDefault:!0,commands:[rt=>{let st=storedPrefix={view:rt,prefix:it,scope:_};return setTimeout(()=>{storedPrefix==st&&(storedPrefix=null)},PrefixTimeout),!0}]})}let et=_e.join(" ");c(et,!1);let tt=j[et]||(j[et]={preventDefault:!1,commands:[]});tt.commands.push(k),$&&(tt.preventDefault=!0)};for(let _ of a){let b=_[e]||_.key;if(!!b)for(let k of _.scope?_.scope.split(" "):["editor"])d(k,b,_.run,_.preventDefault),_.shift&&d(k,"Shift-"+b,_.shift,_.preventDefault)}return s}function runHandlers(a,e,s,o){let c=keyName(e),d=c.length==1&&c!=" ",_="",b=!1;storedPrefix&&storedPrefix.view==s&&storedPrefix.scope==o&&(_=storedPrefix.prefix+" ",(b=modifierCodes.indexOf(e.keyCode)<0)&&(storedPrefix=null));let k=_e=>{if(_e){for(let et of _e.commands)if(et(s))return!0;_e.preventDefault&&(b=!0)}return!1},$=a[o],j;if($){if(k($[_+modifiers(c,e,!d)]))return!0;if(d&&(e.shiftKey||e.altKey||e.metaKey)&&(j=base[e.keyCode])&&j!=c){if(k($[_+modifiers(j,e,!0)]))return!0}else if(d&&e.shiftKey&&k($[_+modifiers(c,e,!0)]))return!0}return b}const CanHidePrimary=!browser.ios,selectionConfig=Facet.define({combine(a){return combineConfig(a,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,s)=>Math.min(e,s),drawRangeCursor:(e,s)=>e||s})}});function drawSelection(a={}){return[selectionConfig.of(a),drawSelectionPlugin,hideNativeSelection]}class Piece{constructor(e,s,o,c,d){this.left=e,this.top=s,this.width=o,this.height=c,this.className=d}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width>=0&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}}const drawSelectionPlugin=ViewPlugin.fromClass(class{constructor(a){this.view=a,this.rangePieces=[],this.cursors=[],this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.selectionLayer=a.scrollDOM.appendChild(document.createElement("div")),this.selectionLayer.className="cm-selectionLayer",this.selectionLayer.setAttribute("aria-hidden","true"),this.cursorLayer=a.scrollDOM.appendChild(document.createElement("div")),this.cursorLayer.className="cm-cursorLayer",this.cursorLayer.setAttribute("aria-hidden","true"),a.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){this.cursorLayer.style.animationDuration=this.view.state.facet(selectionConfig).cursorBlinkRate+"ms"}update(a){let e=a.startState.facet(selectionConfig)!=a.state.facet(selectionConfig);(e||a.selectionSet||a.geometryChanged||a.viewportChanged)&&this.view.requestMeasure(this.measureReq),a.transactions.some(s=>s.scrollIntoView)&&(this.cursorLayer.style.animationName=this.cursorLayer.style.animationName=="cm-blink"?"cm-blink2":"cm-blink"),e&&this.setBlinkRate()}readPos(){let{state:a}=this.view,e=a.facet(selectionConfig),s=a.selection.ranges.map(c=>c.empty?[]:measureRange(this.view,c)).reduce((c,d)=>c.concat(d)),o=[];for(let c of a.selection.ranges){let d=c==a.selection.main;if(c.empty?!d||CanHidePrimary:e.drawRangeCursor){let _=measureCursor(this.view,c,d);_&&o.push(_)}}return{rangePieces:s,cursors:o}}drawSel({rangePieces:a,cursors:e}){if(a.length!=this.rangePieces.length||a.some((s,o)=>!s.eq(this.rangePieces[o]))){this.selectionLayer.textContent="";for(let s of a)this.selectionLayer.appendChild(s.draw());this.rangePieces=a}if(e.length!=this.cursors.length||e.some((s,o)=>!s.eq(this.cursors[o]))){let s=this.cursorLayer.children;if(s.length!==e.length){this.cursorLayer.textContent="";for(const o of e)this.cursorLayer.appendChild(o.draw())}else e.forEach((o,c)=>o.adjust(s[c]));this.cursors=e}}destroy(){this.selectionLayer.remove(),this.cursorLayer.remove()}}),themeSpec={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};CanHidePrimary&&(themeSpec[".cm-line"].caretColor="transparent !important");const hideNativeSelection=Prec.highest(EditorView.theme(themeSpec));function getBase(a){let e=a.scrollDOM.getBoundingClientRect();return{left:(a.textDirection==Direction.LTR?e.left:e.right-a.scrollDOM.clientWidth)-a.scrollDOM.scrollLeft,top:e.top-a.scrollDOM.scrollTop}}function wrappedLine(a,e,s){let o=EditorSelection.cursor(e);return{from:Math.max(s.from,a.moveToLineBoundary(o,!1,!0).from),to:Math.min(s.to,a.moveToLineBoundary(o,!0,!0).from),type:BlockType.Text}}function blockAt(a,e){let s=a.lineBlockAt(e);if(Array.isArray(s.type)){for(let o of s.type)if(o.to>e||o.to==e&&(o.to==s.to||o.type==BlockType.Text))return o}return s}function measureRange(a,e){if(e.to<=a.viewport.from||e.from>=a.viewport.to)return[];let s=Math.max(e.from,a.viewport.from),o=Math.min(e.to,a.viewport.to),c=a.textDirection==Direction.LTR,d=a.contentDOM,_=d.getBoundingClientRect(),b=getBase(a),k=window.getComputedStyle(d.firstChild),$=_.left+parseInt(k.paddingLeft)+Math.min(0,parseInt(k.textIndent)),j=_.right-parseInt(k.paddingRight),_e=blockAt(a,s),et=blockAt(a,o),tt=_e.type==BlockType.Text?_e:null,nt=et.type==BlockType.Text?et:null;if(a.lineWrapping&&(tt&&(tt=wrappedLine(a,s,tt)),nt&&(nt=wrappedLine(a,o,nt))),tt&&nt&&tt.from==nt.from)return rt(st(e.from,e.to,tt));{let lt=tt?st(e.from,null,tt):ot(_e,!1),dt=nt?st(null,e.to,nt):ot(et,!0),ct=[];return(tt||_e).to<(nt||et).from-1?ct.push(it($,lt.bottom,j,dt.top)):lt.bottomEt&&ft.from=yt)break;Tt>mt&&pt(Math.max(St,mt),lt==null&&St<=Et,Math.min(Tt,yt),dt==null&&Tt>=gt,At.dir)}if(mt=vt.to+1,mt>=yt)break}return ht.length==0&&pt(Et,lt==null,gt,dt==null,a.textDirection),{top:ut,bottom:at,horizontal:ht}}function ot(lt,dt){let ct=_.top+(dt?lt.top:lt.bottom);return{top:ct,bottom:ct,horizontal:[]}}}function measureCursor(a,e,s){let o=a.coordsAtPos(e.head,e.assoc||1);if(!o)return null;let c=getBase(a);return new Piece(o.left-c.left,o.top-c.top,-1,o.bottom-o.top,s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary")}function iterMatches(a,e,s,o,c){e.lastIndex=0;for(let d=a.iterRange(s,o),_=s,b;!d.next().done;_+=d.value.length)if(!d.lineBreak)for(;b=e.exec(d.value);)c(_+b.index,_+b.index+b[0].length,b)}function matchRanges(a,e){let s=a.visibleRanges;if(s.length==1&&s[0].from==a.viewport.from&&s[0].to==a.viewport.to)return s;let o=[];for(let{from:c,to:d}of s)c=Math.max(a.state.doc.lineAt(c).from,c-e),d=Math.min(a.state.doc.lineAt(d).to,d+e),o.length&&o[o.length-1].to>=c?o[o.length-1].to=d:o.push({from:c,to:d});return o}class MatchDecorator{constructor(e){let{regexp:s,decoration:o,boundary:c,maxLength:d=1e3}=e;if(!s.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");this.regexp=s,this.getDeco=typeof o=="function"?o:()=>o,this.boundary=c,this.maxLength=d}createDeco(e){let s=new RangeSetBuilder;for(let{from:o,to:c}of matchRanges(e,this.maxLength))iterMatches(e.state.doc,this.regexp,o,c,(d,_,b)=>s.add(d,_,this.getDeco(b,e,d)));return s.finish()}updateDeco(e,s){let o=1e9,c=-1;return e.docChanged&&e.changes.iterChanges((d,_,b,k)=>{k>e.view.viewport.from&&b1e3?this.createDeco(e.view):c>-1?this.updateRange(e.view,s.map(e.changes),o,c):s}updateRange(e,s,o,c){for(let d of e.visibleRanges){let _=Math.max(d.from,o),b=Math.min(d.to,c);if(b>_){let k=e.state.doc.lineAt(_),$=k.tok.from;_--)if(this.boundary.test(k.text[_-1-k.from])){j=_;break}for(;b<$.to;b++)if(this.boundary.test($.text[b-$.from])){_e=b;break}}let et=[],tt;if(k==$)for(this.regexp.lastIndex=j-k.from;(tt=this.regexp.exec(k.text))&&tt.index<_e-k.from;){let nt=tt.index+k.from;et.push(this.getDeco(tt,e,nt).range(nt,nt+tt[0].length))}else iterMatches(e.state.doc,this.regexp,j,_e,(nt,it,rt)=>et.push(this.getDeco(rt,e,nt).range(nt,it)));s=s.update({filterFrom:j,filterTo:_e,filter:(nt,it)=>nt_e,add:et})}}return s}}const UnicodeRegexpSupport=/x/.unicode!=null?"gu":"g",Specials=new RegExp(`[\0-\b --\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\uFEFF\uFFF9-\uFFFC]`,UnicodeRegexpSupport),Names={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let _supportsTabSize=null;function supportsTabSize(){var a;if(_supportsTabSize==null&&typeof document!="undefined"&&document.body){let e=document.body.style;_supportsTabSize=((a=e.tabSize)!==null&&a!==void 0?a:e.MozTabSize)!=null}return _supportsTabSize||!1}const specialCharConfig=Facet.define({combine(a){let e=combineConfig(a,{render:null,specialChars:Specials,addSpecialChars:null});return(e.replaceTabs=!supportsTabSize())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,UnicodeRegexpSupport)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,UnicodeRegexpSupport)),e}});function highlightSpecialChars(a={}){return[specialCharConfig.of(a),specialCharPlugin()]}let _plugin=null;function specialCharPlugin(){return _plugin||(_plugin=ViewPlugin.fromClass(class{constructor(a){this.view=a,this.decorations=Decoration.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(a.state.facet(specialCharConfig)),this.decorations=this.decorator.createDeco(a)}makeDecorator(a){return new MatchDecorator({regexp:a.specialChars,decoration:(e,s,o)=>{let{doc:c}=s.state,d=codePointAt(e[0],0);if(d==9){let _=c.lineAt(o),b=s.state.tabSize,k=countColumn(_.text,b,o-_.from);return Decoration.replace({widget:new TabWidget((b-k%b)*this.view.defaultCharacterWidth)})}return this.decorationCache[d]||(this.decorationCache[d]=Decoration.replace({widget:new SpecialCharWidget(a,d)}))},boundary:a.replaceTabs?void 0:/[^]/})}update(a){let e=a.state.facet(specialCharConfig);a.startState.facet(specialCharConfig)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(a.view)):this.decorations=this.decorator.updateDeco(a,this.decorations)}},{decorations:a=>a.decorations}))}const DefaultPlaceholder="\u2022";function placeholder$1(a){return a>=32?DefaultPlaceholder:a==10?"\u2424":String.fromCharCode(9216+a)}class SpecialCharWidget extends WidgetType{constructor(e,s){super(),this.options=e,this.code=s}eq(e){return e.code==this.code}toDOM(e){let s=placeholder$1(this.code),o=e.state.phrase("Control character")+" "+(Names[this.code]||"0x"+this.code.toString(16)),c=this.options.render&&this.options.render(this.code,o,s);if(c)return c;let d=document.createElement("span");return d.textContent=s,d.title=o,d.setAttribute("aria-label",o),d.className="cm-specialChar",d}ignoreEvent(){return!1}}class TabWidget extends WidgetType{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function highlightActiveLine(){return activeLineHighlighter}const lineDeco=Decoration.line({class:"cm-activeLine"}),activeLineHighlighter=ViewPlugin.fromClass(class{constructor(a){this.decorations=this.getDeco(a)}update(a){(a.docChanged||a.selectionSet)&&(this.decorations=this.getDeco(a.view))}getDeco(a){let e=-1,s=[];for(let o of a.state.selection.ranges){if(!o.empty)return Decoration.none;let c=a.lineBlockAt(o.head);c.from>e&&(s.push(lineDeco.range(c.from)),e=c.from)}return Decoration.set(s)}},{decorations:a=>a.decorations}),fromHistory=Annotation.define(),isolateHistory=Annotation.define(),invertedEffects=Facet.define(),historyConfig=Facet.define({combine(a){return combineConfig(a,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})}});function changeEnd(a){let e=0;return a.iterChangedRanges((s,o)=>e=o),e}const historyField_=StateField.define({create(){return HistoryState.empty},update(a,e){let s=e.state.facet(historyConfig),o=e.annotation(fromHistory);if(o){let k=e.docChanged?EditorSelection.single(changeEnd(e.changes)):void 0,$=HistEvent.fromTransaction(e,k),j=o.side,_e=j==0?a.undone:a.done;return $?_e=updateBranch(_e,_e.length,s.minDepth,$):_e=addSelection(_e,e.startState.selection),new HistoryState(j==0?o.rest:_e,j==0?_e:o.rest)}let c=e.annotation(isolateHistory);if((c=="full"||c=="before")&&(a=a.isolate()),e.annotation(Transaction.addToHistory)===!1)return e.changes.empty?a:a.addMapping(e.changes.desc);let d=HistEvent.fromTransaction(e),_=e.annotation(Transaction.time),b=e.annotation(Transaction.userEvent);return d?a=a.addChanges(d,_,b,s.newGroupDelay,s.minDepth):e.selection&&(a=a.addSelection(e.startState.selection,_,b,s.newGroupDelay)),(c=="full"||c=="after")&&(a=a.isolate()),a},toJSON(a){return{done:a.done.map(e=>e.toJSON()),undone:a.undone.map(e=>e.toJSON())}},fromJSON(a){return new HistoryState(a.done.map(HistEvent.fromJSON),a.undone.map(HistEvent.fromJSON))}});function history(a={}){return[historyField_,historyConfig.of(a),EditorView.domEventHandlers({beforeinput(e,s){let o=e.inputType=="historyUndo"?undo:e.inputType=="historyRedo"?redo:null;return o?(e.preventDefault(),o(s)):!1}})]}function cmd(a,e){return function({state:s,dispatch:o}){if(!e&&s.readOnly)return!1;let c=s.field(historyField_,!1);if(!c)return!1;let d=c.pop(a,s,e);return d?(o(d),!0):!1}}const undo=cmd(0,!1),redo=cmd(1,!1),undoSelection=cmd(0,!0),redoSelection=cmd(1,!0);class HistEvent{constructor(e,s,o,c,d){this.changes=e,this.effects=s,this.mapped=o,this.startSelection=c,this.selectionsAfter=d}setSelAfter(e){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,s,o;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(s=this.mapped)===null||s===void 0?void 0:s.toJSON(),startSelection:(o=this.startSelection)===null||o===void 0?void 0:o.toJSON(),selectionsAfter:this.selectionsAfter.map(c=>c.toJSON())}}static fromJSON(e){return new HistEvent(e.changes&&ChangeSet.fromJSON(e.changes),[],e.mapped&&ChangeDesc.fromJSON(e.mapped),e.startSelection&&EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(EditorSelection.fromJSON))}static fromTransaction(e,s){let o=none$1;for(let c of e.startState.facet(invertedEffects)){let d=c(e);d.length&&(o=o.concat(d))}return!o.length&&e.changes.empty?null:new HistEvent(e.changes.invert(e.startState.doc),o,void 0,s||e.startState.selection,none$1)}static selection(e){return new HistEvent(void 0,none$1,void 0,void 0,e)}}function updateBranch(a,e,s,o){let c=e+1>s+20?e-s-1:0,d=a.slice(c,e);return d.push(o),d}function isAdjacent(a,e){let s=[],o=!1;return a.iterChangedRanges((c,d)=>s.push(c,d)),e.iterChangedRanges((c,d,_,b)=>{for(let k=0;k=$&&_<=j&&(o=!0)}}),o}function eqSelectionShape(a,e){return a.ranges.length==e.ranges.length&&a.ranges.filter((s,o)=>s.empty!=e.ranges[o].empty).length===0}function conc(a,e){return a.length?e.length?a.concat(e):a:e}const none$1=[],MaxSelectionsPerEvent=200;function addSelection(a,e){if(a.length){let s=a[a.length-1],o=s.selectionsAfter.slice(Math.max(0,s.selectionsAfter.length-MaxSelectionsPerEvent));return o.length&&o[o.length-1].eq(e)?a:(o.push(e),updateBranch(a,a.length-1,1e9,s.setSelAfter(o)))}else return[HistEvent.selection([e])]}function popSelection(a){let e=a[a.length-1],s=a.slice();return s[a.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),s}function addMappingToBranch(a,e){if(!a.length)return a;let s=a.length,o=none$1;for(;s;){let c=mapEvent(a[s-1],e,o);if(c.changes&&!c.changes.empty||c.effects.length){let d=a.slice(0,s);return d[s-1]=c,d}else e=c.mapped,s--,o=c.selectionsAfter}return o.length?[HistEvent.selection(o)]:none$1}function mapEvent(a,e,s){let o=conc(a.selectionsAfter.length?a.selectionsAfter.map(b=>b.map(e)):none$1,s);if(!a.changes)return HistEvent.selection(o);let c=a.changes.map(e),d=e.mapDesc(a.changes,!0),_=a.mapped?a.mapped.composeDesc(d):d;return new HistEvent(c,StateEffect.mapEffects(a.effects,e),_,a.startSelection.map(d),o)}const joinableUserEvent=/^(input\.type|delete)($|\.)/;class HistoryState{constructor(e,s,o=0,c=void 0){this.done=e,this.undone=s,this.prevTime=o,this.prevUserEvent=c}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this}addChanges(e,s,o,c,d){let _=this.done,b=_[_.length-1];return b&&b.changes&&!b.changes.empty&&e.changes&&(!o||joinableUserEvent.test(o))&&(!b.selectionsAfter.length&&s-this.prevTime0&&s-this.prevTime{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=NodeType.match(e)),s=>{let o=e(s);return o===void 0?null:[this,o]}}}NodeProp.closedBy=new NodeProp({deserialize:a=>a.split(" ")});NodeProp.openedBy=new NodeProp({deserialize:a=>a.split(" ")});NodeProp.group=new NodeProp({deserialize:a=>a.split(" ")});NodeProp.contextHash=new NodeProp({perNode:!0});NodeProp.lookAhead=new NodeProp({perNode:!0});NodeProp.mounted=new NodeProp({perNode:!0});const noProps=Object.create(null);class NodeType{constructor(e,s,o,c=0){this.name=e,this.props=s,this.id=o,this.flags=c}static define(e){let s=e.props&&e.props.length?Object.create(null):noProps,o=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),c=new NodeType(e.name||"",s,e.id,o);if(e.props){for(let d of e.props)if(Array.isArray(d)||(d=d(c)),d){if(d[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");s[d[0].id]=d[1]}}return c}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let s=this.prop(NodeProp.group);return s?s.indexOf(e)>-1:!1}return this.id==e}static match(e){let s=Object.create(null);for(let o in e)for(let c of o.split(" "))s[c]=e[o];return o=>{for(let c=o.prop(NodeProp.group),d=-1;d<(c?c.length:0);d++){let _=s[d<0?o.name:c[d]];if(_)return _}}}}NodeType.none=new NodeType("",Object.create(null),0,8);class NodeSet{constructor(e){this.types=e;for(let s=0;s_.node;;){let k=!1;if(_.from<=d&&_.to>=c&&(_.type.isAnonymous||s(_.type,_.from,_.to,b)!==!1)){if(_.firstChild())continue;_.type.isAnonymous||(k=!0)}for(;k&&o&&o(_.type,_.from,_.to,b),k=_.type.isAnonymous,!_.nextSibling();){if(!_.parent())return;k=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let s in this.props)e.push([+s,this.props[s]]);return e}balance(e={}){return this.children.length<=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(s,o,c)=>new Tree(this.type,s,o,c,this.propValues),e.makeTree||((s,o,c)=>new Tree(NodeType.none,s,o,c)))}static build(e){return buildTree(e)}}Tree.empty=new Tree(NodeType.none,[],[],0);class FlatBufferCursor{constructor(e,s){this.buffer=e,this.index=s}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}}class TreeBuffer{constructor(e,s,o){this.buffer=e,this.length=s,this.set=o}get type(){return NodeType.none}toString(){let e=[];for(let s=0;s0));k=_[k+3]);return b}slice(e,s,o,c){let d=this.buffer,_=new Uint16Array(s-e);for(let b=e,k=0;b=e&&se;case 1:return s<=e&&o>e;case 2:return o>e;case 4:return!0}}function enterUnfinishedNodesBefore(a,e){let s=a.childBefore(e);for(;s;){let o=s.lastChild;if(!o||o.to!=s.to)break;o.type.isError&&o.from==o.to?(a=s,s=o.prevSibling):s=o}return a}function resolveNode(a,e,s,o){for(var c;a.from==a.to||(s<1?a.from>=e:a.from>e)||(s>-1?a.to<=e:a.to0?b.length:-1;e!=$;e+=s){let j=b[e],_e=k[e]+_._from;if(!!checkSide(c,o,_e,_e+j.length)){if(j instanceof TreeBuffer){if(d&2)continue;let et=j.findChild(0,j.buffer.length,s,o-_e,c);if(et>-1)return new BufferNode(new BufferContext(_,j,e,_e),null,et)}else if(d&1||!j.type.isAnonymous||hasChild(j)){let et;if(!(d&1)&&j.props&&(et=j.prop(NodeProp.mounted))&&!et.overlay)return new TreeNode(et.tree,_e,e,_);let tt=new TreeNode(j,_e,e,_);return d&1||!tt.type.isAnonymous?tt:tt.nextChild(s<0?j.children.length-1:0,s,o,c)}}}if(d&1||!_.type.isAnonymous||(_.index>=0?e=_.index+s:e=s<0?-1:_._parent.node.children.length,_=_._parent,!_))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this.node.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this.node.children.length-1,-1,e,-2)}enter(e,s,o=!0,c=!0){let d;if(o&&(d=this.node.prop(NodeProp.mounted))&&d.overlay){let _=e-this.from;for(let{from:b,to:k}of d.overlay)if((s>0?b<=_:b<_)&&(s<0?k>=_:k>_))return new TreeNode(d.tree,d.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,s,c?0:2)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get cursor(){return new TreeCursor(this)}get tree(){return this.node}toTree(){return this.node}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}getChild(e,s=null,o=null){let c=getChildren(this,e,s,o);return c.length?c[0]:null}getChildren(e,s=null,o=null){return getChildren(this,e,s,o)}toString(){return this.node.toString()}}function getChildren(a,e,s,o){let c=a.cursor,d=[];if(!c.firstChild())return d;if(s!=null){for(;!c.type.is(s);)if(!c.nextSibling())return d}for(;;){if(o!=null&&c.type.is(o))return d;if(c.type.is(e)&&d.push(c.node),!c.nextSibling())return o==null?d:[]}}class BufferContext{constructor(e,s,o,c){this.parent=e,this.buffer=s,this.index=o,this.start=c}}class BufferNode{constructor(e,s,o){this.context=e,this._parent=s,this.index=o,this.type=e.buffer.set.types[e.buffer.buffer[o]]}get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}child(e,s,o){let{buffer:c}=this.context,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.context.start,o);return d<0?null:new BufferNode(this.context,this,d)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,s,o,c=!0){if(!c)return null;let{buffer:d}=this.context,_=d.findChild(this.index+4,d.buffer[this.index+3],s>0?1:-1,e-this.context.start,s);return _<0?null:new BufferNode(this.context,this,_)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,s=e.buffer[this.index+3];return s<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new BufferNode(this.context,this._parent,s):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,s=this._parent?this._parent.index+4:0;return this.index==s?this.externalSibling(-1):new BufferNode(this.context,this._parent,e.findChild(s,this.index,-1,0,4))}get cursor(){return new TreeCursor(this)}get tree(){return null}toTree(){let e=[],s=[],{buffer:o}=this.context,c=this.index+4,d=o.buffer[this.index+3];if(d>c){let _=o.buffer[this.index+1],b=o.buffer[this.index+2];e.push(o.slice(c,d,_,b)),s.push(0)}return new Tree(this.type,e,s,this.to-this.from)}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,s=null,o=null){let c=getChildren(this,e,s,o);return c.length?c[0]:null}getChildren(e,s=null,o=null){return getChildren(this,e,s,o)}}class TreeCursor{constructor(e,s=0){if(this.mode=s,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof TreeNode)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let o=e._parent;o;o=o._parent)this.stack.unshift(o.index);this.bufferNode=e,this.yieldBuf(e.index)}}get name(){return this.type.name}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,s){this.index=e;let{start:o,buffer:c}=this.buffer;return this.type=s||c.set.types[c.buffer[e]],this.from=o+c.buffer[e+1],this.to=o+c.buffer[e+2],!0}yield(e){return e?e instanceof TreeNode?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,s,o){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree.node.children.length-1:0,e,s,o,this.mode));let{buffer:c}=this.buffer,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.buffer.start,o);return d<0?!1:(this.stack.push(this.index),this.yieldBuf(d))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,s,o=!0,c=!0){return this.buffer?c?this.enterChild(1,e,s):!1:this.yield(this._tree.enter(e,s,o&&!(this.mode&1),c))}parent(){if(!this.buffer)return this.yieldNode(this.mode&1?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&1?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:s}=this.buffer,o=this.stack.length-1;if(e<0){let c=o<0?0:this.stack[o]+4;if(this.index!=c)return this.yieldBuf(s.findChild(c,this.index,-1,0,4))}else{let c=s.buffer[this.index+3];if(c<(o<0?s.buffer.length:s.buffer[this.stack[o]+3]))return this.yieldBuf(c)}return o<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let s,o,{buffer:c}=this;if(c){if(e>0){if(this.index-1)for(let d=s+e,_=e<0?-1:o.node.children.length;d!=_;d+=e){let b=o.node.children[d];if(this.mode&1||b instanceof TreeBuffer||!b.type.isAnonymous||hasChild(b))return!1}return!0}move(e,s){if(s&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,s=0){for(;(this.from==this.to||(s<1?this.from>=e:this.from>e)||(s>-1?this.to<=e:this.to=0;){for(let _=e;_;_=_._parent)if(_.index==c){if(c==this.index)return _;s=_,o=d+1;break e}c=this.stack[--d]}}for(let c=o;ce instanceof TreeBuffer||!e.type.isAnonymous||hasChild(e))}function buildTree(a){var e;let{buffer:s,nodeSet:o,maxBufferLength:c=DefaultBufferLength,reused:d=[],minRepeatType:_=o.types.length}=a,b=Array.isArray(s)?new FlatBufferCursor(s,s.length):s,k=o.types,$=0,j=0;function _e(dt,ct,ut,at,ht){let{id:pt,start:Et,end:gt,size:ft}=b,mt=j;for(;ft<0;)if(b.next(),ft==-1){let Tt=d[pt];ut.push(Tt),at.push(Et-dt);return}else if(ft==-3){$=pt;return}else if(ft==-4){j=pt;return}else throw new RangeError(`Unrecognized record size: ${ft}`);let yt=k[pt],vt,At,St=Et-dt;if(gt-Et<=c&&(At=it(b.pos-ct,ht))){let Tt=new Uint16Array(At.size-At.skip),Dt=b.pos-At.size,xt=Tt.length;for(;b.pos>Dt;)xt=rt(At.start,Tt,xt);vt=new TreeBuffer(Tt,gt-At.start,o),St=At.start-dt}else{let Tt=b.pos-ft;b.next();let Dt=[],xt=[],Ct=pt>=_?pt:-1,bt=0,$t=gt;for(;b.pos>Tt;)Ct>=0&&b.id==Ct&&b.size>=0?(b.end<=$t-c&&(tt(Dt,xt,Et,bt,b.end,$t,Ct,mt),bt=Dt.length,$t=b.end),b.next()):_e(Et,Tt,Dt,xt,Ct);if(Ct>=0&&bt>0&&bt-1&&bt>0){let It=et(yt);vt=balanceRange(yt,Dt,xt,0,Dt.length,0,gt-Et,It,It)}else vt=nt(yt,Dt,xt,gt-Et,mt-gt)}ut.push(vt),at.push(St)}function et(dt){return(ct,ut,at)=>{let ht=0,pt=ct.length-1,Et,gt;if(pt>=0&&(Et=ct[pt])instanceof Tree){if(!pt&&Et.type==dt&&Et.length==at)return Et;(gt=Et.prop(NodeProp.lookAhead))&&(ht=ut[pt]+Et.length+gt)}return nt(dt,ct,ut,at,ht)}}function tt(dt,ct,ut,at,ht,pt,Et,gt){let ft=[],mt=[];for(;dt.length>at;)ft.push(dt.pop()),mt.push(ct.pop()+ut-ht);dt.push(nt(o.types[Et],ft,mt,pt-ht,gt-pt)),ct.push(ht-ut)}function nt(dt,ct,ut,at,ht=0,pt){if($){let Et=[NodeProp.contextHash,$];pt=pt?[Et].concat(pt):[Et]}if(ht>25){let Et=[NodeProp.lookAhead,ht];pt=pt?[Et].concat(pt):[Et]}return new Tree(dt,ct,ut,at,pt)}function it(dt,ct){let ut=b.fork(),at=0,ht=0,pt=0,Et=ut.end-c,gt={size:0,start:0,skip:0};e:for(let ft=ut.pos-dt;ut.pos>ft;){let mt=ut.size;if(ut.id==ct&&mt>=0){gt.size=at,gt.start=ht,gt.skip=pt,pt+=4,at+=4,ut.next();continue}let yt=ut.pos-mt;if(mt<0||yt=_?4:0,At=ut.start;for(ut.next();ut.pos>yt;){if(ut.size<0)if(ut.size==-3)vt+=4;else break e;else ut.id>=_&&(vt+=4);ut.next()}ht=At,at+=mt,pt+=vt}return(ct<0||at==dt)&&(gt.size=at,gt.start=ht,gt.skip=pt),gt.size>4?gt:void 0}function rt(dt,ct,ut){let{id:at,start:ht,end:pt,size:Et}=b;if(b.next(),Et>=0&&at<_){let gt=ut;if(Et>4){let ft=b.pos-(Et-4);for(;b.pos>ft;)ut=rt(dt,ct,ut)}ct[--ut]=gt,ct[--ut]=pt-dt,ct[--ut]=ht-dt,ct[--ut]=at}else Et==-3?$=at:Et==-4&&(j=at);return ut}let st=[],ot=[];for(;b.pos>0;)_e(a.start||0,a.bufferStart||0,st,ot,-1);let lt=(e=a.length)!==null&&e!==void 0?e:st.length?ot[0]+st[0].length:0;return new Tree(k[a.topID],st.reverse(),ot.reverse(),lt)}const nodeSizeCache=new WeakMap;function nodeSize(a,e){if(!a.isAnonymous||e instanceof TreeBuffer||e.type!=a)return 1;let s=nodeSizeCache.get(e);if(s==null){s=1;for(let o of e.children){if(o.type!=a||!(o instanceof Tree)){s=1;break}s+=nodeSize(a,o)}nodeSizeCache.set(e,s)}return s}function balanceRange(a,e,s,o,c,d,_,b,k){let $=0;for(let nt=o;nt=j)break;ut+=at}if(lt==dt+1){if(ut>j){let at=nt[dt];tt(at.children,at.positions,0,at.children.length,it[dt]+ot);continue}_e.push(nt[dt])}else{let at=it[lt-1]+nt[lt-1].length-ct;_e.push(balanceRange(a,nt,it,dt,lt,ct,at,null,k))}et.push(ct+ot-d)}}return tt(e,s,o,c,0),(b||k)(_e,et,_)}class TreeFragment{constructor(e,s,o,c,d=!1,_=!1){this.from=e,this.to=s,this.tree=o,this.offset=c,this.open=(d?1:0)|(_?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,s=[],o=!1){let c=[new TreeFragment(0,e.length,e,0,!1,o)];for(let d of s)d.to>e.length&&c.push(d);return c}static applyChanges(e,s,o=128){if(!s.length)return e;let c=[],d=1,_=e.length?e[0]:null;for(let b=0,k=0,$=0;;b++){let j=b=o)for(;_&&_.from<_e;){let et=_;if(k>=et.from||_e<=et.to||$){let tt=Math.max(et.from,k)-$,nt=Math.min(et.to,_e)-$;et=tt>=nt?null:new TreeFragment(tt,nt,et.tree,et.offset+$,b>0,!!j)}if(et&&c.push(et),_.to>_e)break;_=dnew Range(c.from,c.to)):[new Range(0,0)]:[new Range(0,e.length)],this.createParse(e,s||[],o)}parse(e,s,o){let c=this.startParse(e,s,o);for(;;){let d=c.advance();if(d)return d}}}class StringInput{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,s){return this.string.slice(e,s)}}new NodeProp({perNode:!0});var _a;const languageDataProp=new NodeProp;function defineLanguageFacet(a){return Facet.define({combine:a?e=>e.concat(a):void 0})}class Language{constructor(e,s,o,c=[]){this.data=e,this.topNode=o,EditorState.prototype.hasOwnProperty("tree")||Object.defineProperty(EditorState.prototype,"tree",{get(){return syntaxTree(this)}}),this.parser=s,this.extension=[language.of(this),EditorState.languageData.of((d,_,b)=>d.facet(languageDataFacetAt(d,_,b)))].concat(c)}isActiveAt(e,s,o=-1){return languageDataFacetAt(e,s,o)==this.data}findRegions(e){let s=e.facet(language);if((s==null?void 0:s.data)==this.data)return[{from:0,to:e.doc.length}];if(!s||!s.allowsNesting)return[];let o=[],c=(d,_)=>{if(d.prop(languageDataProp)==this.data){o.push({from:_,to:_+d.length});return}let b=d.prop(NodeProp.mounted);if(b){if(b.tree.prop(languageDataProp)==this.data){if(b.overlay)for(let k of b.overlay)o.push({from:k.from+_,to:k.to+_});else o.push({from:_,to:_+d.length});return}else if(b.overlay){let k=o.length;if(c(b.tree,b.overlay[0].from+_),o.length>k)return}}for(let k=0;ko.isTop?s:void 0)]}))}configure(e){return new LRLanguage(this.data,this.parser.configure(e))}get allowsNesting(){return this.parser.wrappers.length>0}}function syntaxTree(a){let e=a.field(Language.state,!1);return e?e.tree:Tree.empty}class DocInput{constructor(e,s=e.length){this.doc=e,this.length=s,this.cursorPos=0,this.string="",this.cursor=e.iter()}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,s){let o=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,s):this.string.slice(e-o,s-o)}}let currentContext=null;class ParseContext{constructor(e,s,o=[],c,d,_,b,k){this.parser=e,this.state=s,this.fragments=o,this.tree=c,this.treeLen=d,this.viewport=_,this.skipped=b,this.scheduleOn=k,this.parse=null,this.tempSkipped=[]}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(e,s){return s!=null&&s>=this.state.doc.length&&(s=void 0),this.tree!=Tree.empty&&this.isDone(s!=null?s:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var o;if(typeof e=="number"){let c=Date.now()+e;e=()=>Date.now()>c}for(this.parse||(this.parse=this.startParse()),s!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>s)&&s=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(s=this.parse.advance()););}),this.treeLen=e,this.tree=s,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let s=currentContext;currentContext=this;try{return e()}finally{currentContext=s}}withoutTempSkipped(e){for(let s;s=this.tempSkipped.pop();)e=cutFragments(e,s.from,s.to);return e}changes(e,s){let{fragments:o,tree:c,treeLen:d,viewport:_,skipped:b}=this;if(this.takeTree(),!e.empty){let k=[];if(e.iterChangedRanges(($,j,_e,et)=>k.push({fromA:$,toA:j,fromB:_e,toB:et})),o=TreeFragment.applyChanges(o,k),c=Tree.empty,d=0,_={from:e.mapPos(_.from,-1),to:e.mapPos(_.to,1)},this.skipped.length){b=[];for(let $ of this.skipped){let j=e.mapPos($.from,1),_e=e.mapPos($.to,-1);j<_e&&b.push({from:j,to:_e})}}}return new ParseContext(this.parser,s,o,c,d,_,b,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let s=this.skipped.length;for(let o=0;oe.from&&(this.fragments=cutFragments(this.fragments,c,d),this.skipped.splice(o--,1))}return this.skipped.length>=s?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,s){this.skipped.push({from:e,to:s})}static getSkippingParser(e){return new class extends Parser{createParse(s,o,c){let d=c[0].from,_=c[c.length-1].to;return{parsedPos:d,advance(){let k=currentContext;if(k){for(let $ of c)k.tempSkipped.push($);e&&(k.scheduleOn=k.scheduleOn?Promise.all([k.scheduleOn,e]):e)}return this.parsedPos=_,new Tree(NodeType.none,[],[],_-d)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let s=this.fragments;return this.treeLen>=e&&s.length&&s[0].from==0&&s[0].to>=e}static get(){return currentContext}}function cutFragments(a,e,s){return TreeFragment.applyChanges(a,[{fromA:e,toA:s,fromB:e,toB:s}])}class LanguageState{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let s=this.context.changes(e.changes,e.state),o=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),s.viewport.to);return s.work(20,o)||s.takeTree(),new LanguageState(s)}static init(e){let s=Math.min(3e3,e.doc.length),o=new ParseContext(e.facet(language).parser,e,[],Tree.empty,0,{from:0,to:s},[],null);return o.work(20,s)||o.takeTree(),new LanguageState(o)}}Language.state=StateField.define({create:LanguageState.init,update(a,e){for(let s of e.effects)if(s.is(Language.setState))return s.value;return e.startState.facet(language)!=e.state.facet(language)?LanguageState.init(e.state):a.apply(e)}});let requestIdle=a=>{let e=setTimeout(()=>a(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(requestIdle=a=>{let e=-1,s=setTimeout(()=>{e=requestIdleCallback(a,{timeout:500-100})},100);return()=>e<0?clearTimeout(s):cancelIdleCallback(e)});const isInputPending=typeof navigator!="undefined"&&((_a=navigator.scheduling)===null||_a===void 0?void 0:_a.isInputPending)?()=>navigator.scheduling.isInputPending():null,parseWorker=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let s=this.view.state.field(Language.state).context;(s.updateViewport(e.view.viewport)||this.view.viewport.to>s.treeLen)&&this.scheduleWork(),e.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(s)}scheduleWork(){if(this.working)return;let{state:e}=this.view,s=e.field(Language.state);(s.tree!=s.context.tree||!s.context.isDone(e.doc.length))&&(this.working=requestIdle(this.work))}work(e){this.working=null;let s=Date.now();if(this.chunkEndc+1e3,k=d.context.work(()=>isInputPending&&isInputPending()||Date.now()>_,c+(b?0:1e5));this.chunkBudget-=Date.now()-s,(k||this.chunkBudget<=0)&&(d.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(d.context))})),this.chunkBudget>0&&!(k&&!b)&&this.scheduleWork(),this.checkAsyncSchedule(d.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(s=>logException(this.view.state,s)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(a){return a.length?a[0]:null},enables:[Language.state,parseWorker]});class LanguageSupport{constructor(e,s=[]){this.language=e,this.support=s,this.extension=[e,s]}}const indentService=Facet.define(),indentUnit=Facet.define({combine:a=>{if(!a.length)return" ";if(!/^(?: +|\t+)$/.test(a[0]))throw new Error("Invalid indent unit: "+JSON.stringify(a[0]));return a[0]}});function getIndentUnit(a){let e=a.facet(indentUnit);return e.charCodeAt(0)==9?a.tabSize*e.length:e.length}function indentString(a,e){let s="",o=a.tabSize;if(a.facet(indentUnit).charCodeAt(0)==9)for(;e>=o;)s+=" ",e-=o;for(let c=0;c=o.from&&c<=o.to?d&&c==e?{text:"",from:e}:(s<0?c-1&&(d+=_-this.countColumn(o,o.search(/\S|$/))),d}countColumn(e,s=e.length){return countColumn(e,this.state.tabSize,s)}lineIndent(e,s=1){let{text:o,from:c}=this.lineAt(e,s),d=this.options.overrideIndentation;if(d){let _=d(c);if(_>-1)return _}return this.countColumn(o,o.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const indentNodeProp=new NodeProp;function syntaxIndentation(a,e,s){return indentFrom(e.resolveInner(s).enterUnfinishedNodesBefore(s),s,a)}function ignoreClosed(a){return a.pos==a.options.simulateBreak&&a.options.simulateDoubleBreak}function indentStrategy(a){let e=a.type.prop(indentNodeProp);if(e)return e;let s=a.firstChild,o;if(s&&(o=s.type.prop(NodeProp.closedBy))){let c=a.lastChild,d=c&&o.indexOf(c.name)>-1;return _=>delimitedStrategy(_,!0,1,void 0,d&&!ignoreClosed(_)?c.from:void 0)}return a.parent==null?topIndent:null}function indentFrom(a,e,s){for(;a;a=a.parent){let o=indentStrategy(a);if(o)return o(new TreeIndentContext(s,e,a))}return null}function topIndent(){return 0}class TreeIndentContext extends IndentContext{constructor(e,s,o){super(e.state,e.options),this.base=e,this.pos=s,this.node=o}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){let e=this.state.doc.lineAt(this.node.from);for(;;){let s=this.node.resolve(e.from);for(;s.parent&&s.parent.from==s.from;)s=s.parent;if(isParent(s,this.node))break;e=this.state.doc.lineAt(s.from)}return this.lineIndent(e.from)}continue(){let e=this.node.parent;return e?indentFrom(e,this.pos,this.base):0}}function isParent(a,e){for(let s=e;s;s=s.parent)if(a==s)return!0;return!1}function bracketedAligned(a){let e=a.node,s=e.childAfter(e.from),o=e.lastChild;if(!s)return null;let c=a.options.simulateBreak,d=a.state.doc.lineAt(s.from),_=c==null||c<=d.from?d.to:Math.min(d.to,c);for(let b=s.to;;){let k=e.childAfter(b);if(!k||k==o)return null;if(!k.type.isSkipped)return k.from<_?s:null;b=k.to}}function delimitedIndent({closing:a,align:e=!0,units:s=1}){return o=>delimitedStrategy(o,e,s,a)}function delimitedStrategy(a,e,s,o,c){let d=a.textAfter,_=d.match(/^\s*/)[0].length,b=o&&d.slice(_,_+o.length)==o||c==a.pos+_,k=e?bracketedAligned(a):null;return k?b?a.column(k.from):a.column(k.to):a.baseIndent+(b?0:a.unit*s)}const flatIndent=a=>a.baseIndent;function continuedIndent({except:a,units:e=1}={}){return s=>{let o=a&&a.test(s.textAfter);return s.baseIndent+(o?0:e*s.unit)}}const DontIndentBeyond=200;function indentOnInput(){return EditorState.transactionFilter.of(a=>{if(!a.docChanged||!a.isUserEvent("input.type")&&!a.isUserEvent("input.complete"))return a;let e=a.startState.languageDataAt("indentOnInput",a.startState.selection.main.head);if(!e.length)return a;let s=a.newDoc,{head:o}=a.newSelection.main,c=s.lineAt(o);if(o>c.from+DontIndentBeyond)return a;let d=s.sliceString(c.from,o);if(!e.some($=>$.test(d)))return a;let{state:_}=a,b=-1,k=[];for(let{head:$}of _.selection.ranges){let j=_.doc.lineAt($);if(j.from==b)continue;b=j.from;let _e=getIndentation(_,j.from);if(_e==null)continue;let et=/^\s*/.exec(j.text)[0],tt=indentString(_,_e);et!=tt&&k.push({from:j.from,to:j.from+et.length,insert:tt})}return k.length?[a,{changes:k,sequential:!0}]:a})}const foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside$1(a){let e=a.firstChild,s=a.lastChild;return e&&e.tos)continue;if(d&&_.from=e&&k.to>s&&(d=k)}}return d}function isUnfinished(a){let e=a.lastChild;return e&&e.to==a.to&&e.type.isError}function foldable(a,e,s){for(let o of a.facet(foldService)){let c=o(a,e,s);if(c)return c}return syntaxFolding(a,e,s)}class GutterMarker extends RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}GutterMarker.prototype.elementClass="";GutterMarker.prototype.toDOM=void 0;GutterMarker.prototype.mapMode=MapMode.TrackBefore;GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1;GutterMarker.prototype.point=!0;const gutterLineClass=Facet.define(),defaults$1={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>RangeSet.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},activeGutters=Facet.define();function gutter(a){return[gutters(),activeGutters.of(Object.assign(Object.assign({},defaults$1),a))]}const baseTheme$7=EditorView.baseTheme({".cm-gutters":{display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#999",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"}}),unfixGutters=Facet.define({combine:a=>a.some(e=>e)});function gutters(a){let e=[gutterView,baseTheme$7];return a&&a.fixed===!1&&e.push(unfixGutters.of(!0)),e}const gutterView=ViewPlugin.fromClass(class{constructor(a){this.view=a,this.prevViewport=a.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=a.state.facet(activeGutters).map(e=>new SingleGutterView(a,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!a.state.facet(unfixGutters),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),a.scrollDOM.insertBefore(this.dom,a.contentDOM)}update(a){if(this.updateGutters(a)){let e=this.prevViewport,s=a.view.viewport,o=Math.min(e.to,s.to)-Math.max(e.from,s.from);this.syncGutters(o<(s.to-s.from)*.8)}a.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(unfixGutters)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=a.view.viewport}syncGutters(a){let e=this.dom.nextSibling;a&&this.dom.remove();let s=RangeSet.iter(this.view.state.facet(gutterLineClass),this.view.viewport.from),o=[],c=this.gutters.map(d=>new UpdateContext(d,this.view.viewport,-this.view.documentPadding.top));for(let d of this.view.viewportLineBlocks){let _;if(Array.isArray(d.type)){for(let b of d.type)if(b.type==BlockType.Text){_=b;break}}else _=d.type==BlockType.Text?d:void 0;if(!!_){o.length&&(o=[]),advanceCursor(s,o,d.from);for(let b of c)b.line(this.view,_,o)}}for(let d of c)d.finish();a&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(a){let e=a.startState.facet(activeGutters),s=a.state.facet(activeGutters),o=a.docChanged||a.heightChanged||a.viewportChanged||!RangeSet.eq(a.startState.facet(gutterLineClass),a.state.facet(gutterLineClass),a.view.viewport.from,a.view.viewport.to);if(e==s)for(let c of this.gutters)c.update(a)&&(o=!0);else{o=!0;let c=[];for(let d of s){let _=e.indexOf(d);_<0?c.push(new SingleGutterView(this.view,d)):(this.gutters[_].update(a),c.push(this.gutters[_]))}for(let d of this.gutters)d.dom.remove(),c.indexOf(d)<0&&d.destroy();for(let d of c)this.dom.appendChild(d.dom);this.gutters=c}return o}destroy(){for(let a of this.gutters)a.destroy();this.dom.remove()}},{provide:PluginField.scrollMargins.from(a=>a.gutters.length==0||!a.fixed?null:a.view.textDirection==Direction.LTR?{left:a.dom.offsetWidth}:{right:a.dom.offsetWidth})});function asArray(a){return Array.isArray(a)?a:[a]}function advanceCursor(a,e,s){for(;a.value&&a.from<=s;)a.from==s&&e.push(a.value),a.next()}class UpdateContext{constructor(e,s,o){this.gutter=e,this.height=o,this.localMarkers=[],this.i=0,this.cursor=RangeSet.iter(e.markers,s.from)}line(e,s,o){this.localMarkers.length&&(this.localMarkers=[]),advanceCursor(this.cursor,this.localMarkers,s.from);let c=o.length?this.localMarkers.concat(o):this.localMarkers,d=this.gutter.config.lineMarker(e,s,c);d&&c.unshift(d);let _=this.gutter;if(c.length==0&&!_.config.renderEmptyElements)return;let b=s.top-this.height;if(this.i==_.elements.length){let k=new GutterElement(e,s.height,b,c);_.elements.push(k),_.dom.appendChild(k.dom)}else _.elements[this.i].update(e,s.height,b,c);this.height=s.bottom,this.i++}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let s=e.elements.pop();e.dom.removeChild(s.dom),s.destroy()}}}class SingleGutterView{constructor(e,s){this.view=e,this.config=s,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let o in s.domEventHandlers)this.dom.addEventListener(o,c=>{let d=e.lineBlockAtHeight(c.clientY-e.documentTop);s.domEventHandlers[o](e,d,c)&&c.preventDefault()});this.markers=asArray(s.markers(e)),s.initialSpacer&&(this.spacer=new GutterElement(e,0,0,[s.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let s=this.markers;if(this.markers=asArray(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let c=this.config.updateSpacer(this.spacer.markers[0],e);c!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[c])}let o=e.view.viewport;return!RangeSet.eq(this.markers,s,o.from,o.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class GutterElement{constructor(e,s,o,c){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.update(e,s,o,c)}update(e,s,o,c){this.height!=s&&(this.dom.style.height=(this.height=s)+"px"),this.above!=o&&(this.dom.style.marginTop=(this.above=o)?o+"px":""),sameMarkers(this.markers,c)||this.setMarkers(e,c)}setMarkers(e,s){let o="cm-gutterElement",c=this.dom.firstChild;for(let d=0,_=0;;){let b=_,k=dd(b,k,$)||_(b,k,$):_}return o}})}});class NumberMarker extends GutterMarker{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function formatNumber(a,e){return a.state.facet(lineNumberConfig).formatNumber(e,a.state)}const lineNumberGutter=activeGutters.compute([lineNumberConfig],a=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(lineNumberMarkers)},lineMarker(e,s,o){return o.some(c=>c.toDOM)?null:new NumberMarker(formatNumber(e,e.state.doc.lineAt(s.from).number))},lineMarkerChange:e=>e.startState.facet(lineNumberConfig)!=e.state.facet(lineNumberConfig),initialSpacer(e){return new NumberMarker(formatNumber(e,maxLineNumber(e.state.doc.lines)))},updateSpacer(e,s){let o=formatNumber(s.view,maxLineNumber(s.view.state.doc.lines));return o==e.number?e:new NumberMarker(o)},domEventHandlers:a.facet(lineNumberConfig).domEventHandlers}));function lineNumbers(a={}){return[lineNumberConfig.of(a),gutters(),lineNumberGutter]}function maxLineNumber(a){let e=9;for(;e{let e=[],s=-1;for(let o of a.selection.ranges)if(o.empty){let c=a.doc.lineAt(o.head).from;c>s&&(s=c,e.push(activeLineGutterMarker.range(c)))}return RangeSet.of(e)});function highlightActiveLineGutter(){return activeLineGutterHighlighter}function mapRange(a,e){let s=e.mapPos(a.from,1),o=e.mapPos(a.to,-1);return s>=o?void 0:{from:s,to:o}}const foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(a){let e=[];for(let{head:s}of a.state.selection.ranges)e.some(o=>o.from<=s&&o.to>=s)||e.push(a.lineBlockAt(s));return e}const foldState=StateField.define({create(){return Decoration.none},update(a,e){a=a.map(e.changes);for(let s of e.effects)s.is(foldEffect)&&!foldExists(a,s.value.from,s.value.to)?a=a.update({add:[foldWidget.range(s.value.from,s.value.to)]}):s.is(unfoldEffect)&&(a=a.update({filter:(o,c)=>s.value.from!=o||s.value.to!=c,filterFrom:s.value.from,filterTo:s.value.to}));if(e.selection){let s=!1,{head:o}=e.selection.main;a.between(o,o,(c,d)=>{co&&(s=!0)}),s&&(a=a.update({filterFrom:o,filterTo:o,filter:(c,d)=>d<=o||c>=o}))}return a},provide:a=>EditorView.decorations.from(a)});function foldInside(a,e,s){var o;let c=null;return(o=a.field(foldState,!1))===null||o===void 0||o.between(e,s,(d,_)=>{(!c||c.from>d)&&(c={from:d,to:_})}),c}function foldExists(a,e,s){let o=!1;return a.between(e,e,(c,d)=>{c==e&&d==s&&(o=!0)}),o}function maybeEnable(a,e){return a.field(foldState,!1)?e:e.concat(StateEffect.appendConfig.of(codeFolding()))}const foldCode=a=>{for(let e of selectedLines(a)){let s=foldable(a.state,e.from,e.to);if(s)return a.dispatch({effects:maybeEnable(a.state,[foldEffect.of(s),announceFold(a,s)])}),!0}return!1},unfoldCode=a=>{if(!a.state.field(foldState,!1))return!1;let e=[];for(let s of selectedLines(a)){let o=foldInside(a.state,s.from,s.to);o&&e.push(unfoldEffect.of(o),announceFold(a,o,!1))}return e.length&&a.dispatch({effects:e}),e.length>0};function announceFold(a,e,s=!0){let o=a.state.doc.lineAt(e.from).number,c=a.state.doc.lineAt(e.to).number;return EditorView.announce.of(`${a.state.phrase(s?"Folded lines":"Unfolded lines")} ${o} ${a.state.phrase("to")} ${c}.`)}const foldAll=a=>{let{state:e}=a,s=[];for(let o=0;o{let e=a.state.field(foldState,!1);if(!e||!e.size)return!1;let s=[];return e.between(0,a.state.doc.length,(o,c)=>{s.push(unfoldEffect.of({from:o,to:c}))}),a.dispatch({effects:s}),!0},foldKeymap=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:foldCode},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:unfoldCode},{key:"Ctrl-Alt-[",run:foldAll},{key:"Ctrl-Alt-]",run:unfoldAll}],defaultConfig={placeholderDOM:null,placeholderText:"\u2026"},foldConfig=Facet.define({combine(a){return combineConfig(a,defaultConfig)}});function codeFolding(a){let e=[foldState,baseTheme$6];return a&&e.push(foldConfig.of(a)),e}const foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(a){let{state:e}=a,s=e.facet(foldConfig),o=d=>{let _=a.lineBlockAt(a.posAtDOM(d.target)),b=foldInside(a.state,_.from,_.to);b&&a.dispatch({effects:unfoldEffect.of(b)}),d.preventDefault()};if(s.placeholderDOM)return s.placeholderDOM(a,o);let c=document.createElement("span");return c.textContent=s.placeholderText,c.setAttribute("aria-label",e.phrase("folded code")),c.title=e.phrase("unfold"),c.className="cm-foldPlaceholder",c.onclick=o,c}}}),foldGutterDefaults={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{}};class FoldMarker extends GutterMarker{constructor(e,s){super(),this.config=e,this.open=s}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let s=document.createElement("span");return s.textContent=this.open?this.config.openText:this.config.closedText,s.title=e.state.phrase(this.open?"Fold line":"Unfold line"),s}}function foldGutter(a={}){let e=Object.assign(Object.assign({},foldGutterDefaults),a),s=new FoldMarker(e,!0),o=new FoldMarker(e,!1),c=ViewPlugin.fromClass(class{constructor(_){this.from=_.viewport.from,this.markers=this.buildMarkers(_)}update(_){(_.docChanged||_.viewportChanged||_.startState.facet(language)!=_.state.facet(language)||_.startState.field(foldState,!1)!=_.state.field(foldState,!1)||syntaxTree(_.startState)!=syntaxTree(_.state))&&(this.markers=this.buildMarkers(_.view))}buildMarkers(_){let b=new RangeSetBuilder;for(let k of _.viewportLineBlocks){let $=foldInside(_.state,k.from,k.to)?o:foldable(_.state,k.from,k.to)?s:null;$&&b.add(k.from,k.from,$)}return b.finish()}}),{domEventHandlers:d}=e;return[c,gutter({class:"cm-foldGutter",markers(_){var b;return((b=_.plugin(c))===null||b===void 0?void 0:b.markers)||RangeSet.empty},initialSpacer(){return new FoldMarker(e,!1)},domEventHandlers:Object.assign(Object.assign({},d),{click:(_,b,k)=>{if(d.click&&d.click(_,b,k))return!0;let $=foldInside(_.state,b.from,b.to);if($)return _.dispatch({effects:unfoldEffect.of($)}),!0;let j=foldable(_.state,b.from,b.to);return j?(_.dispatch({effects:foldEffect.of(j)}),!0):!1}})}),codeFolding()]}const baseTheme$6=EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),baseTheme$5=EditorView.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),DefaultScanDist=1e4,DefaultBrackets="()[]{}",bracketMatchingConfig=Facet.define({combine(a){return combineConfig(a,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist})}}),matchingMark=Decoration.mark({class:"cm-matchingBracket"}),nonmatchingMark=Decoration.mark({class:"cm-nonmatchingBracket"}),bracketMatchingState=StateField.define({create(){return Decoration.none},update(a,e){if(!e.docChanged&&!e.selection)return a;let s=[],o=e.state.facet(bracketMatchingConfig);for(let c of e.state.selection.ranges){if(!c.empty)continue;let d=matchBrackets(e.state,c.head,-1,o)||c.head>0&&matchBrackets(e.state,c.head-1,1,o)||o.afterCursor&&(matchBrackets(e.state,c.head,1,o)||c.headEditorView.decorations.from(a)}),bracketMatchingUnique=[bracketMatchingState,baseTheme$5];function bracketMatching(a={}){return[bracketMatchingConfig.of(a),bracketMatchingUnique]}function matchingNodes(a,e,s){let o=a.prop(e<0?NodeProp.openedBy:NodeProp.closedBy);if(o)return o;if(a.name.length==1){let c=s.indexOf(a.name);if(c>-1&&c%2==(e<0?1:0))return[s[c+e]]}return null}function matchBrackets(a,e,s,o={}){let c=o.maxScanDistance||DefaultScanDist,d=o.brackets||DefaultBrackets,_=syntaxTree(a),b=_.resolveInner(e,s);for(let k=b;k;k=k.parent){let $=matchingNodes(k.type,s,d);if($&&k.from=o.to){if(k==0&&c.indexOf($.type.name)>-1&&$.from<$.to)return{start:b,end:{from:$.from,to:$.to},matched:!0};if(matchingNodes($.type,s,d))k++;else if(matchingNodes($.type,-s,d)&&(k--,k==0))return{start:b,end:$.from==$.to?void 0:{from:$.from,to:$.to},matched:!1}}while(s<0?$.prevSibling():$.nextSibling());return{start:b,matched:!1}}function matchPlainBrackets(a,e,s,o,c,d,_){let b=s<0?a.sliceDoc(e-1,e):a.sliceDoc(e,e+1),k=_.indexOf(b);if(k<0||k%2==0!=s>0)return null;let $={from:s<0?e-1:e,to:s>0?e+1:e},j=a.doc.iterRange(e,s>0?a.doc.length:0),_e=0;for(let et=0;!j.next().done&&et<=d;){let tt=j.value;s<0&&(et+=tt.length);let nt=e+et*s;for(let it=s>0?0:tt.length-1,rt=s>0?tt.length:-1;it!=rt;it+=s){let st=_.indexOf(tt[it]);if(!(st<0||o.resolve(nt+it,1).type!=c))if(st%2==0==s>0)_e++;else{if(_e==1)return{start:$,end:{from:nt+it,to:nt+it+1},matched:st>>1==k>>1};_e--}}s>0&&(et+=tt.length)}return j.done?{start:$,matched:!1}:null}function updateSel(a,e){return EditorSelection.create(a.ranges.map(e),a.mainIndex)}function setSel(a,e){return a.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function moveSel({state:a,dispatch:e},s){let o=updateSel(a.selection,s);return o.eq(a.selection)?!1:(e(setSel(a,o)),!0)}function rangeEnd(a,e){return EditorSelection.cursor(e?a.to:a.from)}function cursorByChar(a,e){return moveSel(a,s=>s.empty?a.moveByChar(s,e):rangeEnd(s,e))}const cursorCharLeft=a=>cursorByChar(a,a.textDirection!=Direction.LTR),cursorCharRight=a=>cursorByChar(a,a.textDirection==Direction.LTR);function cursorByGroup(a,e){return moveSel(a,s=>s.empty?a.moveByGroup(s,e):rangeEnd(s,e))}const cursorGroupLeft=a=>cursorByGroup(a,a.textDirection!=Direction.LTR),cursorGroupRight=a=>cursorByGroup(a,a.textDirection==Direction.LTR);function interestingNode(a,e,s){if(e.type.prop(s))return!0;let o=e.to-e.from;return o&&(o>2||/[^\s,.;:]/.test(a.sliceDoc(e.from,e.to)))||e.firstChild}function moveBySyntax(a,e,s){let o=syntaxTree(a).resolveInner(e.head),c=s?NodeProp.closedBy:NodeProp.openedBy;for(let k=e.head;;){let $=s?o.childAfter(k):o.childBefore(k);if(!$)break;interestingNode(a,$,c)?o=$:k=s?$.to:$.from}let d=o.type.prop(c),_,b;return d&&(_=s?matchBrackets(a,o.from,1):matchBrackets(a,o.to,-1))&&_.matched?b=s?_.end.to:_.end.from:b=s?o.to:o.from,EditorSelection.cursor(b,s?-1:1)}const cursorSyntaxLeft=a=>moveSel(a,e=>moveBySyntax(a.state,e,a.textDirection!=Direction.LTR)),cursorSyntaxRight=a=>moveSel(a,e=>moveBySyntax(a.state,e,a.textDirection==Direction.LTR));function cursorByLine(a,e){return moveSel(a,s=>{if(!s.empty)return rangeEnd(s,e);let o=a.moveVertically(s,e);return o.head!=s.head?o:a.moveToLineBoundary(s,e)})}const cursorLineUp=a=>cursorByLine(a,!1),cursorLineDown=a=>cursorByLine(a,!0);function cursorByPage(a,e){let{state:s}=a,o=updateSel(s.selection,_=>_.empty?a.moveVertically(_,e,a.dom.clientHeight):rangeEnd(_,e));if(o.eq(s.selection))return!1;let c=a.coordsAtPos(s.selection.main.head),d=a.scrollDOM.getBoundingClientRect();return a.dispatch(setSel(s,o),{effects:c&&c.top>d.top&&c.bottomcursorByPage(a,!1),cursorPageDown=a=>cursorByPage(a,!0);function moveByLineBoundary(a,e,s){let o=a.lineBlockAt(e.head),c=a.moveToLineBoundary(e,s);if(c.head==e.head&&c.head!=(s?o.to:o.from)&&(c=a.moveToLineBoundary(e,s,!1)),!s&&c.head==o.from&&o.length){let d=/^\s*/.exec(a.state.sliceDoc(o.from,Math.min(o.from+100,o.to)))[0].length;d&&e.head!=o.from+d&&(c=EditorSelection.cursor(o.from+d))}return c}const cursorLineBoundaryForward=a=>moveSel(a,e=>moveByLineBoundary(a,e,!0)),cursorLineBoundaryBackward=a=>moveSel(a,e=>moveByLineBoundary(a,e,!1)),cursorLineStart=a=>moveSel(a,e=>EditorSelection.cursor(a.lineBlockAt(e.head).from,1)),cursorLineEnd=a=>moveSel(a,e=>EditorSelection.cursor(a.lineBlockAt(e.head).to,-1));function toMatchingBracket(a,e,s){let o=!1,c=updateSel(a.selection,d=>{let _=matchBrackets(a,d.head,-1)||matchBrackets(a,d.head,1)||d.head>0&&matchBrackets(a,d.head-1,1)||d.headtoMatchingBracket(a,e,!1);function extendSel(a,e){let s=updateSel(a.state.selection,o=>{let c=e(o);return EditorSelection.range(o.anchor,c.head,c.goalColumn)});return s.eq(a.state.selection)?!1:(a.dispatch(setSel(a.state,s)),!0)}function selectByChar(a,e){return extendSel(a,s=>a.moveByChar(s,e))}const selectCharLeft=a=>selectByChar(a,a.textDirection!=Direction.LTR),selectCharRight=a=>selectByChar(a,a.textDirection==Direction.LTR);function selectByGroup(a,e){return extendSel(a,s=>a.moveByGroup(s,e))}const selectGroupLeft=a=>selectByGroup(a,a.textDirection!=Direction.LTR),selectGroupRight=a=>selectByGroup(a,a.textDirection==Direction.LTR),selectSyntaxLeft=a=>extendSel(a,e=>moveBySyntax(a.state,e,a.textDirection!=Direction.LTR)),selectSyntaxRight=a=>extendSel(a,e=>moveBySyntax(a.state,e,a.textDirection==Direction.LTR));function selectByLine(a,e){return extendSel(a,s=>a.moveVertically(s,e))}const selectLineUp=a=>selectByLine(a,!1),selectLineDown=a=>selectByLine(a,!0);function selectByPage(a,e){return extendSel(a,s=>a.moveVertically(s,e,a.dom.clientHeight))}const selectPageUp=a=>selectByPage(a,!1),selectPageDown=a=>selectByPage(a,!0),selectLineBoundaryForward=a=>extendSel(a,e=>moveByLineBoundary(a,e,!0)),selectLineBoundaryBackward=a=>extendSel(a,e=>moveByLineBoundary(a,e,!1)),selectLineStart=a=>extendSel(a,e=>EditorSelection.cursor(a.lineBlockAt(e.head).from)),selectLineEnd=a=>extendSel(a,e=>EditorSelection.cursor(a.lineBlockAt(e.head).to)),cursorDocStart=({state:a,dispatch:e})=>(e(setSel(a,{anchor:0})),!0),cursorDocEnd=({state:a,dispatch:e})=>(e(setSel(a,{anchor:a.doc.length})),!0),selectDocStart=({state:a,dispatch:e})=>(e(setSel(a,{anchor:a.selection.main.anchor,head:0})),!0),selectDocEnd=({state:a,dispatch:e})=>(e(setSel(a,{anchor:a.selection.main.anchor,head:a.doc.length})),!0),selectAll=({state:a,dispatch:e})=>(e(a.update({selection:{anchor:0,head:a.doc.length},userEvent:"select"})),!0),selectLine=({state:a,dispatch:e})=>{let s=selectedLineBlocks(a).map(({from:o,to:c})=>EditorSelection.range(o,Math.min(c+1,a.doc.length)));return e(a.update({selection:EditorSelection.create(s),userEvent:"select"})),!0},selectParentSyntax=({state:a,dispatch:e})=>{let s=updateSel(a.selection,o=>{var c;let d=syntaxTree(a).resolveInner(o.head,1);for(;!(d.from=o.to||d.to>o.to&&d.from<=o.from||!(!((c=d.parent)===null||c===void 0)&&c.parent));)d=d.parent;return EditorSelection.range(d.to,d.from)});return e(setSel(a,s)),!0},simplifySelection=({state:a,dispatch:e})=>{let s=a.selection,o=null;return s.ranges.length>1?o=EditorSelection.create([s.main]):s.main.empty||(o=EditorSelection.create([EditorSelection.cursor(s.main.head)])),o?(e(setSel(a,o)),!0):!1};function deleteBy({state:a,dispatch:e},s){if(a.readOnly)return!1;let o="delete.selection",c=a.changeByRange(d=>{let{from:_,to:b}=d;if(_==b){let k=s(_);k<_?o="delete.backward":k>_&&(o="delete.forward"),_=Math.min(_,k),b=Math.max(b,k)}return _==b?{range:d}:{changes:{from:_,to:b},range:EditorSelection.cursor(_)}});return c.changes.empty?!1:(e(a.update(c,{scrollIntoView:!0,userEvent:o})),!0)}function skipAtomic(a,e,s){if(a instanceof EditorView)for(let o of a.pluginField(PluginField.atomicRanges))o.between(e,e,(c,d)=>{ce&&(e=s?d:c)});return e}const deleteByChar=(a,e)=>deleteBy(a,s=>{let{state:o}=a,c=o.doc.lineAt(s),d,_;if(!e&&s>c.from&&sdeleteByChar(a,!1),deleteCharForward=a=>deleteByChar(a,!0),deleteByGroup=(a,e)=>deleteBy(a,s=>{let o=s,{state:c}=a,d=c.doc.lineAt(o),_=c.charCategorizer(o);for(let b=null;;){if(o==(e?d.to:d.from)){o==s&&d.number!=(e?c.doc.lines:1)&&(o+=e?1:-1);break}let k=findClusterBreak(d.text,o-d.from,e)+d.from,$=d.text.slice(Math.min(o,k)-d.from,Math.max(o,k)-d.from),j=_($);if(b!=null&&j!=b)break;($!=" "||o!=s)&&(b=j),o=k}return skipAtomic(a,o,e)}),deleteGroupBackward=a=>deleteByGroup(a,!1),deleteGroupForward=a=>deleteByGroup(a,!0),deleteToLineEnd=a=>deleteBy(a,e=>{let s=a.lineBlockAt(e).to;return skipAtomic(a,edeleteBy(a,e=>{let s=a.lineBlockAt(e).from;return skipAtomic(a,e>s?s:Math.max(0,e-1),!1)}),splitLine=({state:a,dispatch:e})=>{if(a.readOnly)return!1;let s=a.changeByRange(o=>({changes:{from:o.from,to:o.to,insert:Text.of(["",""])},range:EditorSelection.cursor(o.from)}));return e(a.update(s,{scrollIntoView:!0,userEvent:"input"})),!0},transposeChars=({state:a,dispatch:e})=>{if(a.readOnly)return!1;let s=a.changeByRange(o=>{if(!o.empty||o.from==0||o.from==a.doc.length)return{range:o};let c=o.from,d=a.doc.lineAt(c),_=c==d.from?c-1:findClusterBreak(d.text,c-d.from,!1)+d.from,b=c==d.to?c+1:findClusterBreak(d.text,c-d.from,!0)+d.from;return{changes:{from:_,to:b,insert:a.doc.slice(c,b).append(a.doc.slice(_,c))},range:EditorSelection.cursor(b)}});return s.changes.empty?!1:(e(a.update(s,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function selectedLineBlocks(a){let e=[],s=-1;for(let o of a.selection.ranges){let c=a.doc.lineAt(o.from),d=a.doc.lineAt(o.to);if(!o.empty&&o.to==d.from&&(d=a.doc.lineAt(o.to-1)),s>=c.number){let _=e[e.length-1];_.to=d.to,_.ranges.push(o)}else e.push({from:c.from,to:d.to,ranges:[o]});s=d.number+1}return e}function moveLine(a,e,s){if(a.readOnly)return!1;let o=[],c=[];for(let d of selectedLineBlocks(a)){if(s?d.to==a.doc.length:d.from==0)continue;let _=a.doc.lineAt(s?d.to+1:d.from-1),b=_.length+1;if(s){o.push({from:d.to,to:_.to},{from:d.from,insert:_.text+a.lineBreak});for(let k of d.ranges)c.push(EditorSelection.range(Math.min(a.doc.length,k.anchor+b),Math.min(a.doc.length,k.head+b)))}else{o.push({from:_.from,to:d.from},{from:d.to,insert:a.lineBreak+_.text});for(let k of d.ranges)c.push(EditorSelection.range(k.anchor-b,k.head-b))}}return o.length?(e(a.update({changes:o,scrollIntoView:!0,selection:EditorSelection.create(c,a.selection.mainIndex),userEvent:"move.line"})),!0):!1}const moveLineUp=({state:a,dispatch:e})=>moveLine(a,e,!1),moveLineDown=({state:a,dispatch:e})=>moveLine(a,e,!0);function copyLine(a,e,s){if(a.readOnly)return!1;let o=[];for(let c of selectedLineBlocks(a))s?o.push({from:c.from,insert:a.doc.slice(c.from,c.to)+a.lineBreak}):o.push({from:c.to,insert:a.lineBreak+a.doc.slice(c.from,c.to)});return e(a.update({changes:o,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const copyLineUp=({state:a,dispatch:e})=>copyLine(a,e,!1),copyLineDown=({state:a,dispatch:e})=>copyLine(a,e,!0),deleteLine=a=>{if(a.state.readOnly)return!1;let{state:e}=a,s=e.changes(selectedLineBlocks(e).map(({from:c,to:d})=>(c>0?c--:da.moveVertically(c,!0)).map(s);return a.dispatch({changes:s,selection:o,scrollIntoView:!0,userEvent:"delete.line"}),!0};function isBetweenBrackets(a,e){if(/\(\)|\[\]|\{\}/.test(a.sliceDoc(e-1,e+1)))return{from:e,to:e};let s=syntaxTree(a).resolveInner(e),o=s.childBefore(e),c=s.childAfter(e),d;return o&&c&&o.to<=e&&c.from>=e&&(d=o.type.prop(NodeProp.closedBy))&&d.indexOf(c.name)>-1&&a.doc.lineAt(o.to).from==a.doc.lineAt(c.from).from?{from:o.to,to:c.from}:null}const insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0);function newlineAndIndent(a){return({state:e,dispatch:s})=>{if(e.readOnly)return!1;let o=e.changeByRange(c=>{let{from:d,to:_}=c,b=e.doc.lineAt(d),k=!a&&d==_&&isBetweenBrackets(e,d);a&&(d=_=(_<=b.to?b:e.doc.lineAt(_)).to);let $=new IndentContext(e,{simulateBreak:d,simulateDoubleBreak:!!k}),j=getIndentation($,d);for(j==null&&(j=/^\s*/.exec(e.doc.lineAt(d).text)[0].length);_b.from&&d{let c=[];for(let _=o.from;_<=o.to;){let b=a.doc.lineAt(_);b.number>s&&(o.empty||o.to>b.from)&&(e(b,c,o),s=b.number),_=b.to+1}let d=a.changes(c);return{changes:c,range:EditorSelection.range(d.mapPos(o.anchor,1),d.mapPos(o.head,1))}})}const indentSelection=({state:a,dispatch:e})=>{if(a.readOnly)return!1;let s=Object.create(null),o=new IndentContext(a,{overrideIndentation:d=>{let _=s[d];return _==null?-1:_}}),c=changeBySelectedLine(a,(d,_,b)=>{let k=getIndentation(o,d.from);if(k==null)return;/\S/.test(d.text)||(k=0);let $=/^\s*/.exec(d.text)[0],j=indentString(a,k);($!=j||b.froma.readOnly?!1:(e(a.update(changeBySelectedLine(a,(s,o)=>{o.push({from:s.from,insert:a.facet(indentUnit)})}),{userEvent:"input.indent"})),!0),indentLess=({state:a,dispatch:e})=>a.readOnly?!1:(e(a.update(changeBySelectedLine(a,(s,o)=>{let c=/^\s*/.exec(s.text)[0];if(!c)return;let d=countColumn(c,a.tabSize),_=0,b=indentString(a,Math.max(0,d-getIndentUnit(a)));for(;_({mac:a.key,run:a.run,shift:a.shift}))),defaultKeymap=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:"Alt-ArrowUp",run:moveLineUp},{key:"Shift-Alt-ArrowUp",run:copyLineUp},{key:"Alt-ArrowDown",run:moveLineDown},{key:"Shift-Alt-ArrowDown",run:copyLineDown},{key:"Escape",run:simplifySelection},{key:"Mod-Enter",run:insertBlankLine},{key:"Alt-l",mac:"Ctrl-l",run:selectLine},{key:"Mod-i",run:selectParentSyntax,preventDefault:!0},{key:"Mod-[",run:indentLess},{key:"Mod-]",run:indentMore},{key:"Mod-Alt-\\",run:indentSelection},{key:"Shift-Mod-k",run:deleteLine},{key:"Shift-Mod-\\",run:cursorMatchingBracket}].concat(standardKeymap),defaults={brackets:["(","[","{","'",'"'],before:")]}:;>"},closeBracketEffect=StateEffect.define({map(a,e){let s=e.mapPos(a,-1,MapMode.TrackAfter);return s==null?void 0:s}}),skipBracketEffect=StateEffect.define({map(a,e){return e.mapPos(a)}}),closedBracket=new class extends RangeValue{};closedBracket.startSide=1;closedBracket.endSide=-1;const bracketState=StateField.define({create(){return RangeSet.empty},update(a,e){if(e.selection){let s=e.state.doc.lineAt(e.selection.main.head).from,o=e.startState.doc.lineAt(e.startState.selection.main.head).from;s!=e.changes.mapPos(o,-1)&&(a=RangeSet.empty)}a=a.map(e.changes);for(let s of e.effects)s.is(closeBracketEffect)?a=a.update({add:[closedBracket.range(s.value,s.value+1)]}):s.is(skipBracketEffect)&&(a=a.update({filter:o=>o!=s.value}));return a}});function closeBrackets(){return[inputHandler,bracketState]}const definedClosing="()[]{}<>";function closing(a){for(let e=0;e{if((android?a.composing:a.compositionStarted)||a.state.readOnly)return!1;let c=a.state.selection.main;if(o.length>2||o.length==2&&codePointSize(codePointAt(o,0))==1||e!=c.from||s!=c.to)return!1;let d=insertBracket(a.state,o);return d?(a.dispatch(d),!0):!1}),deleteBracketPair=({state:a,dispatch:e})=>{if(a.readOnly)return!1;let o=config(a,a.selection.main.head).brackets||defaults.brackets,c=null,d=a.changeByRange(_=>{if(_.empty){let b=prevChar(a.doc,_.head);for(let k of o)if(k==b&&nextChar(a.doc,_.head)==closing(codePointAt(k,0)))return{changes:{from:_.head-k.length,to:_.head+k.length},range:EditorSelection.cursor(_.head-k.length),userEvent:"delete.backward"}}return{range:c=_}});return c||e(a.update(d,{scrollIntoView:!0})),!c},closeBracketsKeymap=[{key:"Backspace",run:deleteBracketPair}];function insertBracket(a,e){let s=config(a,a.selection.main.head),o=s.brackets||defaults.brackets;for(let c of o){let d=closing(codePointAt(c,0));if(e==c)return d==c?handleSame(a,c,o.indexOf(c+c+c)>-1):handleOpen(a,c,d,s.before||defaults.before);if(e==d&&closedBracketAt(a,a.selection.main.from))return handleClose(a,c,d)}return null}function closedBracketAt(a,e){let s=!1;return a.field(bracketState).between(0,a.doc.length,o=>{o==e&&(s=!0)}),s}function nextChar(a,e){let s=a.sliceString(e,e+2);return s.slice(0,codePointSize(codePointAt(s,0)))}function prevChar(a,e){let s=a.sliceString(e-2,e);return codePointSize(codePointAt(s,0))==s.length?s:s.slice(1)}function handleOpen(a,e,s,o){let c=null,d=a.changeByRange(_=>{if(!_.empty)return{changes:[{insert:e,from:_.from},{insert:s,from:_.to}],effects:closeBracketEffect.of(_.to+e.length),range:EditorSelection.range(_.anchor+e.length,_.head+e.length)};let b=nextChar(a.doc,_.head);return!b||/\s/.test(b)||o.indexOf(b)>-1?{changes:{insert:e+s,from:_.head},effects:closeBracketEffect.of(_.head+e.length),range:EditorSelection.cursor(_.head+e.length)}:{range:c=_}});return c?null:a.update(d,{scrollIntoView:!0,userEvent:"input.type"})}function handleClose(a,e,s){let o=null,c=a.selection.ranges.map(d=>d.empty&&nextChar(a.doc,d.head)==s?EditorSelection.cursor(d.head+s.length):o=d);return o?null:a.update({selection:EditorSelection.create(c,a.selection.mainIndex),scrollIntoView:!0,effects:a.selection.ranges.map(({from:d})=>skipBracketEffect.of(d))})}function handleSame(a,e,s){let o=null,c=a.changeByRange(d=>{if(!d.empty)return{changes:[{insert:e,from:d.from},{insert:e,from:d.to}],effects:closeBracketEffect.of(d.to+e.length),range:EditorSelection.range(d.anchor+e.length,d.head+e.length)};let _=d.head,b=nextChar(a.doc,_);if(b==e){if(nodeStart(a,_))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(closedBracketAt(a,_)){let k=s&&a.sliceDoc(_,_+e.length*3)==e+e+e;return{range:EditorSelection.cursor(_+e.length*(k?3:1)),effects:skipBracketEffect.of(_)}}}else{if(s&&a.sliceDoc(_-2*e.length,_)==e+e&&nodeStart(a,_-2*e.length))return{changes:{insert:e+e+e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(a.charCategorizer(_)(b)!=CharCategory.Word){let k=a.sliceDoc(_-1,_);if(k!=e&&a.charCategorizer(_)(k)!=CharCategory.Word&&!probablyInString(a,_,e))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)}}}return{range:o=d}});return o?null:a.update(c,{scrollIntoView:!0,userEvent:"input.type"})}function nodeStart(a,e){let s=syntaxTree(a).resolveInner(e+1);return s.parent&&s.from==e}function probablyInString(a,e,s){let o=syntaxTree(a).resolveInner(e,-1);for(let c=0;c<5;c++){if(a.sliceDoc(o.from,o.from+s.length)==s)return!0;let d=o.to==e&&o.parent;if(!d)break;o=d}return!1}const panelConfig=Facet.define({combine(a){let e,s;for(let o of a)e=e||o.topContainer,s=s||o.bottomContainer;return{topContainer:e,bottomContainer:s}}});function getPanel(a,e){let s=a.plugin(panelPlugin),o=s?s.specs.indexOf(e):-1;return o>-1?s.panels[o]:null}const panelPlugin=ViewPlugin.fromClass(class{constructor(a){this.input=a.state.facet(showPanel),this.specs=this.input.filter(s=>s),this.panels=this.specs.map(s=>s(a));let e=a.state.facet(panelConfig);this.top=new PanelGroup(a,!0,e.topContainer),this.bottom=new PanelGroup(a,!1,e.bottomContainer),this.top.sync(this.panels.filter(s=>s.top)),this.bottom.sync(this.panels.filter(s=>!s.top));for(let s of this.panels)s.dom.classList.add("cm-panel"),s.mount&&s.mount()}update(a){let e=a.state.facet(panelConfig);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new PanelGroup(a.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new PanelGroup(a.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let s=a.state.facet(showPanel);if(s!=this.input){let o=s.filter(k=>k),c=[],d=[],_=[],b=[];for(let k of o){let $=this.specs.indexOf(k),j;$<0?(j=k(a.view),b.push(j)):(j=this.panels[$],j.update&&j.update(a)),c.push(j),(j.top?d:_).push(j)}this.specs=o,this.panels=c,this.top.sync(d),this.bottom.sync(_);for(let k of b)k.dom.classList.add("cm-panel"),k.mount&&k.mount()}else for(let o of this.panels)o.update&&o.update(a)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:PluginField.scrollMargins.from(a=>({top:a.top.scrollMargin(),bottom:a.bottom.scrollMargin()}))});class PanelGroup{constructor(e,s,o){this.view=e,this.top=s,this.container=o,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let s of this.panels)s.destroy&&e.indexOf(s)<0&&s.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let s=this.container||this.view.dom;s.insertBefore(this.dom,this.top?s.firstChild:null)}let e=this.dom.firstChild;for(let s of this.panels)if(s.dom.parentNode==this.dom){for(;e!=s.dom;)e=rm(e);e=e.nextSibling}else this.dom.insertBefore(s.dom,e);for(;e;)e=rm(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function rm(a){let e=a.nextSibling;return a.remove(),e}const baseTheme$4=EditorView.baseTheme({".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"}}),showPanel=Facet.define({enables:[panelPlugin,baseTheme$4]});function crelt(){var a=arguments[0];typeof a=="string"&&(a=document.createElement(a));var e=1,s=arguments[1];if(s&&typeof s=="object"&&s.nodeType==null&&!Array.isArray(s)){for(var o in s)if(Object.prototype.hasOwnProperty.call(s,o)){var c=s[o];typeof c=="string"?a.setAttribute(o,c):c!=null&&(a[o]=c)}e++}for(;ea.normalize("NFKD"):a=>a;class SearchCursor{constructor(e,s,o=0,c=e.length,d){this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(o,c),this.bufferStart=o,this.normalize=d?_=>d(basicNormalize(_)):basicNormalize,this.query=this.normalize(s)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let s=fromCodePoint(e),o=this.bufferStart+this.bufferPos;this.bufferPos+=codePointSize(e);let c=this.normalize(s);for(let d=0,_=o;;d++){let b=c.charCodeAt(d),k=this.match(b,_);if(k)return this.value=k,this;if(d==c.length-1)break;_==o&&dthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let s=this.matchPos<=this.to&&this.re.exec(this.curLine);if(s){let o=this.curLineStart+s.index,c=o+s[0].length;if(this.matchPos=c+(o==c?1:0),o==this.curLine.length&&this.nextLine(),othis.value.to)return this.value={from:o,to:c,match:s},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=o||c.to<=s){let b=new FlattenedDoc(s,e.sliceString(s,o));return flattened.set(e,b),b}if(c.from==s&&c.to==o)return c;let{text:d,from:_}=c;return _>s&&(d=e.sliceString(s,_)+d,_=s),c.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,s=this.re.exec(this.flat.text);if(s&&!s[0]&&s.index==e&&(this.re.lastIndex=e+1,s=this.re.exec(this.flat.text)),s&&this.flat.tothis.flat.text.length-10&&(s=null),s){let o=this.flat.from+s.index,c=o+s[0].length;return this.value={from:o,to:c,match:s},this.matchPos=c+(o==c?1:0),this}else{if(this.flat.to==this.to)return this.done=!0,this;this.flat=FlattenedDoc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}}typeof Symbol!="undefined"&&(RegExpCursor.prototype[Symbol.iterator]=MultilineRegExpCursor.prototype[Symbol.iterator]=function(){return this});function validRegExp(a){try{return new RegExp(a,baseFlags),!0}catch{return!1}}function createLineDialog(a){let e=crelt("input",{class:"cm-textfield",name:"line"}),s=crelt("form",{class:"cm-gotoLine",onkeydown:c=>{c.keyCode==27?(c.preventDefault(),a.dispatch({effects:dialogEffect.of(!1)}),a.focus()):c.keyCode==13&&(c.preventDefault(),o())},onsubmit:c=>{c.preventDefault(),o()}},crelt("label",a.state.phrase("Go to line"),": ",e)," ",crelt("button",{class:"cm-button",type:"submit"},a.state.phrase("go")));function o(){let c=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!c)return;let{state:d}=a,_=d.doc.lineAt(d.selection.main.head),[,b,k,$,j]=c,_e=$?+$.slice(1):0,et=k?+k:_.number;if(k&&j){let nt=et/100;b&&(nt=nt*(b=="-"?-1:1)+_.number/d.doc.lines),et=Math.round(d.doc.lines*nt)}else k&&b&&(et=et*(b=="-"?-1:1)+_.number);let tt=d.doc.line(Math.max(1,Math.min(d.doc.lines,et)));a.dispatch({effects:dialogEffect.of(!1),selection:EditorSelection.cursor(tt.from+Math.max(0,Math.min(_e,tt.length))),scrollIntoView:!0}),a.focus()}return{dom:s,pos:-10}}const dialogEffect=StateEffect.define(),dialogField=StateField.define({create(){return!0},update(a,e){for(let s of e.effects)s.is(dialogEffect)&&(a=s.value);return a},provide:a=>showPanel.from(a,e=>e?createLineDialog:null)}),gotoLine=a=>{let e=getPanel(a,createLineDialog);if(!e){let s=[dialogEffect.of(!0)];a.state.field(dialogField,!1)==null&&s.push(StateEffect.appendConfig.of([dialogField,baseTheme$1$1])),a.dispatch({effects:s}),e=getPanel(a,createLineDialog)}return e&&e.dom.querySelector("input").focus(),!0},baseTheme$1$1=EditorView.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),defaultHighlightOptions={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!0},highlightConfig=Facet.define({combine(a){return combineConfig(a,defaultHighlightOptions,{highlightWordAroundCursor:(e,s)=>e||s,minSelectionLength:Math.min,maxMatches:Math.min})}});function highlightSelectionMatches(a){let e=[defaultTheme,matchHighlighter];return a&&e.push(highlightConfig.of(a)),e}const matchDeco=Decoration.mark({class:"cm-selectionMatch"}),mainMatchDeco=Decoration.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function insideWordBoundaries(a,e,s,o){return(s==0||a(e.sliceDoc(s-1,s))!=CharCategory.Word)&&(o==e.doc.length||a(e.sliceDoc(o,o+1))!=CharCategory.Word)}function insideWord(a,e,s,o){return a(e.sliceDoc(s,s+1))==CharCategory.Word&&a(e.sliceDoc(o-1,o))==CharCategory.Word}const matchHighlighter=ViewPlugin.fromClass(class{constructor(a){this.decorations=this.getDeco(a)}update(a){(a.selectionSet||a.docChanged||a.viewportChanged)&&(this.decorations=this.getDeco(a.view))}getDeco(a){let e=a.state.facet(highlightConfig),{state:s}=a,o=s.selection;if(o.ranges.length>1)return Decoration.none;let c=o.main,d,_=null;if(c.empty){if(!e.highlightWordAroundCursor)return Decoration.none;let k=s.wordAt(c.head);if(!k)return Decoration.none;_=s.charCategorizer(c.head),d=s.sliceDoc(k.from,k.to)}else{let k=c.to-c.from;if(k200)return Decoration.none;if(e.wholeWords){if(d=s.sliceDoc(c.from,c.to),_=s.charCategorizer(c.head),!(insideWordBoundaries(_,s,c.from,c.to)&&insideWord(_,s,c.from,c.to)))return Decoration.none}else if(d=s.sliceDoc(c.from,c.to).trim(),!d)return Decoration.none}let b=[];for(let k of a.visibleRanges){let $=new SearchCursor(s.doc,d,k.from,k.to);for(;!$.next().done;){let{from:j,to:_e}=$.value;if((!_||insideWordBoundaries(_,s,j,_e))&&(c.empty&&j<=c.from&&_e>=c.to?b.push(mainMatchDeco.range(j,_e)):(j>=c.to||_e<=c.from)&&b.push(matchDeco.range(j,_e)),b.length>e.maxMatches))return Decoration.none}}return Decoration.set(b)}},{decorations:a=>a.decorations}),defaultTheme=EditorView.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),selectWord=({state:a,dispatch:e})=>{let{selection:s}=a,o=EditorSelection.create(s.ranges.map(c=>a.wordAt(c.head)||EditorSelection.cursor(c.head)),s.mainIndex);return o.eq(s)?!1:(e(a.update({selection:o})),!0)};function findNextOccurrence(a,e){let{main:s,ranges:o}=a.selection,c=a.wordAt(s.head),d=c&&c.from==s.from&&c.to==s.to;for(let _=!1,b=new SearchCursor(a.doc,e,o[o.length-1].to);;)if(b.next(),b.done){if(_)return null;b=new SearchCursor(a.doc,e,0,Math.max(0,o[o.length-1].from-1)),_=!0}else{if(_&&o.some(k=>k.from==b.value.from))continue;if(d){let k=a.wordAt(b.value.from);if(!k||k.from!=b.value.from||k.to!=b.value.to)continue}return b.value}}const selectNextOccurrence=({state:a,dispatch:e})=>{let{ranges:s}=a.selection;if(s.some(d=>d.from===d.to))return selectWord({state:a,dispatch:e});let o=a.sliceDoc(s[0].from,s[0].to);if(a.selection.ranges.some(d=>a.sliceDoc(d.from,d.to)!=o))return!1;let c=findNextOccurrence(a,o);return c?(e(a.update({selection:a.selection.addRange(EditorSelection.range(c.from,c.to),!1),effects:EditorView.scrollIntoView(c.to)})),!0):!1},searchConfigFacet=Facet.define({combine(a){var e;return{top:a.reduce((s,o)=>s!=null?s:o.top,void 0)||!1,caseSensitive:a.reduce((s,o)=>s!=null?s:o.caseSensitive||o.matchCase,void 0)||!1,createPanel:((e=a.find(s=>s.createPanel))===null||e===void 0?void 0:e.createPanel)||(s=>new SearchPanel(s))}}});class SearchQuery{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||validRegExp(this.search)),this.unquoted=this.search.replace(/\\([nrt\\])/g,(s,o)=>o=="n"?` -`:o=="r"?"\r":o=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp}create(){return this.regexp?new RegExpQuery(this):new StringQuery(this)}getCursor(e,s=0,o=e.length){return this.regexp?regexpCursor(this,e,s,o):stringCursor(this,e,s,o)}}class QueryType{constructor(e){this.spec=e}}function stringCursor(a,e,s,o){return new SearchCursor(e,a.unquoted,s,o,a.caseSensitive?void 0:c=>c.toLowerCase())}class StringQuery extends QueryType{constructor(e){super(e)}nextMatch(e,s,o){let c=stringCursor(this.spec,e,o,e.length).nextOverlapping();return c.done&&(c=stringCursor(this.spec,e,0,s).nextOverlapping()),c.done?null:c.value}prevMatchInRange(e,s,o){for(let c=o;;){let d=Math.max(s,c-1e4-this.spec.unquoted.length),_=stringCursor(this.spec,e,d,c),b=null;for(;!_.nextOverlapping().done;)b=_.value;if(b)return b;if(d==s)return null;c-=1e4}}prevMatch(e,s,o){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,o,e.length)}getReplacement(e){return this.spec.replace}matchAll(e,s){let o=stringCursor(this.spec,e,0,e.length),c=[];for(;!o.next().done;){if(c.length>=s)return null;c.push(o.value)}return c}highlight(e,s,o,c){let d=stringCursor(this.spec,e,Math.max(0,s-this.spec.unquoted.length),Math.min(o+this.spec.unquoted.length,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}function regexpCursor(a,e,s,o){return new RegExpCursor(e,a.search,a.caseSensitive?void 0:{ignoreCase:!0},s,o)}class RegExpQuery extends QueryType{nextMatch(e,s,o){let c=regexpCursor(this.spec,e,o,e.length).next();return c.done&&(c=regexpCursor(this.spec,e,0,s).next()),c.done?null:c.value}prevMatchInRange(e,s,o){for(let c=1;;c++){let d=Math.max(s,o-c*1e4),_=regexpCursor(this.spec,e,d,o),b=null;for(;!_.next().done;)b=_.value;if(b&&(d==s||b.from>d+10))return b;if(d==s)return null}}prevMatch(e,s,o){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,o,e.length)}getReplacement(e){return this.spec.replace.replace(/\$([$&\d+])/g,(s,o)=>o=="$"?"$":o=="&"?e.match[0]:o!="0"&&+o=s)return null;c.push(o.value)}return c}highlight(e,s,o,c){let d=regexpCursor(this.spec,e,Math.max(0,s-250),Math.min(o+250,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}const setSearchQuery=StateEffect.define(),togglePanel$1=StateEffect.define(),searchState=StateField.define({create(a){return new SearchState(defaultQuery(a).create(),null)},update(a,e){for(let s of e.effects)s.is(setSearchQuery)?a=new SearchState(s.value.create(),a.panel):s.is(togglePanel$1)&&(a=new SearchState(a.query,s.value?createSearchPanel:null));return a},provide:a=>showPanel.from(a,e=>e.panel)});class SearchState{constructor(e,s){this.query=e,this.panel=s}}const matchMark=Decoration.mark({class:"cm-searchMatch"}),selectedMatchMark=Decoration.mark({class:"cm-searchMatch cm-searchMatch-selected"}),searchHighlighter=ViewPlugin.fromClass(class{constructor(a){this.view=a,this.decorations=this.highlight(a.state.field(searchState))}update(a){let e=a.state.field(searchState);(e!=a.startState.field(searchState)||a.docChanged||a.selectionSet||a.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:a,panel:e}){if(!e||!a.spec.valid)return Decoration.none;let{view:s}=this,o=new RangeSetBuilder;for(let c=0,d=s.visibleRanges,_=d.length;c<_;c++){let{from:b,to:k}=d[c];for(;c<_-1&&k>d[c+1].from-2*250;)k=d[++c].to;a.highlight(s.state.doc,b,k,($,j)=>{let _e=s.state.selection.ranges.some(et=>et.from==$&&et.to==j);o.add($,j,_e?selectedMatchMark:matchMark)})}return o.finish()}},{decorations:a=>a.decorations});function searchCommand(a){return e=>{let s=e.state.field(searchState,!1);return s&&s.query.spec.valid?a(e,s):openSearchPanel(e)}}const findNext=searchCommand((a,{query:e})=>{let{from:s,to:o}=a.state.selection.main,c=e.nextMatch(a.state.doc,s,o);return!c||c.from==s&&c.to==o?!1:(a.dispatch({selection:{anchor:c.from,head:c.to},scrollIntoView:!0,effects:announceMatch(a,c),userEvent:"select.search"}),!0)}),findPrevious=searchCommand((a,{query:e})=>{let{state:s}=a,{from:o,to:c}=s.selection.main,d=e.prevMatch(s.doc,o,c);return d?(a.dispatch({selection:{anchor:d.from,head:d.to},scrollIntoView:!0,effects:announceMatch(a,d),userEvent:"select.search"}),!0):!1}),selectMatches=searchCommand((a,{query:e})=>{let s=e.matchAll(a.state.doc,1e3);return!s||!s.length?!1:(a.dispatch({selection:EditorSelection.create(s.map(o=>EditorSelection.range(o.from,o.to))),userEvent:"select.search.matches"}),!0)}),selectSelectionMatches=({state:a,dispatch:e})=>{let s=a.selection;if(s.ranges.length>1||s.main.empty)return!1;let{from:o,to:c}=s.main,d=[],_=0;for(let b=new SearchCursor(a.doc,a.sliceDoc(o,c));!b.next().done;){if(d.length>1e3)return!1;b.value.from==o&&(_=d.length),d.push(EditorSelection.range(b.value.from,b.value.to))}return e(a.update({selection:EditorSelection.create(d,_),userEvent:"select.search.matches"})),!0},replaceNext=searchCommand((a,{query:e})=>{let{state:s}=a,{from:o,to:c}=s.selection.main;if(s.readOnly)return!1;let d=e.nextMatch(s.doc,o,o);if(!d)return!1;let _=[],b,k;if(d.from==o&&d.to==c&&(k=s.toText(e.getReplacement(d)),_.push({from:d.from,to:d.to,insert:k}),d=e.nextMatch(s.doc,d.from,d.to)),d){let $=_.length==0||_[0].from>=d.to?0:d.to-d.from-k.length;b={anchor:d.from-$,head:d.to-$}}return a.dispatch({changes:_,selection:b,scrollIntoView:!!b,effects:d?announceMatch(a,d):void 0,userEvent:"input.replace"}),!0}),replaceAll=searchCommand((a,{query:e})=>{if(a.state.readOnly)return!1;let s=e.matchAll(a.state.doc,1e9).map(o=>{let{from:c,to:d}=o;return{from:c,to:d,insert:e.getReplacement(o)}});return s.length?(a.dispatch({changes:s,userEvent:"input.replace.all"}),!0):!1});function createSearchPanel(a){return a.state.facet(searchConfigFacet).createPanel(a)}function defaultQuery(a,e){var s;let o=a.selection.main,c=o.empty||o.to>o.from+100?"":a.sliceDoc(o.from,o.to),d=(s=e==null?void 0:e.caseSensitive)!==null&&s!==void 0?s:a.facet(searchConfigFacet).caseSensitive;return e&&!c?e:new SearchQuery({search:c.replace(/\n/g,"\\n"),caseSensitive:d})}const openSearchPanel=a=>{let e=a.state.field(searchState,!1);if(e&&e.panel){let s=getPanel(a,createSearchPanel);if(!s)return!1;let o=s.dom.querySelector("[name=search]");if(o!=a.root.activeElement){let c=defaultQuery(a.state,e.query.spec);c.valid&&a.dispatch({effects:setSearchQuery.of(c)}),o.focus(),o.select()}}else a.dispatch({effects:[togglePanel$1.of(!0),e?setSearchQuery.of(defaultQuery(a.state,e.query.spec)):StateEffect.appendConfig.of(searchExtensions)]});return!0},closeSearchPanel=a=>{let e=a.state.field(searchState,!1);if(!e||!e.panel)return!1;let s=getPanel(a,createSearchPanel);return s&&s.dom.contains(a.root.activeElement)&&a.focus(),a.dispatch({effects:togglePanel$1.of(!1)}),!0},searchKeymap=[{key:"Mod-f",run:openSearchPanel,scope:"editor search-panel"},{key:"F3",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:closeSearchPanel,scope:"editor search-panel"},{key:"Mod-Shift-l",run:selectSelectionMatches},{key:"Alt-g",run:gotoLine},{key:"Mod-d",run:selectNextOccurrence,preventDefault:!0}];class SearchPanel{constructor(e){this.view=e;let s=this.query=e.state.field(searchState).query.spec;this.commit=this.commit.bind(this),this.searchField=crelt("input",{value:s.search,placeholder:phrase(e,"Find"),"aria-label":phrase(e,"Find"),class:"cm-textfield",name:"search",onchange:this.commit,onkeyup:this.commit}),this.replaceField=crelt("input",{value:s.replace,placeholder:phrase(e,"Replace"),"aria-label":phrase(e,"Replace"),class:"cm-textfield",name:"replace",onchange:this.commit,onkeyup:this.commit}),this.caseField=crelt("input",{type:"checkbox",name:"case",checked:s.caseSensitive,onchange:this.commit}),this.reField=crelt("input",{type:"checkbox",name:"re",checked:s.regexp,onchange:this.commit});function o(c,d,_){return crelt("button",{class:"cm-button",name:c,onclick:d,type:"button"},_)}this.dom=crelt("div",{onkeydown:c=>this.keydown(c),class:"cm-search"},[this.searchField,o("next",()=>findNext(e),[phrase(e,"next")]),o("prev",()=>findPrevious(e),[phrase(e,"previous")]),o("select",()=>selectMatches(e),[phrase(e,"all")]),crelt("label",null,[this.caseField,phrase(e,"match case")]),crelt("label",null,[this.reField,phrase(e,"regexp")]),...e.state.readOnly?[]:[crelt("br"),this.replaceField,o("replace",()=>replaceNext(e),[phrase(e,"replace")]),o("replaceAll",()=>replaceAll(e),[phrase(e,"replace all")]),crelt("button",{name:"close",onclick:()=>closeSearchPanel(e),"aria-label":phrase(e,"close"),type:"button"},["\xD7"])]])}commit(){let e=new SearchQuery({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:setSearchQuery.of(e)}))}keydown(e){runScopeHandlers(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?findPrevious:findNext)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),replaceNext(this.view))}update(e){for(let s of e.transactions)for(let o of s.effects)o.is(setSearchQuery)&&!o.value.eq(this.query)&&this.setQuery(o.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(searchConfigFacet).top}}function phrase(a,e){return a.state.phrase(e)}const AnnounceMargin=30,Break=/[\s\.,:;?!]/;function announceMatch(a,{from:e,to:s}){let o=a.state.doc.lineAt(e).from,c=a.state.doc.lineAt(s).to,d=Math.max(o,e-AnnounceMargin),_=Math.min(c,s+AnnounceMargin),b=a.state.sliceDoc(d,_);if(d!=o){for(let k=0;kb.length-AnnounceMargin;k--)if(!Break.test(b[k-1])&&Break.test(b[k])){b=b.slice(0,k);break}}return EditorView.announce.of(`${a.state.phrase("current match")}. ${b} ${a.state.phrase("on line")} ${a.state.doc.lineAt(e).number}`)}const baseTheme$3=EditorView.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),searchExtensions=[searchState,Prec.lowest(searchHighlighter),baseTheme$3],ios=typeof navigator!="undefined"&&!/Edge\/(\d+)/.exec(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor)&&(/Mobile\/\w+/.test(navigator.userAgent)||navigator.maxTouchPoints>2),Outside="-10000px";class TooltipViewManager{constructor(e,s,o){this.facet=s,this.createTooltipView=o,this.input=e.state.facet(s),this.tooltips=this.input.filter(c=>c),this.tooltipViews=this.tooltips.map(o)}update(e){let s=e.state.facet(this.facet),o=s.filter(d=>d);if(s===this.input){for(let d of this.tooltipViews)d.update&&d.update(e);return!1}let c=[];for(let d=0;d{var e,s,o;return{position:ios?"absolute":((e=a.find(c=>c.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((s=a.find(c=>c.parent))===null||s===void 0?void 0:s.parent)||null,tooltipSpace:((o=a.find(c=>c.tooltipSpace))===null||o===void 0?void 0:o.tooltipSpace)||windowSpace}}}),tooltipPlugin=ViewPlugin.fromClass(class{constructor(a){var e;this.view=a,this.inView=!0,this.lastTransaction=0,this.measureTimeout=-1;let s=a.state.facet(tooltipConfig);this.position=s.position,this.parent=s.parent,this.classes=a.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new TooltipViewManager(a,showTooltip,o=>this.createTooltip(o)),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(o=>{Date.now()>this.lastTransaction-50&&o.length>0&&o[o.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),(e=a.dom.ownerDocument.defaultView)===null||e===void 0||e.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let a of this.manager.tooltipViews)this.intersectionObserver.observe(a.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(a){a.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(a);e&&this.observeIntersection();let s=e||a.geometryChanged,o=a.state.facet(tooltipConfig);if(o.position!=this.position){this.position=o.position;for(let c of this.manager.tooltipViews)c.dom.style.position=this.position;s=!0}if(o.parent!=this.parent){this.parent&&this.container.remove(),this.parent=o.parent,this.createContainer();for(let c of this.manager.tooltipViews)this.container.appendChild(c.dom);s=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);s&&this.maybeMeasure()}createTooltip(a){let e=a.create(this.view);if(e.dom.classList.add("cm-tooltip"),a.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",e.dom.appendChild(s)}return e.dom.style.position=this.position,e.dom.style.top=Outside,this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var a,e;(a=this.view.dom.ownerDocument.defaultView)===null||a===void 0||a.removeEventListener("resize",this.measureSoon);for(let{dom:s}of this.manager.tooltipViews)s.remove();(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let a=this.view.dom.getBoundingClientRect();return{editor:a,parent:this.parent?this.container.getBoundingClientRect():a,pos:this.manager.tooltips.map((e,s)=>{let o=this.manager.tooltipViews[s];return o.getCoords?o.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(tooltipConfig).tooltipSpace(this.view)}}writeMeasure(a){let{editor:e,space:s}=a,o=[];for(let c=0;c=Math.min(e.bottom,s.bottom)||k.rightMath.min(e.right,s.right)+.1){b.style.top=Outside;continue}let j=d.arrow?_.dom.querySelector(".cm-tooltip-arrow"):null,_e=j?7:0,et=$.right-$.left,tt=$.bottom-$.top,nt=_.offset||noOffset,it=this.view.textDirection==Direction.LTR,rt=$.width>s.right-s.left?it?s.left:s.right-$.width:it?Math.min(k.left-(j?14:0)+nt.x,s.right-et):Math.max(s.left,k.left-et+(j?14:0)-nt.x),st=!!d.above;!d.strictSide&&(st?k.top-($.bottom-$.top)-nt.ys.bottom)&&st==s.bottom-k.bottom>k.top-s.top&&(st=!st);let ot=st?k.top-tt-_e-nt.y:k.bottom+_e+nt.y,lt=rt+et;if(_.overlap!==!0)for(let dt of o)dt.leftrt&&dt.topot&&(ot=st?dt.top-tt-2-_e:dt.bottom+_e+2);this.position=="absolute"?(b.style.top=ot-a.parent.top+"px",b.style.left=rt-a.parent.left+"px"):(b.style.top=ot+"px",b.style.left=rt+"px"),j&&(j.style.left=`${k.left+(it?nt.x:-nt.x)-(rt+14-7)}px`),_.overlap!==!0&&o.push({left:rt,top:ot,right:lt,bottom:ot+tt}),b.classList.toggle("cm-tooltip-above",st),b.classList.toggle("cm-tooltip-below",!st),_.positioned&&_.positioned()}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let a of this.manager.tooltipViews)a.dom.style.top=Outside}},{eventHandlers:{scroll(){this.maybeMeasure()}}}),baseTheme$2=EditorView.baseTheme({".cm-tooltip":{zIndex:100},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:`${7}px`,width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:`${7}px solid transparent`,borderRight:`${7}px solid transparent`},".cm-tooltip-above &":{bottom:`-${7}px`,"&:before":{borderTop:`${7}px solid #bbb`},"&:after":{borderTop:`${7}px solid #f5f5f5`,bottom:"1px"}},".cm-tooltip-below &":{top:`-${7}px`,"&:before":{borderBottom:`${7}px solid #bbb`},"&:after":{borderBottom:`${7}px solid #f5f5f5`,top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),noOffset={x:0,y:0},showTooltip=Facet.define({enables:[tooltipPlugin,baseTheme$2]}),showHoverTooltip=Facet.define();class HoverTooltipHost{constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new TooltipViewManager(e,showHoverTooltip,s=>this.createHostedView(s))}static create(e){return new HoverTooltipHost(e)}createHostedView(e){let s=e.create(this.view);return s.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(s.dom),this.mounted&&s.mount&&s.mount(this.view),s}mount(e){for(let s of this.manager.tooltipViews)s.mount&&s.mount(e);this.mounted=!0}positioned(){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned()}update(e){this.manager.update(e)}}const showHoverTooltipHost=showTooltip.compute([showHoverTooltip],a=>{let e=a.facet(showHoverTooltip).filter(s=>s);return e.length===0?null:{pos:Math.min(...e.map(s=>s.pos)),end:Math.max(...e.filter(s=>s.end!=null).map(s=>s.end)),create:HoverTooltipHost.create,above:e[0].above,arrow:e.some(s=>s.arrow)}});class HoverPlugin{constructor(e,s,o,c,d){this.view=e,this.source=s,this.field=o,this.setHover=c,this.hoverTime=d,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let e=Date.now()-this.lastMove.time;ec.bottom||s.xc.right+this.view.defaultCharacterWidth)return;let d=this.view.bidiSpans(this.view.state.doc.lineAt(o)).find(k=>k.from<=o&&k.to>=o),_=d&&d.dir==Direction.RTL?-1:1,b=this.source(this.view,o,s.x{this.pending==k&&(this.pending=null,$&&this.view.dispatch({effects:this.setHover.of($)}))},$=>logException(this.view.state,$,"hover tooltip"))}else b&&this.view.dispatch({effects:this.setHover.of(b)})}mousemove(e){var s;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let o=this.active;if(o&&!isInTooltip(this.lastMove.target)||this.pending){let{pos:c}=o||this.pending,d=(s=o==null?void 0:o.end)!==null&&s!==void 0?s:c;(c==d?this.view.posAtCoords(this.lastMove)!=c:!isOverRange(this.view,c,d,e.clientX,e.clientY,6))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1,this.active&&this.view.dispatch({effects:this.setHover.of(null)})}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}function isInTooltip(a){for(let e=a;e;e=e.parentNode)if(e.nodeType==1&&e.classList.contains("cm-tooltip"))return!0;return!1}function isOverRange(a,e,s,o,c,d){let _=document.createRange(),b=a.domAtPos(e),k=a.domAtPos(s);_.setEnd(k.node,k.offset),_.setStart(b.node,b.offset);let $=_.getClientRects();_.detach();for(let j=0;j<$.length;j++){let _e=$[j];if(Math.max(_e.top-c,c-_e.bottom,_e.left-o,o-_e.right)<=d)return!0}return!1}function hoverTooltip(a,e={}){let s=StateEffect.define(),o=StateField.define({create(){return null},update(c,d){if(c&&e.hideOnChange&&(d.docChanged||d.selection))return null;for(let _ of d.effects){if(_.is(s))return _.value;if(_.is(closeHoverTooltipEffect))return null}if(c&&d.docChanged){let _=d.changes.mapPos(c.pos,-1,MapMode.TrackDel);if(_==null)return null;let b=Object.assign(Object.create(null),c);return b.pos=_,c.end!=null&&(b.end=d.changes.mapPos(c.end)),b}return c},provide:c=>showHoverTooltip.from(c)});return[o,ViewPlugin.define(c=>new HoverPlugin(c,a,o,s,e.hoverTime||300)),showHoverTooltipHost]}function getTooltip(a,e){let s=a.plugin(tooltipPlugin);if(!s)return null;let o=s.manager.tooltips.indexOf(e);return o<0?null:s.manager.tooltipViews[o]}const closeHoverTooltipEffect=StateEffect.define();class CompletionContext{constructor(e,s,o){this.state=e,this.pos=s,this.explicit=o,this.abortListeners=[]}tokenBefore(e){let s=syntaxTree(this.state).resolveInner(this.pos,-1);for(;s&&e.indexOf(s.name)<0;)s=s.parent;return s?{from:s.from,to:this.pos,text:this.state.sliceDoc(s.from,this.pos),type:s.type}:null}matchBefore(e){let s=this.state.doc.lineAt(this.pos),o=Math.max(s.from,this.pos-250),c=s.text.slice(o-s.from,this.pos-s.from),d=c.search(ensureAnchor(e,!1));return d<0?null:{from:o+d,to:this.pos,text:c.slice(d)}}get aborted(){return this.abortListeners==null}addEventListener(e,s){e=="abort"&&this.abortListeners&&this.abortListeners.push(s)}}function toSet(a){let e=Object.keys(a).join(""),s=/\w/.test(e);return s&&(e=e.replace(/\w/g,"")),`[${s?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function prefixMatch(a){let e=Object.create(null),s=Object.create(null);for(let{label:c}of a){e[c[0]]=!0;for(let d=1;dtypeof c=="string"?{label:c}:c),[s,o]=e.every(c=>/^\w+$/.test(c.label))?[/\w*$/,/\w+$/]:prefixMatch(e);return c=>{let d=c.matchBefore(o);return d||c.explicit?{from:d?d.from:c.pos,options:e,span:s}:null}}function ifNotIn(a,e){return s=>{for(let o=syntaxTree(s.state).resolveInner(s.pos,-1);o;o=o.parent)if(a.indexOf(o.name)>-1)return null;return e(s)}}class Option{constructor(e,s,o){this.completion=e,this.source=s,this.match=o}}function cur(a){return a.selection.main.head}function ensureAnchor(a,e){var s;let{source:o}=a,c=e&&o[0]!="^",d=o[o.length-1]!="$";return!c&&!d?a:new RegExp(`${c?"^":""}(?:${o})${d?"$":""}`,(s=a.flags)!==null&&s!==void 0?s:a.ignoreCase?"i":"")}const pickedCompletion=Annotation.define();function applyCompletion(a,e){let s=e.completion.apply||e.completion.label,o=e.source;typeof s=="string"?a.dispatch({changes:{from:o.from,to:o.to,insert:s},selection:{anchor:o.from+s.length},userEvent:"input.complete",annotations:pickedCompletion.of(e.completion)}):s(a,e.completion,o.from,o.to)}const SourceCache=new WeakMap;function asSource(a){if(!Array.isArray(a))return a;let e=SourceCache.get(a);return e||SourceCache.set(a,e=completeFromList(a)),e}class FuzzyMatcher{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[];for(let s=0;s=48&&ct<=57||ct>=97&&ct<=122?2:ct>=65&&ct<=90?1:0:(ut=fromCodePoint(ct))!=ut.toLowerCase()?1:ut!=ut.toUpperCase()?2:0;(!ot||at==1&&rt||dt==0&&at!=0)&&(s[_e]==ct||o[_e]==ct&&(et=!0)?_[_e++]=ot:_.length&&(st=!1)),dt=at,ot+=codePointSize(ct)}return _e==k&&_[0]==0&&st?this.result(-100+(et?-200:0),_,e):tt==k&&nt==0?[-200-e.length,0,it]:b>-1?[-700-e.length,b,b+this.pattern.length]:tt==k?[-200+-700-e.length,nt,it]:_e==k?this.result(-100+(et?-200:0)+-700+(st?0:-1100),_,e):s.length==2?null:this.result((c[0]?-700:0)+-200+-1100,c,e)}result(e,s,o){let c=[e-o.length],d=1;for(let _ of s){let b=_+(this.astral?codePointSize(codePointAt(o,_)):1);d>1&&c[d-1]==_?c[d-1]=b:(c[d++]=_,c[d++]=b)}return c}}const completionConfig=Facet.define({combine(a){return combineConfig(a,{activateOnTyping:!0,override:null,maxRenderedOptions:100,defaultKeymap:!0,optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[]},{defaultKeymap:(e,s)=>e&&s,icons:(e,s)=>e&&s,optionClass:(e,s)=>o=>joinClass(e(o),s(o)),addToOptions:(e,s)=>e.concat(s)})}});function joinClass(a,e){return a?e?a+" "+e:a:e}function optionContent(a){let e=a.addToOptions.slice();return a.icons&&e.push({render(s){let o=document.createElement("div");return o.classList.add("cm-completionIcon"),s.type&&o.classList.add(...s.type.split(/\s+/g).map(c=>"cm-completionIcon-"+c)),o.setAttribute("aria-hidden","true"),o},position:20}),e.push({render(s,o,c){let d=document.createElement("span");d.className="cm-completionLabel";let{label:_}=s,b=0;for(let k=1;kb&&d.appendChild(document.createTextNode(_.slice(b,$)));let _e=d.appendChild(document.createElement("span"));_e.appendChild(document.createTextNode(_.slice($,j))),_e.className="cm-completionMatchedText",b=j}return b<_.length&&d.appendChild(document.createTextNode(_.slice(b))),d},position:50},{render(s){if(!s.detail)return null;let o=document.createElement("span");return o.className="cm-completionDetail",o.textContent=s.detail,o},position:80}),e.sort((s,o)=>s.position-o.position).map(s=>s.render)}function rangeAroundSelected(a,e,s){if(a<=s)return{from:0,to:a};if(e<=a>>1){let c=Math.floor(e/s);return{from:c*s,to:(c+1)*s}}let o=Math.floor((a-e)/s);return{from:a-(o+1)*s,to:a-o*s}}class CompletionTooltip{constructor(e,s){this.view=e,this.stateField=s,this.info=null,this.placeInfo={read:()=>this.measureInfo(),write:b=>this.positionInfo(b),key:this};let o=e.state.field(s),{options:c,selected:d}=o.open,_=e.state.facet(completionConfig);this.optionContent=optionContent(_),this.optionClass=_.optionClass,this.range=rangeAroundSelected(c.length,d,_.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.dom.addEventListener("mousedown",b=>{for(let k=b.target,$;k&&k!=this.dom;k=k.parentNode)if(k.nodeName=="LI"&&($=/-(\d+)$/.exec(k.id))&&+$[1]{this.info&&this.view.requestMeasure(this.placeInfo)})}mount(){this.updateSel()}update(e){e.state.field(this.stateField)!=e.startState.field(this.stateField)&&this.updateSel()}positioned(){this.info&&this.view.requestMeasure(this.placeInfo)}updateSel(){let e=this.view.state.field(this.stateField),s=e.open;if((s.selected=this.range.to)&&(this.range=rangeAroundSelected(s.options.length,s.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.list.remove(),this.list=this.dom.appendChild(this.createListBox(s.options,e.id,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfo)})),this.updateSelectedOption(s.selected)){this.info&&(this.info.remove(),this.info=null);let{completion:o}=s.options[s.selected],{info:c}=o;if(!c)return;let d=typeof c=="string"?document.createTextNode(c):c(o);if(!d)return;"then"in d?d.then(_=>{_&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(_)}).catch(_=>logException(this.view.state,_,"completion info")):this.addInfoPane(d)}}addInfoPane(e){let s=this.info=document.createElement("div");s.className="cm-tooltip cm-completionInfo",s.appendChild(e),this.dom.appendChild(s),this.view.requestMeasure(this.placeInfo)}updateSelectedOption(e){let s=null;for(let o=this.list.firstChild,c=this.range.from;o;o=o.nextSibling,c++)c==e?o.hasAttribute("aria-selected")||(o.setAttribute("aria-selected","true"),s=o):o.hasAttribute("aria-selected")&&o.removeAttribute("aria-selected");return s&&scrollIntoView(this.list,s),s}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let s=this.dom.getBoundingClientRect(),o=this.info.getBoundingClientRect(),c=e.getBoundingClientRect();if(c.top>Math.min(innerHeight,s.bottom)-10||c.bottomnew CompletionTooltip(e,a)}function scrollIntoView(a,e){let s=a.getBoundingClientRect(),o=e.getBoundingClientRect();o.tops.bottom&&(a.scrollTop+=o.bottom-s.bottom)}const MaxOptions=300;function score(a){return(a.boost||0)*100+(a.apply?10:0)+(a.info?5:0)+(a.type?1:0)}function sortOptions(a,e){let s=[],o=0;for(let _ of a)if(_.hasResult())if(_.result.filter===!1)for(let b of _.result.options)s.push(new Option(b,_,[1e9-o++]));else{let b=new FuzzyMatcher(e.sliceDoc(_.from,_.to)),k;for(let $ of _.result.options)(k=b.match($.label))&&($.boost!=null&&(k[0]+=$.boost),s.push(new Option($,_,k)))}let c=[],d=null;for(let _ of s.sort(cmpOption)){if(c.length==MaxOptions)break;!d||d.label!=_.completion.label||d.detail!=_.completion.detail||d.type!=_.completion.type||d.apply!=_.completion.apply?c.push(_):score(_.completion)>score(d)&&(c[c.length-1]=_),d=_.completion}return c}class CompletionDialog{constructor(e,s,o,c,d){this.options=e,this.attrs=s,this.tooltip=o,this.timestamp=c,this.selected=d}setSelected(e,s){return e==this.selected||e>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(s,e),this.tooltip,this.timestamp,e)}static build(e,s,o,c,d){let _=sortOptions(e,s);if(!_.length)return null;let b=0;if(c&&c.selected){let k=c.options[c.selected].completion;for(let $=0;$<_.length;$++)if(_[$].completion==k){b=$;break}}return new CompletionDialog(_,makeAttrs(o,b),{pos:e.reduce((k,$)=>$.hasResult()?Math.min(k,$.from):k,1e8),create:completionTooltip(completionState),above:d.aboveCursor},c?c.timestamp:Date.now(),b)}map(e){return new CompletionDialog(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected)}}class CompletionState{constructor(e,s,o){this.active=e,this.id=s,this.open=o}static start(){return new CompletionState(none,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:s}=e,o=s.facet(completionConfig),d=(o.override||s.languageDataAt("autocomplete",cur(s)).map(asSource)).map(b=>(this.active.find($=>$.source==b)||new ActiveSource(b,this.active.some($=>$.state!=0)?1:0)).update(e,o));d.length==this.active.length&&d.every((b,k)=>b==this.active[k])&&(d=this.active);let _=e.selection||d.some(b=>b.hasResult()&&e.changes.touchesRange(b.from,b.to))||!sameResults(d,this.active)?CompletionDialog.build(d,s,this.id,this.open,o):this.open&&e.docChanged?this.open.map(e.changes):this.open;!_&&d.every(b=>b.state!=1)&&d.some(b=>b.hasResult())&&(d=d.map(b=>b.hasResult()?new ActiveSource(b.source,0):b));for(let b of e.effects)b.is(setSelectedEffect)&&(_=_&&_.setSelected(b.value,this.id));return d==this.active&&_==this.open?this:new CompletionState(d,this.id,_)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:baseAttrs}}function sameResults(a,e){if(a==e)return!0;for(let s=0,o=0;;){for(;sd||s=="delete"&&cur(e.startState)==this.from)return new ActiveSource(this.source,s=="input"&&o.activateOnTyping?1:0);let b=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos);return this.span&&(c==d||this.span.test(e.state.sliceDoc(c,d)))?new ActiveResult(this.source,b,this.result,c,d,this.span):new ActiveSource(this.source,1,b)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty?this:new ActiveResult(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1),this.span)}}const startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),setActiveEffect=StateEffect.define({map(a,e){return a.map(s=>s.map(e))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(a,e){return a.update(e)},provide:a=>[showTooltip.from(a,e=>e.tooltip),EditorView.contentAttributes.from(a,e=>e.attrs)]}),CompletionInteractMargin=75;function moveCompletionSelection(a,e="option"){return s=>{let o=s.state.field(completionState,!1);if(!o||!o.open||Date.now()-o.open.timestamp=b&&(_=e=="page"?b-1:0),s.dispatch({effects:setSelectedEffect.of(_)}),!0}}const acceptCompletion=a=>{let e=a.state.field(completionState,!1);return a.state.readOnly||!e||!e.open||Date.now()-e.open.timestampa.state.field(completionState,!1)?(a.dispatch({effects:startCompletionEffect.of(!0)}),!0):!1,closeCompletion=a=>{let e=a.state.field(completionState,!1);return!e||!e.active.some(s=>s.state!=0)?!1:(a.dispatch({effects:closeCompletionEffect.of(null)}),!0)};class RunningQuery{constructor(e,s){this.active=e,this.context=s,this.time=Date.now(),this.updates=[],this.done=void 0}}const DebounceTime=50,MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(a){this.view=a,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.composing=0;for(let e of a.state.field(completionState).active)e.state==1&&this.startQuery(e)}update(a){let e=a.state.field(completionState);if(!a.selectionSet&&!a.docChanged&&a.startState.field(completionState)==e)return;let s=a.transactions.some(o=>(o.selection||o.docChanged)&&!getUserEvent(o));for(let o=0;oMaxUpdateCount&&Date.now()-c.time>MinAbortTime){for(let d of c.context.abortListeners)try{d()}catch(_){logException(this.view.state,_)}c.context.abortListeners=null,this.running.splice(o--,1)}else c.updates.push(...a.transactions)}if(this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),this.debounceUpdate=e.active.some(o=>o.state==1&&!this.running.some(c=>c.active.source==o.source))?setTimeout(()=>this.startUpdate(),DebounceTime):-1,this.composing!=0)for(let o of a.transactions)getUserEvent(o)=="input"?this.composing=2:this.composing==2&&o.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1;let{state:a}=this.view,e=a.field(completionState);for(let s of e.active)s.state==1&&!this.running.some(o=>o.active.source==s.source)&&this.startQuery(s)}startQuery(a){let{state:e}=this.view,s=cur(e),o=new CompletionContext(e,s,a.explicitPos==s),c=new RunningQuery(a,o);this.running.push(c),Promise.resolve(a.source(o)).then(d=>{c.context.aborted||(c.done=d||null,this.scheduleAccept())},d=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,d)})}scheduleAccept(){this.running.every(a=>a.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),DebounceTime))}accept(){var a;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],s=this.view.state.facet(completionConfig);for(let o=0;o_.source==c.active.source);if(d&&d.state==1)if(c.done==null){let _=new ActiveSource(c.active.source,0);for(let b of c.updates)_=_.update(b,s);_.state!=1&&e.push(_)}else this.startQuery(d)}e.length&&this.view.dispatch({effects:setActiveEffect.of(e)})}},{eventHandlers:{compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),baseTheme$1=EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",listStyle:"none",margin:0,padding:0,"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer",padding:"1px 3px",lineHeight:1.2}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"300px"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class FieldPos{constructor(e,s,o,c){this.field=e,this.line=s,this.from=o,this.to=c}}class FieldRange{constructor(e,s,o){this.field=e,this.from=s,this.to=o}map(e){let s=e.mapPos(this.from,-1,MapMode.TrackDel),o=e.mapPos(this.to,1,MapMode.TrackDel);return s==null||o==null?null:new FieldRange(this.field,s,o)}}class Snippet{constructor(e,s){this.lines=e,this.fieldPositions=s}instantiate(e,s){let o=[],c=[s],d=e.doc.lineAt(s),_=/^\s*/.exec(d.text)[0];for(let k of this.lines){if(o.length){let $=_,j=/^\t*/.exec(k)[0].length;for(let _e=0;_enew FieldRange(k.field,c[k.line]+k.from,c[k.line]+k.to));return{text:o,ranges:b}}static parse(e){let s=[],o=[],c=[],d;for(let _ of e.split(/\r\n?|\n/)){for(;d=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(_);){let b=d[1]?+d[1]:null,k=d[2]||d[3]||"",$=-1;for(let j=0;j=$&&_e.field++}c.push(new FieldPos($,o.length,d.index,d.index+k.length)),_=_.slice(0,d.index)+k+_.slice(d.index+d[0].length)}o.push(_)}return new Snippet(o,c)}}let fieldMarker=Decoration.widget({widget:new class extends WidgetType{toDOM(){let a=document.createElement("span");return a.className="cm-snippetFieldPosition",a}ignoreEvent(){return!1}}}),fieldRange=Decoration.mark({class:"cm-snippetField"});class ActiveSnippet{constructor(e,s){this.ranges=e,this.active=s,this.deco=Decoration.set(e.map(o=>(o.from==o.to?fieldMarker:fieldRange).range(o.from,o.to)))}map(e){let s=[];for(let o of this.ranges){let c=o.map(e);if(!c)return null;s.push(c)}return new ActiveSnippet(s,this.active)}selectionInsideField(e){return e.ranges.every(s=>this.ranges.some(o=>o.field==this.active&&o.from<=s.from&&o.to>=s.to))}}const setActive=StateEffect.define({map(a,e){return a&&a.map(e)}}),moveToField=StateEffect.define(),snippetState=StateField.define({create(){return null},update(a,e){for(let s of e.effects){if(s.is(setActive))return s.value;if(s.is(moveToField)&&a)return new ActiveSnippet(a.ranges,s.value)}return a&&e.docChanged&&(a=a.map(e.changes)),a&&e.selection&&!a.selectionInsideField(e.selection)&&(a=null),a},provide:a=>EditorView.decorations.from(a,e=>e?e.deco:Decoration.none)});function fieldSelection(a,e){return EditorSelection.create(a.filter(s=>s.field==e).map(s=>EditorSelection.range(s.from,s.to)))}function snippet(a){let e=Snippet.parse(a);return(s,o,c,d)=>{let{text:_,ranges:b}=e.instantiate(s.state,c),k={changes:{from:c,to:d,insert:Text.of(_)}};if(b.length&&(k.selection=fieldSelection(b,0)),b.length>1){let $=new ActiveSnippet(b,0),j=k.effects=[setActive.of($)];s.state.field(snippetState,!1)===void 0&&j.push(StateEffect.appendConfig.of([snippetState,addSnippetKeymap,snippetPointerHandler,baseTheme$1]))}s.dispatch(s.state.update(k))}}function moveField(a){return({state:e,dispatch:s})=>{let o=e.field(snippetState,!1);if(!o||a<0&&o.active==0)return!1;let c=o.active+a,d=a>0&&!o.ranges.some(_=>_.field==c+a);return s(e.update({selection:fieldSelection(o.ranges,c),effects:setActive.of(d?null:new ActiveSnippet(o.ranges,c))})),!0}}const clearSnippet=({state:a,dispatch:e})=>a.field(snippetState,!1)?(e(a.update({effects:setActive.of(null)})),!0):!1,nextSnippetField=moveField(1),prevSnippetField=moveField(-1),defaultSnippetKeymap=[{key:"Tab",run:nextSnippetField,shift:prevSnippetField},{key:"Escape",run:clearSnippet}],snippetKeymap=Facet.define({combine(a){return a.length?a[0]:defaultSnippetKeymap}}),addSnippetKeymap=Prec.highest(keymap.compute([snippetKeymap],a=>a.facet(snippetKeymap)));function snippetCompletion(a,e){return Object.assign(Object.assign({},e),{apply:snippet(a)})}const snippetPointerHandler=EditorView.domEventHandlers({mousedown(a,e){let s=e.state.field(snippetState,!1),o;if(!s||(o=e.posAtCoords({x:a.clientX,y:a.clientY}))==null)return!1;let c=s.ranges.find(d=>d.from<=o&&d.to>=o);return!c||c.field==s.active?!1:(e.dispatch({selection:fieldSelection(s.ranges,c.field),effects:setActive.of(s.ranges.some(d=>d.field>c.field)?new ActiveSnippet(s.ranges,c.field):null)}),!0)}});function autocompletion(a={}){return[completionState,completionConfig.of(a),completionPlugin,completionKeymapExt,baseTheme$1]}const completionKeymap=[{key:"Ctrl-Space",run:startCompletion},{key:"Escape",run:closeCompletion},{key:"ArrowDown",run:moveCompletionSelection(!0)},{key:"ArrowUp",run:moveCompletionSelection(!1)},{key:"PageDown",run:moveCompletionSelection(!0,"page")},{key:"PageUp",run:moveCompletionSelection(!1,"page")},{key:"Enter",run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],a=>a.facet(completionConfig).defaultKeymap?[completionKeymap]:[])),toggleComment=a=>{let e=getConfig(a.state);return e.line?toggleLineComment(a):e.block?toggleBlockCommentByLine(a):!1};function command(a,e){return({state:s,dispatch:o})=>{if(s.readOnly)return!1;let c=a(e,s);return c?(o(s.update(c)),!0):!1}}const toggleLineComment=command(changeLineComment,0),toggleBlockComment=command(changeBlockComment,0),toggleBlockCommentByLine=command((a,e)=>changeBlockComment(a,e,selectedLineRanges(e)),0),commentKeymap=[{key:"Mod-/",run:toggleComment},{key:"Alt-A",run:toggleBlockComment}];function getConfig(a,e=a.selection.main.head){let s=a.languageDataAt("commentTokens",e);return s.length?s[0]:{}}const SearchMargin=50;function findBlockComment(a,{open:e,close:s},o,c){let d=a.sliceDoc(o-SearchMargin,o),_=a.sliceDoc(c,c+SearchMargin),b=/\s*$/.exec(d)[0].length,k=/^\s*/.exec(_)[0].length,$=d.length-b;if(d.slice($-e.length,$)==e&&_.slice(k,k+s.length)==s)return{open:{pos:o-b,margin:b&&1},close:{pos:c+k,margin:k&&1}};let j,_e;c-o<=2*SearchMargin?j=_e=a.sliceDoc(o,c):(j=a.sliceDoc(o,o+SearchMargin),_e=a.sliceDoc(c-SearchMargin,c));let et=/^\s*/.exec(j)[0].length,tt=/\s*$/.exec(_e)[0].length,nt=_e.length-tt-s.length;return j.slice(et,et+e.length)==e&&_e.slice(nt,nt+s.length)==s?{open:{pos:o+et+e.length,margin:/\s/.test(j.charAt(et+e.length))?1:0},close:{pos:c-tt-s.length,margin:/\s/.test(_e.charAt(nt-1))?1:0}}:null}function selectedLineRanges(a){let e=[];for(let s of a.selection.ranges){let o=a.doc.lineAt(s.from),c=s.to<=o.to?o:a.doc.lineAt(s.to),d=e.length-1;d>=0&&e[d].to>o.from?e[d].to=c.to:e.push({from:o.from,to:c.to})}return e}function changeBlockComment(a,e,s=e.selection.ranges){let o=s.map(d=>getConfig(e,d.from).block);if(!o.every(d=>d))return null;let c=s.map((d,_)=>findBlockComment(e,o[_],d.from,d.to));if(a!=2&&!c.every(d=>d))return{changes:e.changes(s.map((d,_)=>c[_]?[]:[{from:d.from,insert:o[_].open+" "},{from:d.to,insert:" "+o[_].close}]))};if(a!=1&&c.some(d=>d)){let d=[];for(let _=0,b;_c&&(d==_||_>j.from)){c=j.from;let _e=getConfig(e,$).line;if(!_e)continue;let et=/^\s*/.exec(j.text)[0].length,tt=et==j.length,nt=j.text.slice(et,et+_e.length)==_e?et:-1;etd.comment<0&&(!d.empty||d.single))){let d=[];for(let{line:b,token:k,indent:$,empty:j,single:_e}of o)(_e||!j)&&d.push({from:b.from+$,insert:k+" "});let _=e.changes(d);return{changes:_,selection:e.selection.map(_,1)}}else if(a!=1&&o.some(d=>d.comment>=0)){let d=[];for(let{line:_,comment:b,token:k}of o)if(b>=0){let $=_.from+b,j=$+k.length;_.text[j-_.from]==" "&&j++,d.push({from:$,to:j})}return{changes:d}}return null}const MaxOff=2e3;function rectangleFor(a,e,s){let o=Math.min(e.line,s.line),c=Math.max(e.line,s.line),d=[];if(e.off>MaxOff||s.off>MaxOff||e.col<0||s.col<0){let _=Math.min(e.off,s.off),b=Math.max(e.off,s.off);for(let k=o;k<=c;k++){let $=a.doc.line(k);$.length<=b&&d.push(EditorSelection.range($.from+_,$.to+b))}}else{let _=Math.min(e.col,s.col),b=Math.max(e.col,s.col);for(let k=o;k<=c;k++){let $=a.doc.line(k),j=findColumn($.text,_,a.tabSize,!0);if(j>-1){let _e=findColumn($.text,b,a.tabSize);d.push(EditorSelection.range($.from+j,$.from+_e))}}}return d}function absoluteColumn(a,e){let s=a.coordsAtPos(a.viewport.from);return s?Math.round(Math.abs((s.left-e)/a.defaultCharacterWidth)):-1}function getPos(a,e){let s=a.posAtCoords({x:e.clientX,y:e.clientY},!1),o=a.state.doc.lineAt(s),c=s-o.from,d=c>MaxOff?-1:c==o.length?absoluteColumn(a,e.clientX):countColumn(o.text,a.state.tabSize,s-o.from);return{line:o.number,col:d,off:c}}function rectangleSelectionStyle(a,e){let s=getPos(a,e),o=a.state.selection;return s?{update(c){if(c.docChanged){let d=c.changes.mapPos(c.startState.doc.line(s.line).from),_=c.state.doc.lineAt(d);s={line:_.number,col:s.col,off:Math.min(s.off,_.length)},o=o.map(c.changes)}},get(c,d,_){let b=getPos(a,c);if(!b)return o;let k=rectangleFor(a.state,s,b);return k.length?_?EditorSelection.create(k.concat(o.ranges)):EditorSelection.create(k):o}}:null}function rectangularSelection(a){let e=(a==null?void 0:a.eventFilter)||(s=>s.altKey&&s.button==0);return EditorView.mouseSelectionStyle.of((s,o)=>e(o)?rectangleSelectionStyle(s,o):null)}let nextTagID=0;class Tag{constructor(e,s,o){this.set=e,this.base=s,this.modified=o,this.id=nextTagID++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let s=new Tag([],null,[]);if(s.set.push(s),e)for(let o of e.set)s.set.push(o);return s}static defineModifier(){let e=new Modifier;return s=>s.modified.indexOf(e)>-1?s:Modifier.get(s.base||s,s.modified.concat(e).sort((o,c)=>o.id-c.id))}}let nextModifierID=0;class Modifier{constructor(){this.instances=[],this.id=nextModifierID++}static get(e,s){if(!s.length)return e;let o=s[0].instances.find(b=>b.base==e&&sameArray(s,b.modified));if(o)return o;let c=[],d=new Tag(c,e,s);for(let b of s)b.instances.push(d);let _=permute(s);for(let b of e.set)for(let k of _)c.push(Modifier.get(b,k));return d}}function sameArray(a,e){return a.length==e.length&&a.every((s,o)=>s==e[o])}function permute(a){let e=[a];for(let s=0;s0&&_e+3==c.length){_=1;break}let et=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(b);if(!et)throw new RangeError("Invalid path: "+c);if(d.push(et[0]=="*"?null:et[0][0]=='"'?JSON.parse(et[0]):et[0]),_e+=et[0].length,_e==c.length)break;let tt=c[_e++];if(_e==c.length&&tt=="!"){_=0;break}if(tt!="/")throw new RangeError("Invalid path: "+c);b=c.slice(_e)}let k=d.length-1,$=d[k];if(!$)throw new RangeError("Invalid path: "+c);let j=new Rule(o,_,k>0?d.slice(0,k):null);e[$]=j.sort(e[$])}}return ruleNodeProp.add(e)}const ruleNodeProp=new NodeProp,highlightStyle=Facet.define({combine(a){return a.length?HighlightStyle.combinedMatch(a):null}}),fallbackHighlightStyle=Facet.define({combine(a){return a.length?a[0].match:null}});function getHighlightStyle(a){return a.facet(highlightStyle)||a.facet(fallbackHighlightStyle)}class Rule{constructor(e,s,o,c){this.tags=e,this.mode=s,this.context=o,this.next=c}sort(e){return!e||e.depth_.facet(EditorView.darkTheme)==(s.themeType=="dark")?[this]:[])),this.fallback=d.concat(fallbackHighlightStyle.of(this))}match(e,s){if(this.scope&&s!=this.scope)return null;for(let o of e.set){let c=this.map[o.id];if(c!==void 0)return o!=e&&(this.map[e.id]=c),c}return this.map[e.id]=this.all}static combinedMatch(e){if(e.length==1)return e[0].match;let s=e.some(o=>o.scope)?void 0:Object.create(null);return(o,c)=>{let d=s&&s[o.id];if(d!==void 0)return d;let _=null;for(let b of e){let k=b.match(o,c);k&&(_=_?_+" "+k:k)}return s&&(s[o.id]=_),_}}static define(e,s){return new HighlightStyle(e,s||{})}static get(e,s,o){let c=getHighlightStyle(e);return c&&c(s,o||NodeType.none)}}class TreeHighlighter{constructor(e){this.markCache=Object.create(null),this.tree=syntaxTree(e.state),this.decorations=this.buildDeco(e,getHighlightStyle(e.state))}update(e){let s=syntaxTree(e.state),o=getHighlightStyle(e.state),c=o!=e.startState.facet(highlightStyle);s.length{o.add(_,b,this.markCache[k]||(this.markCache[k]=Decoration.mark({class:k})))});return o.finish()}}const treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:a=>a.decorations})),nodeStack=[""];class HighlightBuilder{constructor(e,s,o){this.at=e,this.style=s,this.span=o,this.class=""}startSpan(e,s){s!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=s)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,s,o,c,d,_){let{type:b,from:k,to:$}=e;if(k>=o||$<=s)return;nodeStack[d]=b.name,b.isTop&&(_=b);let j=c,_e=b.prop(ruleNodeProp),et=!1;for(;_e;){if(!_e.context||matchContext(_e.context,nodeStack,d)){for(let nt of _e.tags){let it=this.style(nt,_);it&&(j&&(j+=" "),j+=it,_e.mode==1?c+=(c?" ":"")+it:_e.mode==0&&(et=!0))}break}_e=_e.next}if(this.startSpan(e.from,j),et)return;let tt=e.tree&&e.tree.prop(NodeProp.mounted);if(tt&&tt.overlay){let nt=e.node.enter(tt.overlay[0].from+k,1),it=e.firstChild();for(let rt=0,st=k;;rt++){let ot=rt=lt||!e.nextSibling())););if(!ot||lt>o)break;st=ot.to+k,st>s&&(this.highlightRange(nt.cursor,Math.max(s,ot.from+k),Math.min(o,st),c,d,tt.tree.type),this.startSpan(st,j))}it&&e.parent()}else if(e.firstChild()){do if(!(e.to<=s)){if(e.from>=o)break;this.highlightRange(e,s,o,c,d+1,_),this.startSpan(Math.min(o,e.to),j)}while(e.nextSibling());e.parent()}}}function highlightTreeRange(a,e,s,o,c){let d=new HighlightBuilder(e,o,c);d.highlightRange(a.cursor(),e,s,"",0,a.type),d.flush(s)}function matchContext(a,e,s){if(a.length>s-1)return!1;for(let o=s-1,c=a.length-1;c>=0;c--,o--){let d=a[c];if(d&&d!=e[o])return!1}return!0}const t=Tag.define,comment=t(),name=t(),typeName=t(name),propertyName=t(name),literal=t(),string=t(literal),number=t(literal),content=t(),heading=t(content),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment,lineComment:t(comment),blockComment:t(comment),docComment:t(comment),name,variableName:t(name),typeName,tagName:t(typeName),propertyName,attributeName:t(propertyName),className:t(name),labelName:t(name),namespace:t(name),macroName:t(name),literal,string,docString:t(string),character:t(string),attributeValue:t(string),number,integer:t(number),float:t(number),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content,heading,heading1:t(heading),heading2:t(heading),heading3:t(heading),heading4:t(heading),heading5:t(heading),heading6:t(heading),contentSeparator:t(content),list:t(content),quote:t(content),emphasis:t(content),strong:t(content),link:t(content),monospace:t(content),strikethrough:t(content),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(),constant:Tag.defineModifier(),function:Tag.defineModifier(),standard:Tag.defineModifier(),local:Tag.defineModifier(),special:Tag.defineModifier()},defaultHighlightStyle=HighlightStyle.define([{tag:tags.link,textDecoration:"underline"},{tag:tags.heading,textDecoration:"underline",fontWeight:"bold"},{tag:tags.emphasis,fontStyle:"italic"},{tag:tags.strong,fontWeight:"bold"},{tag:tags.strikethrough,textDecoration:"line-through"},{tag:tags.keyword,color:"#708"},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:"#219"},{tag:[tags.literal,tags.inserted],color:"#164"},{tag:[tags.string,tags.deleted],color:"#a11"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:"#e40"},{tag:tags.definition(tags.variableName),color:"#00f"},{tag:tags.local(tags.variableName),color:"#30a"},{tag:[tags.typeName,tags.namespace],color:"#085"},{tag:tags.className,color:"#167"},{tag:[tags.special(tags.variableName),tags.macroName],color:"#256"},{tag:tags.definition(tags.propertyName),color:"#00c"},{tag:tags.comment,color:"#940"},{tag:tags.meta,color:"#7a757a"},{tag:tags.invalid,color:"#f00"}]);tags.link,tags.heading,tags.emphasis,tags.strong,tags.keyword,tags.atom,tags.bool,tags.url,tags.labelName,tags.inserted,tags.deleted,tags.literal,tags.string,tags.number,tags.regexp,tags.escape,tags.string,tags.variableName,tags.variableName,tags.variableName,tags.variableName,tags.propertyName,tags.typeName,tags.namespace,tags.className,tags.macroName,tags.propertyName,tags.operator,tags.comment,tags.meta,tags.invalid,tags.punctuation;class SelectedDiagnostic{constructor(e,s,o){this.from=e,this.to=s,this.diagnostic=o}}class LintState{constructor(e,s,o){this.diagnostics=e,this.panel=s,this.selected=o}static init(e,s,o){let c=Decoration.set(e.map(d=>d.from==d.to||d.from==d.to-1&&o.doc.lineAt(d.from).to==d.from?Decoration.widget({widget:new DiagnosticWidget(d),diagnostic:d}).range(d.from):Decoration.mark({attributes:{class:"cm-lintRange cm-lintRange-"+d.severity},diagnostic:d}).range(d.from,d.to)),!0);return new LintState(c,s,findDiagnostic(c))}}function findDiagnostic(a,e=null,s=0){let o=null;return a.between(s,1e9,(c,d,{spec:_})=>{if(!(e&&_.diagnostic!=e))return o=new SelectedDiagnostic(c,d,_.diagnostic),!1}),o}function maybeEnableLint(a,e){return a.field(lintState,!1)?e:e.concat(StateEffect.appendConfig.of([lintState,EditorView.decorations.compute([lintState],s=>{let{selected:o,panel:c}=s.field(lintState);return!o||!c||o.from==o.to?Decoration.none:Decoration.set([activeMark.range(o.from,o.to)])}),hoverTooltip(lintTooltip),baseTheme]))}const setDiagnosticsEffect=StateEffect.define(),togglePanel=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(a,e){if(e.docChanged){let s=a.diagnostics.map(e.changes),o=null;if(a.selected){let c=e.changes.mapPos(a.selected.from,1);o=findDiagnostic(s,a.selected.diagnostic,c)||findDiagnostic(s,null,c)}a=new LintState(s,a.panel,o)}for(let s of e.effects)s.is(setDiagnosticsEffect)?a=LintState.init(s.value,a.panel,e.state):s.is(togglePanel)?a=new LintState(a.diagnostics,s.value?LintPanel.open:null,a.selected):s.is(movePanelSelection)&&(a=new LintState(a.diagnostics,a.panel,s.value));return a},provide:a=>[showPanel.from(a,e=>e.panel),EditorView.decorations.from(a,e=>e.diagnostics)]}),activeMark=Decoration.mark({class:"cm-lintRange cm-lintRange-active"});function lintTooltip(a,e,s){let{diagnostics:o}=a.state.field(lintState),c=[],d=2e8,_=0;return o.between(e-(s<0?1:0),e+(s>0?1:0),(b,k,{spec:$})=>{e>=b&&e<=k&&(b==k||(e>b||s>0)&&(erenderDiagnostic(a,s,!1)))}const openLintPanel=a=>{let e=a.state.field(lintState,!1);(!e||!e.panel)&&a.dispatch({effects:maybeEnableLint(a.state,[togglePanel.of(!0)])});let s=getPanel(a,LintPanel.open);return s&&s.dom.querySelector(".cm-panel-lint ul").focus(),!0},closeLintPanel=a=>{let e=a.state.field(lintState,!1);return!e||!e.panel?!1:(a.dispatch({effects:togglePanel.of(!1)}),!0)},nextDiagnostic=a=>{let e=a.state.field(lintState,!1);if(!e)return!1;let s=a.state.selection.main,o=e.diagnostics.iter(s.to+1);return!o.value&&(o=e.diagnostics.iter(0),!o.value||o.from==s.from&&o.to==s.to)?!1:(a.dispatch({selection:{anchor:o.from,head:o.to},scrollIntoView:!0}),!0)},lintKeymap=[{key:"Mod-Shift-m",run:openLintPanel},{key:"F8",run:nextDiagnostic}];function assignKeys(a){let e=[];if(a)e:for(let{name:s}of a){for(let o=0;od.toLowerCase()==c.toLowerCase())){e.push(c);continue e}}e.push("")}return e}function renderDiagnostic(a,e,s){var o;let c=s?assignKeys(e.actions):[];return crelt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},crelt("span",{class:"cm-diagnosticText"},e.message),(o=e.actions)===null||o===void 0?void 0:o.map((d,_)=>{let b=_e=>{_e.preventDefault();let et=findDiagnostic(a.state.field(lintState).diagnostics,e);et&&d.apply(a,et.from,et.to)},{name:k}=d,$=c[_]?k.indexOf(c[_]):-1,j=$<0?k:[k.slice(0,$),crelt("u",k.slice($,$+1)),k.slice($+1)];return crelt("button",{type:"button",class:"cm-diagnosticAction",onclick:b,onmousedown:b,"aria-label":` Action: ${k}${$<0?"":` (access key "${c[_]})"`}.`},j)}),e.source&&crelt("div",{class:"cm-diagnosticSource"},e.source))}class DiagnosticWidget extends WidgetType{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return crelt("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class PanelItem{constructor(e,s){this.diagnostic=s,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=renderDiagnostic(e,s,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class LintPanel{constructor(e){this.view=e,this.items=[];let s=c=>{if(c.keyCode==27)closeLintPanel(this.view),this.view.focus();else if(c.keyCode==38||c.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(c.keyCode==40||c.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(c.keyCode==36)this.moveSelection(0);else if(c.keyCode==35)this.moveSelection(this.items.length-1);else if(c.keyCode==13)this.view.focus();else if(c.keyCode>=65&&c.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:d}=this.items[this.selectedIndex],_=assignKeys(d.actions);for(let b=0;b<_.length;b++)if(_[b].toUpperCase().charCodeAt(0)==c.keyCode){let k=findDiagnostic(this.view.state.field(lintState).diagnostics,d);k&&d.actions[b].apply(e,k.from,k.to)}}else return;c.preventDefault()},o=c=>{for(let d=0;dcloseLintPanel(this.view)},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(lintState).selected;if(!e)return-1;for(let s=0;s{let $=-1,j;for(let _e=o;_eo&&(this.items.splice(o,$-o),c=!0)),s&&j.diagnostic==s.diagnostic?j.dom.hasAttribute("aria-selected")||(j.dom.setAttribute("aria-selected","true"),d=j):j.dom.hasAttribute("aria-selected")&&j.dom.removeAttribute("aria-selected"),o++});o({sel:d.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:_,panel:b})=>{_.topb.bottom&&(this.list.scrollTop+=_.bottom-b.bottom)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),c&&this.sync()}sync(){let e=this.list.firstChild;function s(){let o=e;e=o.nextSibling,o.remove()}for(let o of this.items)if(o.dom.parentNode==this.list){for(;e!=o.dom;)s();e=o.dom.nextSibling}else this.list.insertBefore(o.dom,e);for(;e;)s()}moveSelection(e){if(this.selectedIndex<0)return;let s=this.view.state.field(lintState),o=findDiagnostic(s.diagnostics,this.items[e].diagnostic);!o||this.view.dispatch({selection:{anchor:o.from,head:o.to},scrollIntoView:!0,effects:movePanelSelection.of(o)})}static open(e){return new LintPanel(e)}}function svg(a,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(a)}')`}function underline(a){return svg(``,'width="6" height="3"')}const baseTheme=EditorView.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:underline("#d11")},".cm-lintRange-warning":{backgroundImage:underline("orange")},".cm-lintRange-info":{backgroundImage:underline("#999")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/** @license React v17.0.2 - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var f=react.exports,g=60103;reactJsxRuntime_production_min.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var h=Symbol.for;g=h("react.element"),reactJsxRuntime_production_min.Fragment=h("react.fragment")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};function q(a,e,s){var o,c={},d=null,_=null;s!==void 0&&(d=""+s),e.key!==void 0&&(d=""+e.key),e.ref!==void 0&&(_=e.ref);for(o in e)n.call(e,o)&&!p.hasOwnProperty(o)&&(c[o]=e[o]);if(a&&a.defaultProps)for(o in e=a.defaultProps,e)c[o]===void 0&&(c[o]=e[o]);return{$$typeof:g,type:a,key:d,ref:_,props:c,_owner:m.current}}reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;jsxRuntime.exports=reactJsxRuntime_production_min;const jsx=jsxRuntime.exports.jsx,jsxs=jsxRuntime.exports.jsxs,Fragment=jsxRuntime.exports.Fragment;/*! @license ReactCodeMirror - MIT License - Tom Golden (8162045+tbjgolden@users.noreply.github.com) */var __assign=function(){return __assign=Object.assign||function(e){for(var s,o=1,c=arguments.length;o0)&&!(c=o.next()).done;)d.push(c.value)}catch(b){_={error:b}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(_)throw _.error}}return d}function __spreadArray(a,e,s){if(s||arguments.length===2)for(var o=0,c=e.length,d;os%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,s,o=0){let c=e.parser.context;return new Stack(e,[],s,o,o,0,[],0,c?new StackContext(c,c.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,s){this.stack.push(this.state,s,this.bufferBase+this.buffer.length),this.state=e}reduce(e){let s=e>>19,o=e&65535,{parser:c}=this.p,d=c.dynamicPrecedence(o);if(d&&(this.score+=d),s==0){this.pushState(c.getGoto(this.state,o,!0),this.reducePos),o_;)this.stack.pop();this.reduceContext(o,b)}storeNode(e,s,o,c=4,d=!1){if(e==0){let _=this,b=this.buffer.length;if(b==0&&_.parent&&(b=_.bufferBase-_.parent.bufferBase,_=_.parent),b>0&&_.buffer[b-4]==0&&_.buffer[b-1]>-1){if(s==o)return;if(_.buffer[b-2]>=s){_.buffer[b-2]=o;return}}}if(!d||this.pos==o)this.buffer.push(e,s,o,c);else{let _=this.buffer.length;if(_>0&&this.buffer[_-4]!=0)for(;_>0&&this.buffer[_-2]>o;)this.buffer[_]=this.buffer[_-4],this.buffer[_+1]=this.buffer[_-3],this.buffer[_+2]=this.buffer[_-2],this.buffer[_+3]=this.buffer[_-1],_-=4,c>4&&(c-=4);this.buffer[_]=e,this.buffer[_+1]=s,this.buffer[_+2]=o,this.buffer[_+3]=c}}shift(e,s,o){let c=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let d=e,{parser:_}=this.p;(o>this.pos||s<=_.maxNode)&&(this.pos=o,_.stateFlag(d,1)||(this.reducePos=o)),this.pushState(d,c),this.shiftContext(s,c),s<=_.maxNode&&this.buffer.push(s,c,o,4)}else this.pos=o,this.shiftContext(s,c),s<=this.p.parser.maxNode&&this.buffer.push(s,c,o,4)}apply(e,s,o){e&65536?this.reduce(e):this.shift(e,s,o)}useNode(e,s){let o=this.p.reused.length-1;(o<0||this.p.reused[o]!=e)&&(this.p.reused.push(e),o++);let c=this.pos;this.reducePos=this.pos=c+e.length,this.pushState(s,c),this.buffer.push(o,c,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,s=e.buffer.length;for(;s>0&&e.buffer[s-2]>e.reducePos;)s-=4;let o=e.buffer.slice(s),c=e.bufferBase+s;for(;e&&c==e.bufferBase;)e=e.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,o,c,this.curContext,this.lookAhead,e)}recoverByDelete(e,s){let o=e<=this.p.parser.maxNode;o&&this.storeNode(e,this.pos,s,4),this.storeNode(0,this.pos,s,o?8:4),this.pos=this.reducePos=s,this.score-=190}canShift(e){for(let s=new SimulatedStack(this);;){let o=this.p.parser.stateSlot(s.state,4)||this.p.parser.hasAction(s.state,e);if((o&65536)==0)return!0;if(o==0)return!1;s.reduce(o)}}recoverByInsert(e){if(this.stack.length>=300)return[];let s=this.p.parser.nextStates(this.state);if(s.length>4<<1||this.stack.length>=120){let c=[];for(let d=0,_;dk&1&&b==_)||c.push(s[d],_)}s=c}let o=[];for(let c=0;c>19,c=e&65535,d=this.stack.length-o*3;if(d<0||s.getGoto(this.stack[d],c,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reduce(e),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let s=0;sthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class StackContext{constructor(e,s){this.tracker=e,this.context=s,this.hash=e.strict?e.hash(s):0}}var Recover;(function(a){a[a.Insert=200]="Insert",a[a.Delete=190]="Delete",a[a.Reduce=100]="Reduce",a[a.MaxNext=4]="MaxNext",a[a.MaxInsertStackDepth=300]="MaxInsertStackDepth",a[a.DampenInsertStackDepth=120]="DampenInsertStackDepth"})(Recover||(Recover={}));class SimulatedStack{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let s=e&65535,o=e>>19;o==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(o-1)*3;let c=this.start.p.parser.getGoto(this.stack[this.base-3],s,!0);this.state=c}}class StackBufferCursor{constructor(e,s,o){this.stack=e,this.pos=s,this.index=o,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,s=e.bufferBase+e.buffer.length){return new StackBufferCursor(e,s,s-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new StackBufferCursor(this.stack,this.pos,this.index)}}class CachedToken{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const nullToken=new CachedToken;class InputStream{constructor(e,s){this.input=e,this.ranges=s,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=nullToken,this.rangeIndex=0,this.pos=this.chunkPos=s[0].from,this.range=s[0],this.end=s[s.length-1].to,this.readNext()}resolveOffset(e,s){let o=this.range,c=this.rangeIndex,d=this.pos+e;for(;do.to:d>=o.to;){if(c==this.ranges.length-1)return null;let _=this.ranges[++c];d+=_.from-o.to,o=_}return d}peek(e){let s=this.chunkOff+e,o,c;if(s>=0&&s=this.chunk2Pos&&ob.to&&(this.chunk2=this.chunk2.slice(0,b.to-o)),c=this.chunk2.charCodeAt(0)}}return o>=this.token.lookAhead&&(this.token.lookAhead=o+1),c}acceptToken(e,s=0){let o=s?this.resolveOffset(s,-1):this.pos;if(o==null||o=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,s){if(s?(this.token=s,s.start=e,s.lookAhead=e+1,s.value=s.extended=-1):this.token=nullToken,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&s<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,s-this.chunkPos);if(e>=this.chunk2Pos&&s<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,s-this.chunk2Pos);if(e>=this.range.from&&s<=this.range.to)return this.input.read(e,s);let o="";for(let c of this.ranges){if(c.from>=s)break;c.to>e&&(o+=this.input.read(Math.max(c.from,e),Math.min(c.to,s)))}return o}}class TokenGroup{constructor(e,s){this.data=e,this.id=s}token(e,s){readToken(this.data,e,s,this.id)}}TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1;class ExternalTokenizer{constructor(e,s={}){this.token=e,this.contextual=!!s.contextual,this.fallback=!!s.fallback,this.extend=!!s.extend}}function readToken(a,e,s,o){let c=0,d=1<0){let j=a[$];if(b.allows(j)&&(e.token.value==-1||e.token.value==j||_.overrides(j,e.token.value))){e.acceptToken(j);break}}for(let $=e.next,j=0,_e=a[c+2];j<_e;){let et=j+_e>>1,tt=k+et+(et<<1),nt=a[tt],it=a[tt+1];if($=it)j=et+1;else{c=a[tt+2],e.advance();continue e}}break}}function decodeArray(a,e=Uint16Array){if(typeof a!="string")return a;let s=null;for(let o=0,c=0;o=92&&_--,_>=34&&_--;let k=_-32;if(k>=46&&(k-=46,b=!0),d+=k,b)break;d*=46}s?s[c++]=d:s=new e(d)}return s}const verbose=typeof process!="undefined"&&/\bparse\b/.test({}.LOG);let stackIDs=null;var Safety;(function(a){a[a.Margin=25]="Margin"})(Safety||(Safety={}));function cutAt(a,e,s){let o=a.fullCursor();for(o.moveTo(e);;)if(!(s<0?o.childBefore(e):o.childAfter(e)))for(;;){if((s<0?o.toe)&&!o.type.isError)return s<0?Math.max(0,Math.min(o.to-1,e-25)):Math.min(a.length,Math.max(o.from+1,e+25));if(s<0?o.prevSibling():o.nextSibling())break;if(!o.parent())return s<0?0:a.length}}class FragmentCursor{constructor(e,s){this.fragments=e,this.nodeSet=s,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?cutAt(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?cutAt(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=_,null;if(d instanceof Tree){if(_==e){if(_=Math.max(this.safeFrom,e)&&(this.trees.push(d),this.start.push(_),this.index.push(0))}else this.index[s]++,this.nextStart=_+d.length}}}class TokenCache{constructor(e,s){this.stream=s,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(o=>new CachedToken)}getActions(e){let s=0,o=null,{parser:c}=e.p,{tokenizers:d}=c,_=c.stateSlot(e.state,3),b=e.curContext?e.curContext.hash:0,k=0;for(let $=0;$_e.end+25&&(k=Math.max(_e.lookAhead,k)),_e.value!=0)){let et=s;if(_e.extended>-1&&(s=this.addActions(e,_e.extended,_e.end,s)),s=this.addActions(e,_e.value,_e.end,s),!j.extend&&(o=_e,s>et))break}}for(;this.actions.length>s;)this.actions.pop();return k&&e.setLookAhead(k),!o&&e.pos==this.stream.end&&(o=new CachedToken,o.value=e.p.parser.eofTerm,o.start=o.end=e.pos,s=this.addActions(e,o.value,o.end,s)),this.mainToken=o,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let s=new CachedToken,{pos:o,p:c}=e;return s.start=o,s.end=Math.min(o+1,c.stream.end),s.value=o==c.stream.end?c.parser.eofTerm:0,s}updateCachedToken(e,s,o){if(s.token(this.stream.reset(o.pos,e),o),e.value>-1){let{parser:c}=o.p;for(let d=0;d=0&&o.p.parser.dialect.allows(_>>1)){(_&1)==0?e.value=_>>1:e.extended=_>>1;break}}}else e.value=0,e.end=Math.min(o.p.stream.end,o.pos+1)}putAction(e,s,o,c){for(let d=0;de.bufferLength*4?new FragmentCursor(o,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,s=this.minStackPos,o=this.stacks=[],c,d;for(let _=0;_s)o.push(b);else{if(this.advanceStack(b,o,e))continue;{c||(c=[],d=[]),c.push(b);let k=this.tokens.getMainToken(b);d.push(k.value,k.end)}}break}}if(!o.length){let _=c&&findFinished(c);if(_)return this.stackToTree(_);if(this.parser.strict)throw verbose&&c&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+s);this.recovering||(this.recovering=5)}if(this.recovering&&c){let _=this.stoppedAt!=null&&c[0].pos>this.stoppedAt?c[0]:this.runRecovery(c,d,o);if(_)return this.stackToTree(_.forceAll())}if(this.recovering){let _=this.recovering==1?1:this.recovering*3;if(o.length>_)for(o.sort((b,k)=>k.score-b.score);o.length>_;)o.pop();o.some(b=>b.reducePos>s)&&this.recovering--}else if(o.length>1){e:for(let _=0;_500&&$.buffer.length>500)if((b.score-$.score||b.buffer.length-$.buffer.length)>0)o.splice(k--,1);else{o.splice(_--,1);continue e}}}}this.minStackPos=o[0].pos;for(let _=1;_ ":"";if(this.stoppedAt!=null&&c>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let $=e.curContext&&e.curContext.tracker.strict,j=$?e.curContext.hash:0;for(let _e=this.fragments.nodeAt(c);_e;){let et=this.parser.nodeSet.types[_e.type.id]==_e.type?d.getGoto(e.state,_e.type.id):-1;if(et>-1&&_e.length&&(!$||(_e.prop(NodeProp.contextHash)||0)==j))return e.useNode(_e,et),verbose&&console.log(_+this.stackID(e)+` (via reuse of ${d.getName(_e.type.id)})`),!0;if(!(_e instanceof Tree)||_e.children.length==0||_e.positions[0]>0)break;let tt=_e.children[0];if(tt instanceof Tree&&_e.positions[0]==0)_e=tt;else break}}let b=d.stateSlot(e.state,4);if(b>0)return e.reduce(b),verbose&&console.log(_+this.stackID(e)+` (via always-reduce ${d.getName(b&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let k=this.tokens.getActions(e);for(let $=0;$c?s.push(nt):o.push(nt)}return!1}advanceFully(e,s){let o=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>o)return pushStackDedup(e,s),!0}}runRecovery(e,s,o){let c=null,d=!1;for(let _=0;_ ":"";if(b.deadEnd&&(d||(d=!0,b.restart(),verbose&&console.log(j+this.stackID(b)+" (restarted)"),this.advanceFully(b,o))))continue;let _e=b.split(),et=j;for(let tt=0;_e.forceReduce()&&tt<10&&(verbose&&console.log(et+this.stackID(_e)+" (via force-reduce)"),!this.advanceFully(_e,o));tt++)verbose&&(et=this.stackID(_e)+" -> ");for(let tt of b.recoverByInsert(k))verbose&&console.log(j+this.stackID(tt)+" (via recover-insert)"),this.advanceFully(tt,o);this.stream.end>b.pos?($==b.pos&&($++,k=0),b.recoverByDelete(k,$),verbose&&console.log(j+this.stackID(b)+` (via recover-delete ${this.parser.getName(k)})`),pushStackDedup(b,o)):(!c||c.scorea;class ContextTracker{constructor(e){this.start=e.start,this.shift=e.shift||id,this.reduce=e.reduce||id,this.reuse=e.reuse||id,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class LRParser extends Parser{constructor(e){if(super(),this.wrappers=[],e.version!=13)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (${13})`);let s=e.nodeNames.split(" ");this.minRepeatTerm=s.length;for(let b=0;be.topRules[b][1]),c=[];for(let b=0;b=0)d(j,k,b[$++]);else{let _e=b[$+-j];for(let et=-j;et>0;et--)d(b[$++],k,_e);$++}}}this.nodeSet=new NodeSet(s.map((b,k)=>NodeType.define({name:k>=this.minRepeatTerm?void 0:b,id:k,props:c[k],top:o.indexOf(k)>-1,error:k==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(k)>-1}))),this.strict=!1,this.bufferLength=DefaultBufferLength;let _=decodeArray(e.tokenData);if(this.context=e.context,this.specialized=new Uint16Array(e.specialized?e.specialized.length:0),this.specializers=[],e.specialized)for(let b=0;btypeof b=="number"?new TokenGroup(_,b):b),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,s,o){let c=new Parse(this,e,s,o);for(let d of this.wrappers)c=d(c,e,s,o);return c}getGoto(e,s,o=!1){let c=this.goto;if(s>=c[0])return-1;for(let d=c[s+1];;){let _=c[d++],b=_&1,k=c[d++];if(b&&o)return k;for(let $=d+(_>>1);d<$;d++)if(c[d]==e)return k;if(b)return-1}}hasAction(e,s){let o=this.data;for(let c=0;c<2;c++)for(let d=this.stateSlot(e,c?2:1),_;;d+=3){if((_=o[d])==65535)if(o[d+1]==1)_=o[d=pair(o,d+2)];else{if(o[d+1]==2)return pair(o,d+2);break}if(_==s||_==0)return pair(o,d+1)}return 0}stateSlot(e,s){return this.states[e*6+s]}stateFlag(e,s){return(this.stateSlot(e,0)&s)>0}validAction(e,s){if(s==this.stateSlot(e,4))return!0;for(let o=this.stateSlot(e,1);;o+=3){if(this.data[o]==65535)if(this.data[o+1]==1)o=pair(this.data,o+2);else return!1;if(s==pair(this.data,o+1))return!0}}nextStates(e){let s=[];for(let o=this.stateSlot(e,1);;o+=3){if(this.data[o]==65535)if(this.data[o+1]==1)o=pair(this.data,o+2);else break;if((this.data[o+2]&1)==0){let c=this.data[o+1];s.some((d,_)=>_&1&&d==c)||s.push(this.data[o],c)}}return s}overrides(e,s){let o=findOffset(this.data,this.tokenPrecTable,s);return o<0||findOffset(this.data,this.tokenPrecTable,e){let c=e.tokenizers.find(d=>d.from==o);return c?c.to:o})),e.contextTracker&&(s.context=e.contextTracker),e.dialect&&(s.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(s.strict=e.strict),e.wrap&&(s.wrappers=s.wrappers.concat(e.wrap)),e.bufferLength!=null&&(s.bufferLength=e.bufferLength),s}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let s=this.dynamicPrecedences;return s==null?0:s[e]||0}parseDialect(e){let s=Object.keys(this.dialects),o=s.map(()=>!1);if(e)for(let d of e.split(" ")){let _=s.indexOf(d);_>=0&&(o[_]=!0)}let c=null;for(let d=0;do)&&s.p.parser.stateFlag(s.state,2)&&(!e||e.score{let{next:s}=a;(s==braceR||s==-1||e.context)&&e.canShift(insertSemi)&&a.acceptToken(insertSemi)},{contextual:!0,fallback:!0}),noSemicolon=new ExternalTokenizer((a,e)=>{let{next:s}=a,o;space.indexOf(s)>-1||s==slash&&((o=a.peek(1))==slash||o==star)||s!=braceR&&s!=semicolon&&s!=-1&&!e.context&&e.canShift(noSemi)&&a.acceptToken(noSemi)},{contextual:!0}),incdecToken=new ExternalTokenizer((a,e)=>{let{next:s}=a;if((s==plus||s==minus)&&(a.advance(),s==a.next)){a.advance();let o=!e.context&&e.canShift(incdec);a.acceptToken(o?incdec:incdecPrefix)}},{contextual:!0}),template=new ExternalTokenizer(a=>{for(let e=!1,s=0;;s++){let{next:o}=a;if(o<0){s&&a.acceptToken(templateContent);break}else if(o==backtick){s?a.acceptToken(templateContent):a.acceptToken(templateEnd,1);break}else if(o==braceL&&e){s==1?a.acceptToken(InterpolationStart,1):a.acceptToken(templateContent,-1);break}else if(o==10&&s){a.advance(),a.acceptToken(templateContent);break}else o==backslash&&a.advance();e=o==dollar,a.advance()}});function tsExtends(a,e){return a=="extends"&&e.dialectEnabled(Dialect_ts)?TSExtends:-1}const spec_identifier={__proto__:null,export:18,as:23,from:29,default:32,async:37,function:38,this:48,true:56,false:56,void:66,typeof:70,null:86,super:88,new:122,await:139,yield:141,delete:142,class:152,extends:154,public:197,private:197,protected:197,readonly:199,instanceof:220,in:222,const:224,import:256,keyof:307,unique:311,infer:317,is:351,abstract:371,implements:373,type:375,let:378,var:380,interface:387,enum:391,namespace:397,module:399,declare:403,global:407,for:428,of:437,while:440,with:444,do:448,if:452,else:454,switch:458,case:464,try:470,catch:472,finally:474,return:478,throw:482,break:486,continue:490,debugger:494},spec_word={__proto__:null,async:109,get:111,set:113,public:161,private:161,protected:161,static:163,abstract:165,override:167,readonly:173,new:355},spec_LessThan={__proto__:null,"<":129},parser=LRParser.deserialize({version:13,states:"$1jO`QYOOO'QQ!LdO'#ChO'XOSO'#DVO)dQYO'#D]O)tQYO'#DhO){QYO'#DrO-xQYO'#DxOOQO'#E]'#E]O.]QWO'#E[O.bQWO'#E[OOQ!LS'#Ef'#EfO0aQ!LdO'#IrO2wQ!LdO'#IsO3eQWO'#EzO3jQpO'#FaOOQ!LS'#FS'#FSO3rO!bO'#FSO4QQWO'#FhO5_QWO'#FgOOQ!LS'#Is'#IsOOQ!LQ'#Ir'#IrOOQQ'#J['#J[O5dQWO'#HnO5iQ!LYO'#HoOOQQ'#If'#IfOOQQ'#Hp'#HpQ`QYOOO){QYO'#DjO5qQWO'#G[O5vQ#tO'#CmO6UQWO'#EZO6aQWO'#EgO6fQ#tO'#FRO7QQWO'#G[O7VQWO'#G`O7bQWO'#G`O7pQWO'#GcO7pQWO'#GdO7pQWO'#GfO5qQWO'#GiO8aQWO'#GlO9oQWO'#CdO:PQWO'#GyO:XQWO'#HPO:XQWO'#HRO`QYO'#HTO:XQWO'#HVO:XQWO'#HYO:^QWO'#H`O:cQ!LZO'#HdO){QYO'#HfO:nQ!LZO'#HhO:yQ!LZO'#HjO5iQ!LYO'#HlO){QYO'#DWOOOS'#Hr'#HrO;UOSO,59qOOQ!LS,59q,59qO=gQbO'#ChO=qQYO'#HsO>UQWO'#ItO@TQbO'#ItO'dQYO'#ItO@[QWO,59wO@rQ&jO'#DbOAkQWO'#E]OAxQWO'#JPOBTQWO'#JOOBTQWO'#JOOB]QWO,5:yOBbQWO'#I}OBiQWO'#DyO5vQ#tO'#EZOBwQWO'#EZOCSQ`O'#FROOQ!LS,5:S,5:SOC[QYO,5:SOEYQ!LdO,5:^OEvQWO,5:dOFaQ!LYO'#I|O7VQWO'#I{OFhQWO'#I{OFpQWO,5:xOFuQWO'#I{OGTQYO,5:vOITQWO'#EWOJ_QWO,5:vOKnQWO'#DlOKuQYO'#DqOLPQ&jO,5;PO){QYO,5;POOQQ'#Er'#ErOOQQ'#Et'#EtO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;ROOQQ'#Ex'#ExOLXQYO,5;cOOQ!LS,5;h,5;hOOQ!LS,5;i,5;iONXQWO,5;iOOQ!LS,5;j,5;jO){QYO'#H}ON^Q!LYO,5YOOQQ'#Ii'#IiOOQQ,5>Z,5>ZOOQQ-E;n-E;nO!+YQ!LdO,5:UOOQ!LQ'#Cp'#CpO!+yQ#tO,5O,5>OO){QYO,5>OO5iQ!LYO,5>QOOQQ,5>S,5>SO!8VQWO,5>SOOQQ,5>U,5>UO!8VQWO,5>UOOQQ,5>W,5>WO!8[Q`O,59rOOOS-E;p-E;pOOQ!LS1G/]1G/]O!8aQbO,5>_O'dQYO,5>_OOQO,5>d,5>dO!8kQYO'#HsOOQO-E;q-E;qO!8xQWO,5?`O!9QQbO,5?`O!9XQWO,5?jOOQ!LS1G/c1G/cO!9aQpO'#DTOOQO'#Iv'#IvO){QYO'#IvO!:OQpO'#IvO!:mQpO'#DcO!;OQ&jO'#DcO!=ZQYO'#DcO!=bQWO'#IuO!=jQWO,59|O!=oQWO'#EaO!=}QWO'#JQO!>VQWO,5:zO!>mQ&jO'#DcO){QYO,5?kO!>wQWO'#HxOOQO-E;v-E;vO!9XQWO,5?jOOQ!LQ1G0e1G0eO!@TQ&jO'#D|OOQ!LS,5:e,5:eO){QYO,5:eOITQWO,5:eO!@[QWO,5:eO:^QWO,5:uO!,rQpO,5:uO!,zQ#tO,5:uO5vQ#tO,5:uOOQ!LS1G/n1G/nOOQ!LS1G0O1G0OOOQ!LQ'#EV'#EVO){QYO,5?hO!@gQ!LYO,5?hO!@xQ!LYO,5?hO!APQWO,5?gO!AXQWO'#HzO!APQWO,5?gOOQ!LQ1G0d1G0dO7VQWO,5?gOOQ!LS1G0b1G0bO!AsQ!LdO1G0bO!BdQ!LbO,5:rOOQ!LS'#Fq'#FqO!CQQ!LdO'#IoOGTQYO1G0bO!EPQ#tO'#IwO!EZQWO,5:WO!E`QbO'#IxO){QYO'#IxO!EjQWO,5:]OOQ!LS'#DT'#DTOOQ!LS1G0k1G0kO!EoQWO1G0kO!HQQ!LdO1G0mO!HXQ!LdO1G0mO!JlQ!LdO1G0mO!JsQ!LdO1G0mO!LzQ!LdO1G0mO!M_Q!LdO1G0mO#!OQ!LdO1G0mO#!VQ!LdO1G0mO#$jQ!LdO1G0mO#$qQ!LdO1G0mO#&fQ!LdO1G0mO#)`Q7^O'#ChO#+ZQ7^O1G0}O#-UQ7^O'#IsOOQ!LS1G1T1G1TO#-iQ!LdO,5>iOOQ!LQ-E;{-E;{O#.YQ!LdO1G0mOOQ!LS1G0m1G0mO#0[Q!LdO1G1QO#0{QpO,5;sO#1QQpO,5;tO#1VQpO'#F[O#1kQWO'#FZOOQO'#JU'#JUOOQO'#H{'#H{O#1pQpO1G1]OOQ!LS1G1]1G1]OOOO1G1f1G1fO#2OQ7^O'#IrO#2YQWO,5;}OLXQYO,5;}OOOO-E;z-E;zOOQ!LS1G1Y1G1YOOQ!LS,5VQ&jO'#GhOOQQ1G2l1G2lO!&wQ&jO'#IWO!0OQ`O1G2oOOQQ1G2o1G2oOOQQ,5=Y,5=YO#>_Q#tO,5=[O5qQWO,5=[O#5YQWO,5=_O5_QWO,5=_O!,rQpO,5=_O!,zQ#tO,5=_O5vQ#tO,5=_O#>pQWO'#J_O#>{QWO,5=`OOQQ1G.j1G.jO#?QQ!LYO1G.jO#?]QWO1G.jO#?bQWO1G.jO5iQ!LYO1G.jO#?jQbO,5?|O#?tQWO,5?|O#@PQYO,5=gO#@WQWO,5=gO7VQWO,5?|OOQQ1G3P1G3PO`QYO1G3POOQQ1G3V1G3VOOQQ1G3X1G3XO:XQWO1G3ZO#@]QYO1G3]O#DWQYO'#H[OOQQ1G3`1G3`O:^QWO1G3fO#DeQWO1G3fO5iQ!LYO1G3jOOQQ1G3l1G3lOOQ!LQ'#Fx'#FxO5iQ!LYO1G3nO5iQ!LYO1G3pOOOS1G/^1G/^O#DmQ`O,5_O#EPQWO1G4zO#EXQWO1G5UO#EaQWO,5?bOLXQYO,5:{O7VQWO,5:{O:^QWO,59}OLXQYO,59}O!,rQpO,59}O#EfQ7^O,59}OOQO,5:{,5:{O#EpQ&jO'#HtO#FWQWO,5?aOOQ!LS1G/h1G/hO#F`Q&jO'#HyO#FtQWO,5?lOOQ!LQ1G0f1G0fO!;OQ&jO,59}O#F|QbO1G5VO7VQWO,5>dOOQ!LQ'#ES'#ESO#GWQ!LrO'#ETO!?{Q&jO'#D}OOQO'#Hw'#HwO#GrQ&jO,5:hOOQ!LS,5:h,5:hO#GyQ&jO'#D}O#H[Q&jO'#D}O#HcQ&jO'#EYO#HfQ&jO'#ETO#HsQ&jO'#ETO!?{Q&jO'#ETO#IWQWO1G0PO#I]Q`O1G0POOQ!LS1G0P1G0PO){QYO1G0POITQWO1G0POOQ!LS1G0a1G0aO:^QWO1G0aO!,rQpO1G0aO!,zQ#tO1G0aO#IdQ!LdO1G5SO){QYO1G5SO#ItQ!LYO1G5SO#JVQWO1G5RO7VQWO,5>fOOQO,5>f,5>fO#J_QWO,5>fOOQO-E;x-E;xO#JVQWO1G5RO#JmQ!LdO,59jO#LlQ!LdO,5k,5>kO$(]QWO,5>kOOQ!LS1G2P1G2PP$(bQWO'#IPPOQ!LS-E;}-E;}O$)RQ#tO1G2[O$)tQ#tO1G2^O$*OQ#tO1G2`OOQ!LS1G1x1G1xO$*VQWO'#IOO$*eQWO,5?sO$*eQWO,5?sO$*mQWO,5?sO$*xQWO,5?sOOQO1G1z1G1zO$+WQ#tO1G1yO$+hQWO'#IQO$+xQWO,5?tOITQWO,5?tO$,QQ`O,5?tOOQ!LS1G1}1G1}O5iQ!LYO,5n,5>nOOQO-Ev,5>vOOQO-Ep,5>pOOQ!LQ-Er,5>rOOQO-E`,5>`OOQO-E;r-E;rOOQO,5>e,5>eOOQO-E;w-E;wO!,rQpO1G/iO:^QWO,5:iOOQO,5:o,5:oO){QYO,5:oO$9pQ!LYO,5:oO$9{Q!LYO,5:oO!,rQpO,5:iOOQO-E;u-E;uOOQ!LS1G0S1G0SO!?{Q&jO,5:iO$:ZQ&jO,5:iO$:lQ!LrO,5:oO$;WQ&jO,5:iO!?{Q&jO,5:oOOQO,5:t,5:tO$;_Q&jO,5:oO$;lQ!LYO,5:oOOQ!LS7+%k7+%kO#IWQWO7+%kO#I]Q`O7+%kOOQ!LS7+%{7+%{O:^QWO7+%{O!,rQpO7+%{O$lQ!LdO1G2^O$@nQ!LdO1G1yO$BvQ#tO,5>aOOQO-E;s-E;sO$CQQbO,5>bO){QYO,5>bOOQO-E;t-E;tO$C[QWO1G5OO$CdQ7^O1G0bO$EkQ7^O1G0mO$ErQ7^O1G0mO$GsQ7^O1G0mO$GzQ7^O1G0mO$IoQ7^O1G0mO$JSQ7^O1G0mO$LaQ7^O1G0mO$LhQ7^O1G0mO$NiQ7^O1G0mO$NpQ7^O1G0mO%!eQ7^O1G0mO%!xQ!LdO<iOOOO7+'T7+'TOOOS1G/R1G/ROOQ!LS1G4V1G4VOJdQWO7+'zO%'rQWO,5>jO5qQWO,5>jOOQO-E;|-E;|O%(QQWO1G5_O%(QQWO1G5_O%(YQWO1G5_O%(eQ`O,5>lO%(oQWO,5>lOITQWO,5>lOOQO-Eu,5>uO%,RQWO,5>uO%,WQWO,5>uOOQO-EtOOQO-ERQ#tO<cQWO1G4UO%>nQWO1G4UO%>|QWO7+*yO%>|QWO7+*yOITQWO1G4WO%?UQ`O1G4WO%?`QWO7+*zOOQO7+'o7+'oO5iQ!LYO7+'oOOQO7+'n7+'nO$,[QWO7+'pO%?hQ`O7+'pOOQO7+'t7+'tO5iQ!LYO7+'nO$,[QWO7+'oO%?oQWO7+'pOITQWO7+'pO#5TQWO7+'oO%?tQ#tO<oOOQO-EqOOQO-E{AN>{OOQOAN>uAN>uO%0}Q!LdOAN>{O:^QWOAN>uO){QYOAN>{O!,rQpOAN>uO&(PQ!LYOAN>{O&([Q7^O<^O!O&OO~Ox&RO!W&]O!X&UO!Y&UO'[$bO~O]&SOk&SO!Q&VO'e&PO!S'iP!S'tP~P@aO!O'qX!R'qX!]'qX!c'qX'n'qX~O!{'qX#W#PX!S'qX~PAYO!{&^O!O'sX!R'sX~O!R&_O!O'rX~O!O&bO~O!{#eO~PAYOS&fO!T&cO!o&eO'Z$`O~Oc&kO!d$XO'Z$`O~Ou$nO!d$mO~O!S&lO~P`Ou!{Ov!{Ox!|O!b!yO!d!zO'dQOP!faZ!faj!fa!R!fa!a!fa!j!fa#[!fa#]!fa#^!fa#_!fa#`!fa#a!fa#b!fa#c!fa#e!fa#g!fa#i!fa#j!fa'n!fa'u!fa'v!fa~O_!fa'U!fa!O!fa!c!fan!fa!T!fa%Q!fa!]!fa~PCcO!c&mO~O!]!wO!{&oO'n&nO!R'pX_'pX'U'pX~O!c'pX~PE{O!R&sO!c'oX~O!c&uO~Ox$tO!T$uO#V&vO'Z$`O~OPTOQTO]cOb!kOc!jOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!TSO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!n!iO#t!lO#x^O'Z9YO'dQO'mYO'zaO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'Z&zO'd#sO~O#W&|O~O]#qOh$OOj#rOk#qOl#qOq$POs$QOx#xO!T#yO!_$VO!d#vO#V$WO#t$TO$_$RO$a$SO$d$UO'Z&zO'd#sO~O'_'kP~PJdO!Q'QO!c'lP~P){O'e'SO'mYO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!d!zO~O!R#bO_$]a'U$]a!c$]a!O$]a!T$]a%Q$]a!]$]a~O#d'iO~PITO!]'kO!T'wX#w'wX#z'wX$R'wX~Ou'lO~P! POu'lO!T'wX#w'wX#z'wX$R'wX~O!T'nO#w'rO#z'mO$R'sO~O!Q'vO~PLXO#z#fO$R'yO~Ou$eXx$eX!b$eX'n$eX'u$eX'v$eX~OSfX!RfX!{fX'_fX'_$eX~P!!iOk'{O~OR'|O'S'}O'T(PO~Ou(ROx(SO'n#[O'u(UO'v(WO~O'_(QO~P!#rO'_(ZO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~O!Q(_O'Z([O!c'{P~P!$aO#W(aO~O!Q(eO'Z(bO!O'|P~P!$aO_(nOj(sOx(kO!W(qO!X(jO!Y(jO!d(hO!x(rO$w(mO'[$bO'e(gO~O!S(pO~P!&XO!b!yOu'cXx'cX'n'cX'u'cX'v'cX!R'cX!{'cX~O'_'cX#m'cX~P!'TOS(vO!{(uO!R'bX'_'bX~O!R(wO'_'aX~O'Z(yO~O!d)OO~O'Z&zO~O!d(hO~Ox$tO!Q!rO!T$uO#U!uO#V!rO'Z$`O!c'oP~O!]!wO#W)SO~OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO#j#ZO'dQO'n#[O'u!}O'v#OO~O_!^a!R!^a'U!^a!O!^a!c!^an!^a!T!^a%Q!^a!]!^a~P!)fOS)[O!T&cO!o)ZO%Q)YO'`$cO~O'Z$zO'_'aP~O!])_O!T'^X_'^X'U'^X~O!d$XO'`$cO~O!d$XO'Z$`O'`$cO~O!]!wO#W&|O~O])jO%R)kO'Z)gO!S(TP~O!R)lO^(SX~O'e'SO~OZ)pO~O^)qO~O!T$kO'Z$`O'[$bO^(SP~Ox$tO!Q)vO!R&_O!T$uO'Z$`O!O'rP~O]&YOk&YO!Q)wO'e'SO!S'tP~O!R)xO_(PX'U(PX~O!{)|O'`$cO~OS*PO!T#yO'`$cO~O!T*RO~Ou*TO!TSO~O!n*YO~Oc*_O~O'Z(yO!S(RP~Oc$iO~O%RtO'Z$zO~P8tOZ*eO^*dO~OPTOQTO]cObnOcmOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!nlO#x^O%PqO'dQO'mYO'zaO~O!T!bO#t!lO'Z9YO~P!1RO^*dO_$[O'U$[O~O_*iO#d*kO%T*kO%U*kO~P){O!d%_O~O%t*pO~O!T*rO~O&U*uO&V*tOP&SaQ&SaX&Sa]&Sa_&Sab&Sac&Sah&Saj&Sak&Sal&Saq&Sas&Sax&Sa{&Sa|&Sa}&Sa!T&Sa!_&Sa!d&Sa!g&Sa!h&Sa!i&Sa!j&Sa!k&Sa!n&Sa#d&Sa#t&Sa#x&Sa%P&Sa%R&Sa%T&Sa%U&Sa%X&Sa%Z&Sa%^&Sa%_&Sa%a&Sa%n&Sa%t&Sa%v&Sa%x&Sa%z&Sa%}&Sa&T&Sa&X&Sa&Z&Sa&]&Sa&_&Sa&a&Sa'Q&Sa'Z&Sa'd&Sa'm&Sa'z&Sa!S&Sa%{&Sa`&Sa&Q&Sa~O'Z*xO~On*{O~O!O&ga!R&ga~P!)fO!Q+PO!O&gX!R&gX~P){O!R%yO!O'ha~O!O'ha~P>^O!R&_O!O'ra~O!RwX!R!ZX!SwX!S!ZX!]wX!]!ZX!d!ZX!{wX'`!ZX~O!]+UO!{+TO!R#TX!R'jX!S#TX!S'jX!]'jX!d'jX'`'jX~O!]+WO!d$XO'`$cO!R!VX!S!VX~O]&QOk&QOx&RO'e(gO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'dQO'mYO'z:kO~O'Z9vO~P!;^O!R+[O!S'iX~O!S+^O~O!]+UO!{+TO!R#TX!S#TX~O!R+_O!S'tX~O!S+aO~O]&QOk&QOx&RO'[$bO'e(gO~O!X+bO!Y+bO~P!>[Ox$tO!Q+dO!T$uO'Z$`O!O&lX!R&lX~O_+hO!W+kO!X+gO!Y+gO!r+oO!s+mO!t+nO!u+lO!x+pO'[$bO'e(gO'm+eO~O!S+jO~P!?]OS+uO!T&cO!o+tO~O!{+{O!R'pa!c'pa_'pa'U'pa~O!]!wO~P!@gO!R&sO!c'oa~Ox$tO!Q,OO!T$uO#U,QO#V,OO'Z$`O!R&nX!c&nX~O_#Oi!R#Oi'U#Oi!O#Oi!c#Oin#Oi!T#Oi%Q#Oi!]#Oi~P!)fO#W!za!R!za!c!za!{!za!T!za_!za'U!za!O!za~P!#rO#W'cXP'cXZ'cX_'cXj'cXv'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX'U'cX'd'cX!c'cX!O'cX!T'cXn'cX%Q'cX!]'cX~P!'TO!R,ZO'_'kX~P!#rO'_,]O~O!R,^O!c'lX~P!)fO!c,aO~O!O,bO~OP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zi_#Zij#Zi!R#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O#[#Zi~P!EtO#[#PO~P!EtOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO'dQOZ#Zi_#Zi!R#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~Oj#Zi~P!H`Oj#RO~P!H`OP#^Oj#ROu!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO'dQO_#Zi!R#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P!JzOZ#dO!a#TO#a#TO#b#TO#c#TO~P!JzOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO'dQO_#Zi!R#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'u#Zi~P!MrO'u!}O~P!MrOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO'dQO'u!}O_#Zi!R#Zi#i#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'v#Zi~P#!^O'v#OO~P#!^OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO'dQO'u!}O'v#OO~O_#Zi!R#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P#$xOP[XZ[Xj[Xu[Xv[Xx[X!a[X!b[X!d[X!j[X!{[X#WdX#[[X#][X#^[X#_[X#`[X#a[X#b[X#c[X#e[X#g[X#i[X#j[X#o[X'd[X'n[X'u[X'v[X!R[X!S[X~O#m[X~P#']OP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO#j9gO'dQO'n#[O'u!}O'v#OO~O#m,dO~P#)gOP'gXZ'gXj'gXu'gXv'gXx'gX!a'gX!b'gX!d'gX!j'gX#['gX#]'gX#^'gX#_'gX#`'gX#a'gX#b'gX#e'gX#g'gX#i'gX#j'gX'd'gX'n'gX'u'gX'v'gX!R'gX~O!{9kO#o9kO#c'gX#m'gX!S'gX~P#+bO_&qa!R&qa'U&qa!c&qan&qa!O&qa!T&qa%Q&qa!]&qa~P!)fOP#ZiZ#Zi_#Zij#Ziv#Zi!R#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'd#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P!#rO_#ni!R#ni'U#ni!O#ni!c#nin#ni!T#ni%Q#ni!]#ni~P!)fO#z,fO~O#z,gO~O!]'kO!{,hO!T$OX#w$OX#z$OX$R$OX~O!Q,iO~O!T'nO#w,kO#z'mO$R,lO~O!R9hO!S'fX~P#)gO!S,mO~O$R,oO~OR'|O'S'}O'T,rO~O],uOk,uO!O,vO~O!RdX!]dX!cdX!c$eX'ndX~P!!iO!c,|O~P!#rO!R,}O!]!wO'n&nO!c'{X~O!c-SO~O!O$eX!R$eX!]$lX~P!!iO!R-UO!O'|X~P!#rO!]-WO~O!O-YO~O!Q(_O'Z$`O!c'{P~Oj-^O!]!wO!d$XO'`$cO'n&nO~O!])_O~O!S-dO~P!&XO!X-eO!Y-eO'[$bO'e(gO~Ox-gO'e(gO~O!x-hO~O'Z$zO!R&vX'_&vX~O!R(wO'_'aa~Ou-mOv-mOx-nO'nra'ura'vra!Rra!{ra~O'_ra#mra~P#6fOu(ROx(SO'n$^a'u$^a'v$^a!R$^a!{$^a~O'_$^a#m$^a~P#7[Ou(ROx(SO'n$`a'u$`a'v$`a!R$`a!{$`a~O'_$`a#m$`a~P#7}O]-oO~O#W-pO~O'_$na!R$na#m$na!{$na~P!#rO#W-sO~OS-|O!T&cO!o-{O%Q-zO~O'_-}O~O]#qOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~Oh.PO'Z.OO~P#9tO!])_O!T'^a_'^a'U'^a~O#W.VO~OZ[X!RdX!SdX~O!R.WO!S(TX~O!S.YO~OZ.ZO~O].]O'Z)gO~O!T$kO'Z$`O^'OX!R'OX~O!R)lO^(Sa~O!c.`O~P!)fO].bO~OZ.cO~O^.dO~OS-|O!T&cO!o-{O%Q-zO'`$cO~O!R)xO_(Pa'U(Pa~O!{.jO~OS.mO!T#yO~O'e'SO!S(QP~OS.wO!T.sO!o.vO%Q.uO'`$cO~OZ/RO!R/PO!S(RX~O!S/SO~O^/UO_$[O'U$[O~O]/VO~O]/WO'Z(yO~O#c/XO%r/YO~P0zO!{#eO#c/XO%r/YO~O_/ZO~P){O_/]O~O%{/aOP%yiQ%yiX%yi]%yi_%yib%yic%yih%yij%yik%yil%yiq%yis%yix%yi{%yi|%yi}%yi!T%yi!_%yi!d%yi!g%yi!h%yi!i%yi!j%yi!k%yi!n%yi#d%yi#t%yi#x%yi%P%yi%R%yi%T%yi%U%yi%X%yi%Z%yi%^%yi%_%yi%a%yi%n%yi%t%yi%v%yi%x%yi%z%yi%}%yi&T%yi&X%yi&Z%yi&]%yi&_%yi&a%yi'Q%yi'Z%yi'd%yi'm%yi'z%yi!S%yi`%yi&Q%yi~O`/gO!S/eO&Q/fO~P`O!TSO!d/jO~O!R#bOn$]a~O!O&gi!R&gi~P!)fO!R%yO!O'hi~O!R&_O!O'ri~O!O/nO~O!R!Va!S!Va~P#)gO]&QOk&QO!Q/tO'e(gO!R&hX!S&hX~P@aO!R+[O!S'ia~O]&YOk&YO!Q)wO'e'SO!R&mX!S&mX~O!R+_O!S'ta~O!O'si!R'si~P!)fO_$[O!]!wO!d$XO!j0OO!{/|O'U$[O'`$cO'n&nO~O!S0RO~P!?]O!X0SO!Y0SO'[$bO'e(gO'm+eO~O!W0TO~P#GyO!TSO!W0TO!u0VO!x0WO~P#GyO!W0TO!s0YO!t0YO!u0VO!x0WO~P#GyO!T&cO~O!T&cO~P!#rO!R'pi!c'pi_'pi'U'pi~P!)fO!{0cO!R'pi!c'pi_'pi'U'pi~O!R&sO!c'oi~Ox$tO!T$uO#V0eO'Z$`O~O#WraPraZra_rajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra'Ura'dra!cra!Ora!Tranra%Qra!]ra~P#6fO#W$^aP$^aZ$^a_$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a'U$^a'd$^a!c$^a!O$^a!T$^an$^a%Q$^a!]$^a~P#7[O#W$`aP$`aZ$`a_$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a'U$`a'd$`a!c$`a!O$`a!T$`an$`a%Q$`a!]$`a~P#7}O#W$naP$naZ$na_$naj$nav$na!R$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na'U$na'd$na!c$na!O$na!T$na!{$nan$na%Q$na!]$na~P!#rO_#Oq!R#Oq'U#Oq!O#Oq!c#Oqn#Oq!T#Oq%Q#Oq!]#Oq~P!)fO!R&iX'_&iX~PJdO!R,ZO'_'ka~O!Q0mO!R&jX!c&jX~P){O!R,^O!c'la~O!R,^O!c'la~P!)fO#m!fa!S!fa~PCcO#m!^a!R!^a!S!^a~P#)gO!T1QO#x^O$P1RO~O!S1VO~On1WO~P!#rO_$Yq!R$Yq'U$Yq!O$Yq!c$Yqn$Yq!T$Yq%Q$Yq!]$Yq~P!)fO!O1XO~O],uOk,uO~Ou(ROx(SO'v(WO'n$xi'u$xi!R$xi!{$xi~O'_$xi#m$xi~P$(jOu(ROx(SO'n$zi'u$zi'v$zi!R$zi!{$zi~O'_$zi#m$zi~P$)]O#m1YO~P!#rO!Q1[O'Z$`O!R&rX!c&rX~O!R,}O!c'{a~O!R,}O!]!wO!c'{a~O!R,}O!]!wO'n&nO!c'{a~O'_$gi!R$gi#m$gi!{$gi~P!#rO!Q1cO'Z(bO!O&tX!R&tX~P!$aO!R-UO!O'|a~O!R-UO!O'|a~P!#rO!]!wO~O!]!wO#c1mO~Oj1qO!]!wO'n&nO~O!R'bi'_'bi~P!#rO!{1tO!R'bi'_'bi~P!#rO!c1wO~O_$Zq!R$Zq'U$Zq!O$Zq!c$Zqn$Zq!T$Zq%Q$Zq!]$Zq~P!)fO!R1{O!T'}X~P!#rO!T&cO%Q2OO~O!T&cO%Q2OO~P!#rO!T$eX$u[X_$eX'U$eX~P!!iO$u2SOugXxgX!TgX'ngX'ugX'vgX_gX'UgX~O$u2SO~O]2YO%R2ZO'Z)gO!R&}X!S&}X~O!R.WO!S(Ta~OZ2_O~O^2`O~O]2cO~OS2eO!T&cO!o2dO%Q2OO~O_$[O'U$[O~P!#rO!T#yO~P!#rO!R2jO!{2lO!S(QX~O!S2mO~Ox(kO!W2vO!X2oO!Y2oO!r2uO!s2tO!t2tO!x2sO'[$bO'e(gO'm+eO~O!S2rO~P$1nOS2}O!T.sO!o2|O%Q2{O~OS2}O!T.sO!o2|O%Q2{O'`$cO~O'Z(yO!R&|X!S&|X~O!R/PO!S(Ra~O]3XO'e3WO~O]3YO~O^3[O~O!c3_O~P){O_3aO~O_3aO~P){O#c3cO%r3dO~PE{O`/gO!S3hO&Q/fO~P`O!]3jO~O&V3kOP&SqQ&SqX&Sq]&Sq_&Sqb&Sqc&Sqh&Sqj&Sqk&Sql&Sqq&Sqs&Sqx&Sq{&Sq|&Sq}&Sq!T&Sq!_&Sq!d&Sq!g&Sq!h&Sq!i&Sq!j&Sq!k&Sq!n&Sq#d&Sq#t&Sq#x&Sq%P&Sq%R&Sq%T&Sq%U&Sq%X&Sq%Z&Sq%^&Sq%_&Sq%a&Sq%n&Sq%t&Sq%v&Sq%x&Sq%z&Sq%}&Sq&T&Sq&X&Sq&Z&Sq&]&Sq&_&Sq&a&Sq'Q&Sq'Z&Sq'd&Sq'm&Sq'z&Sq!S&Sq%{&Sq`&Sq&Q&Sq~O!R#Ti!S#Ti~P#)gO!{3mO!R#Ti!S#Ti~O!R!Vi!S!Vi~P#)gO_$[O!{3tO'U$[O~O_$[O!]!wO!{3tO'U$[O~O!X3xO!Y3xO'[$bO'e(gO'm+eO~O_$[O!]!wO!d$XO!j3yO!{3tO'U$[O'`$cO'n&nO~O!W3zO~P$:ZO!W3zO!u3}O!x4OO~P$:ZO_$[O!]!wO!j3yO!{3tO'U$[O'n&nO~O!R'pq!c'pq_'pq'U'pq~P!)fO!R&sO!c'oq~O#W$xiP$xiZ$xi_$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi'U$xi'd$xi!c$xi!O$xi!T$xin$xi%Q$xi!]$xi~P$(jO#W$ziP$ziZ$zi_$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi'U$zi'd$zi!c$zi!O$zi!T$zin$zi%Q$zi!]$zi~P$)]O#W$giP$giZ$gi_$gij$giv$gi!R$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi'U$gi'd$gi!c$gi!O$gi!T$gi!{$gin$gi%Q$gi!]$gi~P!#rO!R&ia'_&ia~P!#rO!R&ja!c&ja~P!)fO!R,^O!c'li~O#m#Oi!R#Oi!S#Oi~P#)gOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zij#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~O#[#Zi~P$CqO#[9]O~P$CqOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O'dQOZ#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~Oj#Zi~P$EyOj9_O~P$EyOP#^Oj9_Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O'dQO#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P$HROZ9jO!a9aO#a9aO#b9aO#c9aO~P$HROP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO'dQO#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'v#Zi!R#Zi!S#Zi~O'u#Zi~P$JgO'u!}O~P$JgOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO'dQO'u!}O#i#Zi#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~O'v#Zi~P$LoO'v#OO~P$LoOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO'dQO'u!}O'v#OO~O#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~P$NwO_#ky!R#ky'U#ky!O#ky!c#kyn#ky!T#ky%Q#ky!]#ky~P!)fOP#ZiZ#Zij#Ziv#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'd#Zi!R#Zi!S#Zi~P!#rO!b!yOP'cXZ'cXj'cXu'cXv'cXx'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX#m'cX'd'cX'n'cX'u'cX'v'cX!R'cX!S'cX~O#m#ni!R#ni!S#ni~P#)gO!S4`O~O!R&qa!S&qa~P#)gO!]!wO'n&nO!R&ra!c&ra~O!R,}O!c'{i~O!R,}O!]!wO!c'{i~O!O&ta!R&ta~P!#rO!]4gO~O!R-UO!O'|i~P!#rO!R-UO!O'|i~O!O4mO~O!]!wO#c4sO~Oj4tO!]!wO'n&nO~O!O4vO~O'_$iq!R$iq#m$iq!{$iq~P!#rO_$Zy!R$Zy'U$Zy!O$Zy!c$Zyn$Zy!T$Zy%Q$Zy!]$Zy~P!)fO!R1{O!T'}a~O!T&cO%Q4{O~O!T&cO%Q4{O~P!#rO_#Oy!R#Oy'U#Oy!O#Oy!c#Oyn#Oy!T#Oy%Q#Oy!]#Oy~P!)fOZ5OO~O]5QO'Z)gO~O!R.WO!S(Ti~O]5TO~O^5UO~O'e'SO!R&yX!S&yX~O!R2jO!S(Qa~O!S5cO~P$1nOx-gO'e(gO'm+eO~O!W5fO!X5eO!Y5eO!x0WO'[$bO'e(gO'm+eO~O!s5gO!t5gO~P%-iO!X5eO!Y5eO'[$bO'e(gO'm+eO~O!T.sO~O!T.sO%Q5iO~O!T.sO%Q5iO~P!#rOS5nO!T.sO!o5mO%Q5iO~OZ5sO!R&|a!S&|a~O!R/PO!S(Ri~O]5vO~O!c5wO~O!c5xO~O!c5yO~O!c5yO~P){O_5{O~O!]6OO~O!c6QO~O!R'si!S'si~P#)gO_$[O'U$[O~P!)fO_$[O!{6VO'U$[O~O_$[O!]!wO!{6VO'U$[O~O!X6[O!Y6[O'[$bO'e(gO'm+eO~O_$[O!]!wO!j6]O!{6VO'U$[O'n&nO~O!d$XO'`$cO~P%2TO!W6^O~P%1rO!R'py!c'py_'py'U'py~P!)fO#W$iqP$iqZ$iq_$iqj$iqv$iq!R$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq'U$iq'd$iq!c$iq!O$iq!T$iq!{$iqn$iq%Q$iq!]$iq~P!#rO!R&ji!c&ji~P!)fO#m#Oq!R#Oq!S#Oq~P#)gOu-mOv-mOx-nOPraZrajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra#mra'dra'nra'ura'vra!Rra!Sra~Ou(ROx(SOP$^aZ$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a#m$^a'd$^a'n$^a'u$^a'v$^a!R$^a!S$^a~Ou(ROx(SOP$`aZ$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a#m$`a'd$`a'n$`a'u$`a'v$`a!R$`a!S$`a~OP$naZ$naj$nav$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na#m$na'd$na!R$na!S$na~P!#rO#m$Yq!R$Yq!S$Yq~P#)gO#m$Zq!R$Zq!S$Zq~P#)gO!S6hO~O'_$|y!R$|y#m$|y!{$|y~P!#rO!]!wO!R&ri!c&ri~O!]!wO'n&nO!R&ri!c&ri~O!R,}O!c'{q~O!O&ti!R&ti~P!#rO!R-UO!O'|q~O!O6oO~P!#rO!O6oO~O!R'by'_'by~P!#rO!R&wa!T&wa~P!#rO!T$tq_$tq'U$tq~P!#rOZ6wO~O!R.WO!S(Tq~O]6zO~O!T&cO%Q6{O~O!T&cO%Q6{O~P!#rO!{6|O!R&ya!S&ya~O!R2jO!S(Qi~P#)gO!X7SO!Y7SO'[$bO'e(gO'm+eO~O!W7UO!x4OO~P%ArO!T.sO%Q7XO~O!T.sO%Q7XO~P!#rO]7`O'e7_O~O!R/PO!S(Rq~O!c7bO~O!c7bO~P){O!c7dO~O!c7eO~O!R#Ty!S#Ty~P#)gO_$[O!{7kO'U$[O~O_$[O!]!wO!{7kO'U$[O~O!X7nO!Y7nO'[$bO'e(gO'm+eO~O_$[O!]!wO!j7oO!{7kO'U$[O'n&nO~O#W$|yP$|yZ$|y_$|yj$|yv$|y!R$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y'U$|y'd$|y!c$|y!O$|y!T$|y!{$|yn$|y%Q$|y!]$|y~P!#rO#m#ky!R#ky!S#ky~P#)gOP$giZ$gij$giv$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi#m$gi'd$gi!R$gi!S$gi~P!#rOu(ROx(SO'v(WOP$xiZ$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi#m$xi'd$xi'n$xi'u$xi!R$xi!S$xi~Ou(ROx(SOP$ziZ$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi#m$zi'd$zi'n$zi'u$zi'v$zi!R$zi!S$zi~O#m$Zy!R$Zy!S$Zy~P#)gO#m#Oy!R#Oy!S#Oy~P#)gO!]!wO!R&rq!c&rq~O!R,}O!c'{y~O!O&tq!R&tq~P!#rO!O7uO~P!#rO!R.WO!S(Ty~O!R2jO!S(Qq~O!X8RO!Y8RO'[$bO'e(gO'm+eO~O!T.sO%Q8UO~O!T.sO%Q8UO~P!#rO!c8XO~O&V8YOP&S!ZQ&S!ZX&S!Z]&S!Z_&S!Zb&S!Zc&S!Zh&S!Zj&S!Zk&S!Zl&S!Zq&S!Zs&S!Zx&S!Z{&S!Z|&S!Z}&S!Z!T&S!Z!_&S!Z!d&S!Z!g&S!Z!h&S!Z!i&S!Z!j&S!Z!k&S!Z!n&S!Z#d&S!Z#t&S!Z#x&S!Z%P&S!Z%R&S!Z%T&S!Z%U&S!Z%X&S!Z%Z&S!Z%^&S!Z%_&S!Z%a&S!Z%n&S!Z%t&S!Z%v&S!Z%x&S!Z%z&S!Z%}&S!Z&T&S!Z&X&S!Z&Z&S!Z&]&S!Z&_&S!Z&a&S!Z'Q&S!Z'Z&S!Z'd&S!Z'm&S!Z'z&S!Z!S&S!Z%{&S!Z`&S!Z&Q&S!Z~O_$[O!{8_O'U$[O~O_$[O!]!wO!{8_O'U$[O~OP$iqZ$iqj$iqv$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq#m$iq'd$iq!R$iq!S$iq~P!#rO!R&yq!S&yq~P#)gO_$[O!{8tO'U$[O~OP$|yZ$|yj$|yv$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y#m$|y'd$|y!R$|y!S$|y~P!#rOn'fX~P.jOn[X!O[X!c[X%r[X!T[X%Q[X!][X~P$zO!]dX!c[X!cdX'ndX~P;aOP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!TSO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!R9hO!S$]a~O]#qOh$OOj#rOk#qOl#qOq$POs9mOx#xO!T#yO!_:pO!d#vO#V9sO#t$TO$_9oO$a9qO$d$UO'Z&zO'd#sO~O#d'iO~P&-UO!S[X!SdX~P;aO#W9[O~O!]!wO#W9[O~O!{9kO~O#c9aO~O!{9tO!R'sX!S'sX~O!{9kO!R'qX!S'qX~O#W9uO~O'_9wO~P!#rO#W9|O~O#W9}O~O!]!wO#W:OO~O!]!wO#W9uO~O#m:PO~P#)gO#W:QO~O#W:RO~O#W:SO~O#W:TO~O#m:UO~P!#rO#m:VO~P!#rO#x~!b!r!t!u#U#V'z$_$a$d$u%P%Q%R%X%Z%^%_%a%c~UT#x'z#]}'W'X#z'W'Z'e~",goto:"#Ed(XPPPPPPPP(YP(jP*^PPPP-uPP.[3n5b5uP5uPPP5uP7c5uP5uP7gPP7lP8Qk|}?O}!O>k!O!P?`!P!QCl!Q!R!0[!R![!1q![!]!7s!]!^!8V!^!_!8g!_!`!9d!`!a!:[!a!b!U#R#S2`#S#T!>i#T#o2`#o#p!>y#p#q!?O#q#r!?f#r#s!?x#s$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$I|2`$I|$I}!Bq$I}$JO!Bq$JO$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`W%YR$UWO!^%T!_#o%T#p~%T,T%jg$UW'W+{OX%TXY%cYZ%TZ[%c[p%Tpq%cq!^%T!_#o%T#p$f%T$f$g%c$g#BY%T#BY#BZ%c#BZ$IS%T$IS$I_%c$I_$JT%T$JT$JU%c$JU$KV%T$KV$KW%c$KW&FU%T&FU&FV%c&FV?HT%T?HT?HU%c?HU~%T,T'YR$UW'X+{O!^%T!_#o%T#p~%T$T'jS$UW!j#{O!^%T!_!`'v!`#o%T#p~%T$O'}S#e#v$UWO!^%T!_!`(Z!`#o%T#p~%T$O(bR#e#v$UWO!^%T!_#o%T#p~%T'u(rZ$UW]!ROY(kYZ)eZr(krs*rs!^(k!^!_+U!_#O(k#O#P-b#P#o(k#o#p+U#p~(k&r)jV$UWOr)ers*Ps!^)e!^!_*a!_#o)e#o#p*a#p~)e&r*WR$P&j$UWO!^%T!_#o%T#p~%T&j*dROr*ars*ms~*a&j*rO$P&j'u*{R$P&j$UW]!RO!^%T!_#o%T#p~%T'm+ZV]!ROY+UYZ*aZr+Urs+ps#O+U#O#P+w#P~+U'm+wO$P&j]!R'm+zROr+Urs,Ts~+U'm,[U$P&j]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R,sU]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R-[O]!R!R-_PO~,n'u-gV$UWOr(krs-|s!^(k!^!_+U!_#o(k#o#p+U#p~(k'u.VZ$P&j$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/PZ$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/yR$UW]!RO!^%T!_#o%T#p~%T!Z0XT$UWO!^.x!^!_,n!_#o.x#o#p,n#p~.xy0mZ$UWOt%Ttu1`u!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`y1g]$UW'mqOt%Ttu1`u!Q%T!Q![1`![!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`&i2k_$UW#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`[3q_$UW#zSOt%Ttu3ju}%T}!O3j!O!Q%T!Q![3j![!^%T!_!c%T!c!}3j!}#R%T#R#S3j#S#T%T#T#o3j#p$g%T$g~3j$O4wS#^#v$UWO!^%T!_!`5T!`#o%T#p~%T$O5[R$UW#o#vO!^%T!_#o%T#p~%T%r5lU'v%j$UWOv%Tvw6Ow!^%T!_!`5T!`#o%T#p~%T$O6VS$UW#i#vO!^%T!_!`5T!`#o%T#p~%T'u6jZ$UW]!ROY6cYZ7]Zw6cwx*rx!^6c!^!_8T!_#O6c#O#P:T#P#o6c#o#p8T#p~6c&r7bV$UWOw7]wx*Px!^7]!^!_7w!_#o7]#o#p7w#p~7]&j7zROw7wwx*mx~7w'm8YV]!ROY8TYZ7wZw8Twx+px#O8T#O#P8o#P~8T'm8rROw8Twx8{x~8T'm9SU$P&j]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R9kU]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R:QPO~9f'u:YV$UWOw6cwx:ox!^6c!^!_8T!_#o6c#o#p8T#p~6c'u:xZ$P&j$UW]!ROY;kYZ%TZw;kwx/rx!^;k!^!_9f!_#O;k#O#PW{!^%T!_!`5T!`#o%T#p~%T$O>_S#[#v$UWO!^%T!_!`5T!`#o%T#p~%T$u>rSj$m$UWO!^%T!_!`5T!`#o%T#p~%T&i?VR!R&a$UWO!^%T!_#o%T#p~%T&i?gVu%n$UWO!O%T!O!P?|!P!Q%T!Q![@r![!^%T!_#o%T#p~%Ty@RT$UWO!O%T!O!P@b!P!^%T!_#o%T#p~%Ty@iR!Qq$UWO!^%T!_#o%T#p~%Ty@yZ$UWkqO!Q%T!Q![@r![!^%T!_!g%T!g!hAl!h#R%T#R#S@r#S#X%T#X#YAl#Y#o%T#p~%TyAqZ$UWO{%T{|Bd|}%T}!OBd!O!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyBiV$UWO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyCVV$UWkqO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%T,TCs`$UW#]#vOYDuYZ%TZzDuz{Jl{!PDu!P!Q!-e!Q!^Du!^!_Fx!_!`!.^!`!a!/]!a!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXD|[$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXEy_$UW}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%TPF}V}POYFxZ!PFx!P!QGd!Q!}Fx!}#OG{#O#PHh#P~FxPGiU}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGdPHOTOYG{Z#OG{#O#PH_#P#QFx#Q~G{PHbQOYG{Z~G{PHkQOYFxZ~FxXHvY$UWOYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~HqXIkV$UWOYHqYZ%TZ!^Hq!^!_G{!_#oHq#o#pG{#p~HqXJVV$UWOYDuYZ%TZ!^Du!^!_Fx!_#oDu#o#pFx#p~Du,TJs^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q!,R!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,TKtV$UWOzKoz{LZ{!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TL`X$UWOzKoz{LZ{!PKo!P!QL{!Q!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TMSR$UWU+{O!^%T!_#o%T#p~%T+{M`ROzM]z{Mi{~M]+{MlTOzM]z{Mi{!PM]!P!QM{!Q~M]+{NQOU+{,TNX^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q! T!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,T! ^_$UWU+{}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%T+{!!bY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!&x!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#VY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!#u!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#|UU+{}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGd+{!$cWOY!$`YZM]Zz!$`z{!${{#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%OYOY!$`YZM]Zz!$`z{!${{!P!$`!P!Q!%n!Q#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%sTU+{OYG{Z#OG{#O#PH_#P#QFx#Q~G{+{!&VTOY!$`YZM]Zz!$`z{!${{~!$`+{!&iTOY!!]YZM]Zz!!]z{!#Q{~!!]+{!&}_}POzM]z{Mi{#ZM]#Z#[!&x#[#]M]#]#^!&x#^#aM]#a#b!&x#b#gM]#g#h!&x#h#iM]#i#j!&x#j#mM]#m#n!&x#n~M],T!(R[$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!(|^$UWOY!'|YZKoZz!'|z{!(w{!P!'|!P!Q!)x!Q!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!*PY$UWU+{OYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~Hq,T!*tX$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#o!'|#o#p!$`#p~!'|,T!+fX$UWOYJlYZKoZzJlz{NQ{!^Jl!^!_!!]!_#oJl#o#p!!]#p~Jl,T!,Yc$UW}POzKoz{LZ{!^Ko!^!_M]!_#ZKo#Z#[!,R#[#]Ko#]#^!,R#^#aKo#a#b!,R#b#gKo#g#h!,R#h#iKo#i#j!,R#j#mKo#m#n!,R#n#oKo#o#pM]#p~Ko,T!-lV$UWT+{OY!-eYZ%TZ!^!-e!^!_!.R!_#o!-e#o#p!.R#p~!-e+{!.WQT+{OY!.RZ~!.R$P!.g[$UW#o#v}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Du]!/f[#wS$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Duy!0cd$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#U%T#U#V!3X#V#X%T#X#YAl#Y#b%T#b#c!2w#c#d!4m#d#l%T#l#m!5{#m#o%T#p~%Ty!1x_$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#X%T#X#YAl#Y#b%T#b#c!2w#c#o%T#p~%Ty!3OR$UWkqO!^%T!_#o%T#p~%Ty!3^W$UWO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#o%T#p~%Ty!3}Y$UWkqO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#b%T#b#c!2w#c#o%T#p~%Ty!4rV$UWO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#o%T#p~%Ty!5`X$UWkqO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#b%T#b#c!2w#c#o%T#p~%Ty!6QZ$UWO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#o%T#p~%Ty!6z]$UWkqO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#b%T#b#c!2w#c#o%T#p~%T%w!7|R!]V$UW#m%hO!^%T!_#o%T#p~%T!P!8^R_w$UWO!^%T!_#o%T#p~%T+c!8rR'`d!a%Y#x&s'zP!P!Q!8{!^!_!9Q!_!`!9_W!9QO$WW#v!9VP#`#v!_!`!9Y#v!9_O#o#v#v!9dO#a#v%w!9kT!{%o$UWO!^%T!_!`'v!`!a!9z!a#o%T#p~%T$P!:RR#W#w$UWO!^%T!_#o%T#p~%T%w!:gT'_!s#a#v$RS$UWO!^%T!_!`!:v!`!a!;W!a#o%T#p~%T$O!:}R#a#v$UWO!^%T!_#o%T#p~%T$O!;_T#`#v$UWO!^%T!_!`5T!`!a!;n!a#o%T#p~%T$O!;uS#`#v$UWO!^%T!_!`5T!`#o%T#p~%T%w!]S#g#v$UWO!^%T!_!`5T!`#o%T#p~%T$P!>pR$UW'd#wO!^%T!_#o%T#p~%T~!?OO!T~%r!?VT'u%j$UWO!^%T!_!`5T!`#o%T#p#q!=P#q~%T$u!?oR!S$knQ$UWO!^%T!_#o%T#p~%TX!@PR!kP$UWO!^%T!_#o%T#p~%T,T!@gr$UW'W+{#zS'Z%k'epOX%TXY%cYZ%TZ[%c[p%Tpq%cqt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`,T!CO_$UW'X+{#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`",tokenizers:[noSemicolon,incdecToken,template,0,1,2,3,4,5,6,7,8,insertSemicolon],topRules:{Script:[0,7]},dialects:{jsx:11335,ts:11337},dynamicPrecedences:{"149":1,"176":1},specialized:[{term:287,get:(a,e)=>tsExtends(a,e)<<1},{term:287,get:a=>spec_identifier[a]||-1},{term:297,get:a=>spec_word[a]||-1},{term:63,get:a=>spec_LessThan[a]||-1}],tokenPrec:11358}),snippets=[snippetCompletion("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),snippetCompletion("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),snippetCompletion("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),snippetCompletion(`try { - \${} -} catch (\${error}) { - \${} -}`,{label:"try",detail:"block",type:"keyword"}),snippetCompletion(`class \${name} { - constructor(\${params}) { - \${} - } -}`,{label:"class",detail:"definition",type:"keyword"}),snippetCompletion('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),snippetCompletion('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],javascriptLanguage=LRLanguage.define({parser:parser.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\s*({|else\b)/}),TryStatement:continuedIndent({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:flatIndent,SwitchBody:a=>{let e=a.textAfter,s=/^\s*\}/.test(e),o=/^\s*(case|default)\b/.test(e);return a.baseIndent+(s?0:o?1:2)*a.unit},Block:delimitedIndent({closing:"}"}),ArrowFunction:a=>a.baseIndent+a.unit,"TemplateString BlockComment":()=>-1,"Statement Property":continuedIndent({except:/^{/}),JSXElement(a){let e=/^\s*<\//.test(a.textAfter);return a.lineIndent(a.node.from)+(e?0:a.unit)},JSXEscape(a){let e=/\s*\}/.test(a.textAfter);return a.lineIndent(a.node.from)+(e?0:a.unit)},"JSXOpenTag JSXSelfClosingTag"(a){return a.column(a.node.from)+a.unit}}),foldNodeProp.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression":foldInside$1,BlockComment(a){return{from:a.from+2,to:a.to-2}}}),styleTags({"get set async static":tags.modifier,"for while do if else switch try catch finally return throw break continue default case":tags.controlKeyword,"in of await yield void typeof delete instanceof":tags.operatorKeyword,"let var const function class extends":tags.definitionKeyword,"import export from":tags.moduleKeyword,"with debugger as new":tags.keyword,TemplateString:tags.special(tags.string),Super:tags.atom,BooleanLiteral:tags.bool,this:tags.self,null:tags.null,Star:tags.modifier,VariableName:tags.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":tags.function(tags.variableName),VariableDefinition:tags.definition(tags.variableName),Label:tags.labelName,PropertyName:tags.propertyName,PrivatePropertyName:tags.special(tags.propertyName),"CallExpression/MemberExpression/PropertyName":tags.function(tags.propertyName),"FunctionDeclaration/VariableDefinition":tags.function(tags.definition(tags.variableName)),"ClassDeclaration/VariableDefinition":tags.definition(tags.className),PropertyDefinition:tags.definition(tags.propertyName),PrivatePropertyDefinition:tags.definition(tags.special(tags.propertyName)),UpdateOp:tags.updateOperator,LineComment:tags.lineComment,BlockComment:tags.blockComment,Number:tags.number,String:tags.string,ArithOp:tags.arithmeticOperator,LogicOp:tags.logicOperator,BitOp:tags.bitwiseOperator,CompareOp:tags.compareOperator,RegExp:tags.regexp,Equals:tags.definitionOperator,"Arrow : Spread":tags.punctuation,"( )":tags.paren,"[ ]":tags.squareBracket,"{ }":tags.brace,"InterpolationStart InterpolationEnd":tags.special(tags.brace),".":tags.derefOperator,", ;":tags.separator,TypeName:tags.typeName,TypeDefinition:tags.definition(tags.typeName),"type enum interface implements namespace module declare":tags.definitionKeyword,"abstract global Privacy readonly override":tags.modifier,"is keyof unique infer":tags.operatorKeyword,JSXAttributeValue:tags.attributeValue,JSXText:tags.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":tags.angleBracket,"JSXIdentifier JSXNameSpacedName":tags.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":tags.attributeName})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),typescriptLanguage=javascriptLanguage.configure({dialect:"ts"}),jsxLanguage=javascriptLanguage.configure({dialect:"jsx"}),tsxLanguage=javascriptLanguage.configure({dialect:"jsx ts"});function javascript(a={}){let e=a.jsx?a.typescript?tsxLanguage:jsxLanguage:a.typescript?typescriptLanguage:javascriptLanguage;return new LanguageSupport(e,javascriptLanguage.data.of({autocomplete:ifNotIn(["LineComment","BlockComment","String"],completeFromList(snippets))}))}const scale=(a,e,s)=>a*(s-e)+e;Pattern$4.prototype.pianoroll=function({cycles:a=4,playhead:e=.5,overscan:s=1,flipTime:o=0,flipValues:c=0,hideNegative:d=!1,inactive:_="#C9E597",active:b="#FFCA28",background:k="transparent",minMidi:$=10,maxMidi:j=90,autorange:_e=0,timeframe:et,fold:tt=0,vertical:nt=0}={}){const it=getDrawContext(),rt=it.canvas.width,st=it.canvas.height;let ot=-a*e,lt=a*(1-e);et&&(console.warn("timeframe is deprecated! use from/to instead"),ot=0,lt=et),!_e&&tt&&console.warn("disabling autorange has no effect when fold is enabled");const dt=nt?st:rt,ct=nt?rt:st;let ut=nt?[dt,0]:[0,dt];const at=lt-ot,ht=nt?[0,ct]:[ct,0];let pt=j-$+1,Et=ct/pt,gt=[];o&&ut.reverse(),c&&ht.reverse();const ft=scale(-ot/at,...ut);return this.draw((mt,yt,vt)=>{mt.fillStyle=k,mt.clearRect(0,0,rt,st),mt.fillRect(0,0,rt,st);const At=St=>(!d||St.whole.begin>=0)&&St.whole.begin<=vt+lt&&St.whole.end>=vt+ot;yt.filter(At).forEach(St=>{var Rt,Pt,Ft;const Tt=St.whole.begin<=vt&&St.whole.end>vt;mt.fillStyle=((Rt=St.context)==null?void 0:Rt.color)||_,mt.strokeStyle=((Pt=St.context)==null?void 0:Pt.color)||b,mt.globalAlpha=(Ft=St.context.velocity)!=null?Ft:1,mt.beginPath(),nt?(mt.moveTo(0,ft),mt.lineTo(ct,ft)):(mt.moveTo(ft,0),mt.lineTo(ft,ct)),mt.stroke();const Dt=scale((St.whole.begin-(o?lt:ot))/at,...ut);let xt=scale(St.duration/at,0,dt);const Ct=scale(tt?gt.indexOf(St.value)/gt.length:(Number(St.value)-$)/pt,...ht);let bt=0;const $t=scale(vt/at,...ut);let It;nt?It=[Ct+1-(c?Et:0),dt-$t+Dt+bt+1-(o?0:xt),Et-2,xt-2]:It=[Dt-$t+bt+1-(o?xt:0),Ct+1-(c?0:Et),xt-2,Et-2],Tt?mt.strokeRect(...It):mt.fillRect(...It)})},{from:ot-s,to:lt+s,onQuery:mt=>{const yt=Tt=>Number(Tt.value),{min:vt,max:At,values:St}=mt.reduce(({min:Tt,max:Dt,values:xt},Ct)=>{const bt=yt(Ct);return{min:btDt?bt:Dt,values:xt.includes(bt)?xt:[...xt,bt]}},{min:1/0,max:-1/0,values:[]});_e&&($=vt,j=At,pt=j-$+1),gt=St.sort((Tt,Dt)=>Tt-Dt),Et=tt?ct/gt.length:ct/pt}}),this};const version$1="14.7.77",createExtendedExponentialRampToValueAutomationEvent$1=(a,e,s)=>({endTime:e,insertTime:s,type:"exponentialRampToValue",value:a}),createExtendedLinearRampToValueAutomationEvent$1=(a,e,s)=>({endTime:e,insertTime:s,type:"linearRampToValue",value:a}),createSetValueAutomationEvent$1=(a,e)=>({startTime:e,type:"setValue",value:a}),createSetValueCurveAutomationEvent$1=(a,e,s)=>({duration:s,startTime:e,type:"setValueCurve",values:a}),getTargetValueAtTime$1=(a,e,{startTime:s,target:o,timeConstant:c})=>o+(e-o)*Math.exp((s-a)/c),isExponentialRampToValueAutomationEvent$1=a=>a.type==="exponentialRampToValue",isLinearRampToValueAutomationEvent$1=a=>a.type==="linearRampToValue",isAnyRampToValueAutomationEvent$1=a=>isExponentialRampToValueAutomationEvent$1(a)||isLinearRampToValueAutomationEvent$1(a),isSetValueAutomationEvent$1=a=>a.type==="setValue",isSetValueCurveAutomationEvent$1=a=>a.type==="setValueCurve",getValueOfAutomationEventAtIndexAtTime$1=(a,e,s,o)=>{const c=a[e];return c===void 0?o:isAnyRampToValueAutomationEvent$1(c)||isSetValueAutomationEvent$1(c)?c.value:isSetValueCurveAutomationEvent$1(c)?c.values[c.values.length-1]:getTargetValueAtTime$1(s,getValueOfAutomationEventAtIndexAtTime$1(a,e-1,c.startTime,o),c)},getEndTimeAndValueOfPreviousAutomationEvent$1=(a,e,s,o,c)=>s===void 0?[o.insertTime,c]:isAnyRampToValueAutomationEvent$1(s)?[s.endTime,s.value]:isSetValueAutomationEvent$1(s)?[s.startTime,s.value]:isSetValueCurveAutomationEvent$1(s)?[s.startTime+s.duration,s.values[s.values.length-1]]:[s.startTime,getValueOfAutomationEventAtIndexAtTime$1(a,e-1,s.startTime,c)],isCancelAndHoldAutomationEvent$1=a=>a.type==="cancelAndHold",isCancelScheduledValuesAutomationEvent$1=a=>a.type==="cancelScheduledValues",getEventTime$1=a=>isCancelAndHoldAutomationEvent$1(a)||isCancelScheduledValuesAutomationEvent$1(a)?a.cancelTime:isExponentialRampToValueAutomationEvent$1(a)||isLinearRampToValueAutomationEvent$1(a)?a.endTime:a.startTime,getExponentialRampValueAtTime$1=(a,e,s,{endTime:o,value:c})=>s===c?c:0s+(a-e)/(o-e)*(c-s),interpolateValue$1=(a,e)=>{const s=Math.floor(e),o=Math.ceil(e);return s===o?a[s]:(1-(e-s))*a[s]+(1-(o-e))*a[o]},getValueCurveValueAtTime$1=(a,{duration:e,startTime:s,values:o})=>{const c=(a-s)/e*(o.length-1);return interpolateValue$1(o,c)},isSetTargetAutomationEvent$1=a=>a.type==="setTarget";class AutomationEventList$1{constructor(e){this._automationEvents=[],this._currenTime=0,this._defaultValue=e}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(e){const s=getEventTime$1(e);if(isCancelAndHoldAutomationEvent$1(e)||isCancelScheduledValuesAutomationEvent$1(e)){const o=this._automationEvents.findIndex(d=>isCancelScheduledValuesAutomationEvent$1(e)&&isSetValueCurveAutomationEvent$1(d)?d.startTime+d.duration>=s:getEventTime$1(d)>=s),c=this._automationEvents[o];if(o!==-1&&(this._automationEvents=this._automationEvents.slice(0,o)),isCancelAndHoldAutomationEvent$1(e)){const d=this._automationEvents[this._automationEvents.length-1];if(c!==void 0&&isAnyRampToValueAutomationEvent$1(c)){if(isSetTargetAutomationEvent$1(d))throw new Error("The internal list is malformed.");const _=isSetValueCurveAutomationEvent$1(d)?d.startTime+d.duration:getEventTime$1(d),b=isSetValueCurveAutomationEvent$1(d)?d.values[d.values.length-1]:d.value,k=isExponentialRampToValueAutomationEvent$1(c)?getExponentialRampValueAtTime$1(s,_,b,c):getLinearRampValueAtTime$1(s,_,b,c),$=isExponentialRampToValueAutomationEvent$1(c)?createExtendedExponentialRampToValueAutomationEvent$1(k,s,this._currenTime):createExtendedLinearRampToValueAutomationEvent$1(k,s,this._currenTime);this._automationEvents.push($)}d!==void 0&&isSetTargetAutomationEvent$1(d)&&this._automationEvents.push(createSetValueAutomationEvent$1(this.getValue(s),s)),d!==void 0&&isSetValueCurveAutomationEvent$1(d)&&d.startTime+d.duration>s&&(this._automationEvents[this._automationEvents.length-1]=createSetValueCurveAutomationEvent$1(new Float32Array([6,7]),d.startTime,s-d.startTime))}}else{const o=this._automationEvents.findIndex(_=>getEventTime$1(_)>s),c=o===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[o-1];if(c!==void 0&&isSetValueCurveAutomationEvent$1(c)&&getEventTime$1(c)+c.duration>s)return!1;const d=isExponentialRampToValueAutomationEvent$1(e)?createExtendedExponentialRampToValueAutomationEvent$1(e.value,e.endTime,this._currenTime):isLinearRampToValueAutomationEvent$1(e)?createExtendedLinearRampToValueAutomationEvent$1(e.value,s,this._currenTime):e;if(o===-1)this._automationEvents.push(d);else{if(isSetValueCurveAutomationEvent$1(e)&&s+e.duration>getEventTime$1(this._automationEvents[o]))return!1;this._automationEvents.splice(o,0,d)}}return!0}flush(e){const s=this._automationEvents.findIndex(o=>getEventTime$1(o)>e);if(s>1){const o=this._automationEvents.slice(s-1),c=o[0];isSetTargetAutomationEvent$1(c)&&o.unshift(createSetValueAutomationEvent$1(getValueOfAutomationEventAtIndexAtTime$1(this._automationEvents,s-2,c.startTime,this._defaultValue),c.startTime)),this._automationEvents=o}}getValue(e){if(this._automationEvents.length===0)return this._defaultValue;const s=this._automationEvents.findIndex(_=>getEventTime$1(_)>e),o=this._automationEvents[s],c=(s===-1?this._automationEvents.length:s)-1,d=this._automationEvents[c];if(d!==void 0&&isSetTargetAutomationEvent$1(d)&&(o===void 0||!isAnyRampToValueAutomationEvent$1(o)||o.insertTime>e))return getTargetValueAtTime$1(e,getValueOfAutomationEventAtIndexAtTime$1(this._automationEvents,c-1,d.startTime,this._defaultValue),d);if(d!==void 0&&isSetValueAutomationEvent$1(d)&&(o===void 0||!isAnyRampToValueAutomationEvent$1(o)))return d.value;if(d!==void 0&&isSetValueCurveAutomationEvent$1(d)&&(o===void 0||!isAnyRampToValueAutomationEvent$1(o)||d.startTime+d.duration>e))return e({cancelTime:a,type:"cancelAndHold"}),createCancelScheduledValuesAutomationEvent$1=a=>({cancelTime:a,type:"cancelScheduledValues"}),createExponentialRampToValueAutomationEvent$1=(a,e)=>({endTime:e,type:"exponentialRampToValue",value:a}),createLinearRampToValueAutomationEvent$1=(a,e)=>({endTime:e,type:"linearRampToValue",value:a}),createSetTargetAutomationEvent$1=(a,e,s)=>({startTime:e,target:a,timeConstant:s,type:"setTarget"}),createAbortError$1=()=>new DOMException("","AbortError"),createAddActiveInputConnectionToAudioNode$1=a=>(e,s,[o,c,d],_)=>{a(e[c],[s,o,d],b=>b[0]===s&&b[1]===o,_)},createAddAudioNodeConnections$1=a=>(e,s,o)=>{const c=[];for(let d=0;d(e,s)=>{a.set(e,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:s})},ACTIVE_AUDIO_NODE_STORE$1=new WeakSet,AUDIO_NODE_CONNECTIONS_STORE$1=new WeakMap,AUDIO_NODE_STORE$1=new WeakMap,AUDIO_PARAM_CONNECTIONS_STORE$1=new WeakMap,AUDIO_PARAM_STORE$1=new WeakMap,CONTEXT_STORE$1=new WeakMap,EVENT_LISTENERS$1=new WeakMap,CYCLE_COUNTERS$1=new WeakMap,NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1=new WeakMap,NODE_TO_PROCESSOR_MAPS$1=new WeakMap,handler$1={construct(){return handler$1}},isConstructible$1=a=>{try{const e=new Proxy(a,handler$1);new e}catch{return!1}return!0},IMPORT_STATEMENT_REGEX$1=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,splitImportStatements$1=(a,e)=>{const s=[];let o=a.replace(/^[\s]+/,""),c=o.match(IMPORT_STATEMENT_REGEX$1);for(;c!==null;){const d=c[1].slice(1,-1),_=c[0].replace(/([\s]+)?;?$/,"").replace(d,new URL(d,e).toString());s.push(_),o=o.slice(c[0].length).replace(/^[\s]+/,""),c=o.match(IMPORT_STATEMENT_REGEX$1)}return[s.join(";"),o]},verifyParameterDescriptors$1=a=>{if(a!==void 0&&!Array.isArray(a))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},verifyProcessorCtor$1=a=>{if(!isConstructible$1(a))throw new TypeError("The given value for processorCtor should be a constructor.");if(a.prototype===null||typeof a.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},createAddAudioWorkletModule$1=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>{let tt=0;return(nt,it,rt={credentials:"omit"})=>{const st=j.get(nt);if(st!==void 0&&st.has(it))return Promise.resolve();const ot=$.get(nt);if(ot!==void 0){const ct=ot.get(it);if(ct!==void 0)return ct}const lt=d(nt),dt=lt.audioWorklet===void 0?c(it).then(([ct,ut])=>{const[at,ht]=splitImportStatements$1(ct,ut),pt=`${at};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${ht} -})})(window,'_AWGS')`;return s(pt)}).then(()=>{const ct=et._AWGS.pop();if(ct===void 0)throw new SyntaxError;o(lt.currentTime,lt.sampleRate,()=>ct(class{},void 0,(ut,at)=>{if(ut.trim()==="")throw e();const ht=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1.get(lt);if(ht!==void 0){if(ht.has(ut))throw e();verifyProcessorCtor$1(at),verifyParameterDescriptors$1(at.parameterDescriptors),ht.set(ut,at)}else verifyProcessorCtor$1(at),verifyParameterDescriptors$1(at.parameterDescriptors),NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1.set(lt,new Map([[ut,at]]))},lt.sampleRate,void 0,void 0))}):Promise.all([c(it),Promise.resolve(a(_e,_e))]).then(([[ct,ut],at])=>{const ht=tt+1;tt=ht;const[pt,Et]=splitImportStatements$1(ct,ut),yt=`${pt};((AudioWorkletProcessor,registerProcessor)=>{${Et} -})(${at?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${at?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${at?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${ht}',class extends AudioWorkletProcessor{process(){return !1}})`,vt=new Blob([yt],{type:"application/javascript; charset=utf-8"}),At=URL.createObjectURL(vt);return lt.audioWorklet.addModule(At,rt).then(()=>{if(b(lt))return lt;const St=_(lt);return St.audioWorklet.addModule(At,rt).then(()=>St)}).then(St=>{if(k===null)throw new SyntaxError;try{new k(St,`__sac${ht}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(At))});return ot===void 0?$.set(nt,new Map([[it,dt]])):ot.set(it,dt),dt.then(()=>{const ct=j.get(nt);ct===void 0?j.set(nt,new Set([it])):ct.add(it)}).finally(()=>{const ct=$.get(nt);ct!==void 0&&ct.delete(it)}),dt}},getValueForKey$1=(a,e)=>{const s=a.get(e);if(s===void 0)throw new Error("A value with the given key could not be found.");return s},pickElementFromSet$1=(a,e)=>{const s=Array.from(a).filter(e);if(s.length>1)throw Error("More than one element was found.");if(s.length===0)throw Error("No element was found.");const[o]=s;return a.delete(o),o},deletePassiveInputConnectionToAudioNode$1=(a,e,s,o)=>{const c=getValueForKey$1(a,e),d=pickElementFromSet$1(c,_=>_[0]===s&&_[1]===o);return c.size===0&&a.delete(e),d},getEventListenersOfAudioNode$1=a=>getValueForKey$1(EVENT_LISTENERS$1,a),setInternalStateToActive$1=a=>{if(ACTIVE_AUDIO_NODE_STORE$1.has(a))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE$1.add(a),getEventListenersOfAudioNode$1(a).forEach(e=>e(!0))},isAudioWorkletNode$1=a=>"port"in a,setInternalStateToPassive$1=a=>{if(!ACTIVE_AUDIO_NODE_STORE$1.has(a))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE$1.delete(a),getEventListenersOfAudioNode$1(a).forEach(e=>e(!1))},setInternalStateToPassiveWhenNecessary$1=(a,e)=>{!isAudioWorkletNode$1(a)&&e.every(s=>s.size===0)&&setInternalStateToPassive$1(a)},createAddConnectionToAudioNode$1=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>{const tt=new WeakMap;return(nt,it,rt,st,ot)=>{const{activeInputs:lt,passiveInputs:dt}=d(it),{outputs:ct}=d(nt),ut=b(nt),at=ht=>{const pt=k(it),Et=k(nt);if(ht){const gt=deletePassiveInputConnectionToAudioNode$1(dt,nt,rt,st);a(lt,nt,gt,!1),!ot&&!_e(nt)&&s(Et,pt,rt,st),et(it)&&setInternalStateToActive$1(it)}else{const gt=o(lt,nt,rt,st);e(dt,st,gt,!1),!ot&&!_e(nt)&&c(Et,pt,rt,st);const ft=_(it);if(ft===0)j(it)&&setInternalStateToPassiveWhenNecessary$1(it,lt);else{const mt=tt.get(it);mt!==void 0&&clearTimeout(mt),tt.set(it,setTimeout(()=>{j(it)&&setInternalStateToPassiveWhenNecessary$1(it,lt)},ft*1e3))}}};return $(ct,[it,rt,st],ht=>ht[0]===it&&ht[1]===rt&&ht[2]===st,!0)?(ut.add(at),j(nt)?a(lt,nt,[rt,st,at],!0):e(dt,st,[nt,rt,at],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode$1=a=>(e,s,[o,c,d],_)=>{const b=e.get(o);b===void 0?e.set(o,new Set([[c,s,d]])):a(b,[c,s,d],k=>k[0]===c&&k[1]===s,_)},createAddSilentConnection$1=a=>(e,s)=>{const o=a(e,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});s.connect(o).connect(e.destination);const c=()=>{s.removeEventListener("ended",c),s.disconnect(o),o.disconnect()};s.addEventListener("ended",c)},createAddUnrenderedAudioWorkletNode$1=a=>(e,s)=>{a(e).add(s)},DEFAULT_OPTIONS$D={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor$1=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$D),k),_e=o($,j),et=d($)?e():null;super(b,!1,_e,et),this._nativeAnalyserNode=_e}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(b){this._nativeAnalyserNode.fftSize=b}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(b){const k=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=b,!(b>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=k,s()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(b){const k=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=b,!(this._nativeAnalyserNode.maxDecibels>b))throw this._nativeAnalyserNode.minDecibels=k,s()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(b){this._nativeAnalyserNode.smoothingTimeConstant=b}getByteFrequencyData(b){this._nativeAnalyserNode.getByteFrequencyData(b)}getByteTimeDomainData(b){this._nativeAnalyserNode.getByteTimeDomainData(b)}getFloatFrequencyData(b){this._nativeAnalyserNode.getFloatFrequencyData(b)}getFloatTimeDomainData(b){this._nativeAnalyserNode.getFloatTimeDomainData(b)}},isOwnedByContext$1=(a,e)=>a.context===e,createAnalyserNodeRendererFactory$1=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,fftSize:b.fftSize,maxDecibels:b.maxDecibels,minDecibels:b.minDecibels,smoothingTimeConstant:b.smoothingTimeConstant};b=a(_,$)}return o.set(_,b),await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1=a=>{try{a.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError$1=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod$1=a=>{a.getChannelData=(e=>s=>{try{return e.call(a,s)}catch(o){throw o.code===12?createIndexSizeError$1():o}})(a.getChannelData)},DEFAULT_OPTIONS$C={numberOfChannels:1},createAudioBufferConstructor$1=(a,e,s,o,c,d,_,b)=>{let k=null;return class fr{constructor(j){if(c===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:_e,numberOfChannels:et,sampleRate:tt}=_t(_t({},DEFAULT_OPTIONS$C),j);k===null&&(k=new c(1,1,44100));const nt=o!==null&&e(d,d)?new o({length:_e,numberOfChannels:et,sampleRate:tt}):k.createBuffer(et,_e,tt);if(nt.numberOfChannels===0)throw s();return typeof nt.copyFromChannel!="function"?(_(nt),wrapAudioBufferGetChannelDataMethod$1(nt)):e(testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1(nt))||b(nt),a.add(nt),nt}static[Symbol.hasInstance](j){return j!==null&&typeof j=="object"&&Object.getPrototypeOf(j)===fr.prototype||a.has(j)}}},MOST_NEGATIVE_SINGLE_FLOAT$1=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT$1=-MOST_NEGATIVE_SINGLE_FLOAT$1,isActiveAudioNode$1=a=>ACTIVE_AUDIO_NODE_STORE$1.has(a),DEFAULT_OPTIONS$B={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor$1=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$B),j),tt=c(_e,et),nt=_(_e),it=nt?e():null;super($,!1,tt,it),this._audioBufferSourceNodeRenderer=it,this._isBufferNullified=!1,this._isBufferSet=et.buffer!==null,this._nativeAudioBufferSourceNode=tt,this._onended=null,this._playbackRate=s(this,nt,tt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer($){if(this._nativeAudioBufferSourceNode.buffer=$,$!==null){if(this._isBufferSet)throw o();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop($){this._nativeAudioBufferSourceNode.loop=$}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd($){this._nativeAudioBufferSourceNode.loopEnd=$}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart($){this._nativeAudioBufferSourceNode.loopStart=$}get onended(){return this._onended}set onended($){const j=typeof $=="function"?b(this,$):null;this._nativeAudioBufferSourceNode.onended=j;const _e=this._nativeAudioBufferSourceNode.onended;this._onended=_e!==null&&_e===j?$:_e}get playbackRate(){return this._playbackRate}start($=0,j=0,_e){if(this._nativeAudioBufferSourceNode.start($,j,_e),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=_e===void 0?[$,j]:[$,j,_e]),this.context.state!=="closed"){setInternalStateToActive$1(this);const et=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",et),isActiveAudioNode$1(this)&&setInternalStateToPassive$1(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",et)}}stop($=0){this._nativeAudioBufferSourceNode.stop($),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=$)}},createAudioBufferSourceNodeRendererFactory$1=(a,e,s,o,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext$1(_e,j);if(!et){const tt={buffer:_e.buffer,channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,loop:_e.loop,loopEnd:_e.loopEnd,loopStart:_e.loopStart,playbackRate:_e.playbackRate.value};_e=e(j,tt),_!==null&&_e.start(..._),b!==null&&_e.stop(b)}return d.set(j,_e),et?await a(j,$.playbackRate,_e.playbackRate):await o(j,$.playbackRate,_e.playbackRate),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},isAudioBufferSourceNode$1=a=>"playbackRate"in a,isBiquadFilterNode$1=a=>"frequency"in a&&"gain"in a,isConstantSourceNode$1=a=>"offset"in a,isGainNode$1=a=>!("frequency"in a)&&"gain"in a,isOscillatorNode$1=a=>"detune"in a&&"frequency"in a,isStereoPannerNode$1=a=>"pan"in a,getAudioNodeConnections$1=a=>getValueForKey$1(AUDIO_NODE_CONNECTIONS_STORE$1,a),getAudioParamConnections$1=a=>getValueForKey$1(AUDIO_PARAM_CONNECTIONS_STORE$1,a),deactivateActiveAudioNodeInputConnections$1=(a,e)=>{const{activeInputs:s}=getAudioNodeConnections$1(a);s.forEach(c=>c.forEach(([d])=>{e.includes(a)||deactivateActiveAudioNodeInputConnections$1(d,[...e,a])}));const o=isAudioBufferSourceNode$1(a)?[a.playbackRate]:isAudioWorkletNode$1(a)?Array.from(a.parameters.values()):isBiquadFilterNode$1(a)?[a.Q,a.detune,a.frequency,a.gain]:isConstantSourceNode$1(a)?[a.offset]:isGainNode$1(a)?[a.gain]:isOscillatorNode$1(a)?[a.detune,a.frequency]:isStereoPannerNode$1(a)?[a.pan]:[];for(const c of o){const d=getAudioParamConnections$1(c);d!==void 0&&d.activeInputs.forEach(([_])=>deactivateActiveAudioNodeInputConnections$1(_,e))}isActiveAudioNode$1(a)&&setInternalStateToPassive$1(a)},deactivateAudioGraph$1=a=>{deactivateActiveAudioNodeInputConnections$1(a.destination,[])},isValidLatencyHint$1=a=>a===void 0||typeof a=="number"||typeof a=="string"&&(a==="balanced"||a==="interactive"||a==="playback"),createAudioContextConstructor$1=(a,e,s,o,c,d,_,b,k)=>class extends a{constructor(j={}){if(k===null)throw new Error("Missing the native AudioContext constructor.");let _e;try{_e=new k(j)}catch(nt){throw nt.code===12&&nt.message==="sampleRate is not in range"?s():nt}if(_e===null)throw o();if(!isValidLatencyHint$1(j.latencyHint))throw new TypeError(`The provided value '${j.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(j.sampleRate!==void 0&&_e.sampleRate!==j.sampleRate)throw s();super(_e,2);const{latencyHint:et}=j,{sampleRate:tt}=_e;if(this._baseLatency=typeof _e.baseLatency=="number"?_e.baseLatency:et==="balanced"?512/tt:et==="interactive"||et===void 0?256/tt:et==="playback"?1024/tt:Math.max(2,Math.min(128,Math.round(et*tt/128)))*128/tt,this._nativeAudioContext=_e,k.name==="webkitAudioContext"?(this._nativeGainNode=_e.createGain(),this._nativeOscillatorNode=_e.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(_e.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,_e.state==="running"){this._state="suspended";const nt=()=>{this._state==="suspended"&&(this._state=null),_e.removeEventListener("statechange",nt)};_e.addEventListener("statechange",nt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw e()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph$1(this)}))}createMediaElementSource(j){return new c(this,{mediaElement:j})}createMediaStreamDestination(){return new d(this)}createMediaStreamSource(j){return new _(this,{mediaStream:j})}createMediaStreamTrackSource(j){return new b(this,{mediaStreamTrack:j})}resume(){return this._state==="suspended"?new Promise((j,_e)=>{const et=()=>{this._nativeAudioContext.removeEventListener("statechange",et),this._nativeAudioContext.state==="running"?j():this.resume().then(j,_e)};this._nativeAudioContext.addEventListener("statechange",et)}):this._nativeAudioContext.resume().catch(j=>{throw j===void 0||j.code===15?e():j})}suspend(){return this._nativeAudioContext.suspend().catch(j=>{throw j===void 0?e():j})}},createAudioDestinationNodeConstructor$1=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_(_e),tt=c(_e,j,et),nt=et?e(b):null;super($,!1,tt,nt),this._isNodeOfNativeOfflineAudioContext=et,this._nativeAudioDestinationNode=tt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount($){if(this._isNodeOfNativeOfflineAudioContext)throw o();if($>this._nativeAudioDestinationNode.maxChannelCount)throw s();this._nativeAudioDestinationNode.channelCount=$}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode($){if(this._isNodeOfNativeOfflineAudioContext)throw o();this._nativeAudioDestinationNode.channelCountMode=$}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer$1=a=>{const e=new WeakMap,s=async(o,c)=>{const d=c.destination;return e.set(c,d),await a(o,c,d),d};return{render(o,c){const d=e.get(c);return d!==void 0?Promise.resolve(d):s(o,c)}}},createAudioListenerFactory$1=(a,e,s,o,c,d,_,b)=>(k,$)=>{const j=$.listener,_e=()=>{const ct=new Float32Array(1),ut=e($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),at=_($);let ht=!1,pt=[0,0,-1,0,1,0],Et=[0,0,0];const gt=()=>{if(ht)return;ht=!0;const vt=o($,256,9,0);vt.onaudioprocess=({inputBuffer:At})=>{const St=[d(At,ct,0),d(At,ct,1),d(At,ct,2),d(At,ct,3),d(At,ct,4),d(At,ct,5)];St.some((Dt,xt)=>Dt!==pt[xt])&&(j.setOrientation(...St),pt=St);const Tt=[d(At,ct,6),d(At,ct,7),d(At,ct,8)];Tt.some((Dt,xt)=>Dt!==Et[xt])&&(j.setPosition(...Tt),Et=Tt)},ut.connect(vt)},ft=vt=>At=>{At!==pt[vt]&&(pt[vt]=At,j.setOrientation(...pt))},mt=vt=>At=>{At!==Et[vt]&&(Et[vt]=At,j.setPosition(...Et))},yt=(vt,At,St)=>{const Tt=s($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:At});Tt.connect(ut,0,vt),Tt.start(),Object.defineProperty(Tt.offset,"defaultValue",{get(){return At}});const Dt=a({context:k},at,Tt.offset,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1);return b(Dt,"value",xt=>()=>xt.call(Dt),xt=>Ct=>{try{xt.call(Dt,Ct)}catch(bt){if(bt.code!==9)throw bt}gt(),at&&St(Ct)}),Dt.cancelAndHoldAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelAndHoldAtTime),Dt.cancelScheduledValues=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelScheduledValues),Dt.exponentialRampToValueAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.exponentialRampToValueAtTime),Dt.linearRampToValueAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.linearRampToValueAtTime),Dt.setTargetAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setTargetAtTime),Dt.setValueAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueAtTime),Dt.setValueCurveAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueCurveAtTime),Dt};return{forwardX:yt(0,0,ft(0)),forwardY:yt(1,0,ft(1)),forwardZ:yt(2,-1,ft(2)),positionX:yt(6,0,mt(0)),positionY:yt(7,0,mt(1)),positionZ:yt(8,0,mt(2)),upX:yt(3,0,ft(3)),upY:yt(4,1,ft(4)),upZ:yt(5,0,ft(5))}},{forwardX:et,forwardY:tt,forwardZ:nt,positionX:it,positionY:rt,positionZ:st,upX:ot,upY:lt,upZ:dt}=j.forwardX===void 0?_e():j;return{get forwardX(){return et},get forwardY(){return tt},get forwardZ(){return nt},get positionX(){return it},get positionY(){return rt},get positionZ(){return st},get upX(){return ot},get upY(){return lt},get upZ(){return dt}}},isAudioNode$3=a=>"context"in a,isAudioNodeOutputConnection$1=a=>isAudioNode$3(a[0]),insertElementInSet$1=(a,e,s,o)=>{for(const c of a)if(s(c)){if(o)return!1;throw Error("The set contains at least one similar element.")}return a.add(e),!0},addActiveInputConnectionToAudioParam$1=(a,e,[s,o],c)=>{insertElementInSet$1(a,[e,s,o],d=>d[0]===e&&d[1]===s,c)},addPassiveInputConnectionToAudioParam$1=(a,[e,s,o],c)=>{const d=a.get(e);d===void 0?a.set(e,new Set([[s,o]])):insertElementInSet$1(d,[s,o],_=>_[0]===s,c)},isNativeAudioNodeFaker$1=a=>"inputs"in a,connectNativeAudioNodeToNativeAudioNode$1=(a,e,s,o)=>{if(isNativeAudioNodeFaker$1(e)){const c=e.inputs[o];return a.connect(c,s,0),[c,s,0]}return a.connect(e,s,o),[e,s,o]},deleteActiveInputConnection$1=(a,e,s)=>{for(const o of a)if(o[0]===e&&o[1]===s)return a.delete(o),o;return null},deleteActiveInputConnectionToAudioParam$1=(a,e,s)=>pickElementFromSet$1(a,o=>o[0]===e&&o[1]===s),deleteEventListenerOfAudioNode$1=(a,e)=>{if(!getEventListenersOfAudioNode$1(a).delete(e))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam$1=(a,e,s)=>{const o=getValueForKey$1(a,e),c=pickElementFromSet$1(o,d=>d[0]===s);return o.size===0&&a.delete(e),c},disconnectNativeAudioNodeFromNativeAudioNode$1=(a,e,s,o)=>{isNativeAudioNodeFaker$1(e)?a.disconnect(e.inputs[o],s,0):a.disconnect(e,s,o)},getNativeAudioNode$1=a=>getValueForKey$1(AUDIO_NODE_STORE$1,a),getNativeAudioParam$1=a=>getValueForKey$1(AUDIO_PARAM_STORE$1,a),isPartOfACycle$1=a=>CYCLE_COUNTERS$1.has(a),isPassiveAudioNode$1=a=>!ACTIVE_AUDIO_NODE_STORE$1.has(a),testAudioNodeDisconnectMethodSupport$1=(a,e)=>new Promise(s=>{if(e!==null)s(!0);else{const o=a.createScriptProcessor(256,1,1),c=a.createGain(),d=a.createBuffer(1,2,44100),_=d.getChannelData(0);_[0]=1,_[1]=1;const b=a.createBufferSource();b.buffer=d,b.loop=!0,b.connect(o).connect(a.destination),b.connect(c),b.disconnect(c),o.onaudioprocess=k=>{const $=k.inputBuffer.getChannelData(0);Array.prototype.some.call($,j=>j===1)?s(!0):s(!1),b.stop(),o.onaudioprocess=null,b.disconnect(o),o.disconnect(a.destination)},b.start()}}),visitEachAudioNodeOnce$1=(a,e)=>{const s=new Map;for(const o of a)for(const c of o){const d=s.get(c);s.set(c,d===void 0?1:d+1)}s.forEach((o,c)=>e(c,o))},isNativeAudioNode$3=a=>"context"in a,wrapAudioNodeDisconnectMethod$1=a=>{const e=new Map;a.connect=(s=>(o,c=0,d=0)=>{const _=isNativeAudioNode$3(o)?s(o,c,d):s(o,c),b=e.get(o);return b===void 0?e.set(o,[{input:d,output:c}]):b.every(k=>k.input!==d||k.output!==c)&&b.push({input:d,output:c}),_})(a.connect.bind(a)),a.disconnect=(s=>(o,c,d)=>{if(s.apply(a),o===void 0)e.clear();else if(typeof o=="number")for(const[_,b]of e){const k=b.filter($=>$.output!==o);k.length===0?e.delete(_):e.set(_,k)}else if(e.has(o))if(c===void 0)e.delete(o);else{const _=e.get(o);if(_!==void 0){const b=_.filter(k=>k.output!==c&&(k.input!==d||d===void 0));b.length===0?e.delete(o):e.set(o,b)}}for(const[_,b]of e)b.forEach(k=>{isNativeAudioNode$3(_)?a.connect(_,k.output,k.input):a.connect(_,k.output)})})(a.disconnect)},addConnectionToAudioParamOfAudioContext$1=(a,e,s,o)=>{const{activeInputs:c,passiveInputs:d}=getAudioParamConnections$1(e),{outputs:_}=getAudioNodeConnections$1(a),b=getEventListenersOfAudioNode$1(a),k=$=>{const j=getNativeAudioNode$1(a),_e=getNativeAudioParam$1(e);if($){const et=deletePassiveInputConnectionToAudioParam$1(d,a,s);addActiveInputConnectionToAudioParam$1(c,a,et,!1),!o&&!isPartOfACycle$1(a)&&j.connect(_e,s)}else{const et=deleteActiveInputConnectionToAudioParam$1(c,a,s);addPassiveInputConnectionToAudioParam$1(d,et,!1),!o&&!isPartOfACycle$1(a)&&j.disconnect(_e,s)}};return insertElementInSet$1(_,[e,s],$=>$[0]===e&&$[1]===s,!0)?(b.add(k),isActiveAudioNode$1(a)?addActiveInputConnectionToAudioParam$1(c,a,[s,k],!0):addPassiveInputConnectionToAudioParam$1(d,[a,s,k],!0),!0):!1},deleteInputConnectionOfAudioNode$1=(a,e,s,o)=>{const{activeInputs:c,passiveInputs:d}=getAudioNodeConnections$1(e),_=deleteActiveInputConnection$1(c[o],a,s);return _===null?[deletePassiveInputConnectionToAudioNode$1(d,a,s,o)[2],!1]:[_[2],!0]},deleteInputConnectionOfAudioParam$1=(a,e,s)=>{const{activeInputs:o,passiveInputs:c}=getAudioParamConnections$1(e),d=deleteActiveInputConnection$1(o,a,s);return d===null?[deletePassiveInputConnectionToAudioParam$1(c,a,s)[1],!1]:[d[2],!0]},deleteInputsOfAudioNode$1=(a,e,s,o,c)=>{const[d,_]=deleteInputConnectionOfAudioNode$1(a,s,o,c);if(d!==null&&(deleteEventListenerOfAudioNode$1(a,d),_&&!e&&!isPartOfACycle$1(a)&&disconnectNativeAudioNodeFromNativeAudioNode$1(getNativeAudioNode$1(a),getNativeAudioNode$1(s),o,c)),isActiveAudioNode$1(s)){const{activeInputs:b}=getAudioNodeConnections$1(s);setInternalStateToPassiveWhenNecessary$1(s,b)}},deleteInputsOfAudioParam$1=(a,e,s,o)=>{const[c,d]=deleteInputConnectionOfAudioParam$1(a,s,o);c!==null&&(deleteEventListenerOfAudioNode$1(a,c),d&&!e&&!isPartOfACycle$1(a)&&getNativeAudioNode$1(a).disconnect(getNativeAudioParam$1(s),o))},deleteAnyConnection$1=(a,e)=>{const s=getAudioNodeConnections$1(a),o=[];for(const c of s.outputs)isAudioNodeOutputConnection$1(c)?deleteInputsOfAudioNode$1(a,e,...c):deleteInputsOfAudioParam$1(a,e,...c),o.push(c[0]);return s.outputs.clear(),o},deleteConnectionAtOutput$1=(a,e,s)=>{const o=getAudioNodeConnections$1(a),c=[];for(const d of o.outputs)d[1]===s&&(isAudioNodeOutputConnection$1(d)?deleteInputsOfAudioNode$1(a,e,...d):deleteInputsOfAudioParam$1(a,e,...d),c.push(d[0]),o.outputs.delete(d));return c},deleteConnectionToDestination$1=(a,e,s,o,c)=>{const d=getAudioNodeConnections$1(a);return Array.from(d.outputs).filter(_=>_[0]===s&&(o===void 0||_[1]===o)&&(c===void 0||_[2]===c)).map(_=>(isAudioNodeOutputConnection$1(_)?deleteInputsOfAudioNode$1(a,e,..._):deleteInputsOfAudioParam$1(a,e,..._),d.outputs.delete(_),_[0]))},createAudioNodeConstructor$1=(a,e,s,o,c,d,_,b,k,$,j,_e,et,tt,nt,it)=>class extends ${constructor(st,ot,lt,dt){super(lt),this._context=st,this._nativeAudioNode=lt;const ct=j(st);_e(ct)&&s(testAudioNodeDisconnectMethodSupport$1,()=>testAudioNodeDisconnectMethodSupport$1(ct,it))!==!0&&wrapAudioNodeDisconnectMethod$1(lt),AUDIO_NODE_STORE$1.set(this,lt),EVENT_LISTENERS$1.set(this,new Set),st.state!=="closed"&&ot&&setInternalStateToActive$1(this),a(this,dt,lt)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(st){this._nativeAudioNode.channelCount=st}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(st){this._nativeAudioNode.channelCountMode=st}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(st){this._nativeAudioNode.channelInterpretation=st}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(st,ot=0,lt=0){if(ot<0||ot>=this._nativeAudioNode.numberOfOutputs)throw c();const dt=j(this._context),ct=nt(dt);if(et(st)||tt(st))throw d();if(isAudioNode$3(st)){const ht=getNativeAudioNode$1(st);try{const Et=connectNativeAudioNodeToNativeAudioNode$1(this._nativeAudioNode,ht,ot,lt),gt=isPassiveAudioNode$1(this);(ct||gt)&&this._nativeAudioNode.disconnect(...Et),this.context.state!=="closed"&&!gt&&isPassiveAudioNode$1(st)&&setInternalStateToActive$1(st)}catch(Et){throw Et.code===12?d():Et}if(e(this,st,ot,lt,ct)){const Et=k([this],st);visitEachAudioNodeOnce$1(Et,o(ct))}return st}const ut=getNativeAudioParam$1(st);if(ut.name==="playbackRate"&&ut.maxValue===1024)throw _();try{this._nativeAudioNode.connect(ut,ot),(ct||isPassiveAudioNode$1(this))&&this._nativeAudioNode.disconnect(ut,ot)}catch(ht){throw ht.code===12?d():ht}if(addConnectionToAudioParamOfAudioContext$1(this,st,ot,ct)){const ht=k([this],st);visitEachAudioNodeOnce$1(ht,o(ct))}}disconnect(st,ot,lt){let dt;const ct=j(this._context),ut=nt(ct);if(st===void 0)dt=deleteAnyConnection$1(this,ut);else if(typeof st=="number"){if(st<0||st>=this.numberOfOutputs)throw c();dt=deleteConnectionAtOutput$1(this,ut,st)}else{if(ot!==void 0&&(ot<0||ot>=this.numberOfOutputs)||isAudioNode$3(st)&<!==void 0&&(lt<0||lt>=st.numberOfInputs))throw c();if(dt=deleteConnectionToDestination$1(this,ut,st,ot,lt),dt.length===0)throw d()}for(const at of dt){const ht=k([this],at);visitEachAudioNodeOnce$1(ht,b)}}},createAudioParamFactory$1=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt=null,st=null)=>{const ot=new AutomationEventList$1(it.defaultValue),lt=nt?o(ot):null,dt={get defaultValue(){return it.defaultValue},get maxValue(){return rt===null?it.maxValue:rt},get minValue(){return st===null?it.minValue:st},get value(){return it.value},set value(ct){it.value=ct,dt.setValueAtTime(ct,tt.context.currentTime)},cancelAndHoldAtTime(ct){if(typeof it.cancelAndHoldAtTime=="function")lt===null&&ot.flush(tt.context.currentTime),ot.add(c(ct)),it.cancelAndHoldAtTime(ct);else{const ut=Array.from(ot).pop();lt===null&&ot.flush(tt.context.currentTime),ot.add(c(ct));const at=Array.from(ot).pop();it.cancelScheduledValues(ct),ut!==at&&at!==void 0&&(at.type==="exponentialRampToValue"?it.exponentialRampToValueAtTime(at.value,at.endTime):at.type==="linearRampToValue"?it.linearRampToValueAtTime(at.value,at.endTime):at.type==="setValue"?it.setValueAtTime(at.value,at.startTime):at.type==="setValueCurve"&&it.setValueCurveAtTime(at.values,at.startTime,at.duration))}return dt},cancelScheduledValues(ct){return lt===null&&ot.flush(tt.context.currentTime),ot.add(d(ct)),it.cancelScheduledValues(ct),dt},exponentialRampToValueAtTime(ct,ut){if(ct===0)throw new RangeError;if(!Number.isFinite(ut)||ut<0)throw new RangeError;return lt===null&&ot.flush(tt.context.currentTime),ot.add(_(ct,ut)),it.exponentialRampToValueAtTime(ct,ut),dt},linearRampToValueAtTime(ct,ut){return lt===null&&ot.flush(tt.context.currentTime),ot.add(b(ct,ut)),it.linearRampToValueAtTime(ct,ut),dt},setTargetAtTime(ct,ut,at){return lt===null&&ot.flush(tt.context.currentTime),ot.add(k(ct,ut,at)),it.setTargetAtTime(ct,ut,at),dt},setValueAtTime(ct,ut){return lt===null&&ot.flush(tt.context.currentTime),ot.add($(ct,ut)),it.setValueAtTime(ct,ut),dt},setValueCurveAtTime(ct,ut,at){const ht=ct instanceof Float32Array?ct:new Float32Array(ct);if(_e!==null&&_e.name==="webkitAudioContext"){const pt=ut+at,Et=tt.context.sampleRate,gt=Math.ceil(ut*Et),ft=Math.floor(pt*Et),mt=ft-gt,yt=new Float32Array(mt);for(let At=0;At({replay(e){for(const s of a)if(s.type==="exponentialRampToValue"){const{endTime:o,value:c}=s;e.exponentialRampToValueAtTime(c,o)}else if(s.type==="linearRampToValue"){const{endTime:o,value:c}=s;e.linearRampToValueAtTime(c,o)}else if(s.type==="setTarget"){const{startTime:o,target:c,timeConstant:d}=s;e.setTargetAtTime(c,o,d)}else if(s.type==="setValue"){const{startTime:o,value:c}=s;e.setValueAtTime(c,o)}else if(s.type==="setValueCurve"){const{duration:o,startTime:c,values:d}=s;e.setValueCurveAtTime(d,c,o)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap$1{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,s=null){return this._map.forEach((o,c)=>e.call(s,o,c,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$A={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor$1=(a,e,s,o,c,d,_,b,k,$,j,_e,et,tt)=>class extends e{constructor(it,rt,st){var ot;const lt=b(it),dt=k(lt),ct=j(_t(_t({},DEFAULT_OPTIONS$A),st));et(ct);const ut=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1.get(lt),at=ut==null?void 0:ut.get(rt),ht=dt||lt.state!=="closed"?lt:(ot=_(lt))!==null&&ot!==void 0?ot:lt,pt=c(ht,dt?null:it.baseLatency,$,rt,at,ct),Et=dt?o(rt,ct,at):null;super(it,!0,pt,Et);const gt=[];pt.parameters.forEach((mt,yt)=>{const vt=s(this,dt,mt);gt.push([yt,vt])}),this._nativeAudioWorkletNode=pt,this._onprocessorerror=null,this._parameters=new ReadOnlyMap$1(gt),dt&&a(lt,this);const{activeInputs:ft}=d(this);_e(pt,ft)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(it){const rt=typeof it=="function"?tt(this,it):null;this._nativeAudioWorkletNode.onprocessorerror=rt;const st=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=st!==null&&st===rt?it:st}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel$1(a,e,s,o,c){if(typeof a.copyFromChannel=="function")e[s].byteLength===0&&(e[s]=new Float32Array(128)),a.copyFromChannel(e[s],o,c);else{const d=a.getChannelData(o);if(e[s].byteLength===0)e[s]=d.slice(c,c+128);else{const _=new Float32Array(d.buffer,c*Float32Array.BYTES_PER_ELEMENT,128);e[s].set(_)}}}const copyToChannel$1=(a,e,s,o,c)=>{typeof a.copyToChannel=="function"?e[s].byteLength!==0&&a.copyToChannel(e[s],o,c):e[s].byteLength!==0&&a.getChannelData(o).set(e[s],c)},createNestedArrays$1=(a,e)=>{const s=[];for(let o=0;o{const s=getValueForKey$1(NODE_TO_PROCESSOR_MAPS$1,a),o=getNativeAudioNode$1(e);return getValueForKey$1(s,o)},processBuffer$1=async(a,e,s,o,c,d,_)=>{const b=e===null?Math.ceil(a.context.length/128)*128:e.length,k=o.channelCount*o.numberOfInputs,$=c.reduce((rt,st)=>rt+st,0),j=$===0?null:s.createBuffer($,b,s.sampleRate);if(d===void 0)throw new Error("Missing the processor constructor.");const _e=getAudioNodeConnections$1(a),et=await getAudioWorkletProcessor$1(s,a),tt=createNestedArrays$1(o.numberOfInputs,o.channelCount),nt=createNestedArrays$1(o.numberOfOutputs,c),it=Array.from(a.parameters.keys()).reduce((rt,st)=>wt(_t({},rt),{[st]:new Float32Array(128)}),{});for(let rt=0;rt0&&e!==null)for(let st=0;st{copyFromChannel$1(e,it,st,k+ot,rt)});for(let st=0;st_e.activeInputs[dt].size===0?[]:lt),ot=_(rt/s.sampleRate,s.sampleRate,()=>et.process(st,nt,it));if(j!==null)for(let lt=0,dt=0;lt(rt,st,ot)=>{const lt=new WeakMap;let dt=null;const ct=async(ut,at)=>{let ht=j(ut),pt=null;const Et=isOwnedByContext$1(ht,at),gt=Array.isArray(st.outputChannelCount)?st.outputChannelCount:Array.from(st.outputChannelCount);if(_e===null){const ft=gt.reduce((At,St)=>At+St,0),mt=c(at,{channelCount:Math.max(1,ft),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ft)}),yt=[];for(let At=0;At{const Ct=new et(Dt,Math.ceil(ut.context.length/128)*128,at.sampleRate),bt=[],$t=[];for(let Pt=0;Pt{const Ft=d(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Pt.value});return await tt(Ct,Pt,Ft.offset),Ft})),Rt=o(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,St+Tt)});for(let Pt=0;Ptnt(ut,Ct,Pt))),it(Ct)})(),at,st,gt,ot,$)}const ft=await dt,mt=s(at,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[yt,vt,At]=pt;ft!==null&&(mt.buffer=ft,mt.start(0)),mt.connect(yt);for(let St=0,Tt=0;Stclass extends nt{constructor(ct,ut){super(ct,ut),this._nativeContext=ct,this._audioWorklet=a===void 0?void 0:{addModule:(at,ht)=>a(this,at,ht)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new e(this)}createBiquadFilter(){return new c(this)}createBuffer(ct,ut,at){return new s({length:ut,numberOfChannels:ct,sampleRate:at})}createBufferSource(){return new o(this)}createChannelMerger(ct=6){return new d(this,{numberOfInputs:ct})}createChannelSplitter(ct=6){return new _(this,{numberOfOutputs:ct})}createConstantSource(){return new b(this)}createConvolver(){return new k(this)}createDelay(ct=1){return new j(this,{maxDelayTime:ct})}createDynamicsCompressor(){return new _e(this)}createGain(){return new et(this)}createIIRFilter(ct,ut){return new tt(this,{feedback:ut,feedforward:ct})}createOscillator(){return new it(this)}createPanner(){return new rt(this)}createPeriodicWave(ct,ut,at={disableNormalization:!1}){return new st(this,wt(_t({},at),{imag:ut,real:ct}))}createStereoPanner(){return new ot(this)}createWaveShaper(){return new lt(this)}decodeAudioData(ct,ut,at){return $(this._nativeContext,ct).then(ht=>(typeof ut=="function"&&ut(ht),ht),ht=>{throw typeof at=="function"&&at(ht),ht})}},DEFAULT_OPTIONS$z={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor$1=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$z),j),tt=c(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._Q=e(this,nt,tt.Q,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._detune=e(this,nt,tt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT$1),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT$1)),this._frequency=e(this,nt,tt.frequency,$.sampleRate/2,0),this._gain=e(this,nt,tt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT$1),MOST_NEGATIVE_SINGLE_FLOAT$1),this._nativeBiquadFilterNode=tt,b(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type($){this._nativeBiquadFilterNode.type=$}getFrequencyResponse($,j,_e){try{this._nativeBiquadFilterNode.getFrequencyResponse($,j,_e)}catch(et){throw et.code===11?o():et}if($.length!==j.length||j.length!==_e.length)throw o()}},createBiquadFilterNodeRendererFactory$1=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={Q:$.Q.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,detune:$.detune.value,frequency:$.frequency.value,gain:$.gain.value,type:$.type};$=e(k,_e)}return d.set(k,$),j?(await a(k,b.Q,$.Q),await a(k,b.detune,$.detune),await a(k,b.frequency,$.frequency),await a(k,b.gain,$.gain)):(await o(k,b.Q,$.Q),await o(k,b.detune,$.detune),await o(k,b.frequency,$.frequency),await o(k,b.gain,$.gain)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createCacheTestResult$1=(a,e)=>(s,o)=>{const c=e.get(s);if(c!==void 0)return c;const d=a.get(s);if(d!==void 0)return d;try{const _=o();return _ instanceof Promise?(a.set(s,_),_.catch(()=>!1).then(b=>(a.delete(s),e.set(s,b),b))):(e.set(s,_),_)}catch{return e.set(s,!1),!1}},DEFAULT_OPTIONS$y={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor$1=(a,e,s,o,c)=>class extends a{constructor(_,b){const k=o(_),$=_t(_t({},DEFAULT_OPTIONS$y),b),j=s(k,$),_e=c(k)?e():null;super(_,!1,j,_e)}},createChannelMergerNodeRendererFactory$1=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfInputs:b.numberOfInputs};b=a(_,$)}return o.set(_,b),await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},DEFAULT_OPTIONS$x={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor$1=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=o(b),j=d(_t(_t({},DEFAULT_OPTIONS$x),k)),_e=s($,j),et=c($)?e():null;super(b,!1,_e,et)}},createChannelSplitterNodeRendererFactory$1=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfOutputs:b.numberOfOutputs};b=a(_,$)}return o.set(_,b),await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createConnectAudioParam$1=a=>(e,s,o)=>a(s,e,o),createConnectMultipleOutputs$1=a=>(e,s,o=0,c=0)=>{const d=e[o];if(d===void 0)throw a();return isNativeAudioNode$3(s)?d.connect(s,0,c):d.connect(s,0)},createConnectedNativeAudioBufferSourceNodeFactory$1=a=>(e,s)=>{const o=a(e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),c=e.createBuffer(1,2,44100);return o.buffer=c,o.loop=!0,o.connect(s),o.start(),()=>{o.stop(),o.disconnect(s)}},DEFAULT_OPTIONS$w={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor$1=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$w),$),et=o(j,_e),tt=d(j),nt=tt?s():null;super(k,!1,et,nt),this._constantSourceNodeRenderer=nt,this._nativeConstantSourceNode=et,this._offset=e(this,tt,et.offset,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeConstantSourceNode.onended=$;const j=this._nativeConstantSourceNode.onended;this._onended=j!==null&&j===$?k:j}start(k=0){if(this._nativeConstantSourceNode.start(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive$1(this);const $=()=>{this._nativeConstantSourceNode.removeEventListener("ended",$),isActiveAudioNode$1(this)&&setInternalStateToPassive$1(this)};this._nativeConstantSourceNode.addEventListener("ended",$)}}stop(k=0){this._nativeConstantSourceNode.stop(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=k)}},createConstantSourceNodeRendererFactory$1=(a,e,s,o,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext$1(_e,j);if(!et){const tt={channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,offset:_e.offset.value};_e=e(j,tt),_!==null&&_e.start(_),b!==null&&_e.stop(b)}return d.set(j,_e),et?await a(j,$.offset,_e.offset):await o(j,$.offset,_e.offset),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},createConvertNumberToUnsignedLong$1=a=>e=>(a[0]=e,a[0]),DEFAULT_OPTIONS$v={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor$1=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=o(b),j=_t(_t({},DEFAULT_OPTIONS$v),k),_e=s($,j),tt=c($)?e():null;super(b,!1,_e,tt),this._isBufferNullified=!1,this._nativeConvolverNode=_e,j.buffer!==null&&d(this,j.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(b){if(this._nativeConvolverNode.buffer=b,b===null&&this._nativeConvolverNode.buffer!==null){const k=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=k.createBuffer(1,1,44100),this._isBufferNullified=!0,d(this,0)}else this._isBufferNullified=!1,d(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(b){this._nativeConvolverNode.normalize=b}},createConvolverNodeRendererFactory$1=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={buffer:b.buffer,channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,disableNormalization:!b.normalize};b=a(_,$)}return o.set(_,b),isNativeAudioNodeFaker$1(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createCreateNativeOfflineAudioContext$1=(a,e)=>(s,o,c)=>{if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new e(s,o,c)}catch(d){throw d.name==="SyntaxError"?a():d}},createDataCloneError$1=()=>new DOMException("","DataCloneError"),detachArrayBuffer$1=a=>{const{port1:e,port2:s}=new MessageChannel;return new Promise(o=>{const c=()=>{s.onmessage=null,e.close(),s.close(),o()};s.onmessage=()=>c();try{e.postMessage(a,[a])}finally{c()}})},createDecodeAudioData$1=(a,e,s,o,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_(_e)?_e:d(_e);if(c.has(et)){const nt=s();return Promise.reject(nt)}try{c.add(et)}catch{}return e(k,()=>k(tt))?tt.decodeAudioData(et).then(nt=>(detachArrayBuffer$1(et).catch(()=>{}),e(b,()=>b(nt))||j(nt),a.add(nt),nt)):new Promise((nt,it)=>{const rt=async()=>{try{await detachArrayBuffer$1(et)}catch{}},st=ot=>{it(ot),rt()};try{tt.decodeAudioData(et,ot=>{typeof ot.copyFromChannel!="function"&&($(ot),wrapAudioBufferGetChannelDataMethod$1(ot)),a.add(ot),rt().then(()=>nt(ot))},ot=>{st(ot===null?o():ot)})}catch(ot){st(ot)}})},createDecrementCycleCounter$1=(a,e,s,o,c,d,_,b)=>(k,$)=>{const j=e.get(k);if(j===void 0)throw new Error("Missing the expected cycle count.");const _e=d(k.context),et=b(_e);if(j===$){if(e.delete(k),!et&&_(k)){const tt=o(k),{outputs:nt}=s(k);for(const it of nt)if(isAudioNodeOutputConnection$1(it)){const rt=o(it[0]);a(tt,rt,it[1],it[2])}else{const rt=c(it[0]);tt.connect(rt,it[1])}}}else e.set(k,j-$)},DEFAULT_OPTIONS$u={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor$1=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$u),$),et=o(j,_e),tt=d(j),nt=tt?s(_e.maxDelayTime):null;super(k,!1,et,nt),this._delayTime=e(this,tt,et.delayTime),_(this,_e.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory$1=(a,e,s,o,c)=>d=>{const _=new WeakMap,b=async(k,$)=>{let j=s(k);const _e=isOwnedByContext$1(j,$);if(!_e){const et={channelCount:j.channelCount,channelCountMode:j.channelCountMode,channelInterpretation:j.channelInterpretation,delayTime:j.delayTime.value,maxDelayTime:d};j=e($,et)}return _.set($,j),_e?await a($,k.delayTime,j.delayTime):await o($,k.delayTime,j.delayTime),await c(k,$,j),j};return{render(k,$){const j=_.get($);return j!==void 0?Promise.resolve(j):b(k,$)}}},createDeleteActiveInputConnectionToAudioNode$1=a=>(e,s,o,c)=>a(e[c],d=>d[0]===s&&d[1]===o),createDeleteUnrenderedAudioWorkletNode$1=a=>(e,s)=>{a(e).delete(s)},isDelayNode$1=a=>"delayTime"in a,createDetectCycles$1=(a,e,s)=>function o(c,d){const _=isAudioNode$3(d)?d:s(a,d);if(isDelayNode$1(_))return[];if(c[0]===_)return[c];if(c.includes(_))return[];const{outputs:b}=e(_);return Array.from(b).map(k=>o([...c,_],k[0])).reduce((k,$)=>k.concat($),[])},getOutputAudioNodeAtIndex$1=(a,e,s)=>{const o=e[s];if(o===void 0)throw a();return o},createDisconnectMultipleOutputs$1=a=>(e,s=void 0,o=void 0,c=0)=>s===void 0?e.forEach(d=>d.disconnect()):typeof s=="number"?getOutputAudioNodeAtIndex$1(a,e,s).disconnect():isNativeAudioNode$3(s)?o===void 0?e.forEach(d=>d.disconnect(s)):c===void 0?getOutputAudioNodeAtIndex$1(a,e,o).disconnect(s,0):getOutputAudioNodeAtIndex$1(a,e,o).disconnect(s,0,c):o===void 0?e.forEach(d=>d.disconnect(s)):getOutputAudioNodeAtIndex$1(a,e,o).disconnect(s,0),DEFAULT_OPTIONS$t={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor$1=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$t),j),tt=o(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._attack=e(this,nt,tt.attack),this._knee=e(this,nt,tt.knee),this._nativeDynamicsCompressorNode=tt,this._ratio=e(this,nt,tt.ratio),this._release=e(this,nt,tt.release),this._threshold=e(this,nt,tt.threshold),b(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount($){const j=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=$,$>2)throw this._nativeDynamicsCompressorNode.channelCount=j,c()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode($){const j=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=$,$==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=j,c()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory$1=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={attack:$.attack.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,knee:$.knee.value,ratio:$.ratio.value,release:$.release.value,threshold:$.threshold.value};$=e(k,_e)}return d.set(k,$),j?(await a(k,b.attack,$.attack),await a(k,b.knee,$.knee),await a(k,b.ratio,$.ratio),await a(k,b.release,$.release),await a(k,b.threshold,$.threshold)):(await o(k,b.attack,$.attack),await o(k,b.knee,$.knee),await o(k,b.ratio,$.ratio),await o(k,b.release,$.release),await o(k,b.threshold,$.threshold)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createEncodingError$1=()=>new DOMException("","EncodingError"),createEvaluateSource$1=a=>e=>new Promise((s,o)=>{if(a===null){o(new SyntaxError);return}const c=a.document.head;if(c===null)o(new SyntaxError);else{const d=a.document.createElement("script"),_=new Blob([e],{type:"application/javascript"}),b=URL.createObjectURL(_),k=a.onerror,$=()=>{a.onerror=k,URL.revokeObjectURL(b)};a.onerror=(j,_e,et,tt,nt)=>{if(_e===b||_e===a.location.href&&et===1&&tt===1)return $(),o(nt),!1;if(k!==null)return k(j,_e,et,tt,nt)},d.onerror=()=>{$(),o(new SyntaxError)},d.onload=()=>{$(),s()},d.src=b,d.type="module",c.appendChild(d)}}),createEventTargetConstructor$1=a=>class{constructor(s){this._nativeEventTarget=s,this._listeners=new WeakMap}addEventListener(s,o,c){if(o!==null){let d=this._listeners.get(o);d===void 0&&(d=a(this,o),typeof o=="function"&&this._listeners.set(o,d)),this._nativeEventTarget.addEventListener(s,d,c)}}dispatchEvent(s){return this._nativeEventTarget.dispatchEvent(s)}removeEventListener(s,o,c){const d=o===null?void 0:this._listeners.get(o);this._nativeEventTarget.removeEventListener(s,d===void 0?null:d,c)}},createExposeCurrentFrameAndCurrentTime$1=a=>(e,s,o)=>{Object.defineProperties(a,{currentFrame:{configurable:!0,get(){return Math.round(e*s)}},currentTime:{configurable:!0,get(){return e}}});try{return o()}finally{a!==null&&(delete a.currentFrame,delete a.currentTime)}},createFetchSource$1=a=>async e=>{try{const s=await fetch(e);if(s.ok)return[await s.text(),s.url]}catch{}throw a()},DEFAULT_OPTIONS$s={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor$1=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$s),k),_e=o($,j),et=d($),tt=et?s():null;super(b,!1,_e,tt),this._gain=e(this,et,_e.gain,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1)}get gain(){return this._gain}},createGainNodeRendererFactory$1=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,gain:$.gain.value};$=e(k,_e)}return d.set(k,$),j?await a(k,b.gain,$.gain):await o(k,b.gain,$.gain),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createGetActiveAudioWorkletNodeInputs$1=(a,e)=>s=>e(a,s),createGetAudioNodeRenderer$1=a=>e=>{const s=a(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return s.renderer},createGetAudioNodeTailTime$1=a=>e=>{var s;return(s=a.get(e))!==null&&s!==void 0?s:0},createGetAudioParamRenderer$1=a=>e=>{const s=a(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return s.renderer},createGetBackupOfflineAudioContext$1=a=>e=>a.get(e),createInvalidStateError$1=()=>new DOMException("","InvalidStateError"),createGetNativeContext$1=a=>e=>{const s=a.get(e);if(s===void 0)throw createInvalidStateError$1();return s},createGetOrCreateBackupOfflineAudioContext$1=(a,e)=>s=>{let o=a.get(s);if(o!==void 0)return o;if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");return o=new e(1,1,44100),a.set(s,o),o},createGetUnrenderedAudioWorkletNodes$1=a=>e=>{const s=a.get(e);if(s===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return s},createInvalidAccessError$1=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod$1=a=>{a.getFrequencyResponse=(e=>(s,o,c)=>{if(s.length!==o.length||o.length!==c.length)throw createInvalidAccessError$1();return e.call(a,s,o,c)})(a.getFrequencyResponse)},DEFAULT_OPTIONS$r={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor$1=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=o(b),j=c($),_e=_t(_t({},DEFAULT_OPTIONS$r),k),et=e($,j?null:b.baseLatency,_e),tt=j?s(_e.feedback,_e.feedforward):null;super(b,!1,et,tt),wrapIIRFilterNodeGetFrequencyResponseMethod$1(et),this._nativeIIRFilterNode=et,d(this,1)}getFrequencyResponse(b,k,$){return this._nativeIIRFilterNode.getFrequencyResponse(b,k,$)}},filterBuffer$1=(a,e,s,o,c,d,_,b,k,$,j)=>{const _e=$.length;let et=b;for(let tt=0;tt<_e;tt+=1){let nt=s[0]*$[tt];for(let it=1;it{const c=s instanceof Float64Array?s:new Float64Array(s),d=o instanceof Float64Array?o:new Float64Array(o),_=c.length,b=d.length,k=Math.min(_,b);if(c[0]!==1){for(let nt=0;nt<_;nt+=1)d[nt]/=c[0];for(let nt=1;nt(d,_)=>{const b=new WeakMap;let k=null;const $=async(j,_e)=>{let et=null,tt=e(j);const nt=isOwnedByContext$1(tt,_e);if(_e.createIIRFilter===void 0?et=a(_e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):nt||(tt=_e.createIIRFilter(_,d)),b.set(_e,et===null?tt:et),et!==null){if(k===null){if(s===null)throw new Error("Missing the native OfflineAudioContext constructor.");const rt=new s(j.context.destination.channelCount,j.context.length,_e.sampleRate);k=(async()=>{await o(j,rt,rt.destination);const st=await c(rt);return filterFullBuffer$1(st,_e,d,_)})()}const it=await k;return et.buffer=it,et.start(0),et}return await o(j,_e,tt),tt};return{render(j,_e){const et=b.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},createIncrementCycleCounterFactory$1=(a,e,s,o,c,d)=>_=>(b,k)=>{const $=a.get(b);if($===void 0){if(!_&&d(b)){const j=o(b),{outputs:_e}=s(b);for(const et of _e)if(isAudioNodeOutputConnection$1(et)){const tt=o(et[0]);e(j,tt,et[1],et[2])}else{const tt=c(et[0]);j.disconnect(tt,et[1])}}a.set(b,k)}else a.set(b,$+k)},createIsAnyAudioContext$1=(a,e)=>s=>{const o=a.get(s);return e(o)||e(s)},createIsAnyAudioNode$1=(a,e)=>s=>a.has(s)||e(s),createIsAnyAudioParam$1=(a,e)=>s=>a.has(s)||e(s),createIsAnyOfflineAudioContext$1=(a,e)=>s=>{const o=a.get(s);return e(o)||e(s)},createIsNativeAudioContext$1=a=>e=>a!==null&&e instanceof a,createIsNativeAudioNode$1=a=>e=>a!==null&&typeof a.AudioNode=="function"&&e instanceof a.AudioNode,createIsNativeAudioParam$1=a=>e=>a!==null&&typeof a.AudioParam=="function"&&e instanceof a.AudioParam,createIsNativeContext$1=(a,e)=>s=>a(s)||e(s),createIsNativeOfflineAudioContext$1=a=>e=>a!==null&&e instanceof a,createIsSecureContext$1=a=>a!==null&&a.isSecureContext,createIsSupportedPromise=async(a,e,s,o,c,d,_,b,k,$,j,_e,et,tt,nt,it)=>a(e,e)&&a(s,s)&&a(c,c)&&a(d,d)&&a(b,b)&&a(k,k)&&a($,$)&&a(j,j)&&a(_e,_e)&&a(et,et)&&a(tt,tt)?(await Promise.all([a(o,o),a(_,_),a(nt,nt),a(it,it)])).every(st=>st):!1,createMediaElementAudioSourceNodeConstructor$1=(a,e,s,o)=>class extends a{constructor(d,_){const b=s(d),k=e(b,_);if(o(b))throw TypeError();super(d,!0,k,null),this._nativeMediaElementAudioSourceNode=k}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$q={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor$1=(a,e,s,o)=>class extends a{constructor(d,_){const b=s(d);if(o(b))throw new TypeError;const k=_t(_t({},DEFAULT_OPTIONS$q),_),$=e(b,k);super(d,!1,$,null),this._nativeMediaStreamAudioDestinationNode=$}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor$1=(a,e,s,o)=>class extends a{constructor(d,_){const b=s(d),k=e(b,_);if(o(b))throw new TypeError;super(d,!0,k,null),this._nativeMediaStreamAudioSourceNode=k}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor$1=(a,e,s)=>class extends a{constructor(c,d){const _=s(c),b=e(_,d);super(c,!0,b,null)}},createMinimalBaseAudioContextConstructor$1=(a,e,s,o,c,d)=>class extends s{constructor(b,k){super(b),this._nativeContext=b,CONTEXT_STORE$1.set(this,b),o(b)&&c.set(b,new Set),this._destination=new a(this,k),this._listener=e(this,b),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(b){const k=typeof b=="function"?d(this,b):null;this._nativeContext.onstatechange=k;const $=this._nativeContext.onstatechange;this._onstatechange=$!==null&&$===k?b:$}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport$1=a=>{const e=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const s=a.decodeAudioData(e.buffer,()=>{});return s===void 0?!1:(s.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections$1=(a,e)=>(s,o,c)=>{const d=new Set;return s.connect=(_=>(b,k=0,$=0)=>{const j=d.size===0;if(e(b))return _.call(s,b,k,$),a(d,[b,k,$],_e=>_e[0]===b&&_e[1]===k&&_e[2]===$,!0),j&&o(),b;_.call(s,b,k),a(d,[b,k],_e=>_e[0]===b&&_e[1]===k,!0),j&&o()})(s.connect),s.disconnect=(_=>(b,k,$)=>{const j=d.size>0;if(b===void 0)_.apply(s),d.clear();else if(typeof b=="number"){_.call(s,b);for(const et of d)et[1]===b&&d.delete(et)}else{e(b)?_.call(s,b,k,$):_.call(s,b,k);for(const et of d)et[0]===b&&(k===void 0||et[1]===k)&&($===void 0||et[2]===$)&&d.delete(et)}const _e=d.size===0;j&&_e&&c()})(s.disconnect),s},assignNativeAudioNodeOption$1=(a,e,s)=>{const o=e[s];o!==void 0&&o!==a[s]&&(a[s]=o)},assignNativeAudioNodeOptions$1=(a,e)=>{assignNativeAudioNodeOption$1(a,e,"channelCount"),assignNativeAudioNodeOption$1(a,e,"channelCountMode"),assignNativeAudioNodeOption$1(a,e,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport$1=a=>typeof a.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod$1=a=>{a.getFloatTimeDomainData=e=>{const s=new Uint8Array(e.length);a.getByteTimeDomainData(s);const o=Math.max(s.length,a.fftSize);for(let c=0;c(s,o)=>{const c=s.createAnalyser();if(assignNativeAudioNodeOptions$1(c,o),!(o.maxDecibels>o.minDecibels))throw e();return assignNativeAudioNodeOption$1(c,o,"fftSize"),assignNativeAudioNodeOption$1(c,o,"maxDecibels"),assignNativeAudioNodeOption$1(c,o,"minDecibels"),assignNativeAudioNodeOption$1(c,o,"smoothingTimeConstant"),a(testAnalyserNodeGetFloatTimeDomainDataMethodSupport$1,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport$1(c))||wrapAnalyserNodeGetFloatTimeDomainDataMethod$1(c),c},createNativeAudioBufferConstructor$1=a=>a===null?null:a.hasOwnProperty("AudioBuffer")?a.AudioBuffer:null,assignNativeAudioNodeAudioParamValue$1=(a,e,s)=>{const o=e[s];o!==void 0&&o!==a[s].value&&(a[s].value=o)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls$1=a=>{a.start=(e=>{let s=!1;return(o=0,c=0,d)=>{if(s)throw createInvalidStateError$1();e.call(a,o,c,d),s=!0}})(a.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1=a=>{a.start=(e=>(s=0,o=0,c)=>{if(typeof c=="number"&&c<0||o<0||s<0)throw new RangeError("The parameters can't be negative.");e.call(a,s,o,c)})(a.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1=a=>{a.stop=(e=>(s=0)=>{if(s<0)throw new RangeError("The parameter can't be negative.");e.call(a,s)})(a.stop)},createNativeAudioBufferSourceNodeFactory$1=(a,e,s,o,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_e.createBufferSource();return assignNativeAudioNodeOptions$1(tt,et),assignNativeAudioNodeAudioParamValue$1(tt,et,"playbackRate"),assignNativeAudioNodeOption$1(tt,et,"buffer"),assignNativeAudioNodeOption$1(tt,et,"loop"),assignNativeAudioNodeOption$1(tt,et,"loopEnd"),assignNativeAudioNodeOption$1(tt,et,"loopStart"),e(s,()=>s(_e))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls$1(tt),e(o,()=>o(_e))||k(tt),e(c,()=>c(_e))||$(tt,_e),e(d,()=>d(_e))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1(tt),e(_,()=>_(_e))||j(tt,_e),e(b,()=>b(_e))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1(tt),a(_e,tt),tt},createNativeAudioContextConstructor$1=a=>a===null?null:a.hasOwnProperty("AudioContext")?a.AudioContext:a.hasOwnProperty("webkitAudioContext")?a.webkitAudioContext:null,createNativeAudioDestinationNodeFactory$1=(a,e)=>(s,o,c)=>{const d=s.destination;if(d.channelCount!==o)try{d.channelCount=o}catch{}c&&d.channelCountMode!=="explicit"&&(d.channelCountMode="explicit"),d.maxChannelCount===0&&Object.defineProperty(d,"maxChannelCount",{value:o});const _=a(s,{channelCount:o,channelCountMode:d.channelCountMode,channelInterpretation:d.channelInterpretation,gain:1});return e(_,"channelCount",b=>()=>b.call(_),b=>k=>{b.call(_,k);try{d.channelCount=k}catch($){if(k>d.maxChannelCount)throw $}}),e(_,"channelCountMode",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelCountMode=k}),e(_,"channelInterpretation",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelInterpretation=k}),Object.defineProperty(_,"maxChannelCount",{get:()=>d.maxChannelCount}),_.connect(d),_},createNativeAudioWorkletNodeConstructor$1=a=>a===null?null:a.hasOwnProperty("AudioWorkletNode")?a.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions$1=a=>{const{port1:e}=new MessageChannel;try{e.postMessage(a)}finally{e.close()}},createNativeAudioWorkletNodeFactory$1=(a,e,s,o,c)=>(d,_,b,k,$,j)=>{if(b!==null)try{const _e=new b(d,k,j),et=new Map;let tt=null;if(Object.defineProperties(_e,{channelCount:{get:()=>j.channelCount,set:()=>{throw a()}},channelCountMode:{get:()=>"explicit",set:()=>{throw a()}},onprocessorerror:{get:()=>tt,set:nt=>{typeof tt=="function"&&_e.removeEventListener("processorerror",tt),tt=typeof nt=="function"?nt:null,typeof tt=="function"&&_e.addEventListener("processorerror",tt)}}}),_e.addEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=typeof it[1]=="function"?it[1]:typeof it[1]=="object"&&it[1]!==null&&typeof it[1].handleEvent=="function"?it[1].handleEvent:null;if(rt!==null){const st=et.get(it[1]);st!==void 0?it[1]=st:(it[1]=ot=>{ot.type==="error"?(Object.defineProperties(ot,{type:{value:"processorerror"}}),rt(ot)):rt(new ErrorEvent(it[0],_t({},ot)))},et.set(rt,it[1]))}}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,...it)})(_e.addEventListener),_e.removeEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=et.get(it[1]);rt!==void 0&&(et.delete(it[1]),it[1]=rt)}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,it[0],it[1],it[2])})(_e.removeEventListener),j.numberOfOutputs!==0){const nt=s(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return _e.connect(nt).connect(d.destination),c(_e,()=>nt.disconnect(),()=>nt.connect(d.destination))}return _e}catch(_e){throw _e.code===11?o():_e}if($===void 0)throw o();return testClonabilityOfAudioWorkletNodeOptions$1(j),e(d,_,$,j)},computeBufferSize$1=(a,e)=>a===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(a*e))))),cloneAudioWorkletNodeOptions$1=a=>new Promise((e,s)=>{const{port1:o,port2:c}=new MessageChannel;o.onmessage=({data:d})=>{o.close(),c.close(),e(d)},o.onmessageerror=({data:d})=>{o.close(),c.close(),s(d)},c.postMessage(a)}),createAudioWorkletProcessorPromise$1=async(a,e)=>{const s=await cloneAudioWorkletNodeOptions$1(e);return new a(s)},createAudioWorkletProcessor$1=(a,e,s,o)=>{let c=NODE_TO_PROCESSOR_MAPS$1.get(a);c===void 0&&(c=new WeakMap,NODE_TO_PROCESSOR_MAPS$1.set(a,c));const d=createAudioWorkletProcessorPromise$1(s,o);return c.set(e,d),d},createNativeAudioWorkletNodeFakerFactory$1=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt)=>{if(rt.numberOfInputs===0&&rt.numberOfOutputs===0)throw k();const st=Array.isArray(rt.outputChannelCount)?rt.outputChannelCount:Array.from(rt.outputChannelCount);if(st.some(Ot=>Ot<1))throw k();if(st.length!==rt.numberOfOutputs)throw e();if(rt.channelCountMode!=="explicit")throw k();const ot=rt.channelCount*rt.numberOfInputs,lt=st.reduce((Ot,Nt)=>Ot+Nt,0),dt=it.parameterDescriptors===void 0?0:it.parameterDescriptors.length;if(ot+dt>6||lt>6)throw k();const ct=new MessageChannel,ut=[],at=[];for(let Ot=0;OtOt===void 0?0:Ot},maxValue:{get:()=>Nt===void 0?MOST_POSITIVE_SINGLE_FLOAT$1:Nt},minValue:{get:()=>Vt===void 0?MOST_NEGATIVE_SINGLE_FLOAT$1:Vt}}),ht.push(Bt)}const pt=o(tt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,ot+dt)}),Et=computeBufferSize$1(nt,tt.sampleRate),gt=b(tt,Et,ot+dt,Math.max(1,lt)),ft=c(tt,{channelCount:Math.max(1,lt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,lt)}),mt=[];for(let Ot=0;Ot{const Vt=ht[Nt];return Vt.connect(pt,0,ot+Nt),Vt.start(0),[Ot,Vt.offset]}));pt.connect(gt);let vt=rt.channelInterpretation,At=null;const St=rt.numberOfOutputs===0?[gt]:mt,Tt={get bufferSize(){return Et},get channelCount(){return rt.channelCount},set channelCount(Ot){throw s()},get channelCountMode(){return rt.channelCountMode},set channelCountMode(Ot){throw s()},get channelInterpretation(){return vt},set channelInterpretation(Ot){for(const Nt of ut)Nt.channelInterpretation=Ot;vt=Ot},get context(){return gt.context},get inputs(){return ut},get numberOfInputs(){return rt.numberOfInputs},get numberOfOutputs(){return rt.numberOfOutputs},get onprocessorerror(){return At},set onprocessorerror(Ot){typeof At=="function"&&Tt.removeEventListener("processorerror",At),At=typeof Ot=="function"?Ot:null,typeof At=="function"&&Tt.addEventListener("processorerror",At)},get parameters(){return yt},get port(){return ct.port2},addEventListener(...Ot){return gt.addEventListener(Ot[0],Ot[1],Ot[2])},connect:a.bind(null,St),disconnect:$.bind(null,St),dispatchEvent(...Ot){return gt.dispatchEvent(Ot[0])},removeEventListener(...Ot){return gt.removeEventListener(Ot[0],Ot[1],Ot[2])}},Dt=new Map;ct.port1.addEventListener=(Ot=>(...Nt)=>{if(Nt[0]==="message"){const Vt=typeof Nt[1]=="function"?Nt[1]:typeof Nt[1]=="object"&&Nt[1]!==null&&typeof Nt[1].handleEvent=="function"?Nt[1].handleEvent:null;if(Vt!==null){const Lt=Dt.get(Nt[1]);Lt!==void 0?Nt[1]=Lt:(Nt[1]=Bt=>{j(tt.currentTime,tt.sampleRate,()=>Vt(Bt))},Dt.set(Vt,Nt[1]))}}return Ot.call(ct.port1,Nt[0],Nt[1],Nt[2])})(ct.port1.addEventListener),ct.port1.removeEventListener=(Ot=>(...Nt)=>{if(Nt[0]==="message"){const Vt=Dt.get(Nt[1]);Vt!==void 0&&(Dt.delete(Nt[1]),Nt[1]=Vt)}return Ot.call(ct.port1,Nt[0],Nt[1],Nt[2])})(ct.port1.removeEventListener);let xt=null;Object.defineProperty(ct.port1,"onmessage",{get:()=>xt,set:Ot=>{typeof xt=="function"&&ct.port1.removeEventListener("message",xt),xt=typeof Ot=="function"?Ot:null,typeof xt=="function"&&(ct.port1.addEventListener("message",xt),ct.port1.start())}}),it.prototype.port=ct.port1;let Ct=null;createAudioWorkletProcessor$1(tt,Tt,it,rt).then(Ot=>Ct=Ot);const $t=createNestedArrays$1(rt.numberOfInputs,rt.channelCount),It=createNestedArrays$1(rt.numberOfOutputs,st),Rt=it.parameterDescriptors===void 0?[]:it.parameterDescriptors.reduce((Ot,{name:Nt})=>wt(_t({},Ot),{[Nt]:new Float32Array(128)}),{});let Pt=!0;const Ft=()=>{rt.numberOfOutputs>0&>.disconnect(ft);for(let Ot=0,Nt=0;Ot{if(Ct!==null){const Vt=_e(Tt);for(let Lt=0;Lt{copyFromChannel$1(Ot,Rt,Bt,ot+Wt,Lt)});for(let Bt=0;Bt{if(Vt[Gt].size>0)return qt.set(Gt,Et/128),Qt;const Kt=qt.get(Gt);return Kt===void 0?[]:(Qt.every(Jt=>Jt.every(rn=>rn===0))&&(Kt===1?qt.delete(Gt):qt.set(Gt,Kt-1)),Qt)});Pt=j(tt.currentTime+Lt/tt.sampleRate,tt.sampleRate,()=>Ct.process(Bt,It,Rt));for(let Qt=0,Gt=0;Qtgt.connect(kt).connect(tt.destination),zt=()=>{gt.disconnect(kt),kt.disconnect()},Yt=()=>{if(Pt){zt(),rt.numberOfOutputs>0&>.connect(ft);for(let Ot=0,Nt=0;Ot{Pt&&(Ut(),Ft()),jt=!1};return Ut(),et(Tt,Yt,Xt)},createNativeBiquadFilterNode$1=(a,e)=>{const s=a.createBiquadFilter();return assignNativeAudioNodeOptions$1(s,e),assignNativeAudioNodeAudioParamValue$1(s,e,"Q"),assignNativeAudioNodeAudioParamValue$1(s,e,"detune"),assignNativeAudioNodeAudioParamValue$1(s,e,"frequency"),assignNativeAudioNodeAudioParamValue$1(s,e,"gain"),assignNativeAudioNodeOption$1(s,e,"type"),s},createNativeChannelMergerNodeFactory$1=(a,e)=>(s,o)=>{const c=s.createChannelMerger(o.numberOfInputs);return a!==null&&a.name==="webkitAudioContext"&&e(s,c),assignNativeAudioNodeOptions$1(c,o),c},wrapChannelSplitterNode$1=a=>{const e=a.numberOfOutputs;Object.defineProperty(a,"channelCount",{get:()=>e,set:s=>{if(s!==e)throw createInvalidStateError$1()}}),Object.defineProperty(a,"channelCountMode",{get:()=>"explicit",set:s=>{if(s!=="explicit")throw createInvalidStateError$1()}}),Object.defineProperty(a,"channelInterpretation",{get:()=>"discrete",set:s=>{if(s!=="discrete")throw createInvalidStateError$1()}})},createNativeChannelSplitterNode$1=(a,e)=>{const s=a.createChannelSplitter(e.numberOfOutputs);return assignNativeAudioNodeOptions$1(s,e),wrapChannelSplitterNode$1(s),s},createNativeConstantSourceNodeFactory$1=(a,e,s,o,c)=>(d,_)=>{if(d.createConstantSource===void 0)return s(d,_);const b=d.createConstantSource();return assignNativeAudioNodeOptions$1(b,_),assignNativeAudioNodeAudioParamValue$1(b,_,"offset"),e(o,()=>o(d))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1(b),e(c,()=>c(d))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1(b),a(d,b),b},interceptConnections$1=(a,e)=>(a.connect=e.connect.bind(e),a.disconnect=e.disconnect.bind(e),a),createNativeConstantSourceNodeFakerFactory$1=(a,e,s,o)=>(c,b)=>{var k=b,{offset:d}=k,_=sn(k,["offset"]);const $=c.createBuffer(1,2,44100),j=e(c,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),_e=s(c,wt(_t({},_),{gain:d})),et=$.getChannelData(0);et[0]=1,et[1]=1,j.buffer=$,j.loop=!0;const tt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(rt){_e.channelCount=rt},get channelCountMode(){return _e.channelCountMode},set channelCountMode(rt){_e.channelCountMode=rt},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(rt){_e.channelInterpretation=rt},get context(){return _e.context},get inputs(){return[]},get numberOfInputs(){return j.numberOfInputs},get numberOfOutputs(){return _e.numberOfOutputs},get offset(){return _e.gain},get onended(){return j.onended},set onended(rt){j.onended=rt},addEventListener(...rt){return j.addEventListener(rt[0],rt[1],rt[2])},dispatchEvent(...rt){return j.dispatchEvent(rt[0])},removeEventListener(...rt){return j.removeEventListener(rt[0],rt[1],rt[2])},start(rt=0){j.start.call(j,rt)},stop(rt=0){j.stop.call(j,rt)}},nt=()=>j.connect(_e),it=()=>j.disconnect(_e);return a(c,j),o(interceptConnections$1(tt,_e),nt,it)},createNativeConvolverNodeFactory$1=(a,e)=>(s,o)=>{const c=s.createConvolver();if(assignNativeAudioNodeOptions$1(c,o),o.disableNormalization===c.normalize&&(c.normalize=!o.disableNormalization),assignNativeAudioNodeOption$1(c,o,"buffer"),o.channelCount>2||(e(c,"channelCount",d=>()=>d.call(c),d=>_=>{if(_>2)throw a();return d.call(c,_)}),o.channelCountMode==="max"))throw a();return e(c,"channelCountMode",d=>()=>d.call(c),d=>_=>{if(_==="max")throw a();return d.call(c,_)}),c},createNativeDelayNode$1=(a,e)=>{const s=a.createDelay(e.maxDelayTime);return assignNativeAudioNodeOptions$1(s,e),assignNativeAudioNodeAudioParamValue$1(s,e,"delayTime"),s},createNativeDynamicsCompressorNodeFactory$1=a=>(e,s)=>{const o=e.createDynamicsCompressor();if(assignNativeAudioNodeOptions$1(o,s),s.channelCount>2||s.channelCountMode==="max")throw a();return assignNativeAudioNodeAudioParamValue$1(o,s,"attack"),assignNativeAudioNodeAudioParamValue$1(o,s,"knee"),assignNativeAudioNodeAudioParamValue$1(o,s,"ratio"),assignNativeAudioNodeAudioParamValue$1(o,s,"release"),assignNativeAudioNodeAudioParamValue$1(o,s,"threshold"),o},createNativeGainNode$1=(a,e)=>{const s=a.createGain();return assignNativeAudioNodeOptions$1(s,e),assignNativeAudioNodeAudioParamValue$1(s,e,"gain"),s},createNativeIIRFilterNodeFactory$1=a=>(e,s,o)=>{if(e.createIIRFilter===void 0)return a(e,s,o);const c=e.createIIRFilter(o.feedforward,o.feedback);return assignNativeAudioNodeOptions$1(c,o),c};function divide$1(a,e){const s=e[0]*e[0]+e[1]*e[1];return[(a[0]*e[0]+a[1]*e[1])/s,(a[1]*e[0]-a[0]*e[1])/s]}function multiply$1(a,e){return[a[0]*e[0]-a[1]*e[1],a[0]*e[1]+a[1]*e[0]]}function evaluatePolynomial$1(a,e){let s=[0,0];for(let o=a.length-1;o>=0;o-=1)s=multiply$1(s,e),s[0]+=a[o];return s}const createNativeIIRFilterNodeFakerFactory$1=(a,e,s,o)=>(c,d,{channelCount:_,channelCountMode:b,channelInterpretation:k,feedback:$,feedforward:j})=>{const _e=computeBufferSize$1(d,c.sampleRate),et=$ instanceof Float64Array?$:new Float64Array($),tt=j instanceof Float64Array?j:new Float64Array(j),nt=et.length,it=tt.length,rt=Math.min(nt,it);if(nt===0||nt>20)throw o();if(et[0]===0)throw e();if(it===0||it>20)throw o();if(tt[0]===0)throw e();if(et[0]!==1){for(let ht=0;ht{const pt=ht.inputBuffer,Et=ht.outputBuffer,gt=pt.numberOfChannels;for(let ft=0;fta.createMediaElementSource(e.mediaElement),createNativeMediaStreamAudioDestinationNode$1=(a,e)=>{const s=a.createMediaStreamDestination();return assignNativeAudioNodeOptions$1(s,e),s.numberOfOutputs===1&&Object.defineProperty(s,"numberOfOutputs",{get:()=>0}),s},createNativeMediaStreamAudioSourceNode$1=(a,{mediaStream:e})=>{const s=e.getAudioTracks();s.sort((d,_)=>d.id<_.id?-1:d.id>_.id?1:0);const o=s.slice(0,1),c=a.createMediaStreamSource(new MediaStream(o));return Object.defineProperty(c,"mediaStream",{value:e}),c},createNativeMediaStreamTrackAudioSourceNodeFactory$1=(a,e)=>(s,{mediaStreamTrack:o})=>{if(typeof s.createMediaStreamTrackSource=="function")return s.createMediaStreamTrackSource(o);const c=new MediaStream([o]),d=s.createMediaStreamSource(c);if(o.kind!=="audio")throw a();if(e(s))throw new TypeError;return d},createNativeOfflineAudioContextConstructor$1=a=>a===null?null:a.hasOwnProperty("OfflineAudioContext")?a.OfflineAudioContext:a.hasOwnProperty("webkitOfflineAudioContext")?a.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory$1=(a,e,s,o,c,d)=>(_,b)=>{const k=_.createOscillator();return assignNativeAudioNodeOptions$1(k,b),assignNativeAudioNodeAudioParamValue$1(k,b,"detune"),assignNativeAudioNodeAudioParamValue$1(k,b,"frequency"),b.periodicWave!==void 0?k.setPeriodicWave(b.periodicWave):assignNativeAudioNodeOption$1(k,b,"type"),e(s,()=>s(_))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1(k),e(o,()=>o(_))||d(k,_),e(c,()=>c(_))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1(k),a(_,k),k},createNativePannerNodeFactory$1=a=>(e,s)=>{const o=e.createPanner();return o.orientationX===void 0?a(e,s):(assignNativeAudioNodeOptions$1(o,s),assignNativeAudioNodeAudioParamValue$1(o,s,"orientationX"),assignNativeAudioNodeAudioParamValue$1(o,s,"orientationY"),assignNativeAudioNodeAudioParamValue$1(o,s,"orientationZ"),assignNativeAudioNodeAudioParamValue$1(o,s,"positionX"),assignNativeAudioNodeAudioParamValue$1(o,s,"positionY"),assignNativeAudioNodeAudioParamValue$1(o,s,"positionZ"),assignNativeAudioNodeOption$1(o,s,"coneInnerAngle"),assignNativeAudioNodeOption$1(o,s,"coneOuterAngle"),assignNativeAudioNodeOption$1(o,s,"coneOuterGain"),assignNativeAudioNodeOption$1(o,s,"distanceModel"),assignNativeAudioNodeOption$1(o,s,"maxDistance"),assignNativeAudioNodeOption$1(o,s,"panningModel"),assignNativeAudioNodeOption$1(o,s,"refDistance"),assignNativeAudioNodeOption$1(o,s,"rolloffFactor"),o)},createNativePannerNodeFakerFactory$1=(a,e,s,o,c,d,_,b,k,$)=>(j,Et)=>{var gt=Et,{coneInnerAngle:_e,coneOuterAngle:et,coneOuterGain:tt,distanceModel:nt,maxDistance:it,orientationX:rt,orientationY:st,orientationZ:ot,panningModel:lt,positionX:dt,positionY:ct,positionZ:ut,refDistance:at,rolloffFactor:ht}=gt,pt=sn(gt,["coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","orientationX","orientationY","orientationZ","panningModel","positionX","positionY","positionZ","refDistance","rolloffFactor"]);const ft=j.createPanner();if(pt.channelCount>2||pt.channelCountMode==="max")throw _();assignNativeAudioNodeOptions$1(ft,pt);const mt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},yt=s(j,wt(_t({},mt),{channelInterpretation:"speakers",numberOfInputs:6})),vt=o(j,wt(_t({},pt),{gain:1})),At=o(j,wt(_t({},mt),{gain:1})),St=o(j,wt(_t({},mt),{gain:0})),Tt=o(j,wt(_t({},mt),{gain:0})),Dt=o(j,wt(_t({},mt),{gain:0})),xt=o(j,wt(_t({},mt),{gain:0})),Ct=o(j,wt(_t({},mt),{gain:0})),bt=c(j,256,6,1),$t=d(j,wt(_t({},mt),{curve:new Float32Array([1,1]),oversample:"none"}));let It=[rt,st,ot],Rt=[dt,ct,ut];const Pt=new Float32Array(1);bt.onaudioprocess=({inputBuffer:kt})=>{const Ut=[k(kt,Pt,0),k(kt,Pt,1),k(kt,Pt,2)];Ut.some((Yt,Xt)=>Yt!==It[Xt])&&(ft.setOrientation(...Ut),It=Ut);const zt=[k(kt,Pt,3),k(kt,Pt,4),k(kt,Pt,5)];zt.some((Yt,Xt)=>Yt!==Rt[Xt])&&(ft.setPosition(...zt),Rt=zt)},Object.defineProperty(St.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Tt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Dt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(xt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ct.gain,"defaultValue",{get:()=>0});const Ft={get bufferSize(){},get channelCount(){return ft.channelCount},set channelCount(kt){if(kt>2)throw _();vt.channelCount=kt,ft.channelCount=kt},get channelCountMode(){return ft.channelCountMode},set channelCountMode(kt){if(kt==="max")throw _();vt.channelCountMode=kt,ft.channelCountMode=kt},get channelInterpretation(){return ft.channelInterpretation},set channelInterpretation(kt){vt.channelInterpretation=kt,ft.channelInterpretation=kt},get coneInnerAngle(){return ft.coneInnerAngle},set coneInnerAngle(kt){ft.coneInnerAngle=kt},get coneOuterAngle(){return ft.coneOuterAngle},set coneOuterAngle(kt){ft.coneOuterAngle=kt},get coneOuterGain(){return ft.coneOuterGain},set coneOuterGain(kt){if(kt<0||kt>1)throw e();ft.coneOuterGain=kt},get context(){return ft.context},get distanceModel(){return ft.distanceModel},set distanceModel(kt){ft.distanceModel=kt},get inputs(){return[vt]},get maxDistance(){return ft.maxDistance},set maxDistance(kt){if(kt<0)throw new RangeError;ft.maxDistance=kt},get numberOfInputs(){return ft.numberOfInputs},get numberOfOutputs(){return ft.numberOfOutputs},get orientationX(){return At.gain},get orientationY(){return St.gain},get orientationZ(){return Tt.gain},get panningModel(){return ft.panningModel},set panningModel(kt){ft.panningModel=kt},get positionX(){return Dt.gain},get positionY(){return xt.gain},get positionZ(){return Ct.gain},get refDistance(){return ft.refDistance},set refDistance(kt){if(kt<0)throw new RangeError;ft.refDistance=kt},get rolloffFactor(){return ft.rolloffFactor},set rolloffFactor(kt){if(kt<0)throw new RangeError;ft.rolloffFactor=kt},addEventListener(...kt){return vt.addEventListener(kt[0],kt[1],kt[2])},dispatchEvent(...kt){return vt.dispatchEvent(kt[0])},removeEventListener(...kt){return vt.removeEventListener(kt[0],kt[1],kt[2])}};_e!==Ft.coneInnerAngle&&(Ft.coneInnerAngle=_e),et!==Ft.coneOuterAngle&&(Ft.coneOuterAngle=et),tt!==Ft.coneOuterGain&&(Ft.coneOuterGain=tt),nt!==Ft.distanceModel&&(Ft.distanceModel=nt),it!==Ft.maxDistance&&(Ft.maxDistance=it),rt!==Ft.orientationX.value&&(Ft.orientationX.value=rt),st!==Ft.orientationY.value&&(Ft.orientationY.value=st),ot!==Ft.orientationZ.value&&(Ft.orientationZ.value=ot),lt!==Ft.panningModel&&(Ft.panningModel=lt),dt!==Ft.positionX.value&&(Ft.positionX.value=dt),ct!==Ft.positionY.value&&(Ft.positionY.value=ct),ut!==Ft.positionZ.value&&(Ft.positionZ.value=ut),at!==Ft.refDistance&&(Ft.refDistance=at),ht!==Ft.rolloffFactor&&(Ft.rolloffFactor=ht),(It[0]!==1||It[1]!==0||It[2]!==0)&&ft.setOrientation(...It),(Rt[0]!==0||Rt[1]!==0||Rt[2]!==0)&&ft.setPosition(...Rt);const qt=()=>{vt.connect(ft),a(vt,$t,0,0),$t.connect(At).connect(yt,0,0),$t.connect(St).connect(yt,0,1),$t.connect(Tt).connect(yt,0,2),$t.connect(Dt).connect(yt,0,3),$t.connect(xt).connect(yt,0,4),$t.connect(Ct).connect(yt,0,5),yt.connect(bt).connect(j.destination)},jt=()=>{vt.disconnect(ft),b(vt,$t,0,0),$t.disconnect(At),At.disconnect(yt),$t.disconnect(St),St.disconnect(yt),$t.disconnect(Tt),Tt.disconnect(yt),$t.disconnect(Dt),Dt.disconnect(yt),$t.disconnect(xt),xt.disconnect(yt),$t.disconnect(Ct),Ct.disconnect(yt),yt.disconnect(bt),bt.disconnect(j.destination)};return $(interceptConnections$1(Ft,ft),qt,jt)},createNativePeriodicWaveFactory$1=a=>(e,{disableNormalization:s,imag:o,real:c})=>{const d=o instanceof Float32Array?o:new Float32Array(o),_=c instanceof Float32Array?c:new Float32Array(c),b=e.createPeriodicWave(_,d,{disableNormalization:s});if(Array.from(o).length<2)throw a();return b},createNativeScriptProcessorNode$1=(a,e,s,o)=>a.createScriptProcessor(e,s,o),createNativeStereoPannerNodeFactory$1=(a,e)=>(s,o)=>{const c=o.channelCountMode;if(c==="clamped-max")throw e();if(s.createStereoPanner===void 0)return a(s,o);const d=s.createStereoPanner();return assignNativeAudioNodeOptions$1(d,o),assignNativeAudioNodeAudioParamValue$1(d,o,"pan"),Object.defineProperty(d,"channelCountMode",{get:()=>c,set:_=>{if(_!==c)throw e()}}),d},createNativeStereoPannerNodeFakerFactory$1=(a,e,s,o,c,d)=>{const b=new Float32Array([1,1]),k=Math.PI/2,$={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},j=wt(_t({},$),{oversample:"none"}),_e=(nt,it,rt,st)=>{const ot=new Float32Array(16385),lt=new Float32Array(16385);for(let pt=0;pt<16385;pt+=1){const Et=pt/16384*k;ot[pt]=Math.cos(Et),lt[pt]=Math.sin(Et)}const dt=s(nt,wt(_t({},$),{gain:0})),ct=o(nt,wt(_t({},j),{curve:ot})),ut=o(nt,wt(_t({},j),{curve:b})),at=s(nt,wt(_t({},$),{gain:0})),ht=o(nt,wt(_t({},j),{curve:lt}));return{connectGraph(){it.connect(dt),it.connect(ut.inputs===void 0?ut:ut.inputs[0]),it.connect(at),ut.connect(rt),rt.connect(ct.inputs===void 0?ct:ct.inputs[0]),rt.connect(ht.inputs===void 0?ht:ht.inputs[0]),ct.connect(dt.gain),ht.connect(at.gain),dt.connect(st,0,0),at.connect(st,0,1)},disconnectGraph(){it.disconnect(dt),it.disconnect(ut.inputs===void 0?ut:ut.inputs[0]),it.disconnect(at),ut.disconnect(rt),rt.disconnect(ct.inputs===void 0?ct:ct.inputs[0]),rt.disconnect(ht.inputs===void 0?ht:ht.inputs[0]),ct.disconnect(dt.gain),ht.disconnect(at.gain),dt.disconnect(st,0,0),at.disconnect(st,0,1)}}},et=(nt,it,rt,st)=>{const ot=new Float32Array(16385),lt=new Float32Array(16385),dt=new Float32Array(16385),ct=new Float32Array(16385),ut=Math.floor(16385/2);for(let St=0;St<16385;St+=1)if(St>ut){const Tt=(St-ut)/(16384-ut)*k;ot[St]=Math.cos(Tt),lt[St]=Math.sin(Tt),dt[St]=0,ct[St]=1}else{const Tt=St/(16384-ut)*k;ot[St]=1,lt[St]=0,dt[St]=Math.cos(Tt),ct[St]=Math.sin(Tt)}const at=e(nt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),ht=s(nt,wt(_t({},$),{gain:0})),pt=o(nt,wt(_t({},j),{curve:ot})),Et=s(nt,wt(_t({},$),{gain:0})),gt=o(nt,wt(_t({},j),{curve:lt})),ft=o(nt,wt(_t({},j),{curve:b})),mt=s(nt,wt(_t({},$),{gain:0})),yt=o(nt,wt(_t({},j),{curve:dt})),vt=s(nt,wt(_t({},$),{gain:0})),At=o(nt,wt(_t({},j),{curve:ct}));return{connectGraph(){it.connect(at),it.connect(ft.inputs===void 0?ft:ft.inputs[0]),at.connect(ht,0),at.connect(Et,0),at.connect(mt,1),at.connect(vt,1),ft.connect(rt),rt.connect(pt.inputs===void 0?pt:pt.inputs[0]),rt.connect(gt.inputs===void 0?gt:gt.inputs[0]),rt.connect(yt.inputs===void 0?yt:yt.inputs[0]),rt.connect(At.inputs===void 0?At:At.inputs[0]),pt.connect(ht.gain),gt.connect(Et.gain),yt.connect(mt.gain),At.connect(vt.gain),ht.connect(st,0,0),mt.connect(st,0,0),Et.connect(st,0,1),vt.connect(st,0,1)},disconnectGraph(){it.disconnect(at),it.disconnect(ft.inputs===void 0?ft:ft.inputs[0]),at.disconnect(ht,0),at.disconnect(Et,0),at.disconnect(mt,1),at.disconnect(vt,1),ft.disconnect(rt),rt.disconnect(pt.inputs===void 0?pt:pt.inputs[0]),rt.disconnect(gt.inputs===void 0?gt:gt.inputs[0]),rt.disconnect(yt.inputs===void 0?yt:yt.inputs[0]),rt.disconnect(At.inputs===void 0?At:At.inputs[0]),pt.disconnect(ht.gain),gt.disconnect(Et.gain),yt.disconnect(mt.gain),At.disconnect(vt.gain),ht.disconnect(st,0,0),mt.disconnect(st,0,0),Et.disconnect(st,0,1),vt.disconnect(st,0,1)}}},tt=(nt,it,rt,st,ot)=>{if(it===1)return _e(nt,rt,st,ot);if(it===2)return et(nt,rt,st,ot);throw c()};return(nt,lt)=>{var dt=lt,{channelCount:it,channelCountMode:rt,pan:st}=dt,ot=sn(dt,["channelCount","channelCountMode","pan"]);if(rt==="max")throw c();const ct=a(nt,wt(_t({},ot),{channelCount:1,channelCountMode:rt,numberOfInputs:2})),ut=s(nt,wt(_t({},ot),{channelCount:it,channelCountMode:rt,gain:1})),at=s(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:st});let{connectGraph:ht,disconnectGraph:pt}=tt(nt,it,ut,at,ct);Object.defineProperty(at.gain,"defaultValue",{get:()=>0}),Object.defineProperty(at.gain,"maxValue",{get:()=>1}),Object.defineProperty(at.gain,"minValue",{get:()=>-1});const Et={get bufferSize(){},get channelCount(){return ut.channelCount},set channelCount(yt){ut.channelCount!==yt&&(gt&&pt(),{connectGraph:ht,disconnectGraph:pt}=tt(nt,yt,ut,at,ct),gt&&ht()),ut.channelCount=yt},get channelCountMode(){return ut.channelCountMode},set channelCountMode(yt){if(yt==="clamped-max"||yt==="max")throw c();ut.channelCountMode=yt},get channelInterpretation(){return ut.channelInterpretation},set channelInterpretation(yt){ut.channelInterpretation=yt},get context(){return ut.context},get inputs(){return[ut]},get numberOfInputs(){return ut.numberOfInputs},get numberOfOutputs(){return ut.numberOfOutputs},get pan(){return at.gain},addEventListener(...yt){return ut.addEventListener(yt[0],yt[1],yt[2])},dispatchEvent(...yt){return ut.dispatchEvent(yt[0])},removeEventListener(...yt){return ut.removeEventListener(yt[0],yt[1],yt[2])}};let gt=!1;const ft=()=>{ht(),gt=!0},mt=()=>{pt(),gt=!1};return d(interceptConnections$1(Et,ct),ft,mt)}},createNativeWaveShaperNodeFactory$1=(a,e,s,o,c,d,_)=>(b,k)=>{const $=b.createWaveShaper();if(d!==null&&d.name==="webkitAudioContext"&&b.createGain().gain.automationRate===void 0)return s(b,k);assignNativeAudioNodeOptions$1($,k);const j=k.curve===null||k.curve instanceof Float32Array?k.curve:new Float32Array(k.curve);if(j!==null&&j.length<2)throw e();assignNativeAudioNodeOption$1($,{curve:j},"curve"),assignNativeAudioNodeOption$1($,k,"oversample");let _e=null,et=!1;return _($,"curve",it=>()=>it.call($),it=>rt=>(it.call($,rt),et&&(o(rt)&&_e===null?_e=a(b,$):!o(rt)&&_e!==null&&(_e(),_e=null)),rt)),c($,()=>{et=!0,o($.curve)&&(_e=a(b,$))},()=>{et=!1,_e!==null&&(_e(),_e=null)})},createNativeWaveShaperNodeFakerFactory$1=(a,e,s,o,c)=>(d,$)=>{var j=$,{curve:_,oversample:b}=j,k=sn(j,["curve","oversample"]);const _e=d.createWaveShaper(),et=d.createWaveShaper();assignNativeAudioNodeOptions$1(_e,k),assignNativeAudioNodeOptions$1(et,k);const tt=s(d,wt(_t({},k),{gain:1})),nt=s(d,wt(_t({},k),{gain:-1})),it=s(d,wt(_t({},k),{gain:1})),rt=s(d,wt(_t({},k),{gain:-1}));let st=null,ot=!1,lt=null;const dt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(at){tt.channelCount=at,nt.channelCount=at,_e.channelCount=at,it.channelCount=at,et.channelCount=at,rt.channelCount=at},get channelCountMode(){return _e.channelCountMode},set channelCountMode(at){tt.channelCountMode=at,nt.channelCountMode=at,_e.channelCountMode=at,it.channelCountMode=at,et.channelCountMode=at,rt.channelCountMode=at},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(at){tt.channelInterpretation=at,nt.channelInterpretation=at,_e.channelInterpretation=at,it.channelInterpretation=at,et.channelInterpretation=at,rt.channelInterpretation=at},get context(){return _e.context},get curve(){return lt},set curve(at){if(at!==null&&at.length<2)throw e();if(at===null)_e.curve=at,et.curve=at;else{const ht=at.length,pt=new Float32Array(ht+2-ht%2),Et=new Float32Array(ht+2-ht%2);pt[0]=at[0],Et[0]=-at[ht-1];const gt=Math.ceil((ht+1)/2),ft=(ht+1)/2-1;for(let mt=1;mt{tt.connect(_e).connect(it),tt.connect(nt).connect(et).connect(rt).connect(it),ot=!0,o(lt)&&(st=a(d,tt))},ut=()=>{tt.disconnect(_e),_e.disconnect(it),tt.disconnect(nt),nt.disconnect(et),et.disconnect(rt),rt.disconnect(it),ot=!1,st!==null&&(st(),st=null)};return c(interceptConnections$1(dt,it),ct,ut)},createNotSupportedError$1=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$p={numberOfChannels:1},createOfflineAudioContextConstructor$1=(a,e,s,o,c)=>class extends a{constructor(_,b,k){let $;if(typeof _=="number"&&b!==void 0&&k!==void 0)$={length:b,numberOfChannels:_,sampleRate:k};else if(typeof _=="object")$=_;else throw new Error("The given parameters are not valid.");const{length:j,numberOfChannels:_e,sampleRate:et}=_t(_t({},DEFAULT_OPTIONS$p),$),tt=o(_e,j,et);e(testPromiseSupport$1,()=>testPromiseSupport$1(tt))||tt.addEventListener("statechange",(()=>{let nt=0;const it=rt=>{this._state==="running"&&(nt>0?(tt.removeEventListener("statechange",it),rt.stopImmediatePropagation(),this._waitForThePromiseToSettle(rt)):nt+=1)};return it})()),super(tt,_e),this._length=j,this._nativeOfflineAudioContext=tt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(s()):(this._state="running",c(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph$1(this)}))}_waitForThePromiseToSettle(_){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(_):setTimeout(()=>this._waitForThePromiseToSettle(_))}},DEFAULT_OPTIONS$o={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor$1=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$o),$),et=s(j,_e),tt=d(j),nt=tt?o():null,it=k.sampleRate/2;super(k,!1,et,nt),this._detune=e(this,tt,et.detune,153600,-153600),this._frequency=e(this,tt,et.frequency,it,-it),this._nativeOscillatorNode=et,this._onended=null,this._oscillatorNodeRenderer=nt,this._oscillatorNodeRenderer!==null&&_e.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=_e.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeOscillatorNode.onended=$;const j=this._nativeOscillatorNode.onended;this._onended=j!==null&&j===$?k:j}get type(){return this._nativeOscillatorNode.type}set type(k){this._nativeOscillatorNode.type=k,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(k){this._nativeOscillatorNode.setPeriodicWave(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=k)}start(k=0){if(this._nativeOscillatorNode.start(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive$1(this);const $=()=>{this._nativeOscillatorNode.removeEventListener("ended",$),isActiveAudioNode$1(this)&&setInternalStateToPassive$1(this)};this._nativeOscillatorNode.addEventListener("ended",$)}}stop(k=0){this._nativeOscillatorNode.stop(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=k)}},createOscillatorNodeRendererFactory$1=(a,e,s,o,c)=>()=>{const d=new WeakMap;let _=null,b=null,k=null;const $=async(j,_e)=>{let et=s(j);const tt=isOwnedByContext$1(et,_e);if(!tt){const nt={channelCount:et.channelCount,channelCountMode:et.channelCountMode,channelInterpretation:et.channelInterpretation,detune:et.detune.value,frequency:et.frequency.value,periodicWave:_===null?void 0:_,type:et.type};et=e(_e,nt),b!==null&&et.start(b),k!==null&&et.stop(k)}return d.set(_e,et),tt?(await a(_e,j.detune,et.detune),await a(_e,j.frequency,et.frequency)):(await o(_e,j.detune,et.detune),await o(_e,j.frequency,et.frequency)),await c(j,_e,et),et};return{set periodicWave(j){_=j},set start(j){b=j},set stop(j){k=j},render(j,_e){const et=d.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},DEFAULT_OPTIONS$n={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor$1=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$n),$),et=s(j,_e),tt=d(j),nt=tt?o():null;super(k,!1,et,nt),this._nativePannerNode=et,this._orientationX=e(this,tt,et.orientationX,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._orientationY=e(this,tt,et.orientationY,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._orientationZ=e(this,tt,et.orientationZ,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._positionX=e(this,tt,et.positionX,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._positionY=e(this,tt,et.positionY,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._positionZ=e(this,tt,et.positionZ,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),_(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(k){this._nativePannerNode.coneInnerAngle=k}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(k){this._nativePannerNode.coneOuterAngle=k}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(k){this._nativePannerNode.coneOuterGain=k}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(k){this._nativePannerNode.distanceModel=k}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(k){this._nativePannerNode.maxDistance=k}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(k){this._nativePannerNode.panningModel=k}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(k){this._nativePannerNode.refDistance=k}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(k){this._nativePannerNode.rolloffFactor=k}},createPannerNodeRendererFactory$1=(a,e,s,o,c,d,_,b,k,$)=>()=>{const j=new WeakMap;let _e=null;const et=async(tt,nt)=>{let it=null,rt=d(tt);const st={channelCount:rt.channelCount,channelCountMode:rt.channelCountMode,channelInterpretation:rt.channelInterpretation},ot=wt(_t({},st),{coneInnerAngle:rt.coneInnerAngle,coneOuterAngle:rt.coneOuterAngle,coneOuterGain:rt.coneOuterGain,distanceModel:rt.distanceModel,maxDistance:rt.maxDistance,panningModel:rt.panningModel,refDistance:rt.refDistance,rolloffFactor:rt.rolloffFactor}),lt=isOwnedByContext$1(rt,nt);if("bufferSize"in rt)it=o(nt,wt(_t({},st),{gain:1}));else if(!lt){const dt=wt(_t({},ot),{orientationX:rt.orientationX.value,orientationY:rt.orientationY.value,orientationZ:rt.orientationZ.value,positionX:rt.positionX.value,positionY:rt.positionY.value,positionZ:rt.positionZ.value});rt=c(nt,dt)}if(j.set(nt,it===null?rt:it),it!==null){if(_e===null){if(_===null)throw new Error("Missing the native OfflineAudioContext constructor.");const gt=new _(6,tt.context.length,nt.sampleRate),ft=e(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});ft.connect(gt.destination),_e=(async()=>{const mt=await Promise.all([tt.orientationX,tt.orientationY,tt.orientationZ,tt.positionX,tt.positionY,tt.positionZ].map(async(yt,vt)=>{const At=s(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:vt===0?1:0});return await b(gt,yt,At.offset),At}));for(let yt=0;yt<6;yt+=1)mt[yt].connect(ft,0,yt),mt[yt].start(0);return $(gt)})()}const dt=await _e,ct=o(nt,wt(_t({},st),{gain:1}));await k(tt,nt,ct);const ut=[];for(let gt=0;gtyt!==at[vt])||mt.some((yt,vt)=>yt!==ht[vt])){at=ft,ht=mt;const yt=gt/nt.sampleRate;pt.gain.setValueAtTime(0,yt),pt=o(nt,wt(_t({},st),{gain:0})),Et=c(nt,wt(_t({},ot),{orientationX:at[0],orientationY:at[1],orientationZ:at[2],positionX:ht[0],positionY:ht[1],positionZ:ht[2]})),pt.gain.setValueAtTime(1,yt),ct.connect(pt).connect(Et.inputs[0]),Et.connect(it)}}return it}return lt?(await a(nt,tt.orientationX,rt.orientationX),await a(nt,tt.orientationY,rt.orientationY),await a(nt,tt.orientationZ,rt.orientationZ),await a(nt,tt.positionX,rt.positionX),await a(nt,tt.positionY,rt.positionY),await a(nt,tt.positionZ,rt.positionZ)):(await b(nt,tt.orientationX,rt.orientationX),await b(nt,tt.orientationY,rt.orientationY),await b(nt,tt.orientationZ,rt.orientationZ),await b(nt,tt.positionX,rt.positionX),await b(nt,tt.positionY,rt.positionY),await b(nt,tt.positionZ,rt.positionZ)),isNativeAudioNodeFaker$1(rt)?await k(tt,nt,rt.inputs[0]):await k(tt,nt,rt),rt};return{render(tt,nt){const it=j.get(nt);return it!==void 0?Promise.resolve(it):et(tt,nt)}}},DEFAULT_OPTIONS$m={disableNormalization:!1},createPeriodicWaveConstructor$1=(a,e,s,o)=>class mr{constructor(d,_){const b=e(d),k=o(_t(_t({},DEFAULT_OPTIONS$m),_)),$=a(b,k);return s.add($),$}static[Symbol.hasInstance](d){return d!==null&&typeof d=="object"&&Object.getPrototypeOf(d)===mr.prototype||s.has(d)}},createRenderAutomation$1=(a,e)=>(s,o,c)=>(a(o).replay(c),e(o,s,c)),createRenderInputsOfAudioNode$1=(a,e,s)=>async(o,c,d)=>{const _=a(o);await Promise.all(_.activeInputs.map((b,k)=>Array.from(b).map(async([$,j])=>{const et=await e($).render($,c),tt=o.context.destination;!s($)&&(o!==tt||!s(o))&&et.connect(d,j,k)})).reduce((b,k)=>[...b,...k],[]))},createRenderInputsOfAudioParam$1=(a,e,s)=>async(o,c,d)=>{const _=e(o);await Promise.all(Array.from(_.activeInputs).map(async([b,k])=>{const j=await a(b).render(b,c);s(b)||j.connect(d,k)}))},createRenderNativeOfflineAudioContext$1=(a,e,s,o)=>c=>a(testPromiseSupport$1,()=>testPromiseSupport$1(c))?Promise.resolve(a(o,o)).then(d=>{if(!d){const _=s(c,512,0,1);c.oncomplete=()=>{_.onaudioprocess=null,_.disconnect()},_.onaudioprocess=()=>c.currentTime,_.connect(c.destination)}return c.startRendering()}):new Promise(d=>{const _=e(c,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});c.oncomplete=b=>{_.disconnect(),d(b.renderedBuffer)},_.connect(c.destination),c.startRendering()}),createSetActiveAudioWorkletNodeInputs$1=a=>(e,s)=>{a.set(e,s)},createSetAudioNodeTailTime$1=a=>(e,s)=>a.set(e,s),createStartRendering$1=(a,e,s,o,c,d,_,b)=>(k,$)=>s(k).render(k,$).then(()=>Promise.all(Array.from(o($)).map(j=>s(j).render(j,$)))).then(()=>c($)).then(j=>(typeof j.copyFromChannel!="function"?(_(j),wrapAudioBufferGetChannelDataMethod$1(j)):e(d,()=>d(j))||b(j),a.add(j),j)),DEFAULT_OPTIONS$l={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor$1=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$l),k),_e=s($,j),et=d($),tt=et?o():null;super(b,!1,_e,tt),this._pan=e(this,et,_e.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory$1=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,pan:$.pan.value};$=e(k,_e)}return d.set(k,$),j?await a(k,b.pan,$.pan):await o(k,b.pan,$.pan),isNativeAudioNodeFaker$1($)?await c(b,k,$.inputs[0]):await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createTestAudioBufferConstructorSupport$1=a=>()=>{if(a===null)return!1;try{new a({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioBufferCopyChannelMethodsSubarraySupport=a=>()=>{if(a===null)return!1;const s=new a(1,1,44100).createBuffer(1,1,44100);if(s.copyToChannel===void 0)return!0;const o=new Float32Array(2);try{s.copyFromChannel(o,0,0)}catch{return!1}return!0},createTestAudioContextCloseMethodSupport=a=>()=>{if(a===null)return!1;if(a.prototype!==void 0&&a.prototype.close!==void 0)return!0;const e=new a,s=e.close!==void 0;try{e.close()}catch{}return s},createTestAudioContextDecodeAudioDataMethodTypeErrorSupport=a=>()=>{if(a===null)return Promise.resolve(!1);const e=new a(1,1,44100);return new Promise(s=>{let o=!0;const c=_=>{o&&(o=!1,e.startRendering(),s(_ instanceof TypeError))};let d;try{d=e.decodeAudioData(null,()=>{},c)}catch(_){c(_)}d!==void 0&&d.catch(c)})},createTestAudioContextOptionsSupport=a=>()=>{if(a===null)return!1;let e;try{e=new a({latencyHint:"balanced"})}catch{return!1}return e.close(),!0},createTestAudioNodeConnectMethodSupport=a=>()=>{if(a===null)return!1;const s=new a(1,1,44100).createGain(),o=s.connect(s)===s;return s.disconnect(s),o},createTestAudioWorkletProcessorNoOutputsSupport=(a,e)=>async()=>{if(a===null)return!0;if(e===null)return!1;const s=new Blob(['let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),o=new MessageChannel,c=new e(1,128,44100),d=URL.createObjectURL(s);let _=!1;try{await c.audioWorklet.addModule(d);const b=new a(c,"a",{numberOfOutputs:0}),k=c.createOscillator();await new Promise($=>{b.port.onmessage=()=>$(),b.port.postMessage(o.port2,[o.port2])}),b.port.onmessage=()=>_=!0,k.connect(b),k.start(0),await c.startRendering(),_=await new Promise($=>{o.port1.onmessage=({data:j})=>$(j===1),o.port1.postMessage(0)})}catch{}finally{o.port1.close(),URL.revokeObjectURL(d)}return _},createTestAudioWorkletProcessorPostMessageSupport$1=(a,e)=>async()=>{if(a===null)return!0;if(e===null)return!1;const s=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),o=new e(1,128,44100),c=URL.createObjectURL(s);let d=!1,_=!1;try{await o.audioWorklet.addModule(c);const b=new a(o,"a",{numberOfOutputs:0}),k=o.createOscillator();b.port.onmessage=()=>d=!0,b.onprocessorerror=()=>_=!0,k.connect(b),k.start(0),await o.startRendering()}catch{}finally{URL.revokeObjectURL(c)}return d&&!_},createTestChannelMergerNodeChannelCountSupport=a=>()=>{if(a===null)return!1;const s=new a(1,1,44100).createChannelMerger();if(s.channelCountMode==="max")return!0;try{s.channelCount=2}catch{return!0}return!1},createTestConstantSourceNodeAccurateSchedulingSupport=a=>()=>{if(a===null)return!1;const e=new a(1,1,44100);return e.createConstantSource===void 0?!0:e.createConstantSource().offset.maxValue!==Number.POSITIVE_INFINITY},createTestConvolverNodeBufferReassignabilitySupport=a=>()=>{if(a===null)return!1;const e=new a(1,1,44100),s=e.createConvolver();s.buffer=e.createBuffer(1,1,e.sampleRate);try{s.buffer=e.createBuffer(1,1,e.sampleRate)}catch{return!1}return!0},createTestConvolverNodeChannelCountSupport=a=>()=>{if(a===null)return!1;const s=new a(1,1,44100).createConvolver();try{s.channelCount=1}catch{return!1}return!0},createTestIsSecureContextSupport=a=>()=>a!==null&&a.hasOwnProperty("isSecureContext"),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport=a=>()=>{if(a===null)return!1;const e=new a;try{return e.createMediaStreamSource(new MediaStream),!1}catch{return!0}finally{e.close()}},createTestOfflineAudioContextCurrentTimeSupport$1=(a,e)=>()=>{if(e===null)return Promise.resolve(!1);const s=new e(1,1,44100),o=a(s,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(c=>{s.oncomplete=()=>{o.disconnect(),c(s.currentTime!==0)},s.startRendering()})},createTestStereoPannerNodeDefaultValueSupport=a=>()=>{if(a===null)return Promise.resolve(!1);const e=new a(1,1,44100);if(e.createStereoPanner===void 0||e.createConstantSource===void 0)return Promise.resolve(!0);const s=e.createConstantSource(),o=e.createStereoPanner();return s.channelCount=1,s.offset.value=1,o.channelCount=1,s.start(),s.connect(o).connect(e.destination),e.startRendering().then(c=>c.getChannelData(0)[0]!==1)},createUnknownError$1=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS$k={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor$1=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$k),$),et=s(j,_e),nt=d(j)?o():null;super(k,!0,et,nt),this._isCurveNullified=!1,this._nativeWaveShaperNode=et,_(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(k){if(k===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(k.length<2)throw e();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=k}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(k){this._nativeWaveShaperNode.oversample=k}},createWaveShaperNodeRendererFactory$1=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,curve:b.curve,oversample:b.oversample};b=a(_,$)}return o.set(_,b),isNativeAudioNodeFaker$1(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createWindow$1=()=>typeof window=="undefined"?null:window,createWrapAudioBufferCopyChannelMethods$1=(a,e)=>s=>{s.copyFromChannel=(o,c,d=0)=>{const _=a(d),b=a(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=o.length;for(let _e=_<0?-_:0;_e+_{const _=a(d),b=a(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=o.length;for(let _e=_<0?-_:0;_e+_e=>{e.copyFromChannel=(s=>(o,c,d=0)=>{const _=a(d),b=a(c);if(_(o,c,d=0)=>{const _=a(d),b=a(c);if(_(e,s)=>{const o=s.createBuffer(1,1,44100);e.buffer===null&&(e.buffer=o),a(e,"buffer",c=>()=>{const d=c.call(e);return d===o?null:d},c=>d=>c.call(e,d===null?o:d))},createWrapChannelMergerNode$1=(a,e)=>(s,o)=>{o.channelCount=1,o.channelCountMode="explicit",Object.defineProperty(o,"channelCount",{get:()=>1,set:()=>{throw a()}}),Object.defineProperty(o,"channelCountMode",{get:()=>"explicit",set:()=>{throw a()}});const c=s.createBufferSource();e(o,()=>{const b=o.numberOfInputs;for(let k=0;kc.disconnect(o))},getFirstSample$1=(a,e,s)=>a.copyFromChannel===void 0?a.getChannelData(s)[0]:(a.copyFromChannel(e,s),e[0]),isDCCurve$1=a=>{if(a===null)return!1;const e=a.length;return e%2!==0?a[Math.floor(e/2)]!==0:a[e/2-1]+a[e/2]!==0},overwriteAccessors$1=(a,e,s,o)=>{let c=a;for(;!c.hasOwnProperty(e);)c=Object.getPrototypeOf(c);const{get:d,set:_}=Object.getOwnPropertyDescriptor(c,e);Object.defineProperty(a,e,{get:s(d),set:o(_)})},sanitizeAudioWorkletNodeOptions$1=a=>wt(_t({},a),{outputChannelCount:a.outputChannelCount!==void 0?a.outputChannelCount:a.numberOfInputs===1&&a.numberOfOutputs===1?[a.channelCount]:Array.from({length:a.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions$1=a=>wt(_t({},a),{channelCount:a.numberOfOutputs}),sanitizePeriodicWaveOptions$1=a=>{const{imag:e,real:s}=a;return e===void 0?s===void 0?wt(_t({},a),{imag:[0,0],real:[0,0]}):wt(_t({},a),{imag:Array.from(s,()=>0),real:s}):s===void 0?wt(_t({},a),{imag:e,real:Array.from(e,()=>0)}):wt(_t({},a),{imag:e,real:s})},setValueAtTimeUntilPossible$1=(a,e,s)=>{try{a.setValueAtTime(e,s)}catch(o){if(o.code!==9)throw o;setValueAtTimeUntilPossible$1(a,e,s+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport$1=a=>{const e=a.createBufferSource();e.start();try{e.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport$1=a=>{const e=a.createBufferSource(),s=a.createBuffer(1,1,44100);e.buffer=s;try{e.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport$1=a=>{const e=a.createBufferSource();e.start();try{e.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1=a=>{const e=a.createOscillator();try{e.start(-1)}catch(s){return s instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport$1=a=>{const e=a.createBuffer(1,1,44100),s=a.createBufferSource();s.buffer=e,s.start(),s.stop();try{return s.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1=a=>{const e=a.createOscillator();try{e.stop(-1)}catch(s){return s instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability$1=a=>{const{port1:e,port2:s}=new MessageChannel;try{e.postMessage(a)}finally{e.close(),s.close()}},testDomExceptionConstructorSupport=()=>{try{new DOMException}catch{return!1}return!0},testTransferablesSupport=()=>new Promise(a=>{const e=new ArrayBuffer(0),{port1:s,port2:o}=new MessageChannel;s.onmessage=({data:c})=>a(c!==null),o.postMessage(e,[e])}),wrapAudioBufferSourceNodeStartMethodOffsetClamping$1=a=>{a.start=(e=>(s=0,o=0,c)=>{const d=a.buffer,_=d===null?o:Math.min(d.duration,o);d!==null&&_>d.duration-.5/a.context.sampleRate?e.call(a,s,0,0):e.call(a,s,_,c)})(a.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls$1=(a,e)=>{const s=e.createGain();a.connect(s);const o=(c=>()=>{c.call(a,s),a.removeEventListener("ended",o)})(a.disconnect);a.addEventListener("ended",o),interceptConnections$1(a,s),a.stop=(c=>{let d=!1;return(_=0)=>{if(d)try{c.call(a,_)}catch{s.gain.setValueAtTime(0,_)}else c.call(a,_),d=!0}})(a.stop)},wrapEventListener$1=(a,e)=>s=>{const o={value:a};return Object.defineProperties(s,{currentTarget:o,target:o}),typeof e=="function"?e.call(a,s):e.handleEvent.call(a,s)},addActiveInputConnectionToAudioNode$1=createAddActiveInputConnectionToAudioNode$1(insertElementInSet$1),addPassiveInputConnectionToAudioNode$1=createAddPassiveInputConnectionToAudioNode$1(insertElementInSet$1),deleteActiveInputConnectionToAudioNode$1=createDeleteActiveInputConnectionToAudioNode$1(pickElementFromSet$1),audioNodeTailTimeStore$1=new WeakMap,getAudioNodeTailTime$1=createGetAudioNodeTailTime$1(audioNodeTailTimeStore$1),cacheTestResult$1=createCacheTestResult$1(new Map,new WeakMap),window$2=createWindow$1(),createNativeAnalyserNode$1=createNativeAnalyserNodeFactory$1(cacheTestResult$1,createIndexSizeError$1),getAudioNodeRenderer$1=createGetAudioNodeRenderer$1(getAudioNodeConnections$1),renderInputsOfAudioNode$1=createRenderInputsOfAudioNode$1(getAudioNodeConnections$1,getAudioNodeRenderer$1,isPartOfACycle$1),createAnalyserNodeRenderer$1=createAnalyserNodeRendererFactory$1(createNativeAnalyserNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),getNativeContext$1=createGetNativeContext$1(CONTEXT_STORE$1),nativeOfflineAudioContextConstructor$1=createNativeOfflineAudioContextConstructor$1(window$2),isNativeOfflineAudioContext$1=createIsNativeOfflineAudioContext$1(nativeOfflineAudioContextConstructor$1),audioParamAudioNodeStore$1=new WeakMap,eventTargetConstructor$1=createEventTargetConstructor$1(wrapEventListener$1),nativeAudioContextConstructor$1=createNativeAudioContextConstructor$1(window$2),isNativeAudioContext$1=createIsNativeAudioContext$1(nativeAudioContextConstructor$1),isNativeAudioNode$2=createIsNativeAudioNode$1(window$2),isNativeAudioParam$1=createIsNativeAudioParam$1(window$2),nativeAudioWorkletNodeConstructor$1=createNativeAudioWorkletNodeConstructor$1(window$2),audioNodeConstructor$1=createAudioNodeConstructor$1(createAddAudioNodeConnections$1(AUDIO_NODE_CONNECTIONS_STORE$1),createAddConnectionToAudioNode$1(addActiveInputConnectionToAudioNode$1,addPassiveInputConnectionToAudioNode$1,connectNativeAudioNodeToNativeAudioNode$1,deleteActiveInputConnectionToAudioNode$1,disconnectNativeAudioNodeFromNativeAudioNode$1,getAudioNodeConnections$1,getAudioNodeTailTime$1,getEventListenersOfAudioNode$1,getNativeAudioNode$1,insertElementInSet$1,isActiveAudioNode$1,isPartOfACycle$1,isPassiveAudioNode$1),cacheTestResult$1,createIncrementCycleCounterFactory$1(CYCLE_COUNTERS$1,disconnectNativeAudioNodeFromNativeAudioNode$1,getAudioNodeConnections$1,getNativeAudioNode$1,getNativeAudioParam$1,isActiveAudioNode$1),createIndexSizeError$1,createInvalidAccessError$1,createNotSupportedError$1,createDecrementCycleCounter$1(connectNativeAudioNodeToNativeAudioNode$1,CYCLE_COUNTERS$1,getAudioNodeConnections$1,getNativeAudioNode$1,getNativeAudioParam$1,getNativeContext$1,isActiveAudioNode$1,isNativeOfflineAudioContext$1),createDetectCycles$1(audioParamAudioNodeStore$1,getAudioNodeConnections$1,getValueForKey$1),eventTargetConstructor$1,getNativeContext$1,isNativeAudioContext$1,isNativeAudioNode$2,isNativeAudioParam$1,isNativeOfflineAudioContext$1,nativeAudioWorkletNodeConstructor$1),analyserNodeConstructor$1=createAnalyserNodeConstructor$1(audioNodeConstructor$1,createAnalyserNodeRenderer$1,createIndexSizeError$1,createNativeAnalyserNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),audioBufferStore$1=new WeakSet,nativeAudioBufferConstructor$1=createNativeAudioBufferConstructor$1(window$2),convertNumberToUnsignedLong$1=createConvertNumberToUnsignedLong$1(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods$1=createWrapAudioBufferCopyChannelMethods$1(convertNumberToUnsignedLong$1,createIndexSizeError$1),wrapAudioBufferCopyChannelMethodsOutOfBounds$1=createWrapAudioBufferCopyChannelMethodsOutOfBounds$1(convertNumberToUnsignedLong$1),audioBufferConstructor$1=createAudioBufferConstructor$1(audioBufferStore$1,cacheTestResult$1,createNotSupportedError$1,nativeAudioBufferConstructor$1,nativeOfflineAudioContextConstructor$1,createTestAudioBufferConstructorSupport$1(nativeAudioBufferConstructor$1),wrapAudioBufferCopyChannelMethods$1,wrapAudioBufferCopyChannelMethodsOutOfBounds$1),addSilentConnection$1=createAddSilentConnection$1(createNativeGainNode$1),renderInputsOfAudioParam$1=createRenderInputsOfAudioParam$1(getAudioNodeRenderer$1,getAudioParamConnections$1,isPartOfACycle$1),connectAudioParam$1=createConnectAudioParam$1(renderInputsOfAudioParam$1),createNativeAudioBufferSourceNode$1=createNativeAudioBufferSourceNodeFactory$1(addSilentConnection$1,cacheTestResult$1,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport$1,testAudioBufferSourceNodeStartMethodOffsetClampingSupport$1,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport$1,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport$1,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1,wrapAudioBufferSourceNodeStartMethodOffsetClamping$1,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer$1(overwriteAccessors$1),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls$1),renderAutomation$1=createRenderAutomation$1(createGetAudioParamRenderer$1(getAudioParamConnections$1),renderInputsOfAudioParam$1),createAudioBufferSourceNodeRenderer$1=createAudioBufferSourceNodeRendererFactory$1(connectAudioParam$1,createNativeAudioBufferSourceNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),createAudioParam$1=createAudioParamFactory$1(createAddAudioParamConnections$1(AUDIO_PARAM_CONNECTIONS_STORE$1),audioParamAudioNodeStore$1,AUDIO_PARAM_STORE$1,createAudioParamRenderer$1,createCancelAndHoldAutomationEvent$1,createCancelScheduledValuesAutomationEvent$1,createExponentialRampToValueAutomationEvent$1,createLinearRampToValueAutomationEvent$1,createSetTargetAutomationEvent$1,createSetValueAutomationEvent$1,createSetValueCurveAutomationEvent$1,nativeAudioContextConstructor$1,setValueAtTimeUntilPossible$1),audioBufferSourceNodeConstructor$1=createAudioBufferSourceNodeConstructor$1(audioNodeConstructor$1,createAudioBufferSourceNodeRenderer$1,createAudioParam$1,createInvalidStateError$1,createNativeAudioBufferSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,wrapEventListener$1),audioDestinationNodeConstructor$1=createAudioDestinationNodeConstructor$1(audioNodeConstructor$1,createAudioDestinationNodeRenderer$1,createIndexSizeError$1,createInvalidStateError$1,createNativeAudioDestinationNodeFactory$1(createNativeGainNode$1,overwriteAccessors$1),getNativeContext$1,isNativeOfflineAudioContext$1,renderInputsOfAudioNode$1),createBiquadFilterNodeRenderer$1=createBiquadFilterNodeRendererFactory$1(connectAudioParam$1,createNativeBiquadFilterNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),setAudioNodeTailTime$1=createSetAudioNodeTailTime$1(audioNodeTailTimeStore$1),biquadFilterNodeConstructor$1=createBiquadFilterNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createBiquadFilterNodeRenderer$1,createInvalidAccessError$1,createNativeBiquadFilterNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),monitorConnections$1=createMonitorConnections$1(insertElementInSet$1,isNativeAudioNode$2),wrapChannelMergerNode$1=createWrapChannelMergerNode$1(createInvalidStateError$1,monitorConnections$1),createNativeChannelMergerNode$1=createNativeChannelMergerNodeFactory$1(nativeAudioContextConstructor$1,wrapChannelMergerNode$1),createChannelMergerNodeRenderer$1=createChannelMergerNodeRendererFactory$1(createNativeChannelMergerNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),channelMergerNodeConstructor$1=createChannelMergerNodeConstructor$1(audioNodeConstructor$1,createChannelMergerNodeRenderer$1,createNativeChannelMergerNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),createChannelSplitterNodeRenderer$1=createChannelSplitterNodeRendererFactory$1(createNativeChannelSplitterNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),channelSplitterNodeConstructor$1=createChannelSplitterNodeConstructor$1(audioNodeConstructor$1,createChannelSplitterNodeRenderer$1,createNativeChannelSplitterNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,sanitizeChannelSplitterOptions$1),createNativeConstantSourceNodeFaker$1=createNativeConstantSourceNodeFakerFactory$1(addSilentConnection$1,createNativeAudioBufferSourceNode$1,createNativeGainNode$1,monitorConnections$1),createNativeConstantSourceNode$1=createNativeConstantSourceNodeFactory$1(addSilentConnection$1,cacheTestResult$1,createNativeConstantSourceNodeFaker$1,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1),createConstantSourceNodeRenderer$1=createConstantSourceNodeRendererFactory$1(connectAudioParam$1,createNativeConstantSourceNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),constantSourceNodeConstructor$1=createConstantSourceNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createConstantSourceNodeRenderer$1,createNativeConstantSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,wrapEventListener$1),createNativeConvolverNode$1=createNativeConvolverNodeFactory$1(createNotSupportedError$1,overwriteAccessors$1),createConvolverNodeRenderer$1=createConvolverNodeRendererFactory$1(createNativeConvolverNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),convolverNodeConstructor$1=createConvolverNodeConstructor$1(audioNodeConstructor$1,createConvolverNodeRenderer$1,createNativeConvolverNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createDelayNodeRenderer$1=createDelayNodeRendererFactory$1(connectAudioParam$1,createNativeDelayNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),delayNodeConstructor$1=createDelayNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createDelayNodeRenderer$1,createNativeDelayNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createNativeDynamicsCompressorNode$1=createNativeDynamicsCompressorNodeFactory$1(createNotSupportedError$1),createDynamicsCompressorNodeRenderer$1=createDynamicsCompressorNodeRendererFactory$1(connectAudioParam$1,createNativeDynamicsCompressorNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),dynamicsCompressorNodeConstructor$1=createDynamicsCompressorNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createDynamicsCompressorNodeRenderer$1,createNativeDynamicsCompressorNode$1,createNotSupportedError$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createGainNodeRenderer$1=createGainNodeRendererFactory$1(connectAudioParam$1,createNativeGainNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),gainNodeConstructor$1=createGainNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createGainNodeRenderer$1,createNativeGainNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),createNativeIIRFilterNodeFaker$1=createNativeIIRFilterNodeFakerFactory$1(createInvalidAccessError$1,createInvalidStateError$1,createNativeScriptProcessorNode$1,createNotSupportedError$1),renderNativeOfflineAudioContext$1=createRenderNativeOfflineAudioContext$1(cacheTestResult$1,createNativeGainNode$1,createNativeScriptProcessorNode$1,createTestOfflineAudioContextCurrentTimeSupport$1(createNativeGainNode$1,nativeOfflineAudioContextConstructor$1)),createIIRFilterNodeRenderer$1=createIIRFilterNodeRendererFactory$1(createNativeAudioBufferSourceNode$1,getNativeAudioNode$1,nativeOfflineAudioContextConstructor$1,renderInputsOfAudioNode$1,renderNativeOfflineAudioContext$1),createNativeIIRFilterNode$1=createNativeIIRFilterNodeFactory$1(createNativeIIRFilterNodeFaker$1),iIRFilterNodeConstructor$1=createIIRFilterNodeConstructor$1(audioNodeConstructor$1,createNativeIIRFilterNode$1,createIIRFilterNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createAudioListener$1=createAudioListenerFactory$1(createAudioParam$1,createNativeChannelMergerNode$1,createNativeConstantSourceNode$1,createNativeScriptProcessorNode$1,createNotSupportedError$1,getFirstSample$1,isNativeOfflineAudioContext$1,overwriteAccessors$1),unrenderedAudioWorkletNodeStore$1=new WeakMap,minimalBaseAudioContextConstructor$1=createMinimalBaseAudioContextConstructor$1(audioDestinationNodeConstructor$1,createAudioListener$1,eventTargetConstructor$1,isNativeOfflineAudioContext$1,unrenderedAudioWorkletNodeStore$1,wrapEventListener$1),createNativeOscillatorNode$1=createNativeOscillatorNodeFactory$1(addSilentConnection$1,cacheTestResult$1,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport$1,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls$1),createOscillatorNodeRenderer$1=createOscillatorNodeRendererFactory$1(connectAudioParam$1,createNativeOscillatorNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),oscillatorNodeConstructor$1=createOscillatorNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createNativeOscillatorNode$1,createOscillatorNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,wrapEventListener$1),createConnectedNativeAudioBufferSourceNode$1=createConnectedNativeAudioBufferSourceNodeFactory$1(createNativeAudioBufferSourceNode$1),createNativeWaveShaperNodeFaker$1=createNativeWaveShaperNodeFakerFactory$1(createConnectedNativeAudioBufferSourceNode$1,createInvalidStateError$1,createNativeGainNode$1,isDCCurve$1,monitorConnections$1),createNativeWaveShaperNode$1=createNativeWaveShaperNodeFactory$1(createConnectedNativeAudioBufferSourceNode$1,createInvalidStateError$1,createNativeWaveShaperNodeFaker$1,isDCCurve$1,monitorConnections$1,nativeAudioContextConstructor$1,overwriteAccessors$1),createNativePannerNodeFaker$1=createNativePannerNodeFakerFactory$1(connectNativeAudioNodeToNativeAudioNode$1,createInvalidStateError$1,createNativeChannelMergerNode$1,createNativeGainNode$1,createNativeScriptProcessorNode$1,createNativeWaveShaperNode$1,createNotSupportedError$1,disconnectNativeAudioNodeFromNativeAudioNode$1,getFirstSample$1,monitorConnections$1),createNativePannerNode$1=createNativePannerNodeFactory$1(createNativePannerNodeFaker$1),createPannerNodeRenderer$1=createPannerNodeRendererFactory$1(connectAudioParam$1,createNativeChannelMergerNode$1,createNativeConstantSourceNode$1,createNativeGainNode$1,createNativePannerNode$1,getNativeAudioNode$1,nativeOfflineAudioContextConstructor$1,renderAutomation$1,renderInputsOfAudioNode$1,renderNativeOfflineAudioContext$1),pannerNodeConstructor$1=createPannerNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createNativePannerNode$1,createPannerNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createNativePeriodicWave$1=createNativePeriodicWaveFactory$1(createIndexSizeError$1),periodicWaveConstructor$1=createPeriodicWaveConstructor$1(createNativePeriodicWave$1,getNativeContext$1,new WeakSet,sanitizePeriodicWaveOptions$1),nativeStereoPannerNodeFakerFactory$1=createNativeStereoPannerNodeFakerFactory$1(createNativeChannelMergerNode$1,createNativeChannelSplitterNode$1,createNativeGainNode$1,createNativeWaveShaperNode$1,createNotSupportedError$1,monitorConnections$1),createNativeStereoPannerNode$1=createNativeStereoPannerNodeFactory$1(nativeStereoPannerNodeFakerFactory$1,createNotSupportedError$1),createStereoPannerNodeRenderer$1=createStereoPannerNodeRendererFactory$1(connectAudioParam$1,createNativeStereoPannerNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),stereoPannerNodeConstructor$1=createStereoPannerNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createNativeStereoPannerNode$1,createStereoPannerNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1),createWaveShaperNodeRenderer$1=createWaveShaperNodeRendererFactory$1(createNativeWaveShaperNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),waveShaperNodeConstructor$1=createWaveShaperNodeConstructor$1(audioNodeConstructor$1,createInvalidStateError$1,createNativeWaveShaperNode$1,createWaveShaperNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),isSecureContext$1=createIsSecureContext$1(window$2),exposeCurrentFrameAndCurrentTime$1=createExposeCurrentFrameAndCurrentTime$1(window$2),backupOfflineAudioContextStore$1=new WeakMap,getOrCreateBackupOfflineAudioContext$1=createGetOrCreateBackupOfflineAudioContext$1(backupOfflineAudioContextStore$1,nativeOfflineAudioContextConstructor$1),addAudioWorkletModule$1=isSecureContext$1?createAddAudioWorkletModule$1(cacheTestResult$1,createNotSupportedError$1,createEvaluateSource$1(window$2),exposeCurrentFrameAndCurrentTime$1,createFetchSource$1(createAbortError$1),getNativeContext$1,getOrCreateBackupOfflineAudioContext$1,isNativeOfflineAudioContext$1,nativeAudioWorkletNodeConstructor$1,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport$1(nativeAudioWorkletNodeConstructor$1,nativeOfflineAudioContextConstructor$1),window$2):void 0,isNativeContext$1=createIsNativeContext$1(isNativeAudioContext$1,isNativeOfflineAudioContext$1),decodeAudioData$1=createDecodeAudioData$1(audioBufferStore$1,cacheTestResult$1,createDataCloneError$1,createEncodingError$1,new WeakSet,getNativeContext$1,isNativeContext$1,testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1,testPromiseSupport$1,wrapAudioBufferCopyChannelMethods$1,wrapAudioBufferCopyChannelMethodsOutOfBounds$1),baseAudioContextConstructor$1=createBaseAudioContextConstructor$1(addAudioWorkletModule$1,analyserNodeConstructor$1,audioBufferConstructor$1,audioBufferSourceNodeConstructor$1,biquadFilterNodeConstructor$1,channelMergerNodeConstructor$1,channelSplitterNodeConstructor$1,constantSourceNodeConstructor$1,convolverNodeConstructor$1,decodeAudioData$1,delayNodeConstructor$1,dynamicsCompressorNodeConstructor$1,gainNodeConstructor$1,iIRFilterNodeConstructor$1,minimalBaseAudioContextConstructor$1,oscillatorNodeConstructor$1,pannerNodeConstructor$1,periodicWaveConstructor$1,stereoPannerNodeConstructor$1,waveShaperNodeConstructor$1),mediaElementAudioSourceNodeConstructor$1=createMediaElementAudioSourceNodeConstructor$1(audioNodeConstructor$1,createNativeMediaElementAudioSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),mediaStreamAudioDestinationNodeConstructor$1=createMediaStreamAudioDestinationNodeConstructor$1(audioNodeConstructor$1,createNativeMediaStreamAudioDestinationNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),mediaStreamAudioSourceNodeConstructor$1=createMediaStreamAudioSourceNodeConstructor$1(audioNodeConstructor$1,createNativeMediaStreamAudioSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),createNativeMediaStreamTrackAudioSourceNode$1=createNativeMediaStreamTrackAudioSourceNodeFactory$1(createInvalidStateError$1,isNativeOfflineAudioContext$1),mediaStreamTrackAudioSourceNodeConstructor$1=createMediaStreamTrackAudioSourceNodeConstructor$1(audioNodeConstructor$1,createNativeMediaStreamTrackAudioSourceNode$1,getNativeContext$1),audioContextConstructor$1=createAudioContextConstructor$1(baseAudioContextConstructor$1,createInvalidStateError$1,createNotSupportedError$1,createUnknownError$1,mediaElementAudioSourceNodeConstructor$1,mediaStreamAudioDestinationNodeConstructor$1,mediaStreamAudioSourceNodeConstructor$1,mediaStreamTrackAudioSourceNodeConstructor$1,nativeAudioContextConstructor$1),getUnrenderedAudioWorkletNodes$1=createGetUnrenderedAudioWorkletNodes$1(unrenderedAudioWorkletNodeStore$1),addUnrenderedAudioWorkletNode$1=createAddUnrenderedAudioWorkletNode$1(getUnrenderedAudioWorkletNodes$1),connectMultipleOutputs$1=createConnectMultipleOutputs$1(createIndexSizeError$1),deleteUnrenderedAudioWorkletNode$1=createDeleteUnrenderedAudioWorkletNode$1(getUnrenderedAudioWorkletNodes$1),disconnectMultipleOutputs$1=createDisconnectMultipleOutputs$1(createIndexSizeError$1),activeAudioWorkletNodeInputsStore$1=new WeakMap,getActiveAudioWorkletNodeInputs$1=createGetActiveAudioWorkletNodeInputs$1(activeAudioWorkletNodeInputsStore$1,getValueForKey$1),createNativeAudioWorkletNodeFaker$1=createNativeAudioWorkletNodeFakerFactory$1(connectMultipleOutputs$1,createIndexSizeError$1,createInvalidStateError$1,createNativeChannelMergerNode$1,createNativeChannelSplitterNode$1,createNativeConstantSourceNode$1,createNativeGainNode$1,createNativeScriptProcessorNode$1,createNotSupportedError$1,disconnectMultipleOutputs$1,exposeCurrentFrameAndCurrentTime$1,getActiveAudioWorkletNodeInputs$1,monitorConnections$1),createNativeAudioWorkletNode$1=createNativeAudioWorkletNodeFactory$1(createInvalidStateError$1,createNativeAudioWorkletNodeFaker$1,createNativeGainNode$1,createNotSupportedError$1,monitorConnections$1),createAudioWorkletNodeRenderer$1=createAudioWorkletNodeRendererFactory$1(connectAudioParam$1,connectMultipleOutputs$1,createNativeAudioBufferSourceNode$1,createNativeChannelMergerNode$1,createNativeChannelSplitterNode$1,createNativeConstantSourceNode$1,createNativeGainNode$1,deleteUnrenderedAudioWorkletNode$1,disconnectMultipleOutputs$1,exposeCurrentFrameAndCurrentTime$1,getNativeAudioNode$1,nativeAudioWorkletNodeConstructor$1,nativeOfflineAudioContextConstructor$1,renderAutomation$1,renderInputsOfAudioNode$1,renderNativeOfflineAudioContext$1),getBackupOfflineAudioContext$1=createGetBackupOfflineAudioContext$1(backupOfflineAudioContextStore$1),setActiveAudioWorkletNodeInputs$1=createSetActiveAudioWorkletNodeInputs$1(activeAudioWorkletNodeInputsStore$1),audioWorkletNodeConstructor$1=isSecureContext$1?createAudioWorkletNodeConstructor$1(addUnrenderedAudioWorkletNode$1,audioNodeConstructor$1,createAudioParam$1,createAudioWorkletNodeRenderer$1,createNativeAudioWorkletNode$1,getAudioNodeConnections$1,getBackupOfflineAudioContext$1,getNativeContext$1,isNativeOfflineAudioContext$1,nativeAudioWorkletNodeConstructor$1,sanitizeAudioWorkletNodeOptions$1,setActiveAudioWorkletNodeInputs$1,testAudioWorkletNodeOptionsClonability$1,wrapEventListener$1):void 0,createNativeOfflineAudioContext$1=createCreateNativeOfflineAudioContext$1(createNotSupportedError$1,nativeOfflineAudioContextConstructor$1),startRendering$1=createStartRendering$1(audioBufferStore$1,cacheTestResult$1,getAudioNodeRenderer$1,getUnrenderedAudioWorkletNodes$1,renderNativeOfflineAudioContext$1,testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1,wrapAudioBufferCopyChannelMethods$1,wrapAudioBufferCopyChannelMethodsOutOfBounds$1),offlineAudioContextConstructor$1=createOfflineAudioContextConstructor$1(baseAudioContextConstructor$1,cacheTestResult$1,createInvalidStateError$1,createNativeOfflineAudioContext$1,startRendering$1),isAnyAudioContext$1=createIsAnyAudioContext$1(CONTEXT_STORE$1,isNativeAudioContext$1),isAnyAudioNode$1=createIsAnyAudioNode$1(AUDIO_NODE_STORE$1,isNativeAudioNode$2),isAnyAudioParam$1=createIsAnyAudioParam$1(AUDIO_PARAM_STORE$1,isNativeAudioParam$1),isAnyOfflineAudioContext$1=createIsAnyOfflineAudioContext$1(CONTEXT_STORE$1,isNativeOfflineAudioContext$1),isSupported=()=>createIsSupportedPromise(cacheTestResult$1,createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor$1),createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor$1),createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor$1),createTestAudioContextOptionsSupport(nativeAudioContextConstructor$1),createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor$1),createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor$1,nativeOfflineAudioContextConstructor$1),createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor$1),createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor$1),createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor$1),createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor$1),testDomExceptionConstructorSupport,createTestIsSecureContextSupport(window$2),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor$1),createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor$1),testTransferablesSupport);function assert$1(a,e){if(!a)throw new Error(e)}function assertRange$1(a,e,s=1/0){if(!(e<=a&&a<=s))throw new RangeError(`Value must be within [${e}, ${s}], got: ${a}`)}function assertContextRunning$1(a){!a.isOffline&&a.state!=="running"&&warn$1('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let defaultLogger$1=console;function setLogger(a){defaultLogger$1=a}function log$1(...a){defaultLogger$1.log(...a)}function warn$1(...a){defaultLogger$1.warn(...a)}var Debug=Object.freeze(Object.defineProperty({__proto__:null,assert:assert$1,assertRange:assertRange$1,assertContextRunning:assertContextRunning$1,setLogger,log:log$1,warn:warn$1},Symbol.toStringTag,{value:"Module"}));function isUndef$1(a){return typeof a=="undefined"}function isDefined$1(a){return!isUndef$1(a)}function isFunction$1(a){return typeof a=="function"}function isNumber$1(a){return typeof a=="number"}function isObject$1(a){return Object.prototype.toString.call(a)==="[object Object]"&&a.constructor===Object}function isBoolean$1(a){return typeof a=="boolean"}function isArray$1(a){return Array.isArray(a)}function isString$1(a){return typeof a=="string"}function isNote$2(a){return isString$1(a)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(a)}function createAudioContext$1(a){return new audioContextConstructor$1(a)}function createOfflineAudioContext$1(a,e,s){return new offlineAudioContextConstructor$1(a,e,s)}const theWindow$1=typeof self=="object"?self:null,hasAudioContext$1=theWindow$1&&(theWindow$1.hasOwnProperty("AudioContext")||theWindow$1.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode$1(a,e,s){return assert$1(isDefined$1(audioWorkletNodeConstructor$1),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor$1(a,e,s)}/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */function __decorate$1(a,e,s,o){var c=arguments.length,d=c<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,s):o,_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(a,e,s,o);else for(var b=a.length-1;b>=0;b--)(_=a[b])&&(d=(c<3?_(d):c>3?_(e,s,d):_(e,s))||d);return c>3&&d&&Object.defineProperty(e,s,d),d}function __awaiter$5(a,e,s,o){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(o.next(j))}catch(_e){_(_e)}}function k(j){try{$(o.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((o=o.apply(a,e||[])).next())})}class Ticker$1{constructor(e,s,o){this._callback=e,this._type=s,this._updateInterval=o,this._createClock()}_createWorker(){const e=new Blob([` - // the initial timeout time - let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)}; - // onmessage callback - self.onmessage = function(msg){ - timeoutTime = parseInt(msg.data); - }; - // the tick function which posts a message - // and schedules a new tick - function tick(){ - setTimeout(tick, timeoutTime); - self.postMessage('tick'); - } - // call tick initially - tick(); - `],{type:"text/javascript"}),s=URL.createObjectURL(e),o=new Worker(s);o.onmessage=this._callback.bind(this),this._worker=o}_createTimeout(){this._timeout=setTimeout(()=>{this._createTimeout(),this._callback()},this._updateInterval*1e3)}_createClock(){if(this._type==="worker")try{this._createWorker()}catch{this._type="timeout",this._createClock()}else this._type==="timeout"&&this._createTimeout()}_disposeClock(){this._timeout&&(clearTimeout(this._timeout),this._timeout=0),this._worker&&(this._worker.terminate(),this._worker.onmessage=null)}get updateInterval(){return this._updateInterval}set updateInterval(e){this._updateInterval=Math.max(e,128/44100),this._type==="worker"&&this._worker.postMessage(Math.max(e*1e3,1))}get type(){return this._type}set type(e){this._disposeClock(),this._type=e,this._createClock()}dispose(){this._disposeClock()}}function isAudioParam$1(a){return isAnyAudioParam$1(a)}function isAudioNode$2(a){return isAnyAudioNode$1(a)}function isOfflineAudioContext$1(a){return isAnyOfflineAudioContext$1(a)}function isAudioContext$1(a){return isAnyAudioContext$1(a)}function isAudioBuffer$1(a){return a instanceof AudioBuffer}function noCopy$1(a,e){return a==="value"||isAudioParam$1(e)||isAudioNode$2(e)||isAudioBuffer$1(e)}function deepMerge$1(a,...e){if(!e.length)return a;const s=e.shift();if(isObject$1(a)&&isObject$1(s))for(const o in s)noCopy$1(o,s[o])?a[o]=s[o]:isObject$1(s[o])?(a[o]||Object.assign(a,{[o]:{}}),deepMerge$1(a[o],s[o])):Object.assign(a,{[o]:s[o]});return deepMerge$1(a,...e)}function deepEquals$1(a,e){return a.length===e.length&&a.every((s,o)=>e[o]===s)}function optionsFromArguments$1(a,e,s=[],o){const c={},d=Array.from(e);if(isObject$1(d[0])&&o&&!Reflect.has(d[0],o)&&(Object.keys(d[0]).some(b=>Reflect.has(a,b))||(deepMerge$1(c,{[o]:d[0]}),s.splice(s.indexOf(o),1),d.shift())),d.length===1&&isObject$1(d[0]))deepMerge$1(c,d[0]);else for(let _=0;_{Reflect.has(a,s)&&delete a[s]}),a}/** - * Tone.js - * @author Yotam Mann - * @license http://opensource.org/licenses/MIT MIT License - * @copyright 2014-2019 Yotam Mann - */class Tone$2{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||theWindow$1&&this.toString()===theWindow$1.TONE_DEBUG_CLASS)&&log$1(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone$2.version=version$1;const EPSILON$1=1e-6;function GT$1(a,e){return a>e+EPSILON$1}function GTE$1(a,e){return GT$1(a,e)||EQ$1(a,e)}function LT$1(a,e){return a+EPSILON$1this.memory){const s=this.length-this.memory;this._timeline.splice(0,s)}return this}remove(e){const s=this._timeline.indexOf(e);return s!==-1&&this._timeline.splice(s,1),this}get(e,s="time"){const o=this._search(e,s);return o!==-1?this._timeline[o]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,s="time"){const o=this._search(e,s);return o+10&&this._timeline[s-1].time=0?this._timeline[o-1]:null}cancel(e){if(this._timeline.length>1){let s=this._search(e);if(s>=0)if(EQ$1(this._timeline[s].time,e)){for(let o=s;o>=0&&EQ$1(this._timeline[o].time,e);o--)s=o;this._timeline=this._timeline.slice(0,s)}else this._timeline=this._timeline.slice(0,s+1);else this._timeline=[]}else this._timeline.length===1&>E$1(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){const s=this._search(e);return s>=0&&(this._timeline=this._timeline.slice(s+1)),this}previousEvent(e){const s=this._timeline.indexOf(e);return s>0?this._timeline[s-1]:null}_search(e,s="time"){if(this._timeline.length===0)return-1;let o=0;const c=this._timeline.length;let d=c;if(c>0&&this._timeline[c-1][s]<=e)return c-1;for(;o=0&&this._timeline[o].time>=e;)o--;return this._iterate(s,o+1),this}forEachAtTime(e,s){const o=this._search(e);if(o!==-1&&EQ$1(this._timeline[o].time,e)){let c=o;for(let d=o;d>=0&&EQ$1(this._timeline[d].time,e);d--)c=d;this._iterate(d=>{s(d)},c,o)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext$1=[];function onContextInit$1(a){notifyNewContext$1.push(a)}function initializeContext$1(a){notifyNewContext$1.forEach(e=>e(a))}const notifyCloseContext$1=[];function onContextClose$1(a){notifyCloseContext$1.push(a)}function closeContext$1(a){notifyCloseContext$1.forEach(e=>e(a))}class Emitter$1 extends Tone$2{constructor(){super(...arguments),this.name="Emitter"}on(e,s){return e.split(/\W+/).forEach(c=>{isUndef$1(this._events)&&(this._events={}),this._events.hasOwnProperty(c)||(this._events[c]=[]),this._events[c].push(s)}),this}once(e,s){const o=(...c)=>{s(...c),this.off(e,o)};return this.on(e,o),this}off(e,s){return e.split(/\W+/).forEach(c=>{if(isUndef$1(this._events)&&(this._events={}),this._events.hasOwnProperty(e))if(isUndef$1(s))this._events[e]=[];else{const d=this._events[e];for(let _=d.length-1;_>=0;_--)d[_]===s&&d.splice(_,1)}}),this}emit(e,...s){if(this._events&&this._events.hasOwnProperty(e)){const o=this._events[e].slice(0);for(let c=0,d=o.length;c{const o=Object.getOwnPropertyDescriptor(Emitter$1.prototype,s);Object.defineProperty(e.prototype,s,o)})}dispose(){return super.dispose(),this._events=void 0,this}}class BaseContext$1 extends Emitter$1{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context$1 extends BaseContext$1{constructor(){super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline$1,this._timeoutIds=0,this._initialized=!1,this.isOffline=!1,this._workletModules=new Map;const e=optionsFromArguments$1(Context$1.getDefaults(),arguments,["context"]);e.context?this._context=e.context:this._context=createAudioContext$1({latencyHint:e.latencyHint}),this._ticker=new Ticker$1(this.emit.bind(this,"tick"),e.clockSource,e.updateInterval),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this._setLatencyHint(e.latencyHint),this.lookAhead=e.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext$1(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,s,o){return this._context.createBuffer(e,s,o)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,s){return this._context.createIIRFilter(e,s)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,s,o){return this._context.createPeriodicWave(e,s,o)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return assert$1(isAudioContext$1(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return assert$1(isAudioContext$1(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return assert$1(isAudioContext$1(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){assert$1(!this._initialized,"The listener cannot be set after initialization."),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){assert$1(!this._initialized,"The transport cannot be set after initialization."),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){assert$1(!this._initialized,"Draw cannot be set after initialization."),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){assert$1(!this._initialized,"The destination cannot be set after initialization."),this._destination=e}createAudioWorkletNode(e,s){return createAudioWorkletNode$1(this.rawContext,e,s)}addAudioWorkletModule(e,s){return __awaiter$5(this,void 0,void 0,function*(){assert$1(isDefined$1(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletModules.has(s)||this._workletModules.set(s,this.rawContext.audioWorklet.addModule(e)),yield this._workletModules.get(s)})}workletsAreReady(){return __awaiter$5(this,void 0,void 0,function*(){const e=[];this._workletModules.forEach(s=>e.push(s)),yield Promise.all(e)})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get latencyHint(){return this._latencyHint}_setLatencyHint(e){let s=0;if(this._latencyHint=e,isString$1(e))switch(e){case"interactive":s=.1;break;case"playback":s=.5;break;case"balanced":s=.25;break}this.lookAhead=s,this.updateInterval=s/2}get rawContext(){return this._context}now(){return this._context.currentTime+this.lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext$1(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter$5(this,void 0,void 0,function*(){isAudioContext$1(this._context)&&(yield this._context.close()),this._initialized&&closeContext$1(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{const s=this._context.createBuffer(1,128,this._context.sampleRate),o=s.getChannelData(0);for(let d=0;dthis._constants[e].disconnect()),this}_timeoutLoop(){const e=this.now();let s=this._timeouts.peek();for(;this._timeouts.length&&s&&s.time<=e;)s.callback(),this._timeouts.shift(),s=this._timeouts.peek()}setTimeout(e,s){this._timeoutIds++;const o=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:o+s}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(s=>{s.id===e&&this._timeouts.remove(s)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,s){const o=++this._timeoutIds,c=()=>{const d=this.now();this._timeouts.add({callback:()=>{e(),c()},id:o,time:d+s})};return c(),o}}class DummyContext$1 extends BaseContext$1{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,s,o){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,s){return{}}createPanner(){return{}}createPeriodicWave(e,s,o){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,s){return{}}get rawContext(){return{}}addAudioWorkletModule(e,s){return __awaiter$5(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,s){return 0}clearTimeout(e){return this}setInterval(e,s){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}}function readOnly$1(a,e){isArray$1(e)?e.forEach(s=>readOnly$1(a,s)):Object.defineProperty(a,e,{enumerable:!0,writable:!1})}function writable$1(a,e){isArray$1(e)?e.forEach(s=>writable$1(a,s)):Object.defineProperty(a,e,{writable:!0})}const noOp$1=()=>{};class ToneAudioBuffer$1 extends Tone$2{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp$1;const e=optionsFromArguments$1(ToneAudioBuffer$1.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=e.reverse,this.onload=e.onload,e.url&&isAudioBuffer$1(e.url)||e.url instanceof ToneAudioBuffer$1?this.set(e.url):isString$1(e.url)&&this.load(e.url).catch(e.onerror)}static getDefaults(){return{onerror:noOp$1,onload:noOp$1,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext$1().sampleRate}set(e){return e instanceof ToneAudioBuffer$1?e.loaded?this._buffer=e.get():e.onload=()=>{this.set(e),this.onload(this)}:this._buffer=e,this._reversed&&this._reverse(),this}get(){return this._buffer}load(e){return __awaiter$5(this,void 0,void 0,function*(){const s=ToneAudioBuffer$1.load(e).then(o=>{this.set(o),this.onload(this)});ToneAudioBuffer$1.downloads.push(s);try{yield s}finally{const o=ToneAudioBuffer$1.downloads.indexOf(s);ToneAudioBuffer$1.downloads.splice(o,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){const s=isArray$1(e)&&e[0].length>0,o=s?e.length:1,c=s?e[0].length:e.length,d=getContext$1(),_=d.createBuffer(o,c,d.sampleRate),b=!s&&o===1?[e]:e;for(let k=0;kc/o),this.fromArray(s)}return this}toArray(e){if(isNumber$1(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{const s=[];for(let o=0;o0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(e){return new ToneAudioBuffer$1().fromArray(e)}static fromUrl(e){return __awaiter$5(this,void 0,void 0,function*(){return yield new ToneAudioBuffer$1().load(e)})}static load(e){return __awaiter$5(this,void 0,void 0,function*(){const s=e.match(/\[([^\]\[]+\|.+)\]$/);if(s){const b=s[1].split("|");let k=b[0];for(const $ of b)if(ToneAudioBuffer$1.supportsType($)){k=$;break}e=e.replace(s[0],k)}const o=ToneAudioBuffer$1.baseUrl===""||ToneAudioBuffer$1.baseUrl.endsWith("/")?ToneAudioBuffer$1.baseUrl:ToneAudioBuffer$1.baseUrl+"/",c=yield fetch(o+e);if(!c.ok)throw new Error(`could not load url: ${e}`);const d=yield c.arrayBuffer();return yield getContext$1().decodeAudioData(d)})}static supportsType(e){const s=e.split("."),o=s[s.length-1];return document.createElement("audio").canPlayType("audio/"+o)!==""}static loaded(){return __awaiter$5(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer$1.downloads.length;)yield ToneAudioBuffer$1.downloads[0]})}}ToneAudioBuffer$1.baseUrl="";ToneAudioBuffer$1.downloads=[];class OfflineContext$1 extends Context$1{constructor(){super({clockSource:"offline",context:isOfflineAudioContext$1(arguments[0])?arguments[0]:createOfflineAudioContext$1(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext$1(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext$1(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return __awaiter$5(this,void 0,void 0,function*(){let s=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,s++;const o=Math.floor(this.sampleRate/128);e&&s%o===0&&(yield new Promise(c=>setTimeout(c,1)))}})}render(e=!0){return __awaiter$5(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(e);const s=yield this._context.startRendering();return new ToneAudioBuffer$1(s)})}close(){return Promise.resolve()}}const dummyContext$1=new DummyContext$1;let globalContext$1=dummyContext$1;function getContext$1(){return globalContext$1===dummyContext$1&&hasAudioContext$1&&setContext$1(new Context$1),globalContext$1}function setContext$1(a){isAudioContext$1(a)?globalContext$1=new Context$1(a):isOfflineAudioContext$1(a)?globalContext$1=new OfflineContext$1(a):globalContext$1=a}function start(){return globalContext$1.resume()}if(theWindow$1&&!theWindow$1.TONE_SILENCE_LOGGING){const e=` * Tone.js v${version$1} * `;console.log(`%c${e}`,"background: #000; color: #fff")}function dbToGain$1(a){return Math.pow(10,a/20)}function gainToDb$1(a){return 20*(Math.log(a)/Math.LN10)}function intervalToFrequencyRatio$1(a){return Math.pow(2,a/12)}let A4$1=440;function getA4$1(){return A4$1}function setA4$1(a){A4$1=a}function ftom$1(a){return Math.round(ftomf$1(a))}function ftomf$1(a){return 69+12*Math.log2(a/A4$1)}function mtof$1(a){return A4$1*Math.pow(2,(a-69)/12)}class TimeBaseClass$1 extends Tone$2{constructor(e,s,o){super(),this.defaultUnits="s",this._val=s,this._units=o,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,s)=>{const o=parseInt(e,10),c=s==="."?1.5:1;return o===1?this._beatsToUnits(this._getTimeSignature())*c:this._beatsToUnits(4/o)*c},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{const s=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(s)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,s,o)=>{let c=0;return e&&e!=="0"&&(c+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c+=this._beatsToUnits(parseFloat(s))),o&&o!=="0"&&(c+=this._beatsToUnits(parseFloat(o)/4)),c},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass$1&&this.fromType(this._val),isUndef$1(this._val))return this._noArg();if(isString$1(this._val)&&isUndef$1(this._units)){for(const e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(isObject$1(this._val)){let e=0;for(const s in this._val)if(isDefined$1(this._val[s])){const o=this._val[s];e+=new this.constructor(this.context,s).valueOf()*o}return e}if(isDefined$1(this._units)){const e=this._expressions[this._units],s=this._val.toString().trim().match(e.regexp);return s?e.method.apply(this,s.slice(1)):e.method.call(this,this._val)}else return isString$1(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case"s":this._val=e.toSeconds();break;case"i":this._val=e.toTicks();break;case"hz":this._val=e.toFrequency();break;case"midi":this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass$1 extends TimeBaseClass$1{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:e=>{const s=new TimeClass$1(this.context,e).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(s))},regexp:/^@(.+)/}})}quantize(e,s=1){const o=new this.constructor(this.context,e).valueOf(),c=this.valueOf(),b=Math.round(c/o)*o-c;return c+b*s}toNotation(){const e=this.toSeconds(),s=["1m"];for(let d=1;d<9;d++){const _=Math.pow(2,d);s.push(_+"n."),s.push(_+"n"),s.push(_+"t")}s.push("0");let o=s[0],c=new TimeClass$1(this.context,s[0]).toSeconds();return s.forEach(d=>{const _=new TimeClass$1(this.context,d).toSeconds();Math.abs(_-e)3&&(c=parseFloat(parseFloat(d).toFixed(3))),[o,s,c].join(":")}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.round(s*this._getPPQ())}toSeconds(){return this.valueOf()}toMidi(){return ftom$1(this.toFrequency())}_now(){return this.context.now()}}function Time(a,e){return new TimeClass$1(getContext$1(),a,e)}class FrequencyClass$1 extends TimeClass$1{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4$1()}static set A4(e){setA4$1(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(e){return this.defaultUnits==="midi"?e:FrequencyClass$1.mtof(e)}},note:{regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method(e,s){const c=noteToScaleIndex$1[e.toLowerCase()]+(parseInt(s,10)+1)*12;return this.defaultUnits==="midi"?c:FrequencyClass$1.mtof(c)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,s,o){let c=1;return e&&e!=="0"&&(c*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c*=this._beatsToUnits(parseFloat(s))),o&&o!=="0"&&(c*=this._beatsToUnits(parseFloat(o)/4)),c}}})}transpose(e){return new FrequencyClass$1(this.context,this.valueOf()*intervalToFrequencyRatio$1(e))}harmonize(e){return e.map(s=>this.transpose(s))}toMidi(){return ftom$1(this.valueOf())}toNote(){const e=this.toFrequency(),s=Math.log2(e/FrequencyClass$1.A4);let o=Math.round(12*s)+57;const c=Math.floor(o/12);return c<0&&(o+=-12*c),scaleIndexToNote$1[o%12]+c.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.floor(s*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return mtof$1(e)}static ftom(e){return ftom$1(e)}}const noteToScaleIndex$1={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},scaleIndexToNote$1=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];function Frequency(a,e){return new FrequencyClass$1(getContext$1(),a,e)}class TransportTimeClass$1 extends TimeClass$1{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}function TransportTime(a,e){return new TransportTimeClass$1(getContext$1(),a,e)}class ToneWithContext$1 extends Tone$2{constructor(){super();const e=optionsFromArguments$1(ToneWithContext$1.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=e.context}static getDefaults(){return{context:getContext$1()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return new TimeClass$1(this.context,e).toSeconds()}toFrequency(e){return new FrequencyClass$1(this.context,e).toFrequency()}toTicks(e){return new TransportTimeClass$1(this.context,e).toTicks()}_getPartialProperties(e){const s=this.get();return Object.keys(s).forEach(o=>{isUndef$1(e[o])&&delete s[o]}),s}get(){const e=getDefaultsFromInstance$1(this);return Object.keys(e).forEach(s=>{if(Reflect.has(this,s)){const o=this[s];isDefined$1(o)&&isDefined$1(o.value)&&isDefined$1(o.setValueAtTime)?e[s]=o.value:o instanceof ToneWithContext$1?e[s]=o._getPartialProperties(e[s]):isArray$1(o)||isNumber$1(o)||isString$1(o)||isBoolean$1(o)?e[s]=o:delete e[s]}}),e}set(e){return Object.keys(e).forEach(s=>{Reflect.has(this,s)&&isDefined$1(this[s])&&(this[s]&&isDefined$1(this[s].value)&&isDefined$1(this[s].setValueAtTime)?this[s].value!==e[s]&&(this[s].value=e[s]):this[s]instanceof ToneWithContext$1?this[s].set(e[s]):this[s]=e[s])}),this}}class StateTimeline$1 extends Timeline$1{constructor(e="stopped"){super(),this.name="StateTimeline",this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){const s=this.get(e);return s!==null?s.state:this._initial}setStateAtTime(e,s,o){return assertRange$1(s,0),this.add(Object.assign({},o,{state:e,time:s})),this}getLastState(e,s){const o=this._search(s);for(let c=o;c>=0;c--){const d=this._timeline[c];if(d.state===e)return d}}getNextState(e,s){const o=this._search(s);if(o!==-1)for(let c=o;c0,"timeConstant must be a number greater than 0");const d=this.toSeconds(s);return this._assertRange(c),assert$1(isFinite(c)&&isFinite(d),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(s)}`),this._events.add({constant:o,time:d,type:"setTargetAtTime",value:c}),this.log(this.units,"setTargetAtTime",e,d,o),this._param.setTargetAtTime(c,d,o),this}setValueCurveAtTime(e,s,o,c=1){o=this.toSeconds(o),s=this.toSeconds(s);const d=this._fromType(e[0])*c;this.setValueAtTime(this._toType(d),s);const _=o/(e.length-1);for(let b=1;b{c.type==="cancelScheduledValues"?e.cancelScheduledValues(c.time):c.type==="setTargetAtTime"?e.setTargetAtTime(c.value,c.time,c.constant):e[c.type](c.value,c.time)}),this}setParam(e){assert$1(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const s=this.input;return s.disconnect(this._param),this.apply(e),this._param=e,s.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,s,o,c,d){return o+(s-o)*Math.exp(-(d-e)/c)}_linearInterpolate(e,s,o,c,d){return s+(c-s)*((d-e)/(o-e))}_exponentialInterpolate(e,s,o,c,d){return s*Math.pow(c/s,(d-e)/(o-e))}}class ToneAudioNode$1 extends ToneWithContext$1{constructor(){super(...arguments),this.name="ToneAudioNode",this._internalChannels=[]}get numberOfInputs(){return isDefined$1(this.input)?isAudioParam$1(this.input)||this.input instanceof Param$1?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined$1(this.output)?this.output.numberOfOutputs:0}_isAudioNode(e){return isDefined$1(e)&&(e instanceof ToneAudioNode$1||isAudioNode$2(e))}_getInternalNodes(){const e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(o=>{o.channelCount=e.channelCount,o.channelCountMode=e.channelCountMode,o.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){const e=this._getInternalNodes();assert$1(e.length>0,"ToneAudioNode does not have any internal nodes");const s=e[0];return{channelCount:s.channelCount,channelCountMode:s.channelCountMode,channelInterpretation:s.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelInterpretation:e}))}connect(e,s=0,o=0){return connect$1(this,e,s,o),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn$1("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(e,s=0,o=0){return disconnect$1(this,e,s,o),this}chain(...e){return connectSeries$1(this,...e),this}fan(...e){return e.forEach(s=>this.connect(s)),this}dispose(){return super.dispose(),isDefined$1(this.input)&&(this.input instanceof ToneAudioNode$1?this.input.dispose():isAudioNode$2(this.input)&&this.input.disconnect()),isDefined$1(this.output)&&(this.output instanceof ToneAudioNode$1?this.output.dispose():isAudioNode$2(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries$1(...a){const e=a.shift();a.reduce((s,o)=>(s instanceof ToneAudioNode$1?s.connect(o):isAudioNode$2(s)&&connect$1(s,o),o),e)}function connect$1(a,e,s=0,o=0){for(assert$1(isDefined$1(a),"Cannot connect from undefined node"),assert$1(isDefined$1(e),"Cannot connect to undefined node"),(e instanceof ToneAudioNode$1||isAudioNode$2(e))&&assert$1(e.numberOfInputs>0,"Cannot connect to node with no inputs"),assert$1(a.numberOfOutputs>0,"Cannot connect from node with no outputs");e instanceof ToneAudioNode$1||e instanceof Param$1;)isDefined$1(e.input)&&(e=e.input);for(;a instanceof ToneAudioNode$1;)isDefined$1(a.output)&&(a=a.output);isAudioParam$1(e)?a.connect(e,s):a.connect(e,s,o)}function disconnect$1(a,e,s=0,o=0){if(isDefined$1(e))for(;e instanceof ToneAudioNode$1;)e=e.input;for(;!isAudioNode$2(a);)isDefined$1(a.output)&&(a=a.output);isAudioParam$1(e)?a.disconnect(e,s):isAudioNode$2(e)?a.disconnect(e,s,o):a.disconnect()}class Gain$2 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Gain$2.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const e=optionsFromArguments$1(Gain$2.getDefaults(),arguments,["gain","units"]);this.gain=new Param$1({context:this.context,convert:e.convert,param:this._gainNode.gain,units:e.units,value:e.gain,minValue:e.minValue,maxValue:e.maxValue}),readOnly$1(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource$1 extends ToneAudioNode$1{constructor(e){super(e),this.onended=noOp$1,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain$2({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(s){const o=this.toSeconds(s);return this._startTime!==-1&&o>=this._startTime&&(this._stopTime===-1||o<=this._stopTime)?"started":"stopped"},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp$1})}_startGain(e,s=1){assert$1(this._startTime===-1,"Source cannot be started more than once");const o=this.toSeconds(this._fadeIn);return this._startTime=e+o,this._startTime=Math.max(this._startTime,this.context.currentTime),o>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(s,e+o):this._gainNode.gain.exponentialApproachValueAtTime(s,e,o)):this._gainNode.gain.setValueAtTime(s,e),this}stop(e){return this.log("stop",e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){assert$1(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const s=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+s,this._stopTime=Math.max(this._stopTime,this.context.currentTime),s>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,s,e):this._gainNode.gain.targetRampTo(0,s,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const o=this._curve==="exponential"?s*2:0;this._stopSource(this.now()+o),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp$1&&(this.onended(this),this.onended=noOp$1,!this.context.isOffline)){const e=()=>this.dispose();typeof window.requestIdleCallback!="undefined"?window.requestIdleCallback(e):setTimeout(e,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert$1(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.disconnect(),this}}class ToneConstantSource$1 extends OneShotSource$1{constructor(){super(optionsFromArguments$1(ToneConstantSource$1.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const e=optionsFromArguments$1(ToneConstantSource$1.getDefaults(),arguments,["offset"]);connect$1(this._source,this._gainNode),this.offset=new Param$1({context:this.context,convert:e.convert,param:this._source.offset,units:e.units,value:e.offset,minValue:e.minValue,maxValue:e.maxValue})}static getDefaults(){return Object.assign(OneShotSource$1.getDefaults(),{convert:!0,offset:1,units:"number"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._source.start(s),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const e=optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource$1({context:this.context,convert:e.convert,offset:e.value,units:e.units,minValue:e.minValue,maxValue:e.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{convert:!0,units:"number",value:0})}connect(e,s=0,o=0){return connectSignal$1(this,e,s,o),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,s){return this._param.setValueAtTime(e,s),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,s){return this._param.linearRampToValueAtTime(e,s),this}exponentialRampToValueAtTime(e,s){return this._param.exponentialRampToValueAtTime(e,s),this}exponentialRampTo(e,s,o){return this._param.exponentialRampTo(e,s,o),this}linearRampTo(e,s,o){return this._param.linearRampTo(e,s,o),this}targetRampTo(e,s,o){return this._param.targetRampTo(e,s,o),this}exponentialApproachValueAtTime(e,s,o){return this._param.exponentialApproachValueAtTime(e,s,o),this}setTargetAtTime(e,s,o){return this._param.setTargetAtTime(e,s,o),this}setValueCurveAtTime(e,s,o,c){return this._param.setValueCurveAtTime(e,s,o,c),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,s,o){return this._param.rampTo(e,s,o),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}}function connectSignal$1(a,e,s,o){(e instanceof Param$1||isAudioParam$1(e)||e instanceof Signal$1&&e.override)&&(e.cancelScheduledValues(0),e.setValueAtTime(0,0),e instanceof Signal$1&&(e.overridden=!0)),connect$1(a,e,s,o)}class TickParam$1 extends Param$1{constructor(){super(optionsFromArguments$1(TickParam$1.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline$1(1/0),this._multiplier=1;const e=optionsFromArguments$1(TickParam$1.getDefaults(),arguments,["value"]);this._multiplier=e.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(e.value)}),this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Param$1.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(e,s,o){s=this.toSeconds(s),this.setRampPoint(s);const c=this._fromType(e),d=this._events.get(s),_=Math.round(Math.max(1/o,1));for(let b=0;b<=_;b++){const k=o*b+s,$=this._exponentialApproach(d.time,d.value,c,o,k);this.linearRampToValueAtTime(this._toType($),k)}return this}setValueAtTime(e,s){const o=this.toSeconds(s);super.setValueAtTime(e,s);const c=this._events.get(o),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,o);return c.ticks=Math.max(_,0),this}linearRampToValueAtTime(e,s){const o=this.toSeconds(s);super.linearRampToValueAtTime(e,s);const c=this._events.get(o),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,o);return c.ticks=Math.max(_,0),this}exponentialRampToValueAtTime(e,s){s=this.toSeconds(s);const o=this._fromType(e),c=this._events.get(s),d=Math.round(Math.max((s-c.time)*10,1)),_=(s-c.time)/d;for(let b=0;b<=d;b++){const k=_*b+c.time,$=this._exponentialInterpolate(c.time,c.value,s,o,k);this.linearRampToValueAtTime(this._toType($),k)}return this}_getTicksUntilEvent(e,s){if(e===null)e={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef$1(e.ticks)){const _=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(_,e.time)}const o=this._fromType(this.getValueAtTime(e.time));let c=this._fromType(this.getValueAtTime(s));const d=this._events.get(s);return d&&d.time===s&&d.type==="setValueAtTime"&&(c=this._fromType(this.getValueAtTime(s-this.sampleTime))),.5*(s-e.time)*(o+c)+e.ticks}getTicksAtTime(e){const s=this.toSeconds(e),o=this._events.get(s);return Math.max(this._getTicksUntilEvent(o,s),0)}getDurationOfTicks(e,s){const o=this.toSeconds(s),c=this.getTicksAtTime(s);return this.getTimeOfTick(c+e)-o}getTimeOfTick(e){const s=this._events.get(e,"ticks"),o=this._events.getAfter(e,"ticks");if(s&&s.ticks===e)return s.time;if(s&&o&&o.type==="linearRampToValueAtTime"&&s.value!==o.value){const c=this._fromType(this.getValueAtTime(s.time)),_=(this._fromType(this.getValueAtTime(o.time))-c)/(o.time-s.time),b=Math.sqrt(Math.pow(c,2)-2*_*(s.ticks-e)),k=(-c+b)/_,$=(-c-b)/_;return(k>0?k:$)+s.time}else return s?s.value===0?1/0:s.time+(e-s.ticks)/s.value:e/this._initialValue}ticksToTime(e,s){return this.getDurationOfTicks(e,s)}timeToTicks(e,s){const o=this.toSeconds(s),c=this.toSeconds(e),d=this.getTicksAtTime(o);return this.getTicksAtTime(o+c)-d}_fromType(e){return this.units==="bpm"&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units==="bpm"&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){const s=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(s,0)}}class TickSignal$1 extends Signal$1{constructor(){super(optionsFromArguments$1(TickSignal$1.getDefaults(),arguments,["value"])),this.name="TickSignal";const e=optionsFromArguments$1(TickSignal$1.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam$1({context:this.context,convert:e.convert,multiplier:e.multiplier,param:this._constantSource.offset,units:e.units,value:e.value})}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(e,s){return this._param.ticksToTime(e,s)}timeToTicks(e,s){return this._param.timeToTicks(e,s)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,s){return this._param.getDurationOfTicks(e,s)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource$1 extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(TickSource$1.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline$1,this._tickOffset=new Timeline$1;const e=optionsFromArguments$1(TickSource$1.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal$1({context:this.context,units:e.units,value:e.frequency}),readOnly$1(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext$1.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,s){const o=this.toSeconds(e);return this._state.getValueAtTime(o)!=="started"&&(this._state.setStateAtTime("started",o),isDefined$1(s)&&this.setTicksAtTime(s,o)),this}stop(e){const s=this.toSeconds(e);if(this._state.getValueAtTime(s)==="stopped"){const o=this._state.get(s);o&&o.time>0&&(this._tickOffset.cancel(o.time),this._state.cancel(o.time))}return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this.setTicksAtTime(0,s),this}pause(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)==="started"&&this._state.setStateAtTime("paused",s),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this}getTicksAtTime(e){const s=this.toSeconds(e),o=this._state.getLastState("stopped",s),c={state:"paused",time:s};this._state.add(c);let d=o,_=0;return this._state.forEachBetween(o.time,s+this.sampleTime,b=>{let k=d.time;const $=this._tickOffset.get(b.time);$&&$.time>=d.time&&(_=$.ticks,k=$.time),d.state==="started"&&b.state!=="started"&&(_+=this.frequency.getTicksAtTime(b.time)-this.frequency.getTicksAtTime(k)),d=b}),this._state.remove(c),_}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){const s=this.now(),o=this.frequency.timeToTicks(e,s);this.setTicksAtTime(o,s)}getSecondsAtTime(e){e=this.toSeconds(e);const s=this._state.getLastState("stopped",e),o={state:"paused",time:e};this._state.add(o);let c=s,d=0;return this._state.forEachBetween(s.time,e+this.sampleTime,_=>{let b=c.time;const k=this._tickOffset.get(_.time);k&&k.time>=c.time&&(d=k.seconds,b=k.time),c.state==="started"&&_.state!=="started"&&(d+=_.time-b),c=_}),this._state.remove(o),d}setTicksAtTime(e,s){return s=this.toSeconds(s),this._tickOffset.cancel(s),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,s),ticks:e,time:s}),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,s=this.now()){const o=this._tickOffset.get(s),c=this._state.get(s),d=Math.max(o.time,c.time),_=this.frequency.getTicksAtTime(d)+e-o.ticks;return this.frequency.getTimeOfTick(_)}forEachTickBetween(e,s,o){let c=this._state.get(e);this._state.forEachBetween(e,s,_=>{c&&c.state==="started"&&_.state!=="started"&&this.forEachTickBetween(Math.max(c.time,e),_.time-this.sampleTime,o),c=_});let d=null;if(c&&c.state==="started"){const _=Math.max(c.time,e),b=this.frequency.getTicksAtTime(_),k=this.frequency.getTicksAtTime(c.time),$=b-k;let j=Math.ceil($)-$;j=EQ$1(j,1)?0:j;let _e=this.frequency.getTimeOfTick(b+j);for(;_e{switch(o.state){case"started":const c=this._tickSource.getTicksAtTime(o.time);this.emit("start",o.time,c);break;case"stopped":o.time!==0&&this.emit("stop",o.time);break;case"paused":this.emit("pause",o.time);break}}),this._tickSource.forEachTickBetween(e,s,(o,c)=>{this.callback(o,c)}))}getStateAtTime(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter$1.mixin(Clock$1);class Delay extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Delay.getDefaults(),arguments,["delayTime","maxDelay"])),this.name="Delay";const e=optionsFromArguments$1(Delay.getDefaults(),arguments,["delayTime","maxDelay"]),s=this.toSeconds(e.maxDelay);this._maxDelay=Math.max(s,this.toSeconds(e.delayTime)),this._delayNode=this.input=this.output=this.context.createDelay(s),this.delayTime=new Param$1({context:this.context,param:this._delayNode.delayTime,units:"time",value:e.delayTime,minValue:0,maxValue:this.maxDelay}),readOnly$1(this,"delayTime")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{delayTime:0,maxDelay:1})}get maxDelay(){return this._maxDelay}dispose(){return super.dispose(),this._delayNode.disconnect(),this.delayTime.dispose(),this}}function Offline(a,e,s=2,o=getContext$1().sampleRate){return __awaiter$5(this,void 0,void 0,function*(){const c=getContext$1(),d=new OfflineContext$1(s,e,o);setContext$1(d),yield a(d);const _=d.render();setContext$1(c);const b=yield _;return new ToneAudioBuffer$1(b)})}class ToneAudioBuffers$1 extends Tone$2{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const e=optionsFromArguments$1(ToneAudioBuffers$1.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=e.baseUrl,Object.keys(e.urls).forEach(s=>{this._loadingCount++;const o=e.urls[s];this.add(s,o,this._bufferLoaded.bind(this,e.onload),e.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp$1,onload:noOp$1,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return assert$1(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,s])=>s.loaded)}add(e,s,o=noOp$1,c=noOp$1){return isString$1(s)?this._buffers.set(e.toString(),new ToneAudioBuffer$1(this.baseUrl+s,o,c)):this._buffers.set(e.toString(),new ToneAudioBuffer$1(s,o,c)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}}class MidiClass extends FrequencyClass$1{constructor(){super(...arguments),this.name="MidiClass",this.defaultUnits="midi"}_frequencyToUnits(e){return ftom$1(super._frequencyToUnits(e))}_ticksToUnits(e){return ftom$1(super._ticksToUnits(e))}_beatsToUnits(e){return ftom$1(super._beatsToUnits(e))}_secondsToUnits(e){return ftom$1(super._secondsToUnits(e))}toMidi(){return this.valueOf()}toFrequency(){return mtof$1(this.toMidi())}transpose(e){return new MidiClass(this.context,this.toMidi()+e)}}function Midi(a,e){return new MidiClass(getContext$1(),a,e)}class TicksClass$1 extends TransportTimeClass$1{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}function Ticks(a,e){return new TicksClass$1(getContext$1(),a,e)}class Draw$2 extends ToneWithContext$1{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline$1,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,s){return this._events.add({callback:e,time:this.toSeconds(s)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){const e=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=e;){const s=this._events.shift();s&&e-s.time<=this.expiration&&s.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit$1(a=>{a.draw=new Draw$2({context:a})});onContextClose$1(a=>{a.draw.dispose()});class IntervalTimeline$1 extends Tone$2{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(e){assert$1(isDefined$1(e.time),"Events must have a time property"),assert$1(isDefined$1(e.duration),"Events must have a duration parameter"),e.time=e.time.valueOf();let s=new IntervalNode$1(e.time,e.time+e.duration,e);for(this._root===null?this._root=s:this._root.insert(s),this._length++;s!==null;)s.updateHeight(),s.updateMax(),this._rebalance(s),s=s.parent;return this}remove(e){if(this._root!==null){const s=[];this._root.search(e.time,s);for(const o of s)if(o.event===e){this._removeNode(o),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,s=>this.remove(s)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,s){e.parent!==null?(e.isLeftChild()?e.parent.left=s:e.parent.right=s,this._rebalance(e.parent)):this._setRoot(s)}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{const s=e.getBalance();let o,c=null;if(s>0)if(e.left.right===null)o=e.left,o.right=e.right,c=o;else{for(o=e.left.right;o.right!==null;)o=o.right;o.parent&&(o.parent.right=o.left,c=o.parent,o.left=e.left,o.right=e.right)}else if(e.right.left===null)o=e.right,o.left=e.left,c=o;else{for(o=e.right.left;o.left!==null;)o=o.left;o.parent&&(o.parent.left=o.right,c=o.parent,o.left=e.left,o.right=e.right)}e.parent!==null?e.isLeftChild()?e.parent.left=o:e.parent.right=o:this._setRoot(o),c&&this._rebalance(c)}e.dispose()}_rotateLeft(e){const s=e.parent,o=e.isLeftChild(),c=e.right;c&&(e.right=c.left,c.left=e),s!==null?o?s.left=c:s.right=c:this._setRoot(c)}_rotateRight(e){const s=e.parent,o=e.isLeftChild(),c=e.left;c&&(e.left=c.right,c.right=e),s!==null?o?s.left=c:s.right=c:this._setRoot(c)}_rebalance(e){const s=e.getBalance();s>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):s<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){const s=[];if(this._root.search(e,s),s.length>0){let o=s[0];for(let c=1;co.low&&(o=s[c]);return o.event}}return null}forEach(e){if(this._root!==null){const s=[];this._root.traverse(o=>s.push(o)),s.forEach(o=>{o.event&&e(o.event)})}return this}forEachAtTime(e,s){if(this._root!==null){const o=[];this._root.search(e,o),o.forEach(c=>{c.event&&s(c.event)})}return this}forEachFrom(e,s){if(this._root!==null){const o=[];this._root.searchAfter(e,o),o.forEach(c=>{c.event&&s(c.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}}class IntervalNode$1{constructor(e,s,o){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=o,this.low=e,this.high=s,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,s){e>this.max||(this.left!==null&&this.left.search(e,s),this.low<=e&&this.high>e&&s.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,s))}searchAfter(e,s){this.low>=e&&(s.push(this),this.left!==null&&this.left.searchAfter(e,s)),this.right!==null&&this.right.searchAfter(e,s)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left!==null?e=this.left.height+1:this.right!==null&&(e=-(this.right.height+1)),e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}var Units=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));class Volume$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Volume$1.getDefaults(),arguments,["volume"])),this.name="Volume";const e=optionsFromArguments$1(Volume$1.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain$2({context:this.context,gain:e.volume,units:"decibels"}),this.volume=this.output.gain,readOnly$1(this,"volume"),this._unmutedVolume=e.volume,this.mute=e.mute}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}class Destination$3 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Destination$3.getDefaults(),arguments)),this.name="Destination",this.input=new Volume$1({context:this.context}),this.output=new Gain$2({context:this.context}),this.volume=this.input.volume;const e=optionsFromArguments$1(Destination$3.getDefaults(),arguments);connectSeries$1(this.input,this.output,this.context.rawContext.destination),this.mute=e.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),connectSeries$1(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}}onContextInit$1(a=>{a.destination=new Destination$3({context:a})});onContextClose$1(a=>{a.destination.dispose()});class TimelineValue$1 extends Tone$2{constructor(e){super(),this.name="TimelineValue",this._timeline=new Timeline$1({memory:10}),this._initialValue=e}set(e,s){return this._timeline.add({value:e,time:s}),this}get(e){const s=this._timeline.get(e);return s?s.value:this._initialValue}}class TransportEvent$1{constructor(e,s){this.id=TransportEvent$1._eventId++;const o=Object.assign(TransportEvent$1.getDefaults(),s);this.transport=e,this.callback=o.callback,this._once=o.once,this.time=o.time}static getDefaults(){return{callback:noOp$1,once:!1,time:0}}invoke(e){this.callback&&(this.callback(e),this._once&&this.transport.clear(this.id))}dispose(){return this.callback=void 0,this}}TransportEvent$1._eventId=0;class TransportRepeatEvent$1 extends TransportEvent$1{constructor(e,s){super(e,s),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const o=Object.assign(TransportRepeatEvent$1.getDefaults(),s);this.duration=new TicksClass$1(e.context,o.duration).valueOf(),this._interval=new TicksClass$1(e.context,o.interval).valueOf(),this._nextTick=o.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent$1.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvents(e){const s=this.transport.getTicksAtTime(e);s>=this.time&&s>=this._nextTick&&this._nextTick+this._intervalthis.time&&(this._nextTick=this.time+Math.ceil((s-this.time)/this._interval)*this._interval),this._currentId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass$1(this.context,this._nextTick).toSeconds()),this._nextTick+=this._interval,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass$1(this.context,this._nextTick).toSeconds())}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this}}class Transport$2 extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(Transport$2.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue$1(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline$1,this._repeatedEvents=new IntervalTimeline$1,this._syncedSignals=[],this._swingAmount=0;const e=optionsFromArguments$1(Transport$2.getDefaults(),arguments);this._ppq=e.ppq,this._clock=new Clock$1({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=e.ppq,this.bpm.setValueAtTime(e.bpm,0),readOnly$1(this,"bpm"),this._timeSignature=e.timeSignature,this._swingTicks=e.ppq/2}static getDefaults(){return Object.assign(ToneWithContext$1.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(e,s){if(this._loop.get(e)&&s>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),s=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._swingAmount>0&&s%this._ppq!==0&&s%(this._swingTicks*2)!==0){const o=s%(this._swingTicks*2)/(this._swingTicks*2),c=Math.sin(o*Math.PI)*this._swingAmount;e+=new TicksClass$1(this.context,this._swingTicks*2/3).toSeconds()*c}this._timeline.forEachAtTime(s,o=>o.invoke(e))}schedule(e,s){const o=new TransportEvent$1(this,{callback:e,time:new TransportTimeClass$1(this.context,s).toTicks()});return this._addEvent(o,this._timeline)}scheduleRepeat(e,s,o,c=1/0){const d=new TransportRepeatEvent$1(this,{callback:e,duration:new TimeClass$1(this.context,c).toTicks(),interval:new TimeClass$1(this.context,s).toTicks(),time:new TransportTimeClass$1(this.context,o).toTicks()});return this._addEvent(d,this._repeatedEvents)}scheduleOnce(e,s){const o=new TransportEvent$1(this,{callback:e,once:!0,time:new TransportTimeClass$1(this.context,s).toTicks()});return this._addEvent(o,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){const s=this._scheduledEvents[e.toString()];s.timeline.remove(s.event),s.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,s){return this._scheduledEvents[e.id.toString()]={event:e,timeline:s},s.add(e),e.id}cancel(e=0){const s=this.toTicks(e);return this._timeline.forEachFrom(s,o=>this.clear(o.id)),this._repeatedEvents.forEachFrom(s,o=>this.clear(o.id)),this}_bindClockEvents(){this._clock.on("start",(e,s)=>{s=new TicksClass$1(this.context,s).toSeconds(),this.emit("start",e,s)}),this._clock.on("stop",e=>{this.emit("stop",e)}),this._clock.on("pause",e=>{this.emit("pause",e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,s){let o;return isDefined$1(s)&&(o=this.toTicks(s)),this._clock.start(e,o),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!=="started"?this.start(e):this.stop(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){isArray$1(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new TimeClass$1(this.context,this._loopStart,"i").toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new TimeClass$1(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new TicksClass$1(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){const e=this.now(),s=this._clock.getTicksAtTime(e);return new TicksClass$1(this.context,s).toBarsBeatsSixteenths()}set position(e){const s=this.toTicks(e);this.ticks=s}get seconds(){return this._clock.seconds}set seconds(e){const s=this.now(),o=this._clock.frequency.timeToTicks(e,s);this.ticks=o}get progress(){if(this.loop){const e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){const s=this.now();if(this.state==="started"){const o=this._clock.getTicksAtTime(s),c=this._clock.frequency.getDurationOfTicks(Math.ceil(o)-o,s),d=s+c;this.emit("stop",d),this._clock.setTicksAtTime(e,d),this.emit("start",d,this._clock.getSecondsAtTime(d))}else this._clock.setTicksAtTime(e,s)}}getTicksAtTime(e){return Math.round(this._clock.getTicksAtTime(e))}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!=="started")return 0;{const s=this.now(),o=this.getTicksAtTime(s),c=e-o%e;return this._clock.nextTickTime(c,s)}}syncSignal(e,s){if(!s){const c=this.now();if(e.getValueAtTime(c)!==0){const d=this.bpm.getValueAtTime(c),_=1/(60/d/this.PPQ);s=e.getValueAtTime(c)/_}else s=0}const o=new Gain$2(s);return this.bpm.connect(o),o.connect(e._param),this._syncedSignals.push({initial:e.value,ratio:o,signal:e}),e.value=0,this}unsyncSignal(e){for(let s=this._syncedSignals.length-1;s>=0;s--){const o=this._syncedSignals[s];o.signal===e&&(o.ratio.dispose(),o.signal.value=o.initial,this._syncedSignals.splice(s,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable$1(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}}Emitter$1.mixin(Transport$2);onContextInit$1(a=>{a.transport=new Transport$2({context:a})});onContextClose$1(a=>{a.transport.dispose()});class Source$1 extends ToneAudioNode$1{constructor(e){super(e),this.input=void 0,this._state=new StateTimeline$1("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp$1,this._syncedStop=noOp$1,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume$1({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,readOnly$1(this,"volume"),this.onstop=e.onstop}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,onstop:noOp$1,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,s,o){let c=isUndef$1(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(c=this._clampToCurrentTime(c),!this._synced&&this._state.getValueAtTime(c)==="started")assert$1(GT$1(c,this._state.get(c).time),"Start time must be strictly greater than previous start time"),this._state.cancel(c),this._state.setStateAtTime("started",c),this.log("restart",c),this.restart(c,s,o);else if(this.log("start",c),this._state.setStateAtTime("started",c),this._synced){const d=this._state.get(c);d&&(d.offset=this.toSeconds(defaultArg$1(s,0)),d.duration=o?this.toSeconds(o):void 0);const _=this.context.transport.schedule(b=>{this._start(b,s,o)},c);this._scheduled.push(_),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>c&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning$1(this.context),this._start(c,s,o);return this}stop(e){let s=isUndef$1(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(s=this._clampToCurrentTime(s),this._state.getValueAtTime(s)==="started"||isDefined$1(this._state.getNextState("started",s))){if(this.log("stop",s),!this._synced)this._stop(s);else{const o=this.context.transport.schedule(this._stop.bind(this),s);this._scheduled.push(o)}this._state.cancel(s),this._state.setStateAtTime("stopped",s)}return this}restart(e,s,o){return e=this.toSeconds(e),this._state.getValueAtTime(e)==="started"&&(this._state.cancel(e),this._restart(e,s,o)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,s)=>{if(s>0){const o=this._state.get(s);if(o&&o.state==="started"&&o.time!==s){const c=s-this.toSeconds(o.time);let d;o.duration&&(d=this.toSeconds(o.duration)-c),this._start(e,this.toSeconds(o.offset)+c,d)}}},this._syncedStop=e=>{const s=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(s)==="started"&&this._stop(e)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp$1,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource$1 extends OneShotSource$1{constructor(){super(optionsFromArguments$1(ToneBufferSource$1.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const e=optionsFromArguments$1(ToneBufferSource$1.getDefaults(),arguments,["url","onload"]);connect$1(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param$1({context:this.context,param:this._source.playbackRate,units:"positive",value:e.playbackRate}),this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this._buffer=new ToneAudioBuffer$1(e.url,e.onload,e.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource$1.getDefaults(),{url:new ToneAudioBuffer$1,loop:!1,loopEnd:0,loopStart:0,onload:noOp$1,onerror:noOp$1,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,s,o,c=1){assert$1(this.buffer.loaded,"buffer is either not set or not loaded");const d=this.toSeconds(e);this._startGain(d,c),this.loop?s=defaultArg$1(s,this.loopStart):s=defaultArg$1(s,0);let _=Math.max(this.toSeconds(s),0);if(this.loop){const b=this.toSeconds(this.loopEnd)||this.buffer.duration,k=this.toSeconds(this.loopStart),$=b-k;GTE$1(_,b)&&(_=(_-k)%$+k),EQ$1(_,this.buffer.duration)&&(_=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT$1(_,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(d,_)),isDefined$1(o)){let b=this.toSeconds(o);b=Math.max(b,0),this.stop(d+b)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}class Noise extends Source$1{constructor(){super(optionsFromArguments$1(Noise.getDefaults(),arguments,["type"])),this.name="Noise",this._source=null;const e=optionsFromArguments$1(Noise.getDefaults(),arguments,["type"]);this._playbackRate=e.playbackRate,this.type=e.type,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source$1.getDefaults(),{fadeIn:0,fadeOut:0,playbackRate:1,type:"white"})}get type(){return this._type}set type(e){if(assert$1(e in _noiseBuffers,"Noise: invalid type: "+e),this._type!==e&&(this._type=e,this.state==="started")){const s=this.now();this._stop(s),this._start(s)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._source&&(this._source.playbackRate.value=e)}_start(e){const s=_noiseBuffers[this._type];this._source=new ToneBufferSource$1({url:s,context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,loop:!0,onended:()=>this.onstop(this),playbackRate:this._playbackRate}).connect(this.output),this._source.start(this.toSeconds(e),Math.random()*(s.duration-.001))}_stop(e){this._source&&(this._source.stop(this.toSeconds(e)),this._source=null)}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._source&&(this._source.fadeIn=this._fadeIn)}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._source&&(this._source.fadeOut=this._fadeOut)}_restart(e){this._stop(e),this._start(e)}dispose(){return super.dispose(),this._source&&this._source.disconnect(),this}}const BUFFER_LENGTH=44100*5,NUM_CHANNELS=2,_noiseCache={brown:null,pink:null,white:null},_noiseBuffers={get brown(){if(!_noiseCache.brown){const a=[];for(let e=0;ed.label===e||d.deviceId===e),!this._device&&s.length>0&&(this._device=s[0]),assert$1(isDefined$1(this._device),`No matching device ${e}`));const o={audio:{echoCancellation:!1,sampleRate:this.context.sampleRate,noiseSuppression:!1,mozNoiseSuppression:!1}};this._device&&(o.audio.deviceId=this._device.deviceId);const c=yield navigator.mediaDevices.getUserMedia(o);if(!this._stream){this._stream=c;const d=this.context.createMediaStreamSource(c);connect$1(d,this.output),this._mediaStream=d}return this})}close(){return this._stream&&this._mediaStream&&(this._stream.getAudioTracks().forEach(e=>{e.stop()}),this._stream=void 0,this._mediaStream.disconnect(),this._mediaStream=void 0),this._device=void 0,this}static enumerateDevices(){return __awaiter$5(this,void 0,void 0,function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter(s=>s.kind==="audioinput")})}get state(){return this._stream&&this._stream.active?"started":"stopped"}get deviceId(){if(this._device)return this._device.deviceId}get groupId(){if(this._device)return this._device.groupId}get label(){if(this._device)return this._device.label}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this.close(),this._volume.dispose(),this.volume.dispose(),this}static get supported(){return isDefined$1(navigator.mediaDevices)&&isDefined$1(navigator.mediaDevices.getUserMedia)}}function generateWaveform$1(a,e){return __awaiter$5(this,void 0,void 0,function*(){const s=e/a.context.sampleRate,o=new OfflineContext$1(1,s,a.context.sampleRate);return new a.constructor(Object.assign(a.get(),{frequency:2/s,detune:0,context:o})).toDestination().start(0),(yield o.render()).getChannelData(0)})}class ToneOscillatorNode$1 extends OneShotSource$1{constructor(){super(optionsFromArguments$1(ToneOscillatorNode$1.getDefaults(),arguments,["frequency","type"])),this.name="ToneOscillatorNode",this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator];const e=optionsFromArguments$1(ToneOscillatorNode$1.getDefaults(),arguments,["frequency","type"]);connect$1(this._oscillator,this._gainNode),this.type=e.type,this.frequency=new Param$1({context:this.context,param:this._oscillator.frequency,units:"frequency",value:e.frequency}),this.detune=new Param$1({context:this.context,param:this._oscillator.detune,units:"cents",value:e.detune}),readOnly$1(this,["frequency","detune"])}static getDefaults(){return Object.assign(OneShotSource$1.getDefaults(),{detune:0,frequency:440,type:"sine"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._oscillator.start(s),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}}class Oscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(Oscillator$1.getDefaults(),arguments,["frequency","type"])),this.name="Oscillator",this._oscillator=null;const e=optionsFromArguments$1(Oscillator$1.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),readOnly$1(this,"frequency"),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),readOnly$1(this,"detune"),this._partials=e.partials,this._partialCount=e.partialCount,this._type=e.type,e.partialCount&&e.type!=="custom"&&(this._type=this.baseType+e.partialCount.toString()),this.phase=e.phase}static getDefaults(){return Object.assign(Source$1.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:"sine"})}_start(e){const s=this.toSeconds(e),o=new ToneOscillatorNode$1({context:this.context,onended:()=>this.onstop(this)});this._oscillator=o,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(s)}_stop(e){const s=this.toSeconds(e);this._oscillator&&this._oscillator.stop(s)}_restart(e){const s=this.toSeconds(e);return this.log("restart",s),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(s),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator$1._periodicWaveCache.find(s=>s.phase===this._phase&&deepEquals$1(s.partials,this._partials));{const e=Oscillator$1._periodicWaveCache.find(s=>s.type===this._type&&s.phase===this._phase);return this._partialCount=e?e.partialCount:this._partialCount,e}}get type(){return this._type}set type(e){this._type=e;const s=["sine","square","sawtooth","triangle"].indexOf(e)!==-1;if(this._phase===0&&s)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=e);else{const o=this._getCachedPeriodicWave();if(isDefined$1(o)){const{partials:c,wave:d}=o;this._wave=d,this._partials=c,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[c,d]=this._getRealImaginary(e,this._phase),_=this.context.createPeriodicWave(c,d);this._wave=_,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator$1._periodicWaveCache.push({imag:d,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:c,type:this._type,wave:this._wave}),Oscillator$1._periodicWaveCache.length>100&&Oscillator$1._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(e){this.partialCount&&this._type!=="custom"&&e!=="custom"?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){assertRange$1(e,0);let s=this._type;const o=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(o&&(s=o[1]),this._type!=="custom")e===0?this.type=s:this.type=s+e.toString();else{const c=new Float32Array(e);this._partials.forEach((d,_)=>c[_]=d),this._partials=Array.from(c),this.type=this._type}}_getRealImaginary(e,s){let c=2048;const d=new Float32Array(c),_=new Float32Array(c);let b=1;if(e==="custom"){if(b=this._partials.length+1,this._partialCount=this._partials.length,c=b,this._partials.length===0)return[d,_]}else{const k=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);k?(b=parseInt(k[2],10)+1,this._partialCount=parseInt(k[2],10),e=k[1],b=Math.max(b,2),c=b):this._partialCount=0,this._partials=[]}for(let k=1;k>1&1?-1:1):j=0,this._partials[k-1]=j;break;case"custom":j=this._partials[k-1];break;default:throw new TypeError("Oscillator: invalid type: "+e)}j!==0?(d[k]=-j*Math.sin(s*k),_[k]=j*Math.cos(s*k)):(d[k]=0,_[k]=0)}return[d,_]}_inverseFFT(e,s,o){let c=0;const d=e.length;for(let _=0;_o.includes(e));assert$1(s,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class AudioToGain$1 extends SignalOperator$1{constructor(){super(...arguments),this.name="AudioToGain",this._norm=new WaveShaper$1({context:this.context,mapping:e=>(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply$1 extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(Multiply$1.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const e=optionsFromArguments$1(Multiply$1.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain$2({context:this.context,minValue:e.minValue,maxValue:e.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(AMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain$1({context:this.context}),this._modulationNode=new Gain$2({context:this.context});const e=optionsFromArguments$1(AMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator$1({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator$1({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply$1({context:this.context,units:"positive",value:e.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly$1(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(FMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain$2({context:this.context,gain:0});const e=optionsFromArguments$1(FMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator$1({context:this.context,detune:e.detune,frequency:0,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.detune=this._carrier.detune,this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),this._modulator=new Oscillator$1({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply$1({context:this.context,units:"positive",value:e.harmonicity}),this.modulationIndex=new Multiply$1({context:this.context,units:"positive",value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly$1(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(PulseOscillator$1.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain$2({context:this.context,gain:0}),this._thresh=new WaveShaper$1({context:this.context,mapping:s=>s<=0?-1:1});const e=optionsFromArguments$1(PulseOscillator$1.getDefaults(),arguments,["frequency","width"]);this.width=new Signal$1({context:this.context,units:"audioRange",value:e.width}),this._triangle=new Oscillator$1({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly$1(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source$1.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(FatOscillator$1.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const e=optionsFromArguments$1(FatOscillator$1.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),this._spread=e.spread,this._type=e.type,this._phase=e.phase,this._partials=e.partials,this._partialCount=e.partialCount,this.count=e.count,readOnly$1(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(e){e=this.toSeconds(e),this._forEach(s=>s.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(s=>s.stop(e))}_restart(e){this._forEach(s=>s.restart(e))}_forEach(e){for(let s=0;ss.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){const s=-e/2,o=e/(this._oscillators.length-1);this._forEach((c,d)=>c.detune.value=s+o*d)}}get count(){return this._oscillators.length}set count(e){if(assertRange$1(e,1),this._oscillators.length!==e){this._forEach(s=>s.dispose()),this._oscillators=[];for(let s=0;sthis.onstop(this):noOp$1});this.type==="custom"&&(o.partials=this._partials),this.frequency.connect(o.frequency),this.detune.connect(o.detune),o.detune.overridden=!1,o.connect(this.output),this._oscillators[s]=o}this.spread=this._spread,this.state==="started"&&this._forEach(s=>s.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((s,o)=>s.phase=this._phase+o/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(s=>s.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type="custom",this._forEach(s=>s.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(s=>s.partialCount=e),this._type=this._oscillators[0].type}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}}class PWMOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(PWMOscillator$1.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply$1({context:this.context,value:2});const e=optionsFromArguments$1(PWMOscillator$1.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator$1({context:this.context,frequency:e.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator$1({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly$1(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source$1.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap$1={am:AMOscillator$1,fat:FatOscillator$1,fm:FMOscillator$1,oscillator:Oscillator$1,pulse:PulseOscillator$1,pwm:PWMOscillator$1};class OmniOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(OmniOscillator$1.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const e=optionsFromArguments$1(OmniOscillator$1.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),readOnly$1(this,["frequency","detune"]),this.set(e)}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),FMOscillator$1.getDefaults(),AMOscillator$1.getDefaults(),FatOscillator$1.getDefaults(),PulseOscillator$1.getDefaults(),PWMOscillator$1.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e="";return["am","fm","fat"].some(s=>this._sourceType===s)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):e==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,"type")&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;const s=OmniOscillatorSourceMap$1[e],o=this.now();if(this._oscillator){const c=this._oscillator;c.stop(o),this.context.setTimeout(()=>c.dispose(),this.blockTime)}this._oscillator=new s({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(o)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let s="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(s=this._oscillator.type),e==="fm"?this.type="fm"+s:e==="am"?this.type="am"+s:e==="fat"?this.type="fat"+s:e==="oscillator"?this.type=s:e==="pulse"?this.type="pulse":e==="pwm"&&(this.type="pwm")}_getOscType(e,s){return e instanceof OmniOscillatorSourceMap$1[s]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&e!=="pulse"&&e!=="pwm"&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,"fat")&&isNumber$1(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,"fat")&&isNumber$1(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString$1(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}class Add extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(Add.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Add",this._sum=new Gain$2({context:this.context}),this.input=this._sum,this.output=this._sum,this.addend=this._param,connectSeries$1(this._constantSource,this._sum)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._sum.dispose(),this}}class Scale extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(Scale.getDefaults(),arguments,["min","max"]))),this.name="Scale";const e=optionsFromArguments$1(Scale.getDefaults(),arguments,["min","max"]);this._mult=this.input=new Multiply$1({context:this.context,value:e.max-e.min}),this._add=this.output=new Add({context:this.context,value:e.min}),this._min=e.min,this._max=e.max,this.input.connect(this.output)}static getDefaults(){return Object.assign(SignalOperator$1.getDefaults(),{max:1,min:0})}get min(){return this._min}set min(e){this._min=e,this._setRange()}get max(){return this._max}set max(e){this._max=e,this._setRange()}_setRange(){this._add.value=this._min,this._mult.value=this._max-this._min}dispose(){return super.dispose(),this._add.dispose(),this._mult.dispose(),this}}class Zero extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(Zero.getDefaults(),arguments))),this.name="Zero",this._gain=new Gain$2({context:this.context}),this.output=this._gain,this.input=void 0,connect$1(this.context.getConstant(0),this._gain)}dispose(){return super.dispose(),disconnect$1(this.context.getConstant(0),this._gain),this}}class LFO extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(LFO.getDefaults(),arguments,["frequency","min","max"])),this.name="LFO",this._stoppedValue=0,this._units="number",this.convert=!0,this._fromType=Param$1.prototype._fromType,this._toType=Param$1.prototype._toType,this._is=Param$1.prototype._is,this._clampValue=Param$1.prototype._clampValue;const e=optionsFromArguments$1(LFO.getDefaults(),arguments,["frequency","min","max"]);this._oscillator=new Oscillator$1(e),this.frequency=this._oscillator.frequency,this._amplitudeGain=new Gain$2({context:this.context,gain:e.amplitude,units:"normalRange"}),this.amplitude=this._amplitudeGain.gain,this._stoppedSignal=new Signal$1({context:this.context,units:"audioRange",value:0}),this._zeros=new Zero({context:this.context}),this._a2g=new AudioToGain$1({context:this.context}),this._scaler=this.output=new Scale({context:this.context,max:e.max,min:e.min}),this.units=e.units,this.min=e.min,this.max=e.max,this._oscillator.chain(this._amplitudeGain,this._a2g,this._scaler),this._zeros.connect(this._a2g),this._stoppedSignal.connect(this._a2g),readOnly$1(this,["amplitude","frequency"]),this.phase=e.phase}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{amplitude:1,frequency:"4n",max:1,min:0,type:"sine",units:"number"})}start(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(0,e),this._oscillator.start(e),this}stop(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(this._stoppedValue,e),this._oscillator.stop(e),this}sync(){return this._oscillator.sync(),this._oscillator.syncFrequency(),this}unsync(){return this._oscillator.unsync(),this._oscillator.unsyncFrequency(),this}_setStoppedValue(){this._stoppedValue=this._oscillator.getInitialValue(),this._stoppedSignal.value=this._stoppedValue}get min(){return this._toType(this._scaler.min)}set min(e){e=this._fromType(e),this._scaler.min=e}get max(){return this._toType(this._scaler.max)}set max(e){e=this._fromType(e),this._scaler.max=e}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e,this._setStoppedValue()}get partials(){return this._oscillator.partials}set partials(e){this._oscillator.partials=e,this._setStoppedValue()}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e,this._setStoppedValue()}get units(){return this._units}set units(e){const s=this.min,o=this.max;this._units=e,this.min=s,this.max=o}get state(){return this._oscillator.state}connect(e,s,o){return(e instanceof Param$1||e instanceof Signal$1)&&(this.convert=e.convert,this.units=e.units),connectSignal$1(this,e,s,o),this}dispose(){return super.dispose(),this._oscillator.dispose(),this._stoppedSignal.dispose(),this._zeros.dispose(),this._scaler.dispose(),this._a2g.dispose(),this._amplitudeGain.dispose(),this.amplitude.dispose(),this}}function range$1(a,e=1/0){const s=new WeakMap;return function(o,c){Reflect.defineProperty(o,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange$1(d,a,e),s.set(this,d)}})}}function timeRange$1(a,e=1/0){const s=new WeakMap;return function(o,c){Reflect.defineProperty(o,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange$1(this.toSeconds(d),a,e),s.set(this,d)}})}}class Player$1 extends Source$1{constructor(){super(optionsFromArguments$1(Player$1.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const e=optionsFromArguments$1(Player$1.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer$1({onload:this._onload.bind(this,e.onload),onerror:e.onerror,reverse:e.reverse,url:e.url}),this.autostart=e.autostart,this._loop=e.loop,this._loopStart=e.loopStart,this._loopEnd=e.loopEnd,this._playbackRate=e.playbackRate,this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source$1.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp$1,onerror:noOp$1,playbackRate:1,reverse:!1})}load(e){return __awaiter$5(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=noOp$1){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(e,s,o){return super.start(e,s,o),this}_start(e,s,o){this._loop?s=defaultArg$1(s,this._loopStart):s=defaultArg$1(s,0);const c=this.toSeconds(s),d=o;o=defaultArg$1(o,Math.max(this._buffer.duration-c,0));let _=this.toSeconds(o);_=_/this._playbackRate,e=this.toSeconds(e);const b=new ToneBufferSource$1({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+_),this._state.setStateAtTime("stopped",e+_,{implicitEnd:!0})),this._activeSources.add(b),this._loop&&isUndef$1(d)?b.start(e,c):b.start(e,c,_-this.toSeconds(this.fadeOut))}_stop(e){const s=this.toSeconds(e);this._activeSources.forEach(o=>o.stop(s))}restart(e,s,o){return super.restart(e,s,o),this}_restart(e,s,o){this._stop(e),this._start(e,s,o)}seek(e,s){const o=this.toSeconds(s);if(this._state.getValueAtTime(o)==="started"){const c=this.toSeconds(e);this._stop(o),this._start(o,c)}return this}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(s=>{s.loop=e}),e)){const s=this._state.getNextState("stopped",this.now());s&&this._state.cancel(s.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;const s=this.now(),o=this._state.getNextState("stopped",s);o&&o.implicitEnd&&(this._state.cancel(o.time),this._activeSources.forEach(c=>c.cancelStop())),this._activeSources.forEach(c=>{c.playbackRate.setValueAtTime(e,s)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}}__decorate$1([timeRange$1(0)],Player$1.prototype,"fadeIn",void 0);__decorate$1([timeRange$1(0)],Player$1.prototype,"fadeOut",void 0);class Players$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Players$1.getDefaults(),arguments,["urls","onload"],"urls")),this.name="Players",this.input=void 0,this._players=new Map;const e=optionsFromArguments$1(Players$1.getDefaults(),arguments,["urls","onload"],"urls");this._volume=this.output=new Volume$1({context:this.context,volume:e.volume}),this.volume=this._volume.volume,readOnly$1(this,"volume"),this._buffers=new ToneAudioBuffers$1({urls:e.urls,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.mute=e.mute,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source$1.getDefaults(),{baseUrl:"",fadeIn:0,fadeOut:0,mute:!1,onload:noOp$1,onerror:noOp$1,urls:{},volume:0})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._players.forEach(s=>{s.fadeIn=e})}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._players.forEach(s=>{s.fadeOut=e})}get state(){return Array.from(this._players).some(([s,o])=>o.state==="started")?"started":"stopped"}has(e){return this._buffers.has(e)}player(e){if(assert$1(this.has(e),`No Player with the name ${e} exists on this object`),!this._players.has(e)){const s=new Player$1({context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,url:this._buffers.get(e)}).connect(this.output);this._players.set(e,s)}return this._players.get(e)}get loaded(){return this._buffers.loaded}add(e,s,o){return assert$1(!this._buffers.has(e),"A buffer with that name already exists on this object"),this._buffers.add(e,s,o),this}stopAll(e){return this._players.forEach(s=>s.stop(e)),this}dispose(){return super.dispose(),this._volume.dispose(),this.volume.dispose(),this._players.forEach(e=>e.dispose()),this._buffers.dispose(),this}}class GrainPlayer extends Source$1{constructor(){super(optionsFromArguments$1(GrainPlayer.getDefaults(),arguments,["url","onload"])),this.name="GrainPlayer",this._loopStart=0,this._loopEnd=0,this._activeSources=[];const e=optionsFromArguments$1(GrainPlayer.getDefaults(),arguments,["url","onload"]);this.buffer=new ToneAudioBuffer$1({onload:e.onload,onerror:e.onerror,reverse:e.reverse,url:e.url}),this._clock=new Clock$1({context:this.context,callback:this._tick.bind(this),frequency:1/e.grainSize}),this._playbackRate=e.playbackRate,this._grainSize=e.grainSize,this._overlap=e.overlap,this.detune=e.detune,this.overlap=e.overlap,this.loop=e.loop,this.playbackRate=e.playbackRate,this.grainSize=e.grainSize,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.reverse=e.reverse,this._clock.on("stop",this._onstop.bind(this))}static getDefaults(){return Object.assign(Source$1.getDefaults(),{onload:noOp$1,onerror:noOp$1,overlap:.1,grainSize:.2,playbackRate:1,detune:0,loop:!1,loopStart:0,loopEnd:0,reverse:!1})}_start(e,s,o){s=defaultArg$1(s,0),s=this.toSeconds(s),e=this.toSeconds(e);const c=1/this._clock.frequency.getValueAtTime(e);this._clock.start(e,s/c),o&&this.stop(e+this.toSeconds(o))}restart(e,s,o){return super.restart(e,s,o),this}_restart(e,s,o){this._stop(e),this._start(e,s,o)}_stop(e){this._clock.stop(e)}_onstop(e){this._activeSources.forEach(s=>{s.fadeOut=0,s.stop(e)}),this.onstop(this)}_tick(e){const s=this._clock.getTicksAtTime(e),o=s*this._grainSize;if(this.log("offset",o),!this.loop&&o>this.buffer.duration){this.stop(e);return}const c=o{const _=this._activeSources.indexOf(d);_!==-1&&this._activeSources.splice(_,1)}}get playbackRate(){return this._playbackRate}set playbackRate(e){assertRange$1(e,.001),this._playbackRate=e,this.grainSize=this._grainSize}get loopStart(){return this._loopStart}set loopStart(e){this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._loopStart=this.toSeconds(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._loopEnd=this.toSeconds(e)}get reverse(){return this.buffer.reverse}set reverse(e){this.buffer.reverse=e}get grainSize(){return this._grainSize}set grainSize(e){this._grainSize=this.toSeconds(e),this._clock.frequency.setValueAtTime(this._playbackRate/this._grainSize,this.now())}get overlap(){return this._overlap}set overlap(e){const s=this.toSeconds(e);assertRange$1(s,0),this._overlap=s}get loaded(){return this.buffer.loaded}dispose(){return super.dispose(),this.buffer.dispose(),this._clock.dispose(),this._activeSources.forEach(e=>e.dispose()),this}}class Abs extends SignalOperator$1{constructor(){super(...arguments),this.name="Abs",this._abs=new WaveShaper$1({context:this.context,mapping:e=>Math.abs(e)<.001?0:Math.abs(e)}),this.input=this._abs,this.output=this._abs}dispose(){return super.dispose(),this._abs.dispose(),this}}class GainToAudio extends SignalOperator$1{constructor(){super(...arguments),this.name="GainToAudio",this._norm=new WaveShaper$1({context:this.context,mapping:e=>Math.abs(e)*2-1}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Negate extends SignalOperator$1{constructor(){super(...arguments),this.name="Negate",this._multiply=new Multiply$1({context:this.context,value:-1}),this.input=this._multiply,this.output=this._multiply}dispose(){return super.dispose(),this._multiply.dispose(),this}}class Subtract extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(Subtract.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Subtract",this._sum=new Gain$2({context:this.context}),this.input=this._sum,this.output=this._sum,this._neg=new Negate({context:this.context}),this.subtrahend=this._param,connectSeries$1(this._constantSource,this._neg,this._sum)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._neg.dispose(),this._sum.dispose(),this}}class GreaterThanZero extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(GreaterThanZero.getDefaults(),arguments))),this.name="GreaterThanZero",this._thresh=this.output=new WaveShaper$1({context:this.context,length:127,mapping:e=>e<=0?0:1}),this._scale=this.input=new Multiply$1({context:this.context,value:1e4}),this._scale.connect(this._thresh)}dispose(){return super.dispose(),this._scale.dispose(),this._thresh.dispose(),this}}class GreaterThan extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(GreaterThan.getDefaults(),arguments,["value"]))),this.name="GreaterThan",this.override=!1;const e=optionsFromArguments$1(GreaterThan.getDefaults(),arguments,["value"]);this._subtract=this.input=new Subtract({context:this.context,value:e.value}),this._gtz=this.output=new GreaterThanZero({context:this.context}),this.comparator=this._param=this._subtract.subtrahend,readOnly$1(this,"comparator"),this._subtract.connect(this._gtz)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._gtz.dispose(),this._subtract.dispose(),this.comparator.dispose(),this}}class Pow extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(Pow.getDefaults(),arguments,["value"]))),this.name="Pow";const e=optionsFromArguments$1(Pow.getDefaults(),arguments,["value"]);this._exponentScaler=this.input=this.output=new WaveShaper$1({context:this.context,mapping:this._expFunc(e.value),length:8192}),this._exponent=e.value}static getDefaults(){return Object.assign(SignalOperator$1.getDefaults(),{value:1})}_expFunc(e){return s=>Math.pow(Math.abs(s),e)}get value(){return this._exponent}set value(e){this._exponent=e,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}}class ScaleExp extends Scale{constructor(){super(Object.assign(optionsFromArguments$1(ScaleExp.getDefaults(),arguments,["min","max","exponent"]))),this.name="ScaleExp";const e=optionsFromArguments$1(ScaleExp.getDefaults(),arguments,["min","max","exponent"]);this.input=this._exp=new Pow({context:this.context,value:e.exponent}),this._exp.connect(this._mult)}static getDefaults(){return Object.assign(Scale.getDefaults(),{exponent:1})}get exponent(){return this._exp.value}set exponent(e){this._exp.value=e}dispose(){return super.dispose(),this._exp.dispose(),this}}class SyncedSignal extends Signal$1{constructor(){super(optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"])),this.name="SyncedSignal",this.override=!1;const e=optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"]);this._lastVal=e.value,this._synced=this.context.transport.scheduleRepeat(this._onTick.bind(this),"1i"),this._syncedCallback=this._anchorValue.bind(this),this.context.transport.on("start",this._syncedCallback),this.context.transport.on("pause",this._syncedCallback),this.context.transport.on("stop",this._syncedCallback),this._constantSource.disconnect(),this._constantSource.stop(0),this._constantSource=this.output=new ToneConstantSource$1({context:this.context,offset:e.value,units:e.units}).start(0),this.setValueAtTime(e.value,0)}_onTick(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal!==s&&(this._lastVal=s,this._constantSource.offset.setValueAtTime(s,e))}_anchorValue(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal=s,this._constantSource.offset.cancelAndHoldAtTime(e),this._constantSource.offset.setValueAtTime(s,e)}getValueAtTime(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.getValueAtTime(s)}setValueAtTime(e,s){const o=new TransportTimeClass$1(this.context,s).toSeconds();return super.setValueAtTime(e,o),this}linearRampToValueAtTime(e,s){const o=new TransportTimeClass$1(this.context,s).toSeconds();return super.linearRampToValueAtTime(e,o),this}exponentialRampToValueAtTime(e,s){const o=new TransportTimeClass$1(this.context,s).toSeconds();return super.exponentialRampToValueAtTime(e,o),this}setTargetAtTime(e,s,o){const c=new TransportTimeClass$1(this.context,s).toSeconds();return super.setTargetAtTime(e,c,o),this}cancelScheduledValues(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.cancelScheduledValues(s),this}setValueCurveAtTime(e,s,o,c){const d=new TransportTimeClass$1(this.context,s).toSeconds();return o=this.toSeconds(o),super.setValueCurveAtTime(e,d,o,c),this}cancelAndHoldAtTime(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.cancelAndHoldAtTime(s),this}setRampPoint(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.setRampPoint(s),this}exponentialRampTo(e,s,o){const c=new TransportTimeClass$1(this.context,o).toSeconds();return super.exponentialRampTo(e,s,c),this}linearRampTo(e,s,o){const c=new TransportTimeClass$1(this.context,o).toSeconds();return super.linearRampTo(e,s,c),this}targetRampTo(e,s,o){const c=new TransportTimeClass$1(this.context,o).toSeconds();return super.targetRampTo(e,s,c),this}dispose(){return super.dispose(),this.context.transport.clear(this._synced),this.context.transport.off("start",this._syncedCallback),this.context.transport.off("pause",this._syncedCallback),this.context.transport.off("stop",this._syncedCallback),this._constantSource.dispose(),this}}class Envelope$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Envelope$1.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal$1({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const e=optionsFromArguments$1(Envelope$1.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve,this.decayCurve=e.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,s){if(isString$1(e))return e;{let o;for(o in EnvelopeCurves$1)if(EnvelopeCurves$1[o][s]===e)return o;return e}}_setCurve(e,s,o){if(isString$1(o)&&Reflect.has(EnvelopeCurves$1,o)){const c=EnvelopeCurves$1[o];isObject$1(c)?e!=="_decayCurve"&&(this[e]=c[s]):this[e]=c}else if(isArray$1(o)&&e!=="_decayCurve")this[e]=o;else throw new Error("Envelope: invalid curve: "+o)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(e){this._setCurve("_attackCurve","In",e)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(e){this._setCurve("_releaseCurve","Out",e)}get decayCurve(){return this._decayCurve}set decayCurve(e){assert$1(["linear","exponential"].some(s=>s===e),`Invalid envelope curve: ${e}`),this._decayCurve=e}triggerAttack(e,s=1){this.log("triggerAttack",e,s),e=this.toSeconds(e);let c=this.toSeconds(this.attack);const d=this.toSeconds(this.decay),_=this.getValueAtTime(e);if(_>0){const b=1/c;c=(1-_)/b}if(c0){const o=this.toSeconds(this.release);o{let e,s;const o=[];for(e=0;e<128;e++)o[e]=Math.sin(e/(128-1)*(Math.PI/2));const c=[],d=6.4;for(e=0;e<128-1;e++){s=e/(128-1);const et=Math.sin(s*(Math.PI*2)*d-Math.PI/2)+1;c[e]=et/10+s*.83}c[128-1]=1;const _=[],b=5;for(e=0;e<128;e++)_[e]=Math.ceil(e/(128-1)*b)/b;const k=[];for(e=0;e<128;e++)s=e/(128-1),k[e]=.5*(1-Math.cos(Math.PI*s));const $=[];for(e=0;e<128;e++){s=e/(128-1);const et=Math.pow(s,3)*4+.2,tt=Math.cos(et*Math.PI*2*s);$[e]=Math.abs(tt*(1-s))}function j(et){const tt=new Array(et.length);for(let nt=0;nt{const d=c[s],_=this.context.transport.schedule(b=>{c[s]=b,o.apply(this,c)},d);this._scheduledEvents.push(_)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease),this}triggerAttackRelease(e,s,o,c){const d=this.toSeconds(o),_=this.toSeconds(s);return this.triggerAttack(e,d,c),this.triggerRelease(d+_),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic$1 extends Instrument$1{constructor(){super(optionsFromArguments$1(Monophonic$1.getDefaults(),arguments));const e=optionsFromArguments$1(Monophonic$1.getDefaults(),arguments);this.portamento=e.portamento,this.onsilence=e.onsilence}static getDefaults(){return Object.assign(Instrument$1.getDefaults(),{detune:0,onsilence:noOp$1,portamento:0})}triggerAttack(e,s,o=1){this.log("triggerAttack",e,s,o);const c=this.toSeconds(s);return this._triggerEnvelopeAttack(c,o),this.setNote(e,c),this}triggerRelease(e){this.log("triggerRelease",e);const s=this.toSeconds(e);return this._triggerEnvelopeRelease(s),this}setNote(e,s){const o=this.toSeconds(s),c=e instanceof FrequencyClass$1?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(o)>.05){const d=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(c,d,o)}else this.frequency.setValueAtTime(c,o);return this}}__decorate$1([timeRange$1(0)],Monophonic$1.prototype,"portamento",void 0);class AmplitudeEnvelope$1 extends Envelope$1{constructor(){super(optionsFromArguments$1(AmplitudeEnvelope$1.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain$2({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth$2 extends Monophonic$1{constructor(){super(optionsFromArguments$1(Synth$2.getDefaults(),arguments)),this.name="Synth";const e=optionsFromArguments$1(Synth$2.getDefaults(),arguments);this.oscillator=new OmniOscillator$1(Object.assign({context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)},e.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope$1(Object.assign({context:this.context},e.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly$1(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),[...Object.keys(Source$1.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(e,s){if(this.envelope.triggerAttack(e,s),this.oscillator.start(e),this.envelope.sustain===0){const o=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+o+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class ModulationSynth extends Monophonic$1{constructor(){super(optionsFromArguments$1(ModulationSynth.getDefaults(),arguments)),this.name="ModulationSynth";const e=optionsFromArguments$1(ModulationSynth.getDefaults(),arguments);this._carrier=new Synth$2({context:this.context,oscillator:e.oscillator,envelope:e.envelope,onsilence:()=>this.onsilence(this),volume:-10}),this._modulator=new Synth$2({context:this.context,oscillator:e.modulation,envelope:e.modulationEnvelope,volume:-10}),this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope,this.modulation=this._modulator.oscillator,this.modulationEnvelope=this._modulator.envelope,this.frequency=new Signal$1({context:this.context,units:"frequency"}),this.detune=new Signal$1({context:this.context,value:e.detune,units:"cents"}),this.harmonicity=new Multiply$1({context:this.context,value:e.harmonicity,minValue:0}),this._modulationNode=new Gain$2({context:this.context,gain:0}),readOnly$1(this,["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"])}static getDefaults(){return Object.assign(Monophonic$1.getDefaults(),{harmonicity:3,oscillator:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),[...Object.keys(Source$1.getDefaults()),"frequency","detune"]),{type:"sine"}),envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.01,decay:.01,sustain:1,release:.5}),modulation:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),[...Object.keys(Source$1.getDefaults()),"frequency","detune"]),{type:"square"}),modulationEnvelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.5,decay:0,sustain:1,release:.5})})}_triggerEnvelopeAttack(e,s){this._carrier._triggerEnvelopeAttack(e,s),this._modulator._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this._carrier._triggerEnvelopeRelease(e),this._modulator._triggerEnvelopeRelease(e),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this._carrier.dispose(),this._modulator.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._modulationNode.dispose(),this}}class AMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments$1(AMSynth$1.getDefaults(),arguments)),this.name="AMSynth",this._modulationScale=new AudioToGain$1({context:this.context}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output)}dispose(){return super.dispose(),this._modulationScale.dispose(),this}}class BiquadFilter extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(BiquadFilter.getDefaults(),arguments,["frequency","type"])),this.name="BiquadFilter";const e=optionsFromArguments$1(BiquadFilter.getDefaults(),arguments,["frequency","type"]);this._filter=this.context.createBiquadFilter(),this.input=this.output=this._filter,this.Q=new Param$1({context:this.context,units:"number",value:e.Q,param:this._filter.Q}),this.frequency=new Param$1({context:this.context,units:"frequency",value:e.frequency,param:this._filter.frequency}),this.detune=new Param$1({context:this.context,units:"cents",value:e.detune,param:this._filter.detune}),this.gain=new Param$1({context:this.context,units:"decibels",convert:!1,value:e.gain,param:this._filter.gain}),this.type=e.type}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{Q:1,type:"lowpass",frequency:350,detune:0,gain:0})}get type(){return this._filter.type}set type(e){assert$1(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(e)!==-1,`Invalid filter type: ${e}`),this._filter.type=e}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let _=0;_o.type=e)}get rolloff(){return this._rolloff}set rolloff(e){const s=isNumber$1(e)?e:parseInt(e,10),o=[-12,-24,-48,-96];let c=o.indexOf(s);assert$1(c!==-1,`rolloff can only be ${o.join(", ")}`),c+=1,this._rolloff=s,this.input.disconnect(),this._filters.forEach(d=>d.disconnect()),this._filters=new Array(c);for(let d=0;d1);return this._filters.forEach(()=>{s.getFrequencyResponse(e).forEach((d,_)=>o[_]*=d)}),s.dispose(),o}dispose(){return super.dispose(),this._filters.forEach(e=>{e.dispose()}),writable$1(this,["detune","frequency","gain","Q"]),this.frequency.dispose(),this.Q.dispose(),this.detune.dispose(),this.gain.dispose(),this}}class FrequencyEnvelope extends Envelope$1{constructor(){super(optionsFromArguments$1(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="FrequencyEnvelope";const e=optionsFromArguments$1(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this._octaves=e.octaves,this._baseFrequency=this.toFrequency(e.baseFrequency),this._exponent=this.input=new Pow({context:this.context,value:e.exponent}),this._scale=this.output=new Scale({context:this.context,min:this._baseFrequency,max:this._baseFrequency*Math.pow(2,this._octaves)}),this._sig.chain(this._exponent,this._scale)}static getDefaults(){return Object.assign(Envelope$1.getDefaults(),{baseFrequency:200,exponent:1,octaves:4})}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){const s=this.toFrequency(e);assertRange$1(s,0),this._baseFrequency=s,this._scale.min=this._baseFrequency,this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._scale.max=this._baseFrequency*Math.pow(2,e)}get exponent(){return this._exponent.value}set exponent(e){this._exponent.value=e}dispose(){return super.dispose(),this._exponent.dispose(),this._scale.dispose(),this}}class MonoSynth$1 extends Monophonic$1{constructor(){super(optionsFromArguments$1(MonoSynth$1.getDefaults(),arguments)),this.name="MonoSynth";const e=optionsFromArguments$1(MonoSynth$1.getDefaults(),arguments);this.oscillator=new OmniOscillator$1(Object.assign(e.oscillator,{context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)})),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.filterEnvelope=new FrequencyEnvelope(Object.assign(e.filterEnvelope,{context:this.context})),this.envelope=new AmplitudeEnvelope$1(Object.assign(e.envelope,{context:this.context})),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),readOnly$1(this,["oscillator","frequency","detune","filter","filterEnvelope","envelope"])}static getDefaults(){return Object.assign(Monophonic$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.9}),filter:Object.assign(omitFromObject$1(Filter$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{Q:1,rolloff:-12,type:"lowpass"}),filterEnvelope:Object.assign(omitFromObject$1(FrequencyEnvelope.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.6,baseFrequency:200,decay:.2,exponent:2,octaves:3,release:2,sustain:.5}),oscillator:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),Object.keys(Source$1.getDefaults())),{type:"sawtooth"})})}_triggerEnvelopeAttack(e,s=1){if(this.envelope.triggerAttack(e,s),this.filterEnvelope.triggerAttack(e),this.oscillator.start(e),this.envelope.sustain===0){const o=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+o+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.filterEnvelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this.filterEnvelope.dispose(),this.filter.dispose(),this}}class DuoSynth$1 extends Monophonic$1{constructor(){super(optionsFromArguments$1(DuoSynth$1.getDefaults(),arguments)),this.name="DuoSynth";const e=optionsFromArguments$1(DuoSynth$1.getDefaults(),arguments);this.voice0=new MonoSynth$1(Object.assign(e.voice0,{context:this.context,onsilence:()=>this.onsilence(this)})),this.voice1=new MonoSynth$1(Object.assign(e.voice1,{context:this.context})),this.harmonicity=new Multiply$1({context:this.context,units:"positive",value:e.harmonicity}),this._vibrato=new LFO({frequency:e.vibratoRate,context:this.context,min:-50,max:50}),this._vibrato.start(),this.vibratoRate=this._vibrato.frequency,this._vibratoGain=new Gain$2({context:this.context,units:"normalRange",gain:e.vibratoAmount}),this.vibratoAmount=this._vibratoGain.gain,this.frequency=new Signal$1({context:this.context,units:"frequency",value:440}),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),this.frequency.connect(this.voice0.frequency),this.frequency.chain(this.harmonicity,this.voice1.frequency),this._vibrato.connect(this._vibratoGain),this._vibratoGain.fan(this.voice0.detune,this.voice1.detune),this.detune.fan(this.voice0.detune,this.voice1.detune),this.voice0.connect(this.output),this.voice1.connect(this.output),readOnly$1(this,["voice0","voice1","frequency","vibratoAmount","vibratoRate"])}getLevelAtTime(e){return e=this.toSeconds(e),this.voice0.envelope.getValueAtTime(e)+this.voice1.envelope.getValueAtTime(e)}static getDefaults(){return deepMerge$1(Monophonic$1.getDefaults(),{vibratoAmount:.5,vibratoRate:5,harmonicity:1.5,voice0:deepMerge$1(omitFromObject$1(MonoSynth$1.getDefaults(),Object.keys(Monophonic$1.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}}),voice1:deepMerge$1(omitFromObject$1(MonoSynth$1.getDefaults(),Object.keys(Monophonic$1.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}})})}_triggerEnvelopeAttack(e,s){this.voice0._triggerEnvelopeAttack(e,s),this.voice1._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this.voice0._triggerEnvelopeRelease(e),this.voice1._triggerEnvelopeRelease(e),this}dispose(){return super.dispose(),this.voice0.dispose(),this.voice1.dispose(),this.frequency.dispose(),this.detune.dispose(),this._vibrato.dispose(),this.vibratoRate.dispose(),this._vibratoGain.dispose(),this.harmonicity.dispose(),this}}class FMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments$1(FMSynth$1.getDefaults(),arguments)),this.name="FMSynth";const e=optionsFromArguments$1(FMSynth$1.getDefaults(),arguments);this.modulationIndex=new Multiply$1({context:this.context,value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output)}static getDefaults(){return Object.assign(ModulationSynth.getDefaults(),{modulationIndex:10})}dispose(){return super.dispose(),this.modulationIndex.dispose(),this}}const inharmRatios=[1,1.483,1.932,2.546,2.63,3.897];class MetalSynth$1 extends Monophonic$1{constructor(){super(optionsFromArguments$1(MetalSynth$1.getDefaults(),arguments)),this.name="MetalSynth",this._oscillators=[],this._freqMultipliers=[];const e=optionsFromArguments$1(MetalSynth$1.getDefaults(),arguments);this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),this.frequency=new Signal$1({context:this.context,units:"frequency"}),this._amplitude=new Gain$2({context:this.context,gain:0}).connect(this.output),this._highpass=new Filter$1({Q:0,context:this.context,type:"highpass"}).connect(this._amplitude);for(let s=0;sthis.onsilence(this):noOp$1,type:"square"});o.connect(this._highpass),this._oscillators[s]=o;const c=new Multiply$1({context:this.context,value:inharmRatios[s]});this._freqMultipliers[s]=c,this.frequency.chain(c,o.frequency),this.detune.connect(o.detune)}this._filterFreqScaler=new Scale({context:this.context,max:7e3,min:this.toFrequency(e.resonance)}),this.envelope=new Envelope$1({attack:e.envelope.attack,attackCurve:"linear",context:this.context,decay:e.envelope.decay,release:e.envelope.release,sustain:0}),this.envelope.chain(this._filterFreqScaler,this._highpass.frequency),this.envelope.connect(this._amplitude.gain),this._octaves=e.octaves,this.octaves=e.octaves}static getDefaults(){return deepMerge$1(Monophonic$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.001,decay:1.4,release:.2}),harmonicity:5.1,modulationIndex:32,octaves:1.5,resonance:4e3})}_triggerEnvelopeAttack(e,s=1){return this.envelope.triggerAttack(e,s),this._oscillators.forEach(o=>o.start(e)),this.envelope.sustain===0&&this._oscillators.forEach(o=>{o.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay))}),this}_triggerEnvelopeRelease(e){return this.envelope.triggerRelease(e),this._oscillators.forEach(s=>s.stop(e+this.toSeconds(this.envelope.release))),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}get modulationIndex(){return this._oscillators[0].modulationIndex.value}set modulationIndex(e){this._oscillators.forEach(s=>s.modulationIndex.value=e)}get harmonicity(){return this._oscillators[0].harmonicity.value}set harmonicity(e){this._oscillators.forEach(s=>s.harmonicity.value=e)}get resonance(){return this._filterFreqScaler.min}set resonance(e){this._filterFreqScaler.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._filterFreqScaler.max=this._filterFreqScaler.min*Math.pow(2,e)}dispose(){return super.dispose(),this._oscillators.forEach(e=>e.dispose()),this._freqMultipliers.forEach(e=>e.dispose()),this.frequency.dispose(),this.detune.dispose(),this._filterFreqScaler.dispose(),this._amplitude.dispose(),this.envelope.dispose(),this._highpass.dispose(),this}}class MembraneSynth$2 extends Synth$2{constructor(){super(optionsFromArguments$1(MembraneSynth$2.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const e=optionsFromArguments$1(MembraneSynth$2.getDefaults(),arguments);this.pitchDecay=e.pitchDecay,this.octaves=e.octaves,readOnly$1(this,["oscillator","envelope"])}static getDefaults(){return deepMerge$1(Monophonic$1.getDefaults(),Synth$2.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(e,s){const o=this.toSeconds(s),c=this.toFrequency(e instanceof FrequencyClass$1?e.toFrequency():e),d=c*this.octaves;return this.oscillator.frequency.setValueAtTime(d,o),this.oscillator.frequency.exponentialRampToValueAtTime(c,o+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate$1([range$1(0)],MembraneSynth$2.prototype,"octaves",void 0);__decorate$1([timeRange$1(0)],MembraneSynth$2.prototype,"pitchDecay",void 0);class NoiseSynth$1 extends Instrument$1{constructor(){super(optionsFromArguments$1(NoiseSynth$1.getDefaults(),arguments)),this.name="NoiseSynth";const e=optionsFromArguments$1(NoiseSynth$1.getDefaults(),arguments);this.noise=new Noise(Object.assign({context:this.context},e.noise)),this.envelope=new AmplitudeEnvelope$1(Object.assign({context:this.context},e.envelope)),this.noise.chain(this.envelope,this.output)}static getDefaults(){return Object.assign(Instrument$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{decay:.1,sustain:0}),noise:Object.assign(omitFromObject$1(Noise.getDefaults(),Object.keys(Source$1.getDefaults())),{type:"white"})})}triggerAttack(e,s=1){return e=this.toSeconds(e),this.envelope.triggerAttack(e,s),this.noise.start(e),this.envelope.sustain===0&&this.noise.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay)),this}triggerRelease(e){return e=this.toSeconds(e),this.envelope.triggerRelease(e),this.noise.stop(e+this.toSeconds(this.envelope.release)),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",0),this._syncMethod("triggerRelease",0)),this}triggerAttackRelease(e,s,o=1){return s=this.toSeconds(s),e=this.toSeconds(e),this.triggerAttack(s,o),this.triggerRelease(s+e),this}dispose(){return super.dispose(),this.noise.dispose(),this.envelope.dispose(),this}}const workletContext$1=new Set;function addToWorklet$1(a){workletContext$1.add(a)}function registerProcessor$1(a,e){const s=`registerProcessor("${a}", ${e})`;workletContext$1.add(s)}function getWorkletGlobalScope(){return Array.from(workletContext$1).join(` -`)}class ToneAudioWorklet extends ToneAudioNode$1{constructor(e){super(e),this.name="ToneAudioWorklet",this.workletOptions={},this.onprocessorerror=noOp$1;const s=URL.createObjectURL(new Blob([getWorkletGlobalScope()],{type:"text/javascript"})),o=this._audioWorkletName();this._dummyGain=this.context.createGain(),this._dummyParam=this._dummyGain.gain,this.context.addAudioWorkletModule(s,o).then(()=>{this.disposed||(this._worklet=this.context.createAudioWorkletNode(o,this.workletOptions),this._worklet.onprocessorerror=this.onprocessorerror.bind(this),this.onReady(this._worklet))})}dispose(){return super.dispose(),this._dummyGain.disconnect(),this._worklet&&(this._worklet.port.postMessage("dispose"),this._worklet.disconnect()),this}}const toneAudioWorkletProcessor$1=` - /** - * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. - */ - class ToneAudioWorkletProcessor extends AudioWorkletProcessor { - - constructor(options) { - - super(options); - /** - * If the processor was disposed or not. Keep alive until it's disposed. - */ - this.disposed = false; - /** - * The number of samples in the processing block - */ - this.blockSize = 128; - /** - * the sample rate - */ - this.sampleRate = sampleRate; - - this.port.onmessage = (event) => { - // when it receives a dispose - if (event.data === "dispose") { - this.disposed = true; - } - }; - } - } -`;addToWorklet$1(toneAudioWorkletProcessor$1);const singleIOProcess$1=` - /** - * Abstract class for a single input/output processor. - * has a 'generate' function which processes one sample at a time - */ - class SingleIOProcessor extends ToneAudioWorkletProcessor { - - constructor(options) { - super(Object.assign(options, { - numberOfInputs: 1, - numberOfOutputs: 1 - })); - /** - * Holds the name of the parameter and a single value of that - * parameter at the current sample - * @type { [name: string]: number } - */ - this.params = {} - } - - /** - * Generate an output sample from the input sample and parameters - * @abstract - * @param input number - * @param channel number - * @param parameters { [name: string]: number } - * @returns number - */ - generate(){} - - /** - * Update the private params object with the - * values of the parameters at the given index - * @param parameters { [name: string]: Float32Array }, - * @param index number - */ - updateParams(parameters, index) { - for (const paramName in parameters) { - const param = parameters[paramName]; - if (param.length > 1) { - this.params[paramName] = parameters[paramName][index]; - } else { - this.params[paramName] = parameters[paramName][0]; - } - } - } - - /** - * Process a single frame of the audio - * @param inputs Float32Array[][] - * @param outputs Float32Array[][] - */ - process(inputs, outputs, parameters) { - const input = inputs[0]; - const output = outputs[0]; - // get the parameter values - const channelCount = Math.max(input && input.length || 0, output.length); - for (let sample = 0; sample < this.blockSize; sample++) { - this.updateParams(parameters, sample); - for (let channel = 0; channel < channelCount; channel++) { - const inputSample = input && input.length ? input[channel][sample] : 0; - output[channel][sample] = this.generate(inputSample, channel, this.params); - } - } - return !this.disposed; - } - }; -`;addToWorklet$1(singleIOProcess$1);const delayLine$1=` - /** - * A multichannel buffer for use within an AudioWorkletProcessor as a delay line - */ - class DelayLine { - - constructor(size, channels) { - this.buffer = []; - this.writeHead = [] - this.size = size; - - // create the empty channels - for (let i = 0; i < channels; i++) { - this.buffer[i] = new Float32Array(this.size); - this.writeHead[i] = 0; - } - } - - /** - * Push a value onto the end - * @param channel number - * @param value number - */ - push(channel, value) { - this.writeHead[channel] += 1; - if (this.writeHead[channel] > this.size) { - this.writeHead[channel] = 0; - } - this.buffer[channel][this.writeHead[channel]] = value; - } - - /** - * Get the recorded value of the channel given the delay - * @param channel number - * @param delay number delay samples - */ - get(channel, delay) { - let readHead = this.writeHead[channel] - Math.floor(delay); - if (readHead < 0) { - readHead += this.size; - } - return this.buffer[channel][readHead]; - } - } -`;addToWorklet$1(delayLine$1);const workletName$3="feedback-comb-filter",feedbackCombFilter$1=` - class FeedbackCombFilterWorklet extends SingleIOProcessor { - - constructor(options) { - super(options); - this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2); - } - - static get parameterDescriptors() { - return [{ - name: "delayTime", - defaultValue: 0.1, - minValue: 0, - maxValue: 1, - automationRate: "k-rate" - }, { - name: "feedback", - defaultValue: 0.5, - minValue: 0, - maxValue: 0.9999, - automationRate: "k-rate" - }]; - } - - generate(input, channel, parameters) { - const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate); - this.delayLine.push(channel, input + delayedSample * parameters.feedback); - return delayedSample; - } - } -`;registerProcessor$1(workletName$3,feedbackCombFilter$1);class FeedbackCombFilter extends ToneAudioWorklet{constructor(){super(optionsFromArguments$1(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"])),this.name="FeedbackCombFilter";const e=optionsFromArguments$1(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"]);this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this.delayTime=new Param$1({context:this.context,value:e.delayTime,units:"time",minValue:0,maxValue:1,param:this._dummyParam,swappable:!0}),this.resonance=new Param$1({context:this.context,value:e.resonance,units:"normalRange",param:this._dummyParam,swappable:!0}),readOnly$1(this,["resonance","delayTime"])}_audioWorkletName(){return workletName$3}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{delayTime:.1,resonance:.5})}onReady(e){connectSeries$1(this.input,e,this.output);const s=e.parameters.get("delayTime");this.delayTime.setParam(s);const o=e.parameters.get("feedback");this.resonance.setParam(o)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.delayTime.dispose(),this.resonance.dispose(),this}}class OnePoleFilter extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(OnePoleFilter.getDefaults(),arguments,["frequency","type"])),this.name="OnePoleFilter";const e=optionsFromArguments$1(OnePoleFilter.getDefaults(),arguments,["frequency","type"]);this._frequency=e.frequency,this._type=e.type,this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this._createFilter()}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{frequency:880,type:"lowpass"})}_createFilter(){const e=this._filter,s=this.toFrequency(this._frequency),o=1/(2*Math.PI*s);if(this._type==="lowpass"){const c=1/(o*this.context.sampleRate),d=c-1;this._filter=this.context.createIIRFilter([c,0],[1,d])}else{const c=1/(o*this.context.sampleRate)-1;this._filter=this.context.createIIRFilter([1,-1],[1,c])}this.input.chain(this._filter,this.output),e&&this.context.setTimeout(()=>{this.disposed||(this.input.disconnect(e),e.disconnect())},this.blockTime)}get frequency(){return this._frequency}set frequency(e){this._frequency=e,this._createFilter()}get type(){return this._type}set type(e){this._type=e,this._createFilter()}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let d=0;do.voice===e);this._activeVoices.splice(s,1)}_getNextAvailableVoice(){if(this._availableVoices.length)return this._availableVoices.shift();if(this._voices.lengthMath.ceil(this._averageActiveVoices+1)){const e=this._availableVoices.shift(),s=this._voices.indexOf(e);this._voices.splice(s,1),this.context.isOffline||e.dispose()}}_triggerAttack(e,s,o){e.forEach(c=>{const d=new MidiClass(this.context,c).toMidi(),_=this._getNextAvailableVoice();_&&(_.triggerAttack(c,s,o),this._activeVoices.push({midi:d,voice:_,released:!1}),this.log("triggerAttack",c,s))})}_triggerRelease(e,s){e.forEach(o=>{const c=new MidiClass(this.context,o).toMidi(),d=this._activeVoices.find(({midi:_,released:b})=>_===c&&!b);d&&(d.voice.triggerRelease(s),d.released=!0,this.log("triggerRelease",o,s))})}_scheduleEvent(e,s,o,c){assert$1(!this.disposed,"Synth was already disposed"),o<=this.now()?e==="attack"?this._triggerAttack(s,o,c):this._triggerRelease(s,o):this.context.setTimeout(()=>{this._scheduleEvent(e,s,o,c)},o-this.now())}triggerAttack(e,s,o){Array.isArray(e)||(e=[e]);const c=this.toSeconds(s);return this._scheduleEvent("attack",e,c,o),this}triggerRelease(e,s){Array.isArray(e)||(e=[e]);const o=this.toSeconds(s);return this._scheduleEvent("release",e,o),this}triggerAttackRelease(e,s,o,c){const d=this.toSeconds(o);if(this.triggerAttack(e,d,c),isArray$1(s)){assert$1(isArray$1(e),"If the duration is an array, the notes must also be an array"),e=e;for(let _=0;_0,"The duration must be greater than 0"),this.triggerRelease(e[_],d+k)}}else{const _=this.toSeconds(s);assert$1(_>0,"The duration must be greater than 0"),this.triggerRelease(e,d+_)}return this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}set(e){const s=omitFromObject$1(e,["onsilence","context"]);return this.options=deepMerge$1(this.options,s),this._voices.forEach(o=>o.set(s)),this._dummyVoice.set(s),this}get(){return this._dummyVoice.get()}releaseAll(e){const s=this.toSeconds(e);return this._activeVoices.forEach(({voice:o})=>{o.triggerRelease(s)}),this}dispose(){return super.dispose(),this._dummyVoice.dispose(),this._voices.forEach(e=>e.dispose()),this._activeVoices=[],this._availableVoices=[],this.context.clearInterval(this._gcTimeout),this}}class Sampler$2 extends Instrument$1{constructor(){super(optionsFromArguments$1(Sampler$2.getDefaults(),arguments,["urls","onload","baseUrl"],"urls")),this.name="Sampler",this._activeSources=new Map;const e=optionsFromArguments$1(Sampler$2.getDefaults(),arguments,["urls","onload","baseUrl"],"urls"),s={};Object.keys(e.urls).forEach(o=>{const c=parseInt(o,10);if(assert$1(isNote$2(o)||isNumber$1(c)&&isFinite(c),`url key is neither a note or midi pitch: ${o}`),isNote$2(o)){const d=new FrequencyClass$1(this.context,o).toMidi();s[d]=e.urls[o]}else isNumber$1(c)&&isFinite(c)&&(s[c]=e.urls[c])}),this._buffers=new ToneAudioBuffers$1({urls:s,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.attack=e.attack,this.release=e.release,this.curve=e.curve,this._buffers.loaded&&Promise.resolve().then(e.onload)}static getDefaults(){return Object.assign(Instrument$1.getDefaults(),{attack:0,baseUrl:"",curve:"exponential",onload:noOp$1,onerror:noOp$1,release:.1,urls:{}})}_findClosest(e){let o=0;for(;o<96;){if(this._buffers.has(e+o))return-o;if(this._buffers.has(e-o))return o;o++}throw new Error(`No available buffers for note: ${e}`)}triggerAttack(e,s,o=1){return this.log("triggerAttack",e,s,o),Array.isArray(e)||(e=[e]),e.forEach(c=>{const d=ftomf$1(new FrequencyClass$1(this.context,c).toFrequency()),_=Math.round(d),b=d-_,k=this._findClosest(_),$=_-k,j=this._buffers.get($),_e=intervalToFrequencyRatio$1(k+b),et=new ToneBufferSource$1({url:j,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:_e}).connect(this.output);et.start(s,0,j.duration/_e,o),isArray$1(this._activeSources.get(_))||this._activeSources.set(_,[]),this._activeSources.get(_).push(et),et.onended=()=>{if(this._activeSources&&this._activeSources.has(_)){const tt=this._activeSources.get(_),nt=tt.indexOf(et);nt!==-1&&tt.splice(nt,1)}}}),this}triggerRelease(e,s){return this.log("triggerRelease",e,s),Array.isArray(e)||(e=[e]),e.forEach(o=>{const c=new FrequencyClass$1(this.context,o).toMidi();if(this._activeSources.has(c)&&this._activeSources.get(c).length){const d=this._activeSources.get(c);s=this.toSeconds(s),d.forEach(_=>{_.stop(s)}),this._activeSources.set(c,[])}}),this}releaseAll(e){const s=this.toSeconds(e);return this._activeSources.forEach(o=>{for(;o.length;)o.shift().stop(s)}),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}triggerAttackRelease(e,s,o,c=1){const d=this.toSeconds(o);return this.triggerAttack(e,d,c),isArray$1(s)?(assert$1(isArray$1(e),"notes must be an array when duration is array"),e.forEach((_,b)=>{const k=s[Math.min(b,s.length-1)];this.triggerRelease(_,d+this.toSeconds(k))})):this.triggerRelease(e,d+this.toSeconds(s)),this}add(e,s,o){if(assert$1(isNote$2(e)||isFinite(e),`note must be a pitch or midi: ${e}`),isNote$2(e)){const c=new FrequencyClass$1(this.context,e).toMidi();this._buffers.add(c,s,o)}else this._buffers.add(e,s,o);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(s=>s.dispose())}),this._activeSources.clear(),this}}__decorate$1([timeRange$1(0)],Sampler$2.prototype,"attack",void 0);__decorate$1([timeRange$1(0)],Sampler$2.prototype,"release",void 0);class ToneEvent extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(ToneEvent.getDefaults(),arguments,["callback","value"])),this.name="ToneEvent",this._state=new StateTimeline$1("stopped"),this._startOffset=0;const e=optionsFromArguments$1(ToneEvent.getDefaults(),arguments,["callback","value"]);this._loop=e.loop,this.callback=e.callback,this.value=e.value,this._loopStart=this.toTicks(e.loopStart),this._loopEnd=this.toTicks(e.loopEnd),this._playbackRate=e.playbackRate,this._probability=e.probability,this._humanize=e.humanize,this.mute=e.mute,this._playbackRate=e.playbackRate,this._state.increasing=!0,this._rescheduleEvents()}static getDefaults(){return Object.assign(ToneWithContext$1.getDefaults(),{callback:noOp$1,humanize:!1,loop:!1,loopEnd:"1m",loopStart:0,mute:!1,playbackRate:1,probability:1,value:null})}_rescheduleEvents(e=-1){this._state.forEachFrom(e,s=>{let o;if(s.state==="started"){s.id!==-1&&this.context.transport.clear(s.id);const c=s.time+Math.round(this.startOffset/this._playbackRate);if(this._loop===!0||isNumber$1(this._loop)&&this._loop>1){o=1/0,isNumber$1(this._loop)&&(o=this._loop*this._getLoopDuration());const d=this._state.getAfter(c);d!==null&&(o=Math.min(o,d.time-c)),o!==1/0&&(this._state.setStateAtTime("stopped",c+o+1,{id:-1}),o=new TicksClass$1(this.context,o));const _=new TicksClass$1(this.context,this._getLoopDuration());s.id=this.context.transport.scheduleRepeat(this._tick.bind(this),_,new TicksClass$1(this.context,c),o)}else s.id=this.context.transport.schedule(this._tick.bind(this),new TicksClass$1(this.context,c))}})}get state(){return this._state.getValueAtTime(this.context.transport.ticks)}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e}get probability(){return this._probability}set probability(e){this._probability=e}get humanize(){return this._humanize}set humanize(e){this._humanize=e}start(e){const s=this.toTicks(e);return this._state.getValueAtTime(s)==="stopped"&&(this._state.add({id:-1,state:"started",time:s}),this._rescheduleEvents(s)),this}stop(e){this.cancel(e);const s=this.toTicks(e);if(this._state.getValueAtTime(s)==="started"){this._state.setStateAtTime("stopped",s,{id:-1});const o=this._state.getBefore(s);let c=s;o!==null&&(c=o.time),this._rescheduleEvents(c)}return this}cancel(e){e=defaultArg$1(e,-1/0);const s=this.toTicks(e);return this._state.forEachFrom(s,o=>{this.context.transport.clear(o.id)}),this._state.cancel(s),this}_tick(e){const s=this.context.transport.getTicksAtTime(e);if(!this.mute&&this._state.getValueAtTime(s)==="started"){if(this.probability<1&&Math.random()>this.probability)return;if(this.humanize){let o=.02;isBoolean$1(this.humanize)||(o=this.toSeconds(this.humanize)),e+=(Math.random()*2-1)*o}this.callback(e,this.value)}}_getLoopDuration(){return Math.round((this._loopEnd-this._loopStart)/this._playbackRate)}get loop(){return this._loop}set loop(e){this._loop=e,this._rescheduleEvents()}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._rescheduleEvents()}get loopEnd(){return new TicksClass$1(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._rescheduleEvents()}get loopStart(){return new TicksClass$1(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._rescheduleEvents()}get progress(){if(this._loop){const e=this.context.transport.ticks,s=this._state.get(e);if(s!==null&&s.state==="started"){const o=this._getLoopDuration();return(e-s.time)%o/o}else return 0}else return 0}dispose(){return super.dispose(),this.cancel(),this._state.dispose(),this}}class Loop extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(Loop.getDefaults(),arguments,["callback","interval"])),this.name="Loop";const e=optionsFromArguments$1(Loop.getDefaults(),arguments,["callback","interval"]);this._event=new ToneEvent({context:this.context,callback:this._tick.bind(this),loop:!0,loopEnd:e.interval,playbackRate:e.playbackRate,probability:e.probability}),this.callback=e.callback,this.iterations=e.iterations}static getDefaults(){return Object.assign(ToneWithContext$1.getDefaults(),{interval:"4n",callback:noOp$1,playbackRate:1,iterations:1/0,probability:1,mute:!1,humanize:!1})}start(e){return this._event.start(e),this}stop(e){return this._event.stop(e),this}cancel(e){return this._event.cancel(e),this}_tick(e){this.callback(e)}get state(){return this._event.state}get progress(){return this._event.progress}get interval(){return this._event.loopEnd}set interval(e){this._event.loopEnd=e}get playbackRate(){return this._event.playbackRate}set playbackRate(e){this._event.playbackRate=e}get humanize(){return this._event.humanize}set humanize(e){this._event.humanize=e}get probability(){return this._event.probability}set probability(e){this._event.probability=e}get mute(){return this._event.mute}set mute(e){this._event.mute=e}get iterations(){return this._event.loop===!0?1/0:this._event.loop}set iterations(e){e===1/0?this._event.loop=!0:this._event.loop=e}dispose(){return super.dispose(),this._event.dispose(),this}}class Part extends ToneEvent{constructor(){super(optionsFromArguments$1(Part.getDefaults(),arguments,["callback","events"])),this.name="Part",this._state=new StateTimeline$1("stopped"),this._events=new Set;const e=optionsFromArguments$1(Part.getDefaults(),arguments,["callback","events"]);this._state.increasing=!0,e.events.forEach(s=>{isArray$1(s)?this.add(s[0],s[1]):this.add(s)})}static getDefaults(){return Object.assign(ToneEvent.getDefaults(),{events:[]})}start(e,s){const o=this.toTicks(e);if(this._state.getValueAtTime(o)!=="started"){s=defaultArg$1(s,this._loop?this._loopStart:0),this._loop?s=defaultArg$1(s,this._loopStart):s=defaultArg$1(s,0);const c=this.toTicks(s);this._state.add({id:-1,offset:c,state:"started",time:o}),this._forEach(d=>{this._startNote(d,o,c)})}return this}_startNote(e,s,o){s-=o,this._loop?e.startOffset>=this._loopStart&&e.startOffset=o&&(e.loop=!1,e.start(new TicksClass$1(this.context,s))):e.startOffset>=o&&e.start(new TicksClass$1(this.context,s))}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e,this._forEach(s=>{s.startOffset+=this._startOffset})}stop(e){const s=this.toTicks(e);return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this._forEach(o=>{o.stop(e)}),this}at(e,s){const o=new TransportTimeClass$1(this.context,e).toTicks(),c=new TicksClass$1(this.context,1).toSeconds(),d=this._events.values();let _=d.next();for(;!_.done;){const b=_.value;if(Math.abs(o-b.startOffset){s.state==="started"?this._startNote(e,s.time,s.offset):e.stop(new TicksClass$1(this.context,s.time))})}remove(e,s){return isObject$1(e)&&e.hasOwnProperty("time")&&(s=e,e=s.time),e=this.toTicks(e),this._events.forEach(o=>{o.startOffset===e&&(isUndef$1(s)||isDefined$1(s)&&o.value===s)&&(this._events.delete(o),o.dispose())}),this}clear(){return this._forEach(e=>e.dispose()),this._events.clear(),this}cancel(e){return this._forEach(s=>s.cancel(e)),this._state.cancel(this.toTicks(e)),this}_forEach(e){return this._events&&this._events.forEach(s=>{s instanceof Part?s._forEach(e):e(s)}),this}_setAll(e,s){this._forEach(o=>{o[e]=s})}_tick(e,s){this.mute||this.callback(e,s)}_testLoopBoundries(e){this._loop&&(e.startOffset=this._loopEnd)?e.cancel(0):e.state==="stopped"&&this._restartEvent(e)}get probability(){return this._probability}set probability(e){this._probability=e,this._setAll("probability",e)}get humanize(){return this._humanize}set humanize(e){this._humanize=e,this._setAll("humanize",e)}get loop(){return this._loop}set loop(e){this._loop=e,this._forEach(s=>{s.loopStart=this.loopStart,s.loopEnd=this.loopEnd,s.loop=e,this._testLoopBoundries(s)})}get loopEnd(){return new TicksClass$1(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopEnd=e,this._testLoopBoundries(s)})}get loopStart(){return new TicksClass$1(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopStart=this.loopStart,this._testLoopBoundries(s)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._setAll("playbackRate",e)}get length(){return this._events.size}dispose(){return super.dispose(),this.clear(),this}}function*upPatternGen(a){let e=0;for(;e=0;)e=clampToArraySize(e,a),yield a[e],e--}function*infiniteGen(a,e){for(;;)yield*e(a)}function clampToArraySize(a,e){return clamp$1(a,0,e.length-1)}function*alternatingGenerator(a,e){let s=e?0:a.length-1;for(;;)s=clampToArraySize(s,a),yield a[s],e?(s++,s>=a.length-1&&(e=!1)):(s--,s<=0&&(e=!0))}function*jumpUp(a){let e=0,s=0;for(;e=0;)e=clampToArraySize(e,a),yield a[e],s++,e+=s%2?-2:1}function*randomGen(a){for(;;){const e=Math.floor(Math.random()*a.length);yield a[e]}}function*randomOnce(a){const e=[];for(let s=0;s0;){const s=e.splice(Math.floor(e.length*Math.random()),1),o=clampToArraySize(s[0],a);yield a[o]}}function*randomWalk(a){let e=Math.floor(Math.random()*a.length);for(;;)e===0?e++:e===a.length-1||Math.random()<.5?e--:e++,yield a[e]}function*PatternGenerator(a,e="up",s=0){switch(assert$1(a.length>0,"The array must have more than one value in it"),e){case"up":yield*infiniteGen(a,upPatternGen);case"down":yield*infiniteGen(a,downPatternGen);case"upDown":yield*alternatingGenerator(a,!0);case"downUp":yield*alternatingGenerator(a,!1);case"alternateUp":yield*infiniteGen(a,jumpUp);case"alternateDown":yield*infiniteGen(a,jumpDown);case"random":yield*randomGen(a);case"randomOnce":yield*infiniteGen(a,randomOnce);case"randomWalk":yield*randomWalk(a)}}class Pattern$1 extends Loop{constructor(){super(optionsFromArguments$1(Pattern$1.getDefaults(),arguments,["callback","values","pattern"])),this.name="Pattern";const e=optionsFromArguments$1(Pattern$1.getDefaults(),arguments,["callback","values","pattern"]);this.callback=e.callback,this._values=e.values,this._pattern=PatternGenerator(e.values,e.pattern),this._type=e.pattern}static getDefaults(){return Object.assign(Loop.getDefaults(),{pattern:"up",values:[],callback:noOp$1})}_tick(e){const s=this._pattern.next();this._value=s.value,this.callback(e,this._value)}get values(){return this._values}set values(e){this._values=e,this.pattern=this._type}get value(){return this._value}get pattern(){return this._type}set pattern(e){this._type=e,this._pattern=PatternGenerator(this._values,this._type)}}class Sequence extends ToneEvent{constructor(){super(optionsFromArguments$1(Sequence.getDefaults(),arguments,["callback","events","subdivision"])),this.name="Sequence",this._part=new Part({callback:this._seqCallback.bind(this),context:this.context}),this._events=[],this._eventsArray=[];const e=optionsFromArguments$1(Sequence.getDefaults(),arguments,["callback","events","subdivision"]);this._subdivision=this.toTicks(e.subdivision),this.events=e.events,this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.playbackRate=e.playbackRate,this.probability=e.probability,this.humanize=e.humanize,this.mute=e.mute,this.playbackRate=e.playbackRate}static getDefaults(){return Object.assign(omitFromObject$1(ToneEvent.getDefaults(),["value"]),{events:[],loop:!0,loopEnd:0,loopStart:0,subdivision:"8n"})}_seqCallback(e,s){s!==null&&this.callback(e,s)}get events(){return this._events}set events(e){this.clear(),this._eventsArray=e,this._events=this._createSequence(this._eventsArray),this._eventsUpdated()}start(e,s){return this._part.start(e,s&&this._indexTime(s)),this}stop(e){return this._part.stop(e),this}get subdivision(){return new TicksClass$1(this.context,this._subdivision).toSeconds()}_createSequence(e){return new Proxy(e,{get:(s,o)=>s[o],set:(s,o,c)=>(isString$1(o)&&isFinite(parseInt(o,10))&&isArray$1(c)?s[o]=this._createSequence(c):s[o]=c,this._eventsUpdated(),!0)})}_eventsUpdated(){this._part.clear(),this._rescheduleSequence(this._eventsArray,this._subdivision,this.startOffset),this.loopEnd=this.loopEnd}_rescheduleSequence(e,s,o){e.forEach((c,d)=>{const _=d*s+o;if(isArray$1(c))this._rescheduleSequence(c,s/c.length,_);else{const b=new TicksClass$1(this.context,_,"i").toSeconds();this._part.add(b,c)}})}_indexTime(e){return new TicksClass$1(this.context,e*this._subdivision+this.startOffset).toSeconds()}clear(){return this._part.clear(),this}dispose(){return super.dispose(),this._part.dispose(),this}get loop(){return this._part.loop}set loop(e){this._part.loop=e}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this._part.loopStart=this._indexTime(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,e===0?this._part.loopEnd=this._indexTime(this._eventsArray.length):this._part.loopEnd=this._indexTime(e)}get startOffset(){return this._part.startOffset}set startOffset(e){this._part.startOffset=e}get playbackRate(){return this._part.playbackRate}set playbackRate(e){this._part.playbackRate=e}get probability(){return this._part.probability}set probability(e){this._part.probability=e}get progress(){return this._part.progress}get humanize(){return this._part.humanize}set humanize(e){this._part.humanize=e}get length(){return this._part.length}}class CrossFade extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(CrossFade.getDefaults(),arguments,["fade"]))),this.name="CrossFade",this._panner=this.context.createStereoPanner(),this._split=this.context.createChannelSplitter(2),this._g2a=new GainToAudio({context:this.context}),this.a=new Gain$2({context:this.context,gain:0}),this.b=new Gain$2({context:this.context,gain:0}),this.output=new Gain$2({context:this.context}),this._internalChannels=[this.a,this.b];const e=optionsFromArguments$1(CrossFade.getDefaults(),arguments,["fade"]);this.fade=new Signal$1({context:this.context,units:"normalRange",value:e.fade}),readOnly$1(this,"fade"),this.context.getConstant(1).connect(this._panner),this._panner.connect(this._split),this._panner.channelCount=1,this._panner.channelCountMode="explicit",connect$1(this._split,this.a.gain,0),connect$1(this._split,this.b.gain,1),this.fade.chain(this._g2a,this._panner.pan),this.a.connect(this.output),this.b.connect(this.output)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{fade:.5})}dispose(){return super.dispose(),this.a.dispose(),this.b.dispose(),this.output.dispose(),this.fade.dispose(),this._g2a.dispose(),this._panner.disconnect(),this._split.disconnect(),this}}class Effect extends ToneAudioNode$1{constructor(e){super(e),this.name="Effect",this._dryWet=new CrossFade({context:this.context}),this.wet=this._dryWet.fade,this.effectSend=new Gain$2({context:this.context}),this.effectReturn=new Gain$2({context:this.context}),this.input=new Gain$2({context:this.context}),this.output=this._dryWet,this.input.fan(this._dryWet.a,this.effectSend),this.effectReturn.connect(this._dryWet.b),this.wet.setValueAtTime(e.wet,0),this._internalChannels=[this.effectReturn,this.effectSend],readOnly$1(this,"wet")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{wet:1})}connectEffect(e){return this._internalChannels.push(e),this.effectSend.chain(e,this.effectReturn),this}dispose(){return super.dispose(),this._dryWet.dispose(),this.effectSend.dispose(),this.effectReturn.dispose(),this.wet.dispose(),this}}class LFOEffect extends Effect{constructor(e){super(e),this.name="LFOEffect",this._lfo=new LFO({context:this.context,frequency:e.frequency,amplitude:e.depth}),this.depth=this._lfo.amplitude,this.frequency=this._lfo.frequency,this.type=e.type,readOnly$1(this,["frequency","depth"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:1,type:"sine",depth:1})}start(e){return this._lfo.start(e),this}stop(e){return this._lfo.stop(e),this}sync(){return this._lfo.sync(),this}unsync(){return this._lfo.unsync(),this}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class AutoFilter$1 extends LFOEffect{constructor(){super(optionsFromArguments$1(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"])),this.name="AutoFilter";const e=optionsFromArguments$1(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"]);this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.connectEffect(this.filter),this._lfo.connect(this.filter.frequency),this.octaves=e.octaves,this.baseFrequency=e.baseFrequency}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{baseFrequency:200,octaves:2.6,filter:{type:"lowpass",rolloff:-12,Q:1}})}get baseFrequency(){return this._lfo.min}set baseFrequency(e){this._lfo.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._lfo.max=this._lfo.min*Math.pow(2,e)}dispose(){return super.dispose(),this.filter.dispose(),this}}class Panner$1 extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(Panner$1.getDefaults(),arguments,["pan"]))),this.name="Panner",this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner;const e=optionsFromArguments$1(Panner$1.getDefaults(),arguments,["pan"]);this.pan=new Param$1({context:this.context,param:this._panner.pan,value:e.pan,minValue:-1,maxValue:1}),this._panner.channelCount=e.channelCount,this._panner.channelCountMode="explicit",readOnly$1(this,"pan")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}}class AutoPanner extends LFOEffect{constructor(){super(optionsFromArguments$1(AutoPanner.getDefaults(),arguments,["frequency"])),this.name="AutoPanner";const e=optionsFromArguments$1(AutoPanner.getDefaults(),arguments,["frequency"]);this._panner=new Panner$1({context:this.context,channelCount:e.channelCount}),this.connectEffect(this._panner),this._lfo.connect(this._panner.pan),this._lfo.min=-1,this._lfo.max=1}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{channelCount:1})}dispose(){return super.dispose(),this._panner.dispose(),this}}class Follower extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Follower.getDefaults(),arguments,["smoothing"])),this.name="Follower";const e=optionsFromArguments$1(Follower.getDefaults(),arguments,["smoothing"]);this._abs=this.input=new Abs({context:this.context}),this._lowpass=this.output=new OnePoleFilter({context:this.context,frequency:1/this.toSeconds(e.smoothing),type:"lowpass"}),this._abs.connect(this._lowpass),this._smoothing=e.smoothing}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{smoothing:.05})}get smoothing(){return this._smoothing}set smoothing(e){this._smoothing=e,this._lowpass.frequency=1/this.toSeconds(this.smoothing)}dispose(){return super.dispose(),this._abs.dispose(),this._lowpass.dispose(),this}}class AutoWah extends Effect{constructor(){super(optionsFromArguments$1(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"])),this.name="AutoWah";const e=optionsFromArguments$1(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"]);this._follower=new Follower({context:this.context,smoothing:e.follower}),this._sweepRange=new ScaleExp({context:this.context,min:0,max:1,exponent:.5}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this._inputBoost=new Gain$2({context:this.context}),this._bandpass=new Filter$1({context:this.context,rolloff:-48,frequency:0,Q:e.Q}),this._peaking=new Filter$1({context:this.context,type:"peaking"}),this._peaking.gain.value=e.gain,this.gain=this._peaking.gain,this.Q=this._bandpass.Q,this.effectSend.chain(this._inputBoost,this._follower,this._sweepRange),this._sweepRange.connect(this._bandpass.frequency),this._sweepRange.connect(this._peaking.frequency),this.effectSend.chain(this._bandpass,this._peaking,this.effectReturn),this._setSweepRange(),this.sensitivity=e.sensitivity,readOnly$1(this,["gain","Q"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{baseFrequency:100,octaves:6,sensitivity:0,Q:2,gain:2,follower:.2})}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._setSweepRange()}get follower(){return this._follower.smoothing}set follower(e){this._follower.smoothing=e}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){this._baseFrequency=this.toFrequency(e),this._setSweepRange()}get sensitivity(){return gainToDb$1(1/this._inputBoost.gain.value)}set sensitivity(e){this._inputBoost.gain.value=1/dbToGain$1(e)}_setSweepRange(){this._sweepRange.min=this._baseFrequency,this._sweepRange.max=Math.min(this._baseFrequency*Math.pow(2,this._octaves),this.context.sampleRate/2)}dispose(){return super.dispose(),this._follower.dispose(),this._sweepRange.dispose(),this._bandpass.dispose(),this._peaking.dispose(),this._inputBoost.dispose(),this}}const workletName$2="bit-crusher",bitCrusherWorklet$1=` - class BitCrusherWorklet extends SingleIOProcessor { - - static get parameterDescriptors() { - return [{ - name: "bits", - defaultValue: 12, - minValue: 1, - maxValue: 16, - automationRate: 'k-rate' - }]; - } - - generate(input, _channel, parameters) { - const step = Math.pow(0.5, parameters.bits - 1); - const val = step * Math.floor(input / step + 0.5); - return val; - } - } -`;registerProcessor$1(workletName$2,bitCrusherWorklet$1);class BitCrusher extends Effect{constructor(){super(optionsFromArguments$1(BitCrusher.getDefaults(),arguments,["bits"])),this.name="BitCrusher";const e=optionsFromArguments$1(BitCrusher.getDefaults(),arguments,["bits"]);this._bitCrusherWorklet=new BitCrusherWorklet({context:this.context,bits:e.bits}),this.connectEffect(this._bitCrusherWorklet),this.bits=this._bitCrusherWorklet.bits}static getDefaults(){return Object.assign(Effect.getDefaults(),{bits:4})}dispose(){return super.dispose(),this._bitCrusherWorklet.dispose(),this}}class BitCrusherWorklet extends ToneAudioWorklet{constructor(){super(optionsFromArguments$1(BitCrusherWorklet.getDefaults(),arguments)),this.name="BitCrusherWorklet";const e=optionsFromArguments$1(BitCrusherWorklet.getDefaults(),arguments);this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this.bits=new Param$1({context:this.context,value:e.bits,units:"positive",minValue:1,maxValue:16,param:this._dummyParam,swappable:!0})}static getDefaults(){return Object.assign(ToneAudioWorklet.getDefaults(),{bits:12})}_audioWorkletName(){return workletName$2}onReady(e){connectSeries$1(this.input,e,this.output);const s=e.parameters.get("bits");this.bits.setParam(s)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.bits.dispose(),this}}class Chebyshev extends Effect{constructor(){super(optionsFromArguments$1(Chebyshev.getDefaults(),arguments,["order"])),this.name="Chebyshev";const e=optionsFromArguments$1(Chebyshev.getDefaults(),arguments,["order"]);this._shaper=new WaveShaper$1({context:this.context,length:4096}),this._order=e.order,this.connectEffect(this._shaper),this.order=e.order,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{order:1,oversample:"none"})}_getCoefficient(e,s,o){return o.has(s)||(s===0?o.set(s,0):s===1?o.set(s,e):o.set(s,2*e*this._getCoefficient(e,s-1,o)-this._getCoefficient(e,s-2,o))),o.get(s)}get order(){return this._order}set order(e){this._order=e,this._shaper.setMap(s=>this._getCoefficient(s,e,new Map))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class Split extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Split.getDefaults(),arguments,["channels"])),this.name="Split";const e=optionsFromArguments$1(Split.getDefaults(),arguments,["channels"]);this._splitter=this.input=this.output=this.context.createChannelSplitter(e.channels),this._internalChannels=[this._splitter]}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._splitter.disconnect(),this}}class Merge extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Merge.getDefaults(),arguments,["channels"])),this.name="Merge";const e=optionsFromArguments$1(Merge.getDefaults(),arguments,["channels"]);this._merger=this.output=this.input=this.context.createChannelMerger(e.channels)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._merger.disconnect(),this}}class StereoEffect extends ToneAudioNode$1{constructor(e){super(e),this.name="StereoEffect",this.input=new Gain$2({context:this.context}),this.input.channelCount=2,this.input.channelCountMode="explicit",this._dryWet=this.output=new CrossFade({context:this.context,fade:e.wet}),this.wet=this._dryWet.fade,this._split=new Split({context:this.context,channels:2}),this._merge=new Merge({context:this.context,channels:2}),this.input.connect(this._split),this.input.connect(this._dryWet.a),this._merge.connect(this._dryWet.b),readOnly$1(this,["wet"])}connectEffectLeft(...e){this._split.connect(e[0],0,0),connectSeries$1(...e),connect$1(e[e.length-1],this._merge,0,0)}connectEffectRight(...e){this._split.connect(e[0],1,0),connectSeries$1(...e),connect$1(e[e.length-1],this._merge,0,1)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{wet:1})}dispose(){return super.dispose(),this._dryWet.dispose(),this._split.dispose(),this._merge.dispose(),this}}class StereoFeedbackEffect extends StereoEffect{constructor(e){super(e),this.feedback=new Signal$1({context:this.context,value:e.feedback,units:"normalRange"}),this._feedbackL=new Gain$2({context:this.context}),this._feedbackR=new Gain$2({context:this.context}),this._feedbackSplit=new Split({context:this.context,channels:2}),this._feedbackMerge=new Merge({context:this.context,channels:2}),this._merge.connect(this._feedbackSplit),this._feedbackMerge.connect(this._split),this._feedbackSplit.connect(this._feedbackL,0,0),this._feedbackL.connect(this._feedbackMerge,0,0),this._feedbackSplit.connect(this._feedbackR,1,0),this._feedbackR.connect(this._feedbackMerge,0,1),this.feedback.fan(this._feedbackL.gain,this._feedbackR.gain),readOnly$1(this,["feedback"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{feedback:.5})}dispose(){return super.dispose(),this.feedback.dispose(),this._feedbackL.dispose(),this._feedbackR.dispose(),this._feedbackSplit.dispose(),this._feedbackMerge.dispose(),this}}class Chorus extends StereoFeedbackEffect{constructor(){super(optionsFromArguments$1(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"])),this.name="Chorus";const e=optionsFromArguments$1(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"]);this._depth=e.depth,this._delayTime=e.delayTime/1e3,this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._delayNodeL=new Delay({context:this.context}),this._delayNodeR=new Delay({context:this.context}),this.frequency=this._lfoL.frequency,readOnly$1(this,["frequency"]),this._lfoL.frequency.connect(this._lfoR.frequency),this.connectEffectLeft(this._delayNodeL),this.connectEffectRight(this._delayNodeR),this._lfoL.connect(this._delayNodeL.delayTime),this._lfoR.connect(this._delayNodeR.delayTime),this.depth=this._depth,this.type=e.type,this.spread=e.spread}static getDefaults(){return Object.assign(StereoFeedbackEffect.getDefaults(),{frequency:1.5,delayTime:3.5,depth:.7,type:"sine",spread:180,feedback:0,wet:.5})}get depth(){return this._depth}set depth(e){this._depth=e;const s=this._delayTime*e;this._lfoL.min=Math.max(this._delayTime-s,0),this._lfoL.max=this._delayTime+s,this._lfoR.min=Math.max(this._delayTime-s,0),this._lfoR.max=this._delayTime+s}get delayTime(){return this._delayTime*1e3}set delayTime(e){this._delayTime=e/1e3,this.depth=this._depth}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._delayNodeL.dispose(),this._delayNodeR.dispose(),this.frequency.dispose(),this}}class Distortion extends Effect{constructor(){super(optionsFromArguments$1(Distortion.getDefaults(),arguments,["distortion"])),this.name="Distortion";const e=optionsFromArguments$1(Distortion.getDefaults(),arguments,["distortion"]);this._shaper=new WaveShaper$1({context:this.context,length:4096}),this._distortion=e.distortion,this.connectEffect(this._shaper),this.distortion=e.distortion,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{distortion:.4,oversample:"none"})}get distortion(){return this._distortion}set distortion(e){this._distortion=e;const s=e*100,o=Math.PI/180;this._shaper.setMap(c=>Math.abs(c)<.001?0:(3+s)*c*20*o/(Math.PI+s*Math.abs(c)))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class FeedbackEffect extends Effect{constructor(e){super(e),this.name="FeedbackEffect",this._feedbackGain=new Gain$2({context:this.context,gain:e.feedback,units:"normalRange"}),this.feedback=this._feedbackGain.gain,readOnly$1(this,"feedback"),this.effectReturn.chain(this._feedbackGain,this.effectSend)}static getDefaults(){return Object.assign(Effect.getDefaults(),{feedback:.125})}dispose(){return super.dispose(),this._feedbackGain.dispose(),this.feedback.dispose(),this}}class FeedbackDelay extends FeedbackEffect{constructor(){super(optionsFromArguments$1(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="FeedbackDelay";const e=optionsFromArguments$1(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"]);this._delayNode=new Delay({context:this.context,delayTime:e.delayTime,maxDelay:e.maxDelay}),this.delayTime=this._delayNode.delayTime,this.connectEffect(this._delayNode),readOnly$1(this,"delayTime")}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._delayNode.dispose(),this.delayTime.dispose(),this}}class PhaseShiftAllpass extends ToneAudioNode$1{constructor(e){super(e),this.name="PhaseShiftAllpass",this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this.offset90=new Gain$2({context:this.context});const s=[.6923878,.9360654322959,.988229522686,.9987488452737],o=[.4021921162426,.856171088242,.9722909545651,.9952884791278];this._bank0=this._createAllPassFilterBank(s),this._bank1=this._createAllPassFilterBank(o),this._oneSampleDelay=this.context.createIIRFilter([0,1],[1,0]),connectSeries$1(this.input,...this._bank0,this._oneSampleDelay,this.output),connectSeries$1(this.input,...this._bank1,this.offset90)}_createAllPassFilterBank(e){return e.map(o=>{const c=[[o*o,0,-1],[1,0,-(o*o)]];return this.context.createIIRFilter(c[0],c[1])})}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.offset90.dispose(),this._bank0.forEach(e=>e.disconnect()),this._bank1.forEach(e=>e.disconnect()),this._oneSampleDelay.disconnect(),this}}class FrequencyShifter extends Effect{constructor(){super(optionsFromArguments$1(FrequencyShifter.getDefaults(),arguments,["frequency"])),this.name="FrequencyShifter";const e=optionsFromArguments$1(FrequencyShifter.getDefaults(),arguments,["frequency"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency,minValue:-this.context.sampleRate/2,maxValue:this.context.sampleRate/2}),this._sine=new ToneOscillatorNode$1({context:this.context,type:"sine"}),this._cosine=new Oscillator$1({context:this.context,phase:-90,type:"sine"}),this._sineMultiply=new Multiply$1({context:this.context}),this._cosineMultiply=new Multiply$1({context:this.context}),this._negate=new Negate({context:this.context}),this._add=new Add({context:this.context}),this._phaseShifter=new PhaseShiftAllpass({context:this.context}),this.effectSend.connect(this._phaseShifter),this.frequency.fan(this._sine.frequency,this._cosine.frequency),this._phaseShifter.offset90.connect(this._cosineMultiply),this._cosine.connect(this._cosineMultiply.factor),this._phaseShifter.connect(this._sineMultiply),this._sine.connect(this._sineMultiply.factor),this._sineMultiply.connect(this._negate),this._cosineMultiply.connect(this._add),this._negate.connect(this._add.addend),this._add.connect(this.effectReturn);const s=this.immediate();this._sine.start(s),this._cosine.start(s)}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:0})}dispose(){return super.dispose(),this.frequency.dispose(),this._add.dispose(),this._cosine.dispose(),this._cosineMultiply.dispose(),this._negate.dispose(),this._phaseShifter.dispose(),this._sine.dispose(),this._sineMultiply.dispose(),this}}const combFilterTunings=[1557/44100,1617/44100,1491/44100,1422/44100,1277/44100,1356/44100,1188/44100,1116/44100],allpassFilterFrequencies=[225,556,441,341];class Freeverb extends StereoEffect{constructor(){super(optionsFromArguments$1(Freeverb.getDefaults(),arguments,["roomSize","dampening"])),this.name="Freeverb",this._combFilters=[],this._allpassFiltersL=[],this._allpassFiltersR=[];const e=optionsFromArguments$1(Freeverb.getDefaults(),arguments,["roomSize","dampening"]);this.roomSize=new Signal$1({context:this.context,value:e.roomSize,units:"normalRange"}),this._allpassFiltersL=allpassFilterFrequencies.map(s=>{const o=this.context.createBiquadFilter();return o.type="allpass",o.frequency.value=s,o}),this._allpassFiltersR=allpassFilterFrequencies.map(s=>{const o=this.context.createBiquadFilter();return o.type="allpass",o.frequency.value=s,o}),this._combFilters=combFilterTunings.map((s,o)=>{const c=new LowpassCombFilter({context:this.context,dampening:e.dampening,delayTime:s});return os.dampening=e)}dispose(){return super.dispose(),this._allpassFiltersL.forEach(e=>e.disconnect()),this._allpassFiltersR.forEach(e=>e.disconnect()),this._combFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this}}const combFilterDelayTimes=[1687/25e3,1601/25e3,2053/25e3,2251/25e3],combFilterResonances=[.773,.802,.753,.733],allpassFilterFreqs=[347,113,37];class JCReverb extends StereoEffect{constructor(){super(optionsFromArguments$1(JCReverb.getDefaults(),arguments,["roomSize"])),this.name="JCReverb",this._allpassFilters=[],this._feedbackCombFilters=[];const e=optionsFromArguments$1(JCReverb.getDefaults(),arguments,["roomSize"]);this.roomSize=new Signal$1({context:this.context,value:e.roomSize,units:"normalRange"}),this._scaleRoomSize=new Scale({context:this.context,min:-.733,max:.197}),this._allpassFilters=allpassFilterFreqs.map(s=>{const o=this.context.createBiquadFilter();return o.type="allpass",o.frequency.value=s,o}),this._feedbackCombFilters=combFilterDelayTimes.map((s,o)=>{const c=new FeedbackCombFilter({context:this.context,delayTime:s});return this._scaleRoomSize.connect(c.resonance),c.resonance.value=combFilterResonances[o],oe.disconnect()),this._feedbackCombFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this._scaleRoomSize.dispose(),this}}class StereoXFeedbackEffect extends StereoFeedbackEffect{constructor(e){super(e),this._feedbackL.disconnect(),this._feedbackL.connect(this._feedbackMerge,0,1),this._feedbackR.disconnect(),this._feedbackR.connect(this._feedbackMerge,0,0),readOnly$1(this,["feedback"])}}class PingPongDelay extends StereoXFeedbackEffect{constructor(){super(optionsFromArguments$1(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="PingPongDelay";const e=optionsFromArguments$1(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"]);this._leftDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightPreDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this.delayTime=new Signal$1({context:this.context,units:"time",value:e.delayTime}),this.connectEffectLeft(this._leftDelay),this.connectEffectRight(this._rightPreDelay,this._rightDelay),this.delayTime.fan(this._leftDelay.delayTime,this._rightDelay.delayTime,this._rightPreDelay.delayTime),this._feedbackL.disconnect(),this._feedbackL.connect(this._rightDelay),readOnly$1(this,["delayTime"])}static getDefaults(){return Object.assign(StereoXFeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._leftDelay.dispose(),this._rightDelay.dispose(),this._rightPreDelay.dispose(),this.delayTime.dispose(),this}}class PitchShift extends FeedbackEffect{constructor(){super(optionsFromArguments$1(PitchShift.getDefaults(),arguments,["pitch"])),this.name="PitchShift";const e=optionsFromArguments$1(PitchShift.getDefaults(),arguments,["pitch"]);this._frequency=new Signal$1({context:this.context}),this._delayA=new Delay({maxDelay:1,context:this.context}),this._lfoA=new LFO({context:this.context,min:0,max:.1,type:"sawtooth"}).connect(this._delayA.delayTime),this._delayB=new Delay({maxDelay:1,context:this.context}),this._lfoB=new LFO({context:this.context,min:0,max:.1,type:"sawtooth",phase:180}).connect(this._delayB.delayTime),this._crossFade=new CrossFade({context:this.context}),this._crossFadeLFO=new LFO({context:this.context,min:0,max:1,type:"triangle",phase:90}).connect(this._crossFade.fade),this._feedbackDelay=new Delay({delayTime:e.delayTime,context:this.context}),this.delayTime=this._feedbackDelay.delayTime,readOnly$1(this,"delayTime"),this._pitch=e.pitch,this._windowSize=e.windowSize,this._delayA.connect(this._crossFade.a),this._delayB.connect(this._crossFade.b),this._frequency.fan(this._lfoA.frequency,this._lfoB.frequency,this._crossFadeLFO.frequency),this.effectSend.fan(this._delayA,this._delayB),this._crossFade.chain(this._feedbackDelay,this.effectReturn);const s=this.now();this._lfoA.start(s),this._lfoB.start(s),this._crossFadeLFO.start(s),this.windowSize=this._windowSize}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{pitch:0,windowSize:.1,delayTime:0,feedback:0})}get pitch(){return this._pitch}set pitch(e){this._pitch=e;let s=0;e<0?(this._lfoA.min=0,this._lfoA.max=this._windowSize,this._lfoB.min=0,this._lfoB.max=this._windowSize,s=intervalToFrequencyRatio$1(e-1)+1):(this._lfoA.min=this._windowSize,this._lfoA.max=0,this._lfoB.min=this._windowSize,this._lfoB.max=0,s=intervalToFrequencyRatio$1(e)-1),this._frequency.value=s*(1.2/this._windowSize)}get windowSize(){return this._windowSize}set windowSize(e){this._windowSize=this.toSeconds(e),this.pitch=this._pitch}dispose(){return super.dispose(),this._frequency.dispose(),this._delayA.dispose(),this._delayB.dispose(),this._lfoA.dispose(),this._lfoB.dispose(),this._crossFade.dispose(),this._crossFadeLFO.dispose(),this._feedbackDelay.dispose(),this}}class Phaser extends StereoEffect{constructor(){super(optionsFromArguments$1(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"])),this.name="Phaser";const e=optionsFromArguments$1(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"]);this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this.Q=new Signal$1({context:this.context,value:e.Q,units:"positive"}),this._filtersL=this._makeFilters(e.stages,this._lfoL),this._filtersR=this._makeFilters(e.stages,this._lfoR),this.frequency=this._lfoL.frequency,this.frequency.value=e.frequency,this.connectEffectLeft(...this._filtersL),this.connectEffectRight(...this._filtersR),this._lfoL.frequency.connect(this._lfoR.frequency),this.baseFrequency=e.baseFrequency,this.octaves=e.octaves,this._lfoL.start(),this._lfoR.start(),readOnly$1(this,["frequency","Q"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:.5,octaves:3,stages:10,Q:10,baseFrequency:350})}_makeFilters(e,s){const o=[];for(let c=0;ce.disconnect()),this._filtersR.forEach(e=>e.disconnect()),this.frequency.dispose(),this}}class Reverb extends Effect{constructor(){super(optionsFromArguments$1(Reverb.getDefaults(),arguments,["decay"])),this.name="Reverb",this._convolver=this.context.createConvolver(),this.ready=Promise.resolve();const e=optionsFromArguments$1(Reverb.getDefaults(),arguments,["decay"]);this._decay=e.decay,this._preDelay=e.preDelay,this.generate(),this.connectEffect(this._convolver)}static getDefaults(){return Object.assign(Effect.getDefaults(),{decay:1.5,preDelay:.01})}get decay(){return this._decay}set decay(e){e=this.toSeconds(e),assertRange$1(e,.001),this._decay=e,this.generate()}get preDelay(){return this._preDelay}set preDelay(e){e=this.toSeconds(e),assertRange$1(e,0),this._preDelay=e,this.generate()}generate(){return __awaiter$5(this,void 0,void 0,function*(){const e=this.ready,s=new OfflineContext$1(2,this._decay+this._preDelay,this.context.sampleRate),o=new Noise({context:s}),c=new Noise({context:s}),d=new Merge({context:s});o.connect(d,0,0),c.connect(d,0,1);const _=new Gain$2({context:s}).toDestination();d.connect(_),o.start(0),c.start(0),_.gain.setValueAtTime(0,0),_.gain.setValueAtTime(1,this._preDelay),_.gain.exponentialApproachValueAtTime(0,this._preDelay,this.decay);const b=s.render();return this.ready=b.then(noOp$1),yield e,this._convolver.buffer=(yield b).get(),this})}dispose(){return super.dispose(),this._convolver.disconnect(),this}}class MidSideSplit extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MidSideSplit.getDefaults(),arguments)),this.name="MidSideSplit",this._split=this.input=new Split({channels:2,context:this.context}),this._midAdd=new Add({context:this.context}),this.mid=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._sideSubtract=new Subtract({context:this.context}),this.side=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._split.connect(this._midAdd,0),this._split.connect(this._midAdd.addend,1),this._split.connect(this._sideSubtract,0),this._split.connect(this._sideSubtract.subtrahend,1),this._midAdd.connect(this.mid),this._sideSubtract.connect(this.side)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midAdd.dispose(),this._sideSubtract.dispose(),this._split.dispose(),this}}class MidSideMerge extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MidSideMerge.getDefaults(),arguments)),this.name="MidSideMerge",this.mid=new Gain$2({context:this.context}),this.side=new Gain$2({context:this.context}),this._left=new Add({context:this.context}),this._leftMult=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._right=new Subtract({context:this.context}),this._rightMult=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._merge=this.output=new Merge({context:this.context}),this.mid.fan(this._left),this.side.connect(this._left.addend),this.mid.connect(this._right),this.side.connect(this._right.subtrahend),this._left.connect(this._leftMult),this._right.connect(this._rightMult),this._leftMult.connect(this._merge,0,0),this._rightMult.connect(this._merge,0,1)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._leftMult.dispose(),this._rightMult.dispose(),this._left.dispose(),this._right.dispose(),this}}class MidSideEffect extends Effect{constructor(e){super(e),this.name="MidSideEffect",this._midSideMerge=new MidSideMerge({context:this.context}),this._midSideSplit=new MidSideSplit({context:this.context}),this._midSend=this._midSideSplit.mid,this._sideSend=this._midSideSplit.side,this._midReturn=this._midSideMerge.mid,this._sideReturn=this._midSideMerge.side,this.effectSend.connect(this._midSideSplit),this._midSideMerge.connect(this.effectReturn)}connectEffectMid(...e){this._midSend.chain(...e,this._midReturn)}connectEffectSide(...e){this._sideSend.chain(...e,this._sideReturn)}dispose(){return super.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this._midSend.dispose(),this._sideSend.dispose(),this._midReturn.dispose(),this._sideReturn.dispose(),this}}class StereoWidener extends MidSideEffect{constructor(){super(optionsFromArguments$1(StereoWidener.getDefaults(),arguments,["width"])),this.name="StereoWidener";const e=optionsFromArguments$1(StereoWidener.getDefaults(),arguments,["width"]);this.width=new Signal$1({context:this.context,value:e.width,units:"normalRange"}),readOnly$1(this,["width"]),this._twoTimesWidthMid=new Multiply$1({context:this.context,value:2}),this._twoTimesWidthSide=new Multiply$1({context:this.context,value:2}),this._midMult=new Multiply$1({context:this.context}),this._twoTimesWidthMid.connect(this._midMult.factor),this.connectEffectMid(this._midMult),this._oneMinusWidth=new Subtract({context:this.context}),this._oneMinusWidth.connect(this._twoTimesWidthMid),connect$1(this.context.getConstant(1),this._oneMinusWidth),this.width.connect(this._oneMinusWidth.subtrahend),this._sideMult=new Multiply$1({context:this.context}),this.width.connect(this._twoTimesWidthSide),this._twoTimesWidthSide.connect(this._sideMult.factor),this.connectEffectSide(this._sideMult)}static getDefaults(){return Object.assign(MidSideEffect.getDefaults(),{width:.5})}dispose(){return super.dispose(),this.width.dispose(),this._midMult.dispose(),this._sideMult.dispose(),this._twoTimesWidthMid.dispose(),this._twoTimesWidthSide.dispose(),this._oneMinusWidth.dispose(),this}}class Tremolo extends StereoEffect{constructor(){super(optionsFromArguments$1(Tremolo.getDefaults(),arguments,["frequency","depth"])),this.name="Tremolo";const e=optionsFromArguments$1(Tremolo.getDefaults(),arguments,["frequency","depth"]);this._lfoL=new LFO({context:this.context,type:e.type,min:1,max:0}),this._lfoR=new LFO({context:this.context,type:e.type,min:1,max:0}),this._amplitudeL=new Gain$2({context:this.context}),this._amplitudeR=new Gain$2({context:this.context}),this.frequency=new Signal$1({context:this.context,value:e.frequency,units:"frequency"}),this.depth=new Signal$1({context:this.context,value:e.depth,units:"normalRange"}),readOnly$1(this,["frequency","depth"]),this.connectEffectLeft(this._amplitudeL),this.connectEffectRight(this._amplitudeR),this._lfoL.connect(this._amplitudeL.gain),this._lfoR.connect(this._amplitudeR.gain),this.frequency.fan(this._lfoL.frequency,this._lfoR.frequency),this.depth.fan(this._lfoR.amplitude,this._lfoL.amplitude),this.spread=e.spread}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:10,type:"sine",depth:.5,spread:180})}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this.context.transport.syncSignal(this.frequency),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this.context.transport.unsyncSignal(this.frequency),this}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._amplitudeL.dispose(),this._amplitudeR.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Vibrato extends Effect{constructor(){super(optionsFromArguments$1(Vibrato.getDefaults(),arguments,["frequency","depth"])),this.name="Vibrato";const e=optionsFromArguments$1(Vibrato.getDefaults(),arguments,["frequency","depth"]);this._delayNode=new Delay({context:this.context,delayTime:0,maxDelay:e.maxDelay}),this._lfo=new LFO({context:this.context,type:e.type,min:0,max:e.maxDelay,frequency:e.frequency,phase:-90}).start().connect(this._delayNode.delayTime),this.frequency=this._lfo.frequency,this.depth=this._lfo.amplitude,this.depth.value=e.depth,readOnly$1(this,["frequency","depth"]),this.effectSend.chain(this._delayNode,this.effectReturn)}static getDefaults(){return Object.assign(Effect.getDefaults(),{maxDelay:.005,frequency:5,depth:.1,type:"sine"})}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._delayNode.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Analyser extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Analyser.getDefaults(),arguments,["type","size"])),this.name="Analyser",this._analysers=[],this._buffers=[];const e=optionsFromArguments$1(Analyser.getDefaults(),arguments,["type","size"]);this.input=this.output=this._gain=new Gain$2({context:this.context}),this._split=new Split({context:this.context,channels:e.channels}),this.input.connect(this._split),assertRange$1(e.channels,1);for(let s=0;s{const o=this._buffers[s];this._type==="fft"?e.getFloatFrequencyData(o):this._type==="waveform"&&e.getFloatTimeDomainData(o)}),this.channels===1?this._buffers[0]:this._buffers}get size(){return this._analysers[0].frequencyBinCount}set size(e){this._analysers.forEach((s,o)=>{s.fftSize=e*2,this._buffers[o]=new Float32Array(e)})}get channels(){return this._analysers.length}get type(){return this._type}set type(e){assert$1(e==="waveform"||e==="fft",`Analyser: invalid type: ${e}`),this._type=e}get smoothing(){return this._analysers[0].smoothingTimeConstant}set smoothing(e){this._analysers.forEach(s=>s.smoothingTimeConstant=e)}dispose(){return super.dispose(),this._analysers.forEach(e=>e.disconnect()),this._split.dispose(),this._gain.dispose(),this}}class MeterBase extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MeterBase.getDefaults(),arguments)),this.name="MeterBase",this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform"})}dispose(){return super.dispose(),this._analyser.dispose(),this}}class Meter extends MeterBase{constructor(){super(optionsFromArguments$1(Meter.getDefaults(),arguments,["smoothing"])),this.name="Meter",this._rms=0;const e=optionsFromArguments$1(Meter.getDefaults(),arguments,["smoothing"]);this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform",channels:e.channels}),this.smoothing=e.smoothing,this.normalRange=e.normalRange}static getDefaults(){return Object.assign(MeterBase.getDefaults(),{smoothing:.8,normalRange:!1,channels:1})}getLevel(){return warn$1("'getLevel' has been changed to 'getValue'"),this.getValue()}getValue(){const e=this._analyser.getValue(),o=(this.channels===1?[e]:e).map(c=>{const d=c.reduce((b,k)=>b+k*k,0),_=Math.sqrt(d/c.length);return this._rms=Math.max(_,this._rms*this.smoothing),this.normalRange?this._rms:gainToDb$1(this._rms)});return this.channels===1?o[0]:o}get channels(){return this._analyser.channels}dispose(){return super.dispose(),this._analyser.dispose(),this}}class FFT extends MeterBase{constructor(){super(optionsFromArguments$1(FFT.getDefaults(),arguments,["size"])),this.name="FFT";const e=optionsFromArguments$1(FFT.getDefaults(),arguments,["size"]);this.normalRange=e.normalRange,this._analyser.type="fft",this.size=e.size}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{normalRange:!1,size:1024,smoothing:.8})}getValue(){return this._analyser.getValue().map(s=>this.normalRange?dbToGain$1(s):s)}get size(){return this._analyser.size}set size(e){this._analyser.size=e}get smoothing(){return this._analyser.smoothing}set smoothing(e){this._analyser.smoothing=e}getFrequencyOfIndex(e){return assert$1(0<=e&&es._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo$1._soloed.has(this.context)||Solo$1._soloed.set(this.context,new Set),Solo$1._soloed.get(this.context).add(this)}_removeSolo(){Solo$1._soloed.has(this.context)&&Solo$1._soloed.get(this.context).delete(this)}_isSoloed(){return Solo$1._soloed.has(this.context)&&Solo$1._soloed.get(this.context).has(this)}_noSolos(){return!Solo$1._soloed.has(this.context)||Solo$1._soloed.has(this.context)&&Solo$1._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo$1._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo$1._allSolos=new Map;Solo$1._soloed=new Map;class PanVol$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(PanVol$1.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const e=optionsFromArguments$1(PanVol$1.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner$1({context:this.context,pan:e.pan,channelCount:e.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume$1({context:this.context,volume:e.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=e.mute,readOnly$1(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Channel$1.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const e=optionsFromArguments$1(Channel$1.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo$1({solo:e.solo,context:this.context}),this._panVol=this.output=new PanVol$1({context:this.context,pan:e.pan,volume:e.volume,mute:e.mute,channelCount:e.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly$1(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(e){return Channel$1.buses.has(e)||Channel$1.buses.set(e,new Gain$2({context:this.context})),Channel$1.buses.get(e)}send(e,s=0){const o=this._getBus(e),c=new Gain$2({context:this.context,units:"decibels",gain:s});return this.connect(c),c.connect(o),c}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel$1.buses=new Map;class Mono extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Mono.getDefaults(),arguments)),this.name="Mono",this.input=new Gain$2({context:this.context}),this._merge=this.output=new Merge({channels:2,context:this.context}),this.input.connect(this._merge,0,0),this.input.connect(this._merge,0,1)}dispose(){return super.dispose(),this._merge.dispose(),this.input.dispose(),this}}class MultibandSplit extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"])),this.name="MultibandSplit",this.input=new Gain$2({context:this.context}),this.output=void 0,this.low=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this._lowMidFilter=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this.mid=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this.high=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this._internalChannels=[this.low,this.mid,this.high];const e=optionsFromArguments$1(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"]);this.lowFrequency=new Signal$1({context:this.context,units:"frequency",value:e.lowFrequency}),this.highFrequency=new Signal$1({context:this.context,units:"frequency",value:e.highFrequency}),this.Q=new Signal$1({context:this.context,units:"positive",value:e.Q}),this.input.fan(this.low,this.high),this.input.chain(this._lowMidFilter,this.mid),this.lowFrequency.fan(this.low.frequency,this._lowMidFilter.frequency),this.highFrequency.fan(this.mid.frequency,this.high.frequency),this.Q.connect(this.low.Q),this.Q.connect(this._lowMidFilter.Q),this.Q.connect(this.mid.Q),this.Q.connect(this.high.Q),readOnly$1(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{Q:1,highFrequency:2500,lowFrequency:400})}dispose(){return super.dispose(),writable$1(this,["high","mid","low","highFrequency","lowFrequency"]),this.low.dispose(),this._lowMidFilter.dispose(),this.mid.dispose(),this.high.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this.Q.dispose(),this}}class Listener$2 extends ToneAudioNode$1{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param$1({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param$1({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param$1({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param$1({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param$1({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param$1({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param$1({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param$1({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param$1({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit$1(a=>{a.listener=new Listener$2({context:a})});onContextClose$1(a=>{a.listener.dispose()});class Panner3D extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"])),this.name="Panner3D";const e=optionsFromArguments$1(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"]);this._panner=this.input=this.output=this.context.createPanner(),this.panningModel=e.panningModel,this.maxDistance=e.maxDistance,this.distanceModel=e.distanceModel,this.coneOuterGain=e.coneOuterGain,this.coneOuterAngle=e.coneOuterAngle,this.coneInnerAngle=e.coneInnerAngle,this.refDistance=e.refDistance,this.rolloffFactor=e.rolloffFactor,this.positionX=new Param$1({context:this.context,param:this._panner.positionX,value:e.positionX}),this.positionY=new Param$1({context:this.context,param:this._panner.positionY,value:e.positionY}),this.positionZ=new Param$1({context:this.context,param:this._panner.positionZ,value:e.positionZ}),this.orientationX=new Param$1({context:this.context,param:this._panner.orientationX,value:e.orientationX}),this.orientationY=new Param$1({context:this.context,param:this._panner.orientationY,value:e.orientationY}),this.orientationZ=new Param$1({context:this.context,param:this._panner.orientationZ,value:e.orientationZ})}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:0,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1})}setPosition(e,s,o){return this.positionX.value=e,this.positionY.value=s,this.positionZ.value=o,this}setOrientation(e,s,o){return this.orientationX.value=e,this.orientationY.value=s,this.orientationZ.value=o,this}get panningModel(){return this._panner.panningModel}set panningModel(e){this._panner.panningModel=e}get refDistance(){return this._panner.refDistance}set refDistance(e){this._panner.refDistance=e}get rolloffFactor(){return this._panner.rolloffFactor}set rolloffFactor(e){this._panner.rolloffFactor=e}get distanceModel(){return this._panner.distanceModel}set distanceModel(e){this._panner.distanceModel=e}get coneInnerAngle(){return this._panner.coneInnerAngle}set coneInnerAngle(e){this._panner.coneInnerAngle=e}get coneOuterAngle(){return this._panner.coneOuterAngle}set coneOuterAngle(e){this._panner.coneOuterAngle=e}get coneOuterGain(){return this._panner.coneOuterGain}set coneOuterGain(e){this._panner.coneOuterGain=e}get maxDistance(){return this._panner.maxDistance}set maxDistance(e){this._panner.maxDistance=e}dispose(){return super.dispose(),this._panner.disconnect(),this.orientationX.dispose(),this.orientationY.dispose(),this.orientationZ.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this}}class Recorder extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Recorder.getDefaults(),arguments)),this.name="Recorder";const e=optionsFromArguments$1(Recorder.getDefaults(),arguments);this.input=new Gain$2({context:this.context}),assert$1(Recorder.supported,"Media Recorder API is not available"),this._stream=this.context.createMediaStreamDestination(),this.input.connect(this._stream),this._recorder=new MediaRecorder(this._stream.stream,{mimeType:e.mimeType})}static getDefaults(){return ToneAudioNode$1.getDefaults()}get mimeType(){return this._recorder.mimeType}static get supported(){return theWindow$1!==null&&Reflect.has(theWindow$1,"MediaRecorder")}get state(){return this._recorder.state==="inactive"?"stopped":this._recorder.state==="paused"?"paused":"started"}start(){return __awaiter$5(this,void 0,void 0,function*(){assert$1(this.state!=="started","Recorder is already started");const e=new Promise(s=>{const o=()=>{this._recorder.removeEventListener("start",o,!1),s()};this._recorder.addEventListener("start",o,!1)});return this._recorder.start(),yield e})}stop(){return __awaiter$5(this,void 0,void 0,function*(){assert$1(this.state!=="stopped","Recorder is not started");const e=new Promise(s=>{const o=c=>{this._recorder.removeEventListener("dataavailable",o,!1),s(c.data)};this._recorder.addEventListener("dataavailable",o,!1)});return this._recorder.stop(),yield e})}pause(){return assert$1(this.state==="started","Recorder must be started"),this._recorder.pause(),this}dispose(){return super.dispose(),this.input.dispose(),this._stream.disconnect(),this}}class Compressor extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Compressor.getDefaults(),arguments,["threshold","ratio"])),this.name="Compressor",this._compressor=this.context.createDynamicsCompressor(),this.input=this._compressor,this.output=this._compressor;const e=optionsFromArguments$1(Compressor.getDefaults(),arguments,["threshold","ratio"]);this.threshold=new Param$1({minValue:this._compressor.threshold.minValue,maxValue:this._compressor.threshold.maxValue,context:this.context,convert:!1,param:this._compressor.threshold,units:"decibels",value:e.threshold}),this.attack=new Param$1({minValue:this._compressor.attack.minValue,maxValue:this._compressor.attack.maxValue,context:this.context,param:this._compressor.attack,units:"time",value:e.attack}),this.release=new Param$1({minValue:this._compressor.release.minValue,maxValue:this._compressor.release.maxValue,context:this.context,param:this._compressor.release,units:"time",value:e.release}),this.knee=new Param$1({minValue:this._compressor.knee.minValue,maxValue:this._compressor.knee.maxValue,context:this.context,convert:!1,param:this._compressor.knee,units:"decibels",value:e.knee}),this.ratio=new Param$1({minValue:this._compressor.ratio.minValue,maxValue:this._compressor.ratio.maxValue,context:this.context,convert:!1,param:this._compressor.ratio,units:"positive",value:e.ratio}),readOnly$1(this,["knee","release","attack","ratio","threshold"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{attack:.003,knee:30,ratio:12,release:.25,threshold:-24})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.disconnect(),this.attack.dispose(),this.release.dispose(),this.threshold.dispose(),this.ratio.dispose(),this.knee.dispose(),this}}class Gate extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(Gate.getDefaults(),arguments,["threshold","smoothing"]))),this.name="Gate";const e=optionsFromArguments$1(Gate.getDefaults(),arguments,["threshold","smoothing"]);this._follower=new Follower({context:this.context,smoothing:e.smoothing}),this._gt=new GreaterThan({context:this.context,value:dbToGain$1(e.threshold)}),this.input=new Gain$2({context:this.context}),this._gate=this.output=new Gain$2({context:this.context}),this.input.connect(this._gate),this.input.chain(this._follower,this._gt,this._gate.gain)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{smoothing:.1,threshold:-40})}get threshold(){return gainToDb$1(this._gt.value)}set threshold(e){this._gt.value=dbToGain$1(e)}get smoothing(){return this._follower.smoothing}set smoothing(e){this._follower.smoothing=e}dispose(){return super.dispose(),this.input.dispose(),this._follower.dispose(),this._gt.dispose(),this._gate.dispose(),this}}class Limiter extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(Limiter.getDefaults(),arguments,["threshold"]))),this.name="Limiter";const e=optionsFromArguments$1(Limiter.getDefaults(),arguments,["threshold"]);this._compressor=this.input=this.output=new Compressor({context:this.context,ratio:20,attack:.003,release:.01,threshold:e.threshold}),this.threshold=this._compressor.threshold,readOnly$1(this,"threshold")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{threshold:-12})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.dispose(),this.threshold.dispose(),this}}class MidSideCompressor extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(MidSideCompressor.getDefaults(),arguments))),this.name="MidSideCompressor";const e=optionsFromArguments$1(MidSideCompressor.getDefaults(),arguments);this._midSideSplit=this.input=new MidSideSplit({context:this.context}),this._midSideMerge=this.output=new MidSideMerge({context:this.context}),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.side=new Compressor(Object.assign(e.side,{context:this.context})),this._midSideSplit.mid.chain(this.mid,this._midSideMerge.mid),this._midSideSplit.side.chain(this.side,this._midSideMerge.side),readOnly$1(this,["mid","side"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},side:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10}})}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this}}class MultibandCompressor extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(MultibandCompressor.getDefaults(),arguments))),this.name="MultibandCompressor";const e=optionsFromArguments$1(MultibandCompressor.getDefaults(),arguments);this._splitter=this.input=new MultibandSplit({context:this.context,lowFrequency:e.lowFrequency,highFrequency:e.highFrequency}),this.lowFrequency=this._splitter.lowFrequency,this.highFrequency=this._splitter.highFrequency,this.output=new Gain$2({context:this.context}),this.low=new Compressor(Object.assign(e.low,{context:this.context})),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.high=new Compressor(Object.assign(e.high,{context:this.context})),this._splitter.low.chain(this.low,this.output),this._splitter.mid.chain(this.mid,this.output),this._splitter.high.chain(this.high,this.output),readOnly$1(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{lowFrequency:250,highFrequency:2e3,low:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10},mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},high:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16}})}dispose(){return super.dispose(),this._splitter.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.output.dispose(),this}}class EQ3 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(EQ3.getDefaults(),arguments,["low","mid","high"])),this.name="EQ3",this.output=new Gain$2({context:this.context}),this._internalChannels=[];const e=optionsFromArguments$1(EQ3.getDefaults(),arguments,["low","mid","high"]);this.input=this._multibandSplit=new MultibandSplit({context:this.context,highFrequency:e.highFrequency,lowFrequency:e.lowFrequency}),this._lowGain=new Gain$2({context:this.context,gain:e.low,units:"decibels"}),this._midGain=new Gain$2({context:this.context,gain:e.mid,units:"decibels"}),this._highGain=new Gain$2({context:this.context,gain:e.high,units:"decibels"}),this.low=this._lowGain.gain,this.mid=this._midGain.gain,this.high=this._highGain.gain,this.Q=this._multibandSplit.Q,this.lowFrequency=this._multibandSplit.lowFrequency,this.highFrequency=this._multibandSplit.highFrequency,this._multibandSplit.low.chain(this._lowGain,this.output),this._multibandSplit.mid.chain(this._midGain,this.output),this._multibandSplit.high.chain(this._highGain,this.output),readOnly$1(this,["low","mid","high","lowFrequency","highFrequency"]),this._internalChannels=[this._multibandSplit]}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{high:0,highFrequency:2500,low:0,lowFrequency:400,mid:0})}dispose(){return super.dispose(),writable$1(this,["low","mid","high","lowFrequency","highFrequency"]),this._multibandSplit.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this._lowGain.dispose(),this._midGain.dispose(),this._highGain.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.Q.dispose(),this}}class Convolver extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Convolver.getDefaults(),arguments,["url","onload"])),this.name="Convolver",this._convolver=this.context.createConvolver();const e=optionsFromArguments$1(Convolver.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer$1(e.url,s=>{this.buffer=s,e.onload()}),this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this._buffer.loaded&&(this.buffer=this._buffer),this.normalize=e.normalize,this.input.chain(this._convolver,this.output)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{normalize:!0,onload:noOp$1})}load(e){return __awaiter$5(this,void 0,void 0,function*(){this.buffer=yield this._buffer.load(e)})}get buffer(){return this._buffer.length?this._buffer:null}set buffer(e){e&&this._buffer.set(e),this._convolver.buffer&&(this.input.disconnect(),this._convolver.disconnect(),this._convolver=this.context.createConvolver(),this.input.chain(this._convolver,this.output));const s=this._buffer.get();this._convolver.buffer=s||null}get normalize(){return this._convolver.normalize}set normalize(e){this._convolver.normalize=e}dispose(){return super.dispose(),this._buffer.dispose(),this._convolver.disconnect(),this}}function now(){return getContext$1().now()}function immediate(){return getContext$1().immediate()}const Transport$1=getContext$1().transport;function getTransport(){return getContext$1().transport}const Destination$2=getContext$1().destination,Master=getContext$1().destination;function getDestination$1(){return getContext$1().destination}const Listener$1=getContext$1().listener;function getListener(){return getContext$1().listener}const Draw$1=getContext$1().draw;function getDraw(){return getContext$1().draw}const context=getContext$1();function loaded(){return ToneAudioBuffer$1.loaded()}const Buffer=ToneAudioBuffer$1,Buffers=ToneAudioBuffers$1,BufferSource=ToneBufferSource$1;var _Tone=Object.freeze(Object.defineProperty({__proto__:null,now,immediate,Transport:Transport$1,getTransport,Destination:Destination$2,Master,getDestination:getDestination$1,Listener:Listener$1,getListener,Draw:Draw$1,getDraw,context,loaded,Buffer,Buffers,BufferSource,getContext:getContext$1,setContext:setContext$1,start,supported:isSupported,dbToGain:dbToGain$1,gainToDb:gainToDb$1,intervalToFrequencyRatio:intervalToFrequencyRatio$1,ftom:ftom$1,mtof:mtof$1,optionsFromArguments:optionsFromArguments$1,defaultArg:defaultArg$1,Clock:Clock$1,Context:Context$1,BaseContext:BaseContext$1,Delay,Gain:Gain$2,Offline,OfflineContext:OfflineContext$1,Param:Param$1,ToneAudioBuffer:ToneAudioBuffer$1,ToneAudioBuffers:ToneAudioBuffers$1,ToneAudioNode:ToneAudioNode$1,connectSeries:connectSeries$1,connect:connect$1,disconnect:disconnect$1,FrequencyClass:FrequencyClass$1,Frequency,MidiClass,Midi,TimeClass:TimeClass$1,Time,TicksClass:TicksClass$1,Ticks,TransportTimeClass:TransportTimeClass$1,TransportTime,Emitter:Emitter$1,IntervalTimeline:IntervalTimeline$1,StateTimeline:StateTimeline$1,Timeline:Timeline$1,isUndef:isUndef$1,isDefined:isDefined$1,isFunction:isFunction$1,isNumber:isNumber$1,isObject:isObject$1,isBoolean:isBoolean$1,isArray:isArray$1,isString:isString$1,isNote:isNote$2,Unit:Units,debug:Debug,Noise,UserMedia,Oscillator:Oscillator$1,AMOscillator:AMOscillator$1,FMOscillator:FMOscillator$1,PulseOscillator:PulseOscillator$1,FatOscillator:FatOscillator$1,PWMOscillator:PWMOscillator$1,OmniOscillator:OmniOscillator$1,ToneOscillatorNode:ToneOscillatorNode$1,LFO,ToneBufferSource:ToneBufferSource$1,Player:Player$1,Players:Players$1,GrainPlayer,Add,Abs,AudioToGain:AudioToGain$1,GainToAudio,GreaterThan,GreaterThanZero,Multiply:Multiply$1,Negate,Pow,Signal:Signal$1,connectSignal:connectSignal$1,Scale,ScaleExp,Subtract,SyncedSignal,WaveShaper:WaveShaper$1,Zero,AMSynth:AMSynth$1,DuoSynth:DuoSynth$1,FMSynth:FMSynth$1,MetalSynth:MetalSynth$1,MembraneSynth:MembraneSynth$2,MonoSynth:MonoSynth$1,NoiseSynth:NoiseSynth$1,PluckSynth:PluckSynth$1,PolySynth:PolySynth$1,Sampler:Sampler$2,Synth:Synth$2,Loop,Part,Pattern:Pattern$1,Sequence,ToneEvent,AutoFilter:AutoFilter$1,AutoPanner,AutoWah,BitCrusher,Chebyshev,Chorus,Distortion,FeedbackDelay,FrequencyShifter,Freeverb,JCReverb,PingPongDelay,PitchShift,Phaser,Reverb,StereoWidener,Tremolo,Vibrato,Analyser,Meter,FFT,DCMeter,Waveform,Follower,Channel:Channel$1,CrossFade,Merge,MidSideMerge,MidSideSplit,Mono,MultibandSplit,Panner:Panner$1,Panner3D,PanVol:PanVol$1,Recorder,Solo:Solo$1,Split,Volume:Volume$1,Compressor,Gate,Limiter,MidSideCompressor,MultibandCompressor,AmplitudeEnvelope:AmplitudeEnvelope$1,Envelope:Envelope$1,FrequencyEnvelope,EQ3,Filter:Filter$1,OnePoleFilter,FeedbackCombFilter,LowpassCombFilter,Convolver,BiquadFilter,version:version$1},Symbol.toStringTag,{value:"Module"})),__awaiter$4=globalThis&&globalThis.__awaiter||function(a,e,s,o){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(o.next(j))}catch(_e){_(_e)}}function k(j){try{$(o.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((o=o.apply(a,e||[])).next())})};class PianoComponent extends ToneAudioNode$1{constructor(e){super(e),this.name="PianoComponent",this.input=void 0,this.output=new Volume$1({context:this.context}),this._enabled=!1,this.volume=this.output.volume,this._loaded=!1,this.volume.value=e.volume,this._enabled=e.enabled,this.samples=e.samples}get loaded(){return this._loaded}load(){return __awaiter$4(this,void 0,void 0,function*(){if(this._enabled)yield this._internalLoad(),this._loaded=!0;else return Promise.resolve()})}}function midiToNote(a){return Frequency(a,"midi").toNote()}function randomBetween(a,e){return Math.random()*(e-a)+a}function getReleasesUrl(a){return`rel${a-20}.[mp3|ogg]`}function getHarmonicsUrl(a){return`harmS${midiToNote(a).replace("#","s")}.[mp3|ogg]`}function getNotesUrl(a,e){return`${midiToNote(a).replace("#","s")}v${e}.[mp3|ogg]`}const velocitiesMap={1:[8],2:[6,12],3:[1,7,15],4:[1,5,10,15],5:[1,4,8,12,16],6:[1,3,7,10,13,16],7:[1,3,6,9,11,13,16],8:[1,3,5,7,9,11,13,16],9:[1,3,5,7,9,11,13,15,16],10:[1,2,3,5,7,9,11,13,15,16],11:[1,2,3,5,7,9,11,13,14,15,16],12:[1,2,3,4,5,7,9,11,13,14,15,16],13:[1,2,3,4,5,7,9,11,12,13,14,15,16],14:[1,2,3,4,5,6,7,9,11,12,13,14,15,16],15:[1,2,3,4,5,6,7,9,10,11,12,13,14,15,16],16:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]},allNotes=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108];function getNotesInRange(a,e){return allNotes.filter(s=>a<=s&&s<=e)}const harmonics=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87];function getHarmonicsInRange(a,e){return harmonics.filter(s=>a<=s&&s<=e)}function inHarmonicsRange(a){return harmonics[0]<=a&&a<=harmonics[harmonics.length-1]}class Harmonics extends PianoComponent{constructor(e){super(e),this._urls={};const s=getHarmonicsInRange(e.minNote,e.maxNote);for(const o of s)this._urls[o]=getHarmonicsUrl(o)}triggerAttack(e,s,o){this._enabled&&inHarmonicsRange(e)&&this._sampler.triggerAttack(Midi(e).toNote(),s,o*randomBetween(.5,1))}_internalLoad(){return new Promise(e=>{this._sampler=new Sampler$2({baseUrl:this.samples,onload:e,urls:this._urls}).connect(this.output)})}}class Keybed extends PianoComponent{constructor(e){super(e),this._urls={};for(let s=e.minNote;s<=e.maxNote;s++)this._urls[s]=getReleasesUrl(s)}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers$1(this._urls,e,this.samples)})}start(e,s,o){this._enabled&&this._buffers.has(e)&&new ToneBufferSource$1({url:this._buffers.get(e),context:this.context}).connect(this.output).start(s,0,void 0,.015*o*randomBetween(.5,1))}}class Pedal extends PianoComponent{constructor(e){super(e),this._downTime=1/0,this._currentSound=null,this._downTime=1/0}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers$1({down1:"pedalD1.mp3",down2:"pedalD2.mp3",up1:"pedalU1.mp3",up2:"pedalU2.mp3"},e,this.samples)})}_squash(e){this._currentSound&&this._currentSound.state!=="stopped"&&this._currentSound.stop(e),this._currentSound=null}_playSample(e,s){this._enabled&&(this._currentSound=new ToneBufferSource$1({url:this._buffers.get(`${s}${Math.random()>.5?1:2}`),context:this.context,curve:"exponential",fadeIn:.05,fadeOut:.1}).connect(this.output),this._currentSound.start(e,randomBetween(0,.01),void 0,.1*randomBetween(.5,1)))}down(e){this._squash(e),this._downTime=e,this._playSample(e,"down")}up(e){this._squash(e),this._downTime=1/0,this._playSample(e,"up")}isDown(e){return e>this._downTime}}class PianoString extends ToneAudioNode$1{constructor(e){super(e),this.name="PianoString",this._urls={},e.notes.forEach(s=>this._urls[s]=getNotesUrl(s,e.velocity)),this.samples=e.samples}load(){return new Promise(e=>{this._sampler=this.output=new Sampler$2({attack:0,baseUrl:this.samples,curve:"exponential",onload:e,release:.4,urls:this._urls,volume:3})})}triggerAttack(e,s,o){this._sampler.triggerAttack(e,s,o)}triggerRelease(e,s){this._sampler.triggerRelease(e,s)}}var __awaiter$3=globalThis&&globalThis.__awaiter||function(a,e,s,o){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(o.next(j))}catch(_e){_(_e)}}function k(j){try{$(o.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((o=o.apply(a,e||[])).next())})};class PianoStrings extends PianoComponent{constructor(e){super(e);const s=getNotesInRange(e.minNote,e.maxNote),o=velocitiesMap[e.velocities].slice();this._strings=o.map(c=>new PianoString(Object.assign(e,{notes:s,velocity:c}))),this._activeNotes=new Map}scale(e,s,o,c,d){return(e-s)/(o-s)*(d-c)+c}triggerAttack(e,s,o){const c=this.scale(o,0,1,-.5,this._strings.length-.51),d=Math.max(Math.round(c),0);let _=1+c-d;this._strings.length===1&&(_=o);const b=this._strings[d];this._activeNotes.has(e)&&this.triggerRelease(e,s),this._activeNotes.set(e,b),b.triggerAttack(Midi(e).toNote(),s,_)}triggerRelease(e,s){this._activeNotes.has(e)&&(this._activeNotes.get(e).triggerRelease(Midi(e).toNote(),s),this._activeNotes.delete(e))}_internalLoad(){return __awaiter$3(this,void 0,void 0,function*(){yield Promise.all(this._strings.map(e=>__awaiter$3(this,void 0,void 0,function*(){yield e.load(),e.connect(this.output)})))})}}var __awaiter$2=globalThis&&globalThis.__awaiter||function(a,e,s,o){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(o.next(j))}catch(_e){_(_e)}}function k(j){try{$(o.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((o=o.apply(a,e||[])).next())})};class Piano$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Piano$1.getDefaults(),arguments)),this.name="Piano",this.input=void 0,this.output=new Gain$2({context:this.context}),this._heldNotes=new Map,this._loaded=!1;const e=optionsFromArguments$1(Piano$1.getDefaults(),arguments);e.url.endsWith("/")||(e.url+="/"),this.maxPolyphony=e.maxPolyphony,this._heldNotes=new Map,this._sustainedNotes=new Map,this._strings=new PianoStrings(Object.assign({},e,{enabled:!0,samples:e.url,volume:e.volume.strings})).connect(this.output),this.strings=this._strings.volume,this._pedal=new Pedal(Object.assign({},e,{enabled:e.pedal,samples:e.url,volume:e.volume.pedal})).connect(this.output),this.pedal=this._pedal.volume,this._keybed=new Keybed(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.keybed})).connect(this.output),this.keybed=this._keybed.volume,this._harmonics=new Harmonics(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.harmonics})).connect(this.output),this.harmonics=this._harmonics.volume}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{maxNote:108,minNote:21,pedal:!0,release:!1,url:"https://tambien.github.io/Piano/audio/",velocities:1,maxPolyphony:32,volume:{harmonics:0,keybed:0,pedal:0,strings:0}})}load(){return __awaiter$2(this,void 0,void 0,function*(){yield Promise.all([this._strings.load(),this._pedal.load(),this._keybed.load(),this._harmonics.load()]),this._loaded=!0})}get loaded(){return this._loaded}pedalDown({time:e=this.immediate()}={}){return this.loaded&&(e=this.toSeconds(e),this._pedal.isDown(e)||this._pedal.down(e)),this}pedalUp({time:e=this.immediate()}={}){if(this.loaded){const s=this.toSeconds(e);this._pedal.isDown(s)&&(this._pedal.up(s),this._sustainedNotes.forEach((o,c)=>{this._heldNotes.has(c)||this._strings.triggerRelease(c,s)}),this._sustainedNotes.clear())}return this}keyDown({note:e,midi:s,time:o=this.immediate(),velocity:c=.8}){return this.loaded&&this.maxPolyphony>this._heldNotes.size+this._sustainedNotes.size?(o=this.toSeconds(o),isString$1(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s)||(this._heldNotes.set(s,{time:o,velocity:c}),this._strings.triggerAttack(s,o,c))):console.warn("samples not loaded"),this}keyUp({note:e,midi:s,time:o=this.immediate(),velocity:c=.8}){if(this.loaded&&(o=this.toSeconds(o),isString$1(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s))){const d=this._heldNotes.get(s);this._heldNotes.delete(s);const _=Math.pow(Math.max(o-d.time,.1),.7),b=d.velocity;let k=3/_*b*c;k=Math.max(k,.4),k=Math.min(k,4),this._pedal.isDown(o)?this._sustainedNotes.has(s)||this._sustainedNotes.set(s,o):(this._strings.triggerRelease(s,o),this._harmonics.triggerAttack(s,o,k)),this._keybed.start(s,o,c)}return this}stopAll(){return this.pedalUp(),this._heldNotes.forEach((e,s)=>{this.keyUp({midi:s})}),this}}var events={exports:{}},R=typeof Reflect=="object"?Reflect:null,ReflectApply=R&&typeof R.apply=="function"?R.apply:function a(e,s,o){return Function.prototype.apply.call(e,s,o)},ReflectOwnKeys;R&&typeof R.ownKeys=="function"?ReflectOwnKeys=R.ownKeys:Object.getOwnPropertySymbols?ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e)};function ProcessEmitWarning(a){console&&console.warn&&console.warn(a)}var NumberIsNaN=Number.isNaN||function a(e){return e!==e};function EventEmitter(){EventEmitter.init.call(this)}events.exports=EventEmitter;events.exports.once=once;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=void 0;EventEmitter.prototype._eventsCount=0;EventEmitter.prototype._maxListeners=void 0;var defaultMaxListeners=10;function checkListener(a){if(typeof a!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof a)}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:!0,get:function(){return defaultMaxListeners},set:function(a){if(typeof a!="number"||a<0||NumberIsNaN(a))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+a+".");defaultMaxListeners=a}});EventEmitter.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};EventEmitter.prototype.setMaxListeners=function a(e){if(typeof e!="number"||e<0||NumberIsNaN(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function _getMaxListeners(a){return a._maxListeners===void 0?EventEmitter.defaultMaxListeners:a._maxListeners}EventEmitter.prototype.getMaxListeners=function a(){return _getMaxListeners(this)};EventEmitter.prototype.emit=function a(e){for(var s=[],o=1;o0&&(_=s[0]),_ instanceof Error)throw _;var b=new Error("Unhandled error."+(_?" ("+_.message+")":""));throw b.context=_,b}var k=d[e];if(k===void 0)return!1;if(typeof k=="function")ReflectApply(k,this,s);else for(var $=k.length,j=arrayClone(k,$),o=0;o<$;++o)ReflectApply(j[o],this,s);return!0};function _addListener(a,e,s,o){var c,d,_;if(checkListener(s),d=a._events,d===void 0?(d=a._events=Object.create(null),a._eventsCount=0):(d.newListener!==void 0&&(a.emit("newListener",e,s.listener?s.listener:s),d=a._events),_=d[e]),_===void 0)_=d[e]=s,++a._eventsCount;else if(typeof _=="function"?_=d[e]=o?[s,_]:[_,s]:o?_.unshift(s):_.push(s),c=_getMaxListeners(a),c>0&&_.length>c&&!_.warned){_.warned=!0;var b=new Error("Possible EventEmitter memory leak detected. "+_.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");b.name="MaxListenersExceededWarning",b.emitter=a,b.type=e,b.count=_.length,ProcessEmitWarning(b)}return a}EventEmitter.prototype.addListener=function a(e,s){return _addListener(this,e,s,!1)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function a(e,s){return _addListener(this,e,s,!0)};function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(a,e,s){var o={fired:!1,wrapFn:void 0,target:a,type:e,listener:s},c=onceWrapper.bind(o);return c.listener=s,o.wrapFn=c,c}EventEmitter.prototype.once=function a(e,s){return checkListener(s),this.on(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.prependOnceListener=function a(e,s){return checkListener(s),this.prependListener(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.removeListener=function a(e,s){var o,c,d,_,b;if(checkListener(s),c=this._events,c===void 0)return this;if(o=c[e],o===void 0)return this;if(o===s||o.listener===s)--this._eventsCount===0?this._events=Object.create(null):(delete c[e],c.removeListener&&this.emit("removeListener",e,o.listener||s));else if(typeof o!="function"){for(d=-1,_=o.length-1;_>=0;_--)if(o[_]===s||o[_].listener===s){b=o[_].listener,d=_;break}if(d<0)return this;d===0?o.shift():spliceOne(o,d),o.length===1&&(c[e]=o[0]),c.removeListener!==void 0&&this.emit("removeListener",e,b||s)}return this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.removeAllListeners=function a(e){var s,o,c;if(o=this._events,o===void 0)return this;if(o.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):o[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete o[e]),this;if(arguments.length===0){var d=Object.keys(o),_;for(c=0;c=0;c--)this.removeListener(e,s[c]);return this};function _listeners(a,e,s){var o=a._events;if(o===void 0)return[];var c=o[e];return c===void 0?[]:typeof c=="function"?s?[c.listener||c]:[c]:s?unwrapListeners(c):arrayClone(c,c.length)}EventEmitter.prototype.listeners=function a(e){return _listeners(this,e,!0)};EventEmitter.prototype.rawListeners=function a(e){return _listeners(this,e,!1)};EventEmitter.listenerCount=function(a,e){return typeof a.listenerCount=="function"?a.listenerCount(e):listenerCount.call(a,e)};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(a){var e=this._events;if(e!==void 0){var s=e[a];if(typeof s=="function")return 1;if(s!==void 0)return s.length}return 0}EventEmitter.prototype.eventNames=function a(){return this._eventsCount>0?ReflectOwnKeys(this._events):[]};function arrayClone(a,e){for(var s=new Array(e),o=0;o>4,j=15&_.data[0],_e=1+j;if(1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0),o.nrpnEventsEnabled&&$===o.MIDI_CHANNEL_MESSAGES.controlchange&&(b>=o.MIDI_NRPN_MESSAGES.increment&&b<=o.MIDI_NRPN_MESSAGES.parammsb||b===o.MIDI_NRPN_MESSAGES.entrymsb||b===o.MIDI_NRPN_MESSAGES.entrylsb)){var et={target:this,type:"controlchange",data:_.data,timestamp:_.timeStamp,channel:_e,controller:{number:b,name:this.getCcNameByNumber(b)},value:k};if(et.controller.number===o.MIDI_NRPN_MESSAGES.parammsb&&et.value!=o.MIDI_NRPN_MESSAGES.nullactiveparameter)o._nrpnBuffer[j]=[],o._nrpnBuffer[j][0]=et;else if(o._nrpnBuffer[j].length===1&&et.controller.number===o.MIDI_NRPN_MESSAGES.paramlsb)o._nrpnBuffer[j].push(et);else if(o._nrpnBuffer[j].length!==2||et.controller.number!==o.MIDI_NRPN_MESSAGES.increment&&et.controller.number!==o.MIDI_NRPN_MESSAGES.decrement&&et.controller.number!==o.MIDI_NRPN_MESSAGES.entrymsb)if(o._nrpnBuffer[j].length===3&&o._nrpnBuffer[j][2].number===o.MIDI_NRPN_MESSAGES.entrymsb&&et.controller.number===o.MIDI_NRPN_MESSAGES.entrylsb)o._nrpnBuffer[j].push(et);else if(3<=o._nrpnBuffer[j].length&&o._nrpnBuffer[j].length<=4&&et.controller.number===o.MIDI_NRPN_MESSAGES.parammsb&&et.value===o.MIDI_NRPN_MESSAGES.nullactiveparameter)o._nrpnBuffer[j].push(et);else if(4<=o._nrpnBuffer[j].length&&o._nrpnBuffer[j].length<=5&&et.controller.number===o.MIDI_NRPN_MESSAGES.paramlsb&&et.value===o.MIDI_NRPN_MESSAGES.nullactiveparameter){o._nrpnBuffer[j].push(et);var tt=[];o._nrpnBuffer[j].forEach(function(ot){tt.push(ot.data)});var nt=o._nrpnBuffer[j][0].value<<7|o._nrpnBuffer[j][1].value,it=o._nrpnBuffer[j][2].value;o._nrpnBuffer[j].length===6&&(it=o._nrpnBuffer[j][2].value<<7|o._nrpnBuffer[j][3].value);var rt="";switch(o._nrpnBuffer[j][2].controller.number){case o.MIDI_NRPN_MESSAGES.entrymsb:rt=o._nrpnTypes[0];break;case o.MIDI_NRPN_MESSAGES.increment:rt=o._nrpnTypes[1];break;case o.MIDI_NRPN_MESSAGES.decrement:rt=o._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var st={timestamp:et.timestamp,channel:et.channel,type:"nrpn",data:tt,controller:{number:nt,type:rt,name:"Non-Registered Parameter "+nt},value:it};o._nrpnBuffer[j]=[],this._userHandlers.channel[st.type]&&this._userHandlers.channel[st.type][st.channel]&&this._userHandlers.channel[st.type][st.channel].forEach(function(ot){ot(st)})}else o._nrpnBuffer[j]=[];else o._nrpnBuffer[j].push(et)}},c.prototype._parseChannelEvent=function(_){var b,k,$=_.data[0]>>4,j=1+(15&_.data[0]);1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0);var _e={target:this,data:_.data,timestamp:_.timeStamp,channel:j};$===o.MIDI_CHANNEL_MESSAGES.noteoff||$===o.MIDI_CHANNEL_MESSAGES.noteon&&k===0?(_e.type="noteoff",_e.note={number:b,name:o._notes[b%12],octave:o.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===o.MIDI_CHANNEL_MESSAGES.noteon?(_e.type="noteon",_e.note={number:b,name:o._notes[b%12],octave:o.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===o.MIDI_CHANNEL_MESSAGES.keyaftertouch?(_e.type="keyaftertouch",_e.note={number:b,name:o._notes[b%12],octave:o.getOctave(b)},_e.value=k/127):$===o.MIDI_CHANNEL_MESSAGES.controlchange&&0<=b&&b<=119?(_e.type="controlchange",_e.controller={number:b,name:this.getCcNameByNumber(b)},_e.value=k):$===o.MIDI_CHANNEL_MESSAGES.channelmode&&120<=b&&b<=127?(_e.type="channelmode",_e.controller={number:b,name:this.getChannelModeByNumber(b)},_e.value=k):$===o.MIDI_CHANNEL_MESSAGES.programchange?(_e.type="programchange",_e.value=b):$===o.MIDI_CHANNEL_MESSAGES.channelaftertouch?(_e.type="channelaftertouch",_e.value=b/127):$===o.MIDI_CHANNEL_MESSAGES.pitchbend?(_e.type="pitchbend",_e.value=((k<<7)+b-8192)/8192):_e.type="unknownchannelmessage",this._userHandlers.channel[_e.type]&&this._userHandlers.channel[_e.type][j]&&this._userHandlers.channel[_e.type][j].forEach(function(et){et(_e)})},c.prototype.getCcNameByNumber=function(_){if(!(0<=(_=Math.floor(_))&&_<=119))throw new RangeError("The control change number must be between 0 and 119.");for(var b in o.MIDI_CONTROL_CHANGE_MESSAGES)if(Object.prototype.hasOwnProperty.call(o.MIDI_CONTROL_CHANGE_MESSAGES,b)&&_===o.MIDI_CONTROL_CHANGE_MESSAGES[b])return b},c.prototype.getChannelModeByNumber=function(_){if(!(120<=(_=Math.floor(_))&&status<=127))throw new RangeError("The control change number must be between 120 and 127.");for(var b in o.MIDI_CHANNEL_MODE_MESSAGES)if(Object.prototype.hasOwnProperty.call(o.MIDI_CHANNEL_MODE_MESSAGES,b)&&_===o.MIDI_CHANNEL_MODE_MESSAGES[b])return b},c.prototype._parseSystemEvent=function(_){var b=_.data[0],k={target:this,data:_.data,timestamp:_.timeStamp};b===o.MIDI_SYSTEM_MESSAGES.sysex?k.type="sysex":b===o.MIDI_SYSTEM_MESSAGES.timecode?k.type="timecode":b===o.MIDI_SYSTEM_MESSAGES.songposition?k.type="songposition":b===o.MIDI_SYSTEM_MESSAGES.songselect?(k.type="songselect",k.song=_.data[1]):b===o.MIDI_SYSTEM_MESSAGES.tuningrequest?k.type="tuningrequest":b===o.MIDI_SYSTEM_MESSAGES.clock?k.type="clock":b===o.MIDI_SYSTEM_MESSAGES.start?k.type="start":b===o.MIDI_SYSTEM_MESSAGES.continue?k.type="continue":b===o.MIDI_SYSTEM_MESSAGES.stop?k.type="stop":b===o.MIDI_SYSTEM_MESSAGES.activesensing?k.type="activesensing":b===o.MIDI_SYSTEM_MESSAGES.reset?k.type="reset":k.type="unknownsystemmessage",this._userHandlers.system[k.type]&&this._userHandlers.system[k.type].forEach(function($){$(k)})},d.prototype.send=function(_,b,k){if(!(128<=_&&_<=255))throw new RangeError("The status byte must be an integer between 128 (0x80) and 255 (0xFF).");b===void 0&&(b=[]),Array.isArray(b)||(b=[b]);var $=[];return b.forEach(function(j){var _e=Math.floor(j);if(!(0<=_e&&_e<=255))throw new RangeError("Data bytes must be integers between 0 (0x00) and 255 (0xFF).");$.push(_e)}),this._midiOutput.send([_].concat($),parseFloat(k)||0),this},d.prototype.sendSysex=function(_,b,k){if(!o.sysexEnabled)throw new Error("Sysex message support must first be activated.");return k=k||{},_=[].concat(_),b.forEach(function($){if($<0||127<$)throw new RangeError("The data bytes of a sysex message must be integers between 0 (0x00) and 127 (0x7F).")}),b=_.concat(b,o.MIDI_SYSTEM_MESSAGES.sysexend),this.send(o.MIDI_SYSTEM_MESSAGES.sysex,b,this._parseTimeParameter(k.time)),this},d.prototype.sendTimecodeQuarterFrame=function(_,b){return b=b||{},this.send(o.MIDI_SYSTEM_MESSAGES.timecode,_,this._parseTimeParameter(b.time)),this},d.prototype.sendSongPosition=function(_,b){b=b||{};var k=(_=Math.floor(_)||0)>>7&127,$=127&_;return this.send(o.MIDI_SYSTEM_MESSAGES.songposition,[k,$],this._parseTimeParameter(b.time)),this},d.prototype.sendSongSelect=function(_,b){if(b=b||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(o.MIDI_SYSTEM_MESSAGES.songselect,[_],this._parseTimeParameter(b.time)),this},d.prototype.sendTuningRequest=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendClock=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStart=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendContinue=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStop=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendActiveSensing=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(_.time)),this},d.prototype.sendReset=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(_.time)),this},d.prototype.stopNote=function(_,b,k){if(_==="all")return this.sendChannelMode("allnotesoff",0,b,k);var $=64;return(k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&($=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&($=127*k.velocity),this._convertNoteToArray(_).forEach(function(j){o.toMIDIChannels(b).forEach(function(_e){this.send((o.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(_e-1),[j,Math.round($)],this._parseTimeParameter(k.time))}.bind(this))}.bind(this)),this},d.prototype.playNote=function(_,b,k){var $,j=64;if((k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&(j=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&(j=127*k.velocity),$=this._parseTimeParameter(k.time),this._convertNoteToArray(_).forEach(function(et){o.toMIDIChannels(b).forEach(function(tt){this.send((o.MIDI_CHANNEL_MESSAGES.noteon<<4)+(tt-1),[et,Math.round(j)],$)}.bind(this))}.bind(this)),!isNaN(k.duration)){k.duration<=0&&(k.duration=0);var _e=64;k.rawVelocity?!isNaN(k.release)&&0<=k.release&&k.release<=127&&(_e=k.release):!isNaN(k.release)&&0<=k.release&&k.release<=1&&(_e=127*k.release),this._convertNoteToArray(_).forEach(function(et){o.toMIDIChannels(b).forEach(function(tt){this.send((o.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(tt-1),[et,Math.round(_e)],($||o.time)+k.duration)}.bind(this))}.bind(this))}return this},d.prototype.sendKeyAftertouch=function(_,b,k,$){var j=this;if($=$||{},b<1||16>7&127,tt=127&_e;return o.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("channelcoarsetuning",j,b,{time:k.time}),$.setRegisteredParameter("channelfinetuning",[et,tt],b,{time:k.time})}),this},d.prototype.setTuningProgram=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The program value must be between 0 and 127");return o.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningprogram",_,b,{time:k.time})}),this},d.prototype.setTuningBank=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_)||0)&&_<=127))throw new RangeError("The bank value must be between 0 and 127");return o.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningbank",_,b,{time:k.time})}),this},d.prototype.sendChannelMode=function(_,b,k,$){if($=$||{},typeof _=="string"){if(!(_=o.MIDI_CHANNEL_MODE_MESSAGES[_]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(_=Math.floor(_))&&_<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((b=Math.floor(b)||0)<0||127>7&127,et=127&j;return o.toMIDIChannels(b).forEach(function(tt){$.send((o.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(tt-1),[et,_e],$._parseTimeParameter(k.time))}),this},d.prototype._parseTimeParameter=function(_){var b,k=parseFloat(_);return typeof _=="string"&&_.substring(0,1)==="+"?k&&0o.time&&(b=k),b},d.prototype._convertNoteToArray=function(_){var b=[];return Array.isArray(_)||(_=[_]),_.forEach(function(k){b.push(o.guessNoteNumber(k))}),b},a.exports?a.exports=o:e.WebMidi||(e.WebMidi=o)})(commonjsGlobal)})(webmidi_min$1);var WebMidi$1=webmidi_min$1.exports,__awaiter$1=globalThis&&globalThis.__awaiter||function(a,e,s,o){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(o.next(j))}catch(_e){_(_e)}}function k(j){try{$(o.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((o=o.apply(a,e||[])).next())})};class MidiInput extends events.exports.EventEmitter{constructor(e="all"){super(),this.deviceId=e,MidiInput.enabled().then(()=>{WebMidi$1.addListener("connected",s=>{s.port.type==="input"&&this._addListeners(s.port)}),WebMidi$1.addListener("disconnected",s=>{this._removeListeners(s.port)}),WebMidi$1.inputs.forEach(s=>this._addListeners(s))})}_addListeners(e){MidiInput.connectedDevices.has(e.id)||(MidiInput.connectedDevices.set(e.id,e),this.emit("connect",this._inputToDevice(e)),e.addListener("noteon","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyDown",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("noteoff","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyUp",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("controlchange","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&s.controller.name==="holdpedal"&&this.emit(s.value?"pedalDown":"pedalUp",{device:this._inputToDevice(e)})}))}_inputToDevice(e){return{name:e.name,id:e.id,manufacturer:e.manufacturer}}_removeListeners(e){if(MidiInput.connectedDevices.has(e.id)){const s=MidiInput.connectedDevices.get(e.id);this.emit("disconnect",this._inputToDevice(s)),MidiInput.connectedDevices.delete(e.id),s.removeListener("noteon"),s.removeListener("noteoff"),s.removeListener("controlchange")}}emit(e,s){return super.emit(e,s)}on(e,s){return super.on(e,s),this}once(e,s){return super.once(e,s),this}off(e,s){return super.off(e,s),this}static enabled(){return __awaiter$1(this,void 0,void 0,function*(){MidiInput._isEnabled||(yield new Promise((e,s)=>{WebMidi$1.enable(o=>{o?s(o):(MidiInput._isEnabled=!0,e())})}))})}static getDevices(){return __awaiter$1(this,void 0,void 0,function*(){return yield MidiInput.enabled(),WebMidi$1.inputs})}}MidiInput.connectedDevices=new Map;MidiInput._isEnabled=!1;var tonePiano=Object.freeze(Object.defineProperty({__proto__:null,Piano:Piano$1,MidiInput},Symbol.toStringTag,{value:"Module"}));const Tone$1=_Tone,{AutoFilter,Destination:Destination$1,Filter,Gain:Gain$1,isNote:isNote$1,Synth:Synth$1,PolySynth,MembraneSynth:MembraneSynth$1,MetalSynth,MonoSynth,AMSynth,DuoSynth,FMSynth,NoiseSynth,PluckSynth,Sampler:Sampler$1,getDestination,Players}=Tone$1,{Piano}=tonePiano,getDefaultSynth=()=>{const a=new PolySynth().chain(new Gain$1(.5),getDestination());return a.set({oscillator:{type:"triangle"},envelope:{release:.01}}),a};Pattern$4.prototype.tone=function(a){return this._withHap(e=>{const s=(o,c)=>{var b,k;let d,_=(k=(b=c.context)==null?void 0:b.velocity)!=null?k:.75;if(a instanceof PluckSynth)d=getPlayableNoteValue(c),a.triggerAttack(d,o);else if(a instanceof NoiseSynth)a.triggerAttackRelease(c.duration.valueOf(),o);else if(a instanceof Piano)d=getPlayableNoteValue(c),a.keyDown({note:d,time:o,velocity:_}),a.keyUp({note:d,time:o+c.duration.valueOf(),velocity:_});else if(a instanceof Sampler$1)d=getPlayableNoteValue(c),a.triggerAttackRelease(d,c.duration.valueOf(),o,_);else if(a instanceof Players){if(!a.has(c.value))throw new Error(`name "${c.value}" not defined for players`);const $=a.player(c.value);$.start(o),$.stop(o+c.duration.valueOf())}else d=getPlayableNoteValue(c),a.triggerAttackRelease(d,c.duration.valueOf(),o,_)};return e.setContext(wt(_t({},e.context),{instrument:a,onTrigger:s}))})};Pattern$4.prototype.define("tone",(a,e)=>e.tone(a),{composable:!0,patternified:!1});const amsynth=a=>new AMSynth(a),duosynth=a=>new DuoSynth(a),fmsynth=a=>new FMSynth(a),membrane=a=>new MembraneSynth$1(a),metal=a=>new MetalSynth(a),monosynth=a=>new MonoSynth(a),noise=a=>new NoiseSynth(a),pluck=a=>new PluckSynth(a),polysynth=a=>new PolySynth(a),sampler=(a,e)=>new Promise(s=>{const o=new Sampler$1(a,()=>s(o),e)}),players=(a,e="")=>(a=e?Object.fromEntries(Object.entries(a).map(([s,o])=>[s,e+o])):a,new Promise(s=>{const o=new Players(a,()=>s(o))})),synth=a=>new Synth$1(a),piano=async(a={velocities:1})=>{const e=new Piano(a);return await e.load(),e},vol=a=>new Gain$1(a),lowpass=a=>new Filter(a,"lowpass"),highpass=a=>new Filter(a,"highpass"),adsr=(a,e=.1,s=.4,o=.01)=>({envelope:{attack:a,decay:e,sustain:s,release:o}}),osc=a=>({oscillator:{type:a}}),out=()=>getDestination(),getDrawContext$1=(a="test-canvas")=>{let e=document.querySelector("#"+a);return e||(e=document.createElement("canvas"),e.id=a,e.width=window.innerWidth,e.height=window.innerHeight,e.style="pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0;z-index:5",document.body.prepend(e)),e.getContext("2d")};Pattern$4.prototype.draw=function(a,{from:e,to:s,onQuery:o}){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const c=getDrawContext$1();let d,_=[];const b=k=>{const $=Tone$1.getTransport().seconds;if(e!==void 0&&s!==void 0){const j=Math.floor($);if(d!==j){d=j;const _e=j+e,et=j+s;setTimeout(()=>{_=this._asNumber(!0).query(new State(new TimeSpan(_e,et))).filter(Boolean).filter(tt=>tt.part.begin.equals(tt.whole.begin)),o==null||o(_)},0)}}a(c,_,$,k),window.strudelAnimation=requestAnimationFrame(b)};return requestAnimationFrame(b),this};const cleanupDraw=()=>{getDrawContext$1().clearRect(0,0,window.innerWidth,window.innerHeight),window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation),window.strudelScheduler&&clearInterval(window.strudelScheduler)},hideHeader=()=>{document.getElementById("header").style="display:none"};function frame(a){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const e=s=>{const o=Tone$1.getTransport().seconds;a(s,o),window.strudelAnimation=requestAnimationFrame(e)};requestAnimationFrame(e)}const backgroundImage=function(a,e={}){const s=document.getElementById("code"),o="background-image:url("+a+");background-size:contain;";s.style=o;const{className:c}=s,d=(k,$)=>{({style:()=>s.style=o+";"+$,className:()=>s.className=$+" "+c})[k]()},_=Object.entries(e).filter(([k,$])=>typeof $=="function");Object.entries(e).filter(([k,$])=>typeof $=="string").forEach(([k,$])=>d(k,$)),_.length!==0&&frame((k,$)=>_.forEach(([j,_e])=>{d(j,_e($))}))},cleanupUi=()=>{const a=document.getElementById("code");a&&(a.style="",a.className="grow relative")},version="14.7.77",createExtendedExponentialRampToValueAutomationEvent=(a,e,s)=>({endTime:e,insertTime:s,type:"exponentialRampToValue",value:a}),createExtendedLinearRampToValueAutomationEvent=(a,e,s)=>({endTime:e,insertTime:s,type:"linearRampToValue",value:a}),createSetValueAutomationEvent=(a,e)=>({startTime:e,type:"setValue",value:a}),createSetValueCurveAutomationEvent=(a,e,s)=>({duration:s,startTime:e,type:"setValueCurve",values:a}),getTargetValueAtTime=(a,e,{startTime:s,target:o,timeConstant:c})=>o+(e-o)*Math.exp((s-a)/c),isExponentialRampToValueAutomationEvent=a=>a.type==="exponentialRampToValue",isLinearRampToValueAutomationEvent=a=>a.type==="linearRampToValue",isAnyRampToValueAutomationEvent=a=>isExponentialRampToValueAutomationEvent(a)||isLinearRampToValueAutomationEvent(a),isSetValueAutomationEvent=a=>a.type==="setValue",isSetValueCurveAutomationEvent=a=>a.type==="setValueCurve",getValueOfAutomationEventAtIndexAtTime=(a,e,s,o)=>{const c=a[e];return c===void 0?o:isAnyRampToValueAutomationEvent(c)||isSetValueAutomationEvent(c)?c.value:isSetValueCurveAutomationEvent(c)?c.values[c.values.length-1]:getTargetValueAtTime(s,getValueOfAutomationEventAtIndexAtTime(a,e-1,c.startTime,o),c)},getEndTimeAndValueOfPreviousAutomationEvent=(a,e,s,o,c)=>s===void 0?[o.insertTime,c]:isAnyRampToValueAutomationEvent(s)?[s.endTime,s.value]:isSetValueAutomationEvent(s)?[s.startTime,s.value]:isSetValueCurveAutomationEvent(s)?[s.startTime+s.duration,s.values[s.values.length-1]]:[s.startTime,getValueOfAutomationEventAtIndexAtTime(a,e-1,s.startTime,c)],isCancelAndHoldAutomationEvent=a=>a.type==="cancelAndHold",isCancelScheduledValuesAutomationEvent=a=>a.type==="cancelScheduledValues",getEventTime=a=>isCancelAndHoldAutomationEvent(a)||isCancelScheduledValuesAutomationEvent(a)?a.cancelTime:isExponentialRampToValueAutomationEvent(a)||isLinearRampToValueAutomationEvent(a)?a.endTime:a.startTime,getExponentialRampValueAtTime=(a,e,s,{endTime:o,value:c})=>s===c?c:0s+(a-e)/(o-e)*(c-s),interpolateValue=(a,e)=>{const s=Math.floor(e),o=Math.ceil(e);return s===o?a[s]:(1-(e-s))*a[s]+(1-(o-e))*a[o]},getValueCurveValueAtTime=(a,{duration:e,startTime:s,values:o})=>{const c=(a-s)/e*(o.length-1);return interpolateValue(o,c)},isSetTargetAutomationEvent=a=>a.type==="setTarget";class AutomationEventList{constructor(e){this._automationEvents=[],this._currenTime=0,this._defaultValue=e}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(e){const s=getEventTime(e);if(isCancelAndHoldAutomationEvent(e)||isCancelScheduledValuesAutomationEvent(e)){const o=this._automationEvents.findIndex(d=>isCancelScheduledValuesAutomationEvent(e)&&isSetValueCurveAutomationEvent(d)?d.startTime+d.duration>=s:getEventTime(d)>=s),c=this._automationEvents[o];if(o!==-1&&(this._automationEvents=this._automationEvents.slice(0,o)),isCancelAndHoldAutomationEvent(e)){const d=this._automationEvents[this._automationEvents.length-1];if(c!==void 0&&isAnyRampToValueAutomationEvent(c)){if(isSetTargetAutomationEvent(d))throw new Error("The internal list is malformed.");const _=isSetValueCurveAutomationEvent(d)?d.startTime+d.duration:getEventTime(d),b=isSetValueCurveAutomationEvent(d)?d.values[d.values.length-1]:d.value,k=isExponentialRampToValueAutomationEvent(c)?getExponentialRampValueAtTime(s,_,b,c):getLinearRampValueAtTime(s,_,b,c),$=isExponentialRampToValueAutomationEvent(c)?createExtendedExponentialRampToValueAutomationEvent(k,s,this._currenTime):createExtendedLinearRampToValueAutomationEvent(k,s,this._currenTime);this._automationEvents.push($)}d!==void 0&&isSetTargetAutomationEvent(d)&&this._automationEvents.push(createSetValueAutomationEvent(this.getValue(s),s)),d!==void 0&&isSetValueCurveAutomationEvent(d)&&d.startTime+d.duration>s&&(this._automationEvents[this._automationEvents.length-1]=createSetValueCurveAutomationEvent(new Float32Array([6,7]),d.startTime,s-d.startTime))}}else{const o=this._automationEvents.findIndex(_=>getEventTime(_)>s),c=o===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[o-1];if(c!==void 0&&isSetValueCurveAutomationEvent(c)&&getEventTime(c)+c.duration>s)return!1;const d=isExponentialRampToValueAutomationEvent(e)?createExtendedExponentialRampToValueAutomationEvent(e.value,e.endTime,this._currenTime):isLinearRampToValueAutomationEvent(e)?createExtendedLinearRampToValueAutomationEvent(e.value,s,this._currenTime):e;if(o===-1)this._automationEvents.push(d);else{if(isSetValueCurveAutomationEvent(e)&&s+e.duration>getEventTime(this._automationEvents[o]))return!1;this._automationEvents.splice(o,0,d)}}return!0}flush(e){const s=this._automationEvents.findIndex(o=>getEventTime(o)>e);if(s>1){const o=this._automationEvents.slice(s-1),c=o[0];isSetTargetAutomationEvent(c)&&o.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents,s-2,c.startTime,this._defaultValue),c.startTime)),this._automationEvents=o}}getValue(e){if(this._automationEvents.length===0)return this._defaultValue;const s=this._automationEvents.findIndex(_=>getEventTime(_)>e),o=this._automationEvents[s],c=(s===-1?this._automationEvents.length:s)-1,d=this._automationEvents[c];if(d!==void 0&&isSetTargetAutomationEvent(d)&&(o===void 0||!isAnyRampToValueAutomationEvent(o)||o.insertTime>e))return getTargetValueAtTime(e,getValueOfAutomationEventAtIndexAtTime(this._automationEvents,c-1,d.startTime,this._defaultValue),d);if(d!==void 0&&isSetValueAutomationEvent(d)&&(o===void 0||!isAnyRampToValueAutomationEvent(o)))return d.value;if(d!==void 0&&isSetValueCurveAutomationEvent(d)&&(o===void 0||!isAnyRampToValueAutomationEvent(o)||d.startTime+d.duration>e))return e({cancelTime:a,type:"cancelAndHold"}),createCancelScheduledValuesAutomationEvent=a=>({cancelTime:a,type:"cancelScheduledValues"}),createExponentialRampToValueAutomationEvent=(a,e)=>({endTime:e,type:"exponentialRampToValue",value:a}),createLinearRampToValueAutomationEvent=(a,e)=>({endTime:e,type:"linearRampToValue",value:a}),createSetTargetAutomationEvent=(a,e,s)=>({startTime:e,target:a,timeConstant:s,type:"setTarget"}),createAbortError=()=>new DOMException("","AbortError"),createAddActiveInputConnectionToAudioNode=a=>(e,s,[o,c,d],_)=>{a(e[c],[s,o,d],b=>b[0]===s&&b[1]===o,_)},createAddAudioNodeConnections=a=>(e,s,o)=>{const c=[];for(let d=0;d(e,s)=>{a.set(e,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:s})},ACTIVE_AUDIO_NODE_STORE=new WeakSet,AUDIO_NODE_CONNECTIONS_STORE=new WeakMap,AUDIO_NODE_STORE=new WeakMap,AUDIO_PARAM_CONNECTIONS_STORE=new WeakMap,AUDIO_PARAM_STORE=new WeakMap,CONTEXT_STORE=new WeakMap,EVENT_LISTENERS=new WeakMap,CYCLE_COUNTERS=new WeakMap,NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS=new WeakMap,NODE_TO_PROCESSOR_MAPS=new WeakMap,handler={construct(){return handler}},isConstructible=a=>{try{const e=new Proxy(a,handler);new e}catch{return!1}return!0},IMPORT_STATEMENT_REGEX=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,splitImportStatements=(a,e)=>{const s=[];let o=a.replace(/^[\s]+/,""),c=o.match(IMPORT_STATEMENT_REGEX);for(;c!==null;){const d=c[1].slice(1,-1),_=c[0].replace(/([\s]+)?;?$/,"").replace(d,new URL(d,e).toString());s.push(_),o=o.slice(c[0].length).replace(/^[\s]+/,""),c=o.match(IMPORT_STATEMENT_REGEX)}return[s.join(";"),o]},verifyParameterDescriptors=a=>{if(a!==void 0&&!Array.isArray(a))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},verifyProcessorCtor=a=>{if(!isConstructible(a))throw new TypeError("The given value for processorCtor should be a constructor.");if(a.prototype===null||typeof a.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},createAddAudioWorkletModule=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>{let tt=0;return(nt,it,rt={credentials:"omit"})=>{const st=j.get(nt);if(st!==void 0&&st.has(it))return Promise.resolve();const ot=$.get(nt);if(ot!==void 0){const ct=ot.get(it);if(ct!==void 0)return ct}const lt=d(nt),dt=lt.audioWorklet===void 0?c(it).then(([ct,ut])=>{const[at,ht]=splitImportStatements(ct,ut),pt=`${at};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${ht} -})})(window,'_AWGS')`;return s(pt)}).then(()=>{const ct=et._AWGS.pop();if(ct===void 0)throw new SyntaxError;o(lt.currentTime,lt.sampleRate,()=>ct(class{},void 0,(ut,at)=>{if(ut.trim()==="")throw e();const ht=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(lt);if(ht!==void 0){if(ht.has(ut))throw e();verifyProcessorCtor(at),verifyParameterDescriptors(at.parameterDescriptors),ht.set(ut,at)}else verifyProcessorCtor(at),verifyParameterDescriptors(at.parameterDescriptors),NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(lt,new Map([[ut,at]]))},lt.sampleRate,void 0,void 0))}):Promise.all([c(it),Promise.resolve(a(_e,_e))]).then(([[ct,ut],at])=>{const ht=tt+1;tt=ht;const[pt,Et]=splitImportStatements(ct,ut),yt=`${pt};((AudioWorkletProcessor,registerProcessor)=>{${Et} -})(${at?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${at?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${at?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${ht}',class extends AudioWorkletProcessor{process(){return !1}})`,vt=new Blob([yt],{type:"application/javascript; charset=utf-8"}),At=URL.createObjectURL(vt);return lt.audioWorklet.addModule(At,rt).then(()=>{if(b(lt))return lt;const St=_(lt);return St.audioWorklet.addModule(At,rt).then(()=>St)}).then(St=>{if(k===null)throw new SyntaxError;try{new k(St,`__sac${ht}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(At))});return ot===void 0?$.set(nt,new Map([[it,dt]])):ot.set(it,dt),dt.then(()=>{const ct=j.get(nt);ct===void 0?j.set(nt,new Set([it])):ct.add(it)}).finally(()=>{const ct=$.get(nt);ct!==void 0&&ct.delete(it)}),dt}},getValueForKey=(a,e)=>{const s=a.get(e);if(s===void 0)throw new Error("A value with the given key could not be found.");return s},pickElementFromSet=(a,e)=>{const s=Array.from(a).filter(e);if(s.length>1)throw Error("More than one element was found.");if(s.length===0)throw Error("No element was found.");const[o]=s;return a.delete(o),o},deletePassiveInputConnectionToAudioNode=(a,e,s,o)=>{const c=getValueForKey(a,e),d=pickElementFromSet(c,_=>_[0]===s&&_[1]===o);return c.size===0&&a.delete(e),d},getEventListenersOfAudioNode=a=>getValueForKey(EVENT_LISTENERS,a),setInternalStateToActive=a=>{if(ACTIVE_AUDIO_NODE_STORE.has(a))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE.add(a),getEventListenersOfAudioNode(a).forEach(e=>e(!0))},isAudioWorkletNode=a=>"port"in a,setInternalStateToPassive=a=>{if(!ACTIVE_AUDIO_NODE_STORE.has(a))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE.delete(a),getEventListenersOfAudioNode(a).forEach(e=>e(!1))},setInternalStateToPassiveWhenNecessary=(a,e)=>{!isAudioWorkletNode(a)&&e.every(s=>s.size===0)&&setInternalStateToPassive(a)},createAddConnectionToAudioNode=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>{const tt=new WeakMap;return(nt,it,rt,st,ot)=>{const{activeInputs:lt,passiveInputs:dt}=d(it),{outputs:ct}=d(nt),ut=b(nt),at=ht=>{const pt=k(it),Et=k(nt);if(ht){const gt=deletePassiveInputConnectionToAudioNode(dt,nt,rt,st);a(lt,nt,gt,!1),!ot&&!_e(nt)&&s(Et,pt,rt,st),et(it)&&setInternalStateToActive(it)}else{const gt=o(lt,nt,rt,st);e(dt,st,gt,!1),!ot&&!_e(nt)&&c(Et,pt,rt,st);const ft=_(it);if(ft===0)j(it)&&setInternalStateToPassiveWhenNecessary(it,lt);else{const mt=tt.get(it);mt!==void 0&&clearTimeout(mt),tt.set(it,setTimeout(()=>{j(it)&&setInternalStateToPassiveWhenNecessary(it,lt)},ft*1e3))}}};return $(ct,[it,rt,st],ht=>ht[0]===it&&ht[1]===rt&&ht[2]===st,!0)?(ut.add(at),j(nt)?a(lt,nt,[rt,st,at],!0):e(dt,st,[nt,rt,at],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode=a=>(e,s,[o,c,d],_)=>{const b=e.get(o);b===void 0?e.set(o,new Set([[c,s,d]])):a(b,[c,s,d],k=>k[0]===c&&k[1]===s,_)},createAddSilentConnection=a=>(e,s)=>{const o=a(e,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});s.connect(o).connect(e.destination);const c=()=>{s.removeEventListener("ended",c),s.disconnect(o),o.disconnect()};s.addEventListener("ended",c)},createAddUnrenderedAudioWorkletNode=a=>(e,s)=>{a(e).add(s)},DEFAULT_OPTIONS$j={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$j),k),_e=o($,j),et=d($)?e():null;super(b,!1,_e,et),this._nativeAnalyserNode=_e}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(b){this._nativeAnalyserNode.fftSize=b}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(b){const k=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=b,!(b>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=k,s()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(b){const k=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=b,!(this._nativeAnalyserNode.maxDecibels>b))throw this._nativeAnalyserNode.minDecibels=k,s()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(b){this._nativeAnalyserNode.smoothingTimeConstant=b}getByteFrequencyData(b){this._nativeAnalyserNode.getByteFrequencyData(b)}getByteTimeDomainData(b){this._nativeAnalyserNode.getByteTimeDomainData(b)}getFloatFrequencyData(b){this._nativeAnalyserNode.getFloatFrequencyData(b)}getFloatTimeDomainData(b){this._nativeAnalyserNode.getFloatTimeDomainData(b)}},isOwnedByContext=(a,e)=>a.context===e,createAnalyserNodeRendererFactory=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,fftSize:b.fftSize,maxDecibels:b.maxDecibels,minDecibels:b.minDecibels,smoothingTimeConstant:b.smoothingTimeConstant};b=a(_,$)}return o.set(_,b),await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport=a=>{try{a.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod=a=>{a.getChannelData=(e=>s=>{try{return e.call(a,s)}catch(o){throw o.code===12?createIndexSizeError():o}})(a.getChannelData)},DEFAULT_OPTIONS$i={numberOfChannels:1},createAudioBufferConstructor=(a,e,s,o,c,d,_,b)=>{let k=null;return class gr{constructor(j){if(c===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:_e,numberOfChannels:et,sampleRate:tt}=_t(_t({},DEFAULT_OPTIONS$i),j);k===null&&(k=new c(1,1,44100));const nt=o!==null&&e(d,d)?new o({length:_e,numberOfChannels:et,sampleRate:tt}):k.createBuffer(et,_e,tt);if(nt.numberOfChannels===0)throw s();return typeof nt.copyFromChannel!="function"?(_(nt),wrapAudioBufferGetChannelDataMethod(nt)):e(testAudioBufferCopyChannelMethodsOutOfBoundsSupport,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport(nt))||b(nt),a.add(nt),nt}static[Symbol.hasInstance](j){return j!==null&&typeof j=="object"&&Object.getPrototypeOf(j)===gr.prototype||a.has(j)}}},MOST_NEGATIVE_SINGLE_FLOAT=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT=-MOST_NEGATIVE_SINGLE_FLOAT,isActiveAudioNode=a=>ACTIVE_AUDIO_NODE_STORE.has(a),DEFAULT_OPTIONS$h={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$h),j),tt=c(_e,et),nt=_(_e),it=nt?e():null;super($,!1,tt,it),this._audioBufferSourceNodeRenderer=it,this._isBufferNullified=!1,this._isBufferSet=et.buffer!==null,this._nativeAudioBufferSourceNode=tt,this._onended=null,this._playbackRate=s(this,nt,tt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer($){if(this._nativeAudioBufferSourceNode.buffer=$,$!==null){if(this._isBufferSet)throw o();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop($){this._nativeAudioBufferSourceNode.loop=$}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd($){this._nativeAudioBufferSourceNode.loopEnd=$}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart($){this._nativeAudioBufferSourceNode.loopStart=$}get onended(){return this._onended}set onended($){const j=typeof $=="function"?b(this,$):null;this._nativeAudioBufferSourceNode.onended=j;const _e=this._nativeAudioBufferSourceNode.onended;this._onended=_e!==null&&_e===j?$:_e}get playbackRate(){return this._playbackRate}start($=0,j=0,_e){if(this._nativeAudioBufferSourceNode.start($,j,_e),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=_e===void 0?[$,j]:[$,j,_e]),this.context.state!=="closed"){setInternalStateToActive(this);const et=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",et),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",et)}}stop($=0){this._nativeAudioBufferSourceNode.stop($),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=$)}},createAudioBufferSourceNodeRendererFactory=(a,e,s,o,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={buffer:_e.buffer,channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,loop:_e.loop,loopEnd:_e.loopEnd,loopStart:_e.loopStart,playbackRate:_e.playbackRate.value};_e=e(j,tt),_!==null&&_e.start(..._),b!==null&&_e.stop(b)}return d.set(j,_e),et?await a(j,$.playbackRate,_e.playbackRate):await o(j,$.playbackRate,_e.playbackRate),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},isAudioBufferSourceNode=a=>"playbackRate"in a,isBiquadFilterNode=a=>"frequency"in a&&"gain"in a,isConstantSourceNode=a=>"offset"in a,isGainNode=a=>!("frequency"in a)&&"gain"in a,isOscillatorNode=a=>"detune"in a&&"frequency"in a,isStereoPannerNode=a=>"pan"in a,getAudioNodeConnections=a=>getValueForKey(AUDIO_NODE_CONNECTIONS_STORE,a),getAudioParamConnections=a=>getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE,a),deactivateActiveAudioNodeInputConnections=(a,e)=>{const{activeInputs:s}=getAudioNodeConnections(a);s.forEach(c=>c.forEach(([d])=>{e.includes(a)||deactivateActiveAudioNodeInputConnections(d,[...e,a])}));const o=isAudioBufferSourceNode(a)?[a.playbackRate]:isAudioWorkletNode(a)?Array.from(a.parameters.values()):isBiquadFilterNode(a)?[a.Q,a.detune,a.frequency,a.gain]:isConstantSourceNode(a)?[a.offset]:isGainNode(a)?[a.gain]:isOscillatorNode(a)?[a.detune,a.frequency]:isStereoPannerNode(a)?[a.pan]:[];for(const c of o){const d=getAudioParamConnections(c);d!==void 0&&d.activeInputs.forEach(([_])=>deactivateActiveAudioNodeInputConnections(_,e))}isActiveAudioNode(a)&&setInternalStateToPassive(a)},deactivateAudioGraph=a=>{deactivateActiveAudioNodeInputConnections(a.destination,[])},isValidLatencyHint=a=>a===void 0||typeof a=="number"||typeof a=="string"&&(a==="balanced"||a==="interactive"||a==="playback"),createAudioContextConstructor=(a,e,s,o,c,d,_,b,k)=>class extends a{constructor(j={}){if(k===null)throw new Error("Missing the native AudioContext constructor.");let _e;try{_e=new k(j)}catch(nt){throw nt.code===12&&nt.message==="sampleRate is not in range"?s():nt}if(_e===null)throw o();if(!isValidLatencyHint(j.latencyHint))throw new TypeError(`The provided value '${j.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(j.sampleRate!==void 0&&_e.sampleRate!==j.sampleRate)throw s();super(_e,2);const{latencyHint:et}=j,{sampleRate:tt}=_e;if(this._baseLatency=typeof _e.baseLatency=="number"?_e.baseLatency:et==="balanced"?512/tt:et==="interactive"||et===void 0?256/tt:et==="playback"?1024/tt:Math.max(2,Math.min(128,Math.round(et*tt/128)))*128/tt,this._nativeAudioContext=_e,k.name==="webkitAudioContext"?(this._nativeGainNode=_e.createGain(),this._nativeOscillatorNode=_e.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(_e.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,_e.state==="running"){this._state="suspended";const nt=()=>{this._state==="suspended"&&(this._state=null),_e.removeEventListener("statechange",nt)};_e.addEventListener("statechange",nt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw e()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph(this)}))}createMediaElementSource(j){return new c(this,{mediaElement:j})}createMediaStreamDestination(){return new d(this)}createMediaStreamSource(j){return new _(this,{mediaStream:j})}createMediaStreamTrackSource(j){return new b(this,{mediaStreamTrack:j})}resume(){return this._state==="suspended"?new Promise((j,_e)=>{const et=()=>{this._nativeAudioContext.removeEventListener("statechange",et),this._nativeAudioContext.state==="running"?j():this.resume().then(j,_e)};this._nativeAudioContext.addEventListener("statechange",et)}):this._nativeAudioContext.resume().catch(j=>{throw j===void 0||j.code===15?e():j})}suspend(){return this._nativeAudioContext.suspend().catch(j=>{throw j===void 0?e():j})}},createAudioDestinationNodeConstructor=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_(_e),tt=c(_e,j,et),nt=et?e(b):null;super($,!1,tt,nt),this._isNodeOfNativeOfflineAudioContext=et,this._nativeAudioDestinationNode=tt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount($){if(this._isNodeOfNativeOfflineAudioContext)throw o();if($>this._nativeAudioDestinationNode.maxChannelCount)throw s();this._nativeAudioDestinationNode.channelCount=$}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode($){if(this._isNodeOfNativeOfflineAudioContext)throw o();this._nativeAudioDestinationNode.channelCountMode=$}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer=a=>{const e=new WeakMap,s=async(o,c)=>{const d=c.destination;return e.set(c,d),await a(o,c,d),d};return{render(o,c){const d=e.get(c);return d!==void 0?Promise.resolve(d):s(o,c)}}},createAudioListenerFactory=(a,e,s,o,c,d,_,b)=>(k,$)=>{const j=$.listener,_e=()=>{const ct=new Float32Array(1),ut=e($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),at=_($);let ht=!1,pt=[0,0,-1,0,1,0],Et=[0,0,0];const gt=()=>{if(ht)return;ht=!0;const vt=o($,256,9,0);vt.onaudioprocess=({inputBuffer:At})=>{const St=[d(At,ct,0),d(At,ct,1),d(At,ct,2),d(At,ct,3),d(At,ct,4),d(At,ct,5)];St.some((Dt,xt)=>Dt!==pt[xt])&&(j.setOrientation(...St),pt=St);const Tt=[d(At,ct,6),d(At,ct,7),d(At,ct,8)];Tt.some((Dt,xt)=>Dt!==Et[xt])&&(j.setPosition(...Tt),Et=Tt)},ut.connect(vt)},ft=vt=>At=>{At!==pt[vt]&&(pt[vt]=At,j.setOrientation(...pt))},mt=vt=>At=>{At!==Et[vt]&&(Et[vt]=At,j.setPosition(...Et))},yt=(vt,At,St)=>{const Tt=s($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:At});Tt.connect(ut,0,vt),Tt.start(),Object.defineProperty(Tt.offset,"defaultValue",{get(){return At}});const Dt=a({context:k},at,Tt.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT);return b(Dt,"value",xt=>()=>xt.call(Dt),xt=>Ct=>{try{xt.call(Dt,Ct)}catch(bt){if(bt.code!==9)throw bt}gt(),at&&St(Ct)}),Dt.cancelAndHoldAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelAndHoldAtTime),Dt.cancelScheduledValues=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelScheduledValues),Dt.exponentialRampToValueAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.exponentialRampToValueAtTime),Dt.linearRampToValueAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.linearRampToValueAtTime),Dt.setTargetAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setTargetAtTime),Dt.setValueAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueAtTime),Dt.setValueCurveAtTime=(xt=>at?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueCurveAtTime),Dt};return{forwardX:yt(0,0,ft(0)),forwardY:yt(1,0,ft(1)),forwardZ:yt(2,-1,ft(2)),positionX:yt(6,0,mt(0)),positionY:yt(7,0,mt(1)),positionZ:yt(8,0,mt(2)),upX:yt(3,0,ft(3)),upY:yt(4,1,ft(4)),upZ:yt(5,0,ft(5))}},{forwardX:et,forwardY:tt,forwardZ:nt,positionX:it,positionY:rt,positionZ:st,upX:ot,upY:lt,upZ:dt}=j.forwardX===void 0?_e():j;return{get forwardX(){return et},get forwardY(){return tt},get forwardZ(){return nt},get positionX(){return it},get positionY(){return rt},get positionZ(){return st},get upX(){return ot},get upY(){return lt},get upZ(){return dt}}},isAudioNode$1=a=>"context"in a,isAudioNodeOutputConnection=a=>isAudioNode$1(a[0]),insertElementInSet=(a,e,s,o)=>{for(const c of a)if(s(c)){if(o)return!1;throw Error("The set contains at least one similar element.")}return a.add(e),!0},addActiveInputConnectionToAudioParam=(a,e,[s,o],c)=>{insertElementInSet(a,[e,s,o],d=>d[0]===e&&d[1]===s,c)},addPassiveInputConnectionToAudioParam=(a,[e,s,o],c)=>{const d=a.get(e);d===void 0?a.set(e,new Set([[s,o]])):insertElementInSet(d,[s,o],_=>_[0]===s,c)},isNativeAudioNodeFaker=a=>"inputs"in a,connectNativeAudioNodeToNativeAudioNode=(a,e,s,o)=>{if(isNativeAudioNodeFaker(e)){const c=e.inputs[o];return a.connect(c,s,0),[c,s,0]}return a.connect(e,s,o),[e,s,o]},deleteActiveInputConnection=(a,e,s)=>{for(const o of a)if(o[0]===e&&o[1]===s)return a.delete(o),o;return null},deleteActiveInputConnectionToAudioParam=(a,e,s)=>pickElementFromSet(a,o=>o[0]===e&&o[1]===s),deleteEventListenerOfAudioNode=(a,e)=>{if(!getEventListenersOfAudioNode(a).delete(e))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam=(a,e,s)=>{const o=getValueForKey(a,e),c=pickElementFromSet(o,d=>d[0]===s);return o.size===0&&a.delete(e),c},disconnectNativeAudioNodeFromNativeAudioNode=(a,e,s,o)=>{isNativeAudioNodeFaker(e)?a.disconnect(e.inputs[o],s,0):a.disconnect(e,s,o)},getNativeAudioNode=a=>getValueForKey(AUDIO_NODE_STORE,a),getNativeAudioParam=a=>getValueForKey(AUDIO_PARAM_STORE,a),isPartOfACycle=a=>CYCLE_COUNTERS.has(a),isPassiveAudioNode=a=>!ACTIVE_AUDIO_NODE_STORE.has(a),testAudioNodeDisconnectMethodSupport=(a,e)=>new Promise(s=>{if(e!==null)s(!0);else{const o=a.createScriptProcessor(256,1,1),c=a.createGain(),d=a.createBuffer(1,2,44100),_=d.getChannelData(0);_[0]=1,_[1]=1;const b=a.createBufferSource();b.buffer=d,b.loop=!0,b.connect(o).connect(a.destination),b.connect(c),b.disconnect(c),o.onaudioprocess=k=>{const $=k.inputBuffer.getChannelData(0);Array.prototype.some.call($,j=>j===1)?s(!0):s(!1),b.stop(),o.onaudioprocess=null,b.disconnect(o),o.disconnect(a.destination)},b.start()}}),visitEachAudioNodeOnce=(a,e)=>{const s=new Map;for(const o of a)for(const c of o){const d=s.get(c);s.set(c,d===void 0?1:d+1)}s.forEach((o,c)=>e(c,o))},isNativeAudioNode$1=a=>"context"in a,wrapAudioNodeDisconnectMethod=a=>{const e=new Map;a.connect=(s=>(o,c=0,d=0)=>{const _=isNativeAudioNode$1(o)?s(o,c,d):s(o,c),b=e.get(o);return b===void 0?e.set(o,[{input:d,output:c}]):b.every(k=>k.input!==d||k.output!==c)&&b.push({input:d,output:c}),_})(a.connect.bind(a)),a.disconnect=(s=>(o,c,d)=>{if(s.apply(a),o===void 0)e.clear();else if(typeof o=="number")for(const[_,b]of e){const k=b.filter($=>$.output!==o);k.length===0?e.delete(_):e.set(_,k)}else if(e.has(o))if(c===void 0)e.delete(o);else{const _=e.get(o);if(_!==void 0){const b=_.filter(k=>k.output!==c&&(k.input!==d||d===void 0));b.length===0?e.delete(o):e.set(o,b)}}for(const[_,b]of e)b.forEach(k=>{isNativeAudioNode$1(_)?a.connect(_,k.output,k.input):a.connect(_,k.output)})})(a.disconnect)},addConnectionToAudioParamOfAudioContext=(a,e,s,o)=>{const{activeInputs:c,passiveInputs:d}=getAudioParamConnections(e),{outputs:_}=getAudioNodeConnections(a),b=getEventListenersOfAudioNode(a),k=$=>{const j=getNativeAudioNode(a),_e=getNativeAudioParam(e);if($){const et=deletePassiveInputConnectionToAudioParam(d,a,s);addActiveInputConnectionToAudioParam(c,a,et,!1),!o&&!isPartOfACycle(a)&&j.connect(_e,s)}else{const et=deleteActiveInputConnectionToAudioParam(c,a,s);addPassiveInputConnectionToAudioParam(d,et,!1),!o&&!isPartOfACycle(a)&&j.disconnect(_e,s)}};return insertElementInSet(_,[e,s],$=>$[0]===e&&$[1]===s,!0)?(b.add(k),isActiveAudioNode(a)?addActiveInputConnectionToAudioParam(c,a,[s,k],!0):addPassiveInputConnectionToAudioParam(d,[a,s,k],!0),!0):!1},deleteInputConnectionOfAudioNode=(a,e,s,o)=>{const{activeInputs:c,passiveInputs:d}=getAudioNodeConnections(e),_=deleteActiveInputConnection(c[o],a,s);return _===null?[deletePassiveInputConnectionToAudioNode(d,a,s,o)[2],!1]:[_[2],!0]},deleteInputConnectionOfAudioParam=(a,e,s)=>{const{activeInputs:o,passiveInputs:c}=getAudioParamConnections(e),d=deleteActiveInputConnection(o,a,s);return d===null?[deletePassiveInputConnectionToAudioParam(c,a,s)[1],!1]:[d[2],!0]},deleteInputsOfAudioNode=(a,e,s,o,c)=>{const[d,_]=deleteInputConnectionOfAudioNode(a,s,o,c);if(d!==null&&(deleteEventListenerOfAudioNode(a,d),_&&!e&&!isPartOfACycle(a)&&disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(a),getNativeAudioNode(s),o,c)),isActiveAudioNode(s)){const{activeInputs:b}=getAudioNodeConnections(s);setInternalStateToPassiveWhenNecessary(s,b)}},deleteInputsOfAudioParam=(a,e,s,o)=>{const[c,d]=deleteInputConnectionOfAudioParam(a,s,o);c!==null&&(deleteEventListenerOfAudioNode(a,c),d&&!e&&!isPartOfACycle(a)&&getNativeAudioNode(a).disconnect(getNativeAudioParam(s),o))},deleteAnyConnection=(a,e)=>{const s=getAudioNodeConnections(a),o=[];for(const c of s.outputs)isAudioNodeOutputConnection(c)?deleteInputsOfAudioNode(a,e,...c):deleteInputsOfAudioParam(a,e,...c),o.push(c[0]);return s.outputs.clear(),o},deleteConnectionAtOutput=(a,e,s)=>{const o=getAudioNodeConnections(a),c=[];for(const d of o.outputs)d[1]===s&&(isAudioNodeOutputConnection(d)?deleteInputsOfAudioNode(a,e,...d):deleteInputsOfAudioParam(a,e,...d),c.push(d[0]),o.outputs.delete(d));return c},deleteConnectionToDestination=(a,e,s,o,c)=>{const d=getAudioNodeConnections(a);return Array.from(d.outputs).filter(_=>_[0]===s&&(o===void 0||_[1]===o)&&(c===void 0||_[2]===c)).map(_=>(isAudioNodeOutputConnection(_)?deleteInputsOfAudioNode(a,e,..._):deleteInputsOfAudioParam(a,e,..._),d.outputs.delete(_),_[0]))},createAudioNodeConstructor=(a,e,s,o,c,d,_,b,k,$,j,_e,et,tt,nt,it)=>class extends ${constructor(st,ot,lt,dt){super(lt),this._context=st,this._nativeAudioNode=lt;const ct=j(st);_e(ct)&&s(testAudioNodeDisconnectMethodSupport,()=>testAudioNodeDisconnectMethodSupport(ct,it))!==!0&&wrapAudioNodeDisconnectMethod(lt),AUDIO_NODE_STORE.set(this,lt),EVENT_LISTENERS.set(this,new Set),st.state!=="closed"&&ot&&setInternalStateToActive(this),a(this,dt,lt)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(st){this._nativeAudioNode.channelCount=st}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(st){this._nativeAudioNode.channelCountMode=st}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(st){this._nativeAudioNode.channelInterpretation=st}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(st,ot=0,lt=0){if(ot<0||ot>=this._nativeAudioNode.numberOfOutputs)throw c();const dt=j(this._context),ct=nt(dt);if(et(st)||tt(st))throw d();if(isAudioNode$1(st)){const ht=getNativeAudioNode(st);try{const Et=connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode,ht,ot,lt),gt=isPassiveAudioNode(this);(ct||gt)&&this._nativeAudioNode.disconnect(...Et),this.context.state!=="closed"&&!gt&&isPassiveAudioNode(st)&&setInternalStateToActive(st)}catch(Et){throw Et.code===12?d():Et}if(e(this,st,ot,lt,ct)){const Et=k([this],st);visitEachAudioNodeOnce(Et,o(ct))}return st}const ut=getNativeAudioParam(st);if(ut.name==="playbackRate"&&ut.maxValue===1024)throw _();try{this._nativeAudioNode.connect(ut,ot),(ct||isPassiveAudioNode(this))&&this._nativeAudioNode.disconnect(ut,ot)}catch(ht){throw ht.code===12?d():ht}if(addConnectionToAudioParamOfAudioContext(this,st,ot,ct)){const ht=k([this],st);visitEachAudioNodeOnce(ht,o(ct))}}disconnect(st,ot,lt){let dt;const ct=j(this._context),ut=nt(ct);if(st===void 0)dt=deleteAnyConnection(this,ut);else if(typeof st=="number"){if(st<0||st>=this.numberOfOutputs)throw c();dt=deleteConnectionAtOutput(this,ut,st)}else{if(ot!==void 0&&(ot<0||ot>=this.numberOfOutputs)||isAudioNode$1(st)&<!==void 0&&(lt<0||lt>=st.numberOfInputs))throw c();if(dt=deleteConnectionToDestination(this,ut,st,ot,lt),dt.length===0)throw d()}for(const at of dt){const ht=k([this],at);visitEachAudioNodeOnce(ht,b)}}},createAudioParamFactory=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt=null,st=null)=>{const ot=new AutomationEventList(it.defaultValue),lt=nt?o(ot):null,dt={get defaultValue(){return it.defaultValue},get maxValue(){return rt===null?it.maxValue:rt},get minValue(){return st===null?it.minValue:st},get value(){return it.value},set value(ct){it.value=ct,dt.setValueAtTime(ct,tt.context.currentTime)},cancelAndHoldAtTime(ct){if(typeof it.cancelAndHoldAtTime=="function")lt===null&&ot.flush(tt.context.currentTime),ot.add(c(ct)),it.cancelAndHoldAtTime(ct);else{const ut=Array.from(ot).pop();lt===null&&ot.flush(tt.context.currentTime),ot.add(c(ct));const at=Array.from(ot).pop();it.cancelScheduledValues(ct),ut!==at&&at!==void 0&&(at.type==="exponentialRampToValue"?it.exponentialRampToValueAtTime(at.value,at.endTime):at.type==="linearRampToValue"?it.linearRampToValueAtTime(at.value,at.endTime):at.type==="setValue"?it.setValueAtTime(at.value,at.startTime):at.type==="setValueCurve"&&it.setValueCurveAtTime(at.values,at.startTime,at.duration))}return dt},cancelScheduledValues(ct){return lt===null&&ot.flush(tt.context.currentTime),ot.add(d(ct)),it.cancelScheduledValues(ct),dt},exponentialRampToValueAtTime(ct,ut){if(ct===0)throw new RangeError;if(!Number.isFinite(ut)||ut<0)throw new RangeError;return lt===null&&ot.flush(tt.context.currentTime),ot.add(_(ct,ut)),it.exponentialRampToValueAtTime(ct,ut),dt},linearRampToValueAtTime(ct,ut){return lt===null&&ot.flush(tt.context.currentTime),ot.add(b(ct,ut)),it.linearRampToValueAtTime(ct,ut),dt},setTargetAtTime(ct,ut,at){return lt===null&&ot.flush(tt.context.currentTime),ot.add(k(ct,ut,at)),it.setTargetAtTime(ct,ut,at),dt},setValueAtTime(ct,ut){return lt===null&&ot.flush(tt.context.currentTime),ot.add($(ct,ut)),it.setValueAtTime(ct,ut),dt},setValueCurveAtTime(ct,ut,at){const ht=ct instanceof Float32Array?ct:new Float32Array(ct);if(_e!==null&&_e.name==="webkitAudioContext"){const pt=ut+at,Et=tt.context.sampleRate,gt=Math.ceil(ut*Et),ft=Math.floor(pt*Et),mt=ft-gt,yt=new Float32Array(mt);for(let At=0;At({replay(e){for(const s of a)if(s.type==="exponentialRampToValue"){const{endTime:o,value:c}=s;e.exponentialRampToValueAtTime(c,o)}else if(s.type==="linearRampToValue"){const{endTime:o,value:c}=s;e.linearRampToValueAtTime(c,o)}else if(s.type==="setTarget"){const{startTime:o,target:c,timeConstant:d}=s;e.setTargetAtTime(c,o,d)}else if(s.type==="setValue"){const{startTime:o,value:c}=s;e.setValueAtTime(c,o)}else if(s.type==="setValueCurve"){const{duration:o,startTime:c,values:d}=s;e.setValueCurveAtTime(d,c,o)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,s=null){return this._map.forEach((o,c)=>e.call(s,o,c,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$g={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor=(a,e,s,o,c,d,_,b,k,$,j,_e,et,tt)=>class extends e{constructor(it,rt,st){var ot;const lt=b(it),dt=k(lt),ct=j(_t(_t({},DEFAULT_OPTIONS$g),st));et(ct);const ut=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(lt),at=ut==null?void 0:ut.get(rt),ht=dt||lt.state!=="closed"?lt:(ot=_(lt))!==null&&ot!==void 0?ot:lt,pt=c(ht,dt?null:it.baseLatency,$,rt,at,ct),Et=dt?o(rt,ct,at):null;super(it,!0,pt,Et);const gt=[];pt.parameters.forEach((mt,yt)=>{const vt=s(this,dt,mt);gt.push([yt,vt])}),this._nativeAudioWorkletNode=pt,this._onprocessorerror=null,this._parameters=new ReadOnlyMap(gt),dt&&a(lt,this);const{activeInputs:ft}=d(this);_e(pt,ft)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(it){const rt=typeof it=="function"?tt(this,it):null;this._nativeAudioWorkletNode.onprocessorerror=rt;const st=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=st!==null&&st===rt?it:st}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel(a,e,s,o,c){if(typeof a.copyFromChannel=="function")e[s].byteLength===0&&(e[s]=new Float32Array(128)),a.copyFromChannel(e[s],o,c);else{const d=a.getChannelData(o);if(e[s].byteLength===0)e[s]=d.slice(c,c+128);else{const _=new Float32Array(d.buffer,c*Float32Array.BYTES_PER_ELEMENT,128);e[s].set(_)}}}const copyToChannel=(a,e,s,o,c)=>{typeof a.copyToChannel=="function"?e[s].byteLength!==0&&a.copyToChannel(e[s],o,c):e[s].byteLength!==0&&a.getChannelData(o).set(e[s],c)},createNestedArrays=(a,e)=>{const s=[];for(let o=0;o{const s=getValueForKey(NODE_TO_PROCESSOR_MAPS,a),o=getNativeAudioNode(e);return getValueForKey(s,o)},processBuffer=async(a,e,s,o,c,d,_)=>{const b=e===null?Math.ceil(a.context.length/128)*128:e.length,k=o.channelCount*o.numberOfInputs,$=c.reduce((rt,st)=>rt+st,0),j=$===0?null:s.createBuffer($,b,s.sampleRate);if(d===void 0)throw new Error("Missing the processor constructor.");const _e=getAudioNodeConnections(a),et=await getAudioWorkletProcessor(s,a),tt=createNestedArrays(o.numberOfInputs,o.channelCount),nt=createNestedArrays(o.numberOfOutputs,c),it=Array.from(a.parameters.keys()).reduce((rt,st)=>wt(_t({},rt),{[st]:new Float32Array(128)}),{});for(let rt=0;rt0&&e!==null)for(let st=0;st{copyFromChannel(e,it,st,k+ot,rt)});for(let st=0;st_e.activeInputs[dt].size===0?[]:lt),ot=_(rt/s.sampleRate,s.sampleRate,()=>et.process(st,nt,it));if(j!==null)for(let lt=0,dt=0;lt(rt,st,ot)=>{const lt=new WeakMap;let dt=null;const ct=async(ut,at)=>{let ht=j(ut),pt=null;const Et=isOwnedByContext(ht,at),gt=Array.isArray(st.outputChannelCount)?st.outputChannelCount:Array.from(st.outputChannelCount);if(_e===null){const ft=gt.reduce((At,St)=>At+St,0),mt=c(at,{channelCount:Math.max(1,ft),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ft)}),yt=[];for(let At=0;At{const Ct=new et(Dt,Math.ceil(ut.context.length/128)*128,at.sampleRate),bt=[],$t=[];for(let Pt=0;Pt{const Ft=d(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Pt.value});return await tt(Ct,Pt,Ft.offset),Ft})),Rt=o(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,St+Tt)});for(let Pt=0;Ptnt(ut,Ct,Pt))),it(Ct)})(),at,st,gt,ot,$)}const ft=await dt,mt=s(at,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[yt,vt,At]=pt;ft!==null&&(mt.buffer=ft,mt.start(0)),mt.connect(yt);for(let St=0,Tt=0;Stclass extends nt{constructor(ct,ut){super(ct,ut),this._nativeContext=ct,this._audioWorklet=a===void 0?void 0:{addModule:(at,ht)=>a(this,at,ht)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new e(this)}createBiquadFilter(){return new c(this)}createBuffer(ct,ut,at){return new s({length:ut,numberOfChannels:ct,sampleRate:at})}createBufferSource(){return new o(this)}createChannelMerger(ct=6){return new d(this,{numberOfInputs:ct})}createChannelSplitter(ct=6){return new _(this,{numberOfOutputs:ct})}createConstantSource(){return new b(this)}createConvolver(){return new k(this)}createDelay(ct=1){return new j(this,{maxDelayTime:ct})}createDynamicsCompressor(){return new _e(this)}createGain(){return new et(this)}createIIRFilter(ct,ut){return new tt(this,{feedback:ut,feedforward:ct})}createOscillator(){return new it(this)}createPanner(){return new rt(this)}createPeriodicWave(ct,ut,at={disableNormalization:!1}){return new st(this,wt(_t({},at),{imag:ut,real:ct}))}createStereoPanner(){return new ot(this)}createWaveShaper(){return new lt(this)}decodeAudioData(ct,ut,at){return $(this._nativeContext,ct).then(ht=>(typeof ut=="function"&&ut(ht),ht),ht=>{throw typeof at=="function"&&at(ht),ht})}},DEFAULT_OPTIONS$f={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$f),j),tt=c(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._Q=e(this,nt,tt.Q,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._detune=e(this,nt,tt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT)),this._frequency=e(this,nt,tt.frequency,$.sampleRate/2,0),this._gain=e(this,nt,tt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT),MOST_NEGATIVE_SINGLE_FLOAT),this._nativeBiquadFilterNode=tt,b(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type($){this._nativeBiquadFilterNode.type=$}getFrequencyResponse($,j,_e){try{this._nativeBiquadFilterNode.getFrequencyResponse($,j,_e)}catch(et){throw et.code===11?o():et}if($.length!==j.length||j.length!==_e.length)throw o()}},createBiquadFilterNodeRendererFactory=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={Q:$.Q.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,detune:$.detune.value,frequency:$.frequency.value,gain:$.gain.value,type:$.type};$=e(k,_e)}return d.set(k,$),j?(await a(k,b.Q,$.Q),await a(k,b.detune,$.detune),await a(k,b.frequency,$.frequency),await a(k,b.gain,$.gain)):(await o(k,b.Q,$.Q),await o(k,b.detune,$.detune),await o(k,b.frequency,$.frequency),await o(k,b.gain,$.gain)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createCacheTestResult=(a,e)=>(s,o)=>{const c=e.get(s);if(c!==void 0)return c;const d=a.get(s);if(d!==void 0)return d;try{const _=o();return _ instanceof Promise?(a.set(s,_),_.catch(()=>!1).then(b=>(a.delete(s),e.set(s,b),b))):(e.set(s,_),_)}catch{return e.set(s,!1),!1}},DEFAULT_OPTIONS$e={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor=(a,e,s,o,c)=>class extends a{constructor(_,b){const k=o(_),$=_t(_t({},DEFAULT_OPTIONS$e),b),j=s(k,$),_e=c(k)?e():null;super(_,!1,j,_e)}},createChannelMergerNodeRendererFactory=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfInputs:b.numberOfInputs};b=a(_,$)}return o.set(_,b),await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},DEFAULT_OPTIONS$d={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=o(b),j=d(_t(_t({},DEFAULT_OPTIONS$d),k)),_e=s($,j),et=c($)?e():null;super(b,!1,_e,et)}},createChannelSplitterNodeRendererFactory=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfOutputs:b.numberOfOutputs};b=a(_,$)}return o.set(_,b),await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createConnectAudioParam=a=>(e,s,o)=>a(s,e,o),createConnectMultipleOutputs=a=>(e,s,o=0,c=0)=>{const d=e[o];if(d===void 0)throw a();return isNativeAudioNode$1(s)?d.connect(s,0,c):d.connect(s,0)},createConnectedNativeAudioBufferSourceNodeFactory=a=>(e,s)=>{const o=a(e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),c=e.createBuffer(1,2,44100);return o.buffer=c,o.loop=!0,o.connect(s),o.start(),()=>{o.stop(),o.disconnect(s)}},DEFAULT_OPTIONS$c={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$c),$),et=o(j,_e),tt=d(j),nt=tt?s():null;super(k,!1,et,nt),this._constantSourceNodeRenderer=nt,this._nativeConstantSourceNode=et,this._offset=e(this,tt,et.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeConstantSourceNode.onended=$;const j=this._nativeConstantSourceNode.onended;this._onended=j!==null&&j===$?k:j}start(k=0){if(this._nativeConstantSourceNode.start(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeConstantSourceNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeConstantSourceNode.addEventListener("ended",$)}}stop(k=0){this._nativeConstantSourceNode.stop(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=k)}},createConstantSourceNodeRendererFactory=(a,e,s,o,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,offset:_e.offset.value};_e=e(j,tt),_!==null&&_e.start(_),b!==null&&_e.stop(b)}return d.set(j,_e),et?await a(j,$.offset,_e.offset):await o(j,$.offset,_e.offset),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},createConvertNumberToUnsignedLong=a=>e=>(a[0]=e,a[0]),DEFAULT_OPTIONS$b={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=o(b),j=_t(_t({},DEFAULT_OPTIONS$b),k),_e=s($,j),tt=c($)?e():null;super(b,!1,_e,tt),this._isBufferNullified=!1,this._nativeConvolverNode=_e,j.buffer!==null&&d(this,j.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(b){if(this._nativeConvolverNode.buffer=b,b===null&&this._nativeConvolverNode.buffer!==null){const k=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=k.createBuffer(1,1,44100),this._isBufferNullified=!0,d(this,0)}else this._isBufferNullified=!1,d(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(b){this._nativeConvolverNode.normalize=b}},createConvolverNodeRendererFactory=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={buffer:b.buffer,channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,disableNormalization:!b.normalize};b=a(_,$)}return o.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createCreateNativeOfflineAudioContext=(a,e)=>(s,o,c)=>{if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new e(s,o,c)}catch(d){throw d.name==="SyntaxError"?a():d}},createDataCloneError=()=>new DOMException("","DataCloneError"),detachArrayBuffer=a=>{const{port1:e,port2:s}=new MessageChannel;return new Promise(o=>{const c=()=>{s.onmessage=null,e.close(),s.close(),o()};s.onmessage=()=>c();try{e.postMessage(a,[a])}finally{c()}})},createDecodeAudioData=(a,e,s,o,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_(_e)?_e:d(_e);if(c.has(et)){const nt=s();return Promise.reject(nt)}try{c.add(et)}catch{}return e(k,()=>k(tt))?tt.decodeAudioData(et).then(nt=>(detachArrayBuffer(et).catch(()=>{}),e(b,()=>b(nt))||j(nt),a.add(nt),nt)):new Promise((nt,it)=>{const rt=async()=>{try{await detachArrayBuffer(et)}catch{}},st=ot=>{it(ot),rt()};try{tt.decodeAudioData(et,ot=>{typeof ot.copyFromChannel!="function"&&($(ot),wrapAudioBufferGetChannelDataMethod(ot)),a.add(ot),rt().then(()=>nt(ot))},ot=>{st(ot===null?o():ot)})}catch(ot){st(ot)}})},createDecrementCycleCounter=(a,e,s,o,c,d,_,b)=>(k,$)=>{const j=e.get(k);if(j===void 0)throw new Error("Missing the expected cycle count.");const _e=d(k.context),et=b(_e);if(j===$){if(e.delete(k),!et&&_(k)){const tt=o(k),{outputs:nt}=s(k);for(const it of nt)if(isAudioNodeOutputConnection(it)){const rt=o(it[0]);a(tt,rt,it[1],it[2])}else{const rt=c(it[0]);tt.connect(rt,it[1])}}}else e.set(k,j-$)},DEFAULT_OPTIONS$a={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$a),$),et=o(j,_e),tt=d(j),nt=tt?s(_e.maxDelayTime):null;super(k,!1,et,nt),this._delayTime=e(this,tt,et.delayTime),_(this,_e.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory=(a,e,s,o,c)=>d=>{const _=new WeakMap,b=async(k,$)=>{let j=s(k);const _e=isOwnedByContext(j,$);if(!_e){const et={channelCount:j.channelCount,channelCountMode:j.channelCountMode,channelInterpretation:j.channelInterpretation,delayTime:j.delayTime.value,maxDelayTime:d};j=e($,et)}return _.set($,j),_e?await a($,k.delayTime,j.delayTime):await o($,k.delayTime,j.delayTime),await c(k,$,j),j};return{render(k,$){const j=_.get($);return j!==void 0?Promise.resolve(j):b(k,$)}}},createDeleteActiveInputConnectionToAudioNode=a=>(e,s,o,c)=>a(e[c],d=>d[0]===s&&d[1]===o),createDeleteUnrenderedAudioWorkletNode=a=>(e,s)=>{a(e).delete(s)},isDelayNode=a=>"delayTime"in a,createDetectCycles=(a,e,s)=>function o(c,d){const _=isAudioNode$1(d)?d:s(a,d);if(isDelayNode(_))return[];if(c[0]===_)return[c];if(c.includes(_))return[];const{outputs:b}=e(_);return Array.from(b).map(k=>o([...c,_],k[0])).reduce((k,$)=>k.concat($),[])},getOutputAudioNodeAtIndex=(a,e,s)=>{const o=e[s];if(o===void 0)throw a();return o},createDisconnectMultipleOutputs=a=>(e,s=void 0,o=void 0,c=0)=>s===void 0?e.forEach(d=>d.disconnect()):typeof s=="number"?getOutputAudioNodeAtIndex(a,e,s).disconnect():isNativeAudioNode$1(s)?o===void 0?e.forEach(d=>d.disconnect(s)):c===void 0?getOutputAudioNodeAtIndex(a,e,o).disconnect(s,0):getOutputAudioNodeAtIndex(a,e,o).disconnect(s,0,c):o===void 0?e.forEach(d=>d.disconnect(s)):getOutputAudioNodeAtIndex(a,e,o).disconnect(s,0),DEFAULT_OPTIONS$9={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor=(a,e,s,o,c,d,_,b)=>class extends a{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$9),j),tt=o(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._attack=e(this,nt,tt.attack),this._knee=e(this,nt,tt.knee),this._nativeDynamicsCompressorNode=tt,this._ratio=e(this,nt,tt.ratio),this._release=e(this,nt,tt.release),this._threshold=e(this,nt,tt.threshold),b(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount($){const j=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=$,$>2)throw this._nativeDynamicsCompressorNode.channelCount=j,c()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode($){const j=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=$,$==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=j,c()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={attack:$.attack.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,knee:$.knee.value,ratio:$.ratio.value,release:$.release.value,threshold:$.threshold.value};$=e(k,_e)}return d.set(k,$),j?(await a(k,b.attack,$.attack),await a(k,b.knee,$.knee),await a(k,b.ratio,$.ratio),await a(k,b.release,$.release),await a(k,b.threshold,$.threshold)):(await o(k,b.attack,$.attack),await o(k,b.knee,$.knee),await o(k,b.ratio,$.ratio),await o(k,b.release,$.release),await o(k,b.threshold,$.threshold)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createEncodingError=()=>new DOMException("","EncodingError"),createEvaluateSource=a=>e=>new Promise((s,o)=>{if(a===null){o(new SyntaxError);return}const c=a.document.head;if(c===null)o(new SyntaxError);else{const d=a.document.createElement("script"),_=new Blob([e],{type:"application/javascript"}),b=URL.createObjectURL(_),k=a.onerror,$=()=>{a.onerror=k,URL.revokeObjectURL(b)};a.onerror=(j,_e,et,tt,nt)=>{if(_e===b||_e===a.location.href&&et===1&&tt===1)return $(),o(nt),!1;if(k!==null)return k(j,_e,et,tt,nt)},d.onerror=()=>{$(),o(new SyntaxError)},d.onload=()=>{$(),s()},d.src=b,d.type="module",c.appendChild(d)}}),createEventTargetConstructor=a=>class{constructor(s){this._nativeEventTarget=s,this._listeners=new WeakMap}addEventListener(s,o,c){if(o!==null){let d=this._listeners.get(o);d===void 0&&(d=a(this,o),typeof o=="function"&&this._listeners.set(o,d)),this._nativeEventTarget.addEventListener(s,d,c)}}dispatchEvent(s){return this._nativeEventTarget.dispatchEvent(s)}removeEventListener(s,o,c){const d=o===null?void 0:this._listeners.get(o);this._nativeEventTarget.removeEventListener(s,d===void 0?null:d,c)}},createExposeCurrentFrameAndCurrentTime=a=>(e,s,o)=>{Object.defineProperties(a,{currentFrame:{configurable:!0,get(){return Math.round(e*s)}},currentTime:{configurable:!0,get(){return e}}});try{return o()}finally{a!==null&&(delete a.currentFrame,delete a.currentTime)}},createFetchSource=a=>async e=>{try{const s=await fetch(e);if(s.ok)return[await s.text(),s.url]}catch{}throw a()},DEFAULT_OPTIONS$8={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$8),k),_e=o($,j),et=d($),tt=et?s():null;super(b,!1,_e,tt),this._gain=e(this,et,_e.gain,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get gain(){return this._gain}},createGainNodeRendererFactory=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,gain:$.gain.value};$=e(k,_e)}return d.set(k,$),j?await a(k,b.gain,$.gain):await o(k,b.gain,$.gain),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createGetActiveAudioWorkletNodeInputs=(a,e)=>s=>e(a,s),createGetAudioNodeRenderer=a=>e=>{const s=a(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return s.renderer},createGetAudioNodeTailTime=a=>e=>{var s;return(s=a.get(e))!==null&&s!==void 0?s:0},createGetAudioParamRenderer=a=>e=>{const s=a(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return s.renderer},createGetBackupOfflineAudioContext=a=>e=>a.get(e),createInvalidStateError=()=>new DOMException("","InvalidStateError"),createGetNativeContext=a=>e=>{const s=a.get(e);if(s===void 0)throw createInvalidStateError();return s},createGetOrCreateBackupOfflineAudioContext=(a,e)=>s=>{let o=a.get(s);if(o!==void 0)return o;if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");return o=new e(1,1,44100),a.set(s,o),o},createGetUnrenderedAudioWorkletNodes=a=>e=>{const s=a.get(e);if(s===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return s},createInvalidAccessError=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod=a=>{a.getFrequencyResponse=(e=>(s,o,c)=>{if(s.length!==o.length||o.length!==c.length)throw createInvalidAccessError();return e.call(a,s,o,c)})(a.getFrequencyResponse)},DEFAULT_OPTIONS$7={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=o(b),j=c($),_e=_t(_t({},DEFAULT_OPTIONS$7),k),et=e($,j?null:b.baseLatency,_e),tt=j?s(_e.feedback,_e.feedforward):null;super(b,!1,et,tt),wrapIIRFilterNodeGetFrequencyResponseMethod(et),this._nativeIIRFilterNode=et,d(this,1)}getFrequencyResponse(b,k,$){return this._nativeIIRFilterNode.getFrequencyResponse(b,k,$)}},filterBuffer=(a,e,s,o,c,d,_,b,k,$,j)=>{const _e=$.length;let et=b;for(let tt=0;tt<_e;tt+=1){let nt=s[0]*$[tt];for(let it=1;it{const c=s instanceof Float64Array?s:new Float64Array(s),d=o instanceof Float64Array?o:new Float64Array(o),_=c.length,b=d.length,k=Math.min(_,b);if(c[0]!==1){for(let nt=0;nt<_;nt+=1)d[nt]/=c[0];for(let nt=1;nt(d,_)=>{const b=new WeakMap;let k=null;const $=async(j,_e)=>{let et=null,tt=e(j);const nt=isOwnedByContext(tt,_e);if(_e.createIIRFilter===void 0?et=a(_e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):nt||(tt=_e.createIIRFilter(_,d)),b.set(_e,et===null?tt:et),et!==null){if(k===null){if(s===null)throw new Error("Missing the native OfflineAudioContext constructor.");const rt=new s(j.context.destination.channelCount,j.context.length,_e.sampleRate);k=(async()=>{await o(j,rt,rt.destination);const st=await c(rt);return filterFullBuffer(st,_e,d,_)})()}const it=await k;return et.buffer=it,et.start(0),et}return await o(j,_e,tt),tt};return{render(j,_e){const et=b.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},createIncrementCycleCounterFactory=(a,e,s,o,c,d)=>_=>(b,k)=>{const $=a.get(b);if($===void 0){if(!_&&d(b)){const j=o(b),{outputs:_e}=s(b);for(const et of _e)if(isAudioNodeOutputConnection(et)){const tt=o(et[0]);e(j,tt,et[1],et[2])}else{const tt=c(et[0]);j.disconnect(tt,et[1])}}a.set(b,k)}else a.set(b,$+k)},createIsAnyAudioContext=(a,e)=>s=>{const o=a.get(s);return e(o)||e(s)},createIsAnyAudioNode=(a,e)=>s=>a.has(s)||e(s),createIsAnyAudioParam=(a,e)=>s=>a.has(s)||e(s),createIsAnyOfflineAudioContext=(a,e)=>s=>{const o=a.get(s);return e(o)||e(s)},createIsNativeAudioContext=a=>e=>a!==null&&e instanceof a,createIsNativeAudioNode=a=>e=>a!==null&&typeof a.AudioNode=="function"&&e instanceof a.AudioNode,createIsNativeAudioParam=a=>e=>a!==null&&typeof a.AudioParam=="function"&&e instanceof a.AudioParam,createIsNativeContext=(a,e)=>s=>a(s)||e(s),createIsNativeOfflineAudioContext=a=>e=>a!==null&&e instanceof a,createIsSecureContext=a=>a!==null&&a.isSecureContext,createMediaElementAudioSourceNodeConstructor=(a,e,s,o)=>class extends a{constructor(d,_){const b=s(d),k=e(b,_);if(o(b))throw TypeError();super(d,!0,k,null),this._nativeMediaElementAudioSourceNode=k}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$6={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor=(a,e,s,o)=>class extends a{constructor(d,_){const b=s(d);if(o(b))throw new TypeError;const k=_t(_t({},DEFAULT_OPTIONS$6),_),$=e(b,k);super(d,!1,$,null),this._nativeMediaStreamAudioDestinationNode=$}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor=(a,e,s,o)=>class extends a{constructor(d,_){const b=s(d),k=e(b,_);if(o(b))throw new TypeError;super(d,!0,k,null),this._nativeMediaStreamAudioSourceNode=k}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor=(a,e,s)=>class extends a{constructor(c,d){const _=s(c),b=e(_,d);super(c,!0,b,null)}},createMinimalBaseAudioContextConstructor=(a,e,s,o,c,d)=>class extends s{constructor(b,k){super(b),this._nativeContext=b,CONTEXT_STORE.set(this,b),o(b)&&c.set(b,new Set),this._destination=new a(this,k),this._listener=e(this,b),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(b){const k=typeof b=="function"?d(this,b):null;this._nativeContext.onstatechange=k;const $=this._nativeContext.onstatechange;this._onstatechange=$!==null&&$===k?b:$}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport=a=>{const e=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const s=a.decodeAudioData(e.buffer,()=>{});return s===void 0?!1:(s.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections=(a,e)=>(s,o,c)=>{const d=new Set;return s.connect=(_=>(b,k=0,$=0)=>{const j=d.size===0;if(e(b))return _.call(s,b,k,$),a(d,[b,k,$],_e=>_e[0]===b&&_e[1]===k&&_e[2]===$,!0),j&&o(),b;_.call(s,b,k),a(d,[b,k],_e=>_e[0]===b&&_e[1]===k,!0),j&&o()})(s.connect),s.disconnect=(_=>(b,k,$)=>{const j=d.size>0;if(b===void 0)_.apply(s),d.clear();else if(typeof b=="number"){_.call(s,b);for(const et of d)et[1]===b&&d.delete(et)}else{e(b)?_.call(s,b,k,$):_.call(s,b,k);for(const et of d)et[0]===b&&(k===void 0||et[1]===k)&&($===void 0||et[2]===$)&&d.delete(et)}const _e=d.size===0;j&&_e&&c()})(s.disconnect),s},assignNativeAudioNodeOption=(a,e,s)=>{const o=e[s];o!==void 0&&o!==a[s]&&(a[s]=o)},assignNativeAudioNodeOptions=(a,e)=>{assignNativeAudioNodeOption(a,e,"channelCount"),assignNativeAudioNodeOption(a,e,"channelCountMode"),assignNativeAudioNodeOption(a,e,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport=a=>typeof a.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod=a=>{a.getFloatTimeDomainData=e=>{const s=new Uint8Array(e.length);a.getByteTimeDomainData(s);const o=Math.max(s.length,a.fftSize);for(let c=0;c(s,o)=>{const c=s.createAnalyser();if(assignNativeAudioNodeOptions(c,o),!(o.maxDecibels>o.minDecibels))throw e();return assignNativeAudioNodeOption(c,o,"fftSize"),assignNativeAudioNodeOption(c,o,"maxDecibels"),assignNativeAudioNodeOption(c,o,"minDecibels"),assignNativeAudioNodeOption(c,o,"smoothingTimeConstant"),a(testAnalyserNodeGetFloatTimeDomainDataMethodSupport,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport(c))||wrapAnalyserNodeGetFloatTimeDomainDataMethod(c),c},createNativeAudioBufferConstructor=a=>a===null?null:a.hasOwnProperty("AudioBuffer")?a.AudioBuffer:null,assignNativeAudioNodeAudioParamValue=(a,e,s)=>{const o=e[s];o!==void 0&&o!==a[s].value&&(a[s].value=o)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls=a=>{a.start=(e=>{let s=!1;return(o=0,c=0,d)=>{if(s)throw createInvalidStateError();e.call(a,o,c,d),s=!0}})(a.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters=a=>{a.start=(e=>(s=0,o=0,c)=>{if(typeof c=="number"&&c<0||o<0||s<0)throw new RangeError("The parameters can't be negative.");e.call(a,s,o,c)})(a.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters=a=>{a.stop=(e=>(s=0)=>{if(s<0)throw new RangeError("The parameter can't be negative.");e.call(a,s)})(a.stop)},createNativeAudioBufferSourceNodeFactory=(a,e,s,o,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_e.createBufferSource();return assignNativeAudioNodeOptions(tt,et),assignNativeAudioNodeAudioParamValue(tt,et,"playbackRate"),assignNativeAudioNodeOption(tt,et,"buffer"),assignNativeAudioNodeOption(tt,et,"loop"),assignNativeAudioNodeOption(tt,et,"loopEnd"),assignNativeAudioNodeOption(tt,et,"loopStart"),e(s,()=>s(_e))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(tt),e(o,()=>o(_e))||k(tt),e(c,()=>c(_e))||$(tt,_e),e(d,()=>d(_e))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(tt),e(_,()=>_(_e))||j(tt,_e),e(b,()=>b(_e))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(tt),a(_e,tt),tt},createNativeAudioContextConstructor=a=>a===null?null:a.hasOwnProperty("AudioContext")?a.AudioContext:a.hasOwnProperty("webkitAudioContext")?a.webkitAudioContext:null,createNativeAudioDestinationNodeFactory=(a,e)=>(s,o,c)=>{const d=s.destination;if(d.channelCount!==o)try{d.channelCount=o}catch{}c&&d.channelCountMode!=="explicit"&&(d.channelCountMode="explicit"),d.maxChannelCount===0&&Object.defineProperty(d,"maxChannelCount",{value:o});const _=a(s,{channelCount:o,channelCountMode:d.channelCountMode,channelInterpretation:d.channelInterpretation,gain:1});return e(_,"channelCount",b=>()=>b.call(_),b=>k=>{b.call(_,k);try{d.channelCount=k}catch($){if(k>d.maxChannelCount)throw $}}),e(_,"channelCountMode",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelCountMode=k}),e(_,"channelInterpretation",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelInterpretation=k}),Object.defineProperty(_,"maxChannelCount",{get:()=>d.maxChannelCount}),_.connect(d),_},createNativeAudioWorkletNodeConstructor=a=>a===null?null:a.hasOwnProperty("AudioWorkletNode")?a.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions=a=>{const{port1:e}=new MessageChannel;try{e.postMessage(a)}finally{e.close()}},createNativeAudioWorkletNodeFactory=(a,e,s,o,c)=>(d,_,b,k,$,j)=>{if(b!==null)try{const _e=new b(d,k,j),et=new Map;let tt=null;if(Object.defineProperties(_e,{channelCount:{get:()=>j.channelCount,set:()=>{throw a()}},channelCountMode:{get:()=>"explicit",set:()=>{throw a()}},onprocessorerror:{get:()=>tt,set:nt=>{typeof tt=="function"&&_e.removeEventListener("processorerror",tt),tt=typeof nt=="function"?nt:null,typeof tt=="function"&&_e.addEventListener("processorerror",tt)}}}),_e.addEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=typeof it[1]=="function"?it[1]:typeof it[1]=="object"&&it[1]!==null&&typeof it[1].handleEvent=="function"?it[1].handleEvent:null;if(rt!==null){const st=et.get(it[1]);st!==void 0?it[1]=st:(it[1]=ot=>{ot.type==="error"?(Object.defineProperties(ot,{type:{value:"processorerror"}}),rt(ot)):rt(new ErrorEvent(it[0],_t({},ot)))},et.set(rt,it[1]))}}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,...it)})(_e.addEventListener),_e.removeEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=et.get(it[1]);rt!==void 0&&(et.delete(it[1]),it[1]=rt)}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,it[0],it[1],it[2])})(_e.removeEventListener),j.numberOfOutputs!==0){const nt=s(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return _e.connect(nt).connect(d.destination),c(_e,()=>nt.disconnect(),()=>nt.connect(d.destination))}return _e}catch(_e){throw _e.code===11?o():_e}if($===void 0)throw o();return testClonabilityOfAudioWorkletNodeOptions(j),e(d,_,$,j)},computeBufferSize=(a,e)=>a===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(a*e))))),cloneAudioWorkletNodeOptions=a=>new Promise((e,s)=>{const{port1:o,port2:c}=new MessageChannel;o.onmessage=({data:d})=>{o.close(),c.close(),e(d)},o.onmessageerror=({data:d})=>{o.close(),c.close(),s(d)},c.postMessage(a)}),createAudioWorkletProcessorPromise=async(a,e)=>{const s=await cloneAudioWorkletNodeOptions(e);return new a(s)},createAudioWorkletProcessor=(a,e,s,o)=>{let c=NODE_TO_PROCESSOR_MAPS.get(a);c===void 0&&(c=new WeakMap,NODE_TO_PROCESSOR_MAPS.set(a,c));const d=createAudioWorkletProcessorPromise(s,o);return c.set(e,d),d},createNativeAudioWorkletNodeFakerFactory=(a,e,s,o,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt)=>{if(rt.numberOfInputs===0&&rt.numberOfOutputs===0)throw k();const st=Array.isArray(rt.outputChannelCount)?rt.outputChannelCount:Array.from(rt.outputChannelCount);if(st.some(Ot=>Ot<1))throw k();if(st.length!==rt.numberOfOutputs)throw e();if(rt.channelCountMode!=="explicit")throw k();const ot=rt.channelCount*rt.numberOfInputs,lt=st.reduce((Ot,Nt)=>Ot+Nt,0),dt=it.parameterDescriptors===void 0?0:it.parameterDescriptors.length;if(ot+dt>6||lt>6)throw k();const ct=new MessageChannel,ut=[],at=[];for(let Ot=0;OtOt===void 0?0:Ot},maxValue:{get:()=>Nt===void 0?MOST_POSITIVE_SINGLE_FLOAT:Nt},minValue:{get:()=>Vt===void 0?MOST_NEGATIVE_SINGLE_FLOAT:Vt}}),ht.push(Bt)}const pt=o(tt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,ot+dt)}),Et=computeBufferSize(nt,tt.sampleRate),gt=b(tt,Et,ot+dt,Math.max(1,lt)),ft=c(tt,{channelCount:Math.max(1,lt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,lt)}),mt=[];for(let Ot=0;Ot{const Vt=ht[Nt];return Vt.connect(pt,0,ot+Nt),Vt.start(0),[Ot,Vt.offset]}));pt.connect(gt);let vt=rt.channelInterpretation,At=null;const St=rt.numberOfOutputs===0?[gt]:mt,Tt={get bufferSize(){return Et},get channelCount(){return rt.channelCount},set channelCount(Ot){throw s()},get channelCountMode(){return rt.channelCountMode},set channelCountMode(Ot){throw s()},get channelInterpretation(){return vt},set channelInterpretation(Ot){for(const Nt of ut)Nt.channelInterpretation=Ot;vt=Ot},get context(){return gt.context},get inputs(){return ut},get numberOfInputs(){return rt.numberOfInputs},get numberOfOutputs(){return rt.numberOfOutputs},get onprocessorerror(){return At},set onprocessorerror(Ot){typeof At=="function"&&Tt.removeEventListener("processorerror",At),At=typeof Ot=="function"?Ot:null,typeof At=="function"&&Tt.addEventListener("processorerror",At)},get parameters(){return yt},get port(){return ct.port2},addEventListener(...Ot){return gt.addEventListener(Ot[0],Ot[1],Ot[2])},connect:a.bind(null,St),disconnect:$.bind(null,St),dispatchEvent(...Ot){return gt.dispatchEvent(Ot[0])},removeEventListener(...Ot){return gt.removeEventListener(Ot[0],Ot[1],Ot[2])}},Dt=new Map;ct.port1.addEventListener=(Ot=>(...Nt)=>{if(Nt[0]==="message"){const Vt=typeof Nt[1]=="function"?Nt[1]:typeof Nt[1]=="object"&&Nt[1]!==null&&typeof Nt[1].handleEvent=="function"?Nt[1].handleEvent:null;if(Vt!==null){const Lt=Dt.get(Nt[1]);Lt!==void 0?Nt[1]=Lt:(Nt[1]=Bt=>{j(tt.currentTime,tt.sampleRate,()=>Vt(Bt))},Dt.set(Vt,Nt[1]))}}return Ot.call(ct.port1,Nt[0],Nt[1],Nt[2])})(ct.port1.addEventListener),ct.port1.removeEventListener=(Ot=>(...Nt)=>{if(Nt[0]==="message"){const Vt=Dt.get(Nt[1]);Vt!==void 0&&(Dt.delete(Nt[1]),Nt[1]=Vt)}return Ot.call(ct.port1,Nt[0],Nt[1],Nt[2])})(ct.port1.removeEventListener);let xt=null;Object.defineProperty(ct.port1,"onmessage",{get:()=>xt,set:Ot=>{typeof xt=="function"&&ct.port1.removeEventListener("message",xt),xt=typeof Ot=="function"?Ot:null,typeof xt=="function"&&(ct.port1.addEventListener("message",xt),ct.port1.start())}}),it.prototype.port=ct.port1;let Ct=null;createAudioWorkletProcessor(tt,Tt,it,rt).then(Ot=>Ct=Ot);const $t=createNestedArrays(rt.numberOfInputs,rt.channelCount),It=createNestedArrays(rt.numberOfOutputs,st),Rt=it.parameterDescriptors===void 0?[]:it.parameterDescriptors.reduce((Ot,{name:Nt})=>wt(_t({},Ot),{[Nt]:new Float32Array(128)}),{});let Pt=!0;const Ft=()=>{rt.numberOfOutputs>0&>.disconnect(ft);for(let Ot=0,Nt=0;Ot{if(Ct!==null){const Vt=_e(Tt);for(let Lt=0;Lt{copyFromChannel(Ot,Rt,Bt,ot+Wt,Lt)});for(let Bt=0;Bt{if(Vt[Gt].size>0)return qt.set(Gt,Et/128),Qt;const Kt=qt.get(Gt);return Kt===void 0?[]:(Qt.every(Jt=>Jt.every(rn=>rn===0))&&(Kt===1?qt.delete(Gt):qt.set(Gt,Kt-1)),Qt)});Pt=j(tt.currentTime+Lt/tt.sampleRate,tt.sampleRate,()=>Ct.process(Bt,It,Rt));for(let Qt=0,Gt=0;Qtgt.connect(kt).connect(tt.destination),zt=()=>{gt.disconnect(kt),kt.disconnect()},Yt=()=>{if(Pt){zt(),rt.numberOfOutputs>0&>.connect(ft);for(let Ot=0,Nt=0;Ot{Pt&&(Ut(),Ft()),jt=!1};return Ut(),et(Tt,Yt,Xt)},createNativeBiquadFilterNode=(a,e)=>{const s=a.createBiquadFilter();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"Q"),assignNativeAudioNodeAudioParamValue(s,e,"detune"),assignNativeAudioNodeAudioParamValue(s,e,"frequency"),assignNativeAudioNodeAudioParamValue(s,e,"gain"),assignNativeAudioNodeOption(s,e,"type"),s},createNativeChannelMergerNodeFactory=(a,e)=>(s,o)=>{const c=s.createChannelMerger(o.numberOfInputs);return a!==null&&a.name==="webkitAudioContext"&&e(s,c),assignNativeAudioNodeOptions(c,o),c},wrapChannelSplitterNode=a=>{const e=a.numberOfOutputs;Object.defineProperty(a,"channelCount",{get:()=>e,set:s=>{if(s!==e)throw createInvalidStateError()}}),Object.defineProperty(a,"channelCountMode",{get:()=>"explicit",set:s=>{if(s!=="explicit")throw createInvalidStateError()}}),Object.defineProperty(a,"channelInterpretation",{get:()=>"discrete",set:s=>{if(s!=="discrete")throw createInvalidStateError()}})},createNativeChannelSplitterNode=(a,e)=>{const s=a.createChannelSplitter(e.numberOfOutputs);return assignNativeAudioNodeOptions(s,e),wrapChannelSplitterNode(s),s},createNativeConstantSourceNodeFactory=(a,e,s,o,c)=>(d,_)=>{if(d.createConstantSource===void 0)return s(d,_);const b=d.createConstantSource();return assignNativeAudioNodeOptions(b,_),assignNativeAudioNodeAudioParamValue(b,_,"offset"),e(o,()=>o(d))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(b),e(c,()=>c(d))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(b),a(d,b),b},interceptConnections=(a,e)=>(a.connect=e.connect.bind(e),a.disconnect=e.disconnect.bind(e),a),createNativeConstantSourceNodeFakerFactory=(a,e,s,o)=>(c,b)=>{var k=b,{offset:d}=k,_=sn(k,["offset"]);const $=c.createBuffer(1,2,44100),j=e(c,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),_e=s(c,wt(_t({},_),{gain:d})),et=$.getChannelData(0);et[0]=1,et[1]=1,j.buffer=$,j.loop=!0;const tt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(rt){_e.channelCount=rt},get channelCountMode(){return _e.channelCountMode},set channelCountMode(rt){_e.channelCountMode=rt},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(rt){_e.channelInterpretation=rt},get context(){return _e.context},get inputs(){return[]},get numberOfInputs(){return j.numberOfInputs},get numberOfOutputs(){return _e.numberOfOutputs},get offset(){return _e.gain},get onended(){return j.onended},set onended(rt){j.onended=rt},addEventListener(...rt){return j.addEventListener(rt[0],rt[1],rt[2])},dispatchEvent(...rt){return j.dispatchEvent(rt[0])},removeEventListener(...rt){return j.removeEventListener(rt[0],rt[1],rt[2])},start(rt=0){j.start.call(j,rt)},stop(rt=0){j.stop.call(j,rt)}},nt=()=>j.connect(_e),it=()=>j.disconnect(_e);return a(c,j),o(interceptConnections(tt,_e),nt,it)},createNativeConvolverNodeFactory=(a,e)=>(s,o)=>{const c=s.createConvolver();if(assignNativeAudioNodeOptions(c,o),o.disableNormalization===c.normalize&&(c.normalize=!o.disableNormalization),assignNativeAudioNodeOption(c,o,"buffer"),o.channelCount>2||(e(c,"channelCount",d=>()=>d.call(c),d=>_=>{if(_>2)throw a();return d.call(c,_)}),o.channelCountMode==="max"))throw a();return e(c,"channelCountMode",d=>()=>d.call(c),d=>_=>{if(_==="max")throw a();return d.call(c,_)}),c},createNativeDelayNode=(a,e)=>{const s=a.createDelay(e.maxDelayTime);return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"delayTime"),s},createNativeDynamicsCompressorNodeFactory=a=>(e,s)=>{const o=e.createDynamicsCompressor();if(assignNativeAudioNodeOptions(o,s),s.channelCount>2||s.channelCountMode==="max")throw a();return assignNativeAudioNodeAudioParamValue(o,s,"attack"),assignNativeAudioNodeAudioParamValue(o,s,"knee"),assignNativeAudioNodeAudioParamValue(o,s,"ratio"),assignNativeAudioNodeAudioParamValue(o,s,"release"),assignNativeAudioNodeAudioParamValue(o,s,"threshold"),o},createNativeGainNode=(a,e)=>{const s=a.createGain();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"gain"),s},createNativeIIRFilterNodeFactory=a=>(e,s,o)=>{if(e.createIIRFilter===void 0)return a(e,s,o);const c=e.createIIRFilter(o.feedforward,o.feedback);return assignNativeAudioNodeOptions(c,o),c};function divide(a,e){const s=e[0]*e[0]+e[1]*e[1];return[(a[0]*e[0]+a[1]*e[1])/s,(a[1]*e[0]-a[0]*e[1])/s]}function multiply(a,e){return[a[0]*e[0]-a[1]*e[1],a[0]*e[1]+a[1]*e[0]]}function evaluatePolynomial(a,e){let s=[0,0];for(let o=a.length-1;o>=0;o-=1)s=multiply(s,e),s[0]+=a[o];return s}const createNativeIIRFilterNodeFakerFactory=(a,e,s,o)=>(c,d,{channelCount:_,channelCountMode:b,channelInterpretation:k,feedback:$,feedforward:j})=>{const _e=computeBufferSize(d,c.sampleRate),et=$ instanceof Float64Array?$:new Float64Array($),tt=j instanceof Float64Array?j:new Float64Array(j),nt=et.length,it=tt.length,rt=Math.min(nt,it);if(nt===0||nt>20)throw o();if(et[0]===0)throw e();if(it===0||it>20)throw o();if(tt[0]===0)throw e();if(et[0]!==1){for(let ht=0;ht{const pt=ht.inputBuffer,Et=ht.outputBuffer,gt=pt.numberOfChannels;for(let ft=0;fta.createMediaElementSource(e.mediaElement),createNativeMediaStreamAudioDestinationNode=(a,e)=>{const s=a.createMediaStreamDestination();return assignNativeAudioNodeOptions(s,e),s.numberOfOutputs===1&&Object.defineProperty(s,"numberOfOutputs",{get:()=>0}),s},createNativeMediaStreamAudioSourceNode=(a,{mediaStream:e})=>{const s=e.getAudioTracks();s.sort((d,_)=>d.id<_.id?-1:d.id>_.id?1:0);const o=s.slice(0,1),c=a.createMediaStreamSource(new MediaStream(o));return Object.defineProperty(c,"mediaStream",{value:e}),c},createNativeMediaStreamTrackAudioSourceNodeFactory=(a,e)=>(s,{mediaStreamTrack:o})=>{if(typeof s.createMediaStreamTrackSource=="function")return s.createMediaStreamTrackSource(o);const c=new MediaStream([o]),d=s.createMediaStreamSource(c);if(o.kind!=="audio")throw a();if(e(s))throw new TypeError;return d},createNativeOfflineAudioContextConstructor=a=>a===null?null:a.hasOwnProperty("OfflineAudioContext")?a.OfflineAudioContext:a.hasOwnProperty("webkitOfflineAudioContext")?a.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory=(a,e,s,o,c,d)=>(_,b)=>{const k=_.createOscillator();return assignNativeAudioNodeOptions(k,b),assignNativeAudioNodeAudioParamValue(k,b,"detune"),assignNativeAudioNodeAudioParamValue(k,b,"frequency"),b.periodicWave!==void 0?k.setPeriodicWave(b.periodicWave):assignNativeAudioNodeOption(k,b,"type"),e(s,()=>s(_))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(k),e(o,()=>o(_))||d(k,_),e(c,()=>c(_))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(k),a(_,k),k},createNativePannerNodeFactory=a=>(e,s)=>{const o=e.createPanner();return o.orientationX===void 0?a(e,s):(assignNativeAudioNodeOptions(o,s),assignNativeAudioNodeAudioParamValue(o,s,"orientationX"),assignNativeAudioNodeAudioParamValue(o,s,"orientationY"),assignNativeAudioNodeAudioParamValue(o,s,"orientationZ"),assignNativeAudioNodeAudioParamValue(o,s,"positionX"),assignNativeAudioNodeAudioParamValue(o,s,"positionY"),assignNativeAudioNodeAudioParamValue(o,s,"positionZ"),assignNativeAudioNodeOption(o,s,"coneInnerAngle"),assignNativeAudioNodeOption(o,s,"coneOuterAngle"),assignNativeAudioNodeOption(o,s,"coneOuterGain"),assignNativeAudioNodeOption(o,s,"distanceModel"),assignNativeAudioNodeOption(o,s,"maxDistance"),assignNativeAudioNodeOption(o,s,"panningModel"),assignNativeAudioNodeOption(o,s,"refDistance"),assignNativeAudioNodeOption(o,s,"rolloffFactor"),o)},createNativePannerNodeFakerFactory=(a,e,s,o,c,d,_,b,k,$)=>(j,Et)=>{var gt=Et,{coneInnerAngle:_e,coneOuterAngle:et,coneOuterGain:tt,distanceModel:nt,maxDistance:it,orientationX:rt,orientationY:st,orientationZ:ot,panningModel:lt,positionX:dt,positionY:ct,positionZ:ut,refDistance:at,rolloffFactor:ht}=gt,pt=sn(gt,["coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","orientationX","orientationY","orientationZ","panningModel","positionX","positionY","positionZ","refDistance","rolloffFactor"]);const ft=j.createPanner();if(pt.channelCount>2||pt.channelCountMode==="max")throw _();assignNativeAudioNodeOptions(ft,pt);const mt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},yt=s(j,wt(_t({},mt),{channelInterpretation:"speakers",numberOfInputs:6})),vt=o(j,wt(_t({},pt),{gain:1})),At=o(j,wt(_t({},mt),{gain:1})),St=o(j,wt(_t({},mt),{gain:0})),Tt=o(j,wt(_t({},mt),{gain:0})),Dt=o(j,wt(_t({},mt),{gain:0})),xt=o(j,wt(_t({},mt),{gain:0})),Ct=o(j,wt(_t({},mt),{gain:0})),bt=c(j,256,6,1),$t=d(j,wt(_t({},mt),{curve:new Float32Array([1,1]),oversample:"none"}));let It=[rt,st,ot],Rt=[dt,ct,ut];const Pt=new Float32Array(1);bt.onaudioprocess=({inputBuffer:kt})=>{const Ut=[k(kt,Pt,0),k(kt,Pt,1),k(kt,Pt,2)];Ut.some((Yt,Xt)=>Yt!==It[Xt])&&(ft.setOrientation(...Ut),It=Ut);const zt=[k(kt,Pt,3),k(kt,Pt,4),k(kt,Pt,5)];zt.some((Yt,Xt)=>Yt!==Rt[Xt])&&(ft.setPosition(...zt),Rt=zt)},Object.defineProperty(St.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Tt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Dt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(xt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ct.gain,"defaultValue",{get:()=>0});const Ft={get bufferSize(){},get channelCount(){return ft.channelCount},set channelCount(kt){if(kt>2)throw _();vt.channelCount=kt,ft.channelCount=kt},get channelCountMode(){return ft.channelCountMode},set channelCountMode(kt){if(kt==="max")throw _();vt.channelCountMode=kt,ft.channelCountMode=kt},get channelInterpretation(){return ft.channelInterpretation},set channelInterpretation(kt){vt.channelInterpretation=kt,ft.channelInterpretation=kt},get coneInnerAngle(){return ft.coneInnerAngle},set coneInnerAngle(kt){ft.coneInnerAngle=kt},get coneOuterAngle(){return ft.coneOuterAngle},set coneOuterAngle(kt){ft.coneOuterAngle=kt},get coneOuterGain(){return ft.coneOuterGain},set coneOuterGain(kt){if(kt<0||kt>1)throw e();ft.coneOuterGain=kt},get context(){return ft.context},get distanceModel(){return ft.distanceModel},set distanceModel(kt){ft.distanceModel=kt},get inputs(){return[vt]},get maxDistance(){return ft.maxDistance},set maxDistance(kt){if(kt<0)throw new RangeError;ft.maxDistance=kt},get numberOfInputs(){return ft.numberOfInputs},get numberOfOutputs(){return ft.numberOfOutputs},get orientationX(){return At.gain},get orientationY(){return St.gain},get orientationZ(){return Tt.gain},get panningModel(){return ft.panningModel},set panningModel(kt){ft.panningModel=kt},get positionX(){return Dt.gain},get positionY(){return xt.gain},get positionZ(){return Ct.gain},get refDistance(){return ft.refDistance},set refDistance(kt){if(kt<0)throw new RangeError;ft.refDistance=kt},get rolloffFactor(){return ft.rolloffFactor},set rolloffFactor(kt){if(kt<0)throw new RangeError;ft.rolloffFactor=kt},addEventListener(...kt){return vt.addEventListener(kt[0],kt[1],kt[2])},dispatchEvent(...kt){return vt.dispatchEvent(kt[0])},removeEventListener(...kt){return vt.removeEventListener(kt[0],kt[1],kt[2])}};_e!==Ft.coneInnerAngle&&(Ft.coneInnerAngle=_e),et!==Ft.coneOuterAngle&&(Ft.coneOuterAngle=et),tt!==Ft.coneOuterGain&&(Ft.coneOuterGain=tt),nt!==Ft.distanceModel&&(Ft.distanceModel=nt),it!==Ft.maxDistance&&(Ft.maxDistance=it),rt!==Ft.orientationX.value&&(Ft.orientationX.value=rt),st!==Ft.orientationY.value&&(Ft.orientationY.value=st),ot!==Ft.orientationZ.value&&(Ft.orientationZ.value=ot),lt!==Ft.panningModel&&(Ft.panningModel=lt),dt!==Ft.positionX.value&&(Ft.positionX.value=dt),ct!==Ft.positionY.value&&(Ft.positionY.value=ct),ut!==Ft.positionZ.value&&(Ft.positionZ.value=ut),at!==Ft.refDistance&&(Ft.refDistance=at),ht!==Ft.rolloffFactor&&(Ft.rolloffFactor=ht),(It[0]!==1||It[1]!==0||It[2]!==0)&&ft.setOrientation(...It),(Rt[0]!==0||Rt[1]!==0||Rt[2]!==0)&&ft.setPosition(...Rt);const qt=()=>{vt.connect(ft),a(vt,$t,0,0),$t.connect(At).connect(yt,0,0),$t.connect(St).connect(yt,0,1),$t.connect(Tt).connect(yt,0,2),$t.connect(Dt).connect(yt,0,3),$t.connect(xt).connect(yt,0,4),$t.connect(Ct).connect(yt,0,5),yt.connect(bt).connect(j.destination)},jt=()=>{vt.disconnect(ft),b(vt,$t,0,0),$t.disconnect(At),At.disconnect(yt),$t.disconnect(St),St.disconnect(yt),$t.disconnect(Tt),Tt.disconnect(yt),$t.disconnect(Dt),Dt.disconnect(yt),$t.disconnect(xt),xt.disconnect(yt),$t.disconnect(Ct),Ct.disconnect(yt),yt.disconnect(bt),bt.disconnect(j.destination)};return $(interceptConnections(Ft,ft),qt,jt)},createNativePeriodicWaveFactory=a=>(e,{disableNormalization:s,imag:o,real:c})=>{const d=o instanceof Float32Array?o:new Float32Array(o),_=c instanceof Float32Array?c:new Float32Array(c),b=e.createPeriodicWave(_,d,{disableNormalization:s});if(Array.from(o).length<2)throw a();return b},createNativeScriptProcessorNode=(a,e,s,o)=>a.createScriptProcessor(e,s,o),createNativeStereoPannerNodeFactory=(a,e)=>(s,o)=>{const c=o.channelCountMode;if(c==="clamped-max")throw e();if(s.createStereoPanner===void 0)return a(s,o);const d=s.createStereoPanner();return assignNativeAudioNodeOptions(d,o),assignNativeAudioNodeAudioParamValue(d,o,"pan"),Object.defineProperty(d,"channelCountMode",{get:()=>c,set:_=>{if(_!==c)throw e()}}),d},createNativeStereoPannerNodeFakerFactory=(a,e,s,o,c,d)=>{const b=new Float32Array([1,1]),k=Math.PI/2,$={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},j=wt(_t({},$),{oversample:"none"}),_e=(nt,it,rt,st)=>{const ot=new Float32Array(16385),lt=new Float32Array(16385);for(let pt=0;pt<16385;pt+=1){const Et=pt/16384*k;ot[pt]=Math.cos(Et),lt[pt]=Math.sin(Et)}const dt=s(nt,wt(_t({},$),{gain:0})),ct=o(nt,wt(_t({},j),{curve:ot})),ut=o(nt,wt(_t({},j),{curve:b})),at=s(nt,wt(_t({},$),{gain:0})),ht=o(nt,wt(_t({},j),{curve:lt}));return{connectGraph(){it.connect(dt),it.connect(ut.inputs===void 0?ut:ut.inputs[0]),it.connect(at),ut.connect(rt),rt.connect(ct.inputs===void 0?ct:ct.inputs[0]),rt.connect(ht.inputs===void 0?ht:ht.inputs[0]),ct.connect(dt.gain),ht.connect(at.gain),dt.connect(st,0,0),at.connect(st,0,1)},disconnectGraph(){it.disconnect(dt),it.disconnect(ut.inputs===void 0?ut:ut.inputs[0]),it.disconnect(at),ut.disconnect(rt),rt.disconnect(ct.inputs===void 0?ct:ct.inputs[0]),rt.disconnect(ht.inputs===void 0?ht:ht.inputs[0]),ct.disconnect(dt.gain),ht.disconnect(at.gain),dt.disconnect(st,0,0),at.disconnect(st,0,1)}}},et=(nt,it,rt,st)=>{const ot=new Float32Array(16385),lt=new Float32Array(16385),dt=new Float32Array(16385),ct=new Float32Array(16385),ut=Math.floor(16385/2);for(let St=0;St<16385;St+=1)if(St>ut){const Tt=(St-ut)/(16384-ut)*k;ot[St]=Math.cos(Tt),lt[St]=Math.sin(Tt),dt[St]=0,ct[St]=1}else{const Tt=St/(16384-ut)*k;ot[St]=1,lt[St]=0,dt[St]=Math.cos(Tt),ct[St]=Math.sin(Tt)}const at=e(nt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),ht=s(nt,wt(_t({},$),{gain:0})),pt=o(nt,wt(_t({},j),{curve:ot})),Et=s(nt,wt(_t({},$),{gain:0})),gt=o(nt,wt(_t({},j),{curve:lt})),ft=o(nt,wt(_t({},j),{curve:b})),mt=s(nt,wt(_t({},$),{gain:0})),yt=o(nt,wt(_t({},j),{curve:dt})),vt=s(nt,wt(_t({},$),{gain:0})),At=o(nt,wt(_t({},j),{curve:ct}));return{connectGraph(){it.connect(at),it.connect(ft.inputs===void 0?ft:ft.inputs[0]),at.connect(ht,0),at.connect(Et,0),at.connect(mt,1),at.connect(vt,1),ft.connect(rt),rt.connect(pt.inputs===void 0?pt:pt.inputs[0]),rt.connect(gt.inputs===void 0?gt:gt.inputs[0]),rt.connect(yt.inputs===void 0?yt:yt.inputs[0]),rt.connect(At.inputs===void 0?At:At.inputs[0]),pt.connect(ht.gain),gt.connect(Et.gain),yt.connect(mt.gain),At.connect(vt.gain),ht.connect(st,0,0),mt.connect(st,0,0),Et.connect(st,0,1),vt.connect(st,0,1)},disconnectGraph(){it.disconnect(at),it.disconnect(ft.inputs===void 0?ft:ft.inputs[0]),at.disconnect(ht,0),at.disconnect(Et,0),at.disconnect(mt,1),at.disconnect(vt,1),ft.disconnect(rt),rt.disconnect(pt.inputs===void 0?pt:pt.inputs[0]),rt.disconnect(gt.inputs===void 0?gt:gt.inputs[0]),rt.disconnect(yt.inputs===void 0?yt:yt.inputs[0]),rt.disconnect(At.inputs===void 0?At:At.inputs[0]),pt.disconnect(ht.gain),gt.disconnect(Et.gain),yt.disconnect(mt.gain),At.disconnect(vt.gain),ht.disconnect(st,0,0),mt.disconnect(st,0,0),Et.disconnect(st,0,1),vt.disconnect(st,0,1)}}},tt=(nt,it,rt,st,ot)=>{if(it===1)return _e(nt,rt,st,ot);if(it===2)return et(nt,rt,st,ot);throw c()};return(nt,lt)=>{var dt=lt,{channelCount:it,channelCountMode:rt,pan:st}=dt,ot=sn(dt,["channelCount","channelCountMode","pan"]);if(rt==="max")throw c();const ct=a(nt,wt(_t({},ot),{channelCount:1,channelCountMode:rt,numberOfInputs:2})),ut=s(nt,wt(_t({},ot),{channelCount:it,channelCountMode:rt,gain:1})),at=s(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:st});let{connectGraph:ht,disconnectGraph:pt}=tt(nt,it,ut,at,ct);Object.defineProperty(at.gain,"defaultValue",{get:()=>0}),Object.defineProperty(at.gain,"maxValue",{get:()=>1}),Object.defineProperty(at.gain,"minValue",{get:()=>-1});const Et={get bufferSize(){},get channelCount(){return ut.channelCount},set channelCount(yt){ut.channelCount!==yt&&(gt&&pt(),{connectGraph:ht,disconnectGraph:pt}=tt(nt,yt,ut,at,ct),gt&&ht()),ut.channelCount=yt},get channelCountMode(){return ut.channelCountMode},set channelCountMode(yt){if(yt==="clamped-max"||yt==="max")throw c();ut.channelCountMode=yt},get channelInterpretation(){return ut.channelInterpretation},set channelInterpretation(yt){ut.channelInterpretation=yt},get context(){return ut.context},get inputs(){return[ut]},get numberOfInputs(){return ut.numberOfInputs},get numberOfOutputs(){return ut.numberOfOutputs},get pan(){return at.gain},addEventListener(...yt){return ut.addEventListener(yt[0],yt[1],yt[2])},dispatchEvent(...yt){return ut.dispatchEvent(yt[0])},removeEventListener(...yt){return ut.removeEventListener(yt[0],yt[1],yt[2])}};let gt=!1;const ft=()=>{ht(),gt=!0},mt=()=>{pt(),gt=!1};return d(interceptConnections(Et,ct),ft,mt)}},createNativeWaveShaperNodeFactory=(a,e,s,o,c,d,_)=>(b,k)=>{const $=b.createWaveShaper();if(d!==null&&d.name==="webkitAudioContext"&&b.createGain().gain.automationRate===void 0)return s(b,k);assignNativeAudioNodeOptions($,k);const j=k.curve===null||k.curve instanceof Float32Array?k.curve:new Float32Array(k.curve);if(j!==null&&j.length<2)throw e();assignNativeAudioNodeOption($,{curve:j},"curve"),assignNativeAudioNodeOption($,k,"oversample");let _e=null,et=!1;return _($,"curve",it=>()=>it.call($),it=>rt=>(it.call($,rt),et&&(o(rt)&&_e===null?_e=a(b,$):!o(rt)&&_e!==null&&(_e(),_e=null)),rt)),c($,()=>{et=!0,o($.curve)&&(_e=a(b,$))},()=>{et=!1,_e!==null&&(_e(),_e=null)})},createNativeWaveShaperNodeFakerFactory=(a,e,s,o,c)=>(d,$)=>{var j=$,{curve:_,oversample:b}=j,k=sn(j,["curve","oversample"]);const _e=d.createWaveShaper(),et=d.createWaveShaper();assignNativeAudioNodeOptions(_e,k),assignNativeAudioNodeOptions(et,k);const tt=s(d,wt(_t({},k),{gain:1})),nt=s(d,wt(_t({},k),{gain:-1})),it=s(d,wt(_t({},k),{gain:1})),rt=s(d,wt(_t({},k),{gain:-1}));let st=null,ot=!1,lt=null;const dt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(at){tt.channelCount=at,nt.channelCount=at,_e.channelCount=at,it.channelCount=at,et.channelCount=at,rt.channelCount=at},get channelCountMode(){return _e.channelCountMode},set channelCountMode(at){tt.channelCountMode=at,nt.channelCountMode=at,_e.channelCountMode=at,it.channelCountMode=at,et.channelCountMode=at,rt.channelCountMode=at},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(at){tt.channelInterpretation=at,nt.channelInterpretation=at,_e.channelInterpretation=at,it.channelInterpretation=at,et.channelInterpretation=at,rt.channelInterpretation=at},get context(){return _e.context},get curve(){return lt},set curve(at){if(at!==null&&at.length<2)throw e();if(at===null)_e.curve=at,et.curve=at;else{const ht=at.length,pt=new Float32Array(ht+2-ht%2),Et=new Float32Array(ht+2-ht%2);pt[0]=at[0],Et[0]=-at[ht-1];const gt=Math.ceil((ht+1)/2),ft=(ht+1)/2-1;for(let mt=1;mt{tt.connect(_e).connect(it),tt.connect(nt).connect(et).connect(rt).connect(it),ot=!0,o(lt)&&(st=a(d,tt))},ut=()=>{tt.disconnect(_e),_e.disconnect(it),tt.disconnect(nt),nt.disconnect(et),et.disconnect(rt),rt.disconnect(it),ot=!1,st!==null&&(st(),st=null)};return c(interceptConnections(dt,it),ct,ut)},createNotSupportedError=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$5={numberOfChannels:1},createOfflineAudioContextConstructor=(a,e,s,o,c)=>class extends a{constructor(_,b,k){let $;if(typeof _=="number"&&b!==void 0&&k!==void 0)$={length:b,numberOfChannels:_,sampleRate:k};else if(typeof _=="object")$=_;else throw new Error("The given parameters are not valid.");const{length:j,numberOfChannels:_e,sampleRate:et}=_t(_t({},DEFAULT_OPTIONS$5),$),tt=o(_e,j,et);e(testPromiseSupport,()=>testPromiseSupport(tt))||tt.addEventListener("statechange",(()=>{let nt=0;const it=rt=>{this._state==="running"&&(nt>0?(tt.removeEventListener("statechange",it),rt.stopImmediatePropagation(),this._waitForThePromiseToSettle(rt)):nt+=1)};return it})()),super(tt,_e),this._length=j,this._nativeOfflineAudioContext=tt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(s()):(this._state="running",c(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph(this)}))}_waitForThePromiseToSettle(_){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(_):setTimeout(()=>this._waitForThePromiseToSettle(_))}},DEFAULT_OPTIONS$4={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$4),$),et=s(j,_e),tt=d(j),nt=tt?o():null,it=k.sampleRate/2;super(k,!1,et,nt),this._detune=e(this,tt,et.detune,153600,-153600),this._frequency=e(this,tt,et.frequency,it,-it),this._nativeOscillatorNode=et,this._onended=null,this._oscillatorNodeRenderer=nt,this._oscillatorNodeRenderer!==null&&_e.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=_e.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeOscillatorNode.onended=$;const j=this._nativeOscillatorNode.onended;this._onended=j!==null&&j===$?k:j}get type(){return this._nativeOscillatorNode.type}set type(k){this._nativeOscillatorNode.type=k,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(k){this._nativeOscillatorNode.setPeriodicWave(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=k)}start(k=0){if(this._nativeOscillatorNode.start(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeOscillatorNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeOscillatorNode.addEventListener("ended",$)}}stop(k=0){this._nativeOscillatorNode.stop(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=k)}},createOscillatorNodeRendererFactory=(a,e,s,o,c)=>()=>{const d=new WeakMap;let _=null,b=null,k=null;const $=async(j,_e)=>{let et=s(j);const tt=isOwnedByContext(et,_e);if(!tt){const nt={channelCount:et.channelCount,channelCountMode:et.channelCountMode,channelInterpretation:et.channelInterpretation,detune:et.detune.value,frequency:et.frequency.value,periodicWave:_===null?void 0:_,type:et.type};et=e(_e,nt),b!==null&&et.start(b),k!==null&&et.stop(k)}return d.set(_e,et),tt?(await a(_e,j.detune,et.detune),await a(_e,j.frequency,et.frequency)):(await o(_e,j.detune,et.detune),await o(_e,j.frequency,et.frequency)),await c(j,_e,et),et};return{set periodicWave(j){_=j},set start(j){b=j},set stop(j){k=j},render(j,_e){const et=d.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},DEFAULT_OPTIONS$3={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$3),$),et=s(j,_e),tt=d(j),nt=tt?o():null;super(k,!1,et,nt),this._nativePannerNode=et,this._orientationX=e(this,tt,et.orientationX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationY=e(this,tt,et.orientationY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationZ=e(this,tt,et.orientationZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionX=e(this,tt,et.positionX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionY=e(this,tt,et.positionY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionZ=e(this,tt,et.positionZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),_(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(k){this._nativePannerNode.coneInnerAngle=k}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(k){this._nativePannerNode.coneOuterAngle=k}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(k){this._nativePannerNode.coneOuterGain=k}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(k){this._nativePannerNode.distanceModel=k}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(k){this._nativePannerNode.maxDistance=k}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(k){this._nativePannerNode.panningModel=k}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(k){this._nativePannerNode.refDistance=k}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(k){this._nativePannerNode.rolloffFactor=k}},createPannerNodeRendererFactory=(a,e,s,o,c,d,_,b,k,$)=>()=>{const j=new WeakMap;let _e=null;const et=async(tt,nt)=>{let it=null,rt=d(tt);const st={channelCount:rt.channelCount,channelCountMode:rt.channelCountMode,channelInterpretation:rt.channelInterpretation},ot=wt(_t({},st),{coneInnerAngle:rt.coneInnerAngle,coneOuterAngle:rt.coneOuterAngle,coneOuterGain:rt.coneOuterGain,distanceModel:rt.distanceModel,maxDistance:rt.maxDistance,panningModel:rt.panningModel,refDistance:rt.refDistance,rolloffFactor:rt.rolloffFactor}),lt=isOwnedByContext(rt,nt);if("bufferSize"in rt)it=o(nt,wt(_t({},st),{gain:1}));else if(!lt){const dt=wt(_t({},ot),{orientationX:rt.orientationX.value,orientationY:rt.orientationY.value,orientationZ:rt.orientationZ.value,positionX:rt.positionX.value,positionY:rt.positionY.value,positionZ:rt.positionZ.value});rt=c(nt,dt)}if(j.set(nt,it===null?rt:it),it!==null){if(_e===null){if(_===null)throw new Error("Missing the native OfflineAudioContext constructor.");const gt=new _(6,tt.context.length,nt.sampleRate),ft=e(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});ft.connect(gt.destination),_e=(async()=>{const mt=await Promise.all([tt.orientationX,tt.orientationY,tt.orientationZ,tt.positionX,tt.positionY,tt.positionZ].map(async(yt,vt)=>{const At=s(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:vt===0?1:0});return await b(gt,yt,At.offset),At}));for(let yt=0;yt<6;yt+=1)mt[yt].connect(ft,0,yt),mt[yt].start(0);return $(gt)})()}const dt=await _e,ct=o(nt,wt(_t({},st),{gain:1}));await k(tt,nt,ct);const ut=[];for(let gt=0;gtyt!==at[vt])||mt.some((yt,vt)=>yt!==ht[vt])){at=ft,ht=mt;const yt=gt/nt.sampleRate;pt.gain.setValueAtTime(0,yt),pt=o(nt,wt(_t({},st),{gain:0})),Et=c(nt,wt(_t({},ot),{orientationX:at[0],orientationY:at[1],orientationZ:at[2],positionX:ht[0],positionY:ht[1],positionZ:ht[2]})),pt.gain.setValueAtTime(1,yt),ct.connect(pt).connect(Et.inputs[0]),Et.connect(it)}}return it}return lt?(await a(nt,tt.orientationX,rt.orientationX),await a(nt,tt.orientationY,rt.orientationY),await a(nt,tt.orientationZ,rt.orientationZ),await a(nt,tt.positionX,rt.positionX),await a(nt,tt.positionY,rt.positionY),await a(nt,tt.positionZ,rt.positionZ)):(await b(nt,tt.orientationX,rt.orientationX),await b(nt,tt.orientationY,rt.orientationY),await b(nt,tt.orientationZ,rt.orientationZ),await b(nt,tt.positionX,rt.positionX),await b(nt,tt.positionY,rt.positionY),await b(nt,tt.positionZ,rt.positionZ)),isNativeAudioNodeFaker(rt)?await k(tt,nt,rt.inputs[0]):await k(tt,nt,rt),rt};return{render(tt,nt){const it=j.get(nt);return it!==void 0?Promise.resolve(it):et(tt,nt)}}},DEFAULT_OPTIONS$2={disableNormalization:!1},createPeriodicWaveConstructor=(a,e,s,o)=>class yr{constructor(d,_){const b=e(d),k=o(_t(_t({},DEFAULT_OPTIONS$2),_)),$=a(b,k);return s.add($),$}static[Symbol.hasInstance](d){return d!==null&&typeof d=="object"&&Object.getPrototypeOf(d)===yr.prototype||s.has(d)}},createRenderAutomation=(a,e)=>(s,o,c)=>(a(o).replay(c),e(o,s,c)),createRenderInputsOfAudioNode=(a,e,s)=>async(o,c,d)=>{const _=a(o);await Promise.all(_.activeInputs.map((b,k)=>Array.from(b).map(async([$,j])=>{const et=await e($).render($,c),tt=o.context.destination;!s($)&&(o!==tt||!s(o))&&et.connect(d,j,k)})).reduce((b,k)=>[...b,...k],[]))},createRenderInputsOfAudioParam=(a,e,s)=>async(o,c,d)=>{const _=e(o);await Promise.all(Array.from(_.activeInputs).map(async([b,k])=>{const j=await a(b).render(b,c);s(b)||j.connect(d,k)}))},createRenderNativeOfflineAudioContext=(a,e,s,o)=>c=>a(testPromiseSupport,()=>testPromiseSupport(c))?Promise.resolve(a(o,o)).then(d=>{if(!d){const _=s(c,512,0,1);c.oncomplete=()=>{_.onaudioprocess=null,_.disconnect()},_.onaudioprocess=()=>c.currentTime,_.connect(c.destination)}return c.startRendering()}):new Promise(d=>{const _=e(c,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});c.oncomplete=b=>{_.disconnect(),d(b.renderedBuffer)},_.connect(c.destination),c.startRendering()}),createSetActiveAudioWorkletNodeInputs=a=>(e,s)=>{a.set(e,s)},createSetAudioNodeTailTime=a=>(e,s)=>a.set(e,s),createStartRendering=(a,e,s,o,c,d,_,b)=>(k,$)=>s(k).render(k,$).then(()=>Promise.all(Array.from(o($)).map(j=>s(j).render(j,$)))).then(()=>c($)).then(j=>(typeof j.copyFromChannel!="function"?(_(j),wrapAudioBufferGetChannelDataMethod(j)):e(d,()=>d(j))||b(j),a.add(j),j)),DEFAULT_OPTIONS$1={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor=(a,e,s,o,c,d)=>class extends a{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$1),k),_e=s($,j),et=d($),tt=et?o():null;super(b,!1,_e,tt),this._pan=e(this,et,_e.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory=(a,e,s,o,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,pan:$.pan.value};$=e(k,_e)}return d.set(k,$),j?await a(k,b.pan,$.pan):await o(k,b.pan,$.pan),isNativeAudioNodeFaker($)?await c(b,k,$.inputs[0]):await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createTestAudioBufferConstructorSupport=a=>()=>{if(a===null)return!1;try{new a({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioWorkletProcessorPostMessageSupport=(a,e)=>async()=>{if(a===null)return!0;if(e===null)return!1;const s=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),o=new e(1,128,44100),c=URL.createObjectURL(s);let d=!1,_=!1;try{await o.audioWorklet.addModule(c);const b=new a(o,"a",{numberOfOutputs:0}),k=o.createOscillator();b.port.onmessage=()=>d=!0,b.onprocessorerror=()=>_=!0,k.connect(b),k.start(0),await o.startRendering()}catch{}finally{URL.revokeObjectURL(c)}return d&&!_},createTestOfflineAudioContextCurrentTimeSupport=(a,e)=>()=>{if(e===null)return Promise.resolve(!1);const s=new e(1,1,44100),o=a(s,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(c=>{s.oncomplete=()=>{o.disconnect(),c(s.currentTime!==0)},s.startRendering()})},createUnknownError=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor=(a,e,s,o,c,d,_)=>class extends a{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS),$),et=s(j,_e),nt=d(j)?o():null;super(k,!0,et,nt),this._isCurveNullified=!1,this._nativeWaveShaperNode=et,_(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(k){if(k===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(k.length<2)throw e();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=k}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(k){this._nativeWaveShaperNode.oversample=k}},createWaveShaperNodeRendererFactory=(a,e,s)=>()=>{const o=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,curve:b.curve,oversample:b.oversample};b=a(_,$)}return o.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=o.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createWindow=()=>typeof window=="undefined"?null:window,createWrapAudioBufferCopyChannelMethods=(a,e)=>s=>{s.copyFromChannel=(o,c,d=0)=>{const _=a(d),b=a(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=o.length;for(let _e=_<0?-_:0;_e+_{const _=a(d),b=a(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=o.length;for(let _e=_<0?-_:0;_e+_e=>{e.copyFromChannel=(s=>(o,c,d=0)=>{const _=a(d),b=a(c);if(_(o,c,d=0)=>{const _=a(d),b=a(c);if(_(e,s)=>{const o=s.createBuffer(1,1,44100);e.buffer===null&&(e.buffer=o),a(e,"buffer",c=>()=>{const d=c.call(e);return d===o?null:d},c=>d=>c.call(e,d===null?o:d))},createWrapChannelMergerNode=(a,e)=>(s,o)=>{o.channelCount=1,o.channelCountMode="explicit",Object.defineProperty(o,"channelCount",{get:()=>1,set:()=>{throw a()}}),Object.defineProperty(o,"channelCountMode",{get:()=>"explicit",set:()=>{throw a()}});const c=s.createBufferSource();e(o,()=>{const b=o.numberOfInputs;for(let k=0;kc.disconnect(o))},getFirstSample=(a,e,s)=>a.copyFromChannel===void 0?a.getChannelData(s)[0]:(a.copyFromChannel(e,s),e[0]),isDCCurve=a=>{if(a===null)return!1;const e=a.length;return e%2!==0?a[Math.floor(e/2)]!==0:a[e/2-1]+a[e/2]!==0},overwriteAccessors=(a,e,s,o)=>{let c=a;for(;!c.hasOwnProperty(e);)c=Object.getPrototypeOf(c);const{get:d,set:_}=Object.getOwnPropertyDescriptor(c,e);Object.defineProperty(a,e,{get:s(d),set:o(_)})},sanitizeAudioWorkletNodeOptions=a=>wt(_t({},a),{outputChannelCount:a.outputChannelCount!==void 0?a.outputChannelCount:a.numberOfInputs===1&&a.numberOfOutputs===1?[a.channelCount]:Array.from({length:a.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions=a=>wt(_t({},a),{channelCount:a.numberOfOutputs}),sanitizePeriodicWaveOptions=a=>{const{imag:e,real:s}=a;return e===void 0?s===void 0?wt(_t({},a),{imag:[0,0],real:[0,0]}):wt(_t({},a),{imag:Array.from(s,()=>0),real:s}):s===void 0?wt(_t({},a),{imag:e,real:Array.from(e,()=>0)}):wt(_t({},a),{imag:e,real:s})},setValueAtTimeUntilPossible=(a,e,s)=>{try{a.setValueAtTime(e,s)}catch(o){if(o.code!==9)throw o;setValueAtTimeUntilPossible(a,e,s+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport=a=>{const e=a.createBufferSource();e.start();try{e.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport=a=>{const e=a.createBufferSource(),s=a.createBuffer(1,1,44100);e.buffer=s;try{e.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport=a=>{const e=a.createBufferSource();e.start();try{e.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport=a=>{const e=a.createOscillator();try{e.start(-1)}catch(s){return s instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport=a=>{const e=a.createBuffer(1,1,44100),s=a.createBufferSource();s.buffer=e,s.start(),s.stop();try{return s.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport=a=>{const e=a.createOscillator();try{e.stop(-1)}catch(s){return s instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability=a=>{const{port1:e,port2:s}=new MessageChannel;try{e.postMessage(a)}finally{e.close(),s.close()}},wrapAudioBufferSourceNodeStartMethodOffsetClamping=a=>{a.start=(e=>(s=0,o=0,c)=>{const d=a.buffer,_=d===null?o:Math.min(d.duration,o);d!==null&&_>d.duration-.5/a.context.sampleRate?e.call(a,s,0,0):e.call(a,s,_,c)})(a.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls=(a,e)=>{const s=e.createGain();a.connect(s);const o=(c=>()=>{c.call(a,s),a.removeEventListener("ended",o)})(a.disconnect);a.addEventListener("ended",o),interceptConnections(a,s),a.stop=(c=>{let d=!1;return(_=0)=>{if(d)try{c.call(a,_)}catch{s.gain.setValueAtTime(0,_)}else c.call(a,_),d=!0}})(a.stop)},wrapEventListener=(a,e)=>s=>{const o={value:a};return Object.defineProperties(s,{currentTarget:o,target:o}),typeof e=="function"?e.call(a,s):e.handleEvent.call(a,s)},addActiveInputConnectionToAudioNode=createAddActiveInputConnectionToAudioNode(insertElementInSet),addPassiveInputConnectionToAudioNode=createAddPassiveInputConnectionToAudioNode(insertElementInSet),deleteActiveInputConnectionToAudioNode=createDeleteActiveInputConnectionToAudioNode(pickElementFromSet),audioNodeTailTimeStore=new WeakMap,getAudioNodeTailTime=createGetAudioNodeTailTime(audioNodeTailTimeStore),cacheTestResult=createCacheTestResult(new Map,new WeakMap),window$1=createWindow(),createNativeAnalyserNode=createNativeAnalyserNodeFactory(cacheTestResult,createIndexSizeError),getAudioNodeRenderer=createGetAudioNodeRenderer(getAudioNodeConnections),renderInputsOfAudioNode=createRenderInputsOfAudioNode(getAudioNodeConnections,getAudioNodeRenderer,isPartOfACycle),createAnalyserNodeRenderer=createAnalyserNodeRendererFactory(createNativeAnalyserNode,getNativeAudioNode,renderInputsOfAudioNode),getNativeContext=createGetNativeContext(CONTEXT_STORE),nativeOfflineAudioContextConstructor=createNativeOfflineAudioContextConstructor(window$1),isNativeOfflineAudioContext=createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor),audioParamAudioNodeStore=new WeakMap,eventTargetConstructor=createEventTargetConstructor(wrapEventListener),nativeAudioContextConstructor=createNativeAudioContextConstructor(window$1),isNativeAudioContext=createIsNativeAudioContext(nativeAudioContextConstructor),isNativeAudioNode=createIsNativeAudioNode(window$1),isNativeAudioParam=createIsNativeAudioParam(window$1),nativeAudioWorkletNodeConstructor=createNativeAudioWorkletNodeConstructor(window$1),audioNodeConstructor=createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode,addPassiveInputConnectionToAudioNode,connectNativeAudioNodeToNativeAudioNode,deleteActiveInputConnectionToAudioNode,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getAudioNodeTailTime,getEventListenersOfAudioNode,getNativeAudioNode,insertElementInSet,isActiveAudioNode,isPartOfACycle,isPassiveAudioNode),cacheTestResult,createIncrementCycleCounterFactory(CYCLE_COUNTERS,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,isActiveAudioNode),createIndexSizeError,createInvalidAccessError,createNotSupportedError,createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode,CYCLE_COUNTERS,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,getNativeContext,isActiveAudioNode,isNativeOfflineAudioContext),createDetectCycles(audioParamAudioNodeStore,getAudioNodeConnections,getValueForKey),eventTargetConstructor,getNativeContext,isNativeAudioContext,isNativeAudioNode,isNativeAudioParam,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor),analyserNodeConstructor=createAnalyserNodeConstructor(audioNodeConstructor,createAnalyserNodeRenderer,createIndexSizeError,createNativeAnalyserNode,getNativeContext,isNativeOfflineAudioContext),audioBufferStore=new WeakSet,nativeAudioBufferConstructor=createNativeAudioBufferConstructor(window$1),convertNumberToUnsignedLong=createConvertNumberToUnsignedLong(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods=createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong,createIndexSizeError),wrapAudioBufferCopyChannelMethodsOutOfBounds=createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong),audioBufferConstructor=createAudioBufferConstructor(audioBufferStore,cacheTestResult,createNotSupportedError,nativeAudioBufferConstructor,nativeOfflineAudioContextConstructor,createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),addSilentConnection=createAddSilentConnection(createNativeGainNode),renderInputsOfAudioParam=createRenderInputsOfAudioParam(getAudioNodeRenderer,getAudioParamConnections,isPartOfACycle),connectAudioParam=createConnectAudioParam(renderInputsOfAudioParam),createNativeAudioBufferSourceNode=createNativeAudioBufferSourceNodeFactory(addSilentConnection,cacheTestResult,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,testAudioBufferSourceNodeStartMethodOffsetClampingSupport,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioBufferSourceNodeStartMethodOffsetClamping,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),renderAutomation=createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections),renderInputsOfAudioParam),createAudioBufferSourceNodeRenderer=createAudioBufferSourceNodeRendererFactory(connectAudioParam,createNativeAudioBufferSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),createAudioParam=createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),audioParamAudioNodeStore,AUDIO_PARAM_STORE,createAudioParamRenderer,createCancelAndHoldAutomationEvent,createCancelScheduledValuesAutomationEvent,createExponentialRampToValueAutomationEvent,createLinearRampToValueAutomationEvent,createSetTargetAutomationEvent,createSetValueAutomationEvent,createSetValueCurveAutomationEvent,nativeAudioContextConstructor,setValueAtTimeUntilPossible),audioBufferSourceNodeConstructor=createAudioBufferSourceNodeConstructor(audioNodeConstructor,createAudioBufferSourceNodeRenderer,createAudioParam,createInvalidStateError,createNativeAudioBufferSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),audioDestinationNodeConstructor=createAudioDestinationNodeConstructor(audioNodeConstructor,createAudioDestinationNodeRenderer,createIndexSizeError,createInvalidStateError,createNativeAudioDestinationNodeFactory(createNativeGainNode,overwriteAccessors),getNativeContext,isNativeOfflineAudioContext,renderInputsOfAudioNode),createBiquadFilterNodeRenderer=createBiquadFilterNodeRendererFactory(connectAudioParam,createNativeBiquadFilterNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),setAudioNodeTailTime=createSetAudioNodeTailTime(audioNodeTailTimeStore),biquadFilterNodeConstructor=createBiquadFilterNodeConstructor(audioNodeConstructor,createAudioParam,createBiquadFilterNodeRenderer,createInvalidAccessError,createNativeBiquadFilterNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),monitorConnections=createMonitorConnections(insertElementInSet,isNativeAudioNode),wrapChannelMergerNode=createWrapChannelMergerNode(createInvalidStateError,monitorConnections),createNativeChannelMergerNode=createNativeChannelMergerNodeFactory(nativeAudioContextConstructor,wrapChannelMergerNode),createChannelMergerNodeRenderer=createChannelMergerNodeRendererFactory(createNativeChannelMergerNode,getNativeAudioNode,renderInputsOfAudioNode),channelMergerNodeConstructor=createChannelMergerNodeConstructor(audioNodeConstructor,createChannelMergerNodeRenderer,createNativeChannelMergerNode,getNativeContext,isNativeOfflineAudioContext),createChannelSplitterNodeRenderer=createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode,getNativeAudioNode,renderInputsOfAudioNode),channelSplitterNodeConstructor=createChannelSplitterNodeConstructor(audioNodeConstructor,createChannelSplitterNodeRenderer,createNativeChannelSplitterNode,getNativeContext,isNativeOfflineAudioContext,sanitizeChannelSplitterOptions),createNativeConstantSourceNodeFaker=createNativeConstantSourceNodeFakerFactory(addSilentConnection,createNativeAudioBufferSourceNode,createNativeGainNode,monitorConnections),createNativeConstantSourceNode=createNativeConstantSourceNodeFactory(addSilentConnection,cacheTestResult,createNativeConstantSourceNodeFaker,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport),createConstantSourceNodeRenderer=createConstantSourceNodeRendererFactory(connectAudioParam,createNativeConstantSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),constantSourceNodeConstructor=createConstantSourceNodeConstructor(audioNodeConstructor,createAudioParam,createConstantSourceNodeRenderer,createNativeConstantSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createNativeConvolverNode=createNativeConvolverNodeFactory(createNotSupportedError,overwriteAccessors),createConvolverNodeRenderer=createConvolverNodeRendererFactory(createNativeConvolverNode,getNativeAudioNode,renderInputsOfAudioNode),convolverNodeConstructor=createConvolverNodeConstructor(audioNodeConstructor,createConvolverNodeRenderer,createNativeConvolverNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createDelayNodeRenderer=createDelayNodeRendererFactory(connectAudioParam,createNativeDelayNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),delayNodeConstructor=createDelayNodeConstructor(audioNodeConstructor,createAudioParam,createDelayNodeRenderer,createNativeDelayNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativeDynamicsCompressorNode=createNativeDynamicsCompressorNodeFactory(createNotSupportedError),createDynamicsCompressorNodeRenderer=createDynamicsCompressorNodeRendererFactory(connectAudioParam,createNativeDynamicsCompressorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),dynamicsCompressorNodeConstructor=createDynamicsCompressorNodeConstructor(audioNodeConstructor,createAudioParam,createDynamicsCompressorNodeRenderer,createNativeDynamicsCompressorNode,createNotSupportedError,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createGainNodeRenderer=createGainNodeRendererFactory(connectAudioParam,createNativeGainNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),gainNodeConstructor=createGainNodeConstructor(audioNodeConstructor,createAudioParam,createGainNodeRenderer,createNativeGainNode,getNativeContext,isNativeOfflineAudioContext),createNativeIIRFilterNodeFaker=createNativeIIRFilterNodeFakerFactory(createInvalidAccessError,createInvalidStateError,createNativeScriptProcessorNode,createNotSupportedError),renderNativeOfflineAudioContext=createRenderNativeOfflineAudioContext(cacheTestResult,createNativeGainNode,createNativeScriptProcessorNode,createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode,nativeOfflineAudioContextConstructor)),createIIRFilterNodeRenderer=createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderInputsOfAudioNode,renderNativeOfflineAudioContext),createNativeIIRFilterNode=createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker),iIRFilterNodeConstructor=createIIRFilterNodeConstructor(audioNodeConstructor,createNativeIIRFilterNode,createIIRFilterNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createAudioListener=createAudioListenerFactory(createAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeScriptProcessorNode,createNotSupportedError,getFirstSample,isNativeOfflineAudioContext,overwriteAccessors),unrenderedAudioWorkletNodeStore=new WeakMap,minimalBaseAudioContextConstructor=createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor,createAudioListener,eventTargetConstructor,isNativeOfflineAudioContext,unrenderedAudioWorkletNodeStore,wrapEventListener),createNativeOscillatorNode=createNativeOscillatorNodeFactory(addSilentConnection,cacheTestResult,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),createOscillatorNodeRenderer=createOscillatorNodeRendererFactory(connectAudioParam,createNativeOscillatorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),oscillatorNodeConstructor=createOscillatorNodeConstructor(audioNodeConstructor,createAudioParam,createNativeOscillatorNode,createOscillatorNodeRenderer,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createConnectedNativeAudioBufferSourceNode=createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode),createNativeWaveShaperNodeFaker=createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeGainNode,isDCCurve,monitorConnections),createNativeWaveShaperNode=createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeWaveShaperNodeFaker,isDCCurve,monitorConnections,nativeAudioContextConstructor,overwriteAccessors),createNativePannerNodeFaker=createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode,createInvalidStateError,createNativeChannelMergerNode,createNativeGainNode,createNativeScriptProcessorNode,createNativeWaveShaperNode,createNotSupportedError,disconnectNativeAudioNodeFromNativeAudioNode,getFirstSample,monitorConnections),createNativePannerNode=createNativePannerNodeFactory(createNativePannerNodeFaker),createPannerNodeRenderer=createPannerNodeRendererFactory(connectAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeGainNode,createNativePannerNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),pannerNodeConstructor=createPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativePannerNode,createPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativePeriodicWave=createNativePeriodicWaveFactory(createIndexSizeError),periodicWaveConstructor=createPeriodicWaveConstructor(createNativePeriodicWave,getNativeContext,new WeakSet,sanitizePeriodicWaveOptions),nativeStereoPannerNodeFakerFactory=createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeGainNode,createNativeWaveShaperNode,createNotSupportedError,monitorConnections),createNativeStereoPannerNode=createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory,createNotSupportedError),createStereoPannerNodeRenderer=createStereoPannerNodeRendererFactory(connectAudioParam,createNativeStereoPannerNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),stereoPannerNodeConstructor=createStereoPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativeStereoPannerNode,createStereoPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext),createWaveShaperNodeRenderer=createWaveShaperNodeRendererFactory(createNativeWaveShaperNode,getNativeAudioNode,renderInputsOfAudioNode),waveShaperNodeConstructor=createWaveShaperNodeConstructor(audioNodeConstructor,createInvalidStateError,createNativeWaveShaperNode,createWaveShaperNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),isSecureContext=createIsSecureContext(window$1),exposeCurrentFrameAndCurrentTime=createExposeCurrentFrameAndCurrentTime(window$1),backupOfflineAudioContextStore=new WeakMap,getOrCreateBackupOfflineAudioContext=createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore,nativeOfflineAudioContextConstructor),addAudioWorkletModule=isSecureContext?createAddAudioWorkletModule(cacheTestResult,createNotSupportedError,createEvaluateSource(window$1),exposeCurrentFrameAndCurrentTime,createFetchSource(createAbortError),getNativeContext,getOrCreateBackupOfflineAudioContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),window$1):void 0,isNativeContext=createIsNativeContext(isNativeAudioContext,isNativeOfflineAudioContext),decodeAudioData=createDecodeAudioData(audioBufferStore,cacheTestResult,createDataCloneError,createEncodingError,new WeakSet,getNativeContext,isNativeContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,testPromiseSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),baseAudioContextConstructor=createBaseAudioContextConstructor(addAudioWorkletModule,analyserNodeConstructor,audioBufferConstructor,audioBufferSourceNodeConstructor,biquadFilterNodeConstructor,channelMergerNodeConstructor,channelSplitterNodeConstructor,constantSourceNodeConstructor,convolverNodeConstructor,decodeAudioData,delayNodeConstructor,dynamicsCompressorNodeConstructor,gainNodeConstructor,iIRFilterNodeConstructor,minimalBaseAudioContextConstructor,oscillatorNodeConstructor,pannerNodeConstructor,periodicWaveConstructor,stereoPannerNodeConstructor,waveShaperNodeConstructor),mediaElementAudioSourceNodeConstructor=createMediaElementAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaElementAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioDestinationNodeConstructor=createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioDestinationNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioSourceNodeConstructor=createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),createNativeMediaStreamTrackAudioSourceNode=createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError,isNativeOfflineAudioContext),mediaStreamTrackAudioSourceNodeConstructor=createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamTrackAudioSourceNode,getNativeContext),audioContextConstructor=createAudioContextConstructor(baseAudioContextConstructor,createInvalidStateError,createNotSupportedError,createUnknownError,mediaElementAudioSourceNodeConstructor,mediaStreamAudioDestinationNodeConstructor,mediaStreamAudioSourceNodeConstructor,mediaStreamTrackAudioSourceNodeConstructor,nativeAudioContextConstructor),getUnrenderedAudioWorkletNodes=createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore),addUnrenderedAudioWorkletNode=createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),connectMultipleOutputs=createConnectMultipleOutputs(createIndexSizeError),deleteUnrenderedAudioWorkletNode=createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),disconnectMultipleOutputs=createDisconnectMultipleOutputs(createIndexSizeError),activeAudioWorkletNodeInputsStore=new WeakMap,getActiveAudioWorkletNodeInputs=createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore,getValueForKey),createNativeAudioWorkletNodeFaker=createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs,createIndexSizeError,createInvalidStateError,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,createNativeScriptProcessorNode,createNotSupportedError,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getActiveAudioWorkletNodeInputs,monitorConnections),createNativeAudioWorkletNode=createNativeAudioWorkletNodeFactory(createInvalidStateError,createNativeAudioWorkletNodeFaker,createNativeGainNode,createNotSupportedError,monitorConnections),createAudioWorkletNodeRenderer=createAudioWorkletNodeRendererFactory(connectAudioParam,connectMultipleOutputs,createNativeAudioBufferSourceNode,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,deleteUnrenderedAudioWorkletNode,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getNativeAudioNode,nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),getBackupOfflineAudioContext=createGetBackupOfflineAudioContext(backupOfflineAudioContextStore),setActiveAudioWorkletNodeInputs=createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore),audioWorkletNodeConstructor=isSecureContext?createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode,audioNodeConstructor,createAudioParam,createAudioWorkletNodeRenderer,createNativeAudioWorkletNode,getAudioNodeConnections,getBackupOfflineAudioContext,getNativeContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,sanitizeAudioWorkletNodeOptions,setActiveAudioWorkletNodeInputs,testAudioWorkletNodeOptionsClonability,wrapEventListener):void 0,createNativeOfflineAudioContext=createCreateNativeOfflineAudioContext(createNotSupportedError,nativeOfflineAudioContextConstructor),startRendering=createStartRendering(audioBufferStore,cacheTestResult,getAudioNodeRenderer,getUnrenderedAudioWorkletNodes,renderNativeOfflineAudioContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),offlineAudioContextConstructor=createOfflineAudioContextConstructor(baseAudioContextConstructor,cacheTestResult,createInvalidStateError,createNativeOfflineAudioContext,startRendering),isAnyAudioContext=createIsAnyAudioContext(CONTEXT_STORE,isNativeAudioContext),isAnyAudioNode=createIsAnyAudioNode(AUDIO_NODE_STORE,isNativeAudioNode),isAnyAudioParam=createIsAnyAudioParam(AUDIO_PARAM_STORE,isNativeAudioParam),isAnyOfflineAudioContext=createIsAnyOfflineAudioContext(CONTEXT_STORE,isNativeOfflineAudioContext);function assert(a,e){if(!a)throw new Error(e)}function assertRange(a,e,s=1/0){if(!(e<=a&&a<=s))throw new RangeError(`Value must be within [${e}, ${s}], got: ${a}`)}function assertContextRunning(a){!a.isOffline&&a.state!=="running"&&warn('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let defaultLogger=console;function log(...a){defaultLogger.log(...a)}function warn(...a){defaultLogger.warn(...a)}function isUndef(a){return typeof a=="undefined"}function isDefined(a){return!isUndef(a)}function isFunction(a){return typeof a=="function"}function isNumber(a){return typeof a=="number"}function isObject(a){return Object.prototype.toString.call(a)==="[object Object]"&&a.constructor===Object}function isBoolean(a){return typeof a=="boolean"}function isArray(a){return Array.isArray(a)}function isString(a){return typeof a=="string"}function isNote(a){return isString(a)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(a)}function createAudioContext(a){return new audioContextConstructor(a)}function createOfflineAudioContext(a,e,s){return new offlineAudioContextConstructor(a,e,s)}const theWindow=typeof self=="object"?self:null,hasAudioContext=theWindow&&(theWindow.hasOwnProperty("AudioContext")||theWindow.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode(a,e,s){return assert(isDefined(audioWorkletNodeConstructor),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor(a,e,s)}/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */function __decorate(a,e,s,o){var c=arguments.length,d=c<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,s):o,_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(a,e,s,o);else for(var b=a.length-1;b>=0;b--)(_=a[b])&&(d=(c<3?_(d):c>3?_(e,s,d):_(e,s))||d);return c>3&&d&&Object.defineProperty(e,s,d),d}function __awaiter(a,e,s,o){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(o.next(j))}catch(_e){_(_e)}}function k(j){try{$(o.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((o=o.apply(a,e||[])).next())})}class Ticker{constructor(e,s,o){this._callback=e,this._type=s,this._updateInterval=o,this._createClock()}_createWorker(){const e=new Blob([` - // the initial timeout time - let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)}; - // onmessage callback - self.onmessage = function(msg){ - timeoutTime = parseInt(msg.data); - }; - // the tick function which posts a message - // and schedules a new tick - function tick(){ - setTimeout(tick, timeoutTime); - self.postMessage('tick'); - } - // call tick initially - tick(); - `],{type:"text/javascript"}),s=URL.createObjectURL(e),o=new Worker(s);o.onmessage=this._callback.bind(this),this._worker=o}_createTimeout(){this._timeout=setTimeout(()=>{this._createTimeout(),this._callback()},this._updateInterval*1e3)}_createClock(){if(this._type==="worker")try{this._createWorker()}catch{this._type="timeout",this._createClock()}else this._type==="timeout"&&this._createTimeout()}_disposeClock(){this._timeout&&(clearTimeout(this._timeout),this._timeout=0),this._worker&&(this._worker.terminate(),this._worker.onmessage=null)}get updateInterval(){return this._updateInterval}set updateInterval(e){this._updateInterval=Math.max(e,128/44100),this._type==="worker"&&this._worker.postMessage(Math.max(e*1e3,1))}get type(){return this._type}set type(e){this._disposeClock(),this._type=e,this._createClock()}dispose(){this._disposeClock()}}function isAudioParam(a){return isAnyAudioParam(a)}function isAudioNode(a){return isAnyAudioNode(a)}function isOfflineAudioContext(a){return isAnyOfflineAudioContext(a)}function isAudioContext(a){return isAnyAudioContext(a)}function isAudioBuffer(a){return a instanceof AudioBuffer}function noCopy(a,e){return a==="value"||isAudioParam(e)||isAudioNode(e)||isAudioBuffer(e)}function deepMerge(a,...e){if(!e.length)return a;const s=e.shift();if(isObject(a)&&isObject(s))for(const o in s)noCopy(o,s[o])?a[o]=s[o]:isObject(s[o])?(a[o]||Object.assign(a,{[o]:{}}),deepMerge(a[o],s[o])):Object.assign(a,{[o]:s[o]});return deepMerge(a,...e)}function deepEquals(a,e){return a.length===e.length&&a.every((s,o)=>e[o]===s)}function optionsFromArguments(a,e,s=[],o){const c={},d=Array.from(e);if(isObject(d[0])&&o&&!Reflect.has(d[0],o)&&(Object.keys(d[0]).some(b=>Reflect.has(a,b))||(deepMerge(c,{[o]:d[0]}),s.splice(s.indexOf(o),1),d.shift())),d.length===1&&isObject(d[0]))deepMerge(c,d[0]);else for(let _=0;_{Reflect.has(a,s)&&delete a[s]}),a}/** - * Tone.js - * @author Yotam Mann - * @license http://opensource.org/licenses/MIT MIT License - * @copyright 2014-2019 Yotam Mann - */class Tone{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||theWindow&&this.toString()===theWindow.TONE_DEBUG_CLASS)&&log(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone.version=version;const EPSILON=1e-6;function GT(a,e){return a>e+EPSILON}function GTE(a,e){return GT(a,e)||EQ(a,e)}function LT(a,e){return a+EPSILONthis.memory){const s=this.length-this.memory;this._timeline.splice(0,s)}return this}remove(e){const s=this._timeline.indexOf(e);return s!==-1&&this._timeline.splice(s,1),this}get(e,s="time"){const o=this._search(e,s);return o!==-1?this._timeline[o]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,s="time"){const o=this._search(e,s);return o+10&&this._timeline[s-1].time=0?this._timeline[o-1]:null}cancel(e){if(this._timeline.length>1){let s=this._search(e);if(s>=0)if(EQ(this._timeline[s].time,e)){for(let o=s;o>=0&&EQ(this._timeline[o].time,e);o--)s=o;this._timeline=this._timeline.slice(0,s)}else this._timeline=this._timeline.slice(0,s+1);else this._timeline=[]}else this._timeline.length===1&>E(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){const s=this._search(e);return s>=0&&(this._timeline=this._timeline.slice(s+1)),this}previousEvent(e){const s=this._timeline.indexOf(e);return s>0?this._timeline[s-1]:null}_search(e,s="time"){if(this._timeline.length===0)return-1;let o=0;const c=this._timeline.length;let d=c;if(c>0&&this._timeline[c-1][s]<=e)return c-1;for(;o=0&&this._timeline[o].time>=e;)o--;return this._iterate(s,o+1),this}forEachAtTime(e,s){const o=this._search(e);if(o!==-1&&EQ(this._timeline[o].time,e)){let c=o;for(let d=o;d>=0&&EQ(this._timeline[d].time,e);d--)c=d;this._iterate(d=>{s(d)},c,o)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext=[];function onContextInit(a){notifyNewContext.push(a)}function initializeContext(a){notifyNewContext.forEach(e=>e(a))}const notifyCloseContext=[];function onContextClose(a){notifyCloseContext.push(a)}function closeContext(a){notifyCloseContext.forEach(e=>e(a))}class Emitter extends Tone{constructor(){super(...arguments),this.name="Emitter"}on(e,s){return e.split(/\W+/).forEach(c=>{isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(c)||(this._events[c]=[]),this._events[c].push(s)}),this}once(e,s){const o=(...c)=>{s(...c),this.off(e,o)};return this.on(e,o),this}off(e,s){return e.split(/\W+/).forEach(c=>{if(isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(e))if(isUndef(s))this._events[e]=[];else{const d=this._events[e];for(let _=d.length-1;_>=0;_--)d[_]===s&&d.splice(_,1)}}),this}emit(e,...s){if(this._events&&this._events.hasOwnProperty(e)){const o=this._events[e].slice(0);for(let c=0,d=o.length;c{const o=Object.getOwnPropertyDescriptor(Emitter.prototype,s);Object.defineProperty(e.prototype,s,o)})}dispose(){return super.dispose(),this._events=void 0,this}}class BaseContext extends Emitter{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context extends BaseContext{constructor(){super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline,this._timeoutIds=0,this._initialized=!1,this.isOffline=!1,this._workletModules=new Map;const e=optionsFromArguments(Context.getDefaults(),arguments,["context"]);e.context?this._context=e.context:this._context=createAudioContext({latencyHint:e.latencyHint}),this._ticker=new Ticker(this.emit.bind(this,"tick"),e.clockSource,e.updateInterval),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this._setLatencyHint(e.latencyHint),this.lookAhead=e.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,s,o){return this._context.createBuffer(e,s,o)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,s){return this._context.createIIRFilter(e,s)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,s,o){return this._context.createPeriodicWave(e,s,o)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){assert(!this._initialized,"The listener cannot be set after initialization."),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){assert(!this._initialized,"The transport cannot be set after initialization."),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){assert(!this._initialized,"Draw cannot be set after initialization."),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){assert(!this._initialized,"The destination cannot be set after initialization."),this._destination=e}createAudioWorkletNode(e,s){return createAudioWorkletNode(this.rawContext,e,s)}addAudioWorkletModule(e,s){return __awaiter(this,void 0,void 0,function*(){assert(isDefined(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletModules.has(s)||this._workletModules.set(s,this.rawContext.audioWorklet.addModule(e)),yield this._workletModules.get(s)})}workletsAreReady(){return __awaiter(this,void 0,void 0,function*(){const e=[];this._workletModules.forEach(s=>e.push(s)),yield Promise.all(e)})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get latencyHint(){return this._latencyHint}_setLatencyHint(e){let s=0;if(this._latencyHint=e,isString(e))switch(e){case"interactive":s=.1;break;case"playback":s=.5;break;case"balanced":s=.25;break}this.lookAhead=s,this.updateInterval=s/2}get rawContext(){return this._context}now(){return this._context.currentTime+this.lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter(this,void 0,void 0,function*(){isAudioContext(this._context)&&(yield this._context.close()),this._initialized&&closeContext(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{const s=this._context.createBuffer(1,128,this._context.sampleRate),o=s.getChannelData(0);for(let d=0;dthis._constants[e].disconnect()),this}_timeoutLoop(){const e=this.now();let s=this._timeouts.peek();for(;this._timeouts.length&&s&&s.time<=e;)s.callback(),this._timeouts.shift(),s=this._timeouts.peek()}setTimeout(e,s){this._timeoutIds++;const o=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:o+s}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(s=>{s.id===e&&this._timeouts.remove(s)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,s){const o=++this._timeoutIds,c=()=>{const d=this.now();this._timeouts.add({callback:()=>{e(),c()},id:o,time:d+s})};return c(),o}}class DummyContext extends BaseContext{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,s,o){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,s){return{}}createPanner(){return{}}createPeriodicWave(e,s,o){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,s){return{}}get rawContext(){return{}}addAudioWorkletModule(e,s){return __awaiter(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,s){return 0}clearTimeout(e){return this}setInterval(e,s){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}}function readOnly(a,e){isArray(e)?e.forEach(s=>readOnly(a,s)):Object.defineProperty(a,e,{enumerable:!0,writable:!1})}function writable(a,e){isArray(e)?e.forEach(s=>writable(a,s)):Object.defineProperty(a,e,{writable:!0})}const noOp=()=>{};class ToneAudioBuffer extends Tone{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp;const e=optionsFromArguments(ToneAudioBuffer.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=e.reverse,this.onload=e.onload,e.url&&isAudioBuffer(e.url)||e.url instanceof ToneAudioBuffer?this.set(e.url):isString(e.url)&&this.load(e.url).catch(e.onerror)}static getDefaults(){return{onerror:noOp,onload:noOp,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext().sampleRate}set(e){return e instanceof ToneAudioBuffer?e.loaded?this._buffer=e.get():e.onload=()=>{this.set(e),this.onload(this)}:this._buffer=e,this._reversed&&this._reverse(),this}get(){return this._buffer}load(e){return __awaiter(this,void 0,void 0,function*(){const s=ToneAudioBuffer.load(e).then(o=>{this.set(o),this.onload(this)});ToneAudioBuffer.downloads.push(s);try{yield s}finally{const o=ToneAudioBuffer.downloads.indexOf(s);ToneAudioBuffer.downloads.splice(o,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){const s=isArray(e)&&e[0].length>0,o=s?e.length:1,c=s?e[0].length:e.length,d=getContext(),_=d.createBuffer(o,c,d.sampleRate),b=!s&&o===1?[e]:e;for(let k=0;kc/o),this.fromArray(s)}return this}toArray(e){if(isNumber(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{const s=[];for(let o=0;o0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(e){return new ToneAudioBuffer().fromArray(e)}static fromUrl(e){return __awaiter(this,void 0,void 0,function*(){return yield new ToneAudioBuffer().load(e)})}static load(e){return __awaiter(this,void 0,void 0,function*(){const s=e.match(/\[([^\]\[]+\|.+)\]$/);if(s){const b=s[1].split("|");let k=b[0];for(const $ of b)if(ToneAudioBuffer.supportsType($)){k=$;break}e=e.replace(s[0],k)}const o=ToneAudioBuffer.baseUrl===""||ToneAudioBuffer.baseUrl.endsWith("/")?ToneAudioBuffer.baseUrl:ToneAudioBuffer.baseUrl+"/",c=yield fetch(o+e);if(!c.ok)throw new Error(`could not load url: ${e}`);const d=yield c.arrayBuffer();return yield getContext().decodeAudioData(d)})}static supportsType(e){const s=e.split("."),o=s[s.length-1];return document.createElement("audio").canPlayType("audio/"+o)!==""}static loaded(){return __awaiter(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer.downloads.length;)yield ToneAudioBuffer.downloads[0]})}}ToneAudioBuffer.baseUrl="";ToneAudioBuffer.downloads=[];class OfflineContext extends Context{constructor(){super({clockSource:"offline",context:isOfflineAudioContext(arguments[0])?arguments[0]:createOfflineAudioContext(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return __awaiter(this,void 0,void 0,function*(){let s=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,s++;const o=Math.floor(this.sampleRate/128);e&&s%o===0&&(yield new Promise(c=>setTimeout(c,1)))}})}render(e=!0){return __awaiter(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(e);const s=yield this._context.startRendering();return new ToneAudioBuffer(s)})}close(){return Promise.resolve()}}const dummyContext=new DummyContext;let globalContext=dummyContext;function getContext(){return globalContext===dummyContext&&hasAudioContext&&setContext(new Context),globalContext}function setContext(a){isAudioContext(a)?globalContext=new Context(a):isOfflineAudioContext(a)?globalContext=new OfflineContext(a):globalContext=a}if(theWindow&&!theWindow.TONE_SILENCE_LOGGING){const e=` * Tone.js v${version} * `;console.log(`%c${e}`,"background: #000; color: #fff")}function dbToGain(a){return Math.pow(10,a/20)}function gainToDb(a){return 20*(Math.log(a)/Math.LN10)}function intervalToFrequencyRatio(a){return Math.pow(2,a/12)}let A4=440;function getA4(){return A4}function setA4(a){A4=a}function ftom(a){return Math.round(ftomf(a))}function ftomf(a){return 69+12*Math.log2(a/A4)}function mtof(a){return A4*Math.pow(2,(a-69)/12)}class TimeBaseClass extends Tone{constructor(e,s,o){super(),this.defaultUnits="s",this._val=s,this._units=o,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,s)=>{const o=parseInt(e,10),c=s==="."?1.5:1;return o===1?this._beatsToUnits(this._getTimeSignature())*c:this._beatsToUnits(4/o)*c},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{const s=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(s)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,s,o)=>{let c=0;return e&&e!=="0"&&(c+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c+=this._beatsToUnits(parseFloat(s))),o&&o!=="0"&&(c+=this._beatsToUnits(parseFloat(o)/4)),c},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass&&this.fromType(this._val),isUndef(this._val))return this._noArg();if(isString(this._val)&&isUndef(this._units)){for(const e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(isObject(this._val)){let e=0;for(const s in this._val)if(isDefined(this._val[s])){const o=this._val[s];e+=new this.constructor(this.context,s).valueOf()*o}return e}if(isDefined(this._units)){const e=this._expressions[this._units],s=this._val.toString().trim().match(e.regexp);return s?e.method.apply(this,s.slice(1)):e.method.call(this,this._val)}else return isString(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case"s":this._val=e.toSeconds();break;case"i":this._val=e.toTicks();break;case"hz":this._val=e.toFrequency();break;case"midi":this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass extends TimeBaseClass{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:e=>{const s=new TimeClass(this.context,e).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(s))},regexp:/^@(.+)/}})}quantize(e,s=1){const o=new this.constructor(this.context,e).valueOf(),c=this.valueOf(),b=Math.round(c/o)*o-c;return c+b*s}toNotation(){const e=this.toSeconds(),s=["1m"];for(let d=1;d<9;d++){const _=Math.pow(2,d);s.push(_+"n."),s.push(_+"n"),s.push(_+"t")}s.push("0");let o=s[0],c=new TimeClass(this.context,s[0]).toSeconds();return s.forEach(d=>{const _=new TimeClass(this.context,d).toSeconds();Math.abs(_-e)3&&(c=parseFloat(parseFloat(d).toFixed(3))),[o,s,c].join(":")}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.round(s*this._getPPQ())}toSeconds(){return this.valueOf()}toMidi(){return ftom(this.toFrequency())}_now(){return this.context.now()}}class FrequencyClass extends TimeClass{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4()}static set A4(e){setA4(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(e){return this.defaultUnits==="midi"?e:FrequencyClass.mtof(e)}},note:{regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method(e,s){const c=noteToScaleIndex[e.toLowerCase()]+(parseInt(s,10)+1)*12;return this.defaultUnits==="midi"?c:FrequencyClass.mtof(c)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,s,o){let c=1;return e&&e!=="0"&&(c*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c*=this._beatsToUnits(parseFloat(s))),o&&o!=="0"&&(c*=this._beatsToUnits(parseFloat(o)/4)),c}}})}transpose(e){return new FrequencyClass(this.context,this.valueOf()*intervalToFrequencyRatio(e))}harmonize(e){return e.map(s=>this.transpose(s))}toMidi(){return ftom(this.valueOf())}toNote(){const e=this.toFrequency(),s=Math.log2(e/FrequencyClass.A4);let o=Math.round(12*s)+57;const c=Math.floor(o/12);return c<0&&(o+=-12*c),scaleIndexToNote[o%12]+c.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.floor(s*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return mtof(e)}static ftom(e){return ftom(e)}}const noteToScaleIndex={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},scaleIndexToNote=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];class TransportTimeClass extends TimeClass{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}class ToneWithContext extends Tone{constructor(){super();const e=optionsFromArguments(ToneWithContext.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=e.context}static getDefaults(){return{context:getContext()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return new TimeClass(this.context,e).toSeconds()}toFrequency(e){return new FrequencyClass(this.context,e).toFrequency()}toTicks(e){return new TransportTimeClass(this.context,e).toTicks()}_getPartialProperties(e){const s=this.get();return Object.keys(s).forEach(o=>{isUndef(e[o])&&delete s[o]}),s}get(){const e=getDefaultsFromInstance(this);return Object.keys(e).forEach(s=>{if(Reflect.has(this,s)){const o=this[s];isDefined(o)&&isDefined(o.value)&&isDefined(o.setValueAtTime)?e[s]=o.value:o instanceof ToneWithContext?e[s]=o._getPartialProperties(e[s]):isArray(o)||isNumber(o)||isString(o)||isBoolean(o)?e[s]=o:delete e[s]}}),e}set(e){return Object.keys(e).forEach(s=>{Reflect.has(this,s)&&isDefined(this[s])&&(this[s]&&isDefined(this[s].value)&&isDefined(this[s].setValueAtTime)?this[s].value!==e[s]&&(this[s].value=e[s]):this[s]instanceof ToneWithContext?this[s].set(e[s]):this[s]=e[s])}),this}}class StateTimeline extends Timeline{constructor(e="stopped"){super(),this.name="StateTimeline",this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){const s=this.get(e);return s!==null?s.state:this._initial}setStateAtTime(e,s,o){return assertRange(s,0),this.add(Object.assign({},o,{state:e,time:s})),this}getLastState(e,s){const o=this._search(s);for(let c=o;c>=0;c--){const d=this._timeline[c];if(d.state===e)return d}}getNextState(e,s){const o=this._search(s);if(o!==-1)for(let c=o;c0,"timeConstant must be a number greater than 0");const d=this.toSeconds(s);return this._assertRange(c),assert(isFinite(c)&&isFinite(d),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(s)}`),this._events.add({constant:o,time:d,type:"setTargetAtTime",value:c}),this.log(this.units,"setTargetAtTime",e,d,o),this._param.setTargetAtTime(c,d,o),this}setValueCurveAtTime(e,s,o,c=1){o=this.toSeconds(o),s=this.toSeconds(s);const d=this._fromType(e[0])*c;this.setValueAtTime(this._toType(d),s);const _=o/(e.length-1);for(let b=1;b{c.type==="cancelScheduledValues"?e.cancelScheduledValues(c.time):c.type==="setTargetAtTime"?e.setTargetAtTime(c.value,c.time,c.constant):e[c.type](c.value,c.time)}),this}setParam(e){assert(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const s=this.input;return s.disconnect(this._param),this.apply(e),this._param=e,s.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,s,o,c,d){return o+(s-o)*Math.exp(-(d-e)/c)}_linearInterpolate(e,s,o,c,d){return s+(c-s)*((d-e)/(o-e))}_exponentialInterpolate(e,s,o,c,d){return s*Math.pow(c/s,(d-e)/(o-e))}}class ToneAudioNode extends ToneWithContext{constructor(){super(...arguments),this.name="ToneAudioNode",this._internalChannels=[]}get numberOfInputs(){return isDefined(this.input)?isAudioParam(this.input)||this.input instanceof Param?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined(this.output)?this.output.numberOfOutputs:0}_isAudioNode(e){return isDefined(e)&&(e instanceof ToneAudioNode||isAudioNode(e))}_getInternalNodes(){const e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(o=>{o.channelCount=e.channelCount,o.channelCountMode=e.channelCountMode,o.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){const e=this._getInternalNodes();assert(e.length>0,"ToneAudioNode does not have any internal nodes");const s=e[0];return{channelCount:s.channelCount,channelCountMode:s.channelCountMode,channelInterpretation:s.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelInterpretation:e}))}connect(e,s=0,o=0){return connect(this,e,s,o),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(e,s=0,o=0){return disconnect(this,e,s,o),this}chain(...e){return connectSeries(this,...e),this}fan(...e){return e.forEach(s=>this.connect(s)),this}dispose(){return super.dispose(),isDefined(this.input)&&(this.input instanceof ToneAudioNode?this.input.dispose():isAudioNode(this.input)&&this.input.disconnect()),isDefined(this.output)&&(this.output instanceof ToneAudioNode?this.output.dispose():isAudioNode(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries(...a){const e=a.shift();a.reduce((s,o)=>(s instanceof ToneAudioNode?s.connect(o):isAudioNode(s)&&connect(s,o),o),e)}function connect(a,e,s=0,o=0){for(assert(isDefined(a),"Cannot connect from undefined node"),assert(isDefined(e),"Cannot connect to undefined node"),(e instanceof ToneAudioNode||isAudioNode(e))&&assert(e.numberOfInputs>0,"Cannot connect to node with no inputs"),assert(a.numberOfOutputs>0,"Cannot connect from node with no outputs");e instanceof ToneAudioNode||e instanceof Param;)isDefined(e.input)&&(e=e.input);for(;a instanceof ToneAudioNode;)isDefined(a.output)&&(a=a.output);isAudioParam(e)?a.connect(e,s):a.connect(e,s,o)}function disconnect(a,e,s=0,o=0){if(isDefined(e))for(;e instanceof ToneAudioNode;)e=e.input;for(;!isAudioNode(a);)isDefined(a.output)&&(a=a.output);isAudioParam(e)?a.disconnect(e,s):isAudioNode(e)?a.disconnect(e,s,o):a.disconnect()}class Gain extends ToneAudioNode{constructor(){super(optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const e=optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"]);this.gain=new Param({context:this.context,convert:e.convert,param:this._gainNode.gain,units:e.units,value:e.gain,minValue:e.minValue,maxValue:e.maxValue}),readOnly(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource extends ToneAudioNode{constructor(e){super(e),this.onended=noOp,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(s){const o=this.toSeconds(s);return this._startTime!==-1&&o>=this._startTime&&(this._stopTime===-1||o<=this._stopTime)?"started":"stopped"},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp})}_startGain(e,s=1){assert(this._startTime===-1,"Source cannot be started more than once");const o=this.toSeconds(this._fadeIn);return this._startTime=e+o,this._startTime=Math.max(this._startTime,this.context.currentTime),o>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(s,e+o):this._gainNode.gain.exponentialApproachValueAtTime(s,e,o)):this._gainNode.gain.setValueAtTime(s,e),this}stop(e){return this.log("stop",e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){assert(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const s=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+s,this._stopTime=Math.max(this._stopTime,this.context.currentTime),s>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,s,e):this._gainNode.gain.targetRampTo(0,s,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const o=this._curve==="exponential"?s*2:0;this._stopSource(this.now()+o),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp&&(this.onended(this),this.onended=noOp,!this.context.isOffline)){const e=()=>this.dispose();typeof window.requestIdleCallback!="undefined"?window.requestIdleCallback(e):setTimeout(e,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.disconnect(),this}}class ToneConstantSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const e=optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"]);connect(this._source,this._gainNode),this.offset=new Param({context:this.context,convert:e.convert,param:this._source.offset,units:e.units,value:e.offset,minValue:e.minValue,maxValue:e.maxValue})}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{convert:!0,offset:1,units:"number"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._source.start(s),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal extends ToneAudioNode{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const e=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource({context:this.context,convert:e.convert,offset:e.value,units:e.units,minValue:e.minValue,maxValue:e.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,units:"number",value:0})}connect(e,s=0,o=0){return connectSignal(this,e,s,o),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,s){return this._param.setValueAtTime(e,s),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,s){return this._param.linearRampToValueAtTime(e,s),this}exponentialRampToValueAtTime(e,s){return this._param.exponentialRampToValueAtTime(e,s),this}exponentialRampTo(e,s,o){return this._param.exponentialRampTo(e,s,o),this}linearRampTo(e,s,o){return this._param.linearRampTo(e,s,o),this}targetRampTo(e,s,o){return this._param.targetRampTo(e,s,o),this}exponentialApproachValueAtTime(e,s,o){return this._param.exponentialApproachValueAtTime(e,s,o),this}setTargetAtTime(e,s,o){return this._param.setTargetAtTime(e,s,o),this}setValueCurveAtTime(e,s,o,c){return this._param.setValueCurveAtTime(e,s,o,c),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,s,o){return this._param.rampTo(e,s,o),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}}function connectSignal(a,e,s,o){(e instanceof Param||isAudioParam(e)||e instanceof Signal&&e.override)&&(e.cancelScheduledValues(0),e.setValueAtTime(0,0),e instanceof Signal&&(e.overridden=!0)),connect(a,e,s,o)}class TickParam extends Param{constructor(){super(optionsFromArguments(TickParam.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline(1/0),this._multiplier=1;const e=optionsFromArguments(TickParam.getDefaults(),arguments,["value"]);this._multiplier=e.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(e.value)}),this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Param.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(e,s,o){s=this.toSeconds(s),this.setRampPoint(s);const c=this._fromType(e),d=this._events.get(s),_=Math.round(Math.max(1/o,1));for(let b=0;b<=_;b++){const k=o*b+s,$=this._exponentialApproach(d.time,d.value,c,o,k);this.linearRampToValueAtTime(this._toType($),k)}return this}setValueAtTime(e,s){const o=this.toSeconds(s);super.setValueAtTime(e,s);const c=this._events.get(o),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,o);return c.ticks=Math.max(_,0),this}linearRampToValueAtTime(e,s){const o=this.toSeconds(s);super.linearRampToValueAtTime(e,s);const c=this._events.get(o),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,o);return c.ticks=Math.max(_,0),this}exponentialRampToValueAtTime(e,s){s=this.toSeconds(s);const o=this._fromType(e),c=this._events.get(s),d=Math.round(Math.max((s-c.time)*10,1)),_=(s-c.time)/d;for(let b=0;b<=d;b++){const k=_*b+c.time,$=this._exponentialInterpolate(c.time,c.value,s,o,k);this.linearRampToValueAtTime(this._toType($),k)}return this}_getTicksUntilEvent(e,s){if(e===null)e={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef(e.ticks)){const _=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(_,e.time)}const o=this._fromType(this.getValueAtTime(e.time));let c=this._fromType(this.getValueAtTime(s));const d=this._events.get(s);return d&&d.time===s&&d.type==="setValueAtTime"&&(c=this._fromType(this.getValueAtTime(s-this.sampleTime))),.5*(s-e.time)*(o+c)+e.ticks}getTicksAtTime(e){const s=this.toSeconds(e),o=this._events.get(s);return Math.max(this._getTicksUntilEvent(o,s),0)}getDurationOfTicks(e,s){const o=this.toSeconds(s),c=this.getTicksAtTime(s);return this.getTimeOfTick(c+e)-o}getTimeOfTick(e){const s=this._events.get(e,"ticks"),o=this._events.getAfter(e,"ticks");if(s&&s.ticks===e)return s.time;if(s&&o&&o.type==="linearRampToValueAtTime"&&s.value!==o.value){const c=this._fromType(this.getValueAtTime(s.time)),_=(this._fromType(this.getValueAtTime(o.time))-c)/(o.time-s.time),b=Math.sqrt(Math.pow(c,2)-2*_*(s.ticks-e)),k=(-c+b)/_,$=(-c-b)/_;return(k>0?k:$)+s.time}else return s?s.value===0?1/0:s.time+(e-s.ticks)/s.value:e/this._initialValue}ticksToTime(e,s){return this.getDurationOfTicks(e,s)}timeToTicks(e,s){const o=this.toSeconds(s),c=this.toSeconds(e),d=this.getTicksAtTime(o);return this.getTicksAtTime(o+c)-d}_fromType(e){return this.units==="bpm"&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units==="bpm"&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){const s=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(s,0)}}class TickSignal extends Signal{constructor(){super(optionsFromArguments(TickSignal.getDefaults(),arguments,["value"])),this.name="TickSignal";const e=optionsFromArguments(TickSignal.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam({context:this.context,convert:e.convert,multiplier:e.multiplier,param:this._constantSource.offset,units:e.units,value:e.value})}static getDefaults(){return Object.assign(Signal.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(e,s){return this._param.ticksToTime(e,s)}timeToTicks(e,s){return this._param.timeToTicks(e,s)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,s){return this._param.getDurationOfTicks(e,s)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource extends ToneWithContext{constructor(){super(optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline,this._tickOffset=new Timeline;const e=optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal({context:this.context,units:e.units,value:e.frequency}),readOnly(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,s){const o=this.toSeconds(e);return this._state.getValueAtTime(o)!=="started"&&(this._state.setStateAtTime("started",o),isDefined(s)&&this.setTicksAtTime(s,o)),this}stop(e){const s=this.toSeconds(e);if(this._state.getValueAtTime(s)==="stopped"){const o=this._state.get(s);o&&o.time>0&&(this._tickOffset.cancel(o.time),this._state.cancel(o.time))}return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this.setTicksAtTime(0,s),this}pause(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)==="started"&&this._state.setStateAtTime("paused",s),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this}getTicksAtTime(e){const s=this.toSeconds(e),o=this._state.getLastState("stopped",s),c={state:"paused",time:s};this._state.add(c);let d=o,_=0;return this._state.forEachBetween(o.time,s+this.sampleTime,b=>{let k=d.time;const $=this._tickOffset.get(b.time);$&&$.time>=d.time&&(_=$.ticks,k=$.time),d.state==="started"&&b.state!=="started"&&(_+=this.frequency.getTicksAtTime(b.time)-this.frequency.getTicksAtTime(k)),d=b}),this._state.remove(c),_}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){const s=this.now(),o=this.frequency.timeToTicks(e,s);this.setTicksAtTime(o,s)}getSecondsAtTime(e){e=this.toSeconds(e);const s=this._state.getLastState("stopped",e),o={state:"paused",time:e};this._state.add(o);let c=s,d=0;return this._state.forEachBetween(s.time,e+this.sampleTime,_=>{let b=c.time;const k=this._tickOffset.get(_.time);k&&k.time>=c.time&&(d=k.seconds,b=k.time),c.state==="started"&&_.state!=="started"&&(d+=_.time-b),c=_}),this._state.remove(o),d}setTicksAtTime(e,s){return s=this.toSeconds(s),this._tickOffset.cancel(s),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,s),ticks:e,time:s}),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,s=this.now()){const o=this._tickOffset.get(s),c=this._state.get(s),d=Math.max(o.time,c.time),_=this.frequency.getTicksAtTime(d)+e-o.ticks;return this.frequency.getTimeOfTick(_)}forEachTickBetween(e,s,o){let c=this._state.get(e);this._state.forEachBetween(e,s,_=>{c&&c.state==="started"&&_.state!=="started"&&this.forEachTickBetween(Math.max(c.time,e),_.time-this.sampleTime,o),c=_});let d=null;if(c&&c.state==="started"){const _=Math.max(c.time,e),b=this.frequency.getTicksAtTime(_),k=this.frequency.getTicksAtTime(c.time),$=b-k;let j=Math.ceil($)-$;j=EQ(j,1)?0:j;let _e=this.frequency.getTimeOfTick(b+j);for(;_e{switch(o.state){case"started":const c=this._tickSource.getTicksAtTime(o.time);this.emit("start",o.time,c);break;case"stopped":o.time!==0&&this.emit("stop",o.time);break;case"paused":this.emit("pause",o.time);break}}),this._tickSource.forEachTickBetween(e,s,(o,c)=>{this.callback(o,c)}))}getStateAtTime(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter.mixin(Clock);class ToneAudioBuffers extends Tone{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const e=optionsFromArguments(ToneAudioBuffers.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=e.baseUrl,Object.keys(e.urls).forEach(s=>{this._loadingCount++;const o=e.urls[s];this.add(s,o,this._bufferLoaded.bind(this,e.onload),e.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp,onload:noOp,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return assert(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,s])=>s.loaded)}add(e,s,o=noOp,c=noOp){return isString(s)?this._buffers.set(e.toString(),new ToneAudioBuffer(this.baseUrl+s,o,c)):this._buffers.set(e.toString(),new ToneAudioBuffer(s,o,c)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}}class TicksClass extends TransportTimeClass{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}class Draw extends ToneWithContext{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,s){return this._events.add({callback:e,time:this.toSeconds(s)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){const e=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=e;){const s=this._events.shift();s&&e-s.time<=this.expiration&&s.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit(a=>{a.draw=new Draw({context:a})});onContextClose(a=>{a.draw.dispose()});class IntervalTimeline extends Tone{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(e){assert(isDefined(e.time),"Events must have a time property"),assert(isDefined(e.duration),"Events must have a duration parameter"),e.time=e.time.valueOf();let s=new IntervalNode(e.time,e.time+e.duration,e);for(this._root===null?this._root=s:this._root.insert(s),this._length++;s!==null;)s.updateHeight(),s.updateMax(),this._rebalance(s),s=s.parent;return this}remove(e){if(this._root!==null){const s=[];this._root.search(e.time,s);for(const o of s)if(o.event===e){this._removeNode(o),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,s=>this.remove(s)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,s){e.parent!==null?(e.isLeftChild()?e.parent.left=s:e.parent.right=s,this._rebalance(e.parent)):this._setRoot(s)}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{const s=e.getBalance();let o,c=null;if(s>0)if(e.left.right===null)o=e.left,o.right=e.right,c=o;else{for(o=e.left.right;o.right!==null;)o=o.right;o.parent&&(o.parent.right=o.left,c=o.parent,o.left=e.left,o.right=e.right)}else if(e.right.left===null)o=e.right,o.left=e.left,c=o;else{for(o=e.right.left;o.left!==null;)o=o.left;o.parent&&(o.parent.left=o.right,c=o.parent,o.left=e.left,o.right=e.right)}e.parent!==null?e.isLeftChild()?e.parent.left=o:e.parent.right=o:this._setRoot(o),c&&this._rebalance(c)}e.dispose()}_rotateLeft(e){const s=e.parent,o=e.isLeftChild(),c=e.right;c&&(e.right=c.left,c.left=e),s!==null?o?s.left=c:s.right=c:this._setRoot(c)}_rotateRight(e){const s=e.parent,o=e.isLeftChild(),c=e.left;c&&(e.left=c.right,c.right=e),s!==null?o?s.left=c:s.right=c:this._setRoot(c)}_rebalance(e){const s=e.getBalance();s>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):s<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){const s=[];if(this._root.search(e,s),s.length>0){let o=s[0];for(let c=1;co.low&&(o=s[c]);return o.event}}return null}forEach(e){if(this._root!==null){const s=[];this._root.traverse(o=>s.push(o)),s.forEach(o=>{o.event&&e(o.event)})}return this}forEachAtTime(e,s){if(this._root!==null){const o=[];this._root.search(e,o),o.forEach(c=>{c.event&&s(c.event)})}return this}forEachFrom(e,s){if(this._root!==null){const o=[];this._root.searchAfter(e,o),o.forEach(c=>{c.event&&s(c.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}}class IntervalNode{constructor(e,s,o){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=o,this.low=e,this.high=s,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,s){e>this.max||(this.left!==null&&this.left.search(e,s),this.low<=e&&this.high>e&&s.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,s))}searchAfter(e,s){this.low>=e&&(s.push(this),this.left!==null&&this.left.searchAfter(e,s)),this.right!==null&&this.right.searchAfter(e,s)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left!==null?e=this.left.height+1:this.right!==null&&(e=-(this.right.height+1)),e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}class Volume extends ToneAudioNode{constructor(){super(optionsFromArguments(Volume.getDefaults(),arguments,["volume"])),this.name="Volume";const e=optionsFromArguments(Volume.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain({context:this.context,gain:e.volume,units:"decibels"}),this.volume=this.output.gain,readOnly(this,"volume"),this._unmutedVolume=e.volume,this.mute=e.mute}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}class Destination extends ToneAudioNode{constructor(){super(optionsFromArguments(Destination.getDefaults(),arguments)),this.name="Destination",this.input=new Volume({context:this.context}),this.output=new Gain({context:this.context}),this.volume=this.input.volume;const e=optionsFromArguments(Destination.getDefaults(),arguments);connectSeries(this.input,this.output,this.context.rawContext.destination),this.mute=e.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),connectSeries(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}}onContextInit(a=>{a.destination=new Destination({context:a})});onContextClose(a=>{a.destination.dispose()});class TimelineValue extends Tone{constructor(e){super(),this.name="TimelineValue",this._timeline=new Timeline({memory:10}),this._initialValue=e}set(e,s){return this._timeline.add({value:e,time:s}),this}get(e){const s=this._timeline.get(e);return s?s.value:this._initialValue}}class TransportEvent{constructor(e,s){this.id=TransportEvent._eventId++;const o=Object.assign(TransportEvent.getDefaults(),s);this.transport=e,this.callback=o.callback,this._once=o.once,this.time=o.time}static getDefaults(){return{callback:noOp,once:!1,time:0}}invoke(e){this.callback&&(this.callback(e),this._once&&this.transport.clear(this.id))}dispose(){return this.callback=void 0,this}}TransportEvent._eventId=0;class TransportRepeatEvent extends TransportEvent{constructor(e,s){super(e,s),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const o=Object.assign(TransportRepeatEvent.getDefaults(),s);this.duration=new TicksClass(e.context,o.duration).valueOf(),this._interval=new TicksClass(e.context,o.interval).valueOf(),this._nextTick=o.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvents(e){const s=this.transport.getTicksAtTime(e);s>=this.time&&s>=this._nextTick&&this._nextTick+this._intervalthis.time&&(this._nextTick=this.time+Math.ceil((s-this.time)/this._interval)*this._interval),this._currentId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()),this._nextTick+=this._interval,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds())}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this}}class Transport extends ToneWithContext{constructor(){super(optionsFromArguments(Transport.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline,this._repeatedEvents=new IntervalTimeline,this._syncedSignals=[],this._swingAmount=0;const e=optionsFromArguments(Transport.getDefaults(),arguments);this._ppq=e.ppq,this._clock=new Clock({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=e.ppq,this.bpm.setValueAtTime(e.bpm,0),readOnly(this,"bpm"),this._timeSignature=e.timeSignature,this._swingTicks=e.ppq/2}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(e,s){if(this._loop.get(e)&&s>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),s=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._swingAmount>0&&s%this._ppq!==0&&s%(this._swingTicks*2)!==0){const o=s%(this._swingTicks*2)/(this._swingTicks*2),c=Math.sin(o*Math.PI)*this._swingAmount;e+=new TicksClass(this.context,this._swingTicks*2/3).toSeconds()*c}this._timeline.forEachAtTime(s,o=>o.invoke(e))}schedule(e,s){const o=new TransportEvent(this,{callback:e,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(o,this._timeline)}scheduleRepeat(e,s,o,c=1/0){const d=new TransportRepeatEvent(this,{callback:e,duration:new TimeClass(this.context,c).toTicks(),interval:new TimeClass(this.context,s).toTicks(),time:new TransportTimeClass(this.context,o).toTicks()});return this._addEvent(d,this._repeatedEvents)}scheduleOnce(e,s){const o=new TransportEvent(this,{callback:e,once:!0,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(o,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){const s=this._scheduledEvents[e.toString()];s.timeline.remove(s.event),s.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,s){return this._scheduledEvents[e.id.toString()]={event:e,timeline:s},s.add(e),e.id}cancel(e=0){const s=this.toTicks(e);return this._timeline.forEachFrom(s,o=>this.clear(o.id)),this._repeatedEvents.forEachFrom(s,o=>this.clear(o.id)),this}_bindClockEvents(){this._clock.on("start",(e,s)=>{s=new TicksClass(this.context,s).toSeconds(),this.emit("start",e,s)}),this._clock.on("stop",e=>{this.emit("stop",e)}),this._clock.on("pause",e=>{this.emit("pause",e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,s){let o;return isDefined(s)&&(o=this.toTicks(s)),this._clock.start(e,o),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!=="started"?this.start(e):this.stop(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){isArray(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new TimeClass(this.context,this._loopStart,"i").toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new TimeClass(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new TicksClass(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){const e=this.now(),s=this._clock.getTicksAtTime(e);return new TicksClass(this.context,s).toBarsBeatsSixteenths()}set position(e){const s=this.toTicks(e);this.ticks=s}get seconds(){return this._clock.seconds}set seconds(e){const s=this.now(),o=this._clock.frequency.timeToTicks(e,s);this.ticks=o}get progress(){if(this.loop){const e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){const s=this.now();if(this.state==="started"){const o=this._clock.getTicksAtTime(s),c=this._clock.frequency.getDurationOfTicks(Math.ceil(o)-o,s),d=s+c;this.emit("stop",d),this._clock.setTicksAtTime(e,d),this.emit("start",d,this._clock.getSecondsAtTime(d))}else this._clock.setTicksAtTime(e,s)}}getTicksAtTime(e){return Math.round(this._clock.getTicksAtTime(e))}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!=="started")return 0;{const s=this.now(),o=this.getTicksAtTime(s),c=e-o%e;return this._clock.nextTickTime(c,s)}}syncSignal(e,s){if(!s){const c=this.now();if(e.getValueAtTime(c)!==0){const d=this.bpm.getValueAtTime(c),_=1/(60/d/this.PPQ);s=e.getValueAtTime(c)/_}else s=0}const o=new Gain(s);return this.bpm.connect(o),o.connect(e._param),this._syncedSignals.push({initial:e.value,ratio:o,signal:e}),e.value=0,this}unsyncSignal(e){for(let s=this._syncedSignals.length-1;s>=0;s--){const o=this._syncedSignals[s];o.signal===e&&(o.ratio.dispose(),o.signal.value=o.initial,this._syncedSignals.splice(s,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}}Emitter.mixin(Transport);onContextInit(a=>{a.transport=new Transport({context:a})});onContextClose(a=>{a.transport.dispose()});class Source extends ToneAudioNode{constructor(e){super(e),this.input=void 0,this._state=new StateTimeline("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp,this._syncedStop=noOp,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,readOnly(this,"volume"),this.onstop=e.onstop}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,onstop:noOp,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,s,o){let c=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(c=this._clampToCurrentTime(c),!this._synced&&this._state.getValueAtTime(c)==="started")assert(GT(c,this._state.get(c).time),"Start time must be strictly greater than previous start time"),this._state.cancel(c),this._state.setStateAtTime("started",c),this.log("restart",c),this.restart(c,s,o);else if(this.log("start",c),this._state.setStateAtTime("started",c),this._synced){const d=this._state.get(c);d&&(d.offset=this.toSeconds(defaultArg(s,0)),d.duration=o?this.toSeconds(o):void 0);const _=this.context.transport.schedule(b=>{this._start(b,s,o)},c);this._scheduled.push(_),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>c&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning(this.context),this._start(c,s,o);return this}stop(e){let s=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(s=this._clampToCurrentTime(s),this._state.getValueAtTime(s)==="started"||isDefined(this._state.getNextState("started",s))){if(this.log("stop",s),!this._synced)this._stop(s);else{const o=this.context.transport.schedule(this._stop.bind(this),s);this._scheduled.push(o)}this._state.cancel(s),this._state.setStateAtTime("stopped",s)}return this}restart(e,s,o){return e=this.toSeconds(e),this._state.getValueAtTime(e)==="started"&&(this._state.cancel(e),this._restart(e,s,o)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,s)=>{if(s>0){const o=this._state.get(s);if(o&&o.state==="started"&&o.time!==s){const c=s-this.toSeconds(o.time);let d;o.duration&&(d=this.toSeconds(o.duration)-c),this._start(e,this.toSeconds(o.offset)+c,d)}}},this._syncedStop=e=>{const s=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(s)==="started"&&this._stop(e)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const e=optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"]);connect(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param({context:this.context,param:this._source.playbackRate,units:"positive",value:e.playbackRate}),this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this._buffer=new ToneAudioBuffer(e.url,e.onload,e.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{url:new ToneAudioBuffer,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,s,o,c=1){assert(this.buffer.loaded,"buffer is either not set or not loaded");const d=this.toSeconds(e);this._startGain(d,c),this.loop?s=defaultArg(s,this.loopStart):s=defaultArg(s,0);let _=Math.max(this.toSeconds(s),0);if(this.loop){const b=this.toSeconds(this.loopEnd)||this.buffer.duration,k=this.toSeconds(this.loopStart),$=b-k;GTE(_,b)&&(_=(_-k)%$+k),EQ(_,this.buffer.duration)&&(_=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT(_,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(d,_)),isDefined(o)){let b=this.toSeconds(o);b=Math.max(b,0),this.stop(d+b)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}function generateWaveform(a,e){return __awaiter(this,void 0,void 0,function*(){const s=e/a.context.sampleRate,o=new OfflineContext(1,s,a.context.sampleRate);return new a.constructor(Object.assign(a.get(),{frequency:2/s,detune:0,context:o})).toDestination().start(0),(yield o.render()).getChannelData(0)})}class ToneOscillatorNode extends OneShotSource{constructor(){super(optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"])),this.name="ToneOscillatorNode",this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator];const e=optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"]);connect(this._oscillator,this._gainNode),this.type=e.type,this.frequency=new Param({context:this.context,param:this._oscillator.frequency,units:"frequency",value:e.frequency}),this.detune=new Param({context:this.context,param:this._oscillator.detune,units:"cents",value:e.detune}),readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{detune:0,frequency:440,type:"sine"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._oscillator.start(s),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}}class Oscillator extends Source{constructor(){super(optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"])),this.name="Oscillator",this._oscillator=null;const e=optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),readOnly(this,"frequency"),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly(this,"detune"),this._partials=e.partials,this._partialCount=e.partialCount,this._type=e.type,e.partialCount&&e.type!=="custom"&&(this._type=this.baseType+e.partialCount.toString()),this.phase=e.phase}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:"sine"})}_start(e){const s=this.toSeconds(e),o=new ToneOscillatorNode({context:this.context,onended:()=>this.onstop(this)});this._oscillator=o,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(s)}_stop(e){const s=this.toSeconds(e);this._oscillator&&this._oscillator.stop(s)}_restart(e){const s=this.toSeconds(e);return this.log("restart",s),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(s),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator._periodicWaveCache.find(s=>s.phase===this._phase&&deepEquals(s.partials,this._partials));{const e=Oscillator._periodicWaveCache.find(s=>s.type===this._type&&s.phase===this._phase);return this._partialCount=e?e.partialCount:this._partialCount,e}}get type(){return this._type}set type(e){this._type=e;const s=["sine","square","sawtooth","triangle"].indexOf(e)!==-1;if(this._phase===0&&s)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=e);else{const o=this._getCachedPeriodicWave();if(isDefined(o)){const{partials:c,wave:d}=o;this._wave=d,this._partials=c,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[c,d]=this._getRealImaginary(e,this._phase),_=this.context.createPeriodicWave(c,d);this._wave=_,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator._periodicWaveCache.push({imag:d,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:c,type:this._type,wave:this._wave}),Oscillator._periodicWaveCache.length>100&&Oscillator._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(e){this.partialCount&&this._type!=="custom"&&e!=="custom"?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){assertRange(e,0);let s=this._type;const o=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(o&&(s=o[1]),this._type!=="custom")e===0?this.type=s:this.type=s+e.toString();else{const c=new Float32Array(e);this._partials.forEach((d,_)=>c[_]=d),this._partials=Array.from(c),this.type=this._type}}_getRealImaginary(e,s){let c=2048;const d=new Float32Array(c),_=new Float32Array(c);let b=1;if(e==="custom"){if(b=this._partials.length+1,this._partialCount=this._partials.length,c=b,this._partials.length===0)return[d,_]}else{const k=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);k?(b=parseInt(k[2],10)+1,this._partialCount=parseInt(k[2],10),e=k[1],b=Math.max(b,2),c=b):this._partialCount=0,this._partials=[]}for(let k=1;k>1&1?-1:1):j=0,this._partials[k-1]=j;break;case"custom":j=this._partials[k-1];break;default:throw new TypeError("Oscillator: invalid type: "+e)}j!==0?(d[k]=-j*Math.sin(s*k),_[k]=j*Math.cos(s*k)):(d[k]=0,_[k]=0)}return[d,_]}_inverseFFT(e,s,o){let c=0;const d=e.length;for(let _=0;_o.includes(e));assert(s,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class AudioToGain extends SignalOperator{constructor(){super(...arguments),this.name="AudioToGain",this._norm=new WaveShaper({context:this.context,mapping:e=>(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply extends Signal{constructor(){super(Object.assign(optionsFromArguments(Multiply.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const e=optionsFromArguments(Multiply.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain({context:this.context,minValue:e.minValue,maxValue:e.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator extends Source{constructor(){super(optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain({context:this.context}),this._modulationNode=new Gain({context:this.context});const e=optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator extends Source{constructor(){super(optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain({context:this.context,gain:0});const e=optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:0,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.detune=this._carrier.detune,this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.modulationIndex=new Multiply({context:this.context,units:"positive",value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator extends Source{constructor(){super(optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain({context:this.context,gain:0}),this._thresh=new WaveShaper({context:this.context,mapping:s=>s<=0?-1:1});const e=optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"]);this.width=new Signal({context:this.context,units:"audioRange",value:e.width}),this._triangle=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator extends Source{constructor(){super(optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const e=optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this._spread=e.spread,this._type=e.type,this._phase=e.phase,this._partials=e.partials,this._partialCount=e.partialCount,this.count=e.count,readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(e){e=this.toSeconds(e),this._forEach(s=>s.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(s=>s.stop(e))}_restart(e){this._forEach(s=>s.restart(e))}_forEach(e){for(let s=0;ss.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){const s=-e/2,o=e/(this._oscillators.length-1);this._forEach((c,d)=>c.detune.value=s+o*d)}}get count(){return this._oscillators.length}set count(e){if(assertRange(e,1),this._oscillators.length!==e){this._forEach(s=>s.dispose()),this._oscillators=[];for(let s=0;sthis.onstop(this):noOp});this.type==="custom"&&(o.partials=this._partials),this.frequency.connect(o.frequency),this.detune.connect(o.detune),o.detune.overridden=!1,o.connect(this.output),this._oscillators[s]=o}this.spread=this._spread,this.state==="started"&&this._forEach(s=>s.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((s,o)=>s.phase=this._phase+o/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(s=>s.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type="custom",this._forEach(s=>s.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(s=>s.partialCount=e),this._type=this._oscillators[0].type}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}}class PWMOscillator extends Source{constructor(){super(optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply({context:this.context,value:2});const e=optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator({context:this.context,frequency:e.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap={am:AMOscillator,fat:FatOscillator,fm:FMOscillator,oscillator:Oscillator,pulse:PulseOscillator,pwm:PWMOscillator};class OmniOscillator extends Source{constructor(){super(optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const e=optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly(this,["frequency","detune"]),this.set(e)}static getDefaults(){return Object.assign(Oscillator.getDefaults(),FMOscillator.getDefaults(),AMOscillator.getDefaults(),FatOscillator.getDefaults(),PulseOscillator.getDefaults(),PWMOscillator.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e="";return["am","fm","fat"].some(s=>this._sourceType===s)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):e==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,"type")&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;const s=OmniOscillatorSourceMap[e],o=this.now();if(this._oscillator){const c=this._oscillator;c.stop(o),this.context.setTimeout(()=>c.dispose(),this.blockTime)}this._oscillator=new s({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(o)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let s="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(s=this._oscillator.type),e==="fm"?this.type="fm"+s:e==="am"?this.type="am"+s:e==="fat"?this.type="fat"+s:e==="oscillator"?this.type=s:e==="pulse"?this.type="pulse":e==="pwm"&&(this.type="pwm")}_getOscType(e,s){return e instanceof OmniOscillatorSourceMap[s]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&e!=="pulse"&&e!=="pwm"&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}function range(a,e=1/0){const s=new WeakMap;return function(o,c){Reflect.defineProperty(o,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(d,a,e),s.set(this,d)}})}}function timeRange(a,e=1/0){const s=new WeakMap;return function(o,c){Reflect.defineProperty(o,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(this.toSeconds(d),a,e),s.set(this,d)}})}}class Player extends Source{constructor(){super(optionsFromArguments(Player.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const e=optionsFromArguments(Player.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer({onload:this._onload.bind(this,e.onload),onerror:e.onerror,reverse:e.reverse,url:e.url}),this.autostart=e.autostart,this._loop=e.loop,this._loopStart=e.loopStart,this._loopEnd=e.loopEnd,this._playbackRate=e.playbackRate,this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1,reverse:!1})}load(e){return __awaiter(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=noOp){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(e,s,o){return super.start(e,s,o),this}_start(e,s,o){this._loop?s=defaultArg(s,this._loopStart):s=defaultArg(s,0);const c=this.toSeconds(s),d=o;o=defaultArg(o,Math.max(this._buffer.duration-c,0));let _=this.toSeconds(o);_=_/this._playbackRate,e=this.toSeconds(e);const b=new ToneBufferSource({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+_),this._state.setStateAtTime("stopped",e+_,{implicitEnd:!0})),this._activeSources.add(b),this._loop&&isUndef(d)?b.start(e,c):b.start(e,c,_-this.toSeconds(this.fadeOut))}_stop(e){const s=this.toSeconds(e);this._activeSources.forEach(o=>o.stop(s))}restart(e,s,o){return super.restart(e,s,o),this}_restart(e,s,o){this._stop(e),this._start(e,s,o)}seek(e,s){const o=this.toSeconds(s);if(this._state.getValueAtTime(o)==="started"){const c=this.toSeconds(e);this._stop(o),this._start(o,c)}return this}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(s=>{s.loop=e}),e)){const s=this._state.getNextState("stopped",this.now());s&&this._state.cancel(s.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;const s=this.now(),o=this._state.getNextState("stopped",s);o&&o.implicitEnd&&(this._state.cancel(o.time),this._activeSources.forEach(c=>c.cancelStop())),this._activeSources.forEach(c=>{c.playbackRate.setValueAtTime(e,s)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}}__decorate([timeRange(0)],Player.prototype,"fadeIn",void 0);__decorate([timeRange(0)],Player.prototype,"fadeOut",void 0);class Envelope extends ToneAudioNode{constructor(){super(optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const e=optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve,this.decayCurve=e.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,s){if(isString(e))return e;{let o;for(o in EnvelopeCurves)if(EnvelopeCurves[o][s]===e)return o;return e}}_setCurve(e,s,o){if(isString(o)&&Reflect.has(EnvelopeCurves,o)){const c=EnvelopeCurves[o];isObject(c)?e!=="_decayCurve"&&(this[e]=c[s]):this[e]=c}else if(isArray(o)&&e!=="_decayCurve")this[e]=o;else throw new Error("Envelope: invalid curve: "+o)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(e){this._setCurve("_attackCurve","In",e)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(e){this._setCurve("_releaseCurve","Out",e)}get decayCurve(){return this._decayCurve}set decayCurve(e){assert(["linear","exponential"].some(s=>s===e),`Invalid envelope curve: ${e}`),this._decayCurve=e}triggerAttack(e,s=1){this.log("triggerAttack",e,s),e=this.toSeconds(e);let c=this.toSeconds(this.attack);const d=this.toSeconds(this.decay),_=this.getValueAtTime(e);if(_>0){const b=1/c;c=(1-_)/b}if(c0){const o=this.toSeconds(this.release);o{let e,s;const o=[];for(e=0;e<128;e++)o[e]=Math.sin(e/(128-1)*(Math.PI/2));const c=[],d=6.4;for(e=0;e<128-1;e++){s=e/(128-1);const et=Math.sin(s*(Math.PI*2)*d-Math.PI/2)+1;c[e]=et/10+s*.83}c[128-1]=1;const _=[],b=5;for(e=0;e<128;e++)_[e]=Math.ceil(e/(128-1)*b)/b;const k=[];for(e=0;e<128;e++)s=e/(128-1),k[e]=.5*(1-Math.cos(Math.PI*s));const $=[];for(e=0;e<128;e++){s=e/(128-1);const et=Math.pow(s,3)*4+.2,tt=Math.cos(et*Math.PI*2*s);$[e]=Math.abs(tt*(1-s))}function j(et){const tt=new Array(et.length);for(let nt=0;nt{const d=c[s],_=this.context.transport.schedule(b=>{c[s]=b,o.apply(this,c)},d);this._scheduledEvents.push(_)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease),this}triggerAttackRelease(e,s,o,c){const d=this.toSeconds(o),_=this.toSeconds(s);return this.triggerAttack(e,d,c),this.triggerRelease(d+_),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic extends Instrument{constructor(){super(optionsFromArguments(Monophonic.getDefaults(),arguments));const e=optionsFromArguments(Monophonic.getDefaults(),arguments);this.portamento=e.portamento,this.onsilence=e.onsilence}static getDefaults(){return Object.assign(Instrument.getDefaults(),{detune:0,onsilence:noOp,portamento:0})}triggerAttack(e,s,o=1){this.log("triggerAttack",e,s,o);const c=this.toSeconds(s);return this._triggerEnvelopeAttack(c,o),this.setNote(e,c),this}triggerRelease(e){this.log("triggerRelease",e);const s=this.toSeconds(e);return this._triggerEnvelopeRelease(s),this}setNote(e,s){const o=this.toSeconds(s),c=e instanceof FrequencyClass?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(o)>.05){const d=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(c,d,o)}else this.frequency.setValueAtTime(c,o);return this}}__decorate([timeRange(0)],Monophonic.prototype,"portamento",void 0);class AmplitudeEnvelope extends Envelope{constructor(){super(optionsFromArguments(AmplitudeEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth extends Monophonic{constructor(){super(optionsFromArguments(Synth.getDefaults(),arguments)),this.name="Synth";const e=optionsFromArguments(Synth.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign({context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)},e.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},e.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(e,s){if(this.envelope.triggerAttack(e,s),this.oscillator.start(e),this.envelope.sustain===0){const o=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+o+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class MembraneSynth extends Synth{constructor(){super(optionsFromArguments(MembraneSynth.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const e=optionsFromArguments(MembraneSynth.getDefaults(),arguments);this.pitchDecay=e.pitchDecay,this.octaves=e.octaves,readOnly(this,["oscillator","envelope"])}static getDefaults(){return deepMerge(Monophonic.getDefaults(),Synth.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(e,s){const o=this.toSeconds(s),c=this.toFrequency(e instanceof FrequencyClass?e.toFrequency():e),d=c*this.octaves;return this.oscillator.frequency.setValueAtTime(d,o),this.oscillator.frequency.exponentialRampToValueAtTime(c,o+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate([range(0)],MembraneSynth.prototype,"octaves",void 0);__decorate([timeRange(0)],MembraneSynth.prototype,"pitchDecay",void 0);const workletContext=new Set;function addToWorklet(a){workletContext.add(a)}function registerProcessor(a,e){const s=`registerProcessor("${a}", ${e})`;workletContext.add(s)}const toneAudioWorkletProcessor=` - /** - * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. - */ - class ToneAudioWorkletProcessor extends AudioWorkletProcessor { - - constructor(options) { - - super(options); - /** - * If the processor was disposed or not. Keep alive until it's disposed. - */ - this.disposed = false; - /** - * The number of samples in the processing block - */ - this.blockSize = 128; - /** - * the sample rate - */ - this.sampleRate = sampleRate; - - this.port.onmessage = (event) => { - // when it receives a dispose - if (event.data === "dispose") { - this.disposed = true; - } - }; - } - } -`;addToWorklet(toneAudioWorkletProcessor);const singleIOProcess=` - /** - * Abstract class for a single input/output processor. - * has a 'generate' function which processes one sample at a time - */ - class SingleIOProcessor extends ToneAudioWorkletProcessor { - - constructor(options) { - super(Object.assign(options, { - numberOfInputs: 1, - numberOfOutputs: 1 - })); - /** - * Holds the name of the parameter and a single value of that - * parameter at the current sample - * @type { [name: string]: number } - */ - this.params = {} - } - - /** - * Generate an output sample from the input sample and parameters - * @abstract - * @param input number - * @param channel number - * @param parameters { [name: string]: number } - * @returns number - */ - generate(){} - - /** - * Update the private params object with the - * values of the parameters at the given index - * @param parameters { [name: string]: Float32Array }, - * @param index number - */ - updateParams(parameters, index) { - for (const paramName in parameters) { - const param = parameters[paramName]; - if (param.length > 1) { - this.params[paramName] = parameters[paramName][index]; - } else { - this.params[paramName] = parameters[paramName][0]; - } - } - } - - /** - * Process a single frame of the audio - * @param inputs Float32Array[][] - * @param outputs Float32Array[][] - */ - process(inputs, outputs, parameters) { - const input = inputs[0]; - const output = outputs[0]; - // get the parameter values - const channelCount = Math.max(input && input.length || 0, output.length); - for (let sample = 0; sample < this.blockSize; sample++) { - this.updateParams(parameters, sample); - for (let channel = 0; channel < channelCount; channel++) { - const inputSample = input && input.length ? input[channel][sample] : 0; - output[channel][sample] = this.generate(inputSample, channel, this.params); - } - } - return !this.disposed; - } - }; -`;addToWorklet(singleIOProcess);const delayLine=` - /** - * A multichannel buffer for use within an AudioWorkletProcessor as a delay line - */ - class DelayLine { - - constructor(size, channels) { - this.buffer = []; - this.writeHead = [] - this.size = size; - - // create the empty channels - for (let i = 0; i < channels; i++) { - this.buffer[i] = new Float32Array(this.size); - this.writeHead[i] = 0; - } - } - - /** - * Push a value onto the end - * @param channel number - * @param value number - */ - push(channel, value) { - this.writeHead[channel] += 1; - if (this.writeHead[channel] > this.size) { - this.writeHead[channel] = 0; - } - this.buffer[channel][this.writeHead[channel]] = value; - } - - /** - * Get the recorded value of the channel given the delay - * @param channel number - * @param delay number delay samples - */ - get(channel, delay) { - let readHead = this.writeHead[channel] - Math.floor(delay); - if (readHead < 0) { - readHead += this.size; - } - return this.buffer[channel][readHead]; - } - } -`;addToWorklet(delayLine);const workletName$1="feedback-comb-filter",feedbackCombFilter=` - class FeedbackCombFilterWorklet extends SingleIOProcessor { - - constructor(options) { - super(options); - this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2); - } - - static get parameterDescriptors() { - return [{ - name: "delayTime", - defaultValue: 0.1, - minValue: 0, - maxValue: 1, - automationRate: "k-rate" - }, { - name: "feedback", - defaultValue: 0.5, - minValue: 0, - maxValue: 0.9999, - automationRate: "k-rate" - }]; - } - - generate(input, channel, parameters) { - const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate); - this.delayLine.push(channel, input + delayedSample * parameters.feedback); - return delayedSample; - } - } -`;registerProcessor(workletName$1,feedbackCombFilter);class Sampler extends Instrument{constructor(){super(optionsFromArguments(Sampler.getDefaults(),arguments,["urls","onload","baseUrl"],"urls")),this.name="Sampler",this._activeSources=new Map;const e=optionsFromArguments(Sampler.getDefaults(),arguments,["urls","onload","baseUrl"],"urls"),s={};Object.keys(e.urls).forEach(o=>{const c=parseInt(o,10);if(assert(isNote(o)||isNumber(c)&&isFinite(c),`url key is neither a note or midi pitch: ${o}`),isNote(o)){const d=new FrequencyClass(this.context,o).toMidi();s[d]=e.urls[o]}else isNumber(c)&&isFinite(c)&&(s[c]=e.urls[c])}),this._buffers=new ToneAudioBuffers({urls:s,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.attack=e.attack,this.release=e.release,this.curve=e.curve,this._buffers.loaded&&Promise.resolve().then(e.onload)}static getDefaults(){return Object.assign(Instrument.getDefaults(),{attack:0,baseUrl:"",curve:"exponential",onload:noOp,onerror:noOp,release:.1,urls:{}})}_findClosest(e){let o=0;for(;o<96;){if(this._buffers.has(e+o))return-o;if(this._buffers.has(e-o))return o;o++}throw new Error(`No available buffers for note: ${e}`)}triggerAttack(e,s,o=1){return this.log("triggerAttack",e,s,o),Array.isArray(e)||(e=[e]),e.forEach(c=>{const d=ftomf(new FrequencyClass(this.context,c).toFrequency()),_=Math.round(d),b=d-_,k=this._findClosest(_),$=_-k,j=this._buffers.get($),_e=intervalToFrequencyRatio(k+b),et=new ToneBufferSource({url:j,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:_e}).connect(this.output);et.start(s,0,j.duration/_e,o),isArray(this._activeSources.get(_))||this._activeSources.set(_,[]),this._activeSources.get(_).push(et),et.onended=()=>{if(this._activeSources&&this._activeSources.has(_)){const tt=this._activeSources.get(_),nt=tt.indexOf(et);nt!==-1&&tt.splice(nt,1)}}}),this}triggerRelease(e,s){return this.log("triggerRelease",e,s),Array.isArray(e)||(e=[e]),e.forEach(o=>{const c=new FrequencyClass(this.context,o).toMidi();if(this._activeSources.has(c)&&this._activeSources.get(c).length){const d=this._activeSources.get(c);s=this.toSeconds(s),d.forEach(_=>{_.stop(s)}),this._activeSources.set(c,[])}}),this}releaseAll(e){const s=this.toSeconds(e);return this._activeSources.forEach(o=>{for(;o.length;)o.shift().stop(s)}),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}triggerAttackRelease(e,s,o,c=1){const d=this.toSeconds(o);return this.triggerAttack(e,d,c),isArray(s)?(assert(isArray(e),"notes must be an array when duration is array"),e.forEach((_,b)=>{const k=s[Math.min(b,s.length-1)];this.triggerRelease(_,d+this.toSeconds(k))})):this.triggerRelease(e,d+this.toSeconds(s)),this}add(e,s,o){if(assert(isNote(e)||isFinite(e),`note must be a pitch or midi: ${e}`),isNote(e)){const c=new FrequencyClass(this.context,e).toMidi();this._buffers.add(c,s,o)}else this._buffers.add(e,s,o);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(s=>s.dispose())}),this._activeSources.clear(),this}}__decorate([timeRange(0)],Sampler.prototype,"attack",void 0);__decorate([timeRange(0)],Sampler.prototype,"release",void 0);class Panner extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Panner.getDefaults(),arguments,["pan"]))),this.name="Panner",this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner;const e=optionsFromArguments(Panner.getDefaults(),arguments,["pan"]);this.pan=new Param({context:this.context,param:this._panner.pan,value:e.pan,minValue:-1,maxValue:1}),this._panner.channelCount=e.channelCount,this._panner.channelCountMode="explicit",readOnly(this,"pan")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}}const workletName="bit-crusher",bitCrusherWorklet=` - class BitCrusherWorklet extends SingleIOProcessor { - - static get parameterDescriptors() { - return [{ - name: "bits", - defaultValue: 12, - minValue: 1, - maxValue: 16, - automationRate: 'k-rate' - }]; - } - - generate(input, _channel, parameters) { - const step = Math.pow(0.5, parameters.bits - 1); - const val = step * Math.floor(input / step + 0.5); - return val; - } - } -`;registerProcessor(workletName,bitCrusherWorklet);class Solo extends ToneAudioNode{constructor(){super(optionsFromArguments(Solo.getDefaults(),arguments,["solo"])),this.name="Solo";const e=optionsFromArguments(Solo.getDefaults(),arguments,["solo"]);this.input=this.output=new Gain({context:this.context}),Solo._allSolos.has(this.context)||Solo._allSolos.set(this.context,new Set),Solo._allSolos.get(this.context).add(this),this.solo=e.solo}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{solo:!1})}get solo(){return this._isSoloed()}set solo(e){e?this._addSolo():this._removeSolo(),Solo._allSolos.get(this.context).forEach(s=>s._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo._soloed.has(this.context)||Solo._soloed.set(this.context,new Set),Solo._soloed.get(this.context).add(this)}_removeSolo(){Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).delete(this)}_isSoloed(){return Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).has(this)}_noSolos(){return!Solo._soloed.has(this.context)||Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo._allSolos=new Map;Solo._soloed=new Map;class PanVol extends ToneAudioNode{constructor(){super(optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const e=optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner({context:this.context,pan:e.pan,channelCount:e.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume({context:this.context,volume:e.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=e.mute,readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel extends ToneAudioNode{constructor(){super(optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const e=optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo({solo:e.solo,context:this.context}),this._panVol=this.output=new PanVol({context:this.context,pan:e.pan,volume:e.volume,mute:e.mute,channelCount:e.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(e){return Channel.buses.has(e)||Channel.buses.set(e,new Gain({context:this.context})),Channel.buses.get(e)}send(e,s=0){const o=this._getBus(e),c=new Gain({context:this.context,units:"decibels",gain:s});return this.connect(c),c.connect(o),c}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel.buses=new Map;class Listener extends ToneAudioNode{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit(a=>{a.listener=new Listener({context:a})});onContextClose(a=>{a.listener.dispose()});getContext().transport;getContext().destination;getContext().destination;getContext().listener;getContext().draw;getContext();var webmidi_min={exports:{}};(function(a){(function(e){function s(){if(s.prototype._singleton)throw new Error("WebMidi is a singleton, it cannot be instantiated directly.");(s.prototype._singleton=this)._inputs=[],this._outputs=[],this._userHandlers={},this._stateChangeQueue=[],this._processingStateChange=!1,this._midiInterfaceEvents=["connected","disconnected"],this._nrpnBuffer=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],this._nrpnEventsEnabled=!0,this._nrpnTypes=["entry","increment","decrement"],this._notes=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],this._semitones={C:0,D:2,E:4,F:5,G:7,A:9,B:11},Object.defineProperties(this,{MIDI_SYSTEM_MESSAGES:{value:{sysex:240,timecode:241,songposition:242,songselect:243,tuningrequest:246,sysexend:247,clock:248,start:250,continue:251,stop:252,activesensing:254,reset:255,midimessage:0,unknownsystemmessage:-1},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MESSAGES:{value:{noteoff:8,noteon:9,keyaftertouch:10,controlchange:11,channelmode:11,nrpn:11,programchange:12,channelaftertouch:13,pitchbend:14},writable:!1,enumerable:!0,configurable:!1},MIDI_REGISTERED_PARAMETER:{value:{pitchbendrange:[0,0],channelfinetuning:[0,1],channelcoarsetuning:[0,2],tuningprogram:[0,3],tuningbank:[0,4],modulationrange:[0,5],azimuthangle:[61,0],elevationangle:[61,1],gain:[61,2],distanceratio:[61,3],maximumdistance:[61,4],maximumdistancegain:[61,5],referencedistanceratio:[61,6],panspreadangle:[61,7],rollangle:[61,8]},writable:!1,enumerable:!0,configurable:!1},MIDI_CONTROL_CHANGE_MESSAGES:{value:{bankselectcoarse:0,modulationwheelcoarse:1,breathcontrollercoarse:2,footcontrollercoarse:4,portamentotimecoarse:5,dataentrycoarse:6,volumecoarse:7,balancecoarse:8,pancoarse:10,expressioncoarse:11,effectcontrol1coarse:12,effectcontrol2coarse:13,generalpurposeslider1:16,generalpurposeslider2:17,generalpurposeslider3:18,generalpurposeslider4:19,bankselectfine:32,modulationwheelfine:33,breathcontrollerfine:34,footcontrollerfine:36,portamentotimefine:37,dataentryfine:38,volumefine:39,balancefine:40,panfine:42,expressionfine:43,effectcontrol1fine:44,effectcontrol2fine:45,holdpedal:64,portamento:65,sustenutopedal:66,softpedal:67,legatopedal:68,hold2pedal:69,soundvariation:70,resonance:71,soundreleasetime:72,soundattacktime:73,brightness:74,soundcontrol6:75,soundcontrol7:76,soundcontrol8:77,soundcontrol9:78,soundcontrol10:79,generalpurposebutton1:80,generalpurposebutton2:81,generalpurposebutton3:82,generalpurposebutton4:83,reverblevel:91,tremololevel:92,choruslevel:93,celestelevel:94,phaserlevel:95,databuttonincrement:96,databuttondecrement:97,nonregisteredparametercoarse:98,nonregisteredparameterfine:99,registeredparametercoarse:100,registeredparameterfine:101},writable:!1,enumerable:!0,configurable:!1},MIDI_NRPN_MESSAGES:{value:{entrymsb:6,entrylsb:38,increment:96,decrement:97,paramlsb:98,parammsb:99,nullactiveparameter:127},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MODE_MESSAGES:{value:{allsoundoff:120,resetallcontrollers:121,localcontrol:122,allnotesoff:123,omnimodeoff:124,omnimodeon:125,monomodeon:126,polymodeon:127},writable:!1,enumerable:!0,configurable:!1},octaveOffset:{value:0,writable:!0,enumerable:!0,configurable:!1}}),Object.defineProperties(this,{supported:{enumerable:!0,get:function(){return"requestMIDIAccess"in navigator}},enabled:{enumerable:!0,get:function(){return this.interface!==void 0}.bind(this)},inputs:{enumerable:!0,get:function(){return this._inputs}.bind(this)},outputs:{enumerable:!0,get:function(){return this._outputs}.bind(this)},sysexEnabled:{enumerable:!0,get:function(){return!(!this.interface||!this.interface.sysexEnabled)}.bind(this)},nrpnEventsEnabled:{enumerable:!0,get:function(){return!!this._nrpnEventsEnabled}.bind(this),set:function(_){return this._nrpnEventsEnabled=_,this._nrpnEventsEnabled}},nrpnTypes:{enumerable:!0,get:function(){return this._nrpnTypes}.bind(this)},time:{enumerable:!0,get:function(){return performance.now()}}})}var o=new s;function c(_){var b=this;this._userHandlers={channel:{},system:{}},this._midiInput=_,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return b._midiInput.connection}},id:{enumerable:!0,get:function(){return b._midiInput.id}},manufacturer:{enumerable:!0,get:function(){return b._midiInput.manufacturer}},name:{enumerable:!0,get:function(){return b._midiInput.name}},state:{enumerable:!0,get:function(){return b._midiInput.state}},type:{enumerable:!0,get:function(){return b._midiInput.type}}}),this._initializeUserHandlers(),this._midiInput.onmidimessage=this._onMidiMessage.bind(this)}function d(_){var b=this;this._midiOutput=_,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return b._midiOutput.connection}},id:{enumerable:!0,get:function(){return b._midiOutput.id}},manufacturer:{enumerable:!0,get:function(){return b._midiOutput.manufacturer}},name:{enumerable:!0,get:function(){return b._midiOutput.name}},state:{enumerable:!0,get:function(){return b._midiOutput.state}},type:{enumerable:!0,get:function(){return b._midiOutput.type}}})}s.prototype.enable=function(_,b){this.enabled||(this.supported?navigator.requestMIDIAccess({sysex:b}).then(function(k){var $,j=[],_e=[];this.interface=k,this._resetInterfaceUserHandlers(),this.interface.onstatechange=function(st){j.push(st)};for(var et=k.inputs.values(),tt=et.next();tt&&!tt.done;tt=et.next())_e.push(tt.value.open());for(var nt=k.outputs.values(),it=nt.next();it&&!it.done;it=nt.next())_e.push(it.value.open());function rt(){clearTimeout($),this._updateInputsAndOutputs(),this.interface.onstatechange=this._onInterfaceStateChange.bind(this),typeof _=="function"&&_.call(this),j.forEach(function(st){this._onInterfaceStateChange(st)}.bind(this))}$=setTimeout(rt.bind(this),200),Promise&&Promise.all(_e).catch(function(st){}).then(rt.bind(this))}.bind(this),function(k){typeof _=="function"&&_.call(this,k)}.bind(this)):typeof _=="function"&&_(new Error("The Web MIDI API is not supported by your browser.")))},s.prototype.disable=function(){if(!this.supported)throw new Error("The Web MIDI API is not supported by your browser.");this.enabled&&(this.removeListener(),this.inputs.forEach(function(_){_.removeListener()})),this.interface&&(this.interface.onstatechange=void 0),this.interface=void 0,this._inputs=[],this._outputs=[],this._nrpnEventsEnabled=!0,this._resetInterfaceUserHandlers()},s.prototype.addListener=function(_,b){if(!this.enabled)throw new Error("WebMidi must be enabled before adding event listeners.");if(typeof b!="function")throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(_)))throw new TypeError("The specified event type is not supported.");return this._userHandlers[_].push(b),this},s.prototype.hasListener=function(_,b){if(!this.enabled)throw new Error("WebMidi must be enabled before checking event listeners.");if(typeof b!="function")throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(_)))throw new TypeError("The specified event type is not supported.");for(var k=0;k>4,j=15&_.data[0],_e=1+j;if(1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0),o.nrpnEventsEnabled&&$===o.MIDI_CHANNEL_MESSAGES.controlchange&&(b>=o.MIDI_NRPN_MESSAGES.increment&&b<=o.MIDI_NRPN_MESSAGES.parammsb||b===o.MIDI_NRPN_MESSAGES.entrymsb||b===o.MIDI_NRPN_MESSAGES.entrylsb)){var et={target:this,type:"controlchange",data:_.data,timestamp:_.timeStamp,channel:_e,controller:{number:b,name:this.getCcNameByNumber(b)},value:k};if(et.controller.number===o.MIDI_NRPN_MESSAGES.parammsb&&et.value!=o.MIDI_NRPN_MESSAGES.nullactiveparameter)o._nrpnBuffer[j]=[],o._nrpnBuffer[j][0]=et;else if(o._nrpnBuffer[j].length===1&&et.controller.number===o.MIDI_NRPN_MESSAGES.paramlsb)o._nrpnBuffer[j].push(et);else if(o._nrpnBuffer[j].length!==2||et.controller.number!==o.MIDI_NRPN_MESSAGES.increment&&et.controller.number!==o.MIDI_NRPN_MESSAGES.decrement&&et.controller.number!==o.MIDI_NRPN_MESSAGES.entrymsb)if(o._nrpnBuffer[j].length===3&&o._nrpnBuffer[j][2].number===o.MIDI_NRPN_MESSAGES.entrymsb&&et.controller.number===o.MIDI_NRPN_MESSAGES.entrylsb)o._nrpnBuffer[j].push(et);else if(3<=o._nrpnBuffer[j].length&&o._nrpnBuffer[j].length<=4&&et.controller.number===o.MIDI_NRPN_MESSAGES.parammsb&&et.value===o.MIDI_NRPN_MESSAGES.nullactiveparameter)o._nrpnBuffer[j].push(et);else if(4<=o._nrpnBuffer[j].length&&o._nrpnBuffer[j].length<=5&&et.controller.number===o.MIDI_NRPN_MESSAGES.paramlsb&&et.value===o.MIDI_NRPN_MESSAGES.nullactiveparameter){o._nrpnBuffer[j].push(et);var tt=[];o._nrpnBuffer[j].forEach(function(ot){tt.push(ot.data)});var nt=o._nrpnBuffer[j][0].value<<7|o._nrpnBuffer[j][1].value,it=o._nrpnBuffer[j][2].value;o._nrpnBuffer[j].length===6&&(it=o._nrpnBuffer[j][2].value<<7|o._nrpnBuffer[j][3].value);var rt="";switch(o._nrpnBuffer[j][2].controller.number){case o.MIDI_NRPN_MESSAGES.entrymsb:rt=o._nrpnTypes[0];break;case o.MIDI_NRPN_MESSAGES.increment:rt=o._nrpnTypes[1];break;case o.MIDI_NRPN_MESSAGES.decrement:rt=o._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var st={timestamp:et.timestamp,channel:et.channel,type:"nrpn",data:tt,controller:{number:nt,type:rt,name:"Non-Registered Parameter "+nt},value:it};o._nrpnBuffer[j]=[],this._userHandlers.channel[st.type]&&this._userHandlers.channel[st.type][st.channel]&&this._userHandlers.channel[st.type][st.channel].forEach(function(ot){ot(st)})}else o._nrpnBuffer[j]=[];else o._nrpnBuffer[j].push(et)}},c.prototype._parseChannelEvent=function(_){var b,k,$=_.data[0]>>4,j=1+(15&_.data[0]);1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0);var _e={target:this,data:_.data,timestamp:_.timeStamp,channel:j};$===o.MIDI_CHANNEL_MESSAGES.noteoff||$===o.MIDI_CHANNEL_MESSAGES.noteon&&k===0?(_e.type="noteoff",_e.note={number:b,name:o._notes[b%12],octave:o.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===o.MIDI_CHANNEL_MESSAGES.noteon?(_e.type="noteon",_e.note={number:b,name:o._notes[b%12],octave:o.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===o.MIDI_CHANNEL_MESSAGES.keyaftertouch?(_e.type="keyaftertouch",_e.note={number:b,name:o._notes[b%12],octave:o.getOctave(b)},_e.value=k/127):$===o.MIDI_CHANNEL_MESSAGES.controlchange&&0<=b&&b<=119?(_e.type="controlchange",_e.controller={number:b,name:this.getCcNameByNumber(b)},_e.value=k):$===o.MIDI_CHANNEL_MESSAGES.channelmode&&120<=b&&b<=127?(_e.type="channelmode",_e.controller={number:b,name:this.getChannelModeByNumber(b)},_e.value=k):$===o.MIDI_CHANNEL_MESSAGES.programchange?(_e.type="programchange",_e.value=b):$===o.MIDI_CHANNEL_MESSAGES.channelaftertouch?(_e.type="channelaftertouch",_e.value=b/127):$===o.MIDI_CHANNEL_MESSAGES.pitchbend?(_e.type="pitchbend",_e.value=((k<<7)+b-8192)/8192):_e.type="unknownchannelmessage",this._userHandlers.channel[_e.type]&&this._userHandlers.channel[_e.type][j]&&this._userHandlers.channel[_e.type][j].forEach(function(et){et(_e)})},c.prototype.getCcNameByNumber=function(_){if(!(0<=(_=Math.floor(_))&&_<=119))throw new RangeError("The control change number must be between 0 and 119.");for(var b in o.MIDI_CONTROL_CHANGE_MESSAGES)if(Object.prototype.hasOwnProperty.call(o.MIDI_CONTROL_CHANGE_MESSAGES,b)&&_===o.MIDI_CONTROL_CHANGE_MESSAGES[b])return b},c.prototype.getChannelModeByNumber=function(_){if(!(120<=(_=Math.floor(_))&&status<=127))throw new RangeError("The control change number must be between 120 and 127.");for(var b in o.MIDI_CHANNEL_MODE_MESSAGES)if(Object.prototype.hasOwnProperty.call(o.MIDI_CHANNEL_MODE_MESSAGES,b)&&_===o.MIDI_CHANNEL_MODE_MESSAGES[b])return b},c.prototype._parseSystemEvent=function(_){var b=_.data[0],k={target:this,data:_.data,timestamp:_.timeStamp};b===o.MIDI_SYSTEM_MESSAGES.sysex?k.type="sysex":b===o.MIDI_SYSTEM_MESSAGES.timecode?k.type="timecode":b===o.MIDI_SYSTEM_MESSAGES.songposition?k.type="songposition":b===o.MIDI_SYSTEM_MESSAGES.songselect?(k.type="songselect",k.song=_.data[1]):b===o.MIDI_SYSTEM_MESSAGES.tuningrequest?k.type="tuningrequest":b===o.MIDI_SYSTEM_MESSAGES.clock?k.type="clock":b===o.MIDI_SYSTEM_MESSAGES.start?k.type="start":b===o.MIDI_SYSTEM_MESSAGES.continue?k.type="continue":b===o.MIDI_SYSTEM_MESSAGES.stop?k.type="stop":b===o.MIDI_SYSTEM_MESSAGES.activesensing?k.type="activesensing":b===o.MIDI_SYSTEM_MESSAGES.reset?k.type="reset":k.type="unknownsystemmessage",this._userHandlers.system[k.type]&&this._userHandlers.system[k.type].forEach(function($){$(k)})},d.prototype.send=function(_,b,k){if(!(128<=_&&_<=255))throw new RangeError("The status byte must be an integer between 128 (0x80) and 255 (0xFF).");b===void 0&&(b=[]),Array.isArray(b)||(b=[b]);var $=[];return b.forEach(function(j){var _e=Math.floor(j);if(!(0<=_e&&_e<=255))throw new RangeError("Data bytes must be integers between 0 (0x00) and 255 (0xFF).");$.push(_e)}),this._midiOutput.send([_].concat($),parseFloat(k)||0),this},d.prototype.sendSysex=function(_,b,k){if(!o.sysexEnabled)throw new Error("Sysex message support must first be activated.");return k=k||{},_=[].concat(_),b.forEach(function($){if($<0||127<$)throw new RangeError("The data bytes of a sysex message must be integers between 0 (0x00) and 127 (0x7F).")}),b=_.concat(b,o.MIDI_SYSTEM_MESSAGES.sysexend),this.send(o.MIDI_SYSTEM_MESSAGES.sysex,b,this._parseTimeParameter(k.time)),this},d.prototype.sendTimecodeQuarterFrame=function(_,b){return b=b||{},this.send(o.MIDI_SYSTEM_MESSAGES.timecode,_,this._parseTimeParameter(b.time)),this},d.prototype.sendSongPosition=function(_,b){b=b||{};var k=(_=Math.floor(_)||0)>>7&127,$=127&_;return this.send(o.MIDI_SYSTEM_MESSAGES.songposition,[k,$],this._parseTimeParameter(b.time)),this},d.prototype.sendSongSelect=function(_,b){if(b=b||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(o.MIDI_SYSTEM_MESSAGES.songselect,[_],this._parseTimeParameter(b.time)),this},d.prototype.sendTuningRequest=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendClock=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStart=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendContinue=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStop=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendActiveSensing=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(_.time)),this},d.prototype.sendReset=function(_){return _=_||{},this.send(o.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(_.time)),this},d.prototype.stopNote=function(_,b,k){if(_==="all")return this.sendChannelMode("allnotesoff",0,b,k);var $=64;return(k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&($=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&($=127*k.velocity),this._convertNoteToArray(_).forEach(function(j){o.toMIDIChannels(b).forEach(function(_e){this.send((o.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(_e-1),[j,Math.round($)],this._parseTimeParameter(k.time))}.bind(this))}.bind(this)),this},d.prototype.playNote=function(_,b,k){var $,j=64;if((k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&(j=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&(j=127*k.velocity),$=this._parseTimeParameter(k.time),this._convertNoteToArray(_).forEach(function(et){o.toMIDIChannels(b).forEach(function(tt){this.send((o.MIDI_CHANNEL_MESSAGES.noteon<<4)+(tt-1),[et,Math.round(j)],$)}.bind(this))}.bind(this)),!isNaN(k.duration)){k.duration<=0&&(k.duration=0);var _e=64;k.rawVelocity?!isNaN(k.release)&&0<=k.release&&k.release<=127&&(_e=k.release):!isNaN(k.release)&&0<=k.release&&k.release<=1&&(_e=127*k.release),this._convertNoteToArray(_).forEach(function(et){o.toMIDIChannels(b).forEach(function(tt){this.send((o.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(tt-1),[et,Math.round(_e)],($||o.time)+k.duration)}.bind(this))}.bind(this))}return this},d.prototype.sendKeyAftertouch=function(_,b,k,$){var j=this;if($=$||{},b<1||16>7&127,tt=127&_e;return o.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("channelcoarsetuning",j,b,{time:k.time}),$.setRegisteredParameter("channelfinetuning",[et,tt],b,{time:k.time})}),this},d.prototype.setTuningProgram=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The program value must be between 0 and 127");return o.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningprogram",_,b,{time:k.time})}),this},d.prototype.setTuningBank=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_)||0)&&_<=127))throw new RangeError("The bank value must be between 0 and 127");return o.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningbank",_,b,{time:k.time})}),this},d.prototype.sendChannelMode=function(_,b,k,$){if($=$||{},typeof _=="string"){if(!(_=o.MIDI_CHANNEL_MODE_MESSAGES[_]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(_=Math.floor(_))&&_<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((b=Math.floor(b)||0)<0||127>7&127,et=127&j;return o.toMIDIChannels(b).forEach(function(tt){$.send((o.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(tt-1),[et,_e],$._parseTimeParameter(k.time))}),this},d.prototype._parseTimeParameter=function(_){var b,k=parseFloat(_);return typeof _=="string"&&_.substring(0,1)==="+"?k&&0o.time&&(b=k),b},d.prototype._convertNoteToArray=function(_){var b=[];return Array.isArray(_)||(_=[_]),_.forEach(function(k){b.push(o.guessNoteNumber(k))}),b},a.exports?a.exports=o:e.WebMidi||(e.WebMidi=o)})(commonjsGlobal)})(webmidi_min);var _WebMidi=webmidi_min.exports;const WebMidi=_WebMidi;function enableWebMidi(){return new Promise((a,e)=>{if(WebMidi.enabled){a(WebMidi);return}WebMidi.enable(s=>{s&&e(s),a(WebMidi)})})}const outputByName=a=>WebMidi.getOutputByName(a);Pattern$4.prototype.midi=function(a,e=1){var s,o,c;if(isPattern$1((s=a==null?void 0:a.constructor)==null?void 0:s.name))throw new Error(`.midi does not accept Pattern input. Make sure to pass device name with single quotes. Example: .midi('${((c=(o=WebMidi.outputs)==null?void 0:o[0])==null?void 0:c.name)||"IAC Driver Bus 1"}')`);return this._withHap(d=>{const _=(b,k)=>{var tt,nt;let $=k.value;const j=(nt=(tt=k.context)==null?void 0:tt.velocity)!=null?nt:.9;if(!isNote($))throw new Error("not a note: "+$);if(!WebMidi.enabled)throw new Error("\u{1F3B9} WebMidi is not enabled. Supported Browsers: https://caniuse.com/?search=webmidi");if(!WebMidi.outputs.length)throw new Error("\u{1F50C} No MIDI devices found. Connect a device or enable IAC Driver.");let _e;if(typeof a=="number"?_e=WebMidi.outputs[a]:typeof a=="string"?_e=outputByName(a):_e=WebMidi.outputs[0],!_e)throw new Error(`\u{1F50C} MIDI device '${a||""}' not found. Use one of ${WebMidi.outputs.map(it=>`'${it.name}'`).join(" | ")}`);const et=WebMidi.time-Tone$1.getContext().currentTime*1e3;b=b*1e3+et,_e.playNote($,e,{time:b,duration:k.duration.valueOf()*1e3-5,velocity:j})};return d.setContext(wt(_t({},d.context),{onTrigger:_}))})};const ivory="#abb2bf",stone="#7d8799",invalid="#ffffff",darkBackground="#21252b",highlightBackground="rgba(0, 0, 0, 0.5)",background="transparent",tooltipBackground="#353a42",selection="rgba(128, 203, 196, 0.5)",cursor="#ffcc00",materialPalenightTheme=EditorView.theme({"&":{color:"#ffffff",backgroundColor:background,fontSize:"15px","z-index":11},".cm-content":{caretColor:cursor,lineHeight:"22px"},".cm-line":{background:"#2C323699"},"&.cm-focused .cm-cursor":{backgroundColor:cursor,width:"3px"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:selection},".cm-panels":{backgroundColor:darkBackground,color:"#ffffff"},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:highlightBackground},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{background:"transparent",color:"#676e95",border:"none"},".cm-activeLineGutter":{backgroundColor:highlightBackground},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:tooltipBackground},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:highlightBackground,color:ivory}}},{dark:!0}),materialPalenightHighlightStyle=HighlightStyle.define([{tag:tags.keyword,color:"#c792ea"},{tag:tags.operator,color:"#89ddff"},{tag:tags.special(tags.variableName),color:"#eeffff"},{tag:tags.typeName,color:"#f07178"},{tag:tags.atom,color:"#f78c6c"},{tag:tags.number,color:"#ff5370"},{tag:tags.definition(tags.variableName),color:"#82aaff"},{tag:tags.string,color:"#c3e88d"},{tag:tags.special(tags.string),color:"#f07178"},{tag:tags.comment,color:stone},{tag:tags.variableName,color:"#f07178"},{tag:tags.tagName,color:"#ff5370"},{tag:tags.bracket,color:"#a2a1a4"},{tag:tags.meta,color:"#ffcb6b"},{tag:tags.attributeName,color:"#c792ea"},{tag:tags.propertyName,color:"#c792ea"},{tag:tags.className,color:"#decb6b"},{tag:tags.invalid,color:invalid}]),materialPalenight=[materialPalenightTheme,materialPalenightHighlightStyle],setHighlights=StateEffect.define(),highlightField=StateField.define({create(){return Decoration.none},update(a,e){try{for(let s of e.effects)s.is(setHighlights)&&(a=Decoration.set(s.value.flatMap(o=>(o.context.locations||[]).map(({start:c,end:d})=>{const _=o.context.color||"#FFCA28";let b=e.newDoc.line(c.line).from+c.column,k=e.newDoc.line(d.line).from+d.column;const $=e.newDoc.length;return b>$||k>$?void 0:Decoration.mark({attributes:{style:`outline: 1px solid ${_}`}}).range(b,k)})).filter(Boolean),!0));return a}catch{return a}},provide:a=>EditorView.decorations.from(a)});function CodeMirror({value:a,onChange:e,onViewChanged:s,onCursor:o,options:c,editorDidMount:d}){return jsx(Fragment,{children:jsx(CodeMirror$1,{onViewChange:s,style:{display:"flex",flexDirection:"column",flex:"1 0 auto"},value:a,onChange:e,extensions:[javascript(),materialPalenight,highlightField]})})}function useCycle(a){const{onEvent:e,onQuery:s,onSchedule:o,ready:c=!0,onDraw:d}=a,[_,b]=react.exports.useState(!1),k=1,$=()=>Math.floor(Tone$1.getTransport().seconds/k),j=(nt=$())=>{const it=new TimeSpan$1(nt,nt+1),rt=(s==null?void 0:s(new State$1(it)))||[];o==null||o(rt,nt);const st=it.begin.valueOf();Tone$1.getTransport().cancel(st);const ot=(nt+1)*k-.5,lt=Math.max(Tone$1.getTransport().seconds,ot)+.1;Tone$1.getTransport().schedule(()=>{j(nt+1)},lt),rt==null||rt.filter(dt=>{var ct;return dt.part.begin.equals((ct=dt.whole)==null?void 0:ct.begin)}).forEach(dt=>{Tone$1.getTransport().schedule(ct=>{e(ct,dt,Tone$1.getContext().currentTime),Tone$1.Draw.schedule(()=>{d==null||d(ct,dt)},ct)},dt.part.begin.valueOf())})};react.exports.useEffect(()=>{c&&j()},[e,o,s,d,c]);const _e=async()=>{b(!0),await Tone$1.start(),Tone$1.getTransport().start("+0.1")},et=()=>{Tone$1.getTransport().pause(),b(!1)};return{start:_e,stop:et,onEvent:e,started:_,setStarted:b,toggle:()=>_?et():_e(),query:j,activeCycle:$}}function usePostMessage(a){return react.exports.useEffect(()=>(window.addEventListener("message",a),()=>window.removeEventListener("message",a)),[a]),react.exports.useCallback(e=>window.postMessage(e,"*"),[])}let s4=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);const generateHash=a=>encodeURIComponent(btoa(a));function useRepl({tune:a,defaultSynth:e,autolink:s=!0,onEvent:o,onDraw:c}){const d=react.exports.useMemo(()=>s4(),[]),[_,b]=react.exports.useState(a),[k,$]=react.exports.useState(),[j,_e]=react.exports.useState(""),[et,tt]=react.exports.useState(),[nt,it]=react.exports.useState(!1),[rt,st]=react.exports.useState(""),[ot,lt]=react.exports.useState(),dt=react.exports.useMemo(()=>_!==k||et,[_,k,et]),ct=react.exports.useCallback(ft=>_e(mt=>mt+`${mt?` - -`:""}${ft}`),[]),ut=react.exports.useMemo(()=>{if(k&&!k.includes("strudel disable-highlighting"))return(ft,mt)=>c==null?void 0:c(ft,mt,k)},[k,c]),at=useCycle({onDraw:ut,onEvent:react.exports.useCallback((ft,mt,yt)=>{var vt;try{o==null||o(mt),(vt=mt.context.logs)!=null&&vt.length&&mt.context.logs.forEach(ct);const{onTrigger:At,velocity:St}=mt.context;if(At)At(ft,mt,yt,1,mt.wholeOrPart().begin.valueOf(),mt.duration.valueOf());else if(e){const Tt=getPlayableNoteValue(mt);e.triggerAttackRelease(Tt,mt.duration.valueOf(),ft,St)}else throw new Error("no defaultSynth passed to useRepl.")}catch(At){console.warn(At),At.message="unplayable event: "+(At==null?void 0:At.message),ct(At.message)}},[o,ct,e]),onQuery:react.exports.useCallback(ft=>{try{return(ot==null?void 0:ot.query(ft))||[]}catch(mt){return console.warn(mt),mt.message="query error: "+mt.message,tt(mt),[]}},[ot]),onSchedule:react.exports.useCallback((ft,mt)=>Et(ft,mt),[]),ready:!!ot&&!!k}),ht=usePostMessage(({data:{from:ft,type:mt}})=>{mt==="start"&&ft!==d&&(at.setStarted(!1),$(void 0))}),pt=react.exports.useCallback(async(ft=_)=>{if(k&&!dt){tt(void 0),at.start();return}try{it(!0);const mt=await evaluate(ft);at.start(),ht({type:"start",from:d}),lt(()=>mt.pattern),s&&(window.location.hash="#"+encodeURIComponent(btoa(_))),st(generateHash(_)),tt(void 0),$(ft),it(!1)}catch(mt){mt.message="evaluation error: "+mt.message,console.warn(mt),tt(mt)}},[k,dt,_,at,s,d,ht]),Et=(ft,mt)=>{ft.length};return{pending:nt,code:_,setCode:b,pattern:ot,error:et,cycle:at,setPattern:lt,dirty:dt,log:j,togglePlay:()=>{at.started?at.stop():pt()},setActiveCode:$,activateCode:pt,activeCode:k,pushLog:ct,hash:rt}}function cx(...a){return a.filter(Boolean).join(" ")}let highlights=[],lastEnd;function useHighlighting({view:a,pattern:e,active:s}){react.exports.useEffect(()=>{if(a)if(e&&s){let c=function(){try{const d=Tone$1.getTransport().seconds,b=[Math.max(lastEnd||d,d-1/10),d+1/60];lastEnd=d+1/60,highlights=highlights.filter($=>$.whole.end>d);const k=e.queryArc(...b).filter($=>$.hasOnset());highlights=highlights.concat(k),a.dispatch({effects:setHighlights.of(highlights)})}catch{a.dispatch({effects:setHighlights.of([])})}o=requestAnimationFrame(c)},o=requestAnimationFrame(c);return()=>{cancelAnimationFrame(o)}}else highlights=[],a.dispatch({effects:setHighlights.of([])})},[e,s,a])}function useWebMidi(a){const{ready:e,connected:s,disconnected:o}=a,[c,d]=react.exports.useState(!0),[_,b]=react.exports.useState((WebMidi==null?void 0:WebMidi.outputs)||[]);return react.exports.useEffect(()=>{enableWebMidi().then(()=>{WebMidi.addListener("connected",$=>{b([...WebMidi.outputs]),s==null||s(WebMidi,$)}),WebMidi.addListener("disconnected",$=>{b([...WebMidi.outputs]),o==null||o(WebMidi,$)}),e==null||e(WebMidi),d(!1)}).catch($=>{if($){console.error($),console.warn("Web Midi could not be enabled..");return}})},[e,s,o,_]),{loading:c,outputs:_,outputByName:$=>WebMidi.getOutputByName($)}}var App$1="",logo="/assets/logo.1efda363.svg";const timeCatMini=`stack( - "c3@3 [eb3, g3, [c4 d4]/2]", - "c2 g2", - "[eb4@5 [f4 eb4 d4]@3] [eb4 c4]/2".slow(8) -)`,timeCat=`stack( - timeCat([3, c3], [1, stack(eb3, g3, seq(c4, d4).slow(2))]), - seq(c2, g2), - seq( - timeCat([5, eb4], [3, seq(f4, eb4, d4)]), - seq(eb4, c4).slow(2) - ).slow(4) -)`,shapeShifted=`stack( - seq( - e5, [b4, c5], d5, [c5, b4], - a4, [a4, c5], e5, [d5, c5], - b4, [r, c5], d5, e5, - c5, a4, a4, r, - [r, d5], [r, f5], a5, [g5, f5], - e5, [r, c5], e5, [d5, c5], - b4, [b4, c5], d5, e5, - c5, a4, a4, r, - ).rev(), - seq( - e2, e3, e2, e3, e2, e3, e2, e3, - a2, a3, a2, a3, a2, a3, a2, a3, - gs2, gs3, gs2, gs3, e2, e3, e2, e3, - a2, a3, a2, a3, a2, a3, b1, c2, - d2, d3, d2, d3, d2, d3, d2, d3, - c2, c3, c2, c3, c2, c3, c2, c3, - b1, b2, b1, b2, e2, e3, e2, e3, - a1, a2, a1, a2, a1, a2, a1, a2, - ).rev() -).slow(16)`,tetrisMini=`\`[[e5 [b4 c5] d5 [c5 b4]] -[a4 [a4 c5] e5 [d5 c5]] -[b4 [~ c5] d5 e5] -[c5 a4 a4 ~] -[[~ d5] [~ f5] a5 [g5 f5]] -[e5 [~ c5] e5 [d5 c5]] -[b4 [b4 c5] d5 e5] -[c5 a4 a4 ~]], -[[e2 e3]*4] -[[a2 a3]*4] -[[g#2 g#3]*2 [e2 e3]*2] -[a2 a3 a2 a3 a2 a3 b1 c2] -[[d2 d3]*4] -[[c2 c3]*4] -[[b1 b2]*2 [e2 e3]*2] -[[a1 a2]*4]\`.slow(16) -`,whirlyStrudel=`seq(e4, [b2, b3], c4) -.every(4, fast(2)) -.every(3, slow(1.5)) -.fast(cat(1.25, 1, 1.5)) -.every(2, _ => seq(e4, r, e3, d4, r))`,swimming=`stack( - seq( - "~", - "~", - "~", - "A5 [F5@2 C5] [D5@2 F5] F5", - "[C5@2 F5] [F5@2 C6] A5 G5", - "A5 [F5@2 C5] [D5@2 F5] F5", - "[C5@2 F5] [Bb5 A5 G5] F5@2", - "A5 [F5@2 C5] [D5@2 F5] F5", - "[C5@2 F5] [F5@2 C6] A5 G5", - "A5 [F5@2 C5] [D5@2 F5] F5", - "[C5@2 F5] [Bb5 A5 G5] F5@2", - "A5 [F5@2 C5] A5 F5", - "Ab5 [F5@2 Ab5] G5@2", - "A5 [F5@2 C5] A5 F5", - "Ab5 [F5@2 C5] C6@2", - "A5 [F5@2 C5] [D5@2 F5] F5", - "[C5@2 F5] [Bb5 A5 G5] F5@2" - ), - seq( - "[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]", - "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]", - "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", - "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", - "[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]", - "[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", - "[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]", - "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", - "[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]", - "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", - "[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]", - "[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]", - "[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]", - "[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]", - "[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]", - "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", - "[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]" - ), - seq( - "[G3 G3 C3 E3]", - "[F2 D2 G2 C2]", - "[F2 D2 G2 C2]", - "[F2 A2 Bb2 B2]", - "[A2 Ab2 G2 C2]", - "[F2 A2 Bb2 B2]", - "[G2 C2 F2 F2]", - "[F2 A2 Bb2 B2]", - "[A2 Ab2 G2 C2]", - "[F2 A2 Bb2 B2]", - "[G2 C2 F2 F2]", - "[Bb2 Bb2 A2 A2]", - "[Ab2 Ab2 G2 [C2 D2 E2]]", - "[Bb2 Bb2 A2 A2]", - "[Ab2 Ab2 G2 [C2 D2 E2]]", - "[F2 A2 Bb2 B2]", - "[G2 C2 F2 F2]" - ) -).slow(51); -`,giantSteps=`stack( - // melody - seq( - "[F#5 D5] [B4 G4] Bb4 [B4 A4]", - "[D5 Bb4] [G4 Eb4] F#4 [G4 F4]", - "Bb4 [B4 A4] D5 [D#5 C#5]", - "F#5 [G5 F5] Bb5 [F#5 F#5]", - ), - // chords - seq( - "[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]", - "[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]", - "Eb^7 [Am7 D7] G^7 [C#m7 F#7]", - "B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]" - ).voicings(['E3', 'G4']), - // bass - seq( - "[B2 D2] [G2 Bb2] [Eb2 Bb3] [A2 D2]", - "[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]", - "[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]", - "[B2 F#2] [F2 Bb2] [Eb2 Bb3] [C#2 F#2]" - ) -).slow(20)`,giantStepsReggae=`stack( - // melody - seq( - "[F#5 D5] [B4 G4] Bb4 [B4 A4]", - "[D5 Bb4] [G4 Eb4] F#4 [G4 F4]", - "Bb4 [B4 A4] D5 [D#5 C#5]", - "F#5 [G5 F5] Bb5 [F#5 [F#5 ~@3]]", - ), - // chords - seq( - "[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]", - "[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]", - "Eb^7 [Am7 D7] G^7 [C#m7 F#7]", - "B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]" - ) - .struct("~ [x ~]".fast(4*8)) - .voicings(['E3', 'G4']), - // bass - seq( - "[B2 D2] [G2 D2] [Eb2 Bb2] [A2 D2]", - "[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]", - "[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]", - "[B2 F#2] [F2 Bb2] [Eb2 Bb2] [C#2 F#2]" - ) - .struct("x ~".fast(4*8)) -).slow(25)`,transposedChordsHacked=`stack( - "c2 eb2 g2", - "Cm7".voicings(['g2','c4']).slow(2) -).transpose( - "<1 2 3 2>".slow(2) -).transpose(5)`,scaleTranspose=`"f2,f3,c4,ab4" -.scale(seq('F minor', 'F harmonic minor').slow(4)) -.scaleTranspose("<0 -1 -2 -3>") -.transpose("0 1".slow(16))`,struct=`stack( - "c2 g2 a2 [e2@2 eb2] d2 a2 g2 [d2 ~ db2]", - "[C^7 A7] [Dm7 G7]".struct("[x@2 x] [~@2 x] [~ x@2]@2 [x ~@2] ~ [~@2 x@4]@2") - .voicings(['G3','A4']) -).slow(4)`,magicSofa=`stack( - " " - .every(2, fast(2)) - .voicings(), - " " -).transpose("<0 2 3 4>")`,confusedPhone=`"[g2 ~@1.3] [c3 ~@1.3]" -.superimpose( - transpose(-12).late(0), - transpose(7).late(0.1), - transpose(10).late(0.2), - transpose(12).late(0.3), - transpose(24).late(0.4) -) -.scale(cat('C dorian', 'C mixolydian')) -.scaleTranspose("<0 1 2 1>") -.slow(2)`,zeldasRescue=`stack( - // melody - \`[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] - [B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3] - [B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] - [B3@2 D4] [A4@2 G4] D5@2 - [D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2] - [D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]\`, - // bass - \`[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2] - [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2] - [[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2] - [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2] - [[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2] - [[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]\` -).transpose(12).slow(48).tone( - new PolySynth().chain( - new Gain(0.3), - new Chorus(2, 2.5, 0.5).start(), - new Freeverb(), - getDestination()) -)`,technoDrums=`stack( - "c1*2".tone(new MembraneSynth().toDestination()), - "~ x".tone(new NoiseSynth().toDestination()), - "[~ c4]*2".tone(new MetalSynth().set({envelope:{decay:0.06,sustain:0}}).chain(new Gain(0.5),getDestination())) -)`,caverave=`const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out()); -const kick = new MembraneSynth().chain(vol(.8), out()); -const snare = new NoiseSynth().chain(vol(.8), out()); -const hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out()); -const bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out()); -const keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out()); - -const drums = stack( - "c1*2".tone(kick).mask("/8"), - "~ ".tone(snare).mask("/4"), - "[~ c4]*2".tone(hihat) -); - -const thru = (x) => x.transpose("<0 1>/8").transpose(-1); -const synths = stack( - "/2".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct("[~ x]*2") - .edit( - scaleTranspose(0).early(0), - scaleTranspose(2).early(1/8), - scaleTranspose(7).early(1/4), - scaleTranspose(8).early(3/8) - ).apply(thru).tone(keys).mask("<~ x>/16"), - "/2".struct("[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2".fast(2)).apply(thru).tone(bass), - "/2".struct("~ [x@0.1 ~]".fast(2)).voicings().apply(thru).every(2, early(1/8)).tone(keys).mask("/8".early(1/4)) -) -stack( - drums.fast(2), - synths -).slow(2)`,callcenterhero=`const bpm = 90; -const lead = polysynth().set({...osc('sine4'),...adsr(.004)}).chain(vol(0.15),out()) -const bass = fmsynth({...osc('sawtooth6'),...adsr(0.05,.6,0.8,0.1)}).chain(vol(0.6), out()); -const s = scale(cat('F3 minor', 'Ab3 major', 'Bb3 dorian', 'C4 phrygian dominant').slow(4)); -stack( - "0 2".struct(" [x ~]").apply(s).scaleTranspose(stack(0,2)).tone(lead), - "<6 7 9 7>".struct("[~ [x ~]*2]*2").apply(s).scaleTranspose("[0,2] [2,4]".fast(2).every(4,rev)).tone(lead), - "-14".struct("[~ x@0.8]*2".early(0.01)).apply(s).tone(bass), - "c2*2".tone(membrane().chain(vol(0.6), out())), - "~ c2".tone(noise().chain(vol(0.2), out())), - "c4*4".tone(metal(adsr(0,.05,0)).chain(vol(0.03), out())) -) -.slow(120 / bpm)`,primalEnemy=`const f = fast("<1 <2 [4 8]>>"); -stack( - "c3,g3,c4".struct("[x ~]*2").apply(f).transpose("<0 <3 [5 [7 [9 [11 13]]]]>>"), - "c2 [c2 ~]*2".tone(synth(osc('sawtooth8')).chain(vol(0.8),out())), - "c1*2".tone(membrane().chain(vol(0.8),out())) -).slow(1)`,synthDrums=`stack( - "c1*2".tone(membrane().chain(vol(0.8),out())), - "~ c3".tone(noise().chain(vol(0.8),out())), - "c3*4".transpose("[-24 0]*2").tone(metal(adsr(0,.015)).chain(vol(0.8),out())) -) -`,sampleDrums=`const drums = await players({ - bd: 'bd/BT0A0D0.wav', - sn: 'sn/ST0T0S3.wav', - hh: 'hh/000_hh3closedhh.wav' -}, 'https://loophole-letters.vercel.app/samples/tidal/') - -stack( - "", - "hh*4", - "~ " -).tone(drums.chain(out())) -`,xylophoneCalling=`const t = x => x.scaleTranspose("<0 2 4 3>/4").transpose(-2) -const s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4)) -const delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out()); -const chorus = new Chorus(1,2.5,0.5).start(); -stack( - // melody - "<<10 7> <8 3>>/4".struct("x*3").apply(s) - .scaleTranspose("<0 3 2> <1 4 3>") - .superimpose(scaleTranspose(2).early(1/8)) - .apply(t).tone(polysynth().set({ - ...osc('triangle4'), - ...adsr(0,.08,0) - }).chain(vol(0.2).connect(delay),chorus,out())).mask("<~@3 x>/16".early(1/8)), - // pad - "[1,3]/4".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({ - ...osc('square2'), - ...adsr(0.1,.4,0.8) - }).chain(vol(0.2),chorus,out())).mask("<~ x>/32"), - // xylophone - "c3,g3,c4".struct("").fast("<1 <2!3 [4 8]>>").apply(s).scaleTranspose("<0 <1 [2 [3 <4 5>]]>>").apply(t).tone(polysynth().set({ - ...osc('sawtooth4'), - ...adsr(0,.1,0) - }).chain(vol(0.4).connect(delay),out())).mask("/16".early(1/8)), - // bass - "c2 [c2 ~]*2".scale('C hirajoshi').apply(t).tone(synth({ - ...osc('sawtooth6'), - ...adsr(0,.03,.4,.1) - }).chain(vol(0.4),out())), - // kick - "*2".tone(membrane().chain(vol(0.8),out())), - // snare - "~ ".tone(noise().chain(vol(0.8),out())), - // hihat - "c3*4".transpose("[-24 0]*2").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out())) -).slow(1) -// strudel disable-highlighting`,sowhatelse=`// mixer -const mix = (key) => vol({ - chords: .2, - lead: 0.8, - bass: .4, - snare: .95, - kick: .9, - hihat: .35, -}[key]||0); -const delay = new FeedbackDelay(1/6, .3).chain(vol(.7), out()); -const delay2 = new FeedbackDelay(1/6, .2).chain(vol(.15), out()); -const chorus = new Chorus(1,2.5,0.5).start(); -// instruments -const instr = (instrument) => ({ - organ: polysynth().set({...osc('sawtooth4'), ...adsr(.01,.2,0)}).chain(mix('chords').connect(delay),out()), - lead: polysynth().set({...osc('triangle4'),...adsr(0.01,.05,0)}).chain(mix('lead').connect(delay2), out()), - bass: polysynth().set({...osc('sawtooth8'),...adsr(.02,.05,.3,.2)}).chain(mix('bass'),lowpass(3000), out()), - pad: polysynth().set({...osc('square2'),...adsr(0.1,.4,0.8)}).chain(vol(0.15),chorus,out()), - hihat: metal(adsr(0, .02, 0)).chain(mix('hihat'), out()), - snare: noise(adsr(0, .15, 0.01)).chain(mix('snare'), lowpass(5000), out()), - kick: membrane().chain(mix('kick'), out()) -}[instrument]); -// harmony -const t = transpose("<0 0 1 0>/8"); -const sowhat = scaleTranspose("0,3,6,9,11"); -// track -stack( - "[<0 4 [3 [2 1]]>]/4".struct("[x]*3").mask("[~ x ~]").scale('D5 dorian').off(1/6, scaleTranspose(-7)).off(1/3, scaleTranspose(-5)).apply(t).tone(instr('lead')).mask("<~ ~ x x>/8"), - "< <[d3 ~] [c3 f3] g3>>".scale('D dorian').apply(sowhat).apply(t).tone(instr('organ')).mask("/8"), - "<[d2 [d2 ~]*3]!3 >".apply(t).tone(instr('bass')), - "c1*6".tone(instr('hihat')), - "~ c3".tone(instr('snare')), - "<[c1@5 c1] >".tone(instr('kick')), - "[2,4]/4".scale('D dorian').apply(t).tone(instr('pad')).mask("/8") -).fast(6/8) -// strudel disable-highlighting`,barryHarris=`backgroundImage( - 'https://media.npr.org/assets/img/2017/02/03/barryharris_600dpi_wide-7eb49998aa1af377d62bb098041624c0a0d1a454.jpg', - {style:'background-size:cover'}) - -"0,2,[7 6]" - .add("<0 1 2 3 4 5 7 8>") - .scale('C bebop major') - .transpose("<0 1 2 1>/8") - .slow(2) - .tone((await piano()).toDestination()) -`,blippyRhodes=`const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out()); - -const drums = await players({ - bd: 'samples/tidal/bd/BT0A0D0.wav', - sn: 'samples/tidal/sn/ST0T0S3.wav', - hh: 'samples/tidal/hh/000_hh3closedhh.wav' -}, 'https://loophole-letters.vercel.app/') - -const rhodes = await sampler({ - E1: 'samples/rhodes/MK2Md2000.mp3', - E2: 'samples/rhodes/MK2Md2012.mp3', - E3: 'samples/rhodes/MK2Md2024.mp3', - E4: 'samples/rhodes/MK2Md2036.mp3', - E5: 'samples/rhodes/MK2Md2048.mp3', - E6: 'samples/rhodes/MK2Md2060.mp3', - E7: 'samples/rhodes/MK2Md2072.mp3' -}, 'https://loophole-letters.vercel.app/') - -const bass = synth(osc('sawtooth8')).chain(vol(.5),out()) -const scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')]) - -stack( - " " - .tone(drums.chain(out())), - "]>" - .scale(scales) - .struct("x*8") - .scaleTranspose("0 [-5,-2] -7 [-9,-2]") - .legato(.3) - .slow(2) - .tone(rhodes.chain(vol(0.5).connect(delay), out())), - //"]>".slow(2).voicings().struct("~ x").legato(.25).tone(rhodes), - "" - .legato("<1@3 [.3 1]>") - .slow(2) - .tone(bass), -).fast(3/2)`,wavyKalimba=`const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out()) -let kalimba = await sampler({ - C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3' -}) -kalimba = kalimba.chain(vol(0.6).connect(delay),out()); -const scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major']) - -stack( - "[0 2 4 6 9 2 0 -2]*3" - .add("<0 2>/4") - .scale(scales) - .struct("x*8") - .velocity("<.8 .3 .6>*8") - .slow(2) - .tone(kalimba), - "" - .scale(scales) - .scaleTranspose("[0 <2 4>]*2") - .struct("x*4") - .velocity("<.8 .5>*4") - .velocity(0.8) - .slow(2) - .tone(kalimba) -) - .legato("<.4 .8 1 1.2 1.4 1.6 1.8 2>/8") - .fast(1)`,jemblung=`const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out()); -const snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out()); -const s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out()); -stack( - stack( - "0 1 4 [3!2 5]".edit( - // chords - x=>x.add("0,3").duration("0.05!3 0.02"), - // bass - x=>x.add("-8").struct("x*8").duration(0.1) - ), - // melody - "12 11*3 12 ~".duration(0.005) - ) - .add("<0 1>") - .tune("jemblung2") - //.mul(22/5).round().xen("22edo") - //.mul(12/5).round().xen("12edo") - .tone(s), - // kick - "[c2 ~]*2".duration(0.05).tone(membrane().chain(out())), - // snare - "[~ c1]*2".early(0.001).tone(snare), - // hihat - "c2*8".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())), -).slow(3)`,risingEnemy=`stack( - "2,6" - .scale('F3 dorian') - .transpose(sine2.struct("x*64").slow(4).mul(2).round()) - .fast(2) - .struct("x x*3") - .legato(".9 .3"), - "0@3 -3*3".legato(".95@3 .4").scale('F2 dorian') -) - .transpose("<0 1 2 1>/2".early(0.5)) - .transpose(5) - .fast(2 / 3) - .tone((await piano()).toDestination())`,festivalOfFingers=`const chords = ""; -stack( - chords.voicings().struct("x(3,8,-1)").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)), - chords.rootNotes(2).struct("x(4,8,-2)"), - chords.rootNotes(4) - .scale(cat('C minor','F dorian','G dorian','F# mixolydian')) - .struct("x(3,8,-2)".fast(2)) - .scaleTranspose("0 4 0 6".early(".125 .5")).layer(scaleTranspose("0,<2 [4,6] [5,7]>/4")) -).slow(2) - .velocity(sine.struct("x*8").add(3/5).mul(2/5).fast(8)) - .tone((await piano()).chain(out()))`,festivalOfFingers2=`const chords = ""; -const scales = cat('C minor','F dorian','G dorian','F# mixolydian') -stack( - chords.voicings().struct("x(3,8,-1)").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)), - chords.rootNotes(2).struct("x(4,8)"), - chords.rootNotes(4) - .scale(scales) - .struct("x(3,8,-2)".fast(2)) - .scaleTranspose("0 4 0 6".early(".125 .5")).layer(scaleTranspose("0,<2 [4,6] [5,7]>/3")) -).slow(2).transpose(-1) - .legato(cosine.struct("x*8").add(4/5).mul(4/5).fast(8)) - .velocity(sine.struct("x*8").add(3/5).mul(2/5).fast(8)) - .tone((await piano()).chain(out())).fast(3/4)`,undergroundPlumber=`backgroundImage('https://images.nintendolife.com/news/2016/08/video_exploring_the_funky_inspiration_for_the_super_mario_bros_underground_theme/large.jpg',{ className:'darken' }) - -const drums = await players({ - bd: 'bd/BT0A0D0.wav', - sn: 'sn/ST0T0S3.wav', - hh: 'hh/000_hh3closedhh.wav', - cp: 'cp/HANDCLP0.wav', -}, 'https://loophole-letters.vercel.app/samples/tidal/') -stack( -"< sn> hh".fast(4).slow(2).tone(drums.chain(vol(.5),out())), - stack( - "[c2 a1 bb1 ~] ~" - .stut(2, .6, 1/16) - .legato(.4) - .slow(2) - .tone(synth({...osc('sawtooth7'),...adsr(0,.3,0)}).chain(out())), - "[g2,[c3 eb3]]".iter(4) - .stutWith(4, 1/8, (x,n)=>x.transpose(n*12).velocity(Math.pow(.4,n))) - .legato(.1) - ) - .transpose("<0@2 5 0 7 5 0 -5>/2") - -) - .fast(2/3) - .pianoroll({minMidi:21,maxMidi:180, background:'transparent',inactive:'#3F8F90',active:'#DE3123'})`,bridgeIsOver=`const breaks = (await players({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})).chain(out()) -stack( - stack( - "c3*2 [[c3@1.4 bb2] ab2] gb2*2 <[[gb2@1.4 ab2] bb2] gb2>".legato(".5 1".fast(2)).velocity(.8), - "0 ~".scale('c4 whole tone') - .euclidLegato(3,8).slow(2).mask("x ~") - .stutWith(8, 1/16, (x,n)=>x.scaleTranspose(n).velocity(Math.pow(.7,n))) - .scaleTranspose("<0 1 2 3 4 3 2 1>") - .fast(2) - .velocity(.7) - .legato(.5) - .stut(3, .5, 1/8) - ).transpose(-1).tone((await piano()).chain(out())), - "mad".slow(2).tone(breaks) -).cpm(78).slow(4).pianoroll() -`,goodTimes=`const scale = cat('C3 dorian','Bb2 major').slow(4); -stack( - "2*4".add(12).scale(scale) - .off(1/8,x=>x.scaleTranspose("2")).fast(2) - .scaleTranspose("<0 1 2 1>").hush(), - "<0 1 2 3>(3,8,2)" - .scale(scale) - .off(1/4,x=>x.scaleTranspose("2,4")), - "<0 4>(5,8)".scale(scale).transpose(-12) -) - .velocity(".6 .7".fast(4)) - .legato("2") - .scale(scale) -.scaleTranspose("<0>".slow(4)) -.tone((await piano()).chain(out())) -//.midi() -.velocity(.8) -.transpose(5) -.slow(2) -.pianoroll({maxMidi:100,minMidi:20})`,echoPiano=`"<0 2 [4 6](3,4,1) 3*2>" -.scale('D minor') -.color('salmon') -.off(1/4, x=>x.scaleTranspose(2).color('green')) -.off(1/2, x=>x.scaleTranspose(6).color('steelblue')) -.legato(.5) -.echo(4, 1/8, .5) -.tone((await piano()).chain(out())) -.pianoroll()`,sml1=` -stack( - // melody - \`< - [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [e5 f5] [g5 a5] - [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ g6] [g6 ~] - [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [a5 g5] [c6 [e5@2 d5]] - [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ [g6@2 ~] ~@2] [g5 ~] - [~ a5] [b5 c6] [b5@2 ~@2 g5] ~ - [f5 ~] [[g5@2 f5] ~] [[e5 ~] [f5 ~]] [[f#5 ~] [g5 ~]] - [~ a5] [b5 c6] [b5@2 ~@2 g5] ~ - [eb6 d6] [~ c6] ~!2 - >\` - .legato(.95), - // sub melody - \`< - [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 - [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2 - [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 - [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2 - [~ c5]!4 [~ a4]!2 [[c4 ~] [d4 ~]] [[eb4 ~] [e4 ~]] - [~ c5]!4 [~ eb5]!2 [g4*2 [f4 ~]] [[e4 ~] [d4 ~]] - >\`, - // bass - \`< - c3!7 a3 f3!2 - e3!2 ~!4 - c3!7 a3 f3!2 - e3!2 ~!4 - f3!2 e3!2 d3!2 ~!2 - f3!2 e3!2 ab3!2 ~!2 - >\` - .legato(.5) -).fast(2) //.tone((await piano()).chain(out()))`,speakerman=`backgroundImage('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXR0rKqW3VwY%2Fmaxresdefault.jpg&f=1&nofb=1', -{ className:'darken', style:'background-size:cover'}) -stack( - "[g3,bb3,d4] [f3,a3,c4] [c3,e3,g3]@2".slow(2).late(.1), - cat( - 'Baker man', - 'is baking bread', - 'Baker man', - 'is baking bread', - 'Sagabona', - 'kunjani wena', - 'Sagabona', - 'kunjani wena', - 'The night train, is coming', - 'got to keep on running', - 'The night train, is coming', - 'got to keep on running', - ).speak("en zu en".slow(12), "<0 2 3 4 5 6>".slow(2)), -).slow(4)`,randomBells=`const delay = new FeedbackDelay(1/3, .8).chain(vol(.2), out()); -let bell = await sampler({ - C6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3' -}) -const bass = await sampler({ - d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3' -}); -bell = bell.chain(vol(0.6).connect(delay),out()); - -"0".euclidLegato(3,8) - .echo(3, 1/16, .5) - .add(rand.range(0,12)) - .velocity(rand.range(.5,1)) - .legato(rand.range(.4,3)) - .scale(cat('D minor pentatonic')).tone(bell) - .stack("".euclidLegato(6,8,1).tone(bass.toDestination())) - .slow(6) - .pianoroll({minMidi:20,maxMidi:120,background:'transparent'})`,waa=`"a4 [a3 c3] a3 c3" -.sub("<7 12>/2") -.off(1/8, add("12")) -.off(1/4, add("7")) -.legato(.5) -.slow(2) -.wave("sawtooth square") -.filter('lowpass', "<2000 1000 500>") -.out()`,waar=`"a4 [a3 c3] a3 c3".color('#F9D649') -.sub("<7 12 5 12>".slow(2)) -.off(1/4,x=>x.add(7).color("#FFFFFF #0C3AA1 #C63928")) -.off(1/8,x=>x.add(12).color('#215CB6')) -.slow(2) -.legato(sine.range(0.3, 2).slow(28)) -.wave("sawtooth square".fast(2)) -.filter('lowpass', cosine.range(500,4000).slow(16)) -.out() -.pianoroll({minMidi:20,maxMidi:120,background:'#202124'})`,hyperpop=`const lfo = cosine.slow(15); -const lfo2 = sine.slow(16); -const filter1 = x=>x.filter('lowpass', lfo2.range(300,3000)); -const filter2 = x=>x.filter('highpass', lfo.range(1000,6000)).filter('lowpass',4000) -const scales = cat('D3 major', 'G3 major').slow(8) - -const drums = await players({ - bd: '344/344757_1676145-lq.mp3', - sn: '387/387186_7255534-lq.mp3', - hh: '561/561241_12517458-lq.mp3', - hh2:'44/44944_236326-lq.mp3', - hh3: '44/44944_236326-lq.mp3', -}, 'https://freesound.org/data/previews/') - -stack( - "-7 0 -7 7".struct("x(5,8,2)").fast(2).sub(7) - .scale(scales).wave("sawtooth,square").velocity(.3).adsr(0.01,0.1,.5,0) - .apply(filter1), - "~@3 [<2 3>,<4 5>]" - .echo(8,1/16,.7) - .scale(scales) - .wave('square').velocity(.7).adsr(0.01,0.1,0).apply(filter1), - "6 5 4".add(14) - .superimpose(sub("5")) - .fast(1).euclidLegato(3,8) - .mask("<1 0@7>") - .fast(2) - .echo(32, 1/8, .9) - .scale(scales) - .wave("sawtooth") - .velocity(.2) - .adsr(.01,.5,0) - .apply(filter2) - //.echo(4,1/16,.5) -).out().stack( - stack( - "bd <~@7 [~ bd]>".fast(2), - "~ sn", - "[~ hh3]*2" - ).tone(drums.chain(vol(.18),out())).fast(2) -).slow(2) - -//.pianoroll({minMidi:20, maxMidi:160}) -// strudel disable-highlighting`,festivalOfFingers3=`"[-7*3],0,2,6,[8 7]" -.echoWith(4,1/4, (x,n)=>x - .add(n*7) - .velocity(1/(n+1)) - .legato(1/(n+1))) -.velocity(perlin.range(.5,.9).slow(8)) -.stack("[22 25]*3" - .legato(sine.range(.5,2).slow(8)) - .velocity(sine.range(.4,.8).slow(5)) - .echo(4,1/12,.5)) -.scale(cat('D dorian','G mixolydian','C dorian','F mixolydian')) -.legato(1) -.slow(2) -.tone((await piano()).toDestination()) -//.pianoroll({maxMidi:160})`,bossa=` -const scales = sequence('C minor', ['D locrian', 'G phrygian'], 'Bb2 minor', ['C locrian','F phrygian']).slow(4) -stack( - "".fast(2).struct("x ~ x@3 x ~ x ~ ~ ~ x ~ x@3".late(1/8)).early(1/8).slow(2).voicings(), - "[~ [0 ~]] 0 [~ [4 ~]] 4".sub(7).restart(scales).scale(scales).early(.25) -).tone((await piano()).toDestination()).slow(2)`;var tunes=Object.freeze(Object.defineProperty({__proto__:null,timeCatMini,timeCat,shapeShifted,tetrisMini,whirlyStrudel,swimming,giantSteps,giantStepsReggae,transposedChordsHacked,scaleTranspose,struct,magicSofa,confusedPhone,zeldasRescue,technoDrums,caverave,callcenterhero,primalEnemy,synthDrums,sampleDrums,xylophoneCalling,sowhatelse,barryHarris,blippyRhodes,wavyKalimba,jemblung,risingEnemy,festivalOfFingers,festivalOfFingers2,undergroundPlumber,bridgeIsOver,goodTimes,echoPiano,sml1,speakerman,randomBells,waa,waar,hyperpop,festivalOfFingers3,bossa},Symbol.toStringTag,{value:"Module"})),WebDirtPacked$2={exports:{}};(function(a,e){(function(s,o){a.exports=o()})(self,()=>(()=>{var s={d:($,j)=>{for(var _e in j)s.o(j,_e)&&!s.o($,_e)&&Object.defineProperty($,_e,{enumerable:!0,get:j[_e]})},o:($,j)=>Object.prototype.hasOwnProperty.call($,j),r:$=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty($,Symbol.toStringTag,{value:"Module"}),Object.defineProperty($,"__esModule",{value:!0})}},o={};function c($,j){if(this.msg=$,this.ac=j.ac,this.sampleBank=j.sampleBank,this.outputNode=j.destination,this.cutGroups=j.cutGroups,this.eventCounter=j.eventCounter,this.audioOutputs=j.audioOutputs,this.workletsAvailable=j.workletsAvailable,typeof $.buffer=="object")this.bufferContainer=$.buffer;else{if(this.sampleBank==null)return void console.log("WebDirt: there is no sample bank, cancelling event");if(typeof this.sampleBank!="object")return void console.log("WebDirt: buffer not provided by calling application + no WebDirt sample bank");if(this.msg.n=parseInt(this.msg.n),isNaN(this.msg.n)&&(this.msg.n=0),!this.sampleBank.sampleNameExists(this.msg.s))return void console.log("WebDirt: no sample named "+this.msg.s+" exists in sample map");if(!this.sampleBank.getBufferMightSucceed(this.msg.s,this.msg.n))return}if(this.when=this.msg.when,isNaN(this.when))console.log("WebDirt: 'when' is null or not a number");else if(this.nudge=parseFloat(this.msg.nudge),isNaN(this.nudge)||(this.when=this.when+this.nudge),isNaN(parseFloat(this.msg.speed))&&(this.msg.speed=1),this.msg.speed!=0)if(isNaN(parseFloat(this.msg.note))&&(this.msg.note=0),this.msg.speed=this.msg.speed*Math.pow(2,this.msg.note/12),this.msg.begin=d(this.msg.begin,0),this.msg.end=d(this.msg.end,1),this.msg.end!=this.msg.begin){if(this.msg.begin>this.msg.end&&(this.msg.speed=-1*this.msg.speed),this.msg.speed<0&&(this.msg.begin=1-this.msg.begin,this.msg.end=1-this.msg.end),this.msg.begin>this.msg.end){let ht=this.msg.begin;this.msg.begin=this.msg.end,this.msg.end=ht}var _e;if(this.source=_e=this.ac.createBufferSource(),this.source.onended=this.disconnectHandler(),this.disconnectOnEnd(this.source),this.source.playbackRate.value=Math.abs(this.msg.speed),this.prepareBuffer(),this.buffer!=null)this.source.buffer=this.buffer,this.start();else{var et=this,tt=1e3*(this.msg.when-this.ac.currentTime-.2);tt<=0&&(tt=1e3*(this.msg.when-this.ac.currentTime-.2)),tt>0&&setTimeout(function(){et.prepareBuffer(),et.buffer!=null?(et.source.buffer=et.buffer,et.start()):(console.log("WebDirt: unable to access sample "+$.s+":"+$.n+" on second attempt"),et.stopAll())},tt)}this.cut(this.msg.cut,this.msg.s),_e=this.shape(_e,this.msg.shape),_e=this.lowPassFilter(_e,this.msg.cutoff,this.msg.resonance),_e=this.highPassFilter(_e,this.msg.hcutoff,this.msg.hresonance),_e=this.bandPassFilter(_e,this.msg.bandf,this.msg.bandq),_e=this.vowel(_e,this.msg.vowel),_e=this.delay(_e,this.msg.delay,this.msg.delaytime,this.msg.delayfeedback),_e=this.loop(_e,this.msg.loop,this.msg.begin,this.msg.end,this.msg.speed),_e=this.crush(_e,this.msg.crush),_e=this.coarse(_e,this.msg.coarse),this.unit(this.msg.unit,this.msg.speed);var nt=parseFloat(this.msg.gain);isNaN(nt)&&(nt=1),nt>2&&(nt=2),nt<0&&(nt=0);var it=parseFloat(this.msg.overgain);isNaN(it)||(nt+=it),nt=Math.pow(nt,4);var rt,st,ot,lt=parseFloat($.pan);if(isNaN(lt)&&(lt=.5),this.audioOutputs==2)(lt>1||lt<0)&&(lt-=Math.floor(lt)),rt=lt,st=0,ot=1;else{var dt=(lt-=Math.floor(lt))*this.audioOutputs;(ot=(st=Math.floor(dt))+1)>=this.audioOutputs&&(ot=0),rt=dt-Math.floor(dt)}var ct=this.ac.createGain();this.disconnectOnEnd(ct);var ut=this.ac.createGain();this.disconnectOnEnd(ut),ct.gain.value=Math.cos(rt*Math.PI/2)*nt,ut.gain.value=Math.sin(rt*Math.PI/2)*nt,_e.connect(ct),_e.connect(ut),this.gain1=ct,this.gain2=ut;var at=this.ac.createChannelMerger(this.audioOutputs);this.disconnectOnEnd(at),ct.connect(at,0,st),ut.connect(at,0,ot),at.connect(this.outputNode)}else this.stopAll()}function d($,j){let _e=parseFloat($);return isNaN(_e)?j:_e>1?1:_e<0?0:_e}s.r(o),s.d(o,{WebDirt:()=>k}),c.prototype.prepareBuffer=function(){typeof this.bufferContainer=="object"?typeof this.bufferContainer.buffer=="object"&&(this.msg.speed>=0?this.buffer=this.bufferContainer.buffer:(typeof this.bufferContainer.reverseBuffer=="object"||(this.bufferContainer.reverseBuffer=this.reverseBuffer(this.ac,this.bufferContainer.buffer)),this.buffer=this.bufferContainer.reverseBuffer)):(this.msg.speed>=0?this.buffer=this.sampleBank.getBuffer(this.msg.s,this.msg.n):this.buffer=this.sampleBank.getReverseBuffer(this.msg.s,this.msg.n),this.buffer=this.accel(this.buffer,this.msg.accelerate,this.msg.speed))},c.prototype.disconnectOnEnd=function($){this.source.disconnectQueue==null&&(this.source.disconnectQueue=new Array),this.source.disconnectQueue.unshift($)},c.prototype.start=function(){let $=Math.abs(this.msg.speed),j=(this.msg.end-this.msg.begin)*this.source.buffer.duration/$,_e=this.msg.begin*this.source.buffer.duration;this.source.start(this.when,_e,j)},c.prototype.stopAll=function(){if(this.source!=null&&this.source.disconnectQueue!=null){for(var $=0;$1&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"coarse-processor");return _e.parameters.get("coarse").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.crush=function($,j){if(j=parseInt(j),isNaN(j)&&(j=null),j!=null&&j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"crush-processor");return _e.parameters.get("crush").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.cut=function($,j){if($=parseInt($),!isNaN($)&&$!=0){for(var _e={cutGroup:$,node:this,sampleName:j},et=0;et2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="highpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.lowPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="lowpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.bandPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=10),_e<1&&(_e=1),_e>100&&(_e=100);var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="bandpass",et.frequency.value=j,et.Q.value=_e,et.gain.value=_e,$.connect(et),et},c.prototype.loop=function($,j){if(isNaN(parseInt(j))||j==0)return $;try{var _e=this.source.buffer.duration-this.msg.begin*this.source.buffer.duration-(1-this.msg.end)*this.source.buffer.duration;return this.source.loop=!0,this.source.loopStart=this.msg.begin*this.source.buffer.duration,this.source.loopEnd=this.msg.end*this.source.buffer.duration,this.source.stop(this.when+_e*j/this.source.playbackRate.value),$}catch{return console.log("WebDirt Warning: buffer data not yet available to calculate loop time - no looping applied"),$}},c.prototype.accelerate=function($,j){if(j=Math.abs(j),isNaN(parseFloat($))&&($=0),$!=0){$=parseFloat($),this.source.playbackRate.setValueAtTime(j,this.when);var _e=Math.abs((this.source.buffer.length*$/this.ac.sampleRate+j)/j),et=j+this.source.buffer.length*$/this.ac.sampleRate;if(et<0)this.source.buffer=this.negativeAccelerateBuffer(this.source.buffer,$,j),this.source.playbackRate.linearRampToValueAtTime(0,this.when+_e),this.source.playbackRate.linearRampToValueAtTime(1,this.when+this.source.buffer.duration);else try{this.source.playbackRate.linearRampToValueAtTime(et,this.when+this.source.buffer.duration)}catch{console.log("WebDirt: Warning, buffer data not loaded, could not apply acclerate effect")}}},c.prototype.negativeAccelerateBuffer=function($,j,_e){var et=$.length,tt=new Float32Array(et),nt=this.ac.createBuffer($.numberOfChannels,$.length,this.ac.sampleRate),it=new Float32Array(et),rt=Math.abs(_e/(_e-j))*et;rt=et*Math.abs((this.source.buffer.length*j/this.ac.sampleRate+_e)/_e)/this.source.buffer.duration,rt=Math.trunc(rt);for(var st=0;st<$.numberOfChannels;st++){$.copyFromChannel(tt,st,0);for(var ot=0;ot=1&&(j=.999),j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"shape-processor");return _e.parameters.get("shape").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.stop=function($){this.gain1.gain.setValueAtTime(this.gain1.gain.value,$),this.gain1.gain.linearRampToValueAtTime(0,$+.02),this.gain2.gain.setValueAtTime(this.gain1.gain.value,$),this.gain2.gain.linearRampToValueAtTime(0,$+.02)},c.prototype.unit=function($,j){$=="c"&&(this.source.playbackRate.value=this.source.playbackRate.value*this.source.buffer.duration)},c.prototype.vowel=function($,j){if(typeof j!="string")return $;if((j=j.toLowerCase())=="a"||j=="e"||j=="i"||j=="o"||j=="u"){var _e,et,tt,nt=this.ac.createGain();switch(this.disconnectOnEnd(nt),j){case"a":_e=_.a.freqs,et=_.a.qs,tt=_.a.amps;break;case"e":_e=_.e.freqs,et=_.e.qs,tt=_.e.amps;break;case"i":_e=_.i.freqs,et=_.i.qs,tt=_.i.amps;break;case"o":_e=_.o.freqs,et=_.o.qs,tt=_.o.amps;break;case"u":_e=_.u.freqs,et=_.u.qs,tt=_.u.amps}for(var it=0;it<5;it++){var rt=this.ac.createGain();this.disconnectOnEnd(rt),rt.gain.value=tt[it];var st=this.ac.createBiquadFilter();this.disconnectOnEnd(st),st.type="bandpass",st.Q.value=et[it]/8,st.frequency.value=_e[it],$.connect(st),st.connect(rt),rt.connect(nt)}return nt.gain.value=8,nt}return $},c.prototype.reverseBuffer=function($,j){for(var _e=j.length,et=new Float32Array(_e),tt=$.createBuffer(j.numberOfChannels,j.length,$.sampleRate),nt=new Float32Array(_e),it=0;it{console.log("WebDirt: audio worklets added"),this.workletsAvailable=!0}).catch(j=>{console.log("WebDirt: error loading AudioWorklets.js: "+j),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1}):(console.log("WebDirt: browser does not support audio worklets"),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1),this.tempo={time:this.ac.currentTime,beats:0,bpm:30},this.clockDiff=Date.now()/1e3-this.ac.currentTime,this.sampleBank!=null&&(this.sampleBank.ac=this.ac),this.silentNote=this.ac.createOscillator(),this.silentNote.type="sine",this.silentNote.frequency.value=440,this.silentGain=this.ac.createGain(),this.silentGain.gain.value=0,this.silentNote.connect(this.silentGain),this.silentGain.connect(this.ac.destination),this.silentNote.start();var $=this;setTimeout(function(){$.silentGain.disconnect($.ac.destination),$.silentNote.disconnect($.silentGain),$.silentNote.stop(),$.silentGain=null,$.silentNote=null},500)}console.log("WebDirt: initializeWebAudio finished.")},k.prototype.playSample=function($,j){if(j==null&&(j=this.latency),$.whenPosix!=null&&($.when=$.whenPosix-(new Date().getTime()/1e3-this.ac.currentTime)),$.when==null&&($.when=this.ac.currentTime),$.when=$.when+j,typeof $.maxLateness!="number"&&($.maxLateness=this.maxLateness),this.ac.currentTime-$.when>$.maxLateness)return void console.log("WebDirt warning: dropping msg late by "+(this.ac.currentTime-$.when)+" seconds");let _e=new c($,this);return this.eventCounter++,_e},k.prototype.playScore=function($,j,_e){this.initializeWebAudio(),j==null&&(j=this.latency);for(var et=this.ac.currentTime,tt=0,nt=0;nt<$.length;nt++){var it=$[nt];it.when>tt&&(tt=it.when),it.when=it.when+et,it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.playSample(it,j)}setTimeout(function(){typeof _e=="function"&&_e()},1e3*(tt+j))},k.prototype.playScoreWhenReady=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);for(var tt=$.length,nt=0;nt<$.length;nt++){var it=$[nt],rt=this;it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.sampleBank!=null&&this.sampleBank.load(it.sample_name,it.sample_n,function(){(tt-=1)<=0&&(rt.playScore($,j,et),typeof _e=="function"&&_e())})}},k.prototype.loadAndPlayScore=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);var tt=new XMLHttpRequest;tt.open("GET",$,!0),tt.responseType="json";var nt=this;tt.onload=function(){if(tt.readyState!=4)throw Error("readyState != 4 in callback of loadAndPlayScore");if(tt.status!=200)throw Error("status != 200 in callback of loadAndPlayScore");if(tt.response==null)throw Error("JSON response null in callback of loadAndPlayScore");console.log("playing JSON score from "+$),nt.playScoreWhenReady(tt.response,j,_e,et)},tt.send()},k.prototype.renderAndPlayScore=function($,j,_e,et,tt,nt,it){this.initializeWebAudio(),tt==null&&(tt=this.latency),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt.renderAndPlayScore: attempting websocket connection to "+$);var rt=new WebSocket($);rt.onerror=function(){console.log(" ERROR opening websocket connection to "+$)},rt.onopen=function(){console.log(" websocket connection to "+$+" established");try{var ot='{"render":'+JSON.stringify(j)+',"cps":'+_e+',"cycles":'+et+"}";console.log(ot),rt.send(ot),console.log(" render request sent")}catch{console.log(" EXCEPTION during transmission of render request"),rt.close()}};var st=this;rt.onmessage=function(ot){var lt=JSON.parse(ot.data);if(!lt instanceof Array)return console.log(" WebDirt warning: rendering socket received non-array message"),console.log(typeof lt),void(globalX=lt);console.log(" received score from "+$),st.playScoreWhenReady(lt,tt,nt,it),console.log(" closing websocket connection to "+$),rt.close()}},k.prototype.subscribeToTidalSocket=function($,j){this.initializeWebAudio(),j==null&&(j=!1),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt: attempting websocket connection to "+$),ws=new WebSocket($),ws.onopen=function(){console.log("websocket connection to tidalSocket opened")},ws.onerror=function(){console.log("ERROR opening websocket connection to tidalSocket")};var _e=this;ws.onmessage=function(et){if(et.data==null)throw Error("null data in tidalSocket onmessage handler");var tt=JSON.parse(et.data);if(tt.address==null)throw Error("received message from tidalSocket with no address: "+et.data);if(tt.address!="/play")throw Error("address of message from tidalSocket wasn't /play: "+et.data);if(tt.args.constructor!==Array)throw Error("ERROR: message from tidalSocket where args doesn't exist or isn't an array: "+et.data);if(tt.args.length!=30&&tt.args.length!=33)throw Error("ERROR: message from tidalSocket with "+tt.args.length+" args instead of 30 or 33: "+et.data);var nt={};nt.when=tt.args[0]+tt.args[1]/1e6+_e.clockDiff,nt.sample_name=tt.args[3],nt.begin=tt.args[5],nt.end=tt.args[6],nt.speed=tt.args[7],nt.pan=tt.args[8],nt.vowel=tt.args[10],nt.cutoff=tt.args[11],nt.resonance=tt.args[12],nt.accelerate=tt.args[13],nt.shape=tt.args[14],nt.gain=tt.args[16],nt.cut=tt.args[17],nt.delay=tt.args[18],nt.delaytime=tt.args[19],nt.delayfeedback=tt.args[20],nt.crush=tt.args[21],nt.coarse=tt.args[22],nt.hcutoff=tt.args[23],nt.hresonance=tt.args[24],nt.bandf=tt.args[25],nt.bandq=tt.args[26],nt.unit_name=tt.args[27],nt.sample_loop=tt.args[28],nt.sample_n=tt.args[29],tt.args.length==33&&(nt.attack=tt.args[30],nt.hold=tt.args[31],nt.release=tt.args[32]),_e.playSample(nt),j&&console.log(tt)}},k.prototype.getCurrentTime=function(){return this.ac.currentTime},k.prototype.syncWithEsp=function($){if(typeof EspClient=="function")if(this.espClient==null){this.espClient=new EspClient($,this.ac);var j=this;this.espClient.tempoCallback=function(_e){j.tempo=_e}}else this.espClient.setUrl($);else console.log("WebDirt ERROR: syncWithEsp called but EspClient does not exist")},k.prototype.setTempo=function($){if(typeof $.time!="number")throw Error("WebDirt: no time in setTempo");if(typeof $.beats!="number")throw Error("WebDirt: no beats in setTempo");if(typeof $.bpm!="number")throw Error("WebDirt: no bpm in setTempo");this.espClient!=null&&this.espClient.sendSetTempo($),this.tempo=$},k.prototype.sampleHint=function($){this.sampleBank!=null&&(console.log("WebDirt received sample hint: "+$),this.sampleBank.loadAllNamed($))},o})())})(WebDirtPacked$2);var WebDirtPacked$1=getDefaultExportFromCjs(WebDirtPacked$2.exports),WebDirt=_mergeNamespaces({__proto__:null,default:WebDirtPacked$1},[WebDirtPacked$2.exports]),WebDirtPacked={exports:{}};(function(a,e){(function(s,o){a.exports=o()})(self,()=>(()=>{var s={d:($,j)=>{for(var _e in j)s.o(j,_e)&&!s.o($,_e)&&Object.defineProperty($,_e,{enumerable:!0,get:j[_e]})},o:($,j)=>Object.prototype.hasOwnProperty.call($,j),r:$=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty($,Symbol.toStringTag,{value:"Module"}),Object.defineProperty($,"__esModule",{value:!0})}},o={};function c($,j){if(this.msg=$,this.ac=j.ac,this.sampleBank=j.sampleBank,this.outputNode=j.destination,this.cutGroups=j.cutGroups,this.eventCounter=j.eventCounter,this.audioOutputs=j.audioOutputs,this.workletsAvailable=j.workletsAvailable,typeof $.buffer=="object")this.bufferContainer=$.buffer;else{if(this.sampleBank==null)return void console.log("WebDirt: there is no sample bank, cancelling event");if(typeof this.sampleBank!="object")return void console.log("WebDirt: buffer not provided by calling application + no WebDirt sample bank");if(this.msg.n=parseInt(this.msg.n),isNaN(this.msg.n)&&(this.msg.n=0),!this.sampleBank.sampleNameExists(this.msg.s))return void console.log("WebDirt: no sample named "+this.msg.s+" exists in sample map");if(!this.sampleBank.getBufferMightSucceed(this.msg.s,this.msg.n))return}if(this.when=this.msg.when,isNaN(this.when))console.log("WebDirt: 'when' is null or not a number");else if(this.nudge=parseFloat(this.msg.nudge),isNaN(this.nudge)||(this.when=this.when+this.nudge),isNaN(parseFloat(this.msg.speed))&&(this.msg.speed=1),this.msg.speed!=0)if(isNaN(parseFloat(this.msg.note))&&(this.msg.note=0),this.msg.speed=this.msg.speed*Math.pow(2,this.msg.note/12),this.msg.begin=d(this.msg.begin,0),this.msg.end=d(this.msg.end,1),this.msg.end!=this.msg.begin){if(this.msg.begin>this.msg.end&&(this.msg.speed=-1*this.msg.speed),this.msg.speed<0&&(this.msg.begin=1-this.msg.begin,this.msg.end=1-this.msg.end),this.msg.begin>this.msg.end){let ht=this.msg.begin;this.msg.begin=this.msg.end,this.msg.end=ht}var _e;if(this.source=_e=this.ac.createBufferSource(),this.source.onended=this.disconnectHandler(),this.disconnectOnEnd(this.source),this.source.playbackRate.value=Math.abs(this.msg.speed),this.prepareBuffer(),this.buffer!=null)this.source.buffer=this.buffer,this.start();else{var et=this,tt=1e3*(this.msg.when-this.ac.currentTime-.2);tt<=0&&(tt=1e3*(this.msg.when-this.ac.currentTime-.2)),tt>0&&setTimeout(function(){et.prepareBuffer(),et.buffer!=null?(et.source.buffer=et.buffer,et.start()):(console.log("WebDirt: unable to access sample "+$.s+":"+$.n+" on second attempt"),et.stopAll())},tt)}this.cut(this.msg.cut,this.msg.s),_e=this.shape(_e,this.msg.shape),_e=this.lowPassFilter(_e,this.msg.cutoff,this.msg.resonance),_e=this.highPassFilter(_e,this.msg.hcutoff,this.msg.hresonance),_e=this.bandPassFilter(_e,this.msg.bandf,this.msg.bandq),_e=this.vowel(_e,this.msg.vowel),_e=this.delay(_e,this.msg.delay,this.msg.delaytime,this.msg.delayfeedback),_e=this.loop(_e,this.msg.loop,this.msg.begin,this.msg.end,this.msg.speed),_e=this.crush(_e,this.msg.crush),_e=this.coarse(_e,this.msg.coarse),this.unit(this.msg.unit,this.msg.speed);var nt=parseFloat(this.msg.gain);isNaN(nt)&&(nt=1),nt>2&&(nt=2),nt<0&&(nt=0);var it=parseFloat(this.msg.overgain);isNaN(it)||(nt+=it),nt=Math.pow(nt,4);var rt,st,ot,lt=parseFloat($.pan);if(isNaN(lt)&&(lt=.5),this.audioOutputs==2)(lt>1||lt<0)&&(lt-=Math.floor(lt)),rt=lt,st=0,ot=1;else{var dt=(lt-=Math.floor(lt))*this.audioOutputs;(ot=(st=Math.floor(dt))+1)>=this.audioOutputs&&(ot=0),rt=dt-Math.floor(dt)}var ct=this.ac.createGain();this.disconnectOnEnd(ct);var ut=this.ac.createGain();this.disconnectOnEnd(ut),ct.gain.value=Math.cos(rt*Math.PI/2)*nt,ut.gain.value=Math.sin(rt*Math.PI/2)*nt,_e.connect(ct),_e.connect(ut),this.gain1=ct,this.gain2=ut;var at=this.ac.createChannelMerger(this.audioOutputs);this.disconnectOnEnd(at),ct.connect(at,0,st),ut.connect(at,0,ot),at.connect(this.outputNode)}else this.stopAll()}function d($,j){let _e=parseFloat($);return isNaN(_e)?j:_e>1?1:_e<0?0:_e}s.r(o),s.d(o,{WebDirt:()=>k}),c.prototype.prepareBuffer=function(){typeof this.bufferContainer=="object"?typeof this.bufferContainer.buffer=="object"&&(this.msg.speed>=0?this.buffer=this.bufferContainer.buffer:(typeof this.bufferContainer.reverseBuffer=="object"||(this.bufferContainer.reverseBuffer=this.reverseBuffer(this.ac,this.bufferContainer.buffer)),this.buffer=this.bufferContainer.reverseBuffer)):(this.msg.speed>=0?this.buffer=this.sampleBank.getBuffer(this.msg.s,this.msg.n):this.buffer=this.sampleBank.getReverseBuffer(this.msg.s,this.msg.n),this.buffer=this.accel(this.buffer,this.msg.accelerate,this.msg.speed))},c.prototype.disconnectOnEnd=function($){this.source.disconnectQueue==null&&(this.source.disconnectQueue=new Array),this.source.disconnectQueue.unshift($)},c.prototype.start=function(){let $=Math.abs(this.msg.speed),j=(this.msg.end-this.msg.begin)*this.source.buffer.duration/$,_e=this.msg.begin*this.source.buffer.duration;this.source.start(this.when,_e,j)},c.prototype.stopAll=function(){if(this.source!=null&&this.source.disconnectQueue!=null){for(var $=0;$1&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"coarse-processor");return _e.parameters.get("coarse").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.crush=function($,j){if(j=parseInt(j),isNaN(j)&&(j=null),j!=null&&j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"crush-processor");return _e.parameters.get("crush").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.cut=function($,j){if($=parseInt($),!isNaN($)&&$!=0){for(var _e={cutGroup:$,node:this,sampleName:j},et=0;et2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="highpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.lowPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="lowpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.bandPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=10),_e<1&&(_e=1),_e>100&&(_e=100);var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="bandpass",et.frequency.value=j,et.Q.value=_e,et.gain.value=_e,$.connect(et),et},c.prototype.loop=function($,j){if(isNaN(parseInt(j))||j==0)return $;try{var _e=this.source.buffer.duration-this.msg.begin*this.source.buffer.duration-(1-this.msg.end)*this.source.buffer.duration;return this.source.loop=!0,this.source.loopStart=this.msg.begin*this.source.buffer.duration,this.source.loopEnd=this.msg.end*this.source.buffer.duration,this.source.stop(this.when+_e*j/this.source.playbackRate.value),$}catch{return console.log("WebDirt Warning: buffer data not yet available to calculate loop time - no looping applied"),$}},c.prototype.accelerate=function($,j){if(j=Math.abs(j),isNaN(parseFloat($))&&($=0),$!=0){$=parseFloat($),this.source.playbackRate.setValueAtTime(j,this.when);var _e=Math.abs((this.source.buffer.length*$/this.ac.sampleRate+j)/j),et=j+this.source.buffer.length*$/this.ac.sampleRate;if(et<0)this.source.buffer=this.negativeAccelerateBuffer(this.source.buffer,$,j),this.source.playbackRate.linearRampToValueAtTime(0,this.when+_e),this.source.playbackRate.linearRampToValueAtTime(1,this.when+this.source.buffer.duration);else try{this.source.playbackRate.linearRampToValueAtTime(et,this.when+this.source.buffer.duration)}catch{console.log("WebDirt: Warning, buffer data not loaded, could not apply acclerate effect")}}},c.prototype.negativeAccelerateBuffer=function($,j,_e){var et=$.length,tt=new Float32Array(et),nt=this.ac.createBuffer($.numberOfChannels,$.length,this.ac.sampleRate),it=new Float32Array(et),rt=Math.abs(_e/(_e-j))*et;rt=et*Math.abs((this.source.buffer.length*j/this.ac.sampleRate+_e)/_e)/this.source.buffer.duration,rt=Math.trunc(rt);for(var st=0;st<$.numberOfChannels;st++){$.copyFromChannel(tt,st,0);for(var ot=0;ot=1&&(j=.999),j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"shape-processor");return _e.parameters.get("shape").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.stop=function($){this.gain1.gain.setValueAtTime(this.gain1.gain.value,$),this.gain1.gain.linearRampToValueAtTime(0,$+.02),this.gain2.gain.setValueAtTime(this.gain1.gain.value,$),this.gain2.gain.linearRampToValueAtTime(0,$+.02)},c.prototype.unit=function($,j){$=="c"&&(this.source.playbackRate.value=this.source.playbackRate.value*this.source.buffer.duration)},c.prototype.vowel=function($,j){if(typeof j!="string")return $;if((j=j.toLowerCase())=="a"||j=="e"||j=="i"||j=="o"||j=="u"){var _e,et,tt,nt=this.ac.createGain();switch(this.disconnectOnEnd(nt),j){case"a":_e=_.a.freqs,et=_.a.qs,tt=_.a.amps;break;case"e":_e=_.e.freqs,et=_.e.qs,tt=_.e.amps;break;case"i":_e=_.i.freqs,et=_.i.qs,tt=_.i.amps;break;case"o":_e=_.o.freqs,et=_.o.qs,tt=_.o.amps;break;case"u":_e=_.u.freqs,et=_.u.qs,tt=_.u.amps}for(var it=0;it<5;it++){var rt=this.ac.createGain();this.disconnectOnEnd(rt),rt.gain.value=tt[it];var st=this.ac.createBiquadFilter();this.disconnectOnEnd(st),st.type="bandpass",st.Q.value=et[it]/8,st.frequency.value=_e[it],$.connect(st),st.connect(rt),rt.connect(nt)}return nt.gain.value=8,nt}return $},c.prototype.reverseBuffer=function($,j){for(var _e=j.length,et=new Float32Array(_e),tt=$.createBuffer(j.numberOfChannels,j.length,$.sampleRate),nt=new Float32Array(_e),it=0;it{console.log("WebDirt: audio worklets added"),this.workletsAvailable=!0}).catch(j=>{console.log("WebDirt: error loading AudioWorklets.js: "+j),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1}):(console.log("WebDirt: browser does not support audio worklets"),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1),this.tempo={time:this.ac.currentTime,beats:0,bpm:30},this.clockDiff=Date.now()/1e3-this.ac.currentTime,this.sampleBank!=null&&(this.sampleBank.ac=this.ac),this.silentNote=this.ac.createOscillator(),this.silentNote.type="sine",this.silentNote.frequency.value=440,this.silentGain=this.ac.createGain(),this.silentGain.gain.value=0,this.silentNote.connect(this.silentGain),this.silentGain.connect(this.ac.destination),this.silentNote.start();var $=this;setTimeout(function(){$.silentGain.disconnect($.ac.destination),$.silentNote.disconnect($.silentGain),$.silentNote.stop(),$.silentGain=null,$.silentNote=null},500)}console.log("WebDirt: initializeWebAudio finished.")},k.prototype.playSample=function($,j){if(j==null&&(j=this.latency),$.whenPosix!=null&&($.when=$.whenPosix-(new Date().getTime()/1e3-this.ac.currentTime)),$.when==null&&($.when=this.ac.currentTime),$.when=$.when+j,typeof $.maxLateness!="number"&&($.maxLateness=this.maxLateness),this.ac.currentTime-$.when>$.maxLateness)return void console.log("WebDirt warning: dropping msg late by "+(this.ac.currentTime-$.when)+" seconds");let _e=new c($,this);return this.eventCounter++,_e},k.prototype.playScore=function($,j,_e){this.initializeWebAudio(),j==null&&(j=this.latency);for(var et=this.ac.currentTime,tt=0,nt=0;nt<$.length;nt++){var it=$[nt];it.when>tt&&(tt=it.when),it.when=it.when+et,it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.playSample(it,j)}setTimeout(function(){typeof _e=="function"&&_e()},1e3*(tt+j))},k.prototype.playScoreWhenReady=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);for(var tt=$.length,nt=0;nt<$.length;nt++){var it=$[nt],rt=this;it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.sampleBank!=null&&this.sampleBank.load(it.sample_name,it.sample_n,function(){(tt-=1)<=0&&(rt.playScore($,j,et),typeof _e=="function"&&_e())})}},k.prototype.loadAndPlayScore=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);var tt=new XMLHttpRequest;tt.open("GET",$,!0),tt.responseType="json";var nt=this;tt.onload=function(){if(tt.readyState!=4)throw Error("readyState != 4 in callback of loadAndPlayScore");if(tt.status!=200)throw Error("status != 200 in callback of loadAndPlayScore");if(tt.response==null)throw Error("JSON response null in callback of loadAndPlayScore");console.log("playing JSON score from "+$),nt.playScoreWhenReady(tt.response,j,_e,et)},tt.send()},k.prototype.renderAndPlayScore=function($,j,_e,et,tt,nt,it){this.initializeWebAudio(),tt==null&&(tt=this.latency),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt.renderAndPlayScore: attempting websocket connection to "+$);var rt=new WebSocket($);rt.onerror=function(){console.log(" ERROR opening websocket connection to "+$)},rt.onopen=function(){console.log(" websocket connection to "+$+" established");try{var ot='{"render":'+JSON.stringify(j)+',"cps":'+_e+',"cycles":'+et+"}";console.log(ot),rt.send(ot),console.log(" render request sent")}catch{console.log(" EXCEPTION during transmission of render request"),rt.close()}};var st=this;rt.onmessage=function(ot){var lt=JSON.parse(ot.data);if(!lt instanceof Array)return console.log(" WebDirt warning: rendering socket received non-array message"),console.log(typeof lt),void(globalX=lt);console.log(" received score from "+$),st.playScoreWhenReady(lt,tt,nt,it),console.log(" closing websocket connection to "+$),rt.close()}},k.prototype.subscribeToTidalSocket=function($,j){this.initializeWebAudio(),j==null&&(j=!1),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt: attempting websocket connection to "+$),ws=new WebSocket($),ws.onopen=function(){console.log("websocket connection to tidalSocket opened")},ws.onerror=function(){console.log("ERROR opening websocket connection to tidalSocket")};var _e=this;ws.onmessage=function(et){if(et.data==null)throw Error("null data in tidalSocket onmessage handler");var tt=JSON.parse(et.data);if(tt.address==null)throw Error("received message from tidalSocket with no address: "+et.data);if(tt.address!="/play")throw Error("address of message from tidalSocket wasn't /play: "+et.data);if(tt.args.constructor!==Array)throw Error("ERROR: message from tidalSocket where args doesn't exist or isn't an array: "+et.data);if(tt.args.length!=30&&tt.args.length!=33)throw Error("ERROR: message from tidalSocket with "+tt.args.length+" args instead of 30 or 33: "+et.data);var nt={};nt.when=tt.args[0]+tt.args[1]/1e6+_e.clockDiff,nt.sample_name=tt.args[3],nt.begin=tt.args[5],nt.end=tt.args[6],nt.speed=tt.args[7],nt.pan=tt.args[8],nt.vowel=tt.args[10],nt.cutoff=tt.args[11],nt.resonance=tt.args[12],nt.accelerate=tt.args[13],nt.shape=tt.args[14],nt.gain=tt.args[16],nt.cut=tt.args[17],nt.delay=tt.args[18],nt.delaytime=tt.args[19],nt.delayfeedback=tt.args[20],nt.crush=tt.args[21],nt.coarse=tt.args[22],nt.hcutoff=tt.args[23],nt.hresonance=tt.args[24],nt.bandf=tt.args[25],nt.bandq=tt.args[26],nt.unit_name=tt.args[27],nt.sample_loop=tt.args[28],nt.sample_n=tt.args[29],tt.args.length==33&&(nt.attack=tt.args[30],nt.hold=tt.args[31],nt.release=tt.args[32]),_e.playSample(nt),j&&console.log(tt)}},k.prototype.getCurrentTime=function(){return this.ac.currentTime},k.prototype.syncWithEsp=function($){if(typeof EspClient=="function")if(this.espClient==null){this.espClient=new EspClient($,this.ac);var j=this;this.espClient.tempoCallback=function(_e){j.tempo=_e}}else this.espClient.setUrl($);else console.log("WebDirt ERROR: syncWithEsp called but EspClient does not exist")},k.prototype.setTempo=function($){if(typeof $.time!="number")throw Error("WebDirt: no time in setTempo");if(typeof $.beats!="number")throw Error("WebDirt: no beats in setTempo");if(typeof $.bpm!="number")throw Error("WebDirt: no bpm in setTempo");this.espClient!=null&&this.espClient.sendSetTempo($),this.tempo=$},k.prototype.sampleHint=function($){this.sampleBank!=null&&(console.log("WebDirt received sample hint: "+$),this.sampleBank.loadAllNamed($))},o})())})(WebDirtPacked);const bufferCache={},loadCache={},loadBuffer=(a,e)=>(loadCache[a]||(loadCache[a]=fetch(a).then(s=>s.arrayBuffer()).then(async s=>{const o=await e.decodeAudioData(s);return bufferCache[a]=o,o})),loadCache[a]),getLoadedBuffer=a=>bufferCache[a],githubCache={};let sampleCache={current:void 0};const loadGithubSamples=async(a,e)=>{const s="loadGithubSamples "+a,o=localStorage.getItem(s);if(o&&(console.log("[sampler]: loaded sample list from localstorage",a),githubCache[a]=JSON.parse(o)),githubCache[a])return sampleCache.current=githubCache[a],githubCache[a];console.log("[sampler]: fetching sample list from github",a);try{const[c,d,..._]=a.split("/"),b=`https://api.github.com/repos/${c}/${d}/contents`,k=await fetch(`${b}/${_.join("/")}`).then($=>$.json());githubCache[a]=(await Promise.all(k.map(async({name:$,path:j})=>({name:$,content:await fetch(`${b}/${j}`).then(_e=>_e.json()).catch(_e=>{console.error("could not load path",_e)})})))).filter(({content:$})=>!!$).reduce(($,{name:j,content:_e})=>wt(_t({},$),{[(e==null?void 0:e(j))||j]:_e.map(({download_url:et})=>et)}),{})}catch(c){console.error("[sampler]: failed to fetch sample list from github",c);return}return sampleCache.current=githubCache[a],localStorage.setItem(s,JSON.stringify(sampleCache.current)),console.log("[sampler]: loaded samples:",sampleCache.current),githubCache[a]},samples=(a,e="")=>{sampleCache.current=_t(_t({},sampleCache.current),Object.fromEntries(Object.entries(a).map(([s,o])=>[s,(typeof o=="string"?[o]:o).map(c=>(e+c).replace("github:","https://raw.githubusercontent.com/"))])))},resetLoadedSamples=()=>{sampleCache.current=void 0},getLoadedSamples=()=>sampleCache.current,{Pattern}=strudel;let webDirt;function loadWebDirt(a){webDirt=new WebDirtPacked.exports.WebDirt(a),webDirt.initializeWebAudio()}Pattern.prototype.webdirt=function(){return this._withHap(a=>{const e=async(s,o,c)=>{if(!webDirt)throw new Error("WebDirt not initialized!");const d=s-c,j=o.value||{},{s:_,n:b=0}=j,k=sn(j,["s","n"]);_||console.warn('Pattern.webdirt: no "s" was set!');const $=getLoadedSamples();if(!($!=null&&$[_])){webDirt.playSample(_t({s:_,n:b},k),d);return}if(!($!=null&&$[_]))console.warn(`Pattern.webdirt: sample "${_}" not found in loaded samples`,$);else{const _e=$[_],et=_e[b%_e.length],tt=getLoadedBuffer(et);if(!tt)console.log(`Pattern.webdirt: load ${_}:${b} from ${et}`),loadBuffer(et,webDirt.ac);else{const nt=_t({buffer:{buffer:tt}},k);webDirt.playSample(nt,d)}}};return a.setContext(wt(_t({},a.context),{onTrigger:e}))})};evalScope(Tone$1,controls,{WebDirt},__vitePreload(()=>Promise.resolve().then(function(){return strudel}),void 0),__vitePreload(()=>import("./index.fb6b0577.js"),[]),__vitePreload(()=>import("./index.1d741587.js"),[]),__vitePreload(()=>import("./index.97f1f33f.js"),[]),__vitePreload(()=>import("./index.c6426ad9.js"),[]),__vitePreload(()=>import("./index.a0802667.js"),[]),__vitePreload(()=>import("./index.78635c27.js"),[]),__vitePreload(()=>import("./osc.91b4276f.js"),[]),__vitePreload(()=>import("./index.3f561dd7.js"),[]),__vitePreload(()=>import("./serial.05b726f2.js"),[]));loadWebDirt({sampleMapUrl:"EmuSP12.json",sampleFolder:"EmuSP12"});const initialUrl=window.location.href,codeParam=window.location.href.split("#")[1];let decoded;try{decoded=atob(decodeURIComponent(codeParam||""))}catch(a){console.warn("failed to decode",a)}function getRandomTune(){const a=Object.values(tunes);return(s=>s[Math.floor(Math.random()*s.length)])(a)}const randomTune=getRandomTune(),defaultSynth=getDefaultSynth(),isEmbedded=window.location!==window.parent.location;function App(){const[a,e]=react.exports.useState(),{setCode:s,setPattern:o,error:c,code:d,cycle:_,dirty:b,log:k,togglePlay:$,activeCode:j,setActiveCode:_e,activateCode:et,pattern:tt,pushLog:nt,pending:it}=useRepl({tune:decoded||randomTune,defaultSynth}),rt=react.exports.useRef();return react.exports.useLayoutEffect(()=>{var st;rt.current&&(rt.current.scrollTop=(st=rt.current)==null?void 0:st.scrollHeight)},[k]),react.exports.useLayoutEffect(()=>{const st=async ot=>{(ot.ctrlKey||ot.altKey)&&(ot.code==="Enter"?(ot.preventDefault(),await et()):ot.code==="Period"&&(_.stop(),ot.preventDefault()))};return window.addEventListener("keydown",st,!0),()=>window.removeEventListener("keydown",st,!0)},[tt,d,et,_]),useHighlighting({view:a,pattern:tt,active:_.started&&!(j!=null&&j.includes("strudel disable-highlighting"))}),useWebMidi({ready:react.exports.useCallback(({outputs:st})=>{nt(`WebMidi ready! Just add .midi(${st.map(ot=>`'${ot.name}'`).join(" | ")}) to the pattern. `)},[nt]),connected:react.exports.useCallback(({outputs:st})=>{nt(`Midi device connected! Available: ${st.map(ot=>`'${ot.name}'`).join(", ")}`)},[nt]),disconnected:react.exports.useCallback(({outputs:st})=>{nt(`Midi device disconnected! Available: ${st.map(ot=>`'${ot.name}'`).join(", ")}`)},[nt])}),jsxs("div",{className:"min-h-screen flex flex-col",children:[jsxs("header",{id:"header",className:cx("flex-none w-full px-2 flex border-b border-gray-200 justify-between z-[10] bg-gray-100",isEmbedded?"h-8":"h-14"),children:[jsxs("div",{className:"flex items-center space-x-2",children:[jsx("img",{src:logo,className:cx("Tidal-logo",isEmbedded?"w-6 h-6":"w-10 h-10"),alt:"logo"}),jsxs("h1",{className:isEmbedded?"text-l":"text-xl",children:["Strudel ",isEmbedded?"Mini ":"","REPL"]})]}),jsxs("div",{className:"flex",children:[jsx("button",{onClick:()=>$(),className:cx("hover:bg-gray-300",isEmbedded?"px-2":"p-2"),children:it?jsx(Fragment,{children:"loading..."}):jsxs("span",{className:cx("flex items-center","w-16"),children:[_.started?jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}):jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"})}),_.started?"pause":"play"]})}),!isEmbedded&&jsx("button",{className:"hover:bg-gray-300 p-2",onClick:async()=>{const st=getRandomTune();console.log("tune",st),s(st),cleanupDraw(),cleanupUi(),resetLoadedSamples();const ot=await evaluate(st);o(ot.pattern),_e(st)},children:"\u{1F3B2} random"}),!isEmbedded&&jsx("button",{className:cx("hover:bg-gray-300",isEmbedded?"px-2":"p-2"),children:jsx("a",{href:"./tutorial",children:"\u{1F4DA} tutorial"})}),isEmbedded&&jsx("button",{className:cx("hover:bg-gray-300 px-2"),children:jsx("a",{href:window.location.href,target:"_blank",rel:"noopener noreferrer",title:"Open in REPL",children:"\u{1F680} open"})}),isEmbedded&&jsx("button",{className:cx("hover:bg-gray-300 px-2"),children:jsx("a",{onClick:()=>{window.location.href=initialUrl,window.location.reload()},title:"Reset",children:"\u{1F494} reset"})})]})]}),jsxs("section",{className:"grow flex flex-col text-gray-100",children:[jsxs("div",{className:"grow relative flex overflow-auto",id:"code",children:[jsx(CodeMirror,{value:d,onChange:s,onViewChanged:e}),jsx("span",{className:"z-[20] py-1 px-2 absolute top-0 right-0 text-xs whitespace-pre text-right pointer-events-none",children:_.started?b?`ctrl+enter to update -`:`no changes -`:`press ctrl+enter to play -`}),c&&jsx("div",{className:cx("absolute right-2 bottom-2 px-2","text-red-500"),children:(c==null?void 0:c.message)||"unknown error"})]}),!isEmbedded&&jsx("textarea",{className:"z-[10] h-16 border-0 text-xs bg-[transparent] border-t border-slate-600 resize-none",value:k,readOnly:!0,ref:rt,style:{fontFamily:"monospace"}})]})]})}var index="";ReactDOM.render(jsx(React.StrictMode,{children:jsx(App,{})}),document.getElementById("root"));export{getAugmentedNamespace as A,commonjsGlobal as B,getDefaultExportFromCjs as C,reify$1 as D,stack as E,strudel as F,enableWebMidi as G,Hap as H,TimeSpan$1 as I,loadWebDirt as J,loadBuffer as K,getLoadedBuffer as L,loadGithubSamples as M,samples as N,resetLoadedSamples as O,Pattern$4 as P,getLoadedSamples as Q,State$1 as S,Tone$1 as T,WebMidi as W,amsynth as a,metal as b,monosynth as c,duosynth as d,polysynth as e,fmsynth as f,getDefaultSynth as g,players as h,synth as i,piano as j,highpass as k,lowpass as l,membrane as m,noise as n,adsr as o,pluck as p,osc as q,out as r,sampler as s,getDrawContext$1 as t,cleanupDraw as u,vol as v,hideHeader as w,backgroundImage as x,cleanupUi as y,mod as z}; diff --git a/assets/index.a0802667.js b/assets/index.b1ea7d26.js similarity index 99% rename from assets/index.a0802667.js rename to assets/index.b1ea7d26.js index 5d590b43c..db216459d 100644 --- a/assets/index.a0802667.js +++ b/assets/index.b1ea7d26.js @@ -1 +1 @@ -var h=Object.defineProperty,q=Object.defineProperties;var g=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var y=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var m=(i,n,e)=>n in i?h(i,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[n]=e,c=(i,n)=>{for(var e in n||(n={}))y.call(n,e)&&m(i,e,n[e]);if(p)for(var e of p(n))b.call(n,e)&&m(i,e,n[e]);return i},a=(i,n)=>q(i,g(n));import{P as o,z as _}from"./index.8e502404.js";function S(i){if(!/^[1-9]+[0-9]*edo$/.test(i))throw new Error('not an edo scale: "'+i+'"');const[n,e]=i.match(/^([1-9]+[0-9]*)edo$/);return Array.from({length:e},(r,s)=>Math.pow(2,s/e))}const f={"12ji":[1/1,16/15,9/8,6/5,5/4,4/3,45/32,3/2,8/5,5/3,16/9,15/8]};function v(i,n){return n.map(e=>e*i)}const w=220;function k(i,n){if(typeof i=="string")if(/^[1-9]+[0-9]*edo$/.test(i))i=S(i);else if(f[i])i=f[i];else throw new Error('unknown scale name: "'+i+'"');return i=v(w,i),n?i.filter((e,r)=>n.includes(r)):i}function l(i,n,e=0){const r=_(e+n,i.length),s=Math.floor(n/i.length);return i[r]*Math.pow(2,s)}o.prototype._xen=function(i,n){return this._asNumber()._withHap(e=>{const r=k(i);n=n||r.length;const s=l(r,e.value);return e.withValue(()=>s).setContext(a(c({},e.context),{type:"frequency"}))})};o.prototype.tuning=function(i){return this._asNumber()._withHap(n=>{const e=l(i,n.value);return n.withValue(()=>e).setContext(a(c({},n.context),{type:"frequency"}))})};o.prototype.define("xen",(i,n)=>n.xen(i),{composable:!0,patternified:!0});function t(){this.scale=[],this.mode={output:"frequency",input:"step"},this.etmajor=[261.62558,293.664764,329.627563,349.228241,391.995422,440,493.883301,523.25116],this.tonic=440}t.prototype.tonicize=function(i){this.tonic=i};t.prototype.note=function(i,n){var e;return this.mode.output=="frequency"?e=this.frequency(i,n):this.mode.output=="ratio"?e=this.ratio(i,n):this.mode.output=="MIDI"?e=this.MIDI(i,n):e=this.frequency(i,n),e};t.prototype.frequency=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);for(var r=i%this.scale.length;r<0;)r+=this.scale.length;var s=this.tonic*this.scale[r];return s=s*Math.pow(2,e),s=Math.floor(s*1e11)/1e11,s};t.prototype.ratio=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);var r=i%this.scale.length,s=Math.pow(2,e)*this.scale[r];return s=Math.floor(s*1e11)/1e11,s};t.prototype.MIDI=function(i,n){var e=this.frequency(i,n),r=69+12*Math.log(e/440)/Math.log(2);return r=Math.floor(r*1e9)/1e9,r};t.prototype.loadScale=function(i){var n=u[i].frequencies;this.scale=[];for(var e=0;e[1, 1, -1]->[0, 1, -1]->[0, 0, -1]->[0, 0, 0]->[0, -1, 0],[0, -1, 1]->[0, -2, 1]->[-1, -2, 1]"},breedt1:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,326.6631048533,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Graham Breed's 1/4 P temperament, TL 10-06-99"},breedt2:{frequencies:[261.6255653006,276.37000081643,293.53214922797,310.91625060765,328.43856194079,349.78078158391,368.4933346061,392.4383479509,414.55500101742,439.10654054756,466.37437567834,492.65784266492,523.2511306012],description:"Graham Breed's 1/5 P temperament, TL 10-06-99"},breedt3:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,350.01785633742,368.74309237173,392.4383479509,414.83597850347,438.51190905657,466.69047534984,491.65745674141,523.2511306012],description:"Graham Breed's other 1/4 P temperament, TL 10-06-99"},brown:{frequencies:[261.6255653006,272.52663052146,275.62199471997,275.93321340298,279.38237857051,287.10624449997,290.69507255622,291.02331101095,294.32876096318,306.24666079997,306.59245933664,310.07474405997,310.42486507835,322.99452506247,327.03195662575,331.11985608357,344.52749339997,344.91651675372,348.83408706747,349.22797321314,363.36884069528,367.49599295996,367.91095120397,372.50983809402,382.80832599996,387.59343007496,388.03108134794,392.4383479509,408.78994578219,413.43299207996,413.89982010446,430.65936674996,436.04260883433,436.53496651643,441.49314144476,459.36999119996,459.88868900496,465.11211608996,465.63729761752,484.4917875937,489.99465727995,490.54793493862,496.67978412536,516.79124009995,517.37477513058,523.2511306012],description:"Tuning of Colin Brown's Voice Harmonium, Glasgow. Helmholtz/Ellis p. 470-473"},bruder:{frequencies:[261.6255653006,276.38325105256,293.66476791741,310.22971009486,327.53979283172,349.02656754477,368.60786575306,391.65594491223,414.34624765043,439.23819834286,465.62553897253,491.60634075178,523.2511306012],description:"Ignaz Bruder organ temperament (1829) according to P. Vier"},burma3:{frequencies:[261.6255653006,287.71029735626,317.68827763215,350.39147881787,389.32370520689,429.81331927092,476.14308821464,523.2511306012],description:"Burmese scale, von Hornbostel"},"burt-forks":{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Warren Burt 19-tone Forks. Interval 5(3): pp. 13+23 Winter 1986-87"},burt1:{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,415.52295665389,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"W. Burt's 13diatsub #1"},burt10:{frequencies:[261.6255653006,265.11390617127,268.69652652494,272.3773008609,276.16031892841,355.06326719367,368.21375857121,382.37582620857,386.08821287079,389.87339142835,393.73352401674,397.67085925691,523.2511306012],description:"W. Burt's 19enhsub #10"},burt11:{frequencies:[261.6255653006,344.24416486921,347.6866065179,351.12904816659,354.57148981529,358.01393146398,371.78369805875,385.55346465352,495.71159741166,502.59648070905,509.48136400643,516.36624730382,523.2511306012],description:"W. Burt's 19enhharm #11"},burt12:{frequencies:[261.6255653006,302.93486508491,316.70463167967,330.47439827444,344.24416486921,358.01393146398,371.78369805875,385.55346465352,440.63253103259,468.17206422213,495.71159741166,509.48136400643,523.2511306012],description:"W. Burt's 19diatharm #12"},burt13:{frequencies:[261.6255653006,273.51763645063,286.54228580542,293.53112204458,300.86940009569,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,523.2511306012],description:"W. Burt's 23diatsub #13"},burt14:{frequencies:[261.6255653006,264.50057151269,267.43946675172,270.4444045804,273.51763645063,334.29933343966,353.96400011258,376.08675011961,382.05638107389,388.21858076863,394.58281979763,401.15920012759,523.2511306012],description:"W. Burt's 23enhsub #14"},burt15:{frequencies:[261.6255653006,341.25073734861,346.93824963775,352.6257619269,358.31327421604,364.00078650518,386.75083566176,409.50088481833,500.50108144463,506.18859373377,511.87610602291,517.56361831206,523.2511306012],description:"W. Burt's 23enhharm #15"},burt16:{frequencies:[261.6255653006,295.75063903546,307.12566361375,318.50068819203,341.25073734861,364.00078650518,386.75083566176,409.50088481833,455.00098313148,466.37600770977,477.75103228805,500.50108144463,523.2511306012],description:"W. Burt's 23diatharm #16"},burt17:{frequencies:[261.6255653006,262.27760655527,262.77528702311,280.51080915002,281.04308772525,281.33584094163,286.12102533302,286.66394947976,306.91182648178,308.56189006502,309.14739649778,336.61297098002,337.2517052703,337.60300912996,338.42271813583,339.41807907152,363.01398831179,369.18841978454,370.27426807802,396.01525997649,398.14437427744,399.31538714296,403.93556517602,406.10726176299,434.33931739357,434.79175418253,435.61678597414,437.95881170519,475.21831197179,476.86837555503,477.77324913293,478.27092960078,479.17846457156,521.20718087229,521.75010501903,522.74014316897,523.2511306012],description:`W. Burt's "2 out of 3,5,11,17,31 dekany" CPS with 1/1=3/1. 1/1 vol. 10(1) '98`},burt18:{frequencies:[261.6255653006,268.26840191956,269.80136421624,270.50397193556,275.42222597075,281.04308772525,286.15296204753,295.09524211152,300.46061014991,306.59245933664,309.14739649778,314.76825825228,321.92208230347,324.60476632267,337.2517052703,343.38355445704,344.27778246344,354.11429053382,357.69120255941,367.91095120397,370.97687579734,375.57576268738,393.46032281536,404.70204632437,413.13333895612,421.56463158788,429.2294430713,432.80635509689,449.66894036041,463.72109474667,472.15238737843,490.54793493862,491.82540351919,500.76768358318,505.87755790546,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 1,3,5,7,11 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt19:{frequencies:[261.6255653006,268.26840191956,286.15296204753,294.32876096318,300.46061014991,306.59245933664,321.92208230347,327.03195662575,343.38355445704,357.69120255941,367.91095120397,375.57576268738,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 2,3,4,5,7 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt2:{frequencies:[261.6255653006,264.16561933264,266.75547834571,269.39662169567,272.09058791262,340.11323489078,344.41846571218,348.83408706747,353.36439988652,358.01393146398,412.25846653428,485.87604984397,523.2511306012],description:"W. Burt's 13enhsub #2"},burt20:{frequencies:[261.6255653006,269.10058145205,279.06726965397,279.38237857051,294.32876096318,298.00787047521,330.74639366397,335.25885428462,367.91095120397,376.74081403286,412.06026534844,418.60090448096,523.2511306012],description:'Warren Burt tuning for "Commas" (1993) 1/1=263. XH 16'},burt3:{frequencies:[261.6255653006,281.75060878526,332.06321749692,382.37582620857,387.40708707973,392.4383479509,397.46960882207,402.50086969323,503.12608711654,508.1573479877,513.18860885887,518.21986973003,523.2511306012],description:"W. Burt's 13enhharm #3"},burt4:{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,342.12573923925,362.25078272391,382.37582620857,402.50086969323,442.75095666255,462.87600014722,483.00104363188,503.12608711654,523.2511306012],description:"W. Burt's 13diatharm #4, see his post 3/30/94 in Tuning Digest #57"},burt5:{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,277.97716313189,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"W. Burt's 17diatsub #5"},burt6:{frequencies:[261.6255653006,265.53042448419,269.55361273395,273.7005913914,277.97716313189,370.63621750918,386.75083566176,404.33041910093,408.97789518255,413.73345210327,418.60090448096,423.58424858192,523.2511306012],description:"W. Burt's 17enhsub #6"},burt7:{frequencies:[261.6255653006,323.18452184192,327.03195662575,330.87939140958,334.72682619341,338.57426097725,353.96400011258,369.35373924791,492.47165233054,500.16652189821,507.86139146587,515.55626103354,523.2511306012],description:"W. Burt's 17enhharm #7"},burt8:{frequencies:[261.6255653006,277.01530443593,292.40504357126,307.79478270659,323.18452184192,338.57426097725,353.96400011258,369.35373924791,400.13321751856,430.91269578922,461.69217405988,492.47165233054,523.2511306012],description:"W. Burt's 17diatharm #8"},burt9:{frequencies:[261.6255653006,268.69652652494,276.16031892841,292.40504357126,310.68035879446,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"W. Burt's 19diatsub #9"},burt_fibo:{frequencies:[261.6255653006,277.97716313189,294.32876096318,311.70233365892,327.03195662575,343.38355445704,363.82305174615,385.28452389971,392.4383479509,425.14154361347,449.66894036041,476.24028683625,523.2511306012],description:'Warren Burt, 3/2+5/3+8/5+etc. "Recurrent Sequences", 2002'},burt_fibo23:{frequencies:[261.6255653006,267.05480676802,277.97716313189,282.81557538079,294.32876096318,299.5065008038,311.70233365892,327.03195662575,330.09788121912,343.38355445704,349.5792770728,363.82305174615,370.21039464899,385.28452389971,392.4383479509,408.02346463385,425.14154361347,432.10374737758,449.66894036041,457.60521391719,476.24028683625,484.61169812829,504.34459560877,523.2511306012],description:'Warren Burt, 23-tone Fibonacci scale. "Recurrent Sequences", 2002'},burt_primes:{frequencies:[261.6255653006,267.75741448733,273.88926367407,277.97716313189,280.0211128608,284.10901231862,290.24086150535,298.416660421,302.50455987882,304.54850960773,308.63640906555,310.68035879446,320.90010743902,322.94405716793,327.03195662575,333.16380581248,335.20775554139,339.29565499922,341.33960472813,351.55935337268,353.60330310159,359.73515228832,363.82305174615,365.86700147506,369.95490093288,376.08675011961,384.26254903526,390.39439822199,392.4383479509,394.48229767981,396.52624740872,402.65809659545,406.74599605328,412.87784524001,421.05364415565,425.14154361347,431.27339280021,433.31734252912,437.40524198694,445.58104090258,455.80078954714,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,519.16323114338,523.2511306012],description:'Warren Burt, primes until 251. "Some Numbers", Dec. 2002'},bushmen:{frequencies:[261.6255653006,347.0163224393,394.26624244126,453.9405988926,523.2511306012],description:"Observed scale of South-African bushmen, almost (4 notes) equal pentatonic"},dan_semantic:{frequencies:[261.6255653006,272.52663052146,275.62199471997,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,397.34382730029,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:'The Semantic Scale, from Alain Dani\xEF\xBF\xBDlou: "S\xEF\xBF\xBDmantique Musicale" (1967)'},danielou5_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.62199471997,279.06726965397,282.55561052465,285.76488412567,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division in 5-limit, symmetrized"},danielou_53:{frequencies:[261.6255653006,264.89588486686,267.43946675172,272.52663052146,275.62199471997,279.06726965397,282.55561052465,287.78812183066,290.69507255622,294.32876096318,297.67175429757,301.87565226992,306.59245933664,310.07474405997,313.95067836072,318.93402246168,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.64686971777,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division of the Octave, see p. 153"},darreg:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"This set of 19 ratios in 5-limit JI is for his megalyra family"},darreg_ennea:{frequencies:[261.6255653006,269.29177952703,277.18263097687,293.66476791741,349.22823143301,391.99543598175,403.48177901006,415.30469757995,440,523.2511306012],description:"Ivor Darreg's Mixed Enneatonic, a mixture of chromatic and enharmonic"},darreg_genus:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,523.2511306012],description:"Ivor Darreg's Mixed JI Genus (Archytas Enh, Ptolemy Soft Chrom, Didymos Chrom"},darreg_genus2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,348.83408706747,392.4383479509,406.97310157871,418.60090448096,441.49314144476,523.2511306012],description:"Darreg's Mixed JI Genus 2 (Archytas Enharmonic and Chromatic Genera)"},david11:{frequencies:[261.6255653006,269.80136421624,274.70684356563,285.40970760065,294.32876096318,305.22982618403,314.76825825228,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,374.60024122586,392.4383479509,406.97310157871,419.69101100305,428.11456140098,441.49314144476,457.84473927605,479.64686971777,490.54793493862,499.46698830115,523.2511306012],description:"11-limit system from Gary David, 1967"},david7:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,488.36772189445,523.2511306012],description:"Gary David's Constant Structure, 1967. A mode of Fokker's 7-limit scale"},ddimlim1:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"First 27/25&2048/1875 scale"},de_caus:{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"De Caus (a mode of Ellis's duodene) (1615)"},degung1:{frequencies:[261.6255653006,286.1303811777,319.28416942365,390.63652710512,420.90734643474,523.2511306012],description:"Gamelan Degung, Kabupaten Sukabumi. 1/1=363 Hz"},degung2:{frequencies:[261.6255653006,276.67939184371,325.99375993805,390.36201910543,415.27879033283,523.2511306012],description:"Gamelan Degung, Kabupaten Bandung. 1/1=252 Hz"},degung3:{frequencies:[261.6255653006,282.83850205216,320.55017368416,393.28023705203,426.95140008307,523.2511306012],description:"Gamelan Degung, Kabupaten Sumedang. 1/1=388.5 Hz"},degung4:{frequencies:[261.6255653006,284.6485709981,319.18312009646,379.88037698982,415.46137490477,523.2511306012],description:"Gamelan Degung, Kasepuhan Cheribon. 1/1=250 Hz"},degung5:{frequencies:[261.6255653006,284.24274449773,317.86283634652,388.77066331187,430.33748813761,523.2511306012],description:"Gamelan Degung, Kanoman Cheribon. 1/1=428 Hz"},degung6:{frequencies:[261.6255653006,273.29426590363,298.47415715355,379.54129348313,409.02013274169,523.2511306012],description:"Gamelan Degung, Kacherbonan Cheribon. 1/1=426 Hz"},dekany:{frequencies:[261.6255653006,299.7792935736,305.22982618403,327.03195662575,359.73515228832,381.53728273004,419.69101100305,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"2)5 Dekany 1.3.5.7.11 (1.3 tonic)"},dekany2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,348.83408706747,358.80077526939,398.6675280771,418.60090448096,448.50096908674,465.11211608996,523.2511306012],description:"3)5 Dekany 1.3.5.7.9 (1.3.5.7.9 tonic)"},dekany3:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"2)5 Dekany 1.3.5.7.9 and 3)5 Dekany 1 1/3 1/5 1/7 1/9"},dekany4:{frequencies:[261.6255653006,270.96933548991,288.48890459486,310.68035879446,321.77608589426,355.06326719367,425.14154361347,440.3251701711,474.19633710734,485.87604984397,523.2511306012],description:"2)5 Dekany 1.7.13.19.29 (1.7 tonic)"},dekany_union:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,381.53728273004,392.4383479509,412.06026534844,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Union of 2)5 and 3)5 [ 1 3 5 7 9] dekanies"},dent:{frequencies:[261.6255653006,276.73939277812,293.41671964988,311.13637945111,328.33487278761,349.18153137729,368.9858570375,391.91718148616,414.84850593482,438.82216331296,465.92281947955,491.98114271667,523.2511306012],description:"Tom Dent, well temperament with A=421 Hz. Integer Hz beat rates from A"},dent2:{frequencies:[261.6255653006,276.57667301797,293.18838124587,310.79781949647,328.55897053596,349.10502918563,369.05532299592,391.67735584266,414.54302837239,438.92977277749,465.83490899549,492.45596147139,523.2511306012],description:"Tom Dent, well-temperament, 2/32 and 5/32 comma. TL 3 & 5-9-2005"},dent3:{frequencies:[261.6255653006,276.38325105256,293.15632631094,310.94732162256,328.48713220126,349.22823143301,368.7143392539,391.76907592069,414.58565256441,438.73106346722,466.16376151809,492.17459484008,523.2511306012],description:'Tom Dent, Bach harpsichord "sine wave" temperament, TL 10-10-2005'},deporcy:{frequencies:[261.6255653006,272.52663052146,286.15296204753,299.00064605783,313.95067836072,327.03195662575,348.83408706747,358.80077526939,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,478.40103369253,502.32108537715,523.2511306012],description:"A 15-note chord-based detempering of 7-limit porcupine"},diab19_612:{frequencies:[261.6255653006,267.01398215014,280.33982809972,299.03492334906,305.19382000629,313.95883772326,320.42510414137,327.02455105776,348.83292260574,366.24210002542,373.7851897098,392.43965797471,418.61038382265,427.23204601759,436.03127668087,448.5538823653,457.79225819026,488.32116993744,512.69177642068,523.2511306012],description:"diab19a in 612-tET"},diab19_72:{frequencies:[261.6255653006,266.71173418545,279.86396690685,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,349.22823143301,366.44956000397,373.57357677338,391.99543598175,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,489.15147723638,513.27277840175,523.2511306012],description:"diab19a in 72-tET"},diablack:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,331.11985608357,372.08969287196,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Unique 256/245&2048/2025 Fokker block"},diachrome1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"First 25/24&2048/2025 scale"},diacycle13:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,360.86284869048,373.75080757229,387.59343007496,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"Diacycle on 20/13, 13/10; there are also nodes at 3/2, 4/3; 13/9, 18/13"},diaddim1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,334.88072358477,344.91651675372,357.20610515709,367.91095120397,392.4383479509,418.60090448096,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 2048/2025&2048/1875 scale"},dialim1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,353.19451315581,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 27/25&2048/2025 scale"},diamisty:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,436.53496651643,470.39487098876,496.11959049595,523.2511306012],description:"Diamisty scale 2048/2025 and 67108864/66430125"},diamond11a:{frequencies:[261.6255653006,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,523.2511306012],description:"11-limit Diamond with added 16/15 & 15/8, Zoomoozophone tuning: 1/1 = 392 Hz"},diamond11ak:{frequencies:[261.6255653006,279.72330032405,285.63317938628,287.78812183066,290.69507255622,293.86839138568,299.07491977616,305.39295512204,314.19649759716,319.76457981184,326.52043447049,333.41680553884,335.93301933283,349.10721912206,359.17247822875,366.75848641051,373.2589099097,381.14243472333,392.13131479202,407.50942884268,410.58480125643,419.25667855894,428.11456140098,435.70146034294,448.26139746089,457.73103588952,465.84075338014,470.92601754108,475.68284600109,479.27160679251,489.39746055879,523.2511306012],description:"microtempered version of diamond11a, Dave Keenan TL 11-1-2000, 225/224&385/384"},diamond11at:{frequencies:[261.6255653006,279.83704120119,285.33574350137,287.98268367985,290.84948650387,293.82121114493,299.2738827313,305.22380787491,314.19079532693,320.23980272009,326.48518221507,332.71524733285,336.02719554531,349.1122100506,359.53680125564,366.52331521885,373.4984028396,380.75621844446,392.12570885984,407.39521875769,411.45055399509,419.30194782174,427.47925671618,435.70936791853,448.50981249085,457.42672761267,465.91555560021,470.67599975252,475.36147343465,479.7712027167,489.19854301666,523.2511306012],description:"microtempered version of diamond11a, OdC"},diamond11map:{frequencies:[195.99771799087,228.66400432268,261.33029065449,293.99657698631,326.66286331812,359.32914964993,391.99543598174,457.32800864536,522.66058130899,587.99315397261,653.32572663623,718.65829929986,213.81569235368,249.45164107929,285.0875898049,320.72353853051,356.35948725613,391.99543598174,427.63138470735,498.90328215858,570.1751796098,641.44707706103,712.71897451225,783.99087196348,235.19726158904,274.39680518722,313.59634878539,352.79589238357,391.99543598174,431.19497957991,470.39452317809,548.79361037444,627.19269757078,705.59178476713,783.99087196348,862.38995915983,261.33029065449,304.88533909691,348.44038753932,391.99543598174,435.55048442416,479.10553286657,522.66058130899,609.77067819382,696.88077507865,783.99087196348,871.10096884831,958.21106573314,293.99657698631,342.99600648402,391.99543598174,440.99486547946,489.99429497718,538.99372447489,587.99315397261,685.99201296804,783.99087196348,881.98973095892,979.98858995435,1077.98744894978,335.99608798435,391.99543598174,447.99478397913,503.99413197652,559.99347997391,615.99282797131,671.9921759687,783.99087196348,895.98956795826,1007.98826395305,1119.98695994783,1231.98565594261,783.99087196348],description:"11-limit diamond on a 'centreless' map"},diamond15:{frequencies:[261.6255653006,269.80136421624,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,310.07474405997,313.95067836072,318.85615771011,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,343.38355445704,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,367.91095120397,372.08969287196,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,398.6675280771,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,429.33426100611,436.04260883433,441.49314144476,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,507.3950357345,523.2511306012],description:"15-limit Diamond + 2nd ratios. See Novaro, 1927, Sistema Natural..."},diamond17:{frequencies:[261.6255653006,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,523.2511306012],description:"17-limit Diamond"},diamond17a:{frequencies:[261.6255653006,277.01530443593,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,494.18162334558,523.2511306012],description:"17-limit, +9 Diamond"},diamond19:{frequencies:[261.6255653006,275.39533189537,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,292.40504357126,299.00064605783,302.93486508491,305.22982618403,307.79478270659,309.19384990071,310.68035879446,313.95067836072,317.68818643644,322.00069575458,327.03195662575,330.47439827444,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,355.06326719367,358.01393146398,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,382.37582620857,385.55346465352,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,414.24047839262,418.60090448096,425.14154361347,430.91269578922,436.04260883433,440.63253103259,442.75095666255,444.76346101102,448.50096908674,451.89870370104,457.84473927605,468.17206422213,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,497.08857407114,523.2511306012],description:"19-limit Diamond"},diamond7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"7-limit Diamond, also double-tie circular mirroring of 4:5:6:7"},diamond9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"9-limit Diamond"},diamond_chess:{frequencies:[261.6255653006,299.00064605783,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,457.84473927605,523.2511306012],description:"9-limit chessboard pattern diamond. OdC"},diamond_chess11:{frequencies:[261.6255653006,287.78812183066,299.00064605783,313.95067836072,319.76457981184,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,428.11456140098,436.04260883433,457.84473927605,475.68284600109,523.2511306012],description:"11-limit chessboard pattern diamond. OdC"},diamond_dup:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Two 7-limit diamonds 3/2 apart"},diamond_mod:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"13-tone Octave Modular Diamond, based on Archytas's Enharmonic"},diamond_tetr:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,523.2511306012],description:"Tetrachord Modular Diamond based on Archytas's Enharmonic"},diaphonic_10:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"10-tone Diaphonic Cycle"},diaphonic_12:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Diaphonic Cycle, conjunctive form on 3/2 and 4/3"},diaphonic_12a:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,488.36772189445,523.2511306012],description:"2nd 12-tone Diaphonic Cycle, conjunctive form on 10/7 and 7/5"},diaphonic_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"D5-tone Diaphonic Cycle"},diaphonic_7:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"7-tone Diaphonic Cycle, disjunctive form on 4/3 and 3/2"},diaschismic:{frequencies:[261.6255653006,266.61097723855,278.05603152599,283.35453458855,295.51835494038,301.14961170579,314.07733767684,320.06224556188,333.80185153667,340.16262034629,354.76509561975,369.99442271164,377.04485988831,393.23061088369,400.72382577504,417.92606548687,425.88986517773,444.17243057662,452.63636847719,472.06710558841,481.06259110609,501.71360968203,523.2511306012],description:"diaschismic temperament, g=105.446531, p=600, 5-limit"},diat13:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012],description:"This genus is from K.S's diatonic Hypodorian harmonia"},diat15:{frequencies:[261.6255653006,301.87565226992,327.03195662575,356.76213450082,373.75080757229,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Tonos-15 Diatonic and its own trite synemmenon Bb"},diat15_inv:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,366.27579142084,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"Inverted Tonos-15 Harmonia, a harmonic series from 15 from 30."},diat17:{frequencies:[261.6255653006,296.50897400735,342.12573923925,370.63621750918,386.75083566176,404.33041910093,444.76346101102,494.18162334558,523.2511306012],description:"Tonos-17 Diatonic and its own trite synemmenon Bb"},diat19:{frequencies:[261.6255653006,276.16031892841,310.68035879446,355.06326719367,368.21375857121,382.37582620857,414.24047839262,451.89870370104,523.2511306012],description:"Tonos-19 Diatonic and its own trite synemmenon Bb"},diat21:{frequencies:[261.6255653006,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Tonos-21 Diatonic and its own trite synemmenon Bb"},diat21_inv:{frequencies:[261.6255653006,299.00064605783,323.91736656265,348.83408706747,373.75080757229,398.6675280771,448.50096908674,473.41768959156,523.2511306012],description:"Inverted Tonos-21 Harmonia, a harmonic series from 21 from 42."},diat23:{frequencies:[261.6255653006,286.54228580542,300.86940009569,334.29933343966,353.96400011258,376.08675011961,429.81342870813,462.87600014722,523.2511306012],description:"Tonos-23 Diatonic and its own trite synemmenon Bb"},diat25:{frequencies:[261.6255653006,297.30177875068,327.03195662575,363.36884069528,384.74347838324,408.78994578219,467.18850946536,503.12608711654,523.2511306012],description:"Tonos-25 Diatonic and its own trite synemmenon Bb"},diat27:{frequencies:[261.6255653006,294.32876096318,336.37572681506,353.19451315581,371.78369805875,392.4383479509,441.49314144476,504.56359022259,523.2511306012],description:"Tonos-27 Diatonic and its own trite synemmenon Bb"},diat27_inv:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,377.90359432309,387.59343007496,406.97310157871,465.11211608996,523.2511306012],description:"Inverted Tonos-27 Harmonia, a harmonic series from 27 from 54"},diat29:{frequencies:[261.6255653006,291.81313052759,316.13089140489,344.87006335079,361.29244731988,379.35706968587,421.50785520652,474.19633710734,523.2511306012],description:"Tonos-29 Diatonic and its own trite synemmenon Bb"},diat31:{frequencies:[261.6255653006,289.65687586852,311.93817401225,337.93302184661,352.6257619269,368.65420565085,405.51962621593,450.57736246214,523.2511306012],description:"Tonos-31 Diatonic. The disjunctive and conjunctive diatonic forms are the same"},diat33:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,375.37581108347,392.4383479509,431.68218274599,479.64686971777,523.2511306012],description:"Tonos-33 Diatonic. The conjunctive form is 23 (Bb instead of B) 20 18 33/2"},diat_chrom:{frequencies:[261.6255653006,280.31310567921,301.87565226992,348.83408706747,392.4383479509,420.46965851882,452.81347840488,523.2511306012],description:"Diatonic- Chromatic, on the border between the chromatic and diatonic genera"},diat_dies2:{frequencies:[261.6255653006,266.71168334607,311.12698372208,349.22823143301,391.99543598175,399.61600264311,466.16376151809,523.2511306012],description:"Dorian Diatonic, 2 part Diesis"},diat_dies5:{frequencies:[261.6255653006,274.52693220706,311.12698372208,349.22823143301,391.99543598175,411.32564531909,466.16376151809,523.2511306012],description:"Dorian Diatonic, 5 part Diesis"},diat_enh:{frequencies:[261.6255653006,269.29177952703,311.12698372208,349.22823143301,391.99543598175,403.48177901006,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode"},diat_enh2:{frequencies:[261.6255653006,269.29177952703,302.26980244078,349.22823143301,391.99543598175,403.48177901006,452.89298412314,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode 3 + 12 + 15 parts"},diat_enh3:{frequencies:[261.6255653006,302.26980244078,311.12698372208,349.22823143301,391.99543598175,452.89298412314,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 3 + 12 parts"},diat_enh4:{frequencies:[261.6255653006,302.26980244078,339.28638158975,349.22823143301,391.99543598175,452.89298412314,508.3551866238,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 12 + 3 parts"},diat_enh5:{frequencies:[261.6255653006,293.66476791741,339.28638158975,349.22823143301,391.99543598175,440,508.3551866238,523.2511306012],description:"Dorian Mode, 12 + 15 + 3 parts"},diat_enh6:{frequencies:[261.6255653006,293.66476791741,302.26980244078,349.22823143301,391.99543598175,440,452.89298412314,523.2511306012],description:"Dorian Mode, 12 + 3 + 15 parts"},diat_eq:{frequencies:[261.6255653006,288.06466200271,317.1754314895,349.22823143301,391.99543598175,431.60932167676,475.22619361214,523.2511306012],description:"Equal Diatonic, Islamic form, similar to 11/10 x 11/10 x 400/363"},diat_eq2:{frequencies:[261.6255653006,287.78812183066,317.12189733406,348.83408706747,392.4383479509,431.68218274599,475.68284600109,523.2511306012],description:"Equal Diatonic, 11/10 x 400/363 x 11/10"},diat_gold:{frequencies:[261.6255653006,292.38332274669,326.75708630452,349.99258496952,391.13935185123,437.1232727958,488.51296691354,523.2511306012],description:"Diatonic scale with ratio between whole and half tone the Golden Section"},diat_hemchrom:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"Diat. + Hem. Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_smal:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:'"Smallest number" diatonic scale'},diat_sofchrom:{frequencies:[261.6255653006,271.8968348557,311.12698372208,349.22823143301,391.99543598175,407.38495184466,466.16376151809,523.2511306012],description:"Diat. + Soft Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_soft:{frequencies:[261.6255653006,274.52693220706,302.26980244078,349.22823143301,391.99543598175,411.32564531909,452.89298412314,523.2511306012],description:"Soft Diatonic genus 5 + 10 + 15 parts"},diat_soft2:{frequencies:[261.6255653006,281.2143451833,302.26980244078,349.22823143301,391.99543598175,421.34544350737,452.89298412314,523.2511306012],description:"Soft Diatonic genus with equally divided Pyknon; Dorian Mode"},diat_soft3:{frequencies:[261.6255653006,281.2143451833,324.90175210669,349.22823143301,391.99543598175,421.34544350737,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},diat_soft4:{frequencies:[261.6255653006,302.26980244078,324.90175210669,349.22823143301,391.99543598175,452.89298412314,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},dicot:{frequencies:[261.6255653006,270.35822989652,294.32876096318,320.42456924675,331.11985608357,360.47764004221,392.4383479509,405.53734464206,441.49314144476,480.63685362987,523.2511306012],description:"Dicot temperament, g=350.9775, 5-limit"},didy_chrom:{frequencies:[261.6255653006,279.06726965397,290.69507255622,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Didymus Chromatic"},didy_chrom1:{frequencies:[261.6255653006,279.06726965397,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Permuted Didymus Chromatic"},didy_chrom2:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,470.92601754108,490.54793493862,523.2511306012],description:"Didymos's Chromatic, 6/5 x 25/24 x 16/15"},didy_chrom3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,392.4383479509,408.78994578219,436.04260883433,523.2511306012],description:"Didymos's Chromatic, 25/24 x 16/15 x 6/5"},didy_diat:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,418.60090448096,465.11211608996,523.2511306012],description:"Didymus Diatonic"},didy_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Inverse Didymus Diatonic, variant of Ptolemy with 2 identical triads"},didy_enh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Dorian mode of Didymos's Enharmonic"},didy_enh2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,348.83408706747,392.4383479509,413.43299207996,418.60090448096,523.2511306012],description:"Permuted Didymus Enharmonic"},"diesic-m":{frequencies:[261.6255653006,289.62525622617,320.62153003931,354.93508703008,392.92094947462,434.97213484265,481.52372211906,523.2511306012],description:"Minimal Diesic temperament, g=176.021, 5-limit"},"diesic-t":{frequencies:[261.6255653006,272.92239980638,281.87304203955,294.04415210774,303.68749398125,316.80053726141,327.19018747082,337.92057205022,352.51178108166,364.07260143821,379.79303732838,392.24856169057,409.18561859271,422.60509148244,436.46466102477,455.31094249407,470.24311865111,490.54793493862,506.63572944675,523.2511306012],description:"Tiny Diesic temperament, g=443.017, 5-limit"},diff31_72:{frequencies:[261.6255653006,269.29177952703,274.52698453615,279.86396690685,285.30470202322,293.66476791741,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,336.03572815422,342.56848033562,352.60650301302,356.01745236555,366.44956000397,373.57357677338,384.52011812375,388.23978476841,399.61607881612,407.38487419079,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,508.3551866238,523.2511306012],description:"Diff31, 11/9, 4/3, 7/5, 3/2, 7/4, 9/5 difference diamond, tempered to 72-et"},dimteta:{frequencies:[261.6255653006,282.55561052465,307.12566361375,336.37572681506,406.97310157871,439.53094970501,477.75103228805,523.2511306012],description:"A heptatonic form on the 9/7"},dimtetb:{frequencies:[261.6255653006,294.32876096318,336.37572681506,406.97310157871,457.84473927605,523.2511306012],description:"A pentatonic form on the 9/7"},div_fifth1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #1, From Schlesinger, see Chapter 8, p. 160"},div_fifth2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #2, From Schlesinger, see Chapter 8, p. 160"},div_fifth3:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #3, From Schlesinger, see Chapter 8, p. 160"},div_fifth4:{frequencies:[261.6255653006,274.70684356563,305.22982618403,343.38355445704,392.4383479509,523.2511306012],description:"Divided Fifth #4, From Schlesinger, see Chapter 8, p. 160"},div_fifth5:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,523.2511306012],description:"Divided Fifth #5, From Schlesinger, see Chapter 8, p. 160"},dkring1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,320.49131749323,327.03195662575,366.27579142084,392.4383479509,439.53094970501,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 4:5:6:7"},dkring2:{frequencies:[261.6255653006,274.70684356563,305.22982618403,329.64821227876,336.37572681506,353.19451315581,366.27579142084,392.4383479509,406.97310157871,427.32175665765,436.04260883433,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 3:5:7:9"},dkring3:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,348.83408706747,384.42940207435,392.4383479509,398.6675280771,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"Double-tie circular mirroring of 6:7:8:9"},dkring4:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,327.03195662575,336.37572681506,367.91095120397,373.75080757229,378.42269266694,420.46965851882,467.18850946536,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 7:8:9:10"},dodeceny:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Degenerate eikosany 3)6 from 1.3.5.9.15.45 tonic 1.3.15"},dorian_chrom:{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,315.92521092903,322.00069575458,348.83408706747,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,620.14948811994,631.85042185805,644.00139150917,697.66817413493,761.09255360175,797.33505615421,816.78225264578,837.20180896192,930.22423217991,1046.5022612024],description:"Dorian Chromatic Tonos"},dorian_chrom2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the chromatic genus"},dorian_chrominv:{frequencies:[261.6255653006,273.00058987889,285.40970760065,332.97799220076,380.54627680087,404.33041910093,428.11456140098,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Dorian inverted"},dorian_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,669.76144716954,697.66817413493,728.00157301037,761.09255360175,837.20180896192,881.26506206518,930.22423217991,984.94330466108,1046.5022612024],description:"Dorian Diatonic Tonos"},dorian_diat2:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,442.75095666255,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Harmonia, a subharmonic series through 13 from 22"},dorian_diat2inv:{frequencies:[261.6255653006,285.40970760065,309.19384990071,332.97799220076,356.76213450082,380.54627680087,428.11456140098,475.68284600109,523.2511306012],description:"Inverted Schlesinger's Dorian Harmonia, a harmonic series from 11 from 22"},dorian_diatcon:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,479.64686971777,523.2511306012],description:"A Dorian Diatonic with its own trite synemmenon replacing paramese"},dorian_diatred11:{frequencies:[261.6255653006,287.78812183066,316.56693401373,348.83408706747,392.4383479509,431.68218274599,474.85040102059,523.2511306012],description:"Dorian mode of a diatonic genus with reduplicated 11/10"},dorian_enh:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,310.07474405997,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012,558.13453930795,598.00129211566,608.8740428814,614.4600432748,620.14948811994,697.66817413493,761.09255360175,778.79238042969,787.95464372887,797.33505615421,930.22423217991,1046.5022612024],description:"Dorian Enharmonic Tonos"},dorian_enh2:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the enharmonic genus"},dorian_enhinv:{frequencies:[261.6255653006,267.19206668997,273.00058987889,332.97799220076,380.54627680087,392.4383479509,404.33041910093,523.2511306012],description:"A harmonic form of Schlesinger's Dorian enharmonic inverted"},dorian_pent:{frequencies:[261.6255653006,271.49822814213,287.78812183066,359.73515228832,411.12588832951,423.21782622156,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the pentachromatic genus"},dorian_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the Dorian Tonos, a non-rep. 16 tone gamut"},dorian_schl:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Piano Tuning (Sub 22)"},dorian_tri1:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,411.12588832951,421.15334902048,431.68218274599,523.2511306012],description:"Schlesinger's Dorian Harmonia in the first trichromatic genus"},dorian_tri2:{frequencies:[261.6255653006,269.80136421624,287.78812183066,359.73515228832,411.12588832951,421.15334902048,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the second trichromatic genus"},douwes:{frequencies:[261.6255653006,273.00058987889,292.50063201309,313.39353429974,327.01933943691,350.37786403433,365.61168556196,391.72680409,408.75840577964,436.81779569448,468.01906681552,488.36772189445,523.2511306012],description:"Claas Douwes recommendation of 24/23 and 15/14 steps for clavichord (1699)"},dow_high:{frequencies:[261.6255653006,277.01530443593,278.50463402967,294.32876096318,308.34441624714,313.31771328338,327.34193952303,331.11985608357,346.88746827803,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707],description:"Highest octave of Dowlands lute tuning, strings 5,6. 1/1=G (1610)"},dow_lmh:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012,548.16785110602,557.00926805934,581.94122581871,588.65752192635,616.68883249427,620.14948811994,626.63542656676,656.62886977405,662.23971216714,693.77493655606,697.66817413493,736.51936392681,742.67902407912,784.8766959018,822.25177665903,831.04591330779,835.51390208901,882.98628288953,925.03324874141,939.95313985014,982.02581856908,993.35956825072,1040.66240483408,1046.5022612024,1108.06121774372,1114.01853611868,1177.3150438527,1233.37766498854,1253.27085313352,1309.3677580921,1324.47942433429,1387.54987311211,1395.33634826987,1477.41495699162,1569.7533918036,1671.02780417803,1765.97256577905,1850.06649748281],description:"All three octaves of Dowland's lute tuning"},dow_low:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012],description:"Lowest octave of Dowlands lute tuning, strings 1,2,3. 1/1=G. (1610)"},dow_middle:{frequencies:[261.6255653006,274.08392555301,278.50463402967,290.97061290936,294.32876096318,308.34441624714,310.07474405997,313.31771328338,328.31443488703,331.11985608357,346.88746827803,348.83408706747,368.2596819634,371.33951203956,392.4383479509,411.12588832951,415.52295665389,417.75695104451,441.49314144476,462.5166243707,469.97656992507,491.01290928454,496.67978412536,520.33120241704,523.2511306012],description:"Middle octave of Dowlands lute tuning, strings 3,4,5. 1/1=G (1610)"},dowland_12:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707,492.47165233054,523.2511306012],description:"subset of Dowland's lute tuning, lowest octave"},druri:{frequencies:[261.6255653006,285.79952600623,326.97270111135,357.18467683857,523.2511306012],description:"Scale of druri dana of Siwoli, south Nias, Jaap Kunst"},dudon_a:{frequencies:[261.6255653006,285.85015468029,319.76457981184,348.83408706747,392.4383479509,428.77523202043,479.64686971777,523.2511306012],description:"Dudon Tetrachord A"},dudon_b:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,482.37213602298,523.2511306012],description:"Dudon Tetrachord B"},dudon_c12:{frequencies:[261.6255653006,302.50455987882,327.03195662575,343.38355445704,392.4383479509,425.14154361347,474.19633710734,523.2511306012],description:"Differentially coherent scale in interval class 1 and 2"},dudon_diat:{frequencies:[261.6255653006,294.32876096318,321.08592105074,350.8160989258,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Dudon Neutral Diatonic"},dudon_moha_baya:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Mohajira + Bayati (Dudon) 3 + 4 + 3 Mohajira and 3 + 3 + 4 Bayati tetrachords"},dudon_mohajira:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Dudon's Mohajira, two 3 + 4 + 3 tetrachords, neutral diatonic"},dudon_mohajira_r:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"Jacques Dudon, JI Mohajira, Lumi\xEF\xBF\xBDres audibles"},dudon_thai:{frequencies:[261.6255653006,288.26147859917,317.63518509943,350.43752981487,386.47021463976,426.17461277719,469.97930400405,523.2511306012],description:"Dudon, coherent Thai heptatonic scale, 1/1 vol. 11/2, 2003"},dudon_thai2:{frequencies:[261.6255653006,288.02814528506,314.43072526953,347.1339209321,383.13743909274,422.44127975143,475.35895071461,523.2511306012],description:"Slightly better version, 3.685 cents deviation"},dudon_thai3:{frequencies:[261.6255653006,291.60349465796,321.58142401532,354.2846196779,394.48229767981,434.67997568173,478.96555314146,523.2511306012],description:"Dudon, Thai scale with two 704/703 = 2.46 c. deviations and simpler numbers"},duncan:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Dudley Duncan's Superparticular Scale"},duoden12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Almost equal 12-tone subset of Duodenarium"},duodenarium:{frequencies:[14.56761754744,14.73307690724,14.74971276678,14.91724036858,14.98726085128,15.00418372272,15.10370587319,15.17460161192,15.19173601925,15.34695511171,15.36428413207,15.5387920506,15.55633768372,15.71528203439,15.73302695124,15.80687667908,15.91172305982,15.92968978813,16.00446263757,16.18624171938,16.20451842054,16.38856974087,16.57471152064,16.59342686263,16.78189541465,16.86066845769,16.87970668806,16.99166910733,17.07142681341,17.26532450067,17.28481964857,17.48114105693,17.67969228869,17.69965532014,17.78273626396,17.90068844229,17.98471302153,18.00502046726,18.2095219343,18.41634613405,18.43714095848,18.64655046072,18.73407606409,18.85833844126,18.87963234148,18.9682520149,18.98967002407,19.18369388963,19.20535516508,19.42349006325,19.44542210465,19.64410254298,19.66628368904,19.88965382477,19.91211223516,20.00557829696,20.13827449758,20.23280214922,20.25564802567,20.48571217609,20.7183894008,20.74178357829,20.97736926831,21.07583557211,21.21563074642,21.23958638417,21.33928351676,21.58165562584,21.60602456072,21.85142632116,22.09961536086,22.12456915017,22.37586055287,22.48089127691,22.50627558408,22.65555880978,22.76190241787,23.02043266756,23.0464261981,23.3081880759,23.57292305158,23.59954042685,23.71031501862,23.86758458973,23.97961736204,24.00669395635,24.27936257907,24.30677763081,24.55512817873,24.5828546113,24.86206728096,24.89014029395,25.14445125502,25.17284312198,25.29100268653,25.31956003209,25.487503661,25.60714022011,25.897986751,25.92722947286,26.22171158539,26.51953843303,26.54948298021,26.67410439595,26.85103266344,26.9770695323,27.0075307009,27.31428290145,27.62451920107,27.65571143772,27.96982569108,28.10111409614,28.2875076619,28.31944851222,28.45237802234,28.77554083445,28.80803274762,29.13523509488],description:"Ellis's Duodenarium : genus [3^12 5^8]"},duodene:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Duodene : genus [33355]"},"duodene14-18-21":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"14-18-21 Duodene"},"duodene3-11_9":{frequencies:[261.6255653006,285.40970760065,294.32876096318,319.76457981184,321.08592105074,348.83408706747,359.73515228832,392.4383479509,426.35277308246,428.11456140098,479.64686971777,481.6288815761,523.2511306012],description:"3-11/9 Duodene"},"duodene3-7":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"3-7 Duodene"},"duodene6-7-9":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"6-7-9 Duodene"},duodene_min:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Minor Duodene"},"duodene_r-45":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,353.19451315581,376.74081403286,401.85686830172,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated -45 degrees"},duodene_r45:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,313.95067836072,334.88072358477,383.2405741708,408.78994578219,436.04260883433,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 45 degrees"},duodene_r90:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 90 degrees: genus [33555]"},duodene_skew:{frequencies:[261.6255653006,282.55561052465,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rotated 6/5x3/2 duodene"},duodene_t:{frequencies:[261.6255653006,279.3825857701,293.66476791741,313.59634948548,327.03195662575,349.22823143301,367.08095907728,391.99543598175,418.60090448096,436.53528831673,469.86362971679,489.99429388332,523.2511306012],description:"Duodene with equal tempered fifths"},duowell:{frequencies:[261.6255653006,278.41172412276,294.03623226919,312.90189200955,327.96500300935,349.00756672938,368.59392213143,392.24328034087,417.4100028405,437.50413894442,469.11953885575,491.70297432358,523.2511306012],description:"Ellis duodene well-tuned to fifth=(7168/11)^(1/16) third=(11/7)^(1/2)"},dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},cairo:{frequencies:[261.6255653006,269.38381929633,276.03456984659,285.15047989166,293.63138642043,300.85736580106,309.799366845,312.20234522745,320.03127253896,327.93377450564,337.66851484331,348.83408706747,357.41197445437,367.9166999024,380.21445327801,392.4383479509,401.02017979859,414.62054722758,417.26565438692,427.77234352616,440.44707963064,451.93568025669,468.86302025197,480.04690880844,491.77737838459,510.98743222773,523.2511306012],description:"P.42, of d'Erlanger, vol.5. Congress of Arabic Music, Cairo, 1932"},canright:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:`David Canright's piano tuning for "Fibonacci Suite" (2001)`},carlos_alpha:{frequencies:[261.6255653006,273.68256372566,286.29520819723,299.48910562989,313.29104303136,327.729041887,342.83241505062,358.63182625716,375.1593523779,392.44854854484,410.5345162762,429.45397474154,449.24533531117,469.94877954106,491.60634075178,514.26198936695,537.96172218451,562.75365576207,588.68812410589],description:"Wendy Carlos' Alpha scale with perfect fifth divided in nine"},carlos_alpha2:{frequencies:[261.6255653006,267.58616452957,273.68256372566,279.91785681123,286.29520819723,292.81785438923,299.48910562989,306.31234757893,313.29104303136,320.42873367481,327.729041887,335.19567257401,342.83241505062,350.6431449633,358.63182625716,366.8025131876,375.1593523779,383.7065849236,392.44854854484,401.3896797878,410.5345162762,419.88769901416,429.45397474154,439.23819834286,449.24533531117,459.48046426806,469.94877954106,480.6555937997,491.60634075178,502.8065779009,514.26198936695,525.97838877075,537.96172218451,550.21807114943,562.75365576207,575.57483783111,588.68812410589],description:"Wendy Carlos' Alpha prime scale with perfect fifth divided by eightteen"},carlos_beta:{frequencies:[261.6255653006,271.44693432634,281.63699549204,292.20958942356,303.17907632096,314.56035546319,326.36888544505,338.62070517372,351.33245565363,364.52140258903,378.2054598351,392.40321372938,407.13394833666,422.41767164147,438.27514272393,454.72789995564,471.7982902542,489.50949943583,507.88558370741,526.95150234083,546.73315157381,567.25739978343,588.55212398003],description:"Wendy Carlos' Beta scale with perfect fifth divided by eleven"},carlos_beta2:{frequencies:[261.6255653006,266.49100855797,271.44693432634,276.49502530642,281.63699549204,286.87459075215,292.20958942356,297.64380291476,303.17907632096,308.81728905054,314.56035546319,320.41022551991,326.36888544505,332.43835840072,338.62070517372,344.91802487526,351.33245565363,357.86617542024,364.52140258903,371.30039682974,378.2054598351,385.23893610237,392.40321372938,399.70072522531,407.13394833666,414.70540688852,422.41767164147,430.27336116448,438.27514272393,446.42573318931,454.72789995564,463.18446188312,471.7982902542,480.57230974851,489.50949943583,498.61289378764,507.88558370741,517.33071758003,526.95150234083,536.75120456442,546.73315157381,556.90073257014,567.25739978343,577.80666964473,588.55212398003],description:"Wendy Carlos' Beta prime scale with perfect fifth divided by twentytwo"},carlos_gamma:{frequencies:[261.6255653006,266.98388983977,272.45195763676,278.03201633122,283.72635959645,289.53732808222,295.4673103769,301.51874398927,307.69411635045,313.99596583639,320.42688281121,326.98951069203,333.68654703547,340.52074464653,347.49491271011,354.6119179457,361.87468578579,369.2862015783,376.84951181374,384.56772537748,392.44401482761,400.48161769905,408.68383783428,417.05404674148,425.59568498025,434.31226357598,443.20736546293,452.28464695708,461.547839259,471.00074998758,480.64726474513,490.49134871455,500.53704828923,510.78849273629,521.24989589392,531.92555790347],description:"Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty"},carlos_harm:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'"},carlos_super:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Super Just"},carlson:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Brian Carlson's guitar scale (or 7 is 21/16 instead) fretted by Mark Rankin"},cassandra1:{frequencies:[261.6255653006,265.52313139125,271.43629763673,275.48001908354,279.58398024378,283.7490817683,290.06813927787,294.38942683035,298.7750924519,305.42877739024,309.97889991383,314.59680966486,319.28351286859,326.39391783308,331.25637026535,336.19125912653,343.67819754196,348.79814248043,353.99435973883,359.26798967332,367.26884406885,372.74022844163,378.29312490007,386.71766674112,392.47878977853,398.32574139651,407.19640716832,413.26261206104,419.41919061043,425.66748431192,435.14704737009,441.62964923022,448.20882304357,458.19037897128,465.01626879626,471.9438445688,478.97462660712,489.64133323501,496.93576068834,504.33885972365,515.57042175735,523.2511306012],description:"Cassandra temperament (Erv Wilson), 13-limit, g=497.866"},cassandra2:{frequencies:[261.6255653006,265.34593985135,270.18130909623,275.10479273152,279.0168449367,284.10133754875,289.27848429833,293.3920895946,298.7385406747,304.18241953205,309.72550158209,314.12986807617,319.85422136322,325.68288889698,330.31417303802,336.33345109576,342.46241778116,348.70307193775,353.66170827405,360.10644584283,366.66862514012,371.88273569526,378.65951299923,385.5597827545,392.58579535013,398.16845391153,405.42423290482,412.81223314336,418.68251621245,426.31212065787,434.08075852776,440.25348482514,448.27617460765,456.44506096456,464.76280801961,471.37183998139,479.96159605313,488.70788228454,495.65741860341,504.6897280454,513.8866322474,523.2511306012],description:"Cassandra temperament, schismic variant, 13-limit, g=497.395"},catler:{frequencies:[261.6255653006,269.80136421624,279.06726965397,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,322.00069575458,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,418.60090448096,425.14154361347,436.04260883433,441.49314144476,457.84473927605,465.11211608996,483.00104363188,490.54793493862,523.2511306012],description:'Catler 24-tone JI from "Over and Under the 13 Limit", 1/1 3(3)'},cbrat19:{frequencies:[261.6255653006,272.05448646742,281.65887246066,291.7164960911,303.76422848609,314.23522436032,325.78124145721,339.14379232251,350.05979530932,364.18597952318,377.95660802413,389.93691761381,406.2330981776,420.87727247778,436.65546295526,454.14747622901,467.92430113657,486.684954898,506.27371414348,523.2511306012],description:"brats = -1 -1 -1 -1 -1 -1 -1 -1 0 3/7 390808/591947 1/2 1/2 1/2 1/2 1/4 0 0 -1"},ceb88f:{frequencies:[261.6255653006,275.30280934529,289.60851057007,304.80308899558,320.69584574771,337.31885569235,354.97473368038,373.44187862432,393.05647479461,413.57234190108,435.03089105397,457.82276134277,481.66189358475,506.59641128799],description:"88 cents steps with equal beating fifths"},ceb88s:{frequencies:[261.6255653006,275.27750547448,289.60710371138,304.74878776577,320.64207659236,337.32428016541,354.95189689869,373.45451504132,392.8755714351,413.39725679488,434.93759942207,457.54716438978,481.43806014345,506.51485544552,533.01280425363],description:"88 cents steps with equal beating sevenths"},ceb88t:{frequencies:[261.6255653006,275.20384442973,289.60910777612,304.54100616185,320.3823320487,337.18847246966,354.60902163481,373.09056856306,392.69773188536,413.02170471677,434.58350960486,457.45853552679,481.16983689269,506.32527343025,533.01280425363],description:"88 cents steps with equal beating 7/6 thirds"},cet105:{frequencies:[261.6255653006,277.98437592617,295.36606150822,313.83458334354,333.45789502888,354.30820661869,376.46223533368,400.00150378562,425.01262301844,451.58762919357,479.82430313337,509.82655042708,541.70476218406,575.57624366132],description:"Equal temperament with very good 6/5 and 13/8"},cet105a:{frequencies:[261.6255653006,278.09098920184,295.59266404146,314.19580976213,333.96974580612,354.98815389674,377.32935907335,401.07660961589,426.31839262878,453.14877154631,481.66772230429,511.98151233648,544.20310589723,578.45256778249,614.85751848055,653.5536209391,694.68506540856,738.40511604959,784.8766959018],description:"18th root of 3"},cet111:{frequencies:[261.6255653006,279.02234237845,297.57591715819,317.3632108372,338.46625752841,360.97255206362,384.97540137331,410.57431878206,437.87543474729,466.99193686517,498.04453913461,531.16197935691,566.48156495049,604.14972437838,644.32262592407,687.16682227215,732.8599410185,781.59142109591,833.56329335333,888.99103711409,948.10444554232,1011.14859670036,1078.38486510237,1150.09200534594,1226.56730779978,1308.127826503],description:'25th root of 5, Karlheinz Stockhausen in "Studie II" (1954)'},cet111a:{frequencies:[261.6255653006,279.09119608948,297.72279782842,317.59821198502,338.80046946076,361.41815173468,385.54574794778,411.2840547398,438.74060487161,468.03009995854,499.27490936609,532.60556349815,568.16130614457,606.09068659426,646.55215742719,689.71476370538,735.75882016749,784.8766959018],description:"17th root of 3. McLaren 'Microtonal Music', volume 1, track 8"},cet112:{frequencies:[261.6255653006,279.13807488234,297.82282461384,317.75828292395,339.02816520012,361.72179601836,385.93447726538,411.76789245756,439.33052439618,468.73812456399,500.11419015728,533.59048802364,569.30759588159,607.4155105893,648.07426630787,691.45461344743,737.73872000797,787.12095980595,839.80871352279,896.02324851892,956.00062766807,1019.99273078287,1088.26829265547,1161.11404316696,1238.83588500259,1321.76021726874,1410.23528064063,1504.63263477595,1605.34868446028,1712.8063948195,1827.45703443292,1949.78208984359,2080.29524321777,2219.54459500735,2368.11492276755,2526.63016208001,2695.75596930795,2876.20260183901,3068.72784518,3274.14022786751,3493.30234242079,3727.13457771193,3976.61891204907,4242.80307922676,4526.8048719912,4829.81697864182,5153.11189830808,5498.04733953642,5866.07179694692,6258.73081875602,6677.6733762505,7124.65885956048,7601.56430418436,8110.3925243186],description:"53rd root of 31. McLaren 'Microtonal Music', volume 4, track 16"},cet114:{frequencies:[261.6255653006,279.47933554513,298.55147893584,318.92513586406,340.68912750315,363.93832870511,388.77409689134,415.30469757995,443.64579124771,473.92093172942,506.26209616971,540.81027939262,577.71608583803,617.1404103833,659.25511382574,704.24379572788,752.30258557703,803.64098403142,858.48280642307,917.06712239825,979.64933665453,1046.5022612024],description:"21st root of 4"},cet115:{frequencies:[261.6255653006,279.68949451567,299.00064605783,319.64513593742,341.71502406609,365.30872604057,390.53145607553,417.49568846357,446.32166408632,477.13792869952,510.08190181294],description:"2nd root of 8/7. Werner Linden, Musiktheorie, 2003 no.1 midi 15.Eb=19.44544 Hz"},cet117:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82340237272,513.27277840175,549.0539690723,587.32953583482,628.27336308449,672.07145630843,718.92279942609,769.0402362475,822.65144744826,880,941.34642612261,1006.96941915374,1077.1671181081,1152.25842837255,1232.58448551457,1318.51022765149,1410.42601205207,1508.74940691646,1613.92711604023,1726.4369576214,1846.79005749489,1975.53320502451,2113.25127526858,2260.56991361642,2418.15841952625,2586.73271138559,2767.05861265008,2959.95538169309],description:"72nd root of 128, step = generator of Miracle"},cet118:{frequencies:[261.6255653006,280.22072913446,300.13755324878,321.46997343155,344.3186075731,368.79121945838,395.0032340925,423.07827792492,453.14877154631,485.35654007358,519.85349135637,556.8023269521,596.37732215892,638.76512932755,684.16567043124,732.79307276157,784.8766959018],description:"16th root of 3. McLaren 'Microtonal Music', volume 1, track 7"},cet126:{frequencies:[261.6255653006,281.50639381697,302.89795903081,325.91506125677,350.68122444233,377.32935907335,406.00247545366,436.85445118639,470.05085697597,505.76984518255,544.20310589723,585.55689566922,630.05314440547,677.93064638327,729.44634176744,784.8766959018],description:"15th root of 3. McLaren 'Microtonal Music', volume 1, track 6"},cet126a:{frequencies:[261.6255653006,281.42815779395,302.72962012827,325.64340264099,350.29154279212,376.80531512858,405.32593044476,436.00528786292,469.00678383895,504.50618240233,542.69254813034,583.76926541313,627.95510352048,675.48539363125,726.61327927927,781.61106458091,840.77166451082,904.41016494992,972.86550081423,1046.5022612024],description:"19th root of 4"},cet133:{frequencies:[261.6255653006,282.54488373859,305.13688994853,329.53533037111,355.88464567857,384.34082587483,415.07233376839,448.26110228542,484.10361152681,522.81205194575,564.61558053174,609.76167743791,658.5176110828,711.17202040031],description:"13th root of e"},cet140:{frequencies:[261.6255653006,283.72172983292,307.68407293041,333.67021037701,361.85106232365,392.4119924075,425.55401329039,461.49511402661,500.47170241421,542.7401414615,588.57845795114,638.28815062634,692.19618110881,750.65713728047,814.05554253056,882.80839491877,957.36792629418,1038.22454144983,1125.91008648826,1221.00130775733,1324.12366033919,1435.95544645068,1557.23222387914,1688.75170820144,1831.3789571042],description:"24th root of 7"},cet141:{frequencies:[261.6255653006,283.85429714132,307.97166902637,334.13814720468,362.52783176564,393.32961502355,426.7484383229,463.0066556268,502.34551296122,545.02675670673,591.33436279611,641.57644431325,696.08728968715,755.22958979995,819.39685117042,889.01601417107,964.55029369918,1046.5022612024],description:"17th root of 4"},cet146:{frequencies:[261.6255653006,284.69629445872,309.80145226022,337.12043918596,366.84847565362,399.19799705513,434.40017432099,472.70655602525,514.39088038704,559.75102196641,609.11112257023,662.82390755693,721.27320639821,784.8766959018],description:"13th root of 3, Bohlen-Pierce approximation"},cet148:{frequencies:[261.6255653006,284.92791524313,310.30575035912,337.94392545772,368.04376529149,400.82452432448,436.52498800167,475.40520223986,517.74838217475,563.86296895784,614.08486606944,668.77990486322,728.34649714081,793.21854485147,863.86858278563,940.81124699851,1024.60701225804,1115.86625569541,1215.25373699679,1323.49342609599,1441.37375222579,1569.7533918036],description:"21th root of 6, Moreno's C-21"},cet152:{frequencies:[261.6255653006,285.70808394691,312.0073878821,340.72733440875,372.0911362405,406.34196228781,443.74556186468,484.59214639302,529.19833545193,577.91081034511,631.10724720728,689.20039277289,752.64098693245,821.92125998587],description:"13th root of pi"},cet158:{frequencies:[261.6255653006,286.70831230381,314.19580976213,344.3186075731,377.32935907335,413.50494015483,453.14877154631,496.5933637384,544.20310589723,596.37732215892,653.5536209391,716.21156534988,784.8766959018],description:`12th root of 3, Moreno's A-12, see dissertation "Embedding Equal Pitch Spaces.`},cet159:{frequencies:[261.6255653006,286.82842069679,314.45911373416,344.75151869218,377.96204482418,414.37180231943,454.28897403052,498.05144066897,546.02962057131],description:"4e-th root of e. e-th root of e is highest x-th root of x"},cet160:{frequencies:[261.6255653006,286.95745534843,314.74210513576,345.21700307457,378.64263238751,415.30469757995,455.51656649021,499.62194879119,547.99783383788,601.05771297194,659.25511382574,723.0874768355,793.10040709753,869.89233791055,954.11964586525,1046.5022612024],description:'15th root of 4, Rudolf Escher in "The Long Christmas Dinner" (1960)'},cet160a:{frequencies:[261.6255653006,287.06963246392,314.98822873932,345.62201499981,379.23505183234,416.11708252541,456.58602635137,500.99072933585,549.71395617638,603.17569602575,661.83679400878,726.20290371434,796.8288589228,874.32344802967,959.35468153537,1052.65552131526,1155.03021091382,1267.36122959081,1390.6168610076,1525.85955590014,1674.2551187631,1837.08270650821,2015.74588766663,2211.78472029595,2426.88907720145,2662.91313932742,2921.89140956529,3206.0563044734,3517.85730085803,3859.98211320646,4235.37982185266,4647.28638964387,5099.2524155536,5595.17379976366,6139.32543031277,6736.39784717273,7391.53779523322,8110.3925243186],description:"37th root of 31. McLaren 'Microtonal Music', volume 2, track 7"},cet163:{frequencies:[261.6255653006,287.45276480522,315.82957660097,347.00769742017,381.26366336311,418.90131810157,460.25449359467,505.68997636603,555.61077020009,610.45965236807],description:'9th root of 7/3. Jeff Scott in "Quiet Moonlight" (2001)'},cet163a:{frequencies:[261.6255653006,287.41152361975,315.7389582221,346.85836204295,381.04491126651,418.60090448096,459.85843616195,505.18233428314,554.97338050766],description:"5th root of 8/5"},cet166:{frequencies:[261.6255653006,287.95619440582,316.93680165166,348.83408706747],description:"3rd root of 4/3"},cet173:{frequencies:[261.6255653006,289.10449173793,319.46957112932,353.02394045842,390.10257564198,431.07563562091,476.35215768611,526.38414093011,581.67105858963,642.7648443263,710.27540222401,784.8766959018],description:"11th root of 3, Moreno's A-11"},cet175:{frequencies:[261.6255653006,289.48414624674,320.30918244523,354.41654988346,392.15575985798,433.91353804458,480.11779720922,531.2420078798,587.8100594825,650.40162657281,719.65810898332,796.28920449429,881.08018137935,974.89992535123,1078.70983713651,1193.57370864212,1320.66858845324,1461.29686662697,1616.89961515233,1789.07135516847,1979.57639663535,2190.36691789568,2423.60297039629,2681.67459807517,2967.22638952895,3283.18448966052,3632.78664249769,4019.61535560076,4447.6346101102],description:"28th root of 7. McLaren 'Microtonal Music', volume 6, track 3"},cet175a:{frequencies:[261.6255653006,289.53628281337,320.42456924675,354.60807736883,392.4383479509,434.30442400296,480.63685362987,531.91211578736],description:"4th root of 3/2"},cet178:{frequencies:[261.6255653006,289.91935960089,321.27301846367,356.01745236555,394.51936464224,437.18511000944,484.46499093218,536.85800524663,594.91712478053,659.25511382574,730.5510078664,809.55727745129,897.10776473059,994.12650420781,1101.63744560301,1220.77528002516,1352.79740322961,1499.09721690784,1661.21879031979,1840.87318566558,2039.95650991293,2260.56991361642,2505.04181781964,2775.9524141353,3076.16094499002,3408.83584914421,3777.48827884202,4186.0090448096],description:"27th root of 16"},cet181:{frequencies:[261.6255653006,290.48091212946,322.51878830959,358.09020513941,397.58488163802,441.43552612833,490.12256936272,544.17943316245,604.19836236377,670.83693141722,744.82523718317,826.97390553231,918.18295398723,1019.45167961503,1131.88958971281,1256.72856920928,1395.33634826987],description:"6.625 tET. The 16/3 is the so-called Kidjel Ratio promoted by Maurice Kidjel in 1958"},cet182:{frequencies:[261.6255653006,290.70585738945,323.0184918031,358.92275093366,398.81785224951,443.14738973192,492.40425618917,547.1361382945,607.95159681319,675.52683545966,750.61321956915,834.04563048717,926.75174856904,1029.76237395443,1144.22286477952,1271.40590625444,1412.7256395721,1569.7533918036],description:"17th root of 6, Moreno's C-17"},cet195:{frequencies:[261.6255653006,292.81795587218,327.72927094457,366.80289667873,410.53509014096,459.48126579586,514.26306468681,575.57624366132],description:"7th root of 11/5"},cet21k:{frequencies:[261.6255653006,264.89588486686,268.20708342769,271.55967197054,274.95416787017,278.3910952928,281.87098404962,285.39437141672,288.96180112674,292.57382370898,296.23099657435,299.9338841014,303.68305772341,307.47909424051,311.32258299104,315.21411535185,319.1542918681,323.14372059172,327.18301717534,331.2728049672,335.41371510742,339.60638662537,343.85146653829,348.14960995112,352.50148015762,356.90774874273,361.36909568619,365.8862094675,370.45978717215,375.09053459917,379.77916637013,384.52640603933,389.33298620552,394.19964862491,399.1271443257,404.11623372391,409.16768674077,414.28228292154,419.46080913287,424.70406934596,430.01287031296,435.38803129329,440.83038178715,446.34076166346,451.92002128953,457.56902166224,463.28863454093,469.07974258197,474.94323947488,480.88003008033,486.89103056976,492.97716856672,499.13938329007,505.37862569893,511.69585863936,518.09205699304,524.56820782765],description:"scale of syntonic comma's, almost 56-tET"},cet222:{frequencies:[261.6255653006,297.3462123974,337.94392545772,384.08458333231,436.52498800167,496.12526073276,563.86296895784,640.8491384935,728.34649714081,827.79017883768,940.81124699851,1069.2634803114,1215.25373699679,1381.1765584523,1569.7533918036],description:"14th root of 6, Moreno's C-14"},cet233:{frequencies:[261.6255653006,299.41460910537,342.66187834083,392.15575985798,448.79850611373,513.6227001391,587.8100594825,672.71300106294,769.87926947615,881.08018137935,1008.34288220748,1153.98733901804,1320.66858845324,1511.42518780658,1729.7345489351,1979.57639663535,2265.50524176842,2592.73349533282,2967.22638952895,3395.81083571538,3886.29974647262,4447.6346101102],description:"21st root of 17. McLaren 'Microtonal Music', volume 2, track 15"},cet24:{frequencies:[261.6255653006,265.3411057651,269.1094134006,272.9312375932,276.80733837157,280.73848655813,284.72546392233,288.7690633361,292.87008893155,297.02935626086,301.24769245848,305.52593640563,309.86493889709,314.26556281043,318.72868327757,323.25518785885,327.84597671953,332.50196280875,337.22407204116,342.01324348101,346.8704295289,351.79659611118,356.79272287204,361.85980336835,366.9988452672,372.21087054633,377.49691569736,382.85803193188,388.29528539052,393.80975735501,399.40254446313,405.07475892685,410.82752875349,416.66199797006,422.57932685074,428.58069214763,434.66728732478,440.84032279551,447.10102616311,453.45064246502,459.89043442035,466.42168268106,473.04568608657,479.76376192214,486.57724618073,493.48749382879,500.49587907561,507.6037956467,514.81265706088,522.12389691142,529.53896915113],description:"least squares fit primes 2-13"},cet258:{frequencies:[261.6255653006,303.75687573192,352.67287219582,409.46613795376,475.40520223986,551.96287401486,640.8491384935,744.04935121924,863.86858278563,1002.98310468409,1164.50016626124,1352.0273979586,1569.7533918036],description:"12th root of 6, Moreno's C-12"},cet29:{frequencies:[51.91308719749,52.80006242627,53.70219231256,54.6197354699,55.55295587693,56.50212107609,57.46750349647,58.44938022184,59.44803272677,60.46374832519,61.49681820986,62.54753889218,63.61621194966,64.70314373878,65.80864697157,66.93303858176,68.07664129187,69.2397833384,70.42279815925,71.62602610967,72.84981213985,74.09450750046,75.36046944358,76.64806088248,77.95765225928,79.28961901721,80.64434345693,82.02221441105,83.42362735565,84.84898403373,86.29869452271,87.77317443616,89.27284697886,90.79814258634,92.34949851506,93.9273610926,95.53218267212,97.16442386902,98.82455316866,100.51304648023,102.230389586,103.97707482641,105.75360353451,107.56048560902,109.39823902877,111.26739251837,113.16848194039,115.10205294491,117.06866050489,119.06886838764,121.10325205621,123.17239474253,125.2768903313,127.4173428542,129.59436591466,131.80858584574,134.06063743615,136.35116706905,138.68083217153,141.05030058861,143.46025402018,145.91138336926,148.40439215824,150.93999592972,153.51892156515,156.14191102559,158.8097162888,161.52310306741,164.28285015685,167.08974869373,169.94460622727,172.84824120887,175.80148703892,178.80519135714,181.8602162858,184.96743760879,188.12774927869,191.34205731671,194.61128429254,197.93636853869,201.31826325695,204.75794142387,208.2563891515,211.8146105632,215.43362693858,219.11447574094,222.85821595641,226.66592086774,230.53868336123,234.47761499594,238.48384494529,242.55852580808,246.70282574354,250.91793424736,255.20506113867,259.56543598745],description:"95th root of 5"},cet39:{frequencies:[261.6255653006,267.55763511324,273.62420803617,279.82833216202,286.17312954462,292.66178817784,299.29756995616,306.08381073387,313.02392200207,320.12139075456,327.37978859613,334.80276256646,342.39404424694,350.15744982839,358.09687996112,366.21632994368,374.51987945827,383.01170275779,391.6960687417,400.57734310204,409.65998815178,418.94857448076,428.44776921301,438.16234766073,448.09719341103,458.25729813392,468.64777462103,479.27384364987,490.14084702027,501.25424765147,512.61963232837,524.24271148185,536.12933410494,548.28547272565,560.71723832061,573.43088042607,586.43278689221,599.72950056876,613.32770249519,627.23422858353,641.45606974252,656.00037539202,670.87445318194,686.08578808043,701.64202314362,717.55097860059,733.82065199545,750.45921787297,767.47504913108,784.8766959018],description:"49th root of 3"},cet39a:{frequencies:[261.6255653006,267.54999903763,273.60843178624,279.80421399945,286.14029787289,292.61969147246,299.24597805224,306.02231493662,312.9519192023,320.03862308027,327.28580327671,334.69690040195,342.27601296361,350.02675229311,357.95279806627,366.05853356918,374.34782106107,382.82459589435,391.49354592099,400.35880176332,409.42457221564,418.6958708581,428.17711532294,437.87280684605,447.78830736843,457.9283414747,468.29772316218,478.90218693807,489.74678566745,500.83666784082,512.17796641877,523.77608535691],description:"31-tET with least squares octave; equal weight to 5/4, 3/2, 7/4 and 2/1"},cet39b:{frequencies:[261.6255653006,267.54443554965,273.59736903996,279.78708267123,286.11699418435,292.58994480246,299.2095086599,305.97865699219,312.90112748358,319.98002733127,327.21907624411,334.6220906301,342.19239338178,349.93416455252,357.85087908811,365.94690831825,374.22588619981,382.6921630398,391.3502022376,400.20389001205,409.25811505631,418.51694141988,427.98548149913,437.66798531163,447.56979919346,457.69536764001,468.05001127562,478.63918904181,489.46765396188,500.54138513107,511.86535306771,523.4458104663],description:"31-tET with l.s. 8/7, 5/4, 4/3, 3/2, 8/5, 7/4, 2/1; equal weights"},cet39c:{frequencies:[261.6255653006,267.52919373065,273.56603860918,279.73910598956,286.05147140959,292.50627485027,299.10673210371,305.85612987468,312.75782903301,319.8152662872,327.03195662575,334.41149334841,341.95754947331,349.67388372612,357.56433846376,365.63284274659,373.88341429498,382.32016148985,390.94728541851,399.7690842757,408.78994578219,418.01436575232,427.44693588739,437.09235368188,446.9554220819,457.04105241293,467.35426952494,477.9002035559,488.68410850494,499.71135422907,510.98743222773,522.51795602393],description:"10th root of 5/4"},cet39d:{frequencies:[261.6255653006,267.55786538889,273.62467903016,279.82905628857,286.1741163878,292.66304927922,299.29911724561,306.08565654127,313.02607906932,320.12387409698,327.38261000985,334.80593610581,342.39758442978,350.16137164992,358.1012009765,366.22106412416,374.52504331879,383.0173133498,391.70214366901,400.58390053708,409.66704921865,418.95615622721,428.45589162089,438.17103135034,448.1064596598,458.26717154264,468.65827525256,479.28499487175,490.15267293726,501.26677312698,512.63288300643,524.25671683791],description:"31-tET with l.s. 5/4, 3/2, 7/4"},cet39e:{frequencies:[261.6255653006,267.56053134626,273.63013029147,279.83741943955,286.18551905392,292.67762672082,299.3170076044,306.10700082387,313.05102655064,320.15257723818,327.41522444303,334.84262641603,342.43851674365,350.20672153383,358.15114775562,366.27579142084],description:"15th root of 7/5, X.J. Scott"},cet44:{frequencies:[261.6255653006,268.36512159638,275.27829096782,282.369545742,289.64347345451,297.10477981732,304.75829176301,312.60896056742,320.66186505284,328.92221487359,337.3953538863,346.08676360706,355.00206675748,364.14703090225,373.52757218034,383.14975913231,393.01981662619,403.14412988459,413.52924861543,424.18189124916,435.1089492851,446.31749174973,457.81476976988,469.60822126365,481.70547575226,494.11435929576,506.84289955596,519.89933098975,533.2921001762],description:"least maximum error of 10.0911 cents to a set of 11-limit consonances"},cet45:{frequencies:[261.6255653006,268.55812265554,275.67437899809,282.97903853108,290.47742047479,298.17449463282,306.07552595385,314.18591889722,322.51122112969,331.05693609414,339.82928674186,348.83408706747],description:"11th root of 4/3"},cet45a:{frequencies:[261.6255653006,268.48547646737,275.52525683447,282.74962263341,290.1634137569,297.77159700127,305.57926939395,313.59166160814,321.8141414671,330.2522175402,338.9115428334,347.79791857637,356.91729810903,366.27579142084],description:"13th root of 7/5, X.J. Scott"},cet49:{frequencies:[261.6255653006,269.10883825956,276.80615518671,284.72363837915,292.86758524998,301.24447333711,309.86096545541,318.72391499615,327.84037137809,337.21758565441,346.86301628009,356.78433504421,366.98943317194,377.48642760107,388.28366743806,399.38974059878,410.81348063915,422.56397378117,434.65056613995,447.08287115744,459.87077724873,473.02445566714,486.55436859423,500.47127746122,514.78625150841,529.51067658945],description:"least squares fit primes 3-13"},cet49a:{frequencies:[261.6255653006,269.10939785623,276.80730639354,284.72541458317,292.8700212642,301.24760545475,309.86483150611,318.72855440416,327.84582522255,337.22389673177,346.87022916874,356.7924961714,366.99859088307,377.49663223147,388.29497138724,399.40219840734,410.82714906841,422.57891189558,434.66683539241,447.10053547759,459.8899031344,473.04511227892,486.57662785344,500.49521415122,514.81194337949,529.53820446742],description:"least squares fit primes 5-13"},cet49b:{frequencies:[261.6255653006,269.11089011973,276.81037630182,284.73015118141,292.87651740119,301.25595792767,309.87514121046,318.74092648901,327.86036925135,337.24072684885,346.88946427176,356.81426008988,367.0230125633,377.52384592787,388.3251168606,399.43542112995,410.86360043647,422.61874944911,434.71022304287,447.14764374346,459.94090938509,473.10020098719,486.63599085665,500.55905092174,514.88046130456,529.61161913871],description:"least squares fit primes 3-11"},cet51:{frequencies:[261.6255653006,269.45730810595,277.52349357863,285.8311397433,294.38747470873,303.19994295657,312.27621181854,321.62417814738,331.25197518754,341.1679796516,351.38081900843,361.89937898954,372.73281132023,383.89054168203,395.38227791356,407.21801845694,419.40806105693,431.96301172054,444.89379394488,458.21165822114,471.92819182319,486.05532888913,500.60536080461,515.59094689708,531.0251223827,546.92132188791,563.29337300176,580.1555203085,597.52243480304,615.40922665547,633.83145835774,652.80515826392,672.34683453572,692.47348950549,713.20263446921,734.55230492227,756.54107625132,779.18807989593,802.51301999392,826.53619052513,851.2784929682,876.7614544861,903.00724665589,930.0387047592,957.87934765022,986.55339821839,1016.08580446361,1046.5022612024],description:"47nd root of 4"},cet53:{frequencies:[261.6255653006,269.81714175785,278.26519897904,286.97776745533,295.963129115,305.22982618403],description:"5th root of 7/6, X.J. Scott"},cet54:{frequencies:[261.6255653006,269.96706985652,278.57452968396,287.45642599351,296.6215054241,306.0787984682,315.83762188043,325.9075894649,336.29862154621,347.0209567468,358.08515411748,369.5021153806,381.28308783765,393.43967739203,405.98385998242,418.92799580061,432.28483186346,446.06752886518,460.28966468743,474.96525012045,490.10874266572,505.73506369981,521.85960157932,538.49824405725,555.66738252045,573.38393096839,591.66534267587,610.52963091344,629.99537269573,650.08174791487,670.80854445602,692.19618110881,714.26572768264,737.03893002078,760.53821452531,784.78673539949,809.80838082331,835.62780061242,862.2704354823,889.76252234217,918.13114956434,947.40426420901,977.61070438283,1008.78022764847,1040.94354635268,1074.13233401713,1108.37929206026,1143.71815851921,1180.1837471134,1217.81198154093,1256.63993812708,1296.7058535394,1338.04920533515,1380.71072249048,1424.73243255855,1470.15770307252,1517.03129303135,1565.39936221354,1615.30956841503,1666.81108016015,1719.95463363144,1774.79258265191,1831.3789571042],description:"62nd root of 7"},cet54a:{frequencies:[36.70809598968,37.88151295543,39.09243955873,40.34207507177,41.63165640381,42.96246070241,44.33580570763,45.75305128262,47.21560103286,48.72490261351,50.28245077394,51.88978777214,53.5485051662,55.26024570942,57.02670371,58.84962859429,60.73082539186,62.67215683218,64.67554556259,66.74297456936,68.87649134796,71.07820847085,73.35030604133,75.69503428946,78.11471406483,80.61174171737,83.18858976192,85.8478097501,88.59203530858,91.42398271579,94.34645661434,97.36235078878,100.47465152683,103.6864411753,107.00089881505,110.42130694669,113.95105240089,117.59363027227,121.3526480812,125.23182656372,129.23500749643,133.36615476182,137.62935895249,142.02884224198,146.56895930934,151.25420649717,156.08922305851,161.0787965455,166.22786851013,171.54153558634,177.0250602084,182.68387207023,188.52357443227,194.5499507934,200.76896615752,207.18677957808,213.80974586608,220.64442297146,227.69757979185,234.97619765489,242.48748500016,250.23887937817,258.23805608937,266.49293732345,275.01169389411,283.8027624226,292.87484767725,302.23693268442,311.89828942495,321.86848086456,332.15738106504,342.77517792247,353.73238500089,365.03985405114,376.70877738729,388.75071142436,401.17757988308,414.00168763976,427.23573537822,440.89282237095,454.98647402737,469.53064564449,484.53973861665,500.02861758376,516.01261368641,532.50755680773,549.52977996323,567.09613827221,585.22402902787,603.93139550692,623.23676470498,643.1592524742,663.71858572717,684.9351219702,706.82987354375,729.42451222373,752.74141479803,776.80366927173,801.63510168485,827.26030448295,853.70464190233,880.99430375232],description:"101st root of 24"},cet54b:{frequencies:[261.6255653006,269.96795403263,278.5763544202,287.45924871019,296.62539133416,306.08381073387,315.84382837889,325.91506125677,336.30743300953,347.03118371184,358.09687996112,369.51542742358,381.29807310848,393.45642905887,406.00247545366,418.94857448076,432.30748251802,446.09236270275,460.31680056078,474.99480683953,490.14084702027,505.76984518255,521.89720128632,538.53880634615,555.71105808945,573.43088042607,591.71572697754,610.58361784146,630.05314440547,650.14349087612,670.87445318194,692.26646247798,714.3405894063,737.11858847932,760.62290389144,784.8766959018],description:"35th root of 3 or shrunk 22-tET"},cet55:{frequencies:[261.6255653006,270.01349691657,278.67035254505,287.60475577316,296.82560168354,306.34207552634,316.16365537714,326.30012507123,336.76157646737,347.55843063202,358.70144085484,370.20170518484,382.07067969055,394.32018111076,406.96241165943,420.00996255663,433.47583121124,447.37342422819,461.71658555081,476.51960046685,491.79721226214,507.56463983627,523.83758122386,540.63224654693,557.96536270557,575.85419620437,594.31655714751,613.37083662462,633.03601203256,653.33166919923,674.2780257851,695.8959359612,718.20693418482,741.23324143097,764.99779551626,789.52425640623,814.83705588084,840.96140460432,867.92332151557,895.74966491622,924.46813868508,954.10735043232,984.69681977767,1016.26701863443,1048.84937826003,1082.47635523452,1117.18144085251,1152.9992001672,1189.96531328939,1228.1165836432,1267.49101522141,1308.127826503],description:"51th root of 5"},cet55a:{frequencies:[261.6255653006,270.1234331478,278.89732210685,287.95619440582,297.30930820811,306.96622255393,316.93680165166,327.23123542864,337.86004496999,348.83408706747],description:"9th root of 4/3"},cet63:{frequencies:[261.6255653006,271.38398887572,281.50639381697,292.00635633712,302.89795903081,314.19580976213,325.91506125677,338.07143142496,350.68122444233,363.76135261718,377.32935907335,391.4034412791,406.00247545366,421.14604188408,436.85445118639,453.14877154631,470.05085697597,487.58337662462,505.76984518255,524.63465441916,544.20310589723,564.50144490757,585.55689566922,607.39769784277,630.05314440547,653.5536209391,677.93064638327,703.21691530872,729.44634176744,756.65410477833,784.8766959018],description:"30th root of 3 or stretched 19-tET"},cet63a:{frequencies:[261.6255653006,271.37251603396,281.48259278098,291.96932561311,302.84674360983,314.12940356828,325.83240291761,337.9714015469,350.5626427598,363.62297711023,377.1698766242,391.22147055517,405.79656146784,420.91465242294,436.59597307447,452.86150935499,469.73302118774,487.23308701689,505.38512383853,524.21342105699,543.74317298677,564.00051582303,585.01254970054,606.80739415229,629.41421305643,652.8632568014,677.18590276436,702.41470135475,728.58340348685,755.72702964881,783.88190097186,813.08569174348,843.37747981977,874.79780396885,907.38869808556,941.19377721109,976.25827622702,1012.62911525602,1050.35496244617,1089.48630538731,1130.07549372248,1172.17684627813,1215.84669925421,1261.14348767523,1308.127826503],description:"44th root of 5"},cet67:{frequencies:[261.6255653006,271.89449162354,282.56647812794,293.65734341902,305.18353207836,317.16212905639,329.61089159214,342.54827390456,355.99345454941,369.96636271272,384.48771622149,399.57903967613,415.26270466472,431.56196087069,448.50096908674],description:"14th root of 12/7, X.J. Scott"},cet70:{frequencies:[261.6255653006,272.49048247121,283.80660334964,295.59266404146,307.86818385681,320.65348759128,333.96974580612,347.83900623503,362.28423824861,377.32935907335,392.99928119148,409.31995166322,426.31839262878,444.02275580482,462.46235461904,481.66772230429,501.67065719504,522.50428685614,544.20310589723,566.80304433509,590.34152430617,614.85751848055,640.39162865951,666.98613212152,694.68506540856,723.53429383412,753.58158307649,784.8766959018],description:"27th root of 3"},cet78:{frequencies:[261.6255653006,273.68177330057,286.29355449603,299.48651076576,313.28742377221,327.72430932822,342.82647426905,358.62457594514,375.15068445646,392.4383479509],description:"9th root of 3/2"},cet79:{frequencies:[261.6255653006,273.87994580863,286.70831230381,300.13755324878,314.19580976213,328.91254817579,344.3186075731,360.44627930254,377.32935907335,395.0032340925,413.50494015483,432.87325713404,453.14877154631,474.3739811962,496.5933637384,519.85349135637,544.20310589723,569.69324454502,596.37732215892,624.31126899512,653.5536209391,684.16567043124,716.21156534988,749.7584744066,784.8766959018],description:"24th root of 3, James Heffernan (1906)."},cet80:{frequencies:[261.6255653006,273.93704112612,286.82786567404,300.32530171503,314.4578949408,329.25553433534,344.74951538696,360.97260627516,377.95911717185,395.74497280393,414.36778843034,433.8669493945,454.28369442026,475.66120282759,498.04439817054,521.48118104407,546.02084308555,571.71528316122,598.61884237431,626.7884189909,656.28358877393,687.16673097983,719.50316028422,753.36126491573,788.81265129014,825.93229545055,864.79870163404,905.49406830005,948.10446197172,992.7199992577,1039.43503743958,1088.34837402783,1139.56345570838,1193.18859712177,1249.33720993748,1308.127826503],description:"35th root of 5"},cet84:{frequencies:[261.6255653006,274.70153691096,288.43104187674,302.84674360983,317.98293803021,333.87563322966,350.5626427598,368.08366429725,386.48038152577,405.79656146784,426.0781586093,447.37342422819,469.73302118774,493.21014446673,517.86064472263,543.74317298677,570.91930267857,599.45368763079,629.41421305643,660.87215705217,693.9023601738,728.58340348685,764.99779551626,803.23216389999,843.37747981977,885.52924725223,929.78774807537,976.25827622702,1025.05138820617,1076.28316609431,1130.07549372248,1186.55634664103,1245.86008938569,1308.127826503],description:"33rd root of 5"},cet87:{frequencies:[261.6255653006,275.05808287728,289.18026151691,304.0275068203,319.63704721237,336.04802279017,353.30157737897,371.44097305523,390.51169339433,410.56155044631,431.64081781968,453.80235066263,477.10170997643,501.59731726833,527.35059397819,554.42610593952],description:"Least-squares stretched ET to telephone dial tones. 1/1=697 Hz"},cet88:{frequencies:[261.6255653006,275.26799068863,289.6217982776,304.72408298441,320.61387403473,337.33223582731,354.92237405774,373.42974737602,392.90218486657,413.39000965417,434.94616895528,457.62637091093,481.48922855473,506.59641128799,533.01280425363],description:"88 cents steps by Gary Morrison"},cet88_appr:{frequencies:[261.6255653006,275.62199471997,290.69507255622,305.22982618403,320.49131749323,336.37572681506,354.37113606854,373.75080757229,392.4383479509,413.43299207996,436.04260883433,457.84473927605,482.33849075995,504.56359022259,531.55670410281,560.62621135843,588.65752192635,620.14948811994,654.0639132515,686.76710891407,723.50773613993,763.07456546008,801.22829373309],description:"88 cents scale approximated"},cet88b:{frequencies:[261.6255653006,275.26385669298,289.61326650562,304.7105300898,320.59498481995,337.30729585456,354.89100872976,373.39113880701,392.85588995712,413.33509311257,434.8821088097,457.55209870333,481.40413163568,506.49927024418,532.9029023296],description:"87.9745 cents steps. Least squares of 7/6, 11/9, 10/7, 3/2, 7/4."},cet88bis:{frequencies:[261.6255653006,289.53272725508,320.41669955092,337.26306895804,373.23835706057,392.86190344834,434.76782633734,457.62637091093],description:"Bistep approximation of 2212121 mode in 7/4 to 11/9 9/7 10/7 3/2"},cet88bm:{frequencies:[261.6255653006,275.22889829239,289.53954239223,304.59427454323,320.43178392135,337.09277136281,354.62005396115,373.05867644715,392.45602022512,412.86193859025,434.32887139488,456.91198653787,480.66932039657,505.66192697453,531.95403480429],description:"87.75412 cents steps. Minimal highest deviation for 7/6, 11/9, 10/7, 3/2, 7/4."},cet88c:{frequencies:[261.6255653006,275.37188725148,289.84046967782,305.06925821769,321.09819727018,337.96933026971,355.72690383892,374.4174952616,394.09012940783,414.79640018179,436.59061916193,459.52995194191,483.67455974508,509.0877727469,535.83624905561,563.99013984227,593.62329144382,624.813430743,657.64235771869,692.19618110881,728.56553457307,766.84580121693,807.13738838693,849.54597972796,894.18279699007,941.16492045434,990.61558284509,1042.66447461031,1097.44811755542,1155.11020756021,1215.8019705522,1279.68259818323,1346.91964745566,1417.68945580607,1492.17764912727,1570.57960775359,1653.10095047047,1739.95812689496,1831.3789571042],description:"38th root of 7. McLaren 'Microtonal Music', volume 3, track 7"},cet89:{frequencies:[261.6255653006,275.56724848068,290.25186566903,305.71900507847,322.01036982349,339.16988002511,357.2437980159,376.28084921395,396.33236207144,417.45239374596,439.69788420361,463.12880499146,487.80833148705,513.80299757552,541.1828853206,570.0218080747,600.39752248465,632.39191886931,666.09125466774,701.58637981228,738.97299766656,778.35189934333,819.82925103406,863.51687139942,909.53255273344,958.00034936337,1009.05093129669,1062.82192563509,1119.45831186524,1179.11277682321,1241.94614996535,1308.127826503],description:"31st root of 5. McLaren 'Microtonal Music', volume 2, track 22"},cet90:{frequencies:[261.6255653006,275.62199471997,290.36720431405,305.90125228146,322.26633935092,339.50692625527,357.66984706396,376.80444887746,396.96271256675,418.19939952297,440.572208006,464.1419130862,488.97255163391,515.13157534193,542.69005603758,571.72285881831,602.3088534069,634.53113933145],description:"Scale with limma steps"},cet93:{frequencies:[261.6255653006,275.99488223824,291.15340824655,307.14448922429,324.01384989472,341.80973194459,360.58302103444,380.38739950036,401.27949808494,423.31905787312],description:"Tuning used in John Chowning's STRIA, 9th root of Phi"},cet98:{frequencies:[261.6255653006,276.83245825991,292.92324815749,309.94930780463,327.96500300935,347.02785219778,367.1987248383,388.54202015806,411.12588832951],description:"8th root of 11/7, X.J. Scott"},chahargah:{frequencies:[261.6255653006,277.18263097687,283.66146785671,311.12698372208,326.97270111135,348.82502010853,367.86341164695,392.44854854484,415.30469757995,425.01198472693,466.16376151809,493.88330125613,523.2511306012],description:"Chahargah in C"},chahargah2:{frequencies:[261.6255653006,283.66146785671,327.729041887,348.82502010853,392.44854854484,425.01198472693,493.88330125613,523.2511306012],description:"Dastgah Chahargah in C, Mohammad Reza Gharib"},chalmers:{frequencies:[261.6255653006,274.70684356563,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,515.07533168556,523.2511306012],description:"Chalmers' 19-tone with more hexanies than Perrett's Tierce-Tone"},chalmers_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,313.95067836072,327.03195662575,336.37572681506,343.38355445704,376.74081403286,384.42940207435,392.4383479509,400.61414686654,408.78994578219,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"7-limit figurative scale, Chalmers '96 Adnexed S&H decads"},chalmers_19:{frequencies:[261.6255653006,269.10058145205,290.69507255622,294.32876096318,305.22982618403,313.95067836072,336.37572681506,348.83408706747,356.10146388137,363.36884069528,376.74081403286,384.42940207435,392.4383479509,406.97310157871,436.04260883433,448.50096908674,465.11211608996,470.92601754108,508.71637697339,523.2511306012],description:"7-limit figurative scale. Reversed S&H decads"},chalmers_csurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,315.80837468238,323.38635505005,348.83408706747,357.38803216938,383.0466618906,392.4383479509,423.31690179539,433.47765231178,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Combined Surd Scale, combination of Surd and Inverted Surd, JHC, 26-6-97"},chalmers_isurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,323.38635505005,348.83408706747,383.0466618906,433.47765231178,523.2511306012],description:"Inverted Surd Scale, of the form 4/(SQRT(N)+1, JHC, 26-6-97"},chalmers_ji1:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji3:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"15 16 17 18 19 20 21 on 1/1, 15-20 on 3/2, May 2, 1997. See other scales"},chalmers_ji4:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,496.11959049595,523.2511306012],description:"15 16 17 18 19 20 on 1/1, same on 4/3, + 16/15 on 16/9"},chalmers_surd:{frequencies:[261.6255653006,315.80837468238,357.38803216938,392.4383479509,423.31690179539,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/2, JHC, 26-6-97"},chalmers_surd2:{frequencies:[261.6255653006,272.2395613933,282.33485096279,291.98077704337,301.23248980765,310.13469895524,318.72425558532,327.03195662575,335.08385052998,342.90220911983,350.50624086893,357.91266581346,365.13613061818,372.18956061116,379.08442465499,385.8309605564,392.4383479509,398.91485744029,405.26796981327,411.50448329997,417.63058822561,423.65195171798,429.57376586736,435.40081471708,441.13750301549,446.78791303515,452.35581962987,457.84473927605,463.2579384726,468.59846621725,473.86917438523,479.07273156015,484.21164154672,489.28825377326,494.3047826718,499.26331035461,504.16580309972,509.01411882861,513.81001953884,518.55516185524,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/4"},chalung:{frequencies:[261.6255653006,328.09251713275,362.03316295439,390.31715077734,479.41117101029,527.4935758042,647.70012555753,728.30917696308,823.06004869243,961.65052057178,1054.9871516084,1301.05663342451],description:'Tuning of chalung from Tasikmalaya. "slendroid". 1/1=185 Hz'},chaumont:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.49749487796,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.40109831725,489.02683710225,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 1st interpretation"},chaumont2:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.30531842668,327.84547867349,349.70184487387,366.99801003998,391.46454285105,410.8262805401,438.2147004401,465.11211608996,490.54793493862,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 2nd interpretation"},chimes:{frequencies:[261.6255653006,288.69027895239,130.8127826503,144.34513947619],description:"Heavenly Chimes"},chimes_peck:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,1046.5022612024],description:"Kris Peck, 9-tone windchime tuning. TL 7-3-2001"},chin_12:{frequencies:[261.6255653006,277.05457499359,293.57996645301,310.53449241474,329.24697610111,347.79893712036,368.97000115401,391.76907592069,413.1274313058,439.00991514661,462.11551390967,491.43599249807,523.2511306012],description:"Chinese scale, 4th cent."},chin_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,441.49314144476,523.2511306012],description:"Chinese pentatonic from Zhou period"},chin_60:{frequencies:[261.6255653006,262.17244551937,265.19499215873,268.81311753311,272.48060600886,276.1981310001,279.38237857051,283.19406633357,287.05775848811,290.97416342694,294.32876096318,294.94400091442,298.34436617857,302.41475692242,306.54068145351,310.72289706448,314.30517589183,318.59332496145,322.93997797627,327.34593352805,331.11985608357,331.812000697,335.63741195089,340.21660119759,344.85826629043,349.56326086722,353.59332287831,358.41749022331,363.30747486009,368.26417485089,372.50983809402,373.28850041093,377.59208844475,382.74367817547,387.96555142985,392.4383479509,393.25866808247,397.79248823809,403.21967609811,408.72090880899,414.29719629306,419.07356785577,424.79110016094,430.58663751693,436.46124492224,441.49314144476,442.41600115048,447.51654926786,453.62213515688,459.81102195042,466.08434536373,471.45776383774,477.8899872033,484.40996672226,491.01890004663,496.67978412536,497.7180007967,503.45611792634,510.32490448905,517.28740216504,523.2511306012],description:'Chinese scale of fifths (the 60 lu")'},chin_7:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Chinese heptatonic scale and tritriadic of 64:81:96 triad"},chin_bianzhong:{frequencies:[261.6255653006,277.82379926216,312.56802260838,375.1593523779,420.13030572059,469.40618689596,506.59641128799,563.72967895209,627.66881138238,764.75812197709,849.53311813274,949.1724262561,1225.95732655636],description:"Pitches of Bianzhong bells (Xinyang). 1/1=b, Liang Mingyue, 1975."},chin_bianzhong2a:{frequencies:[261.6255653006,284.81073476233,312.56802260838,372.56793743951,413.39000965417,447.94973572445,491.60634075178,562.75365576207,652.05945856061,695.63805470995,863.88355261715,960.75607282217,1173.30283584026],description:"A-tones (GU) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=d#=619 Hz"},chin_bianzhong2b:{frequencies:[261.6255653006,279.59231184543,312.74738729016,375.37536096215,418.43048063126,468.86028020615,505.12945327459,562.08698385796,624.42058858709,762.97988553915,849.53425657971,936.08862980659,1215.37624187632],description:"B-tones (SUI) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=b+=506.6 Hz"},chin_bianzhong3:{frequencies:[261.6255653006,508.3551866238,542.32970395878,608.04166718582,619.02750937577,673.88551872153,729.80120031671,739.56153452917,812.57643344187,881.52624580654,911.03313298042,978.11461117351,982.0774855146,1059.88575280263,1092.20381072382,1163.18085489566,1213.27682870749,1331.52122774489,1483.40111876828,1542.82606951623,1645.93659621657,1649.74391394557,1818.91159982256,2044.01922018919,2273.22753490632,2362.92760489328,2776.13057951436],description:"A and B-tones of 13 Xinyang bells (Ma Cheng-Yuan) abs. pitches wrt middle-C"},chin_bronze:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:`Scale found on ancient Chinese bronze instrument 3rd c.BC & "Scholar's Lute"`},chin_chime:{frequencies:[261.6255653006,248.6592656401,341.74499057264,392.56190849927,548.78974538591,648.86582834888,714.36935367713,785.57745330134,889.7110417619,886.88898199546,992.62825668803,1044.08711871947,1326.14827969763],description:"Pitches of 12 stone chimes, F. Kuttner, 1951, ROMA Toronto. %1=b4"},chin_ching:{frequencies:[261.6255653006,276.1981310001,294.32876096318,310.72289706448,331.11985608357,349.56326086722,368.26417485089,392.4383479509,414.29719629306,441.49314144476,466.08434536373,496.67978412536,524.34489103873],description:"Scale of Ching Fang, c.45 BC. Pyth.steps 0 1 2 3 4 5 47 48 49 50 51 52 53"},chin_di:{frequencies:[261.6255653006,298.70635408336,316.56004827153,360.50766037677,409.94872043165,433.75364775074,527.37121036213],description:"Chinese di scale"},chin_di2:{frequencies:[261.6255653006,289.95657583698,318.21537073485,338.89464890898,383.48501130814,436.9606979923,494.73987775324,522.04355935974],description:"Observed tuning from Chinese flute dizi, Helmholtz/Ellis p. 518, nr.103"},chin_huang:{frequencies:[261.6255653006,331.11985608357,392.4383479509,441.49314144476,523.2511306012,588.65752192635,662.23971216714],description:"Huang Zhong qin tuning"},"chin_liu-an":{frequencies:[261.6255653006,278.83777354406,294.32876096318,311.64221749042,331.11985608357,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067],description:'Scale of Liu An, in: "Huai Nan Tzu", c.122 BC, 1st known corr. to Pyth. scale'},chin_lu:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,495.71159741166,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Huai Nan zi, Han era. P\xEF\xBF\xBDre Amiot 1780, Kurt Reinhard"},chin_lu2:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Chinese L\xEF\xBF\xBD (Lushi chunqiu, by Lu Buwei). Mingyue: Music of the billion, p.67"},chin_lu3:{frequencies:[261.6255653006,277.34278419245,293.66476791741,310.58830860439,329.24697610111,347.81902735497,369.14054089803,391.76907592069,413.1512951712,439.23819834286,462.1422075194,491.60634075178,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, reported in Sung Shu (500 AD)"},chin_lu3a:{frequencies:[261.6255653006,277.06033146978,293.58830182213,310.53780743131,329.25144446584,347.79484055318,368.74579520635,391.78066943209,413.13681807919,438.99947255393,462.1072190611,491.17907538715,523.2511306012],description:`Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, calc. basis is "big number" 177147`},chin_lu4:{frequencies:[261.6255653006,276.78521684908,293.5444075184,310.55356739316,329.35741152087,348.44172229085,369.5396750577,391.9150968203,414.62425518576,439.72952246257,465.20924434298,493.37740286979,523.2511306012],description:'Chinese L\xEF\xBF\xBD "749-Temperament"'},chin_lu5:{frequencies:[261.6255653006,277.35401920913,293.41471131112,311.37240624271,329.40299530711,349.20610523279,369.80535913035,392.03738806826,415.16320853113,440.12206674667,466.08434536373,494.10449271367,522.71643616375],description:"Chinese L\xEF\xBF\xBD scale by Ch'ien Lo-Chih, c.450 AD Pyth.steps 0 154 255 103 204 etc."},chin_lusheng:{frequencies:[261.6255653006,316.38258506467,348.82502010853,389.28772571905,466.97226207056,520.53801357752],description:"Observed tuning of a small Lusheng, 1/1=d, OdC '97"},chin_pan:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Pan Huai-su pure system, in: Sin-Yan Shen, 1991"},chin_pipa:{frequencies:[261.6255653006,284.4818984792,320.42873367481,380.17671965621,433.44136952667,521.74210224793],description:"Observed tuning from Chinese balloon lute p'i-p'a, Helmholtz/Ellis p. 518, nr.109"},chin_sheng:{frequencies:[261.6255653006,295.36595061166,318.03161540472,348.82502010853,395.40657391157,442.03793673691,477.05982293263,522.94897617031],description:"Observed tuning from Chinese sheng or mouth organ, Helmholtz/Ellis p. 518, nr.105"},chin_sientsu:{frequencies:[261.6255653006,291.80478157373,326.97270111135,392.44854854484,438.22451411849,523.2511306012],description:"Observed tuning from Chinese tamboura sienzi, Helmholtz/Ellis p. 518, nr.108"},chin_sona:{frequencies:[261.6255653006,284.4818984792,310.58830860439,337.33223582731,377.98706287655,418.43499793376,469.94877954106,528.10941333272],description:"Observed tuning from Chinese oboe (so-na), Helmholtz/Ellis p. 518, nr.104"},"chin_wang-po":{frequencies:[261.6255653006,294.32876096318,330.24264909897,371.97947673071,392.4383479509,440.94196398978,495.71159741166,517.50111817701],description:"Scale of Wang Po, 958 AD. H. Pischner: Musik in China, Berlin, 1955, p.20"},chin_yangqin:{frequencies:[261.6255653006,288.45311779165,306.48933163909,347.41744306689,383.26356564167,434.44398956347,465.08793784701,522.64699622026],description:"Observed tuning from Chinese dulcimer yangqin, Helmholtz/Ellis p. 518, nr.107"},chin_yunlo:{frequencies:[261.6255653006,288.45311779165,323.40385076956,367.0144478307,386.1523605003,409.35055662695,483.1608380663,525.67465946865],description:"Observed tuning from Chinese gong-chime (y\xEF\xBF\xBDn-lo), Helmholtz/Ellis p. 518, nr.106"},choquel:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,475.68284600109,490.54793493862,523.2511306012],description:"Choquel/Barbour/Marpurg?"},chordal:{frequencies:[261.6255653006,392.4383479509,327.03195662575,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,981.09586987725,490.54793493862,555.95432626377,621.36071758893,310.68035879446,523.2511306012,348.83408706747,418.60090448096,299.00064605783,465.11211608996,380.54627680087,322.00069575458,279.06726965397,610.45965236807,915.6894785521,872.08521766867,697.66817413493,654.0639132515,627.90135672144,448.50096908674,319.76457981184,377.90359432309,444.76346101102,889.52692202204,336.37572681506,294.32876096318,465.11211608996,411.12588832951,305.22982618403,366.27579142084,373.75080757229,313.95067836072,470.92601754108],description:"Chordal Notes S&H"},chrom15:{frequencies:[261.6255653006,280.31310567921,301.87565226992,356.76213450082,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Tonos-15 Chromatic"},chrom15_inv:{frequencies:[261.6255653006,313.95067836072,331.39238271409,348.83408706747,383.71749577421,453.48431318771,488.36772189445,523.2511306012],description:"Inverted Chromatic Tonos-15 Harmonia"},chrom15_inv2:{frequencies:[261.6255653006,279.06726965397,296.50897400735,348.83408706747,383.71749577421,401.15920012759,418.60090448096,523.2511306012],description:"A harmonic form of the Chromatic Tonos-15 inverted"},chrom17:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Tonos-17 Chromatic"},chrom17_con:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,386.75083566176,404.33041910093,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Chromatic"},chrom19:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,382.37582620857,397.67085925691,414.24047839262,523.2511306012],description:"Tonos-19 Chromatic"},chrom19_con:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,368.21375857121,382.37582620857,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Chromatic"},chrom21:{frequencies:[261.6255653006,274.70684356563,289.16509849014,343.38355445704,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Tonos-21 Chromatic"},chrom21_inv:{frequencies:[261.6255653006,323.91736656265,336.37572681506,348.83408706747,398.6675280771,473.41768959156,498.33441009638,523.2511306012],description:"Inverted Chromatic Tonos-21 Harmonia"},chrom21_inv2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,398.6675280771,423.58424858192,448.50096908674,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-21"},chrom23:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,376.08675011961,401.15920012759,429.81342870813,523.2511306012],description:"Tonos-23 Chromatic"},chrom23_con:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,353.96400011258,376.08675011961,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Chromatic"},chrom25:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,408.78994578219,436.04260883433,467.18850946536,523.2511306012],description:"Tonos-25 Chromatic"},chrom25_con:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,384.74347838324,408.78994578219,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Chromatic"},chrom27:{frequencies:[261.6255653006,277.01530443593,294.32876096318,353.19451315581,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Tonos-27 Chromatic"},chrom27_inv:{frequencies:[261.6255653006,310.07474405997,329.45441556372,348.83408706747,387.59343007496,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Chromatic Tonos-27 Harmonia"},chrom27_inv2:{frequencies:[261.6255653006,271.31540105247,281.00523680435,348.83408706747,387.59343007496,406.97310157871,436.04260883433,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-27"},chrom29:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,379.35706968587,399.32323124828,421.50785520652,523.2511306012],description:"Tonos-29 Chromatic"},chrom29_con:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,361.29244731988,379.35706968587,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Chromatic"},chrom31:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,405.51962621593,523.2511306012],description:"Tonos-31 Chromatic. Tone 24 alternates with 23 as MESE or A"},chrom31_con:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Chromatic"},chrom33:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,392.4383479509,411.12588832951,431.68218274599,523.2511306012],description:"Tonos-33 Chromatic. A variant is 66 63 60 48"},chrom33_con:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,375.37581108347,392.4383479509,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Chromatic"},chrom_new:{frequencies:[261.6255653006,273.20871865617,297.93622032612,349.22823143301,391.99543598175,409.35055662695,446.39994737251,523.2511306012],description:"New Chromatic genus 4.5 + 9 + 16.5"},chrom_new2:{frequencies:[261.6255653006,273.6474710507,299.37374239667,349.22823143301,391.99543598175,410.00794244467,448.55379686399,523.2511306012],description:"New Chromatic genus 14/3 + 28/3 + 16 parts"},chrom_soft:{frequencies:[261.6255653006,271.68808704293,282.55561052465,348.83408706747,392.4383479509,407.5321305644,423.83341578697,523.2511306012],description:"100/81 Chromatic. This genus is a good approximation to the soft chromatic"},chrom_soft2:{frequencies:[261.6255653006,268.42893440103,282.57118533961,349.22823143301,391.99543598175,402.18897205153,423.37840671577,523.2511306012],description:"1:2 Soft Chromatic"},chrom_soft3:{frequencies:[261.6255653006,271.31540105247,281.75060878526,348.83408706747,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Soft chromatic genus is from K. Schlesinger's modified Mixolydian Harmonia"},cifariello:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"F. Cifariello Ciardi, ICMC 86 Proc. 15-tone 5-limit tuning"},ckring1:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring with common pivot of 4:5:6:7 = square 1 3 5 7"},ckring2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,448.50096908674,470.92601754108,523.2511306012],description:"Double-tie circular mirroring with common pivot of 3:5:7:9"},"clampitt-phi":{frequencies:[261.6255653006,289.46753582364,320.2724252102,340.92857683151,377.20990650852,444.26963537301,491.54843559637,523.2511306012],description:'David Clampitt, phi+1 mod 3phi+2, from "Pairwise Well-Formed Scales", 1997'},classr:{frequencies:[261.6255653006,275.93321340298,287.4304306281,313.95067836072,327.03195662575,344.91651675372,367.91095120397,392.4383479509,408.78994578219,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"Marvel projection to the 5-limit of class"},cluster:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"13-tone 5-limit Tritriadic Cluster"},cluster6a:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:6"},cluster6b:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:6:5"},cluster6c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,418.60090448096,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:4:5"},cluster6d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:5:4"},cluster6e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:8"},cluster6f:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:8:6"},cluster6g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:7"},cluster6h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:7:5"},cluster6i:{frequencies:[261.6255653006,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:7"},cluster6j:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,436.04260883433,439.53094970501,523.2511306012],description:"Six-Tone Triadic Cluster 5:7:6"},cluster8a:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:6"},cluster8b:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,392.4383479509,408.78994578219,418.60090448096,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:6:5"},cluster8c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,363.36884069528,418.60090448096,436.04260883433,484.4917875937,523.2511306012],description:"Eight-Tone Triadic Cluster 3:4:5"},cluster8d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Eight-Tone Triadic Cluster 3:5:4"},cluster8e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,334.88072358477,392.4383479509,401.85686830172,418.60090448096,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:8"},cluster8f:{frequencies:[261.6255653006,301.39265122629,313.95067836072,348.83408706747,376.74081403286,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:8:6"},cluster8g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:7"},cluster8h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,457.84473927605,523.2511306012],description:"Eight-Tone Triadic Cluster 4:7:5"},cluster8i:{frequencies:[261.6255653006,307.67166479351,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:7"},cluster8j:{frequencies:[261.6255653006,263.718569823,305.22982618403,313.95067836072,366.27579142084,376.74081403286,436.04260883433,439.53094970501,523.2511306012],description:"Eight-Tone Triadic Cluster 5:7:6"},cohenf_11:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:`Flynn Cohen, 7-limit scale of "Rameau's nephew", 1996`},coleman:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,491.89038573682,523.2511306012],description:"Jim Coleman's ModX piano temperament. TL 16 Mar 1999"},collengettes:{frequencies:[261.6255653006,269.10058145205,275.62199471997,285.40970760065,294.32876096318,302.73815413355,310.07474405997,321.08592105074,331.11985608357,340.58042340025,348.83408706747,358.80077526939,367.49599295996,380.54627680087,392.4383479509,403.65087217807,413.43299207996,428.11456140098,441.49314144476,454.10723120033,465.11211608996,478.40103369253,496.67978412536,507.3950357345,523.2511306012],description:"R.P. Collengettes, from p.23 of d'Erlanger, vol 5. 24 tone Arabic system"},colonna1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,308.86351459099,327.03195662575,348.83408706747,363.36884069528,392.4383479509,399.70572476481,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Colonna 1"},colonna2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Colonna 2"},concertina:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"English Concertina, Helmholtz/Ellis, p. 470"},cons11:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 11 not exceeding 2/1"},cons12:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 12 not exceeding 2/1"},cons13:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 13 not exceeding 2/1"},cons14:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 14 not exceeding 2/1"},cons15:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 15 not exceeding 2/1"},cons16:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 16 not exceeding 2/1"},cons17:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 17 not exceeding 2/1"},cons18:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 18 not exceeding 2/1"},cons19:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 19 not exceeding 2/1"},cons20:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 20 not exceeding 2/1"},cons21:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 21 not exceeding 2/1"},cons8:{frequencies:[261.6255653006,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 8 not exceeding 2/1"},cons9:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 9 not exceeding 2/1"},cons_5:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Set of consonant 5-limit intervals within the octave"},cons_7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals of tetrad 4:5:6:7 and inverse"},cons_7a:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals, harmonic entropy minima"},cont_frac1:{frequencies:[261.6255653006,264.29672053658,267.01859068163,284.39991302433,288.64312378534,304.51680721446,328.36325429535,342.47239171077,368.24757473349,390.36247006958,408.23697512781,419.80330474394,448.3033221197,488.42606438843,498.20005830409],description:"Continued fraction scale 1, see McLaren in Xenharmonikon 15, pp.33-38"},cont_frac2:{frequencies:[261.6255653006,268.67076720771,283.00159623424,287.78825007941,303.56038377389,306.30898587133,329.63288816559,333.85601282718,352.97051886932,380.09613548074,393.10104267352,426.45795861378,432.83315799354,472.91012288255,483.94654132265,519.4303061261],description:"Continued fraction scale 2, see McLaren in Xenharmonikon 15, pp.33-38"},cordier:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Serge Cordier, piano tuning, 1975 (Piano bien temp\xEF\xBF\xBDr\xEF\xBF\xBD et justesse orchestrale)"},corner11:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,343.38355445704,359.73515228832,392.4383479509,400.61414686654,408.78994578219,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 11-limit. Chalmers '96"},corner13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 13-limit. Chalmers '96"},corner17:{frequencies:[261.6255653006,265.71346475842,269.80136421624,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,347.47145391486,359.73515228832,371.99885066179,382.21859930635,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,449.66894036041,451.71289008932,457.84473927605,486.4600354808,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 17-limit."},corner17a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,275.93321340298,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,306.59245933664,312.72430852337,314.76825825228,318.85615771011,327.03195662575,331.11985608357,337.2517052703,343.38355445704,345.42750418595,347.47145391486,359.73515228832,367.91095120397,371.99885066179,382.21859930635,392.4383479509,398.57019713763,400.61414686654,404.70204632437,408.78994578219,416.96574469783,425.14154361347,429.2294430713,441.49314144476,449.66894036041,451.71289008932,457.84473927605,459.88868900496,478.28423656516,486.4600354808,490.54793493862,494.63583439645,515.07533168556,521.20718087229,523.2511306012],description:"Quadratic Corner 17 odd limit."},corner7:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,392.4383479509,400.61414686654,408.78994578219,457.84473927605,490.54793493862,523.2511306012],description:"Quadratic corner 7-limit. Chalmers '96"},corner9:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"First 9 harmonics of 5th through 9th harmonics"},corners11:{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,286.15296204753,294.32876096318,299.00064605783,304.4370214407,314.76825825228,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,434.91003062957,449.66894036041,457.84473927605,465.11211608996,478.40103369253,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Quadratic Corners 11-limit. Chalmers '96"},corners13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,398.6675280771,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"Quadratic Corners 13-limit. Chalmers '96"},corners7:{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Quadratic Corners 7-limit. Chalmers '96"},corrette:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.33704984564,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Corrette temperament"},corrette2:{frequencies:[261.6255653006,272.8349596094,292.34127285051,310.42509491746,326.6631048533,350.01785633742,365.01443422269,391.11111150212,409.71484950008,437.02884834934,466.16376151809,488.33748205014,523.2511306012],description:"Michel Corrette, modified meantone temperament (1753)"},coul_12:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,340.65828815182,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 5/4 3/2 2 successively split largest intervals by smallest interval"},coul_12a:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 6/5 3/2 2 successively split largest intervals by smallest interval"},coul_12sup:{frequencies:[261.6255653006,280.31310567921,294.32876096318,310.68035879446,331.39238271409,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,466.02053819169,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean scale. Op de Coul, 2003"},coul_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical 13-tone 5-limit just system"},coul_17sup:{frequencies:[261.6255653006,276.16031892841,279.06726965397,294.57100685697,310.07474405997,313.95067836072,331.39238271409,348.83408706747,368.21375857121,372.08969287196,392.76134247596,413.43299207996,418.60090448096,441.85651028546,465.11211608996,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean 17-tone scale. Op de Coul, 2003"},coul_20:{frequencies:[261.6255653006,277.18263097687,282.2367833559,293.66476791741,305.55548036855,311.12698372208,329.62755691287,335.63799088232,349.22823143301,363.36884069528,369.99442271164,391.99543598175,399.14308682247,415.30469757995,432.12070439462,440,466.16376151809,474.66379875343,493.88330125613,513.88101620607,523.2511306012],description:"Tuning for a 3-row symmetrical keyboard, Op de Coul, 1989"},coul_27:{frequencies:[261.6255653006,275.62199471997,275.93321340298,279.06726965397,293.99679436797,294.32876096318,310.07474405997,310.42486507835,327.03195662575,330.74639366397,331.11985608357,348.83408706747,367.49599295996,367.91095120397,372.08969287196,372.50983809402,392.4383479509,413.43299207996,413.89982010446,418.60090448096,440.99519155196,441.49314144476,465.11211608996,465.63729761752,490.54793493862,496.11959049595,496.67978412536,523.2511306012],description:"Symmetrical 27-tone 5-limit just system, 67108864/66430125 and 25/24"},counterschismic:{frequencies:[261.6255653006,265.12640119254,268.67408364533,272.2692364133,275.65170316539,279.34022410565,283.07810312094,286.865997406,290.70457953408,294.3160713245,298.25434362449,302.24531258767,306.28968684494,310.09479611189,314.24420508029,318.4491358588,322.71033506911,327.0285519162,331.0913069245,335.5216703313,340.01131880467,344.56104171562,348.84160709651,353.50948891197,358.2398341551,363.03347451625,367.54352740958,372.46166135084,377.44560747755,382.49624206822,387.61445966759,392.4298881006,397.68103103357,403.0024376988,408.3950505989,413.46864135256,419.00130591222,424.60800114791,430.28972009123,436.04746916004,441.46459261549,447.37187116862,453.35819556254,459.4246261707,465.13216971689,471.35614630867,477.663406507,484.05506753352,490.06860102591,496.62625431187,503.27165616309,510.00598369715,516.83042094502,523.2511306012],description:"Counterschismic temperament, g=498.082318, 5-limit"},couperin:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28785294636,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.24345038333,489.02683710225,523.2511306012],description:"Couperin modified meantone"},cross13:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,322.00069575458,332.97799220076,336.37572681506,366.27579142084,373.75080757229,406.97310157871,411.12588832951,425.14154361347,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"13-limit harmonic/subharmonic cross"},cross2:{frequencies:[261.6255653006,282.55561052465,339.14425131559,366.27579142084,436.04260883433,470.92601754108,560.62621135843,605.4763082671,726.73768139056,784.8766959018],description:"Pusey's double 5-7 cross reduced by 3/1"},cross2_5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5 cross reduced by 2/1"},cross2_7:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,348.83408706747,392.4383479509,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"longer 3-5-7 cross reduced by 2/1"},cross3:{frequencies:[261.6255653006,282.55561052465,311.45900631024,336.37572681506,363.28578496026,403.74315632809,436.04260883433,470.92601754108,508.60009894437,565.24041885932,610.45965236807,659.29642455751,726.73768139056,784.8766959018],description:"Pusey's triple 5-7 cross reduced by 3/1"},cross_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"3-5-7 cross reduced by 2/1, quasi diatonic, similar to Zalzal's, Flynn Cohen"},cross_72:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,313.95067836072,343.38355445704,348.83408706747,392.4383479509,398.6675280771,436.04260883433,448.50096908674,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5-7 cross reduced by 2/1"},cross_7a:{frequencies:[261.6255653006,336.37572681506,392.4383479509,436.04260883433,470.92601754108,523.2511306012,610.45965236807,784.8766959018],description:"2-5-7 cross reduced by 3/1"},cruciform:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Cruciform Lattice"},galilei:{frequencies:[261.6255653006,277.66336828161,293.32570896007,311.30674962848,328.86683469969,348.2210758395,368.7143392539,390.41365788584,413.39000965417,437.71854962063,463.47885582013,490.75518955849,523.2511306012],description:"Vincenzo Galilei's approximation"},gamelan_om:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other Music gamelan (7 limit black keys)"},gamelan_udan:{frequencies:[261.6255653006,261.6255653006,290.69507255622,305.22982618403,334.88072358477,351.32575911795,364.00078650518,392.4383479509,402.50086969323,465.11211608996,465.11211608996,501.44900015948,523.2511306012],description:"Gamelan Udan Mas (approx) s6,p6,p7,s1,p1,s2,p2,p3,s3,p4,s5,p5"},ganassi:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Sylvestro Ganassi's temperament (1543)"},gann_custer:{frequencies:[261.6255653006,269.80136421624,274.70684356563,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"Kyle Gann, scale from Custer's Ghost to Sitting Bull, 1/1=G"},gann_frac:{frequencies:[261.6255653006,264.89588486686,294.32876096318,305.22982618403,309.04519901133,313.95067836072,348.83408706747,353.19451315581,366.27579142084,392.4383479509,397.34382730029,412.06026534844,418.60090448096,423.83341578697,457.84473927605,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Fractured Paradise, 1/1=B"},gann_ghost:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Kyle Gann, scale from Ghost Town, 1/1=E"},gann_super:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Superparticular Woman (1992), 1/1=G"},gann_things:{frequencies:[261.6255653006,266.47048317654,272.52663052146,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,387.59343007496,392.4383479509,406.97310157871,408.78994578219,436.04260883433,448.50096908674,465.11211608996,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Kyle Gann, scale from How Miraculous Things Happen, 1/1=A"},garcia:{frequencies:[261.6255653006,268.33391312882,271.68808704293,279.06726965397,286.22284067074,294.32876096318,301.87565226992,310.07474405997,313.95067836072,322.00069575458,331.11985608357,339.61010880366,348.83408706747,357.77855083843,362.25078272391,372.08969287196,381.63045422766,392.4383479509,402.50086969323,407.5321305644,418.60090448096,429.33426100611,441.49314144476,452.81347840488,465.11211608996,470.92601754108,483.00104363188,496.11959049595,509.4151632055,523.2511306012],description:"Linear 29-tone scale by Jos\xEF\xBF\xBD L. Garcia, 1988 15/13-52/45 alternating"},garibaldi24:{frequencies:[261.6255653006,271.45160478635,275.48458787532,290.07776082447,294.38747453868,305.44397410364,309.9819851541,326.40257969757,331.25197480486,343.69301829526,348.79929894143,361.89937857146,367.27615309757,386.73177659938,392.47748849606,407.21801775129,413.26809573999,435.16003837828,441.62525370518,458.21165716245,465.0193526482,489.65270106975,496.92751922541,515.59094540799,523.2511306012],description:"Garibaldi[24] in 94-tET tuning."},genovese:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Denny Genovese's 65-note scale. 3/2=384 Hz"},genovese_12:{frequencies:[261.6255653006,285.40970760065,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Denny Genovese's superposition of harmonics 8-16 and subharmonics 6-12"},genovese_38:{frequencies:[261.6255653006,280.31310567921,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Denny Genovese's 38-note scale. Harm 1..16 x Subh. 1..12"},"gf1-2":{frequencies:[261.6255653006,269.29177952703,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,339.28638158975,349.22823143301,359.46139971304,380.8360868427,403.48177901006,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"16-note scale with all possible quadruplets of 50 & 100 c. Galois Field GF(2)"},"gf2-3":{frequencies:[261.6255653006,270.85177093588,280.40333801024,290.29174037004,300.52885648597,316.56538760238,327.729041887,345.21700307457,357.39105439675,369.99442271164,389.73770840504,410.5345162762,425.01198472693,447.69106452518,471.58032351597,496.7443381147,523.2511306012],description:"16-note scale with all possible quadruplets of 60 & 90 c. Galois Field GF(2)"},gilson7:{frequencies:[261.6255653006,261.6255653006,299.00064605783,313.95067836072,327.03195662575,392.4383479509,373.75080757229,392.4383479509,408.78994578219,408.78994578219,467.18850946536,490.54793493862,523.2511306012],description:"Gilson septimal"},gilson7a:{frequencies:[261.6255653006,261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,373.75080757229,373.75080757229,392.4383479509,418.60090448096,470.92601754108,470.92601754108,523.2511306012],description:"Gilson septimal 2"},golden_10:{frequencies:[261.6255653006,287.58715183149,304.90466328003,323.26497397694,342.73087946949,376.74069565061,399.42672527674,423.47882962254,465.50141625349,493.53231135469,523.2511306012],description:"Golden version of Rapoport's Major 10 out of 13"},golden_5:{frequencies:[261.6255653006,327.03195662575,343.38355445704,392.4383479509,425.14154361347,523.2511306012],description:"Golden pentatonic"},gradus10:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,490.54793493862,882.98628288953,930.22423217991,941.85203508216,1220.91930473613,1255.80271344288,1674.40361792384,2747.0684356563,3270.3195662575,3488.34087067467,5886.5752192635,10595.8353946743,10988.2737426252,11162.69078615893,13081.27826503,14651.0316568336,23546.300877054,31395.067836072,41860.090448096,42383.3415786972,56511.1221049296,75348.1628065728,100464.2170754304,133952.2894339072],description:"Intervals > 1 with Gradus = 10"},gradus3:{frequencies:[261.6255653006,784.8766959018,1046.5022612024],description:"Intervals > 1 with Gradus = 3"},gradus4:{frequencies:[261.6255653006,392.4383479509,1569.7533918036,2093.0045224048],description:"Intervals > 1 with Gradus = 4"},gradus5:{frequencies:[261.6255653006,348.83408706747,1308.127826503,2354.6300877054,3139.5067836072,4186.0090448096],description:"Intervals > 1 with Gradus = 5"},gradus6:{frequencies:[261.6255653006,654.0639132515,697.66817413493,1177.3150438527,2616.255653006,4709.2601754108,6279.0135672144,8372.0180896192],description:"Intervals > 1 with Gradus = 6"},gradus7:{frequencies:[261.6255653006,327.03195662575,436.04260883433,588.65752192635,1395.33634826987,1831.3789571042,3924.383479509,5232.511306012,7063.8902631162,9418.5203508216,12558.0271344288,16744.0361792384],description:"Intervals > 1 with Gradus = 7"},gradus8:{frequencies:[261.6255653006,294.32876096318,313.95067836072,418.60090448096,872.08521766867,915.6894785521,1962.1917397545,2790.67269653973,3531.9451315581,3662.7579142084,7848.766959018,10465.022612024,14127.7805262324,18837.0407016432,25116.0542688576,33488.0723584768],description:"Intervals > 1 with Gradus = 8"},gradus9:{frequencies:[261.6255653006,457.84473927605,465.11211608996,470.92601754108,610.45965236807,627.90135672144,837.20180896192,981.09586987725,1744.17043533733,1765.97256577905,5494.1368713126,5581.34539307947,6540.639132515,7325.5158284168,11773.150438527,15697.533918036,20930.045224048,21191.6707893486,28255.5610524648,37674.0814032864,50232.1085377152,66976.1447169536],description:"Intervals > 1 with Gradus = 9"},grady11:{frequencies:[261.6255653006,277.4816601673,290.69507255622,305.22982618403,332.97799220076,356.76213450082,378.42269266694,392.4383479509,420.46965851882,458.69417292962,481.6288815761,504.56359022259,523.2511306012],description:"Kraig Grady's dual [5 7 9 11] hexany scale"},grady7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Kraig Grady's 7-limit "Centaur" scale (1987), see Xenharmonikon 16`},grady7t:{frequencies:[261.6255653006,274.79177208104,293.65339461903,305.54250820508,326.68804977983,349.10444036529,366.6627351378,392.00975085961,407.77240291308,436.0718257558,457.96530027286,489.37179607373,523.2511306012],description:"Tempered version of grady7 with egalised 225/224"},grady_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Kraig Grady, letter to Lou Harrison, published in 1/1 7 (1) 1991 p 5."},grammateus:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"H. Grammateus (Heinrich Schreiber) (1518). B-F# and Bb-F 1/2 P. Also Marpurg temp.nr.6"},graupner:{frequencies:[261.6255653006,277.083518473,293.59062125964,310.9808189359,329.55130849159,349.11528328816,370.00708353276,392.01655298731,415.20348378516,439.96413779539,466.04943410823,493.90517116572,523.2511306012],description:"Johann Gottlieb Graupner's temperament (1819)"},groenewald_21:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"J\xEF\xBF\xBDrgen Gr\xEF\xBF\xBDnewald, new meantone temperament I (2000)"},gross:{frequencies:[13.75,13.83042567154,13.91662997964,13.99803029322,14.07990672861,14.1622619889,14.24509903843,14.32842061343,14.41222946472,14.49652860895,14.58132083065,14.67220542837,14.75802520833,14.84434696019,14.93117353378,15.01850805439,15.10635340681,15.19471249121,15.28358848801,15.37298433293,15.46880332718,15.55928251958,15.65029093742,15.74183158529,15.83390775812,15.92652249736,16.01967895316,16.113380201,16.20762961362,16.30865090754,16.4040424858,16.49999202274,16.59650278193,16.69357794961,16.79122101993,16.88943521823,16.98822378696,17.08759028197,17.18753798549,17.29466699621,17.39582592037,17.49757653721,17.59992220598,17.70286661052,17.80641315127,17.91056524676,18.01532664586,18.12070080902,18.23364617402,18.34029731861,18.44757228066,18.55547460176,18.66400816581,18.77317655783,18.88298349104,18.99343259063,19.10452783216,19.2236053387,19.33604689279,19.44914613325,19.56290690697,19.67733296969,19.79242844011,19.90819712001,20.02464283144,20.14176976577,20.26731246322,20.38585868839,20.50509842475,20.62503561099,20.74567420676,20.86701855437,20.98907266203,21.11184068121,21.23532666504,21.36768545088,21.49266790503,21.61838152318,21.74483045784,21.87201888365,21.99995137868,22.12863216875,22.25806563075,22.38825603783,22.52780097787,22.65956910312,22.79210808945,22.92542231482,23.05951631373,23.1943945132,23.33006176809,23.46652255971,23.60378139323,23.75090264526,23.88982499399,24.02955978014,24.17011203339,24.3114863964,24.45368753658,24.59672057234,24.74059022832,24.88530139802,25.04041015894,25.18687501732,25.33419642278,25.48237967807,25.63142967793,25.78135134315,25.93215007005,26.08383083979,26.23639881154,26.39992889083,26.55434576426,26.70966568928,26.86589425653,27.0230366265,27.18109814415,27.34008402779,27.5],description:"Gross temperament, g=91.531021, 5-limit"},groven:{frequencies:[261.6255653006,264.7464578752,272.5650766677,275.81646505128,279.10663876478,290.77709705464,294.24573392894,297.75574765819,306.54921255625,310.20599265769,313.90639394672,327.03195662575,330.93307160522,334.88072358477,344.77058253591,348.88329767713,353.04507480266,363.47137260637,367.80716871461,372.19468374184,387.75749219625,392.38299382393,397.06367008113,408.78994578219,413.66634097248,418.60090448096,436.10412364188,441.30634506723,446.57062302059,459.75895986689,465.24335632603,470.79317533731,484.69686416326,490.47874118496,496.32958936031,517.08292506126,523.2511306012],description:"Eivind Groven's 36-tone scale with 1/8-schisma temp. fifths and 5/4 (1948)"},groven_ji:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,517.37477513058,523.2511306012],description:"Untempered version of Groven's 36-tone scale"},gumbeng:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.9259392365,525.62941881859],description:"Scale of gumbeng ensemble, Java. 1/1=440 Hz."},gunkali:{frequencies:[261.6255653006,275.93321340298,282.55561052465,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Indian mode Gunkali, see Dani\xEF\xBF\xBDlou: Intr. to the Stud. of Mus. Scales, p.175"},gyaling:{frequencies:[261.6255653006,283.49766588023,307.55338551939,339.28638158975,347.81902735497,393.58362272115,435.9522698367],description:'Tibetan Buddhist Gyaling tones measured from CD "The Diamond Path", Ligon 2002'},far12_104:{frequencies:[261.6255653006,276.7193479141,294.32876096318,311.93817401225,329.54758706133,349.67263054599,369.79767403066,392.4383479509,415.07902187114,440.23532622697,465.3916305828,493.06356537421,523.2511306012],description:"Farey approximation to 12-tET with den=104"},far12_65:{frequencies:[261.6255653006,277.72560008833,293.82563487606,309.92566966379,330.05071314845,350.17575663311,370.30080011777,390.42584360243,414.57589578403,438.72594796562,466.90100884415,495.07606972267,523.2511306012],description:"Farey approximation to 12-tET with den=65"},far12_80:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,330.30227619201,349.92419358955,369.5461109871,392.4383479509,415.3305849147,441.49314144476,467.65569797482,493.81825450488,523.2511306012],description:"Farey approximation to 12-tET with den=80"},farey3:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"Farey fractions between 0 and 1 until 3rd level, normalised by 2/1"},farey4:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Farey fractions between 0 and 1 until 4th level, normalised by 2/1"},farey5:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,348.83408706747,366.27579142084,373.75080757229,380.54627680087,392.4383479509,402.50086969323,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Farey fractions between 0 and 1 until 5th level, normalised by 2/1"},farnsworth:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Farnsworth's scale"},fibo_9:{frequencies:[261.6255653006,277.97716313189,327.03195662575,343.38355445704,363.82305174615,392.4383479509,425.14154361347,449.66894036041,523.2511306012],description:"First 9 Fibonacci terms reduced by 2/1, B. McLaren, XH 13, 1991"},finnamore:{frequencies:[261.6255653006,277.97716313189,310.68035879446,348.83408706747,392.4383479509,416.96574469783,457.84473927605,466.02053819169,523.2511306012],description:"David J. Finnamore, Tuning List 9 May '97. Tetrachordal scale, 17/16x19/17x64/57"},finnamore53:{frequencies:[261.6255653006,286.15296204753,310.68035879446,327.03195662575,343.38355445704,359.73515228832,367.91095120397,376.08675011961,392.4383479509,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,457.84473927605,474.19633710734,523.2511306012],description:'David J. Finnamore, tuning for "Crawlspace", 53-limit, 1998.'},finnamore_11:{frequencies:[261.6255653006,287.78812183066,294.32876096318,305.22982618403,323.76163705949,331.11985608357,343.38355445704,348.83408706747,392.4383479509,431.68218274599,441.49314144476,457.84473927605,485.64245558924,515.07533168556,523.2511306012],description:"David J. Finnamore, 11-limit scale, Tuning List 3 Sept '98"},finnamore_7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,309.04519901133,331.11985608357,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,463.567798517,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 21/20 &15/14"},finnamore_7a:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,331.11985608357,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,473.02836583367,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 15/14 &21/20"},finnamore_jc:{frequencies:[261.6255653006,276.16031892841,310.68035879446,348.83408706747,392.4383479509,414.24047839262,466.02053819169,523.2511306012],description:"Chalmers' modification of Finnamore. Tuning List 9-5-97 19/18 x 9/8 x 64/57"},fisher:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.67535808973,327.03195662575,349.71841093413,365.63284485857,391.22147055517,410.55062036439,437.39890198442,467.47330218196,489.02683992698,523.2511306012],description:"Alexander Metcalf Fisher's modified meantone temperament (1818)"},"fj-10tet":{frequencies:[261.6255653006,280.31310567921,300.51585203447,322.00069575458,345.20039866051,370.01329949656,396.52624740872,425.14154361347,455.42228033808,488.36772189445,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 10-tet"},"fj-12tet":{frequencies:[261.6255653006,277.19851561611,293.6613488068,311.12229387098,329.64821227876,348.83408706747,370.01329949656,391.99491478937,415.52295665389,440.00663255101,466.16918908107,490.54793493862,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 12-tet"},"fj-13tet":{frequencies:[261.6255653006,275.96121271433,291.05844139692,306.97399661937,323.91736656265,341.56671025356,360.27127025001,379.97998769849,400.78810003496,422.62591317789,445.95266812602,41.6222490251,496.18641694941,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 13-tet"},"fj-14tet":{frequencies:[261.6255653006,274.92856014639,288.87822835275,303.4856557487,318.85615771011,335.0643204727,352.18826098158,370.01329949656,388.70083987518,408.5030756448,429.33426100611,451.0785608631,473.88781639354,497.93252750759,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 14-tet"},"fj-15tet":{frequencies:[261.6255653006,274.08392555301,286.94416839421,300.51585203447,314.76825825228,329.64821227876,345.20039866051,361.51896296083,378.66858135613,396.52624740872,415.52295665389,392.4383479509,455.42228033808,477.08191319521,499.46698830115,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 15-tet"},"fj-16tet":{frequencies:[261.6255653006,273.25336820285,285.40970760065,297.96244937013,311.12229387098,324.92207303462,339.29565499922,354.2846196779,370.01329949656,386.4008349055,403.52417698906,421.50785520652,440.00663255101,459.44001711325,479.64686971777,500.9851250437,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 16-tet"},"fj-17tet":{frequencies:[261.6255653006,272.52663052146,283.8915708581,295.75063903546,307.98958953109,320.70230585235,334.29933343966,348.03400888612,362.53828334512,373.75080757229,392.4383479509,409.71550792358,426.86276443782,444.76346101102,462.87600014722,482.37213602298,502.32108537715,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 17-tet"},"fj-18tet":{frequencies:[261.6255653006,271.88539139082,282.55561052465,293.6613488068,305.22982618403,317.12189733406,329.64821227876,342.60490694126,355.98232655655,370.01329949656,384.51030051755,399.57359064092,415.52295665389,431.68218274599,448.50096908674,466.16918908107,484.4917875937,503.12608711654,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 18-tet"},"fj-19tet":{frequencies:[261.6255653006,271.31540105247,281.44568388398,291.81313052759,302.73815413355,313.95067836072,325.69713231299,337.73482066077,350.31219760589,363.36884069528,376.74081403286,390.78248994267,405.26313056367,420.46965851882,436.04260883433,451.89870370104,468.95148497277,485.87604984397,504.56359022259,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 19-tet"},"fj-20tet":{frequencies:[261.6255653006,270.8594087818,280.31310567921,290.29686012806,300.51585203447,311.12229387098,322.00069575458,333.44434793214,345.20039866051,357.34223553253,370.01329949656,383.09457776159,396.52624740872,410.48149038542,425.14154361347,440.00663255101,455.42228033808,470.92601754108,488.36772189445,505.41302387616,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 20-tet"},"fj-21tet":{frequencies:[261.6255653006,270.34641747729,279.46367202564,288.87822835275,298.56093922539,308.58400009814,318.85615771011,329.64821227876,340.72166643799,352.18826098158,364.00078650518,376.08675011961,388.70083987518,401.78211814021,415.52295665389,429.33426100611,443.62595855319,457.84473927605,473.88781639354,489.85212226495,506.18859373377,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 21-tet"},"fj-22tet":{frequencies:[261.6255653006,270.06509966514,278.68810216803,287.55242312318,296.76929795292,306.29334474217,316.13089140489,326.18252297218,336.37572681506,347.40443916965,358.52392281934,370.01329949656,381.83190611439,392.4383479509,392.4383479509,419.69101100305,433.03541842858,446.94367405519,461.28718092474,475.68284600109,491.34557385722,506.89953276991,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 22-tet"},"fj-23tet":{frequencies:[261.6255653006,269.55361273395,277.97716313189,286.37392958579,295.1673044417,304.21577360535,313.47928094576,323.18452184192,332.97799220076,343.1154954762,353.6790049434,364.40703738298,375.66747838035,387.20583664489,398.97898708342,411.12588832951,423.58424858192,436.04260883433,449.99597231703,463.79077485106,477.96978276071,492.47165233054,507.86139146587,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 23-tet"},"fj-24tet":{frequencies:[261.6255653006,269.32043486826,277.19851561611,285.40970760065,293.6613488068,302.32287545847,311.12229387098,320.2657782128,329.64821227876,339.29565499922,348.83408706747,348.83408706747,370.01329949656,380.54627680087,391.99491478937,403.52417698906,415.52295665389,427.53446036927,440.00663255101,452.81347840488,466.16918908107,479.64686971777,490.54793493862,508.30109829831,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 24-tet"},"fj-26tet":{frequencies:[261.6255653006,268.69652652494,275.96121271433,283.42769574232,291.05844139692,299.00064605783,306.97399661937,315.29234792636,323.91736656265,332.57487114483,341.56671025356,350.8160989258,360.27127025001,370.01329949656,379.97998769849,390.22118214327,400.78810003496,411.12588832951,422.62591317789,434.18710837121,445.95266812602,457.84473927605,457.84473927605,483.00104363188,496.18641694941,509.48136400643,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 26-tet"},"fj-30tet":{frequencies:[261.6255653006,267.70988077271,274.08392555301,280.31310567921,286.94416839421,293.6613488068,300.51585203447,307.52478728316,314.76825825228,322.00069575458,329.64821227876,337.35928157183,345.20039866051,353.19451315581,361.51896296083,370.01329949656,378.66858135613,387.59343007496,396.52624740872,405.78659107848,415.52295665389,425.14154361347,392.4383479509,444.76346101102,455.42228033808,466.16918908107,477.08191319521,488.36772189445,499.46698830115,511.35905945117,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 30-tet"},"fj-31tet":{frequencies:[261.6255653006,267.57160087561,273.51763645063,279.79400733536,286.15296204753,292.60754013883,299.00064605783,305.96888145324,312.81317590289,319.76457981184,327.03195662575,334.53760808929,342.12573923925,349.884792149,357.81143489641,366.27579142084,373.75080757229,382.37582620857,391.25985441351,400.13321751856,409.20921752145,418.60090448096,428.11456140098,437.54620403721,447.51741432997,457.84473927605,467.90726101838,478.40103369253,489.12605686634,500.50108144463,511.62332769895,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 31-tet"},"fj-36tet":{frequencies:[261.6255653006,266.75547834571,271.88539139082,277.19851561611,282.55561052465,288.08208313999,293.6613488068,299.00064605783,305.22982618403,311.12229387098,317.12189733406,323.18452184192,329.64821227876,327.03195662575,342.60490694126,348.83408706747,355.98232655655,362.89997767503,370.01329949656,377.22755927063,384.51030051755,391.99491478937,399.57359064092,406.97310157871,415.52295665389,423.35773294097,431.68218274599,440.00663255101,448.50096908674,436.04260883433,466.16918908107,475.19745534191,484.4917875937,490.54793493862,503.12608711654,513.18860885887,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 36-tet"},"fj-41tet":{frequencies:[261.6255653006,266.05989691586,270.64713651786,275.21650375777,279.87851171692,284.71017400359,289.532292266,294.32876096318,299.49242343621,304.63250754179,309.81974838229,315.13988547572,320.49131749323,325.95972070239,331.39238271409,337.09447836808,342.81970625596,348.83408706747,354.64798851859,360.72615821749,366.27579142084,373.13810133036,379.35706968587,386.00493241072,392.4383479509,399.32323124828,405.97070477679,413.09299784305,419.97788114044,427.14378008261,434.48531380278,441.85651028546,449.45930449077,436.04260883433,465.11211608996,472.93852188955,480.82536325516,489.12605686634,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 41-tet"},"fj-42tet":{frequencies:[261.6255653006,265.98599138894,270.34641747729,274.92856014639,279.46367202564,284.05061375494,288.87822835275,293.6613488068,298.56093922539,303.4856557487,308.58400009814,313.7026920429,318.85615771011,324.18820048118,329.64821227876,335.0643204727,340.72166643799,346.37750898953,352.18826098158,358.01393146398,364.00078650518,370.01329949656,376.08675011961,382.37582620857,388.70083987518,395.22159864559,401.78211814021,408.5030756448,415.52295665389,422.16852582597,429.33426100611,436.04260883433,443.62595855319,451.0785608631,457.84473927605,466.16918908107,473.88781639354,481.94183081689,489.85212226495,497.93252750759,506.18859373377,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 42-tet"},"fj-43tet":{frequencies:[261.6255653006,265.84533248287,270.2034526875,274.70684356563,279.06726965397,283.42769574232,288.1672893166,292.86443876933,297.71185016965,302.50455987882,307.4100392282,312.38873468728,317.43901923139,322.67153053741,327.85988562987,332.97799220076,338.57426097725,344.24416486921,348.83408706747,355.41586229515,361.11697745717,367.05676325756,372.95559308809,379.09010482332,385.17097113699,391.45479319413,397.88888056133,404.33041910093,392.4383479509,417.48760420309,424.25767346043,431.1976909584,438.2228218785,445.32011114996,452.54151835779,459.82675113439,467.18850946536,475.05694751951,483.00104363188,490.54793493862,498.33441009638,506.89953276991,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 43-tet"},"fj-53tet":{frequencies:[261.6255653006,265.06800694929,268.51044859798,272.09058791262,275.69145590816,279.30296836145,282.98275430473,286.71294827463,290.48132617934,294.32876096318,298.13145813324,302.11523612093,306.05254808749,310.07474405997,313.95067836072,318.31110444906,322.46872002167,326.7649917632,331.03642956402,335.41739141103,336.37572681506,344.24416486921,348.83408706747,353.42400926572,358.01393146398,362.89997767503,367.52162744608,372.31330446624,377.3445653374,382.37582620857,387.20583664489,392.4383479509,397.67085925691,402.82031482791,408.13588186894,413.53718386224,418.60090448096,424.41480593208,429.81342870813,436.04260883433,441.49314144476,447.29532132038,453.1728541814,459.07882213124,465.11211608996,470.92601754108,477.46665667359,483.76047923507,485.87604984397,496.55464434604,503.12608711654,509.83443494476,516.36624730382,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 53-tet"},"fj-54tet":{frequencies:[261.6255653006,265.02329991489,268.42103452919,271.88539139082,275.39533189537,279.06726965397,282.55561052465,286.15296204753,289.90941019796,293.6613488068,297.46468383493,301.26580246736,305.22982618403,309.19384990071,313.15787361738,317.12189733406,321.29455387793,325.43667878855,329.64821227876,333.91683992313,338.19890148614,342.60490694126,346.93824963775,351.55935337268,355.98232655655,360.61902244137,365.28852513669,370.01329949656,374.76094489005,379.61356533813,384.51030051755,389.53139722534,394.5147413263,399.57359064092,404.77917650282,409.88005230427,415.52295665389,420.652869699,426.07592063241,431.68218274599,436.04260883433,442.75095666255,448.50096908674,454.40229762736,460.26719821402,466.16918908107,472.20223981084,478.40103369253,484.4917875937,490.54793493862,497.08857407114,503.12608711654,510.16985233617,516.54278277298,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 54-tet"},"fj-55tet":{frequencies:[261.6255653006,264.93728131706,268.33391312882,271.68808704293,275.15792212649,278.68810216803,282.14521748104,285.77561748219,289.37373131733,293.02063313667,296.76929795292,300.51585203447,304.33994330886,308.21641939523,312.11470948142,316.13089140489,319.76457981184,324.10331223806,328.22116374075,332.33517754401,336.37572681506,340.90603963412,345.20039866051,348.83408706747,353.96400011258,358.52392281934,363.07221307022,367.68998366571,372.31330446624,377.04860881557,381.83190611439,386.75083566176,391.58336244338,396.52624740872,401.56482115906,406.65712867376,411.81801945465,416.96574469783,418.60090448096,427.65717404906,433.03541842858,438.60756535689,444.15502946381,449.8123754291,455.42228033808,461.28718092474,467.18850946536,472.93852188955,479.03272519828,485.0974023282,491.34557385722,497.60156537565,503.87145909745,510.16985233617,516.71049146868,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 55-tet"},"fj-5tet":{frequencies:[261.6255653006,300.51585203447,345.20039866051,396.52624740872,455.42228033808,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 5-tet"},"fj-60tet":{frequencies:[261.6255653006,264.66772303665,267.70988077271,270.8594087818,274.08392555301,277.19851561611,280.31310567921,283.6903720127,286.94416839421,290.29686012806,293.6613488068,297.10021822272,300.51585203447,304.05133264664,307.52478728316,311.12229387098,314.76825825228,318.50068819203,322.00069575458,325.79787377056,329.64821227876,333.44434793214,337.35928157183,341.25073734861,345.20039866051,348.83408706747,353.19451315581,357.34223553253,361.51896296083,365.74186169574,370.01329949656,374.3258088147,378.66858135613,383.09457776159,387.59343007496,391.99491478937,396.52624740872,401.15920012759,405.78659107848,410.48149038542,415.52295665389,420.18651396763,425.14154361347,429.81342870813,434.91003062957,440.00663255101,444.76346101102,450.23934493592,455.42228033808,460.95932933915,466.16918908107,470.92601754108,477.08191319521,482.55382044333,488.36772189445,490.54793493862,499.46698830115,505.41302387616,511.35905945117,517.30509502619,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 60-tet"},"fj-66tet":{frequencies:[261.6255653006,264.37951861955,267.19206668997,270.06509966514,272.83808952777,275.76748774928,278.68810216803,281.58005756929,284.57517629188,287.55242312318,290.69507255622,293.6613488068,296.76929795292,299.91223339337,302.93486508491,306.29334474217,309.48390041656,312.81317590289,316.13089140489,319.38705374359,322.78478835788,326.18252297218,329.64821227876,332.97799220076,336.37572681506,340.11323489078,343.8507429665,347.40443916965,351.12904816659,354.74652922115,358.52392281934,362.25078272391,366.27579142084,370.01329949656,373.75080757229,377.90359432309,381.83190611439,385.89770881839,389.97018224052,392.4383479509,398.12586024004,402.50086969323,406.65712867376,411.12588832951,415.52295665389,419.69101100305,424.01384721132,428.62060698183,433.03541842858,437.71969579139,442.27178896054,446.94367405519,451.89870370104,456.45311392871,461.28718092474,466.16918908107,470.92601754108,475.68284600109,481.05345877852,485.87604984397,491.34557385722,496.41773928832,501.44900015948,506.89953276991,512.35006538034,517.80059799077,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 66-tet"},"fj-72tet":{frequencies:[195.99771799087,197.9006084568,199.84081050049,201.76235675531,203.68390301012,205.67661764474,207.66424882366,209.67197738558,211.67753543014,213.81569235368,215.817711945,217.77524221208,219.99743856118,222.13074705632,223.99739198957,226.48625190056,228.66400432268,230.8417567448,233.07836734049,235.19726158904,237.57299150408,239.92824098882,242.11482810637,244.5635242187,246.9571246685,249.45164107929,251.74018824515,254.18454051941,256.66367832138,259.11562717437,261.33029065449,264.17083729204,266.68541956135,269.28382123963,271.86780237443,274.39680518722,277.19677258709,279.99673998696,282.60136082405,285.0875898049,288.0572521987,290.83532347032,293.66437746429,296.5093682426,299.34196929515,302.30156503677,304.88533909691,307.99641398565,311.29049327962,313.59634878539,317.15994365795,320.28895378996,323.39623468494,326.46784071315,329.63252571192,332.8263135694,335.99608798435,339.22681959958,342.55457018224,345.87832586624,349.232297511,352.79589238357,355.99585512627,359.32914964993,362.95873702013,366.4305162438,367.49572123288,373.6206499201,376.91868844398,380.79556638226,384.45706221286,388.2262490973,391.99543598174],description:"Franck Jedrzejewski continued fractions approx. of 72-tet"},"fj-78tet":{frequencies:[138.59131548844,139.82873794816,141.06616040788,142.33702671786,143.60064014465,144.89092073791,146.18536017274,147.4753741736,148.781853392,150.14059177914,151.48353088271,152.80580938469,154.18283848089,155.56168065029,156.95883922787,158.39007484393,159.76498868806,161.21846903757,162.6138101731,164.12129465736,165.53962683341,167.02030328094,168.55700532378,170.00534699915,171.58924774759,173.06676710248,174.62505751543,176.17540104463,177.75842638735,179.35346710269,180.93866188769,182.53490332624,184.15558359423,185.8383548595,187.50589742554,188.98815748424,190.84705739392,192.48793817839,194.02784168382,196.00771761937,197.74614527009,199.57149430335,201.28738678083,203.10796235375,204.87411854813,206.71247055903,207.88697323266,210.45347907504,212.31010032272,214.18657848213,216.10849194808,217.78635291041,220.11561871693,221.7461047815,223.87827886594,225.96410133985,228.00506741647,230.00260868294,232.05987709692,234.17153306667,236.2351968553,238.37706264012,240.41350645954,242.53480210477,244.7463656498,246.9445257794,249.1343885566,251.39820018833,253.59261982991,255.8608901325,258.1602935569,260.55167311827,262.84559834014,265.13121223875,267.51346943117,269.88835121433,272.23294113801,274.70778605744,277.18263097688],description:"Franck Jedrzejewski continued fractions approx. of 78-tet"},"fj-7tet":{frequencies:[261.6255653006,288.87822835275,318.85615771011,352.18826098158,388.70083987518,429.33426100611,473.88781639354,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 7-tet"},"fj-84tet":{frequencies:[97.99885899544,98.81551615374,99.63217331203,100.44883047033,101.26548762862,102.12512674262,102.98185182572,103.83212441184,104.68059938149,105.53723276432,106.39876119505,107.33208366167,108.20707347413,109.09306944775,109.9987192806,110.89344570537,111.83399203009,112.76581035092,113.67867643471,114.64017467391,115.58839778949,116.53918367025,117.50574088079,118.47623251688,119.43610940069,120.45693084856,121.43336875522,122.4985737443,123.47856233425,124.48503710232,125.50731064328,126.58185953578,127.62642101732,128.62350243151,129.74496824748,130.66514532725,131.9215409554,132.99845149381,134.10370178323,135.17083999371,136.34623860235,137.19840259362,138.59838629355,139.73911375276,140.87335980595,142.09834554339,143.22910160872,144.41937115117,145.59830479323,146.83218873215,148.0408295463,149.25980062382,150.498247743,151.74016876713,153.01576229113,154.29607586516,155.64524663982,156.7981743927,158.13452246991,159.45577056885,160.81864040277,162.07503603092,163.33143165907,164.81626285597,166.17197829662,167.54643634704,168.96354999214,170.33135015874,171.49800324202,173.20728566636,174.61614875551,176.03498745477,177.50736723702,178.95443816559,180.52421393897,181.99788099153,183.48722535316,183.74786061645,186.51395744293,188.05186455882,189.60648805639,191.21728584476,192.8364644749,194.36440367429,195.99771799088],description:"Franck Jedrzejewski continued fractions approx. of 84-tet"},"fj-8tet":{frequencies:[261.6255653006,285.40970760065,311.12229387098,339.29565499922,370.01329949656,403.52417698906,440.00663255101,479.64686971777,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 8-tet"},"fj-90tet":{frequencies:[69.29565774422,69.83283338565,70.37840239647,70.9071846685,71.46114704873,72.0131345185,72.59545097014,73.14541650779,73.69538204544,74.24534758309,74.83931036376,75.40998048636,76.00168913882,76.58993750677,77.19009976571,77.78084032514,78.38361285822,78.99704982841,79.59636362512,80.23707738804,80.84493403492,81.4527906818,82.08870225085,82.70772053342,83.37133822351,83.99473665966,84.69469279849,85.2869633775,85.97794571968,86.61957218027,87.31252875772,87.95218098305,88.65767976099,89.35492709123,90.08435506749,90.74431371267,91.43177063473,92.14038007748,92.85618137725,93.5491379547,94.28753430771,95.03404490636,95.75399979201,96.51895185802,97.25706350066,98.00385880968,98.74631228551,99.50145727375,100.29634673506,101.05616754365,101.84361819984,102.66023369514,103.42635484212,103.94348661633,105.02623126858,105.83336819117,106.60870422188,107.47897935838,108.27446522534,109.14066094715,110.05780935847,110.87305239075,111.72157064884,112.60544383436,113.39289449054,114.33783527796,115.19278170468,116.11704811194,116.93642244337,117.80261816517,118.79255613295,119.69249974002,120.62577459179,121.5942673625,122.52275717094,123.4722628897,124.41720367712,125.39214258478,126.36267000417,127.35418180019,128.32529211893,129.35189445588,130.27583655913,131.29703572589,132.29171023897,133.26088027735,134.39157865546,135.4415128637,136.49144707195,137.52522844622,138.59131548844],description:"Franck Jedrzejewski continued fractions approx. of 90-tet"},"fj-96tet":{frequencies:[48.99942949772,49.35708956705,49.70956615711,50.0646344868,50.44058918883,50.81422318282,51.17718191984,51.5338827476,51.91606220592,52.2660581309,52.67438671005,53.04896912563,53.45392308842,53.81904551389,54.21213476343,54.59936429746,54.9993596403,55.39065943221,55.80490581685,56.20522795327,56.62156297514,57.01751796098,57.44760699733,57.85474808165,58.26959183513,58.69162434342,59.11042288614,59.54361052887,59.98206024721,60.41025554513,60.85413018265,61.24928687215,61.73928116713,62.19158359326,62.61038213598,63.09515579158,63.54613512986,63.99925485416,64.47293354963,64.92424408448,65.33257266363,65.89578449693,66.3533941115,66.81740386053,67.32095530991,67.84536391992,68.30223505743,68.78766064103,69.29919314678,69.78706625433,70.30352927934,70.77695371893,71.27189745123,71.86582992999,72.36838818125,72.90159022832,73.41609436608,73.94459360565,74.47913283653,75.03037641838,75.5753912592,76.10549687944,76.66039776256,77.21122223883,77.82262331991,78.34524166943,78.94352530188,79.48796340741,80.07223844749,80.64489438166,81.23589627254,81.66571582953,82.40813142798,82.999033639,83.58726208435,84.21776944921,84.8067048999,85.43490271397,86.04777863014,86.69129834212,87.30807437776,87.94769397027,88.57589178434,89.20408959841,89.83228741249,90.46048522656,91.16172929808,91.87393030822,92.49330511929,93.09891604567,93.82869478287,94.4988997456,95.19889159557,95.91377688915,96.59887529551,97.28872233605,97.99885899544],description:"Franck Jedrzejewski continued fractions approx. of 96-tet"},"fj-9tet":{frequencies:[261.6255653006,282.55561052465,305.22982618403,329.64821227876,355.98232655655,384.51030051755,415.52295665389,448.50096908674,484.4917875937,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 9-tet"},flavel:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Bill Flavel's just tuning. Tuning List 6-5-98"},fogliano:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord with D-/D and Bb-/Bb"},fogliano1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.1, Musica theorica (1529)"},fogliano2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.2"},"fokker-h":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker-H 5-limit per.bl. synt.comma&small diesis, KNAW B71, 1968"},"fokker-ht":{frequencies:[261.6255653006,272.31140503734,279.67242998298,290.89121260742,305.67073265504,313.92185180985,326.66733279836,335.5942968927,349.22294231864,363.36596605244,376.74379448613,392.00137290182,407.92073675044,419.068143928,436.08264938702,447.85404100892,470.60848490625,489.4864783277,502.71810253025,523.2511306012],description:"Tempered version of Fokker-H per.bl. with better 6 tetrads, OdC"},"fokker-k":{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Fokker-K 5-limit per.bl. of 225/224 & 81/80 & 10976/10935, KNAW B71, 1968"},"fokker-l":{frequencies:[261.6255653006,271.31540105247,282.62020942966,291.99281841585,301.39265122629,313.95067836072,325.57848126297,339.14425131559,350.39138209902,363.36884069528,376.74081403286,390.69417751556,403.65087217807,420.46965851882,436.04260883433,454.2110508691,468.83301301868,484.38104661368,504.56359022259,523.2511306012],description:"Fokker-L 7-limit periodicity block 10976/10935 & 225/224 & 15625/15552, 1969"},"fokker-lt":{frequencies:[261.6255653006,272.07297743248,282.57734531132,291.77233860052,302.20925621315,313.90139500947,326.42149564976,339.58797317787,349.9403315901,363.14714144228,376.97081214523,391.19775936204,403.12344267272,419.38375585596,436.11106867998,452.98371913917,469.18728997524,484.4545223075,503.15865298196,523.2511306012],description:"Tempered version of Fokker-L per.bl. with more triads"},"fokker-m":{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker-M 7-limit periodicity block 81/80 & 225/224 & 1029/1024, KNAW B72, 1969"},"fokker-n":{frequencies:[261.6255653006,265.7783520514,273.37201925287,277.71125765371,286.15296204753,290.69507255622,299.00064605783,303.74668805875,313.95067836072,318.93402246168,328.62879235146,333.84512238879,343.38355445704,348.83408706747,358.80077526939,364.4960256705,375.57576268738,381.53728273004,392.4383479509,398.6675280771,410.05802887931,416.56688648057,429.2294430713,436.04260883433,450.69091522486,457.84473927605,470.92601754108,478.40103369253,492.94318852719,500.76768358318,515.07533168556,523.2511306012],description:"Fokker-N 7-limit periodicity block 81/80 & 2100875/2097152 & 1029/1024, 1969"},"fokker-n2":{frequencies:[261.6255653006,265.7783520514,272.52663052146,279.06726965397,286.15296204753,290.69507255622,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"Fokker-N different block shape"},"fokker-p":{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.31310567921,286.15296204753,290.69507255622,299.00064605783,306.17666156322,312.97980223949,320.35783506196,327.03195662575,334.88072358477,341.85740532612,350.39138209902,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.69417751556,400.44729382745,408.78994578219,418.60090448096,427.32175665765,437.39523080459,447.11400319927,457.84473927605,470.92601754108,478.40103369253,488.36772189445,500.76768358318,510.98743222773,523.2511306012],description:"Fokker-P 7-limit periodicity block 65625/65536 & 6144/6125 & 2401/2400, 1969"},"fokker-q":{frequencies:[261.6255653006,265.7783520514,269.10058145205,272.52663052146,274.70684356563,279.06726965397,284.76252005507,286.15296204753,290.69507255622,294.32876096318,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,318.93402246168,321.92208230347,327.03195662575,332.22294006425,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,381.53728273004,387.59343007496,392.4383479509,398.6675280771,401.85686830172,408.78994578219,412.06026534844,418.60090448096,425.24536328225,429.2294430713,436.04260883433,439.53094970501,448.50096908674,454.2110508691,457.84473927605,465.11211608996,470.92601754108,478.40103369253,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-Q 7-limit per.bl. 225/224 & 4000/3969 & 6144/6125, KNAW B72, 1969"},"fokker-r":{frequencies:[261.6255653006,264.95644634031,268.26840191956,272.52663052146,275.55899540689,279.06726965397,282.62020942966,287.04062021552,290.69507255622,294.32876096318,298.07600213285,301.80195215951,306.17666156322,310.07474405997,313.95067836072,317.94773560837,322.92069774245,327.03195662575,331.19555792538,334.88072358477,340.1962906258,344.44874425862,348.83408706747,353.19451315581,357.69120255941,363.36884069528,367.91095120397,372.08969287196,376.74081403286,382.72082695402,387.59343007496,392.4383479509,397.43466951046,402.40260287934,408.78994578219,413.33849311034,418.60090448096,423.93031414449,430.56093032327,436.04260883433,441.49314144476,447.11400319927,453.59505416773,459.26499234482,465.11211608996,470.92601754108,476.92160341255,484.38104661368,490.54793493862,496.79333688808,502.32108537715,510.29443593869,516.67311638793,523.2511306012],description:"Fokker-R 7-limit per.bl. 4375/4374 & 65625/65536 & 6144/6125, 1969"},"fokker-s":{frequencies:[261.6255653006,265.7783520514,269.10058145205,273.37201925287,273.85732695955,278.20426865732,282.55561052465,286.15296204753,290.69507255622,295.2417807931,299.00064605783,303.74668805875,304.28591884395,309.04519901133,313.95067836072,317.94773560837,322.92069774245,328.04642310345,332.22294006425,333.84512238879,338.01818641865,343.38355445704,348.83408706747,353.19451315581,358.80077526939,364.4960256705,369.13660007139,370.8542388136,375.57576268738,381.53728273004,387.59343007496,392.4383479509,398.6675280771,404.99558407833,410.05802887931,412.06026534844,417.30640298598,423.93031414449,430.56093032327,436.04260883433,442.96392008567,449.89223739901,450.69091522486,457.84473927605,463.67378109554,470.92601754108,478.40103369253,484.4917875937,492.06963465517,499.88026377668,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-S 7-limit per.bl. 4375/4374 & 323/322 & 64827/65536, 1969"},fokker_12:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Fokker's 7-limit 12-tone just scale"},fokker_12a:{frequencies:[261.6255653006,274.70684356563,293.02063313667,309.04519901133,327.03195662575,348.83408706747,367.91095120397,390.69417751556,412.06026534844,439.53094970501,465.11211608996,490.54793493862,523.2511306012],description:"Fokker's 7-limit periodicity block of 2048/2025 & 3969/4000 & 225/224"},fokker_12b:{frequencies:[261.6255653006,275.93321340298,293.02063313667,309.04519901133,332.22294006425,348.83408706747,367.91095120397,392.4383479509,412.06026534844,439.53094970501,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit semitone scale KNAW B72, 1969"},fokker_12c:{frequencies:[261.6255653006,275.93321340298,293.02063313667,311.45900631024,332.22294006425,348.83408706747,372.08969287196,392.4383479509,412.06026534844,442.96392008567,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit complementary semitone scale, KNAW B72, 1969"},fokker_12t:{frequencies:[261.6255653006,279.53180800295,293.53544531438,305.4439412874,326.66157401657,349.08351368992,366.63408494061,391.81886165309,419.06057467847,436.03416050506,457.88164994338,489.21957814041,523.2511306012],description:"Tempered version of fokker_12 with egalised 225/224, see also lumma"},fokker_12t2:{frequencies:[261.6255653006,279.53060025556,293.5302824794,305.44678713816,326.66192308793,349.10467831311,366.62831408589,391.81689264402,419.03095498017,436.04260883433,457.88067400285,489.21694446174,523.2511306012],description:"Another tempered version of fokker_12 with egalised 225/224"},fokker_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 3125/3072. KNAW B71, 1968"},fokker_22a:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 2109375/2097152 = semicomma"},fokker_31:{frequencies:[261.6255653006,265.7783520514,275.93321340298,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,315.35224388912,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,482.88312345521,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone just system"},fokker_31a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,476.92160341255,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone first alternate septimal tuning"},fokker_31b:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,480.53675259294,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone second alternate septimal tuning"},fokker_31c:{frequencies:[261.6255653006,269.46602871384,272.52663052146,279.06726965397,287.4304306281,294.32876096318,297.67175429757,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,383.2405741708,392.4383479509,396.89567239676,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,465.11211608996,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & 2109375/2097152 = semicomma"},fokker_31d:{frequencies:[261.6255653006,266.13928761861,272.52663052146,279.06726965397,287.4304306281,294.32876096318,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,399.20893142792,408.78994578219,418.60090448096,425.82286018978,436.04260883433,443.56547936435,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & W\xEF\xBF\xBDrschmidt's comma"},fokker_31d2:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Reduced version of fokker_31d by Prooijen expressibility"},fokker_41:{frequencies:[261.6255653006,264.89588486686,271.31540105247,274.70684356563,280.31310567921,283.8170195002,290.69507255622,294.32876096318,300.33547037059,305.22982618403,311.45900631024,313.95067836072,321.55899383997,325.57848126297,329.64821227876,336.37572681506,341.85740532612,348.83408706747,353.19451315581,361.75386806997,366.27579142084,373.75080757229,378.42269266694,387.59343007496,392.4383479509,400.44729382745,406.97310157871,415.27867508032,420.46965851882,425.72552925031,436.04260883433,439.53094970501,448.50096908674,455.80987376816,465.11211608996,470.92601754108,482.33849075995,488.36772189445,498.33441009638,504.56359022259,516.79124009995,523.2511306012],description:"Fokker's 7-limit supracomma per.bl. 10976/10935 & 225/224 & 496125/262144"},fokker_41a:{frequencies:[261.6255653006,264.59711493117,272.83435407277,275.93321340298,279.06726965397,287.4304306281,291.02331101095,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.77913876369,367.91095120397,372.08969287196,376.315896791,388.03108134794,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 34171875/33554432"},fokker_41b:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,287.4304306281,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,340.65828815182,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,383.2405741708,388.03108134794,392.4383479509,397.34382730029,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,454.2110508691,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.67978412536,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 3125/3072"},fokker_53:{frequencies:[261.6255653006,263.718569823,268.26840191956,272.52663052146,274.70684356563,279.06726965397,282.55561052465,286.15296204753,290.69507255622,294.32876096318,299.00064605783,300.46061014991,305.22982618403,309.04519901133,313.95067836072,317.87506184023,321.92208230347,327.03195662575,329.64821227876,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,357.69120255941,360.55273217989,366.27579142084,373.75080757229,376.74081403286,381.53728273004,386.30649876417,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.83341578697,429.2294430713,436.04260883433,439.53094970501,448.50096908674,450.69091522486,457.84473927605,465.11211608996,470.92601754108,476.92160341255,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker's 53-tone system, degree 37 has alternatives"},fokker_53a:{frequencies:[261.6255653006,264.89588486686,269.46602871384,272.52663052146,275.93321340298,279.38237857051,283.88190679319,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.42486507835,313.95067836072,319.36714514233,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,359.28803828513,363.36884069528,367.91095120397,372.50983809402,378.50920905758,383.2405741708,388.03108134794,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,425.82286018978,431.14564594215,436.04260883433,441.49314144476,447.01180571282,454.2110508691,459.88868900496,465.63729761752,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,504.67894541011,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & kleisma"},fokker_53b:{frequencies:[261.6255653006,264.59711493117,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,388.03108134794,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.35538388988,431.14564594215,436.04260883433,441.49314144476,446.50763144636,451.5790761492,459.88868900496,465.11211608996,470.92601754108,476.27480687611,485.03885168492,490.54793493862,496.11959049595,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & 2109375/2097152"},fokker_av:{frequencies:[261.6255653006,267.53238172257,273.57240048543,279.74894499065,286.06477437084,292.52336378682,299.12777114678,305.88111195206,312.78710209553,319.84901131344,327.07017092477,334.45455423048,342.00545991849,349.72704272607,357.62295854304,365.69693211485,373.95340598657,382.39606841888,391.02956482064,399.85798283974,408.88548711149,418.11704484248,427.5567798744,437.20988623572,447.08093432269,457.17458061119,467.49637893146,478.0512162812,488.84407170063,499.88088374606,511.16658268681,522.70737825664],description:"Fokker's suggestion for a shrinked octave by averaging approximations"},fokker_bosch:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Scale of "Naar Den Bosch toe", genus diatonicum cum septimis. 1/1=D'},fokker_sr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,296.75121990114,305.22982618403,315.35224388912,325.57848126297,336.37572681506,347.28371334717,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,446.50763144636,461.31528248922,474.80195184183,490.54793493862,506.45541529795,523.2511306012],description:"Fokker's 7-limit sruti scale, KNAW B72, 1969"},fokker_sr2:{frequencies:[261.6255653006,270.30192333353,279.06726965397,288.32205155576,296.75121990114,306.59245933664,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,372.08969287196,381.53728273004,394.1903048614,406.97310157871,420.46965851882,434.10464168396,448.50096908674,461.31528248922,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Fokker's complementary 7-limit sruti scale, KNAW B72, 1969"},fokker_sra:{frequencies:[261.6255653006,269.76956886185,278.7476190342,287.42460593148,296.37169586701,305.59729331129,315.11006948887,325.59707150921,336.43308557971,346.90573279191,357.7043774887,368.83916960349,381.11429755927,392.97780480816,406.05627704035,419.57000893919,433.5334812886,447.02871783796,460.94403787128,475.29252052682,490.08765232515,506.39798251136,523.2511306012],description:"Two-step approximation 9-13 to Fokker's 7-limit sruti scale"},fokker_srb:{frequencies:[261.6255653006,269.31534001393,278.64197723942,286.83190328195,296.76515515861,305.48776291796,316.06708432391,325.35701999957,336.62443200122,346.51859521924,358.51885197895,369.0565423573,381.83730669135,393.06038214356,406.67242132093,418.62545783369,433.12283887627,445.85331391262,461.29362042034,474.85209942927,491.29666030217,505.73699464332,523.2511306012],description:"Two-step maximally even approximation 11-11 to Fokker's 7-limit sruti scale"},fokker_uv:{frequencies:[220,220.05029721079,220.09166666667,220.14198483463,220.15668113546,220.24841308594,220.29876708984,220.3905582428,220.5253936656,220.68244897959,220.7744,220.82487425697,220.98214285714,221.03266460905,221.0236875,221.07421875,221.28224372864,221.41762468656,221.66763848397,221.71831695641,221.76,221.81069958848,222.01040039062,222.06115722656,222.40609622534,222.44790857143,222.4987654321,222.65722615577,222.75,222.80092592593,223.00151824951,223.05250167847,223.14544022083,223.18896568405,223.23999196793,223.44097959184,223.49206349206,223.58518518519,223.79557291667,223.88882107205,224.18534499514,224.23659907493,224.33003099121,224.48979591837,224.58333333333,224.79466029576,224.83692169189,224.88832473755,225.18617242815,225.28,225.33150434385,225.49198250729,225.5859375,225.67993164062,225.9788277551,226.03049186753,226.28571428571,226.4317558299,226.68743133545,227.08224,227.1341563786,227.29591836735,227.390625,227.44261188272,228.096,228.14814814815,229.16666666667,231,232.03125,233.6237037037,233.84353741497],description:"Table of Unison Vectors, Microsons and Minisons, from article KNAW, 1969"},foote:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,492.17459484008,523.2511306012],description:"Ed Foote, piano temperament. TL 9 Jun 1999, almost equal to Coleman"},forster:{frequencies:[261.6255653006,279.06726965397,283.42769574232,287.78812183066,299.00064605783,309.19384990071,319.76457981184,327.03195662575,336.37572681506,340.11323489078,343.38355445704,353.19451315581,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,387.59343007496,392.4383479509,398.6675280771,402.50086969323,406.97310157871,418.60090448096,428.11456140098,441.49314144476,442.75095666255,448.50096908674,457.84473927605,465.11211608996,483.00104363188,490.54793493862,507.3950357345,523.2511306012],description:"Cris Forster's Chrysalis tuning, XH 7+8"},fortuna11:{frequencies:[261.6255653006,274.70684356563,299.00064605783,305.22982618403,332.97799220076,343.38355445704,373.75080757229,398.6675280771,411.12588832951,448.50096908674,457.84473927605,498.33441009638,523.2511306012],description:"11-limit scale from Clem Fortuna"},fortuna_a1:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,320.24370022528,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,479.82340237272,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or G major, superset of Basandida, trivalent"},fortuna_a2:{frequencies:[261.6255653006,277.18263097687,285.30470202322,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,428.11456140098,440,466.16376151809,493.88330125613,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or F minor"},fortuna_bag:{frequencies:[261.6255653006,266.17557513191,291.58269109838,303.42373253797,318.96815495553,348.01136516401,359.18086083642,388.55281975337,398.8194592997,432.92801877123,462.35552488468,479.64686971777,523.2511306012],description:"Bagpipe tuning from Fortuna, try key of G with F natural"},fortuna_eth:{frequencies:[261.6255653006,280.31310567921,288.69027895239,305.7551787248,323.91736656265,346.02090894595,368.95913055213,385.17097113699,414.24047839262,422.62591317789,469.58434797544,484.00729580611,523.2511306012],description:"Ethiopian Tunings from Fortuna"},fortuna_sheng:{frequencies:[261.6255653006,275.29257244317,286.94416839421,312.81317590289,320.2657782128,348.83408706747,367.19377586049,382.62738925213,417.81993264424,433.74764773521,467.75479856774,484.77678276288,523.2511306012],description:"Sheng scale on naturals starting on d, from Fortuna"},"francis_r12-14p":{frequencies:[261.6255653006,277.2273508585,293.19140419912,311.27759533081,328.56574776048,349.51003591412,369.636465861,391.67937618637,415.43871422078,438.93656251816,466.46466724696,492.84862139436,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cornet-ton"},"francis_r12-2":{frequencies:[261.6255653006,277.2831963903,293.15801965318,311.35818177599,328.6319369554,349.45847225471,369.71092870521,391.50168688506,415.45657533448,438.80025285527,466.56783666625,492.94847466277,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R12-2, fifths beat ratios 0, 1, 2. C=279.331 Cornet-ton"},"francis_r2-1":{frequencies:[261.6255653006,276.41735337657,293.40958958006,310.96959408698,328.77281747949,349.18425877583,368.55655650762,391.91325216238,414.62612565656,439.06418506387,465.92902003736,492.10921220871,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R2-1, fifths beat ratios 0, 1, 2. C=249.072 Cammerton"},"francis_r2-14p":{frequencies:[261.6255653006,276.42350693124,293.47533146651,310.97644498676,328.88393162803,349.17189700163,368.56467609256,392.05867944486,414.6352601896,439.36162975058,466.01338145177,492.37181018521,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cammerton"},francis_seal:{frequencies:[261.6255653006,275.89934348748,293.01242796531,310.38672525582,327.92787107993,349.18506556371,367.865749003,391.38524198103,413.84896721463,437.93907827641,465.58008765101,490.83740312498,523.2511306012],description:"J. Charles Francis, Bach tuning interpretion as beats/sec. from seal"},francis_suppig:{frequencies:[261.6255653006,276.33536163417,293.13939342657,310.64213412049,328.58201670643,349.47038191026,368.45885450371,391.47500324588,414.51381656966,438.73106346722,465.97531289569,491.91879926026,523.2511306012],description:"J. Charles Francis, Suppig Calculus musicus, 5ths beat ratios 0, 1, 2."},efg333:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,523.2511306012],description:"Genus primum [333]"},efg333333333337:{frequencies:[261.6255653006,275.01702890535,279.38237857051,289.72987407313,294.32876096318,309.39415751852,314.30517589183,325.94610833227,331.11985608357,343.38355445704,353.59332287831,366.6893718738,372.50983809402,386.30649876417,392.4383479509,412.52554335802,419.07356785577,434.59481110969,441.49314144476,457.84473927605,471.45776383774,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:"Genus [333333333337]"},efg333333355:{frequencies:[261.6255653006,264.89588486686,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.42486507835,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,397.34382730029,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Genus [333333355]"},efg33335:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Genus [33335]"},efg3333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Genus [3333555]"},efg33335555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Genus bis-ultra-chromaticum [33335555]"},efg333355577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,278.20426865732,279.06726965397,281.68182201554,284.8811711051,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,317.94773560837,320.49131749323,321.92208230347,325.57848126297,327.03195662575,333.84512238879,343.38355445704,348.83408706747,352.10227751942,356.10146388137,357.69120255941,360.55273217989,363.36884069528,366.27579142084,367.91095120397,372.08969287196,375.57576268738,381.53728273004,392.4383479509,400.61414686654,402.40260287934,406.97310157871,408.78994578219,412.06026534844,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,445.12682985172,450.69091522486,457.84473927605,459.88868900496,465.11211608996,469.46970335923,470.92601754108,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Genus [333355577]"},efg33337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,386.30649876417,392.4383479509,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33337]"},efg3335:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonicum veterum correctum [3335]"},efg33355:{frequencies:[261.6255653006,272.52663052146,290.69507255622,310.07474405997,327.03195662575,348.83408706747,363.36884069528,387.59343007496,408.78994578219,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Genus diatonico-chromaticum hodiernum correctum [33355]"},efg333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonico-hyperchromaticum [333555]"},efg33355555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,319.36714514233,327.03195662575,340.65828815182,348.83408706747,359.28803828513,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,425.82286018978,436.04260883433,459.88868900496,470.92601754108,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"Genus [33355555]"},efg333555777:{frequencies:[261.6255653006,262.79353657426,267.07609791103,268.26840191956,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,281.68182201554,286.15296204753,294.32876096318,299.00064605783,300.46061014991,305.22982618403,306.59245933664,311.45900631024,312.97980223949,313.95067836072,318.93402246168,320.49131749323,321.92208230347,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,350.39138209902,352.10227751942,357.69120255941,358.80077526939,360.55273217989,366.27579142084,367.91095120397,373.75080757229,375.57576268738,381.53728273004,392.4383479509,398.6675280771,400.61414686654,402.40260287934,408.78994578219,412.06026534844,417.30640298598,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,448.50096908674,450.69091522486,457.84473927605,459.88868900496,467.18850946536,469.46970335923,470.92601754108,476.92160341255,478.40103369253,480.73697623985,488.36772189445,490.54793493862,498.33441009638,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333555777]"},efg333557:{frequencies:[261.6255653006,265.7783520514,279.06726965397,280.31310567921,290.69507255622,299.00064605783,313.95067836072,318.93402246168,327.03195662575,332.22294006425,348.83408706747,358.80077526939,372.08969287196,373.75080757229,392.4383479509,398.6675280771,418.60090448096,425.24536328225,436.04260883433,448.50096908674,465.11211608996,478.40103369253,490.54793493862,498.33441009638,523.2511306012],description:"Genus diatonico-enharmonicum [333557]"},efg33357:{frequencies:[261.6255653006,274.70684356563,279.06726965397,305.22982618403,313.95067836072,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,406.97310157871,418.60090448096,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Genus diatonico-enharmonicum [33357]"},efg3335711:{frequencies:[261.6255653006,265.58571790036,269.80136421624,275.93321340298,286.15296204753,294.32876096318,295.09524211152,303.52653474327,314.76825825228,321.92208230347,327.03195662575,331.98214737546,337.2517052703,343.38355445704,354.11429053382,359.73515228832,367.91095120397,379.40816842909,386.30649876417,392.4383479509,393.46032281536,404.70204632437,429.2294430713,441.49314144476,442.64286316727,449.66894036041,457.84473927605,472.15238737843,482.88312345521,490.54793493862,505.87755790546,515.07533168556,523.2511306012],description:"Genus [3 3 3 5 7 11], expanded hexany 1 3 5 7 9 11"},efg333577:{frequencies:[261.6255653006,267.07609791103,281.68182201554,286.15296204753,294.32876096318,300.46061014991,305.22982618403,321.92208230347,327.03195662575,333.84512238879,343.38355445704,348.83408706747,367.91095120397,375.57576268738,381.53728273004,392.4383479509,400.61414686654,429.2294430713,436.04260883433,450.69091522486,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333577]"},efg3337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus [3337]"},efg33377:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33377] Bi-enharmonicum simplex"},efg335:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Genus secundum [335]"},efg3355:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Genus chromaticum veterum correctum [3355]"},efg33555:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,367.91095120397,392.4383479509,408.78994578219,418.60090448096,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Genus bichromaticum [33555]"},efg335555577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,320.49131749323,327.03195662575,333.84512238879,334.88072358477,341.85740532612,343.38355445704,348.83408706747,357.69120255941,366.27579142084,375.57576268738,381.53728273004,384.58958099188,390.69417751556,392.4383479509,400.61414686654,408.78994578219,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,446.50763144636,457.84473927605,469.46970335923,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,502.32108537715,512.78610798918,523.2511306012],description:"Genus [335555577]"},efg33557:{frequencies:[261.6255653006,274.70684356563,279.06726965397,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,429.2294430713,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Genus chromatico-enharmonicum [33557]"},efg335577:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Genus chromaticum septimis triplex [335577]"},efg3357:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,343.38355445704,348.83408706747,381.53728273004,392.4383479509,429.2294430713,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum vocale [3357]"},efg33577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,523.2511306012],description:"Genus [33577]"},efg337:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus quintum [337]"},efg3377:{frequencies:[261.6255653006,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [3377]"},efg33777:{frequencies:[261.6255653006,267.07609791103,299.00064605783,300.46061014991,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777]"},efg33777a:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777] with comma discarded which disappears in 31-tET"},efg355:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Genus tertium [355]"},efg3555:{frequencies:[261.6255653006,306.59245933664,327.03195662575,383.2405741708,392.4383479509,408.78994578219,490.54793493862,510.98743222773,523.2511306012],description:"Genus enharmonicum veterum correctum [3555]"},efg35555:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,334.88072358477,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Genus [35555]"},efg35557:{frequencies:[261.6255653006,268.26840191956,274.70684356563,286.15296204753,306.59245933664,313.95067836072,327.03195662575,343.38355445704,357.69120255941,366.27579142084,392.4383479509,408.78994578219,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus [35557]"},efg3557:{frequencies:[261.6255653006,274.70684356563,286.15296204753,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum instrumentale [3557]"},efg35577:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,358.80077526939,366.27579142084,373.75080757229,392.4383479509,418.60090448096,429.2294430713,448.50096908674,457.84473927605,478.40103369253,490.54793493862,523.2511306012],description:"Genus [35577]"},efg357:{frequencies:[261.6255653006,286.15296204753,327.03195662575,343.38355445704,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus sextum [357] & 7-limit Octony, see ch.6 p.118"},efg35711:{frequencies:[261.6255653006,269.80136421624,286.15296204753,295.09524211152,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,392.4383479509,393.46032281536,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,523.2511306012],description:"Genus [3 5 7 11]"},efg3571113:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.01701053212,278.99913799634,286.15296204753,292.28481123426,295.09524211152,314.76825825228,318.85615771011,319.68651228748,327.03195662575,337.2517052703,343.38355445704,348.74892249543,359.73515228832,365.35601404283,371.99885066179,383.62381474497,392.4383479509,393.46032281536,398.57019713763,425.14154361347,429.2294430713,438.4272168514,449.66894036041,457.84473927605,464.99856332724,472.15238737843,479.52976843121,490.54793493862,511.49841965996,523.2511306012],description:"Genus [3 5 7 11 13]"},efg3577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,429.2294430713,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Genus [3577]"},efg35777:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,300.46061014991,327.03195662575,343.38355445704,373.75080757229,375.57576268738,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777]"},efg35777a:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777] with comma discarded which disappears in 31-tET"},efg377:{frequencies:[261.6255653006,300.46061014991,343.38355445704,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus octavum [377]"},efg3777:{frequencies:[261.6255653006,262.90303388117,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus [3777]"},efg37777:{frequencies:[261.6255653006,262.90303388117,299.00064605783,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777]"},efg37777a:{frequencies:[261.6255653006,299.00064605783,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777] with comma discarded that disappears in 31-tET"},efg555:{frequencies:[261.6255653006,327.03195662575,408.78994578219,510.98743222773,523.2511306012],description:"Genus quartum [555]"},efg55557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [55557]"},efg5557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,408.78994578219,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [5557]"},efg55577:{frequencies:[261.6255653006,286.15296204753,291.99281841585,299.00064605783,327.03195662575,357.69120255941,373.75080757229,408.78994578219,447.11400319927,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"Genus [55577]"},efg557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Genus septimum [557]"},efg5577:{frequencies:[261.6255653006,293.02063313667,320.49131749323,334.88072358477,366.27579142084,400.61414686654,418.60090448096,457.84473927605,512.78610798918,523.2511306012],description:"Genus [5577]"},efg55777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,320.49131749323,327.03195662575,366.27579142084,373.75080757229,400.61414686654,418.60090448096,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"Genus [55777]"},efg577:{frequencies:[261.6255653006,286.15296204753,327.03195662575,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus nonum [577]"},efg5777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus [5777]"},efg57777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,350.53737850823,373.75080757229,400.61414686654,438.17172313528,457.84473927605,500.76768358318,523.2511306012],description:"Genus [57777]"},efg777:{frequencies:[261.6255653006,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus decimum [777]"},efg77777:{frequencies:[261.6255653006,299.00064605783,341.71502406609,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus [77777]"},eikohole1:{frequencies:[261.6255653006,277.4816601673,305.22982618403,332.97799220076,436.04260883433,475.68284600109,523.2511306012],description:"First eikohole ball <6 9 13 17 20|-epimorphic"},eikohole2:{frequencies:[261.6255653006,266.38239376061,274.70684356563,285.40970760065,299.68019298069,313.95067836072,332.97799220076,348.83408706747,366.27579142084,380.54627680087,392.4383479509,399.57359064092,418.60090448096,428.11456140098,443.97065626768,470.92601754108,488.36772189445,499.46698830115,523.2511306012],description:"Second eikohole ball"},eikohole4:{frequencies:[261.6255653006,274.70684356563,279.79400733536,287.78812183066,305.22982618403,313.95067836072,319.76457981184,335.75280880244,348.83408706747,359.73515228832,366.27579142084,373.05867644715,383.71749577421,392.4383479509,406.97310157871,418.60090448096,419.69101100305,431.68218274599,447.67041173658,457.84473927605,470.92601754108,479.64686971777,488.36772189445,503.62921320365,523.2511306012],description:"Fourth eikohole ball"},eikohole5:{frequencies:[261.6255653006,266.38239376061,274.70684356563,279.06726965397,285.40970760065,287.78812183066,294.32876096318,295.98043751179,299.68019298069,305.22982618403,313.95067836072,321.08592105074,325.57848126297,332.97799220076,342.49164912079,348.83408706747,353.19451315581,355.17652501415,363.24871876447,366.27579142084,374.60024122586,380.54627680087,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Fifth eikohole ball"},eikohole6:{frequencies:[261.6255653006,266.38239376061,272.43653907335,274.70684356563,279.06726965397,285.40970760065,287.78812183066,293.02063313667,294.32876096318,295.98043751179,299.00064605783,299.68019298069,305.22982618403,310.77945938738,313.95067836072,317.12189733406,321.08592105074,325.57848126297,329.64821227876,332.97799220076,336.37572681506,342.49164912079,348.83408706747,349.6268918108,353.19451315581,355.17652501415,356.76213450082,363.24871876447,366.27579142084,374.60024122586,380.54627680087,383.71749577421,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,431.68218274599,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,484.33162501929,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Sixth eikohole ball"},eikosany:{frequencies:[261.6255653006,269.80136421624,274.70684356563,287.78812183066,294.32876096318,305.22982618403,323.76163705949,335.75280880244,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,412.06026534844,419.69101100305,431.68218274599,457.84473927605,470.92601754108,479.64686971777,503.62921320365,523.2511306012],description:"3)6 1.3.5.7.9.11 Eikosany (1.3.5 tonic)"},ekring1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,376.74081403286,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Single-tie circular mirroring of 3:4:5"},ekring2:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,384.42940207435,400.61414686654,448.50096908674,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Single-tie circular mirroring of 6:7:8"},ekring3:{frequencies:[261.6255653006,266.96486255163,299.00064605783,305.10270005901,327.03195662575,333.70607818954,341.71502406609,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,523.2511306012],description:"Single-tie circular mirroring of 4:5:7"},ekring4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,376.74081403286,392.4383479509,401.85686830172,436.04260883433,446.50763144636,465.11211608996,502.32108537715,523.2511306012],description:"Single-tie circular mirroring of 4:5:6"},ekring5:{frequencies:[261.6255653006,263.718569823,269.10058145205,305.22982618403,322.92069774245,366.27579142084,373.75080757229,376.74081403286,384.42940207435,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Single-tie circular mirroring of 3:5:7"},ekring5bp:{frequencies:[261.6255653006,282.55561052465,336.37572681506,363.28578496026,366.27579142084,395.57785473451,432.48307733364,512.78610798918,560.62621135843,605.4763082671,610.45965236807,659.29642455751,784.8766959018],description:"Single-tie BP circular mirroring of 3:5:7"},ekring6:{frequencies:[261.6255653006,288.32205155576,299.00064605783,336.37572681506,348.83408706747,384.42940207435,392.4383479509,406.97310157871,432.48307733364,465.11211608996,494.26637409559,512.57253609913,523.2511306012],description:"Single-tie circular mirroring of 6:7:9"},ekring7:{frequencies:[261.6255653006,266.96486255163,290.69507255622,296.62762505737,322.99452506247,336.37572681506,343.24053756638,406.97310157871,415.27867508032,432.48307733364,470.92601754108,480.53675259294,523.2511306012],description:"Single-tie circular mirroring of 5:7:9"},ekring7bp:{frequencies:[261.6255653006,311.45900631024,336.37572681506,400.44729382745,432.48307733364,436.04260883433,470.92601754108,514.86080634958,610.45965236807,667.41215637908,720.80512888941,726.73768139056,784.8766959018],description:"Single-tie BP circular mirroring of 5:7:9"},ellis:{frequencies:[261.6255653006,277.10015133873,293.57875905702,310.98767008297,329.52610437773,349.11112716429,369.96685849926,391.93834696391,415.15022554673,439.86813926913,465.98150356841,493.78915701915,523.2511306012],description:"Alexander John Ellis' imitation equal temperament (1875)"},ellis_24:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,294.32876096318,298.00787047521,306.59245933664,310.42486507835,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,397.34382730029,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,523.2511306012],description:"Ellis, from p.421 of Helmholtz, 24 tones of JI for 1 manual harmonium"},ellis_eb:{frequencies:[261.6255653006,277.21587437848,293.6537610003,311.19285946782,329.68548178616,349.2169654334,370.02116610622,391.93834696391,415.32381240723,439.98064151826,466.28928903228,494.02822100775,523.2511306012],description:"Ellis' new equal beating temperament for pianofortes (1885)"},ellis_harm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Just Harmonium"},ellis_mteb:{frequencies:[261.6255653006,273.31920907322,292.34465012884,313.05587813274,326.9349299255,350.18846153218,365.78692922515,391.15004079048,408.78346942429,437.23842445073,468.2723780569,489.17031487243,523.2511306012],description:"Ellis' equal beating meantone tuning (1885)"},enh14:{frequencies:[261.6255653006,267.70988077271,274.08392555301,348.83408706747,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"14/11 Enharmonic"},enh15:{frequencies:[261.6255653006,270.64713651786,280.31310567921,356.76213450082,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Tonos-15 Enharmonic"},enh15_inv:{frequencies:[261.6255653006,331.39238271409,340.11323489078,348.83408706747,383.71749577421,488.36772189445,505.80942624783,523.2511306012],description:"Inverted Enharmonic Tonos-15 Harmonia"},enh15_inv2:{frequencies:[261.6255653006,270.34641747729,279.06726965397,348.83408706747,383.71749577421,392.4383479509,401.15920012759,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-15"},enh17:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,404.33041910093,413.73345210327,423.58424858192,523.2511306012],description:"Tonos-17 Enharmonic"},enh17_con:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,378.52209447746,386.75083566176,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Enharmonic"},enh19:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,382.37582620857,389.87339142835,397.67085925691,523.2511306012],description:"Tonos-19 Enharmonic"},enh19_con:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,361.51896296083,368.21375857121,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Enharmonic"},enh2:{frequencies:[261.6255653006,266.71168334607,277.18263097687,349.22823143301,391.99543598175,399.61600264311,415.30469757995,523.2511306012],description:"1:2 Enharmonic. New genus 2 + 4 + 24 parts"},enh21:{frequencies:[261.6255653006,268.0066766494,274.70684356563,343.38355445704,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Tonos-21 Enharmonic"},enh21_inv:{frequencies:[261.6255653006,336.37572681506,342.60490694126,348.83408706747,398.6675280771,498.33441009638,510.79277034879,523.2511306012],description:"Inverted Enharmonic Tonos-21 Harmonia"},enh21_inv2:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,398.6675280771,411.12588832951,423.58424858192,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-21"},enh23:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,376.08675011961,388.21858076863,401.15920012759,523.2511306012],description:"Tonos-23 Enharmonic"},enh23_con:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,343.8507429665,353.96400011258,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Enharmonic"},enh25:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,408.78994578219,421.97671822677,436.04260883433,523.2511306012],description:"Tonos-25 Enharmonic"},enh25_con:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,373.75080757229,384.74347838324,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Enharmonic"},enh27:{frequencies:[261.6255653006,269.10058145205,277.01530443593,353.19451315581,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Tonos-27 Enharmonic"},enh27_inv:{frequencies:[261.6255653006,329.45441556372,339.14425131559,348.83408706747,387.59343007496,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Enharmonic Tonos-27 Harmonia"},enh27_inv2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,387.59343007496,397.28326582684,406.97310157871,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-27"},enh29:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,379.35706968587,389.08417403679,399.32323124828,523.2511306012],description:"Tonos-29 Enharmonic"},enh29_con:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,352.8902973822,361.29244731988,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Enharmonic"},enh31:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,368.65420565085,377.22755927063,386.2091678247,523.2511306012],description:"Tonos-31 Enharmonic. Tone 24 alternates with 23 as MESE or A"},enh31_con:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,360.46188996972,368.65420565085,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Enharmonic"},enh33:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"Tonos-33 Enharmonic"},enh33_con:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,367.38909169871,375.37581108347,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Enharmonic"},enh_invcon:{frequencies:[261.6255653006,283.42769574232,370.63621750918,381.53728273004,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Enharmonic Conjunct Phrygian Harmonia"},enh_mod:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Enharmonic After Wilson's Purvi Modulations, See page 111"},enh_perm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Permuted Enharmonic, After Wilson's Marwa Permutations, See page 110."},enn45ji:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.92069774245,329.64821227876,336.37572681506,339.14425131559,346.06556256693,348.83408706747,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,392.4383479509,395.57785473451,403.65087217807,406.97310157871,415.27867508032,423.93031414449,427.32175665765,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.78610798918,523.2511306012],description:"Detempered Ennealimma[45], Hahn reduced"},enn72synch:{frequencies:[195.99771799087,197.54967854522,199.11392792408,201.62391554947,203.22042578925,204.82957760946,207.41161549338,209.05395423619,211.68924370912,213.36545381699,215.05493658943,217.76587316352,219.49019959291,221.22817968434,224.01693484168,225.790758792,228.63703016722,230.44743589451,232.27217821307,235.20015301436,237.06252857463,238.93964952543,241.95167308427,243.86750892427,246.94165062806,248.89699839908,250.8678291188,254.03021536301,256.04169222048,258.06909647124,261.3222603528,263.39147750593,266.71173418544,268.8236265844,270.95224149283,274.36780754746,276.54032271274,278.73004041423,282.24365173996,284.47852987378,288.0646054292,290.34557537779,292.64460663558,296.33362372129,298.68006816723,301.0450940916,304.84000597616,307.25380610435,311.12698372207,313.59056753865,316.0736586482,320.05801564518,322.59231767928,325.14668697146,329.24541662461,331.85246687263,336.03572815421,338.69654584276,341.37843257302,345.68177614255,348.4189737305,351.17784515594,355.60471802638,358.42048803112,362.93866010991,365.81250216232,368.70910003837,373.35696816148,376.31330506793,379.29305101359,384.07434037944,387.11553797119,391.99543598174],description:"Poptimal synchonized beating ennealimmal tuning, TM 10-10-2005"},ennea45:{frequencies:[261.6255653006,267.02028728287,269.13615104392,274.68574138534,276.8623300691,282.57123430547,288.39787286736,290.68311542614,296.67700440585,299.02785016604,305.1938252949,311.48692526882,313.95512370264,320.42888174436,322.96795420876,329.62755691287,336.42448069667,339.09030198792,346.08234767737,348.824677577,356.01744619623,363.3585507705,366.23777597441,373.78960287068,376.751482929,384.52012478698,392.44893391322,395.5586690753,403.715093104,406.91412394911,415.30469757995,423.86828492968,427.22700928979,436.03643483576,439.49155400205,448.55387459245,457.80308677504,461.43068321685,470.94538888861,474.67712392136,484.46499932732,494.45467284607,498.37269363637,508.649143962,512.67967026301,523.2511306012],description:"Ennealimmal-45, in a 7-limit least-squares tuning, g=48.999, G.W. Smith"},epimore_enh:{frequencies:[261.6255653006,265.11390617127,279.06726965397,348.83408706747,392.4383479509,397.67085925691,418.60090448096,523.2511306012],description:"New Epimoric Enharmonic, Dorian mode of the 4th new Enharmonic on Hofmann's list"},eratos_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Dorian mode of Eratosthenes's Chromatic. same as Ptol. Intense Chromatic"},eratos_diat:{frequencies:[261.6255653006,275.62199471997,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Dorian mode of Eratosthenes's Diatonic, Pythagorean"},eratos_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Dorian mode of Eratosthenes's Enharmonic"},erlangen:{frequencies:[261.6255653006,275.62199471997,293.99679436797,310.07474405997,327.03195662575,348.83408706747,367.49599295996,392.4383479509,413.43299207996,440.99519155196,465.11211608996,490.54793493862,523.2511306012],description:"Anonymus: Pro clavichordiis faciendis, Erlangen 15th century"},erlangen2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Revised Erlangen"},erlich1:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,433.12277132725,461.29357245868,491.2966347616,523.2511306012],description:"Asymmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich10:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Canonical JI interpretation of the Pentachordal decatonic mode of 22-tET"},erlich10s1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Superparticular version of erlich10 using 50/49 decatonic comma"},erlich10s2:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Other superparticular version of erlich10 using 50/49 decatonic comma"},erlich11:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Canonical JI interpretation of the Symmetrical decatonic mode of 22-tET"},erlich11s1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Superparticular version of erlich11 using 50/49 decatonic comma"},erlich11s2:{frequencies:[261.6255653006,280.31310567921,305.22982618403,311.45900631024,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other superparticular version of erlich11 using 50/49 decatonic comma"},erlich12:{frequencies:[261.6255653006,267.01308914069,282.57123920205,288.39008844866,305.19382000629,311.47852302926,329.62755691287,336.41541160581,356.01745236555,363.34874301751,384.52011812375,392.4383479509,415.30469757995,423.85685859121,448.5538823653,457.7907297806,484.46499093218,494.44133512215,523.2511306012],description:"Two 9-tET scales 3/2 shifted, Paul Erlich, TL 5-12-2001"},erlich13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Just scale by Paul Erlich (2002)"},erlich2:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,476.05893615592,523.2511306012],description:"Asymmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich3:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,419.68935090103,461.29357245868,491.2966347616,523.2511306012],description:"Symmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich4:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,491.2966347616,523.2511306012],description:"Symmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich5:{frequencies:[261.6255653006,269.33066959279,278.10477655849,287.16472157287,295.62197660533,306.17967660611,315.19693888202,326.45372959864,335.05049156411,348.07025322573,357.23626005287,368.87410717392,380.89108570115,393.29954676976,406.11224388345,419.34234602259,433.00345117936,444.40607048653,461.67529188567,473.83294924974,490.75518955849,505.2083639382,523.2511306012],description:"Unequal 22-note compromise between decatonic & Indian srutis, Paul Erlich"},erlich6:{frequencies:[261.6255653006,274.70684356563,280.31310567921,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Scale of consonant tones against 1/1-3/2 drone. TL 23-9-1998"},erlich7:{frequencies:[261.6255653006,272.64118737561,277.98432293805,281.84855879469,292.47977325983,303.51199286577,307.73108663824,313.76190292287,326.97270111135,337.05955506058,340.85784563832,350.05627231138,365.1325261687,373.60234843661,378.13992750117,391.18115131013,406.9458559663,413.62886206386,420.42161880722,437.36472209676,452.44848028305,457.94368329907,468.56640608675,488.7466646507,501.93603498211,507.59230220159,523.2511306012],description:"Meantone-like circle of sinuoidally varying fifths, TL 08-12-99"},erlich8:{frequencies:[261.6255653006,263.902226729,277.18263097687,279.59466973861,293.66476791741,296.22023396764,311.12698372208,313.83440569119,329.62755691287,332.49597057,349.22823143301,352.26720984209,369.99442271164,373.21410818061,391.99543598175,395.40657391157,415.30469757995,418.91867232636,440,443.82887286778,466.16376151809,470.22031101449,493.88330125613,498.18106573801,523.2511306012],description:"Two 12-tET scales 15 cents shifted, Paul Erlich"},erlich9:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,302.70726563706,308.34441624714,319.76457981184,332.97799220076,345.34574619679,356.76213450082,369.97554688974,383.71749577421,396.40237166758,411.12588832951,428.11456140098,436.04260883433,452.23847716247,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"11-limit periodicity block, u.v.: 9801/9800 243/242 126/125 100/99"},erlich_bpf:{frequencies:[261.6255653006,269.93113880221,277.4816601673,282.55561052465,293.6613488068,301.87565226992,311.45900631024,319.76457981184,328.70904358281,336.37572681506,347.05432131712,356.76213450082,366.27579142084,377.90359432309,388.47432423422,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,591.67627844905,610.45965236807,624.69777837082,642.17184210147,659.29642455751,680.22646978156,699.2537836216,726.73768139056,740.02659899313,760.72664372021,784.8766959018],description:"Erlich's 39-tone Triple Bohlen-Pierce scale"},erlich_bpp:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.6613488068,299.68019298069,311.45900631024,319.76457981184,323.65460841914,336.37572681506,345.34574619679,356.76213450082,366.27579142084,380.67211882362,385.30310526088,400.44729382745,411.12588832951,419.55227017296,436.04260883433,447.67041173658,458.69417292962,470.92601754108,489.43558134466,499.46698830115,512.78610798918,528.59042785223,539.42434736524,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.27431887171,642.17184210147,659.29642455751,685.20981388252,699.2537836216,720.80512888941,740.02659899313,764.49028821604,784.8766959018],description:"Periodicity block for erlich_bpf, 1625/1617 1331/1323 275/273 245/243"},erlich_bpp2:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.92501780685,299.68019298069,311.45900631024,319.76457981184,326.02570445152,336.37572681506,345.34574619679,356.76213450082,366.27579142084,377.90359432309,385.30310526088,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.83932387181,642.17184210147,659.29642455751,685.20981388252,698.62650953896,726.73768139056,740.02659899313,764.49028821604,784.8766959018],description:"Improved shape for erlich_bpp"},erlich_bppe:{frequencies:[261.6255653006,269.03526454087,276.77324548748,284.61195549492,292.79795257063,301.09050901183,309.7504615497,318.52314490095,327.68449417797,337.10934179701,346.6568752383,356.62740568226,366.72772736951,377.27553481706,387.96064596243,399.11915372018,410.59860200806,422.22748385656,434.37157296247,446.67374500165,459.5209564409,472.53540627884,486.12644973042,499.89441151621,514.27235352402,529.06383329425,544.0478609495,559.69574261012,575.54731703113,592.10118472076,608.870542156,626.38285104305,644.39884822068,662.64936456684,681.70845767885,701.01565227402,721.17823493702,741.60327945962,762.93324174612,784.8766959018],description:"LS optimal 3:5:7:11:13 tempering, virtually equal, g=780.2702 cents"},erlich_bppm:{frequencies:[261.6255653006,269.3148593258,276.83859227209,284.97500405989,292.93622770824,301.54575630263,309.96990811138,319.08006614158,327.99406628962,337.15709295818,347.06629484351,356.76213450082,367.24753706379,377.50717076432,388.60227773252,399.45849178361,410.61798882758,422.6862401977,434.49464068244,447.26463523836,459.75967424319,473.27221959449,486.49381977384,500.79209531182,514.78250488433,529.16376146212,544.7161244152,559.93362036345,576.39032675477,592.49269103014,609.9063234692,626.94500947499,644.45969779399,663.40066444061,681.93379843592,701.97614206495,721.5869464624,742.79471409673,763.54584931731,784.8766959018],description:"MM optimal 3:5:7:11:13 tempering, g=780.352 cents"},erlich_paj:{frequencies:[261.6255653006,269.74106841426,278.59741216196,287.23937405609,296.67040683594,305.87298460253,315.91563888094,325.71519477697,336.4093235789,346.84458402385,358.23265591403,369.99442271164,381.47147728046,393.99623872149,406.21781843768,419.55531290213,432.56972318844,446.77218107119,460.63084592459,475.75462791404,490.51231476219,506.61748047856,523.2511306012],description:"Erlich's Pajara or Twintone, with RMS optimal generator"},erlich_paj2:{frequencies:[261.6255653006,270.25447814202,278.68577354399,287.87753105276,296.85845221806,306.64959036092,316.21614384055,326.645747324,336.83612131731,347.94582350257,358.80069640371,369.99442271164,382.1975482805,394.12120058634,407.1203087173,419.82124923186,433.66800958456,447.19715926063,461.9468459571,476.35821106408,492.06970256841,507.42081104304,523.2511306012],description:"Erlich's Pajara or Twintone with minimax optimal generator"},escapade:{frequencies:[261.6255653006,270.11362843741,278.8770761192,287.9248395776,297.26614463769,306.91051483225,316.86778450163,327.1481015562,337.76194863153,348.72014864112,360.03386958939,371.71464785337,383.77439429365,392.56657056143,405.30282760495,418.45229174958,432.02837124332,446.04490958069,460.51619165905,475.45697355792,490.88248752006,506.80846290374,523.2511306012],description:"Escapade temperament, g=55.275493, 5-limit"},"et-mix6":{frequencies:[261.6255653006,293.66476791741,300.52885648597,311.12698372208,329.62755691287,345.21700307457,369.99442271164,396.55020354877,415.30469757995,440,455.51656649021,466.16376151809,523.2511306012],description:"Mix of equal temperaments from 1-6 (= 4-6)"},euler:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Euler's Monochord (a mode of Ellis's duodene) (1739), genus [33355]"},euler20:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,489.33808574423,509.07699553894,513.57043963064,523.2511306012],description:"Genus [3333555] tempered by 225/224-planar"},euler24:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,308.1508239679,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,384.70789368407,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,480.28481865546,489.33808574423,493.65730140218,509.07699553894,513.57043963064,523.2511306012],description:"Genus [33333555] tempered by 225/224-planar"},euler_diat:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Euler's genus diatonicum veterum correctum"},euler_enh:{frequencies:[261.6255653006,267.90457886781,275.62199471997,348.83408706747,392.4383479509,401.85686830172,413.43299207996,523.2511306012],description:"Euler's Old Enharmonic, From Tentamen Novae Theoriae Musicae"},euler_gm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,348.83408706747,361.75386806997,372.08969287196,385.87079260796,523.2511306012],description:"Euler's Genus Musicum, Octony based on Archytas's Enharmonic"},exptriad2:{frequencies:[261.6255653006,306.59245933664,327.03195662575,367.91095120397,392.4383479509,459.88868900496,490.54793493862,523.2511306012],description:"Two times expanded major triad"},exptriad3:{frequencies:[261.6255653006,269.46602871384,275.93321340298,279.06726965397,287.4304306281,294.32876096318,297.67175429757,303.14928230307,306.59245933664,313.95067836072,323.35923445661,327.03195662575,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,378.93660287884,383.2405741708,392.4383479509,404.19904307077,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,490.54793493862,505.24880383846,517.37477513058,523.2511306012],description:"Three times expanded major triad"},iivv17:{frequencies:[261.6255653006,269.80136421624,277.97716313189,283.42769574232,294.32876096318,305.22982618403,318.85615771011,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,370.63621750918,392.4383479509,416.96574469783,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"17-limit IIVV"},"indian-ayyar":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Carnatic sruti system, C.Subrahmanya Ayyar, 1976. alt:21/20 25/16 63/40 40/21"},"indian-dk":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,465.11211608996,523.2511306012],description:"Raga Darbari Kanada"},"indian-ellis":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,367.68998366571,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Ellis's Indian Chromatic, theoretical #74 of App.XX, p.517 of Helmholtz"},"indian-hahn":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Indian shrutis Paul Hahn proposal"},"indian-hrdaya1":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,328.55303549378,348.83408706747,375.07381928051,392.4383479509,428.11456140098,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Bhatkande's interpretation"},"indian-hrdaya2":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,330.47439827444,348.83408706747,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Levy's interpretation"},"indian-invrot":{frequencies:[261.6255653006,267.90457886781,279.06726965397,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Inverted and rotated North Indian gamut"},"indian-magrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Ma-grama (Sa Ri Ga Ma Pa Dha Ni Sa)"},"indian-newbengali":{frequencies:[261.6255653006,269.13627541126,277.02257024271,285.46954808622,294.32876096318,303.84527498141,313.95067836072,324.71413568646,336.35938765066,348.83408706747,358.01090280364,367.91095120397,377.98706287655,388.6137256405,400.23209335925,412.19781491431,425.25755219187,438.98455767189,453.41648894489,469.13512554326,485.39868175205,503.9696508909,523.2511306012],description:"Modern Bengali scale,S.M. Tagore: The mus. scales of the Hindus,Calcutta 1884"},"indian-old2ellis":{frequencies:[261.6255653006,270.06509966514,277.97716313189,285.40970760065,294.32876096318,305.22982618403,316.13089140489,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,415.52295665389,428.11456140098,441.49314144476,457.84473927605,474.19633710734,490.54793493862,505.80942624783,523.2511306012],description:"Ellis Old Indian Chrom2, Helmholtz, p. 517. This is a 4 cent appr. to #73"},"indian-oldellis":{frequencies:[261.6255653006,269.44737349144,277.4816601673,285.79952600623,294.32876096318,304.84150796353,315.71315096976,327.03195662575,337.72216249472,348.83408706747,359.25382662183,369.99442271164,381.0561299374,392.4383479509,404.18156579781,416.22249025095,428.71043212875,441.49314144476,457.27414749797,473.58203588493,490.54793493862,506.59641128799,523.2511306012],description:"Ellis Old Indian Chromatic, Helmholtz, p. 517. This is a 0.5 cent appr. to #73"},"indian-raja":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:"A folk scale from Rajasthan, India"},"indian-sagrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Sa-grama (Sa Ri Ga Ma Pa Dha Ni Sa), inverse of Didymus' diatonic"},"indian-srutiharm":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"B. Chaitanya Deva's sruti harmonium. The Music of India, 1981, p. 109"},"indian-srutivina":{frequencies:[261.6255653006,268.56758546278,278.98051393788,288.52577197574,297.52863491406,305.33829130574,314.01573591759,327.57422802312,336.57725592546,350.35262131413,358.2707318239,366.40588882483,378.77125721528,394.82459335461,403.28512412878,416.95215854696,428.77531684666,444.28620821491,453.93981227417,469.5594057965,487.34812384257,504.37765306036,529.32520658991],description:"Raja S.M. Tagore's sruti vina, measured by Ellis and Hipkins, 1886. 1/1=241.2"},"indian-srutivina2":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"S. Ramanathan's sruti vina, 1973. In B.C. Deva, The Music of India, p. 110"},"indian-vina":{frequencies:[261.6255653006,276.70272600503,292.81785438923,313.29104303136,329.05685050583,352.26720984209,369.14054089803,390.18821123181,411.0090584005,435.70052664441,465.35666077712,491.60634075178,525.37110555681],description:"Observed South Indian tuning of a vina, Ellis"},"indian-vina2":{frequencies:[261.6255653006,277.02257024271,292.81785438923,308.97787266236,326.21810583671,344.81842302716,363.84824628932,386.37547528213,409.11417474979,432.19134773437,455.25352578019,480.93331155807,507.76825077597,539.82938999168,571.59905201246,602.44805673853,637.90290877605,678.5727631795,715.19510239543,756.4109196702,799.53998816902,846.10508618474,890.73947019126,943.16064703194,1001.55531043729],description:"Observed tuning of old vina in Tanjore Palace, Ellis and Hipkins. 1/1=210.7 Hz"},"indian-vina3":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Tuning of K.S. Subramanian's vina (1983)"},indian:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale"},indian2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale with tritone 64/45 schisma lower (Mr.Devarajan, Madurai)"},indian2_sm:{frequencies:[261.6255653006,275.80107697063,279.12844116922,290.7446524607,294.25230137258,310.19560923413,313.9379197281,327.00276442799,330.9478443499,348.87940629173,353.08841191408,367.78254402461,372.21960384438,392.38737044642,413.64787586584,418.63827382983,436.06032987759,441.3211172644,465.23297251763,470.84571179248,490.44043044945,496.35728163707,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 289-equal (schismic) temperament"},indian3:{frequencies:[261.6255653006,270.06509966514,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"Indian shruti scale with 32/31 and 31/16 and tritone schisma lower"},indian4:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"Indian shruti scale according to Firoze Framjee: Text book of Indian music"},indian5:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"23 Shrutis, Amit Mitra, 1/1 no. 12:2, Table C."},indian6:{frequencies:[146.8323839587,148.66778875818,150.35636117371,151.0621234143,152.23581568838,152.95039995698,154.68761437624,154.86227995644,156.62120955595,158.5789746754,159.32333328852,163.14709328744,165.18643195354,167.06262352634,169.15090632042,169.94488884109,172.0691999516,174.02356617327,176.19886075044,178.40134650982,179.23874994958,180.42763340845,181.27454809716,183.54047994838,185.62513725149,185.83473594773,187.94545146714,188.82765426788,190.29476961048,191.18799994622,193.3595179703,193.57784994555,195.77651194493,198.22371834425,200.47514823161,202.98108758451,203.93386660931,206.48303994192,208.82827940793,209.0640779412,211.43863290053,212.43111105136,214.08161581178,215.0864999395,217.52945771659,220.24857593805,223.00168313728,225.53454176056,226.59318512145,228.35372353257,229.42559993547,232.03142156437,232.29341993466,234.93181433392,237.86846201309,238.98499993278,240.57017787793,241.69939746288,244.72063993117,247.77964793031,250.59393528951,253.72635948063,254.91733326163,258.1037999274,261.03534925991,264.29829112566,267.60201976473,270.64145011268,271.91182214574,275.31071992256,278.43770587724,278.75210392159,281.9181772007,283.24148140181,285.44215441571,286.78199991934,290.03927695546,293.6647679174],description:"Shrutis calculated by generation method, Amit Mitra, 1/1 no. 12:2, Table B."},indian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"North Indian Gamut, modern Hindustani gamut out of 22 or more shrutis"},indian_12c:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"Carnatic gamut. Kuppuswami: Carnatic music and the Tamils, p. v"},indian_a:{frequencies:[261.6255653006,290.79521372391,318.76727400207,355.94891173479,388.6137256405,432.69092326853,486.52148746092,523.2511306012],description:"One observed indian mode"},indian_b:{frequencies:[261.6255653006,290.79521372391,305.95868600104,356.15457528086,388.83826257328,432.94092754357,461.60862817266,523.2511306012],description:"Observed Indian mode"},indian_c:{frequencies:[261.6255653006,278.94941459687,313.65318017499,356.15457528086,388.83826257328,422.07621250312,470.76384471612,523.2511306012],description:"Observed Indian mode"},indian_d:{frequencies:[261.6255653006,289.28740724512,320.24370022528,344.61930560862,391.31674786192,442.03793673691,485.39868175205,523.2511306012],description:"Indian D (Ellis, correct)"},indian_e:{frequencies:[261.6255653006,275.58617649731,323.21709932123,347.81902735497,393.58362272115,410.77171881178,488.21056770985,523.2511306012],description:"Observed Indian mode"},indian_g:{frequencies:[261.6255653006,275.48458755707,279.57748987366,290.07776015425,294.38747470873,309.98198497505,314.58741860623,326.40257913196,331.25197518754,348.79929894143,353.98144532328,367.27615246113,372.73281132023,392.47748849606,413.26809526256,419.40806105693,435.16003737285,441.62525396027,465.0193523796,471.92819182319,489.65270022124,496.92751979948,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 94-et (garibaldi) temperament"},indian_rat:{frequencies:[261.6255653006,269.55361273395,277.4816601673,285.40970760065,294.32876096318,302.93486508491,315.75499260417,327.03195662575,337.58137458142,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,416.22249025095,428.77523202043,441.49314144476,457.84473927605,473.41768959156,490.54793493862,506.37206187213,523.2511306012],description:"Indian Raga, From Fortuna, after Helmholtz, ratios by JC"},indian_rot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,510.98743222773,523.2511306012],description:"Rotated North Indian Gamut"},ionic:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ancient greek Ionic"},iran_diat:{frequencies:[261.6255653006,297.21429859784,337.6441411202,347.13660997509,394.35734781054,448.00148789644,460.59652406882,523.2511306012],description:"Iranian Diatonic from Dariush Anooshfar, Safi-a-ddin Armavi's scale from 125 ET"},iraq:{frequencies:[261.6255653006,290.3675288125,326.6631048533,348.83408706747,387.1561215731,435.55129321875,465.11211608996,516.20736538157,523.2511306012],description:"Iraq 8-tone scale, Ellis"},isfahan_5:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,523.2511306012],description:"Isfahan (IG #2, DF #8), from Rouanet"},islamic:{frequencies:[261.6255653006,283.42769574232,305.22982618403,330.6656450327,348.83408706747,523.2511306012],description:"Islamic Genus (DF#7), from Rouanet"},italian:{frequencies:[261.6255653006,274.68983337859,292.34127285051,309.02606224197,326.6631048533,348.44038788768,366.66693712906,391.11111150212,411.56972129721,437.02884834934,464.06284405662,489.44164088633,523.2511306012],description:"Italian organ temperament, G.C. Klop (1974), 1/12 P.comma, also d'Alembert/Rousseau (1752/67)"},iter1:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,631.61998662719],description:"McLaren style, IE= 2.414214, PD=5, SD=0"},iter10:{frequencies:[261.6255653006,277.06070189651,293.38358189778,297.59908052943,301.91391280887,310.68035879446,328.97472072452,338.5155215149,348.35227203008,368.89204707385,413.65123162392,438.0707139917,463.89070822207,520.1365405381,535.27989222422,550.79066379074,583.29634230953,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter11:{frequencies:[261.6255653006,278.87608544381,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #2"},iter12:{frequencies:[261.6255653006,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #4"},iter13:{frequencies:[261.6255653006,297.26403435806,337.75715313333,383.76621672426,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #6"},iter14:{frequencies:[261.6255653006,280.22072913446,300.13755324878,344.3186075731,368.79121945838,395.0032340925,453.14877154631,519.85349135637,596.37732215892,638.76512932755,684.16567043124,784.8766959018],description:"Binary Divided 3/1 Scale #2"},iter15:{frequencies:[261.6255653006,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale"},iter16:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale 4+2"},iter17:{frequencies:[261.6255653006,278.49896488475,296.46060526524,301.12918013362,305.87127435301,315.58067012184,335.93387506143,346.5975621448,357.59974896504,380.66295170881,431.34763334053,459.16716607109,488.78090454553,553.8613271114,571.44277158458,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #2"},iter18:{frequencies:[261.6255653006,296.46060526524,335.93387506143,357.59974896504,380.66295170881,431.34763334053,488.78090454553,553.8613271114,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #4"},iter19:{frequencies:[261.6255653006,322.51878830959,331.06584352035,339.83940187549,358.09020513941,397.58488163802,418.936859706,441.43552612833,490.12256936272,604.19836236377,670.83693141722,744.82523718317,918.18295398723,967.49323514067,1019.45167961503,1131.88958971281,1395.33634826987],description:"Binary Kidjel Ratio scale #2, IE=16/3"},iter2:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,466.76379263857,529.06503205232,631.63886479716],description:"Iterated 1 + SQR(2) Scale, IE=2.414214, PD=5, SD=1"},iter20:{frequencies:[261.6255653006,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale #2"},iter21:{frequencies:[261.6255653006,265.58958666715,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale 5+2 #2"},iter22:{frequencies:[261.6255653006,301.8727519909,307.3207469799,312.86706369289,324.26179396336,348.311367392,360.99698978488,374.14462916403,401.89387036212,463.7192413329,498.11197631533,535.05552246568,617.36582527423,639.85050556571,663.15408964479,712.33833913185,821.92095613931],description:"Binary PI Scale #2"},iter23:{frequencies:[261.6255653006,280.22072913446,282.63618845904,285.07246866924,290.00821285991,300.13755151512,305.33413252207,310.62068712289,321.46997343155,344.3186075731,356.34488692223,368.79121945838,395.00323181087,401.84231702948,408.7998141568,423.07827792492,453.14877154631],description:"Binary SQR(3) Scale #2"},iter24:{frequencies:[261.6255653006,289.31157243481,292.97226416221,296.67927674571,304.23460945445,319.92739457651,328.07477344771,336.42963427227,353.78307729046,391.22147055517,411.40114203819,432.62170761687,478.4030399831,490.58621022536,503.07964402145,529.02909391167,585.01254970054],description:"Binary SQR(5) Scale #2"},iter25:{frequencies:[261.6255653006,295.4600775297,299.98610231105,304.581459303,313.98443628203,333.67021037701,343.97120738708,354.59021667251,376.82183739983,425.55401329039,452.23482674104,480.58843796626,542.7401414615,559.49550492793,576.76813324226,612.92956630767,692.19618110881],description:"Binary SQR(7) Scale #2"},iter26:{frequencies:[261.6255653006,266.56189672137,275.04226095704,276.16031892841,278.32506946872,283.8915708581,299.68019298069,302.93486508491,309.19384990071,326.13597866239,377.90359432309,389.87339142835,411.92110281371,477.08191319521,486.74523776856,503.12608711654,552.32063785682,711.29450566101],description:"E Scale"},iter27:{frequencies:[261.6255653006,264.53251602616,264.59858308811,264.97973921471,266.91093025617,277.4816601673,277.93638607994,279.98525409362,291.05844139692,358.0999925052,361.3330282979,375.61956161015,462.09190754392,465.48964215821,480.4396744611,568.53247844169,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=3"},iter28:{frequencies:[261.6255653006,265.20947715403,272.47639519786,295.60291144354,377.3445653374,784.8766959018],description:"McLaren 3-Division Scale"},iter29:{frequencies:[261.6255653006,264.46932144517,267.35459227799,273.20191774753,285.29018929764,311.12229387098,370.01329949656,523.2511306012],description:"Iterated Binary Division of the Octave, IE=2, PD=6, SD=0"},iter3:{frequencies:[261.6255653006,291.72408166262,314.40967058055,328.65360269166,338.82655178274,356.71329642628,384.4758307461,404.77917650282,417.30358762823,426.15298265459,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter30:{frequencies:[261.6255653006,263.40533105094,266.47048317654,274.97380842818,299.54231389489,377.98194879009,711.1793535636],description:"Iterated E-scale, IE= 2.71828, PD=5, SD=0"},iter31:{frequencies:[261.6255653006,264.53251602616,277.4816601673,358.0999925052,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=0"},iter32:{frequencies:[261.6255653006,264.32273607689,265.98599138894,268.74462830198,273.21657135822,280.65287914064,293.09931751721,314.43072526953,352.25402909754,423.30428543018],description:"Iterated PHI scale, IE= 1.61803339, PD=8, SD=0"},iter33:{frequencies:[261.6255653006,264.70351312767,271.46111286829,293.79264300149,376.62581378438,821.87425059077],description:"Iterated PI Scale, IE= 3.14159, PD=4, SD=0"},iter34:{frequencies:[261.6255653006,263.41752122732,264.70351312767,267.00143308075,271.01725226011,278.10591587072,290.81088732616,314.21361862735,359.24704489038,453.1728541814],description:"Iterated SQR3 Scale, IE= 1.73205, PD=8, SD=0"},iter35:{frequencies:[261.6255653006,263.32443260775,265.41724016003,270.17542037578,281.14986121856,307.30621955943,374.94109676838,585.0238335194],description:"Iterated SQR 5 Scale, IE= 2.23607, PD=6, SD=0"},iter36:{frequencies:[261.6255653006,263.60757715894,266.85807660661,275.72514666411,300.63990398578,377.90359432309,692.2176415245],description:"Iterated SQR 7 Scale, IE= 2.64575, PD=5, SD=0"},iter37:{frequencies:[261.6255653006,295.02271214403,313.28742377221,326.0879260201,332.68289475257,342.82647426905,364.05069339959,375.15068445646,382.73792346942,386.58911684499,392.4383479509],description:"Iterated 3/2 scale, IE=3/2, PD=3, SD=2"},iter4:{frequencies:[261.6255653006,267.82522324611,277.41331493081,278.97828136646,281.37089098366,287.35922746131,302.93486508491,307.2300216374,313.76772341995,330.79094463294,377.42704502382,390.96854140427,412.14986314478,470.26367433779,480.2976795817,495.79659597089,536.59937372878,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter5:{frequencies:[261.6255653006,292.148547919,314.45380444784,328.62723446295,338.43307070995,355.46951807147,382.59222452561,401.8431885336,413.81298563886,422.03832066739,436.04260883433],description:"Iterated 5/3 Scale, analog of Hexachord, IE=5/3, PD=3, SD=2"},iter6:{frequencies:[261.6255653006,276.4345595629,292.10621368514,326.13597866239,344.58001283494,364.1180547998,406.52587839016,453.84026633778,506.69255051888,535.41976154541,565.73733351326,631.63886479716],description:"Iterated binary 1+SQR(2) scale, IE= 2.414214, G=2, PD=4, SD=2"},iter7:{frequencies:[261.6255653006,279.30296836145,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter8:{frequencies:[261.6255653006,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=2"},iter9:{frequencies:[261.6255653006,298.19688088025,339.84351781315,387.34174602946,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=12"},ives:{frequencies:[261.6255653006,302.26980244078,349.22823143301,375.37611551499,433.69180740168,501.06699929295,578.9091089468,622.25396744417],description:`Charles Ives' stretched major scale, "Scrapbook" pp. 108-110`},ives2a:{frequencies:[261.6255653006,303.72829164664,352.60650301302,379.92060676531,441.0602510811,512.03893786214,594.44004134205,640.48740045057],description:"Speculation by Joe Monzo for Ives' other stretched scale"},ives2b:{frequencies:[261.6255653006,300.81831683262,345.88232658126,370.885984045,426.44646246473,490.3301667422,563.78395315523,604.53960488156],description:"Alt. speculation by Joe Monzo for Ives' other stretched scale"},abell1:{frequencies:[261.6255653006,273.68256372566,292.6487650037,305.95868600104,327.16162250699,342.04121835587,365.95599773772,391.31674786192,409.35055662695,437.71854962063,457.62637091093,489.33987776603,523.2511306012],description:"Ross Abell's French Baroque Meantone 1, a'=520"},abell2:{frequencies:[261.6255653006,275.90473010106,294.68429813772,308.79945157961,330.00857764288,348.01999353916,369.14054089803,392.90218486657,412.67427966689,441.52756934418,463.21121723949,493.59810545034,523.2511306012],description:"Ross Abell's French Baroque Meantone 2, a'=520"},abell3:{frequencies:[261.6255653006,275.90505521365,293.49576926806,308.08682543008,329.24698751194,350.03632176331,368.71497179837,392.44893164635,412.28324979826,440.25465969448,462.14293627657,492.7440237889,523.2511306012],description:"Ross Abell's French Baroque Meantone 3, a' = 520"},abell4:{frequencies:[261.6255653006,274.95017225036,292.98704147282,308.2648062752,328.10786809908,346.01554587335,367.43868454848,391.54284657258,411.48414905414,438.47771564426,461.87534079415,491.0387427573,523.2511306012],description:"Ross Abell's French Baroque Meantone 4, a'=520"},abell5:{frequencies:[261.6255653006,277.98432293805,295.87822452474,311.66659310186,331.15428443044,349.43001184052,371.27895029721,395.6350356808,416.26536455926,442.29334161825,466.70260620202,495.88429116026,523.2511306012],description:"Ross Abell's French Baroque Meantone 5, a'=520"},abell6:{frequencies:[261.6255653006,277.02257024271,293.32570896007,311.66659310186,330.00857764288,349.43001184052,369.99442271164,391.76907592069,414.82519580403,440.76312290327,466.70260620202,494.16866184506,523.2511306012],description:"Ross Abell's French Baroque Meantone 6, a'=520"},abell7:{frequencies:[261.6255653006,277.50302994288,294.34406205295,310.05056613125,328.86683469969,348.82502010853,369.99442271164,392.44854854484,416.26536455926,438.47771564426,465.08793784701,493.31307433255,523.2511306012],description:"Ross Abell's French Baroque Meantone 7, a'=520"},abell8:{frequencies:[261.6255653006,277.82379926216,294.68429813772,311.48661940174,329.62755691287,350.03605285217,371.27895029721,392.44854854484,415.30469757995,441.01779121056,467.78216486233,494.45418731234,523.2511306012],description:"Ross Abell's French Baroque Meantone 8, a'=520"},abell9:{frequencies:[261.6255653006,276.06414495892,293.32570896007,309.69258848748,330.19925313612,348.62358905703,369.14054089803,391.99543598175,412.67427966689,440,464.55095742407,493.88330125613,523.2511306012],description:"Ross Abell's French Baroque Meantone 9, a'=520"},"ad-dik":{frequencies:[261.6255653006,269.0348830679,275.62199471997,285.40970760065,294.32876096318,300.46061014991,310.07474405997,321.08592105074,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.49599295996,378.42269266694,392.4383479509,400.61414686654,413.43299207996,428.11456140098,441.49314144476,453.48431318771,470.92601754108,479.64686971777,490.54793493862,508.71637697339,523.2511306012],description:"Amin Ad-Dik, d'Erlanger, vol 5, p.42"},adjeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Soeroepan adjeng"},aeolic:{frequencies:[261.6255653006,294.32876096318,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Ancient Greek Aeolic, also tritriadic scale of the 54:64:81 triad"},agricola:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,331.11985608357,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Agricola's Monochord, Rudimenta musices (1539)"},"al-din":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012,551.24398943995,580.73440862809,588.65752192635,620.14948811994,653.3262097066,688.27781763329,697.66817413493,734.99198591993,774.31254483746,784.8766959018,826.86598415992,871.10161294214,917.70375684439,930.22423217991,979.98931455991,1032.41672644994,1046.5022612024,1102.48797887989],description:"Safi al-Din's complete lute tuning on 5 strings 4/3 apart"},"al-din_19":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic scale by Safi al-Din"},"al-farabi":{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Al-Farabi Syn Chrom"},"al-farabi_19":{frequencies:[261.6255653006,275.62199471997,285.40970760065,294.32876096318,310.07474405997,326.6631048533,331.11985608357,336.87132687997,348.83408706747,367.49599295996,380.54627680087,392.4383479509,413.43299207996,435.55080647107,441.49314144476,455.28980211491,465.11211608996,489.99465727995,507.3950357345,523.2511306012],description:"Arabic scale by Al Farabi"},"al-farabi_22":{frequencies:[261.6255653006,275.62199471997,277.01530443593,285.40970760065,294.32876096318,310.07474405997,321.08592105074,326.6631048533,331.11985608357,348.83408706747,367.49599295996,369.35373924791,380.54627680087,392.4383479509,413.43299207996,428.11456140098,435.55080647107,441.49314144476,465.11211608996,489.99465727995,492.47165233054,507.3950357345,523.2511306012],description:"Al-Farabi 22 note ud scale"},"al-farabi_9":{frequencies:[261.6255653006,294.32876096318,321.08592105074,331.11985608357,348.83408706747,392.4383479509,428.11456140098,441.49314144476,465.11211608996,523.2511306012],description:"Al-Farabi 9 note ud scale"},"al-farabi_blue":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.81054504865,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Another tuning from Al Farabi, c700 AD"},"al-farabi_chrom":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Al Farabi's Chromatic c700 AD"},"al-farabi_chrom2":{frequencies:[261.6255653006,279.06726965397,325.57848126297,348.83408706747,392.4383479509,418.60090448096,488.36772189445,523.2511306012],description:"Al-Farabi's Chromatic permuted"},"al-farabi_diat":{frequencies:[261.6255653006,299.00064605783,341.71502406609,348.83408706747,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Diatonic"},"al-farabi_diat2":{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Old Phrygian, permuted form of Al-Farabi's reduplicated 10/9 diatonic genus, same as ptolemy_diat"},"al-farabi_div":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al Farabi's 10 intervals for the division of the tetrachord"},"al-farabi_div2":{frequencies:[261.6255653006,275.62199471997,277.01530443593,279.38237857051,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,314.30517589183,321.08592105074,331.11985608357,348.83408706747],description:"Al-Farabi's tetrachord division, incl. extra 2187/2048 & 19683/16384"},"al-farabi_divo":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747,367.49599295996,369.35373924791,379.26927587201,392.4383479509,413.43299207996,415.52295665389,426.67793535601,432.48307733364,441.49314144476,465.11211608996,467.46332623563,481.6288815761,496.67978412536,523.2511306012],description:"Al Farabi's theoretical octave division with identical tetrachords, 10th c."},"al-farabi_dor":{frequencies:[261.6255653006,282.55561052465,313.95067836072,348.83408706747,392.4383479509,423.83341578697,470.92601754108,523.2511306012],description:"Dorian mode of Al-Farabi's 10/9 Diatonic"},"al-farabi_dor2":{frequencies:[261.6255653006,267.07609791103,305.22982618403,348.83408706747,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Dorian mode of Al-Farabi's Diatonic"},"al-farabi_g1":{frequencies:[261.6255653006,294.32876096318,331.11985608357,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus conjunctum medium, Land"},"al-farabi_g10":{frequencies:[261.6255653006,294.32876096318,343.38355445704,367.91095120397,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus chromaticum forte"},"al-farabi_g11":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,496.67978412536,523.2511306012],description:"Al-Farabi's Greek genus chromaticum mollissimum"},"al-farabi_g12":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.17464957743,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Al-Farabi's Greek genus mollissimum ordinantium"},"al-farabi_g3":{frequencies:[261.6255653006,294.32876096318,336.37572681506,378.42269266694,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus conjunctum primum"},"al-farabi_g4":{frequencies:[261.6255653006,294.32876096318,336.37572681506,384.42940207435,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Greek genus forte duplicatum primum"},"al-farabi_g5":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Al-Farabi's Greek genus conjunctum tertium, or forte aequatum"},"al-farabi_g6":{frequencies:[261.6255653006,294.32876096318,336.37572681506,373.75080757229,392.4383479509,448.50096908674,498.33441009638,523.2511306012],description:"Al-Farabi's Greek genus forte disjunctum primum"},"al-farabi_g7":{frequencies:[261.6255653006,294.32876096318,343.38355445704,374.60024122586,392.4383479509,457.84473927605,499.46698830115,523.2511306012],description:"Al-Farabi's Greek genus non continuum acre"},"al-farabi_g8":{frequencies:[261.6255653006,294.32876096318,353.19451315581,378.42269266694,392.4383479509,470.92601754108,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus non continuum mediocre"},"al-farabi_g9":{frequencies:[261.6255653006,294.32876096318,367.91095120397,383.71749577421,392.4383479509,490.54793493862,511.62332769895,523.2511306012],description:"Al-Farabi's Greek genus non continuum laxum"},"al-hwarizmi":{frequencies:[261.6255653006,294.32876096318,302.73815413355,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al-Hwarizmi's tetrachord division"},"al-kindi":{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747],description:"Al-Kindi's tetrachord division"},"al-kindi2":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,523.2511306012],description:"Arabic mode by al-Kindi"},"al-mausili":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Arabic mode by Ishaq al-Mausili, ? - 850 AD"},albion:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Terry Riley's Harp of New Albion scale, inverse Malcolm's Monochord, 1/1 on C#"},alembert:{frequencies:[261.6255653006,273.70610837433,292.50627485027,307.8325111191,327.03195662575,347.99121610009,365.92863081328,391.22147055517,409.45161370755,437.39890198442,462.86717295458,489.22460251523,523.2511306012],description:"Jean-Le Rond d'Alembert modified meantone (1752)"},alembert2:{frequencies:[261.6255653006,274.99999938609,292.5775112526,309.28790118232,327.03195662575,348.53877105022,367.08095907728,391.31674786192,412.03444522126,437.50542525192,464.32494005553,489.99429388332,523.2511306012],description:"d'Alembert (?)"},alves:{frequencies:[261.6255653006,267.07609791103,294.32876096318,305.22982618403,327.03195662575,336.37572681506,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:'Bill Alves, tuning for "Instantaneous Motion", 1/1 vol. 6/3'},alves_22:{frequencies:[261.6255653006,269.80136421624,279.06726965397,287.78812183066,297.30177875068,305.22982618403,317.12189733406,327.03195662575,336.37572681506,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,406.97310157871,418.60090448096,431.68218274599,448.50096908674,460.46099492906,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"11-limit rational interpretation of 22-tET, Bill Alves, tuning list 9-1-98"},amity:{frequencies:[261.6255653006,265.19165427121,275.22357733525,278.97501409741,282.77758484276,286.63198489776,290.53892403345,294.49911672845,305.63971046081,309.80573452349,314.02854360428,318.30891171173,322.64762154083,327.04547204619,339.41726037801,344.04368955469,348.73317930436,353.48658917459,358.304790429,371.85908609843,376.92771379174,382.0654272409,387.27317253358,392.55190203235,397.90258328792,412.95482206782,418.58360545772,424.28911201625,430.07238503487,435.93448947821,452.42543551278,458.59222335614,464.84306764133,471.17911410024,477.60152408164,484.11147196776,502.42490579041,509.27320879713,516.21486058423,523.2511306012],description:"Amity temperament, g=339.508826, 5-limit"},angklung:{frequencies:[261.6255653006,294.70472480469,326.28010551578,372.13971319976,421.00655337609,533.77627782773,589.40944960937,672.10704388342,757.81210779894],description:"Scale of an anklung set from Tasikmalaya. 1/1=174 Hz"},appunn:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.38237857051,287.10624449997,290.69507255622,294.32876096318,302.46583782713,306.24666079997,310.07474405997,322.99452506247,327.03195662575,331.11985608357,340.27406755552,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.50983809402,382.80832599996,387.59343007496,392.4383479509,408.78994578219,413.89982010446,419.07356785577,430.65936674996,436.04260883433,441.49314144476,453.6987567407,459.36999119996,465.11211608996,484.4917875937,490.54793493862,496.67978412536,510.41110133328,516.79124009995,523.2511306012],description:"Probable tuning of A. Appunn's 36-tone harmonium w. 3 manuals 80/81 apart,1887"},arabic:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic 17-tone Pythagorean mode, Safi al-Din"},arabic_s:{frequencies:[261.6255653006,275.62199471997,290.69507255622,294.32876096318,310.07474405997,327.03195662575,331.11985608357,348.83408706747,367.91095120397,387.59343007496,392.4383479509,413.43299207996,436.04260883433,441.49314144476,465.11211608996,490.54793493862,516.79124009995,523.2511306012],description:"Schimatically altered Arabic 17-tone Pythagorean mode"},arch_chrom:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,441.49314144476,523.2511306012],description:"Archytas' Chromatic"},arch_chromc2:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,331.11985608357,343.38355445704,348.83408706747,361.75386806997,392.4383479509,406.97310157871,422.04617941496,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:"Product set of 2 of Archytas' Chromatic"},arch_dor:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,465.11211608996,441.49314144476,523.2511306012],description:"Dorian mode of Archytas' Chromatic with added 16/9"},arch_enh:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Archytas' Enharmonic"},arch_enh2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,418.60090448096,523.2511306012],description:"Archytas' Enharmonic with added 16/9"},arch_enh3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,358.80077526939,448.50096908674,523.2511306012],description:"Complex 9 of p. 113 based on Archytas's Enharmonic"},arch_enhp:{frequencies:[261.6255653006,269.10058145205,279.06726965397,348.83408706747,392.4383479509,403.65087217807,418.60090448096,523.2511306012],description:"Permutation of Archytas's Enharmonic with the 36/35 first"},arch_enht:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 113 based on Archytas's Enharmonic"},arch_enht2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,490.54793493862,508.71637697339,523.2511306012],description:"Complex 5 of p. 113 based on Archytas's Enharmonic"},arch_enht3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 113 based on Archytas's Enharmonic"},arch_enht4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,339.14425131559,348.83408706747,436.04260883433,523.2511306012],description:"Complex 8 of p. 113 based on Archytas's Enharmonic"},arch_enht5:{frequencies:[261.6255653006,263.77886213435,271.31540105247,279.06726965397,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 10 of p. 113 based on Archytas's Enharmonic"},arch_enht6:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,297.67175429757,348.83408706747,372.08969287196,523.2511306012],description:"Complex 2 of p. 113 based on Archytas's Enharmonic"},arch_enht7:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,287.04062021552,348.83408706747,358.80077526939,523.2511306012],description:"Complex 11 of p. 113 based on Archytas's Enharmonic"},arch_mult:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,523.2511306012],description:"Multiple Archytas"},arch_ptol:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"Archytas/Ptolemy Hybrid 1"},arch_ptol2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Archytas/Ptolemy Hybrid 2"},arch_sept:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,465.11211608996,523.2511306012],description:"Archytas Septimal"},ariel1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 1"},ariel2:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 2"},ariel3:{frequencies:[261.6255653006,279.06726965397,290.69507255622,310.07474405997,322.99452506247,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Ariel's 12-tone JI scale"},ariel_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,302.80736724606,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Ariel 19-tone scale"},ariel_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Ariel's 31-tone system"},arist_archenh:{frequencies:[261.6255653006,271.89678302796,279.86396690685,349.22823143301,391.99543598175,407.38487419079,419.32216217931,523.2511306012],description:"PsAristo Arch. Enharmonic, 4 + 3 + 23 parts, similar to Archytas' enharmonic"},arist_chrom:{frequencies:[261.6255653006,277.18263097687,329.62755691287,349.22823143301,391.99543598175,415.30469757995,493.88330125613,523.2511306012],description:"Dorian, Neo-Chromatic,6+18+6 parts = Athanasopoulos' Byzant.liturg. 2nd chromatic"},arist_chrom2:{frequencies:[261.6255653006,282.57123920205,336.03572815422,349.22823143301,391.99543598175,423.37848741825,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 18 + 4 parts"},arist_chrom3:{frequencies:[261.6255653006,279.86388595857,299.37253740865,349.22869576324,391.99491478937,419.32387668214,448.55625766774,523.2511306012],description:"PsAristo 3 Chromatic, 7 + 7 + 16 parts"},arist_chrom4:{frequencies:[261.6255653006,275.85166538713,290.85115308106,349.22823143301,391.99543598175,413.31050241775,435.7843409791,523.2511306012],description:"PsAristo Chromatic, 5.5 + 5.5 + 19 parts"},arist_chromenh:{frequencies:[261.6255653006,269.29177952703,293.66476791741,349.22823143301,391.99543598175,403.48177901006,440,523.2511306012],description:"Aristoxenos' Chromatic/Enharmonic, 3 + 9 + 18 parts"},arist_chrominv:{frequencies:[261.6255653006,311.12698372208,329.62755691287,349.22823143301,391.99543598175,466.16376151809,493.88330125613,523.2511306012],description:"Aristoxenos' Inverted Chromatic, Dorian mode, 18 + 6 + 6 parts"},arist_chromrej:{frequencies:[261.6255653006,277.18263097687,285.30470202322,349.22823143301,391.99543598175,415.30469757995,427.47405410759,523.2511306012],description:"Aristoxenos Rejected Chromatic, 6 + 3 + 21 parts"},arist_chromunm:{frequencies:[261.6255653006,273.20871865617,282.57118533961,349.22823143301,391.99543598175,409.35055662695,423.37840671577,523.2511306012],description:"Unmelodic Chromatic, genus of Aristoxenos, Dorian Mode, 4.5 + 3.5 + 22 parts"},arist_diat:{frequencies:[261.6255653006,293.66476791741,311.12698372208,349.22823143301,391.99543598175,440,466.16376151809,523.2511306012],description:"Phrygian octave species on E, 12 + 6 + 12 parts"},arist_diat2:{frequencies:[261.6255653006,279.86396690685,311.12698372208,349.22823143301,391.99543598175,419.32216217931,466.16376151809,523.2511306012],description:"PsAristo 2 Diatonic, 7 + 11 + 12 parts"},arist_diat3:{frequencies:[261.6255653006,286.68133251996,314.13668154225,349.22823143301,391.99543598175,429.53666932309,470.6732130613,523.2511306012],description:"PsAristo Diat 3, 9.5 + 9.5 + 11 parts"},arist_diat4:{frequencies:[261.6255653006,282.57123920205,305.19382000629,349.22823143301,391.99543598175,423.37848741825,457.27406033445,523.2511306012],description:"PsAristo Diatonic, 8 + 8 + 14 parts"},arist_diatdor:{frequencies:[261.6255653006,299.37379946195,305.19382000629,349.22823143301,391.99543598175,448.5538823653,457.27406033445,523.2511306012],description:"PsAristo Redup. Diatonic, 14 + 2 + 14 parts"},arist_diatinv:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,493.88330125613,523.2511306012],description:"Lydian octave species on E, major mode, 12 + 12 + 6 parts"},arist_diatred:{frequencies:[261.6255653006,299.37379946195,342.56848033562,349.22823143301,391.99543598175,448.5538823653,513.27277840175,523.2511306012],description:"Aristo Redup. Diatonic, Dorian Mode, 14 + 14 + 2 parts"},arist_diatred2:{frequencies:[261.6255653006,271.89678302796,308.14612137864,349.22823143301,391.99543598175,407.38487419079,461.69751437372,523.2511306012],description:"PsAristo 2 Redup. Diatonic 2, 4 + 13 + 13 parts"},arist_diatred3:{frequencies:[261.6255653006,282.57123920205,314.13668154225,349.22823143301,391.99543598175,423.37848741825,470.6732130613,523.2511306012],description:"PsAristo 3 Redup. Diatonic, 8 + 11 + 11 parts"},arist_enh:{frequencies:[261.6255653006,269.29177952703,277.18263097687,349.22823143301,391.99543598175,403.48177901006,415.30469757995,523.2511306012],description:"Aristoxenos' Enharmonion, Dorian mode"},arist_enh2:{frequencies:[261.6255653006,270.59109411209,279.86402025325,349.22823143301,391.99543598175,405.42855124795,419.32224210861,523.2511306012],description:"PsAristo 2 Enharmonic, 3.5 + 3.5 + 23 parts"},arist_enh3:{frequencies:[261.6255653006,267.99870394401,274.52693220706,349.22823143301,391.99543598175,401.54435471309,411.32564531909,523.2511306012],description:"PsAristo Enharmonic, 2.5 + 2.5 + 25 parts"},arist_hemchrom:{frequencies:[261.6255653006,273.20871865617,285.30470202322,349.22823143301,391.99543598175,409.35055662695,427.47405410759,523.2511306012],description:"Aristoxenos's Chromatic Hemiolion, Dorian Mode"},arist_hemchrom2:{frequencies:[261.6255653006,273.20871865617,293.66476791741,349.22823143301,391.99543598175,409.35055662695,440,523.2511306012],description:"PsAristo C/H Chromatic, 4.5 + 7.5 + 18 parts"},arist_hemchrom3:{frequencies:[261.6255653006,271.81876914348,282.83844897362,348.83408706747,392.4383479509,407.72815371522,424.25767346043,523.2511306012],description:"Dorian mode of Aristoxenos' Hemiolic Chromatic according to Ptolemy's interpret"},arist_hypenh2:{frequencies:[261.6255653006,267.3544191957,273.20871865617,349.22823143301,391.99543598175,400.57901831518,409.35055662695,523.2511306012],description:"PsAristo 2nd Hyperenharmonic, 37.5 + 37.5 + 425 cents"},arist_hypenh3:{frequencies:[261.6255653006,265.43099677612,269.29177952703,349.22823143301,391.99543598175,397.69714089209,403.48177901006,523.2511306012],description:"PsAristo 3 Hyperenharmonic, 1.5 + 1.5 + 27 parts"},arist_hypenh4:{frequencies:[261.6255653006,266.71168334607,271.8968348557,349.22823143301,391.99543598175,399.61600264311,407.38495184466,523.2511306012],description:"PsAristo 4 Hyperenharmonic, 2 + 2 + 26 parts"},arist_hypenh5:{frequencies:[261.6255653006,265.12453591719,268.67030163715,349.22823143301,391.99543598175,397.23796841836,402.55061428954,523.2511306012],description:"PsAristo Hyperenharmonic, 23 + 23 + 454 cents"},arist_intdiat:{frequencies:[261.6255653006,275.39533189537,307.79478270659,348.83408706747,392.4383479509,413.09299784305,461.69217405988,523.2511306012],description:"Dorian mode of Aristoxenos's Intense Diatonic according to Ptolemy"},arist_penh2:{frequencies:[261.6255653006,269.29177952703,339.28638158975,349.22823143301,391.99543598175,403.48177901006,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 3 + 24 + 3 parts"},arist_penh3:{frequencies:[261.6255653006,329.62755691287,339.28638158975,349.22823143301,391.99543598175,493.88330125613,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 24 + 3 + 3 parts"},arist_pschrom2:{frequencies:[261.6255653006,278.52001838539,296.50560089735,349.22823143301,391.99543598175,417.30851459865,444.25644015807,523.2511306012],description:"PsAristo 2 Chromatic, 6.5 + 6.5 + 17 parts"},arist_softchrom:{frequencies:[261.6255653006,271.89678302796,282.57123920205,349.22823143301,391.99543598175,407.38487419079,423.37848741825,523.2511306012],description:"Aristoxenos's Chromatic Malakon, Dorian Mode"},arist_softchrom2:{frequencies:[261.6255653006,277.18263097687,324.90175210669,349.22823143301,391.99543598175,415.30469757995,486.80259447109,523.2511306012],description:"Aristoxenos' Soft Chromatic, 6 + 16.5 + 9.5 parts"},arist_softchrom3:{frequencies:[261.6255653006,281.2143451833,329.62755691287,349.22823143301,391.99543598175,421.34544350737,493.88330125613,523.2511306012],description:"Aristoxenos's Chromatic Malakon, 9.5 + 16.5 + 6 parts"},arist_softchrom4:{frequencies:[261.6255653006,277.18263097687,297.93622032612,349.22823143301,391.99543598175,415.30469757995,446.39994737251,523.2511306012],description:"PsAristo S. Chromatic, 6 + 7.5 + 16.5 parts"},arist_softchrom5:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,392.4383479509,405.97070477679,420.46965851882,523.2511306012],description:"Dorian mode of Aristoxenos' Soft Chromatic according to Ptolemy's interpretati"},arist_softdiat:{frequencies:[261.6255653006,277.18263097687,302.26980244078,349.22823143301,391.99543598175,415.30469757995,452.89298412314,523.2511306012],description:"Aristoxenos's Diatonon Malakon, Dorian Mode"},arist_softdiat2:{frequencies:[261.6255653006,277.18263097687,320.24370022528,349.22823143301,391.99543598175,415.30469757995,479.82340237272,523.2511306012],description:"Dorian Mode, 6 + 15 + 9 parts"},arist_softdiat3:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Dorian Mode, 9 + 15 + 6 parts"},arist_softdiat4:{frequencies:[261.6255653006,285.30470202322,302.26980244078,349.22823143301,391.99543598175,427.47405410759,452.89298412314,523.2511306012],description:"Dorian Mode, 9 + 6 + 15 parts"},arist_softdiat5:{frequencies:[261.6255653006,302.26980244078,320.24370022528,349.22823143301,391.99543598175,452.89298412314,479.82340237272,523.2511306012],description:"Dorian Mode, 15 + 6 + 9 parts"},arist_softdiat6:{frequencies:[261.6255653006,302.26980244078,329.62755691287,349.22823143301,391.99543598175,452.89298412314,493.88330125613,523.2511306012],description:"Dorian Mode, 15 + 9 + 6 parts"},arist_softdiat7:{frequencies:[261.6255653006,275.39533189537,299.00064605783,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Dorian mode of Aristoxenos's Soft Diatonic according to Ptolemy"},arist_synchrom:{frequencies:[261.6255653006,277.18263097687,293.66476791741,349.22823143301,391.99543598175,415.30469757995,440,523.2511306012],description:"Aristoxenos's Chromatic Syntonon, Dorian Mode"},arist_syndiat:{frequencies:[261.6255653006,277.18263097687,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Aristoxenos's Diatonon Syntonon, Dorian Mode"},arist_unchrom:{frequencies:[261.6255653006,271.89678302796,293.66476791741,349.22823143301,391.99543598175,407.38487419079,440,523.2511306012],description:"Aristoxenos's Unnamed Chromatic, Dorian Mode, 4 + 8 + 18 parts"},arist_unchrom2:{frequencies:[261.6255653006,282.57123920205,293.66476791741,349.22823143301,391.99543598175,423.37848741825,440,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 4 + 18 parts"},arist_unchrom3:{frequencies:[261.6255653006,311.12698372208,323.3415889232,349.22823143301,391.99543598175,466.16376151809,484.46499093218,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 4 + 8 parts"},arist_unchrom4:{frequencies:[261.6255653006,311.12698372208,336.03572815422,349.22823143301,391.99543598175,466.16376151809,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 8 + 4 parts"},arith13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,318.85615771011,327.03195662575,343.38355445704,367.91095120397,371.99885066179,392.4383479509,449.66894036041,457.84473927605,490.54793493862,523.2511306012],description:"The first 13 terms of the arithmetic series, octave reduced"},arith22:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,312.72430852337,318.85615771011,327.03195662575,343.38355445704,349.51540364377,367.91095120397,371.99885066179,388.35044849308,392.4383479509,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,517.11928141447,523.2511306012],description:"The first 22 terms of the arithmetic series, octave reduced"},arnautoff_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,523.2511306012],description:"Philip Arnautoff, transposed Archytas enharmonic (2005), 1/1 vol 12/1"},"aron-neidhardt":{frequencies:[261.6255653006,275.62199471997,292.53519855339,310.07474405997,327.04005607367,348.83408706747,367.49599295996,391.42133845759,413.43299207996,437.43855491017,465.11211608996,489.99465727995,523.2511306012],description:"Aron-Neidhardt equal beating well temperament"},art_nam:{frequencies:[261.6255653006,287.78812183066,317.68818643644,324.77656382143,348.83408706747,353.19451315581,392.4383479509,431.68218274599,473.41768959156,523.2511306012],description:"Artificial Nam System"},artusi:{frequencies:[261.6255653006,276.63528606528,292.50629850443,309.28767786778,327.03195662575,349.91920725962,369.99442271164,391.22137338448,413.66637442451,437.39882871549,462.49310482954,489.02679755603,523.2511306012],description:"Lute tuning of Giovanni Maria Artusi (1603). 1/4-comma w. acc. 1/2-way naturals"},astro:{frequencies:[13.75,13.8316453704,13.91377553836,13.99639338254,14.07098381034,14.15453513289,14.23858257025,14.32312915102,14.40817767355,14.49373120103,14.57979273211,14.66636528323,14.75345188876,14.84105560105,14.92917949063,15.01782664621,15.10700017487,15.1875093157,15.27769039377,15.36840704189,15.45966226264,15.55145934276,15.64380149972,15.73669197012,15.83013400973,15.92413089371,16.01868591662,16.11380239262,16.20948365552,16.30573305894,16.39263055969,16.48996755631,16.58788242969,16.68637870643,16.78545983879,16.88512929958,16.98539058219,17.08624720077,17.18770269033,17.28976060687,17.39242452751,17.49569805061,17.59958489756,17.69337767194,17.7984382082,17.90412257766,18.01043448453,18.11737765504,18.22495583753,18.33317280261,18.44203234327,18.55153827502,18.66169443603,18.77250468726,18.88397302169,18.99610312873,19.09733831271,19.21073534981,19.32480572095,19.43955342429,19.55498248173,19.67109693902,19.78790086598,19.90539835657,20.02359352906,20.14249064253,20.26209363229,20.38240680608,20.50343438087,20.62518059864,20.73509756099,20.85821935885,20.98207223488,21.1066605301,21.23198861133,21.35806087129,21.4848817288,21.61245575376,21.74078716869,21.86988059568,21.99974055944,22.13037161156,22.26177833063,22.38041714879,22.51330859954,22.64698913914,22.78146345308,22.91673625467,23.0528122852,23.18969644807,23.32739327396,23.46590772227,23.60524464792,23.74540893465,23.88640549521,24.02823927151,24.15629202037,24.29972834105,24.44401636439,24.58916114767,24.73516777819,24.8820415172,25.02978722599,25.17841022592,25.32791572621,25.478308967,25.62959521956,25.78177978645,25.93486800174,26.07308167197,26.22789959273,26.38363679833,26.54029874734,26.69789108494,26.85641902723,27.01588828389,27.17630444429,27.33767313101,27.5],description:"Astro temperament, g=132.194511, 5-limit"},athan_chrom:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,493.88330125613,523.2511306012],description:"Athanasopoulos's Byzantine Liturgical mode Chromatic"},auftetf:{frequencies:[261.6255653006,264.29521392612,269.80136421624,287.78812183066,359.73515228832,380.54627680087,384.42940207435,392.4383479509,418.60090448096],description:"5/4 C.I. again"},augmented:{frequencies:[261.6255653006,312.71213182188,329.62755691287,393.99259743989,415.30469757995,496.39956701727,523.2511306012],description:"Augmented temperament, g=91.2, oct=1/3, 5-limit"},augteta:{frequencies:[261.6255653006,280.76889934699,302.93486508491,328.90071066361,359.73515228832,380.54627680087,408.39112632289,440.63253103259,478.40103369253],description:"Linear Division of the 11/8, duplicated on the 16/11"},augteta2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,373.75080757229,402.50086969323,436.04260883433,475.68284600109],description:"Linear Division of the 7/5, duplicated on the 10/7"},augtetb:{frequencies:[261.6255653006,270.8594087818,280.76889934699,302.93486508491,359.73515228832,380.54627680087,295.48299139832,408.39112632289,440.63253103259],description:"Harmonic mean division of 11/8"},augtetc:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,359.73515228832,380.54627680087,407.72815371522,439.09185784716,475.68284600109],description:"11/10 C.I."},augtetd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,359.73515228832,380.54627680087,395.18267206244,410.98997894494,428.11456140098],description:"11/9 C.I."},augtete:{frequencies:[261.6255653006,269.80136421624,278.50463402967,287.78812183066,359.73515228832,380.54627680087,392.4383479509,405.0976494977,418.60090448096],description:"5/4 C.I."},augtetg:{frequencies:[261.6255653006,278.50463402967,297.71185016965,319.76457981184,359.73515228832,380.54627680087,405.0976494977,433.03541842858,465.11211608996],description:"9/8 C.I."},augteth:{frequencies:[261.6255653006,278.50463402967,287.78812183066,319.76457981184,359.73515228832,380.54627680087,405.0976494977,418.60090448096,465.11211608996],description:"9/8 C.I. A gapped version of this scale is called AugTetI"},augtetj:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. comprised of 11:10:9:8 subharmonic series on 1 and 8:9:10:11 on 16/11"},augtetk:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,418.60090448096,465.11211608996],description:"9/8 C.I. This is the converse form of AugTetJ"},augtetl:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. This is the harmonic form of AugTetI"},avg_bac:{frequencies:[261.6255653006,290.69507255622,307.79478270659,348.83408706747,392.4383479509,436.04260883433,461.69217405988,523.2511306012],description:"Average Bac System"},avicenna:{frequencies:[261.6255653006,290.69507255622,299.00064605783,348.83408706747,392.4383479509,436.04260883433,448.50096908674,523.2511306012],description:"Soft diatonic of Avicenna (Ibn Sina)"},avicenna_17:{frequencies:[261.6255653006,278.99913799634,283.42769574232,294.32876096318,310.07474405997,318.85615771011,331.11985608357,348.83408706747,371.99885066179,377.90359432309,392.4383479509,413.43299207996,425.14154361347,441.49314144476,465.11211608996,495.99846754905,503.87145909745,523.2511306012],description:"Tuning by Avicenna (Ibn Sina), Ahmed Mahmud Hifni, Cairo, 1977"},avicenna_19:{frequencies:[261.6255653006,275.62199471997,283.49690885483,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,358.80077526939,372.50983809402,377.99587847311,392.4383479509,413.43299207996,425.24536328225,441.49314144476,465.11211608996,478.40103369253,496.67978412536,503.45611792634,523.2511306012],description:"Arabic scale by Ibn Sina"},avicenna_chrom:{frequencies:[261.6255653006,269.10058145205,299.00064605783,348.83408706747,392.4383479509,403.65087217807,448.50096908674,523.2511306012],description:"Dorian mode a chromatic genus of Avicenna"},avicenna_chrom2:{frequencies:[261.6255653006,271.8968348557,323.34165055711,349.22823143301,391.99543598175,407.38495184466,484.46508327871,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 4 + 18 + 8 parts"},avicenna_chrom3:{frequencies:[261.6255653006,290.69507255622,339.14425131559,348.83408706747,392.4383479509,436.04260883433,508.71637697339,523.2511306012],description:"Avicenna's Chromatic permuted"},avicenna_diat:{frequencies:[261.6255653006,281.75060878526,305.22982618403,348.83408706747,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Dorian mode a soft diatonic genus of Avicenna"},avicenna_diff:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,310.68035879446,343.38355445704,367.91095120397,392.4383479509,400.61414686654,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Difference tones of Avicenna's Soft diatonic reduced by 2/1"},avicenna_enh:{frequencies:[261.6255653006,268.33391312882,279.06726965397,348.83408706747,392.4383479509,402.50086969323,418.60090448096,523.2511306012],description:"Dorian mode of Avicenna's (Ibn Sina) Enharmonic genus"},awad:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,358.80077526939,369.35373924791,380.54627680087,392.4383479509,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"d'Erlanger vol.5, p.37, after Mans.ur 'Awad"},awraamoff:{frequencies:[261.6255653006,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Awraamoff Septimal Just"},ayers:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,537.78588422901,569.42034800719,605.00911975764,645.34306107481,691.43899400873,744.62660893248,806.67882634352,880.01326510202,968.01459161222,1075.57176845802,1210.01823951527,1382.87798801746,1613.35765268703,1936.02918322444,2420.03647903055,3226.71530537407,4840.0729580611,9680.1459161222],description:"Lydia Ayers, algorithmic composition, subharmonics 1-37"},ayers_19:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,523.2511306012],description:"Scale for NINETEEN, for 19 for the 90's CD. Repeats at 37/19 (or 2/1)"},ayers_ap:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Lydia Ayers' Appetizer, ICMC 96, Balinese Slendro from Singaraja,"},ayers_me:{frequencies:[261.6255653006,280.31310567921,299.00064605783,308.34441624714,336.37572681506,392.4383479509,420.46965851882,448.50096908674,504.56359022259,523.2511306012],description:"Scale for Merapi (1996), Lydia Ayers. Slendro 0 2 4 5 7 9, Pelog 0 1 3 6 8 9"},h10_27:{frequencies:[261.6255653006,281.00523680435,300.3849083081,319.76457981184,348.83408706747,368.21375857121,397.28326582684,426.35277308246,455.42228033808,484.4917875937,523.2511306012],description:"10-tET harmonic approximation, fundamental=27"},h12_24:{frequencies:[261.6255653006,272.52663052146,294.32876096318,316.13089140489,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,468.74580449691,490.54793493862,523.2511306012],description:"12-tET harmonic approximation, fundamental=24"},h14_27:{frequencies:[261.6255653006,271.31540105247,290.69507255622,300.3849083081,319.76457981184,339.14425131559,348.83408706747,368.21375857121,387.59343007496,406.97310157871,426.35277308246,455.42228033808,474.80195184183,494.18162334558,523.2511306012],description:"14-tET harmonic approximation, fundamental=27"},h15_24:{frequencies:[261.6255653006,272.52663052146,283.42769574232,305.22982618403,316.13089140489,327.03195662575,348.83408706747,359.73515228832,381.53728273004,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"15-tET harmonic approximation, fundamental=24"},hahn9:{frequencies:[261.6255653006,286.15296204753,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,457.84473927605,490.54793493862,523.2511306012],description:"Paul Hahn's just version of 9 out of 31 scale. TL 6-8-'98"},hahn_7:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Paul Hahn's scale with 32 consonant 7-limit dyads. TL '99, see also smithgw_hahn12"},hahn_g:{frequencies:[261.6255653006,280.50183143454,294.66523452594,309.54379154736,331.87735433448,348.63486612079,373.78884718875,392.66259958718,420.99317852788,442.25042328711,464.58101193362,498.10049926644,523.2511306012],description:'fourth of sqrt(2)-1 octave "recursive" meantone, Paul Hahn'},hahnmaxr:{frequencies:[261.6255653006,275.93321340298,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Paul Hahn's hahn_7 marvel projected to the 5-limit"},halfefg357777:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.35783506196,341.71502406609,375.57576268738,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Half genus [357777]"},hamilton:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,479.64686971777,523.2511306012],description:"Elsie Hamilton's gamut, from article The Modes of Ancient Greek Music (1953)"},hamilton_jc:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,338.57426097725,411.12588832951,383.71749577421,442.75095666255,426.35277308246,479.64686971777,523.2511306012],description:"Chalmers' permutation of Hamilton's gamut. Diatonic notes on white"},hamilton_jc2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"EH gamut, diatonic notes on white and drops 17 for 25. JC Dorian Harmonia on C"},hammond:{frequencies:[261.6255653006,226.52945288223,240.12209418,254.35818848669,269.43528366778,285.40970760065,302.50455987882,320.49131749323,339.40613876835,359.73515228832,381.06332337261,403.65087217807,427.65717404906,453.05890576445],description:'Hammond organ pitch wheel ratios, 1/1=320 Hz. Do "del 0" to get 12-tone scale'},hammond12:{frequencies:[261.6255653006,277.32410877127,293.76579515365,311.17877832054,329.62811300357,349.37146352202,370.1449018936,391.99018843668,415.46876743159,440.10130305006,466.18833124791,493.91391932426,523.2511306012],description:"Hammond organ scale, 1/1=277.0731707 Hz, A=440, see hammond for the ratios"},handblue:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Handy Blues" of Pitch Palette, 7-limit'},handel:{frequencies:[261.6255653006,276.07055536165,292.89641271707,310.57937447136,328.79480940231,349.02322090701,368.4933346061,391.37619916626,414.10583283548,438.86859125239,465.61660972366,492.3908742288,523.2511306012],description:"Well temperament according to Georg Friedrich H\xEF\xBF\xBDndel's rules (c. 1780)"},hanson_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"JI version of Hanson's 19 out of 53-tET scale"},"harm-doreninv1":{frequencies:[261.6255653006,321.08592105074,327.03195662575,332.97799220076,380.54627680087,499.46698830115,511.35905945117,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Dorian Harmonia"},"harm-dorinv1":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Dorian Harmonia"},"harm-lydchrinv1":{frequencies:[261.6255653006,322.00069575458,342.12573923925,362.25078272391,402.50086969323,483.00104363188,503.12608711654,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Lydian Harmonia"},"harm-lydeninv1":{frequencies:[261.6255653006,342.12573923925,352.18826098158,362.25078272391,402.50086969323,503.12608711654,513.18860885887,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Lydian Harmonia"},"harm-mixochrinv1":{frequencies:[261.6255653006,336.37572681506,355.06326719367,373.75080757229,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Mixolydian Harmonia"},"harm-mixoeninv1":{frequencies:[261.6255653006,355.06326719367,364.40703738298,373.75080757229,411.12588832951,504.56359022259,513.90736041189,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Mixolydian Harmonia"},harm10:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"6/7/8/9/10 harmonics"},harm11s:{frequencies:[261.6255653006,65.40639132515,95.13656920022,104.65022612024,116.27802902249,130.8127826503,149.50032302891,174.41704353373,196.21917397545,209.30045224048,261.6255653006,327.03195662575,348.83408706747,392.4383479509,457.84473927605,523.2511306012,588.65752192635,654.0639132515,719.47030457665,1046.5022612024],description:"Harm. 1/4-11/4 and subh. 4/1-4/11. Joseph Pehrson 1999"},harm12s:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,348.83408706747,359.73515228832,380.54627680087,392.4383479509,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"Harmonics 1 to 12 and subharmonics mixed"},"harm15-30":{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,383.71749577421,418.60090448096,436.04260883433,453.48431318771,488.36772189445,523.2511306012],description:"Harmonics 15 to 30"},harm15:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991],description:"Fifth octave of the harmonic overtone series"},"harm16-32":{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Harmonics 16-32 & Tom Stone's Guitar Scale"},harm16:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,2093.0045224048,1395.33634826987,1046.5022612024,837.20180896192,697.66817413493,598.00129211566,523.2511306012,465.11211608996,418.60090448096,380.54627680087,348.83408706747,322.00069575458,299.00064605783,279.06726965397,261.6255653006],description:"First 16 harmonics and subharmonics"},"harm1c-dorian":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"Harm1C-Dorian"},"harm1c-hypod":{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"HarmC-Hypodorian"},"harm1c-hypol":{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"HarmC-Hypolydian"},"harm1c-lydian":{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,382.37582620857,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"Harm1C-Lydian"},"harm1c-mix":{frequencies:[261.6255653006,299.00064605783,373.75080757229,392.4383479509,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"Harm1C-Con Mixolydian"},"harm1c-mixolydian":{frequencies:[261.6255653006,280.31310567921,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"Harm1C-Mixolydian"},harm24:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"Harmonics 12 to 24"},harm24_2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 12 to 24, mode 9"},harm3:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605],description:"Third octave of the harmonic overtone series"},"harm30-60":{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,357.55493924415,366.27579142084,374.99664359753,383.71749577421,392.4383479509,401.15920012759,409.88005230427,418.60090448096,427.32175665765,436.04260883433,444.76346101102,453.48431318771,462.20516536439,470.92601754108,479.64686971777,488.36772189445,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Harmonics 30-60"},harm30:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,310.07474405997,322.00069575458,334.88072358477,348.83408706747,364.00078650518,398.6675280771,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024,1196.00258423131,1395.33634826987,1674.40361792384,2093.0045224048,2790.67269653973,4186.0090448096,8372.0180896192,8633.6436549198,8895.2692202204,9156.894785521,9418.5203508216,9680.1459161222,9941.7714814228,10203.3970467234,10465.022612024,10726.6481773246,10988.2737426252,11249.8993079258,11511.5248732264,11773.150438527,12034.7760038276,12296.4015691282,12558.0271344288,12819.6526997294,13081.27826503,13342.9038303306,13604.5293956312,13866.1549609318,14127.7805262324,14389.406091533,14651.0316568336,14912.6572221342,15174.2827874348,15435.9083527354,15697.533918036,15959.1594833366,16220.7850486372],description:"First 30 harmonics and subharmonics"},"harm32-64":{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,335.20775554139,343.38355445704,351.55935337268,359.73515228832,367.91095120397,376.08675011961,384.26254903526,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,449.66894036041,457.84473927605,466.02053819169,474.19633710734,482.37213602298,490.54793493862,498.72373385427,506.89953276991,515.07533168556,523.2511306012],description:"Harmonics 32-64"},harm37odd:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Odd harmonics until 37"},harm4:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862],description:"Fourth octave of the harmonic overtone series"},"harm6-12":{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,331.11985608357,343.38355445704,359.73515228832,367.91095120397,392.4383479509,400.61414686654,404.70204632437,408.78994578219,441.49314144476,449.66894036041,457.84473927605,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"First 12 harmonics of 6th through 12th harmonics"},harm6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:"Harmonics 6-12"},"harm60-30":{frequencies:[261.6255653006,280.31310567921,290.69507255622,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,413.09299784305,436.04260883433,448.50096908674,490.54793493862,523.2511306012],description:"Harmonics 60 to 30 (Perkis)"},harm7lim:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,3139.5067836072,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,7325.5158284168,7848.766959018,8372.0180896192,9156.894785521,9418.5203508216,10465.022612024,10988.2737426252,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14651.0316568336,15697.533918036,16482.4106139378,16744.0361792384,18313.789571042,18837.0407016432,19621.917397545,20930.045224048,21191.6707893486,21976.5474852504,23546.300877054,25116.0542688576,25639.3053994588,26162.55653006,27470.684356563,29302.0633136672,31395.067836072],description:"7-limit harmonics"},harm8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 8-16"},harm9:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,356.10146388137,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"6/7/8/9 harmonics, First 9 overtones of 5th through 9th harmonics"},harm_bastard:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:`Schlesinger's "Bastard" Hypodorian Harmonia & inverse 1)7 from 1.3.5.7.9.11.13`},harm_bastinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,523.2511306012],description:`Inverse Schlesinger's "Bastard" Hypodorian Harmonia & 1)7 from 1.3.5.7.9.11.13`},harm_darreg:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,5232.511306012,6279.0135672144,7325.5158284168,8372.0180896192,9418.5203508216,10465.022612024,11511.5248732264,12558.0271344288,13604.5293956312,14651.0316568336,15697.533918036],description:"Darreg Harmonics 4-15"},harm_mean:{frequencies:[261.6255653006,270.06509966514,279.06726965397,299.00064605783,348.83408706747,392.4383479509,405.0976494977,418.60090448096,448.50096908674,523.2511306012],description:"Harm. Mean 9-tonic 8/7 is HM of 1/1 and 4/3, etc."},"harmc-hypop":{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,363.36884069528,377.90359432309,406.97310157871,465.11211608996,494.18162334558,523.2511306012],description:"HarmC-Hypophrygian"},"harmd-15":{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"HarmD-15-Harmonia"},"harmd-conmix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-ConMixolydian"},"harmd-hypod":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"HarmD-Hypodorian"},"harmd-hypol":{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"HarmD-Hypolydian"},"harmd-hypop":{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,406.97310157871,436.04260883433,465.11211608996,523.2511306012],description:"HarmD-Hypophrygian"},"harmd-lyd":{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"HarmD-Lydian"},"harmd-mix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-Mixolydian. Harmonics 7-14"},"harmd-phr":{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,348.83408706747,327.03195662575,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"HarmD-Phryg (with 5 extra tones)"},"harme-hypod":{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,376.08675011961,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"HarmE-Hypodorian"},"harme-hypol":{frequencies:[261.6255653006,281.24748269815,274.70684356563,340.11323489078,366.27579142084,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"HarmE-Hypolydian"},"harme-hypop":{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,363.36884069528,377.90359432309,406.97310157871,494.18162334558,508.71637697339,523.2511306012],description:"HarmE-Hypophrygian"},"harmjc-15":{frequencies:[261.6255653006,280.31310567921,301.87565226992,313.95067836072,327.03195662575,356.76213450082,373.75080757229,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Rationalized JC Sub-15 Harmonia on C. MD=15, No planetary assignment."},"harmjc-17-2":{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-17":{frequencies:[261.6255653006,269.55361273395,277.97716313189,296.50897400735,317.68818643644,342.12573923925,355.81076880882,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-19-2":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-19":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,414.24047839262,432.2509339749,451.89870370104,473.41768959156,497.08857407114,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-21":{frequencies:[261.6255653006,268.0066766494,274.70684356563,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,406.97310157871,422.62591317789,439.53094970501,457.84473927605,523.2511306012],description:"Rationalized JC Sub-21 Harmonia on C. MD=21, No planetary assignment."},"harmjc-23-2":{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,462.87600014722,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-23":{frequencies:[261.6255653006,273.51763645063,300.86940009569,316.70463167967,334.29933343966,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,481.3910401531,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-25":{frequencies:[261.6255653006,272.52663052146,297.30177875068,311.45900631024,327.03195662575,363.36884069528,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,503.12608711654,523.2511306012],description:"Rationalized JC Sub-25 Harmonia on C. MD=25, No planetary assignment."},"harmjc-27":{frequencies:[261.6255653006,271.68808704293,294.32876096318,307.12566361375,321.08592105074,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,504.56359022259,523.2511306012],description:"Rationalized JC Sub-27 Harmonia on C. MD=27, No planetary assignment."},"harmjc-hypod16":{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,418.60090448096,440.63253103259,465.11211608996,523.2511306012],description:"Rationalized JC Hypodorian Harmonia on C. Saturn Scale on C, MD=16. (Steiner)"},"harmjc-hypol20":{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,455.00098313148,575.57624366132,523.2511306012],description:"Rationalized JC Hypolydian Harmonia on C. Mars scale on C., MD=20"},"harmjc-hypop18":{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Rationalized JC Hypophrygian Harmonia on C. Jupiter scale on C, MD =18"},"harmjc-lydian13":{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,400.13321751856,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"Rationalized JC Lydian Harmonia on C. Mercury scale on C, MD = 26 or 13"},"harmjc-mix14":{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,332.97799220076,348.83408706747,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Rationalized JC Mixolydian Harmonia on C. Moon Scale on C, MD = 14"},"harmjc-phryg12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Rationalized JC Phrygian Harmonia on C. Venus scale on C, MD = 24 or 12"},harmonical:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"See pp 17 and 466-468 Helmholtz. lower 4 oct. Instr. designed & tuned by Ellis"},harmonical_up:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,457.84473927605,392.4383479509,408.78994578219,425.14154361347,474.19633710734,490.54793493862,523.2511306012],description:"Upper 2 octaves of Ellis's Harmonical"},harmsub16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,301.87565226992,327.03195662575,356.76213450082,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"16 harmonics on 1/1 and 16 subharmonics on 15/8"},harrison_16:{frequencies:[261.6255653006,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:'Lou Harrison 16-tone superparticular "Ptolemy Duple"'},harrison_5:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_3:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,406.97310157871,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,490.54793493862,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_8:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,367.91095120397,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:'Lou Harrison 8-tone tuning for "Serenade for Guitar"'},harrison_cinna:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,343.38355445704,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Lou Harrison, "Incidental Music for Corneille's Cinna" (1955-56) 1/1=C`},harrison_diat:{frequencies:[261.6255653006,274.70684356563,313.95067836072,348.83408706747,392.4383479509,412.06026534844,470.92601754108,523.2511306012],description:"From Lou Harrison, a soft diatonic"},harrison_joy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Lou Harrison's Joyous 6"},harrison_mid:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Lou Harrison mid mode"},harrison_mid2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"Lou Harrison mid mode 2"},harrison_min:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"From Lou Harrison, a symmetrical pentatonic with minor thirds"},harrison_mix1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,425.14154361347,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix2:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix3:{frequencies:[261.6255653006,313.95067836072,336.37572681506,392.4383479509,418.60090448096,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix4:{frequencies:[261.6255653006,280.31310567921,327.03195662575,392.4383479509,448.50096908674,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_songs:{frequencies:[261.6255653006,271.31540105247,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'Shared gamut of "Four Strict Songs" (1951-55), each pentatonic'},harrisonj:{frequencies:[261.6255653006,272.17712546173,292.13970819848,313.56642833783,326.21280531667,350.13858362887,364.25994396351,390.97625694066,406.744629928,436.57694340361,468.59728067062,487.49616921257,523.2511306012],description:"John Harrison's temperament (1775), almost 3/10-comma. Third = 1200/pi"},harrisonm_rev:{frequencies:[261.6255653006,257.53766584278,294.32876096318,289.72987407313,331.11985608357,343.38355445704,372.50983809402,392.4383479509,386.30649876417,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:'Michael Harrison, piano tuning for "Revelation" (2001), 1/1=F'},haverstick13:{frequencies:[261.6255653006,283.85429714132,301.75671459889,307.97166902637,320.78822215662,341.02002673508,362.52783176564,377.61479489998,401.43059675514,426.7484383229,444.50800708553,482.27514684959,502.34551296122,523.2511306012],description:"Neil Haverstick, scale in 34-tET, MMM 21-5-2006"},hawkes:{frequencies:[261.6255653006,274.56549986328,292.86986732103,310.24975557428,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901507992,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1807)"},hawkes2:{frequencies:[261.6255653006,275.15193010334,293.04845178801,312.10900487995,328.24542585003,349.59527202198,367.66978141816,391.58387939843,411.8292495232,438.61558204759,467.14415995873,491.2960898965,523.2511306012],description:"Meantone with fifth tempered 1/6 of 53-tET step by William Hawkes (1808)"},hawkes3:{frequencies:[261.6255653006,274.56549986328,292.86986732103,311.6193417424,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1811)"},hbarnes:{frequencies:[261.6255653006,276.71351472429,293.33333347996,310.95136287868,328.88393162803,349.42547049952,369.15973155124,391.77416758435,414.83597850347,439.25532436715,466.16376151809,493.04743111995,523.2511306012],description:"Variation on Barnes with 1/6P -> 1/8P. OdC '99"},hebdome1:{frequencies:[261.6255653006,265.71346475842,267.23182741418,269.80136421624,273.30527803723,280.31310567921,283.42769574232,287.78812183066,289.07289023169,292.28481123426,294.32876096318,300.63580584096,303.67253115248,308.34441624714,311.77046531655,315.35224388912,318.85615771011,323.76163705949,327.03195662575,334.03978426773,336.37572681506,340.11323489078,341.63159754654,346.88746827803,350.74177348112,359.73515228832,364.40703738298,367.91095120397,370.01329949656,375.7947573012,382.62738925213,385.43052030892,389.71308164569,392.4383479509,400.84774112128,404.70204632437,409.95791705585,411.12588832951,417.54973033466,420.46965851882,425.14154361347,431.68218274599,437.28844485957,441.49314144476,445.38637902364,449.66894036041,455.50879672872,462.5166243707,467.65569797482,470.92601754108,478.28423656516,479.64686971777,485.87604984397,490.54793493862,501.0596764016,504.56359022259,510.16985233617,513.90736041189,523.2511306012],description:"Wilson 1.3.5.7.9.11.13.15 hebdomekontany, 1.3.5.7 tonic"},helmholtz:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Helmholtz's Chromatic scale and Gipsy major from Slovakia"},helmholtz_24:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,331.11985608357,344.91651675372,348.83408706747,367.91095120397,372.50983809402,388.03108134794,392.4383479509,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,517.37477513058,523.2511306012],description:"Simplified Helmholtz 24"},helmholtz_hd:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Helmholtz Harmonic Decad"},helmholtz_pure:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,330.74639366397,344.91651675372,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,413.43299207996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,496.11959049595,516.79124009995,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning untempered"},helmholtz_temp:{frequencies:[261.6255653006,275.81645389904,279.10671937395,290.77707354032,294.24580701304,306.54917537161,310.20605716322,327.03195662575,330.9330448436,344.77062435684,348.88325535732,367.80710710303,372.19474608839,387.75741156435,392.38304142029,408.78994578219,413.66637442451,436.10414127513,441.30625330017,459.75895986689,465.24324076996,490.4788828408,496.3296094287,517.08305349316,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning"},hem_chrom:{frequencies:[261.6255653006,269.55361273395,285.40970760065,348.83408706747,392.4383479509,404.33041910093,428.11456140098,523.2511306012],description:"Hemiolic Chromatic genus has the strong or 1:2 division of the 12/11 pyknon"},hem_chrom11:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"11'al Hemiolic Chromatic genus with a CI of 11/9, Winnington-Ingram"},hem_chrom13:{frequencies:[261.6255653006,272.09058791262,283.42769574232,348.83408706747,392.4383479509,408.13588186894,425.14154361347,523.2511306012],description:"13'al Hemiolic Chromatic or neutral-third genus has a CI of 16/13"},hem_chrom2:{frequencies:[261.6255653006,269.29177952703,285.30470202322,349.22823143301,391.99543598175,403.48177901006,427.47405410759,523.2511306012],description:"1:2 Hemiolic Chromatic genus 3 + 6 + 21 parts"},hemiwuer24:{frequencies:[261.6255653006,274.60778382002,280.48822448524,286.49458884928,292.62957327549,307.15025309186,313.72755695954,320.44570714783,327.30771955335,350.90592546776,358.42021185082,366.09540888186,373.9349620795,392.49012653442,400.89489544613,409.47964376542,418.24822532303,439.00227453173,448.4030528436,458.00513880662,467.8128437444,491.02635713596,501.54117720983,512.28116095218,523.2511306012],description:"Hemiw\xEF\xBF\xBDrschmidt[24] in 229-tET tuning."},hen12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Adjusted Hahn12"},hen22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,415.27867508032,418.60090448096,436.04260883433,448.50096908674,457.84473927605,484.4917875937,490.54793493862,508.71637697339,523.2511306012],description:"Adjusted Hahn22"},hept_diamond:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,316.53463456122,325.57848126297,327.03195662575,334.88072358477,336.37572681506,348.83408706747,392.4383479509,406.97310157871,408.78994578219,418.60090448096,420.46965851882,432.48307733364,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Inverted-Prime Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondi:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,281.36411960997,289.40309445597,294.32876096318,297.67175429757,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,459.88868900496,465.11211608996,473.02836583367,486.54346200035,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Prime-Inverted Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondp:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,361.75386806997,367.91095120397,372.08969287196,378.42269266694,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Heptatonic Diamond based on Archytas's Enharmonic, 27 tones"},herf:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Sims:Reflections on This and That, 1991. Used by Herf in Ekmelischer Gesang"},heun:{frequencies:[261.6255653006,275.15237829755,293.0485888979,312.10878854255,328.24573110938,349.59519124833,367.67029324081,391.58396987353,411.83001550364,438.61588607285,467.14394139401,491.29666030217,523.2511306012],description:"Well temperament for organ of Jan Heun (1805), subset of 55-tET"},hexagonal13:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 13-tone scale"},hexagonal37:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,313.95067836072,322.99452506247,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 37-tone scale"},hexany1:{frequencies:[261.6255653006,305.22982618403,327.03195662575,381.53728273004,436.04260883433,457.84473927605,523.2511306012],description:"Two out of 1 3 5 7 hexany on 1.3"},hexany10:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"1.3.5.9 Hexany"},hexany11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"1.3.7.9 Hexany on 1.3"},hexany12:{frequencies:[261.6255653006,290.69507255622,305.22982618403,339.14425131559,406.97310157871,436.04260883433,523.2511306012],description:"3.5.7.9 Hexany on 3.9"},hexany13:{frequencies:[261.6255653006,285.40970760065,327.03195662575,356.76213450082,392.4383479509,475.68284600109,523.2511306012],description:"1.3.5.11 Hexany on 1.11"},hexany14:{frequencies:[261.6255653006,287.78812183066,340.11323489078,383.71749577421,453.48431318771,498.83274450648,523.2511306012],description:"5.11.13.15 Hexany (5.15), used in The Giving, by Stephen J. Taylor"},hexany15:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"1.3.5.15 2)4 hexany (1.15 tonic) degenerate, symmetrical pentatonic"},hexany16:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,465.11211608996,523.2511306012],description:"1.3.9.27 Hexany, a degenerate pentatonic form"},hexany17:{frequencies:[261.6255653006,327.03195662575,334.88072358477,408.78994578219,418.60090448096,523.2511306012],description:"1.5.25.125 Hexany, a degenerate pentatonic form"},hexany18:{frequencies:[261.6255653006,299.00064605783,341.71502406609,400.61414686654,457.84473927605,523.2511306012],description:"1.7.49.343 Hexany, a degenerate pentatonic form"},hexany19:{frequencies:[261.6255653006,299.00064605783,327.03195662575,418.60090448096,457.84473927605,523.2511306012],description:"1.5.7.35 Hexany, a degenerate pentatonic form"},hexany2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 2"},hexany20:{frequencies:[261.6255653006,279.06726965397,305.22982618403,398.6675280771,436.04260883433,465.11211608996,523.2511306012],description:"3.5.7.105 Hexany"},hexany21:{frequencies:[261.6255653006,279.06726965397,310.07474405997,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany"},hexany21a:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany + 4/3. Is Didymos Diatonic tetrachord on 1/1 and inv. on 3/2"},hexany22:{frequencies:[261.6255653006,276.76092858245,359.73515228832,380.54627680087,494.63583439645,523.2511306012],description:"1.11.121.1331 Hexany, a degenerate pentatonic form"},hexany23:{frequencies:[261.6255653006,348.83408706747,359.73515228832,380.54627680087,392.4383479509,523.2511306012],description:"1.3.11.33 Hexany, degenerate pentatonic form"},hexany24:{frequencies:[261.6255653006,327.03195662575,359.73515228832,380.54627680087,418.60090448096,523.2511306012],description:"1.5.11.55 Hexany, a degenerate pentatonic form"},hexany25:{frequencies:[261.6255653006,299.00064605783,359.73515228832,380.54627680087,457.84473927605,523.2511306012],description:"1.7.11.77 Hexany, a degenerate pentatonic form"},hexany26:{frequencies:[261.6255653006,294.32876096318,359.73515228832,380.54627680087,465.11211608996,523.2511306012],description:"1.9.11.99 Hexany, a degenerate pentatonic form"},hexany3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 3"},hexany4:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 4"},hexany49:{frequencies:[261.6255653006,299.00064605783,305.22982618403,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"1.3.21.49 2)4 hexany (1.21 tonic)"},hexany5:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 5"},hexany6:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 6"},hexany7:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 7"},hexany8:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,340.65828815182,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 8"},hexany9:{frequencies:[261.6255653006,299.00064605783,313.95067836072,358.80077526939,418.60090448096,448.50096908674,523.2511306012],description:"1.3.5.7 Hexany on 5.7"},hexany_cl:{frequencies:[261.6255653006,294.32876096318,301.39265122629,313.95067836072,327.03195662575,348.83408706747,353.19451315581,376.74081403286,392.4383479509,418.60090448096,470.92601754108,502.32108537715,523.2511306012],description:"Hexany Cluster 1"},hexany_cl2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Composed of 1.3.5.45, 1.3.5.75, 1.3.5.9, and 1.3.5.25 hexanies"},hexany_flank:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,327.03195662575,348.83408706747,373.75080757229,381.53728273004,427.14378008261,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Hexany Flanker, 7-limit, from Wilson"},hexany_tetr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,336.37572681506,348.83408706747,358.80077526939,523.2511306012],description:"Complex 12 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,339.14425131559,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,358.80077526939,372.08969287196,523.2511306012],description:"Complex 2 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,523.2511306012],description:"Complex 9 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_u2:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Hexany union = genus [335577] minus two corners"},hexany_union:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"The union of all of the pitches of the 1.3.5.7 hexany on each tone as 1/1"},hexany_urot:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,333.84512238879,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,392.4383479509,400.61414686654,406.97310157871,436.04260883433,445.12682985172,448.50096908674,457.84473927605,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Aggregate rotations of 1.3.5.7 hexany, 1.3 = 1/1"},hexanys:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Hexanys 1 3 5 7 9"},hexanys2:{frequencies:[261.6255653006,314.76825825228,425.14154361347,457.84473927605,269.80136421624,371.99885066179,392.4383479509,472.15238737843,318.85615771011,359.73515228832,343.38355445704,292.28481123426,523.2511306012],description:"Hexanys 1 3 7 11 13"},higgs:{frequencies:[261.6255653006,392.4383479509,418.60090448096,422.62591317789,423.58424858192,425.14154361347,436.04260883433,523.2511306012],description:"From Greg Higgs announcement of the formation of an Internet Tuning list"},hinsz_gr:{frequencies:[261.6255653006,274.68983337859,292.34127285051,310.07474405997,326.6631048533,348.83408706747,366.25311135453,391.11111150212,412.03474986192,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Reconstructed Hinsz temperament, organ Pelstergasthuiskerk Groningen. Ortgies,2002"},hipkins:{frequencies:[261.6255653006,275.62199471997,299.00064605783,348.83408706747,392.4383479509,413.43299207996,448.50096908674,523.2511306012],description:"Hipkins' Chromatic"},hirajoshi:{frequencies:[261.6255653006,291.13134764929,317.84796618517,388.16504068057,412.91271853531,523.2511306012],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.112"},hirajoshi2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"Japanese pentatonic koto scale, theoretical. Helmholz/Ellis p.519, nr.110"},hirajoshi3:{frequencies:[261.6255653006,292.47977325983,321.54118165335,396.32121331049,415.54465627623,522.94897617031],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.111"},hirashima:{frequencies:[261.6255653006,277.33928225406,292.50627485027,312.00669222389,327.03195662575,349.91912034749,369.78570985692,391.22147055517,416.00892317314,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Tatsushi Hirashima, temperament of chapel organ of Kobe Shoin Women's Univ."},hjelmboogie:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:`Paul Hjelmstad's "Boogie Woogie" scale, TL 20-3-2006`},ho_mai_nhi:{frequencies:[261.6255653006,287.78812183066,348.83408706747,392.4383479509,431.68218274599,523.2511306012],description:"Ho Mai Nhi (Nam Hue) dan tranh scale, Vietnam"},hochgartz:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.86458629683,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.49999887294,438.2147004401,465.53241962975,490.54793493862,523.2511306012],description:"Michael Hochgartz, modified 1/5-comma meantone temperament"},hofmann1:{frequencies:[261.6255653006,262.65154790962,279.06726965397,348.83408706747,392.4383479509,393.97732186443,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #1, Dorian mode"},hofmann2:{frequencies:[261.6255653006,263.56353245097,279.06726965397,348.83408706747,392.4383479509,395.34529867646,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #2, Dorian mode"},hofmann_chrom:{frequencies:[261.6255653006,264.26824777838,290.69507255622,348.83408706747,392.4383479509,396.40237166758,436.04260883433,523.2511306012],description:"Hofmann's Chromatic"},holder:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,409.94826565972,437.46806069696,467.28984664562,489.70152554512,523.2511306012],description:"William Holder's equal beating meantone temperament (1694). 3/2 beats 2.8 Hz"},holder2:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,410.64811919433,437.46806069696,467.46154552107,489.70152554512,523.2511306012],description:"Holder's irregular e.b. temperament with improved Eb and G#"},hummel:{frequencies:[261.6255653006,277.1703574486,293.54676487235,311.03465677994,329.45811370906,349.13199096171,369.8583804246,391.99149393462,415.308682162,439.8732919971,466.10512967869,493.74031485884,523.2511306012],description:"Johann Nepomuk Hummel's quasi-equal temperament (1829)"},hummel2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"Johann Nepomuk Hummel's temperament according to the second bearing plan"},husmann:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747],description:"Tetrachord division according to Husmann"},hwerck3:{frequencies:[261.6255653006,276.40121172404,293.00227310437,310.60041853231,328.69828757761,349.03110370139,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Variation on Werckmeister III with 1/4P -> 1/6P and 0P -> 1/24P. OdC '99"},hyper_enh:{frequencies:[261.6255653006,264.93728131706,268.33391312882,348.83408706747,392.4383479509,397.40592197559,402.50086969323,523.2511306012],description:"13/10 HyperEnharmonic. This genus is at the limit of usable tunings"},hyper_enh2:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Hyperenharmonic genus from Kathleen Schlesinger's enharmonic Phrygian Harmonia"},hypo_chrom:{frequencies:[261.6255653006,275.39533189537,282.83844897362,290.69507255622,348.83408706747,373.75080757229,387.59343007496,402.50086969323,418.60090448096,427.14378008261,436.04260883433,455.00098313148,523.2511306012],description:"Hypolydian Chromatic Tonos"},hypo_diat:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012],description:"Hypolydian Diatonic Tonos"},hypo_enh:{frequencies:[261.6255653006,268.33391312882,271.81876914348,275.39533189537,348.83408706747,373.75080757229,387.59343007496,402.50086969323,410.39304360878,414.45634107026,418.60090448096,465.11211608996,523.2511306012],description:"Hypolydian Enharmonic Tonos"},hypod_chrom:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012],description:"Hypodorian Chromatic Tonos"},hypod_chrom2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chrom2inv:{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chromenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Hypodorian Harmonia in a mixed chromatic-enharmonic genus"},hypod_chrominv:{frequencies:[261.6255653006,277.97716313189,294.32876096318,359.73515228832,392.4383479509,408.78994578219,425.14154361347,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypodorian Inverted"},hypod_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012],description:"Hypodorian Diatonic Tonos"},hypod_diat2:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Schlesinger's Hypodorian Harmonia, a subharmonic series through 13 from 16"},hypod_diatcon:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,418.60090448096,465.11211608996,523.2511306012],description:"A Hypodorian Diatonic with its own trite synemmenon replacing paramese"},hypod_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Hypodorian Harmonia, a harmonic series from 8 from 16"},hypod_enh:{frequencies:[261.6255653006,270.06509966514,274.49239638096,279.06726965397,310.07474405997,348.83408706747,364.00078650518,380.54627680087,389.39619021485,393.97732186443,398.6675280771,452.54151835779,523.2511306012],description:"Hypodorian Enharmonic Tonos"},hypod_enhinv:{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypodorian Harmonia"},hypod_enhinv2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,359.73515228832,392.4383479509,400.61414686654,408.78994578219,523.2511306012],description:"A harmonic form of Schlesinger's Hypodorian enharmonic inverted"},hypodorian_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,784.8766959018,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the Hypodorian Tonos"},hypol_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the chromatic genus"},hypol_chrominv:{frequencies:[261.6255653006,313.95067836072,327.03195662575,340.11323489078,366.27579142084,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypolydian Harmonia"},hypol_chrominv2:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,523.2511306012],description:"harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_chrominv3:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_diat:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"Schlesinger's Hypolydian Harmonia, a subharmonic series through 13 from 20"},hypol_diatcon:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"A Hypolydian Diatonic with its own trite synemmenon replacing paramese"},hypol_diatinv:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Inverted Schlesinger's Hypolydian Harmonia, a harmonic series from 10 from 20"},hypol_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the enharmonic genus"},hypol_enhinv:{frequencies:[261.6255653006,327.03195662575,333.57259575826,340.11323489078,366.27579142084,392.4383479509,497.08857407114,510.16985233617,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypolydian Harmonia"},hypol_enhinv2:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,366.27579142084,379.35706968587,392.4383479509,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_enhinv3:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_pent:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,373.75080757229,402.50086969323,415.27867508032,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the pentachromatic genus"},hypol_tri:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,373.75080757229,402.50086969323,413.09299784305,424.25767346043,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the first trichromatic genus"},hypol_tri2:{frequencies:[261.6255653006,270.64713651786,290.69507255622,348.83408706747,373.75080757229,402.50086969323,413.09299784305,436.04260883433,2093.0045224048],description:"Schlesinger's Hypolydian Harmonia in the second trichromatic genus"},hypolydian_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,406.97310157871,457.84473927605,488.36772189445,523.2511306012,563.50121757052,610.45965236807,665.95598440153,732.55158284168,813.94620315742,915.6894785521,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypolydian Tonos"},hypop_chrom:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012],description:"Hypophrygian Chromatic Tonos"},hypop_chromenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia in a mixed chromatic-enharmonic genus"},hypop_chrominv:{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,377.90359432309,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypophrygian Harmonia"},hypop_chrominv2:{frequencies:[261.6255653006,276.16031892841,290.69507255622,348.83408706747,377.90359432309,406.97310157871,436.04260883433,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypophrygian inverted"},hypop_diat:{frequencies:[261.6255653006,294.32876096318,303.82323712328,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"Hypophrygian Diatonic Tonos"},hypop_diat2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia"},hypop_diat2inv:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,436.04260883433,465.11211608996,523.2511306012],description:"Inverted Schlesinger's Hypophrygian Harmonia, a harmonic series from 9 from 18"},hypop_diatcon:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012],description:"A Hypophrygian Diatonic with its own trite synemmenon replacing paramese"},hypop_enh:{frequencies:[261.6255653006,269.10058145205,273.00058987889,277.01530443593,313.95067836072,362.25078272391,376.74081403286,392.4383479509,400.78810003496,405.0976494977,409.50088481833,470.92601754108,523.2511306012],description:"Hypophrygian Enharmonic Tonos"},hypop_enhinv:{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,377.90359432309,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypophrygian Harmonia"},hypop_enhinv2:{frequencies:[261.6255653006,268.89294211451,276.16031892841,348.83408706747,377.90359432309,392.4383479509,406.97310157871,523.2511306012],description:"A harmonic form of Schlesinger's Hypophrygian enharmonic inverted"},hypophryg_pis:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,377.90359432309,425.14154361347,453.48431318771,523.2511306012,544.18117582525,566.85539148463,618.38769980142,680.22646978156,755.80718864618,850.28308722695,971.75209968794,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypophrygian Tonos"},kanzelmeyer_11:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 11 harmonics from 16 to 32. Base 388.3614815 Hz"},kanzelmeyer_18:{frequencies:[261.6255653006,277.97716313189,302.50455987882,310.68035879446,327.03195662575,335.20775554139,351.55935337268,359.73515228832,376.08675011961,384.26254903526,392.4383479509,425.14154361347,433.31734252912,457.84473927605,474.19633710734,482.37213602298,498.72373385427,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 18 harmonics from 32 to 64. Base 388.3614815 Hz"},kayolonian:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"19-tone 5-limit scale of the Kayenian Imperium on Kayolonia (reeks van Sjauriek)"},kayolonian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"See Barnard: De Keiaanse Muziek, p. 11. (uitgebreide reeks)"},kayolonian_40:{frequencies:[261.6255653006,267.90457886781,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,319.36714514233,327.03195662575,331.11985608357,334.88072358477,340.65828815182,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,401.85686830172,408.78994578219,413.43299207996,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,496.11959049595,502.32108537715,510.98743222773,523.2511306012],description:"See Barnard: De Keiaanse Muziek"},kayolonian_f:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"Kayolonian scale F and periodicity block (128/125, 16875/16384)"},kayolonian_p:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale P"},kayolonian_s:{frequencies:[261.6255653006,287.4304306281,306.59245933664,327.03195662575,359.28803828513,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale S"},kayolonian_t:{frequencies:[261.6255653006,279.06726965397,297.67175429757,317.51653791741,348.83408706747,381.01984550089,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale T"},kayolonian_z:{frequencies:[261.6255653006,279.06726965397,297.67175429757,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale Z"},kayoloniana:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"Amendment by Rasch of Kayolonian scale's note 9"},"kebyar-b":{frequencies:[261.6255653006,280.40333801024,299.48910562989,384.37207420335,402.78320381033,523.2511306012],description:"Gamelan Kebyar tuning begbeg, Andrew Toth, 1993"},"kebyar-s":{frequencies:[261.6255653006,283.00682726281,309.51375468789,385.26118901859,416.26536455926,523.2511306012],description:"Gamelan kebyar tuning sedung, Andrew Toth, 1993"},"kebyar-t":{frequencies:[261.6255653006,293.15632631094,325.27731021818,397.46748834812,422.07621250312,523.2511306012],description:"Gamelan kebyar tuning tirus, Andrew Toth, 1993"},keenan:{frequencies:[261.6255653006,279.77706779472,292.57243455474,305.95298478736,327.17991022208,349.87955533643,365.88099775759,391.26571058456,418.41160951721,437.54730686196,457.55816161244,489.30340830564,523.2511306012],description:"Dave Keenan 31-ET mode has 3 4:5:6:7 tetrads + 3 inv. is Fokker's 12-tone mode"},keenan2:{frequencies:[261.6255653006,278.14493936283,295.70736791055,306.84360659709,326.21810583671,346.81593583087,369.99442271164,393.35634555235,418.19337019276,433.94238997708,461.34206956593,490.47180009913,523.2511306012],description:"Dave Keenan strange 9-limit temperament TL 19-11-98"},keenan3:{frequencies:[261.6255653006,272.10155294862,282.99701916355,314.19580976213,326.77681046955,339.86157848985,377.32935907335,392.4383479509,408.1523292189,453.14877154631,471.29371440761,523.2511306012],description:"Chain of 1/6 kleisma tempered 6/5s, 10 tetrads, Dave Keenan, 30-Jun-99, TD235"},keenan3eb:{frequencies:[261.6255653006,272.52625793573,283.88113057344,314.31833892864,327.41448875753,341.05629284549,377.62371824792,393.35750206077,409.74683779238,453.67913385439,472.5817850056,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 same"},keenan3eb2:{frequencies:[261.6255653006,271.88912362492,282.55531921581,314.13446783,326.45794787121,339.26487744082,377.18204004818,391.97887331053,407.35618327602,452.88341485066,470.6500094,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 opposite"},keenan3j:{frequencies:[261.6255653006,291.88463270656,302.72962012827,313.97755176024,350.29154279212,363.30663963964,405.32593044476,420.38583225541,436.00528786292,486.43275040712,504.50618240233,523.2511306012],description:"Chain of 11 nearly just 19-tET minor thirds, Dave Keenan, 1-Jul-99"},keenan7:{frequencies:[261.6255653006,269.29177952703,279.86396690685,288.06460709314,296.5055443788,305.19382000629,314.13668154225,326.46944327063,336.03572815422,349.22823143301,359.46139971304,369.99442271164,380.8360868427,391.99543598175,407.38487419079,419.32216217931,435.78442404634,448.5538823653,461.69751437372,475.22628419761,489.15147723638,508.3551866238,523.2511306012],description:"Dave Keenan, 22 out of 72-tET periodicity block. TL 29-04-2001"},keenanmt:{frequencies:[261.6255653006,279.93529690293,292.50627485027,305.64177427204,327.03195662575,349.91912034749,365.63284274659,391.22147055517,418.60090448096,437.39890198442,457.04105241293,489.02683710225,523.2511306012],description:"Dave Keenan 1/4-comma tempered version of keenan with 6 7-limit tetrads"},keenanst:{frequencies:[261.6255653006,268.50609092997,277.46533822773,286.72352888229,294.26410920268,304.08282473376,314.22916151277,322.49311613356,333.25374941849,342.01803421352,353.43015577174,365.22306367425,374.82811589307,387.33500976677,397.52158713557,410.7856943143,424.4923875554,435.65616946139,450.19271626925,462.0323945472,477.44903730562,493.38008744487,506.35555615636,523.2511306012],description:"Dave Keenan, 7-limit temperament, g=260.353"},kelletat:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,327.14272545641,348.82502010853,367.43868454848,391.99543598175,413.39000965417,437.97145880542,465.08793784701,489.90551202062,523.2511306012],description:"Herbert Kelletat's Bach-tuning (1967)"},kellner:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,491.32444638706,523.2511306012],description:"Herbert Anton Kellner's Bach tuning. 5 1/5 Pyth. comma and 7 pure fifths"},kellners:{frequencies:[261.6255653006,275.84425785506,292.86986732103,310.2247482054,327.84547867349,348.89032888179,367.85164222246,391.46454285105,413.69968681881,438.2147004401,465.26210635182,491.68894399626,523.2511306012],description:"Kellner's temperament with 1/5 synt. comma instead of 1/5 Pyth. comma"},kepler1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.1, Harmonices Mundi (1619)"},kepler2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.2"},kepler3:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Kepler's choice system, Harmonices Mundi, Liber III (1619)"},kilroy:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Kilroy"},kimball:{frequencies:[261.6255653006,272.52663052146,275.93321340298,290.69507255622,294.32876096318,306.59245933664,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Buzz Kimball 18-note just scale"},kimball_53:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,281.75060878526,283.42769574232,285.40970760065,287.78812183066,296.50897400735,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,461.69217405988,475.68284600109,479.64686971777,483.00104363188,485.87604984397,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Buzz Kimball 53-note just scale"},kirkwood:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Scale based on Kirkwood gaps of the asteroid belt"},"kirn-stan":{frequencies:[261.6255653006,276.16031892841,292.60754013883,310.68035879446,327.03195662575,348.83408706747,368.21375857121,392.4383479509,414.24047839262,437.1900893839,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger temperament improved by Charles Earl Stanhope (1806)"},kirnberger:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's well-temperament, also called Kirnberger III, letter to Forkel 1779"},kirnberger1:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,438.75944753732,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's temperament 1 (1766)"},kirnberger2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,438.75941205608,465.11211608996,490.54793493862,523.2511306012],description:'Kirnberger 2: 1/2 synt. comma. "Die Kunst des reinen Satzes" (1774)'},kirnberger3:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.89982010446,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger 3: 1/4 synt. comma (1744)"},kirnberger3v:{frequencies:[261.6255653006,275.93321340298,292.50063201309,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.21579858034,413.43299207996,437.39258595147,465.11211608996,490.54793493862,523.2511306012],description:"Variant well-temperament like Kirnberger 3, Kenneth Scholz, MTO 4.4, 1998"},klais:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,327.21690075602,348.83408706747,367.49599295996,391.99543598175,413.43299207996,438.01699797506,465.11211608996,489.99465727995,523.2511306012],description:"Johannes Klais, Bach temperament"},klonaris:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Johnny Klonaris, 19-limit harmonic scale"},knot:{frequencies:[261.6255653006,268.26840191956,280.31310567921,286.15296204753,294.32876096318,299.00064605783,306.59245933664,327.03195662575,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,459.88868900496,476.92160341255,478.40103369253,490.54793493862,523.2511306012],description:"Smallest knot in 3-D, American Scientist, Nov-Dec '97 p506-510, trefoil knot"},koepf_36:{frequencies:[261.6255653006,272.26348829648,274.95017225036,277.18263097687,288.45311779165,291.29956028699,293.66476791741,305.60543275312,308.62113352716,311.12698372208,323.77767743764,326.97270111135,329.62755691287,343.03050002254,346.41550969045,349.22823143301,363.4281550135,367.0144478307,369.99442271164,385.03871768789,388.83826257328,391.99543598175,407.93431128975,411.95978887118,415.30469757995,432.19134773437,436.45619266906,440,457.89078262597,462.40922843744,466.16376151809,485.11838543951,489.90551202062,493.88330125613,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 36-tone subset of 48-tone scale (1991)"},koepf_48:{frequencies:[261.6255653006,269.44737349144,272.26348829648,274.95017225036,277.18263097687,285.46954808622,288.45311779165,291.29956028699,293.66476791741,302.44445076078,305.60543275312,308.62113352716,311.12698372208,320.42873367481,323.77767743764,326.97270111135,329.62755691287,339.48241770075,343.03050002254,346.41550969045,349.22823143301,359.66909273781,363.4281550135,367.0144478307,369.99442271164,381.0561299374,385.03871768789,388.83826257328,391.99543598175,403.71490654806,407.93431128975,411.95978887118,415.30469757995,427.72104413038,432.19134773437,436.45619266906,440,453.15466093696,457.89078262597,462.40922843744,466.16376151809,480.10063929961,485.11838543951,489.90551202062,493.88330125613,508.64890891624,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 48-tone scale (1991)"},kolinsky:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Kolinsky's 7th root of 3/2, also invented by Augusto Novaro"},kora1:{frequencies:[261.6255653006,293.66476791741,326.78388880949,349.22823143301,391.99543598175,440,489.62261321254,523.2511306012],description:"Kora tuning Tomora Ba, also called Silaba, 1/1=F, R. King"},kora2:{frequencies:[261.6255653006,298.79793764201,315.65242990842,349.22823143301,391.99543598175,447.69106452518,472.94426956511,523.2511306012],description:"Kora tuning Tomora Mesengo, also called Tomora, 1/1=F, R. King"},kora3:{frequencies:[261.6255653006,291.13134764929,330.58093469714,349.22823143301,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Hardino, 1/1=F, R.King"},kora4:{frequencies:[261.6255653006,291.13134764929,330.58093469714,371.06455309218,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Sauta, 1/1=F, R. King"},korea_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:'According to Lou Harrison, called "the Delightful" in Korea'},kornerup:{frequencies:[261.6255653006,272.97226153513,280.22976278938,292.38332274669,305.0639823888,313.17470478367,326.75708630452,340.92853547661,349.99278713323,365.17196824772,374.88056242272,391.13935185123,408.10305876469,418.95303445734,437.12302030357,456.08130156398,468.2068441924,488.51296691354,509.70006023951,523.2511306012],description:"Kornerup's temperament with fifth of (15 - sqrt 5) / 22 octaves"},kornerup_11:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Kornerup's doric minor"},kraeh_22:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,320.49131749323,336.37572681506,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,400.61414686654,412.06026534844,436.04260883433,441.49314144476,457.84473927605,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Kraehenbuehl & Schmidt 7-limit 22-tone tuning"},kraeh_22a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,318.93402246168,320.49131749323,327.03195662575,336.37572681506,343.38355445704,348.83408706747,350.39138209902,353.19451315581,358.80077526939,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,400.61414686654,403.65087217807,408.78994578219,412.06026534844,418.60090448096,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,478.40103369253,488.36772189445,490.54793493862,498.33441009638,504.56359022259,523.2511306012],description:'Kraehenbuehl & Schmidt 7-limit 22-tone tuning with "inflections" for some tones'},kraeh_22b:{frequencies:[261.6255653006,269.10058145205,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,448.50096908674,457.84473927605,476.92160341255,490.54793493862,504.56359022259,523.2511306012],description:"Best 22-tET approximation of KRAEH_22A"},kring1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Double-tie circular mirroring of 4:5:6 and Partch's 5-limit tonality Diamond"},kring1p3:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,310.07474405997,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,441.49314144476,446.50763144636,454.2110508691,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Third carthesian power of double-tie mirroring of 4:5:6 with kleismas removed"},kring2:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,392.4383479509,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 6:7:8"},kring2p3:{frequencies:[261.6255653006,265.7783520514,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,515.07533168556,523.2511306012],description:"Third power of 6:7:8 mirroring with 1029/1024 intervals removed"},kring3:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,373.75080757229,436.04260883433,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 3:5:7"},kring3bp:{frequencies:[261.6255653006,336.37572681506,366.27579142084,436.04260883433,470.92601754108,560.62621135843,610.45965236807,784.8766959018],description:"Double-tie BP circular mirroring of 3:5:7"},kring4:{frequencies:[261.6255653006,299.00064605783,327.03195662575,366.27579142084,373.75080757229,418.60090448096,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 4:5:7"},kring4p3:{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.42990280658,286.15296204753,293.02063313667,299.00064605783,305.10270005901,320.49131749323,327.03195662575,334.88072358477,341.71502406609,350.53737850823,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.53145607553,400.61414686654,408.78994578219,418.60090448096,427.14378008261,448.68784449053,457.84473927605,467.18850946536,478.40103369253,488.16432009441,500.76768358318,510.98743222773,523.2511306012],description:"Third power of 4:5:7 mirroring with 3136/3125 intervals removed"},kring5:{frequencies:[261.6255653006,290.69507255622,336.37572681506,366.27579142084,373.75080757229,406.97310157871,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 5:7:9"},kring5p3:{frequencies:[261.6255653006,266.96486255163,272.4643387202,278.02483542877,284.8811711051,290.69507255622,296.68339105088,302.73815413355,308.91648380975,316.53463456122,322.99452506247,329.64821227876,336.37572681506,343.24053756638,351.70514951247,358.88280562497,366.27579142084,373.75080757229,381.45007420827,389.23476960028,398.83363954714,406.97310157871,415.27867508032,423.83341578697,432.48307733364,443.14848838571,452.19233508746,461.42075008924,470.92601754108,480.53675259294,492.38720931745,502.43592787495,512.78610798918,523.2511306012],description:"Third power of 5:7:9 mirroring with 250047/250000 intervals removed"},kring6:{frequencies:[261.6255653006,305.22982618403,336.37572681506,348.83408706747,392.4383479509,406.97310157871,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 6:7:9"},kring6p3:{frequencies:[261.6255653006,267.07609791103,271.31540105247,276.96780524107,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,316.53463456122,324.36230800023,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,361.75386806997,369.29040698809,378.42269266694,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,422.04617941496,432.48307733364,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,494.26637409559,504.56359022259,512.57253609913,523.2511306012],description:"Third power of 6:7:9 mirroring with 118098/117649 intervals removed"},krousseau:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,343.38355445704,348.83408706747,366.27579142084,392.4383479509,406.97310157871,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Kami Rousseau's tri-blues scale"},krousseau2:{frequencies:[261.6255653006,271.34627406517,291.88463270656,302.72962012827,337.74269681563,350.29154279212,363.30663963964,390.80553229045,405.32593044476,452.20508247496,469.00678383895,486.43275040712,523.2511306012],description:"19-tET version of Kami Rousseau's tri-blues scale"},kukuya:{frequencies:[261.6255653006,307.37578701508,361.96165147221,412.67427966689,460.80941404108],description:"African Kukuya Horns (aerophone, ivory, one note only)"},kurzw_arab:{frequencies:[261.6255653006,282.02769802256,290.29174037004,302.26980244078,321.16993719469,349.63190883464,374.94271441196,393.35634555235,411.95978887118,429.20598402782,447.69106452518,496.7443381147,523.2511306012],description:'Kurzweil "Empirical Arabic"'},kurzw_harmp:{frequencies:[261.6255653006,285.46954808622,287.62123438446,306.48933163909,308.79945157961,324.90175210669,345.81573716922,348.42227432308,427.72104413038,430.94493093825,458.94995811222,462.40922843744,523.2511306012],description:'Kurzweil "Empirical Bali/Java Harmonic Pelog"'},kurzw_melp:{frequencies:[261.6255653006,281.53940445957,283.98935579354,303.66981774726,307.02089761314,323.96475278212,344.02264297658,347.0163224393,421.10213511252,424.76655906637,451.06547253417,454.99063696457,523.2511306012],description:'Kurzweil "Empirical Bali/Java Melodic Pelog"'},kurzw_slen:{frequencies:[261.6255653006,266.96862289802,288.95340229325,306.66641795878,318.95145438803,352.26720984209,352.26720984209,389.06292924114,404.41509766528,429.20598402782,464.81937009253,474.03826620294,523.2511306012],description:'Kurzweil "Empirical Bali/Java Slendro, Siam 7"'},kurzw_tibet:{frequencies:[261.6255653006,270.53905136894,299.14332201883,312.9293240034,325.46525203475,353.69443592699,373.86139962101,397.69714089209,408.87792937274,438.98455767189,471.30800669535,489.90551202062,523.2511306012],description:'Kurzweil "Empirical Tibetian Ceremonial"'},kwazy:{frequencies:[13.75,13.8425266748,13.92142234948,14.00076777204,14.0805654254,14.16081788707,14.25610896047,14.337361936,14.41907801447,14.50125983535,14.58391005315,14.66703125278,14.76572882594,14.84988638999,14.93452361174,15.01964313826,15.10524789197,15.20689431811,15.29356631363,15.38073220905,15.46839499707,15.55655742089,15.66124080485,15.75050226619,15.84027256598,15.93055451337,16.0213510245,16.11266503216,16.22109048883,16.31354291552,16.40652227664,16.50003157548,16.59407373656,16.70573878851,16.80095347779,16.89671084507,16.99301388521,17.08986590459,17.18726993397,17.30292672931,17.40154500258,17.50072545316,17.60047118468,17.70078541898,17.81989766631,17.92146252619,18.023606257,18.12633215803,18.22964354736,18.35231459047,18.45691397115,18.56210951808,18.66790462912,18.77430261304,18.88130712282,19.00836345475,19.11670199894,19.22565790976,19.335234928,19.44543648263,19.57628896102,19.68786429416,19.80007566685,19.91292659048,20.02642071019,20.16118263857,20.27609169854,20.39165568498,20.50787833065,20.62476338959,20.74231451743,20.88189396397,21.00091073243,21.12060583931,21.24098302814,21.36204643183,21.50579618625,21.62836889778,21.75164008927,21.875613993,22.00029448845,22.14833914981,22.27457391904,22.40152829449,22.52920624893,22.65761190639,22.78674941445,22.94008616579,23.07083364148,23.202326315,23.33456843363,23.46756413327,23.62548236417,23.76013626908,23.89555763659,24.03175070206,24.16872014141,24.30647024079,24.47003364934,24.60950094889,24.74976328722,24.89082505353,25.03269080417,25.2011409598,25.3447753621,25.48922841152,25.63450477396,25.78060914191,25.95409219477,26.10201805756,26.25078702673,26.40040390759,26.55087337946,26.70220060843,26.88188539622,27.03509923475,27.18918616153,27.34415146685,27.5],description:"Kwazy temperament, g=162.741892, p=600, 5-limit"},lambdoma5_12:{frequencies:[261.6255653006,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,47.56828460011,52.32511306012,58.13901451124,65.40639132515,71.35242690016,74.75016151446,78.48766959018,87.20852176687,95.13656920022,98.10958698772,104.65022612024,109.01065220858,112.12524227169,116.27802902249,118.92071150027,130.8127826503,145.34753627811,149.50032302891,156.97533918036,163.51597831288,174.41704353373,186.87540378614,196.21917397545,209.30045224048,218.02130441717,261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012,654.0639132515,784.8766959018,1046.5022612024,1308.127826503],description:"5x12 Lambdoma"},lambdoma_prim:{frequencies:[261.6255653006,8.43953436454,9.02157121726,11.37502457829,13.76976659477,15.38973913533,16.87906872907,18.04314243452,20.12504348466,22.75004915657,23.78414230005,25.31860309361,27.06471365179,27.53953318954,30.77947827066,34.12507373486,37.37508075723,40.25008696932,41.30929978431,42.19767182268,45.10785608631,46.16921740599,47.56828460011,52.32511306012,56.87512289143,59.07674055175,60.37513045398,63.15099852083,68.84883297384,71.35242690016,74.75016151446,76.94869567665,79.62517204801,87.20852176687,96.38836616338,100.62521742331,104.65022612024,107.72817394731,112.12524227169,118.92071150027,130.8127826503,140.87530439263,156.97533918036,166.48899610038,174.41704353373,186.87540378614,261.6255653006,366.27579142084,392.4383479509,436.04260883433,523.2511306012,610.45965236807,654.0639132515,784.8766959018,915.6894785521,1308.127826503,1831.3789571042],description:"Prime Lambdoma"},lambert:{frequencies:[261.6255653006,276.15600972046,293.19138048956,310.67551062492,328.56569462012,349.50994910362,368.20801314466,391.67947347082,414.23401437362,438.93663604468,466.01326570444,491.89550004992,523.2511306012],description:"Lambert's temperament (1774) 1/7 Pyth. comma, 5 pure"},lara:{frequencies:[261.6255653006,286.4606265643,298.28060863281,313.11013128311,341.05478972476,377.11473546037,395.40657391157,420.13030572059,450.02449304881,492.74350578058,523.2511306012,577.23956595248,599.67057787333],description:"Sundanese 'multi-laras' gamelan Ki Barong tuning, Weintraub, TL 15-2-99 1/1=497"},lebanon:{frequencies:[261.6255653006,285.30470202322,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Lebanese scale? Dastgah Shur"},leedy:{frequencies:[261.6255653006,269.80136421624,290.69507255622,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:'Douglas Leedy, scale for "Pastorale" (1987), 1/1=f, 10/9 only in vocal parts'},leeuw1:{frequencies:[261.6255653006,311.12698372208,349.22823143301,380.8360868427,415.30469757995,466.16376151809,508.3551866238,554.36526195375,604.53960488156,659.25511382574,739.98884542327,806.96355802011,880,987.76660251225],description:'Ton de Leeuw: non-oct. mode from "Car nos vignes sont en fleurs",part 5. 1/1=A'},leftpistol:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Left Pistol"},legros1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.49749487796,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 3 just major thirds"},legros2:{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.49749487796,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 2 just major thirds"},"lehman-bach":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.77584116741,328.14198392915,349.6228209638,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Brad Lehman's Bach keyboard temperament"},lemba10:{frequencies:[261.6255653006,283.65327551057,298.9489942119,324.1191713102,341.59697290141,370.35792032269,401.5404117335,423.19307614937,458.82405293702,483.56568031466,524.27976214079],description:"10-note Lemba scale, Herman Miller"},lemba12:{frequencies:[261.6255653006,276.1173031791,283.29759227608,298.9897683987,323.75689816556,341.69016129748,369.99442271164,390.48883496177,400.64329718448,422.83538548023,457.86139629758,483.22286023634,523.2511306012],description:"Lemba[12] in 270-et (poptimal)"},lemba22:{frequencies:[261.6255653006,268.42900262332,276.1173031791,283.29759227608,298.9897683987,306.76484424299,315.55115201964,323.75689816556,341.69016129748,350.57563899649,360.61677037127,369.99442271164,379.61593604418,390.48883496177,400.64329718448,422.83538548023,433.83100318771,446.25671880862,457.86139629758,483.22286023634,495.78882330645,509.98912747823,523.2511306012],description:"Lemba[22] in 270-et (poptimal)"},lemba24:{frequencies:[261.6255653006,275.73346179752,283.65327551057,290.60211247891,298.9489942119,307.53562105228,315.06951922004,324.1191713102,332.05932738876,341.59697290141,351.40856549044,360.01724743313,370.35792032269,390.32910012969,401.5404117335,411.37720579947,423.19307614937,435.34833037897,446.01333880095,458.82405293702,470.06416125332,483.56568031466,497.45499966368,509.64147516102,524.27976214079],description:"24-note Lemba scale for mapping millerlemba24.kbm"},lemba8:{frequencies:[261.6255653006,275.73334871592,283.6533803711,298.94898212432,307.53584843097,324.11927802481,341.59694330429,351.4088110982,370.358025147],description:"Lemba temperament (4 down, 3 up) TOP tuning, Herman Miller, TL 22-11-2004"},leusden:{frequencies:[261.6255653006,275.54404190554,292.50627485027,310.51268695591,327.03195662575,349.91912034749,367.08095907728,391.22147055517,413.66634097248,437.39890198442,466.16376151809,489.02683710225,523.2511306012],description:"Organ in Gereformeerde kerk De Koningshof, Henk van Eeken, 1984, a'=415, modif. 1/4 mean"},leven:{frequencies:[261.6255653006,279.06726965397,298.97057995496,313.95067836072,330.39003879965,348.83408706747,369.35382642901,392.4383479509,418.60090448096,448.46752658184,465.11211608996,502.32108537715,523.2511306012],description:"Leven's monochord ?"},ligon:{frequencies:[261.6255653006,279.66870773512,292.40504357126,309.19384990071,329.87571277032,342.12573923925,366.27579142084,392.4383479509,411.12588832951,436.04260883433,462.87600014722,485.87604984397,523.2511306012],description:"Jacky Ligon, strictly proper all prime scale, TL 08-09-2000"},ligon2:{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,411.78935130154,441.2028763945,470.61640148747,500.02992658044,529.4434516734,558.85697676637],description:"Jacky Ligon, 19-limit symmetrical non-octave scale, 2001"},ligon3:{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,341.25073734861,376.08675011961,401.15920012759,427.90314680276,471.58492637221,481.3910401531,508.13498682828,534.87893350345,561.62288017862,588.36682685379,615.11077352897],description:"Jacky Ligon, 23-limit non-octave scale (2001)"},ligon4:{frequencies:[261.6255653006,278.49926570678,289.46759601673,308.13698517552,320.27237341115,340.92853547661,362.91692931321,386.32347802158,401.53832428939,427.43578342293,444.26952759254,472.92296174596,491.54841572131,523.2511306012,556.99853141357,592.92249142473,616.27397035104,640.54474682231,681.85707095323,725.83385862642,754.41987838254,803.07664857879],description:"Jacky Ligon, 2/1 Phi Scale, TL 12-04-2001"},ligon5:{frequencies:[261.6255653006,273.22765669781,280.653851324,293.09977429907,314.41721066027,328.36040925687,337.28508524374,352.24238645938,377.86132347501,394.61802538749,405.34378524393,423.31898451752,454.1076550834,474.24531572837,487.13535379632,508.73764640933,545.73895363303],description:'Jacky Ligon, scale for "Two Golden Flutes" (2001)'},ligon6:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:'Jacky Ligon, "Primal Golden Tuning" (2001)'},ligon7:{frequencies:[261.6255653006,294.32876096318,321.08592105074,361.22166118208,394.05999401681,443.31749326891,483.61908356609,527.58445479937],description:"Jacky Ligon, 7 tone, 27/22=generator, MMM 22-01-2002"},lindley_ea:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Mark Lindley +J. de Boer +W. Drake (1991), for organ Grosvenor Chapel, London"},lindley_sf:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.07474405997,328.14198392915,349.6228209638,368.32692341742,391.5530240856,413.90012676351,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Lindley (1988) suggestion nr. 2 for Stanford Fisk organ"},"ling-lun":{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Scale of Ling Lun from C"},liu_major:{frequencies:[261.6255653006,290.69507255622,322.99452506247,348.83408706747,392.4383479509,436.04260883433,484.4917875937,523.2511306012],description:`Linus Liu's Major Scale, see his 1978 book, "Intonation Theory"`},liu_mel:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,423.83341578697,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Linus Liu's Melodic Minor, use 5 and 7 descending and 6 and 8 ascending"},liu_minor:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,387.59343007496,418.60090448096,484.4917875937,523.2511306012],description:"Linus Liu's Harmonic Minor"},liu_pent:{frequencies:[261.6255653006,294.32876096318,331.11985608357,353.19451315581,392.4383479509,441.49314144476,496.67978412536,529.79176973372],description:`Linus Liu's "pentatonic scale"`},lorina:{frequencies:[261.6255653006,271.31540105247,293.02063313667,305.22982618403,313.95067836072,348.83408706747,348.83408706747,385.55346465352,406.97310157871,457.84473927605,457.84473927605,465.11211608996,523.2511306012],description:"Lorina"},lt46a:{frequencies:[261.6255653006,265.62583852249,273.73233506765,277.91772325275,286.39934942254,290.77841553921,299.65253047503,308.79746990018,313.51900484808,323.08712797864,328.02715279963,338.03804253716,348.35444940179,353.68081538041,364.47461587782,370.04745828823,381.3407438317,387.1714705201,398.98735486934,411.16384203565,417.45056598488,430.19052226982,436.76816801564,450.09766813034,463.83396431287,470.92601754108,485.29796386361,492.71820372913,507.75521382755,523.2511306012],description:"13-limit temperament, minimax g=495.66296 cents"},lucy_19:{frequencies:[261.6255653006,272.17716319349,280.81422591737,292.13972001074,301.4102593031,313.56641022552,326.2128298123,336.56461921066,350.13857756143,364.25998604447,375.81913491042,390.97626371576,406.74469336313,419.65201956185,436.57696862128,450.43096951372,468.59726172356,487.49621708267,502.96605061019,523.2511306012],description:"Lucy's 19-tone scale"},lucy_24:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,292.13970819848,301.41031849758,303.92192719902,313.56642833783,326.21280343239,336.56467170065,339.36921655583,350.13858362887,364.25994396351,375.81917832675,390.97625694066,403.38329512334,406.744629928,419.65205349792,436.57694340361,450.43105016925,454.18442712942,468.59728067062,487.49616921257,502.96612033609,523.2511306012],description:"Lucy/Harrison, meantone tuning from Bbb to Cx, third=1200.0/pi, 1/1=A"},lucy_31:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,283.15423815518,292.13970819848,301.41031849758,303.92192719902,313.56642833783,323.51698308414,326.21280343239,336.56467170065,339.36921655583,350.13858362887,361.24970022276,364.25994396351,375.81917832675,378.95082751155,390.97625694066,403.38329512334,406.744629928,419.65205349792,432.96907456701,436.57694340361,450.43105016925,454.18442712942,468.59728067062,483.46750424654,487.49616921257,502.96612033609,507.15726445705,523.2511306012],description:"Lucy/Harrison's meantone tuning, 1/1=A"},lucy_7:{frequencies:[261.6255653006,292.13972001074,326.2128298123,350.13857756143,390.97626371576,436.57696862128,487.49621708267,523.2511306012],description:"Diatonic Lucy's scale"},lumma5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Carl Lumma's 5-limit version of lumma7, also Fokker 12-tone just."},lumma7:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,390.69417751556,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Carl Lumma's 7-limit 12-tone scale, a.k.a GW Smith's Prism. TL 21-11-98"},lumma7t:{frequencies:[261.6255653006,279.68948643792,293.67396186758,305.56991806333,326.66797434652,349.22276480589,366.68390442934,392.00157215927,419.06732091375,436.04260883433,457.84473927605,489.45662770953,523.2511306012],description:"Tempered lumma7, 6 tetrads + 4 triads within 2c of Just, TL 19-2-99"},lumma7t72:{frequencies:[261.6255653006,279.86396690685,293.66476791741,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"72-tET version of lumma7t"},lumma7t_keen:{frequencies:[261.6255653006,279.95098841649,293.39965821869,305.14186035122,326.51537799354,349.38597341375,366.17023517096,391.81845653432,419.26317124465,436.04260556019,456.98979229899,488.99939844699,523.2511306012],description:"Dave Keenan's adaptation of lumma7t to include 6:8:11, TL 17-04-9"},lumma_10:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,375.37611551499,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:"Carl Lumma's 10-tone 125 cent Pyth. scale, TL 29-12-1999"},lumma_12_fun:{frequencies:[261.6255653006,276.16031892841,293.246794009,310.68035879446,327.94037872749,348.23056788569,368.93292606842,390.99572534534,413.52379936426,439.8701910135,464.30742384759,491.05951174505,522.34585182853],description:"Rational well temperament based on 577/289, 3/2, and 19/16."},"lumma_12_moh-ha-ha":{frequencies:[261.6255653006,276.16031892841,293.42033886144,310.68035879446,330.09788121912,349.51540364377,368.93292606842,391.72740891476,414.24047839262,440.13050829216,466.02053819169,493.4335110265,523.2511306012],description:"Rational well temperament."},lumma_12_strangeion:{frequencies:[261.6255653006,277.97716313189,292.40504357126,310.68035879446,330.09788121912,349.23197505989,368.93292606842,391.9912339477,414.71297038361,440.63253103259,468.17206422213,492.47165233054,523.2511306012],description:'19-limit "dodekaphonic" scale.'},lumma_22:{frequencies:[261.6255653006,263.29318697558,262.98919438538,262.83732973433,262.68555277841,262.53386346698,263.29318697558,262.38226174944,262.98919438538,262.23074757519,263.29318697558,262.68555277841,262.07932089369,263.29318697558,262.83732973433,263.59753095473,262.38226174944,263.44531501617,262.68555277841,262.98919438538,263.29318697558,263.902226729,261.92798165442],description:"Carl Lumma, intervals of attraction by trial and error, 1999."},lumma_5151:{frequencies:[261.6255653006,276.7826524273,292.81785438923,309.78204413166,327.729041887,346.71578592374,369.67398581173,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Carl Lumma's 5151 temperament III (1197/709.5/696). June 2003"},lumma_al1:{frequencies:[261.6255653006,274.63272075836,292.81785438923,309.78204413166,327.729041887,346.71578592374,366.8025131876,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Alaska I (1197/709.5/696), Carl Lumma, 6 June 2003."},lumma_al2:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,347.216824829,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska II (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al3:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,349.32910706765,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska III (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al4:{frequencies:[261.6255653006,276.38325105256,293.32570896007,309.87152561537,328.86683469969,349.02656754477,368.7143392539,391.31674786192,413.39000965417,438.73106346722,464.55095742407,491.89038573682,522.04355935974],description:"Alaska IV (1196/701/697), Carl Lumma, 6 June 2003."},lumma_al5:{frequencies:[261.6255653006,276.84261239447,293.89809826895,310.99222741882,329.08061019985,349.35433052883,369.67398581173,391.17550247358,415.27471248744,439.42852501549,464.98720675925,493.63374591774,522.3451906503],description:"Alaska V (1197/702/696.375), Carl Lumma, 6 June 2003."},lumma_al6:{frequencies:[261.6255653006,276.86260193655,293.83444433876,310.94732162256,329.05685050583,349.22823143301,369.56723519412,391.09077971329,415.06487744922,439.23819834286,464.81937009253,493.31307433255,522.04355935974],description:"Alaska VI (1196/701/696), Carl Lumma, 6 June 2003."},lumma_al7:{frequencies:[261.6255653006,276.11677207256,293.26810788146,310.16878953668,328.73958549954,348.42227432308,368.499294457,391.39134599911,413.94674961638,438.72852926454,464.99660740427,491.79379203259,522.3451906503],description:"Alaska VII, Carl Lumma, 27 Jan 2004"},lumma_dec1:{frequencies:[261.6255653006,286.10322937235,299.18791603519,327.17991022208,342.14320575162,374.15409293384,391.26571058456,427.87249484695,457.55816161244,489.30340830564,523.2511306012],description:"Carl Lumma, two 5-tone 7/4-chains, 5/4 apart in 31-tET, TL 9-2-2000"},lumma_dec2:{frequencies:[261.6255653006,286.10322937235,292.57243455474,327.17991022208,342.14320575162,382.6142546815,391.26571058456,437.54730686196,457.55816161244,511.68128147674,523.2511306012],description:"Carl Lumma, two 5-tone 3/2-chains, 7/4 apart in 31-tET, TL 9-2-2000"},lumma_magic:{frequencies:[261.6255653006,293.02063313667,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,418.60090448096,436.04260883433,457.84473927605,467.18850946536,523.2511306012],description:"Magic chord test, Carl Lumma, TL 24-06-99"},"lumma_synchtrines+2":{frequencies:[261.6255653006,277.1478691313,293.59111644706,311.009943641,329.46223568632,349.00930447981,369.71610741159,391.65144749868,414.88821865981,439.50363030131,465.57948255979,493.20241832805,522.46423212702],description:"The 12-tone equal temperament with 2:3:4 brats of +2"},"lumma_synchtrines-2":{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338321153,392.13011885309,415.46777761785,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"The 12-tone equal temperament with 2:3:4 brats of -2"},lydian_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,317.12189733406,327.03195662575,373.75080757229,402.50086969323,418.60090448096,427.14378008261,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,615.58956541318,634.24379466812,654.0639132515,747.50161514457,805.00173938646,837.20180896192,854.28756016522,872.08521766867,951.36569200218,1046.5022612024],description:"Lydian Chromatic Tonos"},lydian_chrom2:{frequencies:[261.6255653006,272.09058791262,283.42769574232,340.11323489078,377.90359432309,400.13321751856,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the chromatic genus"},lydian_chrominv:{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Lydian inverted"},lydian_diat:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,697.66817413493,747.50161514457,852.70554616492,805.00173938646,872.08521766867,910.00196626296,951.36569200218,996.66882019276,1046.5022612024],description:"Lydian Diatonic Tonos"},lydian_diat2:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,377.90359432309,425.14154361347,485.87604984397,523.2511306012],description:"Schlesinger's Lydian Harmonia, a subharmonic series through 13 from 26"},lydian_diat2inv:{frequencies:[261.6255653006,281.75060878526,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"Inverted Schlesinger's Lydian Harmonia, a harmonic series from 13 from 26"},lydian_diatcon:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,425.14154361347,485.87604984397,523.2511306012],description:"A Lydian Diatonic with its own trite synemmenon replacing paramese"},lydian_enh:{frequencies:[261.6255653006,275.39533189537,290.69507255622,299.00064605783,303.33398875432,307.79478270659,373.75080757229,402.50086969323,410.39304360878,414.45634107026,418.60090448096,475.68284600109,523.2511306012,550.79066379074,581.39014511244,598.00129211566,606.66797750864,615.58956541318,747.50161514457,805.00173938646,820.78608721757,828.91268214051,837.20180896192,951.36569200218,1046.5022612024],description:"Lydian Enharmonic Tonos"},lydian_enh2:{frequencies:[261.6255653006,266.75547834571,272.09058791262,340.11323489078,377.90359432309,388.70083987518,400.13321751856,523.2511306012],description:"Schlesinger's Lydian Harmonia in the enharmonic genus"},lydian_enhinv:{frequencies:[261.6255653006,266.65682617177,271.68808704293,362.25078272391,402.50086969323,412.56339143556,422.62591317789,523.2511306012],description:"A harmonic form of Schlesinger's Enharmonic Lydian inverted"},lydian_pent:{frequencies:[261.6255653006,269.93113880221,283.42769574232,340.11323489078,377.90359432309,395.48050568695,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the pentachromatic genus"},lydian_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,805.00173938646,872.08521766867,951.36569200218,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Lydian Tonos"},lydian_tri:{frequencies:[261.6255653006,268.51044859798,275.76748774928,340.11323489078,377.90359432309,392.4383479509,408.13588186894,523.2511306012],description:"Schlesinger's Lydian Harmonia in the first trichromatic genus"},lydian_tri2:{frequencies:[261.6255653006,268.51044859798,283.42769574232,340.11323489078,377.90359432309,392.4383479509,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the second trichromatic genus"},nachbaur_6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:`Fred Nachbaur's harmonic hexatonic, as used in "Void of Sensation"`},nassarre:{frequencies:[261.6255653006,277.66336828161,294.34406205295,311.66659310186,331.15428443044,350.6431449633,372.56793743951,394.49404533893,419.16071913933,443.82887286778,471.58032351597,495.88429116026,523.2511306012],description:"Nassarre's Equal Semitones"},negri5_19:{frequencies:[261.6255653006,271.22480440713,281.41555648081,291.74090527404,302.70251050738,313.80889368201,325.59966315504,337.54616011163,350.22880998446,363.07896889448,376.72096510961,390.54314115106,405.21705098851,420.08476989056,435.86864979507,451.86099895106,468.83881245397,486.04086171852,504.30291533224,523.2511306012],description:"Negri temperament, g=126.238272, 5-limit"},negri_19:{frequencies:[261.6255653006,269.02825605326,281.18681366715,289.14299126725,302.21061955257,310.76166549402,324.80633749066,333.99672707734,349.09149261831,358.96903024071,375.19240283292,392.14898023137,403.24482870584,421.46921730446,433.39468387282,452.98167562873,465.79878414581,486.85025820508,500.62567766841,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},negri_29:{frequencies:[261.6255653006,269.02825605326,276.64040740805,281.18681366715,289.14299126725,297.32428710198,302.21061955257,310.76166549402,319.55466133443,324.80633749066,333.99672707734,343.44715857517,349.09149261831,358.96903024071,369.1260526158,375.19240283292,385.80846524917,392.14898023137,403.24482870584,414.65463641221,421.46921730446,433.39468387282,445.65757880387,452.98167562873,465.79878414581,478.97855252217,486.85025820508,500.62567766841,514.79087238232,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},"neid-mar-morg":{frequencies:[261.6255653006,277.49581689502,293.99657683935,311.12698372208,329.99999983505,349.6228209638,369.99442271164,392.4383479509,415.77394625748,440,466.69047534984,494.44133512215,523.2511306012],description:"Neidhardt-Marpurg-de Morgan temperament (1858)"},neidhardt1:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,348.83408706747,368.32692341742,391.5530240856,414.36778843034,438.51190905657,465.11211608996,491.65745674141,523.2511306012],description:"Neidhardt I temperament (1724)"},neidhardt2:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,349.22823143301,369.15973155124,391.5530240856,414.36778843034,438.51190905657,466.16376151809,492.7691222293,523.2511306012],description:"Neidhardt II temperament (1724)"},neidhardt3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Neidhardt III temperament (1724) 'Grosse Stadt'"},neidhardt4:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"Neidhardt IV temperament (1724), equal temperament"},neidhardtn:{frequencies:[261.6255653006,276.86979852503,293.66476791741,310.77584116741,329.62755691287,348.83408706747,369.99442271164,391.5530240856,415.30469757995,439.50340943686,466.16376151809,493.32589719545,523.2511306012],description:"Johann Georg Neidhardt's temperament (1732), alt. 1/6 & 0 P, also Marpurg nr.10"},neogeb24:{frequencies:[261.6255653006,270.11478301563,282.39420473706,291.55732426372,295.23185084282,304.81152420286,308.65309481038,318.66826025208,333.15492371116,343.96512368902,348.30015108876,359.6017829051,375.94928703407,388.14807710176,393.03994675222,405.79329398283,424.24066266408,438.00640969567,443.52664897728,457.91818970179,463.68937649142,478.73515685363,500.49846361623,516.73862125829,523.2511306012],description:"Neo-Gothic e-based lineotuning (T/S or Blackwood's R=e, ~2.71828), 24 notes"},neogji12:{frequencies:[261.6255653006,282.52678126125,294.32876096318,317.84262891891,332.97799220076,348.83408706747,374.60024122586,392.4383479509,423.79017189188,441.49314144476,443.97065626768,499.46698830115,523.2511306012],description:"M. Schulter, neo-Gothic 12-note JI (prim. 2/3/7/11) 1/1=F with Eb key as D+1"},neogp16a:{frequencies:[261.6255653006,274.38778799819,281.28352228595,295.02457363685,309.19384990071,317.19205704586,332.33517754401,348.83408706747,366.27579142084,374.86334014511,392.4383479509,411.12588832951,422.62591317789,442.75095666255,464.34856430463,498.91386871277,523.2511306012],description:"M. Schulter, scale from mainly prime-to-prime ratios and octave complements (Gb-D#)"},neutr_diat:{frequencies:[261.6255653006,294.32876096318,320.24370022528,348.83408706747,392.4383479509,427.47405410759,479.82340237272,523.2511306012],description:"Neutral Diatonic, 9 + 9 + 12 parts, geometric mean of major and minor"},neutr_pent1:{frequencies:[261.6255653006,302.32287545847,348.83408706747,392.4383479509,453.48431318771,523.2511306012],description:"Quasi-Neutral Pentatonic 1, 15/13 x 52/45 in each trichord, after Dudon"},neutr_pent2:{frequencies:[261.6255653006,301.87565226992,348.83408706747,392.4383479509,452.81347840488,523.2511306012],description:"Quasi-Neutral Pentatonic 2, 15/13 x 52/45 in each trichord, after Dudon"},new_enh:{frequencies:[261.6255653006,264.89588486686,279.06726965397,348.83408706747,392.4383479509,397.34382730029,418.60090448096,523.2511306012],description:"New Enharmonic"},new_enh2:{frequencies:[261.6255653006,327.03195662575,331.11985608357,348.83408706747,392.4383479509,490.54793493862,496.67978412536,523.2511306012],description:"New Enharmonic permuted"},newcastle:{frequencies:[261.6255653006,273.65745935891,291.9012907804,312.65334602246,327.03195662575,350.28154752005,366.3906401674,390.81668391305,410.48618883318,436.04260883433,467.04206359353,490.54793493862,523.2511306012],description:"Newcastle modified 1/3-comma meantone"},norden:{frequencies:[261.6255653006,274.87601291722,292.73769384471,310.07474405997,327.54963108844,349.78078158391,366.5013507395,391.37619916626,412.31401916973,437.91808280662,466.37437567834,489.99465727995,523.2511306012],description:"Reconstructed Schnitger temperament, organ in Norden. Ortgies, 2002"},novaro:{frequencies:[261.6255653006,274.70684356563,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,498.33441009638,523.2511306012],description:"9-limit diamond with 21/20, 16/15, 15/8 and 40/21 added for evenness"},novaro15:{frequencies:[261.6255653006,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,523.2511306012],description:"1-15 diamond, see Novaro, 1927, Sistema Natural base del Natural-Aproximado, p"},novaro_eb:{frequencies:[261.6255653006,277.27733921611,293.70273468471,311.34510173929,329.85947563084,349.74559786079,370.61463194963,392.51515715445,416.03831243363,440.72414616847,467.23897542105,495.06435356607,524.26505360912],description:"Novaro (?) equal beating 4/3 with strectched octave, almost pure 3/2"},janke1:{frequencies:[261.6255653006,276.38325105256,293.32570896007,310.58830860439,328.86683469969,349.02656754477,368.7143392539,391.76907592069,414.34624765043,439.23819834286,465.62553897253,492.45896815637,523.2511306012],description:"Rainer Janke, Temperatur I"},janke2:{frequencies:[261.6255653006,276.38325105256,292.98704147282,310.58830860439,328.48713220126,349.02656754477,368.7143392539,391.54284657258,414.34624765043,438.73106346722,465.62553897253,491.89038573682,523.2511306012],description:"Rainer Janke, Temperatur II"},janke3:{frequencies:[261.6255653006,276.22365192501,292.98704147282,310.40895756597,328.29744538229,349.02656754477,368.50142299854,391.54284657258,414.10698098223,438.47771564426,465.62553897253,491.60634075178,523.2511306012],description:"Rainer Janke, Temperatur III"},janke4:{frequencies:[261.6255653006,275.90473010106,292.98704147282,310.76776326996,328.10786809908,349.22823143301,368.07595926604,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.32245979018,523.2511306012],description:"Rainer Janke, Temperatur IV"},janke5:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,328.10786809908,348.82502010853,367.43868454848,391.54284657258,413.39000965417,438.47771564426,465.08793784701,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur V"},janke6:{frequencies:[261.6255653006,275.74540729824,292.98704147282,310.58830860439,328.10786809908,349.43001184052,367.65098676472,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur VI"},janke7:{frequencies:[261.6255653006,275.42703764514,292.81785438923,311.12698372208,327.91840028839,349.63190883464,367.0144478307,391.54284657258,413.62886206386,438.22451411849,467.24207374344,490.75518955849,523.2511306012],description:"Rainer Janke, Temperatur VII"},jemblung1:{frequencies:[261.6255653006,298.87388797409,337.89601991959,388.44742741354,452.30188977628,523.2511306012],description:"Scale of bamboo gamelan jemblung from Kalijering, slendro-like. 1/1=590 Hz."},jemblung2:{frequencies:[261.6255653006,300.03885820455,355.06324470257,391.40016308218,451.61555914985,523.2511306012],description:"Bamboo gamelan jemblung at Royal Batavia Society. 1/1=504 Hz."},ji_10coh:{frequencies:[261.6255653006,283.42769574232,299.7792935736,327.03195662575,348.83408706747,370.63621750918,392.4383479509,436.04260883433,457.84473927605,485.0974023282,523.2511306012],description:"Differentially coherent 10-tone scale"},ji_10coh2:{frequencies:[261.6255653006,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Other diff. coherent 10-tone scale"},ji_11:{frequencies:[261.6255653006,276.96780524107,294.32876096318,316.53463456122,336.37572681506,356.10146388137,384.42940207435,406.97310157871,432.48307733364,465.11211608996,494.26637409559,523.2511306012],description:"3 and 7 prime rational interpretation of 11-tET. OdC 2000"},ji_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Basic JI with 7-limit tritone"},ji_12a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"7-limit 12-tone scale"},ji_12b:{frequencies:[261.6255653006,272.52663052146,290.69507255622,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"alternate 7-limit 12-tone scale"},ji_12c:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Kurzweil "Just with natural b7th", is Sauveur Just with 7/4'},ji_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"5-limit 12-tone symmetrical scale with two tritones"},ji_17:{frequencies:[261.6255653006,271.31540105247,283.8170195002,294.32876096318,310.07474405997,321.55899383997,336.37572681506,348.83408706747,361.75386806997,378.42269266694,392.4383479509,406.97310157871,425.72552925031,441.49314144476,465.11211608996,482.33849075995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 17-tET. OdC"},ji_17a:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,310.07474405997,321.08592105074,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,426.35277308246,441.49314144476,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_17b:{frequencies:[261.6255653006,272.52663052146,285.40970760065,294.32876096318,310.07474405997,319.76457981184,334.88072358477,348.83408706747,359.73515228832,380.54627680087,392.4383479509,408.78994578219,428.11456140098,441.49314144476,465.11211608996,479.64686971777,502.32108537715,523.2511306012],description:"Alt. 3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_19:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"5-limit 19-tone scale"},ji_20:{frequencies:[261.6255653006,271.31540105247,279.38237857051,288.32205155576,299.00064605783,310.07474405997,321.55899383997,331.11985608357,348.83408706747,356.10146388137,372.50983809402,384.42940207435,392.4383479509,413.43299207996,425.72552925031,441.49314144476,457.84473927605,474.80195184183,489.99465727995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 20-tET. OdC"},ji_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"7-limit 21-tone just scale, Op de Coul, 2001"},ji_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"5-limit 22-tone scale (Zarlino?)"},ji_27:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,331.11985608357,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,413.43299207996,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"7-limit rational interpretation of 27-tET, OdC"},ji_29:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,287.78812183066,294.32876096318,301.39265122629,310.07474405997,317.12189733406,323.76163705949,331.11985608357,340.65828815182,348.83408706747,356.76213450082,367.91095120397,372.08969287196,383.71749577421,392.4383479509,401.85686830172,413.43299207996,422.82919644541,431.68218274599,441.49314144476,454.2110508691,465.11211608996,475.68284600109,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"3,5,11-prime rational interpretation of 29-tET, OdC"},ji_30:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,313.95067836072,321.92208230347,329.64821227876,336.37572681506,344.91651675372,353.19451315581,360.81424763342,370.01329949656,379.40816842909,387.59343007496,396.89567239676,406.97310157871,415.27867508032,425.24536328225,436.04260883433,443.97065626768,456.65553216105,465.11211608996,478.40103369253,488.36772189445,498.33441009638,511.62332769895,523.2511306012],description:"11-limit rational interpretation of 30-tET"},ji_31:{frequencies:[261.6255653006,267.57160087561,274.08392555301,280.31310567921,285.40970760065,293.02063313667,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,356.76213450082,366.27579142084,373.75080757229,383.71749577421,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,467.18850946536,479.64686971777,490.54793493862,499.46698830115,512.78610798918,523.2511306012],description:"A just 11-limit 31-tone scale, optimized for Mann complexity"},ji_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 7-limit 31-tone scale"},ji_31b:{frequencies:[261.6255653006,267.90457886781,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 5-limit 31-tone scale, corner clipped genus"},ji_31c:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"A just 11-limit 31-tone scale"},ji_5coh:{frequencies:[261.6255653006,305.22982618403,348.83408706747,381.53728273004,446.94367405519,523.2511306012],description:"Differential fully coherent pentatonic scale"},ji_6coh:{frequencies:[261.6255653006,294.32876096318,330.74639366397,372.08969287196,418.60090448096,465.11211608996,523.2511306012],description:"Differential coherent 6-tone scale, OdC 2003"},ji_7:{frequencies:[261.6255653006,290.69507255622,318.93402246168,348.83408706747,392.4383479509,429.2294430713,470.92601754108,523.2511306012],description:"7-limit rational interpretation of 7-tET. OdC"},ji_7a:{frequencies:[261.6255653006,287.78812183066,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Superparticular approximation to 7-tET. Op de Coul, 1998"},ji_8coh:{frequencies:[261.6255653006,286.99041781007,312.35527031954,339.96223546814,370.00947616612,405.83764015148,441.71144237774,480.75585116768,523.2511306012],description:"Differential coherent 8-tone scale, OdC, 2003"},ji_8coh3:{frequencies:[261.6255653006,277.97716313189,302.50455987882,327.03195662575,359.73515228832,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Differential fully coherent 8-tone scale, OdC, 2003"},ji_9coh:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Differentially coherent 9-tone scale"},ji_ri24a:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,301.87565226992,310.68035879446,319.76457981184,329.87571277032,340.11323489078,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,402.50086969323,414.99227599406,428.11456140098,440.63253103259,453.48431318771,465.11211608996,479.64686971777,494.18162334558,508.71637697339,523.2511306012],description:"M. Schulter, just/rational intonation system - with circulating 24-note set"},jioct12:{frequencies:[261.6255653006,272.52663052146,282.55561052465,302.80736724606,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"12-tone JI version of Messiaen's octatonic scale, Erlich & Par\xEF\xBF\xBDzek"},"jobin-bach":{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.76836826904,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,464.6525521713,489.02683710225,523.2511306012],description:"Emile Jobin, WTC temperament after Bach's signet"},"johnson-secor_rwt":{frequencies:[261.6255653006,276.16031892841,293.03678286293,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.52992584916,414.24047839262,438.40450629885,465.11211608996,490.95167809495,523.2511306012],description:"Johnson/Secor proportional-beating well-temperament with five 24/19s."},johnson_44:{frequencies:[261.6255653006,265.7783520514,269.99705605222,274.2827236086,278.63641763414,283.05921791404,287.55222124002,292.11654190835,296.75331210627,301.46368356757,306.24882108355,311.17820103386,316.11753722951,321.13527558179,326.23266245367,331.4109583385,336.67144939063,342.01544029518,347.44425644654,352.9592442771,358.56177366235,364.2532300084,370.03502692537,375.90859839047,381.87540114246,387.93691728375,394.09464571975,400.35011587045,406.70487919155,413.16051176499,419.71861468993,426.38081694263,433.14876596753,440.02414274758,447.00865248514,454.10402744924,461.31203006992,468.63444275836,476.07308421189,483.62979961065,491.30646309654,499.10497838378,507.02727962797,515.07533168556,523.2511306012],description:"Aaron Johnson, 44-tET approximation"},johnson_7:{frequencies:[261.6255653006,288.83389952765,318.87182567809,352.10227751942,388.71994014354,429.2294430713,473.86811641255,523.2511306012],description:"Aaron Johnson, 7-tET approximation"},johnson_eb:{frequencies:[261.6255653006,273.1678696521,292.40504357126,312.71949922989,327.03195662575,349.65487315468,365.50630446407,390.89937403737,408.78994578219,437.06859144336,467.84806971401,488.62421754671,523.2511306012],description:'Aaron Johnson, "1/4-comma tempered" equal beating C-G-D-A-E plus just thirds'},johnson_ratwell:{frequencies:[261.6255653006,276.16031892841,292.90688289089,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.49724879514,414.24047839262,438.30776524386,465.11211608996,490.95167809495,523.2511306012],description:"Aaron Johnson, rational well-temperament with five 24/19's"},johnson_temp:{frequencies:[261.6255653006,275.52965735686,292.50638298357,309.88336774144,327.03195662575,348.76230617841,367.55223824197,391.22154286826,413.09299784305,437.39914452994,464.92072007996,490.30891677011,523.2511306012],description:"Aaron Johnson, temperament with just 5/4, 24/19 and 19/15"},johnston:{frequencies:[261.6255653006,275.93321340298,294.32876096318,315.35224388912,327.03195662575,359.73515228832,367.91095120397,392.4383479509,401.35740131342,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Ben Johnston's combined otonal-utonal scale"},johnston_21:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Johnston 21-note just enharmonic scale"},johnston_22:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,353.19451315581,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Johnston 22-note scale from end of string quartet nr. 4"},johnston_25:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Johnston 25-note just enharmonic scale"},"johnston_6-qt":{frequencies:[261.6255653006,262.79353657426,266.47048317654,267.57160087561,271.31540105247,272.52663052146,277.4816601673,280.31310567921,284.23518205497,290.69507255622,294.32876096318,297.30177875068,299.7792935736,300.33547037059,305.22982618403,306.59245933664,310.07474405997,311.45900631024,316.53463456122,317.12189733406,319.76457981184,322.99452506247,327.03195662575,334.46450109452,339.14425131559,342.60490694126,348.83408706747,350.39138209902,355.29397756872,356.76213450082,361.75386806997,363.36884069528,367.91095120397,373.75080757229,381.53728273004,382.24514410802,387.59343007496,390.82337532559,392.4383479509,396.40237166758,399.70572476481,406.97310157871,408.78994578219,413.43299207996,420.46965851882,426.35277308246,436.04260883433,445.95266812602,452.19233508746,459.88868900496,465.11211608996,467.18850946536,475.68284600109,479.64686971777,484.4917875937,486.49381977384,490.54793493862,248.7057842981,498.33441009638,508.71637697339,516.79124009995,523.2511306012],description:"11-limit complete system from Ben Johnston's _6th Quartet_"},"johnston_6-qt_row":{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,350.39138209902,363.36884069528,399.70572476481,408.78994578219,436.04260883433,445.95266812602,490.54793493862,508.71637697339],description:`11-limit 'prime row' from Ben Johnston's "6th Quartet"`},johnston_81:{frequencies:[116.54094037952,117.99770213426,119.33792294863,119.89808681021,120.82964698549,121.39681289533,122.77564089365,122.91427305652,124.31033640482,124.45070146973,125.86421560988,127.43751830501,127.89129259755,128.03570110055,129.48993375502,131.10855792696,132.74741490105,134.25516331721,134.88534766148,135.93335285867,136.57141450725,138.12259600536,138.27855718859,139.84912845542,141.59724256112,142.26189011172,143.87770417225,145.6761754744,147.49712766783,149.17240368579,151.03705873186,151.74601611917,153.46955111706,155.38792050603,157.33026951235,159.11723059817,159.29689788126,161.10619598065,161.86241719378,163.70085452487,163.8856974087,165.74711520643,165.93426862631,167.81895414651,169.91669107334,170.71426813406,172.6532450067,174.81141056928,176.9965532014,179.00688442294,179.84713021531,181.24447047823,182.095219343,184.16346134048,184.37140958479,186.46550460723,188.79632341482,189.68252014896,191.15627745751,191.83693889633,194.23490063253,196.66283689044,198.89653824771,199.12112235157,199.83014468368,201.38274497581,202.32802149222,204.62606815608,204.85712176088,207.18389400804,207.41783578289,209.77369268314,212.39586384168,213.39283516758,215.81655625837,218.5142632116,221.24569150175,223.75860552868,226.55558809779,227.61902417875,230.2043266756,233.08188075904],description:"Johnston 81-note 5-limit scale of Sonata for Microtonal Piano"},jorgensen:{frequencies:[261.6255653006,269.51415085551,288.85811466493,309.59046173614,318.92511007349,352.12195684808,355.62605411908,388.77403176757,408.50706336067,429.24143792307,469.25139168707,473.92081401802,523.2511306012],description:"Jorgensen's 5&7 temperament"},jousse:{frequencies:[261.6255653006,276.90198715646,293.15566421679,311.51473523959,328.62702621286,349.28097970329,369.20264759391,391.76800554826,415.35298052707,439.0631553946,466.60176257857,492.27019703794,523.2511306012],description:"Temperament of Jean Jousse (1832)"},jousse2:{frequencies:[261.6255653006,277.21176919085,293.63180098233,311.16627887077,329.63881547742,349.36510452864,370.14670828388,392.04008509316,415.41939014292,440.0494382652,466.3511549761,494.0599599767,523.2511306012],description:"Jean Jousse's quasi-equal temperament"},quasi_5:{frequencies:[261.6255653006,302.26980244078,349.22823143301,391.99543598175,452.89298412314,523.2511306012],description:"Quasi-Equal 5-Tone in 24-tET, 5 5 4 5 5 steps"},quasi_9:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:'Quasi-Equal Enneatonic, Each "tetrachord" has 125 + 125 + 125 + 125 cents'},quint_chrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,348.83408706747,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Aristides Quintilianus' Chromatic genus"},oconnell:{frequencies:[261.6255653006,267.57429119961,272.27874977392,278.46970304972,283.3657217904,288.34782337261,294.90414810658,300.08911516052,305.36524364276,312.30850472426,317.79947295261,323.38698268281,330.74001416845,336.55504284097,344.20748191927,350.25929591231,356.41751010259,364.52157313929,370.93054700815,377.45220049416,386.03454097812,392.82175095637,399.72829510222,408.81713953112,416.00491024634,423.31905787312],description:"Walter O'Connell, Pythagorean scale of 25 octaves reduced by Phi. XH 15 (1993)"},oconnell_11:{frequencies:[261.6255653006,272.27874977392,288.34782337261,300.08911516052,312.30850472426,323.38698268281,344.20748191927,356.41751010259,370.93054700815,386.03454097812,408.81713953112,423.31905787312],description:"Walter O'Connell, 11-note mode of 25-tone scale"},oconnell_14:{frequencies:[261.6255653006,272.27874977392,283.3657217904,288.34782337261,300.08911516052,312.30850472426,323.38698268281,336.55504284097,344.20748191927,356.41751010259,370.93054700815,386.03454097812,399.72829510222,408.81713953112,423.31905787312],description:"Walter O'Connell, 14-note mode of 25-tone scale"},oconnell_7:{frequencies:[261.6255653006,283.3657217904,300.08911516052,323.38698268281,344.20748191927,370.93054700815,392.82175095637,423.31905787312],description:"Walter O'Connell, 7-note mode of 25-tone scale"},oconnell_9:{frequencies:[261.6255653006,278.46970304972,294.90414810658,305.36524364276,323.38698268281,344.20748191927,364.52157313929,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 9-tone mode of 25-tone scale"},oconnell_9a:{frequencies:[261.6255653006,272.27874977392,288.34782337261,305.36524364276,323.38698268281,344.20748191927,356.41751010259,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 7+2 major mode analogy for 25-tone scale"},octony_min:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Octony on Harmonic Minor, from Palmer on an album of Turkish music"},octony_rot:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Rotated Octony on Harmonic Minor"},octony_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,408.78994578219,420.46965851882,436.04260883433,523.2511306012],description:"Complex 10 of p. 115, an Octony based on Archytas's Enharmonic,"},octony_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,315.35224388912,324.36230800023,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,306.59245933664,315.35224388912,327.03195662575,348.83408706747,490.54793493862,523.2511306012],description:"Complex 5 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,420.46965851882,432.48307733364,448.50096908674,523.2511306012],description:"Complex 11 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans5:{frequencies:[261.6255653006,271.31540105247,279.06726965397,317.94773560837,327.03195662575,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 15 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans6:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,345.98646186692,348.83408706747,358.80077526939,523.2511306012],description:"Complex 14 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_u:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,356.76213450082,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"7)8 octony from 1.3.5.7.9.11.13.15, 1.3.5.7.9.11.13 tonic (subharmonics 8-16)"},odd1:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"ODD-1"},odd2:{frequencies:[261.6255653006,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"ODD-2"},oettingen:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,301.39265122629,306.59245933664,310.42486507835,313.95067836072,317.87506184023,323.35923445661,327.03195662575,331.11985608357,334.88072358477,339.06673262958,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.50983809402,376.74081403286,383.2405741708,388.03108134794,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,452.08897683944,459.88868900496,465.11211608996,470.92601754108,476.81259276034,485.03885168492,490.54793493862,496.67978412536,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"von Oettingen's Orthotonophonium tuning"},oettingen2:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"von Oettingen's Orthotonophonium tuning with central 1/1"},ogr10:{frequencies:[261.6255653006,264.15640940857,271.89678302796,296.5055443788,342.56848033562,359.46139971304,411.32572372413,440,484.46499093218,513.27277840175,523.2511306012],description:"Optimal Golomb Ruler of 10 segments, length 72"},ogr10a:{frequencies:[261.6255653006,264.15640940857,285.30470202322,314.13668154225,329.62755691287,352.60650301302,431.60923940535,448.5538823653,457.27406033445,508.3551866238,523.2511306012],description:"2nd Optimal Golomb Ruler of 10 segments, length 72"},ogr11:{frequencies:[261.6255653006,265.92749183559,274.74472021414,318.1829357186,331.4244391468,362.52783176564,371.50609336774,409.69842558521,455.51656649021,482.27514684959,486.22402266421,523.2511306012],description:"Optimal Golomb Ruler of 11 segments, length 85"},ogr12:{frequencies:[261.6255653006,265.06964174786,270.3209511875,308.09015504092,333.2396629384,346.57411320722,384.79959982017,413.49815209867,456.11269186454,468.20039948765,496.58195036371,499.83980314828,523.2511306012],description:"Optimal Golomb Ruler of 12 segments, length 106"},ogr2:{frequencies:[261.6255653006,329.62755691287,523.2511306012],description:"Optimal Golomb Ruler of 2 segments, length 3"},ogr3:{frequencies:[261.6255653006,293.66476791741,415.30469757995,523.2511306012],description:"Optimal Golomb Ruler of 3 segments, length 6"},ogr4:{frequencies:[261.6255653006,278.64197723942,336.62443200122,461.29362042034,523.2511306012],description:"Optimal Golomb Ruler of 4 segments, length 11"},ogr4a:{frequencies:[261.6255653006,296.76515515861,406.67242132093,433.12283887627,523.2511306012],description:"2nd Optimal Golomb Ruler of 4 segments, length 11"},ogr5:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,426.7484383229,523.2511306012],description:"Optimal Golomb Ruler of 5 segments, length 17"},ogr5a:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,482.27514684959,523.2511306012],description:"2nd Optimal Golomb Ruler of 5 segments, length 17"},ogr5b:{frequencies:[261.6255653006,272.51337835337,362.52783176564,426.7484383229,463.0066556268,523.2511306012],description:"3rd Optimal Golomb Ruler of 5 segments, length 17"},ogr5c:{frequencies:[261.6255653006,272.51337835337,362.52783176564,409.69842558521,444.50800708553,523.2511306012],description:"4th Optimal Golomb Ruler of 5 segments, length 17"},ogr6:{frequencies:[261.6255653006,268.98086109226,292.31087910123,345.21700307457,430.94493093825,495.02573326308,523.2511306012],description:"Optimal Golomb Ruler of 6 segments, length 25"},ogr6a:{frequencies:[261.6255653006,276.5429423948,284.31762274025,345.21700307457,407.69874723177,468.32288027948,523.2511306012],description:"2nd Optimal Golomb Ruler of 6 segments, length 25"},ogr6b:{frequencies:[261.6255653006,268.98086109226,354.92237405774,407.69874723177,443.06044202496,495.02573326308,523.2511306012],description:"3rd Optimal Golomb Ruler of 6 segments, length 25"},ogr6c:{frequencies:[261.6255653006,268.98086109226,317.66442301495,354.92237405774,455.51656649021,495.02573326308,523.2511306012],description:"4th Optimal Golomb Ruler of 6 segments, length 25"},ogr6d:{frequencies:[261.6255653006,276.5429423948,317.66442301495,375.1593523779,468.32288027948,481.48922855473,523.2511306012],description:"5th Optimal Golomb Ruler of 6 segments, length 25"},ogr7:{frequencies:[261.6255653006,267.01398215014,283.85429714132,314.3146261019,355.21191871351,409.69842558521,502.34551296122,523.2511306012],description:"Optimal Golomb Ruler of 7 segments, length 34"},ogr8:{frequencies:[261.6255653006,265.77967818767,283.06627815664,316.06708432391,387.90015179087,400.3161696196,454.08364189083,499.09751029017,523.2511306012],description:"Optimal Golomb Ruler of 8 segments, length 44"},ogr9:{frequencies:[261.6255653006,264.94361147373,282.17583275232,296.76515515861,349.59519124833,363.06573983159,401.57942110183,438.61588607285,510.2272282764,523.2511306012],description:"Optimal Golomb Ruler of 9 segments, length 55"},oldani:{frequencies:[261.6255653006,272.52663052146,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"This scale by Norbert L. Oldani appeared in Interval 5(3), p.10-11"},oljare:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Tampere" (2001)'},oljare17:{frequencies:[261.6255653006,272.51337835337,320.78822215662,334.13814720468,393.32961502355,409.69842558521,426.7484383229,502.34551296122,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Fafner" (2001), MOS in 17-tET'},olympos:{frequencies:[261.6255653006,279.06726965397,348.83408706747,372.08969287196,465.11211608996,523.2511306012],description:"Scale of ancient Greek flutist Olympos, 6th century BC as reported by Partch"},opelt:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friederich Wilhelm Opelt 19-tone"},organ1373a:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 ficta semitones (Eb-G#)"},organ1373b:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 accidental semitones (Eb-G#)"},ragib:{frequencies:[261.6255653006,269.99542342683,281.01564479119,288.12007609225,294.32876096318,303.49446183192,311.45900631024,323.77767743764,335.77702597132,341.99420300732,348.83408706747,360.36579242507,371.06455309218,381.37837507376,392.4383479509,407.46331920162,417.22825371678,432.79663407874,450.28451247858,458.15534711532,465.11211608996,476.50902003141,487.19844562495,503.12608711654,523.2511306012],description:"Idris Ragib Bey, vol.5 d'Erlanger, p 40. Idris Rag'ib Bey"},ragib7:{frequencies:[261.6255653006,270.30192333353,281.29980781121,288.32205155576,294.32876096318,303.74668805875,311.45900631024,324.36230800023,336.37572681506,341.71502406609,348.83408706747,360.4025644447,370.6997805717,381.53728273004,392.4383479509,406.97310157871,417.13259773693,432.48307733364,450.69091522486,457.84473927605,465.11211608996,476.92160341255,486.65469735975,502.32108537715,523.2511306012],description:"7-limit version of Idris Rag'ib Bey scale"},"rameau-flat":{frequencies:[261.6255653006,276.01120901503,292.50629850443,312.00666699279,327.03195662575,349.91920725962,366.20974703841,391.22137338448,415.30469757995,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:'Rameau bemols, see Pierre-Yves Asselin in "Musique et temperament"'},"rameau-gall":{frequencies:[261.6255653006,274.65078342868,292.50627485027,310.49874388777,327.03195662575,349.91912034749,366.20104475463,391.22147055517,412.61639318626,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Rameau's temperament, after Gallimard (1st solution)"},"rameau-merc":{frequencies:[261.6255653006,273.37431312998,292.50627485027,308.72950296259,327.03195662575,348.83408706747,365.63284274659,391.22147055517,409.55238583376,437.39890198442,464.53468854848,489.02683710225,523.2511306012],description:"Rameau's temperament, after Mercadier"},"rameau-minor":{frequencies:[261.6255653006,294.32876096318,313.95067836072,353.19451315581,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Rameau's systeme diatonique mineur on E. Asc. 4-6-8-9, desc. 9-7-5-4"},"rameau-nouv":{frequencies:[261.6255653006,275.98004852257,292.50627485027,311.49614460359,327.03195662575,349.91912034749,367.37127028704,391.22147055517,414.64857675456,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Temperament by Rameau in Nouveau Systeme (1726)"},"rameau-sharp":{frequencies:[261.6255653006,273.37431312998,292.50629850443,308.54983514133,327.03195662575,348.83408706747,365.63293356166,391.22137338448,409.42528169498,437.39882871549,464.33633889105,489.02679755603,523.2511306012],description:'Rameau dieses, see Pierre-Yves Asselin in "Musique et temperament"'},rameau:{frequencies:[261.6255653006,275.07757335026,292.50629850443,310.73186404381,327.03195662575,349.91920725962,366.77009798369,391.22137338448,412.61635981914,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:"Rameau's modified meantone temperament (1725)"},ramis:{frequencies:[261.6255653006,275.93321340298,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monochord of Ramos de Pareja (Ramis de Pareia), Musica practica (1482). Carlos: Switched on Bach"},rapoport_8:{frequencies:[261.6255653006,297.86386736488,316.53463456122,336.37572681506,382.96782946913,406.97310157871,432.48307733364,492.38720931745,523.2511306012],description:"Paul Rapoport, cycle of 14/9 close to 8 out of 11-tET, XH 13, 1991"},rast_moha:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Rast + Mohajira (Dudon) 4 + 3 + 3 Rast and 3 + 4 + 3 Mohajira tetrachords"},rat_dorenh:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,418.60090448096,426.35277308246,523.2511306012],description:"Rationalized Schlesinger's Dorian Harmonia in the enharmonic genus"},rat_hypodenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,389.39619021485,398.6675280771,523.2511306012],description:"1+1 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh2:{frequencies:[261.6255653006,270.06509966514,288.69027895239,348.83408706747,380.54627680087,389.39619021485,408.39112632289,523.2511306012],description:"1+2 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh3:{frequencies:[261.6255653006,270.06509966514,299.00064605783,348.83408706747,380.54627680087,389.39619021485,418.60090448096,523.2511306012],description:"1+3 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,380.54627680087,386.4008349055,392.4383479509,523.2511306012],description:"1+1 rationalized hexachromatic/hexenharmonic genus derived from K.S.'Bastard'"},rat_hypodhex2:{frequencies:[261.6255653006,267.19206668997,279.06726965397,348.83408706747,380.54627680087,386.4008349055,398.6675280771,523.2511306012],description:"1+2 rat. hexachromatic/hexenharmonic genus derived from K.S.'s 'Bastard' Hypodo"},rat_hypodhex3:{frequencies:[261.6255653006,267.19206668997,285.40970760065,348.83408706747,380.54627680087,386.4008349055,405.0976494977,523.2511306012],description:"1+3 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex4:{frequencies:[261.6255653006,267.19206668997,292.04714266113,348.83408706747,380.54627680087,386.4008349055,411.73859457144,523.2511306012],description:"1+4 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex5:{frequencies:[261.6255653006,267.19206668997,299.00064605783,348.83408706747,380.54627680087,386.4008349055,418.60090448096,523.2511306012],description:"1+5 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex6:{frequencies:[261.6255653006,273.00058987889,292.04714266113,348.83408706747,380.54627680087,392.4383479509,411.73859457144,523.2511306012],description:"2+3 rationalized hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' hypod"},rat_hypodpen:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,380.54627680087,387.59343007496,394.90651366128,523.2511306012],description:"1+1 rationalized pentachromatic/pentenharmonic genus derived from K.S.'s 'Bastar"},rat_hypodpen2:{frequencies:[261.6255653006,268.33391312882,282.83844897362,348.83408706747,380.54627680087,387.59343007496,402.50086969323,523.2511306012],description:"1+2 rationalized pentachromatic/pentenharmonic genus from K.S.'s 'Bastard' hyp"},rat_hypodpen3:{frequencies:[261.6255653006,268.33391312882,290.69507255622,348.83408706747,380.54627680087,387.59343007496,410.39304360878,523.2511306012],description:"1+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen4:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,387.59343007496,418.60090448096,523.2511306012],description:"1+4 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen5:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,380.54627680087,394.90651366128,410.39304360878,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen6:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,394.90651366128,418.60090448096,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodtri:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,380.54627680087,392.4383479509,405.0976494977,523.2511306012],description:"rationalized first (1+1) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypodtri2:{frequencies:[261.6255653006,273.00058987889,299.00064605783,348.83408706747,380.54627680087,392.4383479509,418.60090448096,523.2511306012],description:"rationalized second (1+2) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypolenh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,410.39304360878,418.60090448096,523.2511306012],description:"Rationalized Schlesinger's Hypolydian Harmonia in the enharmonic genus"},rat_hypopchrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the chromatic genus"},rat_hypopenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the enharmonic genus"},rat_hypoppen:{frequencies:[261.6255653006,273.79419624481,294.32876096318,362.25078272391,392.4383479509,405.97070477679,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the pentachromatic genus"},rat_hypoptri:{frequencies:[261.6255653006,271.68808704293,282.55561052465,362.25078272391,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in first trichromatic genus"},rat_hypoptri2:{frequencies:[261.6255653006,271.68808704293,294.32876096318,362.25078272391,392.4383479509,403.65087217807,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in second trichromatic genus"},rectsp10:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,340.11323489078,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10"},rectsp10a:{frequencies:[261.6255653006,275.39533189537,277.01530443593,279.06726965397,281.75060878526,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10 union with inversion"},rectsp11:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,523.2511306012],description:"Rectangle minimal beats spectrum of order 11"},rectsp12:{frequencies:[261.6255653006,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,414.24047839262,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,501.44900015948,523.2511306012],description:"Rectangle minimal beats spectrum of order 12"},rectsp6:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 (=songlines)"},rectsp6a:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 union with inversion"},rectsp7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7"},rectsp7a:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7 union with inversion"},rectsp8:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8"},rectsp8a:{frequencies:[261.6255653006,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8 union with inversion"},rectsp9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9"},rectsp9a:{frequencies:[261.6255653006,277.01530443593,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9 union with inversion"},redfield:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Redfield New Diatonic"},reinhard:{frequencies:[261.6255653006,277.01530443593,294.32876096318,309.81974838229,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Reinhard 19-limit superparticular"},reinhard17:{frequencies:[261.6255653006,277.01530443593,277.97716313189,286.94416839421,292.40504357126,296.50897400735,307.79478270659,317.68818643644,338.57426097725,342.12573923925,369.35373924791,400.13321751856,404.33041910093,430.91269578922,444.76346101102,477.08191319521,492.47165233054,523.2511306012],description:`Reinhard's Harmonic-17 tuning for "Tresspass", 1998`},renteng1:{frequencies:[261.6255653006,285.40970760065,313.15788183285,391.64553850062,426.52890806662,523.2511306012],description:"Gamelan Renteng from Chileunyi (Tg. Sari). 1/1=330 Hz"},renteng2:{frequencies:[261.6255653006,294.32876096318,311.77048523333,396.07199334683,425.86840190162,523.2511306012],description:"Gamelan Renteng from Chikebo (Tg. Sari). 1/1=360 Hz"},renteng3:{frequencies:[261.6255653006,278.97471276149,312.97903559457,379.60005211265,409.44065404912,468.42785143649,523.2511306012],description:"Gamelan Renteng from Lebakwangi (Pameungpeuk). 1/1=377 Hz"},renteng4:{frequencies:[261.6255653006,296.45730715573,311.93819010347,397.0826586675,424.17395032031,523.2511306012],description:"Gamelan Renteng Bale` bandung from Kanoman (Cheribon). 1/1=338 Hz"},robot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Dead Robot (see lattice)"},robot_live:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,376.74081403286,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Live Robot"},romieu:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu's Monochord, Memoire theorique & pratique (1758)"},romieu_inv:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu inverted, Pure (just) C minor in Wilkinson: Tuning In"},rosati_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Dante Rosati, JI guitar tuning"},rosati_21a:{frequencies:[261.6255653006,280.31310567921,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,488.36772189445,523.2511306012],description:"Alternative version of rosati_21 with more tetrads"},rousseau:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Rousseau's Monochord, Dictionnaire de musique (1768)"},rousseauw:{frequencies:[261.6255653006,276.81658657456,293.31219032635,311.14941643136,328.83652403056,349.33732971591,369.19521129916,391.76004912942,415.1051791302,439.20783490896,466.32059269121,492.40223109551,523.2511306012],description:"Jean-Jacques Rousseau's temperament (1768)"},rsr_12:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"RSR - 7 limit JI"},"rvf-1":{frequencies:[261.6255653006,272.14556467328,280.20095193414,292.09989854643,304.19649364034,313.29104303136,326.0297292803,340.21856244106,350.08660369014,364.11104988921,374.67209286633,390.97784457618,406.87534373272,419.03967825638,436.39317047385,454.92493848389,468.39051363853,487.22455955444,508.94280091833,523.2511306012],description:"D-A 695 cents, the increment is 0.25 cents, interval range 49.5 to 75.5"},"rvf-2":{frequencies:[261.6255653006,272.87751533003,278.75612859219,292.27711197479,305.71136588092,312.51386339015,326.29348693151,342.97106251658,349.87433921674,364.79522794952,372.13777859784,391.13596290168,408.38225803817,417.4934384938,436.65792486176,457.83788806384,467.7011114131,487.81592522452,513.9947144098,523.2511306012],description:"695 cents, 0.607 cents, 31-90 cents, C-A# is 7/4."},"rvf-3":{frequencies:[261.6255653006,272.98787180262,278.19314238431,292.29399505039,306.11778315204,312.24320803046,326.25579420701,343.90343447252,349.81371586656,364.81629995674,371.08598724028,391.15855645336,408.71263878415,416.89098941754,436.60748307387,458.73792719255,467.48503753613,487.78774868553,515.83876338215,523.2511306012],description:"694.737, 0.082, 25-97, the fifth E#-B# is 3/2."},majmin:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Malcolm & Marpurg 4 (Yamaha major & minor) mixed. Mersenne/Ban without D#"},major_clus:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Chalmers' Major Mode Cluster"},major_wing:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Chalmers' Major Wing with 7 major and 6 minor triads"},malcolm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Malcolm's Monochord (1721), and C major in Yamaha synths, Wilkinson: Tuning In"},malcolm2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Malcolm 2"},malcolm_ap:{frequencies:[261.6255653006,279.47938236087,293.66476791741,313.97746652079,326.1838132033,349.22823143301,369.99442271164,391.99543598175,419.68935090103,436.0054062308,466.16376151809,489.82458627646,523.2511306012],description:"Best approximations in mix of all ETs from 12-23 to Malcolm's Monochord"},malcolm_me:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Malcolm's Mid-East"},malcolme:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,496.11959049595,523.2511306012],description:"Most equal interval permutation of Malcolm's Monochord"},malcolme2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Inverse most equal interval permutation of Malcolm's Monochord"},malcolms:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,369.99442271164,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical version of Malcolm's Monochord and Albion scale"},malerbi:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Luigi Malerbi's well-temperament nr.1 (1794) (nr.2 = Young)"},malgache:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,353.19451315581,376.74081403286,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,392.4383479509,408.78994578219,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malkauns:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"Raga Malkauns, inverse of prime_5"},mambuti:{frequencies:[261.6255653006,294.34406205295,331.72862856444,394.26624244126,466.16376151809,525.06772693396,590.39077962608,792.18471060794,999.82182774046],description:"African Mambuti Flutes (aerophone; vertical wooden; one note each)"},mandelbaum5:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,454.2110508691,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Mandelbaum's 5-limit 19-tone scale, kleismic detempered circle of minor thirds"},mandelbaum7:{frequencies:[261.6255653006,272.52663052146,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Mandelbaum's 7-limit 19-tone scale"},marimba1:{frequencies:[261.6255653006,284.4818984792,319.50463429683,342.83241505062,371.92288545737,411.72190027758,457.09800545097,500.48847822777,547.68138927822,612.97866327818,651.68292300609,728.11694797601,807.8963375694,903.69557412727,1013.19282257599,1069.7265813247,1225.95732655636,1303.36584601218],description:"Marimba of the Bakwese, SW Belgian Congo (Zaire). 1/1=140.5 Hz"},marimba2:{frequencies:[261.6255653006,279.11058864149,318.03161540472,343.03050002254,379.95718438213,421.58889248327,458.6849347701,519.33670373121,571.2689787911,613.68721319418,694.83488613378,761.23234162637,846.59395682498,953.56868388592,1049.52904699774,1145.8425062572,1271.3918647407,1389.66977226756],description:"Marimba of the Bakubu, S. Belgian Congo (Zaire). 1/1=141.5 Hz"},marimba3:{frequencies:[261.6255653006,296.73398952435,348.2210758395,420.13030572059,476.50902003141,518.73708886244,603.49292471609,696.44215167899,840.26061144117,953.01804006282,1037.47417772488],description:"Marimba from the Yakoma tribe, Zaire. 1/1=185.5 Hz"},marion:{frequencies:[261.6255653006,269.91407136119,278.46532473603,287.28749371714,296.38899008685,305.77900572762,315.46632790985,325.46074015958,335.7715953476,346.4093067252,357.3838291689,368.70624618807,380.38737313392,392.4383479509,411.71310103548,431.93429139282,453.14890242083,475.40520223986,498.75490298644,523.2511306012],description:"scale with two different ET step sizes"},marion1:{frequencies:[261.6255653006,262.79353657426,272.52663052146,280.31310567921,286.15296204753,294.32876096318,305.22982618403,311.45900631024,327.03195662575,336.37572681506,343.38355445704,350.39138209902,367.91095120397,373.75080757229,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,476.92160341255,490.54793493862,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 1"},marion10:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,290.69507255622,296.75121990114,305.22982618403,317.94773560837,327.03195662575,339.14425131559,356.10146388137,363.36884069528,370.93902487643,381.53728273004,400.61414686654,406.97310157871,408.78994578219,423.93031414449,436.04260883433,445.12682985172,457.84473927605,474.80195184183,476.92160341255,484.4917875937,508.71637697339,523.2511306012],description:"Marion's 7-limit Scale # 10"},marion15:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,299.00064605783,313.95067836072,320.35783506196,327.03195662575,336.37572681506,353.19451315581,358.80077526939,360.4025644447,373.75080757229,384.42940207435,392.4383479509,403.65087217807,418.60090448096,420.46965851882,427.14378008261,448.50096908674,461.31528248922,470.92601754108,480.53675259294,504.56359022259,523.2511306012],description:"Marion's 7-limit Scale # 15"},marion19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,309.04519901133,313.95067836072,315.35224388912,327.03195662575,336.37572681506,343.38355445704,353.19451315581,366.27579142084,367.91095120397,373.75080757229,392.4383479509,403.65087217807,412.06026534844,420.46965851882,441.49314144476,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 19"},marion26:{frequencies:[261.6255653006,271.31540105247,279.06726965397,284.8811711051,293.02063313667,303.87324917877,305.22982618403,310.07474405997,325.57848126297,334.88072358477,341.85740532612,348.83408706747,366.27579142084,379.84156147346,390.69417751556,406.97310157871,418.60090448096,427.32175665765,434.10464168396,455.80987376816,465.11211608996,474.80195184183,488.36772189445,512.78610798918,523.2511306012],description:"Marion's 7-limit Scale # 26"},marissing:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Peter van Marissing, just scale, Mens en Melodie, 1979"},"marpurg-1":{frequencies:[261.6255653006,276.86979852503,294.32876096318,311.47852302926,329.62755691287,348.83408706747,370.83100115625,392.4383479509,415.30469757995,439.50340943686,467.21778431035,494.44133512215,523.2511306012],description:"Other temperament by Marpurg, 3 fifths 1/3 Pyth. comma flat"},"marpurg-t1":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg's temperament nr.1, Kirnbergersche Temperatur (1766)"},"marpurg-t11":{frequencies:[261.6255653006,278.12325072816,294.32876096318,311.47852302926,331.11985608357,348.83408706747,371.66947115233,392.4383479509,416.24372513446,441.49314144476,466.16376151809,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.11, 6 tempered fifths"},"marpurg-t12":{frequencies:[261.6255653006,279.06706247425,294.66131982972,310.42509491746,330.74614861362,349.22823143301,372.08941681833,392.88175996935,418.60059350213,441.99197952365,465.63764214343,496.11922267243,523.2511306012],description:"Marpurg's temperament nr.12, 4 tempered fifths"},"marpurg-t2":{frequencies:[261.6255653006,278.75210322491,294.32876096318,313.59611581451,331.11985608357,348.83408706747,371.66947115233,392.4383479509,418.12815462835,441.49314144476,470.39417348663,495.55929511749,523.2511306012],description:"Marpurg's temperament nr.2, 2 tempered fifths, Neue Methode (1790)"},"marpurg-t3":{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,331.11985608357,348.83408706747,368.74309237173,392.4383479509,414.83597850347,441.49314144476,465.11211608996,491.65745674141,523.2511306012],description:"Marpurg's temperament nr.3, 2 tempered fifths"},"marpurg-t4":{frequencies:[261.6255653006,276.86979852503,294.32876096318,310.07474405997,331.11985608357,348.83408706747,369.15973155124,392.4383479509,415.30469757995,441.49314144476,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.4, 2 tempered fifths"},"marpurg-t5":{frequencies:[261.6255653006,277.80935667884,294.32876096318,312.53552595124,331.11985608357,348.83408706747,370.41247575694,392.4383479509,416.71403480995,441.49314144476,468.80328869252,493.88330125613,523.2511306012],description:"Marpurg's temperament nr.5, 2 tempered fifths"},"marpurg-t7":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.07474405997,329.62755691287,348.83408706747,369.15973155124,390.66969766777,415.30469757995,439.50340943686,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.7, 3 tempered fifths"},"marpurg-t8":{frequencies:[261.6255653006,277.49581689502,293.33333347996,311.12698372208,329.99999983505,348.83408706747,369.99442271164,391.11111150212,414.83597850347,440,466.69047534984,493.32589719545,523.2511306012],description:"Marpurg's temperament nr.8, 4 tempered fifths"},"marpurg-t9":{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,350.01785633742,371.24999944327,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.9, 4 tempered fifths"},marpurg:{frequencies:[261.6255653006,277.49581689502,293.83071040301,311.12698372208,329.99999983505,349.42557141756,369.99442271164,392.4383479509,415.53937569366,440,466.69047534984,494.16238213869,523.2511306012],description:"Marpurg, Versuch ueber die musikalische Temperatur (1776), p. 153"},marpurg1:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg's Monochord no.1 (1776)"},marpurg3:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg 3"},marpurg4:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg 4, also Yamaha Pure Minor"},marsh:{frequencies:[261.6255653006,275.50659558095,293.15632631094,311.93674864629,328.48713220126,349.53094576004,368.07595926604,391.65594491223,412.43597848639,438.85779226656,466.97226207056,491.74834273545,523.2511306012],description:"John Marsh's meantone temperament (1809)"},marsh2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"John Marsh's quasi-equal temperament (1840)"},mavila12:{frequencies:[261.6255653006,256.98292999787,287.53945699376,321.72930260925,316.02010771872,353.59644178868,347.32175377489,388.62000642034,381.72381344999,427.11263899087,477.89842030218,469.41794908116,525.2340355968],description:"A 12-note mavila scale (for warping meantone-based music)"},mavila9:{frequencies:[261.6255653006,287.53945699376,316.02010771872,321.72930260925,353.59644178868,388.62000642034,427.11263899087,434.82882549415,477.89842030218,525.2340355968],description:"9-note scale of mavila temperament (TOP tuning)"},mavlim1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"First 27/25&135/128 scale"},mbira_banda:{frequencies:[261.6255653006,291.13134764929,327.53979283172,368.50142299854,404.88256627495,443.57258128492,480.10063929961,555.00605988575],description:"Mubayiwa Bandambira's tuning of keys R2-R9 from Berliner: The soul of mbira."},mbira_banda2:{frequencies:[261.6255653006,321.16993719469,360.29289210659,380.8360868427,422.32008370967,461.34206956593,587.32953583482,513.96502576833,761.67217368541,711.48673390068,849.04255025658,936.10488897708,1046.50286568598,633.49659152295,1055.60951665979,1174.65975017952,1321.5609185619,1486.83332446121,1633.62433483289,1789.73120457747,1937.11498804338,2239.34414798534],description:"Mubayiwa Bandambira's Mbira DzaVadzimu tuning B1=114 Hz"},mbira_gondo:{frequencies:[261.6255653006,315.28798447451,345.21700307457,379.51849407657,422.56409582244,461.07566488503,564.05539604512,516.94239487354,778.57545143809,697.24717811406,842.69088701475,926.42243447898,1029.11884353824,628.3943418294,1040.47545270591,1153.813137635,1308.64724593201,1415.59600512246,1572.51770682594,1715.83353717518,1883.05646656025,2103.91477035149],description:"John Gondo's Mbira DzaVadzimu tuning B1=122 Hz"},mbira_kunaka:{frequencies:[261.6255653006,292.98704147282,325.27731021818,350.44066402496,386.59871897734,434.19311733646,479.82340237272,507.76825077597],description:"John Kunaka's mbira tuning of keys R2-R9"},mbira_kunaka2:{frequencies:[261.6255653006,340.26769547546,358.83903996308,405.11650317313,448.98591596033,490.75518955849,622.61349925697,541.70354187177,817.28364083393,724.3415782324,907.35693646861,997.5144154576,1094.73088724383,673.88551872153,1085.91380691742,1216.08403680913,1350.10935126711,1454.55340013417,1604.63250673428,1802.17976955899,1991.5747030301,2107.56373750553],description:"John Kunaka's Mbira DzaVadzimu tuning B1=113 Hz"},mbira_mude:{frequencies:[261.6255653006,289.28740724512,309.15639683494,364.68988616898,372.56793743951,408.17001145418,507.1819925915,459.74594725879,689.63684605432,610.50517472746,760.79276355093,824.39562982862,887.65774573556,562.75365576207,888.68380073365,1015.53708814899,1126.80895076279,1206.28956516212,1365.00817887311,1507.58874420517,1666.02447560859,1935.99638964471],description:"Hakurotwi Mude's Mbira DzaVadzimu tuning B1=132 Hz"},mbira_mujuru:{frequencies:[261.6255653006,281.37682788104,301.05008478933,329.43721154897,394.9500460767,419.64523240241,533.01280425363,488.77489658044,700.88132804992,602.10016957865,765.19999119503,809.29752893,942.6160133907,577.57308891646,937.72844143307,1046.50286568598,1145.18149427149,1243.7900049313,1411.51350174391,1540.15576038017,1658.34356815416,1904.9365287586],description:"Ephat Mujuru's Mbira DzaVadzimu tuning, B1=106 Hz"},mbira_zimb:{frequencies:[261.6255653006,276.86260193655,305.95868600104,343.62544191138,379.08031027329,408.40584780369,453.41648894489,507.76825077597],description:"Shona mbira scale"},mboko_bow:{frequencies:[261.6255653006,347.61817721989,375.37611551499],description:"African Mboko Mouth Bow (chordophone, single string, plucked)"},mboko_zither:{frequencies:[261.6255653006,294.68429813772,319.3201344739,354.92237405774,396.55020354877,418.67676528474,472.67116512585,513.07516347663],description:"African Mboko Zither (chordophone; idiochordic palm fibre, plucked)"},mcclain:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,331.11985608357,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,510.98743222773,523.2511306012],description:"McClain's 12-tone scale, see page 119 of The Myth of Invariance"},mcclain_18:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,319.36714514233,327.03195662575,331.11985608357,344.91651675372,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,441.49314144476,459.88868900496,490.54793493862,496.67978412536,510.98743222773,523.2511306012],description:"McClain's 18-tone scale, see page 143 of The Myth of Invariance"},mcclain_8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,523.2511306012],description:"McClain's 8-tone scale, see page 51 of The Myth of Invariance"},mccoskey_22:{frequencies:[261.6255653006,270.06509966514,279.06726965397,287.78812183066,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,382.37582620857,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"31-limit rational interpretation of 22-tET, Marion McCoskey"},mclaren_bar:{frequencies:[261.6255653006,281.77400528964,292.14326370913,304.76756192248,325.50548568708,328.66136118639,353.45752508165,360.67039921732,379.1552038283,397.63971531932,405.75513620619,436.411067852,476.98680497297,521.16951219839],description:"Metal bar scale. see McLaren, Xenharmonicon 15, pp.31-33"},mclaren_cps:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,367.91095120397,392.4383479509,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"2)12 [1,2,3,4,5,6,8,9,10,12,14,15] a degenerate CPS"},mclaren_harm:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012],description:'from "Wilson part 9", claimed to be Schlesingers Dorian Enharmonic, prov. unkn'},mclaren_rath1:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,372.08969287196,380.54627680087,389.39619021485,398.6675280771,492.47165233054,507.3950357345,523.2511306012],description:"McLaren Rat H1"},mclaren_rath2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,380.54627680087,389.39619021485,398.6675280771,440.63253103259,452.54151835779,465.11211608996,523.2511306012],description:"McLaren Rat H2"},mean10:{frequencies:[261.6255653006,272.18829429226,292.14313377277,313.56091500001,326.220453695,350.13653284039,364.27275363262,390.97854693193,406.76370320307,436.58461973079,468.59178605305,487.51045723915,523.2511306012],description:"3/10-comma meantone scale"},mean11:{frequencies:[261.6255653006,272.83457350033,292.34115464648,313.24237654315,326.6628419965,350.01792709981,365.01399145768,391.11103243201,407.86767761879,437.02858581415,468.2743796482,488.33699124025,523.2511306012],description:"3/11-comma meantone scale. A.J. Ellis no. 10"},mean11ls_19:{frequencies:[261.6255653006,272.93479580544,280.25721516838,292.37183188538,305.01012622427,313.1930753928,326.73140514978,340.85495140859,349.99956372811,365.12891753666,374.92476290643,391.13155279262,408.03891236124,418.98596425085,437.09738047696,455.99169236578,468.2252457596,488.46511500326,509.57988860269,523.2511306012],description:"Least squares appr. to 3/2, 5/4, 7/6, 15/14 and 11/8, Petr Par\xEF\xBF\xBDzek"},mean13:{frequencies:[261.6255653006,273.83184954717,292.64606374809,312.75295135888,327.34460995374,349.8355370417,366.15730590163,391.31494185909,409.57195510156,437.7124891801,467.78648270341,489.61131479929,523.2511306012],description:"3/13-comma meantone scale"},mean14:{frequencies:[261.6255653006,274.22463192287,292.76593693997,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"3/14-comma meantone scale (Giordano Riccati, 1762)"},mean14_15:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,417.8586951835,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"15 of 3/14-comma meantone scale"},mean14_19:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,343.38964426558,349.76390952171,366.60744235102,373.41269440635,391.39507854003,410.24343789088,417.8586951835,437.98145930734,459.07327263526,467.59494724206,490.11285326462,513.71515101261,523.2511306012],description:"19 of 3/14-comma meantone scale"},mean14_7:{frequencies:[261.6255653006,292.76593693997,327.61283758281,349.76390952171,391.39507854003,437.98145930734,490.11285326462,523.2511306012],description:"Least squares appr. of 5L+2S to Ptolemy's Intense Diatonic scale"},mean14a:{frequencies:[261.6255653006,274.24690838881,292.77273178776,312.55000460003,327.62804498858,349.75985073129,366.63296888199,391.39962048672,410.28152481852,437.9967071602,467.58409501387,490.1412915133,523.2511306012],description:'fifth of sqrt(5/2)-1 octave "recursive" meantone, Paul Hahn'},mean16:{frequencies:[261.6255653006,274.864106667,292.9608347655,312.24903186879,328.04917632434,349.64754658398,367.34009701877,391.52533508436,411.33694767869,438.41888642025,467.28387071703,490.92894854125,523.2511306012],description:"3/16-comma meantone scale"},mean17:{frequencies:[261.6255653006,273.72412433093,292.61316553779,312.80569569783,327.2710181906,349.85520131118,366.03383354947,391.29294726693,409.38781813791,437.63868343995,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean17_17:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},mean17_19:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,342.40527209253,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,512.10885267608,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean18:{frequencies:[261.6255653006,272.71477685134,292.30447317753,313.30134186202,326.58087306932,350.03988839382,364.87661266094,391.0864943589,407.66301227525,436.94633423564,468.33314368944,488.18382342185,523.2511306012],description:"5/18-comma meantone scale (Smith). 3/2 and 5/3 eq. beat. A.J. Ellis no. 9"},mean19:{frequencies:[261.6255653006,273.06170311607,292.41066686775,313.13068664042,326.81820677503,349.97632128221,365.27443420834,391.15752841841,408.25574814862,437.18446858874,468.16306089008,488.62733218513,523.2511306012],description:"5/19-comma meantone scale, fifths beats three times third. A.J. Ellis no. 11"},mean19r:{frequencies:[261.6255653006,273.04332227389,292.40504357126,313.13971948727,326.80563693258,349.97968716666,365.25335892465,391.15376651139,408.22434232755,437.17185753972,468.17206422213,488.60384173026,523.2511306012],description:"Approximate 5/19-comma meantone with 19/17 tone, Petr Parizek, 2002"},mean23:{frequencies:[261.6255653006,274.15058593695,292.74334833321,312.59706303545,327.56228503462,349.77740346966,366.52259116395,391.37997903742,410.11684180717,437.93077103284,467.63102771476,490.01832104213,523.2511306012],description:"5/23-comma meantone scale, A.J. Ellis no. 4"},mean23six:{frequencies:[261.6255653006,273.11604376732,292.42729246507,313.10398392891,326.85537164611,349.96637341293,365.33674088125,391.16864715511,408.34860251967,437.22175336101,468.13644404983,488.69678846289,523.2511306012],description:"6/23-comma meantone scale"},mean25:{frequencies:[261.6255653006,272.66208311698,292.28833573479,313.32728859832,326.54481265413,350.04955123355,364.81618195011,391.07569872695,407.57299290994,436.91015056532,468.35900068872,488.11644468937,523.2511306012],description:"7/25-comma meantone scale, least square weights 3/2:0 5/4:1 6/5:1"},mean26:{frequencies:[261.6255653006,272.91754119498,292.36655103694,313.20156187458,326.7196004604,350.00272362315,365.10913291207,391.12802157824,408.00943064927,437.08553692506,468.23370304224,488.44305713046,523.2511306012],description:"7/26-comma meantone scale (Woolhouse 1835). Almost equal to meaneb742"},mean26_21:{frequencies:[261.6255653006,272.91754592428,280.26986822267,292.36655272572,304.98534036063,313.20156006546,326.71960423481,335.52133892506,340.8210986211,350.00272362315,365.10913712997,374.9450750913,391.12802157824,408.00943771953,419.00109777107,437.08553944976,455.95052092314,468.23370033762,488.44306277317,501.60158217053,509.52467838008,523.2511306012],description:"21 of 7/26-comma meantone scale (Woolhouse 1835)"},mean27:{frequencies:[261.6255653006,273.15429014256,292.43899158768,313.08519355925,326.88152513903,349.9593710588,365.38059276675,391.17647406766,408.41395592075,437.24799400905,468.11771609009,488.74567091648,523.2511306012],description:"7/27-comma meantone scale, least square weights 3/2:2 5/4:1 6/5:1"},mean29:{frequencies:[261.6255653006,273.57932033947,292.56893127899,312.87664195194,327.1720749345,349.88164908166,365.86785468743,391.26336919078,409.14031659695,437.53944680455,467.90980928584,489.28875967044,523.2511306012],description:"7/29-comma meantone scale, least square weights 3/2:4 5/4:1 6/5:1"},mean2sev:{frequencies:[261.6255653006,272.52663052146,292.24684137387,313.39402123097,326.45210604021,350.07440004945,364.66083404534,391.04793957621,407.34160211012,436.81711699543,468.42550014967,487.94322738789,523.2511306012],description:"2/7-comma meantone scale. Zarlino's temperament (1558). See also meaneb371"},mean2sev_15:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,350.07447082328,364.66081719444,391.04786051887,407.34165622677,419.34452602299,436.81710690282,468.42541627199,487.94330348661,523.2511306012],description:"15 of 2/7-comma meantone scale"},mean2sev_19:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,340.0543130973,350.07447082328,364.66081719444,375.40603866065,391.04786051887,407.34165622677,419.34452602299,436.81710690282,455.01770749831,468.42541627199,487.94330348661,508.27414914183,523.2511306012],description:"19 of 2/7-comma meantone scale"},mean2sev_31:{frequencies:[261.6255653006,264.72620698393,272.52663052146,280.55692507618,283.88190679319,292.24689370448,300.8583415146,304.42377254813,313.39402847191,317.10820138491,326.45203249943,336.07138073182,340.0543130973,350.07447082328,354.22315547012,364.66081719444,375.40603866065,379.85514366424,391.04786051887,395.6823437549,407.34165622677,419.34452602299,424.31412061457,436.81710690282,449.68851049921,455.01770749831,468.42541627199,473.97693555703,487.94330348661,502.32108537715,508.27414914183,523.2511306012],description:"31 of 2/7-comma meantone scale"},mean2seveb:{frequencies:[261.6255653006,274.26749945295,292.59076110537,312.44357330613,327.42660602987,349.76102048238,366.6169314736,391.04794861134,410.01084835752,437.49574139527,467.27496094916,489.74950989452,523.2511306012],description:'"2/7-comma" meantone with equal beating fifths. A.J. Ellis no. 8'},mean2sevr:{frequencies:[261.6255653006,272.52663052146,292.24289114742,313.39346366789,326.45152465405,350.07234194042,364.65868952128,391.04531121882,407.33886585294,436.81651812993,468.41855142334,487.93599106598,523.2511306012],description:"Rational approximation to 2/7-comma meantone, 1/1 = 262.9333"},mean9:{frequencies:[261.6255653006,274.03547926168,292.70827332867,306.59245933664,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"2/9-comma meantone scale, Lemme Rossi, Sistema musico (1666)"},mean94:{frequencies:[261.6255653006,268.79084150406,291.09659021292,315.25339315665,323.88740273232,350.76536842075,360.37196303797,390.27761906502,400.96635635801,434.24075936811,470.27645613296,483.15616342113,523.2511306012],description:"4/9-comma meantone scale"},mean9_15:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,418.0235894185,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"15 of 2/9-comma meantone scale"},mean9_19:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,343.0174228875,349.79835961887,366.39065074918,373.63364091796,391.35653176554,409.92008797511,418.0235894185,437.85206746661,458.62082212371,467.68706357679,489.87127257422,513.10776453427,523.2511306012],description:"19 of 2/9-comma meantone scale"},mean9_31:{frequencies:[261.6255653006,268.72322665693,274.03547926168,279.45274708261,287.03404351137,292.70827332867,298.49467410529,306.59245933664,312.65343270838,321.13524775754,327.48360691354,333.95746354843,343.0174228875,349.79835961887,359.28803828513,366.39065074918,373.63364091796,383.76997851754,391.35653176554,401.97367512027,409.92008797511,418.0235894185,429.36393755067,437.85181455341,446.50763144636,458.62082212371,467.68706357679,480.3749841712,489.87127257422,499.55528826613,513.10776453427,523.2511306012],description:"31 of 2/9-comma meantone scale"},meaneb1071:{frequencies:[261.6255653006,273.45959631537,292.5323192343,305.76452283047,327.09038632535,349.9034421565,365.73073124967,391.23900009103,408.93579686983,437.45744778434,457.24482979639,489.13584427285,523.2511306012],description:"Equal beating 7/4 = 3/2 same."},meaneb1071a:{frequencies:[261.6255653006,273.94115519525,292.67936294368,306.45675889694,327.41929816594,349.81553441422,366.28252094772,391.33731744348,409.75863641311,437.78732645584,458.39517452459,489.75074612717,523.2511306012],description:"Equal beating 7/4 = 3/2 opposite."},meaneb341:{frequencies:[261.6255653006,272.43747957464,292.21954801903,313.43802026715,326.39113133433,350.09085029289,364.55867287416,391.02956482064,407.18921698842,436.75579855003,468.46925117002,487.82916876009,523.2511306012],description:"Equal beating 6/5 = 5/4 same. Almost 4/15 Pyth. comma"},meaneb371:{frequencies:[261.6255653006,272.52577151658,292.24657972098,313.39444482621,326.45151771442,350.07455777399,364.65985037488,391.0477633913,407.34013625771,436.81652657765,468.42591953828,487.94213100406,523.2511306012],description:"Equal beating 6/5 = 3/2 same. Practically 2/7-comma (Zarlino)"},meaneb371a:{frequencies:[261.6255653006,269.83862220337,291.42039690163,314.72828847419,324.6081803116,350.57044084899,361.57569171511,390.49462500658,421.72650333798,434.96526321606,469.75391665508,484.50062400899,523.2511306012],description:"Equal beating 6/5 = 3/2 opposite. Almost 2/5-comma"},meaneb381:{frequencies:[261.6255653006,275.92799893014,293.28437056932,311.73248946737,328.77414682856,349.45463702831,368.55847249214,391.74146894101,416.38271791821,439.14534885862,466.76838786866,492.28548089506,523.2511306012],description:"Equal beating 6/5 = 8/5 same. Almost 1/7-comma"},meaneb451:{frequencies:[261.6255653006,274.36682021224,292.8092284668,312.49148032108,327.70992276921,349.73795145032,366.77030983847,391.42412846541,410.48661799548,438.07873640926,467.5258138363,490.29448158868,523.2511306012],description:"Equal beating 5/4 = 4/3 same, 5/24 comma meantone. A.J. Ellis no. 6"},meaneb471:{frequencies:[261.6255653006,272.3284467197,292.18612898941,313.49179640307,326.31648163178,350.11087068539,364.43361138613,391.00720457415,407.00321492741,436.68087780422,468.52283272721,487.68970701588,523.2511306012],description:"Equal beating 5/4 = 3/2 same. Almost 5/17-comma"},meaneb471a:{frequencies:[261.6255653006,274.14912748586,292.7429036132,312.59777626068,327.56128980523,349.7776701617,366.52092076205,391.37968062521,410.11434970273,437.92977184699,467.63173811584,490.01645860508,523.2511306012],description:"Equal beating 5/4 = 3/2 opposite. Almost 1/5 Pyth. Gottfried Keller (1707)"},meaneb471b:{frequencies:[261.6255653006,272.31089540773,292.18072491748,313.50040506268,326.30440921209,350.11400731728,364.41338872146,391.00370158472,406.97310157871,436.668886633,468.53149836075,487.66729542944,523.2511306012],description:"21/109-comma meantone with 9/7 major thirds, almost equal beating 5/4 and 3/2"},meaneb472:{frequencies:[261.6255653006,270.83769079127,291.72826852127,314.23020335825,325.29440843388,350.38540704884,362.72286472858,390.7008399429,404.45761497645,435.65472502222,469.25816799182,485.78126704788,523.2511306012],description:"Beating of 5/4 = twice 3/2 same. Almost 5/14-comma"},meaneb472_19:{frequencies:[261.6255653006,270.8378472333,281.80541953687,291.72826852127,302.00051792575,314.23002185182,325.29459633135,336.74877333101,350.38540704884,362.72307424558,377.41153667283,390.7008399429,404.45808222448,420.83660282593,435.65497666633,450.99513069838,469.25816799182,485.78154764623,502.88674365212,523.2511306012],description:"Beating of 5/4 = twice 3/2 same, 19 tones"},meaneb472a:{frequencies:[261.6255653006,274.74648495017,292.92493846141,312.30633997417,327.96897748493,349.66886860972,367.20529370531,391.50146074488,411.13561642091,438.33843670622,467.34113372786,490.7787182415,523.2511306012],description:"Beating of 5/4 = twice 3/2 opposite. Almost 3/17-comma"},meaneb591:{frequencies:[261.6255653006,273.06215106005,292.41085266114,313.13038820279,326.81843330822,349.97621009739,365.27491737756,391.15765268623,418.87439289145,437.18488525956,468.16276342643,488.62782610925,523.2511306012],description:"Equal beating 4/3 = 5/3 same."},meaneb732:{frequencies:[261.6255653006,272.00548436883,292.08705896894,313.65121264041,326.09523618955,350.1701397801,364.06303937825,390.94102347986,406.4514961644,436.45893055948,468.68174619223,487.27655969467,523.2511306012],description:"Beating of 3/2 = twice 6/5 same. Almost 4/13-comma"},meaneb732_19:{frequencies:[261.6255653006,272.00553778846,280.94077405591,292.08707584055,303.67560621907,313.65118727632,326.09527197795,339.03307470248,350.17012966679,364.06310036266,376.02237826726,390.94103477068,406.45158772689,419.80330474394,436.45896585468,453.77543893118,468.68171912011,487.27662724555,506.60928680033,523.2511306012],description:"Beating of 3/2 = twice 6/5 same, 19 tones"},meaneb732a:{frequencies:[261.6255653006,270.68848625127,291.6822692306,314.3042667302,325.1920204578,350.41293324447,362.5515203525,390.67014898736,404.20304509584,435.55206635241,469.33217160858,485.59021720901,523.2511306012],description:"Beating of 3/2 = twice 6/5 opposite. Almost 1/3 Pyth. comma"},meaneb742:{frequencies:[261.6255653006,272.89343543801,292.35917287023,313.21341909223,326.70311046689,350.00714105462,365.08148980199,391.12308516115,407.96824372307,437.06899032128,468.24551969328,488.41224041213,523.2511306012],description:"Beating of 3/2 = twice 5/4 same."},meaneb742a:{frequencies:[261.6255653006,273.78850133971,292.63287562287,312.77409391616,327.31510698093,349.84341999552,366.10759179471,391.30612443552,409.49789158088,437.68290117536,467.80756449982,489.55615570194,523.2511306012],description:"Beating of 3/2 = twice 5/4 opposite. Almost 3/13-comma, 3/14 Pyth. comma"},meaneb781:{frequencies:[261.6255653006,273.88372205101,292.66195046404,312.72748571568,327.38015167213,349.82604176358,366.21672762941,391.32556326448,418.15568884829,437.74813244966,467.76108961433,489.67748280644,523.2511306012],description:"Equal beating 3/2 = 8/5 same."},meaneb891:{frequencies:[261.6255653006,272.7426257605,292.31307409948,313.28760473417,326.59990179186,350.03483972175,364.90860969063,391.092135133,419.1546662649,436.96549358815,468.31936361194,488.21959184068,523.2511306012],description:"Equal beating 8/5 = 5/3 same. Almost 5/18-comma"},meaneight:{frequencies:[261.6255653006,276.08926119362,293.33333347996,311.65444160511,328.88393162803,349.42547049952,368.74309237173,391.77416758435,413.43299207996,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8 Pyth. comma meantone scale"},meanfifth:{frequencies:[261.6255653006,274.56546814423,292.86978442859,312.39456569414,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"1/5-comma meantone scale (Verheijen)"},meanfifth2:{frequencies:[261.6255653006,279.06726965397,292.86986732103,312.39452419152,327.84547867349,349.70184487387,366.99801003998,391.46454285105,417.56218018201,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"1/5-comma meantone by John Holden (1770)"},meanfifth_19:{frequencies:[261.6255653006,274.56546814423,279.06726965397,292.86978442859,307.35519222791,312.39456569414,327.84548435462,344.06059968708,349.70179235499,366.99791252626,373.01539917593,391.46460164194,410.82629477826,417.56217294621,438.21464222188,459.88868900496,467.42914467878,490.54793493862,514.81033759999,523.2511306012],description:"19 of 1/5-comma meantone scale"},meanfifth_43:{frequencies:[261.6255653006,265.91515911649,270.13633240739,274.56546814423,279.06726965397,283.49717461664,288.14537375445,292.86978442859,297.67175429757,302.39711110066,307.35519222791,312.39456569414,317.35355938713,322.556865357,327.84548435462,333.22081516619,338.51040756711,344.06059968708,349.70179235499,355.43547760922,361.07770857381,366.99791252626,373.01539917593,378.93660287884,385.14971481892,391.46460164194,397.88302689184,404.19904307077,410.82629477826,417.56217294621,424.19061149626,431.14564594215,438.21464222188,445.39957775044,452.46991103879,459.88868900496,467.42914467878,475.09307907327,482.63477102771,490.54793493862,498.59100550039,506.50570672499,514.81033759999,523.2511306012],description:"Complete 1/5-comma meantone scale"},meanfiftheb:{frequencies:[261.6255653006,275.80023422757,293.11157312801,311.73372470712,328.53333183909,349.48325286892,368.3828117434,391.46459711956,412.7266004334,438.69360944226,466.62683936965,491.82624824197,523.2511306012],description:'"1/5-comma" meantone with equal beating fifths'},meangold:{frequencies:[261.6255653006,272.97231199113,292.38331430233,313.17462880702,326.75706743029,349.99269211627,365.17193449866,391.13923210785,408.10300926149,437.12312635029,468.20685771475,488.51307131873,523.2511306012],description:"Meantone scale with Blackwood's R = phi, and diat./chrom. ST = phi, ~4/15-comma"},meanhalf:{frequencies:[261.6255653006,267.49544939623,290.69507255622,315.90677595028,322.99452506247,351.00752840096,358.88280562497,390.00836666198,398.75867291663,433.34262909025,470.92601754108,481.49180950675,523.2511306012],description:"1/2-comma meantone scale"},meanhar2:{frequencies:[261.6255653006,273.08769296879,292.41861893027,305.22982618403,326.83598255713,349.97156260351,365.30423365264,391.16284711627,408.30015740759,437.20230245522,456.35665612784,488.66055322307,523.2511306012],description:"1/9-Harrison's comma meantone scale"},meanhar3:{frequencies:[261.6255653006,274.22153683641,292.76499331753,306.86017365004,327.61072570921,343.38355445704,366.60389537541,391.39444778107,410.23814647641,437.9793418028,459.06587176894,490.10890120058,523.2511306012],description:"1/11-Harrison's comma meantone scale"},meanharris:{frequencies:[261.6255653006,273.71072489962,292.60907359238,306.12544311476,327.26186315247,349.85764856047,366.01847563765,391.29021017831,409.36491649663,437.62950220286,457.84473927605,489.45661357347,523.2511306012],description:"1/10-Harrison's comma meantone scale"},meanhsev:{frequencies:[261.6255653006,265.69493617871,271.18768033644,275.4057836544,279.68949451567,284.03983498254,289.91182549392,294.4211659268,299.00064605783,305.1819244006,309.92877868547,314.74946639166,321.25632089757,326.25319922315,331.32779988873,336.4813337451,343.43745382287,348.77934146077,354.20431777528,361.52682728594,367.15008027699,372.86080050545,378.66034414493,386.48843610249,392.49994642563,398.60496085649,406.84537033315,413.17351844213,419.60009331305,426.12662827999,434.93599657884,441.70106893056,448.57136642871,457.84473927605,464.96613926104,472.19830582795,481.96011959425,489.45661357347,497.06970936204,504.80122352123,515.23704142273,523.2511306012],description:"1/14-septimal schisma tempered meantone scale"},meanhskl:{frequencies:[261.6255653006,275.0605216927,293.02063313667,312.15345277639,328.18310911307,349.61186736411,367.56508220664,391.56529173291,411.67289207144,438.55312706018,467.18850946536,491.17950266504,523.2511306012],description:"Half septimal kleisma meantone"},meanlst357_19:{frequencies:[261.6255653006,273.71260157103,279.68803244686,292.60971924044,306.12821574316,312.81131320311,327.26311833974,342.38279105966,349.85736361975,366.02068710341,374.01129952811,391.29052886394,409.36829077259,418.30522648629,437.63082426891,457.84952434322,467.84458559023,489.45917220726,512.07206464598,523.2511306012],description:"19 of mean-tone scale, least square error in 3/2, 5/4 and 7/4"},meanmalc:{frequencies:[261.6255653006,279.16226462633,292.82999876562,312.45832383396,327.75622702832,349.72564885805,366.84815356577,391.43789792004,417.67588698136,438.12522309524,467.49265244264,490.38100841085,523.2511306012],description:"Meantone approximation to Malcolm's Monochord, 3/16 Pyth. comma"},meannkleis:{frequencies:[261.6255653006,277.55670411237,293.77792781181,311.66693695111,329.88161264913,349.96913477239,370.42222384066,392.07096746411,415.94530241673,440.25439013544,467.06275302556,494.35929617392,523.2511306012],description:"1/5 kleisma tempered meantone scale"},meanpi:{frequencies:[261.6255653006,275.38456311745,294.43027471344,309.91448590794,326.2128298123,348.77404705732,367.11600789597,392.50613131028,413.14795414706,434.87532652316,464.95175460796,489.40347900327,523.2511306012],description:"Pi-based meantone with Harrison's major third by Erv Wilson"},meanpi2:{frequencies:[261.6255653006,287.5806999253,296.7710142931,326.2128298123,336.6377243117,370.0346037192,381.85992557156,394.06315326167,433.15704755212,446.99959483943,491.34516423327,507.04724898227,523.2511306012],description:"Pi-based meantone by Erv Wilson analogous to 22-tET"},meanpkleis:{frequencies:[261.6255653006,274.33428876064,294.88060759996,309.2047285643,324.22465805628,348.50752497012,365.43662717622,392.80607455881,411.88702081614,442.73537947933,464.24169412807,486.7926967469,523.2511306012],description:"1/5 kleisma positive temperament"},meanquar:{frequencies:[261.6255653006,273.37431312998,292.50627485027,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale. Pietro Aaron's temp. (1523). 6/5 beats twice 3/2"},meanquar_14:{frequencies:[261.6255653006,273.37431312998,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split D#/Eb and G#/Ab, Otto Gibelius (1666)"},meanquar_15:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb and G#/Ab"},meanquar_16:{frequencies:[261.6255653006,273.37431312998,279.93548123753,292.50629850443,305.64179898843,312.97722776199,327.03195662575,349.91920725962,365.63293356166,391.22137338448,408.78994578219,418.60090448096,437.39882871549,457.04097849371,468.01000025525,489.02679755603,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, G#/Ab and A#/Bb"},meanquar_17:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177250659,312.977175335,327.03195662575,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39889945791,457.04105241293,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},meanquar_19:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,341.71789064962,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39890198442,457.04105241293,468.01003810189,489.02683710225,510.98743222773,523.2511306012],description:"19 of 1/4-comma meantone scale"},meanquar_27:{frequencies:[261.6255653006,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,327.03195662575,334.88072358477,341.71789064962,349.91912034749,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"27 of 1/4-comma meantone scale"},meanquar_31:{frequencies:[261.6255653006,267.90457886781,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,320.48862783822,327.03195662575,334.88072358477,341.71789064962,349.91912034749,358.31717956585,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,479.24227945773,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"31 of 1/4-comma meantone scale"},meanquareb:{frequencies:[261.6255653006,274.90575459855,292.80763523599,312.14798050979,327.88746490679,349.6453532581,367.3522744581,391.22144795733,411.14173398328,437.99455416256,467.00507093977,490.61429903129,523.2511306012],description:"Variation on 1/4-comma meantone with equal beating fifths"},meanquarm23:{frequencies:[261.6255653006,273.51763645063,292.40504357126,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,408.78994578219,436.04260883433,468.17206422213,489.12605686634,523.2511306012],description:"1/4-comma meantone approximation with minimal order 23 beatings"},meanquarr:{frequencies:[261.6255653006,273.37036621967,292.50063201309,312.98169478553,327.03195662575,349.92419358955,365.62579001637,391.21579858034,408.78994578219,437.39258595147,468.01906681552,489.01974822542,523.2511306012],description:"Rational approximation to 1/4-comma meantone, Kenneth Scholz, MTO 4.4, 1998"},meansabat:{frequencies:[261.6255653006,279.13726386405,294.25495796556,313.95067836072,330.95382015833,348.87783040382,372.229687597,392.38914286775,418.65339720992,441.32709511026,470.8669722571,496.36848628125,523.2511306012],description:"1/9-schisma meantone scale of Eduard Sa'bat-Garibaldi"},meansabat_53:{frequencies:[261.6255653006,264.79625752493,268.00537599851,271.25338610366,275.79485124716,279.13726386405,282.52018221184,285.94410045135,290.73152483281,294.25495796556,297.82109228474,301.4304452945,305.08354077075,310.19140758515,313.95067836072,317.75550958044,321.60645175541,326.99095182327,330.95382015833,334.96471528237,339.02421924159,343.13292113612,348.87783040382,353.10595017045,357.38531136087,361.71653498009,367.77258074571,372.229687597,376.74081403286,381.30660995465,385.92774054592,392.38914286775,397.14458487807,401.95765903525,406.82906379475,413.640406907,418.65339720992,423.72714093867,428.86237189887,436.04260883433,441.32709511026,446.67562589029,452.08897683944,457.56793273834,465.22877230071,470.8669722571,476.57350267936,482.349191678,490.42492909292,496.36848628125,502.38407462043,508.4725670703,514.63484717027,523.2511306012],description:"53-tone 1/9-schisma meantone scale"},meanschis:{frequencies:[261.6255653006,275.81646505128,294.24573392894,310.20599265769,327.03195662575,348.88329767713,367.80716871461,392.38299382393,413.66634097248,436.10412364188,465.24335632603,490.47874118496,523.2511306012],description:"1/8-schisma temperament, Helmholtz"},meanschis7:{frequencies:[261.6255653006,275.84425785506,294.23387584933,310.2247482054,327.0846843223,348.89032888179,367.85164222246,392.37508610937,413.69968681881,436.18322603255,465.26210635182,490.54793493862,523.2511306012],description:"1/7-schisma linear temperament"},meanschis_17:{frequencies:[261.6255653006,275.81646505128,290.77709705464,294.24573392894,310.20599265769,327.03195662575,330.93307160522,348.88329767713,367.80716871461,372.19468374184,392.38299382393,413.66634097248,436.10412364188,441.30634506723,465.24335632603,490.47874118496,496.32958936031,523.2511306012],description:"17-tone 1/8-schisma linear temperament"},meansept:{frequencies:[261.6255653006,273.93523095528,292.67762672082,312.70235991264,327.41522444303,349.81667202162,366.27579142084,391.33604481052,409.74867679276,437.78330574787,467.73603562223,489.74334292241,523.2511306012],description:"Meantone scale with septimal diminished fifth"},meansept2:{frequencies:[261.6255653006,273.61459551034,286.15296204753,292.57963558274,305.98714063953,320.00886175336,327.19620693615,342.18982383643,349.87514759905,365.9082279648,382.67602660872,391.27063976147,409.20043831214,427.95210889573,437.56358849756,457.61500463173,478.58500343311,489.333659422,511.75744671018,523.2511306012],description:"Meantone scale with septimal neutral second"},meansept3:{frequencies:[261.6255653006,267.11515986718,271.23581508831,275.42019673559,281.19923906193,285.53716249988,289.94217244295,296.02592413073,300.59257160392,305.22982618403,309.9384746623,316.44180152381,321.32358037849,326.28048244956,333.12670774706,338.26588629419,343.48414905091,348.7829114007,356.10146388137,361.59490682213,367.17305499414,374.87731434423,380.66058361349,386.53284867747,394.643327573,400.73152907611,406.91341882127,413.19091223118,421.86074762795,428.36858751681,434.97682067587,444.1040384307,450.95501471222,457.91167766162,464.97592623609,474.73234784313,482.05581210758,489.49253462334,499.76337935275,507.47298512535,515.30182087389,523.2511306012],description:"Pythagorean scale with septimal minor third"},meansept4:{frequencies:[261.6255653006,266.94086705872,271.13211808455,275.38917613856,280.98410555769,285.39585012732,289.87686370457,295.76613145071,300.40996929954,305.12672026341,309.91752915454,316.21395200486,321.17884203959,326.22168604472,332.8493514236,338.07543464185,343.38355445704,348.77505435772,355.86092403367,361.44831302863,367.12342987925,374.58207334188,380.46340397682,386.43730087372,394.28810581018,400.47907310734,406.76701374557,413.15368163355,421.54749623588,428.16623317002,434.88889120201,443.72428802318,450.69091522486,457.76754776364,464.95497741911,474.40121026751,481.84980583512,489.41535214975,499.35853288878,507.19898454493,515.16253949886,523.2511306012],description:"Pythagorean scale with septimal narrow fourth"},meansev:{frequencies:[261.6255653006,275.93321340298,293.28595453555,311.72996498387,328.77769811601,349.45369437647,368.5644419122,391.74252566418,413.16594588103,439.14890519043,466.76586696593,492.29212632197,523.2511306012],description:"1/7-comma meantone scale, Jean-Baptiste Romieu (1755)"},meansev2:{frequencies:[261.6255653006,273.98141462199,292.76593693997,312.83835055233,327.61283758281,350.07440004945,366.60744235102,391.74252566418,410.24343789088,438.37026184168,468.42550014967,490.54793493862,524.18054130269],description:"Meantone scale with 1/7-comma stretched octave (stretched meansept)"},meansev_19:{frequencies:[261.6255653006,275.93321340298,278.07859353335,293.28589524255,309.32501829942,311.72996858511,328.77775508885,346.75764506664,349.4536277652,368.56443339655,371.42996022741,391.74260033637,413.16585280598,416.37814821359,439.14890011719,463.16493144882,466.76596133102,492.29202110912,496.11959049595,523.2511306012],description:"19 of 1/7-comma meantone scale"},meanseveb:{frequencies:[261.6255653006,276.822915312,293.45907344559,311.2600957924,329.2717708679,349.29792128041,369.56105314287,391.74259807358,414.53862252605,439.49286138442,466.19439430972,493.21190508606,523.2511306012],description:'"1/7-comma" meantone with equal beating fifths'},meansixth:{frequencies:[261.6255653006,275.36245350283,293.11247215425,312.00666699279,328.38886075091,349.55699144229,367.91095120397,391.62676241399,412.18948168074,438.75944753732,467.04212833931,491.56459996916,523.2511306012],description:"1/6-comma meantone scale (tritonic temperament of Salinas)"},meansixth_19:{frequencies:[261.6255653006,275.36245350283,278.49009641114,293.11247215425,308.50278723002,312.00666699279,328.38886075091,345.6314161331,349.55699144229,367.91095120397,372.08969287196,391.62676241399,412.18948168074,416.87124381956,438.75944753732,461.79691129422,467.04212833931,491.56459996916,517.37477513058,523.2511306012],description:"19 of 1/6-comma meantone scale"},meansixtheb:{frequencies:[261.6255653006,276.39673661379,293.31426069206,311.4574698476,328.96404447481,349.37515437283,369.07004939896,391.62674884124,413.78350416977,439.15979251365,466.37460465854,492.63446576705,523.2511306012],description:'"1/6-comma" meantone with equal beating fifths'},meansixthm:{frequencies:[261.6255653006,275.36250599118,293.11251278827,312.00669222389,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52369088643,438.75941205608,467.04206359353,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 2 fifths"},meansixthm2:{frequencies:[261.6255653006,276.14113065853,293.11251278827,310.24975557428,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52380581681,438.75941205608,465.72523006308,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 4 fifths"},meansixthpm:{frequencies:[261.6255653006,275.00020270933,293.00227310437,309.72478954314,328.14198392915,348.83408706747,367.49599295996,391.5530240856,412.50030385781,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"modified 1/6P-comma temperament, French 18th century"},meansixthso:{frequencies:[261.6255653006,273.09145986506,292.50627485027,313.30134186202,327.03195662575,350.28154752005,365.63284274659,391.62667645325,408.78994578219,437.85193595173,468.98001879925,489.53334447372,524.3356019912],description:"1/6-comma meantone scale with 1/6-comma stretched oct, Dave Keenan TL 13-12-99"},meanstr:{frequencies:[261.6255653006,272.52663052146,292.30447317753,313.51763757869,326.58087306932,350.28154752005,364.87661266094,391.35649333595,407.66301227525,437.24799400905,468.98001879925,488.52085380073,523.97386302914],description:"Meantone with 1/9-comma stretched octave, Petr Parizek (2006)"},meanten:{frequencies:[261.6255653006,276.96346718799,293.59840699152,311.2324721493,329.47860040677,349.26769656434,369.74365294187,391.95114287501,414.92943551322,439.85086739936,466.26912673157,493.60433806962,523.2511306012],description:"1/10-comma meantone scale"},meanthird:{frequencies:[261.6255653006,271.40047399919,291.9012907804,313.95067836072,325.68056936328,350.28154752005,363.36884069528,390.81668391305,405.4184580124,436.04260883433,468.98001879925,486.50215045777,523.2511306012],description:"1/3-comma meantone scale (Salinas)"},meanthird_19:{frequencies:[261.6255653006,271.40047399919,281.38801176707,291.9012907804,302.80736724606,313.95067836072,325.68056936328,337.848714425,350.28154752005,363.36884069528,376.74081403286,390.81668391305,405.4184580124,420.33785775232,436.04260883433,452.33412516107,468.98001879925,486.50215045777,504.40543017669,523.2511306012],description:"Complete 1/3-comma meantone scale"},meanthirdeb:{frequencies:[261.6255653006,273.41679662438,292.30169912182,312.83755546226,326.81234905863,349.91518709086,365.63683018302,390.81669745772,408.5035451685,436.83089868331,467.63468237516,488.59687355467,523.2511306012],description:'"1/3-comma" meantone with equal beating fifths'},meanvar1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,312.00669222389,327.03195662575,349.55706816887,366.3906401674,391.22147055517,410.48618883318,437.39890198442,467.04206359353,489.53334447372,523.2511306012],description:"Variable meantone 1: C-G-D-A-E 1/4, others 1/6"},meanvar2:{frequencies:[261.6255653006,274.19219069011,292.50627485027,312.04360750473,327.03195662575,349.70184487387,366.23895640989,391.22147055517,410.65012590831,437.39890198442,467.23549927892,489.3306802979,523.2511306012],description:"Variable meantone 2: C..E 1/4, 1/5-1/6-1/7-1/8 outward both directions"},meanvar3:{frequencies:[261.6255653006,275.36250599118,292.50627485027,310.71739423852,327.03195662575,349.55706816887,367.15000817177,391.22147055517,413.04376116614,437.39890198442,466.0760911248,489.53334447372,523.2511306012],description:"Variable meantone 3: C..E 1/4, 1/6 next, then Pyth."},meanvar4:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,412.61639318626,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Variable meantone 4: naturals 1/4-comma, accidentals Pyth."},mediant16:{frequencies:[261.6255653006,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Mediant doubling of octave done four times"},mercadier:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,349.22823143301,368.74309237173,391.5530240856,413.90012676351,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Mercadier's well-temperament (1777), 1/12 and 1/6 Pyth. comma"},mercadier2:{frequencies:[261.6255653006,276.14388692511,292.95319623755,310.40895756597,328.03206784165,349.20805980193,368.45885450371,391.49761638186,413.86785247997,438.37641748302,465.57175090792,491.63473786767,523.2511306012],description:"Mercadier de Belestas (1776)"},mercator:{frequencies:[261.6255653006,272.09448029963,279.3054110864,290.48161516351,306.08206748155,318.32990397837,326.76614606023,335.42596179815,348.84778913489,362.80689075348,372.42184279259,387.32403355801,408.12545368833,418.94141877379,435.70530841001,453.13974129598,465.14865565404,490.12996697565,509.74216322321,523.2511306012],description:"19 out of 53-tET, see Mandelbaum p. 331"},merrick:{frequencies:[261.6255653006,278.62147458377,295.28844751169,312.94924079019,329.91874474504,349.29981986967,371.62722343835,394.01440557319,416.60121863153,438.96906929631,468.0242659544,493.6331420766,523.2511306012],description:"A. Merrick's melodically tuned equal temperament (1811)"},mersen_l1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 1"},mersen_l2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 2"},mersen_s1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 1"},mersen_s2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 2"},mersenmt1:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.03921839762,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 1"},mersenmt2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 2"},mersenne:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,340.65828815182,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,510.98743222773,523.2511306012],description:"31-note choice system of Mersenne, Harmonie universelle (1636)"},meyer:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},meyer_29:{frequencies:[261.6255653006,268.26840191956,275.93321340298,286.15296204753,289.72987407313,294.32876096318,306.59245933664,321.92208230347,327.03195662575,331.11985608357,343.38355445704,344.91651675372,357.69120255941,367.91095120397,372.50983809402,383.2405741708,386.30649876417,392.4383479509,408.78994578219,413.89982010446,429.2294430713,441.49314144476,457.84473927605,459.88868900496,482.88312345521,490.54793493862,496.67978412536,510.98743222773,515.07533168556,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},mid_enh1:{frequencies:[261.6255653006,269.10058145205,336.37572681506,348.83408706747,392.4383479509,403.65087217807,504.56359022259,523.2511306012],description:"Mid-Mode1 Enharmonic, permutation of Archytas's with the 5/4 lying medially"},mid_enh2:{frequencies:[261.6255653006,271.31540105247,339.14425131559,348.83408706747,392.4383479509,406.97310157871,508.71637697339,523.2511306012],description:"Permutation of Archytas' Enharmonic with the 5/4 medially and 28/27 first"},miller19:{frequencies:[261.6255653006,271.16557874802,283.07475767856,293.39690257971,304.09543631541,315.18408718336,326.67707691855,338.58915326012,350.93559605343,363.73224209988,376.99551198295,390.74241649248,407.9032302438,422.77716528297,438.1934715504,454.17192383337,470.73301771751,487.89800430439,505.68889852562,524.12852955557],description:"TOP tempered nr. 64 [1202.9, 570.4479508], 7-limit {225/224, 1029/1000}"},miller7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,313.95067836072,329.64821227876,353.19451315581,366.27579142084,392.4383479509,412.06026534844,439.53094970501,470.92601754108,494.47231841813,523.2511306012],description:"Herman Miller, 7-limit JI. mode of parizek_ji1"},miller_12:{frequencies:[261.6255653006,273.36657578691,291.63627719304,313.29104303136,327.35065305942,349.22823143301,364.90060015836,391.99543598175,418.19337019276,436.9606979923,456.57025003029,487.08386390194,523.2511306012],description:"Herman Miller, scale with appr. to three 7/4 and one 11/8. Tuning List 19-11-99"},miller_12a:{frequencies:[261.6255653006,273.46133384191,291.68681828778,313.23675853409,327.40738352015,349.22823143301,365.02708698668,391.99543598175,418.12090908234,437.03642407223,456.80766452229,487.25270356141,523.85596330884],description:'Herman Miller, "Starling" scale, alternative version TL 25-11-99'},miller_12r:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,484.4917875937,523.2511306012],description:'Herman Miller, "Starling" scale rational version'},miller_ar1:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.07474405997,327.9937953665,348.83408706747,368.24374600687,391.64146650178,414.27421384356,438.21489534465,465.11211608996,490.99166158792,523.2511306012],description:'Herman Miller, "Arrow I" well-temperament'},miller_ar2:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.2849072826,328.2161033156,349.07052034394,368.24374600687,391.64146650178,414.27421384356,438.51190905657,465.42736069124,491.32444638706,523.2511306012],description:'Herman Miller, "Arrow II" well-temperament'},miller_b1:{frequencies:[261.6255653006,276.37000081643,292.93610587951,310.49521248455,328.2161033156,348.83408706747,368.4933346061,391.64146650178,413.993616853,438.80912407872,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Butterfly I" well-temperament'},miller_b2:{frequencies:[261.6255653006,276.55731914056,293.13465239421,310.70566022736,328.2161033156,349.07052034394,368.74309237173,392.17254067411,414.27421384356,439.10654054756,465.42736069124,491.99069280383,523.2511306012],description:'Herman Miller, "Butterfly II" well-temperament'},miller_bug:{frequencies:[261.6255653006,275.99574470663,292.73769384471,310.49521248455,327.54963108844,348.83408706747,368.4933346061,391.64146650178,413.993616853,437.62147130622,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Bug I" well-temperament'},miller_dim:{frequencies:[261.6255653006,272.37088095799,275.97178311718,291.10467300644,307.06737543415,311.12698372208,323.9053895548,328.18760802294,346.1837483498,365.1667076515,369.99442271164,385.1905938463,390.2830385166,411.68417663589,434.25884690128,440,458.07139483414,464.12736626882,489.57775198944,516.42371048788,523.2511306012],description:"Diminished temperament, g=92.421, oct=1/4, 7-limit"},miller_nikta:{frequencies:[261.6255653006,272.78230567952,282.82337239762,292.30660227893,305.1368529352,315.1779191367,326.89249731477,341.39626079795,349.76381456689,364.82541608424,379.88701473,391.60159255926,407.77886614283,422.28262813098,436.22855406869,456.86852448015,469.69877536137,488.10739794888,508.74736733766,523.2511306012],description:'Herman Miller, 19-tone scale of "Nikta". Tuning List 22-1-99'},miller_sp:{frequencies:[261.6255653006,276.74268633071,292.73329748773,304.15432597486,321.72882314722,340.31880135827,353.5963846,374.02771873076,395.63960626236,411.07553805605,434.82810464551,459.95313047266,477.89826295658,505.51194770063,525.23456349057],description:"Herman Miller, Superpelog temperament, TOP tuning"},minor_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"A minor pentatonic"},minor_clus:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,353.19451315581,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,523.2511306012],description:"Chalmers' Minor Mode Cluster, Genus [333335]"},minor_wing:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Chalmers' Minor Wing with 7 minor and 6 major triads"},minortone:{frequencies:[261.6255653006,264.87670583656,269.18630372462,273.56601964703,276.96554054138,281.47182622933,286.05143175444,290.70554674078,294.31805527354,299.10666990622,303.97319627313,307.75057781118,312.75774231814,317.84637624619,323.01780144749,327.03184444407,332.35271908155,337.76016543181,341.95740725719,347.52112383796,353.17536321933,358.9216002989,363.3818066762,369.29410472703,375.30259493676,379.96636500161,386.14849505708,392.43120962619,398.81614754309,403.7721109712,410.34156772664,417.0179085097,422.20006196255,429.06934285921,436.05038835349,443.14501943782,448.65184388114,455.95150328441,463.36992699746,469.12808274602,476.76089208744,484.51788878959,492.4010934061,498.52001054206,506.63103252794,514.8740254656,523.2511306012],description:"Minortone temperament, g=182.466089, 5-limit"},miracle1:{frequencies:[261.6255653006,266.71173418545,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,479.82340237272,489.15147723638,513.27277840175,523.2511306012],description:'21 out of 72-tET Pyth. scale "Miracle/Blackjack", Keenan & Erlich, TL 2-5-2001'},miracle1a:{frequencies:[261.6255653006,266.57640943865,279.87817034289,285.17441410431,299.40418912991,305.0699313594,320.29246281951,326.35348199782,342.63803067389,349.1219037468,366.54256247747,373.47879032775,392.11482112276,399.53496279579,419.47115746916,427.40897376302,448.73603972606,457.22764679928,480.04261976898,489.12665346498,513.5333359992,523.2511306012],description:"Version of Blackjack with just 11/8 intervals"},miracle2:{frequencies:[261.6255653006,266.71172956369,274.52699087907,279.86396690685,285.30469707927,293.66477470251,299.3738011912,305.19381471768,314.13668880034,320.24370207508,326.46943949911,336.03573785931,342.56848231438,349.22822739856,359.4614100947,366.44956423737,373.57357245769,380.83607584373,391.99544051026,399.61607650784,407.38486242506,419.32216702351,427.4740516384,435.78441397758,448.55389013814,457.27405769313,466.16375074742,479.82341068742,489.15147723638,498.66088722045,513.27278729609,523.2511306012],description:'31 out of 72-tET Pythagorean scale "Miracle/Canasta", tempered Fokker-M, 36 7-limit tetrads'},miracle24:{frequencies:[261.6255653006,266.71173418545,274.52698453615,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,513.27277840175,523.2511306012],description:"Miracle[24] in 72-tET tuning."},miracle2a:{frequencies:[261.6255653006,266.57640943865,274.68028654691,279.87817034289,285.17441410431,293.84366906071,299.40418912991,305.0699313594,314.34400674513,320.29246281951,326.35348199782,336.27457379784,342.63803067389,349.1219037468,359.73515228832,366.54256247747,373.47879032775,380.54627680087,392.11482112276,399.53496279579,407.09552105481,419.47115746916,427.40897376302,435.49700296564,448.73603972606,457.22764679928,465.87994655565,480.04261976898,489.12665346498,498.38259075187,513.5333359992,523.2511306012],description:"Version of Canasta with just 11/8 intervals"},miracle3:{frequencies:[261.6255653006,266.71172956369,271.8967720342,274.52699087907,279.86396690685,285.30469707927,290.85119844166,293.66477470251,299.3738011912,305.19381471768,311.12697293924,314.13668880034,320.24370207508,326.46943949911,332.81620914398,336.03573785931,342.56848231438,349.22822739856,356.01744208336,359.4614100947,366.44956423737,373.57357245769,380.83607584373,384.52012922913,391.99544051026,399.61607650784,407.38486242506,411.32573797959,419.32216702351,427.4740516384,435.78441397758,440.00001524924,448.55389013814,457.27405769313,466.16375074742,470.67322937359,479.82341068742,489.15147723638,498.66088722045,503.48472993456,513.27278729609,523.2511306012],description:'41 out of 72-tET Pythagorean scale "Miracle/Studloco", Erlich/Keenan 2001'},miracle31s:{frequencies:[261.6255653006,266.63636836248,274.61234258734,279.87187586531,285.23214274484,293.7643779857,299.39072204343,305.12482507342,314.2521161294,320.27085311289,326.40486440328,336.1687117034,342.60720791066,349.16901789451,359.61381619398,366.50134650551,373.52079096839,380.6746756467,392.06191220286,399.57090708206,407.22371854314,419.40512463865,427.43781242392,435.62434685833,448.6553095271,457.24821364991,466.00569400686,479.94546308962,489.13765420145,498.50589943595,513.41785698047,523.2511306012],description:"Canasta with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle3a:{frequencies:[261.6255653006,266.57640943865,271.6209387912,274.68028654691,279.87817034289,285.17441410431,290.57088243021,293.84366906071,299.40418912991,305.0699313594,310.84289043406,314.34400674513,320.29246281951,326.35348199782,332.52919812642,336.27457379784,342.63803067389,349.1219037468,355.72847573316,359.73515228832,366.54256247747,373.47879032775,380.54627680087,384.83248369581,392.11482112276,399.53496279579,407.09552105481,411.6807594913,419.47115746916,427.40897376302,435.49700296564,440.40213577526,448.73603972606,457.22764679928,465.87994655565,471.12729153307,480.04261976898,489.12665346498,498.38259075187,503.99602271809,513.5333359992,523.2511306012],description:"Version of Studloco with just 11/8 intervals"},miracle3ls:{frequencies:[261.6255653006,266.8561524992,272.19132869617,274.36355553357,279.84880885615,285.44374339214,291.1505189834,293.47406686496,299.34138986722,305.32601617869,311.43030899178,313.91568307924,320.1916880693,326.59318586748,333.12264767748,335.78115718319,342.4943108472,349.34167821305,356.32594256772,359.16962765504,366.35037871957,373.67471357934,381.14545968569,384.18721873359,391.86813762951,399.70261841457,407.69373119716,410.94736065575,419.16328558448,427.54349328421,436.09121881038,439.57145109254,448.35967321435,457.32356924795,466.46667727785,470.18934850506,479.58967749961,489.177972196,498.95793401383,502.93987502638,512.99500332159,523.2511306012],description:"Miracle-41 in a 7-limit least-squares tuning, Gene Ward Smith, 2001"},miracle3p:{frequencies:[261.6255653006,266.34679554672,270.06721067987,274.94077677072,279.90228841312,284.95333588433,290.09553330897,294.14767822015,299.45579274291,304.85969791727,310.36112062791,314.69634158508,320.37527393455,326.15668500873,332.04242788125,336.6805001021,342.75615313904,348.94144590806,355.2383548887,360.20043713509,366.70052302062,373.3179099666,380.0547104455,385.36343543368,392.31760641523,399.39727291251,406.60469732047,412.28427858225,419.7242587073,427.29849640545,435.00941939202,441.0857666732,449.04549132915,457.14885520764,465.39844769831,471.89927840742,480.41505607532,489.08450736089,497.91040254418,504.86537329764,513.97604599191,523.2511306012],description:"Least squares Pythagorean approximation to partch_43"},miracle41s:{frequencies:[261.6255653006,266.63636836248,269.45164985995,274.61234258734,279.87187586531,285.23214274484,290.69507255622,293.7643779857,299.39072204343,305.12482507342,310.96875093738,314.2521161294,320.27085311289,326.40486440328,332.65635780028,336.1687117034,342.60720791066,349.16901789451,355.85650343121,359.61381619398,366.50134650551,373.52079096839,380.6746756467,384.69403121132,392.06191220286,399.57090708206,407.22371854314,411.52339231679,419.40512463865,427.43781242392,435.62434685833,440.22388881539,448.6553095271,457.24821364991,466.00569400686,470.92601754108,479.94546308962,489.13765420145,498.50589943595,503.76937659657,513.41785698047,523.2511306012],description:"StudLoco with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle_12:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,336.03572815422,342.56848033562,359.46139971304,366.44956000397,384.52011812375,411.32572372413,440,470.6732130613,523.2511306012],description:"A 12-tone subset of Blackjack with six 4-7-9-11 tetrads"},miracle_12a:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82339960115,489.15147723638,513.27277840175,523.2511306012],description:"A 12-tone chain of Miracle generators and subset of Blackjack"},"24erlich-keenan":{frequencies:[261.6255653006,266.71173469898,279.86396636799,285.30470202322,290.8512090818,299.37380003836,305.19381941867,320.24370022528,326.46944389922,342.56847967604,349.22823143301,356.01745305102,366.44956070954,373.5735760541,391.99543598175,399.61607958554,407.38487340641,419.32216137194,427.47405410759,448.55388322895,457.27405945401,479.82340237272,489.15147817819,498.66089778183,523.2511306012],description:"24 note mapping for Erlich/Keenan Miracle scale low version, tuned to 72-equal"},miracle_8:{frequencies:[261.6255653006,279.86396690685,314.13668154225,336.03572815422,366.44956000397,391.99543598175,419.32216217931,448.5538823653,523.2511306012],description:"tet3a in 72-et"},miring1:{frequencies:[261.6255653006,285.29448470177,307.6953604706,387.15515639797,420.96788906714,523.2511306012],description:"Gamelan Miring from Serdang wetan, Tangerang. 1/1=309.5 Hz"},miring2:{frequencies:[261.6255653006,279.34865171253,304.66723527068,384.42070010042,412.69311132744,523.2511306012],description:"Gamelan Miring (Melog gender) from Serdang wetan"},misca:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,348.83408706747,392.4383479509,412.06026534844,433.74764773521,457.84473927605,523.2511306012],description:"21/20 x 20/19 x 19/18=7/6 7/6 x 8/7=4/3"},miscb:{frequencies:[261.6255653006,269.80136421624,278.50463402967,319.76457981184,348.83408706747,392.4383479509,404.70204632437,417.75695104451,479.64686971777,523.2511306012],description:"33/32 x 32/31x 31/27=11/9 11/9 x 12/11=4/3"},miscc:{frequencies:[261.6255653006,276.00059636107,292.04714266113,310.07474405997,348.83408706747,392.4383479509,414.00089454161,438.0707139917,465.11211608996,523.2511306012],description:"96/91 x 91/86 x 86/54=32/27. 32/27 x 9/8=4/3."},miscd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,348.83408706747,392.4383479509,407.5321305644,423.83341578697,441.49314144476,523.2511306012],description:"27/26 x 26/25 x 25/24=9/8. 9/8 x 32/27=4/3."},misce:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,348.83408706747,392.4383479509,420.46965851882,452.81347840488,490.54793493862,523.2511306012],description:"15/14 x 14/13 x 13/12=5/4. 5/4 x 16/15= 4/3."},miscf:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,378.42269266694,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh1"},miscg:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh 2"},misch:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,490.54793493862,504.56359022259,523.2511306012],description:"SupraEnh 3"},misty:{frequencies:[261.6255653006,268.57642185399,270.57706033988,272.59260010205,274.62315370363,276.66883458144,284.01936005382,286.13503371773,288.26646546986,290.41377434565,292.57708030445,300.35025535204,302.58757688062,304.84156607104,307.11234355974,309.40003795144,311.70477168653,319.9861304005,322.36972224007,324.77106769218,327.19030275625,329.62755691287,338.38508739928,340.90573394089,343.44515491415,346.00349213972,348.58088853904,357.84197030948,360.50755209334,363.19298782427,365.89842747751,368.62402219236,378.41760905933,381.23645754858,384.07630597582,386.93730633346,389.81962065329,392.72340320054,403.157261366,406.16039889903,409.18590458221,412.23394976407,415.30469757995,426.33849458487,429.51431022199,432.71378016074,435.93708308397,439.18439906139,450.85263092877,454.21105352848,457.59449053401,461.00313090234,464.43716505707,476.77631130474,480.3278378528,483.9058226648,487.51045723915,491.14194572312,494.80048247871,507.94632001299,511.73003620658,515.54193450341,519.38223078906,523.2511306012],description:"Misty temperament, g=96.787939, p=400, 5-limit"},mistyschism:{frequencies:[261.6255653006,278.75251614148,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,418.12877421223,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Mistyschism scale 32805/32768 and 67108864/66430125"},mixed9_3:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,349.22823143301,391.99543598175,409.35055662695,427.47405410759,466.16376151809,523.2511306012],description:"A mixture of the hemiolic chromatic and diatonic genera, 75 + 75 + 150 + 200 c"},mixed9_4:{frequencies:[261.6255653006,271.89678302796,282.57123920205,305.19382000629,349.22823143301,391.99543598175,407.38487419079,423.37848741825,457.27406033445,523.2511306012],description:'Mixed enneatonic 4, each "tetrachord" contains 67 + 67 + 133 + 233 cents.'},mixed9_5:{frequencies:[261.6255653006,277.18263097687,293.66476791741,329.62755691287,349.22823143301,391.99543598175,415.30469757995,440,493.88330125613,523.2511306012],description:"A mixture of the intense chromatic genus and the permuted intense diatonic"},mixed9_6:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,349.22823143301,391.99543598175,415.30469757995,440,466.16376151809,523.2511306012],description:"Mixed 9-tonic 6, Mixture of Chromatic and Diatonic"},mixed9_7:{frequencies:[261.6255653006,277.18263097687,311.12698372208,329.62755691287,349.22823143301,391.99543598175,415.30469757995,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 7, Mixture of Chromatic and Diatonic"},mixed9_8:{frequencies:[261.6255653006,293.66476791741,311.12698372208,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 8, Mixture of Chromatic and Diatonic"},mixol_chrom:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,311.12229387098,319.76457981184,359.73515228832,411.12588832951,426.35277308246,434.39716502741,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,605.86973016981,622.24458774197,639.52915962369,719.47030457665,822.25177665903,852.70554616492,868.79433005482,885.50191332511,959.29373943553,1046.5022612024],description:"Mixolydian chromatic tonos"},mixol_chrom2:{frequencies:[261.6255653006,271.31540105247,281.75060878526,332.97799220076,366.27579142084,385.55346465352,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the chromatic genus"},mixol_chrominv:{frequencies:[261.6255653006,279.06726965397,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Mixolydian inverted"},mixol_diat:{frequencies:[261.6255653006,274.08392555301,287.78812183066,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,500.50108144463,523.2511306012,548.16785110602,575.57624366132,639.52915962369,677.14852195449,719.47030457665,767.43499154843,822.25177665903,885.50191332511,920.92198985811,959.29373943553,1001.00216288925,1046.5022612024],description:"Mixolydian diatonic tonos"},mixol_diat2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,348.83408706747,366.27579142084,406.97310157871,457.84473927605,523.2511306012],description:"Schlesinger's Mixolydian Harmonia, a subharmonic series though 13 from 28"},mixol_diatcon:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv2:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"Inverted Schlesinger's Mixolydian Harmonia, a harmonic series from 14 from 28"},mixol_enh:{frequencies:[261.6255653006,274.08392555301,287.78812183066,295.1673044417,299.00064605783,302.93486508491,348.83408706747,411.12588832951,418.60090448096,422.44127975143,426.35277308246,469.85815809087,523.2511306012,548.16785110602,575.57624366132,590.33460888341,598.00129211566,605.86973016981,697.66817413493,822.25177665903,837.20180896192,844.88255950285,852.70554616492,939.71631618175,1046.5022612024],description:"Mixolydian Enharmonic Tonos"},mixol_enh2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,332.97799220076,366.27579142084,375.66747838035,385.55346465352,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the enharmonic genus"},mixol_enhinv:{frequencies:[261.6255653006,270.34641747729,279.06726965397,373.75080757229,411.12588832951,420.46965851882,429.81342870813,523.2511306012],description:"A harmonic form of Schlesinger's Mixolydian inverted"},mixol_penta:{frequencies:[261.6255653006,269.32043486826,281.75060878526,332.97799220076,366.27579142084,381.53728273004,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the pentachromatic genus"},mixol_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,822.25177665903,885.50191332511,959.29373943553,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Mixolydian Tonos"},mixol_tri1:{frequencies:[261.6255653006,268.0066766494,274.70684356563,332.97799220076,366.27579142084,378.90599112501,392.4383479509,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the first trichromatic genus"},mixol_tri2:{frequencies:[261.6255653006,268.0066766494,281.75060878526,332.97799220076,366.27579142084,378.90599112501,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the second trichromatic genus"},mmmgeo1:{frequencies:[261.6255653006,291.52662303231,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo2:{frequencies:[261.6255653006,295.05751399041,323.4477810403,352.62279726972,392.9238840789,430.73079539701,485.77193724523,529.58860866211],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo3a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,477.32335087626,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4b:{frequencies:[261.6255653006,295.05751399041,323.4477810403,348.40303271111,392.9238840789,430.73079539701,485.77193724523,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmswap:{frequencies:[261.6255653006,251.16054268858,294.32876096318,282.55561052465,313.95067836072,348.83408706747,353.19451315581,392.4383479509,376.74081403286,418.60090448096,423.83341578697,470.92601754108,523.2511306012],description:"Swapping major and minor in 5-limit JI"},mokhalif:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,425.01198472693,477.05982293263,523.2511306012],description:"Iranian mode Mokhalif from C"},montvallon:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Montvallon's Monochord, Nouveau sisteme de musique (1742)"},monzismic:{frequencies:[261.6255653006,265.20988799749,268.52946324281,272.20837072565,275.61554447717,279.39153269358,282.88861654172,286.76424730356,290.69297498385,294.33151655947,298.3639173457,302.09847446042,306.23728412706,310.07039048391,314.31841699833,318.25267316085,322.61279858837,327.03265671938,331.12605620426,335.66254762155,339.86396564906,344.52016812641,348.83245514045,353.61152766937,358.03760933268,362.94279426564,367.48567344471,372.52029869489,377.62390147213,382.35053879638,387.58881783384,392.44018387738,397.81669307529,402.79607923799,408.31446627855,413.42525081527,419.08925963743,424.33490995001,430.14838328955,436.04150237937,441.49934027584,447.54796975207,453.14983163098,459.35807517454,465.10776160818,471.47983118983,477.38124304179,483.92146177974,489.97860285142,496.69140794435,503.49617981289,509.7983334288,516.78267280423,523.2511306012],description:"Monzismic temperament, g=249.018448, 5-limit"},sevengroups:{frequencies:[261.6255653006,261.6255653006,275.62199471997,265.19499215873,270.69536599394,266.7406479561],description:"Here are some suggestions for a logical system encompassing intervals into seven broad groups: skhisma, kleisma, comma,"},"monzo-sym-11":{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,285.40970760065,286.15296204753,287.78812183066,294.32876096318,299.00064605783,304.4370214407,305.22982618403,313.95067836072,314.76825825228,327.03195662575,332.97799220076,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,411.12588832951,418.60090448096,434.91003062957,436.04260883433,448.50096908674,449.66894036041,457.84473927605,465.11211608996,475.68284600109,478.40103369253,479.64686971777,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Monzo symmetrical system: 11-limit"},"monzo-sym-5":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 5-limit"},"monzo-sym-7":{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 7-limit"},monzo_sumerian_2place12:{frequencies:[261.6255653006,277.17835052447,293.68632213351,311.15032543183,329.66469551353,349.22211163595,369.93402791915,391.94841243536,415.27867508032,439.91220695103,466.03267445926,493.6331420766,523.2511306012],description:"Monzo - most accurate 2-place sexagesimal 12-tET approximation"},monzo_sumerian_simp12:{frequencies:[261.6255653006,277.34158865788,293.41184893525,310.84225580269,329.78012432849,348.83408706747,370.22485655745,392.4383479509,415.27867508032,440.11777340288,466.26338370404,493.6331420766,523.2511306012],description:"Monzo - simplified 2-place sexagesimal 12-tET approximation"},morgan:{frequencies:[261.6255653006,277.18263097687,294.07958763262,310.86358783941,330.18637907377,349.03110370139,370.30791823326,392.32757291716,415.07027187895,440.74593809176,465.76911360306,494.58094207912,523.2511306012],description:"Augustus de Morgan's temperament (1843)"},"mos11-34":{frequencies:[261.6255653006,272.51337835337,301.75671459889,314.3146261019,348.04364484358,362.52783176564,377.61479489998,418.13653788176,435.53771116377,453.66305442345,502.34551296122,523.2511306012],description:"Wilson 11 of 34-tET, G=9, Chain of minor & major thirds with Kleismatic fusion"},"mos12-17":{frequencies:[261.6255653006,272.51337835337,283.85429714132,307.97166902637,320.78822215662,348.04364484358,362.52783176564,377.61479489998,409.69842558521,426.7484383229,463.0066556268,482.27514684959,523.2511306012],description:"MOS 12 of 17, generator 7"},"mos12-22":{frequencies:[261.6255653006,287.56082683758,296.76515515861,326.18384711731,336.62443200122,347.39920007397,381.83730669135,394.05926325844,433.12283887627,446.9863572706,491.29666030217,507.02222283506,523.2511306012],description:"MOS 12 of 22, contains nearly just, recognizable diatonic, and pentatonic scales"},"mos13-22":{frequencies:[261.6255653006,278.64197723942,296.76515515861,316.06708432391,326.18384711731,347.39920007397,369.99442271164,381.83730669135,406.67242132093,433.12283887627,446.9863572706,476.05883716226,507.02222283506,523.2511306012],description:"MOS 13 of 22, contains 5 and 9 tone MOS as well. G=5 or 17"},"mos15-22":{frequencies:[261.6255653006,278.64197723942,287.56082683758,306.26409645618,316.06708432391,336.62443200122,347.39920007397,369.99442271164,381.83730669135,406.67242132093,419.68930726506,446.9863572706,461.29362042034,491.29666030217,507.02222283506,523.2511306012],description:"MOS 15 in 22, contains 7 and 8 tone MOS as well. G= 3 or 19"},moscow:{frequencies:[261.6255653006,277.4816141504,293.64820765919,311.48626315692,329.67368081467,349.7414907984,370.88289054572,392.4383479509,416.22242101754,440.4723112686,467.22939450183,494.51052097482,523.2511306012],description:"Charles E. Moscow's equal beating piano tuning (1895)"},mundeuc45:{frequencies:[261.6255653006,267.57160087561,269.80136421624,271.31540105247,274.70684356563,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,499.46698830115,504.56359022259,507.3950357345,513.90736041189,523.2511306012],description:"Euclidean reduced detempered Miracle[45] with Tenney tie-breaker"},musaqa:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Egyptian scale by Miha'il Musaqa"},musaqa_24:{frequencies:[261.6255653006,269.02051582234,276.67624041581,284.6011815168,292.80374147632,300.29158209195,310.07474405997,319.15917884888,328.55303549378,338.26335715633,348.29659232622,358.65845048745,369.35373924791,380.38618160659,391.75821216589,403.47075130695,415.52295665389,427.91195157543,440.63253103259,453.67684579974,467.03406698289,480.69003385373,494.62688932105,508.8227088795,523.2511306012],description:"from d'Erlanger vol.5, p.34, after Mih.a'il Mu^saqah, 1899, a Lebanese scholar"},myna23:{frequencies:[261.6255653006,267.85369360167,274.23008563259,291.58574485564,298.52709031489,305.63367799752,312.90944157785,320.35840837329,327.98470157359,348.7424193045,357.04440817535,365.54403007102,374.24598974517,383.15510395049,392.27630410488,417.10295228105,427.03229805648,437.19801690717,447.60573581317,458.26121570764,469.17035466565,498.86352554567,510.73922293119,522.89762727195],description:"23 notes of Myna temperament, 7-limit TOP tuning (Paul Erlich)"},"mystic-r":{frequencies:[261.6255653006,367.91095120397,465.11211608996,654.0639132515,872.08521766867,1177.3150438527],description:"Skriabin's mystic chord, op. 60 rationalised"},mystic:{frequencies:[261.6255653006,369.99442271164,466.16376151809,659.25511382574,880,1174.65907166964],description:"Skriabin's mystic chord, op. 60"},urmawi:{frequencies:[261.6255653006,294.32876096318,326.6631048533,348.83408706747,392.4383479509,441.49314144476,471.45776383774,523.2511306012],description:"al-Urmawi, one of twelve maqam rows. First tetrachord is Rast"},valentine:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,330.47439827444,348.83408706747,371.78369805875,392.4383479509,414.24047839262,440.63253103259,466.02053819169,495.71159741166,523.2511306012],description:"Robert Valentine, tuning with primes 3 & 19, TL 7-2-2002"},valentine2:{frequencies:[261.6255653006,286.10322937235,312.87102146627,349.87955533643,382.6142546815,418.41160951721,467.90420651233,511.68128147674,559.55413558945,625.74204293254,684.28641150324,748.30818586768,782.53142116911,855.74498969389,935.80841302466,1046.5022612024],description:"Robert Valentine, two octave 31-tET subset for guitar, TL 10-5-2002"},vallotti:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.6228209638,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Vallotti & Young scale (Vallotti version)"},vavoom:{frequencies:[164.81377845643,165.83014536684,167.75567809608,168.79018601865,170.75008918846,172.7327497266,173.79795102719,175.81600173949,176.90021569146,178.95428827501,180.05785630665,182.14859375797,184.26360775673,185.39991601304,187.55268266167,188.70927492235,190.90046811205,192.07770535997,194.30800987601,196.56421264146,197.77637683895,200.07285246365,201.3066535986,203.64411977036,206.00872855044,207.27913480479,209.68595147418,210.9790342774,213.42881100738,214.74497512464,217.23848121866,219.76094059848,221.11615343515,223.68363702025,225.06304018178,227.6763542391,229.0803795269,231.74034082302,234.43118684139,235.87686755635,238.61574610914,240.08723199411,242.87499909192,244.37274935352,247.21027763268,250.08075380295,251.62294163139,254.54465534315,256.1143694988,259.0882353168,260.68597011615,263.71291896434,266.77501515601,268.42015092639,271.53690502834,273.21140777811,276.38379544331,278.08818779989,281.31720045362,284.58370833477,286.33866758091,289.66348210637,291.44976709494,294.83392732599,296.65209720599,300.09666587055,303.58123106099,305.45334345815,309.00010579622,310.90563508986,314.51570836542,316.45525105281,320.12976356015,323.84694071013,325.84402686189,329.62755691286],description:"Vavoom temperament, g=111.875426, 5-limit"},veroli:{frequencies:[261.6255653006,276.87699530057,293.57148765354,310.97965314221,329.42008585855,349.28270065725,369.64409253099,391.93430587921,414.97617910427,439.79164309579,466.09106516521,493.49262474744,523.2511306012],description:"Claudio di Veroli's well temperament (1978)"},vertex_chrom:{frequencies:[261.6255653006,271.89678302796,317.17549194805,349.22823143301,391.99543598175,407.38487419079,448.5538823653,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 266.7 + 166.7 cents"},vertex_chrom2:{frequencies:[261.6255653006,274.52698453615,323.3415889232,349.22823143301,391.99543598175,411.32572372413,484.46499093218,523.2511306012],description:"A vertex tetrachord from Chapter 5, 83.3 + 283.3 + 133.3 cents"},vertex_chrom3:{frequencies:[261.6255653006,275.18850165466,324.90175210669,349.22823143301,391.99543598175,412.31687950427,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 287.5 + 125 cents"},vertex_chrom4:{frequencies:[261.6255653006,275.40936140075,325.42347822215,349.22823143301,391.99543598175,412.64779522483,487.58430040208,523.2511306012],description:"A vertex tetrachord from Chapter 5, 88.9 + 288.9 + 122.2 cents"},vertex_chrom5:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 133.3 + 266.7 + 100 cents"},vertex_diat:{frequencies:[261.6255653006,299.37379946195,323.3415889232,349.22823143301,391.99543598175,448.5538823653,484.46499932732,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 133.3 + 133.3 cents"},vertex_diat10:{frequencies:[261.6255653006,295.79278388132,324.90175210669,349.22823143301,391.99543598175,443.18842137843,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 162.5 + 125 cents"},vertex_diat11:{frequencies:[261.6255653006,295.79278388132,306.66641795878,349.22823143301,391.99543598175,443.18842137843,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 62.5 + 225 cents"},vertex_diat12:{frequencies:[261.6255653006,293.66476791741,315.65242990842,349.22823143301,391.99543598175,440,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 125 + 175 cents"},vertex_diat2:{frequencies:[261.6255653006,299.37379946195,329.62755691287,349.22823143301,391.99543598175,448.5538823653,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 166.7 + 100 cents"},vertex_diat3:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 225 + 200 cents"},vertex_diat4:{frequencies:[261.6255653006,297.93622032612,329.62755691287,349.22823143301,391.99543598175,446.39994737251,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 225 + 175 + 100 cents"},vertex_diat5:{frequencies:[261.6255653006,275.18850165466,315.65242990842,349.22823143301,391.99543598175,412.31687950427,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 237.5 + 175 cents"},vertex_diat7:{frequencies:[261.6255653006,293.66476791741,306.66641795878,349.22823143301,391.99543598175,440,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 75 + 225 cents"},vertex_diat8:{frequencies:[261.6255653006,277.18263097687,306.66641795878,349.22823143301,391.99543598175,415.30469757995,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 100 + 175 + 225 cents"},vertex_diat9:{frequencies:[261.6255653006,295.79278388132,320.24370022528,349.22823143301,391.99543598175,443.18842137843,479.82340237272,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 137.5 + 150 cents"},vertex_sdiat:{frequencies:[261.6255653006,275.18850165466,306.66641795878,349.22823143301,391.99543598175,412.31687950427,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 187.5 + 225 cents"},vertex_sdiat2:{frequencies:[261.6255653006,273.20871865617,302.26980244078,349.22823143301,391.99543598175,409.35055662695,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 175 + 250 cents"},vertex_sdiat3:{frequencies:[261.6255653006,265.43099677612,302.26980244078,349.22823143301,391.99543598175,397.69714089209,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 25 + 225 + 250 cents"},vertex_sdiat4:{frequencies:[261.6255653006,271.8968348557,302.26980244078,349.22823143301,391.99543598175,407.38495184466,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 183.3 + 250 cents"},vertex_sdiat5:{frequencies:[261.6255653006,299.37374239667,302.26980244078,349.22823143301,391.99543598175,448.55379686399,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.33 + 16.67 + 250 cents"},vicentino1:{frequencies:[261.6255653006,267.54129532085,273.59078691818,279.77706779472,286.10322937235,292.57243455474,295.8616864168,299.18791603519,305.95298478736,312.87102146627,319.94548489658,327.17991022208,330.85823737058,334.57791819083,342.14320575162,349.87955533643,357.79083283678,365.88099775759,374.15409293384,382.6142546815,391.26571058456,395.66452371628,400.11279059885,409.15991580663,418.41160951721,427.87249484695,437.54730686196,442.46644183113,447.44088028055,457.55816161244,467.90420651233,478.48419305869,489.30340830564,494.80441235385,500.36726155789,511.68128147674,523.2511306012],description:"Usual Archicembalo tuning, 31-tET plus D,E,G,A,B a 10th tone higher"},vicentino2:{frequencies:[261.6255653006,262.40966637115,273.59078691818,274.41074818102,279.77706779472,280.61556956011,292.57243455474,293.44928279173,305.95298478736,306.86993670158,312.87102146627,313.80870698104,327.17991022208,328.16047998243,342.14320575162,343.16862103779,349.87955533643,350.92815470883,365.88099775759,366.97755604579,374.15409293384,391.26571058456,392.4383479509,409.15991580663,410.38618254261,418.41160951721,419.66560148231,437.54730686196,438.85865161274,457.55816161244,458.92947695163,467.90420651233,469.30653196482,489.30340830564,490.7698679226,511.68128147674,523.2511306012],description:"Alternative Archicembalo tuning, lower 3 rows the same upper 3 rows 3/2 higher"},vicentino2q217:{frequencies:[261.6255653006,262.46259217279,273.59078691818,274.46609608433,279.77706779472,280.67216895906,292.57243455474,293.50847071582,305.95298478736,306.93183153514,312.87102146627,313.87199953275,327.17991022208,328.2266690608,342.14320575162,343.23783523487,349.87955533643,350.99893596542,365.88099775759,367.05157442308,374.15409293384,391.26571058456,392.51750150462,409.15991580663,410.46895395112,418.41160951721,419.7502468954,437.54730686196,438.9471656765,457.55816161244,459.02204178186,467.90420651233,469.40118981889,489.30340830564,490.86885203792,511.68128147674,523.2511306012],description:"Vicentino's second tuning, 217-tET version"},vicentino36:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,279.93529690293,280.80602334765,292.50627485027,293.41610276971,305.64177427204,306.59245933664,312.97717714283,313.95067836072,327.03195662575,328.04917632434,341.71789064962,349.91912034749,351.00752840096,365.63284274659,366.77012764335,374.40803131735,375.5726110527,391.22147055517,392.4383479509,408.78994578219,410.06146948999,418.60090448096,419.90294514449,437.39889945791,438.75941205608,457.04105505291,458.46266117889,468.01003810189,469.46576276783,489.02683710225,490.54793493862,510.98743222773,523.2511306012],description:"Vicentino's second tuning of 1555"},victor_eb:{frequencies:[261.6255653006,276.45300885359,293.16631378471,311.00963644582,328.52867116285,348.83408706747,368.60401198904,391.83966133014,414.6795130731,439.03603741286,465.77732204887,492.79300649794,523.2511306012],description:"Equal beating Victorian piano temperament, interpr. by Bill Bremmer (improved)"},victorian:{frequencies:[261.6255653006,276.5429423948,293.32570896007,310.76776326996,328.29744538229,349.22823143301,368.92737853004,391.99543598175,414.58565256441,438.73106346722,465.89457252293,492.17459484008,523.2511306012],description:"Form of Victorian temperament (1885)"},vitale1:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,457.84473927605,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Rami Vitale's 7-limit just scale"},vitale2:{frequencies:[261.6255653006,274.70684356563,294.32876096318,299.00064605783,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,448.50096908674,457.84473927605,470.92601754108,504.56359022259,523.2511306012],description:"Rami Vitale, inverse mode of vitale1"},vitale3:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,412.06026534844,420.46965851882,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Superset of several Byzantine scales by Rami Vitale, TL 29-Aug-2001"},vogel_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,310.07474405997,313.95067836072,321.55899383997,330.74639366397,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,413.43299207996,418.60090448096,428.74532511996,440.99519155196,465.11211608996,482.33849075995,496.11959049595,523.2511306012],description:"Martin Vogel's 21-tone Archytas system, see Divisions of the tetrachord"},vogelh_b:{frequencies:[261.6255653006,276.37000081643,292.73769384471,310.07474405997,327.54963108844,349.78078158391,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Harald Vogel's temperament, van Eeken organ in Bunschoten, Immanuelkerk, 1992"},vogelh_fisk:{frequencies:[261.6255653006,274.01856817608,292.73769384471,312.85332572834,327.54963108844,349.78078158391,366.49445363528,391.37619916626,409.75340805561,437.91808280662,467.82492621575,489.99465727995,523.2511306012],description:"Modified meantone tuning of Fisk organ in Memorial Church at Stanford"},vogelh_hb:{frequencies:[261.6255653006,276.50527247638,293.79744652436,312.85332572834,329.92547760025,349.78078158391,369.82037393809,392.08397832814,413.47189899094,440.29822362186,467.82492621575,494.44133512215,523.2511306012],description:"Harald Vogel hybrid meantone (1984)"},vogelh_jakobi:{frequencies:[261.6255653006,275.2485073924,292.86986732103,310.4251397446,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.87276088221,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Harald Vogel's temperament for the Schnitger organ in St. Jakobi, Hamburg"},volans:{frequencies:[261.6255653006,288.78654445823,322.09885310804,352.06379107796,388.6137256405,429.95038611107,482.60299106564,523.2511306012],description:"African scale according to Kevin Volans 1/1=G"},vong:{frequencies:[261.6255653006,287.78812183066,324.77656382143,353.19451315581,392.4383479509,431.68218274599,476.53227965466,523.2511306012],description:"Vong Co Dan Tranh scale, Vietnam"},"vries19-72":{frequencies:[261.6255653006,271.89678302796,282.57123920205,293.66476791741,305.19382000629,314.13668154225,326.46944327063,339.28638158975,352.60650301302,366.44956000397,377.18735172911,391.99543598175,407.38487419079,423.37848741825,452.89298412314,470.6732130613,489.15147723638,508.3551866238,523.2511306012],description:"Leo de Vries 19/72 Through-Transposing-Tonality 18 tone scale"},"vries35-72":{frequencies:[261.6255653006,320.24370022528,326.46944327063,332.81622067851,339.28638158975,345.88232658126,352.60650301302,359.46139971304,366.44956000397,448.5538823653,457.27406033445,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Leo de Vries 35/72 Through-Transposing-Tonality 17 tone scale"},"vries5-72":{frequencies:[261.6255653006,269.29177952703,274.52698453615,282.57123920205,288.06460709314,296.5055443788,302.26980244078,317.17549194805,332.81622067851,349.22823143301,366.44956000397,384.52011812375,403.48177901006,423.37848741825,444.25635547592,466.16376151809,489.15147723638,513.27277840175,523.2511306012],description:"Leo de Vries 5/72 Through-Transposing-Tonality 18 tone scale"},"vries6-31":{frequencies:[261.6255653006,292.57243455474,299.18791603519,334.57791819083,342.14320575162,382.6142546815,391.26571058456,437.54730686196,447.44088028055,500.36726155789,511.68128147674,523.2511306012],description:'Leo de Vries 6/31 TTT used in "For 31-tone organ" (1995)'},vulture:{frequencies:[261.6255653006,265.58852967049,269.02996542365,272.51599294435,276.04719319079,279.62414831161,283.24745441839,286.9177088442,290.63552324927,294.40151054717,298.21629835234,302.73351960911,306.6562716924,310.62985211059,314.65492307423,318.73214815075,322.86220682342,327.0457799678,331.28356479042,335.57625992643,339.9245807679,344.32924417279,349.54496173019,354.07428378691,358.66229781376,363.30976018416,368.01744541334,372.78612960355,377.61660747204,382.50967536449,387.46614872711,392.486844677,398.43202813578,403.59481739244,408.82450722915,414.12195980508,419.48805795853,424.92368633675,430.42975080549,436.00715908665,441.65684067409,447.37972696622,453.17677170128,460.0412514682,466.0023613576,472.04071122634,478.15730738573,484.35315820906,490.6292962557,496.98675620078,503.42659462849,509.94988192555,516.55769649554,523.2511306012],description:"Vulture temperament, g=475.542233, 5-limit"},walker_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:'Douglas Walker, 1977, for "out of the fathomless dark/into the limitless light'},walkerr_11:{frequencies:[261.6255653006,291.47537246454,299.00064605783,333.11471138804,341.71502406609,380.70252730062,390.53145607553,435.08860262928,484.72943438718,497.2441172906,510.08190181294,523.2511306012],description:'Robert Walker, "Seven to Pi" scale, TL 09-07-2002'},wauchope:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Symmetrical 7-limit JI whole-half step scale, Ken Wauchope"},wendell1:{frequencies:[261.6255653006,276.25045813601,293.35468319005,310.78176509232,328.42642049784,348.83408706747,369.47972269069,391.8804287311,414.37568699689,438.92294511207,466.17264740545,492.63963050051,523.2511306012],description:"Robert Wendell's Natural Synchronous well-temperament (2003)"},wendell1r:{frequencies:[261.6255653006,276.25560153172,293.36810129327,310.78755172318,328.43721515437,348.83408706747,369.49186704867,391.89926583958,414.38340229758,438.93945576706,466.18132758477,492.65582273156,523.2511306012],description:"Rational version of wendell1 by Gene Ward Smith"},wendell2:{frequencies:[261.6255653006,276.37223575148,293.46077701205,310.91876490958,328.50868755512,348.91469434159,369.57235851938,392.00856887742,414.55835341999,438.92345217603,466.37814713124,492.76314493882,523.2511306012],description:"Robert Wendell's Very Mild Synchronous well-temperament (2003)"},werck1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Werckmeister I (just intonation)"},werck3:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,491.65745674141,523.2511306012],description:"Andreas Werckmeister's temperament III (the most famous one, 1681)"},werck3_eb:{frequencies:[261.6255653006,275.62199471997,292.52927773082,310.07474405997,328.06371231954,348.83408706747,367.49599295996,391.41011079897,413.43299207996,437.41828331138,465.11211608996,492.10978071589,523.2511306012],description:"Werckmeister III equal beating version, 5/4 beats twice 3/2"},werck3_mod:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,490.82535372381,523.2511306012],description:"Modified Werckmeister III with B between E and F#, Nijsse (1997), organ Soest"},werck4:{frequencies:[261.6255653006,274.37997440822,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,390.66969766777,411.5699614066,437.52264545758,467.21778431035,489.99465727995,523.2511306012],description:"Andreas Werckmeister's temperament IV"},werck5:{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,328.88393162803,350.01785633742,369.99442271164,392.4383479509,413.43299207996,440,466.69047534984,493.32589719545,523.2511306012],description:"Andreas Werckmeister's temperament V"},werck6:{frequencies:[261.6255653006,275.69145590816,291.35574317567,310.77945938738,328.70904358281,348.83408706747,368.91086905696,391.43977709097,413.53718386224,438.27872477707,466.16918908107,493.06356537421,523.2511306012],description:`Andreas Werckmeister's "septenarius" tuning VI`},werck6_dup:{frequencies:[261.6255653006,275.62199471997,291.49363009634,310.67551062492,328.56569462012,348.83408706747,368.92162485303,391.67947347082,413.43299207996,438.08759304581,466.01326570444,492.84854168382,523.2511306012],description:"Andreas Werckmeister's VI in the interpretation by Dupont (1935)"},werck_cl5:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.97737261399,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.14811800305,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/5-comma"},werck_cl6:{frequencies:[261.6255653006,275.36250599118,293.11251278827,310.35057963607,328.38895179964,349.55706816887,367.91095120397,391.62667645325,413.31226430431,438.75941205608,466.0760911248,491.56462836305,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/6-comma"},werck_puzzle:{frequencies:[261.6255653006,272.52663052146,291.60349465796,306.59245933664,327.03195662575,347.47145391486,365.18568489875,389.71308164569,408.78994578219,436.04260883433,461.93263873387,490.54793493862,523.2511306012],description:"From Hypomnemata Musica, 1697, p. 49, 1/1=192, fifths tempered superparticular"},white:{frequencies:[261.6255653006,275.93321340298,289.72987407313,294.32876096318,305.22982618403,310.42486507835,327.03195662575,331.11985608357,343.38355445704,348.83408706747,367.91095120397,386.30649876417,392.4383479509,406.97310157871,413.89982010446,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"Justin White's 22-tone scale based on Al-Farabi's tetrachord"},wicks:{frequencies:[261.6255653006,276.65728054629,293.45376109391,310.36444075595,329.26048109616,348.28499607284,369.54304125029,391.93835601961,414.48592121967,439.68064187634,465.04666232412,493.39072329352,523.2511306012],description:"Mark Wicks' equal beating temperament for organs (1887)"},wier_cl:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Danny Wier, ClownTone (2003)"},wiesse:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Von Wiesse's 1/2 Pyth. comma tuning"},wilson1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 19-tone Scott scale (1976)"},wilson11:{frequencies:[261.6255653006,271.31540105247,277.4816601673,291.35574317567,305.22982618403,312.16686768822,325.57848126297,332.97799220076,348.83408706747,366.27579142084,374.60024122586,392.4383479509,406.97310157871,416.22249025095,437.0336147635,457.84473927605,468.25030153232,488.36772189445,499.46698830115,523.2511306012],description:"Wilson 11-limit 19-tone scale, 1977"},wilson1t:{frequencies:[261.6255653006,273.34666024156,279.64601698606,292.92954243175,306.05308604033,313.10617410217,327.13365148064,334.67254769546,349.66622272551,366.27579142084,374.71672979763,391.50442319155,409.04422481132,418.47077311482,437.21869500104,457.98711402938,468.54156606881,489.53271107931,500.81414097667,523.2511306012],description:"Wilson's Scott scale, wilson1, in minimax minerva tempering"},wilson2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,418.60090448096,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 19-tone, 1975"},wilson3:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Wilson 19-tone"},wilson5:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 22-tone 5-limit scale"},wilson7:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson's 22-tone 7-limit 'marimba' scale"},wilson7_2:{frequencies:[261.6255653006,263.718569823,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,329.64821227876,343.38355445704,353.19451315581,366.27579142084,376.74081403286,392.4383479509,408.78994578219,412.06026534844,436.04260883433,439.53094970501,457.84473927605,470.92601754108,490.54793493862,494.47231841813,523.2511306012],description:"Wilson 7-limit scale"},wilson7_3:{frequencies:[261.6255653006,267.90457886781,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson 7-limit scale"},wilson7_4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,387.59343007496,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 7-limit 22-tone scale XH 3, 1975"},wilson_17:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,310.42486507835,327.03195662575,331.11985608357,348.83408706747,367.91095120397,372.50983809402,392.4383479509,413.89982010446,436.04260883433,441.49314144476,465.11211608996,490.54793493862,496.67978412536,523.2511306012],description:"Wilson's 17-tone 5-limit scale"},wilson_31:{frequencies:[261.6255653006,265.7783520514,271.31540105247,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.08592105074,327.03195662575,332.22294006425,339.14425131559,348.83408706747,354.37113606854,361.75386806997,372.08969287196,380.54627680087,392.4383479509,398.6675280771,406.97310157871,418.60090448096,428.11456140098,441.49314144476,448.50096908674,457.84473927605,470.92601754108,481.6288815761,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Wilson 11-limit 31-tone scale XH 3, 1975"},wilson_41:{frequencies:[261.6255653006,265.7783520514,271.31540105247,275.62199471997,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,321.08592105074,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.37113606854,361.75386806997,367.49599295996,372.08969287196,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,413.43299207996,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,481.6288815761,490.54793493862,496.67978412536,504.56359022259,515.07533168556,523.2511306012],description:"Wilson 11-limit 41-tone scale XH 3, 1975"},wilson_alessandro:{frequencies:[261.6255653006,265.58571790036,269.80136421624,270.50397193556,275.93321340298,278.232656848,284.55612632182,286.15296204753,288.53757006459,294.32876096318,295.09524211152,303.52653474327,304.3169684275,305.22982618403,309.14739649778,314.76825825228,321.92208230347,324.60476632267,327.03195662575,331.98214737546,337.2517052703,340.06213614756,343.38355445704,347.79082106,351.18772614924,354.11429053382,359.73515228832,365.180362113,367.91095120397,370.97687579734,379.40816842909,386.30649876417,391.2646736925,392.4383479509,393.46032281536,404.70204632437,405.75595790334,413.89982010446,417.348985272,419.69101100305,429.2294430713,432.80635509689,441.49314144476,442.64286316727,449.66894036041,456.47545264125,457.84473927605,463.72109474667,472.15238737843,482.88312345521,486.907149484,490.54793493862,494.63583439645,505.87755790546,515.07533168556,521.68623159,523.2511306012],description:"D'Alessandro, genus [3 3 3 5 7 11 11] plus 8 pigtails, XH 12, 1989"},wilson_bag:{frequencies:[261.6255653006,294.32876096318,318.85615771011,349.51540364377,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Erv's bagpipe, mar '97, after Theodore Podnos (37-39)."},wilson_class:{frequencies:[261.6255653006,272.52663052146,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,381.53728273004,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Class Scale, Erv Wilson, 9 july 1967"},wilson_dia1:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,362.25078272391,371.78369805875,381.83190611439,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycles, tetrachordal form"},wilson_dia2:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle, conjunctive form"},wilson_dia3:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycle on 3/2"},wilson_dia4:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,381.83190611439,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle on 4/3"},wilson_duo:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 'duovigene'"},wilson_enh:{frequencies:[261.6255653006,264.37951861955,279.06726965397,348.83408706747,392.4383479509,396.56927792933,418.60090448096,523.2511306012],description:"Wilson's Enharmonic & 3rd new Enharmonic on Hofmann's list of superp. 4chords"},wilson_enh2:{frequencies:[261.6255653006,265.7783520514,275.62199471997,348.83408706747,392.4383479509,398.6675280771,413.43299207996,523.2511306012],description:"Wilson's 81/64 Enharmonic, a strong division of the 256/243 pyknon"},wilson_facet:{frequencies:[261.6255653006,271.31540105247,274.70684356563,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,366.27579142084,387.59343007496,392.4383479509,406.97310157871,412.06026534844,436.04260883433,452.19233508746,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson study in 'conjunct facets', Hexany based"},wilson_gh1:{frequencies:[261.6255653006,286.54684077898,313.84200313831,343.73718179912,398.2573899082,436.19359890902,477.74343791599,523.2511306012],description:"Golden Horagram nr.1: 1phi+0 / 7phi+1"},wilson_gh11:{frequencies:[261.6255653006,294.51148904212,316.87124012705,356.70145865606,383.78276711707,432.02365977685,464.82353976398,523.2511306012],description:"Golden Horagram nr.11: 1phi+0 / 3phi+1"},wilson_gh2:{frequencies:[261.6255653006,290.51361927671,322.59142140135,358.21117585067,382.16527586729,424.3630293795,471.22015545621,523.2511306012],description:"Golden Horagram nr.2: 1phi+0 / 6phi+1"},wilson_gh50:{frequencies:[261.6255653006,270.80964219588,280.31611759965,306.81496952381,317.58537244461,347.60736272384,359.80973785756,372.44046183271,407.64801512355,421.95805149354,461.8466031062,478.05922145,523.2511306012],description:"Golden Horagram nr.50: 7phi+2 / 17phi+5"},wilson_helix:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Wilson's Helix Song, see David Rosenthal, Helix Song, XH 7&8, 1979. Also Secor, 1964"},wilson_hypenh:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Wilson's Hyperenharmonic, this genus has a CI of 9/7"},wilson_l1:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,404.70204632437,419.69101100305,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l2:{frequencies:[261.6255653006,267.07609791103,279.79400733536,287.78812183066,294.32876096318,305.22982618403,314.76825825228,327.03195662575,335.75280880244,348.83408706747,359.73515228832,373.05867644715,381.53728273004,392.4383479509,411.12588832951,419.69101100305,436.04260883433,447.67041173658,457.84473927605,479.64686971777,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l3:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 11-limit scale"},wilson_l4:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l5:{frequencies:[261.6255653006,267.07609791103,279.79400733536,285.40970760065,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,479.64686971777,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l6:{frequencies:[261.6255653006,267.57160087561,277.4816601673,285.40970760065,294.32876096318,305.22982618403,312.16686768822,327.03195662575,332.97799220076,348.83408706747,356.76213450082,369.97554688974,381.53728273004,392.4383479509,406.97310157871,416.22249025095,436.04260883433,443.97065626768,457.84473927605,475.68284600109,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 1 3 7 9 11 15 eikosany plus 9/8 and tritone. Used Stearns: Jewel"},window:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,297.67175429757,306.59245933664,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,446.50763144636,459.88868900496,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Window lattice"},wonder1:{frequencies:[261.6255653006,272.72256190885,277.86237426839,283.09905309511,288.43442562998,293.8703485525,299.4087202614,312.10830899518,317.99039712482,323.98334274799,330.08923137594,336.31019538088,342.64839962317,357.18202566262,363.91358676728,370.77201292014,377.75969724053,384.87907140314,392.13262172187,408.76514672187,416.46885901676,424.31776026786,432.3145818485,440.46211650535,448.76319953449,467.79774494453,476.61400354229,485.59641603135,494.74811665626,504.07229015717,513.57219283465,523.2511306012],description:"Wonder Scale, gen=~233.54 cents, 8/7+1029/1024^7/25, LS 12:14:18:21, M.Schulter"},wonder36:{frequencies:[261.6255653006,271.89678302796,277.18263097687,282.57123920205,288.06460709314,293.66476791741,299.37379946195,311.12698372208,317.17549194805,323.3415889232,329.62755691287,336.03572815422,342.56848033562,356.01745236555,362.93866220634,369.99442271164,377.18735172911,384.52011812375,391.99543598175,407.38487419079,415.30469757995,423.37848741825,431.60923940535,440,448.5538823653,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Wonder Scale, 36-tET version"},wronski:{frequencies:[261.6255653006,277.97716313189,294.32876096318,308.86351459099,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,463.29527188648,494.18162334558,523.2511306012],description:`Wronski's scale, from Jocelyn Godwin, "Music and the Occult", p. 105.`},wurschmidt:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,331.11985608357,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's normalised 12-tone system"},wurschmidt1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-1 19-tone scale"},wurschmidt2:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-2 19-tone scale"},wurschmidt_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system"},wurschmidt_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,372.08969287196,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system with alternative tritone"},wurschmidt_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,319.36714514233,321.48549464138,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,425.82286018978,428.6473261885,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 53-tone system"},wurschmidt_temp:{frequencies:[261.6255653006,270.6876810201,276.46178051834,282.35904862511,288.38211267756,294.53365605714,300.81641938515,307.23320174366,313.78686192261,320.48031969341,327.31655710978,338.6540596739,345.87796520471,353.25596548096,360.79134753214,368.48746850413,376.34775715481,384.37571538166,392.57491978195,400.94902556208,409.5017589506,423.68596790742,432.72370810117,441.95423435346,451.38165902684,461.01018486849,470.84409628664,480.88777706987,491.14570185547,501.62244073019,512.32266126632,523.2511306012],description:"W\xEF\xBF\xBDrschmidt temperament, 5-limit, g=387.744375, 5-limit"},"t-side":{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Tau-on-Side"},"t-side2":{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Tau-on-Side opposite"},tagawa_55:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Rick Tagawa, 17-limit diamond subset with good 72-tET approximation, 2003"},tamil:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,372.50983809402,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Possible Tamil sruti scale. Alternative 11th sruti is 45/32 or 64/45"},tamil_vi:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale in Tamil music, Vidyasankar Sundaresan"},tamil_vi2:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.49599295996,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale with 1024/729 tritone"},tanaka:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"26-note choice system of Shoh\xEF\xBF\xBD Tanaka, Studien i.G.d. reinen Stimmung (1890)"},tanbur:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,306.66732929008,314.73752216614,323.24394168414,332.22294006425,341.71502406609,351.76546595039,523.2511306012],description:"Sub-40 tanbur scale"},tansur:{frequencies:[261.6255653006,275.71279889585,293.19126194179,310.07474405997,328.21516866261,348.83408706747,367.61706537823,391.78834765065,413.56919813705,438.48689188122,465.11211608996,491.022754507,523.2511306012],description:"William Tans'ur temperament from A New Musical Grammar (1746) p. 73"},tartini_7:{frequencies:[261.6255653006,294.32876096318,313.95067836072,367.91095120397,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Tartini (1754) with 2 neochromatic tetrachords, 1/1=d, Minor Gipsy (Slovakia)"},taylor_g:{frequencies:[261.6255653006,274.70684356563,287.78812183066,294.32876096318,313.95067836072,353.19451315581,366.27579142084,392.4383479509,412.06026534844,418.60090448096,431.68218274599,470.92601754108,523.2511306012],description:"Gregory Taylor's Dutch train ride scale based on pelog_schmidt"},taylor_n:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,348.83408706747,367.9112241576,391.33200541501,413.90012676351,437.76975193523,465.63764214343,491.10256480205,523.2511306012],description:"Nigel Taylor's Circulating Balanced temperament (20th cent.)"},telemann:{frequencies:[261.6255653006,264.94361147373,271.70648167539,275.15237829755,278.64197723942,282.17583275232,289.3785657319,293.0485888979,296.76515515861,300.52885648597,304.34029066685,308.20006306951,312.10878854255,316.06708432391,324.13491490251,328.24573110938,332.40868242763,336.62443200122,345.21700307457,349.59519124833,354.02890545793,363.06573983159,367.67029324081,372.33324354561,377.05533136015,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,417.05301810033,422.34226102699,433.12283887627,438.61588607285,444.17860098504,449.81186203693,461.29362042034,467.14394139401,473.06846134744,485.14386048744,491.29666030217,497.52749252881,503.83734680745,516.69814597997,523.2511306012],description:"G.Ph. Telemann (1767). 55-tET interpretation of Klang- und Intervallen-Tafel"},telemann_28:{frequencies:[261.6255653006,264.94361147373,275.15237829755,278.64197723942,293.0485888979,296.76515515861,308.20006306951,312.10878854255,328.24573110938,332.40868242763,345.21700307457,349.59519124833,354.02890545793,367.67029324081,372.33324354561,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,438.61588607285,444.17860098504,461.29362042034,467.14394139401,473.06846134744,491.29666030217,497.52749252881,516.69814597997,523.2511306012],description:"Telemann's tuning as described on Sorge's monochord, 1746, 1748, 1749"},"temes-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,378.62819763364,399.72843132859,423.31905787312,446.91000942727,523.2511306012],description:"Temes' 5-tone Phi scale mixed with its octave inverse"},"temes-ur":{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312],description:"Temes' Ur 5-tone phi scale"},temes:{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312,495.63057556553,523.2511306012,554.13187513888,585.01259700885,684.94462120932],description:"Temes' 5-tone Phi scale / 2 cycle"},"temes2-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,399.72843132859,423.31905787312,468.0102705885,495.63057556553,523.2511306012,552.41124604023,585.01259700885,646.77396536561,684.94438778203,757.25639526728,799.45686265718,846.63811574624,893.82001885454,1046.5022612024],description:"Temes' 2 cycle Phi scale mixed with its 4/1 inverse"},temp10coh:{frequencies:[261.6255653006,279.06726965397,299.10339764541,320.57805584394,343.5945271479,368.2635494613,394.70435354475,423.05284121745,453.57582505819,488.36772189445,523.2511306012],description:"Differential coherent 10-tone scale, OdC, 2003"},temp10ebss:{frequencies:[261.6255653006,280.43397904206,300.58585223371,322.17714382919,345.31067040124,370.09659148016,396.65293718743,425.1061627261,455.59176355181,488.25490599611,523.2511306012],description:`Cycle of 10 equal "beating" 15/14's`},temp11ebst:{frequencies:[261.6255653006,278.68301283272,296.80966039395,316.07252488244,336.70993118161,358.64093492832,381.94662420398,406.71316497313,433.24697173408,461.44397806515,491.40843569917,523.2511306012],description:"Cycle of 11 equal beating 9/7's"},temp12coh3:{frequencies:[261.6255653006,279.8393060116,294.68135606466,311.32770136359,332.21069717879,353.56473801237,370.2386298036,397.61708850394,418.97112933752,440.1984563065,471.2874275201,496.80305467842,523.2511306012],description:"Differential coherent scale, interval=3, OdC, 2003"},temp12ebf:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.5354160273,349.23174343306,369.98176018664,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating temperament tuned by The Best Factory Tuners (1840)"},temp12ebf4:{frequencies:[261.6255653006,276.98801737971,293.51517393789,310.79793252689,329.39098365485,348.83408706747,369.75126958642,391.78747833067,414.83115644933,439.62189128662,465.54602917011,493.43560586205,523.2511306012],description:"Eleven equal beating fifths and just fourth"},temp12ebfo:{frequencies:[261.6255653006,277.20265787963,293.64844512428,311.16011036869,329.64835309433,349.33484978517,370.11921182839,392.06266066657,415.42830219132,440.09698059047,466.36447845344,494.0968438935,523.62658899088],description:"Equal beating fifths and fifth beats twice octave at C"},temp12ebfp:{frequencies:[261.6255653006,277.75307788644,293.77513637875,310.82931496301,329.94340332986,349.12935317325,370.63270249518,391.99544730302,416.18671544528,440.21980402758,465.80107112682,494.47220378931,523.2511306012],description:"All fifths except G#-Eb beat same as 700 c. C-G"},temp12ebfr:{frequencies:[261.6255653006,277.1880780098,293.58315312731,311.09097992515,329.53543943235,349.23174457993,369.98176152553,391.84186168221,415.185630746,439.77824342227,466.03998361904,493.70667287983,523.2511306012],description:"Exact values of equal beating temperament of Best Factory Tuners (1840)"},temp12ep:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767],description:"Pythagorean comma distributed equally over octave and fifth: 1/19-Pyth comma"},temp12fo1o:{frequencies:[261.6255653006,277.20349049726,293.7089710611,311.19723286579,329.72679517909,349.35966199273,370.1615231373,392.20198585541,415.5548023839,440.29810917508,466.51470234738,494.29230838881,523.72386870485],description:"Fifth beats same octave opposite"},temp12fo2o:{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338107372,392.13011658806,415.46777521802,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"Fifth beats twice octave opposite"},temp12p10:{frequencies:[261.6255653006,277.12003622197,293.53214922797,310.91625060765,329.32990524605,349.3071136959,369.493381814,391.90691363044,415.11714643072,439.70197837153,465.74281849401,493.32589719545,523.2511306012],description:"1/10-Pyth. comma well temperament"},temp12p6:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Modified 1/6-Pyth. comma temperament"},temp12p8:{frequencies:[261.6255653006,277.02617059261,293.33333347996,310.60041853231,328.88393162803,349.42547049952,369.36822764145,391.77416758435,414.83597850347,439.25532436715,465.90062756558,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament"},temp12p8a:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,349.42547049952,368.74309237173,391.77416758435,414.83597850347,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament, consecutive just fifths"},temp12s17:{frequencies:[261.6255653006,275.41266079541,292.61316553779,309.9334225479,327.2710181906,348.78108411875,367.16108497228,391.29294726693,413.18177371806,437.63868343995,464.97078294553,490.98112850332,523.2511306012],description:'4/17th synt. comma "well"-temperament. OdC 1999'},temp12s3:{frequencies:[261.6255653006,275.79485124716,293.07576161921,310.19140758515,326.99095182327,348.87783040382,367.77258074571,390.81668391305,413.640406907,437.79703699716,465.22877230071,490.42492909292,523.2511306012],description:'1/3 synt. comma "well"-temperament. OdC 1999'},temp12septendec:{frequencies:[261.6255653006,277.01530443593,293.31032234393,310.5638707171,328.83233370046,348.17541215342,368.65631875068,390.34198455955,413.30334035457,437.61515184999,463.35732874365,494.18162334558,523.2511306012],description:"Scale with 18/17 steps"},temp12w2b:{frequencies:[261.6255653006,276.80621914251,293.38957467182,310.9374037046,329.12408537692,349.33498699812,369.32540968366,391.68699838314,414.83365420901,439.33301386008,466.03043161756,492.93477894539,523.2511306012],description:"The fifths on white keys beat twice the amount of fifths on black keys"},temp15coh:{frequencies:[261.6255653006,273.98642352939,286.93424587686,300.52595924487,314.76156220527,329.6715499436,345.28562122078,360.48992106995,377.61407292725,395.54746439596,414.33033691342,434.93480826785,455.53927928881,477.11963158959,499.65025190386,523.2511306012],description:"Differential coherent 15-tone scale, OdC, 2003"},temp15ebmt:{frequencies:[261.6255653006,274.13344448045,287.10161388969,300.54701305042,315.02372625978,330.03318193885,345.59498492211,361.72946206059,379.10151766291,397.1128647533,415.78702800292,435.14840215297,455.99486887387,477.60848441971,500.01748339385,523.2511306012],description:"Cycle of 15 equal beating minor thirds"},temp15ebsi:{frequencies:[261.6255653006,274.09084013406,287.01483652929,300.41443756554,314.84183942382,329.80016763418,345.30896502873,361.38848559819,378.7013656391,396.65136316555,415.2619179078,434.55734100747,455.33280077531,476.87279531786,499.20546063174,523.2511306012],description:"Cycle of 15 equal beating major sixths"},temp15mt:{frequencies:[261.6255653006,272.10155294862,290.46827626332,302.09918118188,314.19580976213,326.77681046955,348.83408706747,362.80207077951,377.32935907335,392.4383479509,418.92774655891,435.70241417719,453.14877154631,471.29371440761,503.10581234929,523.2511306012],description:"Cycle of 15 minor thirds, Petr Parizek"},temp16d3:{frequencies:[261.6255653006,272.52663052146,287.69189096389,299.67905363019,312.16568143019,325.17258353382,338.72144179457,352.83483584176,372.46899992671,387.98854005196,404.15472995283,420.99451113006,438.53594735503,462.93911228358,482.22824196207,502.32108537715,523.2511306012],description:"Cycle of 16 thirds tempered by 1/3 small diesis"},temp16d4:{frequencies:[261.6255653006,271.36369423603,291.82218013836,302.68427617679,313.95067836072,325.63643364742,337.75715313333,350.32902355546,376.74081403286,390.76372105392,405.30858212106,420.39482899491,436.04260883433,468.91646607712,486.37029938793,504.47379566792,523.2511306012],description:"Cycle of 16 thirds tempered by 1/4 small diesis"},temp16ebs:{frequencies:[261.6255653006,273.35566334732,285.38860666159,297.73221513295,311.13803992337,324.88997598926,338.996955196,354.31789928052,370.0343963911,386.15666093499,403.66631166114,421.62802297921,440.05346707662,460.0644954801,480.59216613216,501.64981691394,523.2511306012],description:"Cycle of 16 equal beating sevenths"},temp16ebt:{frequencies:[261.6255653006,273.54317752885,285.74681450472,298.24333695649,311.03977535434,324.14332902314,339.04034606654,354.29488987405,369.91554384313,385.91109319424,402.29053605603,420.91180538217,439.97998583037,459.50580330844,479.50024102158,499.97454326842,523.2511306012],description:"Cycle of 16 equal beating thirds"},temp16l4:{frequencies:[261.6255653006,278.81939890042,286.59644689091,305.43134787805,313.95067836072,322.70763593891,343.91573686494,353.50850469302,376.74081403286,387.24916379762,412.69888495295,424.21020636659,436.04260883433,464.69899736225,477.66074674968,509.05224558146,523.2511306012],description:"Cycle of 16 fifths tempered by 1/4 major limma"},temp17c10:{frequencies:[261.6255653006,278.13248184697,287.25399162485,296.67464640038,315.39293803189,325.73642523995,336.41913481987,347.45218787195,369.37422084479,381.48805431277,393.9991677018,418.85802036446,432.59470262079,446.78188702878,474.97099505857,490.54793493862,506.63572944675,523.2511306012],description:'Cycle of 17 fifths tempered by 1/10 of "17-tET comma"'},temp17c11:{frequencies:[261.6255653006,276.93071634298,286.5293181416,296.46061382736,313.80362259461,324.68026371274,335.93389640617,347.57758745223,367.91095120397,380.66298908833,393.8570200719,416.89773925535,431.34769064645,446.29848691039,472.40704302301,488.78098359819,505.72245578392,523.2511306012],description:'Cycle of 17 fifths tempered by 1/11 of "17-tET comma"'},temp17c12:{frequencies:[261.6255653006,275.93321340298,285.92682111936,296.28237159295,312.48531442823,323.80274674587,335.53006800342,347.68212334757,366.69599021774,379.97679689512,393.73860099464,415.27118158544,430.3112595477,445.8960513142,470.2809925818,487.31338757149,504.96265307831,523.2511306012],description:'Cycle of 17 fifths tempered by 1/12 of "17-tET comma"'},temp17c13:{frequencies:[261.6255653006,275.09197878886,285.41800532755,296.13163442011,311.37414725128,323.06208421743,335.18874504319,347.77059980835,365.67107999768,379.3971387881,393.63842979584,413.89982010446,429.43622376713,445.55581352332,468.48950048969,486.07501593832,504.32063522708,523.2511306012],description:'Cycle of 17 fifths tempered by 1/13 of "17-tET comma"'},temp17c14:{frequencies:[261.6255653006,274.37296298479,284.98259752889,296.00249241327,310.42486507835,322.42857866752,334.89645942743,347.84645641687,364.79486552165,378.90099378095,393.5525871037,412.72797362103,428.68761089217,445.26438593469,466.95936897503,485.01606158014,503.77098227424,523.2511306012],description:'Cycle of 17 fifths tempered by 1/14 of "17-tET comma"'},temp17c15:{frequencies:[261.6255653006,273.75133628611,284.60578240525,295.8906154666,309.60449456672,321.88054534371,334.64335075548,347.91221098893,364.0371787025,378.47152629398,393.47820661021,411.71505587788,428.03986711385,445.01196937812,465.63729761752,484.10016650719,503.29510175355,523.2511306012],description:'Cycle of 17 fifths tempered by 1/15 of "17-tET comma"'},temp17ebf:{frequencies:[261.6255653006,272.44226039746,283.83762774933,295.84262353625,308.01140541539,320.83119298602,334.33681303028,348.02669374128,362.44895565855,377.64277622383,393.64943714798,409.87448211667,426.96753159265,444.97502525992,463.22819966593,482.45788080796,502.71631088044,523.2511306012],description:"Cycle of 17 equal beating fifths"},temp17ebs:{frequencies:[261.6255653006,272.25303191034,284.09302419378,294.99486987374,307.14054534497,320.67196534338,333.1312181383,347.01199086095,362.47647062671,376.71561430061,392.57935523584,410.25304697073,426.52635565248,444.65634289229,464.854847056,483.45291583119,504.17290303449,523.2511306012],description:"Cycle of 17 equal beating sevenths"},temp17fo2:{frequencies:[261.6255653006,272.49443630436,283.81483782984,295.60553136463,307.88605111976,320.67674980257,333.99881838086,347.87433573796,362.32629011314,377.37863296804,393.05630224552,409.38528080469,426.39262165238,444.10651133426,462.55629730628,481.77255670213,501.78712602614,522.6331757532],description:"Fifth beats twice octave"},temp17nt:{frequencies:[261.6255653006,272.67141175251,283.62400127587,295.59862296305,308.07881564783,321.08592105074,333.98321109015,348.08400151932,362.78013022893,377.35217954558,393.28401259522,409.88848628312,426.35277308246,444.35341180422,463.11404114636,482.66674266598,502.05436630802,523.2511306012],description:"17-tone temperament with 27/22 neutral thirds"},temp17s:{frequencies:[261.6255653006,272.47577100117,283.83144686231,295.66037914716,307.98229466369,320.75501909295,334.12277657932,348.04764753103,362.48197303348,377.58873713905,393.32509157531,409.63717539588,426.70917767843,444.49267120113,463.01730800927,482.21968335939,502.31662775181,523.2511306012],description:"Cycle of 17 fifths tempered by 2 schismas. Schulter, Tuning List 10-9-98"},temp19d5:{frequencies:[261.6255653006,270.66831710441,280.02362001571,289.70227696231,304.50185643804,315.02657220273,325.91506125677,337.17989695691,348.83408706747,360.89108965294,379.3273836973,392.4383479509,406.00247545366,420.03542981361,434.55341522625,449.57319616728,472.53985806789,488.87259164079,505.76984518255,523.2511306012],description:"Cycle of 19 thirds tempered by 1/5 small diesis. Third = 3\\5"},temp19ebf:{frequencies:[261.6255653006,271.21349495395,281.45216719787,291.55303152151,302.33945232218,313.85796000757,325.22143162672,337.35615460362,350.31447634238,363.09838134063,376.74994653359,390.21776437961,404.59965986997,419.95766938963,435.10896436483,451.288596451,468.56635736893,485.61156561298,503.81364896584,523.2511306012],description:"Cycle of 19 equal beating fifths"},temp19ebmt:{frequencies:[261.6255653006,271.3515811897,281.43551369743,291.89053542337,302.73030209663,313.98726376766,325.65848288741,337.75920164946,350.30522706536,363.3129458114,376.82130195458,390.82676353803,405.34762742982,420.40285701732,436.01212051281,452.22214724761,469.0287008844,486.45373685079,504.52001310976,523.2511306012],description:"Cycle of 19 equal beating minor thirds"},temp19ebo:{frequencies:[261.6255653006,277.22364042749,293.65618047886,311.2040149966,329.6906225544,349.43193638686,370.22936988938,392.1394232912,415.53653598153,440.18534605859,466.50709783521,494.2370091719,523.84897992059,555.04513017437,587.91021027711,623.0058793126,659.97909442818,699.46172209312,741.05658909815,784.8766959018],description:"Cycle of 19 equal beating octaves in twelfth"},temp19ebt:{frequencies:[261.6255653006,271.59402175166,281.80172126331,292.25440577595,302.95795550425,313.91838845704,325.14187338321,337.60244413755,350.36206814823,363.42792409681,376.80735887968,390.50790160795,404.53725818867,420.11297167574,436.06250107414,452.39482160095,469.11911613638,486.2447950704,503.78149001575,523.2511306012],description:"Cycle of 19 equal beating thirds"},temp19k10:{frequencies:[261.6255653006,271.76196854941,282.29109592175,293.22816309454,304.58897525989,314.09773337131,326.2671147593,338.90798583865,352.03861397416,365.67797428016,377.09383089344,391.70392883316,406.88007915549,422.6442137645,439.01911266466,452.72455471179,470.26488431194,488.48479525859,507.41061720556,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/10 kleisma"},temp19k3:{frequencies:[261.6255653006,272.95237156345,284.76956174698,297.09836322231,309.96092731219,314.44113201634,328.05453510669,342.25731432435,357.07498823553,372.53417996774,377.91882441317,394.28042610165,411.35038641496,429.15937528906,447.73938330242,454.2110508691,473.87564511273,494.39160029408,515.79576952378,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/3 kleisma"},temp19k4:{frequencies:[261.6255653006,272.52663052146,283.88190679319,295.71031957624,308.03158289191,314.31844786309,327.4150485592,341.05734286691,355.26806612985,370.07090075127,377.62397563434,393.35830866491,409.74823893478,426.8210805314,444.6052930255,453.67960031314,472.58291784883,492.27387080735,512.78528301977,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/4 kleisma"},temp19k5:{frequencies:[261.6255653006,272.27150423996,283.35064249518,294.88062803952,306.8797443789,314.24485853342,327.03195662575,340.33937954017,354.18830437416,368.6007608062,377.44717941318,392.80607455881,408.78994578219,425.42422593284,442.73537947933,453.36102900438,471.8089732132,491.00759210237,510.98743222773,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/5 kleisma"},temp19k6:{frequencies:[261.6255653006,272.10155294862,282.99701916355,294.32876096318,306.11424676116,314.19580976213,326.77681046955,339.86157848985,353.47028562902,367.62391141072,377.32935907335,392.4383479509,408.1523292189,424.49552853314,441.49314144476,453.14877154631,471.29371440761,490.16521545931,509.79236747994,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/6 kleisma"},temp19k7:{frequencies:[261.6255653006,271.9802243463,282.7447017667,293.93521741989,305.56863311614,314.16077935352,326.59468561952,339.52070304385,352.95830848174,366.92774752709,377.24522513926,392.17589782962,407.69749910471,423.83341578697,440.60837682578,452.99722066906,470.92601754108,489.56440442681,508.94046380742,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/7 kleisma"},temp19k8:{frequencies:[261.6255653006,271.88926339885,282.55561052465,293.64040364533,305.16005936662,314.13450956378,326.45815718343,339.26526937521,352.57481080357,366.4064920117,377.18213591051,391.97917444376,407.35670799125,423.33750965456,439.94524339387,452.88359011983,470.65043349884,489.11427877975,508.30246674991,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/8 kleisma"},temp19k9:{frequencies:[261.6255653006,271.81853598083,282.40862793607,293.41130980736,304.84265779003,314.11407882217,326.35200974457,339.06673262958,352.27682225125,366.00158141044,377.13307501509,391.82623534045,407.09184571451,422.95220417284,439.43048454013,452.79523167251,470.4362008006,488.76446469244,507.80680338678,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/9 kleisma"},temp19lst:{frequencies:[261.6255653006,270.56149416036,279.80263334807,289.3594074481,304.78245180412,315.19242188443,325.95794877725,337.09117667186,348.60466454729,360.5114003397,379.7268899367,392.69661814622,406.10933276067,419.98016416303,434.32475952075,449.15930043669,473.09978287909,489.25870067642,505.96953296163,523.2511306012],description:"Cycle of 19 least squares thirds 5/4^5 = 3/2"},temp19lst2:{frequencies:[261.6255653006,270.86681403244,280.43448605562,290.34011310859,303.98143643885,314.71879896063,325.83542931914,337.34472599098,349.26055890156,361.59728998429,378.58655645252,391.95915298383,405.80409975455,420.1380835834,434.97837844393,450.34287106955,471.50175486263,488.15634183652,505.39920634693,523.2511306012],description:"Cycle of 19 least squares thirds 5/4, 3/2 (5), 6/5 (4)"},temp21ebs:{frequencies:[261.6255653006,270.48603901573,279.57527100587,288.89916626223,298.46378542286,308.59004184051,318.97773454914,329.63361550747,340.56460989801,352.13747205507,364.00912264098,376.18727282918,388.67983604901,401.90596519454,415.47356606258,429.3914526989,443.66866815503,458.78424493347,474.29007331382,490.19622772738,506.51304733863,523.2511306012],description:"Cycle of 21 equal beating sevenths"},temp22ebf:{frequencies:[261.6255653006,269.81217946012,278.43675961795,287.52273893052,297.09479717246,306.30473778727,316.00739221221,326.22911792828,336.99768333647,347.35886661388,358.27435338478,369.77379349451,381.88843101834,394.65117841871,406.93109909525,419.8679691216,433.49693671533,447.85502662133,461.66993710068,476.2239184443,491.55650493929,507.70935693135,523.2511306012],description:"Cycle of 22 equal beating fifths"},temp22ebt:{frequencies:[261.6255653006,270.16401944699,278.90739732088,287.86061708193,297.02871287074,306.4168425362,316.03028815926,325.87445510174,336.54752540671,347.4767459334,358.66827061689,370.12838991426,381.86355177507,393.88036006393,406.18556836568,419.52690380046,433.1884314408,447.17783799964,461.50298590676,476.17193984405,491.19294816955,506.57446222015,523.2511306012],description:"Cycle of 22 equal beating thirds"},temp22fo2:{frequencies:[261.6255653006,269.97341665226,278.58762814388,287.47669703533,296.64939669548,306.114775449,315.88217199169,325.96122111215,336.36187067071,347.09438029185,358.16933884319,369.59767092309,381.39065611261,393.55992749281,406.11749146369,419.07573510033,432.44744798202,446.24582051114,460.48446638525,475.17743368268,490.33921589034,505.98477744485,522.12955176559],description:"Fifth beats twice opposite rate as octave"},temp23ebs:{frequencies:[261.6255653006,269.54528659271,277.75645349026,286.26979186473,295.09642104593,304.24787054065,313.41421505132,322.9178815064,332.77128133421,342.98728793362,353.5792427091,364.56098080918,375.56059498003,386.96499273375,398.78907363541,411.04828247111,423.75862731373,436.93671323096,450.13624919654,463.82153026575,478.01042762353,492.72147385367,507.97388874722,523.2511306012],description:"Cycle of 23 equal beating major sixths"},temp24ebaf:{frequencies:[261.6255653006,269.28287293678,277.23083697142,285.33112867981,293.73889258015,302.30779732819,311.20195864933,320.26658492056,329.67528611807,339.26431305611,349.21731641877,359.36108127338,369.88988063787,380.8183283077,391.95623237686,403.5169050439,415.29914897519,427.52862168357,439.9924847314,452.92944495636,466.1143590732,479.79973930305,493.74741628009,508.22451419243,523.2511306012],description:"Cycle of 24 equal beating 11/8's"},temp24ebf:{frequencies:[261.6255653006,269.29177952703,277.18807786937,285.37455545576,293.58315284916,302.20762754558,311.09098010692,320.17688686519,329.5354160273,339.23795459232,349.23174343306,359.45337270909,369.98176018664,380.89707445632,391.84186131702,403.3411703213,415.18563115404,427.4653330282,439.77824302677,452.71493931339,466.03998256716,479.66882917609,493.70667148145,508.26043277122,523.2511306012],description:"24-tone ET with 23 equal beatings fifths. Fifth on 17 slightly smaller."},temp25ebt:{frequencies:[261.6255653006,269.07040607882,276.69392272178,284.50040351526,292.49424189123,300.67993013952,309.06207502162,317.64539198503,326.43470939254,335.74076076764,345.27015661764,355.02825763358,365.02055286832,375.25266439783,385.73034580726,396.45949385543,407.44613828076,419.07870286007,430.99044652419,443.18807578441,455.67844358274,468.46858279232,481.56568677979,494.97711759939,508.71042703507,523.2511306012],description:"Cycle of 25 equal beating thirds"},temp26eb3:{frequencies:[261.6255653006,268.53506427639,276.23413316293,283.52944261778,291.01742029734,298.70315454572,307.26715974579,315.38204761281,323.71124866952,332.26042290088,341.78653782772,350.81307822085,360.07800843467,370.40166886388,380.18393134541,390.22454217496,400.5303243006,412.0137801623,422.89501338113,434.06361862988,445.5271853685,458.30072684004,470.40439262311,482.82771472967,495.57913524385,509.78770018956,523.2511306012],description:"Cycle of 26 fifths, 5/4 beats three times 3/2"},temp26ebf:{frequencies:[261.6255653006,268.42568455944,275.6873347244,283.44184249631,290.6057533496,298.25588724353,306.42524452376,315.14906491362,323.2084665433,331.81486605817,341.00539333861,350.8196903474,359.88651586494,369.56871668171,379.90806097321,389.45994242989,399.66012078319,410.55259814459,422.18435687733,432.93022440227,444.40542617247,456.65946119637,469.74519313893,481.83429211771,494.74389287961,508.52968420524,523.2511306012],description:"Cycle of 26 equal beating fifths"},temp26ebmt:{frequencies:[261.6255653006,268.65375733515,276.22103845862,283.50786797993,291.35362426947,298.90860888253,307.04308924768,315.80151824033,324.23534814673,333.31608510092,342.06028051348,351.47518831899,360.54116941247,370.30254728737,380.81265974123,390.93325547321,401.83014055422,412.32317421544,423.62106542614,434.50024245702,446.21389528982,458.82603004394,470.97074536855,484.04700949484,496.63864979835,510.1961187079,523.2511306012],description:"Cycle of 26 equal beating minor thirds"},temp26ebs:{frequencies:[261.6255653006,268.70854008298,275.97438147252,283.42781183148,291.07367309004,298.91693448926,307.01176285104,315.31558194419,323.83378869523,332.57191674,341.53564330438,350.78687613393,360.27695513986,370.01204624828,379.9984780646,390.24273934583,400.81557597059,411.66137956276,422.7871998129,434.200265189,445.90799193987,457.99123299379,470.38643795716,483.10166179174,496.14516363988,509.5254229925,523.2511306012],description:"Cycle of 26 equal beating sevenths"},temp27c8:{frequencies:[261.6255653006,268.8683660761,273.88218275531,281.46429379013,289.25630678777,297.26403435806,305.49344487497,313.95067836072,319.80518189674,328.65861797738,337.75715313333,347.10756874671,356.7168418477,363.36884069528,373.42828707985,383.76621672426,394.39034225616,405.30858212106,412.86671295557,424.29645219584,436.04260883433,448.1139452722,460.51946086698,473.26841152735,482.09384659572,495.44005640506,509.15574351714,523.2511306012],description:"Cycle of 27 fifths tempered by 1/8 of difference between augm. 2nd and 5/4"},temp27eb2:{frequencies:[261.6255653006,268.46319812592,275.47953375729,282.6792426258,290.06711722511,297.6480770209,305.21714541248,313.19405229436,321.37943712173,329.77875040935,338.39757940759,347.00289091411,356.07187808578,365.37788286775,374.92710181611,384.72589137834,394.78077412888,404.81988946592,415.39993259502,426.25648711974,437.39677971686,448.82822593369,460.24174609969,472.27024976331,484.61312060812,497.27857467888,510.27504274822,523.2511306012],description:"Cycle of 27 fourths, 5/4 beats twice 4/3"},temp28ebt:{frequencies:[261.6255653006,268.20719354764,274.94677993062,281.84811597329,288.91508487862,296.15166190523,303.56191452522,311.15001492268,318.92023016627,326.87692943437,335.10396312415,343.5284476344,352.15511767098,360.98882840285,370.03454814671,379.29736707683,388.78249121135,398.49525813745,408.44113355924,418.72492751128,429.25553103998,440.03886948281,451.08100913788,462.38815755283,473.96667987616,485.82308640697,497.96404651665,510.39638953936,523.2511306012],description:"Cycle of 28 equal beating thirds"},temp29c14:{frequencies:[261.6255653006,268.03384168485,274.59908446169,281.12309545065,288.00894581307,294.85155418799,302.07367045706,309.47268578827,316.82523654187,324.58557784847,332.29718551084,340.4364979057,348.77517523396,357.06148706459,365.80737813473,374.49834647311,383.67133729641,392.78672100419,402.40767098088,412.26427490957,422.0589810157,432.39692561869,442.66994710331,453.51274088813,464.62111626441,475.65973015548,487.31057837675,498.88825560972,511.10806227553,523.2511306012],description:"Cycle of 29 fifths 1/14 comma positive"},temp29ebf:{frequencies:[261.6255653006,267.97141371953,274.40384216744,281.08918054527,287.86573007783,294.90872015661,302.04780073409,309.28428172011,316.80528774769,324.42890571749,332.35226986162,340.383734589,348.52477529448,356.98590767403,365.56247629567,374.47626314535,383.51165984234,392.90231649713,402.42108995343,412.06973029551,422.09773822292,432.26256191617,442.8270465847,453.53566813958,464.39038927288,475.67189906986,487.10732348594,498.99237046175,511.03956815915,523.2511306012],description:"Cycle of 29 equal beating fifths"},temp29fo:{frequencies:[261.6255653006,267.94780983951,274.42283293416,281.05432651499,287.84607006616,294.80193939197,301.92589896847,309.2220107369,316.69443479624,324.34743177532,332.18536334326,340.21270232633,348.43402388135,356.85401564372,365.47747852664,374.30932945854,383.35460418662,392.61845788025,402.10617708826,411.82316930666,421.77497497272,431.96726840975,442.4058610624,453.0967048103,464.04589268124,475.25967298378,486.74443697706,498.50673304697,510.55326782272,522.89091000079],description:"Fifth beats with opposite equal rate as octave"},temp31c51:{frequencies:[261.6255653006,267.17944246504,273.80687224646,279.61933836952,286.55534345926,292.63843680803,298.85066583755,306.26370726525,312.76517639908,319.40466275447,327.32754956004,334.27616903285,342.56794607269,349.84009583671,357.26662128823,366.1286782788,373.90098334082,383.17565840352,391.30984260196,399.61670205031,409.52926208827,418.22288720188,428.59697681668,437.69538032917,446.98692528774,458.07451174337,467.79867446983,477.72926229583,489.57941763243,499.97237729845,512.37427391379,523.2511306012],description:"Cycle of 31 51/220-comma tempered fifths (twice diff. of 31-tET and 1/4-comma)"},temp31coh:{frequencies:[261.6255653006,267.17903658035,272.71444919697,278.8328003927,286.67318542907,292.31259119845,298.22448926086,305.9625493141,312.79375273624,319.37019903425,325.99008611032,333.53448283298,342.55073731576,349.35067604096,356.49690427728,365.94514964733,373.94225818849,381.74854907994,389.68867781295,401.66236977474,409.34549662494,417.52928752537,426.20510506248,437.61344561246,447.02040600938,456.30467151405,466.17931462488,479.8608061495,489.18804557359,499.02680928636,509.58872491278,523.2511306012],description:"Differential coherent 31-tone scale, interval=8, OdC, 2003"},temp31eb1:{frequencies:[261.6255653006,267.35556661283,273.21106374578,279.19480525048,287.36432599524,293.65804565963,300.08960744161,306.66203029506,313.37839929357,320.24186707858,327.25565533923,334.42305632458,341.74743438901,349.23222958864,356.8809512704,367.32364464292,375.36859607341,383.58974428421,391.99094825517,400.57615379751,409.34938620036,418.31476585427,427.47650107887,436.83889236244,446.40633438056,459.46863260649,469.5317006585,479.81516534138,490.32385367952,501.06269841655,512.03674033076,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats equal 5/4. Third 1/18 synt. comma higher"},temp31eb1a:{frequencies:[261.6255653006,267.52830363402,273.56421824856,279.73631545395,286.19123047598,292.64821393201,299.25087842544,306.00251077972,312.90647197491,319.96619882071,327.18520755731,334.56708808783,342.11551697966,349.83425186023,357.90667665031,365.98168819447,374.23888853079,382.68238383924,391.31637942763,400.14517332125,409.17316051655,418.40483516889,427.84479530109,437.49773526159,447.36846272566,457.69148927209,468.01782376277,478.57713873597,489.37469064597,500.41585743254,511.7061296998,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats equal 7/4"},temp31eb2:{frequencies:[261.6255653006,267.43633367564,273.37616065041,279.44791264824,286.8151286113,293.18536340431,299.69708268426,306.35342885652,313.15761412007,320.11292201761,327.22270902014,334.4904061467,341.91952062013,349.51363755953,357.2764217104,366.69546492458,374.83986170174,383.16514754137,391.67534003419,400.37454600262,409.26696348258,418.35688374945,427.64869338884,437.14687641357,446.85601642745,458.63669049374,468.82312458207,479.23580188553,489.87974732177,500.7600974131,511.88210276525,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats twice 5/4"},temp31eb2a:{frequencies:[261.6255653006,267.30377559621,273.10522335955,279.03258328435,287.71713441117,293.9616250555,300.34164347605,306.86013111019,313.520093235,320.3246003528,327.27678960683,334.37986622751,341.63710501026,349.05185182525,356.62752721996,367.72712485201,375.70811839104,383.86232802855,392.19351543866,400.70551714108,409.40225971792,418.28775270674,427.36609266644,436.64146506587,446.11814621352,460.00303307438,469.98674378481,480.18713671772,490.60891465214,501.25688243424,512.13594919255,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 3/2"},temp31eb2b:{frequencies:[261.6255653006,267.52098517401,273.5492512983,279.71335720518,286.24081966732,292.69091492047,299.28635537219,306.03041620307,312.92644639599,319.97787039914,327.18818982659,334.56098519707,342.09991771207,349.80873107384,357.97195918064,366.0384300542,374.28666922186,382.72077261519,391.34492846269,400.16341936959,409.18062444454,418.40102147414,427.82918914659,437.46980932536,447.32766937413,457.76662230541,468.08184681118,478.62951259033,489.41485742956,500.44323714283,511.72012823096,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 7/4 (7/4 beats twice 5/4 gives 31-tET)"},temp31ebf:{frequencies:[261.6255653006,267.58895287558,273.47207673981,279.84020613447,286.1226232561,292.32048149598,299.02929415269,305.64780689513,312.81195283539,319.87967238294,326.85226402826,334.39967773649,341.84550545999,349.90516819854,357.85635261941,365.7005167875,374.19135817901,382.56791460144,390.83172556312,399.77680617055,408.60149248083,418.153686518,427.57731316062,436.87410111252,446.93731687602,456.86508723973,467.61130449655,478.21288647115,488.67177324268,499.99289085438,511.16163412976,523.2511306012],description:"Cycle of 31 equal beating fifths"},temp31ebf2:{frequencies:[261.6255653006,268.47208070676,273.9410776603,281.1098810272,286.83632036086,292.67941197057,300.33857976184,306.45672349367,312.69950064833,320.88257689406,327.41921873353,335.98749730659,342.8318387903,349.81560715632,358.96997989875,366.28249344322,375.86779039798,383.5245262314,391.33723606718,401.57819634767,409.75867428285,420.48170539436,429.04726334649,437.78730875453,449.24382765192,458.39529367535,467.73318258368,479.97335657757,489.75080836323,502.56716753771,512.80487382351,523.2511306012],description:"Cycle of 31 fifths, 3/2 beats equal 7/4"},temp31ebs:{frequencies:[261.6255653006,267.49970467488,273.5255021102,279.70687352555,286.04783307233,292.55250379055,299.22511217624,305.93841412724,312.82503848113,319.88946348152,327.13627425327,334.57018402367,342.19602042672,349.86836735032,357.73879552978,365.81242398075,374.09449397971,382.59039112658,391.30563169636,400.0740276901,409.06880268892,418.29580572823,427.76103041037,437.4706255228,447.4309015606,457.4519243295,467.73166961576,478.27681510244,489.09421437332,500.19089295757,511.57406697079,523.2511306012],description:"Cycle of 31 equal beating sevenths"},temp31ebs1:{frequencies:[261.6255653006,267.15774161678,272.80689957055,278.57550963341,287.00766304701,293.07655388437,299.27377555355,305.60203820353,312.06411627904,318.6628357552,328.30838543699,335.25059642555,342.33960321815,349.5785118895,356.97048813578,364.51877275634,375.55232561156,383.49353066309,391.60265342908,399.88324912115,408.33893898267,416.9734277591,429.59472356821,438.6786743379,447.954711436,457.42689142912,467.09936712211,476.97636845082,491.41388278482,501.80502418824,512.41589335668,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats equal 7/4. 17/9 schisma fifth"},temp31ebs2:{frequencies:[261.6255653006,267.52957387699,273.56681763873,279.74030009523,286.13080593576,292.58781532731,299.19053769144,305.94226304679,312.84635035505,319.90623967996,327.21431324819,334.59843914397,342.14920188821,349.87035796113,357.76575454309,365.83932576918,374.19671203989,382.64107477964,391.27599615891,400.10577865514,409.13482199124,418.3676180873,427.92498506647,437.58181190976,447.45656083737,457.55415226032,467.87960969795,478.43807796233,489.36771995709,500.41110255739,511.70370009509,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats twice 7/4. Almost 31-tET"},temp31ebsi:{frequencies:[261.6255653006,267.31506098272,273.2139312212,279.32987994092,285.67089487749,292.24525964349,299.06156112772,306.12870201667,312.71376833043,319.5411631371,326.61980701828,333.95894503443,341.56816427739,349.45740040562,357.63696227352,366.11753111539,374.01961057916,382.2124855973,390.7068565555,399.51382386635,408.64488423766,418.11197066674,427.92744450622,438.10412760018,447.58662182594,457.41807184609,467.61131789159,478.17967690081,489.136951815,500.49745466086,512.27602199232,523.2511306012],description:"Cycle of 31 equal beating major sixths"},temp31ebt:{frequencies:[261.6255653006,267.508686718,273.53300221315,279.70190221389,286.0188552526,292.48741633838,299.11122072338,305.89399777728,312.83956126154,319.95181832117,327.23477005018,334.588671338,342.11906613961,349.83019225353,357.72638299858,365.81208378543,374.09184045976,382.57031224079,391.25226584136,400.14258695229,409.24627647794,418.43865241641,427.85164834976,437.49055334209,447.36079317794,457.46791872903,467.81761394993,478.41570188597,489.26814549043,500.38104816704,511.76065992154,523.2511306012],description:"Cycle of 31 equal beating thirds"},temp31g3:{frequencies:[261.6255653006,266.21023205793,270.87523947024,275.62199471997,289.25983723073,294.32876096318,299.48651076576,304.73464409936,310.07474405997,315.5084236529,331.11985608357,336.92232427465,342.82647426905,348.83408706747,354.94697625466,361.16698614085,379.03761443004,385.6797831671,392.4383479509,399.31534788729,406.31285900225,413.43299207996,433.88975562921,441.49314144476,449.22976592409,457.10196592055,465.11211608996,473.26263524279,496.67978412536,505.38348615935,514.23971114652,523.2511306012],description:"Wonder Scale, cycle of 31 sevenths tempered by 1/3 gamelan residue, s.wonder1"},temp31g4:{frequencies:[261.6255653006,266.75106828164,271.97698492363,277.30528403104,287.97116616014,293.61280545832,299.36497003718,305.22982618403,311.20958045219,317.30648321666,329.51091606373,335.96636137331,342.54827390456,349.25913259695,356.10146388137,363.07784268567,377.0427625798,384.42940207435,391.96075366681,399.63965159508,407.46898671086,415.4517078616,431.43106138252,439.88322158593,448.50096908674,457.28754710584,466.24626137824,475.38048570318,493.66485502092,503.33623955776,513.19709315346,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/4 gamelan residue"},temp31g5:{frequencies:[261.6255653006,267.07609791103,272.64018328418,278.3201871026,287.20071989568,293.1840695693,299.2920706603,305.52732176658,311.89247392994,318.39023342226,328.54930692245,335.39408374843,342.38146206091,349.5144087687,356.79595852417,364.22920722399,375.85089312601,383.68111960674,391.67447579625,399.83436022994,408.16424460367,416.66766586736,429.96253800336,438.92009035289,448.06425836543,457.39892986705,466.92807368021,476.65574406444,491.86469103391,502.11187209711,512.57253609913,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/5 gamelan residue"},temp31g6:{frequencies:[261.6255653006,267.29300481931,273.08321314304,278.9988528944,286.68823620156,292.89859205665,299.24348036203,305.72581270733,312.34856974117,319.11478979112,327.9097940226,335.01310892782,342.27029731995,349.68469585889,357.2597060542,364.99881126821,375.05840734677,383.18307527508,391.48374080678,399.96422099622,408.62840644009,417.48028065389,428.98629965513,438.27917301224,447.77335490729,457.47320099372,467.3831713443,477.50781354513,490.66822826519,501.2972832058,512.15658610391,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/6 gamelan residue"},temp31g7:{frequencies:[261.6255653006,267.44804485495,273.40010374961,279.48462577409,286.32273545638,292.69485077785,299.20877758909,305.86767190621,312.6747599825,319.63333987564,327.45376040978,334.74124806474,342.19091885571,349.80638115363,357.59132564064,365.54952414453,374.49336901227,382.82772265927,391.34755742947,400.0570012071,408.96027492626,418.06169111145,428.2903432132,437.821949061,447.565680886,457.52625955954,467.70851101039,478.11736856842,489.81539667363,500.71624319167,511.85968815724,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/7 gamelan residue"},temp31h10:{frequencies:[261.6255653006,267.8597617245,273.71072489962,279.68949451567,286.35413084244,292.60907359238,299.00064605783,306.12544311476,312.81225819702,320.26616683613,327.26186315247,334.41036913783,342.37893460431,349.85764856047,358.19430059608,366.01847563765,374.01355928612,382.92581520849,391.29021017831,400.61414686654,409.36491649663,418.30683086326,428.27453775026,437.62950220286,447.18881072031,457.84473927605,467.84561789912,478.99376955124,489.45661357347,500.14800438647,512.06587983104,523.2511306012],description:"Cycle of 31 fifths tempered by 1/10 Harrison's comma"},temp31h11:{frequencies:[261.6255653006,269.21878403965,274.22153683641,279.31725480271,287.42394184039,292.76499331753,298.20529308835,306.86017365004,312.56239683413,321.63396690808,327.61072570921,333.69854562169,343.38355445704,349.7644731902,359.91576765193,366.60389537541,373.41630725864,384.25405432087,391.39444778107,402.75397853578,410.23814647641,417.86138882164,429.98907567166,437.9793418028,446.11808436842,459.06587176894,467.59645436585,481.16761342105,490.10890120058,499.21634316923,513.70521350358,523.2511306012],description:"Cycle of 31 fifths tempered by 1/11 Harrison's comma"},temp31h12:{frequencies:[261.6255653006,270.35656674398,274.64794212014,279.0074329748,288.31850430385,292.89498819461,297.54411640065,307.47379627264,312.35433239663,322.77826253379,327.90172667751,333.10651564349,344.2229903876,349.68684701428,361.35664068489,367.0924599966,372.91932620731,385.3644371109,391.48133253101,404.54589939324,410.96726244836,417.49055189439,431.4231018689,438.27108715714,445.22777061734,460.08596806997,467.38892215786,482.98668436162,490.65313915878,498.44128370652,515.07533168556,523.2511306012],description:"Cycle of 31 fifths tempered by 1/12 Harrison's comma"},temp31h8:{frequencies:[261.6255653006,264.15772162327,272.31089540773,280.71571360382,283.4326348965,292.18072491748,301.19882119914,304.11398928909,313.50040506268,316.53463456122,326.30440921209,336.37572681506,339.63135730234,350.11400731728,353.50260556257,364.41338872146,375.66093089504,379.29678648678,391.00370158472,394.788050771,406.97310157871,419.5342415638,423.59472503043,436.668886633,450.14658206855,454.50334862767,468.53149836075,473.06620699858,487.66729542944,502.71904336675,507.58463809481,523.2511306012],description:"Cycle of 31 fifths tempered by 1/8 Harrison's comma"},temp31h9:{frequencies:[261.6255653006,266.20804854623,273.08769296879,280.14512719472,285.05198845745,292.41861893027,299.97562432697,305.22982618403,313.11791376428,318.60230743232,326.83598255713,335.28243953396,341.15505431438,349.97156260351,356.10146388137,365.30423365264,374.74482972428,381.30864508241,391.16284711627,398.01423104415,408.30015740759,418.85190169901,426.18827121524,437.20230245522,448.50096908674,456.35665612784,468.15032961482,476.35018210031,488.66055322307,501.28905975035,510.06935121341,523.2511306012],description:"Cycle of 31 fifths tempered by 1/9 Harrison's comma"},temp31ms:{frequencies:[261.6255653006,267.90457886781,273.56603860918,280.13162379381,286.05147140959,292.91670530125,299.10673210371,306.2852939563,312.75782903301,320.26401722477,327.03195662575,334.88072358477,341.95754947331,350.16453098318,357.56433846376,366.14588292411,373.88341429498,382.85661659068,390.94728541851,400.33002063726,408.78994578219,418.60090448096,427.44693588739,437.70566275183,446.9554220819,457.68235263341,467.35426952494,478.57076966998,488.68410850494,500.41252756995,510.98743222773,523.2511306012],description:"Cycle of 31 5th root of 5/4 chromatic semitones"},temp31mt:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,285.65057792122,292.50627485027,299.52642572255,306.71505845072,314.07622014281,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,365.63273925968,374.40803131735,383.39382442208,392.5952765698,402.01756125559,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,457.04092569426,468.01003810189,479.24227945773,490.7440946167,502.52195335034,510.98743222773,523.2511306012],description:"Cycle of 31 square root of 5/4 meantones"},temp31to:{frequencies:[261.6255653006,267.53589118464,273.57973594714,279.76011588387,286.08011543105,292.54288870475,299.15166280294,305.90973254237,312.82047235615,319.88733118052,327.11383586587,334.50359293692,342.06029039257,349.78769954651,357.68967690936,365.77016611333,374.03319988033,382.48290424395,391.12349182016,399.95927701915,408.9946695077,418.23417857039,427.68241536008,437.34409519915,447.22403993284,457.32718033558,467.65855857191,478.22333071276,489.02676930874,500.07426891005,511.37133726836,522.92361522538],description:"Third beats with opposite equal rate as octave"},temp31w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,356.97015906904,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 31 thirds tempered by 1/10 Wuerschmidt comma"},temp31w11:{frequencies:[261.6255653006,267.42197848694,273.34681181717,279.40291364591,286.91265577589,293.26931399985,299.76680465545,306.40825140143,313.19684009872,320.13583435099,327.22856275086,334.47843511672,341.88893114233,349.46360748692,357.20610515709,366.80702823839,374.93377645155,383.2405741708,391.73141324262,400.41036830387,409.28161120445,418.34939984118,427.61808628905,437.09212645494,446.77606497733,458.78443573652,468.94897543376,479.33871705477,489.95864449434,500.81386326642,511.90958055231,523.2511306012],description:"Cycle of 31 thirds tempered by 1/11 Wuerschmidt comma"},temp31w12:{frequencies:[261.6255653006,267.46216197987,273.42896553533,279.52888390694,286.63976159726,293.03439921138,299.57169286871,306.25482853931,313.08705807777,320.0717057658,327.2121755928,334.51194000906,341.9745565771,349.60365642833,357.40295156876,366.49485373999,374.67097398132,383.02949720151,391.57448819698,400.31011139524,409.24061734241,418.37035125513,427.70376253715,437.24539007841,446.99988402026,458.37102198078,468.59680699416,479.0507177135,489.73784363297,500.66339010461,511.83267129957,523.2511306012],description:"Cycle of 31 thirds tempered by 1/12 Wuerschmidt comma"},temp31w13:{frequencies:[261.6255653006,267.49616787535,273.49850059869,279.63551774138,286.40905375482,292.83577174957,299.40669857094,306.12507001426,312.99419468163,320.01745343487,327.19830857776,334.54029455907,342.04702698539,349.72220057363,357.56974544479,366.23091133098,374.44874787361,382.85098402684,391.44175752404,400.22529663315,409.2059314354,418.38808223908,427.77627085136,437.37511801764,447.18935574711,458.02150335998,468.29902426597,478.80716193382,489.55109116118,500.53609997149,511.7676037195,523.2511306012],description:"Cycle of 31 thirds tempered by 1/13 Wuerschmidt comma"},temp31w14:{frequencies:[261.6255653006,267.52531966849,273.55811412425,279.72695193191,286.21145362846,292.66562728487,299.26534666214,306.01389218024,312.91461811683,319.97095981222,327.18642276261,334.56459899164,342.10915585471,349.82384327668,357.71250180664,366.00482869479,374.25837321367,382.69803863807,391.32802257119,400.15261355898,409.17620468607,418.4030501472,427.83842920638,437.48634583318,447.35182400506,457.72212848121,468.04393370572,478.5984967348,489.39107187298,500.42702361787,511.71183724724,523.2511306012],description:"Cycle of 31 thirds tempered by 1/14 Wuerschmidt comma"},temp31w15:{frequencies:[261.6255653006,267.55058630145,273.60979095449,279.80621811014,286.0403087015,292.51824916652,299.142895223,305.91756930507,312.84566908988,319.93066920159,327.176122954,334.58566413263,342.16300881716,349.91195724514,357.83639571789,365.80900091179,374.09345893182,382.56553686518,391.22947931103,400.08963362509,409.15044340767,418.41645289306,427.89230922859,437.58276480531,447.49267964143,457.46282942114,467.82296651709,478.41773025336,489.25243249537,500.33250769337,511.66351279634,523.2511306012],description:"Cycle of 31 thirds tempered by 1/15 Wuerschmidt comma, almost 31-tET"},temp31w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,278.83674800471,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,356.32163474066,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,445.77026919414,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 31 thirds tempered by 1/8 Wuerschmidt comma"},temp31w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,356.68171037974,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,446.1797636563,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 31 thirds tempered by 1/9 Wuerschmidt comma"},temp32ebf:{frequencies:[261.6255653006,266.99024669658,272.64192755012,278.59596223891,284.86852586219,291.47665855944,298.4383110444,304.47357861204,310.83171904039,317.53000821614,324.58664278196,332.02079024875,339.85265231199,346.64232633314,353.79523650997,361.33080945807,369.26952339658,377.6329406438,386.44378308989,395.72598875513,403.77301123196,412.25053247262,421.18158418009,430.59042797451,440.50262726312,450.945108697,459.9980085603,469.53522100534,479.58265227668,490.16760508681,501.31882698223,513.0666164148,523.2511306012],description:"Cycle of 32 equal beating fifths"},temp33a12:{frequencies:[261.6255653006,266.94139439278,272.36523138282,277.89927397158,284.73748648557,290.5229142688,296.42589304627,302.44880952638,308.5941041528,316.1876182869,322.61206437627,329.16704532903,335.85521147284,342.67927280589,351.11151394887,358.24555988319,365.52455654698,372.95145333883,382.12859604556,389.89286138208,397.81488464837,405.89786889835,414.14508930077,424.3358756666,432.95772800787,441.75476312782,450.73053786756,459.88868900496,471.20507923536,480.77924170569,490.54793493862,500.51511311891,512.83118959171,523.2511306012],description:'Cycle of 33 fifths tempered by 1/12 "11 fifths" comma'},temp34eb2a:{frequencies:[261.6255653006,267.30377714022,273.10522651459,279.03258811962,285.08859470169,291.27603831759,293.96161656556,300.34163653669,306.86012579271,313.52008961307,320.32459850253,327.27678960683,334.37986815896,341.63710895701,349.05185787385,356.62753339984,364.36762821878,372.27571081823,375.70810971034,383.86232137672,392.19350864246,400.70551251195,409.40225735312,418.28775270674,427.36609513501,436.64147011015,446.11815394416,455.80051576031,465.69301950749,469.98673021106,480.18712562304,490.60890615053,501.2568766435,512.13594623433,523.2511306012],description:"Cycle of 34 thirds, 5/4 beats twice 3/2"},temp34ebsi:{frequencies:[261.6255653006,266.99788221884,272.57696520339,278.14698300137,283.93137567849,289.70637009331,295.70363067102,301.69114426564,307.90910207865,314.36637542255,320.81315450625,327.50805511637,334.19207543599,341.13334896852,348.06334108321,355.26005273528,362.44506998142,369.90662102486,377.65534755435,385.39148338011,393.42536256589,401.44618836017,409.77571602141,418.09170597447,426.72775997548,435.3497813463,444.30364141769,453.60211446558,462.88547695756,472.52613162558,482.15112257833,492.14655599832,502.125745683,512.48900933996,523.2511306012],description:"Cycle of 34 equal beating major sixths"},temp34ebt:{frequencies:[261.6255653006,266.93199967636,272.36578831151,277.92998813547,283.62773001764,289.46221547291,295.43672985114,301.55463262869,307.81936583026,314.23445063866,320.80349820247,327.5302045997,334.16324661664,340.95548417522,347.91073392156,355.03290870525,362.32601803901,369.79415983503,377.44153922514,385.2724539348,393.29131162714,401.50262139782,409.91100286066,418.20230551726,426.69260242977,435.3866631899,444.28938530291,453.40576935587,462.74094691381,472.3001707563,482.08881469934,492.11238732973,502.37652397446,512.8870010249,523.2511306012],description:"Cycle of 34 equal beating thirds"},temp34w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,281.06516151868,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,351.5637974276,359.28803828513,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,449.40705529895,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 34 thirds tempered by 1/10 Wuerschmidt comma"},temp34w5:{frequencies:[261.6255653006,266.84400329087,272.16653090376,277.59522118835,285.18293865736,290.87125860088,296.67303727804,302.5905394405,308.62607485572,314.78199505921,321.06070411799,327.46464776022,333.99632772474,340.65828815182,347.45313114562,356.95032497057,364.07013256472,371.33195122039,378.73861781039,386.29301712643,393.99809806388,401.85686830172,409.8723892274,418.04779164423,426.38625992488,434.89105154177,443.56547936435,455.68978545099,464.77906877635,474.04965097839,483.50514461458,493.14924173292,502.98569917153,513.01835960126,523.2511306012],description:"Cycle of 34 thirds tempered by 1/5 Wuerschmidt comma"},temp34w6:{frequencies:[261.6255653006,267.02047390967,272.52663052146,278.06968704778,283.80368699438,289.65592453275,295.6288411546,301.72492193478,307.94670831505,314.29679425134,320.77782174252,327.39249271371,334.14356492035,341.03384719449,348.06621207862,355.14570764395,362.46906930947,369.94344613252,377.57194788125,385.35775486011,393.30411308867,401.41432870635,409.69178284295,418.13992649314,426.76227456772,435.56242170336,444.42154779224,453.58584388327,462.93911228358,472.48525217168,482.22824196207,492.17213857029,502.32108537715,512.67931193931,523.2511306012],description:"Cycle of 34 thirds tempered by 1/6 Wuerschmidt comma"},temp34w7:{frequencies:[261.6255653006,267.14659557842,272.78413659373,276.97759061533,282.82259314675,288.79093992594,294.88523549471,301.10813946365,307.46236235072,313.95067836072,320.57591524951,327.34096447962,334.24877325582,341.30235609413,348.50479124753,353.86228320674,361.3297679824,368.9548354601,376.74081403286,384.69109896591,392.80915578714,401.0985286019,409.56282802254,418.20574780595,427.03105980737,436.04260883433,442.74580331919,452.08897683944,461.62931955889,471.37098776125,481.31823237599,491.47539447856,501.84689823661,512.43727265667,523.2511306012],description:"Cycle of 34 thirds tempered by 1/7 Wuerschmidt comma"},temp34w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,276.16133434798,282.08899791039,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,352.90276052629,360.47764004221,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,441.49314144476,450.96957067185,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 34 thirds tempered by 1/8 Wuerschmidt comma"},temp34w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,281.5197407082,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,352.15826244648,359.81626391233,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,440.52130132575,450.10083737825,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 34 thirds tempered by 1/9 Wuerschmidt comma"},temp35ebsi:{frequencies:[261.6255653006,266.57889315685,271.71450319234,277.03910343536,282.55964921963,288.28335166643,294.21768457231,300.3704033182,306.74954035112,312.48255822683,318.42655208483,324.58928450704,330.97880464114,337.6034601246,344.47190142434,351.59310182482,358.97636423712,366.63132974323,373.51095055492,380.64374131787,388.03901984907,395.70644562254,403.65603146762,411.89816253905,420.4436041444,429.30351656419,438.48947534443,446.74502047858,455.30437022365,464.17870575399,473.37961532931,482.91911915131,492.80967579032,503.06420520117,513.69610107468,523.2511306012],description:"Cycle of 35 equal beating major sixths"},temp37ebs:{frequencies:[261.6255653006,266.54882370674,271.76117582243,276.81154351547,282.15846820925,287.3392230449,292.82419544994,298.13870690002,303.76528724985,309.7222634282,315.49411047005,321.60488016898,327.52574544851,333.79428377068,339.86801168664,346.29839044807,353.1063601343,359.70275861181,366.68649693083,373.45319917734,380.61724149647,387.55864668979,394.907650003,402.68818871569,410.22692643911,418.2083422233,425.94171605945,434.12919568644,442.06222705415,450.46108885682,459.35313199837,467.96883572953,477.09045247204,485.92859505436,495.28571063961,504.35203618851,513.95073426779,523.2511306012],description:"Cycle of 37 equal beating sevenths"},temp37ebt:{frequencies:[261.6255653006,266.44794669373,271.38606435347,276.44269655507,281.62068893017,286.92295259461,292.35247205526,297.91229840101,303.60556084342,309.43546158348,315.40528084,321.51837488336,327.7781831369,333.8061589736,339.9788066307,346.29959662983,352.77208770341,359.39991652139,366.18681567584,373.13659908053,380.25317623321,387.54055229398,395.00282568127,402.64419215928,410.46895395112,418.00392297279,425.71973353547,433.62072344005,441.71133574434,449.99612361773,458.47974493329,467.16697490003,476.06269518051,485.17191513214,494.49975815874,504.05146656861,513.83241864047,523.2511306012],description:"Cycle of 37 equal beating thirds"},temp3ebt:{frequencies:[261.6255653006,330.24866439584,416.02753826489,523.2511306012],description:"Cycle of 3 equal beating thirds"},temp4ebmt:{frequencies:[261.6255653006,310.36356181711,368.84915763691,439.03187262068,523.2511306012],description:"Cycle of 4 equal beating minor thirds"},temp4ebsi:{frequencies:[261.6255653006,310.92686529443,370.08842528703,441.08229727815,523.2511306012],description:"Cycle of 4 equal beating major sixths"},temp53ebs:{frequencies:[261.6255653006,264.97369574946,268.51842903659,272.2713107977,275.7058824095,279.342132921,283.19190440533,286.71515038985,290.44528277978,294.39444663109,298.00865518834,301.83509073593,305.88621462445,310.17522146598,314.10044576101,318.25616227247,322.65590013911,326.68246801001,330.94547393755,335.45880590636,339.58933056423,343.96239778214,348.59225483118,353.4939765515,357.97994689961,362.72933676467,367.75761084241,372.35940104854,377.23140801172,382.38950169412,387.11009989437,392.10789272021,397.3991578827,403.00112480292,408.12795020911,413.55582307376,419.3024201087,424.56160969567,430.12961973912,436.02458225248,441.41955172249,447.13131541518,453.17847579573,459.58072182695,465.43995070361,471.64323472325,478.21077610462,484.22127701861,490.5847168482,497.32181757346,503.48749858841,510.01522804676,516.92626488088,523.2511306012],description:"Cycle of 53 equal beating harmonic sevenths"},temp53ebsi:{frequencies:[261.6255653006,265.08815342092,268.54511416675,272.14096825888,275.73097879106,279.31515577755,283.04333763043,286.76545980208,290.48153462492,294.34691329876,298.20601137227,302.05883614112,306.06646174912,310.06757319581,314.22944103195,318.38454699407,322.53289853772,326.84792360782,331.1559371129,335.45694960827,339.93076775401,344.39731584765,348.85660497561,353.49505873963,358.12597594237,362.74936749482,367.55851619873,372.35985057275,377.35409330215,382.34021841275,387.3182413058,392.49627136254,397.66588656991,402.8271015422,408.19568270781,413.55554119639,418.90668980097,424.47283359145,430.02993471298,435.57800299537,441.34898312942,447.11058430799,453.10367443873,459.08702461554,465.06065502782,471.27428848056,477.47782740925,483.67128540638,490.11358366391,496.54541154487,502.96678854317,509.64616466331,516.31468511822,523.2511306012],description:"Cycle of 53 equal beating major sixths"},temp53ebt:{frequencies:[261.6255653006,265.06408390481,268.61942739596,272.14046995187,275.78114176924,279.3866896354,283.11473715719,286.8068186786,290.62433945466,294.40503066492,298.31417332138,302.18560037327,306.18856199636,310.15290198883,314.25193588094,318.31142144389,322.50883104059,326.66574402863,330.9638909587,335.40807143415,339.80937339101,344.36021509659,348.86714800611,353.52720940583,358.14231011275,362.91421253104,367.64007568808,372.5265022753,377.36578530136,382.3694885676,387.32491504393,392.44870495902,397.52306357866,402.76982394565,407.96596497751,413.33865052838,418.89387526617,424.39550434456,430.08405345947,435.71772111176,441.54279782575,447.31167294612,453.27655186057,459.18388087721,465.29191391782,471.34101945319,477.59564801313,483.78993007475,490.19466758193,496.53761595054,503.09606844751,509.59124455492,516.30709807412,523.2511306012],description:"Cycle of 53 equal beating thirds"},temp57ebs:{frequencies:[261.6255653006,264.8277951114,268.04955507264,271.33445958124,274.63939933433,278.00911284632,281.39937814535,284.85609135359,288.33388628378,291.8798428433,295.4474281527,299.08493440323,302.74462553584,306.42663750246,310.18081323211,313.95788745209,317.80898926922,321.68357852782,325.63410692083,329.60872876069,333.66125215256,337.73849074816,341.89564167341,346.07814569972,350.28615866377,354.57664765081,358.89330206442,363.2945606359,367.72266219717,372.23755268366,376.77997919433,381.41143316036,386.07113633698,390.82216502962,395.60217018381,400.41132814233,405.3147417445,410.24806349136,415.27807310888,420.33876095689,425.4986359826,430.68997922537,435.98307052812,441.30844296951,446.73819252663,452.20105472878,457.69723413281,463.30113726238,468.93921588924,474.68780077646,480.47144432851,486.36844238798,492.30140788993,498.35065469266,504.4367956254,510.6422225112,516.88549425379,523.2511306012],description:"Cycle of 57 equal beating harmonic sevenths"},temp59ebt:{frequencies:[261.6255653006,264.71774803536,267.84005552541,271.00645194849,274.20369404321,277.44608402629,280.72006081878,284.04026812198,287.39281927261,290.79271098314,294.22572486522,297.70721418515,301.22261902261,304.78766466692,308.38743972219,312.03804524126,315.72421513091,319.46243532331,323.23707283878,327.06501147453,330.93024062011,334.83312418563,338.79111909993,342.78767359614,346.84065928187,350.93313112856,355.08338946648,359.27407840069,363.52394351295,367.81521017702,372.16707169716,376.56132871014,381.01763522853,385.51735474883,390.08061088885,394.68832388107,399.36109834092,404.07939600279,408.86431870994,413.69585627072,418.57446131049,423.52195428502,428.51764625978,433.58387848862,438.69946807471,443.88729218006,449.12565432864,454.4379830027,459.80206875391,465.24189440938,470.73471441434,476.30509804765,481.92974808423,487.63381799831,493.39345924022,499.23442935246,505.13230099895,511.11345315981,517.15287439575,523.2511306012],description:"Cycle of 59 equal beating thirds"},temp5ebf:{frequencies:[261.6255653006,300.99242152138,345.28013476976,397.76927639746,456.81956072863,523.2511306012],description:"Cycle of 5 equal beating fifths"},temp5ebs:{frequencies:[261.6255653006,300.72264357012,345.40501873528,396.4705903526,454.83124362955,523.2511306012],description:"Cycle of 5 equal beating harmonic sevenths"},temp6:{frequencies:[261.6255653006,292.50629174609,327.17562781541,373.91502405318,418.23333786749,467.5991148023,523.2511306012],description:"Tempered wholetone scale with approximations to 5/4 (4), 7/5 (4) and 7/4 (1)"},temp65ebf:{frequencies:[261.6255653006,264.41601755103,267.24454169377,270.11165630441,273.01788702098,275.96376822181,278.903505094,281.88335012505,284.90384796088,287.96555727487,291.06903608099,294.16604397209,297.30530343106,300.48739162418,303.71289539257,306.98240612292,310.29652144782,313.60372560746,316.95605020285,320.35411162765,323.7985328567,327.28994911888,330.77408078649,334.30574717623,337.88559766085,341.51429052286,345.19248907458,348.92086961342,352.64147345074,356.41283883338,360.23565716142,364.11063345825,368.0384739541,371.95812372083,375.93124824951,379.95858022583,384.04085801267,388.17883226226,392.30817269042,396.49385281186,400.73664000181,405.03730976228,409.39665754461,413.81548025993,418.22508312451,422.69484912531,427.22559773342,431.81816208034,436.47338166162,441.11888946365,445.82778005125,450.60091414809,455.43916939942,460.34343547357,465.31460883154,470.27541574397,475.30390033467,480.4009926512,485.56762723834,490.80474851567,496.03094699932,501.32844669322,506.69822455894,512.14126217109,517.65855736571,523.2511306012],description:"Cycle of 65 equal beating fifths"},temp65ebt:{frequencies:[261.6255653006,264.43406811535,267.2034679247,270.07937559507,272.91523803531,275.86016780291,278.76409255008,281.77970028627,284.75331888701,287.84130158502,290.886287826,294.04838131756,297.16644728835,300.4044304772,303.59732911309,306.91302510559,310.18255295306,313.57782661988,316.92582314139,320.40258196387,323.83093239735,327.39113302053,330.90176198948,334.36350914498,337.95839429282,341.50322405771,345.18438591943,348.81429298672,352.58380229516,356.30082494405,360.1608038988,363.96703524466,367.91965255368,371.81723365001,375.86471396542,379.85583700975,384.00045811272,388.08736764479,392.33145942297,396.5164558179,400.86240365726,405.1478399234,409.59809307723,413.98637838791,418.31356254814,422.80716945583,427.23820566351,431.83965831621,436.37704077554,441.08892851835,445.73520856761,450.56017999004,455.31796985254,460.25874195194,465.13071889642,470.19006822446,475.1789734801,480.35974823468,485.46838574269,490.77349931217,496.0047455553,501.43718079349,506.7939752079,512.35679191473,517.84214996629,523.2511306012],description:"Cycle of 65 equal beating thirds"},temp6eb2:{frequencies:[261.6255653006,293.46010680596,329.2739659995,369.56455759223,414.89147313404,465.88425311859,523.2511306012],description:"Cycle of 6 equal beating 9/8 seconds"},temp6s:{frequencies:[261.6255653006,271.93638072959,309.96730300827,353.31693843766,402.72911708552,459.05170412301,523.2511306012],description:"Cycle of 6 tempered harmonic sevenths, 6/5 and 4/3 minimax, Op de Coul, 2002"},temp6teb:{frequencies:[261.6255653006,314.31996068356,377.55323514312,453.43316449459,544.48907971635,653.75617798246,784.8766959018],description:"Cycle of 6 equal beating 6/5's in a twelfth"},"temp7-5ebf":{frequencies:[261.6255653006,272.53310095338,288.29512120063,313.54121701986,318.29837158817,352.05202827415,359.67534615791,387.61143614087,414.35283422339,427.61576999092,475.86500581459,472.62064557223,523.2511306012],description:"7 equal beating fifths on white, 5 equal beating fifths on black"},temp7ebf:{frequencies:[261.6255653006,288.29512120063,318.29837158817,352.05202827415,387.61143614087,427.61576999092,472.62064557223,523.2511306012],description:"Cycle of 7 equal beating fifths"},temp7ebnt:{frequencies:[261.6255653006,288.84289825546,318.65722544634,351.9228541964,388.36258888271,429.02057812008,473.55803233064,523.2511306012],description:"Cycle of 7 equal beating 11/9 neutral thirds"},temp8eb3q:{frequencies:[261.6255653006,285.27029088455,311.06453578321,339.20371183191,369.9009952302,403.38894083349,439.92124473489,479.77466958441,523.2511306012],description:`Cycle of 8 equal "beating" 12/11's`},temp9ebmt:{frequencies:[261.6255653006,282.57058469242,305.18178513943,329.6176429161,355.99737593287,384.50587463168,415.28223014648,448.54214811156,484.4478959333,523.2511306012],description:"Cycle of 9 equal beating 7/6 septimal minor thirds"},tenney_11:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,523.2511306012],description:`Scale of James Tenney's "Spectrum II" for wind quintet`},tertiadia:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"Tertiadia 2048/2025 and 262144/253125 scale"},tertiadie:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,383.2405741708,408.78994578219,436.04260883433,476.27480687611,490.54793493862,523.2511306012],description:"First Tertiadie 262144/253125 and 128/125 scale"},tet3a:{frequencies:[261.6255653006,280.31310567921,313.95067836072,336.37572681506,366.27579142084,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Eight notes, two major one minor tetrad"},tetracot:{frequencies:[261.6255653006,266.81074454173,272.09868928948,277.49143626213,289.66902367154,295.4099985897,301.26475437609,307.23554606336,320.71844041089,327.07478634962,333.55710924695,340.16790585091,355.09602205939,362.13370020095,369.31085868177,376.6302618745,393.15851224787,400.95055410677,408.89702710335,417.00099192139,435.30089370336,443.92815899023,452.72640877864,461.69903182491,481.96048707062,491.51250279099,501.25383072009,523.2511306012],description:"tetracot temperament, g=176.28227, 5-limit"},"tetragam-di":{frequencies:[261.6255653006,279.06726965397,290.69507255622,290.69507255622,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,436.04260883433,457.84473927605,523.2511306012],description:"Tetragam Dia2"},"tetragam-enh":{frequencies:[261.6255653006,271.31540105247,279.06726965397,279.06726965397,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,418.60090448096,418.60090448096,457.84473927605,523.2511306012],description:"Tetragam Enharm."},"tetragam-hex":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Tetragam/Hexgam"},"tetragam-py":{frequencies:[261.6255653006,275.62199471997,294.32876096318,294.32876096318,331.11985608357,348.83408706747,372.50983809402,392.4383479509,413.43299207996,441.49314144476,441.49314144476,465.11211608996,523.2511306012],description:"Tetragam Pyth."},"tetragam-slpe":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,279.06726965397,345.21700307457,348.83408706747,396.55020354877,455.51656649021,392.4383479509,455.51656649021,418.60090448096,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-slpe2":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,286.29520819723,345.21700307457,313.29104303136,396.55020354877,396.55020354877,387.04559340587,455.51656649021,423.54155496477,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-sp":{frequencies:[261.6255653006,271.31540105247,271.31540105247,271.31540105247,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,406.97310157871,406.97310157871,457.84473927605,523.2511306012],description:"Tetragam Septimal"},"tetragam-un":{frequencies:[261.6255653006,269.80136421624,285.40970760065,285.40970760065,319.76457981184,348.83408706747,359.73515228832,392.4383479509,404.70204632437,428.11456140098,428.11456140098,479.64686971777,523.2511306012],description:"Tetragam Undecimal"},tetragam13:{frequencies:[261.6255653006,275.95382006469,307.00724256551,307.00724256551,341.55514486295,341.55514486295,400.80167111126,400.80167111126,445.90437572008,445.90437572008,445.90437572008,496.08254310677,523.2511306012],description:"Tetragam (13-tET)"},tetragam5:{frequencies:[261.6255653006,300.52885648597,300.52885648597,300.52885648597,300.52885648597,345.21700307457,345.21700307457,396.55020354877,455.51656649021,455.51656649021,455.51656649021,455.51656649021,523.2511306012],description:"Tetragam (5-tET)"},tetragam7:{frequencies:[261.6255653006,288.85811466493,288.85811466493,288.85811466493,318.92511007349,352.12195684808,352.12195684808,388.77403176757,429.24143792307,429.24143792307,429.24143792307,473.92081401802,523.2511306012],description:"Tetragam (7-tET)"},tetragam8:{frequencies:[261.6255653006,285.30470202322,311.12698372208,311.12698372208,339.28638158975,339.28638158975,403.48177901006,403.48177901006,440,440,440,440,523.2511306012],description:"Tetragam (8-tET)"},tetragam9a:{frequencies:[261.6255653006,282.57118533961,305.19387818096,305.19387818096,329.62755691287,356.01738450312,415.30469757995,415.30469757995,448.55379686399,448.55379686399,448.55379686399,484.46508327871,523.2511306012],description:"Tetragam (9-tET) A"},tetragam9b:{frequencies:[261.6255653006,282.57118533961,282.57118533961,282.57118533961,305.19387818096,305.19387818096,384.52019141924,384.52019141924,415.30469757995,415.30469757995,415.30469757995,448.55379686399,523.2511306012],description:"Tetragam (9-tET) B"},tetraphonic_31:{frequencies:[261.6255653006,266.96486255163,272.52663052146,278.32506946872,284.37561445717,290.69507255622,297.30177875068,304.21577360535,311.45900631024,319.05556743976,327.03195662575,333.99008336247,341.25073734861,348.83408706747,356.76213450082,365.05892832642,373.75080757229,382.86668092771,392.4383479509,400.61414686654,409.13785211902,418.03215325205,427.32175665765,437.0336147635,447.19718719986,457.84473927605,467.58611670746,477.75103228805,488.36772189445,499.46698830115,511.08249965699,523.2511306012],description:"31-tone Tetraphonic Cycle, conjunctive form on 5/4, 6/5, 7/6 and 8/7"},tetratriad:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"4:5:6 Tetratriadic scale"},tetratriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"3:5:9 Tetratriadic scale"},tetratriad2:{frequencies:[261.6255653006,296.75121990114,305.22982618403,356.10146388137,373.75080757229,415.4517078616,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"3:5:7 Tetratriadic scale"},thailand:{frequencies:[261.6255653006,281.86483947605,307.02089761314,350.84574289301,397.92692612688,408.40584780369,474.03826620294,539.82938999168],description:"Observed ranat tuning from Thailand, Helmholtz/Ellis p. 518, nr.85"},thailand2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,356.77227917518,391.76907592069,435.19747628762,477.88722128969,525.37110555681],description:"Observed ranat t'hong tuning, Helmholtz/Ellis p. 518"},thailand3:{frequencies:[261.6255653006,293.32570896007,322.47117131255,354.92237405774,396.55020354877,437.46578647972,488.21056770985,538.58355905405],description:"Observed tak'hay tuning. Helmholtz, p. 518"},thailand4:{frequencies:[261.6255653006,281.88044777549,304.38587215019,332.5176539627,392.71966479735,416.35036198375,461.923848369,523.2511306012,563.76089555097,608.77174430039,665.59794246809,786.00196746963,831.57545378481,924.97296635309,1046.5022612024,1127.52179110194],description:"Khong mon (bronze percussion vessels) tuning, Gemeentemuseum Den Haag 1/1=465"},thirds:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,502.32108537715,523.2511306012],description:"Major and minor thirds parallellogram"},thomas:{frequencies:[261.6255653006,280.80530480292,294.66217084622,313.95044496966,332.05645032639,350.21604710412,374.62015588545,391.99543598175,420.73257541073,441.99197952365,468.79922683914,499.49209883845,523.2511306012],description:"Tuning of the Thomas/Philpott organ, Gereformeerde Kerk, St. Jansklooster"},tiby1:{frequencies:[261.6255653006,295.66718139806,337.56154978455,348.04364484358,393.32961502355,444.50800708553,507.49227916989,523.2511306012],description:"Tiby's 1st Byzantine Liturgical genus, 12 + 13 + 3 parts"},tiby2:{frequencies:[261.6255653006,295.66718139806,311.12698372208,348.04364484358,393.32961502355,444.50800708553,467.75037672729,523.2511306012],description:"Tiby's second Byzantine Liturgical genus, 12 + 5 + 11 parts"},tiby3:{frequencies:[261.6255653006,295.66718139806,324.07484847125,348.04364484358,393.32961502355,444.50800708553,487.21628271135,523.2511306012],description:"Tiby's third Byzantine Liturgical genus, 12 + 9 + 7 parts"},tiby4:{frequencies:[261.6255653006,286.76251801126,324.07484847125,348.04364484358,393.32961502355,431.12067692221,487.21628271135,523.2511306012],description:"Tiby's fourth Byzantine Liturgical genus, 9 + 12 + 7 parts"},todi_av:{frequencies:[261.6255653006,276.38325105256,310.05056613125,371.27895029721,392.44854854484,413.39000965417,495.88429116026,523.2511306012],description:"Average of 8 interpretations of raga Todi, in B. Bel, 1988."},tonos15_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,767.43499154843,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-15"},tonos17_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,738.70747849581,784.8766959018,897.00193817349,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-17"},tonos19_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,385.55346465352,406.97310157871,457.84473927605,523.2511306012,542.63080210495,563.50121757052,610.45965236807,665.95598440153,771.10692930703,813.94620315742,915.6894785521,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-19"},tonos21_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,398.6675280771,440.63253103259,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,797.33505615421,881.26506206518,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-21"},tonos23_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,409.50088481833,448.50096908674,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,819.00176963666,897.00193817349,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-23"},tonos25_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,753.48162806573,856.22912280196,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-25"},tonos27_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,387.59343007496,436.04260883433,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,775.18686014993,872.08521766867,996.66882019276,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-27"},tonos29_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,396.94913355953,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,793.89826711906,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-29"},tonos31_pis:{frequencies:[261.6255653006,273.51763645063,300.86940009569,334.29933343966,388.21858076863,429.81342870813,462.87600014722,501.44900015948,523.2511306012,547.03527290125,601.73880019138,668.59866687931,776.43716153726,859.62685741626,925.75200029443,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31"},tonos31_pis2:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,405.0976494977,448.50096908674,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,810.19529899541,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31B"},tonos33_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-33"},top31:{frequencies:[261.6255653006,267.49189720203,273.48976766293,279.62212612306,285.89198815637,292.30243695391,298.85662483994,305.55777482212,312.40918217641,319.41421606749,326.57632120555,333.89901954025,341.38591199258,349.04068022565,358.99452880887,367.04412845091,375.2742212459,383.6888543241,392.29216556304,401.08838562235,410.08184002413,419.27695128006,428.67824106611,438.29033244612,448.11795214515,458.16593287385,468.4392157049,478.94285250284,489.68200840824,500.66196437769,511.88811978069,523.36599505479],description:"Top temperament, 11-limit, {225/224, 385/384, 1331/1323}, Gene Ward Smith"},trab19:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,5,45,75,225}"},trab19a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,9,15,675}"},tranh:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Bac Dan Tranh scale, Vietnam"},tranh2:{frequencies:[261.6255653006,290.69507255622,307.79478270659,392.4383479509,436.04260883433,523.2511306012],description:"Dan Ca Dan Tranh Scale"},tranh3:{frequencies:[261.6255653006,317.68818643644,348.83408706747,392.4383479509,473.41768959156,476.53227965466,523.2511306012],description:"Sa Mac Dan Tranh scale"},"tri12-1":{frequencies:[261.6255653006,264.29521392612,275.21650375777,319.76457981184,323.02748368748,332.97799220076,336.37572681506,406.97310157871,411.12588832951,428.11456140098,432.48307733364,502.48719684718,523.2511306012],description:"12-tone Tritriadic of 7:9:11"},"tri12-2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,504.56359022259,523.2511306012],description:"12-tone Tritriadic of 6:7:9"},"tri19-1":{frequencies:[261.6255653006,266.96486255163,269.10058145205,305.22982618403,311.45900631024,313.95067836072,320.35783506196,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,427.32175665765,436.04260883433,439.53094970501,448.50096908674,508.71637697339,512.78610798918,523.2511306012],description:"3:5:7 Tritriadic 19-Tone Matrix"},"tri19-2":{frequencies:[261.6255653006,282.55561052465,290.69507255622,294.32876096318,313.95067836072,322.99452506247,327.03195662575,348.83408706747,353.19451315581,363.36884069528,376.74081403286,387.59343007496,392.4383479509,418.60090448096,423.83341578697,436.04260883433,465.11211608996,470.92601754108,484.4917875937,523.2511306012],description:"3:5:9 Tritriadic 19-Tone Matrix"},"tri19-3":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"4:5:6 Tritriadic 19-Tone Matrix"},"tri19-4":{frequencies:[261.6255653006,264.89588486686,290.69507255622,294.32876096318,322.99452506247,327.03195662575,331.11985608357,334.88072358477,363.36884069528,367.91095120397,372.08969287196,376.74081403286,408.78994578219,413.43299207996,418.60090448096,423.83341578697,465.11211608996,470.92601754108,516.79124009995,523.2511306012],description:"4:5:9 Tritriadic 19-Tone Matrix"},"tri19-5":{frequencies:[261.6255653006,266.96486255163,284.8811711051,290.69507255622,302.73815413355,316.53463456122,322.99452506247,329.64821227876,336.37572681506,366.27579142084,373.75080757229,406.97310157871,415.27867508032,423.83341578697,432.48307733364,452.19233508746,470.92601754108,480.53675259294,512.78610798918,523.2511306012],description:"5:7:9 Tritriadic 19-Tone Matrix"},"tri19-6":{frequencies:[261.6255653006,267.07609791103,294.32876096318,299.00064605783,305.22982618403,336.37572681506,341.71502406609,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,400.61414686654,406.97310157871,448.50096908674,457.84473927605,465.11211608996,512.57253609913,523.2511306012],description:"6:7:8 Tritriadic 19-Tone Matrix"},"tri19-7":{frequencies:[261.6255653006,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,316.53463456122,336.37572681506,348.83408706747,356.10146388137,384.42940207435,392.4383479509,406.97310157871,432.48307733364,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,523.2511306012],description:"6:7:9 Tritriadic 19-Tone Matrix"},"tri19-8":{frequencies:[261.6255653006,264.29521392612,272.43653907335,275.21650375777,316.53463456122,319.76457981184,323.02748368748,332.97799220076,336.37572681506,350.27555023717,390.82337532559,406.97310157871,411.12588832951,423.79017189188,428.11456140098,432.48307733364,497.4115685962,502.48719684718,517.96576564563,523.2511306012],description:"7:9:11 Tritriadic 19-Tone Matrix"},"tri19-9":{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,341.71502406609,366.27579142084,373.75080757229,400.61414686654,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"4:5:7 Tritriadic 19-Tone Matrix"},triang11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"11-limit triangular diamond lattice with 64/63 intervals removed"},triaphonic_12:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,367.19377586049,387.59343007496,410.39304360878,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Triaphonic Cycle, conjunctive form on 4/3, 5/4 and 6/5"},triaphonic_17:{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,390.69417751556,406.97310157871,422.62591317789,439.53094970501,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"17-tone Triaphonic Cycle, conjunctive form on 4/3, 7/6 and 9/7"},trichord7:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Trichordal undecatonic, 7-limit"},tricot:{frequencies:[261.6255653006,264.94025538413,268.70564228797,272.11003565477,275.55755973666,279.4738436282,283.01466417842,286.6003471482,290.673570175,294.35628843049,298.08566525814,302.32211998602,306.15242072385,310.03124984507,314.43747949204,318.42127516569,322.45554578164,327.03835025925,331.18179578139,335.37773516927,339.62683737367,344.45368576554,348.81777463097,353.23715677741,358.25743790514,362.79641682209,367.39290067029,372.61436622199,377.33523951767,382.11592657559,387.54663888312,392.45669803325,397.4289679423,403.0773124301,408.18413893183,413.35566924724,419.23036738005,424.541846554,429.92062250389,436.03074525334,441.55507841911,447.14940523431,453.50438708518,459.25010687752,465.06861996272,470.9608512551,477.65424916833,483.70593529179,489.8342966599,496.79592520903,503.09012862502,509.46407999504,516.70469117363,523.2511306012],description:"Tricot temperament, g=565.988015, 5-limit"},tritriad:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Tritriadic scale of the 10:12:15 triad, natural minor mode"},tritriad10:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,366.27579142084,392.4383479509,488.36772189445,523.2511306012],description:"Tritriadic scale of the 10:14:15 triad"},tritriad11:{frequencies:[261.6255653006,309.19384990071,356.76213450082,383.71749577421,421.62797713733,453.48431318771,486.49381977384,523.2511306012],description:"Tritriadic scale of the 11:13:15 triad"},tritriad13:{frequencies:[261.6255653006,294.32876096318,340.11323489078,348.83408706747,392.4383479509,453.48431318771,510.16985233617,523.2511306012],description:"Tritriadic scale of the 10:13:15 triad"},tritriad14:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Tritriadic scale of the 14:18:21 triad"},tritriad18:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,426.35277308246,479.64686971777,523.2511306012],description:"Tritriadic scale of the 18:22:27 triad"},tritriad22:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Tritriadic scale of the 22:27:33 triad"},tritriad26:{frequencies:[261.6255653006,294.32876096318,301.87565226992,348.83408706747,392.4383479509,402.50086969323,452.81347840488,523.2511306012],description:"Tritriadic scale of the 26:30:39 triad"},tritriad3:{frequencies:[261.6255653006,305.22982618403,356.10146388137,373.75080757229,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Tritriadic scale of the 3:5:7 triad. Possibly Mathews's 3.5.7a"},tritriad32:{frequencies:[261.6255653006,294.32876096318,322.00069575458,348.83408706747,392.4383479509,429.33426100611,483.00104363188,523.2511306012],description:"Tritriadic scale of the 26:32:39 triad"},tritriad3c:{frequencies:[261.6255653006,305.22982618403,366.27579142084,373.75080757229,427.32175665765,436.04260883433,512.78610798918,523.2511306012],description:"From 1/1 7/6 7/5, a variant of the 3.5.7 triad"},tritriad3d:{frequencies:[261.6255653006,305.22982618403,313.95067836072,363.36884069528,366.27579142084,436.04260883433,508.71637697339,523.2511306012],description:"From 1/1 7/6 5/3, a variant of the 3.5.7 triad"},tritriad5:{frequencies:[261.6255653006,290.69507255622,329.64821227876,366.27579142084,406.97310157871,423.83341578697,470.92601754108,523.2511306012],description:"Tritriadic scale of the 5:7:9 triad. Possibly Mathews's 5.7.9a."},tritriad68:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Tritriadic scale of the 6:7:8 triad"},tritriad68i:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,398.6675280771,448.50096908674,465.11211608996,523.2511306012],description:"Tritriadic scale of the subharmonic 6:7:8 triad"},tritriad69:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Tritriadic scale of the 6:7:9 triad, septimal natural minor"},tritriad7:{frequencies:[261.6255653006,264.29521392612,323.02748368748,332.97799220076,336.37572681506,411.12588832951,428.11456140098,523.2511306012],description:"Tritriadic scale of the 7:9:11 triad"},tritriad9:{frequencies:[261.6255653006,272.93037367779,319.76457981184,362.25078272391,377.90359432309,442.75095666255,461.88217083933,523.2511306012],description:"Tritriadic scale of the 9:11:13 triad"},tsjerepnin:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,470.92601754108,490.54793493862,523.2511306012],description:"Scale from Ivan Tsjerepnin's Santur Opera (1977) & suite from it Santur Live!"},tsuda13:{frequencies:[261.6255653006,281.75060878526,283.42769574232,322.00069575458,340.11323489078,362.25078272391,377.90359432309,402.50086969323,425.14154361347,442.75095666255,485.87604984397,518.26778650024,523.2511306012],description:"Mayumi Tsuda's Harmonic-13 scale. 1/1=440 Hz."},tuneable3:{frequencies:[36.70809598968,41.95210970249,42.82611198796,43.59086398774,44.04971518762,44.86545065405,45.8851199871,46.71939489596,47.1961234153,47.72052478658,48.94412798624,49.55592958607,50.47363198581,51.39133438555,52.00313598538,52.44013712811,53.02280531843,53.39359416681,55.06214398452,57.10148265061,57.68415084093,58.73295358349,59.65065598323,61.1801599828,62.40376318246,62.92816455374,64.23916798194,66.07457278142,66.74199270851,67.29817598108,68.17217826655,68.82767998065,70.35718398022,73.41619197936,79.53420797764,80.7578111773,82.59321597678,85.65222397592,87.18172797549,88.09943037523,89.14823311779,89.73090130811,90.10169015649,91.7702399742,94.39224683061,95.44104957317,96.35875197291,97.88825597248,100.94726397162,102.7826687711,104.00627197076,104.88027425623,105.53577597033,110.12428796904,114.20296530123,114.71279996775,115.36830168185,116.24230396732,117.46590716698,119.30131196646,120.61231539466,122.3603199656,123.88982396517,124.80752636491,125.85632910747,128.47833596388,132.14914556285,134.59635196216,137.6553599613,139.49076476078,140.71436796044,141.58837024591,146.83238395872,152.950399957,154.17400315666,156.00940795614,159.06841595528,161.51562235459,165.18643195356,168.85724155253,171.30444795184,174.36345595098,176.19886075046,183.5404799484,190.88209914634,192.71750394582,195.77651194496,201.89452794324,205.56533754221,208.01254394152,211.07155194066,220.24857593808,229.4255999355,232.48460793464,238.60262393292,244.7206399312,247.77964793034,256.95667192776,269.19270392432,275.3107199226,281.42873592088,293.66476791744],description:"Marc Sabat, 3 octaves of intervals tuneable by ear"},tuners1:{frequencies:[261.6255653006,276.50456653385,293.15590636358,311.0676370396,328.627540632,349.28088891463,369.11955599459,391.76814585061,414.75684959346,439.06365754828,466.60145532616,492.6062100846,523.2511306012],description:"The Tuner's Guide well temperament no. 1 (1840)"},tuners2:{frequencies:[261.6255653006,276.9861853325,293.55936848273,311.27971878774,329.48489606404,349.42029142443,369.90111701824,391.99869425741,415.03962525779,439.89939957166,466.4799232208,493.78769382322,523.2511306012],description:"The Tuner's Guide well temperament no. 2 (1840)"},tuners3:{frequencies:[261.6255653006,276.9180796764,293.64050032496,311.25753558078,329.38199580693,349.20116137147,369.59117881045,391.8877401954,415.37711930697,439.91014033466,466.33569310799,493.52238512763,523.2511306012],description:"The Tuner's Guide well temperament no. 3 (1840)"},turkish:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Turkish, 5-limit from Palmer on a Turkish music record, harmonic minor inverse"},turkish_24:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Ra'uf Yekta, 24-tone Pythagorean Turkish Theoretical Gamut, 1/1=D (perde yegah) at 294 Hz"},turkish_24a:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,344.52749339997,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,459.36999119996,465.11211608996,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:"Turkish gamut with schismatic simplifications"},turkish_41:{frequencies:[261.6255653006,266.80864394988,272.09440643071,275.67629620338,281.13773466533,286.70737164501,290.48162858661,294.30556868769,300.13607443832,306.08208692954,310.11139540064,316.25503135793,322.52037740267,326.76608188608,333.2396629384,339.84149442859,344.31521657963,348.8478314504,355.75887527351,362.80683626646,367.58287746967,374.8650823332,382.29155536296,387.32409620162,392.42288612931,400.19720009986,408.12552912594,413.49815209867,421.6899870258,430.04411333507,435.70527569249,441.44096240275,450.1863739015,459.10504388656,465.14876849982,474.36385666592,483.76150545705,490.12981126508,499.83980314828,509.74215733443,516.45247616827,523.2511306012],description:"Abd\xEF\xBF\xBDlkadir T\xEF\xBF\xBDre and M. Ekrem Karadeniz theoretical Turkish gamut"},turkish_41a:{frequencies:[261.6255653006,268.5590565112,272.09440643071,275.67629620338,279.3053384865,286.70737164501,290.48162858661,294.30556868769,298.17984938441,306.08208692954,310.11139540064,314.19374626607,322.52037740267,326.76608188608,335.42589979828,339.84149442859,344.31521657963,348.8478314504,353.4401143131,362.80683626646,367.58287746967,377.32440283229,382.29155536296,387.32409620162,392.42288612931,402.82271318249,408.12552912594,413.49815209867,424.45650702809,430.04411333507,435.70527569249,441.44096240275,453.1398459935,459.10504388656,465.14876849982,477.47594368525,483.76150545705,490.12981126508,503.11902634639,509.74215733443,516.45247616827,523.2511306012],description:"Karadeniz's theoretical Turkish gamut, quantized to subset of 53-tET"},turkish_aeu:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Arel-Ezgi-Uzdilek (AEU) 24 tone theoretical system"},turkish_bagl:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,311.64221749042,321.08592105074,331.11985608357,348.83408706747,369.35373924791,380.54627680087,392.4383479509,415.52295665389,428.11456140098,441.49314144476,465.11211608996,492.47165233054,507.3950357345,523.2511306012],description:'Ratios of the 17 frets on the neck of "Baglama" ("saz") according to Yal\xEF\xBF\xBD\xEF\xBF\xBDn Tura'},two29:{frequencies:[261.6255653006,265.43099677612,267.95417262175,271.85165581044,274.43586616969,278.42762776199,281.0743490329,285.16266958193,287.87341387594,292.06062910037,294.83694510625,299.12544722478,301.96892109338,306.36116019141,309.2734164419,313.77190187131,316.75460431924,321.36190613206,324.41675883995,329.13550925662,332.26425750751,337.09715242073,340.3015837153,345.25138423021,348.53332930799,353.60286331966,356.96419720496,362.15636101402,365.59900408717,370.91676405444,374.44268531179,379.88907958456,383.50028913155,389.07842928561,392.77699240278,398.49006531303,402.2780950448,408.12936467525,412.00902517967,418.00183444819,421.97534223334,428.1131149215,432.1827401118,438.46898282094,442.63705045414,449.07535460876,453.34424596425,459.9382898638,464.31044382305,471.06399474345,475.54190918343,482.45882552933,487.04505874954,494.12929225872,498.82646444278,506.0820624438,510.89285715645,518.32396488098,523.2511306012],description:"Two 29-tET scales 25 cents shifted, many near just intervals"},two29a:{frequencies:[261.6255653006,264.02813680074,267.95417262175,270.41486126945,274.43586616969,276.95607779319,281.0743490329,283.65552346679,287.87341387594,290.51702578379,294.83694510625,297.54450482308,301.96892109338,304.74197548856,309.2734164419,312.11354980287,316.75460431924,319.66343925668,324.41675883995,327.39595721478,332.26425750751,335.31552138031,340.3015837153,343.42665631876,348.53332930799,351.73399604284,356.96419720496,360.24228665998,365.59900408717,368.95638908389,374.44268531179,377.88128181162,383.50028913155,387.02206376789,392.77699240278,396.38395721814,402.2780950448,405.97231075214,412.00902517967,415.79260233969,421.97534223334,425.85044246025,432.1827401118,436.15157730833,442.63705045414,446.70189207635,453.34424596425,457.50741431695,464.31044382305,468.5743173866,475.54190918343,479.90892674463,487.04505874954,491.51771254425,498.82646444278,503.40730976502,510.89285715645,515.58451111167,523.2511306012],description:"Two 29-tET scales 15.826 cents shifted, 13-limit chords, Mystery temperament, Gene Ward Smith"},xenakis_chrom:{frequencies:[261.6255653006,274.52698453615,329.62755691287,349.22823143301,391.99543598175,411.32572372413,493.88330125613,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 5 + 19 + 6 parts"},xenakis_diat:{frequencies:[261.6255653006,293.66476791741,326.46944327063,349.22823143301,391.99543598175,440,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 12 + 11 + 7 parts"},xenakis_schrom:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 7 + 16 + 7 parts"},xenoga24:{frequencies:[261.6255653006,265.7783520514,279.38237857051,283.8170195002,294.32876096318,299.00064605783,310.07474405997,314.99656539426,331.11985608357,336.37572681506,348.83408706747,354.37113606854,372.50983809402,378.42269266694,392.4383479509,398.6675280771,419.07356785577,425.72552925031,441.49314144476,448.50096908674,465.11211608996,472.49484809138,496.67978412536,504.56359022259,523.2511306012],description:"M. Schulter, 3+7 ratios Xeno-Gothic adaptive tuning (keyboards 64:63 apart)"},xylophone2:{frequencies:[261.6255653006,295.19538981304,332.68808325276,388.83826257328,446.65787257783,506.59641128799,527.19506190947,579.57827742703,633.13077520476,751.1860077911,842.69088701475],description:"African Yaswa xylophones (idiophone; calbash resonators with membrane)"},xylophone3:{frequencies:[261.6255653006,292.47977325983,348.01999353916,392.4383479509,442.29334161825,523.2511306012],description:"African Banyoro xylophone (idiophone; loose log)"},xylophone4:{frequencies:[261.6255653006,281.70207497315,314.1971709147,349.63190883464,391.76907592069,436.9606979923,505.71930677521,568.9637969584,597.94115990992,660.7800775993,716.43551549302],description:"African Bapare xylophone (idiophone, loose-log)"},zalzal:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,465.11211608996,523.2511306012],description:"Tuning of popular flute by Al Farabi & Zalzal. First tetrachord is modern Rast"},zalzal2:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,387.59343007496,419.89288258121,465.11211608996,523.2511306012],description:"Zalzal's Scale, a medieval Islamic with Ditone Diatonic & 10/9 x 13/12 x 72/65"},zarlino:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Ptolemy's Intense Diatonic Systonon, also Zarlino's scale"},zarlino2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"16-note choice system of Zarlino, Sopplimenti musicali (1588)"},zartehijaz1:{frequencies:[261.6255653006,280.55696721076,336.07142343876,350.07440004945,375.4060213132,393.89732161404,446.43551156053,468.42549744394,502.32108537715,523.2511306012],description:"Scale from Zarlino temperament extraordinaire -- lower Hijaz tetrachord"},zesster_a:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Harmonic six-star, group A, from Fokker"},zesster_b:{frequencies:[261.6255653006,293.02063313667,299.00064605783,334.88072358477,366.27579142084,418.60090448096,457.84473927605,478.40103369253,523.2511306012],description:"Harmonic six-star, group B, from Fokker"},zesster_c:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,398.6675280771,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Harmonic six-star, group C on Eb, from Fokker"},zesster_mix:{frequencies:[261.6255653006,274.70684356563,279.06726965397,293.02063313667,299.00064605783,313.95067836072,334.88072358477,348.83408706747,358.80077526939,366.27579142084,392.4383479509,418.60090448096,457.84473927605,478.40103369253,488.36772189445,502.32108537715,523.2511306012],description:"Harmonic six-star, groups A, B and C mixed, from Fokker"},zest24:{frequencies:[261.6255653006,269.33468959023,272.52663052146,280.55696721076,292.24684137387,300.8582598368,308.87634556583,317.97777315513,326.45210604021,336.07142343876,350.07440004945,360.38977980792,364.66083404534,375.4060213132,391.04793957621,402.57065589001,410.30971075781,422.39999923493,436.81711699543,449.68847932918,465.03699205118,478.73988827571,487.94322738789,502.32108537715,523.2511306012],description:"Zarlino Extraordinaire Spectrum Temperament (two circles at ~50.28c apart)"},zir_bouzourk:{frequencies:[261.6255653006,281.75060878526,305.22982618403,313.95067836072,353.19451315581,392.4383479509,523.2511306012],description:"Zirafkend Bouzourk (IG #3, DF #9), from both Rouanet and Safi al-Din"},zwolle:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Henri Arnaut De Zwolle. Pythagorean on G flat."},zwolle2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.68386704488,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,467.04206359353,489.02683710225,523.2511306012],description:"Henri Arnaut De Zwolle's modified meantone tuning (c. 1440)"},yarman12:{frequencies:[261.6255653006,283.42769574232,294.32876096318,309.19384990071,332.97799220076,348.83408706747,377.90359432309,392.4383479509,411.12588832951,442.75095666255,465.11211608996,499.46698830115,523.2511306012],description:"Detempered Yarman 13-limit, [<1 1 -20 -6 -3 -1|, <0 1 38 15 11 8|]"},yarman12_80:{frequencies:[261.6255653006,282.84340331238,295.36595061166,319.3201344739,333.45764463229,348.2210758395,376.46181130035,393.12919962609,425.01198472693,443.82887286778,479.82340237272,501.06699929295,523.2511306012],description:"Ozan Yarman MOS, 80-et version"},yarman17:{frequencies:[261.6255653006,274.08392555301,283.42769574232,294.32876096318,309.19384990071,322.00069575458,332.97799220076,348.83408706747,362.25078272391,377.90359432309,392.4383479509,411.12588832951,425.14154361347,442.75095666255,465.11211608996,485.87604984397,499.46698830115,523.2511306012],description:"80-et commas 13-limit detempering of a chain of 16 fifths"},"yarman_ney-ahengs":{frequencies:[261.6255653006,275.39533189537,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Well Temperament for piano by Ozan Yarman from Ney Ahengs"},yasser_6:{frequencies:[261.6255653006,291.88463270656,325.64340264099,363.30663963964,405.32593044476,452.20508247496,523.2511306012],description:"Yasser Hexad, 6 of 19 as whole tone scale"},yasser_diat:{frequencies:[261.6255653006,281.42815779395,291.88463270656,313.97755176024,325.64340264099,350.29154279212,376.80531512858,390.80553229045,420.38583225541,436.00528786292,469.00678383895,486.43275040712,523.2511306012],description:"Yasser's Supra-Diatonic, the flat notes are V,W,X,Y,and Z"},yasser_ji:{frequencies:[261.6255653006,282.64904822654,294.32876096318,304.39128270551,327.03195662575,347.87575166344,359.73515228832,391.36022062136,425.14154361347,434.84468957929,457.84473927605,478.32915853722,523.2511306012],description:"Yasser's just scale, 2 Yasser hexads, 121/91 apart"},yekta:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rauf Yekta's 12-tone tuning suggested in 1922 Lavignac Music Encyclopedia"},"young-g":{frequencies:[261.6255653006,299.07507698093,319.76457981184,341.88537054616,390.82337532559,446.76650366117,477.67301428683,510.71739232152,583.82257301724,667.39198333921,713.56092257662,762.92356430953,872.13001648254,996.96833978235,1065.93668681199,1139.67601990796,1302.81150610354,1489.29848625885,1592.32474578757,1702.47910946196,1946.17475603251,2224.75468143463,2378.65811671778,2543.20970830682,2907.24890901465,3323.39919648924,3553.30434397593,3799.11599765247,4342.92768045015],description:"Gayle Young's Harmonium, see PNM 26(2): 204-212 (1988)"},"young-lm_guitar":{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"LaMonte Young, Tuning of For Guitar '58. 1/1 March '92, inv.of Mersenne lute 1"},"young-lm_piano":{frequencies:[261.6255653006,289.72987407313,294.32876096318,300.46061014991,343.38355445704,338.01818641865,386.30649876417,392.4383479509,400.61414686654,457.84473927605,450.69091522486,515.07533168556,523.2511306012],description:"LaMonte Young's Well-Tempered Piano"},"young-w10":{frequencies:[261.6255653006,277.18263097687,302.26980244078,320.24370022528,349.22823143301,369.99442271164,391.99543598175,427.47405410759,452.89298412314,493.88330125613,523.2511306012],description:"William Lyman Young 10 out of 24-tET (1961)"},"young-w14":{frequencies:[261.6255653006,277.18263097687,293.66476791741,302.26980244078,320.24370022528,339.28638158975,359.46139971304,369.99442271164,391.99543598175,415.30469757995,427.47405410759,452.89298412314,479.82340237272,508.3551866238,523.2511306012],description:"William Lyman Young 14 out of 24-tET (1961)"},"young-wt":{frequencies:[261.6255653006,285.40970760065,309.19384990071,348.83408706747,392.4383479509,428.11456140098,463.79077485106,523.2511306012],description:'William Lyman Young "exquisite 3/4 tone Hellenic Lyre" dorian'},young:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,391.5530240856,413.43299207996,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"Thomas Young well temperament (1807), also Luigi Malerbi nr.2 (1794)"},young2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.22823143301,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.65745674141,523.2511306012],description:"Thomas Young well temperament no.2 (1799)"},yugo_bagpipe:{frequencies:[261.6255653006,277.02257024271,294.00421879736,322.47117131255,341.84370465044,381.9375744369,404.41509766528,430.1988069325,452.63145841613,463.74664903953,478.99265177484,502.22604835608,523.2511306012],description:"Yugoslavian Bagpipe"},yves:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:`St Yves's scale II from Jocelyn Godwin, "Music and the Occult", 1995.`},saba_sup:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular version of maqam Sab"},sabagh:{frequencies:[261.6255653006,275.67629620338,279.3053384865,286.70737164501,294.30556868769,310.11139540064,314.19374626607,322.52037740267,326.76608188608,331.06767743197,348.8478314504,362.80683626646,367.58287746967,372.42178901277,392.42288612931,413.49815209867,418.94150105041,430.04411333507,441.44096240275,465.14876849982,471.27205084813,483.76150545705,490.12981126508,496.58195036371,523.2511306012],description:"Twfiq Al-Sabagh, Arabic master musical scale in 53-tET (1954)"},sabbagh:{frequencies:[261.6255653006,294.30556868769,321.46759848648,348.8478314504,392.42288612931,428.64035280622,465.14876849982,523.2511306012],description:"Tawfiq as-Sabbagh, a composer from Syria. 1/1=G"},safi_diat:{frequencies:[261.6255653006,276.16031892841,305.22982618403,348.83408706747,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:"Safi al-Din's Diatonic, also the strong form of Avicenna's 8/7 diatonic"},safi_diat2:{frequencies:[261.6255653006,283.79722337692,310.07474405997,348.83408706747,392.4383479509,425.69583506538,465.11211608996,523.2511306012],description:"Safi al-Din's 2nd Diatonic, a 3/4 tone diatonic like Ptolemy's Equable Diatonic"},safi_major:{frequencies:[261.6255653006,281.75060878526,322.00069575458,348.83408706747,375.66747838035,392.4383479509,523.2511306012],description:"Singular Major (DF #6), from Safi al-Din, strong 32/27 chromatic"},salinas_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:`Salinas' enharmonic tuning for his 19-tone instr. "instrumentum imperfectum"`},salinas_24:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:'Salinas enharmonic system "instrumentum perfectum". Subset of Mersenne'},salinas_enh:{frequencies:[261.6255653006,272.52663052146,279.06726965397,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Salinas's and Euler's enharmonic"},salunding:{frequencies:[261.6255653006,282.38958039978,310.76686573877,390.36201910543,419.43149305958,523.2511306012],description:"Gamelan slunding, Kengetan, South-Bali. 1/1=378 Hz"},sankey:{frequencies:[261.6255653006,274.88665260982,292.54735824399,309.58527581215,327.03195662575,348.83408706747,366.73895666255,391.24894371175,412.31687950427,437.13741259348,464.79252184829,489.99465727995,523.2511306012],description:"John Sankey's Scarlatti tuning, personal evaluation based on d'Alembert's"},santur1:{frequencies:[261.6255653006,282.02765077995,319.3201344739,347.21689301951,376.46192220133,427.47393558663,475.68393915562,504.55222794679,523.2511306012],description:"Persian santur tuning. 1/1=E"},santur2:{frequencies:[261.6255653006,281.2143451833,317.48098583281,345.21700307457,375.37611551499,423.78627283082,475.68393915562,498.18106573801,523.2511306012],description:"Persian santur tuning. 1/1=E"},sanza:{frequencies:[261.6255653006,293.15632631094,308.97787266236,346.21547002486,390.18821123181,462.40922843744,524.46149515038,595.18445928535,620.10113226249],description:"African N'Gundi Sanza (idiophone; set of lamellas, thumb-plucked)"},sanza2:{frequencies:[261.6255653006,390.63923480058,465.35666077712,523.2511306012,588.68812410589,663.45725712889,702.9084786129,783.08569314515],description:"African Baduma Sanza (idiophone, like mbira)"},sauveur:{frequencies:[261.6255653006,274.85950244128,292.7026939092,313.25286195357,328.80795208256,349.69755047152,367.27338607435,391.35133250294,417.15885134862,438.29716799286,468.84228427561,491.11646492505,523.2511306012],description:"Sauveur's tempered system of the harpsichord. Trait\xEF\xBF\xBD (1697)"},sauveur2:{frequencies:[261.6255653006,278.64199172491,293.04864983565,312.10886966906,328.2456799168,349.5951549002,372.33322418948,391.58401058733,417.05308314313,438.61577206336,467.14384425417,491.2966347616,523.2511306012],description:"Sauveur's Syste^me Chromatique des Musiciens (Memoires 1701), 12 out of 55."},sauveur_17:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,489.99465727995,496.67978412536,523.2511306012],description:"Sauveur's oriental system, aft. Kitab al-adwar (Bagdad 1294) by Safi al-Din"},sauveur_ji:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Aplication des sons harmoniques aux jeux d'orgues (1702) (PB 81/80 & 128/125)"},savas_bardiat:{frequencies:[261.6255653006,282.57123920205,317.17549194805,349.22823143301,391.99543598175,423.37848741825,475.22628419761,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 12 + 10 parts"},savas_barenh:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 16 + 6 parts"},savas_chrom:{frequencies:[261.6255653006,282.57123920205,323.3415889232,349.22823143301,391.99543598175,423.37848741825,484.46499093218,523.2511306012],description:"Savas's Chromatic, Byzantine Liturgical mode, 8 + 14 + 8 parts"},savas_diat:{frequencies:[261.6255653006,288.06460709314,311.12698372208,349.22823143301,391.99543598175,431.60923940535,466.16376151809,523.2511306012],description:"Savas's Diatonic, Byzantine Liturgical mode, 10 + 8 + 12 parts"},savas_palace:{frequencies:[261.6255653006,277.18263097687,336.03572815422,349.22823143301,391.99543598175,415.30469757995,503.48470957687,523.2511306012],description:"Savas's Byzantine Liturgical mode, 6 + 20 + 4 parts"},scalatron:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:"Scalatron (tm) 19-tone scale, see manual, 1974"},scheengaas:{frequencies:[261.6255653006,273.84069463911,292.6487650037,312.74862113192,327.53979283172,350.03605285217,366.8025131876,391.54284657258,418.19337019276,437.97145880542,467.51204131067,489.62261321254,523.2511306012],description:"Scheengaas' variation"},scheffer:{frequencies:[261.6255653006,274.56546814423,292.86978442859,309.86465789076,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"H.Th. Scheffer (1748) modified 1/5-comma temperament, Sweden"},schidlof:{frequencies:[261.6255653006,264.89588486686,274.70684356563,280.31310567921,294.32876096318,305.22982618403,315.35224388912,322.99452506247,327.03195662575,348.83408706747,353.19451315581,366.27579142084,373.75080757229,392.4383479509,406.97310157871,420.46965851882,436.04260883433,457.84473927605,467.18850946536,484.4917875937,490.54793493862,523.2511306012],description:"Schidlof"},schillinger:{frequencies:[261.6255653006,262.8879410321,275.85161280553,277.18263097687,278.52007147562,292.25460328695,293.66476791741,295.08173676673,309.63296633914,311.12698372208,312.62820992379,328.04470063332,329.62755691287,331.21805066987,347.55125362114,349.22823143301,350.91330087035,368.21772660991,369.99442271164,371.77969159194,390.11309203208,391.99543598175,393.88686247394,413.31042363438,415.30469757995,417.30859414412,437.88714035463,440,442.12305445465,463.92526470026,466.16376151809,468.41305936011,491.51169649079,493.88330125613,496.26634930797,520.73850287792,523.2511306012],description:"Joseph Schillinger's double equal temperament, p.664 Mathematical Basis..."},schis41:{frequencies:[261.6255653006,266.96486255163,272.52663052146,275.21650375777,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,321.08592105074,327.03195662575,329.64821227876,336.37572681506,343.38355445704,348.83408706747,355.95315006884,363.36884069528,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,415.27867508032,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,484.4917875937,490.54793493862,497.4115685962,504.56359022259,512.78610798918,523.2511306012],description:"41&53 <<1 -8 -14 23 -15 -25 33 -10 81 113||"},schisynch17:{frequencies:[261.6255653006,275.80289341725,290.74848220557,294.25152581512,310.19683462128,327.0062098829,330.94609980123,348.87986495302,367.78544978395,387.71551660339,392.38685458718,413.65005636851,436.06549769577,441.31937388998,465.23419873014,490.4449531872,496.35401261224,523.2511306012],description:"fifth satisfies f^9 + f^8 - 64 = 0"},schlick:{frequencies:[261.6255653006,275.62199471997,293.00227310437,311.47852302926,328.14198392915,349.6228209638,367.9112241576,391.5530240856,414.36778843034,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Reconstructed temp. A. Schlick, Spiegel d. Orgelmacher und Organisten (1511)"},schlick2:{frequencies:[261.6255653006,275.31092272332,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.9112241576,391.5530240856,415.30469757995,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Schlick's temperament reconstructed by F.J. Ratte (1991)"},schlick3:{frequencies:[261.6255653006,275.31092431358,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.70355049744,391.5530240856,415.07027187895,438.51190905657,466.95405539699,491.10256480205,523.2511306012],description:"Possible well-tempered interpretation of 1555 tuning, Margo Schulter"},schlick4:{frequencies:[261.6255653006,275.29566620843,293.00166043901,311.83758337792,328.14192706649,349.6222474261,367.6987228158,391.55300599201,415.35839309639,438.51185079886,466.95962791236,491.10245700671,523.2511306012],description:"Another reconstructed Schlick's modified meantone (Poletti?)"},scholz:{frequencies:[261.6255653006,271.31540105247,299.00064605783,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Simple Tune #1 Carter Scholz"},scholz_epi:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,6802.2646978156,7063.8902631162,7325.5158284168,8372.0180896192,8633.6436549198,9156.894785521,9418.5203508216,10203.3970467234,10465.022612024,10988.2737426252,11511.5248732264,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14127.7805262324,14389.406091533,14651.0316568336,16482.4106139378,16744.0361792384,17005.661744539],description:"Carter Scholz, Epimore"},schulter:{frequencies:[261.6255653006,277.184065539,293.66520219021,311.12905403417,329.62853176407,349.23107169224,369.99606406306,391.99572582396,415.30715405467,440.00097595231,466.1672081452,493.88512703986,523.25577305438],description:`Margo Schulter's 5-limit JI virt. ET, "scintilla of Artusi" tempered 22-08-98`},schulter_17:{frequencies:[261.6255653006,272.43653907335,282.13181390574,295.15344695336,308.77608605158,319.09647917983,332.97799220076,348.34640884647,361.82138782225,375.64984936577,392.98775403209,410.26687922759,423.79017189188,443.34998408798,463.81254988138,480.53289366295,500.16624277499,523.2511306012],description:"Neo-Gothic well-temperament (14:11, 9:7 hypermeantone fifths) TL 04-09-2000"},schulter_24:{frequencies:[261.6255653006,270.06509966514,283.8170195002,292.97240722602,295.75063903546,305.22982618403,307.79478270659,317.68818643644,334.29933343966,345.08318290545,348.06842720833,359.29644098925,377.90359432309,390.09403284964,393.30161007617,406.07983174306,426.86276443782,440.63253103259,444.76346101102,458.66231916761,462.87600014722,477.80748402293,502.32108537715,518.89070451286,523.2511306012],description:'Rational intonation (RI) scale with some "17-ish" features (24 notes)'},schulter_cart34:{frequencies:[261.6255653006,270.08718526646,272.51337835337,281.3271372098,283.85429714132,293.03484945212,295.66718139806,305.22982618403,307.97166902637,317.93223698752,320.78822215662,331.16330924834,334.13814720468,344.94500399825,348.04364484358,359.30023993517,362.52783176564,374.2528814026,377.61479489998,389.82779436071,393.32961502355,406.05087076101,409.69842558521,422.94908927295,426.7484383229,440.55054172958,444.50800708553,458.88449901367,463.0066556268,477.98143975034,482.27514684959,497.87312179111,502.34551296122,518.59261334435,523.2511306012],description:'"Carthesian tuning" with two 17-tET chains 55.106 cents apart'},schulter_diat7:{frequencies:[261.6255653006,295.1673044417,332.97799220076,348.83408706747,392.4383479509,442.75095666255,499.46698830115,523.2511306012],description:"Diatonic scale, symmetrical tetrachords based on 14/11 and 13/11 triads"},schulter_ham:{frequencies:[261.6255653006,272.52663052146,283.8170195002,295.75063903546,307.79478270659,320.70230585235,334.29933343966,348.01136516401,362.25078272391,377.90359432309,393.36609818246,409.50088481833,426.86276443782,444.76346101102,462.87600014722,482.33849075995,502.32108537715,523.2511306012],description:'New rational tuning of "Hammond organ type", TL 01-03-2002'},schulter_jot17a:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.1673044417,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.75095666255,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"Just octachord tuning -- 4:3-9:8-4:3 division, 17 steps (7 + 3 + 7), Bb-Bb"},schulter_jot17bb:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.15228855401,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.72843283101,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:'"Just Octachord Tuning" (Bb-Eb, F-Bb) -- 896:891 divided into 1792:1787:1782'},schulter_jwt17:{frequencies:[261.6255653006,272.43653907335,282.34838235411,295.1673044417,308.34441624714,319.76457981184,332.97799220076,347.8430811383,362.25078272391,376.08675011961,393.55640592227,409.81906732402,425.14154361347,443.97065626768,462.87600014722,481.6288815761,500.8899711738,523.2511306012],description:'"Just well-tuned 17" circulating system'},"schulter_lin76-34":{frequencies:[261.6255653006,270.6250663876,281.88470155261,291.58108453077,295.07956188513,305.22982618403,308.89206602106,319.51745915009,332.81131277165,344.25948974019,348.39001840879,360.3740779397,375.36781334896,388.27986588625,392.93856423817,406.45502016129,423.36600317146,437.92911415628,443.18352164838,458.42832346067,463.9286840578,479.88708893184,499.85328649772,517.04744024951,523.2511306012],description:"Two 12-note chains, ~704.160 cents, 34 4ths apart (32 4ths = 7:6), TL 29-11-02"},schulter_pel:{frequencies:[261.6255653006,271.31540105247,305.22982618403,392.4383479509,406.97310157871,523.2511306012],description:"Just pelog-style Phrygian pentatonic"},schulter_pepr:{frequencies:[261.6255653006,270.64528702739,281.81099471089,291.52662303231,295.05751399041,305.22982618403,308.92668738628,319.57714790608,332.76158224462,344.23376719628,348.40303271111,360.41446953256,375.28368107222,388.22184469544,392.9238840789,406.47020586181,423.23948674937,437.83095983374,443.13385158124,458.41119660824,463.96335069158,479.95880706014,499.75992392917,516.98949183803,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},schulter_qcm62a:{frequencies:[261.6255653006,262.43934012943,267.90457886781,268.73788454005,273.37431312998,274.22463192287,279.93529690293,280.80602334765,285.65065877038,286.53916259713,292.50627485027,293.41610276971,299.52642572255,300.45808951291,305.64177427204,306.59245933664,312.977175335,313.95067836072,320.36052345918,320.48862783822,327.03195662575,328.04917632434,334.88072358477,335.92235492515,341.71789064962,342.78078913836,349.91912034749,351.00752840096,358.31717956585,359.43170941363,365.63284274659,366.77012764335,374.40803131735,375.5726110527,382.05221698715,383.2405741708,391.22147055517,392.4383479509,400.61078621746,401.85686830172,408.78994578219,410.06146948999,418.60090448096,419.90294514449,427.14736482575,428.47598794138,437.39890198442,438.75941205608,447.89647345742,449.28963835923,457.04105241293,458.46266117889,468.01003810189,469.46576276783,479.24227945773,480.73294151703,489.02683710225,490.54793493862,500.76348165392,502.32108537715,510.98743222773,512.57683571821,523.2511306012],description:"1/4-comma meantone, two 31-notes at 1/4-comma (Vicentino-like system)"},schulter_qcmlji24:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,292.50627485027,293.41610276971,306.59245933664,312.977175335,327.03195662575,328.04917632434,349.91912034749,351.00752840096,365.63284274659,366.77012764335,391.22147055517,392.4383479509,408.78994578219,410.06146948999,437.39890198442,438.75941205608,458.46266117889,468.01003810189,489.02683710225,490.54793493862,523.2511306012],description:"24-note adaptive JI (Eb-G#/F'-A#') for Lasso's Prologue to _Prophetiae_"},schulter_qcmqd8_4:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28772967674,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.22091428214,437.39890198442,465.24335632603,489.02683710225,523.2511306012],description:"F-C# in 1/4-comma meantone, other 5ths ~4.888 cents wide or (2048/2025)^(1/4)"},schulter_sq:{frequencies:[261.6255653006,271.31540105247,279.38237857051,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,419.07356785577,434.59481110969,441.49314144476,457.84473927605,465.11211608996,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:'"Sesquisexta" tuning, two 12-tone Pyth. manuals a 7/6 apart. TL 16-5-2001'},schulter_tedorian:{frequencies:[261.6255653006,295.99553712036,309.28772789022,347.85054122562,393.54796334264,442.61656607198,462.49302735707,523.2511306012],description:"Eb Dorian in temperament extraordinaire -- neo-medieval style"},schulter_zarte84:{frequencies:[261.6255653006,272.52663052146,292.24684137387,308.87634556583,326.45210604021,350.07440004945,364.66083404534,391.04793957621,410.30971075781,436.81711699543,465.03699205118,487.94322738789,523.2511306012],description:"Temperament extraordinaire, Zarlino's 2/7-comma meantone (F-C#)"},schulter_zarte84n:{frequencies:[261.6255653006,272.46997760396,292.1447183254,308.81896225817,326.44489157977,350.01709816983,364.52535053201,391.11195868293,410.09013064752,436.73596474349,465.11312402839,488.01232708701,523.2511306012],description:"Zarlino temperament extraordinaire, 1024-tET mapping"},scotbag:{frequencies:[261.6255653006,290.69507255622,327.03195662575,356.76213450082,387.59343007496,436.04260883433,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning"},scotbag2:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Scottish bagpipe tuning 2"},scotbag3:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning 3"},scotbag4:{frequencies:[261.6255653006,293.15632631094,318.58319997217,348.2210758395,392.67530119805,428.21545238314,468.59347232539,523.2511306012],description:"Scottish Higland Bagpipe by Macdonald, Edinburgh. Helmholtz/Ellis p. 515, nr.52"},scottd1:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,349.22823143301,367.9112241576,391.5530240856,413.90012676351,437.52264545758,465.63764214343,490.54829628849,523.2511306012],description:"Dale Scott's temperament 1, TL 9-6-1999"},scottd2:{frequencies:[261.6255653006,276.1828093671,292.93610587951,310.70566022736,327.9937953665,349.3071136959,368.24374600687,391.64146650178,414.27421384356,438.21489534465,466.05849010807,491.32444638706,523.2511306012],description:"Dale Scott's temperament 2, TL 9-6-1999"},scottd3:{frequencies:[261.6255653006,276.40121172404,293.16775656083,310.95136287868,328.51274831708,349.22813057195,368.53494914961,391.77416758435,414.60181737882,438.75957425603,466.42704408487,491.93513777943,523.2511306012],description:"Dale Scott's temperament 3, TL 9-6-1999"},scottd4:{frequencies:[261.6255653006,276.60439543337,293.30494246724,310.98285414553,328.78580734933,349.37474066871,369.05201453919,391.83105388699,414.77686160481,439.10664961187,466.16991430388,492.5350487994,523.2511306012],description:"Dale Scott's temperament 4, TL 9-6-1999"},scottj:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509],description:`Jeff Scott's "seven and five" tuning, fifth-repeating. TL 20-04-99`},scottj2:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,313.95067836072,348.83408706747,366.27579142084,406.97310157871,418.60090448096,428.11456140098,436.04260883433,485.87604984397,523.2511306012,566.85539148463,581.39014511244,598.00129211566,610.45965236807,680.22646978156,719.47030457665,784.8766959018],description:`Jeff Scott's "just tritone/13" tuning. TL 17-03-2001`},secor12_1:{frequencies:[261.6255653006,275.03488264166,292.74290192225,310.07362690431,327.56128791316,349.21167447253,366.91716522699,391.37968062521,412.76363757129,437.92977184699,465.61556619611,490.01645577464,523.2511306012],description:"George Secor's 12-tone temperament ordinaire #1, proportional beating"},secor12_2:{frequencies:[261.6255653006,275.62199471997,292.79557634972,310.07474405997,327.35540669465,348.83408706747,367.49599295996,391.60840570078,413.43299207996,437.83150862942,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's closed 12-tone well-temperament #2, with 7 just fifths"},secor12_3:{frequencies:[261.6255653006,274.49585366342,292.50627485027,309.76836826904,327.03195662575,349.57337698802,365.99447173417,391.22147055517,411.74378028931,437.39890198442,466.09783352473,489.02683710225,523.2511306012],description:"George Secor's closed 12-tone temperament #3 with 5 meantone, 3 just, and 2 wide fifths"},secor17htt1:{frequencies:[261.6255653006,266.21235100401,283.6936382117,294.88137067808,304.94368688875,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,435.63385416574,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #1 on C (5/4 & 7/4 exact)"},secor17htt2:{frequencies:[261.6255653006,266.21235100401,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #2 on Eo (5/4 & 7/4 exact)"},secor17htt3:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #3 on G (5/4 & 7/4 exact)"},secor17htt4:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,332.36439517321,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,420.07165483694,442.73709545768,450.49910517366,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #4 on Bo (5/4 & 7/4 exact)"},secor17wt:{frequencies:[261.6255653006,271.90848849519,284.45827635845,296.12458543709,307.25838681362,320.91221742866,335.17278980765,347.77473997341,362.0378075073,378.74746489181,393.63374363584,408.43373030454,427.2847686483,445.53990619223,462.29147990415,482.0422296857,504.29062567056,523.2511306012],description:"George Secor's well temperament with 5 pure 11/7 and 3 near just 11/6"},secor19wt:{frequencies:[261.6255653006,272.32755795875,282.27948808054,292.18583194851,304.13791554835,314.37102040472,326.31582004031,339.6640167515,350.11094753355,364.43250202589,378.27942889874,391.0071187494,407.00156221801,421.24111755476,436.68033801788,454.54308187078,469.17957429271,487.6886112017,506.92782577841,523.2511306012],description:"George Secor's 19-tone well temperament with ten 5/17-comma fifths"},secor19wt1:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.3856167727,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.33223555387,436.68095599763,454.54522431957,469.16941157468,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.1)"},secor19wt2:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.27577204952,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.20165315727,436.68095599763,454.54522431957,469.03541436973,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.2)"},secor1_4tx:{frequencies:[261.6255653006,274.52656755164,292.65557420835,309.65910769439,327.20096538886,349.14957009195,366.50113643833,391.42429537222,412.04336447213,437.62002395673,465.5327601226,489.58458498887,523.2511306012],description:"George Secor's rational 1/4-comma temperament extraordinaire"},secor1_5tx:{frequencies:[261.6255653006,275.23833828784,292.86443876933,310.12174699459,327.84546895566,349.26796031009,366.98445105045,391.462133155,412.85750743176,438.21197504744,465.69061374678,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma temperament extraordinaire (ratios supplied by G. W. Smith)"},secor1_5wt:{frequencies:[261.6255653006,275.62199471997,292.86443876933,310.07474405997,327.84546895566,348.83408706747,367.44664657419,391.462133155,413.43299207996,438.21197504744,465.11211608996,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma well-temperament (ratios supplied by G. W. Smith)"},secor1_7wt:{frequencies:[261.6255653006,276.40791719395,293.28186156416,310.6264877857,328.77715667764,349.45479875891,368.54388959194,391.74026793015,414.61187579093,439.14616729155,465.93973167855,492.29203182992,523.2511306012],description:"George Secor's 1/7-comma well-temperament (ratios supplied by G. W. Smith)"},secor22_19p3:{frequencies:[261.6255653006,266.86058412305,272.32845615788,282.28026746552,292.18610873661,304.13920677667,314.37137994881,326.31643450984,339.6657766488,350.11078170334,357.11635499175,364.43353349925,378.28077924825,391.00730395019,407.00309738029,421.28573964817,436.68095599763,454.54522431957,469.17973147781,477.89781576412,487.689760539,506.93004530576,523.2511306012],description:"George Secor's 19+3 well temperament with ten ~5/17-comma (equal-beating) fifths and 3 pure 9:11. TL 28-6-2002,26-10-2006. Aux=1,10,19"},secor22_ji29:{frequencies:[261.6255653006,272.52663052146,283.42769574232,286.15296204753,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.65828815182,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,414.24047839262,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,501.44900015948,523.2511306012],description:"George Secor's 22-tone just intonation (29-limit otonality on 4/3)"},secor29htt:{frequencies:[261.6255653006,270.55308473255,276.71069203503,283.6936382117,290.1503157249,294.88137067808,304.94368688875,310.54087273367,319.75456524059,327.03195662575,332.36439517321,343.70575469589,348.50707605838,360.3992766165,368.60172104124,377.19539564757,387.3949548402,392.80658053205,406.21042497925,415.4555026381,425.93975025566,435.63385416574,442.73709545768,457.84473927605,464.24049278842,480.08189580921,491.0082387498,499.01438878341,516.04239079678,523.2511306012],description:"George Secor's 29-tone 13-limit high-tolerance temperament (5/4 & 7/4 exact)"},secor2_11wt:{frequencies:[261.6255653006,275.91396717201,292.9984614786,310.40321306851,328.14053952957,349.20361470207,367.88528956268,391.55148162785,413.87095075801,438.50612639837,465.60481960276,491.10222639053,523.2511306012],description:"George Secor's rational 2/11-comma well-temperament"},secor41htt:{frequencies:[261.6255653006,266.21235100401,270.55308473255,276.71069203503,279.78524030783,283.6936382117,290.1503157249,294.88137067808,300.05119287674,304.94368688875,310.54087273367,315.34936221801,319.75456524059,327.03195662575,332.36439517321,338.19136297459,343.70575469589,348.50707605838,354.61705516636,360.3992766165,368.60172104124,372.69727792826,377.90358994896,387.3949548402,392.80658053205,399.69321489333,406.21042497925,415.4555026381,420.07165483694,425.93975025566,435.63385416574,442.73709545768,450.49910517366,457.84473927605,464.24049278842,473.46789104304,480.08189580921,491.0082387498,499.01438878341,507.7630447553,516.04239079678,523.2511306012],description:"George Secor's 13-limit high-tolerance temperament superset (5/4 & 7/4 exact)"},secor5_23tx:{frequencies:[261.6255653006,275.02417915696,292.7420830065,310.0721322444,327.56084927797,349.21018850905,366.91927748105,391.38056264645,412.75664067387,437.92311604224,465.61358467873,490.0190422864,523.2511306012],description:"George Secor's rational 5/23-comma temperament extraordinaire"},secor5_23wt:{frequencies:[261.6255653006,275.62199471997,292.75872440224,310.07474405997,327.56278518065,348.83408706747,367.49599295996,391.3766908411,413.43299207996,437.81158306864,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's rational 5/23-comma proportional-beating well-temperament"},secor7p:{frequencies:[261.6255653006,281.10327891957,302.03108525935,356.94582815655,383.52002471837,412.07263653985,442.75095666255,523.2511306012],description:"George Secor's pelog-like MOS with near just 11:13:15:19 tetrads (1979)"},secor_vrwt:{frequencies:[261.6255653006,276.32932769153,293.15777167588,310.55777256823,328.11844153148,349.04269216937,368.62018440632,392.00375398861,414.25255044712,438.65017260809,465.6191423793,491.6947801169,523.2511306012],description:"George Secor's Victorian rational well-temperament (based on Ellis #2)"},"secor_wt1-7":{frequencies:[261.6255653006,276.2204353545,293.2843722634,310.74798946314,328.77415062671,349.45463702831,368.55847674989,391.74146894101,414.33065282463,439.14535139523,466.13275379077,492.28548658217,523.2511306012],description:"George Secor's 1/7-comma well-temperament"},secor_wt10:{frequencies:[261.6255653006,276.4188590209,293.2843722634,310.62634254146,328.77415062671,349.45463500978,368.55847887877,391.7414712038,414.6282883241,439.14535393183,465.93951357928,492.28548942572,523.2511306012],description:"George Secor's 12-tone well-temperament, proportional beating"},"secor_wtpb-24a":{frequencies:[261.6255653006,275.62199471997,292.84836938997,310.07474405997,327.30111872997,348.83408706747,367.49599295996,391.90002374246,413.43299207996,437.54991661796,465.11211608996,490.95167809495,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24a)"},"secor_wtpb-24b":{frequencies:[261.6255653006,275.62199471997,292.56126314547,310.07474405997,327.51644841334,348.83408706747,367.49599295996,391.46936437571,413.43299207996,437.76524630133,465.11211608996,490.37746560595,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24b)"},segah:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Arabic SEGAH (Dudon) Two 4 + 3 + 3 tetrachords"},segah2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,349.22823143301,391.99543598175,425.01198472693,466.16376151809,523.2511306012],description:"Iranian mode Segah from C"},segah_rat:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Rationalized Arabic Seg\xEF\xBF\xBDh\r"},seidel974:{frequencies:[261.6255653006,262.64754016506,266.73543962288,267.75741448733,268.77938935179,273.88926367407,274.91123853852,276.95518826743,277.97716313189,280.0211128608,283.08703745416,284.10901231862,285.13098718308,287.17493691199,289.2188866409,290.24086150535,294.32876096318,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,486.4600354808,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,515.07533168556,519.16323114338,523.2511306012],description:"Dave Seidel, Base 9:7:4 Symmetry, scale for Passacaglia and Fugue State (2005)"},seikilos:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,441.49314144476,457.84473927605,504.56359022259,523.2511306012],description:"Seikilos Tuning"},sekati1:{frequencies:[261.6255653006,285.2147362526,318.99014578736,340.97107458785,383.86043226246,424.60539155549,468.56721805116,523.2511306012],description:"Gamelan sekati from Sumenep, East-Madura. 1/1=244 Hz."},sekati2:{frequencies:[261.6255653006,288.87830434024,317.34219433319,357.31261688157,393.64955765984,420.29657220667,469.35141988267,523.2511306012],description:"Gamelan Kyahi Sepuh from kraton Solo. 1/1=216 Hz."},sekati3:{frequencies:[261.6255653006,291.90272733088,308.20569577938,369.53649673407,403.69531865382,425.43272843735,475.11832680028,523.2511306012],description:"Gamelan Kyahi Henem from kraton Solo. 1/1=168.5 Hz."},sekati4:{frequencies:[261.6255653006,271.36353278789,288.89182053123,342.12578909252,379.12979967788,410.29128883625,439.50493264224,523.2511306012],description:"Gamelan Kyahi Guntur madu from kraton Jogya. 1/1=201.5 Hz."},sekati5:{frequencies:[261.6255653006,274.79663866182,311.31645994273,355.61927540077,375.97459751383,397.52718524897,433.44837981883,523.2511306012],description:"Gamelan Kyahi Naga Ilaga from kraton Jogya. 1/1=218.5 Hz."},sekati6:{frequencies:[261.6255653006,284.57524936299,310.80330758934,358.01400474517,390.79902205709,427.51850178351,468.18764285778,523.2511306012],description:"Gamelan Kyahi Munggang from Paku Alaman, Jogya. 1/1=199.5 Hz."},sekati7:{frequencies:[261.6255653006,286.67481979642,318.21831168293,371.10013445627,390.58282835584,422.12643845206,463.87524473877,523.2511306012],description:"Gamelan of Sultan Anom from Cheribon. 1/1=282 Hz."},sekati8:{frequencies:[261.6255653006,287.04067548259,315.94410704802,350.82750428678,381.72407804086,425.57749367468,447.5043967797,523.2511306012],description:"The old Sultans-gamelan Kyahi Suka rame from Banten. 1/1=262.5 Hz."},sekati9:{frequencies:[261.6255653006,280.44107893528,310.90439774384,346.74342440827,376.31071188751,412.14996063869,455.1567650372,523.2511306012],description:"Gamelan Sekati from Katjerbonan, Cheribon. 1/1=292 Hz."},selisir:{frequencies:[261.6255653006,278.78833362316,320.24370022528,380.8360868427,417.71053321823,524.76452349887],description:"Gamelan semara pagulingan, Bali. Pagan Kelod"},selisir2:{frequencies:[261.6255653006,279.59466973861,299.66214729245,376.46181130035,408.17001145418,520.23742585195],description:"Gamelan semara pagulingan, Bali. Kamasan"},selisir3:{frequencies:[261.6255653006,284.98499077387,305.5412851438,378.42269266694,406.45400323486,523.2511306012],description:"Gamelan gong, Pliatan, Bali. 1/1=280 Hz, McPhee, 1966"},selisir4:{frequencies:[261.6255653006,277.23130136276,295.59098907682,376.373620257,399.32323124828,523.2511306012],description:"Gamelan gong, Apuan, Bali. 1/1=285 Hz. McPhee, 1966"},selisir5:{frequencies:[261.6255653006,275.89605068063,309.19384990071,383.40037296022,406.23315014465,523.2511306012],description:"Gamelan gong, Sayan, Bali. 1/1=275 Hz. McPhee, 1966"},selisir6:{frequencies:[261.6255653006,282.63199755101,312.23197007902,396.25769882774,415.35445602102,523.2511306012],description:"Gamelan gong, Gianyar, Bali. 1/1=274 Hz. McPhee, 1966"},semipor1:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,353.19451315581,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"First 16/15&250/243 = 648/625&250/243 scale"},semisixths:{frequencies:[261.6255653006,264.19830736984,270.23055453212,272.88791531122,275.57140613391,281.86332858923,284.63508234504,291.13394747727,293.99686553194,300.70948316519,303.66656221886,306.65272199551,313.65430163898,316.7386758187,323.97054074552,327.15636145846,330.37351240232,337.91669168384,341.23965429995,349.03093233441,352.46319080675,360.51072564419,364.05587272954,367.63587953306,376.02984347246,379.72760059524,388.39764380609,392.21702191873,396.07395857323,405.11722624758,409.10101938242,418.44172684717,422.55654641528,426.71183224275,436.45463212963,440.74658728358,450.80983509489,455.24295209046,465.63718490681,470.21611194415,474.84006394159,485.68174342829,490.45777940536,501.656046885,506.58917188228,511.57080469686,523.2511306012],description:"Semisixths temperament, 13-limit, g=443.0"},"scalamakesrc2\\semisixths_8":{frequencies:[261.6255653006,282.20554108354,304.40437778605,337.94858305883,364.53227585368,393.20709362444,436.53702313055,470.87587163898,522.76460573117],description:"8-note MOS of Semisixths [7, 9, 13, -2, 1, 5] temperament, TOP tuning"},semisuper:{frequencies:[261.6255653006,267.78942821112,272.60119889127,277.49943141001,284.03728045772,289.141002119,295.95312328758,301.27095467792,308.36885759663,313.90977919898,321.30545111289,327.07882560827,334.78475653951,340.80033382945,348.82954357113,355.09748450744,363.46353108469,369.99442271164,378.7114412363,385.5163125912,392.44345945086,401.68937424288,408.90712663484,418.54092077997,426.06147005461,436.09942062666,443.93546710474,454.39452662825,462.55931114028,473.45714317395,481.96445416288,493.31947147471,502.18367855499,514.01505508798,523.2511306012],description:"Semisuper temperament, g=71.146064, p=600, 5-limit"},semithirds:{frequencies:[13.75,13.81661017188,13.90316796691,13.99026794524,14.07791366516,14.14611237417,14.23473442257,14.3239115844,14.41364750281,14.48347263281,14.57420816344,14.665512046,14.73655738771,14.82887834882,14.92177776458,15.01525908647,15.08799873642,15.18252139242,15.27763629821,15.37334698758,15.4478213521,15.54459820959,15.64198144101,15.73997475533,15.81622511342,15.91530993122,16.01501558389,16.11534586889,16.19341466585,16.29486248479,16.39694594444,16.47637891809,16.57959953527,16.68346670883,16.78798468204,16.86931199442,16.97499424439,17.08133847,17.18834901569,17.27161584349,17.37981843193,17.48869878298,17.59826134469,17.68351394199,17.7942969746,17.90577393328,18.01794937217,18.10523509614,18.21866011204,18.33279560295,18.42160666689,18.53701356879,18.6531435747,18.77000099922,18.86093005309,18.97908920954,19.09798871479,19.21763298632,19.3107305405,19.43170758802,19.55344264036,19.67594033402,19.77125798984,19.89512013023,20.01975835255,20.14517740386,20.24276822054,20.36958425827,20.49719488615,20.62560496443,20.72552315291,20.85536353332,20.98601745346,21.08768161561,21.21979095359,21.352727802,21.48649759166,21.59058626784,21.72584618454,21.86195334633,21.99891331359,22.10548432428,22.24396995552,22.38332303719,22.52354926226,22.63266180681,22.7744500803,22.91712649141,23.06069686887,23.17241155847,23.3175812365,23.46366023269,23.57732716458,23.72503340608,23.87366512928,24.02322785632,24.1396055475,24.29083432682,24.44301065897,24.59614033986,24.71529329517,24.87012861873,25.02593409262,25.18271565096,25.30471019771,25.46323807533,25.62275923969,25.78327976642,25.90818367164,26.07049216435,26.23381763196,26.36090411207,26.52604894185,26.69222821075,26.85944870765,26.98956598001,27.15864922771,27.32879158412,27.5],description:"Semithirds temperament, g=193.199615, 5-limit"},sensisynch19:{frequencies:[261.6255653006,272.4389540986,281.73678149918,293.38139793239,303.39395317428,313.74821628003,326.71591476706,337.86611241253,351.83064080634,363.83795665907,376.25506171692,391.80626469239,405.17787315281,421.92450060765,436.32398762558,454.35793210906,469.86431365505,485.89989602801,505.98288939536,523.2511306012],description:"Sensi[19] in synch (brat=-1) tuning, generator ~162/125 satisfies g^9-g^7-4=0"},serre_enh:{frequencies:[261.6255653006,265.7783520514,279.06726965397,348.83408706747,392.4383479509,398.6675280771,418.60090448096,523.2511306012],description:"Dorian mode of the Serre's Enharmonic"},"sev-elev":{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,336.37572681506,359.73515228832,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Seven-Eleven Blues" of Pitch Palette'},sha:{frequencies:[261.6255653006,266.96486255163,280.31310567921,284.82183961519,290.63452941521,294.32876096318,300.33547037059,305.16625703708,320.42456924675,326.96384715385,343.31203882349,348.83408706747,355.95315006884,373.75080757229,392.4383479509,400.44729382745,406.8883429195,420.46965851882,427.23275920923,435.9517939049,457.74938532681,480.63685362987,490.44577048562,498.33441009638,523.2511306012],description:"Three chains of sqrt(3/2) separated by 10/7"},shahin:{frequencies:[261.6255653006,277.01530443593,282.55561052465,294.32876096318,310.50067090621,317.47821407264,328.55303549378,348.83408706747,357.66532977804,371.78369805875,376.74081403286,392.4383479509,415.52295665389,428.11456140098,441.49314144476,463.20591889287,478.90781444856,495.71159741166,523.2511306012],description:"Mohajeri Shahin Iranian style scale, TL 9-4-2006"},shahin_wt:{frequencies:[261.6255653006,276.93928561067,294.25491037444,311.47852302926,329.62755691287,348.92163548373,370.73795561568,392.4383479509,415.30469757995,439.61371330969,467.10055427519,494.44133512215,523.2511306012],description:"Mohajeri Shahin, well temperament, TL 28-12-2006"},shalfun:{frequencies:[261.6255653006,269.43930514995,277.46904793785,285.74220762407,294.32876096318,302.80736724606,311.45900631024,320.30554027987,329.50323085718,338.98103822311,348.83408706747,359.12912189513,369.78878487717,380.87868001252,392.4383479509,404.24222079821,416.2697936366,428.68354137408,441.49314144476,454.4477424016,467.68960547122,481.19471271032,494.94053216156,508.90014647073,523.2511306012],description:"d'Erlanger vol.5, p.40. After Alexandre ^Salfun (Chalfoun)"},"sharm1c-conm":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Subharm1C-ConMixolydian"},"sharm1c-conp":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharm1C-ConPhryg"},"sharm1c-dor":{frequencies:[261.6255653006,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,479.64686971777,547.03527290125,523.2511306012],description:"Subharm1C-Dorian"},"sharm1c-lyd":{frequencies:[261.6255653006,309.19384990071,323.91736656265,340.11323489078,382.37582620857,377.90359432309,485.87604984397,503.87145909745,523.2511306012],description:"Subharm1C-Lydian"},"sharm1c-mix":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,366.27579142084,457.84473927605,488.36772189445,523.2511306012],description:"Subharm1C-Mixolydian"},"sharm1c-phr":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,392.4383479509,483.00104363188,502.32108537715,523.2511306012],description:"Subharm1C-Phrygian"},"sharm1e-conm":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,430.91269578922,443.97065626768,457.84473927605,523.2511306012],description:"Subharm1E-ConMixolydian"},"sharm1e-conp":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Subharm1E-ConPhrygian"},"sharm1e-dor":{frequencies:[261.6255653006,338.57426097725,348.83408706747,359.73515228832,383.71749577421,411.12588832951,500.50108144463,511.62332769895,523.2511306012],description:"Subharm1E-Dorian"},"sharm1e-lyd":{frequencies:[261.6255653006,323.91736656265,331.81779013735,340.11323489078,382.37582620857,377.90359432309,503.87145909745,513.37846775967,523.2511306012],description:"Subharm1E-Lydian"},"sharm1e-mix":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,366.27579142084,488.36772189445,505.20798816668,523.2511306012],description:"Subharm1E-Mixolydian"},"sharm1e-phr":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,392.4383479509,502.32108537715,512.57253609913,523.2511306012],description:"Subharm1E-Phrygian"},"sharm2c-15":{frequencies:[261.6255653006,327.03195662575,341.25073734861,356.76213450082,392.4383479509,461.69217405988,490.54793493862,523.2511306012],description:"Subharm2C-15-Harmonia"},"sharm2c-hypod":{frequencies:[261.6255653006,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,465.11211608996,492.47165233054,523.2511306012],description:"SHarm2C-Hypodorian"},"sharm2c-hypol":{frequencies:[261.6255653006,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,475.68284600109,498.33441009638,523.2511306012],description:"SHarm2C-Hypolydian"},"sharm2c-hypop":{frequencies:[261.6255653006,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,470.92601754108,495.71159741166,523.2511306012],description:"SHarm2C-Hypophrygian"},"sharm2e-15":{frequencies:[261.6255653006,341.25073734861,348.83408706747,356.76213450082,392.4383479509,490.54793493862,506.37206187213,523.2511306012],description:"Subharm2E-15-Harmonia"},"sharm2e-hypod":{frequencies:[261.6255653006,334.88072358477,341.71502406609,348.83408706747,364.00078650518,380.54627680087,492.47165233054,507.3950357345,523.2511306012],description:"SHarm2E-Hypodorian"},"sharm2e-hypol":{frequencies:[261.6255653006,327.03195662575,337.58137458142,348.83408706747,373.75080757229,402.50086969323,498.33441009638,510.48890790361,523.2511306012],description:"SHarm2E-Hypolydian"},"sharm2e-hypop":{frequencies:[261.6255653006,348.83408706747,355.41586229515,362.25078272391,376.74081403286,392.4383479509,495.71159741166,509.10920815252,523.2511306012],description:"SHarm2E-Hypophrygian"},sherwood:{frequencies:[261.6255653006,279.50101530337,292.73346657716,312.73435005323,327.54017122074,349.91920725962,366.48547573919,391.52543233055,418.27599117656,438.07873640926,468.01000025525,490.16733894289,523.65750116998],description:"Sherwood's improved meantone temperament"},shrutar:{frequencies:[261.6255653006,269.80136421624,277.49581689502,285.40970760065,294.32876096318,304.37698984459,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,368.95121675679,379.48299988042,392.4383479509,405.83598431812,417.42065019394,428.11456140098,441.49314144476,457.84473927605,470.92601754108,490.54793493862,505.97733342682,523.2511306012],description:"Paul Erlich's Shrutar tuning (from 9th fret) tempered with Dave Keenan"},shrutar_temp:{frequencies:[261.6255653006,269.67683152447,277.97586744827,286.53029793775,295.34798250635,304.4370214407,313.80576690868,327.74897996102,337.83512841993,348.23166805304,358.94815083964,369.99442271164,381.38063259971,393.11724175776,405.21503337437,417.68512248001,430.53896367224,443.78837151315,463.50705251482,477.77102045752,492.47394780842,507.62934310616,523.2511306012],description:"Shrutar temperament, 11-limit, g=52.474, 1/2 oct."},shrutart:{frequencies:[261.6255653006,269.83675183105,278.27349931787,286.14641333958,294.32706056425,305.2349557921,313.94319125793,327.02936607233,337.2932679302,348.82502010853,358.79758764604,369.99442271164,381.540672377,392.44854854484,405.86600994967,418.6042204156,436.0530078362,448.49343183014,465.11480315564,478.41198231361,491.94721442498,507.32849364948,523.2511306012],description:"Paul Erlich's 'Shrutar' tuning tempered by Dave Keenan, TL 29-12-2000"},siamese:{frequencies:[261.6255653006,269.26067151764,288.95340229325,296.22023396764,319.13574119147,352.26720984209,362.5475414329,388.79334481031,400.18585940536,429.40436513853,443.77760270734,473.98350631811,523.2511306012],description:"Siamese Tuning, after Clem Fortuna's Microtonal Guide"},silbermann1:{frequencies:[261.6255653006,275.15551885617,293.66476791741,312.53552595124,327.77163799145,349.82028288879,367.9112241576,391.99543598175,411.56972129721,438.75957425603,467.74568907204,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 1"},silbermann2:{frequencies:[261.6255653006,275.00020270933,293.00227310437,312.18279369479,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 2, 1/6 Pyth. comma meantone"},silbermann2a:{frequencies:[261.6255653006,275.00020270933,293.00227310437,310.77584116741,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Modified Silbermann's temperament nr. 2, also used by Hinsz in Midwolda"},silver:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.53543886896,349.23174545031,369.98176232374,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating chromatic scale, A.L.Leigh Silver JASA 29/4, 476-481, 1957"},silver_10:{frequencies:[261.6255653006,270.26884019355,294.27266239927,320.41022551991,330.99364634362,360.39280035711,392.40094712608,405.36462386145,441.36692569059,480.56953386201,523.2511306012],description:"Ten-tone MOS from 350.9 cents"},silver_11:{frequencies:[261.6255653006,277.73657748574,294.83971256733,315.81001885226,335.25773244276,355.90304440354,381.21644531515,404.69191411574,429.61301214396,460.16899244324,488.50639225338,523.2511306012],description:"Eleven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_11a:{frequencies:[261.6255653006,272.21316796874,283.22923537857,314.22802528801,326.94437231289,340.17533123945,377.40674067136,392.67983758722,408.5710143206,453.28817432381,471.63208149661,523.2511306012],description:"Eleven-tone MOS from 317.17 cents"},silver_11b:{frequencies:[261.6255653006,281.48899567641,302.85877036442,316.87090334834,340.92873240472,366.81310701257,383.78194911277,412.91987382947,444.27004083312,464.82473992747,500.11279777071,523.2511306012],description:"Eleven-tone MOS from 331.67 cents"},silver_7:{frequencies:[261.6255653006,277.73649727228,315.81000061035,335.2576162513,381.21640127531,404.69175048432,460.16888612163,523.2511306012],description:"Seven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_8:{frequencies:[261.6255653006,288.49477506296,306.46277751246,337.93681424842,358.98416079003,395.852196628,420.50662316693,492.57276348379,523.2511306012],description:"Eight-tone MOS from 273.85 cents"},silver_9:{frequencies:[261.6255653006,294.18258755347,307.6617709921,345.94759796409,361.79860795042,406.82129262791,425.46148093979,478.40645551359,500.32661205896,523.2511306012],description:"Nine-tone MOS from 280.61 cents"},silvermean:{frequencies:[261.6255653006,286.15296204753,327.03195662575,345.42750418595,392.4383479509,416.96574469783,474.19633710734,523.2511306012],description:"First 6 approximants to the Silver Mean, 1+ sqr(2) reduced by 2/1"},simonton:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Simonton Integral Ratio Scale, JASA 25/6 (1953): A new integral ratio scale"},sims:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Ezra Sims' 18-tone mode"},sims2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Sims II"},sims_24:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.97716313189,283.42769574232,286.15296204753,294.32876096318,302.50455987882,305.22982618403,310.68035879446,316.13089140489,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"See his article, Reflections on This and That, 1991 p.93-106"},sin:{frequencies:[261.6255653006,275.08939827539,302.09917071192,334.63165645627,369.99442271164,407.01712569342,445.10399729103,483.9175316883,523.2511306012,562.97086325858,602.98541169118,643.23087116255,683.66056756853,724.23972686276,764.94197926416,805.74682982871,846.63811574624,887.6028851904,928.63083777952,969.71346974542,1010.84345850104,1052.01529432917],description:"1/sin(2pi/n), n=4..25"},sinemod12:{frequencies:[261.6255653006,270.6035983646,282.0485507085,292.16840832754,301.82804372114,314.42520179993,326.24260278214,336.76433478807,350.4641458176,364.21811789193,375.86233664064,390.61306119732,406.50371126161,419.61372202861,435.38454314112,453.55584308858,468.551249676,485.36279478778,505.89080731022,523.2511306012],description:"Sine modulated F=12, A=-.08203754"},sinemod8:{frequencies:[261.6255653006,272.43905323978,281.98404270447,290.99567087708,301.68076007415,314.40050256998,326.99158834066,337.97331861211,348.96407538813,362.38276875396,377.76595534172,392.29216556304,405.04934945717,418.6525822649,435.418746849,453.77727371169,470.43955130022,485.47382867757,502.48255971303,523.2511306012],description:"Sine modulated F=8, A=.11364155. Deviation minimal3/2, 4/3, 5/4, 6/5, 5/3, 8/5"},singapore:{frequencies:[261.6255653006,291.46787011619,321.35550581422,354.51258839996,385.70651737906,428.95813651779,462.1422075194,523.2511306012],description:"An observed xylophone tuning from Singapore"},sintemp6:{frequencies:[261.6255653006,277.18263097687,292.42974339757,312.08834713741,327.870830746,349.91196330865,369.15973155124,391.11111150212,416.11779639122,437.6550518996,467.60417912673,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/6 Pyth, one cycle, f0=-90 degrees"},sintemp6a:{frequencies:[261.6255653006,276.17281343288,293.21211353711,310.64741311165,328.42667470471,349.22823143301,368.43838932195,391.77416758435,414.19655102258,438.82595961933,465.90062756558,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/12 Pyth, one cycle, f0= D-A"},sintemp_19:{frequencies:[261.6255653006,272.86445838226,281.30973389888,292.50627485027,304.14845459111,313.56198179795,327.03195662575,338.65502209741,350.02113164026,365.30494475029,376.98581738134,391.19763056219,407.47965586966,419.94695489748,437.42555500456,453.91586039553,468.43012697388,488.88431353627,505.29249383438,523.2511306012],description:"Sine modulated thirds, A=7.366 cents, one cycle over fifths, f0=90 degrees"},sintemp_7:{frequencies:[261.6255653006,291.06608881088,319.67397341855,351.09362859375,390.60192440975,432.07134328681,473.03044489876,523.2511306012],description:"Sine modulated fifths, A=8.12 cents, one cycle, f0=90 degrees"},slen_pel:{frequencies:[261.6255653006,261.6255653006,283.17034563789,298.45295203849,338.50336851425,364.68988616898,346.01554587335,389.06292924114,398.38689497567,420.13030572059,455.51656649021,493.31307433255,523.2511306012],description:"Pelog white, Slendro black"},slen_pel16:{frequencies:[261.6255653006,261.6255653006,285.30470202322,285.30470202322,297.93622032612,311.12698372208,339.28638158975,386.37547528213,386.37547528213,403.48177901006,421.34544350737,440,523.2511306012],description:"16-tET Slendro and Pelog"},slen_pel23:{frequencies:[261.6255653006,261.6255653006,295.14355885465,295.14355885465,286.38154466424,343.14246862785,313.47984535337,398.94762483098,398.94762483098,387.10394860926,450.05828708186,423.73315704439,523.2511306012],description:"23-tET Slendro and Pelog"},slen_pel_jc:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,279.06726965397,341.71502406609,348.83408706747,392.4383479509,392.4383479509,392.4383479509,448.50096908674,418.60090448096,523.2511306012],description:"Slendro/JC PELOG S1c,P1c#,S2d,eb,P2e,S3f,P3f#,S4g,ab,P4a,S5bb,P5b"},slen_pel_schmidt:{frequencies:[261.6255653006,261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,392.4383479509,457.84473927605,457.84473927605,490.54793493862,523.2511306012],description:"Dan Schmidt (Pelog white, Slendro black)"},slendro:{frequencies:[261.6255653006,298.45295203849,346.01554587335,398.38689497567,455.51656649021,523.2511306012],description:"Observed Javanese Slendro scale, Helmholtz/Ellis p. 518, nr.94"},slendro10:{frequencies:[261.6255653006,304.21577360535,342.24274530602,391.67780832635,463.92905474816,523.2511306012],description:"Low gender from Singaraja (banjar Lod Peken), Bali. 1/1=172 Hz. McPhee, 1966."},slendro11:{frequencies:[261.6255653006,299.11221417218,343.62760815601,387.36203100102,452.96366529656,523.2511306012],description:"Low gender from Sawan, Bali. 1/1=167.5 Hz. McPhee, 1966."},slendro2:{frequencies:[261.6255653006,299.13295468097,343.58614396263,395.91119354826,450.08870388136,523.2511306012],description:"Gamelan slendro from Ranchaiyuh, distr. Tanggerang, Batavia. 1/1=282.5 Hz"},slendro3:{frequencies:[261.6255653006,298.44694115772,339.14425131559,391.46936437571,453.48431318771,522.28214737536],description:"Gamelan kodok ngorek. 1/1=270 Hz"},slendro4:{frequencies:[261.6255653006,294.5074669504,344.54514337401,400.3014113889,467.49486258632,523.2511306012],description:"Low gender in saih lima from Kuta, Bali. 1/1=183 Hz. McPhee, 1966"},slendro5_1:{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7; from Lou Harrison"},slendro5_2:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 2"},slendro5_4:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 4"},slendro6:{frequencies:[261.6255653006,295.05549864457,341.56671025356,398.25224940202,461.478427683,523.2511306012],description:"Low gender from Klandis, Bali. 1/1=180 Hz. McPhee, 1966"},slendro8:{frequencies:[261.6255653006,309.85821141747,350.78288084997,406.32350365121,467.71050779996,523.2511306012],description:"Low gender from Tabanan, Bali. 1/1=179 Hz. McPhee, 1966."},slendro9:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Low gender from Singaraja (banjar Panataran), Bali. 1/1=175 Hz. McPhee, 1966."},slendro_7_1:{frequencies:[261.6255653006,299.00064605783,341.71502406609,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 1, From HMSL Manual, also Lou Harrison, Jacques Dudon"},slendro_7_2:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 2, From Lou Harrison, Jacques Dudon's APTOS"},slendro_7_3:{frequencies:[261.6255653006,294.32876096318,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:'Septimal Slendro 3, Harrison, Dudon, called "MILLS" after Mills Gamelan'},slendro_7_4:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:'Septimal Slendro 4, from Lou Harrison, Jacques Dudon, called "NAT"'},slendro_7_5:{frequencies:[261.6255653006,305.22982618403,343.38355445704,400.61414686654,467.3831713443,523.2511306012],description:"Septimal Slendro 5, from Jacques Dudon"},slendro_7_6:{frequencies:[261.6255653006,299.00064605783,341.71502406609,390.53145607553,455.62003208812,523.2511306012],description:"Septimal Slendro 6, from Robert Walker"},slendro_a1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:`Dudon's Slendro A1, "Seven-Limit Slendro Mutations", 1/1 8:2'94 hexany 1.3.7.21`},slendro_a2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,448.50096908674,523.2511306012],description:`Dudon's Slendro A2 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_alv:{frequencies:[261.6255653006,299.00064605783,348.83408706747,406.97310157871,465.11211608996,523.2511306012],description:"Bill Alves, slendro for Gender Barung, 1/1 vol.9 no.4, 1997. 1/1=282.86"},slendro_ang:{frequencies:[261.6255653006,299.00064605783,340.82516392797,388.43396508487,445.83123341082,523.2511306012],description:"Gamelan Angklung Sangsit, North Bali. 1/1=294 Hz"},slendro_av:{frequencies:[261.6255653006,298.97057995496,344.02264297658,395.86362945285,454.20288100724,525.67465946865],description:"Average of 30 measured slendro gamelans, W. Surjodiningrat et al., 1993."},slendro_dudon:{frequencies:[261.6255653006,305.22982618403,348.83408706747,399.70572476481,457.84473927605,523.2511306012],description:'Dudon\'s Slendro from "Fleurs de lumie`re"'},slendro_gum:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.92601754108,525.62941881859],description:"Gumbeng, bamboo idiochord from Banyumas. 1/1=440 Hz"},slendro_ky1:{frequencies:[261.6255653006,297.58776037991,344.33874539242,394.68595744625,449.52853279627,523.2511306012],description:"Kyahi Kanyut Me`sem slendro, Mangku Nagaran, Solo. 1/1=291 Hz"},slendro_ky2:{frequencies:[261.6255653006,302.42139140287,345.87786599062,395.54249276388,453.1886900261,523.2511306012],description:"Kyahi Pengawe' sari, Paku Alaman, Jogya. 1/1=295 Hz"},slendro_laras:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012,598.00129211566,697.66817413493],description:'Lou Harrison, gamelan "Si Betty"'},slendro_m:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:`Dudon's Slendro M from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_madu:{frequencies:[261.6255653006,300.52885648597,345.61604384578,394.49404533893,447.94973572445,522.94897617031],description:"Sultan's gamelan Madoe kentir, Jogjakarta, Jaap Kunst"},slendro_mat:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,455.62003208812,457.84473927605,523.2511306012],description:`Dudon's Slendro Matrix from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_pa:{frequencies:[261.6255653006,304.19649364034,353.69443592699,411.24653512154,478.16333951147,523.2511306012],description:'"Blown fifth" primitive slendro, von Hornbostel'},slendro_pas:{frequencies:[261.6255653006,300.35531433711,343.03050002254,393.12919962609,450.54468214486,523.2511306012],description:"Gamelan slendro of regent of Pasoeroean, Jaap Kunst"},slendro_pb:{frequencies:[261.6255653006,304.72408298441,342.83241505062,399.30842833955,449.24533531117,523.2511306012],description:'"Blown fifth" medium slendro, von Hornbostel'},slendro_pc:{frequencies:[261.6255653006,299.48910562989,342.83241505062,392.44854854484,449.24533531117,523.2511306012],description:'"Blown fifth" modern slendro, von Hornbostel'},slendro_pliat:{frequencies:[261.6255653006,299.73468146833,339.98478643783,393.08060743874,447.03290350508,523.2511306012,599.46936293666,679.96957287566,786.16121487749,894.06580701017],description:"Gender wayang from Pliatan, South Bali (Slendro), 1/1=305.5 Hz"},slendro_q13:{frequencies:[261.6255653006,307.00725675226,360.2608752926,400.8015646157,470.32478922042,523.2511306012],description:"13-tET quasi slendro, Blackwood"},slendro_s1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,398.6675280771,457.84473927605,523.2511306012],description:`Dudon's Slendro S1 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_s2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,455.62003208812,523.2511306012],description:"Dudon's Slendro S2"},slendro_udan:{frequencies:[261.6255653006,305.22982618403,351.32575911795,402.50086969323,465.11211608996,523.2511306012],description:"Slendro Udan Mas (approx)"},slendro_wolf:{frequencies:[261.6255653006,298.18866107946,339.86157848985,395.0032340925,450.20632964813,523.2511306012],description:"Daniel Wolf's slendro. Tuning List 30 5 1997"},slendrob1:{frequencies:[261.6255653006,307.44024341205,355.66611281954,409.9203247543,476.83364134848,523.2511306012],description:"Gamelan miring of Musadikrama, desa Katur, Bajanegara. 1/1=434 Hz"},slendrob2:{frequencies:[261.6255653006,307.55978097874,346.50416420081,398.42969909174,449.35693171058,523.2511306012],description:"Gamelan miring from Bajanegara. 1/1=262 Hz"},slendrob3:{frequencies:[261.6255653006,304.90191053936,342.27700149692,398.33972372326,447.51732140012,523.2511306012],description:"Gamelan miring from Ngumpak, Bajanegara. 1/1=266 Hz"},slendroc1:{frequencies:[261.6255653006,297.59222964268,344.42030317161,394.72197985873,449.50490455178,523.2511306012],description:"Kyahi Kanyut mesem slendro (Mangku Nagaran Solo). 1/1=291 Hz"},slendroc2:{frequencies:[261.6255653006,302.44445076078,346.01554587335,396.09235530397,453.15466093696,523.2511306012],description:"Kyahi Pengawe sari (Paku Alaman, Jogja). 1/1=295 Hz."},slendroc3:{frequencies:[261.6255653006,301.39807245198,344.42030317161,395.40657391157,451.84778706363,523.2511306012],description:"Gamelan slendro of R.M. Jayadipura, Jogja. 1/1=231 Hz"},slendroc4:{frequencies:[261.6255653006,299.14332201883,343.8239850859,396.09235530397,450.28451247858,523.2511306012],description:"Gamelan slendro, Rancha iyuh, Tanggerang, Batavia. 1/1=282.5 Hz"},slendroc5:{frequencies:[261.6255653006,299.83528893666,340.07120590121,393.12919962609,447.17417015401,523.2511306012],description:"Gender wayang from Pliatan, South Bali. 1/1=611 Hz"},slendroc6:{frequencies:[261.6255653006,296.73398952435,343.8239850859,396.7793260952,453.9405988926,527.19506190947,607.33963549452,696.44215167899,797.23415748628,918.4302691641,1071.58188326661],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},slendrod1:{frequencies:[261.6255653006,292.47977325983,340.6610152784,389.06292924114,444.85552088095,523.2511306012],description:"Gender wayang from Ubud (S. Bali). 1/1=347 Hz"},smith_eh:{frequencies:[261.6255653006,272.7117507892,292.30354792656,313.30283124826,326.5788018031,350.04044239751,364.87314355143,391.08587539224,407.65784362321,436.94425707006,468.33462614046,488.17995458879,523.2511306012],description:"Robert Smith's Equal Harmony temperament (1749)"},smith_mq:{frequencies:[261.6255653006,273.37438418823,292.50629623572,312.97714101186,327.03200500996,349.91910755601,365.63292511375,391.22148485648,408.79006910398,437.39894995248,468.01000388518,489.02693031834,523.2511306012],description:"Robert Smith approximation of quarter comma meantone fifth"},"scalamakesrc2\\smithgw-ball":{frequencies:[261.6255653006,267.07609791103,272.52663052146,274.70684356563,280.31310567921,286.15296204753,294.32876096318,300.46061014991,305.22982618403,306.59245933664,313.95067836072,320.49131749323,327.03195662575,333.84512238879,336.37572681506,343.38355445704,350.39138209902,357.69120255941,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,480.73697623985,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Ball 2 around tetrad lattice hole"},smithgw46:{frequencies:[261.6255653006,273.72380653152,313.47993226845,327.97605323154,364.46098649856,392.98113253789,436.69740466987,456.89141950378,523.2511306012],description:'Gene Ward Smith 46-tET subset "Star"'},smithgw46a:{frequencies:[261.6255653006,282.09853500802,313.47993226845,327.97605323154,375.61187043063,392.98113253789,436.69740466987,470.87026054824,523.2511306012],description:'46-tET version of "Star", alternative version'},smithgw72a:{frequencies:[261.6255653006,285.30470202322,299.37379946195,326.46944327063,342.56848033562,373.57357677338,391.99543598175,427.47405410759,435.78442404634,457.27406033445,498.66089874196,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72c:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72d:{frequencies:[261.6255653006,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72e:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72f:{frequencies:[261.6255653006,326.46944327063,349.22823143301,435.78442404634,466.16376151809,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72g:{frequencies:[261.6255653006,326.46944327063,349.22823143301,391.99543598175,419.32216217931,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72h:{frequencies:[261.6255653006,279.86396690685,314.13668154225,349.22823143301,391.99543598175,435.78442404634,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 09-01-2002"},smithgw72i:{frequencies:[261.6255653006,279.86396690685,293.66476791741,314.13668154225,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,470.6732130613,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset version of Duodene, TL 02-06-2002"},smithgw72j:{frequencies:[261.6255653006,274.52698453615,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"{225/224, 441/440} tempering of decad, 72-et version (2002)"},smithgw84:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:'Gene Ward Smith 84-tET subset, 11-limit temperament "Orwell", 2002'},smithgw_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,350.39138209902,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,490.54793493862,523.2511306012],description:"Gene Ward Smith chord analogue to periodicity blocks, TL 12-07-2002"},smithgw_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,299.00064605783,305.22982618403,320.49131749323,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,427.14378008261,448.50096908674,457.84473927605,478.40103369253,488.36772189445,512.57253609913,523.2511306012],description:"Gene Ward Smith symmetrical 7-limit JI version of Blackjack, TL 10-5-2002"},smithgw_45:{frequencies:[261.6255653006,267.02002970726,269.13627541126,274.68560334708,276.86260193655,282.57123920205,288.39758300936,290.68325478745,296.67686217097,299.02814898089,305.19382000629,311.48661940174,313.95528147508,320.42873367481,322.96826575344,329.62755691287,336.42415617173,339.09045868095,346.08217376006,348.82502010853,356.01745236555,363.35818557229,366.23795155866,373.78942366597,376.75185941212,384.52011812375,392.44854854484,395.55886785613,403.71490654806,406.9145164708,415.30469757995,423.86787605389,427.22720671064,436.03621571368,439.49198556474,448.5538823653,457.80262665414,461.43090443914,470.94516310483,474.67759826036,484.46499093218,494.45418731234,498.37294408452,508.64890891624,512.68016480935,523.2511306012],description:"Gene Ward Smith large limma repeating 5-tone MOS"},smithgw_58:{frequencies:[261.6255653006,264.89588486686,267.57160087561,269.80136421624,274.70684356563,279.06726965397,282.55561052465,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.49231810831,305.22982618403,310.07474405997,313.95067836072,317.12189733406,319.76457981184,323.76163705949,327.03195662575,332.97799220076,336.37572681506,340.54567384169,343.38355445704,348.83408706747,353.19451315581,356.76213450082,359.73515228832,366.27579142084,370.01329949656,373.75080757229,380.54627680087,383.71749577421,387.59343007496,392.4383479509,398.6675280771,401.98975747775,406.97310157871,411.12588832951,418.60090448096,423.83341578697,428.11456140098,431.68218274599,436.04260883433,441.49314144476,448.50096908674,452.23847716247,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,484.4917875937,490.54793493862,498.33441009638,507.3950357345,511.62332769895,516.79124009995,523.2511306012],description:"Gene Ward Smith 58-tone epimorphic superset of Partch's 43-tone scale"},smithgw_9:{frequencies:[261.6255653006,279.06726965397,305.22982618403,327.03195662575,348.83408706747,392.4383479509,418.60090448096,448.50096908674,490.54793493862,523.2511306012],description:'Gene Ward Smith "Miracle-Magic square" tuning, genus chromaticum of ji_12a'},"smithgw_al-baked":{frequencies:[261.6255653006,277.59364499865,293.85651796007,311.0721560172,330.05816364769,349.39467974592,369.86402907174,392.4383479509,415.42941801053,439.76742419786,466.60823379256,493.94455998605,522.88238970142],description:"Baked alaska, with beat ratios of 2 and 3/2"},"smithgw_al-fried":{frequencies:[261.6255653006,277.00141553195,293.28091128458,310.96067952124,329.23597434237,348.58531822795,369.59898601143,391.32048195179,414.31855981944,439.29480556849,465.11235566178,492.44721175277,522.13326741512],description:"Fried alaska, with octave-fifth brats of 1 and 2"},smithgw_asbru:{frequencies:[261.6255653006,275.52281548997,293.66476791741,313.00128725319,329.62755691287,351.33206601369,367.77883484915,391.99543598175,415.30469757995,440,468.97204376297,490.92584627687,523.2511306012],description:"Modified bifrost (2003)"},smithgw_bifrost:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,413.66634097248,437.39889945791,466.55882736321,489.02683710225,523.2511306012],description:"Six meantone fifths, four pure, two of sqrt(2048/2025 sqrt(5))"},smithgw_cauldron:{frequencies:[261.6255653006,275.03056468741,291.83931845209,312.58541512404,325.54230007562,350.31873582686,364.83969341757,390.77519652096,414.65779561271,435.90375768372,469.07960710644,486.243977751,523.2511306012],description:"Circulating temperament with two pure 9/7 thirds"},smithgw_ck:{frequencies:[195.99771799087,198.06437430898,200.15282320192,202.2632921446,203.72940721765,205.87758869102,208.04842120778,210.24214482145,211.76609376362,213.99901760782,216.25548480725,218.5357448459,220.11981156469,222.44081817627,224.78629944762,227.15651084977,228.80306427848,231.21563094,233.65363506284,235.34728316698,237.82885399313,240.33658984216,242.87076938222,244.63122826831,247.21069030843,249.81735238129,252.45149840587,254.28140507407,256.96262135434,259.67210915034,262.4101678886,264.31225911206,267.09924514556,269.91561641866,272.7616843206,274.73881033537,277.63573538138,280.56320805899,282.59688215652,285.57666497222,288.58786914203,291.63082264784,293.74472081062,296.84205135845,299.9720393359,303.13503255793,305.33231946532,308.55183127196,311.80529233825,315.09305703284,317.37702217863,320.72353853051,324.10533989702,327.52280172307,329.89686439088,333.37539375097,336.89059979959,339.33256534187,342.91058750208,346.52633537645,350.18021075922,352.71850659998,356.43767199462,360.19605541958,363.99406623991,366.6324923874,370.49837299068,374.40501441099,378.35285076765,381.09535716275,385.11373623244,389.17448849491,391.99543598174],description:"Catakleismic temperament, g=316.745, 11-limit"},smithgw_decab:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,439.53094970501,488.36772189445,523.2511306012],description:"(10/9) <==> (16/15) transform of decaa"},smithgw_decac:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,498.33441009638,523.2511306012],description:"inversion of decaa"},smithgw_decad:{frequencies:[261.6255653006,280.31310567921,311.45900631024,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,467.18850946536,498.33441009638,523.2511306012],description:"inversion of decab"},smithgw_diff13:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,313.95067836072,320.35783506196,336.37572681506,406.97310157871,427.32175665765,436.04260883433,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"mod 13 perfect difference set, 7-limit"},smithgw_dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},smithgw_exotic1:{frequencies:[261.6255653006,274.95996987324,293.39100498914,313.05750197389,327.96500300935,349.94905375768,367.78508905896,392.4383479509,411.12588832951,438.68435539504,468.09011223803,491.94750426812,523.2511306012],description:"Exotic temperament featuring four pure 14/11 thirds and two pure fifths"},smithgw_glumma:{frequencies:[261.6255653006,269.10058145205,299.00064605783,313.95067836072,327.03195662575,358.80077526939,373.75080757229,392.4383479509,436.04260883433,448.50096908674,457.84473927605,512.57253609913,523.2511306012],description:"Gene Smith's Glumma scale, 7-limit, 2002"},smithgw_gm:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:'Gene Ward Smith "Genesis Minus" periodicity block'},smithgw_graileq:{frequencies:[261.6255653006,274.83794140225,293.02845982215,312.42294214419,328.20064112269,350.39711148969,365.67350481015,391.53226450123,414.40482204179,438.61355268439,469.63029662389,490.10494633744,523.2511306012],description:"56% RMS grail + 44% JI grail"},smithgw_grailrms:{frequencies:[261.6255653006,274.64037495938,293.11160698959,312.82513967025,328.38692028068,350.6222941497,365.93760986436,391.94882001935,414.52240989365,438.39608269016,469.55771333591,490.068176414,523.2511306012],description:"RMS optimized Holy Grail"},smithgw_hahn12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Hahn-reduced 12 note scale, Fokker block 225/224, 126/125, 64/63"},smithgw_hahn15:{frequencies:[261.6255653006,279.06726965397,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Hahn-reduced 15 note scale"},smithgw_hahn16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Hahn-reduced 16 note scale"},smithgw_hahn19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 19 note scale"},smithgw_hahn22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 22 note scale"},smithgw_indianred:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"32805/32768 Hahn-reduced"},smithgw_klv:{frequencies:[261.6255653006,271.78681896552,282.34272472006,293.30861211826,314.10491445143,326.30440921209,338.97771913949,352.14324873572,377.11107157735,391.75765725694,406.97310157871,422.77949745352,452.75560414132,470.34014155688,488.60764618722,523.2511306012],description:"Variant of kleismic with 9/7 thirds, g=316.492"},smithgw_meandin:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,470.92601754108,504.56359022259,523.2511306012],description:"Gene Smith, inverted detempered 7-limit meantone"},smithgw_meanred:{frequencies:[261.6255653006,281.29980781121,291.99281841585,313.95067836072,325.57848126297,350.39138209902,363.36884069528,390.69417751556,420.46965851882,436.04260883433,468.83301301868,486.65469735975,523.2511306012],description:"171-et Hahn reduced rational Meantone[12]"},smithgw_meantune:{frequencies:[261.6255653006,273.55401844854,279.77233440758,292.56174910339,312.85829351777,327.16018629281,334.59705725462,349.85254391288,365.77071543428,374.29488261541,391.03456781852,418.40555295943,437.51985793188,468.14464283802,489.08159472971,500.47948461038,523.2511306012],description:"Meantune scale/temperament, Gene Ward Smith, 2003"},smithgw_mir22:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,285.40970760065,299.00064605783,305.22982618403,319.76457981184,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,428.11456140098,448.50096908674,457.84473927605,479.64686971777,490.54793493862,512.78610798918,523.2511306012],description:"11-limit Miracle[22]"},smithgw_mmt:{frequencies:[261.6255653006,273.37431312998,292.50627485027,307.38829724655,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.12588832951,437.39890198442,459.65271605653,489.02683710225,523.2511306012],description:"Modified meantone with 5/4, 14/11 and 44/35 major thirds, TL 17-03-2003"},smithgw_modmos12a:{frequencies:[261.6255653006,265.27772209197,292.31087910123,304.72408298441,326.59518553839,340.46429857933,364.90060015836,391.09077971329,407.69874723177,425.01198472693,455.51656649021,488.21056770985,523.2511306012],description:"A 12-note modmos in 50-et meantone"},smithgw_octoid:{frequencies:[261.6255653006,272.34559486824,274.88944875317,277.45706359738,280.04865972334,282.66446436432,285.30470202322,296.99497716113,299.76906949343,302.56907333554,305.39522895084,308.24778413898,311.12698372208,323.87531915696,326.90048829645,329.95391413777,333.03585868997,336.14659218049,339.28638158975,353.18853996009,356.48751029933,359.81729479041,363.17817915623,366.5704580819,369.99442271164,385.15483391523,388.75238658,392.38354231563,396.04861270515,399.74791910495,403.48177901006,420.01432465796,423.93748365756,427.89728706578,431.89407466632,435.9281969008,440,458.02886886968,462.30710409523,466.62530033172,470.98382811593,475.38306960714,479.82340237272,499.48402328631,504.14947188193,508.85849826899,513.6115065207,518.40891338474,523.2511306012],description:"Octoid temperament, g=16.096, oct=1/8, 11-limit"},smithgw_orw18r:{frequencies:[261.6255653006,269.10058145205,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,448.50096908674,457.84473927605,474.80195184183,490.54793493862,523.2511306012],description:'Rational version of two cycles of 9-tone "Orwell"'},smithgw_pel1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 1"},smithgw_pel2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 2"},smithgw_pel3:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 3"},smithgw_pk:{frequencies:[261.6255653006,271.01659746112,280.74472171431,290.822034715,313.8821415949,325.1489200649,336.82012073975,348.91025643633,376.57634157395,390.09352641046,404.09590743895,418.60090448096,451.79296003201,468.01003810189,484.80922990434,523.2511306012],description:"Parakleismic temperament, g=315.263, 5-limit"},smithgw_pris:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_prisa:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,439.53094970501,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_pum13marv:{frequencies:[261.6255653006,293.67396865289,305.56991629828,343.00138030143,326.66798000724,366.68389807519,349.22276077151,392.00157668785,407.88051296056,457.84473927605,436.04260883433,489.45661357347,549.41368713126,523.2511306012],description:"pum13 marvel tempered and in epimorphic order"},smithgw_qm3a:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode A, 72-tET, TL 04-01-2002"},smithgw_qm3b:{frequencies:[261.6255653006,279.86396690685,299.37379946195,326.46944327063,349.22823143301,373.57357677338,391.99543598175,419.32216217931,448.5538823653,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode B"},smithgw_ragasyn1:{frequencies:[261.6255653006,269.16210421872,290.69507255622,313.95067836072,322.99452506247,348.83408706747,363.36884069528,392.4383479509,403.74315632809,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Ragasyn 6561/6250 81/80 scale"},smithgw_rainbow:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.51268695591,327.03195662575,349.91912034749,365.63284274659,391.22147055517,412.03444522126,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Circulating 1/4-comma meantone, Gene Ward SMith"},smithgw_ratwell:{frequencies:[261.6255653006,275.62199471997,293.02063313667,310.07474405997,326.72451751701,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.57747881743,465.11211608996,489.99465727995,523.2511306012],description:"7-limit rational well-temperament"},smithgw_ratwolf:{frequencies:[261.6255653006,272.55669785235,292.25605339318,313.37920299881,326.47268679644,350.06888377949,364.69531895389,391.05410158062,407.39296674476,436.83777202739,468.410735204,487.98168129749,523.2511306012],description:"Eleven fifths of (418/5)^(1/11) and one 20/13 wolf, G.W. Smith 2003"},smithgw_rectoo:{frequencies:[261.6255653006,290.69507255622,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Hahn-reduced circle of fifths via <12 19 27 34| kernel"},smithgw_sc19:{frequencies:[261.6255653006,269.16210421872,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,508.60009894437,523.2511306012],description:"Fokker block from commas <81/80, 78732/78125>, Gene Ward Smith 2002"},smithgw_sch13:{frequencies:[261.6255653006,269.71217215021,278.04872701265,282.14859498561,290.86954990528,295.15846273282,304.2815407612,313.68660297237,318.31195648825,328.15068782436,332.98931632582,343.28171142549,353.89223299652,359.11042631209,370.21019888355,375.66900084958,387.28058594818,392.99109319609,405.13808832031,417.66053353744,423.81899742763,436.9188548657,443.36128543927,457.06517711961,471.19264083172,478.14044600934,492.91932687455,500.18749236202,515.64783010531,523.2511306012],description:"13-limit schismic temperament, g=704.3917, TL 31-10-2002"},smithgw_sch13a:{frequencies:[261.6255653006,266.49502311502,271.45511438723,280.18048669638,285.39529457963,294.56874561631,300.051354061,305.6360048159,315.46005229837,321.33149462105,331.66004360268,337.8330052901,344.12086009392,355.18192699392,361.79268541866,373.4217751344,380.37201938485,392.59830625439,399.90547017058,407.34863733398,420.4420328577,428.26743302475,442.03321824291,450.26048038501,458.64087358289,473.38295124548,482.19370453904,497.69284002863,506.95605959354,523.2511306012],description:"13-limit schismic temperament, g=702.660507, TL 31-10-2002"},smithgw_scj22a:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,301.39265122629,313.95067836072,327.03195662575,334.88072358477,348.83408706747,361.67118147155,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 15625/15552 = [6,5,22,37,-18,-6] catakleismic"},smithgw_scj22b:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"5120/5103 ^ 225/224 = [1,-8,-14,-10,25,-15] schismic candidate"},smithgw_scj22c:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 65625/65536 = [7,-3,827,7,-21] orwell candidate"},smithgw_secab:{frequencies:[261.6255653006,274.07613169002,291.39807132323,313.10572011471,348.73657263424,365.33268718488,392.54808236386,417.35759110361,437.21932894603,486.97408086388,523.2511306012],description:"{126/125, 176/175} tempering of decab, 328-et version"},smithgw_secac:{frequencies:[261.6255653006,281.11531641881,298.8821409504,313.10572011471,348.73657263424,374.71564313773,392.54808236386,417.35759110361,448.44857247831,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decac, 328-et version"},smithgw_secad:{frequencies:[261.6255653006,281.11531641881,313.10572011471,328.00618883132,348.73657263424,374.71564313773,392.54808236386,437.21932894603,469.78990700991,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decad, 328-et version"},smithgw_smalldi11:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,373.75080757229,423.93031414449,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Small diesic 11-note block, <10/9, 126/125, 1728/1715> commas"},smithgw_smalldi19a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,299.00064605783,305.22982618403,313.95067836072,317.94773560837,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,430.56093032327,436.04260883433,448.50096908674,457.84473927605,502.32108537715,508.71637697339,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 1728/1715> commas"},smithgw_smalldi19b:{frequencies:[261.6255653006,266.96486255163,274.70684356563,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,498.33441009638,512.78610798918,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 2401/2400> commas"},smithgw_smalldi19c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,313.95067836072,320.49131749323,327.03195662575,336.37572681506,343.38355445704,373.75080757229,381.53728273004,392.4383479509,400.61414686654,436.04260883433,448.50096908674,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"Small diesic 19-note scale containing glumma"},smithgw_smalldiglum19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,280.40333801024,286.95745534843,312.9293240034,320.24370022528,327.729041887,335.38934511627,343.22869944589,374.29355081838,383.0422478503,391.99543598175,401.15789496562,437.46578647972,447.69106452518,458.15534711532,468.86422071654,511.30005826145,523.2511306012],description:'Small diesic "glumma" variant of 19-note MOS, 31/120 version'},smithgw_smalldimos11:{frequencies:[261.6255653006,267.74077300753,305.78200836532,312.9293240034,320.24370022528,365.74467430283,374.29355081838,427.47405410759,437.46578647972,447.69106452518,511.30005826145,523.2511306012],description:"Small diesic 11-note MOS, 31/120 version"},smithgw_smalldimos19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,298.79793764201,305.78200836532,312.9293240034,320.24370022528,327.729041887,357.39105439675,365.74467430283,374.29355081838,383.0422478503,417.71053321823,427.47405410759,437.46578647972,447.69106452518,458.15534711532,499.62194879119,511.30005826145,523.2511306012],description:"Small diesic 19-note MOS, 31/120 version"},smithgw_star:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, untempered version'},smithgw_star2:{frequencies:[261.6255653006,282.55561052465,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, alternative untempered version'},starra:{frequencies:[261.6255653006,274.07613169002,294.49338559574,313.10572011471,328.00618883132,343.61575980934,374.71564313773,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrb:{frequencies:[261.6255653006,274.07613169002,287.1192112957,305.26548915336,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,479.82340237272,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrc:{frequencies:[261.6255653006,274.07613169002,287.1192112957,313.10572011471,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_tetra:{frequencies:[261.6255653006,274.84135386022,293.90210492181,314.2847539672,326.44746606412,342.93767672779,366.7210324511,392.15380743582,419.35039192746,435.57910814854,457.58200907672,489.31615916483,523.2511306012],description:"{225/224, 385/384} tempering of two-tetrachord 12-note scale"},smithgw_tr31:{frequencies:[261.6255653006,267.54129532085,292.57243455474,299.18791603519,305.95298478736,334.57791819083,342.14320575162,349.87955533643,391.26571058456,400.11279059885,409.15991580663,447.44088028055,457.55816161244,467.90420651233,511.68128147674,523.2511306012],description:"6/31 generator supermajor seconds tripentatonic scale"},smithgw_tr7_13:{frequencies:[261.6255653006,183.87449048025,346.05860897284,243.21533855007,457.74028507734,321.70694650116,605.46440189891,425.52973856044,299.06887661109,562.85871464284,395.58580335293,744.50714985079,523.2511306012],description:"81/80 ==> 28561/28672"},smithgw_tr7_13b:{frequencies:[261.6255653006,372.25357492539,395.58580335293,281.42935732142,299.06887661109,425.52973856044,302.73220094945,321.70694650116,457.74028507734,486.43067710015,346.05860897284,367.7489809605,523.2511306012],description:"reverse reduced 81/80 ==> 28561/28672"},smithgw_tr7_13r:{frequencies:[261.6255653006,367.7489809605,346.05860897284,486.43067710015,457.74028507734,321.70694650116,302.73220094945,425.52973856044,299.06887661109,281.42935732142,395.58580335293,372.25357492539,523.2511306012],description:"reduced 81/80 ==> 28561/28672"},smithgw_tra:{frequencies:[261.6255653006,128.35937755236,399.56478905052,196.03545836752,610.23096296248,299.39301413087,931.96857771927,457.24471305759,224.33452437931,698.32199734535,342.61245382262,1066.50464849657,523.2511306012],description:"81/80 ==> 1029/512"},smithgw_tre:{frequencies:[261.6255653006,256.71872396454,399.56476227799,392.07084290614,305.11544059319,299.39293769309,465.98419519089,457.24482979639,448.66910888407,349.16106442144,342.6124767791,533.2523889322,523.2511306012],description:"81/80 ==> 1029/512 ==> reduction"},smithgw_treb:{frequencies:[261.6255653006,266.6261944661,342.6124767791,349.16106442144,448.66910888407,457.24482979639,465.98419519089,299.39293769309,305.11544059319,392.07084290614,399.56476227799,513.43744792908,523.2511306012],description:"reversed 81/80 ==> 1029/512 ==> reduction"},smithgw_trx:{frequencies:[261.6255653006,490.17835855476,354.35176059633,331.954494127,479.94227969828,449.60690021487,325.02250210538,304.47902995326,285.23403465053,412.39349145653,386.32762147798,279.2776760715,523.2511306012],description:"reduced 3/2->7/6 5/4->11/6 scale"},smithgw_trxb:{frequencies:[261.6255653006,279.2776760715,386.32762147798,412.39349145653,285.23403465053,304.47902995326,325.02250210538,449.60690021487,479.94227969828,331.954494127,354.35176059633,490.17835855476,523.2511306012],description:"reversed reduced 3/2->7/6 5/4->11/6 scale"},smithgw_wa:{frequencies:[261.6255653006,273.6474362764,299.37379946195,313.13022722746,327.51877211613,349.22823143301,374.77430422696,391.99543598175,417.97870684853,437.18511000944,469.1652354389,500.26367760099,523.2511306012],description:"Wreckmeister A temperament, TL 2-6-2002"},smithgw_wa120:{frequencies:[261.6255653006,273.99891691894,298.79793764201,312.9293240034,327.729041887,349.22823143301,374.29355081838,391.99543598175,417.71053321823,437.46578647972,468.86422071654,499.62194879119,523.2511306012],description:"120-tET version of Wreckmeister A temperament"},smithgw_wb:{frequencies:[261.6255653006,280.76349612739,291.78605424516,313.13022722746,327.51877211613,349.22823143301,365.2755039332,391.99543598175,417.97870684853,437.18511000944,469.1652354389,487.58430040208,523.2511306012],description:"Wreckmeister B temperament, TL 2-6-2002"},smithgw_well1:{frequencies:[261.6255653006,275.92984511873,292.92635710626,310.42107575858,327.5229776175,349.2237102284,367.90646015831,391.734151992,413.8947676781,437.99072463899,465.63161363786,490.54194687775,523.2511306012],description:"Well-temperament, Gene Ward Smith (2005)"},smithgw_whelp1:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.05120395042,368.50381975103,390.45372436301,413.66634097248,438.25895612273,464.36382062247,491.65133958137,523.2511306012],description:"well-temperament with one pure third, Gene Ward Smith, 2003"},smithgw_whelp2:{frequencies:[261.6255653006,275.85000668176,292.43269265164,309.98104674077,327.03195662575,347.97308568611,368.21146504308,391.7894791814,413.34036955908,438.14417346548,464.48314871299,489.73685071229,523.2511306012],description:"well-temperament with two pure thirds"},smithgw_whelp3:{frequencies:[261.6255653006,275.96871294479,292.50627485027,310.03485655885,327.03195662575,349.46135677641,368.11883862276,391.73393619399,413.66634097248,436.82669499534,464.84945270756,489.66742197778,523.2511306012],description:"well-temperament with three pure thirds"},smithgw_wiz28:{frequencies:[261.6255653006,269.80136421624,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,508.71637697339,523.2511306012],description:"11-limit Wizard[28]"},smithgw_wiz34:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[34]"},smithgw_wiz38:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,285.40970760065,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,339.14425131559,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,403.65087217807,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,479.64686971777,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[38]"},smithgw_wreckpop:{frequencies:[261.6255653006,272.73569398658,292.31087910123,313.29104303136,326.59518553839,350.03605285217,364.90060015836,391.09077971329,419.16071913933,436.9606979923,455.51656649021,501.93603498211,523.2511306012],description:'"Wreckmeister" 13-limit meanpop (50-et) tempered thirds'},smithj12:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,331.11985608357,344.91651675372,363.36884069528,392.4383479509,408.78994578219,441.49314144476,459.88868900496,496.67978412536,523.2511306012],description:"J. Smith, 5-limit JI scale, MMM 21-3-2006"},smithj17:{frequencies:[261.6255653006,272.57820116223,283.17034563789,295.02492750576,308.97787266236,319.3201344739,332.68808325276,348.42227432308,363.00854876594,377.11473546037,392.90218486657,411.48414905414,425.25755219187,443.06044202496,464.01459698705,479.54632553791,499.62194879119,523.2511306012],description:"J. Smith 17-tone well temperament, MMM 12-2006"},smithrk_19:{frequencies:[261.6255653006,274.68253637698,286.11368885031,294.3308008075,305.19387818096,313.95878694534,327.0246436172,343.34529416761,348.83287827711,366.24211271841,381.48359653409,392.43970784476,406.92376081862,418.61050714007,436.03134720211,457.79213919624,470.93981233279,488.32112480698,508.64303280756,523.2511306012],description:"19 out of 612-tET by Roger K. Smith, 1978"},smithrk_mult:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:'Roger K. Smith, "Multitonic" scale, just version'},solar:{frequencies:[261.6255653006,394.58976180129,774.00176545642,2207.36533954793,5481.83445910426,34573.03685904828,65024.37680021134,105705.6559450381],description:"Solar system scale: 0=Pluto, 8=Mercury. 1/1=248.54 years period"},solemn:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Solemn 6"},songlines:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Songlines.DEM, Bill Thibault and Scott Gresham-Lancaster. 1992 ICMC (=rectsp6)"},sorge:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Sorge's Monochord (1756)"},sorge1:{frequencies:[261.6255653006,276.86979852503,293.00227310437,311.47852302926,328.88393162803,349.6228209638,369.57684148724,391.5530240856,415.30469757995,439.00737933323,466.69047534984,493.32589719545,523.2511306012],description:"Georg Andreas Sorge, 1744 (A)"},sorge2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.88393162803,348.83408706747,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Georg Andreas Sorge, 1744 (B)"},sorge3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Georg Andreas Sorge, well temperament, (1756, 1758)"},sparschuh:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,439.53094970501,465.69350623507,491.85606276513,523.2511306012],description:"Andreas Sparschuh WTC temperament, 1/1=C=250, modified Collatz sequence"},sparschuh2:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,438.48444744381,465.69350623507,491.85606276513,523.2511306012],description:"Modified Sparschuh temperament with A=419Hz by Tom Dent"},spec1_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,523.2511306012],description:"Spectrum sequence of 8/7: 1 to 27 reduced by 2/1"},spec1_17:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/6: 1 to 27 reduced by 2/1"},spec1_25:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 5/4: 1 to 25 reduced by 2/1"},spec1_33:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of 4/3: 1 to 29 reduced by 2/1"},spec1_4:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/5: 1 to 25 reduced by 2/1"},spec1_5:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 1.5: 1 to 27 reduced by 2/1"},specr2:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of sqrt(2): 1 to 29 reduced by 2/1"},specr3:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Spectrum sequence of sqrt(3): 1 to 31 reduced by 2/1"},spon_chal1:{frequencies:[261.6255653006,280.31310567921,285.40970760065,286.15296204753,348.83408706747,392.4383479509,420.46965851882,428.11456140098,429.2294430713,523.2511306012],description:"JC Spondeion, from discussions with George Kahrimanis about tritone of spondeion"},spon_chal2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,285.40970760065,348.83408706747,392.4383479509,413.43299207996,418.60090448096,428.11456140098,523.2511306012],description:"JC Spondeion II, 10 May 1997. Various tunings for the parhypatai and hence trito"},spon_mont:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Montford's Spondeion, a mixed septimal and undecimal pentatonic, 1923"},spon_terp:{frequencies:[261.6255653006,285.40970760065,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Subharm. 6-tone series, guess at Greek poet Terpander's, 6th c. BC & Spondeion, Winnington-Ingram (1928)"},stade:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.28772967674,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Organs in St. Cosmae, Stade; Magnuskerk, Anloo; H.K. Sluipwijk, modif. 1/4 mean"},stanhope:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.52264545758,465.11211608996,489.99465727995,523.2511306012],description:"Well temperament of Charles, third earl of Stanhope (1806)"},stanhope2:{frequencies:[261.6255653006,275.85537639807,293.11251278827,310.16223770573,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.66634097248,437.85193595173,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament (real version?) with 1/3 synt. comma temp."},stanhope_f:{frequencies:[261.6255653006,275.62199471997,292.46014274879,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,436.79202494356,465.11211608996,489.99465727995,523.2511306012],description:"Stanhope temperament, equal beating version by Farey (1807)"},stanhope_s:{frequencies:[261.6255653006,275.77758308753,293.11247215425,310.2497806633,327.03195662575,348.83408706747,367.7034443005,392.4383479509,413.66637442451,437.85181455341,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament, alt. version with 1/3 syntonic comma"},starling:{frequencies:[261.6255653006,278.9816419584,293.66476791741,313.14630527334,327.50195613664,349.22823143301,367.60851651046,391.99543598175,418.00016846495,437.16266336983,466.16376151809,490.69849857048,523.2511306012],description:"Starling temperament, Herman Miller (1999)"},stearns:{frequencies:[261.6255653006,299.00064605783,336.37572681506,366.27579142084,398.6675280771,448.50096908674,504.56359022259,523.2511306012],description:"Dan Stearns, guitar scale"},stearns2:{frequencies:[261.6255653006,280.31310567921,287.78812183066,299.00064605783,313.95067836072,317.68818643644,336.37572681506,340.11323489078,355.06326719367,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,429.81342870813,444.76346101102,448.50096908674,467.18850946536,470.92601754108,485.87604984397,497.08857407114,504.56359022259,523.2511306012],description:'Dan Stearns, scale for "At A Day Job" based on harmonics 10-20 and 14-28'},stearns3:{frequencies:[261.6255653006,304.11599009871,327.88291945286,364.30920726489,423.47641042702,470.52269644143,546.93995798074,607.70247408742,706.39900722312,784.8766959018],description:"Dan Stearns, trivalent version of Bohlen's Lambda scale"},stearns4:{frequencies:[261.6255653006,296.65550714972,336.37572681506,347.46339693852,393.986457405,446.73865184892,461.46412096988,523.2511306012],description:"Dan Stearns, 1/4-septimal comma temperament, tuning-math 2-12-2001"},steldek1:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,343.38355445704,353.19451315581,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 5 7 9 dekany"},steldek1s:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,339.14425131559,343.38355445704,353.19451315581,360.4025644447,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,482.88312345521,490.54793493862,494.47231841813,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated two out of 1 3 5 7 9 dekany"},steldek2:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Stellated two out of 1 3 5 7 11 dekany"},steldek2s:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,295.09524211152,299.7792935736,302.17752792219,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,349.7425091692,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,440.49202321019,449.66894036041,454.06089845559,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Superstellated two out of 1 3 5 7 11 dekany"},steleik1:{frequencies:[220,220.57291666667,224.58333333333,225,226.875,229.16666666667,232.03125,235.27777777778,238.21875,240.625,242.63020833333,243.08035714286,247.5,248.14453125,252.08333333333,252.65625,255.234375,256.66666666667,257.8125,262.5,264.6875,270.703125,272.25,275,277.29166666667,278.4375,280.72916666667,283.59375,288.75,294.09722222222,297.7734375,302.5,308.80208333333,309.375,311.953125,315,315.10416666667,317.625,320.83333333333,324.10714285714,324.84375,330,330.859375,336.11111111111,336.875,340.3125,343.75,346.5,346.61458333333,350,352.91666666667,353.57142857143,360.9375,366.66666666667,371.25,378.125,385,388.92857142857,392.12962962963,393.75,397.03125,401.04166666667,403.33333333333,412.5,415.9375,423.5,425.390625,427.77777777778,432.14285714286,433.125,440],description:"Stellated Eikosany 3 out of 1 3 5 7 9 11"},steleik1s:{frequencies:[123.47082531403,123.79236392162,125.33976847064,127.32928860509,129.9819821177,130.22313607339,131.308328874,132.59082945654,132.63467563031,133.69575303535,135.04621518722,136.42423779117,136.73429287706,138.90467847828,139.26640941182,141.47698733899,141.79852594658,143.24544968073,144.69237341488,145.8499124022,145.89814319334,147.3231438406,148.55083670594,148.82644122673,151.92699208562,154.33853164254,156.26776328807,156.6747105883,159.16161075637,160.43490364242,160.48795751267,162.05545822466,163.70908534941,165.05648522882,165.43161360434,165.73853682068,167.11969129419,168.80776898403,169.77238480679,173.63084809785,175.077771832,175.80123369908,178.26100404713,179.05681210091,180.06162024963,181.89898372156,182.31239050275,185.20623797104,185.68854588243,189.06470126211,189.41547065221,190.99393290764,192.92316455317,195.33470411009,198.06778227459,200.54362955302,202.56932278083,204.25740047067,204.63635668676,208.35701771743,208.89961411773,212.21548100849,212.69778891987,214.8681745211,216.07394429955,217.03856012232,220.07531363843,220.98471576091,222.82625505891,227.89048812843,229.19271948917,231.50779746381,233.43702910934,233.87012192772,234.4016449321,236.33087657764,238.74241613455,241.07423537553,241.15395569146,243.083187337,246.94165062806],description:"Superstellated Eikosany 3 out of 1 3 5 7 9 11"},steleik2:{frequencies:[123.47082531403,124.49974885831,126.04313417474,126.11662871362,127.68005799519,128.74405847848,129.64436657973,130.41605923794,132.04518818306,132.96858110742,133.76006075687,135.81790784543,137.94006265552,138.64744759221,140.44806379471,141.47698733899,144.0492961997,145.92006628022,146.26543921816,147.13606683255,148.16499037684,148.55083670594,151.25176100969,152.15206911093,154.33853164254,154.49287017418,155.62468607289,156.05340421634,157.14468676331,157.64578589202,158.45422581967,160.51207290824,160.9300730981,163.85607442716,164.62776708537,167.20007594608,169.77238480679,170.24007732692,171.65874463798,172.85915543964,173.88807898393,175.56007974339,176.56328019906,180.06162024963,181.09054379391,182.8317990227,183.92008354069,185.20623797104,186.74962328747,187.26408505961,190.14507098361,193.11608771773,194.02558263633,197.55332050245,198.06778227459,200.6400911353,201.66901467958,202.31209189476,203.72686176815,204.2880927923,205.78470885672,205.99049356557,208.95062745451,210.19438118936,214.01609721099,214.57343079747,216.07394429955,217.36009872991,217.87456050205,220.70410024883,224.71690207153,226.36317974239,229.30296129748,230.47887391952,234.08010632452,237.68133872951,239.0961086029,240.76810936236,243.77573203026,245.22677805425,246.94165062806],description:"Stellated Eikosany 3 out of 1 3 5 7 11 13"},steleik2s:{frequencies:[61.73541265702,61.89618196081,62.32902239411,62.70002847979,63.66464430255,64.65940436978,64.99099105886,65.83502990378,66.22690508177,66.31733781516,67.05419712422,67.52310759362,68.40003106886,68.56192463352,68.97003132776,69.45233923915,69.63320470592,70.8992629733,71.32128239576,72.34618670745,72.41853289415,72.94907159667,73.15003322642,73.66157192031,73.89646213689,74.27541835298,75.24003417574,75.43597176474,76.80753488774,77.16926582128,78.37503559973,79.58080537819,79.800036247,80.24397875634,80.46503654906,81.02772911234,81.51003702372,82.29378737972,82.71580680218,82.76403759332,84.40388449202,84.45309958502,84.8861924034,85.7024057919,86.21253915971,86.81542404893,87.05458499673,87.53888591601,87.7800398717,89.13050202357,90.52316611769,90.94949186079,92.60311898553,92.84427294122,94.05004271968,94.53235063106,94.83379307568,95.49696645383,95.7600434964,96.46158227659,96.55804385887,97.94560661931,98.52861618252,100.32004556766,100.58129568632,101.28466139042,101.88754627965,102.12870023534,103.45504699165,104.17850885872,105.33604784604,105.47988405157,106.10774050425,107.4857631082,108.03697214979,109.72504983963,111.41312752947,112.07630090762,112.86005126361,113.15395764711,114.2698743892,114.95005221294,115.75389873191,115.86965263064,116.71851455468,118.16543828883,118.23433941902,119.7000543705,120.57697784574,120.69755482359,121.54159366851,122.26505553558,123.47082531404],description:"Superstellated Eikosany 3 out of 1 3 5 7 11 13"},stelhex1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,327.03195662575,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 7 hexany, also dekatesserany, mandala, tetradekany"},stelhex2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,331.11985608357,353.19451315581,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 9 hexany"},stelhex3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,297.67175429757,339.14425131559,348.83408706747,358.80077526939,361.75386806997,372.08969287196,385.87079260796,434.10464168396,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on Archytas's Enharmonic"},stelhex4:{frequencies:[261.6255653006,269.10058145205,276.78916949353,279.06726965397,287.04062021552,297.67175429757,336.37572681506,348.83408706747,358.80077526939,361.75386806997,372.08969287196,382.72082695402,430.56093032327,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on the 1/1 35/36 16/15 4/3 tetrachord"},stelhex5:{frequencies:[261.6255653006,294.32876096318,305.22982618403,331.11985608357,343.38355445704,386.30649876417,392.4383479509,400.61414686654,441.49314144476,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 7 9 hexany, stellation is degenerate"},stelhex6:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,327.03195662575,337.2517052703,356.76213450082,359.73515228832,392.4383479509,408.78994578219,431.68218274599,449.66894036041,490.54793493862,494.63583439645,523.2511306012],description:"Stellated two out of 1 3 5 11 hexany, from The Giving, by Stephen J. Taylor"},stelpd1:{frequencies:[207.65234878997,208.19311011494,212.37172035338,214.14148468966,218.03496622947,219.00833661442,222.07265078927,222.48465941783,222.99030637105,224.84855892414,227.11975648903,229.43730502463,233.60889238872,237.93498298851,240.90917027586,242.2610735883,244.73312535961,245.28933700815,247.76700707894,249.83173213793,250.29524184505,254.84606442405,255.50972605016,256.96978162759,259.56543598746,262.81000393731,267.67685586207,272.54370778684,275.32476602956,277.59081348659,280.33067086646,281.06069865517,283.1622938045,285.52197958621,292.0111154859,297.32040849473,299.79807856552,302.82634198537,305.91640669951,306.61167126019,311.47852318496,312.28966517242,317.24664398468,317.96765908464,318.55758053007,321.21222703448,324.45679498433,327.0524493442,330.35600943859,333.10897618391,333.72698912674,340.67963473354,342.62637550345,346.08724798328,350.41333858307,356.90247448276,363.39161038245,367.09968803941,371.65051061841,374.7475982069,380.69597278161,385.45467244138,389.34815398119,392.59272193104,396.42721132631,399.73077142069,400.47238695209,401.51528379311,403.7684559805,407.88854226601,408.81556168025,415.30469757994],description:"Stellated two out of 1 3 5 7 9 11 pentadekany"},stelpd1s:{frequencies:[21.82676446456,21.88360499702,22.15715005948,22.2309638065,22.3228272933,22.50885085408,22.68892166091,22.91810268779,23.02041564622,23.14959867453,23.15196087848,23.34251199682,23.38581906917,23.43896865797,23.624449876,23.63429339678,23.87302363311,24.11662591508,24.35217522905,24.55511002263,24.61905562165,25.00983428231,25.20991295657,25.32245721084,25.46455854199,25.72440097609,25.78286552376,25.93612444091,26.04329850885,26.26032599642,26.30904645282,26.78739275196,26.85715158725,27.01062102489,27.2834555807,27.56185818867,27.62449877546,27.69643757435,28.01101439619,28.1360635676,28.29395393554,28.36115207614,28.41087110056,28.58266775121,28.64762835974,28.9399510981,29.17813999603,29.29871082246,29.46613202716,29.54286674598,29.7637697244,30.01180113877,30.06748166036,30.69388752829,30.99367756425,31.12334932909,31.25195821062,31.51239119571,31.65307151355,31.83069817748,32.15550122011,32.2285819047,32.41274522987,32.74014669684,32.82540749553,33.0742298264,33.34644570974,33.42223308636,33.48424093995,33.76327628112,34.09304532068,34.10431947588,34.37715403168,34.58149925455,34.7243980118,35.01376799523,35.07872860376,35.45144009517,35.80953544967,36.01416136652,36.17493887262,36.37794077427,36.74914425156,36.83266503394,36.92858343247,37.50234985274,37.51475142346,37.81486943485,37.88116146742,38.19683781298,38.26770393137,38.58660146413,38.90418666137,39.06494776328,39.39048899464,40.01573485169,40.28572738088,40.51593153734,40.92518337105,41.25258483802,41.26622656581,41.342787283,41.66927761416,42.01652159428,42.09447432451,42.2040953514,42.44093090331,42.61630665085,42.87400162681,42.9714425396,43.65352892912],description:"Superstellated two out of 1 3 5 7 9 11 pentadekany"},stelpent1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,406.97310157871,412.06026534844,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated one out of 1 3 5 7 9 pentany"},stelpent1s:{frequencies:[261.6255653006,271.31540105247,274.70684356563,275.93321340298,280.31310567921,282.55561052465,286.15296204753,288.32205155576,290.69507255622,294.32876096318,301.46155672497,305.22982618403,309.04519901133,313.95067836072,315.35224388912,320.35783506196,321.92208230347,327.03195662575,329.64821227876,336.37572681506,339.14425131559,343.38355445704,348.83408706747,353.19451315581,360.4025644447,366.27579142084,367.91095120397,373.75080757229,381.53728273004,386.30649876417,387.59343007496,392.4383479509,395.57785473451,403.65087217807,406.97310157871,411.88864507966,412.06026534844,420.46965851882,429.2294430713,436.04260883433,439.53094970501,441.49314144476,448.50096908674,452.19233508746,457.84473927605,470.92601754108,480.53675259294,482.88312345521,488.36772189445,490.54793493862,494.47231841813,498.33441009638,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated one out of 1 3 5 7 9 pentany"},steltet1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,436.04260883433,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 7 tetrany"},steltet1s:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,320.35783506196,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,429.2294430713,436.04260883433,439.53094970501,448.50096908674,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"Superstellated one out of 1 3 5 7 tetrany"},steltet2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,305.22982618403,327.03195662575,333.84512238879,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,436.04260883433,457.84473927605,476.92160341255,490.54793493862,523.2511306012],description:"Stellated three out of 1 3 5 7 tetrany"},steltet2s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Superstellated three out of 1 3 5 7 tetrany"},steltri1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 triany"},steltri2:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,408.78994578219,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 triany"},stevin:{frequencies:[261.6255653006,277.20445571159,293.66434538175,311.1256573916,329.66931111467,349.25319089654,369.99797100919,392.00714009679,415.41055144586,440.15068186507,466.27261682516,494.00597677606,523.2511306012],description:"Simon Stevin, monochord division of 10000 parts for 12-tET (1585)"},stopper:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767,554.79375523088,587.81844599272,622.80896314278,659.88233179115,699.16252826162,740.78092441407,784.8766959018],description:"Bernard Stopper, piano tuning with 19th root of 3 (1988)"},storbeck:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,358.80077526939,381.53728273004,387.59343007496,392.4383479509,403.65087217807,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Ulrich Storbeck, 2001"},strahle:{frequencies:[261.6255653006,278.94941459687,296.90543930973,315.65242990842,335.0021118691,355.12744448111,376.24442122187,398.15684412917,421.10213511252,444.85552088095,469.94877954106,496.17080790016,523.2511306012],description:"Strahle's Geometrical scale"},"sub24-12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharmonics 24-12"},sub24:{frequencies:[261.6255653006,10.90106522086,11.37502457829,11.89207115003,12.45836025241,13.08127826503,13.76976659477,14.53475362781,15.38973913533,16.35159783129,17.44170435337,18.68754037861,20.12504348466,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,52.32511306012,65.40639132515,87.20852176687,130.8127826503,261.6255653006],description:"Subharmonics 24-1"},sub40:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,475.68284600109,498.33441009638,523.2511306012],description:"sub 40-20"},sub48:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,502.32108537715,523.2511306012],description:"12 of sub 48 (Leven)"},sub50:{frequencies:[261.6255653006,272.52663052146,290.69507255622,311.45900631024,327.03195662575,344.24416486921,373.75080757229,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,523.2511306012],description:"12 of sub 50"},sub8:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Subharmonic series 1/16 - 1/8"},sumatra:{frequencies:[261.6255653006,266.79889483106,324.44528279699,356.96377863828,390.9602296356,474.47355835313,530.64156666967,639.28283484968,713.92755727656,784.8766959018],description:'"Archeological" tuning of Pasirah Rus orch. in Muaralakitan, Sumatra. 1/1=354 Hz'},super_10:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 10-tone scale"},super_11:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 11-tone scale"},super_12:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,494.18162334558,523.2511306012],description:"A superparticular 12-tone scale"},super_12_1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"Another superparticular 12-tone scale"},super_12_2:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,420.46965851882,448.50096908674,473.41768959156,498.33441009638,523.2511306012],description:"Another superparticular 12-tone scale"},super_13:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 13-tone scale"},super_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 14-tone scale"},super_15:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,334.29933343966,348.83408706747,363.36884069528,381.53728273004,399.70572476481,417.87416679957,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 15-tone scale"},super_17:{frequencies:[261.6255653006,274.08392555301,286.54228580542,299.00064605783,311.45900631024,323.91736656265,336.37572681506,348.83408706747,363.36884069528,377.90359432309,392.4383479509,411.12588832951,429.81342870813,448.50096908674,467.18850946536,485.87604984397,504.56359022259,523.2511306012],description:"Superparticular 17-tone scale"},super_19:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.11323489078,353.19451315581,366.27579142084,379.35706968587,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.57848126297,337.20628416522,348.83408706747,363.36884069528,377.90359432309,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Superparticular 19-tone scale"},super_22:{frequencies:[261.6255653006,270.96933548991,280.31310567921,289.65687586852,299.00064605783,308.34441624714,317.68818643644,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,406.45400323486,420.46965851882,434.48531380278,448.50096908674,463.45100138963,478.40103369253,493.35106599542,508.30109829831,523.2511306012],description:"Superparticular 22-tone scale"},super_22_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.16320258789,336.37572681506,347.58825104223,358.80077526939,370.01329949656,381.22582372373,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 22-tone scale"},super_24:{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 24-tone scale, inverse of Mans.ur 'Awad"},super_7:{frequencies:[261.6255653006,287.78812183066,313.95067836072,353.19451315581,392.4383479509,431.68218274599,470.92601754108,523.2511306012],description:"A superparticular 7-tone scale"},super_8:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"A superparticular 8 tone scale"},super_9:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 9-tone scale"},suppig:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friedrich Suppig's 19-tone JI scale. Calculus Musicus, Berlin 1722"},sur_7:{frequencies:[261.6255653006,280.40333801024,327.729041887,351.25128999693,383.0422478503,410.5345162762,479.82340237272,523.2511306012],description:"7-tone surupan"},sur_9:{frequencies:[261.6255653006,280.40333801024,305.78200836532,327.729041887,351.25128999693,383.0422478503,410.5345162762,447.69106452518,479.82340237272,523.2511306012],description:"Theoretical nine-tone surupan gamut"},sur_ajeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan ajeng"},sur_degung:{frequencies:[261.6255653006,322.09885310804,345.21700307457,396.55020354877,488.21056770985,523.2511306012],description:"Surupan degung"},sur_madenda:{frequencies:[261.6255653006,322.09885310804,345.21700307457,425.01198472693,488.21056770985,523.2511306012],description:"Surupan madenda"},sur_melog:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,410.5345162762,523.2511306012],description:"Surupan melog"},sur_miring:{frequencies:[261.6255653006,285.30470202322,305.78200836532,389.73770840504,417.71053321823,523.2511306012],description:"Surupan miring"},sur_x:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan tone-gender X (= unmodified nyorog)"},sur_y:{frequencies:[261.6255653006,280.40333801024,300.52885648597,383.0422478503,410.5345162762,523.2511306012],description:"Surupan tone-gender Y (= mode on pamiring)"},sverige:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012,554.36526195375,587.32953583482,622.25396744417,659.25511382574,698.45646286601,739.98884542327,783.9908719635,830.60939515989,880,932.32752303618,987.76660251225,1046.5022612024,1174.65907166964,1318.51022765149,1396.91292573202,1567.98174392701],description:"Scale on Swedish 50 crown banknote of some kind of violin."},syntonolydian:{frequencies:[261.6255653006,294.32876096318,331.11985608357,372.50983809402,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Greek Syntonolydian, also genus duplicatum medium, or ditonum (Al-Farabi)"},syrian:{frequencies:[261.6255653006,268.67837258085,275.62199471997,279.38237857051,286.74979536837,294.32876096318,302.10804307229,310.07474405997,314.30517589183,322.59351978942,326.6631048533,331.11985608357,339.85160932548,348.83408706747,358.05397697456,367.49599295996,372.50983809402,382.33306049116,392.4383479509,402.81072409638,413.43299207996,419.07356785577,430.12469305256,441.49314144476,453.13547910064,465.11211608996,477.40530263275,489.99465727995,496.67978412536,509.77741398822,523.2511306012],description:"After ^Sayh.'Ali ad-Darwis^ (Shaykh Darvish) from d'Erlanger vol.5, p.29"},szpak_24:{frequencies:[261.6255653006,270.98948203641,277.18263097687,287.10335517712,293.66476791741,304.17540907689,311.12698372208,322.26262012861,329.62755691287,341.42535271779,349.22823143301,361.7275606831,369.99442271164,383.23700075636,391.99543598175,406.02545869431,415.30469757995,430.16898885692,440,455.74816803176,466.16376151809,482.84836435151,493.88330125613,511.56002220218,523.2511306012],description:"Stephen Szpak's scale, TL 2-1-2004"},pagano_b:{frequencies:[261.6255653006,277.97716313189,289.55954492905,312.72430852337,333.57259575826,351.8148470888,370.63621750918,389.16802838464,416.96574469783,444.76346101102,463.29527188648,486.4600354808,523.2511306012],description:"Pat Pagano and David Beardsley, 17-limit scale, TL 27-2-2001"},palace:{frequencies:[261.6255653006,277.01530443593,294.32876096318,299.00064605783,336.37572681506,348.83408706747,373.75080757229,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Palace mode+"},palace2:{frequencies:[261.6255653006,277.01530443593,336.37572681506,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Byzantine Palace mode, 17-limit"},panpipe1:{frequencies:[261.6255653006,305.78200836532,346.61566493686,386.59871897734,424.03113209229,475.68400784708,523.2511306012],description:"Palina panpipe of Solomon Islands. 1/1=f+45c. From Ocora CD Guadalcanal"},panpipe2:{frequencies:[261.6255653006,301.39807245198,340.46429857933,389.512652082,435.70052664441,481.48922855473,540.45338572244,606.98892366383,675.83458963267,749.45240308975,819.17415016614,915.78156525194,979.24522642508,1073.44040298899,1178.73719255088,1360.28482360484],description:"Lalave panpipe of Solomon Islands. 1/1=f'+47c."},panpipe3:{frequencies:[261.6255653006,302.44445076078,341.44901934006,382.59999559751,433.19107626846,482.88183400971,542.01653249392,602.10016957865,677.78929781797,755.1012944609,822.018116801,906.30932187391,994.06270356141,1067.87449159209,1155.14617783291,1300.35790771888],description:"Tenaho panpipe of Solomon Islands. 1/1=f'+67c."},parachrom:{frequencies:[261.6255653006,274.52698453615,288.06460709314,349.22823143301,391.99543598175,411.32572372413,431.60923940535,523.2511306012],description:"Parachromatic, new genus 5 + 5 + 20 parts"},parakleismic:{frequencies:[261.6255653006,269.41173453909,271.00883762044,279.07425994419,280.72864356353,282.39283618632,290.79705467987,292.52093234567,301.22657042972,303.0122754386,312.03014360907,313.87989341557,323.22118988972,325.13728335605,327.06473376202,336.79842078181,338.79499972275,348.87778808468,350.94597487438,361.39038519337,363.53274806687,374.35175001315,376.5709514911,387.77797996035,390.07677146523,392.38919046486,404.06698135965,406.46233589795,418.55895395107,421.04021853379,433.57068509561,436.14094342919,449.12081866987,451.783257426,465.22865943552,467.98658728446,470.76086444006,484.77105399159,487.64483417146,502.15750307968,505.13434926963,520.16751901001,523.2511306012],description:"Parakleismic temperament, g=315.250913, 5-limit"},parizek:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone Linear Level tuning, 1/1=Ab"},parizek_13lqmt:{frequencies:[261.6255653006,272.70676208351,292.18581651805,313.05623198362,325.57848126297,348.83408706747,365.23227064756,391.32028997953,406.97310157871,436.04260883433,467.18850946536,486.97636086341,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_17lqmt:{frequencies:[261.6255653006,272.52663052146,291.99281841585,312.60407618638,327.03195662575,350.39138209902,364.70475555078,390.75509523297,408.78994578219,436.04260883433,467.18850946536,488.44386904122,523.2511306012],description:"To tune the scale by ear, please choose the intervals in the following order:"},parizek_7lmtd1:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"Use SET MIDDLE 62"},parizek_7lqmtd2:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,390.69417751556,418.60090448096,437.98922762377,468.83301301868,488.36772189445,523.2511306012],description:"Use SET MIDDLE 62"},parizek_cirot:{frequencies:[261.6255653006,273.76082553017,293.33333347996,307.98092841354,327.40170814054,348.04713286849,366.66693712906,392.88175996935,409.71484950008,438.01699797506,463.01593599647,491.10256480205,523.2511306012],description:"Overtempered circular tuning (1/1 is F)"},parizek_epi:{frequencies:[261.6255653006,283.42769574232,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"In The Epimoric World"},parizek_epi2:{frequencies:[261.6255653006,283.42769574232,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,523.2511306012,523.2511306012],description:"In the Epimoric World - extended (version for two keyboards)"},parizek_epi2a:{frequencies:[261.6255653006,283.42769574232,287.78812183066,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_ji1:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone septimal tuning, 2002."},parizek_jiweltmp:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,329.45441556372,348.83408706747,370.63621750918,392.4383479509,416.96574469783,440.63253103259,465.11211608996,494.18162334558,523.2511306012],description:"April 2003 - Petr Parizek"},jiwt2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,331.11985608357,348.83408706747,372.08969287196,392.4383479509,415.8649508569,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"June 2003 - Petr Parizek"},parizek_llt7:{frequencies:[261.6255653006,283.42769574232,327.03195662575,359.73515228832,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"7-tone mode of Linear Level Tuning 2000 (= wilson_helix)"},parizek_qmeb1:{frequencies:[261.6255653006,273.53155294581,293.066620053,305.25690181412,326.9069921792,350.33366042609,366.2083106197,392.1884190578,408.50877577745,437.87542071709,457.7197748295,488.61098601707,523.2511306012],description:"Equal beating quasi-meantone tuning no. 1 - F...A# (1/1 = 261.7Hz)(3/2 5/3 5/4 7/4 7/6)"},parizek_qmeb2:{frequencies:[261.6255653006,274.12423619715,293.39509530855,306.21121252767,327.1564453797,350.32795211486,366.55713600477,391.6914154272,409.44351174042,438.20041390279,457.4712730142,489.73875803795,523.2511306012],description:"Equal beating quasi-meantone tuning no. 2 - F...A# (1/1 = 262.7Hz)"},parizek_qmeb3:{frequencies:[261.6255653006,274.23252240717,293.57983281823,306.4052273004,327.28159934073,350.29865766202,366.78755898655,391.93906252094,409.53887392713,438.37260750749,457.59509656107,490.04864950866,523.2511306012],description:"Equal beating quasi-meantone tuning no. 3 - F...A#. 1/1 = 262Hz"},parizek_qmtp12:{frequencies:[261.6255653006,273.55480692456,293.00227310437,305.44101254122,326.6631048533,350.4133380576,366.39100206434,391.84790908124,408.48291326839,437.52264545758,457.47219685667,489.2574430773,523.2511306012],description:"12-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (F...A#)"},parizek_qmtp24:{frequencies:[261.6255653006,273.14323313659,280.64720643091,285.59764149034,293.00227310437,305.44101254122,313.83229199844,326.6631048533,335.63741195089,341.5578378819,350.4133380576,365.83975262993,375.89034660662,381.37064019061,391.84790908124,407.86833637529,419.07356785577,437.52264545758,448.86620556368,457.47219685667,469.33298761093,489.2574430773,502.69865025911,510.02774559919,523.2511306012],description:"24-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (Bbb...C##)"},parizek_syndiat:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,436.04260883433,441.49314144476,484.4917875937,490.54793493862,523.2511306012],description:"Petr Parizek, diatonic scale with syntonic alternatives"},parizek_syntonal:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Petr Parizek, Syntonic corrections in JI tonality, Jan. 2004"},parizek_temp19:{frequencies:[261.6255653006,276.69969455132,294.32876096318,310.68035879446,328.58088727969,349.51540364377,368.93292606842,392.4383479509,415.04954182698,438.10784970625,466.02053819169,492.87133091954,523.2511306012],description:"Petr Parizek, genus [3 3 19 19 19] well temperament"},"partch-barstow":{frequencies:[261.6255653006,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,348.83408706747,359.73515228832,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,470.92601754108,479.64686971777,490.54793493862,523.2511306012],description:"Guitar scale for Partch's Barstow (1941, 1968)"},"partch-greek":{frequencies:[261.6255653006,261.6255653006,271.31540105247,294.32876096318,279.06726965397,348.83408706747,313.95067836072,392.4383479509,392.4383479509,406.97310157871,418.60090448096,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white'},"partch-grm":{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" mixed'},"partch-indian":{frequencies:[261.6255653006,269.80136421624,277.97716313189,285.40970760065,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,383.71749577421,392.4383479509,406.97310157871,411.12588832951,428.11456140098,441.49314144476,457.84473927605,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"Partch's Indian Chromatic, Exposition of Monophony, 1933."},"partch-ur":{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch curved keyboard, published in Interval"},"partch_29-av":{frequencies:[261.6255653006,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,488.36772189445,498.33441009638,507.3950357345,523.2511306012],description:"29-tone JI scale from Partch's Adapted Viola 1928-30"},partch_29:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,523.2511306012],description:"Partch/Ptolemy 11-limit Diamond"},partch_37:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol.9(2)'},partch_39:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch Keyboard 39 tones, published in Interval"},partch_41:{frequencies:[261.6255653006,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,523.2511306012],description:"13-limit Diamond after Partch, Genesis of a Music, p 454, 2nd edition"},partch_41a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},partch_41comb:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,274.70684356563,279.06726965397,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,490.54793493862,498.33441009638,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"41-tone JI combination from Partch's 29-tone and 37-tone scales"},partch_43:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:"Harry Partch's 43-tone pure scale"},partch_43a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},patala:{frequencies:[261.6255653006,289.6217982776,320.24370022528,355.94891173479,393.58362272115,439.74591942221,480.6555937997,537.34060327431],description:"Observed patala tuning from Burma, Helmholtz/Ellis p. 518, nr.83"},pelog1:{frequencies:[261.6255653006,285.79952600623,313.83440569119,359.87690576543,393.35634555235,426.98050185716,482.04578814299,523.2511306012],description:"Gamelan Saih pitu from Ksatria, Den Pasar (South Bali). 1/1=312.5 Hz"},pelog10:{frequencies:[261.6255653006,290.16653606067,310.14521470005,342.49164912079,385.30310526088,418.60090448096,442.38504678101,523.2511306012],description:"Balinese saih 7 scale, Krobokan. 1/1=275 Hz. McPhee, 1966"},pelog11:{frequencies:[261.6255653006,289.11520789678,327.03195662575,352.6257619269,388.64667309147,441.73012112348,478.69895237627,523.2511306012],description:"Balinese saih pitu, gamelan luang, banjar Se`se'h. 1/1=276 Hz. McPhee, 1966"},pelog11i:{frequencies:[261.6255653006,267.83009854382,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,392.61532371972,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog12:{frequencies:[261.6255653006,284.41230790592,308.04300430555,358.68021049276,385.68672051706,409.31741667997,472.61392441399,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Tampak Gangsai, 1/1=310, McPhee"},pelog13:{frequencies:[261.6255653006,289.80062617913,323.61069924911,351.78575931905,394.45085229937,454.02098012766,494.27106657141,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Klungkung, 1/1=325. McPhee, 1966"},pelog14:{frequencies:[261.6255653006,287.66412867175,309.98289727559,347.18084494866,375.69927149802,402.97776645827,427.77639824032,523.2511306012],description:"Balinese saih pitu, suling gambuh, Tabanan, 1/1=211 Hz, McPhee, 1966"},pelog15:{frequencies:[261.6255653006,284.9387344858,307.6043148279,344.51683351465,375.60105909492,407.98046074103,427.4081017287,523.2511306012],description:"Balinese saih pitu, suling gambuh, Batuan, 1/1=202 Hz. McPhee, 1966"},pelog2:{frequencies:[261.6255653006,285.30470202322,314.92395982138,345.81573716922,388.6137256405,424.52127512829,466.97226207056,523.2511306012],description:"Bamboo gambang from Batu lulan (South Bali). 1/1=315 Hz"},pelog3:{frequencies:[261.6255653006,285.63448939555,315.83481057014,390.18821123181,421.34544350737,523.2511306012],description:"Gamelan Gong from Padangtegal, distr. Ubud (South Bali). 1/1=555 Hz"},pelog4:{frequencies:[261.6255653006,290.96323214696,317.29765457754,352.87817160549,385.03871768789,434.94616895528,470.49199937597,523.2511306012],description:"Hindu-Jav. demung, excavated in Banjarnegara. 1/1=427 Hz"},pelog5:{frequencies:[261.6255653006,284.64626913494,310.94732162256,358.21775774651,390.8649420513,427.47405410759,468.32288027948,523.2511306012],description:"Gamelan Kyahi Munggang (Paku Alaman, Jogja). 1/1=199.5 Hz"},pelog6:{frequencies:[261.6255653006,282.02769802256,315.83481057014,354.51258839996,386.37547528213,413.39000965417,523.2511306012],description:"Gamelan Semar pegulingan, Ubud (S. Bali). 1/1=263.5 Hz"},pelog7:{frequencies:[261.6255653006,281.2143451833,303.31920717687,353.89879686059,384.81637482457,412.43597848639,448.72664641273,523.2511306012],description:"Gamelan Kantjilbelik (kraton Jogja). Measured by Surjodiningrat, 1972."},pelog8:{frequencies:[261.6255653006,281.2143451833,305.0763174688,362.1707891162,386.59871897734,415.30469757995,456.83405152976,529.33101587613,573.91491069685,623.33318620372,730.64478690489,786.25839925218,840.74610520523,945.88853913022,1075.30214607265],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},pelog9:{frequencies:[261.6255653006,282.57123920205,305.19382000629,356.01745236555,384.52011812375,415.30469757995,448.5538823653,523.2511306012],description:"9-tET Pelog"},pelog9i:{frequencies:[261.6255653006,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog_24:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Subset of 24-tET (Sumatra?)"},pelog_a:{frequencies:[261.6255653006,280.7274598329,305.95868600104,363.84824628932,386.82209166041,411.72190027758,452.10885997356,523.2511306012],description:"Pelog, average class A. Kunst 1949"},pelog_alv:{frequencies:[261.6255653006,299.00064605783,313.95067836072,343.38355445704,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"Bill Alves JI Pelog, 1/1 vol. 9 no. 4, 1997. 1/1=293.33"},pelog_av:{frequencies:[261.6255653006,280.40333801024,305.78200836532,357.39105439675,385.26118901859,411.72190027758,452.89298412314,523.2511306012],description:'"Normalised Pelog", Kunst, 1949. Average of 39 Javanese gamelans'},pelog_b:{frequencies:[261.6255653006,280.07959041159,302.79405018898,354.30787302884,382.82105786018,408.64182041696,451.58686491179,523.2511306012],description:"Pelog, average class B. Kunst 1949"},pelog_c:{frequencies:[261.6255653006,279.91785681123,304.37225518229,350.84574289301,384.81637482457,410.29745071461,451.58686491179,523.2511306012],description:"Pelog, average class C. Kunst 1949"},pelog_he:{frequencies:[261.6255653006,283.17034563789,338.50336851425,364.68988616898,389.06292924114,420.13030572059,493.31307433255,523.2511306012],description:"Observed Javanese Pelog scale, Helmholtz/Ellis p. 518, nr.96"},pelog_jc:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"John Chalmers' Pelog, on keys C# E F# A B c#, like Olympos' Enharmonic on 4/3"},pelog_laras:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:'Lou Harrison, gamelan "Si Betty"'},pelog_me1:{frequencies:[261.6255653006,281.13654920971,305.96893643544,353.85975480175,389.33427481332,412.3928606827,454.07565526112,523.2511306012],description:"Gamelan Kyahi Kanyut Mesem pelog (Mangku Nagaran). 1/1=295 Hz"},pelog_me2:{frequencies:[261.6255653006,277.86440299076,299.96729002515,349.58586605592,383.41679241104,405.97081699752,447.47001910635,523.2511306012],description:"Gamelan Kyahi Bermara (kraton Jogja). 1/1=290 Hz"},pelog_me3:{frequencies:[261.6255653006,281.75056896146,306.90688773629,358.59164065877,385.12012728597,411.64865826518,457.38747412584,523.2511306012],description:"Gamelan Kyahi Pangasih (kraton Solo). 1/1=286 Hz"},pelog_pa:{frequencies:[261.6255653006,286.29520819723,313.29104303136,342.83241505062,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:'"Blown fifth" pelog, von Hornbostel, type a.'},pelog_pa2:{frequencies:[261.6255653006,286.29520819723,313.29104303136,353.69443592699,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:"New mixed gender Pelog"},pelog_pb:{frequencies:[261.6255653006,277.98432293805,304.19649364034,353.69443592699,387.04559340587,411.24653512154,450.02449304881,523.2511306012],description:'"Primitive" Pelog, step of blown semi-fourths, von Hornbostel, type b.'},pelog_pb2:{frequencies:[261.6255653006,277.50302994288,303.66981774726,353.69443592699,387.04559340587,410.5345162762,449.24533531117,523.2511306012],description:'"Primitive" Pelog, Kunst: Music in Java, p. 28'},pelog_schmidt:{frequencies:[261.6255653006,287.78812183066,313.95067836072,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Modern Pelog designed by Dan Schmidt and used by Berkeley Gamelan"},pelog_selun:{frequencies:[261.6255653006,281.10829462369,350.68958753059,378.52209447746,416.55977244877,523.2511306012,562.21664032682,701.37917506118,757.04418895493,833.11970794305,1046.5022612024,1124.43328065364],description:"Gamelan selunding from Kengetan, South Bali (Pelog), 1/1=141 Hz"},pelog_slen:{frequencies:[261.6255653006,289.4545544734,306.66641795878,334.42210013281,344.22141564971,354.30787302884,386.37547528213,397.69714089209,446.39994737251,459.48046426806,493.88330125613,523.2511306012],description:"W.P. Malm, pelog+slendro, Musical Cultures Of The Pacific, The Near East, And Asia. P: 1,3,5,6,8,10; S: 2,4,7,9"},pelog_str:{frequencies:[261.6255653006,282.73796785026,305.22982618403,329.86096249197,356.10146388137,384.83778957396,415.4517078616,448.97742116962,484.69365917187,523.80699136456],description:"JI Pelog with stretched 2/1 and extra tones between 2-3, 6-7. Wolf, XH 11, '87"},pelogic:{frequencies:[261.6255653006,268.93425429917,294.59920226397,322.71340889889,353.51061198674,363.38617257172,398.06486099125,436.0530078362,477.66644151787,523.2511306012],description:"Pelogic temperament, g=521.1, 5-limit"},pelogic2:{frequencies:[261.6255653006,252.56770712848,285.96465797334,276.06414495892,312.56802260838,301.74646235804,341.64630500046,386.82209166041,373.42974737602,422.80824892286,408.17001145418,462.1422075194,523.2511306012],description:"Pelogic temperament, g=677.0 in cycle of fifths order"},penta1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,331.11985608357,372.50983809402,376.74081403286,397.34382730029,423.83341578697,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Pentagonal scale 9/8 3/2 16/15 4/3 5/3"},penta2:{frequencies:[261.6255653006,267.07609791103,286.15296204753,305.22982618403,312.97980223949,333.84512238879,356.10146388137,363.36884069528,400.61414686654,436.04260883433,457.84473927605,476.92160341255,523.2511306012],description:"Pentagonal scale 7/4 4/3 15/8 32/21 6/5"},penta_opt:{frequencies:[261.6255653006,292.5084949701,327.03692214239,391.62201198054,436.95817401562,523.2511306012],description:"Optimally consonant major pentatonic, John deLaubenfels, 2001"},pentadekany:{frequencies:[261.6255653006,283.42769574232,299.7792935736,305.22982618403,327.03195662575,354.2846196779,359.73515228832,381.53728273004,389.71308164569,419.69101100305,425.14154361347,436.04260883433,457.84473927605,479.64686971777,495.99846754905,523.2511306012],description:"2)6 1.3.5.7.11.13 Pentadekany (1.3 tonic)"},pentadekany2:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,305.22982618403,327.03195662575,343.38355445704,359.73515228832,381.53728273004,392.4383479509,419.69101100305,436.04260883433,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"2)6 1.3.5.7.9.11 Pentadekany (1.3 tonic)"},pentadekany3:{frequencies:[261.6255653006,277.97716313189,278.79474302345,287.78812183066,291.4672313427,300.86940009569,305.77487944508,319.67373760167,359.73515228832,376.08675011961,405.51962621593,413.69542513157,430.86460285443,444.76346101102,506.89953276991,523.2511306012],description:"2)6 1.5.11.17.23.31 Pentadekany (1.5 tonic)"},pentatetra1:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,392.4383479509,413.09299784305,436.04260883433,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra2:{frequencies:[261.6255653006,275.39533189537,307.79478270659,327.03195662575,348.83408706747,392.4383479509,413.09299784305,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra3:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,392.4383479509,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatriad:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"4:5:6 Pentatriadic scale"},pentatriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"3:5:9 Pentatriadic scale"},pepper:{frequencies:[261.6255653006,274.70684356563,290.69507255622,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,367.91095120397,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Keenan Pepper's 17-tone jazz tuning, TL 07-06-2000"},pepper2:{frequencies:[261.6255653006,281.81099471089,295.05751399041,308.92668738628,332.76158224462,348.40303271111,375.28368107222,392.9238840789,423.23948674937,443.13385158124,463.96335069158,499.75992392917,523.2511306012],description:`Keenan Pepper's "Noble Fifth" with chromatic/diatonic semitone = Phi (12)`},peprmint:{frequencies:[261.6255653006,270.64528749638,281.81099405977,291.52662269553,295.0575145017,305.22982618403,308.92668738628,319.57714845986,332.76158147578,344.23376699744,348.40303331485,360.41446869983,375.28368085545,388.22184514393,392.92388339801,406.47020562703,423.23948723831,437.83096109824,443.13385158124,458.41119713782,463.9633498876,479.95880678291,499.75992479518,516.98949333115,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},"perkis-indian":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.01393146398,369.99442271164,377.90359432309,388.70083987518,400.13321751856,412.18367363396,425.14154361347,438.99882991118,453.48431318771,469.12170329763,485.27322596079,503.87145909745,523.2511306012],description:"Indian 22 Perkis"},"perrett-tt":{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Perrett Tierce-Tone"},perrett:{frequencies:[261.6255653006,274.70684356563,279.06726965397,348.83408706747,392.4383479509,412.06026534844,418.60090448096,523.2511306012],description:"Perrett / Tartini / Pachymeres Enharmonic"},perrett_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Perrett's 14-tone system (subscale of tierce-tone)"},perrett_chrom:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,392.4383479509,412.06026534844,441.49314144476,523.2511306012],description:"Perrett's Chromatic"},perry:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Robin Perry, Tuning List 22-9-'98"},perry2:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,415.27867508032,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Robin Perry, 7-limit scale, TL 22-10-2006"},perry3:{frequencies:[261.6255653006,277.97716313189,294.32876096318,307.79478270659,327.03195662575,348.83408706747,369.35373924791,370.63621750918,392.4383479509,418.60090448096,444.76346101102,465.11211608996,492.47165233054,523.2511306012],description:"Robin Perry, symmetrical 3,5,17 scale, TL 22-10-2006"},"persian-far":{frequencies:[261.6255653006,275.58617649731,282.84340331238,294.51413096332,310.22971009486,318.39923223688,331.53706992441,349.22823143301,362.58942698662,376.46181130035,391.99543598175,412.91271853531,423.78627283082,441.27260666252,464.81937009253,477.05982293263,496.7443381147,523.2511306012],description:"Hormoz Farhat, average of observed Persian tar and sehtar tunings (1966)"},"persian-vaz":{frequencies:[261.6255653006,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,329.62755691287,349.22823143301,359.46139971304,380.8360868427,391.99543598175,415.30469757995,427.47405410759,440,466.16376151809,479.82340237272,493.88330125613,523.2511306012],description:"Vaziri's Persian tuning, using quartertones"},persian:{frequencies:[261.6255653006,275.62199471997,282.55561052465,294.32876096318,310.07474405997,317.87506184023,331.11985608357,348.83408706747,363.36884069528,376.74081403286,392.4383479509,413.43299207996,423.83341578697,441.49314144476,465.11211608996,476.81259276034,496.67978412536,523.2511306012],description:"Persian Tar Scale, from Dariush Anooshfar, Internet Tuning List 2/10/94"},persian2:{frequencies:[261.6255653006,275.62199471997,288.32205155576,294.32876096318,310.07474405997,321.08592105074,331.11985608357,348.83408706747,367.49599295996,384.42940207435,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,489.99465727995,512.57253609913,523.2511306012],description:"Traditional Persian scale, from Mark Rankin"},phi1_13:{frequencies:[261.6255653006,272.27874348295,293.41755524936,305.36527715608,329.07281683115,342.47239171077,356.41758627629,384.088434771,399.72820043646,416.00480451705,448.3020273708,466.55651779723,502.7784067407,523.2511306012],description:"Pythagorean scale with (Phi + 1) / 2 as fifth"},phi_10:{frequencies:[261.6255653006,277.06593756944,293.41755524936,323.38703872151,342.47239171077,362.68389667063,399.72820043646,423.31898451752,448.3020273708,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_12:{frequencies:[261.6255653006,280.653851324,301.06608340242,314.41721066027,337.28508524374,352.24238645938,377.86132347501,405.34355110824,423.31898451752,454.10739278061,474.24531572837,508.73764640933,531.29821178855],description:"Non-Octave Pythagorean scale with Phi as fourth. Jacky Ligon TL 12-04-2001"},phi_13:{frequencies:[261.6255653006,277.06593756944,293.41755524936,305.36527715608,323.38703872151,342.47239171077,362.68389667063,377.45230514615,399.72820043646,423.31898451752,448.3020273708,466.55651779723,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_13a:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:"Non-Octave Pythagorean scale with Phi as fifth, Jacky Ligon TL 12-04-2001"},phi_13b:{frequencies:[261.6255653006,277.56939878091,287.90530191745,305.45065986668,316.82478268872,336.13253486432,356.61692887617,369.89633953852,392.4383479509,407.05164722964,431.8579526603,458.17598957099,475.23717379553,504.19880204444],description:"Non-Octave Pythagorean scale with 12 3/2s, Jacky Ligon, TL 12-04-2001"},phi_17:{frequencies:[261.6255653006,276.86436108535,292.99059544936,310.05629713556,328.11582814217,347.22745468775,367.4522682176,388.8548834608,411.50435256812,435.47307590797,460.83762934409,487.67984759381,516.08523529366,546.14543793146,577.9565447239,611.62018657326,647.24497389216,684.94478342154],description:"Phi + 1 equal division by 17, Brouncker (1653)"},phi_7b:{frequencies:[261.6255653006,277.06593756944,299.7954575021,323.38703872151,342.47239171077,369.42210382256,399.72820043646,423.31898451752],description:"Heinz Bohlen's Pythagorean scale with Phi as fifth (1999)"},phi_7be:{frequencies:[261.6255653006,277.18263097687,299.37379946195,323.3415889232,342.56848033562,369.99442271164,399.61607881612,423.37848741825],description:"36-tET approximation of phi_7b"},phi_8:{frequencies:[261.6255653006,280.010356995,292.01318753119,312.53354015396,325.93049860793,348.83408706747,373.34714284662,389.35091690288,416.71138708025],description:"Non-Octave Pythagorean scale with 4/3s, Jacky Ligon, TL 12-04-2001"},phi_8a:{frequencies:[261.6255653006,275.77662731691,284.90271245142,300.31281179658,310.2506767011,327.03195662575,344.72084112096,356.12824371673,375.39107678967],description:"Non-Octave Pythagorean scale with 5/4s, Jacky Ligon, TL 12-04-2001"},phillips_19:{frequencies:[261.6255653006,274.63272075836,286.12988535196,293.66476791741,305.42895910556,326.59518553839,329.62755691287,342.83241505062,349.22823143301,366.5907009274,384.81637482457,391.99543598175,407.69874723177,428.71043212875,440,457.62637091093,489.33987776603,493.88330125613,513.66823365307,523.2511306012],description:"Pauline Phillips, organ manual scale, TL 7-10-2002"},phillips_19a:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,326.62388782443,329.50688232588,342.79852229325,349.26020182051,366.55580177366,381.34192228364,391.95955371998,407.7704102616,427.96347506501,439.87918162894,457.62301915088,489.33808574423,493.65730140218,509.07699553894,523.2511306012],description:"Adaptation by Gene Ward Smith with more consonant chords, TL 25-10-2002"},phillips_22:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,343.38355445704,349.22797321314,367.91095120397,392.4383479509,407.76797091773,408.78994578219,416.96574469783,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"All-key 19-limit JI scale (2002), TL 21-10-2002"},phillips_ji:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,349.22797321314,367.91095120397,386.30649876417,392.4383479509,407.76797091773,408.78994578219,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:'Pauline Phillips, JI 0 #/b "C" scale (2002), TL 8-10-2002'},phryg_chromcon2:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Harmonic Conjunct Chromatic Phrygian"},phryg_chromconi:{frequencies:[261.6255653006,283.42769574232,348.83408706747,370.63621750918,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Conjunct Chromatic Phrygian"},phryg_chrominv:{frequencies:[261.6255653006,272.52663052146,283.42769574232,348.83408706747,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian"},phryg_chromt:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,324.77656382143,336.37572681506,362.25078272391,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,627.90135672144,649.55312764287,672.75145363011,724.50156544782,784.8766959018,819.00176963666,837.20180896192,856.22912280196,941.85203508216,1046.5022612024],description:"Phrygian Chromatic Tonos"},phryg_diat:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,392.4383479509,448.50096908674,483.00104363188,523.2511306012],description:"Schlesinger's Phrygian Harmonia, a subharmonic series through 13 from 24"},phryg_diatcon:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,448.50096908674,483.00104363188,523.2511306012],description:"A Phrygian Diatonic with its own trite synemmenon replacing paramese"},phryg_diatinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Conjunct Phrygian Harmonia with 17, the local Trite Synemmenon"},phryg_diatsinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,348.83408706747,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Schlesinger's Phrygian Harmonia, a harmonic series from 12 from 24"},phryg_enh:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the enharmonic genus"},phryg_enhcon:{frequencies:[261.6255653006,283.42769574232,288.87822835275,294.32876096318,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Harmonic Conjunct Enharmonic Phrygian"},phryg_enhinv:{frequencies:[261.6255653006,327.03195662575,337.93302184661,348.83408706747,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Schlesinger's Enharmonic Phrygian Harmonia"},phryg_enhinv2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,348.83408706747,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Inverted harmonic form of Schlesinger's Enharmonic Phrygian"},phryg_penta:{frequencies:[261.6255653006,270.64713651786,285.40970760065,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the pentachromatic genus"},phryg_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,392.4383479509,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,784.8766959018,856.22912280196,941.85203508216,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Phrygian Tonos"},phryg_tri1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the chromatic genus"},phryg_tri1inv:{frequencies:[261.6255653006,305.22982618403,327.03195662575,348.83408706747,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian Harmonia"},phryg_tri2:{frequencies:[261.6255653006,269.10058145205,285.40970760065,348.83408706747,392.4383479509,409.50088481833,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the second trichromatic genus"},phryg_tri3:{frequencies:[261.6255653006,269.10058145205,277.01530443593,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the first trichromatic genus"},phrygian:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,523.2511306012],description:"Old Phrygian ??"},phrygian_diat:{frequencies:[261.6255653006,277.01530443593,294.32876096318,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012,554.03060887186,588.65752192635,672.75145363011,697.66817413493,724.50156544782,753.48162806573,784.8766959018,856.22912280196,897.00193817349,941.85203508216,991.42319482333,1046.5022612024],description:"Phrygian Diatonic Tonos"},phrygian_enh:{frequencies:[261.6255653006,277.01530443593,294.32876096318,303.82323712328,308.80394592858,313.95067836072,348.83408706747,392.4383479509,400.78810003496,405.0976494977,409.50088481833,459.44001711325,523.2511306012],description:"Phrygian Enharmonic Tonos"},phrygian_harm:{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Phrygian Harmonia-Aliquot 24 (flute tuning)"},piano:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Enhanced Piano Total Gamut, see 1/1 vol. 8/2 January 1994"},piano7:{frequencies:[261.6255653006,275.93321340298,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Enhanced piano 7-limit"},pipedum_10:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,372.08969287196,396.89567239676,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"2048/2025 and 34171875/33554432 are homophonic intervals"},pipedum_10a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025 and 25/24, Manuel Op de Coul, 2001"},pipedum_10b:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"225/224, 64/63 and 25/24 are homophonic intervals"},pipedum_10c:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 49/48 are homophonic intervals"},pipedum_10d:{frequencies:[261.6255653006,279.06726965397,299.00064605783,318.93402246168,343.38355445704,372.08969287196,392.4383479509,425.24536328225,448.50096908674,488.36772189445,523.2511306012],description:"1029/1024, 2048/2025 and 64/63 are homophonic intervals"},pipedum_10e:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,367.91095120397,406.97310157871,429.2294430713,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025, 64/63 and 49/48 are homophonic intervals"},pipedum_10f:{frequencies:[261.6255653006,280.31310567921,294.32876096318,327.03195662575,348.83408706747,373.75080757229,392.4383479509,420.46965851882,465.11211608996,490.54793493862,523.2511306012],description:"225/224, 64/63 and 28/27 are homophonic intervals"},pipedum_10g:{frequencies:[261.6255653006,280.31310567921,299.00064605783,325.57848126297,348.83408706747,372.08969287196,398.6675280771,425.24536328225,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 2048/2025 are homophonic intervals"},pipedum_10h:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,373.75080757229,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 64/63 are homophonic intervals"},pipedum_10i:{frequencies:[261.6255653006,279.06726965397,294.32876096318,321.92208230347,343.38355445704,367.91095120397,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"225/224, 2048/2025 and 49/48 are homophonic intervals"},pipedum_10j:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"25/24, 28/27 and 49/48, Gene Ward Smith, 2002"},pipedum_10k:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.49131749323,343.38355445704,367.91095120397,394.1903048614,420.46965851882,455.80987376816,488.36772189445,523.2511306012],description:"2048/2025, 225/224 and 2401/2400"},pipedum_11:{frequencies:[261.6255653006,272.52663052146,282.55561052465,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"16/15 and 15625/15552 are homophonic intervals"},pipedum_11a:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,376.74081403286,381.53728273004,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 10/9, Gene Ward Smith, 2002"},pipedum_12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12a:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12b:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,320.49131749323,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,488.36772189445,523.2511306012],description:"64/63, 50/49 comma and 36/35 chroma"},pipedum_12c:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 36/35 are homophonic intervals"},pipedum_12d:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"50/49, 128/125 and 225/224 are homophonic intervals"},pipedum_12e:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,373.75080757229,392.4383479509,418.60090448096,439.53094970501,467.18850946536,500.55911728431,523.2511306012],description:"50/49, 225/224 and 3136/3125 are homophonic intervals"},pipedum_12f:{frequencies:[261.6255653006,273.74326726486,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,408.78994578219,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"128/125, 3136/3125 and 703125/702464 are homophonic intervals"},pipedum_12g:{frequencies:[261.6255653006,279.06726965397,286.15296204753,306.59245933664,327.03195662575,348.83408706747,366.27579142084,390.69417751556,408.78994578219,437.98922762377,457.84473927605,488.36772189445,523.2511306012],description:"50/49, 225/224 and 28672/28125 are homophonic intervals"},pipedum_12h:{frequencies:[261.6255653006,275.93321340298,291.02331101095,310.42486507835,330.74639366397,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.53496651643,465.11211608996,496.11959049595,523.2511306012],description:"2048/2025 and 67108864/66430125, Gene Ward Smith, 2004"},pipedum_12i:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,441.49314144476,465.11211608996,504.56359022259,523.2511306012],description:"64/63 and 6561/6272, Gene Ward Smith, 2004"},pipedum_12j:{frequencies:[261.6255653006,283.8170195002,285.83021674664,310.07474405997,336.37572681506,348.83408706747,378.42269266694,392.4383479509,413.43299207996,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"6561/6272 and 59049/57344"},pipedum_12k:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,523.2511306012],description:"64/63 and 729/686, Gene Ward Smith, 2004"},pipedum_12l:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,331.39238271409,348.83408706747,368.21375857121,392.4383479509,414.24047839262,441.49314144476,465.11211608996,497.08857407114,523.2511306012],description:"81/80, 361/360 and 513/512, Gene Ward Smith"},pipedum_13:{frequencies:[261.6255653006,276.76092858245,287.78812183066,309.14739649778,327.03195662575,345.95116072807,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051 are homophonic intervals. Op de Coul, 2001"},pipedum_13a:{frequencies:[261.6255653006,266.96486255163,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"15/14, 3136/3125, 2401/2400, Gene Ward Smith, 2002"},pipedum_13b:{frequencies:[261.6255653006,267.90457886781,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"15/14, 3136/3125, 6144/6125, Gene Ward Smith, 2002"},pipedum_13bp:{frequencies:[261.6255653006,282.55561052465,305.16005936662,336.45263027341,363.36884069528,392.4383479509,436.04260883433,470.92601754108,508.60009894437,545.05326104292,605.61473449213,654.0639132515,706.38902631162,784.8766959018],description:"78732/78125 and 250/243, twelfth based, Manuel Op de Coul, 2003"},pipedum_13bp2:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012,565.1112210493,627.90135672144,678.13346525916,726.73768139056,784.8766959018],description:"250/243 and 648/625, twelfth based, Manuel Op de Coul, 2003"},pipedum_13c:{frequencies:[261.6255653006,267.07609791103,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.57253609913,523.2511306012],description:"15/14, 2401/2400, 6144/6125, Gene Ward Smith, 2002"},pipedum_13d:{frequencies:[261.6255653006,281.04308772525,287.78812183066,309.14739649778,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"125/121 and 33275/32768, Joe Monzo, 2003"},pipedum_13e:{frequencies:[261.6255653006,276.76092858245,287.78812183066,304.4370214407,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051, Manuel Op de Coul, 2004"},pipedum_14:{frequencies:[261.6255653006,274.70684356563,284.76252005507,305.22982618403,320.49131749323,336.37572681506,348.83408706747,373.90653707544,392.4383479509,406.97310157871,427.14378008261,448.50096908674,480.73697623985,498.33441009638,523.2511306012],description:"81/80, 49/48 and 2401/2400, Paul Erlich, TL 17-1-2001"},pipedum_14a:{frequencies:[261.6255653006,274.70684356563,284.8811711051,305.22982618403,320.35783506196,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,427.32175665765,448.50096908674,480.53675259294,498.33441009638,523.2511306012],description:"81/80, 50/49 and 2401/2400, Paul Erlich, 2001"},pipedum_14b:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,313.95067836072,339.14425131559,353.19451315581,366.27579142084,392.4383479509,406.97310157871,418.60090448096,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 81/80 comma and 25/24 chroma"},pipedum_14c:{frequencies:[261.6255653006,280.31310567921,282.55561052465,305.22982618403,327.03195662575,336.37572681506,363.36884069528,366.27579142084,392.4383479509,403.65087217807,436.04260883433,467.18850946536,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 50/49 comma and 25/24 chroma"},pipedum_15:{frequencies:[261.6255653006,272.52663052146,290.69507255622,301.39265122629,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,454.2110508691,470.92601754108,502.32108537715,523.2511306012],description:"126/125, 128/125 and 875/864, 5-limit, Paul Erlich, 2001"},pipedum_15a:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,502.32108537715,523.2511306012],description:"Septimal version of pipedum_15, Manuel Op de Coul, 2001"},pipedum_15b:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,311.45900631024,327.03195662575,343.38355445704,357.69120255941,382.72082695402,398.6675280771,418.60090448096,439.53094970501,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"126/125, 128/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15c:{frequencies:[261.6255653006,274.70684356563,284.76252005507,299.00064605783,313.95067836072,327.03195662575,341.71502406609,358.80077526939,381.53728273004,400.61414686654,418.60090448096,436.04260883433,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"49/48, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15d:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,360.55273217989,379.68336007343,398.6675280771,418.60090448096,436.04260883433,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"64/63, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15e:{frequencies:[261.6255653006,273.37201925287,286.15296204753,299.00064605783,313.95067836072,332.22294006425,343.38355445704,358.80077526939,381.53728273004,398.6675280771,412.06026534844,436.04260883433,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"64/63, 875/864 and 1029/1024, Paul Erlich, 2001"},pipedum_15f:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,488.36772189445,490.54793493862,523.2511306012],description:"126/125, 64/63 comma and 28/27 chroma"},pipedum_15g:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"128/125 and 250/243"},pipedum_16:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,355.95315006884,373.75080757229,384.58958099188,400.61414686654,418.60090448096,439.53094970501,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"50/49, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_16a:{frequencies:[261.6255653006,272.52663052146,283.88190679319,301.39265122629,313.95067836072,327.03195662575,340.65828815182,354.85238349148,363.36884069528,385.78259356965,401.85686830172,418.60090448096,436.04260883433,454.2110508691,482.22824196207,502.32108537715,523.2511306012],description:"3125/3072 and 1990656/1953125, OdC 2004"},pipedum_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,465.11211608996,478.40103369253,508.71637697339,523.2511306012],description:"245/243, 64/63 and 525/512, Paul Erlich, 2001"},pipedum_17a:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,461.31528248922,478.40103369253,504.56359022259,523.2511306012],description:"245/243, 525/512 and 1728/1715, Paul Erlich, 2001"},pipedum_17b:{frequencies:[261.6255653006,264.89588486686,286.15296204753,294.32876096318,305.22982618403,327.03195662575,339.14425131559,343.38355445704,367.91095120397,381.53728273004,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"245/243, 64/63 comma and 25/24 chroma"},pipedum_17c:{frequencies:[261.6255653006,273.6806973752,285.83021674664,299.00064605783,310.07474405997,321.55899383997,336.37572681506,348.83408706747,364.90759650026,378.42269266694,392.4383479509,413.43299207996,428.74532511996,448.50096908674,465.11211608996,486.54346200035,504.56359022259,523.2511306012],description:"1605632/1594323 and 177147/175616, Manuel Op de Coul, 2002"},pipedum_17d:{frequencies:[261.6255653006,274.08392555301,284.23518205497,299.00064605783,308.34441624714,319.76457981184,336.37572681506,348.83408706747,365.44523407068,373.05867644715,392.4383479509,411.12588832951,426.35277308246,448.50096908674,465.11211608996,479.64686971777,504.56359022259,523.2511306012],description:"243/242, 99/98 and 64/63, Manuel Op de Coul, 2002"},pipedum_17e:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,310.07474405997,321.92208230347,336.37572681506,348.83408706747,362.16234259141,378.42269266694,395.66829320152,413.43299207996,429.2294430713,445.12682985172,465.11211608996,482.88312345521,504.56359022259,523.2511306012],description:"245/243, 1728/1715 and 32805/32768, Manuel Op de Coul, 2003"},pipedum_17f:{frequencies:[261.6255653006,269.80136421624,285.40970760065,294.32876096318,310.07474405997,319.76457981184,331.11985608357,348.83408706747,359.73515228832,380.54627680087,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,479.64686971777,507.3950357345,523.2511306012],description:"243/242 and 8192/8019, Manuel Op de Coul"},pipedum_17g:{frequencies:[261.6255653006,274.08392555301,285.40970760065,299.00064605783,305.22982618403,319.76457981184,336.37572681506,348.83408706747,359.73515228832,380.54627680087,392.4383479509,406.97310157871,428.11456140098,448.50096908674,457.84473927605,479.64686971777,499.46698830115,523.2511306012],description:"243/242, 896/891 and 99/98, Manuel Op de Coul"},pipedum_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,340.65828815182,350.39138209902,379.84156147346,390.69417751556,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 128/125, Paul Erlich, 2001"},pipedum_18a:{frequencies:[261.6255653006,269.10058145205,280.31310567921,293.02063313667,305.22982618403,313.95067836072,327.03195662575,341.85740532612,356.10146388137,366.27579142084,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 50/49, Paul Erlich, 2001"},pipedum_18b:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,346.20975655133,356.10146388137,373.75080757229,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 686/675, Paul Erlich, 2001"},pipedum_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,301.39265122629,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,401.85686830172,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"81/80 and 15625/15552 are homophonic intervals, inverse of Mandelbaum"},pipedum_19a:{frequencies:[261.6255653006,271.25338610366,282.55561052465,294.32876096318,301.39265122629,313.95067836072,327.03195662575,339.06673262958,353.19451315581,361.67118147155,376.74081403286,392.4383479509,408.78994578219,416.64520105522,434.00541776586,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"3125/3072 and 15625/15552 are homophonic intervals"},pipedum_19b:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"15625/15552 and 78732/78125, Paul Erlich, TL 19-2-2001"},pipedum_19c:{frequencies:[261.6255653006,269.10058145205,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19d:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19e:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19f:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,305.22982618403,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,448.50096908674,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19g:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,360.4025644447,379.84156147346,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19h:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,412.06026534844,415.27867508032,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"126/125, 81/80 comma and 49/48 chroma"},pipedum_19i:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.22982618403,321.92208230347,327.03195662575,343.38355445704,348.83408706747,367.91095120397,381.53728273004,392.4383479509,406.97310157871,429.2294430713,436.04260883433,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"225/224, 81/80 comma and 49/48 chroma"},pipedum_19j:{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.70607818954,358.95027559242,366.27579142084,373.75080757229,381.37837507376,410.22888639134,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"21/20, 3136/3125 and 2401/2400, Gene Ward Smith, 2002"},pipedum_19k:{frequencies:[261.6255653006,267.90457886781,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,357.69120255941,366.27579142084,373.75080757229,382.72082695402,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,510.98743222773,523.2511306012],description:"21/20, 3136/3125 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19l:{frequencies:[261.6255653006,267.07609791103,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.84512238879,358.80077526939,366.27579142084,373.75080757229,381.53728273004,410.05802887931,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.57253609913,523.2511306012],description:"21/20, 2401/2400 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19m:{frequencies:[261.6255653006,269.10058145205,293.02063313667,299.00064605783,305.22982618403,313.95067836072,317.94773560837,348.83408706747,358.80077526939,366.27579142084,373.75080757229,406.97310157871,418.60090448096,430.56093032327,436.04260883433,448.50096908674,488.36772189445,502.32108537715,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 16/15, Gene Ward Smith, 2002"},pipedum_19n:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,366.27579142084,373.75080757229,381.53728273004,392.4383479509,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"126/125, 2401/2400 and 16/15, Gene Ward Smith, 2002"},pipedum_19o:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,502.32108537715,523.2511306012],description:"225/224, 3136/3125 and 4375/4374, OdC 2000"},pipedum_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,284.8811711051,299.00064605783,305.22982618403,320.35783506196,327.03195662575,341.85740532612,348.83408706747,366.27579142084,373.75080757229,392.4383479509,400.44729382745,418.60090448096,427.32175665765,448.50096908674,457.84473927605,480.53675259294,488.36772189445,512.57253609913,523.2511306012],description:"36/35, 225/224 and 2401/2400, P. Erlich, 2001. Just PB version of miracle1"},pipedum_21a:{frequencies:[261.6255653006,265.7783520514,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,332.22294006425,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"1029/1024, 81/80 comma and 25/24 chroma"},pipedum_21b:{frequencies:[261.6255653006,267.07609791103,279.06726965397,284.8811711051,299.00064605783,305.22982618403,318.93402246168,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,398.6675280771,418.60090448096,427.32175665765,448.50096908674,457.84473927605,478.40103369253,488.36772189445,496.11959049595,523.2511306012],description:"36/35, 225/224 and 1029/1024, Gene Ward Smith, 2002"},pipedum_21c:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"First 128/125 and ampersand comma Fokker block"},pipedum_22:{frequencies:[261.6255653006,267.90457886781,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,365.77905168086,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"3125/3072 and 2109375/2097152 are homophonic intervals"},pipedum_22a:{frequencies:[261.6255653006,267.90457886781,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,381.01984550089,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"2048/2025 and 2109375/2097152 are homophonic intervals"},pipedum_22b:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,357.69120255941,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:'2025/2048, 245/243 and 64/63. P. Erlich "7-limit Indian", TL 19-12-2000'},pipedum_22b2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,448.50096908674,465.11211608996,478.40103369253,490.54793493862,504.56359022259,523.2511306012],description:"Version of pipedum_22b with other shape, Paul Erlich"},pipedum_22c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,512.57253609913,523.2511306012],description:"1728/1715, 64/63 and 50/49, Paul Erlich, 2001"},pipedum_22d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 64/63, Paul Erlich, 2001"},pipedum_22e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,384.42940207435,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 50/49, Paul Erlich, 2001"},pipedum_22f:{frequencies:[261.6255653006,269.10058145205,276.78916949353,290.69507255622,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,470.92601754108,494.58536650191,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 875/864, Paul Erlich, 2001"},pipedum_22g:{frequencies:[261.6255653006,267.07609791103,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,490.54793493862,512.57253609913,523.2511306012],description:"225/224, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_22h:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"225/224, 1728/1715 and 875/864, Paul Erlich, 2001"},pipedum_22i:{frequencies:[261.6255653006,269.10058145205,279.06726965397,288.32205155576,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,474.80195184183,490.54793493862,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 245/243, Paul Erlich, 2001"},pipedum_22j:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,299.00064605783,305.22982618403,320.35783506196,332.22294006425,336.37572681506,348.83408706747,353.19451315581,373.75080757229,387.59343007496,392.4383479509,406.97310157871,427.14378008261,436.04260883433,448.50096908674,465.11211608996,480.53675259294,498.33441009638,504.56359022259,523.2511306012],description:"50/49, 64/63 and 245/243, Gene Ward Smith, 2002"},pipedum_22k:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"121/120, 2048/2025 and 4125/4096, Manuel Op de Coul"},pipedum_22l:{frequencies:[261.6255653006,275.62199471997,284.23518205497,290.69507255622,303.18419419197,310.07474405997,319.76457981184,330.74639366397,341.08221846597,348.83408706747,363.82103303037,372.08969287196,387.59343007496,404.24559225596,413.43299207996,426.35277308246,440.99519155196,454.77629128796,465.11211608996,485.09471070715,496.11959049595,511.62332769895,523.2511306012],description:"121/120, 736/729, 100/99 and 2048/2025"},pipedum_23:{frequencies:[261.6255653006,271.25338610366,276.85245005354,287.04062021552,297.60371503945,302.80736724606,313.95067836072,325.50406332439,332.22294006425,344.44874425862,348.83408706747,363.36884069528,376.74081403286,384.51729174103,398.6675280771,413.33849311034,420.56578784176,436.04260883433,452.08897683944,461.42075008924,478.40103369253,496.00619173241,504.67894541011,523.2511306012],description:"6144/6125, 15625/1552 and 5103/5000, Manuel Op de Coul, 2003"},pipedum_24:{frequencies:[261.6255653006,267.57160087561,275.93321340298,285.40970760065,290.69507255622,299.7792935736,310.07474405997,319.76457981184,327.03195662575,338.26335715633,348.83408706747,356.76213450082,367.91095120397,380.54627680087,392.4383479509,401.35740131342,413.43299207996,426.35277308246,436.04260883433,449.66894036041,465.11211608996,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"121/120, 16384/16335 and 32805/32768. Manuel Op de Coul, 2001"},pipedum_24a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,321.92208230347,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,412.06026534844,418.60090448096,429.2294430713,436.04260883433,457.84473927605,470.92601754108,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"49/48, 81/80 and 128/125, Gene Ward Smith, 2002"},pipedum_24b:{frequencies:[261.6255653006,271.31540105247,275.62199471997,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,413.43299207996,434.59481110969,441.49314144476,457.84473927605,465.11211608996,482.33849075995,496.67978412536,515.07533168556,523.2511306012],description:"49/48, 81/80 and 531441/524288"},pipedum_25:{frequencies:[261.6255653006,268.26840191956,274.70684356563,281.29980781121,291.99281841585,299.00064605783,306.17666156322,313.95067836072,327.03195662575,335.33550239945,343.38355445704,351.62475976401,364.99102301981,373.75080757229,382.72082695402,392.4383479509,408.78994578219,418.60090448096,429.2294430713,439.53094970501,447.89271634391,467.18850946536,478.40103369253,490.54793493862,502.32108537715,523.2511306012],description:"65625/65536, 1029/1024 and 3125/3072, Manuel Op de Coul, 2003"},pipedum_26:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,292.89859205665,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,341.71502406609,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,400.61414686654,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,467.3831713443,478.40103369253,498.33441009638,512.57253609913,523.2511306012],description:"1029/1024, 1728/1715 and 50/49, Paul Erlich, 2001"},pipedum_26a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,306.59245933664,321.92208230347,325.57848126297,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,457.84473927605,459.88868900496,465.11211608996,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"50/49, 81/80 and 525/512, Gene Ward Smith, 2002"},pipedum_26b:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,290.69507255622,301.39265122629,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,446.50763144636,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"81/80 and 78125/73728, Gene Ward Smith, 2005"},pipedum_27:{frequencies:[261.6255653006,271.20240005245,278.95104005395,284.76252005507,292.89859205665,299.00064605783,307.54352165948,316.40280006119,325.44288006294,332.22294006425,341.71502406609,351.47831046798,358.80077526939,369.05222599138,379.68336007343,390.53145607553,398.6675280771,410.05802887931,418.60090448096,430.56093032327,442.86267118965,455.62003208812,468.63774729064,478.40103369253,492.06963465517,502.32108537715,516.67311638793,523.2511306012],description:"126/125, 1728/1715 and 4000/3969 are homophonic intervals, Paul Erlich"},pipedum_27a:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,508.71637697339,523.2511306012],description:"126/126, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27b:{frequencies:[261.6255653006,266.96486255163,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.22888639134,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 128/125, Paul Erlich, 2001"},pipedum_27c:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 686/675, Paul Erlich, 2001"},pipedum_27d:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 64/63, Paul Erlich, 2001"},pipedum_27e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,329.64821227876,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.27867508032,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 126/125 and 245/243, Paul Erlich, 2001"},pipedum_27f:{frequencies:[261.6255653006,267.07609791103,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.05802887931,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 128/125, Paul Erlich, 2001"},pipedum_27g:{frequencies:[261.6255653006,267.07609791103,274.59243005311,280.31310567921,290.81619550312,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.72988009104,488.36772189445,498.54204943392,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 686/675, Paul Erlich, 2001"},pipedum_27h:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27i:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.43792805463,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,329.51091606373,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.4517078616,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.69365917187,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 1728/1715 and 245/243, Paul Erlich, 2001"},pipedum_27j:{frequencies:[261.6255653006,269.16210421872,276.91574508099,282.55561052465,290.69507255622,299.06900468747,305.16005936662,313.95067836072,322.99452506247,329.57286411595,339.06673262958,348.83408706747,358.88280562497,366.19207123994,376.74081403286,387.59343007496,395.48743693914,406.88007915549,418.60090448096,423.83341578697,436.04260883433,448.60350703121,461.52624180165,470.92601754108,484.4917875937,498.44834114579,508.60009894437,523.2511306012],description:"78732/78125 and 390625000/387420489"},pipedum_27k:{frequencies:[261.6255653006,264.89588486686,275.62199471997,279.38237857051,290.69507255622,294.32876096318,298.00787047521,310.07474405997,313.95067836072,331.11985608357,344.52749339997,348.83408706747,353.19451315581,367.49599295996,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,418.60090448096,441.49314144476,447.01180571282,459.36999119996,465.11211608996,470.92601754108,496.67978412536,516.79124009995,523.2511306012],description:"67108864/66430125 and 25/24"},pipedum_28:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"393216/390625 and 16875/16384"},pipedum_29:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,288.44218574391,294.32876096318,300.33547037059,310.07474405997,316.40280006119,325.57848126297,332.22294006425,341.85740532612,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,400.44729382745,412.06026534844,420.46965851882,434.10464168396,442.96392008567,455.80987376816,465.11211608996,474.60420009179,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"5120/5103, 225/224 and 50421/50000, Manuel Op de Coul, 2003"},pipedum_29a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,317.94773560837,327.03195662575,339.14425131559,343.38355445704,348.83408706747,363.36884069528,366.27579142084,372.60080508745,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,441.49314144476,457.84473927605,470.92601754108,476.92160341255,490.54793493862,508.71637697339,515.07533168556,523.2511306012],description:"49/48, 55/54, 65/64, 91/90 and 100/99"},pipedum_31:{frequencies:[261.6255653006,271.62175694356,275.93321340298,281.68182201554,289.72987407313,294.32876096318,300.46061014991,310.42486507835,316.89204976748,321.92208230347,331.11985608357,338.01818641865,343.38355445704,356.50355598842,362.16234259141,367.91095120397,380.27045972098,386.30649876417,392.4383479509,407.43263541533,413.89982010446,422.52273302331,434.59481110969,441.49314144476,450.69091522486,465.63729761752,475.33807465122,482.88312345521,496.67978412536,507.02727962797,515.07533168556,523.2511306012],description:"81/80, 225/224 and 1029/1024 are homophonic intervals"},pipedum_31a:{frequencies:[261.6255653006,269.46602871384,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,329.20114651277,336.83253589231,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,411.50143314096,421.04066986538,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,482.22824196207,490.54793493862,502.32108537715,514.3767914262,523.2511306012],description:"393216/390625 and 2109375/2097152 are homophonic intervals"},pipedum_31b:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,327.03195662575,333.84512238879,339.14425131559,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,387.59343007496,392.4383479509,400.61414686654,406.97310157871,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"245/243, 1029/1024 comma and 25/24 chroma"},pipedum_31c:{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,334.88072358477,343.38355445704,348.83408706747,360.55273217989,366.27579142084,373.75080757229,384.58958099188,392.4383479509,398.6675280771,412.06026534844,418.60090448096,429.2294430713,439.53094970501,448.50096908674,457.84473927605,470.92601754108,480.73697623985,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"126/125, 225/224 and 1029/1024, Op de Coul"},pipedum_31d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,316.53463456122,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"1728/1715, 225/224 and 81/80"},pipedum_31e:{frequencies:[261.6255653006,267.07609791103,272.52663052146,276.85245005354,286.15296204753,290.69507255622,299.00064605783,305.22982618403,311.45900631024,317.94773560837,327.03195662575,332.22294006425,343.38355445704,348.83408706747,357.69120255941,363.36884069528,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,415.27867508032,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,476.92160341255,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:'81/80, 126/125 and 1029/1024, Gene Smith (2005) "Synstargam"'},pipedum_32:{frequencies:[261.6255653006,267.07609791103,270.30192333353,280.31310567921,286.15296204753,292.11448209019,299.00064605783,305.22982618403,311.5887808962,315.35224388912,325.57848126297,333.84512238879,337.87740416691,348.83408706747,356.10146388137,360.4025644447,367.91095120397,379.84156147346,384.42940207435,394.1903048614,406.97310157871,415.4517078616,420.46965851882,429.2294430713,443.14848838571,448.50096908674,457.84473927605,474.80195184183,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"225/224, 2048/2025 and 117649/116640"},pipedum_32a:{frequencies:[261.6255653006,268.26840191956,274.59243005311,280.31310567921,286.15296204753,292.89859205665,299.00064605783,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,341.71502406609,348.83408706747,356.10146388137,364.4960256705,372.08969287196,381.53728273004,390.53145607553,398.6675280771,406.97310157871,416.56688648057,425.24536328225,434.10464168396,438.17172313528,450.50320555588,459.88868900496,469.46970335923,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"589824/588245, 225/224 and 2048/2025"},pipedum_34:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,327.03195662575,334.88072358477,340.65828815182,348.83408706747,354.85238349148,363.36884069528,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,470.92601754108,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 393216/390625 are homophonic intervals"},pipedum_34a:{frequencies:[261.6255653006,264.89588486686,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,317.87506184023,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,441.49314144476,452.08897683944,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 2048/2025, Manuel Op de Coul, 2001"},pipedum_34b:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.7792935736,310.07474405997,313.95067836072,319.76457981184,327.03195662575,334.88072358477,342.49164912079,348.83408706747,356.76213450082,359.73515228832,367.91095120397,380.54627680087,383.71749577421,392.4383479509,399.70572476481,408.78994578219,418.60090448096,428.11456140098,436.04260883433,441.49314144476,449.66894036041,465.11211608996,470.92601754108,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"100/99, 243/242 and 5632/5625, Manuel Op de Coul"},pipedum_36:{frequencies:[261.6255653006,267.07609791103,269.10058145205,280.31310567921,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,400.61414686654,406.97310157871,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,467.3831713443,480.53675259294,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"1029/1024, 245/243 comma and 50/49 chroma, Gene Ward Smith, 2001"},pipedum_36a:{frequencies:[261.6255653006,264.89588486686,275.62199471997,275.93321340298,279.06726965397,290.69507255622,293.99679436797,294.32876096318,310.07474405997,310.42486507835,313.95067836072,327.03195662575,330.74639366397,331.11985608357,348.83408706747,349.22797321314,353.19451315581,367.91095120397,372.08969287196,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,413.89982010446,418.60090448096,436.04260883433,440.99519155196,441.49314144476,465.11211608996,465.63729761752,470.92601754108,490.54793493862,496.11959049595,496.67978412536,516.79124009995,523.2511306012],description:"1125/1024 and 531441/524288, Op de Coul"},pipedum_37:{frequencies:[261.6255653006,263.718569823,276.85245005354,279.06726965397,280.31310567921,290.69507255622,293.02063313667,299.00064605783,308.98710943476,311.45900631024,313.95067836072,325.57848126297,332.22294006425,333.70607818954,346.06556256693,348.83408706747,351.62475976401,353.19451315581,370.78453132171,373.75080757229,376.74081403286,390.69417751556,392.4383479509,400.44729382745,415.27867508032,418.60090448096,421.94971171681,436.04260883433,444.94143758605,448.50096908674,465.11211608996,467.18850946536,470.92601754108,494.37937509562,498.33441009638,502.32108537715,519.0983438504,523.2511306012],description:"250/243, 3136/3125 and 3125/3087, Gene Ward Smith, 2002"},pipedum_38:{frequencies:[261.6255653006,271.25338610366,272.52663052146,280.3771918945,282.55561052465,290.69507255622,292.95365699196,301.39265122629,302.80736724606,313.95067836072,315.42434088132,325.50406332439,327.03195662575,336.45263027341,339.06673262958,348.83408706747,350.47148986813,361.67118147155,363.36884069528,376.74081403286,378.50920905758,390.60487598927,392.4383479509,403.74315632809,406.88007915549,418.60090448096,420.56578784176,434.00541776586,436.04260883433,452.08897683944,454.2110508691,467.29531982417,470.92601754108,484.4917875937,488.25609498659,502.32108537715,504.67894541011,519.21702202686,523.2511306012],description:"81/80 and 1224440064/1220703125, Manuel Op de Coul, 2001"},pipedum_38a:{frequencies:[261.6255653006,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,294.32876096318,305.22982618403,306.59245933664,313.95067836072,321.92208230347,327.03195662575,329.64821227876,340.65828815182,343.38355445704,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,383.2405741708,390.69417751556,392.4383479509,408.78994578219,412.06026534844,418.60090448096,429.2294430713,436.04260883433,439.53094970501,457.84473927605,459.88868900496,470.92601754108,476.92160341255,488.36772189445,490.54793493862,510.98743222773,515.07533168556,523.2511306012],description:"50/49, 81/80 and 3125/3072, Gene Ward Smith, 2002"},pipedum_41:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,303.67253115248,308.34441624714,313.95067836072,320.49131749323,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.2846196779,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.40708707973,392.4383479509,400.61414686654,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"100/99 105/104 196/195 275/273 385/384, Paul Erlich, TL 3-11-2000"},pipedum_41a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,400.61414686654,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"pipedum_41 improved shape by Manuel Op de Coul, all intervals superparticular"},pipedum_41b:{frequencies:[261.6255653006,265.7783520514,271.31540105247,274.70684356563,279.06726965397,284.8811711051,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,504.56359022259,515.07533168556,523.2511306012],description:"pipedum_41 more improved shape by M. OdC, all intervals superparticular"},pipedum_41c:{frequencies:[261.6255653006,267.07609791103,271.31540105247,275.93321340298,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,315.35224388912,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,360.4025644447,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,398.6675280771,406.97310157871,410.05802887931,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,474.80195184183,480.53675259294,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"225/224, 245/243 and 1029/1024, Gene Ward Smith, 2002"},pipedum_41d:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,282.55561052465,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,317.51653791741,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,423.83341578697,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"3125/3072 and 32805/32768"},pipedum_43:{frequencies:[261.6255653006,269.10058145205,273.37201925287,274.70684356563,282.55561052465,286.15296204753,287.04062021552,290.69507255622,299.00064605783,305.22982618403,307.54352165948,313.95067836072,322.92069774245,327.03195662575,328.04642310345,332.22294006425,341.71502406609,343.38355445704,348.83408706747,358.80077526939,366.27579142084,369.05222599138,376.74081403286,379.68336007343,381.53728273004,392.4383479509,398.6675280771,410.05802887931,412.06026534844,418.60090448096,423.93031414449,430.56093032327,436.04260883433,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,492.06963465517,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 12288/12005, Gene Ward Smith, 2002"},pipedum_45:{frequencies:[261.6255653006,265.7783520514,267.07609791103,274.70684356563,279.06726965397,280.31310567921,284.8811711051,293.02063313667,294.32876096318,299.00064605783,303.74668805875,305.22982618403,313.95067836072,320.49131749323,325.57848126297,327.03195662575,336.37572681506,341.85740532612,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,372.08969287196,373.75080757229,384.58958099188,392.4383479509,398.6675280771,400.61414686654,406.97310157871,418.60090448096,420.46965851882,427.32175665765,436.04260883433,439.53094970501,448.50096908674,455.80987376816,457.84473927605,465.11211608996,478.40103369253,480.73697623985,488.36772189445,498.33441009638,512.78610798918,515.07533168556,523.2511306012],description:"81/80, 525/512 and 2401/2400, Gene Ward Smith, 2002"},scala205pipedum_45a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.99452506247,329.64821227876,336.37572681506,339.14425131559,345.98646186692,348.83408706747,356.10146388137,363.28578496026,366.27579142084,373.75080757229,376.82694590621,384.42940207435,392.4383479509,395.66829320152,403.65087217807,406.97310157871,415.27867508032,423.83341578697,427.14378008261,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 2401/2400 and 4375/4374, Gene Ward Smith"},pipedum_46:{frequencies:[261.6255653006,265.7783520514,270.41454913492,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,295.30928005711,300.46061014991,305.22982618403,310.07474405997,313.95067836072,320.49131749323,325.57848126297,327.03195662575,332.22294006425,339.14425131559,343.38355445704,348.83408706747,354.37113606854,360.55273217989,366.27579142084,372.08969287196,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.32175665765,429.2294430713,436.04260883433,442.96392008567,450.69091522486,457.84473927605,465.11211608996,470.92601754108,480.73697623985,488.36772189445,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"126/125, 1029/1024 and 5120/5103. Manuel Op de Coul, 2001"},pipedum_46a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,313.95067836072,320.35783506196,320.49131749323,327.03195662575,332.22294006425,336.37572681506,343.38355445704,348.83408706747,353.19451315581,358.80077526939,366.12324007081,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.14378008261,427.32175665765,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,470.92601754108,478.40103369253,488.36772189445,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"126/125, 1029/1024 and 245/243, Gene Ward Smith, 2002"},pipedum_46b:{frequencies:[261.6255653006,264.89588486686,271.25338610366,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,301.39265122629,302.80736724606,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,334.88072358477,339.06673262958,340.65828815182,348.83408706747,353.19451315581,361.67118147155,363.36884069528,372.08969287196,376.74081403286,381.45007420827,387.59343007496,392.4383479509,401.85686830172,403.74315632809,408.78994578219,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,452.08897683944,454.2110508691,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,508.60009894437,516.79124009995,523.2511306012],description:"2048/2025 and 78732/78125"},pipedum_46c:{frequencies:[261.6255653006,266.47048317654,271.31540105247,274.08392555301,279.06726965397,282.62020942966,287.78812183066,290.69507255622,297.67175429757,299.7792935736,306.97399661937,310.07474405997,313.95067836072,319.76457981184,325.57848126297,328.90071066361,332.22294006425,339.14425131559,342.60490694126,348.83408706747,355.29397756872,359.73515228832,363.36884069528,372.08969287196,374.72411696701,383.71749577421,387.59343007496,394.68085279633,399.70572476481,406.97310157871,411.12588832951,418.60090448096,426.35277308246,431.68218274599,436.04260883433,446.50763144636,449.66894036041,460.46099492906,465.11211608996,467.18850946536,479.64686971777,484.4917875937,496.11959049595,499.63215595601,511.62332769895,516.79124009995,523.2511306012],description:"126/125, 176/175, 385/384 and 896/891, Paul Erlich"},pipedum_46d:{frequencies:[261.6255653006,267.23182741418,272.79915715198,274.70684356563,278.36648688978,283.42769574232,287.78812183066,291.52562990638,297.59908052943,299.7792935736,303.67253115248,311.77046531655,313.95067836072,320.67819289702,324.7609013714,327.03195662575,334.03978426773,340.11323489078,343.04051394309,345.34574619679,354.2846196779,359.73515228832,366.27579142084,374.12455837986,376.74081403286,381.53728273004,389.71308164569,392.4383479509,402.90337056292,408.13588186894,411.12588832951,419.69101100305,425.14154361347,431.68218274599,439.53094970501,445.38637902364,448.50096908674,457.84473927605,467.65569797482,470.92601754108,479.64686971777,485.87604984397,490.54793493862,503.62921320365,510.16985233617,519.61744219425,523.2511306012],description:"91/90, 121/120, 126/125, 169/168 and 176/175"},pipedum_5:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"16/15 and 27/25"},pipedum_50:{frequencies:[261.6255653006,267.07609791103,269.10058145205,273.37201925287,274.70684356563,276.85245005354,284.76252005507,286.15296204753,290.69507255622,299.00064605783,300.46061014991,305.22982618403,307.54352165948,313.95067836072,316.40280006119,320.49131749323,327.03195662575,332.22294006425,333.84512238879,341.71502406609,343.38355445704,348.83408706747,358.80077526939,360.55273217989,361.60320006994,366.27579142084,373.75080757229,379.68336007343,381.53728273004,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.93031414449,427.14378008261,436.04260883433,445.12682985172,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,480.73697623985,484.4917875937,498.33441009638,500.76768358318,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 16807/16384, Gene Ward Smith, 2002"},pipedum_53:{frequencies:[261.6255653006,264.89588486686,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"15625/15552 and 32805/32768, Manuel Op de Coul, 2001"},pipedum_53a:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,276.85245005354,280.31310567921,282.55561052465,288.32205155576,290.69507255622,294.32876096318,299.00064605783,302.80736724606,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.99452506247,327.03195662575,332.22294006425,336.37572681506,339.14425131559,346.06556256693,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,387.59343007496,392.4383479509,398.6675280771,403.65087217807,406.97310157871,415.27867508032,418.60090448096,423.83341578697,430.56093032327,436.04260883433,441.49314144476,448.50096908674,454.2110508691,457.84473927605,467.18850946536,470.92601754108,480.53675259294,484.4917875937,490.54793493862,498.33441009638,504.56359022259,508.71637697339,519.0983438504,523.2511306012],description:"225/224, 1728/1715 and 4375/4374, Manuel Op de Coul, 2001"},pipedum_53b:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,274.70684356563,280.31310567921,286.03378130532,288.32205155576,290.69507255622,293.02063313667,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.92069774245,327.03195662575,333.70607818954,336.37572681506,341.85740532612,343.24053756638,348.83408706747,351.62475976401,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,389.3237578878,392.4383479509,400.44729382745,403.65087217807,406.97310157871,410.22888639134,418.60090448096,427.14378008261,430.56093032327,436.04260883433,439.53094970501,448.50096908674,457.65405008851,457.84473927605,467.18850946536,470.92601754108,478.60036745656,480.53675259294,488.36772189445,498.33441009638,502.32108537715,512.57253609913,512.78610798918,523.2511306012],description:"225/224, 1728/1715 and 3125/3087, Gene Ward Smith, 2002"},pipedum_55:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,293.02063313667,294.32876096318,296.75121990114,299.00064605783,305.22982618403,306.59245933664,313.95067836072,317.94773560837,320.49131749323,325.57848126297,327.03195662575,333.84512238879,336.37572681506,340.65828815182,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,367.91095120397,373.75080757229,376.74081403286,381.53728273004,390.69417751556,392.4383479509,400.61414686654,403.65087217807,406.97310157871,408.78994578219,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,445.12682985172,448.50096908674,457.84473927605,459.88868900496,470.92601754108,474.80195184183,476.92160341255,488.36772189445,490.54793493862,502.32108537715,504.56359022259,508.71637697339,520.92557002075,523.2511306012],description:"81/80, 686/675 and 6144/6125, Gene Ward Smith, 2002"},pipedum_58:{frequencies:[261.6255653006,264.29521392612,268.60224704195,271.31540105247,275.62199471997,277.50997462242,280.31310567921,284.8811711051,287.78812183066,292.35618725654,295.30928005711,297.33211566688,302.17752792219,305.22982618403,310.07474405997,313.23877206058,315.35224388912,320.49131749323,323.76163705949,328.90071066361,332.22294006425,337.63694353197,339.94971891247,343.38355445704,348.83408706747,352.39361856816,358.13632938927,361.75386806997,364.23184169193,370.01329949656,373.75080757229,379.84156147346,383.71749577421,389.80824967539,392.4383479509,396.44282088917,402.90337056292,406.97310157871,413.43299207996,417.65169608078,420.46965851882,427.32175665765,431.68218274599,438.53428088482,442.96392008567,445.99817350032,453.26629188329,457.84473927605,465.11211608996,469.85815809087,477.51510585235,480.73697623985,485.64245558924,493.35106599542,498.33441009638,506.45541529795,511.62332769895,515.07533168556,523.2511306012],description:"9801/9800, 2401/2400, 5120/5103 and 896/891"},pipedum_58a:{frequencies:[261.6255653006,265.65057399753,267.66008354786,270.48058443385,272.52663052146,277.4816601673,281.75060878526,285.40970760065,287.78812183066,293.02063313667,295.1673044417,297.30177875068,301.87565226992,305.22982618403,309.92566966379,313.95067836072,316.2506833304,322.00069575458,323.72860352852,327.03195662575,332.97799220076,338.10073054231,342.60490694126,344.24801655217,348.83408706747,352.18826098158,358.59168390851,362.25078272391,366.27579142084,368.95913055213,375.66747838035,379.50081999647,381.53728273004,388.47432423422,392.4383479509,399.57359064092,402.50086969323,406.97310157871,411.12588832951,418.60090448096,422.62591317789,428.25613367658,430.31002069022,436.04260883433,442.75095666255,450.80097405642,455.40098399577,457.84473927605,466.16918908107,469.58434797544,475.68284600109,483.00104363188,488.36772189445,495.88107146206,499.46698830115,503.12608711654,512.27383415502,516.54278277298,523.2511306012],description:"126/125, 144/143, 176/175, 196/195 and 364/363"},pipedum_5a:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:"27/25 and 81/80"},pipedum_64:{frequencies:[261.6255653006,267.90457886781,266.96486255163,273.37201925287,274.70684356563,273.74326726486,280.31310567921,280.42990280658,284.76252005507,286.15296204753,294.32876096318,300.05312833195,299.00064605783,300.46061014991,307.67166479351,306.59245933664,313.95067836072,312.84944830269,320.35783506196,320.49131749323,328.18310911307,327.03195662575,336.37572681506,336.5158833679,341.71502406609,343.38355445704,351.62475976401,348.83408706747,358.80077526939,358.95027559242,366.12324007081,366.27579142084,375.06641041494,373.75080757229,382.72082695402,384.58958099188,383.2405741708,392.4383479509,392.60186392921,398.6675280771,400.61414686654,412.06026534844,408.78994578219,418.60090448096,428.6473261885,427.14378008261,429.2294430713,439.53094970501,437.98922762377,448.50096908674,448.68784449053,455.62003208812,457.84473927605,468.83301301868,467.18850946536,478.40103369253,480.73697623985,488.16432009441,490.54793493862,502.32108537715,500.55911728431,512.57253609913,512.78610798918,520.70860810071,523.2511306012],description:"225/224 235298/234375 and 67108864/66706983"},pipedum_65:{frequencies:[261.6255653006,264.59711493117,267.38234771992,270.72462706642,273.0589090967,275.93321340298,279.06726965397,282.00481986086,285.20783756792,287.99181818792,291.26283636981,294.32876096318,297.67175429757,300.80514118491,303.39878788522,306.84479880935,310.42486507835,313.95067836072,317.25542234346,320.85881726391,323.62537374423,327.30111872997,331.11985608357,334.60532825287,338.40578383303,341.32363637087,345.20039866051,348.83408706747,352.79615324157,356.9123501364,360.9661694219,364.07854546226,367.91095120397,372.08969287196,376.00642648114,380.70650681216,383.98909091723,388.35044849308,392.4383479509,396.89567239676,401.07352157989,404.53171718029,409.58836364504,413.89982010446,418.60090448096,423.00722979129,427.81175635188,431.50049832564,436.89425455471,441.49314144476,446.50763144636,451.20771177737,455.09818182783,460.26719821402,465.11211608996,470.92601754108,475.8831335152,481.28822589586,485.43806061635,490.95167809495,496.11959049595,501.90799237931,507.60867574954,511.9854545563,517.80059799077,523.2511306012],description:"1216/1215, 32805/32768 and 39858075/39845888. Manuel Op de Coul, 2001"},pipedum_65a:{frequencies:[261.6255653006,264.89588486686,267.90457886781,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,286.08755565621,287.10624449997,290.69507255622,294.32876096318,298.00787047521,301.39265122629,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,319.0069383333,322.99452506247,327.03195662575,331.11985608357,334.88072358477,339.06673262958,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.60944457026,358.88280562497,363.36884069528,367.91095120397,372.08969287196,376.74081403286,381.45007420827,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,403.74315632809,408.78994578219,413.43299207996,418.60090448096,423.83341578697,429.13133348431,430.65936674996,436.04260883433,441.49314144476,446.50763144636,452.08897683944,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,478.51040749995,484.4917875937,490.54793493862,496.67978412536,502.32108537715,508.60009894437,510.98743222773,516.79124009995,523.2511306012],description:"78732/78125 and 32805/32768"},pipedum_67:{frequencies:[261.6255653006,262.79353657426,266.96486255163,267.07609791103,272.52663052146,274.70684356563,279.06726965397,280.31310567921,284.8811711051,286.15296204753,293.02063313667,294.32876096318,299.00064605783,299.12522966035,300.33547037059,305.22982618403,306.59245933664,311.45900631024,313.95067836072,320.35783506196,320.49131749323,325.57848126297,327.03195662575,332.22294006425,336.5158833679,339.00300006557,341.85740532612,343.38355445704,348.83408706747,350.39138209902,355.95315006884,360.55273217989,366.27579142084,367.91095120397,373.75080757229,373.90653707544,381.53728273004,384.58958099188,390.69417751556,392.4383479509,398.83363954714,400.44729382745,400.61414686654,406.97310157871,408.78994578219,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,439.53094970501,448.50096908674,448.68784449053,455.80987376816,457.84473927605,459.88868900496,465.11211608996,467.18850946536,474.60420009179,480.73697623985,488.36772189445,490.54793493862,498.33441009638,504.77382505185,512.78610798918,515.07533168556,520.92557002075,523.2511306012],description:"81/80, 1029/1024 and 9604/9375, Gene Ward Smith, 2002"},pipedum_68:{frequencies:[246.94165062806,250.86135936819,252.08626834948,253.99712636029,258.02882677871,259.28873315946,263.4044273366,264.58033995864,268.89201957278,272.13977824317,273.16014686758,276.57464870343,277.80935695657,282.21902928921,286.81815421096,288.0985923994,291.6998248044,292.67158592955,296.32998075367,301.03363124183,302.50352201937,307.30516522603,308.67706328508,311.01688942076,316.08531280392,317.49640795036,322.53603347338,324.11091644933,329.25553417075,333.37122834788,334.48181249092,338.66283514705,340.17472280396,345.71831087928,351.20590311546,352.77378661151,357.18345894416,358.5226927637,362.85303765756,368.76619827124,370.41247594209,376.29203905228,378.12940252422,384.13145653254,387.04324016806,388.93309973919,395.1066410049,396.87050993795,403.33802935916,409.74022030137,411.56941771343,414.86197305514,416.71403543485,423.32854393382,430.22723131644,432.1478885991,439.00737889433,441.15096961159,444.49497113051,451.55044686274,453.56629707195,460.95774783905,468.27453748728,470.36504881535,474.12796920588,476.24461192554,483.80405021008,491.68826436165,493.88330125612],description:"245/243, 2048/2025 and 2401/2400, Gene Ward Smith, 2002"},pipedum_7:{frequencies:[261.6255653006,290.69507255622,317.94773560837,347.75533582165,392.4383479509,429.2294430713,476.92160341255,523.2511306012],description:"81/80, 64/63 and 6144/6125, Manuel Op de Coul"},pipedum_72:{frequencies:[195.99771799087,198.44768946576,200.08100378235,201.59765279061,204.16428957382,205.79760389041,208.41771227328,209.06423252359,211.67753543014,214.37250405251,216.08748408493,217.77524221208,220.49743273973,222.31222642483,223.99739198957,226.79735938944,228.66400432268,231.52230437672,232.29359169288,235.19726158904,238.19167116946,240.09720453882,241.91718334873,244.99714748859,246.9571246685,250.10125472793,251.99706598826,254.07111591409,257.24700486302,258.04499557198,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,277.89028303104,279.99673998696,282.23671390685,285.83000540335,289.40288047089,290.3669896161,293.99657698631,296.41630189977,300.12150567352,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,321.55875607877,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.76148788545,342.99600648402,347.28345656507,348.44038753932,352.79589238357,357.28750675419,360.14580680822,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,385.87050729453,387.1559861548,391.99543598174],description:"225/224, 1029/1024 and 4375/4374, Gene Ward Smith, 2002"},pipedum_72a:{frequencies:[195.99771799087,197.5656997348,200.08100378235,201.59765279061,203.21043401293,205.79760389041,207.44398472154,209.99755499022,211.67753543014,213.41973736784,216.04686727389,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.84921063758,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.07883968176,240.09720453882,241.91718334873,244.99714748859,246.9571246685,248.93278166584,251.99706598826,254.07111591409,256.1036848414,259.25624072866,261.33029065449,264.65741241051,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.59197962872,279.99673998696,282.23671390685,285.83000540335,288.11664544658,290.30062001848,293.99657698631,296.3485496022,298.59492344758,302.46561418344,304.88533909691,308.7669811456,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.68405668822,342.99600648402,345.73997453589,348.36074402217,352.79589238357,355.69956227973,360.07811212314,362.95873702013,365.86240691629,370.52037737472,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"4375/4374, 2401/2400 and 15625/15552, Manuel Op de Coul, 2002"},pipedum_72b:{frequencies:[195.99771799087,197.5656997348,200.51849868858,202.12264667808,204.16428957382,205.79760389041,207.94510975112,209.60867062912,211.67753543014,213.41973736784,215.59748978996,218.74745311481,220.49743273973,222.7983318762,224.58071853121,226.79735938944,228.66400432268,230.99731048924,232.89852292125,235.19726158904,238.19167116946,240.62219842629,242.5471760137,244.99714748859,246.9571246685,249.53413170134,251.53040475495,254.07111591409,256.1036848414,259.87197430039,262.49694373777,264.59691928767,267.35799825143,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.4782275055,283.49669923679,285.83000540335,288.74663811155,291.12315365156,293.99657698631,296.3485496022,299.44095804161,301.83648570594,304.88533909691,309.37139797666,311.91766462667,314.99633248533,317.51630314521,320.82959790172,323.39623468494,326.66286331812,329.27616622466,332.71217560179,336.87107779681,340.19603908415,342.99600648402,346.49596573386,349.34778438187,352.79589238357,355.69956227973,359.32914964993,362.08404605941,367.49572123288,371.24567757199,374.30119755201,377.99559898239,381.10667387114,384.99551748207,388.16420486875,391.99543598174],description:"225/224, 3025/3024, 1375/1372 and 4375/4374"},pipedum_72b2:{frequencies:[195.99771799087,198.44768946576,200.45221158157,202.12264667808,204.16428957382,205.79760389041,207.87636756607,209.06423252359,211.67753543014,213.81569235368,215.59748978996,217.77524221208,220.49743273973,222.72467953508,223.99739198957,226.79735938944,228.66400432268,230.99731048924,233.3306166558,235.19726158904,237.57299150408,239.55276643329,241.97249134675,244.99714748859,246.39713118852,249.45164107929,251.99706598826,254.07111591409,257.24700486302,258.71698774795,261.33029065449,264.59691928767,267.2696154421,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.99673998696,282.23671390685,285.0875898049,287.46331971994,290.3669896161,293.99657698631,296.96623938011,298.66318931942,302.39647918591,304.88533909691,307.99641398565,311.81455134911,313.59634878539,317.51630314521,320.72353853051,323.39623468494,326.66286331812,329.27616622466,332.60218810572,335.99608798435,338.76148788545,342.99600648402,344.95598366393,348.44038753932,352.79589238357,356.35948725613,359.32914964993,362.95873702013,367.49572123288,369.59569678278,374.17746161893,376.31561854247,380.11678640654,383.28442629326,387.1559861548,391.99543598174],description:"Optimised version of pipedum_72b, Manuel Op de Coul"},pipedum_72c:{frequencies:[195.99771799087,197.5656997348,199.99767141926,201.59765279061,203.25689273127,205.79760389041,207.40499258293,209.99755499022,211.67753543014,213.41973736784,215.9974851328,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.79735938944,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.13304151982,239.99720570311,241.91718334873,244.99714748859,246.9571246685,248.88599109952,251.99706598826,254.07111591409,256.1036848414,259.19698215935,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.47678096998,279.99673998696,282.23671390685,285.83000540335,287.99664684373,290.3669896161,293.99657698631,296.41630189977,298.66318931942,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.32945236543,335.99608798435,338.76148788545,342.99600648402,345.59597621247,348.44038753932,352.79589238357,355.69956227973,359.99580855466,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"441/440, 2401/2400, 4375/4374 and 1375/1372"},pipedum_74:{frequencies:[174.6141157165,175.4667237034,177.38576834692,178.25190979393,182.45393315683,183.34482150233,186.25505676427,187.16450528362,187.6669026756,191.57662981467,192.51206257744,194.01568412944,194.96302633711,195.48635695375,199.55898939029,200.53339851817,202.72659239648,203.71646833592,208.51878075067,209.5369388598,210.56006844408,212.8629220163,213.90229175271,216.62558481901,218.9447197882,220.01378580279,221.73221043365,222.81488724241,228.06741644604,229.18102687791,231.68753416741,232.81882095533,233.95563160453,239.47078726834,240.6400782218,243.27191087578,244.4597620031,249.5526737115,250.2225369008,251.44432663176,253.4082404956,254.6455854199,259.95070178281,260.64847593833,261.92117357475,266.07865252038,267.37786469089,273.68089973525,275.01723225349,278.02504100089,279.3825851464,280.74675792544,285.20305567028,287.36494472201,291.02352619417,291.92629305093,292.44453950566,297.08651632321,299.33848408543,304.08988859472,305.57470250388,310.42509460711,311.94084213937,312.778171126,319.29438302446,320.85343762907,325.94634933747,328.4170796823,333.63004920107,334.22233086361,335.25910217568,339.52744722653,342.10112466906,347.53130125111,349.228231433],description:"81/80, 126/125 and 4194304/4117715, Gene Ward Smith, 2002"},pipedum_81:{frequencies:[116.54094037952,117.10998793997,118.96887663743,119.87068153322,121.77339076391,122.3679873985,122.96548733697,124.86529326377,124.9173204693,126.84728204574,127.4666535401,128.08904930934,130.12220882219,130.47149010419,131.10855792696,133.18964614802,133.83998621711,135.96443044277,136.62831926329,136.99506460939,139.16958944446,139.84912845542,140.53198552796,142.70319230145,142.76265196491,144.96832233798,145.6761754744,146.38748492496,148.71109579678,149.83835191653,152.21673845488,152.95998424812,153.70685917121,155.38792050603,156.14665058662,156.56578812502,159.82757537763,160.60798346053,163.08936263023,163.15731653133,163.95398311595,166.48705768503,167.29998277138,169.12970939431,169.95553805347,170.78539907912,173.96198680558,174.81141056928,175.66498190995,177.58619486403,178.45331495614,182.66008614586,183.55198109774,184.08675852442,184.44823100545,186.46550460723,187.37598070395,190.2709230686,191.19998031015,193.29109645065,194.23490063253,195.18331323328,199.78446922203,200.75997932566,202.95565127318,203.94664566416,204.94247889494,208.7543841667,209.77369268314,210.79797829194,213.10343383684,214.14397794737,217.45248350698,218.5142632116,218.60531082127,221.98274358004,223.06664369518,227.71386543882,228.32510768232,229.43997637218,231.94931574077,233.08188075904],description:"81/80, 126/125 and 17294403/16777216, Gene Ward Smith, 2002"},pipedum_87:{frequencies:[82.40688922822,83.34286871081,83.43697534357,84.3846545697,84.87648045204,85.84050961273,86.81548824043,86.91351598289,87.90068184343,87.99993493267,88.99944036648,90.43280025045,90.53491248218,91.56321025358,92.60318745646,92.70775038175,93.76072729966,93.86659726152,95.37834401414,96.46165360048,96.57057331432,97.66742427048,97.77770548075,98.88826707386,100.01144245297,100.59434720242,101.73690028175,101.85177654245,103.00861153527,104.17858588852,104.29621917947,105.48081821212,105.59992191921,107.30063701591,108.51936030054,108.64189497861,109.87585230429,111.12382494775,111.2493004581,112.5128727596,113.16864060272,114.45401281697,115.75398432057,115.88468797718,117.20090912458,117.3332465769,118.66592048864,120.5770670006,120.7132166429,122.0842803381,122.22213185094,123.61033384233,125.01430306622,125.15546301536,127.17112535219,128.61553813397,128.76076441909,130.22323236064,130.37027397433,131.85102276515,133.3485899373,133.49916054972,135.64920037567,135.80236872326,137.34481538037,138.90478118469,139.06162557262,140.6410909495,140.79989589228,143.06751602122,144.69248040072,144.85585997148,146.50113640572,146.66655822112,148.3324006108,150.01716367946,150.89152080363,152.60535042263,154.33864576076,154.51291730291,156.26787883277,156.4443287692,158.22122731818,160.76942266746,160.95095552387,162.7790404508,162.96284246792,164.81377845644],description:"67108864/66430125 and 15625/15552, Op de Coul"},pipedum_9:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,392.4383479509,420.46965851882,448.50096908674,490.54793493862,523.2511306012],description:"225/224, 49/48 and 36/35 are homophonic intervals"},pipedum_99:{frequencies:[41.20344461411,41.53307217102,41.72802550619,42.06184971024,42.3806858888,42.72949811834,42.92025480636,43.26361684482,43.60972577957,43.95034092172,44.14654780083,44.49972018324,44.86597302425,45.06626754668,45.407877738,45.78160512679,46.1478579678,46.35387519087,46.73538856693,47.08965098755,47.46636819545,47.68917200707,48.07068538313,48.45525086619,48.65129757643,49.0517197787,49.44413353693,49.83968660523,50.07363060743,50.47421965228,50.85682306656,51.275397742,51.50430576764,51.91634021378,52.34363519496,52.55541404861,52.975857361,53.41187264792,53.8391676291,54.07952105602,54.50191086522,54.93792615215,55.37742956136,55.62465022905,56.08246628032,56.50758118507,56.7598471725,57.22700640849,57.68482245975,58.14630103943,58.41923570866,58.86206373444,59.33296024432,59.82129736567,60.08835672891,60.56906358274,61.04214016905,61.31464972338,61.80516692116,62.29960825653,62.81236223395,63.06649685833,63.5710288332,64.0942471775,64.60700115492,64.89542526722,65.40229303827,65.92551138258,66.21982170125,66.7648408099,67.29895953638,67.80909742208,68.12738858153,68.67240769018,69.2217869517,69.77556124732,70.1030828504,70.63447648133,71.19955229318,71.53375801061,72.10602807469,72.68287629929,73.25056820286,73.57757966805,74.1662003054,74.77662170709,75.37483468075,75.67979623,76.30267521131,76.91309661301,77.25645865146,77.87451032067,78.48275164592,79.11061365909,79.4637860415,80.11780897188,80.75875144366,81.37091690649,81.75286629784,82.40688922822],description:"2401/2400, 3136/3125 and 4375/4374, Gene Ward Smith, 2002"},pipedum_9a:{frequencies:[261.6255653006,282.62020942966,305.22982618403,329.72357766794,356.10146388137,384.67750727926,415.4517078616,448.79042515914,484.69365917187,523.2511306012],description:"4375/4374, 2401/2400 and 21/20 are homophonic intervals"},pipedum_9b:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,357.20610515709,383.2405741708,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"128/125 and 2109375/2097152 are homophonic intervals"},pipedum_9c:{frequencies:[261.6255653006,285.40970760065,305.22982618403,332.97799220076,348.83408706747,392.4383479509,411.12588832951,448.50096908674,479.64686971777,523.2511306012],description:"49/48, 21/20, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9d:{frequencies:[261.6255653006,277.4816601673,308.34441624714,327.03195662575,346.85207520913,394.68085279633,418.60090448096,443.97065626768,493.35106599542,523.2511306012],description:"128/125, 36/35, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9e:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"21/20, 27/25 and 128/125"},polansky_ps:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4447.6346101102,327.03195662575,654.0639132515,981.09586987725,1308.127826503,1635.15978312875,1962.1917397545,2289.22369638025,2616.255653006,2943.28760963175,3270.3195662575,3597.35152288325,3924.383479509,4251.41543613475,4578.4473927605,4905.47934938625,5232.511306012,5559.54326263775,392.4383479509,784.8766959018,1177.3150438527,1569.7533918036,1962.1917397545,2354.6300877054,2747.0684356563,3139.5067836072,3531.9451315581,3924.383479509,4316.8218274599,4709.2601754108,5101.6985233617,5494.1368713126,5886.5752192635,6279.0135672144,6671.4519151653],description:"Three interlocking harmonic series on 1:5:3 by Larry Polansky in Psaltery"},poole:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Poole's double diatonic or dichordal scale"},porcupine:{frequencies:[261.6255653006,268.5059110196,275.56719913678,277.81869773502,285.12489766782,287.45448663717,295.01409284105,302.77250493809,305.24628043356,313.27378316024,315.83336022842,324.13928669805,332.66364612382,335.38164643474,344.20166244741,347.01393314922,356.13986022226,365.50578499276,368.49211923405,378.18288921726,381.27279846892,391.29968045081,401.5902538439,404.87141319969,415.51890206933,418.91386427268,429.93064777916,441.23715556831,444.84224659643,456.54090625717,460.27103529174,472.37544811397,484.79818817936,488.75918813348,501.6127950959,505.71118020326,519.01059820838,523.2511306012],description:"porcupine temperament, g=162.996, 5-limit"},portbag1:{frequencies:[261.6255653006,281.75060878526,311.64221749042,334.88072358477,376.74081403286,413.43299207996,457.84473927605,523.2511306012],description:"Portugese bagpipe tuning"},portbag2:{frequencies:[261.6255653006,274.70684356563,281.75060878526,310.07474405997,317.68818643644,343.38355445704,372.08969287196,392.4383479509,408.78994578219,482.37213602298,523.2511306012],description:"Portugese bagpipe tuning 2"},prelleur:{frequencies:[261.6255653006,276.42153822591,293.20376052703,310.91918875105,328.72923110101,349.43408698743,368.89538496172,391.53834819612,414.55891854195,438.90564190541,466.17878415199,492.19384741628,523.2511306012],description:"Peter Prelleur's well temperament (1731)"},preston:{frequencies:[261.6255653006,276.24946721727,293.45376109391,311.26733605541,328.91048112005,349.30075403587,368.79929095641,391.73834630677,413.67420227347,439.48064068428,466.20100528964,492.6657196346,523.2511306012],description:"Preston's equal beating temperament (1785)"},preston2:{frequencies:[261.6255653006,276.2302000593,293.37610901672,311.58628319174,328.97985807656,349.39999567988,368.9044325484,391.80273191286,413.67420227347,439.35140993827,466.62242981045,492.67053466508,523.2511306012],description:"Preston's theoretically correct well temperament"},prime_10:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,523.2511306012],description:"First 10 prime numbers reduced by 2/1"},prime_5:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,523.2511306012],description:'What Lou Harrison calls "the Prime Pentatonic", a widely used scale'},primes6:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1308.127826503,1831.3789571042,2877.8812183066,3401.1323489078],description:"First 6 primes"},prinz:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.49599295996,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Prinz well-tempermament (1808)"},prinz2:{frequencies:[261.6255653006,275.62199471997,291.81313052759,310.07474405997,327.03195662575,348.83408706747,367.49599295996,390.42584360243,413.43299207996,436.71344361716,465.11211608996,490.54793493862,523.2511306012],description:"Prinz equal beating temperament (1808)"},"prod13-2":{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"13-limit binary products [1 3 5 7 11 13]"},prod13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,331.11985608357,343.38355445704,345.42750418595,359.73515228832,367.91095120397,371.99885066179,392.4383479509,400.61414686654,404.70204632437,408.78994578219,425.14154361347,441.49314144476,449.66894036041,457.84473927605,478.28423656516,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"13-limit binary products [1 3 5 7 9 11 13]"},prod7d:{frequencies:[261.6255653006,265.7783520514,267.90457886781,273.37201925287,279.06726965397,286.15296204753,294.32876096318,299.00064605783,300.46061014991,306.59245933664,310.07474405997,318.93402246168,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,350.53737850823,357.69120255941,367.91095120397,372.08969287196,382.72082695402,390.53145607553,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,429.2294430713,441.49314144476,446.50763144636,455.62003208812,457.84473927605,465.11211608996,478.40103369253,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Double Cubic Corner 7-limit. Chalmers '96"},prod7s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Single Cubic Corner 7-limit"},prodq13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"13-limit Binary products and quotients. Chalmers '96"},prog_ennea:{frequencies:[261.6255653006,269.29177952703,285.30470202322,311.12698372208,349.22823143301,391.99543598175,403.48177901006,427.47405410759,466.16376151809,523.2511306012],description:"Progressive Enneatonic, 50+100+150+200 cents in each half (500 cents)"},prog_ennea1:{frequencies:[261.6255653006,269.10058145205,285.40970760065,310.68035879446,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prog_ennea2:{frequencies:[261.6255653006,269.55361273395,285.40970760065,321.08592105074,348.83408706747,392.4383479509,404.33041910093,428.11456140098,481.6288815761,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+200+150 cents in each half (500 cents)"},prog_ennea3:{frequencies:[261.6255653006,269.55361273395,285.40970760065,310.07474405997,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prooijen1:{frequencies:[261.6255653006,339.14425131559,366.27579142084,436.04260883433,470.92601754108,610.45965236807,726.73768139056,784.8766959018],description:"Kees van Prooijen, major mode of Bohlen-Pierce"},prooijen2:{frequencies:[261.6255653006,311.45900631024,336.37572681506,436.04260883433,470.92601754108,560.62621135843,726.73768139056,784.8766959018],description:"Kees van Prooijen, minor mode of Bohlen-Pierce"},"ps-dorian":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 4 of p. 115 based on Archytas's Enharmonic"},"ps-enh":{frequencies:[261.6255653006,266.38239376061,279.06726965397,348.83408706747,392.4383479509,399.57359064092,418.60090448096,523.2511306012],description:"Dorian mode of an Enharmonic genus found in Ptolemy's Harmonics"},"ps-hypod":{frequencies:[261.6255653006,294.32876096318,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Complex 7 of p. 115 based on Archytas's Enharmonic"},"ps-hypod2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 8 of p. 115 based on Archytas's Enharmonic"},"ps-mixol":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Complex 3 of p. 115 based on Archytas's Enharmonic"},ptolemy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Intense Diatonic Syntonon, also Zarlino's scale"},ptolemy_chrom:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,436.04260883433,523.2511306012],description:"Ptolemy Soft Chromatic"},ptolemy_ddiat:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Lyra tuning, Dorian mode, comb. of diatonon toniaion & diatonon ditoniaion"},ptolemy_diat:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ptolemy's Diatonon Ditoniaion & Archytas' Diatonic, also Lyra tuning"},ptolemy_diat2:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Dorian mode of a permutation of Ptolemy's Tonic Diatonic"},ptolemy_diat3:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,441.49314144476,470.92601754108,523.2511306012],description:"Dorian mode of the remaining permutation of Ptolemy's Intense Diatonic"},ptolemy_diat4:{frequencies:[261.6255653006,299.00064605783,310.07474405997,348.83408706747,392.4383479509,448.50096908674,465.11211608996,523.2511306012],description:"permuted Ptolemy's diatonic"},ptolemy_diat5:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Sterea lyra, Dorian, comb. of 2 Tonic Diatonic 4chords, also Archytas' diatonic"},ptolemy_diff:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,425.14154361347,490.54793493862,523.2511306012],description:"Difference tones of Intense Diatonic reduced by 2/1"},ptolemy_enh:{frequencies:[261.6255653006,267.43946675172,279.06726965397,348.83408706747,392.4383479509,401.15920012759,418.60090448096,523.2511306012],description:"Dorian mode of Ptolemy's Enharmonic"},ptolemy_exp:{frequencies:[261.6255653006,272.52663052146,275.93321340298,287.4304306281,290.69507255622,294.32876096318,306.59245933664,327.03195662575,340.65828815182,344.91651675372,348.83408706747,363.36884069528,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,431.14564594215,436.04260883433,441.49314144476,459.88868900496,490.54793493862,510.98743222773,517.37477513058,523.2511306012],description:"Intense Diatonic expanded: all interval combinations"},ptolemy_hom:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Equable Diatonic or Diatonon Homalon"},ptolemy_iast:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Ptolemy's Iastia or Lydia tuning, mixture of Tonic Diatonic & Intense Diatonic"},ptolemy_iastaiol:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,441.49314144476,465.11211608996,523.2511306012],description:"Ptolemy's kithara tuning, mixture of Tonic Diatonic and Ditone Diatonic"},ptolemy_ichrom:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,411.12588832951,448.50096908674,523.2511306012],description:"Dorian mode of Ptolemy's Intense Chromatic"},ptolemy_idiat:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Intense Diatonic (Diatonon Syntonon)"},ptolemy_imix:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ptolemy Intense Diatonic mixed with its inverse"},ptolemy_malak:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Ptolemy's Malaka lyra tuning, a mixture of Intense Chrom. & Tonic Diatonic"},ptolemy_malak2:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Malaka lyra, mixture of his Soft Chromatic and Tonic Diatonic."},ptolemy_mdiat:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,412.06026534844,457.84473927605,523.2511306012],description:"Ptolemy soft diatonic"},ptolemy_mdiat2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_mdiat3:{frequencies:[261.6255653006,299.00064605783,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_meta:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Metabolika lyra tuning, mixture of Soft Diatonic & Tonic Diatonic"},ptolemy_mix:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"All modes of Ptolemy Intense Diatonic mixed"},ptolemy_prod:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,484.4917875937,490.54793493862,523.2511306012],description:"Product of Intense Diatonic with its intervals"},ptolemy_tree:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Intense Diatonic with all their Farey parent fractions"},pygmie:{frequencies:[261.6255653006,299.00064605783,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"Pygmie scale"},pyle:{frequencies:[261.6255653006,277.19063644077,293.6461094938,311.15753660095,329.66944764997,349.23831768549,369.99228554622,391.93430587921,415.28070933274,439.96441988338,466.23108306565,493.99742571239,523.2511306012],description:"Howard Willet Pyle quasi equal temperament"},pyramid:{frequencies:[261.6255653006,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'This scale may also be called the "Wedding Cake"'},pyramid_down:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Upside-Down Wedding Cake (divorce cake)"},pyth_12:{frequencies:[261.6255653006,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747,372.50983809402,392.4383479509,419.07356785577,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"12-tone Pythagorean scale"},pyth_12s:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,326.6631048533,348.83408706747,367.49599295996,392.4383479509,419.07356785577,435.55080647107,471.45776383774,489.99465727995,523.2511306012],description:"Scale with major thirds flat by a schisma"},pyth_17:{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,471.45776383774,496.67978412536,523.2511306012],description:"17-tone Pythagorean scale"},pyth_17s:{frequencies:[261.6255653006,275.62199471997,279.06726965397,294.32876096318,310.07474405997,313.95067836072,331.11985608357,348.83408706747,367.49599295996,372.08969287196,392.4383479509,413.43299207996,418.60090448096,441.49314144476,465.11211608996,470.92601754108,496.67978412536,523.2511306012],description:"Schismatically altered 17-tone Pythagorean scale"},pyth_22:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"Pythagorean shrutis"},pyth_27:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,290.36720431405,294.32876096318,298.34436617857,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,397.79248823809,413.43299207996,419.07356785577,435.55080647107,441.49314144476,447.51654926786,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"27-tone Pythagorean scale"},pyth_31:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,283.19406633357,294.32876096318,298.34436617857,310.07474405997,314.30517589183,318.59332496145,326.6631048533,331.11985608357,335.63741195089,348.83408706747,353.59332287831,367.49599295996,372.50983809402,377.59208844475,392.4383479509,397.79248823809,413.43299207996,419.07356785577,424.79110016094,441.49314144476,447.51654926786,465.11211608996,471.45776383774,477.8899872033,489.99465727995,496.67978412536,503.45611792634,523.2511306012],description:"31-tone Pythagorean scale"},pyth_7a:{frequencies:[261.6255653006,277.97716313189,294.32876096318,312.72430852337,331.11985608357,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,469.08646278506,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided arithmetically"},pyth_7h:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided harmonically"},pyth_chrom:{frequencies:[261.6255653006,275.62199471997,294.32876096318,348.83408706747,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Dorian mode of the so-called Pythagorean chromatic, recorded by Gaudentius"},pyth_sev:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,291.47537246454,299.00064605783,306.7202061947,314.63906894008,322.76237975718,333.11471138804,341.71502406609,350.53737850823,359.58750736009,368.87129039875,380.70252730062,390.53145607553,400.61414686654,410.95715126868,421.56719060242,435.08860262928,446.32166408632,457.84473927605,469.66531573563,481.7910743145,497.2441172906,510.08190181294,523.2511306012],description:"26-tone Pythagorean scale based on 7/4"},pyth_sev_16:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,306.7202061947,314.63906894008,322.76237975718,350.53737850823,359.58750736009,368.87129039875,400.61414686654,410.95715126868,421.56719060242,457.84473927605,469.66531573563,481.7910743145,523.2511306012],description:'16-tone Pythagorean scale based on 7/4, "Armodue"'},pyth_third:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,287.66035117148,290.46272611903,297.43383186155,304.57224382623,311.88197767806,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,363.07840893547,371.79228894479,380.71530478279,389.85247209758,399.20893142792,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,453.84801015616,464.74036282794,475.89413097849,487.31559012197,499.0111642849,510.98743222773,523.2511306012],description:"Cycle of 5/4 thirds"}};o.prototype._tune=function(i,n=220){const e=new t;if(!e.isValidScale(i))throw new Error('not a valid tune.js scale name: "'+i+'". See http://abbernie.github.io/tune/scales.html');return e.loadScale(i),e.tonicize(n),this._asNumber()._withHap(r=>r.withValue(()=>e.note(r.value)).setContext(a(c({},r.context),{type:"frequency"})))};o.prototype.define("tune",(i,n)=>n.tune(i),{composable:!0,patternified:!0}); +var h=Object.defineProperty,q=Object.defineProperties;var g=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var y=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var m=(i,n,e)=>n in i?h(i,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[n]=e,c=(i,n)=>{for(var e in n||(n={}))y.call(n,e)&&m(i,e,n[e]);if(p)for(var e of p(n))b.call(n,e)&&m(i,e,n[e]);return i},a=(i,n)=>q(i,g(n));import{P as o,z as _}from"./index.d3c8394c.js";function S(i){if(!/^[1-9]+[0-9]*edo$/.test(i))throw new Error('not an edo scale: "'+i+'"');const[n,e]=i.match(/^([1-9]+[0-9]*)edo$/);return Array.from({length:e},(r,s)=>Math.pow(2,s/e))}const f={"12ji":[1/1,16/15,9/8,6/5,5/4,4/3,45/32,3/2,8/5,5/3,16/9,15/8]};function v(i,n){return n.map(e=>e*i)}const w=220;function k(i,n){if(typeof i=="string")if(/^[1-9]+[0-9]*edo$/.test(i))i=S(i);else if(f[i])i=f[i];else throw new Error('unknown scale name: "'+i+'"');return i=v(w,i),n?i.filter((e,r)=>n.includes(r)):i}function l(i,n,e=0){const r=_(e+n,i.length),s=Math.floor(n/i.length);return i[r]*Math.pow(2,s)}o.prototype._xen=function(i,n){return this._asNumber()._withHap(e=>{const r=k(i);n=n||r.length;const s=l(r,e.value);return e.withValue(()=>s).setContext(a(c({},e.context),{type:"frequency"}))})};o.prototype.tuning=function(i){return this._asNumber()._withHap(n=>{const e=l(i,n.value);return n.withValue(()=>e).setContext(a(c({},n.context),{type:"frequency"}))})};o.prototype.define("xen",(i,n)=>n.xen(i),{composable:!0,patternified:!0});function t(){this.scale=[],this.mode={output:"frequency",input:"step"},this.etmajor=[261.62558,293.664764,329.627563,349.228241,391.995422,440,493.883301,523.25116],this.tonic=440}t.prototype.tonicize=function(i){this.tonic=i};t.prototype.note=function(i,n){var e;return this.mode.output=="frequency"?e=this.frequency(i,n):this.mode.output=="ratio"?e=this.ratio(i,n):this.mode.output=="MIDI"?e=this.MIDI(i,n):e=this.frequency(i,n),e};t.prototype.frequency=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);for(var r=i%this.scale.length;r<0;)r+=this.scale.length;var s=this.tonic*this.scale[r];return s=s*Math.pow(2,e),s=Math.floor(s*1e11)/1e11,s};t.prototype.ratio=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);var r=i%this.scale.length,s=Math.pow(2,e)*this.scale[r];return s=Math.floor(s*1e11)/1e11,s};t.prototype.MIDI=function(i,n){var e=this.frequency(i,n),r=69+12*Math.log(e/440)/Math.log(2);return r=Math.floor(r*1e9)/1e9,r};t.prototype.loadScale=function(i){var n=u[i].frequencies;this.scale=[];for(var e=0;e[1, 1, -1]->[0, 1, -1]->[0, 0, -1]->[0, 0, 0]->[0, -1, 0],[0, -1, 1]->[0, -2, 1]->[-1, -2, 1]"},breedt1:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,326.6631048533,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Graham Breed's 1/4 P temperament, TL 10-06-99"},breedt2:{frequencies:[261.6255653006,276.37000081643,293.53214922797,310.91625060765,328.43856194079,349.78078158391,368.4933346061,392.4383479509,414.55500101742,439.10654054756,466.37437567834,492.65784266492,523.2511306012],description:"Graham Breed's 1/5 P temperament, TL 10-06-99"},breedt3:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,350.01785633742,368.74309237173,392.4383479509,414.83597850347,438.51190905657,466.69047534984,491.65745674141,523.2511306012],description:"Graham Breed's other 1/4 P temperament, TL 10-06-99"},brown:{frequencies:[261.6255653006,272.52663052146,275.62199471997,275.93321340298,279.38237857051,287.10624449997,290.69507255622,291.02331101095,294.32876096318,306.24666079997,306.59245933664,310.07474405997,310.42486507835,322.99452506247,327.03195662575,331.11985608357,344.52749339997,344.91651675372,348.83408706747,349.22797321314,363.36884069528,367.49599295996,367.91095120397,372.50983809402,382.80832599996,387.59343007496,388.03108134794,392.4383479509,408.78994578219,413.43299207996,413.89982010446,430.65936674996,436.04260883433,436.53496651643,441.49314144476,459.36999119996,459.88868900496,465.11211608996,465.63729761752,484.4917875937,489.99465727995,490.54793493862,496.67978412536,516.79124009995,517.37477513058,523.2511306012],description:"Tuning of Colin Brown's Voice Harmonium, Glasgow. Helmholtz/Ellis p. 470-473"},bruder:{frequencies:[261.6255653006,276.38325105256,293.66476791741,310.22971009486,327.53979283172,349.02656754477,368.60786575306,391.65594491223,414.34624765043,439.23819834286,465.62553897253,491.60634075178,523.2511306012],description:"Ignaz Bruder organ temperament (1829) according to P. Vier"},burma3:{frequencies:[261.6255653006,287.71029735626,317.68827763215,350.39147881787,389.32370520689,429.81331927092,476.14308821464,523.2511306012],description:"Burmese scale, von Hornbostel"},"burt-forks":{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Warren Burt 19-tone Forks. Interval 5(3): pp. 13+23 Winter 1986-87"},burt1:{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,415.52295665389,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"W. Burt's 13diatsub #1"},burt10:{frequencies:[261.6255653006,265.11390617127,268.69652652494,272.3773008609,276.16031892841,355.06326719367,368.21375857121,382.37582620857,386.08821287079,389.87339142835,393.73352401674,397.67085925691,523.2511306012],description:"W. Burt's 19enhsub #10"},burt11:{frequencies:[261.6255653006,344.24416486921,347.6866065179,351.12904816659,354.57148981529,358.01393146398,371.78369805875,385.55346465352,495.71159741166,502.59648070905,509.48136400643,516.36624730382,523.2511306012],description:"W. Burt's 19enhharm #11"},burt12:{frequencies:[261.6255653006,302.93486508491,316.70463167967,330.47439827444,344.24416486921,358.01393146398,371.78369805875,385.55346465352,440.63253103259,468.17206422213,495.71159741166,509.48136400643,523.2511306012],description:"W. Burt's 19diatharm #12"},burt13:{frequencies:[261.6255653006,273.51763645063,286.54228580542,293.53112204458,300.86940009569,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,523.2511306012],description:"W. Burt's 23diatsub #13"},burt14:{frequencies:[261.6255653006,264.50057151269,267.43946675172,270.4444045804,273.51763645063,334.29933343966,353.96400011258,376.08675011961,382.05638107389,388.21858076863,394.58281979763,401.15920012759,523.2511306012],description:"W. Burt's 23enhsub #14"},burt15:{frequencies:[261.6255653006,341.25073734861,346.93824963775,352.6257619269,358.31327421604,364.00078650518,386.75083566176,409.50088481833,500.50108144463,506.18859373377,511.87610602291,517.56361831206,523.2511306012],description:"W. Burt's 23enhharm #15"},burt16:{frequencies:[261.6255653006,295.75063903546,307.12566361375,318.50068819203,341.25073734861,364.00078650518,386.75083566176,409.50088481833,455.00098313148,466.37600770977,477.75103228805,500.50108144463,523.2511306012],description:"W. Burt's 23diatharm #16"},burt17:{frequencies:[261.6255653006,262.27760655527,262.77528702311,280.51080915002,281.04308772525,281.33584094163,286.12102533302,286.66394947976,306.91182648178,308.56189006502,309.14739649778,336.61297098002,337.2517052703,337.60300912996,338.42271813583,339.41807907152,363.01398831179,369.18841978454,370.27426807802,396.01525997649,398.14437427744,399.31538714296,403.93556517602,406.10726176299,434.33931739357,434.79175418253,435.61678597414,437.95881170519,475.21831197179,476.86837555503,477.77324913293,478.27092960078,479.17846457156,521.20718087229,521.75010501903,522.74014316897,523.2511306012],description:`W. Burt's "2 out of 3,5,11,17,31 dekany" CPS with 1/1=3/1. 1/1 vol. 10(1) '98`},burt18:{frequencies:[261.6255653006,268.26840191956,269.80136421624,270.50397193556,275.42222597075,281.04308772525,286.15296204753,295.09524211152,300.46061014991,306.59245933664,309.14739649778,314.76825825228,321.92208230347,324.60476632267,337.2517052703,343.38355445704,344.27778246344,354.11429053382,357.69120255941,367.91095120397,370.97687579734,375.57576268738,393.46032281536,404.70204632437,413.13333895612,421.56463158788,429.2294430713,432.80635509689,449.66894036041,463.72109474667,472.15238737843,490.54793493862,491.82540351919,500.76768358318,505.87755790546,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 1,3,5,7,11 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt19:{frequencies:[261.6255653006,268.26840191956,286.15296204753,294.32876096318,300.46061014991,306.59245933664,321.92208230347,327.03195662575,343.38355445704,357.69120255941,367.91095120397,375.57576268738,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 2,3,4,5,7 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt2:{frequencies:[261.6255653006,264.16561933264,266.75547834571,269.39662169567,272.09058791262,340.11323489078,344.41846571218,348.83408706747,353.36439988652,358.01393146398,412.25846653428,485.87604984397,523.2511306012],description:"W. Burt's 13enhsub #2"},burt20:{frequencies:[261.6255653006,269.10058145205,279.06726965397,279.38237857051,294.32876096318,298.00787047521,330.74639366397,335.25885428462,367.91095120397,376.74081403286,412.06026534844,418.60090448096,523.2511306012],description:'Warren Burt tuning for "Commas" (1993) 1/1=263. XH 16'},burt3:{frequencies:[261.6255653006,281.75060878526,332.06321749692,382.37582620857,387.40708707973,392.4383479509,397.46960882207,402.50086969323,503.12608711654,508.1573479877,513.18860885887,518.21986973003,523.2511306012],description:"W. Burt's 13enhharm #3"},burt4:{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,342.12573923925,362.25078272391,382.37582620857,402.50086969323,442.75095666255,462.87600014722,483.00104363188,503.12608711654,523.2511306012],description:"W. Burt's 13diatharm #4, see his post 3/30/94 in Tuning Digest #57"},burt5:{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,277.97716313189,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"W. Burt's 17diatsub #5"},burt6:{frequencies:[261.6255653006,265.53042448419,269.55361273395,273.7005913914,277.97716313189,370.63621750918,386.75083566176,404.33041910093,408.97789518255,413.73345210327,418.60090448096,423.58424858192,523.2511306012],description:"W. Burt's 17enhsub #6"},burt7:{frequencies:[261.6255653006,323.18452184192,327.03195662575,330.87939140958,334.72682619341,338.57426097725,353.96400011258,369.35373924791,492.47165233054,500.16652189821,507.86139146587,515.55626103354,523.2511306012],description:"W. Burt's 17enhharm #7"},burt8:{frequencies:[261.6255653006,277.01530443593,292.40504357126,307.79478270659,323.18452184192,338.57426097725,353.96400011258,369.35373924791,400.13321751856,430.91269578922,461.69217405988,492.47165233054,523.2511306012],description:"W. Burt's 17diatharm #8"},burt9:{frequencies:[261.6255653006,268.69652652494,276.16031892841,292.40504357126,310.68035879446,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"W. Burt's 19diatsub #9"},burt_fibo:{frequencies:[261.6255653006,277.97716313189,294.32876096318,311.70233365892,327.03195662575,343.38355445704,363.82305174615,385.28452389971,392.4383479509,425.14154361347,449.66894036041,476.24028683625,523.2511306012],description:'Warren Burt, 3/2+5/3+8/5+etc. "Recurrent Sequences", 2002'},burt_fibo23:{frequencies:[261.6255653006,267.05480676802,277.97716313189,282.81557538079,294.32876096318,299.5065008038,311.70233365892,327.03195662575,330.09788121912,343.38355445704,349.5792770728,363.82305174615,370.21039464899,385.28452389971,392.4383479509,408.02346463385,425.14154361347,432.10374737758,449.66894036041,457.60521391719,476.24028683625,484.61169812829,504.34459560877,523.2511306012],description:'Warren Burt, 23-tone Fibonacci scale. "Recurrent Sequences", 2002'},burt_primes:{frequencies:[261.6255653006,267.75741448733,273.88926367407,277.97716313189,280.0211128608,284.10901231862,290.24086150535,298.416660421,302.50455987882,304.54850960773,308.63640906555,310.68035879446,320.90010743902,322.94405716793,327.03195662575,333.16380581248,335.20775554139,339.29565499922,341.33960472813,351.55935337268,353.60330310159,359.73515228832,363.82305174615,365.86700147506,369.95490093288,376.08675011961,384.26254903526,390.39439822199,392.4383479509,394.48229767981,396.52624740872,402.65809659545,406.74599605328,412.87784524001,421.05364415565,425.14154361347,431.27339280021,433.31734252912,437.40524198694,445.58104090258,455.80078954714,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,519.16323114338,523.2511306012],description:'Warren Burt, primes until 251. "Some Numbers", Dec. 2002'},bushmen:{frequencies:[261.6255653006,347.0163224393,394.26624244126,453.9405988926,523.2511306012],description:"Observed scale of South-African bushmen, almost (4 notes) equal pentatonic"},dan_semantic:{frequencies:[261.6255653006,272.52663052146,275.62199471997,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,397.34382730029,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:'The Semantic Scale, from Alain Dani\xEF\xBF\xBDlou: "S\xEF\xBF\xBDmantique Musicale" (1967)'},danielou5_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.62199471997,279.06726965397,282.55561052465,285.76488412567,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division in 5-limit, symmetrized"},danielou_53:{frequencies:[261.6255653006,264.89588486686,267.43946675172,272.52663052146,275.62199471997,279.06726965397,282.55561052465,287.78812183066,290.69507255622,294.32876096318,297.67175429757,301.87565226992,306.59245933664,310.07474405997,313.95067836072,318.93402246168,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.64686971777,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division of the Octave, see p. 153"},darreg:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"This set of 19 ratios in 5-limit JI is for his megalyra family"},darreg_ennea:{frequencies:[261.6255653006,269.29177952703,277.18263097687,293.66476791741,349.22823143301,391.99543598175,403.48177901006,415.30469757995,440,523.2511306012],description:"Ivor Darreg's Mixed Enneatonic, a mixture of chromatic and enharmonic"},darreg_genus:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,523.2511306012],description:"Ivor Darreg's Mixed JI Genus (Archytas Enh, Ptolemy Soft Chrom, Didymos Chrom"},darreg_genus2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,348.83408706747,392.4383479509,406.97310157871,418.60090448096,441.49314144476,523.2511306012],description:"Darreg's Mixed JI Genus 2 (Archytas Enharmonic and Chromatic Genera)"},david11:{frequencies:[261.6255653006,269.80136421624,274.70684356563,285.40970760065,294.32876096318,305.22982618403,314.76825825228,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,374.60024122586,392.4383479509,406.97310157871,419.69101100305,428.11456140098,441.49314144476,457.84473927605,479.64686971777,490.54793493862,499.46698830115,523.2511306012],description:"11-limit system from Gary David, 1967"},david7:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,488.36772189445,523.2511306012],description:"Gary David's Constant Structure, 1967. A mode of Fokker's 7-limit scale"},ddimlim1:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"First 27/25&2048/1875 scale"},de_caus:{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"De Caus (a mode of Ellis's duodene) (1615)"},degung1:{frequencies:[261.6255653006,286.1303811777,319.28416942365,390.63652710512,420.90734643474,523.2511306012],description:"Gamelan Degung, Kabupaten Sukabumi. 1/1=363 Hz"},degung2:{frequencies:[261.6255653006,276.67939184371,325.99375993805,390.36201910543,415.27879033283,523.2511306012],description:"Gamelan Degung, Kabupaten Bandung. 1/1=252 Hz"},degung3:{frequencies:[261.6255653006,282.83850205216,320.55017368416,393.28023705203,426.95140008307,523.2511306012],description:"Gamelan Degung, Kabupaten Sumedang. 1/1=388.5 Hz"},degung4:{frequencies:[261.6255653006,284.6485709981,319.18312009646,379.88037698982,415.46137490477,523.2511306012],description:"Gamelan Degung, Kasepuhan Cheribon. 1/1=250 Hz"},degung5:{frequencies:[261.6255653006,284.24274449773,317.86283634652,388.77066331187,430.33748813761,523.2511306012],description:"Gamelan Degung, Kanoman Cheribon. 1/1=428 Hz"},degung6:{frequencies:[261.6255653006,273.29426590363,298.47415715355,379.54129348313,409.02013274169,523.2511306012],description:"Gamelan Degung, Kacherbonan Cheribon. 1/1=426 Hz"},dekany:{frequencies:[261.6255653006,299.7792935736,305.22982618403,327.03195662575,359.73515228832,381.53728273004,419.69101100305,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"2)5 Dekany 1.3.5.7.11 (1.3 tonic)"},dekany2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,348.83408706747,358.80077526939,398.6675280771,418.60090448096,448.50096908674,465.11211608996,523.2511306012],description:"3)5 Dekany 1.3.5.7.9 (1.3.5.7.9 tonic)"},dekany3:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"2)5 Dekany 1.3.5.7.9 and 3)5 Dekany 1 1/3 1/5 1/7 1/9"},dekany4:{frequencies:[261.6255653006,270.96933548991,288.48890459486,310.68035879446,321.77608589426,355.06326719367,425.14154361347,440.3251701711,474.19633710734,485.87604984397,523.2511306012],description:"2)5 Dekany 1.7.13.19.29 (1.7 tonic)"},dekany_union:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,381.53728273004,392.4383479509,412.06026534844,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Union of 2)5 and 3)5 [ 1 3 5 7 9] dekanies"},dent:{frequencies:[261.6255653006,276.73939277812,293.41671964988,311.13637945111,328.33487278761,349.18153137729,368.9858570375,391.91718148616,414.84850593482,438.82216331296,465.92281947955,491.98114271667,523.2511306012],description:"Tom Dent, well temperament with A=421 Hz. Integer Hz beat rates from A"},dent2:{frequencies:[261.6255653006,276.57667301797,293.18838124587,310.79781949647,328.55897053596,349.10502918563,369.05532299592,391.67735584266,414.54302837239,438.92977277749,465.83490899549,492.45596147139,523.2511306012],description:"Tom Dent, well-temperament, 2/32 and 5/32 comma. TL 3 & 5-9-2005"},dent3:{frequencies:[261.6255653006,276.38325105256,293.15632631094,310.94732162256,328.48713220126,349.22823143301,368.7143392539,391.76907592069,414.58565256441,438.73106346722,466.16376151809,492.17459484008,523.2511306012],description:'Tom Dent, Bach harpsichord "sine wave" temperament, TL 10-10-2005'},deporcy:{frequencies:[261.6255653006,272.52663052146,286.15296204753,299.00064605783,313.95067836072,327.03195662575,348.83408706747,358.80077526939,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,478.40103369253,502.32108537715,523.2511306012],description:"A 15-note chord-based detempering of 7-limit porcupine"},diab19_612:{frequencies:[261.6255653006,267.01398215014,280.33982809972,299.03492334906,305.19382000629,313.95883772326,320.42510414137,327.02455105776,348.83292260574,366.24210002542,373.7851897098,392.43965797471,418.61038382265,427.23204601759,436.03127668087,448.5538823653,457.79225819026,488.32116993744,512.69177642068,523.2511306012],description:"diab19a in 612-tET"},diab19_72:{frequencies:[261.6255653006,266.71173418545,279.86396690685,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,349.22823143301,366.44956000397,373.57357677338,391.99543598175,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,489.15147723638,513.27277840175,523.2511306012],description:"diab19a in 72-tET"},diablack:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,331.11985608357,372.08969287196,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Unique 256/245&2048/2025 Fokker block"},diachrome1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"First 25/24&2048/2025 scale"},diacycle13:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,360.86284869048,373.75080757229,387.59343007496,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"Diacycle on 20/13, 13/10; there are also nodes at 3/2, 4/3; 13/9, 18/13"},diaddim1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,334.88072358477,344.91651675372,357.20610515709,367.91095120397,392.4383479509,418.60090448096,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 2048/2025&2048/1875 scale"},dialim1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,353.19451315581,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 27/25&2048/2025 scale"},diamisty:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,436.53496651643,470.39487098876,496.11959049595,523.2511306012],description:"Diamisty scale 2048/2025 and 67108864/66430125"},diamond11a:{frequencies:[261.6255653006,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,523.2511306012],description:"11-limit Diamond with added 16/15 & 15/8, Zoomoozophone tuning: 1/1 = 392 Hz"},diamond11ak:{frequencies:[261.6255653006,279.72330032405,285.63317938628,287.78812183066,290.69507255622,293.86839138568,299.07491977616,305.39295512204,314.19649759716,319.76457981184,326.52043447049,333.41680553884,335.93301933283,349.10721912206,359.17247822875,366.75848641051,373.2589099097,381.14243472333,392.13131479202,407.50942884268,410.58480125643,419.25667855894,428.11456140098,435.70146034294,448.26139746089,457.73103588952,465.84075338014,470.92601754108,475.68284600109,479.27160679251,489.39746055879,523.2511306012],description:"microtempered version of diamond11a, Dave Keenan TL 11-1-2000, 225/224&385/384"},diamond11at:{frequencies:[261.6255653006,279.83704120119,285.33574350137,287.98268367985,290.84948650387,293.82121114493,299.2738827313,305.22380787491,314.19079532693,320.23980272009,326.48518221507,332.71524733285,336.02719554531,349.1122100506,359.53680125564,366.52331521885,373.4984028396,380.75621844446,392.12570885984,407.39521875769,411.45055399509,419.30194782174,427.47925671618,435.70936791853,448.50981249085,457.42672761267,465.91555560021,470.67599975252,475.36147343465,479.7712027167,489.19854301666,523.2511306012],description:"microtempered version of diamond11a, OdC"},diamond11map:{frequencies:[195.99771799087,228.66400432268,261.33029065449,293.99657698631,326.66286331812,359.32914964993,391.99543598174,457.32800864536,522.66058130899,587.99315397261,653.32572663623,718.65829929986,213.81569235368,249.45164107929,285.0875898049,320.72353853051,356.35948725613,391.99543598174,427.63138470735,498.90328215858,570.1751796098,641.44707706103,712.71897451225,783.99087196348,235.19726158904,274.39680518722,313.59634878539,352.79589238357,391.99543598174,431.19497957991,470.39452317809,548.79361037444,627.19269757078,705.59178476713,783.99087196348,862.38995915983,261.33029065449,304.88533909691,348.44038753932,391.99543598174,435.55048442416,479.10553286657,522.66058130899,609.77067819382,696.88077507865,783.99087196348,871.10096884831,958.21106573314,293.99657698631,342.99600648402,391.99543598174,440.99486547946,489.99429497718,538.99372447489,587.99315397261,685.99201296804,783.99087196348,881.98973095892,979.98858995435,1077.98744894978,335.99608798435,391.99543598174,447.99478397913,503.99413197652,559.99347997391,615.99282797131,671.9921759687,783.99087196348,895.98956795826,1007.98826395305,1119.98695994783,1231.98565594261,783.99087196348],description:"11-limit diamond on a 'centreless' map"},diamond15:{frequencies:[261.6255653006,269.80136421624,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,310.07474405997,313.95067836072,318.85615771011,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,343.38355445704,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,367.91095120397,372.08969287196,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,398.6675280771,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,429.33426100611,436.04260883433,441.49314144476,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,507.3950357345,523.2511306012],description:"15-limit Diamond + 2nd ratios. See Novaro, 1927, Sistema Natural..."},diamond17:{frequencies:[261.6255653006,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,523.2511306012],description:"17-limit Diamond"},diamond17a:{frequencies:[261.6255653006,277.01530443593,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,494.18162334558,523.2511306012],description:"17-limit, +9 Diamond"},diamond19:{frequencies:[261.6255653006,275.39533189537,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,292.40504357126,299.00064605783,302.93486508491,305.22982618403,307.79478270659,309.19384990071,310.68035879446,313.95067836072,317.68818643644,322.00069575458,327.03195662575,330.47439827444,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,355.06326719367,358.01393146398,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,382.37582620857,385.55346465352,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,414.24047839262,418.60090448096,425.14154361347,430.91269578922,436.04260883433,440.63253103259,442.75095666255,444.76346101102,448.50096908674,451.89870370104,457.84473927605,468.17206422213,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,497.08857407114,523.2511306012],description:"19-limit Diamond"},diamond7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"7-limit Diamond, also double-tie circular mirroring of 4:5:6:7"},diamond9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"9-limit Diamond"},diamond_chess:{frequencies:[261.6255653006,299.00064605783,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,457.84473927605,523.2511306012],description:"9-limit chessboard pattern diamond. OdC"},diamond_chess11:{frequencies:[261.6255653006,287.78812183066,299.00064605783,313.95067836072,319.76457981184,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,428.11456140098,436.04260883433,457.84473927605,475.68284600109,523.2511306012],description:"11-limit chessboard pattern diamond. OdC"},diamond_dup:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Two 7-limit diamonds 3/2 apart"},diamond_mod:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"13-tone Octave Modular Diamond, based on Archytas's Enharmonic"},diamond_tetr:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,523.2511306012],description:"Tetrachord Modular Diamond based on Archytas's Enharmonic"},diaphonic_10:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"10-tone Diaphonic Cycle"},diaphonic_12:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Diaphonic Cycle, conjunctive form on 3/2 and 4/3"},diaphonic_12a:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,488.36772189445,523.2511306012],description:"2nd 12-tone Diaphonic Cycle, conjunctive form on 10/7 and 7/5"},diaphonic_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"D5-tone Diaphonic Cycle"},diaphonic_7:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"7-tone Diaphonic Cycle, disjunctive form on 4/3 and 3/2"},diaschismic:{frequencies:[261.6255653006,266.61097723855,278.05603152599,283.35453458855,295.51835494038,301.14961170579,314.07733767684,320.06224556188,333.80185153667,340.16262034629,354.76509561975,369.99442271164,377.04485988831,393.23061088369,400.72382577504,417.92606548687,425.88986517773,444.17243057662,452.63636847719,472.06710558841,481.06259110609,501.71360968203,523.2511306012],description:"diaschismic temperament, g=105.446531, p=600, 5-limit"},diat13:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012],description:"This genus is from K.S's diatonic Hypodorian harmonia"},diat15:{frequencies:[261.6255653006,301.87565226992,327.03195662575,356.76213450082,373.75080757229,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Tonos-15 Diatonic and its own trite synemmenon Bb"},diat15_inv:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,366.27579142084,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"Inverted Tonos-15 Harmonia, a harmonic series from 15 from 30."},diat17:{frequencies:[261.6255653006,296.50897400735,342.12573923925,370.63621750918,386.75083566176,404.33041910093,444.76346101102,494.18162334558,523.2511306012],description:"Tonos-17 Diatonic and its own trite synemmenon Bb"},diat19:{frequencies:[261.6255653006,276.16031892841,310.68035879446,355.06326719367,368.21375857121,382.37582620857,414.24047839262,451.89870370104,523.2511306012],description:"Tonos-19 Diatonic and its own trite synemmenon Bb"},diat21:{frequencies:[261.6255653006,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Tonos-21 Diatonic and its own trite synemmenon Bb"},diat21_inv:{frequencies:[261.6255653006,299.00064605783,323.91736656265,348.83408706747,373.75080757229,398.6675280771,448.50096908674,473.41768959156,523.2511306012],description:"Inverted Tonos-21 Harmonia, a harmonic series from 21 from 42."},diat23:{frequencies:[261.6255653006,286.54228580542,300.86940009569,334.29933343966,353.96400011258,376.08675011961,429.81342870813,462.87600014722,523.2511306012],description:"Tonos-23 Diatonic and its own trite synemmenon Bb"},diat25:{frequencies:[261.6255653006,297.30177875068,327.03195662575,363.36884069528,384.74347838324,408.78994578219,467.18850946536,503.12608711654,523.2511306012],description:"Tonos-25 Diatonic and its own trite synemmenon Bb"},diat27:{frequencies:[261.6255653006,294.32876096318,336.37572681506,353.19451315581,371.78369805875,392.4383479509,441.49314144476,504.56359022259,523.2511306012],description:"Tonos-27 Diatonic and its own trite synemmenon Bb"},diat27_inv:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,377.90359432309,387.59343007496,406.97310157871,465.11211608996,523.2511306012],description:"Inverted Tonos-27 Harmonia, a harmonic series from 27 from 54"},diat29:{frequencies:[261.6255653006,291.81313052759,316.13089140489,344.87006335079,361.29244731988,379.35706968587,421.50785520652,474.19633710734,523.2511306012],description:"Tonos-29 Diatonic and its own trite synemmenon Bb"},diat31:{frequencies:[261.6255653006,289.65687586852,311.93817401225,337.93302184661,352.6257619269,368.65420565085,405.51962621593,450.57736246214,523.2511306012],description:"Tonos-31 Diatonic. The disjunctive and conjunctive diatonic forms are the same"},diat33:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,375.37581108347,392.4383479509,431.68218274599,479.64686971777,523.2511306012],description:"Tonos-33 Diatonic. The conjunctive form is 23 (Bb instead of B) 20 18 33/2"},diat_chrom:{frequencies:[261.6255653006,280.31310567921,301.87565226992,348.83408706747,392.4383479509,420.46965851882,452.81347840488,523.2511306012],description:"Diatonic- Chromatic, on the border between the chromatic and diatonic genera"},diat_dies2:{frequencies:[261.6255653006,266.71168334607,311.12698372208,349.22823143301,391.99543598175,399.61600264311,466.16376151809,523.2511306012],description:"Dorian Diatonic, 2 part Diesis"},diat_dies5:{frequencies:[261.6255653006,274.52693220706,311.12698372208,349.22823143301,391.99543598175,411.32564531909,466.16376151809,523.2511306012],description:"Dorian Diatonic, 5 part Diesis"},diat_enh:{frequencies:[261.6255653006,269.29177952703,311.12698372208,349.22823143301,391.99543598175,403.48177901006,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode"},diat_enh2:{frequencies:[261.6255653006,269.29177952703,302.26980244078,349.22823143301,391.99543598175,403.48177901006,452.89298412314,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode 3 + 12 + 15 parts"},diat_enh3:{frequencies:[261.6255653006,302.26980244078,311.12698372208,349.22823143301,391.99543598175,452.89298412314,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 3 + 12 parts"},diat_enh4:{frequencies:[261.6255653006,302.26980244078,339.28638158975,349.22823143301,391.99543598175,452.89298412314,508.3551866238,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 12 + 3 parts"},diat_enh5:{frequencies:[261.6255653006,293.66476791741,339.28638158975,349.22823143301,391.99543598175,440,508.3551866238,523.2511306012],description:"Dorian Mode, 12 + 15 + 3 parts"},diat_enh6:{frequencies:[261.6255653006,293.66476791741,302.26980244078,349.22823143301,391.99543598175,440,452.89298412314,523.2511306012],description:"Dorian Mode, 12 + 3 + 15 parts"},diat_eq:{frequencies:[261.6255653006,288.06466200271,317.1754314895,349.22823143301,391.99543598175,431.60932167676,475.22619361214,523.2511306012],description:"Equal Diatonic, Islamic form, similar to 11/10 x 11/10 x 400/363"},diat_eq2:{frequencies:[261.6255653006,287.78812183066,317.12189733406,348.83408706747,392.4383479509,431.68218274599,475.68284600109,523.2511306012],description:"Equal Diatonic, 11/10 x 400/363 x 11/10"},diat_gold:{frequencies:[261.6255653006,292.38332274669,326.75708630452,349.99258496952,391.13935185123,437.1232727958,488.51296691354,523.2511306012],description:"Diatonic scale with ratio between whole and half tone the Golden Section"},diat_hemchrom:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"Diat. + Hem. Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_smal:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:'"Smallest number" diatonic scale'},diat_sofchrom:{frequencies:[261.6255653006,271.8968348557,311.12698372208,349.22823143301,391.99543598175,407.38495184466,466.16376151809,523.2511306012],description:"Diat. + Soft Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_soft:{frequencies:[261.6255653006,274.52693220706,302.26980244078,349.22823143301,391.99543598175,411.32564531909,452.89298412314,523.2511306012],description:"Soft Diatonic genus 5 + 10 + 15 parts"},diat_soft2:{frequencies:[261.6255653006,281.2143451833,302.26980244078,349.22823143301,391.99543598175,421.34544350737,452.89298412314,523.2511306012],description:"Soft Diatonic genus with equally divided Pyknon; Dorian Mode"},diat_soft3:{frequencies:[261.6255653006,281.2143451833,324.90175210669,349.22823143301,391.99543598175,421.34544350737,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},diat_soft4:{frequencies:[261.6255653006,302.26980244078,324.90175210669,349.22823143301,391.99543598175,452.89298412314,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},dicot:{frequencies:[261.6255653006,270.35822989652,294.32876096318,320.42456924675,331.11985608357,360.47764004221,392.4383479509,405.53734464206,441.49314144476,480.63685362987,523.2511306012],description:"Dicot temperament, g=350.9775, 5-limit"},didy_chrom:{frequencies:[261.6255653006,279.06726965397,290.69507255622,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Didymus Chromatic"},didy_chrom1:{frequencies:[261.6255653006,279.06726965397,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Permuted Didymus Chromatic"},didy_chrom2:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,470.92601754108,490.54793493862,523.2511306012],description:"Didymos's Chromatic, 6/5 x 25/24 x 16/15"},didy_chrom3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,392.4383479509,408.78994578219,436.04260883433,523.2511306012],description:"Didymos's Chromatic, 25/24 x 16/15 x 6/5"},didy_diat:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,418.60090448096,465.11211608996,523.2511306012],description:"Didymus Diatonic"},didy_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Inverse Didymus Diatonic, variant of Ptolemy with 2 identical triads"},didy_enh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Dorian mode of Didymos's Enharmonic"},didy_enh2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,348.83408706747,392.4383479509,413.43299207996,418.60090448096,523.2511306012],description:"Permuted Didymus Enharmonic"},"diesic-m":{frequencies:[261.6255653006,289.62525622617,320.62153003931,354.93508703008,392.92094947462,434.97213484265,481.52372211906,523.2511306012],description:"Minimal Diesic temperament, g=176.021, 5-limit"},"diesic-t":{frequencies:[261.6255653006,272.92239980638,281.87304203955,294.04415210774,303.68749398125,316.80053726141,327.19018747082,337.92057205022,352.51178108166,364.07260143821,379.79303732838,392.24856169057,409.18561859271,422.60509148244,436.46466102477,455.31094249407,470.24311865111,490.54793493862,506.63572944675,523.2511306012],description:"Tiny Diesic temperament, g=443.017, 5-limit"},diff31_72:{frequencies:[261.6255653006,269.29177952703,274.52698453615,279.86396690685,285.30470202322,293.66476791741,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,336.03572815422,342.56848033562,352.60650301302,356.01745236555,366.44956000397,373.57357677338,384.52011812375,388.23978476841,399.61607881612,407.38487419079,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,508.3551866238,523.2511306012],description:"Diff31, 11/9, 4/3, 7/5, 3/2, 7/4, 9/5 difference diamond, tempered to 72-et"},dimteta:{frequencies:[261.6255653006,282.55561052465,307.12566361375,336.37572681506,406.97310157871,439.53094970501,477.75103228805,523.2511306012],description:"A heptatonic form on the 9/7"},dimtetb:{frequencies:[261.6255653006,294.32876096318,336.37572681506,406.97310157871,457.84473927605,523.2511306012],description:"A pentatonic form on the 9/7"},div_fifth1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #1, From Schlesinger, see Chapter 8, p. 160"},div_fifth2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #2, From Schlesinger, see Chapter 8, p. 160"},div_fifth3:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #3, From Schlesinger, see Chapter 8, p. 160"},div_fifth4:{frequencies:[261.6255653006,274.70684356563,305.22982618403,343.38355445704,392.4383479509,523.2511306012],description:"Divided Fifth #4, From Schlesinger, see Chapter 8, p. 160"},div_fifth5:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,523.2511306012],description:"Divided Fifth #5, From Schlesinger, see Chapter 8, p. 160"},dkring1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,320.49131749323,327.03195662575,366.27579142084,392.4383479509,439.53094970501,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 4:5:6:7"},dkring2:{frequencies:[261.6255653006,274.70684356563,305.22982618403,329.64821227876,336.37572681506,353.19451315581,366.27579142084,392.4383479509,406.97310157871,427.32175665765,436.04260883433,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 3:5:7:9"},dkring3:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,348.83408706747,384.42940207435,392.4383479509,398.6675280771,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"Double-tie circular mirroring of 6:7:8:9"},dkring4:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,327.03195662575,336.37572681506,367.91095120397,373.75080757229,378.42269266694,420.46965851882,467.18850946536,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 7:8:9:10"},dodeceny:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Degenerate eikosany 3)6 from 1.3.5.9.15.45 tonic 1.3.15"},dorian_chrom:{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,315.92521092903,322.00069575458,348.83408706747,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,620.14948811994,631.85042185805,644.00139150917,697.66817413493,761.09255360175,797.33505615421,816.78225264578,837.20180896192,930.22423217991,1046.5022612024],description:"Dorian Chromatic Tonos"},dorian_chrom2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the chromatic genus"},dorian_chrominv:{frequencies:[261.6255653006,273.00058987889,285.40970760065,332.97799220076,380.54627680087,404.33041910093,428.11456140098,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Dorian inverted"},dorian_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,669.76144716954,697.66817413493,728.00157301037,761.09255360175,837.20180896192,881.26506206518,930.22423217991,984.94330466108,1046.5022612024],description:"Dorian Diatonic Tonos"},dorian_diat2:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,442.75095666255,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Harmonia, a subharmonic series through 13 from 22"},dorian_diat2inv:{frequencies:[261.6255653006,285.40970760065,309.19384990071,332.97799220076,356.76213450082,380.54627680087,428.11456140098,475.68284600109,523.2511306012],description:"Inverted Schlesinger's Dorian Harmonia, a harmonic series from 11 from 22"},dorian_diatcon:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,479.64686971777,523.2511306012],description:"A Dorian Diatonic with its own trite synemmenon replacing paramese"},dorian_diatred11:{frequencies:[261.6255653006,287.78812183066,316.56693401373,348.83408706747,392.4383479509,431.68218274599,474.85040102059,523.2511306012],description:"Dorian mode of a diatonic genus with reduplicated 11/10"},dorian_enh:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,310.07474405997,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012,558.13453930795,598.00129211566,608.8740428814,614.4600432748,620.14948811994,697.66817413493,761.09255360175,778.79238042969,787.95464372887,797.33505615421,930.22423217991,1046.5022612024],description:"Dorian Enharmonic Tonos"},dorian_enh2:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the enharmonic genus"},dorian_enhinv:{frequencies:[261.6255653006,267.19206668997,273.00058987889,332.97799220076,380.54627680087,392.4383479509,404.33041910093,523.2511306012],description:"A harmonic form of Schlesinger's Dorian enharmonic inverted"},dorian_pent:{frequencies:[261.6255653006,271.49822814213,287.78812183066,359.73515228832,411.12588832951,423.21782622156,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the pentachromatic genus"},dorian_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the Dorian Tonos, a non-rep. 16 tone gamut"},dorian_schl:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Piano Tuning (Sub 22)"},dorian_tri1:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,411.12588832951,421.15334902048,431.68218274599,523.2511306012],description:"Schlesinger's Dorian Harmonia in the first trichromatic genus"},dorian_tri2:{frequencies:[261.6255653006,269.80136421624,287.78812183066,359.73515228832,411.12588832951,421.15334902048,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the second trichromatic genus"},douwes:{frequencies:[261.6255653006,273.00058987889,292.50063201309,313.39353429974,327.01933943691,350.37786403433,365.61168556196,391.72680409,408.75840577964,436.81779569448,468.01906681552,488.36772189445,523.2511306012],description:"Claas Douwes recommendation of 24/23 and 15/14 steps for clavichord (1699)"},dow_high:{frequencies:[261.6255653006,277.01530443593,278.50463402967,294.32876096318,308.34441624714,313.31771328338,327.34193952303,331.11985608357,346.88746827803,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707],description:"Highest octave of Dowlands lute tuning, strings 5,6. 1/1=G (1610)"},dow_lmh:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012,548.16785110602,557.00926805934,581.94122581871,588.65752192635,616.68883249427,620.14948811994,626.63542656676,656.62886977405,662.23971216714,693.77493655606,697.66817413493,736.51936392681,742.67902407912,784.8766959018,822.25177665903,831.04591330779,835.51390208901,882.98628288953,925.03324874141,939.95313985014,982.02581856908,993.35956825072,1040.66240483408,1046.5022612024,1108.06121774372,1114.01853611868,1177.3150438527,1233.37766498854,1253.27085313352,1309.3677580921,1324.47942433429,1387.54987311211,1395.33634826987,1477.41495699162,1569.7533918036,1671.02780417803,1765.97256577905,1850.06649748281],description:"All three octaves of Dowland's lute tuning"},dow_low:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012],description:"Lowest octave of Dowlands lute tuning, strings 1,2,3. 1/1=G. (1610)"},dow_middle:{frequencies:[261.6255653006,274.08392555301,278.50463402967,290.97061290936,294.32876096318,308.34441624714,310.07474405997,313.31771328338,328.31443488703,331.11985608357,346.88746827803,348.83408706747,368.2596819634,371.33951203956,392.4383479509,411.12588832951,415.52295665389,417.75695104451,441.49314144476,462.5166243707,469.97656992507,491.01290928454,496.67978412536,520.33120241704,523.2511306012],description:"Middle octave of Dowlands lute tuning, strings 3,4,5. 1/1=G (1610)"},dowland_12:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707,492.47165233054,523.2511306012],description:"subset of Dowland's lute tuning, lowest octave"},druri:{frequencies:[261.6255653006,285.79952600623,326.97270111135,357.18467683857,523.2511306012],description:"Scale of druri dana of Siwoli, south Nias, Jaap Kunst"},dudon_a:{frequencies:[261.6255653006,285.85015468029,319.76457981184,348.83408706747,392.4383479509,428.77523202043,479.64686971777,523.2511306012],description:"Dudon Tetrachord A"},dudon_b:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,482.37213602298,523.2511306012],description:"Dudon Tetrachord B"},dudon_c12:{frequencies:[261.6255653006,302.50455987882,327.03195662575,343.38355445704,392.4383479509,425.14154361347,474.19633710734,523.2511306012],description:"Differentially coherent scale in interval class 1 and 2"},dudon_diat:{frequencies:[261.6255653006,294.32876096318,321.08592105074,350.8160989258,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Dudon Neutral Diatonic"},dudon_moha_baya:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Mohajira + Bayati (Dudon) 3 + 4 + 3 Mohajira and 3 + 3 + 4 Bayati tetrachords"},dudon_mohajira:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Dudon's Mohajira, two 3 + 4 + 3 tetrachords, neutral diatonic"},dudon_mohajira_r:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"Jacques Dudon, JI Mohajira, Lumi\xEF\xBF\xBDres audibles"},dudon_thai:{frequencies:[261.6255653006,288.26147859917,317.63518509943,350.43752981487,386.47021463976,426.17461277719,469.97930400405,523.2511306012],description:"Dudon, coherent Thai heptatonic scale, 1/1 vol. 11/2, 2003"},dudon_thai2:{frequencies:[261.6255653006,288.02814528506,314.43072526953,347.1339209321,383.13743909274,422.44127975143,475.35895071461,523.2511306012],description:"Slightly better version, 3.685 cents deviation"},dudon_thai3:{frequencies:[261.6255653006,291.60349465796,321.58142401532,354.2846196779,394.48229767981,434.67997568173,478.96555314146,523.2511306012],description:"Dudon, Thai scale with two 704/703 = 2.46 c. deviations and simpler numbers"},duncan:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Dudley Duncan's Superparticular Scale"},duoden12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Almost equal 12-tone subset of Duodenarium"},duodenarium:{frequencies:[14.56761754744,14.73307690724,14.74971276678,14.91724036858,14.98726085128,15.00418372272,15.10370587319,15.17460161192,15.19173601925,15.34695511171,15.36428413207,15.5387920506,15.55633768372,15.71528203439,15.73302695124,15.80687667908,15.91172305982,15.92968978813,16.00446263757,16.18624171938,16.20451842054,16.38856974087,16.57471152064,16.59342686263,16.78189541465,16.86066845769,16.87970668806,16.99166910733,17.07142681341,17.26532450067,17.28481964857,17.48114105693,17.67969228869,17.69965532014,17.78273626396,17.90068844229,17.98471302153,18.00502046726,18.2095219343,18.41634613405,18.43714095848,18.64655046072,18.73407606409,18.85833844126,18.87963234148,18.9682520149,18.98967002407,19.18369388963,19.20535516508,19.42349006325,19.44542210465,19.64410254298,19.66628368904,19.88965382477,19.91211223516,20.00557829696,20.13827449758,20.23280214922,20.25564802567,20.48571217609,20.7183894008,20.74178357829,20.97736926831,21.07583557211,21.21563074642,21.23958638417,21.33928351676,21.58165562584,21.60602456072,21.85142632116,22.09961536086,22.12456915017,22.37586055287,22.48089127691,22.50627558408,22.65555880978,22.76190241787,23.02043266756,23.0464261981,23.3081880759,23.57292305158,23.59954042685,23.71031501862,23.86758458973,23.97961736204,24.00669395635,24.27936257907,24.30677763081,24.55512817873,24.5828546113,24.86206728096,24.89014029395,25.14445125502,25.17284312198,25.29100268653,25.31956003209,25.487503661,25.60714022011,25.897986751,25.92722947286,26.22171158539,26.51953843303,26.54948298021,26.67410439595,26.85103266344,26.9770695323,27.0075307009,27.31428290145,27.62451920107,27.65571143772,27.96982569108,28.10111409614,28.2875076619,28.31944851222,28.45237802234,28.77554083445,28.80803274762,29.13523509488],description:"Ellis's Duodenarium : genus [3^12 5^8]"},duodene:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Duodene : genus [33355]"},"duodene14-18-21":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"14-18-21 Duodene"},"duodene3-11_9":{frequencies:[261.6255653006,285.40970760065,294.32876096318,319.76457981184,321.08592105074,348.83408706747,359.73515228832,392.4383479509,426.35277308246,428.11456140098,479.64686971777,481.6288815761,523.2511306012],description:"3-11/9 Duodene"},"duodene3-7":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"3-7 Duodene"},"duodene6-7-9":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"6-7-9 Duodene"},duodene_min:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Minor Duodene"},"duodene_r-45":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,353.19451315581,376.74081403286,401.85686830172,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated -45 degrees"},duodene_r45:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,313.95067836072,334.88072358477,383.2405741708,408.78994578219,436.04260883433,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 45 degrees"},duodene_r90:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 90 degrees: genus [33555]"},duodene_skew:{frequencies:[261.6255653006,282.55561052465,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rotated 6/5x3/2 duodene"},duodene_t:{frequencies:[261.6255653006,279.3825857701,293.66476791741,313.59634948548,327.03195662575,349.22823143301,367.08095907728,391.99543598175,418.60090448096,436.53528831673,469.86362971679,489.99429388332,523.2511306012],description:"Duodene with equal tempered fifths"},duowell:{frequencies:[261.6255653006,278.41172412276,294.03623226919,312.90189200955,327.96500300935,349.00756672938,368.59392213143,392.24328034087,417.4100028405,437.50413894442,469.11953885575,491.70297432358,523.2511306012],description:"Ellis duodene well-tuned to fifth=(7168/11)^(1/16) third=(11/7)^(1/2)"},dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},cairo:{frequencies:[261.6255653006,269.38381929633,276.03456984659,285.15047989166,293.63138642043,300.85736580106,309.799366845,312.20234522745,320.03127253896,327.93377450564,337.66851484331,348.83408706747,357.41197445437,367.9166999024,380.21445327801,392.4383479509,401.02017979859,414.62054722758,417.26565438692,427.77234352616,440.44707963064,451.93568025669,468.86302025197,480.04690880844,491.77737838459,510.98743222773,523.2511306012],description:"P.42, of d'Erlanger, vol.5. Congress of Arabic Music, Cairo, 1932"},canright:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:`David Canright's piano tuning for "Fibonacci Suite" (2001)`},carlos_alpha:{frequencies:[261.6255653006,273.68256372566,286.29520819723,299.48910562989,313.29104303136,327.729041887,342.83241505062,358.63182625716,375.1593523779,392.44854854484,410.5345162762,429.45397474154,449.24533531117,469.94877954106,491.60634075178,514.26198936695,537.96172218451,562.75365576207,588.68812410589],description:"Wendy Carlos' Alpha scale with perfect fifth divided in nine"},carlos_alpha2:{frequencies:[261.6255653006,267.58616452957,273.68256372566,279.91785681123,286.29520819723,292.81785438923,299.48910562989,306.31234757893,313.29104303136,320.42873367481,327.729041887,335.19567257401,342.83241505062,350.6431449633,358.63182625716,366.8025131876,375.1593523779,383.7065849236,392.44854854484,401.3896797878,410.5345162762,419.88769901416,429.45397474154,439.23819834286,449.24533531117,459.48046426806,469.94877954106,480.6555937997,491.60634075178,502.8065779009,514.26198936695,525.97838877075,537.96172218451,550.21807114943,562.75365576207,575.57483783111,588.68812410589],description:"Wendy Carlos' Alpha prime scale with perfect fifth divided by eightteen"},carlos_beta:{frequencies:[261.6255653006,271.44693432634,281.63699549204,292.20958942356,303.17907632096,314.56035546319,326.36888544505,338.62070517372,351.33245565363,364.52140258903,378.2054598351,392.40321372938,407.13394833666,422.41767164147,438.27514272393,454.72789995564,471.7982902542,489.50949943583,507.88558370741,526.95150234083,546.73315157381,567.25739978343,588.55212398003],description:"Wendy Carlos' Beta scale with perfect fifth divided by eleven"},carlos_beta2:{frequencies:[261.6255653006,266.49100855797,271.44693432634,276.49502530642,281.63699549204,286.87459075215,292.20958942356,297.64380291476,303.17907632096,308.81728905054,314.56035546319,320.41022551991,326.36888544505,332.43835840072,338.62070517372,344.91802487526,351.33245565363,357.86617542024,364.52140258903,371.30039682974,378.2054598351,385.23893610237,392.40321372938,399.70072522531,407.13394833666,414.70540688852,422.41767164147,430.27336116448,438.27514272393,446.42573318931,454.72789995564,463.18446188312,471.7982902542,480.57230974851,489.50949943583,498.61289378764,507.88558370741,517.33071758003,526.95150234083,536.75120456442,546.73315157381,556.90073257014,567.25739978343,577.80666964473,588.55212398003],description:"Wendy Carlos' Beta prime scale with perfect fifth divided by twentytwo"},carlos_gamma:{frequencies:[261.6255653006,266.98388983977,272.45195763676,278.03201633122,283.72635959645,289.53732808222,295.4673103769,301.51874398927,307.69411635045,313.99596583639,320.42688281121,326.98951069203,333.68654703547,340.52074464653,347.49491271011,354.6119179457,361.87468578579,369.2862015783,376.84951181374,384.56772537748,392.44401482761,400.48161769905,408.68383783428,417.05404674148,425.59568498025,434.31226357598,443.20736546293,452.28464695708,461.547839259,471.00074998758,480.64726474513,490.49134871455,500.53704828923,510.78849273629,521.24989589392,531.92555790347],description:"Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty"},carlos_harm:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'"},carlos_super:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Super Just"},carlson:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Brian Carlson's guitar scale (or 7 is 21/16 instead) fretted by Mark Rankin"},cassandra1:{frequencies:[261.6255653006,265.52313139125,271.43629763673,275.48001908354,279.58398024378,283.7490817683,290.06813927787,294.38942683035,298.7750924519,305.42877739024,309.97889991383,314.59680966486,319.28351286859,326.39391783308,331.25637026535,336.19125912653,343.67819754196,348.79814248043,353.99435973883,359.26798967332,367.26884406885,372.74022844163,378.29312490007,386.71766674112,392.47878977853,398.32574139651,407.19640716832,413.26261206104,419.41919061043,425.66748431192,435.14704737009,441.62964923022,448.20882304357,458.19037897128,465.01626879626,471.9438445688,478.97462660712,489.64133323501,496.93576068834,504.33885972365,515.57042175735,523.2511306012],description:"Cassandra temperament (Erv Wilson), 13-limit, g=497.866"},cassandra2:{frequencies:[261.6255653006,265.34593985135,270.18130909623,275.10479273152,279.0168449367,284.10133754875,289.27848429833,293.3920895946,298.7385406747,304.18241953205,309.72550158209,314.12986807617,319.85422136322,325.68288889698,330.31417303802,336.33345109576,342.46241778116,348.70307193775,353.66170827405,360.10644584283,366.66862514012,371.88273569526,378.65951299923,385.5597827545,392.58579535013,398.16845391153,405.42423290482,412.81223314336,418.68251621245,426.31212065787,434.08075852776,440.25348482514,448.27617460765,456.44506096456,464.76280801961,471.37183998139,479.96159605313,488.70788228454,495.65741860341,504.6897280454,513.8866322474,523.2511306012],description:"Cassandra temperament, schismic variant, 13-limit, g=497.395"},catler:{frequencies:[261.6255653006,269.80136421624,279.06726965397,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,322.00069575458,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,418.60090448096,425.14154361347,436.04260883433,441.49314144476,457.84473927605,465.11211608996,483.00104363188,490.54793493862,523.2511306012],description:'Catler 24-tone JI from "Over and Under the 13 Limit", 1/1 3(3)'},cbrat19:{frequencies:[261.6255653006,272.05448646742,281.65887246066,291.7164960911,303.76422848609,314.23522436032,325.78124145721,339.14379232251,350.05979530932,364.18597952318,377.95660802413,389.93691761381,406.2330981776,420.87727247778,436.65546295526,454.14747622901,467.92430113657,486.684954898,506.27371414348,523.2511306012],description:"brats = -1 -1 -1 -1 -1 -1 -1 -1 0 3/7 390808/591947 1/2 1/2 1/2 1/2 1/4 0 0 -1"},ceb88f:{frequencies:[261.6255653006,275.30280934529,289.60851057007,304.80308899558,320.69584574771,337.31885569235,354.97473368038,373.44187862432,393.05647479461,413.57234190108,435.03089105397,457.82276134277,481.66189358475,506.59641128799],description:"88 cents steps with equal beating fifths"},ceb88s:{frequencies:[261.6255653006,275.27750547448,289.60710371138,304.74878776577,320.64207659236,337.32428016541,354.95189689869,373.45451504132,392.8755714351,413.39725679488,434.93759942207,457.54716438978,481.43806014345,506.51485544552,533.01280425363],description:"88 cents steps with equal beating sevenths"},ceb88t:{frequencies:[261.6255653006,275.20384442973,289.60910777612,304.54100616185,320.3823320487,337.18847246966,354.60902163481,373.09056856306,392.69773188536,413.02170471677,434.58350960486,457.45853552679,481.16983689269,506.32527343025,533.01280425363],description:"88 cents steps with equal beating 7/6 thirds"},cet105:{frequencies:[261.6255653006,277.98437592617,295.36606150822,313.83458334354,333.45789502888,354.30820661869,376.46223533368,400.00150378562,425.01262301844,451.58762919357,479.82430313337,509.82655042708,541.70476218406,575.57624366132],description:"Equal temperament with very good 6/5 and 13/8"},cet105a:{frequencies:[261.6255653006,278.09098920184,295.59266404146,314.19580976213,333.96974580612,354.98815389674,377.32935907335,401.07660961589,426.31839262878,453.14877154631,481.66772230429,511.98151233648,544.20310589723,578.45256778249,614.85751848055,653.5536209391,694.68506540856,738.40511604959,784.8766959018],description:"18th root of 3"},cet111:{frequencies:[261.6255653006,279.02234237845,297.57591715819,317.3632108372,338.46625752841,360.97255206362,384.97540137331,410.57431878206,437.87543474729,466.99193686517,498.04453913461,531.16197935691,566.48156495049,604.14972437838,644.32262592407,687.16682227215,732.8599410185,781.59142109591,833.56329335333,888.99103711409,948.10444554232,1011.14859670036,1078.38486510237,1150.09200534594,1226.56730779978,1308.127826503],description:'25th root of 5, Karlheinz Stockhausen in "Studie II" (1954)'},cet111a:{frequencies:[261.6255653006,279.09119608948,297.72279782842,317.59821198502,338.80046946076,361.41815173468,385.54574794778,411.2840547398,438.74060487161,468.03009995854,499.27490936609,532.60556349815,568.16130614457,606.09068659426,646.55215742719,689.71476370538,735.75882016749,784.8766959018],description:"17th root of 3. McLaren 'Microtonal Music', volume 1, track 8"},cet112:{frequencies:[261.6255653006,279.13807488234,297.82282461384,317.75828292395,339.02816520012,361.72179601836,385.93447726538,411.76789245756,439.33052439618,468.73812456399,500.11419015728,533.59048802364,569.30759588159,607.4155105893,648.07426630787,691.45461344743,737.73872000797,787.12095980595,839.80871352279,896.02324851892,956.00062766807,1019.99273078287,1088.26829265547,1161.11404316696,1238.83588500259,1321.76021726874,1410.23528064063,1504.63263477595,1605.34868446028,1712.8063948195,1827.45703443292,1949.78208984359,2080.29524321777,2219.54459500735,2368.11492276755,2526.63016208001,2695.75596930795,2876.20260183901,3068.72784518,3274.14022786751,3493.30234242079,3727.13457771193,3976.61891204907,4242.80307922676,4526.8048719912,4829.81697864182,5153.11189830808,5498.04733953642,5866.07179694692,6258.73081875602,6677.6733762505,7124.65885956048,7601.56430418436,8110.3925243186],description:"53rd root of 31. McLaren 'Microtonal Music', volume 4, track 16"},cet114:{frequencies:[261.6255653006,279.47933554513,298.55147893584,318.92513586406,340.68912750315,363.93832870511,388.77409689134,415.30469757995,443.64579124771,473.92093172942,506.26209616971,540.81027939262,577.71608583803,617.1404103833,659.25511382574,704.24379572788,752.30258557703,803.64098403142,858.48280642307,917.06712239825,979.64933665453,1046.5022612024],description:"21st root of 4"},cet115:{frequencies:[261.6255653006,279.68949451567,299.00064605783,319.64513593742,341.71502406609,365.30872604057,390.53145607553,417.49568846357,446.32166408632,477.13792869952,510.08190181294],description:"2nd root of 8/7. Werner Linden, Musiktheorie, 2003 no.1 midi 15.Eb=19.44544 Hz"},cet117:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82340237272,513.27277840175,549.0539690723,587.32953583482,628.27336308449,672.07145630843,718.92279942609,769.0402362475,822.65144744826,880,941.34642612261,1006.96941915374,1077.1671181081,1152.25842837255,1232.58448551457,1318.51022765149,1410.42601205207,1508.74940691646,1613.92711604023,1726.4369576214,1846.79005749489,1975.53320502451,2113.25127526858,2260.56991361642,2418.15841952625,2586.73271138559,2767.05861265008,2959.95538169309],description:"72nd root of 128, step = generator of Miracle"},cet118:{frequencies:[261.6255653006,280.22072913446,300.13755324878,321.46997343155,344.3186075731,368.79121945838,395.0032340925,423.07827792492,453.14877154631,485.35654007358,519.85349135637,556.8023269521,596.37732215892,638.76512932755,684.16567043124,732.79307276157,784.8766959018],description:"16th root of 3. McLaren 'Microtonal Music', volume 1, track 7"},cet126:{frequencies:[261.6255653006,281.50639381697,302.89795903081,325.91506125677,350.68122444233,377.32935907335,406.00247545366,436.85445118639,470.05085697597,505.76984518255,544.20310589723,585.55689566922,630.05314440547,677.93064638327,729.44634176744,784.8766959018],description:"15th root of 3. McLaren 'Microtonal Music', volume 1, track 6"},cet126a:{frequencies:[261.6255653006,281.42815779395,302.72962012827,325.64340264099,350.29154279212,376.80531512858,405.32593044476,436.00528786292,469.00678383895,504.50618240233,542.69254813034,583.76926541313,627.95510352048,675.48539363125,726.61327927927,781.61106458091,840.77166451082,904.41016494992,972.86550081423,1046.5022612024],description:"19th root of 4"},cet133:{frequencies:[261.6255653006,282.54488373859,305.13688994853,329.53533037111,355.88464567857,384.34082587483,415.07233376839,448.26110228542,484.10361152681,522.81205194575,564.61558053174,609.76167743791,658.5176110828,711.17202040031],description:"13th root of e"},cet140:{frequencies:[261.6255653006,283.72172983292,307.68407293041,333.67021037701,361.85106232365,392.4119924075,425.55401329039,461.49511402661,500.47170241421,542.7401414615,588.57845795114,638.28815062634,692.19618110881,750.65713728047,814.05554253056,882.80839491877,957.36792629418,1038.22454144983,1125.91008648826,1221.00130775733,1324.12366033919,1435.95544645068,1557.23222387914,1688.75170820144,1831.3789571042],description:"24th root of 7"},cet141:{frequencies:[261.6255653006,283.85429714132,307.97166902637,334.13814720468,362.52783176564,393.32961502355,426.7484383229,463.0066556268,502.34551296122,545.02675670673,591.33436279611,641.57644431325,696.08728968715,755.22958979995,819.39685117042,889.01601417107,964.55029369918,1046.5022612024],description:"17th root of 4"},cet146:{frequencies:[261.6255653006,284.69629445872,309.80145226022,337.12043918596,366.84847565362,399.19799705513,434.40017432099,472.70655602525,514.39088038704,559.75102196641,609.11112257023,662.82390755693,721.27320639821,784.8766959018],description:"13th root of 3, Bohlen-Pierce approximation"},cet148:{frequencies:[261.6255653006,284.92791524313,310.30575035912,337.94392545772,368.04376529149,400.82452432448,436.52498800167,475.40520223986,517.74838217475,563.86296895784,614.08486606944,668.77990486322,728.34649714081,793.21854485147,863.86858278563,940.81124699851,1024.60701225804,1115.86625569541,1215.25373699679,1323.49342609599,1441.37375222579,1569.7533918036],description:"21th root of 6, Moreno's C-21"},cet152:{frequencies:[261.6255653006,285.70808394691,312.0073878821,340.72733440875,372.0911362405,406.34196228781,443.74556186468,484.59214639302,529.19833545193,577.91081034511,631.10724720728,689.20039277289,752.64098693245,821.92125998587],description:"13th root of pi"},cet158:{frequencies:[261.6255653006,286.70831230381,314.19580976213,344.3186075731,377.32935907335,413.50494015483,453.14877154631,496.5933637384,544.20310589723,596.37732215892,653.5536209391,716.21156534988,784.8766959018],description:`12th root of 3, Moreno's A-12, see dissertation "Embedding Equal Pitch Spaces.`},cet159:{frequencies:[261.6255653006,286.82842069679,314.45911373416,344.75151869218,377.96204482418,414.37180231943,454.28897403052,498.05144066897,546.02962057131],description:"4e-th root of e. e-th root of e is highest x-th root of x"},cet160:{frequencies:[261.6255653006,286.95745534843,314.74210513576,345.21700307457,378.64263238751,415.30469757995,455.51656649021,499.62194879119,547.99783383788,601.05771297194,659.25511382574,723.0874768355,793.10040709753,869.89233791055,954.11964586525,1046.5022612024],description:'15th root of 4, Rudolf Escher in "The Long Christmas Dinner" (1960)'},cet160a:{frequencies:[261.6255653006,287.06963246392,314.98822873932,345.62201499981,379.23505183234,416.11708252541,456.58602635137,500.99072933585,549.71395617638,603.17569602575,661.83679400878,726.20290371434,796.8288589228,874.32344802967,959.35468153537,1052.65552131526,1155.03021091382,1267.36122959081,1390.6168610076,1525.85955590014,1674.2551187631,1837.08270650821,2015.74588766663,2211.78472029595,2426.88907720145,2662.91313932742,2921.89140956529,3206.0563044734,3517.85730085803,3859.98211320646,4235.37982185266,4647.28638964387,5099.2524155536,5595.17379976366,6139.32543031277,6736.39784717273,7391.53779523322,8110.3925243186],description:"37th root of 31. McLaren 'Microtonal Music', volume 2, track 7"},cet163:{frequencies:[261.6255653006,287.45276480522,315.82957660097,347.00769742017,381.26366336311,418.90131810157,460.25449359467,505.68997636603,555.61077020009,610.45965236807],description:'9th root of 7/3. Jeff Scott in "Quiet Moonlight" (2001)'},cet163a:{frequencies:[261.6255653006,287.41152361975,315.7389582221,346.85836204295,381.04491126651,418.60090448096,459.85843616195,505.18233428314,554.97338050766],description:"5th root of 8/5"},cet166:{frequencies:[261.6255653006,287.95619440582,316.93680165166,348.83408706747],description:"3rd root of 4/3"},cet173:{frequencies:[261.6255653006,289.10449173793,319.46957112932,353.02394045842,390.10257564198,431.07563562091,476.35215768611,526.38414093011,581.67105858963,642.7648443263,710.27540222401,784.8766959018],description:"11th root of 3, Moreno's A-11"},cet175:{frequencies:[261.6255653006,289.48414624674,320.30918244523,354.41654988346,392.15575985798,433.91353804458,480.11779720922,531.2420078798,587.8100594825,650.40162657281,719.65810898332,796.28920449429,881.08018137935,974.89992535123,1078.70983713651,1193.57370864212,1320.66858845324,1461.29686662697,1616.89961515233,1789.07135516847,1979.57639663535,2190.36691789568,2423.60297039629,2681.67459807517,2967.22638952895,3283.18448966052,3632.78664249769,4019.61535560076,4447.6346101102],description:"28th root of 7. McLaren 'Microtonal Music', volume 6, track 3"},cet175a:{frequencies:[261.6255653006,289.53628281337,320.42456924675,354.60807736883,392.4383479509,434.30442400296,480.63685362987,531.91211578736],description:"4th root of 3/2"},cet178:{frequencies:[261.6255653006,289.91935960089,321.27301846367,356.01745236555,394.51936464224,437.18511000944,484.46499093218,536.85800524663,594.91712478053,659.25511382574,730.5510078664,809.55727745129,897.10776473059,994.12650420781,1101.63744560301,1220.77528002516,1352.79740322961,1499.09721690784,1661.21879031979,1840.87318566558,2039.95650991293,2260.56991361642,2505.04181781964,2775.9524141353,3076.16094499002,3408.83584914421,3777.48827884202,4186.0090448096],description:"27th root of 16"},cet181:{frequencies:[261.6255653006,290.48091212946,322.51878830959,358.09020513941,397.58488163802,441.43552612833,490.12256936272,544.17943316245,604.19836236377,670.83693141722,744.82523718317,826.97390553231,918.18295398723,1019.45167961503,1131.88958971281,1256.72856920928,1395.33634826987],description:"6.625 tET. The 16/3 is the so-called Kidjel Ratio promoted by Maurice Kidjel in 1958"},cet182:{frequencies:[261.6255653006,290.70585738945,323.0184918031,358.92275093366,398.81785224951,443.14738973192,492.40425618917,547.1361382945,607.95159681319,675.52683545966,750.61321956915,834.04563048717,926.75174856904,1029.76237395443,1144.22286477952,1271.40590625444,1412.7256395721,1569.7533918036],description:"17th root of 6, Moreno's C-17"},cet195:{frequencies:[261.6255653006,292.81795587218,327.72927094457,366.80289667873,410.53509014096,459.48126579586,514.26306468681,575.57624366132],description:"7th root of 11/5"},cet21k:{frequencies:[261.6255653006,264.89588486686,268.20708342769,271.55967197054,274.95416787017,278.3910952928,281.87098404962,285.39437141672,288.96180112674,292.57382370898,296.23099657435,299.9338841014,303.68305772341,307.47909424051,311.32258299104,315.21411535185,319.1542918681,323.14372059172,327.18301717534,331.2728049672,335.41371510742,339.60638662537,343.85146653829,348.14960995112,352.50148015762,356.90774874273,361.36909568619,365.8862094675,370.45978717215,375.09053459917,379.77916637013,384.52640603933,389.33298620552,394.19964862491,399.1271443257,404.11623372391,409.16768674077,414.28228292154,419.46080913287,424.70406934596,430.01287031296,435.38803129329,440.83038178715,446.34076166346,451.92002128953,457.56902166224,463.28863454093,469.07974258197,474.94323947488,480.88003008033,486.89103056976,492.97716856672,499.13938329007,505.37862569893,511.69585863936,518.09205699304,524.56820782765],description:"scale of syntonic comma's, almost 56-tET"},cet222:{frequencies:[261.6255653006,297.3462123974,337.94392545772,384.08458333231,436.52498800167,496.12526073276,563.86296895784,640.8491384935,728.34649714081,827.79017883768,940.81124699851,1069.2634803114,1215.25373699679,1381.1765584523,1569.7533918036],description:"14th root of 6, Moreno's C-14"},cet233:{frequencies:[261.6255653006,299.41460910537,342.66187834083,392.15575985798,448.79850611373,513.6227001391,587.8100594825,672.71300106294,769.87926947615,881.08018137935,1008.34288220748,1153.98733901804,1320.66858845324,1511.42518780658,1729.7345489351,1979.57639663535,2265.50524176842,2592.73349533282,2967.22638952895,3395.81083571538,3886.29974647262,4447.6346101102],description:"21st root of 17. McLaren 'Microtonal Music', volume 2, track 15"},cet24:{frequencies:[261.6255653006,265.3411057651,269.1094134006,272.9312375932,276.80733837157,280.73848655813,284.72546392233,288.7690633361,292.87008893155,297.02935626086,301.24769245848,305.52593640563,309.86493889709,314.26556281043,318.72868327757,323.25518785885,327.84597671953,332.50196280875,337.22407204116,342.01324348101,346.8704295289,351.79659611118,356.79272287204,361.85980336835,366.9988452672,372.21087054633,377.49691569736,382.85803193188,388.29528539052,393.80975735501,399.40254446313,405.07475892685,410.82752875349,416.66199797006,422.57932685074,428.58069214763,434.66728732478,440.84032279551,447.10102616311,453.45064246502,459.89043442035,466.42168268106,473.04568608657,479.76376192214,486.57724618073,493.48749382879,500.49587907561,507.6037956467,514.81265706088,522.12389691142,529.53896915113],description:"least squares fit primes 2-13"},cet258:{frequencies:[261.6255653006,303.75687573192,352.67287219582,409.46613795376,475.40520223986,551.96287401486,640.8491384935,744.04935121924,863.86858278563,1002.98310468409,1164.50016626124,1352.0273979586,1569.7533918036],description:"12th root of 6, Moreno's C-12"},cet29:{frequencies:[51.91308719749,52.80006242627,53.70219231256,54.6197354699,55.55295587693,56.50212107609,57.46750349647,58.44938022184,59.44803272677,60.46374832519,61.49681820986,62.54753889218,63.61621194966,64.70314373878,65.80864697157,66.93303858176,68.07664129187,69.2397833384,70.42279815925,71.62602610967,72.84981213985,74.09450750046,75.36046944358,76.64806088248,77.95765225928,79.28961901721,80.64434345693,82.02221441105,83.42362735565,84.84898403373,86.29869452271,87.77317443616,89.27284697886,90.79814258634,92.34949851506,93.9273610926,95.53218267212,97.16442386902,98.82455316866,100.51304648023,102.230389586,103.97707482641,105.75360353451,107.56048560902,109.39823902877,111.26739251837,113.16848194039,115.10205294491,117.06866050489,119.06886838764,121.10325205621,123.17239474253,125.2768903313,127.4173428542,129.59436591466,131.80858584574,134.06063743615,136.35116706905,138.68083217153,141.05030058861,143.46025402018,145.91138336926,148.40439215824,150.93999592972,153.51892156515,156.14191102559,158.8097162888,161.52310306741,164.28285015685,167.08974869373,169.94460622727,172.84824120887,175.80148703892,178.80519135714,181.8602162858,184.96743760879,188.12774927869,191.34205731671,194.61128429254,197.93636853869,201.31826325695,204.75794142387,208.2563891515,211.8146105632,215.43362693858,219.11447574094,222.85821595641,226.66592086774,230.53868336123,234.47761499594,238.48384494529,242.55852580808,246.70282574354,250.91793424736,255.20506113867,259.56543598745],description:"95th root of 5"},cet39:{frequencies:[261.6255653006,267.55763511324,273.62420803617,279.82833216202,286.17312954462,292.66178817784,299.29756995616,306.08381073387,313.02392200207,320.12139075456,327.37978859613,334.80276256646,342.39404424694,350.15744982839,358.09687996112,366.21632994368,374.51987945827,383.01170275779,391.6960687417,400.57734310204,409.65998815178,418.94857448076,428.44776921301,438.16234766073,448.09719341103,458.25729813392,468.64777462103,479.27384364987,490.14084702027,501.25424765147,512.61963232837,524.24271148185,536.12933410494,548.28547272565,560.71723832061,573.43088042607,586.43278689221,599.72950056876,613.32770249519,627.23422858353,641.45606974252,656.00037539202,670.87445318194,686.08578808043,701.64202314362,717.55097860059,733.82065199545,750.45921787297,767.47504913108,784.8766959018],description:"49th root of 3"},cet39a:{frequencies:[261.6255653006,267.54999903763,273.60843178624,279.80421399945,286.14029787289,292.61969147246,299.24597805224,306.02231493662,312.9519192023,320.03862308027,327.28580327671,334.69690040195,342.27601296361,350.02675229311,357.95279806627,366.05853356918,374.34782106107,382.82459589435,391.49354592099,400.35880176332,409.42457221564,418.6958708581,428.17711532294,437.87280684605,447.78830736843,457.9283414747,468.29772316218,478.90218693807,489.74678566745,500.83666784082,512.17796641877,523.77608535691],description:"31-tET with least squares octave; equal weight to 5/4, 3/2, 7/4 and 2/1"},cet39b:{frequencies:[261.6255653006,267.54443554965,273.59736903996,279.78708267123,286.11699418435,292.58994480246,299.2095086599,305.97865699219,312.90112748358,319.98002733127,327.21907624411,334.6220906301,342.19239338178,349.93416455252,357.85087908811,365.94690831825,374.22588619981,382.6921630398,391.3502022376,400.20389001205,409.25811505631,418.51694141988,427.98548149913,437.66798531163,447.56979919346,457.69536764001,468.05001127562,478.63918904181,489.46765396188,500.54138513107,511.86535306771,523.4458104663],description:"31-tET with l.s. 8/7, 5/4, 4/3, 3/2, 8/5, 7/4, 2/1; equal weights"},cet39c:{frequencies:[261.6255653006,267.52919373065,273.56603860918,279.73910598956,286.05147140959,292.50627485027,299.10673210371,305.85612987468,312.75782903301,319.8152662872,327.03195662575,334.41149334841,341.95754947331,349.67388372612,357.56433846376,365.63284274659,373.88341429498,382.32016148985,390.94728541851,399.7690842757,408.78994578219,418.01436575232,427.44693588739,437.09235368188,446.9554220819,457.04105241293,467.35426952494,477.9002035559,488.68410850494,499.71135422907,510.98743222773,522.51795602393],description:"10th root of 5/4"},cet39d:{frequencies:[261.6255653006,267.55786538889,273.62467903016,279.82905628857,286.1741163878,292.66304927922,299.29911724561,306.08565654127,313.02607906932,320.12387409698,327.38261000985,334.80593610581,342.39758442978,350.16137164992,358.1012009765,366.22106412416,374.52504331879,383.0173133498,391.70214366901,400.58390053708,409.66704921865,418.95615622721,428.45589162089,438.17103135034,448.1064596598,458.26717154264,468.65827525256,479.28499487175,490.15267293726,501.26677312698,512.63288300643,524.25671683791],description:"31-tET with l.s. 5/4, 3/2, 7/4"},cet39e:{frequencies:[261.6255653006,267.56053134626,273.63013029147,279.83741943955,286.18551905392,292.67762672082,299.3170076044,306.10700082387,313.05102655064,320.15257723818,327.41522444303,334.84262641603,342.43851674365,350.20672153383,358.15114775562,366.27579142084],description:"15th root of 7/5, X.J. Scott"},cet44:{frequencies:[261.6255653006,268.36512159638,275.27829096782,282.369545742,289.64347345451,297.10477981732,304.75829176301,312.60896056742,320.66186505284,328.92221487359,337.3953538863,346.08676360706,355.00206675748,364.14703090225,373.52757218034,383.14975913231,393.01981662619,403.14412988459,413.52924861543,424.18189124916,435.1089492851,446.31749174973,457.81476976988,469.60822126365,481.70547575226,494.11435929576,506.84289955596,519.89933098975,533.2921001762],description:"least maximum error of 10.0911 cents to a set of 11-limit consonances"},cet45:{frequencies:[261.6255653006,268.55812265554,275.67437899809,282.97903853108,290.47742047479,298.17449463282,306.07552595385,314.18591889722,322.51122112969,331.05693609414,339.82928674186,348.83408706747],description:"11th root of 4/3"},cet45a:{frequencies:[261.6255653006,268.48547646737,275.52525683447,282.74962263341,290.1634137569,297.77159700127,305.57926939395,313.59166160814,321.8141414671,330.2522175402,338.9115428334,347.79791857637,356.91729810903,366.27579142084],description:"13th root of 7/5, X.J. Scott"},cet49:{frequencies:[261.6255653006,269.10883825956,276.80615518671,284.72363837915,292.86758524998,301.24447333711,309.86096545541,318.72391499615,327.84037137809,337.21758565441,346.86301628009,356.78433504421,366.98943317194,377.48642760107,388.28366743806,399.38974059878,410.81348063915,422.56397378117,434.65056613995,447.08287115744,459.87077724873,473.02445566714,486.55436859423,500.47127746122,514.78625150841,529.51067658945],description:"least squares fit primes 3-13"},cet49a:{frequencies:[261.6255653006,269.10939785623,276.80730639354,284.72541458317,292.8700212642,301.24760545475,309.86483150611,318.72855440416,327.84582522255,337.22389673177,346.87022916874,356.7924961714,366.99859088307,377.49663223147,388.29497138724,399.40219840734,410.82714906841,422.57891189558,434.66683539241,447.10053547759,459.8899031344,473.04511227892,486.57662785344,500.49521415122,514.81194337949,529.53820446742],description:"least squares fit primes 5-13"},cet49b:{frequencies:[261.6255653006,269.11089011973,276.81037630182,284.73015118141,292.87651740119,301.25595792767,309.87514121046,318.74092648901,327.86036925135,337.24072684885,346.88946427176,356.81426008988,367.0230125633,377.52384592787,388.3251168606,399.43542112995,410.86360043647,422.61874944911,434.71022304287,447.14764374346,459.94090938509,473.10020098719,486.63599085665,500.55905092174,514.88046130456,529.61161913871],description:"least squares fit primes 3-11"},cet51:{frequencies:[261.6255653006,269.45730810595,277.52349357863,285.8311397433,294.38747470873,303.19994295657,312.27621181854,321.62417814738,331.25197518754,341.1679796516,351.38081900843,361.89937898954,372.73281132023,383.89054168203,395.38227791356,407.21801845694,419.40806105693,431.96301172054,444.89379394488,458.21165822114,471.92819182319,486.05532888913,500.60536080461,515.59094689708,531.0251223827,546.92132188791,563.29337300176,580.1555203085,597.52243480304,615.40922665547,633.83145835774,652.80515826392,672.34683453572,692.47348950549,713.20263446921,734.55230492227,756.54107625132,779.18807989593,802.51301999392,826.53619052513,851.2784929682,876.7614544861,903.00724665589,930.0387047592,957.87934765022,986.55339821839,1016.08580446361,1046.5022612024],description:"47nd root of 4"},cet53:{frequencies:[261.6255653006,269.81714175785,278.26519897904,286.97776745533,295.963129115,305.22982618403],description:"5th root of 7/6, X.J. Scott"},cet54:{frequencies:[261.6255653006,269.96706985652,278.57452968396,287.45642599351,296.6215054241,306.0787984682,315.83762188043,325.9075894649,336.29862154621,347.0209567468,358.08515411748,369.5021153806,381.28308783765,393.43967739203,405.98385998242,418.92799580061,432.28483186346,446.06752886518,460.28966468743,474.96525012045,490.10874266572,505.73506369981,521.85960157932,538.49824405725,555.66738252045,573.38393096839,591.66534267587,610.52963091344,629.99537269573,650.08174791487,670.80854445602,692.19618110881,714.26572768264,737.03893002078,760.53821452531,784.78673539949,809.80838082331,835.62780061242,862.2704354823,889.76252234217,918.13114956434,947.40426420901,977.61070438283,1008.78022764847,1040.94354635268,1074.13233401713,1108.37929206026,1143.71815851921,1180.1837471134,1217.81198154093,1256.63993812708,1296.7058535394,1338.04920533515,1380.71072249048,1424.73243255855,1470.15770307252,1517.03129303135,1565.39936221354,1615.30956841503,1666.81108016015,1719.95463363144,1774.79258265191,1831.3789571042],description:"62nd root of 7"},cet54a:{frequencies:[36.70809598968,37.88151295543,39.09243955873,40.34207507177,41.63165640381,42.96246070241,44.33580570763,45.75305128262,47.21560103286,48.72490261351,50.28245077394,51.88978777214,53.5485051662,55.26024570942,57.02670371,58.84962859429,60.73082539186,62.67215683218,64.67554556259,66.74297456936,68.87649134796,71.07820847085,73.35030604133,75.69503428946,78.11471406483,80.61174171737,83.18858976192,85.8478097501,88.59203530858,91.42398271579,94.34645661434,97.36235078878,100.47465152683,103.6864411753,107.00089881505,110.42130694669,113.95105240089,117.59363027227,121.3526480812,125.23182656372,129.23500749643,133.36615476182,137.62935895249,142.02884224198,146.56895930934,151.25420649717,156.08922305851,161.0787965455,166.22786851013,171.54153558634,177.0250602084,182.68387207023,188.52357443227,194.5499507934,200.76896615752,207.18677957808,213.80974586608,220.64442297146,227.69757979185,234.97619765489,242.48748500016,250.23887937817,258.23805608937,266.49293732345,275.01169389411,283.8027624226,292.87484767725,302.23693268442,311.89828942495,321.86848086456,332.15738106504,342.77517792247,353.73238500089,365.03985405114,376.70877738729,388.75071142436,401.17757988308,414.00168763976,427.23573537822,440.89282237095,454.98647402737,469.53064564449,484.53973861665,500.02861758376,516.01261368641,532.50755680773,549.52977996323,567.09613827221,585.22402902787,603.93139550692,623.23676470498,643.1592524742,663.71858572717,684.9351219702,706.82987354375,729.42451222373,752.74141479803,776.80366927173,801.63510168485,827.26030448295,853.70464190233,880.99430375232],description:"101st root of 24"},cet54b:{frequencies:[261.6255653006,269.96795403263,278.5763544202,287.45924871019,296.62539133416,306.08381073387,315.84382837889,325.91506125677,336.30743300953,347.03118371184,358.09687996112,369.51542742358,381.29807310848,393.45642905887,406.00247545366,418.94857448076,432.30748251802,446.09236270275,460.31680056078,474.99480683953,490.14084702027,505.76984518255,521.89720128632,538.53880634615,555.71105808945,573.43088042607,591.71572697754,610.58361784146,630.05314440547,650.14349087612,670.87445318194,692.26646247798,714.3405894063,737.11858847932,760.62290389144,784.8766959018],description:"35th root of 3 or shrunk 22-tET"},cet55:{frequencies:[261.6255653006,270.01349691657,278.67035254505,287.60475577316,296.82560168354,306.34207552634,316.16365537714,326.30012507123,336.76157646737,347.55843063202,358.70144085484,370.20170518484,382.07067969055,394.32018111076,406.96241165943,420.00996255663,433.47583121124,447.37342422819,461.71658555081,476.51960046685,491.79721226214,507.56463983627,523.83758122386,540.63224654693,557.96536270557,575.85419620437,594.31655714751,613.37083662462,633.03601203256,653.33166919923,674.2780257851,695.8959359612,718.20693418482,741.23324143097,764.99779551626,789.52425640623,814.83705588084,840.96140460432,867.92332151557,895.74966491622,924.46813868508,954.10735043232,984.69681977767,1016.26701863443,1048.84937826003,1082.47635523452,1117.18144085251,1152.9992001672,1189.96531328939,1228.1165836432,1267.49101522141,1308.127826503],description:"51th root of 5"},cet55a:{frequencies:[261.6255653006,270.1234331478,278.89732210685,287.95619440582,297.30930820811,306.96622255393,316.93680165166,327.23123542864,337.86004496999,348.83408706747],description:"9th root of 4/3"},cet63:{frequencies:[261.6255653006,271.38398887572,281.50639381697,292.00635633712,302.89795903081,314.19580976213,325.91506125677,338.07143142496,350.68122444233,363.76135261718,377.32935907335,391.4034412791,406.00247545366,421.14604188408,436.85445118639,453.14877154631,470.05085697597,487.58337662462,505.76984518255,524.63465441916,544.20310589723,564.50144490757,585.55689566922,607.39769784277,630.05314440547,653.5536209391,677.93064638327,703.21691530872,729.44634176744,756.65410477833,784.8766959018],description:"30th root of 3 or stretched 19-tET"},cet63a:{frequencies:[261.6255653006,271.37251603396,281.48259278098,291.96932561311,302.84674360983,314.12940356828,325.83240291761,337.9714015469,350.5626427598,363.62297711023,377.1698766242,391.22147055517,405.79656146784,420.91465242294,436.59597307447,452.86150935499,469.73302118774,487.23308701689,505.38512383853,524.21342105699,543.74317298677,564.00051582303,585.01254970054,606.80739415229,629.41421305643,652.8632568014,677.18590276436,702.41470135475,728.58340348685,755.72702964881,783.88190097186,813.08569174348,843.37747981977,874.79780396885,907.38869808556,941.19377721109,976.25827622702,1012.62911525602,1050.35496244617,1089.48630538731,1130.07549372248,1172.17684627813,1215.84669925421,1261.14348767523,1308.127826503],description:"44th root of 5"},cet67:{frequencies:[261.6255653006,271.89449162354,282.56647812794,293.65734341902,305.18353207836,317.16212905639,329.61089159214,342.54827390456,355.99345454941,369.96636271272,384.48771622149,399.57903967613,415.26270466472,431.56196087069,448.50096908674],description:"14th root of 12/7, X.J. Scott"},cet70:{frequencies:[261.6255653006,272.49048247121,283.80660334964,295.59266404146,307.86818385681,320.65348759128,333.96974580612,347.83900623503,362.28423824861,377.32935907335,392.99928119148,409.31995166322,426.31839262878,444.02275580482,462.46235461904,481.66772230429,501.67065719504,522.50428685614,544.20310589723,566.80304433509,590.34152430617,614.85751848055,640.39162865951,666.98613212152,694.68506540856,723.53429383412,753.58158307649,784.8766959018],description:"27th root of 3"},cet78:{frequencies:[261.6255653006,273.68177330057,286.29355449603,299.48651076576,313.28742377221,327.72430932822,342.82647426905,358.62457594514,375.15068445646,392.4383479509],description:"9th root of 3/2"},cet79:{frequencies:[261.6255653006,273.87994580863,286.70831230381,300.13755324878,314.19580976213,328.91254817579,344.3186075731,360.44627930254,377.32935907335,395.0032340925,413.50494015483,432.87325713404,453.14877154631,474.3739811962,496.5933637384,519.85349135637,544.20310589723,569.69324454502,596.37732215892,624.31126899512,653.5536209391,684.16567043124,716.21156534988,749.7584744066,784.8766959018],description:"24th root of 3, James Heffernan (1906)."},cet80:{frequencies:[261.6255653006,273.93704112612,286.82786567404,300.32530171503,314.4578949408,329.25553433534,344.74951538696,360.97260627516,377.95911717185,395.74497280393,414.36778843034,433.8669493945,454.28369442026,475.66120282759,498.04439817054,521.48118104407,546.02084308555,571.71528316122,598.61884237431,626.7884189909,656.28358877393,687.16673097983,719.50316028422,753.36126491573,788.81265129014,825.93229545055,864.79870163404,905.49406830005,948.10446197172,992.7199992577,1039.43503743958,1088.34837402783,1139.56345570838,1193.18859712177,1249.33720993748,1308.127826503],description:"35th root of 5"},cet84:{frequencies:[261.6255653006,274.70153691096,288.43104187674,302.84674360983,317.98293803021,333.87563322966,350.5626427598,368.08366429725,386.48038152577,405.79656146784,426.0781586093,447.37342422819,469.73302118774,493.21014446673,517.86064472263,543.74317298677,570.91930267857,599.45368763079,629.41421305643,660.87215705217,693.9023601738,728.58340348685,764.99779551626,803.23216389999,843.37747981977,885.52924725223,929.78774807537,976.25827622702,1025.05138820617,1076.28316609431,1130.07549372248,1186.55634664103,1245.86008938569,1308.127826503],description:"33rd root of 5"},cet87:{frequencies:[261.6255653006,275.05808287728,289.18026151691,304.0275068203,319.63704721237,336.04802279017,353.30157737897,371.44097305523,390.51169339433,410.56155044631,431.64081781968,453.80235066263,477.10170997643,501.59731726833,527.35059397819,554.42610593952],description:"Least-squares stretched ET to telephone dial tones. 1/1=697 Hz"},cet88:{frequencies:[261.6255653006,275.26799068863,289.6217982776,304.72408298441,320.61387403473,337.33223582731,354.92237405774,373.42974737602,392.90218486657,413.39000965417,434.94616895528,457.62637091093,481.48922855473,506.59641128799,533.01280425363],description:"88 cents steps by Gary Morrison"},cet88_appr:{frequencies:[261.6255653006,275.62199471997,290.69507255622,305.22982618403,320.49131749323,336.37572681506,354.37113606854,373.75080757229,392.4383479509,413.43299207996,436.04260883433,457.84473927605,482.33849075995,504.56359022259,531.55670410281,560.62621135843,588.65752192635,620.14948811994,654.0639132515,686.76710891407,723.50773613993,763.07456546008,801.22829373309],description:"88 cents scale approximated"},cet88b:{frequencies:[261.6255653006,275.26385669298,289.61326650562,304.7105300898,320.59498481995,337.30729585456,354.89100872976,373.39113880701,392.85588995712,413.33509311257,434.8821088097,457.55209870333,481.40413163568,506.49927024418,532.9029023296],description:"87.9745 cents steps. Least squares of 7/6, 11/9, 10/7, 3/2, 7/4."},cet88bis:{frequencies:[261.6255653006,289.53272725508,320.41669955092,337.26306895804,373.23835706057,392.86190344834,434.76782633734,457.62637091093],description:"Bistep approximation of 2212121 mode in 7/4 to 11/9 9/7 10/7 3/2"},cet88bm:{frequencies:[261.6255653006,275.22889829239,289.53954239223,304.59427454323,320.43178392135,337.09277136281,354.62005396115,373.05867644715,392.45602022512,412.86193859025,434.32887139488,456.91198653787,480.66932039657,505.66192697453,531.95403480429],description:"87.75412 cents steps. Minimal highest deviation for 7/6, 11/9, 10/7, 3/2, 7/4."},cet88c:{frequencies:[261.6255653006,275.37188725148,289.84046967782,305.06925821769,321.09819727018,337.96933026971,355.72690383892,374.4174952616,394.09012940783,414.79640018179,436.59061916193,459.52995194191,483.67455974508,509.0877727469,535.83624905561,563.99013984227,593.62329144382,624.813430743,657.64235771869,692.19618110881,728.56553457307,766.84580121693,807.13738838693,849.54597972796,894.18279699007,941.16492045434,990.61558284509,1042.66447461031,1097.44811755542,1155.11020756021,1215.8019705522,1279.68259818323,1346.91964745566,1417.68945580607,1492.17764912727,1570.57960775359,1653.10095047047,1739.95812689496,1831.3789571042],description:"38th root of 7. McLaren 'Microtonal Music', volume 3, track 7"},cet89:{frequencies:[261.6255653006,275.56724848068,290.25186566903,305.71900507847,322.01036982349,339.16988002511,357.2437980159,376.28084921395,396.33236207144,417.45239374596,439.69788420361,463.12880499146,487.80833148705,513.80299757552,541.1828853206,570.0218080747,600.39752248465,632.39191886931,666.09125466774,701.58637981228,738.97299766656,778.35189934333,819.82925103406,863.51687139942,909.53255273344,958.00034936337,1009.05093129669,1062.82192563509,1119.45831186524,1179.11277682321,1241.94614996535,1308.127826503],description:"31st root of 5. McLaren 'Microtonal Music', volume 2, track 22"},cet90:{frequencies:[261.6255653006,275.62199471997,290.36720431405,305.90125228146,322.26633935092,339.50692625527,357.66984706396,376.80444887746,396.96271256675,418.19939952297,440.572208006,464.1419130862,488.97255163391,515.13157534193,542.69005603758,571.72285881831,602.3088534069,634.53113933145],description:"Scale with limma steps"},cet93:{frequencies:[261.6255653006,275.99488223824,291.15340824655,307.14448922429,324.01384989472,341.80973194459,360.58302103444,380.38739950036,401.27949808494,423.31905787312],description:"Tuning used in John Chowning's STRIA, 9th root of Phi"},cet98:{frequencies:[261.6255653006,276.83245825991,292.92324815749,309.94930780463,327.96500300935,347.02785219778,367.1987248383,388.54202015806,411.12588832951],description:"8th root of 11/7, X.J. Scott"},chahargah:{frequencies:[261.6255653006,277.18263097687,283.66146785671,311.12698372208,326.97270111135,348.82502010853,367.86341164695,392.44854854484,415.30469757995,425.01198472693,466.16376151809,493.88330125613,523.2511306012],description:"Chahargah in C"},chahargah2:{frequencies:[261.6255653006,283.66146785671,327.729041887,348.82502010853,392.44854854484,425.01198472693,493.88330125613,523.2511306012],description:"Dastgah Chahargah in C, Mohammad Reza Gharib"},chalmers:{frequencies:[261.6255653006,274.70684356563,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,515.07533168556,523.2511306012],description:"Chalmers' 19-tone with more hexanies than Perrett's Tierce-Tone"},chalmers_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,313.95067836072,327.03195662575,336.37572681506,343.38355445704,376.74081403286,384.42940207435,392.4383479509,400.61414686654,408.78994578219,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"7-limit figurative scale, Chalmers '96 Adnexed S&H decads"},chalmers_19:{frequencies:[261.6255653006,269.10058145205,290.69507255622,294.32876096318,305.22982618403,313.95067836072,336.37572681506,348.83408706747,356.10146388137,363.36884069528,376.74081403286,384.42940207435,392.4383479509,406.97310157871,436.04260883433,448.50096908674,465.11211608996,470.92601754108,508.71637697339,523.2511306012],description:"7-limit figurative scale. Reversed S&H decads"},chalmers_csurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,315.80837468238,323.38635505005,348.83408706747,357.38803216938,383.0466618906,392.4383479509,423.31690179539,433.47765231178,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Combined Surd Scale, combination of Surd and Inverted Surd, JHC, 26-6-97"},chalmers_isurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,323.38635505005,348.83408706747,383.0466618906,433.47765231178,523.2511306012],description:"Inverted Surd Scale, of the form 4/(SQRT(N)+1, JHC, 26-6-97"},chalmers_ji1:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji3:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"15 16 17 18 19 20 21 on 1/1, 15-20 on 3/2, May 2, 1997. See other scales"},chalmers_ji4:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,496.11959049595,523.2511306012],description:"15 16 17 18 19 20 on 1/1, same on 4/3, + 16/15 on 16/9"},chalmers_surd:{frequencies:[261.6255653006,315.80837468238,357.38803216938,392.4383479509,423.31690179539,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/2, JHC, 26-6-97"},chalmers_surd2:{frequencies:[261.6255653006,272.2395613933,282.33485096279,291.98077704337,301.23248980765,310.13469895524,318.72425558532,327.03195662575,335.08385052998,342.90220911983,350.50624086893,357.91266581346,365.13613061818,372.18956061116,379.08442465499,385.8309605564,392.4383479509,398.91485744029,405.26796981327,411.50448329997,417.63058822561,423.65195171798,429.57376586736,435.40081471708,441.13750301549,446.78791303515,452.35581962987,457.84473927605,463.2579384726,468.59846621725,473.86917438523,479.07273156015,484.21164154672,489.28825377326,494.3047826718,499.26331035461,504.16580309972,509.01411882861,513.81001953884,518.55516185524,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/4"},chalung:{frequencies:[261.6255653006,328.09251713275,362.03316295439,390.31715077734,479.41117101029,527.4935758042,647.70012555753,728.30917696308,823.06004869243,961.65052057178,1054.9871516084,1301.05663342451],description:'Tuning of chalung from Tasikmalaya. "slendroid". 1/1=185 Hz'},chaumont:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.49749487796,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.40109831725,489.02683710225,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 1st interpretation"},chaumont2:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.30531842668,327.84547867349,349.70184487387,366.99801003998,391.46454285105,410.8262805401,438.2147004401,465.11211608996,490.54793493862,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 2nd interpretation"},chimes:{frequencies:[261.6255653006,288.69027895239,130.8127826503,144.34513947619],description:"Heavenly Chimes"},chimes_peck:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,1046.5022612024],description:"Kris Peck, 9-tone windchime tuning. TL 7-3-2001"},chin_12:{frequencies:[261.6255653006,277.05457499359,293.57996645301,310.53449241474,329.24697610111,347.79893712036,368.97000115401,391.76907592069,413.1274313058,439.00991514661,462.11551390967,491.43599249807,523.2511306012],description:"Chinese scale, 4th cent."},chin_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,441.49314144476,523.2511306012],description:"Chinese pentatonic from Zhou period"},chin_60:{frequencies:[261.6255653006,262.17244551937,265.19499215873,268.81311753311,272.48060600886,276.1981310001,279.38237857051,283.19406633357,287.05775848811,290.97416342694,294.32876096318,294.94400091442,298.34436617857,302.41475692242,306.54068145351,310.72289706448,314.30517589183,318.59332496145,322.93997797627,327.34593352805,331.11985608357,331.812000697,335.63741195089,340.21660119759,344.85826629043,349.56326086722,353.59332287831,358.41749022331,363.30747486009,368.26417485089,372.50983809402,373.28850041093,377.59208844475,382.74367817547,387.96555142985,392.4383479509,393.25866808247,397.79248823809,403.21967609811,408.72090880899,414.29719629306,419.07356785577,424.79110016094,430.58663751693,436.46124492224,441.49314144476,442.41600115048,447.51654926786,453.62213515688,459.81102195042,466.08434536373,471.45776383774,477.8899872033,484.40996672226,491.01890004663,496.67978412536,497.7180007967,503.45611792634,510.32490448905,517.28740216504,523.2511306012],description:'Chinese scale of fifths (the 60 lu")'},chin_7:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Chinese heptatonic scale and tritriadic of 64:81:96 triad"},chin_bianzhong:{frequencies:[261.6255653006,277.82379926216,312.56802260838,375.1593523779,420.13030572059,469.40618689596,506.59641128799,563.72967895209,627.66881138238,764.75812197709,849.53311813274,949.1724262561,1225.95732655636],description:"Pitches of Bianzhong bells (Xinyang). 1/1=b, Liang Mingyue, 1975."},chin_bianzhong2a:{frequencies:[261.6255653006,284.81073476233,312.56802260838,372.56793743951,413.39000965417,447.94973572445,491.60634075178,562.75365576207,652.05945856061,695.63805470995,863.88355261715,960.75607282217,1173.30283584026],description:"A-tones (GU) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=d#=619 Hz"},chin_bianzhong2b:{frequencies:[261.6255653006,279.59231184543,312.74738729016,375.37536096215,418.43048063126,468.86028020615,505.12945327459,562.08698385796,624.42058858709,762.97988553915,849.53425657971,936.08862980659,1215.37624187632],description:"B-tones (SUI) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=b+=506.6 Hz"},chin_bianzhong3:{frequencies:[261.6255653006,508.3551866238,542.32970395878,608.04166718582,619.02750937577,673.88551872153,729.80120031671,739.56153452917,812.57643344187,881.52624580654,911.03313298042,978.11461117351,982.0774855146,1059.88575280263,1092.20381072382,1163.18085489566,1213.27682870749,1331.52122774489,1483.40111876828,1542.82606951623,1645.93659621657,1649.74391394557,1818.91159982256,2044.01922018919,2273.22753490632,2362.92760489328,2776.13057951436],description:"A and B-tones of 13 Xinyang bells (Ma Cheng-Yuan) abs. pitches wrt middle-C"},chin_bronze:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:`Scale found on ancient Chinese bronze instrument 3rd c.BC & "Scholar's Lute"`},chin_chime:{frequencies:[261.6255653006,248.6592656401,341.74499057264,392.56190849927,548.78974538591,648.86582834888,714.36935367713,785.57745330134,889.7110417619,886.88898199546,992.62825668803,1044.08711871947,1326.14827969763],description:"Pitches of 12 stone chimes, F. Kuttner, 1951, ROMA Toronto. %1=b4"},chin_ching:{frequencies:[261.6255653006,276.1981310001,294.32876096318,310.72289706448,331.11985608357,349.56326086722,368.26417485089,392.4383479509,414.29719629306,441.49314144476,466.08434536373,496.67978412536,524.34489103873],description:"Scale of Ching Fang, c.45 BC. Pyth.steps 0 1 2 3 4 5 47 48 49 50 51 52 53"},chin_di:{frequencies:[261.6255653006,298.70635408336,316.56004827153,360.50766037677,409.94872043165,433.75364775074,527.37121036213],description:"Chinese di scale"},chin_di2:{frequencies:[261.6255653006,289.95657583698,318.21537073485,338.89464890898,383.48501130814,436.9606979923,494.73987775324,522.04355935974],description:"Observed tuning from Chinese flute dizi, Helmholtz/Ellis p. 518, nr.103"},chin_huang:{frequencies:[261.6255653006,331.11985608357,392.4383479509,441.49314144476,523.2511306012,588.65752192635,662.23971216714],description:"Huang Zhong qin tuning"},"chin_liu-an":{frequencies:[261.6255653006,278.83777354406,294.32876096318,311.64221749042,331.11985608357,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067],description:'Scale of Liu An, in: "Huai Nan Tzu", c.122 BC, 1st known corr. to Pyth. scale'},chin_lu:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,495.71159741166,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Huai Nan zi, Han era. P\xEF\xBF\xBDre Amiot 1780, Kurt Reinhard"},chin_lu2:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Chinese L\xEF\xBF\xBD (Lushi chunqiu, by Lu Buwei). Mingyue: Music of the billion, p.67"},chin_lu3:{frequencies:[261.6255653006,277.34278419245,293.66476791741,310.58830860439,329.24697610111,347.81902735497,369.14054089803,391.76907592069,413.1512951712,439.23819834286,462.1422075194,491.60634075178,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, reported in Sung Shu (500 AD)"},chin_lu3a:{frequencies:[261.6255653006,277.06033146978,293.58830182213,310.53780743131,329.25144446584,347.79484055318,368.74579520635,391.78066943209,413.13681807919,438.99947255393,462.1072190611,491.17907538715,523.2511306012],description:`Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, calc. basis is "big number" 177147`},chin_lu4:{frequencies:[261.6255653006,276.78521684908,293.5444075184,310.55356739316,329.35741152087,348.44172229085,369.5396750577,391.9150968203,414.62425518576,439.72952246257,465.20924434298,493.37740286979,523.2511306012],description:'Chinese L\xEF\xBF\xBD "749-Temperament"'},chin_lu5:{frequencies:[261.6255653006,277.35401920913,293.41471131112,311.37240624271,329.40299530711,349.20610523279,369.80535913035,392.03738806826,415.16320853113,440.12206674667,466.08434536373,494.10449271367,522.71643616375],description:"Chinese L\xEF\xBF\xBD scale by Ch'ien Lo-Chih, c.450 AD Pyth.steps 0 154 255 103 204 etc."},chin_lusheng:{frequencies:[261.6255653006,316.38258506467,348.82502010853,389.28772571905,466.97226207056,520.53801357752],description:"Observed tuning of a small Lusheng, 1/1=d, OdC '97"},chin_pan:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Pan Huai-su pure system, in: Sin-Yan Shen, 1991"},chin_pipa:{frequencies:[261.6255653006,284.4818984792,320.42873367481,380.17671965621,433.44136952667,521.74210224793],description:"Observed tuning from Chinese balloon lute p'i-p'a, Helmholtz/Ellis p. 518, nr.109"},chin_sheng:{frequencies:[261.6255653006,295.36595061166,318.03161540472,348.82502010853,395.40657391157,442.03793673691,477.05982293263,522.94897617031],description:"Observed tuning from Chinese sheng or mouth organ, Helmholtz/Ellis p. 518, nr.105"},chin_sientsu:{frequencies:[261.6255653006,291.80478157373,326.97270111135,392.44854854484,438.22451411849,523.2511306012],description:"Observed tuning from Chinese tamboura sienzi, Helmholtz/Ellis p. 518, nr.108"},chin_sona:{frequencies:[261.6255653006,284.4818984792,310.58830860439,337.33223582731,377.98706287655,418.43499793376,469.94877954106,528.10941333272],description:"Observed tuning from Chinese oboe (so-na), Helmholtz/Ellis p. 518, nr.104"},"chin_wang-po":{frequencies:[261.6255653006,294.32876096318,330.24264909897,371.97947673071,392.4383479509,440.94196398978,495.71159741166,517.50111817701],description:"Scale of Wang Po, 958 AD. H. Pischner: Musik in China, Berlin, 1955, p.20"},chin_yangqin:{frequencies:[261.6255653006,288.45311779165,306.48933163909,347.41744306689,383.26356564167,434.44398956347,465.08793784701,522.64699622026],description:"Observed tuning from Chinese dulcimer yangqin, Helmholtz/Ellis p. 518, nr.107"},chin_yunlo:{frequencies:[261.6255653006,288.45311779165,323.40385076956,367.0144478307,386.1523605003,409.35055662695,483.1608380663,525.67465946865],description:"Observed tuning from Chinese gong-chime (y\xEF\xBF\xBDn-lo), Helmholtz/Ellis p. 518, nr.106"},choquel:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,475.68284600109,490.54793493862,523.2511306012],description:"Choquel/Barbour/Marpurg?"},chordal:{frequencies:[261.6255653006,392.4383479509,327.03195662575,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,981.09586987725,490.54793493862,555.95432626377,621.36071758893,310.68035879446,523.2511306012,348.83408706747,418.60090448096,299.00064605783,465.11211608996,380.54627680087,322.00069575458,279.06726965397,610.45965236807,915.6894785521,872.08521766867,697.66817413493,654.0639132515,627.90135672144,448.50096908674,319.76457981184,377.90359432309,444.76346101102,889.52692202204,336.37572681506,294.32876096318,465.11211608996,411.12588832951,305.22982618403,366.27579142084,373.75080757229,313.95067836072,470.92601754108],description:"Chordal Notes S&H"},chrom15:{frequencies:[261.6255653006,280.31310567921,301.87565226992,356.76213450082,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Tonos-15 Chromatic"},chrom15_inv:{frequencies:[261.6255653006,313.95067836072,331.39238271409,348.83408706747,383.71749577421,453.48431318771,488.36772189445,523.2511306012],description:"Inverted Chromatic Tonos-15 Harmonia"},chrom15_inv2:{frequencies:[261.6255653006,279.06726965397,296.50897400735,348.83408706747,383.71749577421,401.15920012759,418.60090448096,523.2511306012],description:"A harmonic form of the Chromatic Tonos-15 inverted"},chrom17:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Tonos-17 Chromatic"},chrom17_con:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,386.75083566176,404.33041910093,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Chromatic"},chrom19:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,382.37582620857,397.67085925691,414.24047839262,523.2511306012],description:"Tonos-19 Chromatic"},chrom19_con:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,368.21375857121,382.37582620857,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Chromatic"},chrom21:{frequencies:[261.6255653006,274.70684356563,289.16509849014,343.38355445704,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Tonos-21 Chromatic"},chrom21_inv:{frequencies:[261.6255653006,323.91736656265,336.37572681506,348.83408706747,398.6675280771,473.41768959156,498.33441009638,523.2511306012],description:"Inverted Chromatic Tonos-21 Harmonia"},chrom21_inv2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,398.6675280771,423.58424858192,448.50096908674,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-21"},chrom23:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,376.08675011961,401.15920012759,429.81342870813,523.2511306012],description:"Tonos-23 Chromatic"},chrom23_con:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,353.96400011258,376.08675011961,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Chromatic"},chrom25:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,408.78994578219,436.04260883433,467.18850946536,523.2511306012],description:"Tonos-25 Chromatic"},chrom25_con:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,384.74347838324,408.78994578219,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Chromatic"},chrom27:{frequencies:[261.6255653006,277.01530443593,294.32876096318,353.19451315581,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Tonos-27 Chromatic"},chrom27_inv:{frequencies:[261.6255653006,310.07474405997,329.45441556372,348.83408706747,387.59343007496,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Chromatic Tonos-27 Harmonia"},chrom27_inv2:{frequencies:[261.6255653006,271.31540105247,281.00523680435,348.83408706747,387.59343007496,406.97310157871,436.04260883433,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-27"},chrom29:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,379.35706968587,399.32323124828,421.50785520652,523.2511306012],description:"Tonos-29 Chromatic"},chrom29_con:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,361.29244731988,379.35706968587,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Chromatic"},chrom31:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,405.51962621593,523.2511306012],description:"Tonos-31 Chromatic. Tone 24 alternates with 23 as MESE or A"},chrom31_con:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Chromatic"},chrom33:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,392.4383479509,411.12588832951,431.68218274599,523.2511306012],description:"Tonos-33 Chromatic. A variant is 66 63 60 48"},chrom33_con:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,375.37581108347,392.4383479509,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Chromatic"},chrom_new:{frequencies:[261.6255653006,273.20871865617,297.93622032612,349.22823143301,391.99543598175,409.35055662695,446.39994737251,523.2511306012],description:"New Chromatic genus 4.5 + 9 + 16.5"},chrom_new2:{frequencies:[261.6255653006,273.6474710507,299.37374239667,349.22823143301,391.99543598175,410.00794244467,448.55379686399,523.2511306012],description:"New Chromatic genus 14/3 + 28/3 + 16 parts"},chrom_soft:{frequencies:[261.6255653006,271.68808704293,282.55561052465,348.83408706747,392.4383479509,407.5321305644,423.83341578697,523.2511306012],description:"100/81 Chromatic. This genus is a good approximation to the soft chromatic"},chrom_soft2:{frequencies:[261.6255653006,268.42893440103,282.57118533961,349.22823143301,391.99543598175,402.18897205153,423.37840671577,523.2511306012],description:"1:2 Soft Chromatic"},chrom_soft3:{frequencies:[261.6255653006,271.31540105247,281.75060878526,348.83408706747,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Soft chromatic genus is from K. Schlesinger's modified Mixolydian Harmonia"},cifariello:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"F. Cifariello Ciardi, ICMC 86 Proc. 15-tone 5-limit tuning"},ckring1:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring with common pivot of 4:5:6:7 = square 1 3 5 7"},ckring2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,448.50096908674,470.92601754108,523.2511306012],description:"Double-tie circular mirroring with common pivot of 3:5:7:9"},"clampitt-phi":{frequencies:[261.6255653006,289.46753582364,320.2724252102,340.92857683151,377.20990650852,444.26963537301,491.54843559637,523.2511306012],description:'David Clampitt, phi+1 mod 3phi+2, from "Pairwise Well-Formed Scales", 1997'},classr:{frequencies:[261.6255653006,275.93321340298,287.4304306281,313.95067836072,327.03195662575,344.91651675372,367.91095120397,392.4383479509,408.78994578219,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"Marvel projection to the 5-limit of class"},cluster:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"13-tone 5-limit Tritriadic Cluster"},cluster6a:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:6"},cluster6b:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:6:5"},cluster6c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,418.60090448096,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:4:5"},cluster6d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:5:4"},cluster6e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:8"},cluster6f:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:8:6"},cluster6g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:7"},cluster6h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:7:5"},cluster6i:{frequencies:[261.6255653006,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:7"},cluster6j:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,436.04260883433,439.53094970501,523.2511306012],description:"Six-Tone Triadic Cluster 5:7:6"},cluster8a:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:6"},cluster8b:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,392.4383479509,408.78994578219,418.60090448096,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:6:5"},cluster8c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,363.36884069528,418.60090448096,436.04260883433,484.4917875937,523.2511306012],description:"Eight-Tone Triadic Cluster 3:4:5"},cluster8d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Eight-Tone Triadic Cluster 3:5:4"},cluster8e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,334.88072358477,392.4383479509,401.85686830172,418.60090448096,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:8"},cluster8f:{frequencies:[261.6255653006,301.39265122629,313.95067836072,348.83408706747,376.74081403286,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:8:6"},cluster8g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:7"},cluster8h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,457.84473927605,523.2511306012],description:"Eight-Tone Triadic Cluster 4:7:5"},cluster8i:{frequencies:[261.6255653006,307.67166479351,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:7"},cluster8j:{frequencies:[261.6255653006,263.718569823,305.22982618403,313.95067836072,366.27579142084,376.74081403286,436.04260883433,439.53094970501,523.2511306012],description:"Eight-Tone Triadic Cluster 5:7:6"},cohenf_11:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:`Flynn Cohen, 7-limit scale of "Rameau's nephew", 1996`},coleman:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,491.89038573682,523.2511306012],description:"Jim Coleman's ModX piano temperament. TL 16 Mar 1999"},collengettes:{frequencies:[261.6255653006,269.10058145205,275.62199471997,285.40970760065,294.32876096318,302.73815413355,310.07474405997,321.08592105074,331.11985608357,340.58042340025,348.83408706747,358.80077526939,367.49599295996,380.54627680087,392.4383479509,403.65087217807,413.43299207996,428.11456140098,441.49314144476,454.10723120033,465.11211608996,478.40103369253,496.67978412536,507.3950357345,523.2511306012],description:"R.P. Collengettes, from p.23 of d'Erlanger, vol 5. 24 tone Arabic system"},colonna1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,308.86351459099,327.03195662575,348.83408706747,363.36884069528,392.4383479509,399.70572476481,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Colonna 1"},colonna2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Colonna 2"},concertina:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"English Concertina, Helmholtz/Ellis, p. 470"},cons11:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 11 not exceeding 2/1"},cons12:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 12 not exceeding 2/1"},cons13:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 13 not exceeding 2/1"},cons14:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 14 not exceeding 2/1"},cons15:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 15 not exceeding 2/1"},cons16:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 16 not exceeding 2/1"},cons17:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 17 not exceeding 2/1"},cons18:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 18 not exceeding 2/1"},cons19:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 19 not exceeding 2/1"},cons20:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 20 not exceeding 2/1"},cons21:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 21 not exceeding 2/1"},cons8:{frequencies:[261.6255653006,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 8 not exceeding 2/1"},cons9:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 9 not exceeding 2/1"},cons_5:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Set of consonant 5-limit intervals within the octave"},cons_7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals of tetrad 4:5:6:7 and inverse"},cons_7a:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals, harmonic entropy minima"},cont_frac1:{frequencies:[261.6255653006,264.29672053658,267.01859068163,284.39991302433,288.64312378534,304.51680721446,328.36325429535,342.47239171077,368.24757473349,390.36247006958,408.23697512781,419.80330474394,448.3033221197,488.42606438843,498.20005830409],description:"Continued fraction scale 1, see McLaren in Xenharmonikon 15, pp.33-38"},cont_frac2:{frequencies:[261.6255653006,268.67076720771,283.00159623424,287.78825007941,303.56038377389,306.30898587133,329.63288816559,333.85601282718,352.97051886932,380.09613548074,393.10104267352,426.45795861378,432.83315799354,472.91012288255,483.94654132265,519.4303061261],description:"Continued fraction scale 2, see McLaren in Xenharmonikon 15, pp.33-38"},cordier:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Serge Cordier, piano tuning, 1975 (Piano bien temp\xEF\xBF\xBDr\xEF\xBF\xBD et justesse orchestrale)"},corner11:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,343.38355445704,359.73515228832,392.4383479509,400.61414686654,408.78994578219,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 11-limit. Chalmers '96"},corner13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 13-limit. Chalmers '96"},corner17:{frequencies:[261.6255653006,265.71346475842,269.80136421624,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,347.47145391486,359.73515228832,371.99885066179,382.21859930635,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,449.66894036041,451.71289008932,457.84473927605,486.4600354808,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 17-limit."},corner17a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,275.93321340298,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,306.59245933664,312.72430852337,314.76825825228,318.85615771011,327.03195662575,331.11985608357,337.2517052703,343.38355445704,345.42750418595,347.47145391486,359.73515228832,367.91095120397,371.99885066179,382.21859930635,392.4383479509,398.57019713763,400.61414686654,404.70204632437,408.78994578219,416.96574469783,425.14154361347,429.2294430713,441.49314144476,449.66894036041,451.71289008932,457.84473927605,459.88868900496,478.28423656516,486.4600354808,490.54793493862,494.63583439645,515.07533168556,521.20718087229,523.2511306012],description:"Quadratic Corner 17 odd limit."},corner7:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,392.4383479509,400.61414686654,408.78994578219,457.84473927605,490.54793493862,523.2511306012],description:"Quadratic corner 7-limit. Chalmers '96"},corner9:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"First 9 harmonics of 5th through 9th harmonics"},corners11:{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,286.15296204753,294.32876096318,299.00064605783,304.4370214407,314.76825825228,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,434.91003062957,449.66894036041,457.84473927605,465.11211608996,478.40103369253,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Quadratic Corners 11-limit. Chalmers '96"},corners13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,398.6675280771,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"Quadratic Corners 13-limit. Chalmers '96"},corners7:{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Quadratic Corners 7-limit. Chalmers '96"},corrette:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.33704984564,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Corrette temperament"},corrette2:{frequencies:[261.6255653006,272.8349596094,292.34127285051,310.42509491746,326.6631048533,350.01785633742,365.01443422269,391.11111150212,409.71484950008,437.02884834934,466.16376151809,488.33748205014,523.2511306012],description:"Michel Corrette, modified meantone temperament (1753)"},coul_12:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,340.65828815182,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 5/4 3/2 2 successively split largest intervals by smallest interval"},coul_12a:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 6/5 3/2 2 successively split largest intervals by smallest interval"},coul_12sup:{frequencies:[261.6255653006,280.31310567921,294.32876096318,310.68035879446,331.39238271409,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,466.02053819169,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean scale. Op de Coul, 2003"},coul_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical 13-tone 5-limit just system"},coul_17sup:{frequencies:[261.6255653006,276.16031892841,279.06726965397,294.57100685697,310.07474405997,313.95067836072,331.39238271409,348.83408706747,368.21375857121,372.08969287196,392.76134247596,413.43299207996,418.60090448096,441.85651028546,465.11211608996,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean 17-tone scale. Op de Coul, 2003"},coul_20:{frequencies:[261.6255653006,277.18263097687,282.2367833559,293.66476791741,305.55548036855,311.12698372208,329.62755691287,335.63799088232,349.22823143301,363.36884069528,369.99442271164,391.99543598175,399.14308682247,415.30469757995,432.12070439462,440,466.16376151809,474.66379875343,493.88330125613,513.88101620607,523.2511306012],description:"Tuning for a 3-row symmetrical keyboard, Op de Coul, 1989"},coul_27:{frequencies:[261.6255653006,275.62199471997,275.93321340298,279.06726965397,293.99679436797,294.32876096318,310.07474405997,310.42486507835,327.03195662575,330.74639366397,331.11985608357,348.83408706747,367.49599295996,367.91095120397,372.08969287196,372.50983809402,392.4383479509,413.43299207996,413.89982010446,418.60090448096,440.99519155196,441.49314144476,465.11211608996,465.63729761752,490.54793493862,496.11959049595,496.67978412536,523.2511306012],description:"Symmetrical 27-tone 5-limit just system, 67108864/66430125 and 25/24"},counterschismic:{frequencies:[261.6255653006,265.12640119254,268.67408364533,272.2692364133,275.65170316539,279.34022410565,283.07810312094,286.865997406,290.70457953408,294.3160713245,298.25434362449,302.24531258767,306.28968684494,310.09479611189,314.24420508029,318.4491358588,322.71033506911,327.0285519162,331.0913069245,335.5216703313,340.01131880467,344.56104171562,348.84160709651,353.50948891197,358.2398341551,363.03347451625,367.54352740958,372.46166135084,377.44560747755,382.49624206822,387.61445966759,392.4298881006,397.68103103357,403.0024376988,408.3950505989,413.46864135256,419.00130591222,424.60800114791,430.28972009123,436.04746916004,441.46459261549,447.37187116862,453.35819556254,459.4246261707,465.13216971689,471.35614630867,477.663406507,484.05506753352,490.06860102591,496.62625431187,503.27165616309,510.00598369715,516.83042094502,523.2511306012],description:"Counterschismic temperament, g=498.082318, 5-limit"},couperin:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28785294636,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.24345038333,489.02683710225,523.2511306012],description:"Couperin modified meantone"},cross13:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,322.00069575458,332.97799220076,336.37572681506,366.27579142084,373.75080757229,406.97310157871,411.12588832951,425.14154361347,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"13-limit harmonic/subharmonic cross"},cross2:{frequencies:[261.6255653006,282.55561052465,339.14425131559,366.27579142084,436.04260883433,470.92601754108,560.62621135843,605.4763082671,726.73768139056,784.8766959018],description:"Pusey's double 5-7 cross reduced by 3/1"},cross2_5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5 cross reduced by 2/1"},cross2_7:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,348.83408706747,392.4383479509,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"longer 3-5-7 cross reduced by 2/1"},cross3:{frequencies:[261.6255653006,282.55561052465,311.45900631024,336.37572681506,363.28578496026,403.74315632809,436.04260883433,470.92601754108,508.60009894437,565.24041885932,610.45965236807,659.29642455751,726.73768139056,784.8766959018],description:"Pusey's triple 5-7 cross reduced by 3/1"},cross_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"3-5-7 cross reduced by 2/1, quasi diatonic, similar to Zalzal's, Flynn Cohen"},cross_72:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,313.95067836072,343.38355445704,348.83408706747,392.4383479509,398.6675280771,436.04260883433,448.50096908674,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5-7 cross reduced by 2/1"},cross_7a:{frequencies:[261.6255653006,336.37572681506,392.4383479509,436.04260883433,470.92601754108,523.2511306012,610.45965236807,784.8766959018],description:"2-5-7 cross reduced by 3/1"},cruciform:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Cruciform Lattice"},galilei:{frequencies:[261.6255653006,277.66336828161,293.32570896007,311.30674962848,328.86683469969,348.2210758395,368.7143392539,390.41365788584,413.39000965417,437.71854962063,463.47885582013,490.75518955849,523.2511306012],description:"Vincenzo Galilei's approximation"},gamelan_om:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other Music gamelan (7 limit black keys)"},gamelan_udan:{frequencies:[261.6255653006,261.6255653006,290.69507255622,305.22982618403,334.88072358477,351.32575911795,364.00078650518,392.4383479509,402.50086969323,465.11211608996,465.11211608996,501.44900015948,523.2511306012],description:"Gamelan Udan Mas (approx) s6,p6,p7,s1,p1,s2,p2,p3,s3,p4,s5,p5"},ganassi:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Sylvestro Ganassi's temperament (1543)"},gann_custer:{frequencies:[261.6255653006,269.80136421624,274.70684356563,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"Kyle Gann, scale from Custer's Ghost to Sitting Bull, 1/1=G"},gann_frac:{frequencies:[261.6255653006,264.89588486686,294.32876096318,305.22982618403,309.04519901133,313.95067836072,348.83408706747,353.19451315581,366.27579142084,392.4383479509,397.34382730029,412.06026534844,418.60090448096,423.83341578697,457.84473927605,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Fractured Paradise, 1/1=B"},gann_ghost:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Kyle Gann, scale from Ghost Town, 1/1=E"},gann_super:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Superparticular Woman (1992), 1/1=G"},gann_things:{frequencies:[261.6255653006,266.47048317654,272.52663052146,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,387.59343007496,392.4383479509,406.97310157871,408.78994578219,436.04260883433,448.50096908674,465.11211608996,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Kyle Gann, scale from How Miraculous Things Happen, 1/1=A"},garcia:{frequencies:[261.6255653006,268.33391312882,271.68808704293,279.06726965397,286.22284067074,294.32876096318,301.87565226992,310.07474405997,313.95067836072,322.00069575458,331.11985608357,339.61010880366,348.83408706747,357.77855083843,362.25078272391,372.08969287196,381.63045422766,392.4383479509,402.50086969323,407.5321305644,418.60090448096,429.33426100611,441.49314144476,452.81347840488,465.11211608996,470.92601754108,483.00104363188,496.11959049595,509.4151632055,523.2511306012],description:"Linear 29-tone scale by Jos\xEF\xBF\xBD L. Garcia, 1988 15/13-52/45 alternating"},garibaldi24:{frequencies:[261.6255653006,271.45160478635,275.48458787532,290.07776082447,294.38747453868,305.44397410364,309.9819851541,326.40257969757,331.25197480486,343.69301829526,348.79929894143,361.89937857146,367.27615309757,386.73177659938,392.47748849606,407.21801775129,413.26809573999,435.16003837828,441.62525370518,458.21165716245,465.0193526482,489.65270106975,496.92751922541,515.59094540799,523.2511306012],description:"Garibaldi[24] in 94-tET tuning."},genovese:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Denny Genovese's 65-note scale. 3/2=384 Hz"},genovese_12:{frequencies:[261.6255653006,285.40970760065,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Denny Genovese's superposition of harmonics 8-16 and subharmonics 6-12"},genovese_38:{frequencies:[261.6255653006,280.31310567921,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Denny Genovese's 38-note scale. Harm 1..16 x Subh. 1..12"},"gf1-2":{frequencies:[261.6255653006,269.29177952703,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,339.28638158975,349.22823143301,359.46139971304,380.8360868427,403.48177901006,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"16-note scale with all possible quadruplets of 50 & 100 c. Galois Field GF(2)"},"gf2-3":{frequencies:[261.6255653006,270.85177093588,280.40333801024,290.29174037004,300.52885648597,316.56538760238,327.729041887,345.21700307457,357.39105439675,369.99442271164,389.73770840504,410.5345162762,425.01198472693,447.69106452518,471.58032351597,496.7443381147,523.2511306012],description:"16-note scale with all possible quadruplets of 60 & 90 c. Galois Field GF(2)"},gilson7:{frequencies:[261.6255653006,261.6255653006,299.00064605783,313.95067836072,327.03195662575,392.4383479509,373.75080757229,392.4383479509,408.78994578219,408.78994578219,467.18850946536,490.54793493862,523.2511306012],description:"Gilson septimal"},gilson7a:{frequencies:[261.6255653006,261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,373.75080757229,373.75080757229,392.4383479509,418.60090448096,470.92601754108,470.92601754108,523.2511306012],description:"Gilson septimal 2"},golden_10:{frequencies:[261.6255653006,287.58715183149,304.90466328003,323.26497397694,342.73087946949,376.74069565061,399.42672527674,423.47882962254,465.50141625349,493.53231135469,523.2511306012],description:"Golden version of Rapoport's Major 10 out of 13"},golden_5:{frequencies:[261.6255653006,327.03195662575,343.38355445704,392.4383479509,425.14154361347,523.2511306012],description:"Golden pentatonic"},gradus10:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,490.54793493862,882.98628288953,930.22423217991,941.85203508216,1220.91930473613,1255.80271344288,1674.40361792384,2747.0684356563,3270.3195662575,3488.34087067467,5886.5752192635,10595.8353946743,10988.2737426252,11162.69078615893,13081.27826503,14651.0316568336,23546.300877054,31395.067836072,41860.090448096,42383.3415786972,56511.1221049296,75348.1628065728,100464.2170754304,133952.2894339072],description:"Intervals > 1 with Gradus = 10"},gradus3:{frequencies:[261.6255653006,784.8766959018,1046.5022612024],description:"Intervals > 1 with Gradus = 3"},gradus4:{frequencies:[261.6255653006,392.4383479509,1569.7533918036,2093.0045224048],description:"Intervals > 1 with Gradus = 4"},gradus5:{frequencies:[261.6255653006,348.83408706747,1308.127826503,2354.6300877054,3139.5067836072,4186.0090448096],description:"Intervals > 1 with Gradus = 5"},gradus6:{frequencies:[261.6255653006,654.0639132515,697.66817413493,1177.3150438527,2616.255653006,4709.2601754108,6279.0135672144,8372.0180896192],description:"Intervals > 1 with Gradus = 6"},gradus7:{frequencies:[261.6255653006,327.03195662575,436.04260883433,588.65752192635,1395.33634826987,1831.3789571042,3924.383479509,5232.511306012,7063.8902631162,9418.5203508216,12558.0271344288,16744.0361792384],description:"Intervals > 1 with Gradus = 7"},gradus8:{frequencies:[261.6255653006,294.32876096318,313.95067836072,418.60090448096,872.08521766867,915.6894785521,1962.1917397545,2790.67269653973,3531.9451315581,3662.7579142084,7848.766959018,10465.022612024,14127.7805262324,18837.0407016432,25116.0542688576,33488.0723584768],description:"Intervals > 1 with Gradus = 8"},gradus9:{frequencies:[261.6255653006,457.84473927605,465.11211608996,470.92601754108,610.45965236807,627.90135672144,837.20180896192,981.09586987725,1744.17043533733,1765.97256577905,5494.1368713126,5581.34539307947,6540.639132515,7325.5158284168,11773.150438527,15697.533918036,20930.045224048,21191.6707893486,28255.5610524648,37674.0814032864,50232.1085377152,66976.1447169536],description:"Intervals > 1 with Gradus = 9"},grady11:{frequencies:[261.6255653006,277.4816601673,290.69507255622,305.22982618403,332.97799220076,356.76213450082,378.42269266694,392.4383479509,420.46965851882,458.69417292962,481.6288815761,504.56359022259,523.2511306012],description:"Kraig Grady's dual [5 7 9 11] hexany scale"},grady7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Kraig Grady's 7-limit "Centaur" scale (1987), see Xenharmonikon 16`},grady7t:{frequencies:[261.6255653006,274.79177208104,293.65339461903,305.54250820508,326.68804977983,349.10444036529,366.6627351378,392.00975085961,407.77240291308,436.0718257558,457.96530027286,489.37179607373,523.2511306012],description:"Tempered version of grady7 with egalised 225/224"},grady_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Kraig Grady, letter to Lou Harrison, published in 1/1 7 (1) 1991 p 5."},grammateus:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"H. Grammateus (Heinrich Schreiber) (1518). B-F# and Bb-F 1/2 P. Also Marpurg temp.nr.6"},graupner:{frequencies:[261.6255653006,277.083518473,293.59062125964,310.9808189359,329.55130849159,349.11528328816,370.00708353276,392.01655298731,415.20348378516,439.96413779539,466.04943410823,493.90517116572,523.2511306012],description:"Johann Gottlieb Graupner's temperament (1819)"},groenewald_21:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"J\xEF\xBF\xBDrgen Gr\xEF\xBF\xBDnewald, new meantone temperament I (2000)"},gross:{frequencies:[13.75,13.83042567154,13.91662997964,13.99803029322,14.07990672861,14.1622619889,14.24509903843,14.32842061343,14.41222946472,14.49652860895,14.58132083065,14.67220542837,14.75802520833,14.84434696019,14.93117353378,15.01850805439,15.10635340681,15.19471249121,15.28358848801,15.37298433293,15.46880332718,15.55928251958,15.65029093742,15.74183158529,15.83390775812,15.92652249736,16.01967895316,16.113380201,16.20762961362,16.30865090754,16.4040424858,16.49999202274,16.59650278193,16.69357794961,16.79122101993,16.88943521823,16.98822378696,17.08759028197,17.18753798549,17.29466699621,17.39582592037,17.49757653721,17.59992220598,17.70286661052,17.80641315127,17.91056524676,18.01532664586,18.12070080902,18.23364617402,18.34029731861,18.44757228066,18.55547460176,18.66400816581,18.77317655783,18.88298349104,18.99343259063,19.10452783216,19.2236053387,19.33604689279,19.44914613325,19.56290690697,19.67733296969,19.79242844011,19.90819712001,20.02464283144,20.14176976577,20.26731246322,20.38585868839,20.50509842475,20.62503561099,20.74567420676,20.86701855437,20.98907266203,21.11184068121,21.23532666504,21.36768545088,21.49266790503,21.61838152318,21.74483045784,21.87201888365,21.99995137868,22.12863216875,22.25806563075,22.38825603783,22.52780097787,22.65956910312,22.79210808945,22.92542231482,23.05951631373,23.1943945132,23.33006176809,23.46652255971,23.60378139323,23.75090264526,23.88982499399,24.02955978014,24.17011203339,24.3114863964,24.45368753658,24.59672057234,24.74059022832,24.88530139802,25.04041015894,25.18687501732,25.33419642278,25.48237967807,25.63142967793,25.78135134315,25.93215007005,26.08383083979,26.23639881154,26.39992889083,26.55434576426,26.70966568928,26.86589425653,27.0230366265,27.18109814415,27.34008402779,27.5],description:"Gross temperament, g=91.531021, 5-limit"},groven:{frequencies:[261.6255653006,264.7464578752,272.5650766677,275.81646505128,279.10663876478,290.77709705464,294.24573392894,297.75574765819,306.54921255625,310.20599265769,313.90639394672,327.03195662575,330.93307160522,334.88072358477,344.77058253591,348.88329767713,353.04507480266,363.47137260637,367.80716871461,372.19468374184,387.75749219625,392.38299382393,397.06367008113,408.78994578219,413.66634097248,418.60090448096,436.10412364188,441.30634506723,446.57062302059,459.75895986689,465.24335632603,470.79317533731,484.69686416326,490.47874118496,496.32958936031,517.08292506126,523.2511306012],description:"Eivind Groven's 36-tone scale with 1/8-schisma temp. fifths and 5/4 (1948)"},groven_ji:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,517.37477513058,523.2511306012],description:"Untempered version of Groven's 36-tone scale"},gumbeng:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.9259392365,525.62941881859],description:"Scale of gumbeng ensemble, Java. 1/1=440 Hz."},gunkali:{frequencies:[261.6255653006,275.93321340298,282.55561052465,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Indian mode Gunkali, see Dani\xEF\xBF\xBDlou: Intr. to the Stud. of Mus. Scales, p.175"},gyaling:{frequencies:[261.6255653006,283.49766588023,307.55338551939,339.28638158975,347.81902735497,393.58362272115,435.9522698367],description:'Tibetan Buddhist Gyaling tones measured from CD "The Diamond Path", Ligon 2002'},far12_104:{frequencies:[261.6255653006,276.7193479141,294.32876096318,311.93817401225,329.54758706133,349.67263054599,369.79767403066,392.4383479509,415.07902187114,440.23532622697,465.3916305828,493.06356537421,523.2511306012],description:"Farey approximation to 12-tET with den=104"},far12_65:{frequencies:[261.6255653006,277.72560008833,293.82563487606,309.92566966379,330.05071314845,350.17575663311,370.30080011777,390.42584360243,414.57589578403,438.72594796562,466.90100884415,495.07606972267,523.2511306012],description:"Farey approximation to 12-tET with den=65"},far12_80:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,330.30227619201,349.92419358955,369.5461109871,392.4383479509,415.3305849147,441.49314144476,467.65569797482,493.81825450488,523.2511306012],description:"Farey approximation to 12-tET with den=80"},farey3:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"Farey fractions between 0 and 1 until 3rd level, normalised by 2/1"},farey4:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Farey fractions between 0 and 1 until 4th level, normalised by 2/1"},farey5:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,348.83408706747,366.27579142084,373.75080757229,380.54627680087,392.4383479509,402.50086969323,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Farey fractions between 0 and 1 until 5th level, normalised by 2/1"},farnsworth:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Farnsworth's scale"},fibo_9:{frequencies:[261.6255653006,277.97716313189,327.03195662575,343.38355445704,363.82305174615,392.4383479509,425.14154361347,449.66894036041,523.2511306012],description:"First 9 Fibonacci terms reduced by 2/1, B. McLaren, XH 13, 1991"},finnamore:{frequencies:[261.6255653006,277.97716313189,310.68035879446,348.83408706747,392.4383479509,416.96574469783,457.84473927605,466.02053819169,523.2511306012],description:"David J. Finnamore, Tuning List 9 May '97. Tetrachordal scale, 17/16x19/17x64/57"},finnamore53:{frequencies:[261.6255653006,286.15296204753,310.68035879446,327.03195662575,343.38355445704,359.73515228832,367.91095120397,376.08675011961,392.4383479509,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,457.84473927605,474.19633710734,523.2511306012],description:'David J. Finnamore, tuning for "Crawlspace", 53-limit, 1998.'},finnamore_11:{frequencies:[261.6255653006,287.78812183066,294.32876096318,305.22982618403,323.76163705949,331.11985608357,343.38355445704,348.83408706747,392.4383479509,431.68218274599,441.49314144476,457.84473927605,485.64245558924,515.07533168556,523.2511306012],description:"David J. Finnamore, 11-limit scale, Tuning List 3 Sept '98"},finnamore_7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,309.04519901133,331.11985608357,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,463.567798517,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 21/20 &15/14"},finnamore_7a:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,331.11985608357,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,473.02836583367,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 15/14 &21/20"},finnamore_jc:{frequencies:[261.6255653006,276.16031892841,310.68035879446,348.83408706747,392.4383479509,414.24047839262,466.02053819169,523.2511306012],description:"Chalmers' modification of Finnamore. Tuning List 9-5-97 19/18 x 9/8 x 64/57"},fisher:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.67535808973,327.03195662575,349.71841093413,365.63284485857,391.22147055517,410.55062036439,437.39890198442,467.47330218196,489.02683992698,523.2511306012],description:"Alexander Metcalf Fisher's modified meantone temperament (1818)"},"fj-10tet":{frequencies:[261.6255653006,280.31310567921,300.51585203447,322.00069575458,345.20039866051,370.01329949656,396.52624740872,425.14154361347,455.42228033808,488.36772189445,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 10-tet"},"fj-12tet":{frequencies:[261.6255653006,277.19851561611,293.6613488068,311.12229387098,329.64821227876,348.83408706747,370.01329949656,391.99491478937,415.52295665389,440.00663255101,466.16918908107,490.54793493862,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 12-tet"},"fj-13tet":{frequencies:[261.6255653006,275.96121271433,291.05844139692,306.97399661937,323.91736656265,341.56671025356,360.27127025001,379.97998769849,400.78810003496,422.62591317789,445.95266812602,41.6222490251,496.18641694941,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 13-tet"},"fj-14tet":{frequencies:[261.6255653006,274.92856014639,288.87822835275,303.4856557487,318.85615771011,335.0643204727,352.18826098158,370.01329949656,388.70083987518,408.5030756448,429.33426100611,451.0785608631,473.88781639354,497.93252750759,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 14-tet"},"fj-15tet":{frequencies:[261.6255653006,274.08392555301,286.94416839421,300.51585203447,314.76825825228,329.64821227876,345.20039866051,361.51896296083,378.66858135613,396.52624740872,415.52295665389,392.4383479509,455.42228033808,477.08191319521,499.46698830115,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 15-tet"},"fj-16tet":{frequencies:[261.6255653006,273.25336820285,285.40970760065,297.96244937013,311.12229387098,324.92207303462,339.29565499922,354.2846196779,370.01329949656,386.4008349055,403.52417698906,421.50785520652,440.00663255101,459.44001711325,479.64686971777,500.9851250437,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 16-tet"},"fj-17tet":{frequencies:[261.6255653006,272.52663052146,283.8915708581,295.75063903546,307.98958953109,320.70230585235,334.29933343966,348.03400888612,362.53828334512,373.75080757229,392.4383479509,409.71550792358,426.86276443782,444.76346101102,462.87600014722,482.37213602298,502.32108537715,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 17-tet"},"fj-18tet":{frequencies:[261.6255653006,271.88539139082,282.55561052465,293.6613488068,305.22982618403,317.12189733406,329.64821227876,342.60490694126,355.98232655655,370.01329949656,384.51030051755,399.57359064092,415.52295665389,431.68218274599,448.50096908674,466.16918908107,484.4917875937,503.12608711654,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 18-tet"},"fj-19tet":{frequencies:[261.6255653006,271.31540105247,281.44568388398,291.81313052759,302.73815413355,313.95067836072,325.69713231299,337.73482066077,350.31219760589,363.36884069528,376.74081403286,390.78248994267,405.26313056367,420.46965851882,436.04260883433,451.89870370104,468.95148497277,485.87604984397,504.56359022259,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 19-tet"},"fj-20tet":{frequencies:[261.6255653006,270.8594087818,280.31310567921,290.29686012806,300.51585203447,311.12229387098,322.00069575458,333.44434793214,345.20039866051,357.34223553253,370.01329949656,383.09457776159,396.52624740872,410.48149038542,425.14154361347,440.00663255101,455.42228033808,470.92601754108,488.36772189445,505.41302387616,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 20-tet"},"fj-21tet":{frequencies:[261.6255653006,270.34641747729,279.46367202564,288.87822835275,298.56093922539,308.58400009814,318.85615771011,329.64821227876,340.72166643799,352.18826098158,364.00078650518,376.08675011961,388.70083987518,401.78211814021,415.52295665389,429.33426100611,443.62595855319,457.84473927605,473.88781639354,489.85212226495,506.18859373377,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 21-tet"},"fj-22tet":{frequencies:[261.6255653006,270.06509966514,278.68810216803,287.55242312318,296.76929795292,306.29334474217,316.13089140489,326.18252297218,336.37572681506,347.40443916965,358.52392281934,370.01329949656,381.83190611439,392.4383479509,392.4383479509,419.69101100305,433.03541842858,446.94367405519,461.28718092474,475.68284600109,491.34557385722,506.89953276991,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 22-tet"},"fj-23tet":{frequencies:[261.6255653006,269.55361273395,277.97716313189,286.37392958579,295.1673044417,304.21577360535,313.47928094576,323.18452184192,332.97799220076,343.1154954762,353.6790049434,364.40703738298,375.66747838035,387.20583664489,398.97898708342,411.12588832951,423.58424858192,436.04260883433,449.99597231703,463.79077485106,477.96978276071,492.47165233054,507.86139146587,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 23-tet"},"fj-24tet":{frequencies:[261.6255653006,269.32043486826,277.19851561611,285.40970760065,293.6613488068,302.32287545847,311.12229387098,320.2657782128,329.64821227876,339.29565499922,348.83408706747,348.83408706747,370.01329949656,380.54627680087,391.99491478937,403.52417698906,415.52295665389,427.53446036927,440.00663255101,452.81347840488,466.16918908107,479.64686971777,490.54793493862,508.30109829831,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 24-tet"},"fj-26tet":{frequencies:[261.6255653006,268.69652652494,275.96121271433,283.42769574232,291.05844139692,299.00064605783,306.97399661937,315.29234792636,323.91736656265,332.57487114483,341.56671025356,350.8160989258,360.27127025001,370.01329949656,379.97998769849,390.22118214327,400.78810003496,411.12588832951,422.62591317789,434.18710837121,445.95266812602,457.84473927605,457.84473927605,483.00104363188,496.18641694941,509.48136400643,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 26-tet"},"fj-30tet":{frequencies:[261.6255653006,267.70988077271,274.08392555301,280.31310567921,286.94416839421,293.6613488068,300.51585203447,307.52478728316,314.76825825228,322.00069575458,329.64821227876,337.35928157183,345.20039866051,353.19451315581,361.51896296083,370.01329949656,378.66858135613,387.59343007496,396.52624740872,405.78659107848,415.52295665389,425.14154361347,392.4383479509,444.76346101102,455.42228033808,466.16918908107,477.08191319521,488.36772189445,499.46698830115,511.35905945117,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 30-tet"},"fj-31tet":{frequencies:[261.6255653006,267.57160087561,273.51763645063,279.79400733536,286.15296204753,292.60754013883,299.00064605783,305.96888145324,312.81317590289,319.76457981184,327.03195662575,334.53760808929,342.12573923925,349.884792149,357.81143489641,366.27579142084,373.75080757229,382.37582620857,391.25985441351,400.13321751856,409.20921752145,418.60090448096,428.11456140098,437.54620403721,447.51741432997,457.84473927605,467.90726101838,478.40103369253,489.12605686634,500.50108144463,511.62332769895,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 31-tet"},"fj-36tet":{frequencies:[261.6255653006,266.75547834571,271.88539139082,277.19851561611,282.55561052465,288.08208313999,293.6613488068,299.00064605783,305.22982618403,311.12229387098,317.12189733406,323.18452184192,329.64821227876,327.03195662575,342.60490694126,348.83408706747,355.98232655655,362.89997767503,370.01329949656,377.22755927063,384.51030051755,391.99491478937,399.57359064092,406.97310157871,415.52295665389,423.35773294097,431.68218274599,440.00663255101,448.50096908674,436.04260883433,466.16918908107,475.19745534191,484.4917875937,490.54793493862,503.12608711654,513.18860885887,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 36-tet"},"fj-41tet":{frequencies:[261.6255653006,266.05989691586,270.64713651786,275.21650375777,279.87851171692,284.71017400359,289.532292266,294.32876096318,299.49242343621,304.63250754179,309.81974838229,315.13988547572,320.49131749323,325.95972070239,331.39238271409,337.09447836808,342.81970625596,348.83408706747,354.64798851859,360.72615821749,366.27579142084,373.13810133036,379.35706968587,386.00493241072,392.4383479509,399.32323124828,405.97070477679,413.09299784305,419.97788114044,427.14378008261,434.48531380278,441.85651028546,449.45930449077,436.04260883433,465.11211608996,472.93852188955,480.82536325516,489.12605686634,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 41-tet"},"fj-42tet":{frequencies:[261.6255653006,265.98599138894,270.34641747729,274.92856014639,279.46367202564,284.05061375494,288.87822835275,293.6613488068,298.56093922539,303.4856557487,308.58400009814,313.7026920429,318.85615771011,324.18820048118,329.64821227876,335.0643204727,340.72166643799,346.37750898953,352.18826098158,358.01393146398,364.00078650518,370.01329949656,376.08675011961,382.37582620857,388.70083987518,395.22159864559,401.78211814021,408.5030756448,415.52295665389,422.16852582597,429.33426100611,436.04260883433,443.62595855319,451.0785608631,457.84473927605,466.16918908107,473.88781639354,481.94183081689,489.85212226495,497.93252750759,506.18859373377,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 42-tet"},"fj-43tet":{frequencies:[261.6255653006,265.84533248287,270.2034526875,274.70684356563,279.06726965397,283.42769574232,288.1672893166,292.86443876933,297.71185016965,302.50455987882,307.4100392282,312.38873468728,317.43901923139,322.67153053741,327.85988562987,332.97799220076,338.57426097725,344.24416486921,348.83408706747,355.41586229515,361.11697745717,367.05676325756,372.95559308809,379.09010482332,385.17097113699,391.45479319413,397.88888056133,404.33041910093,392.4383479509,417.48760420309,424.25767346043,431.1976909584,438.2228218785,445.32011114996,452.54151835779,459.82675113439,467.18850946536,475.05694751951,483.00104363188,490.54793493862,498.33441009638,506.89953276991,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 43-tet"},"fj-53tet":{frequencies:[261.6255653006,265.06800694929,268.51044859798,272.09058791262,275.69145590816,279.30296836145,282.98275430473,286.71294827463,290.48132617934,294.32876096318,298.13145813324,302.11523612093,306.05254808749,310.07474405997,313.95067836072,318.31110444906,322.46872002167,326.7649917632,331.03642956402,335.41739141103,336.37572681506,344.24416486921,348.83408706747,353.42400926572,358.01393146398,362.89997767503,367.52162744608,372.31330446624,377.3445653374,382.37582620857,387.20583664489,392.4383479509,397.67085925691,402.82031482791,408.13588186894,413.53718386224,418.60090448096,424.41480593208,429.81342870813,436.04260883433,441.49314144476,447.29532132038,453.1728541814,459.07882213124,465.11211608996,470.92601754108,477.46665667359,483.76047923507,485.87604984397,496.55464434604,503.12608711654,509.83443494476,516.36624730382,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 53-tet"},"fj-54tet":{frequencies:[261.6255653006,265.02329991489,268.42103452919,271.88539139082,275.39533189537,279.06726965397,282.55561052465,286.15296204753,289.90941019796,293.6613488068,297.46468383493,301.26580246736,305.22982618403,309.19384990071,313.15787361738,317.12189733406,321.29455387793,325.43667878855,329.64821227876,333.91683992313,338.19890148614,342.60490694126,346.93824963775,351.55935337268,355.98232655655,360.61902244137,365.28852513669,370.01329949656,374.76094489005,379.61356533813,384.51030051755,389.53139722534,394.5147413263,399.57359064092,404.77917650282,409.88005230427,415.52295665389,420.652869699,426.07592063241,431.68218274599,436.04260883433,442.75095666255,448.50096908674,454.40229762736,460.26719821402,466.16918908107,472.20223981084,478.40103369253,484.4917875937,490.54793493862,497.08857407114,503.12608711654,510.16985233617,516.54278277298,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 54-tet"},"fj-55tet":{frequencies:[261.6255653006,264.93728131706,268.33391312882,271.68808704293,275.15792212649,278.68810216803,282.14521748104,285.77561748219,289.37373131733,293.02063313667,296.76929795292,300.51585203447,304.33994330886,308.21641939523,312.11470948142,316.13089140489,319.76457981184,324.10331223806,328.22116374075,332.33517754401,336.37572681506,340.90603963412,345.20039866051,348.83408706747,353.96400011258,358.52392281934,363.07221307022,367.68998366571,372.31330446624,377.04860881557,381.83190611439,386.75083566176,391.58336244338,396.52624740872,401.56482115906,406.65712867376,411.81801945465,416.96574469783,418.60090448096,427.65717404906,433.03541842858,438.60756535689,444.15502946381,449.8123754291,455.42228033808,461.28718092474,467.18850946536,472.93852188955,479.03272519828,485.0974023282,491.34557385722,497.60156537565,503.87145909745,510.16985233617,516.71049146868,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 55-tet"},"fj-5tet":{frequencies:[261.6255653006,300.51585203447,345.20039866051,396.52624740872,455.42228033808,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 5-tet"},"fj-60tet":{frequencies:[261.6255653006,264.66772303665,267.70988077271,270.8594087818,274.08392555301,277.19851561611,280.31310567921,283.6903720127,286.94416839421,290.29686012806,293.6613488068,297.10021822272,300.51585203447,304.05133264664,307.52478728316,311.12229387098,314.76825825228,318.50068819203,322.00069575458,325.79787377056,329.64821227876,333.44434793214,337.35928157183,341.25073734861,345.20039866051,348.83408706747,353.19451315581,357.34223553253,361.51896296083,365.74186169574,370.01329949656,374.3258088147,378.66858135613,383.09457776159,387.59343007496,391.99491478937,396.52624740872,401.15920012759,405.78659107848,410.48149038542,415.52295665389,420.18651396763,425.14154361347,429.81342870813,434.91003062957,440.00663255101,444.76346101102,450.23934493592,455.42228033808,460.95932933915,466.16918908107,470.92601754108,477.08191319521,482.55382044333,488.36772189445,490.54793493862,499.46698830115,505.41302387616,511.35905945117,517.30509502619,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 60-tet"},"fj-66tet":{frequencies:[261.6255653006,264.37951861955,267.19206668997,270.06509966514,272.83808952777,275.76748774928,278.68810216803,281.58005756929,284.57517629188,287.55242312318,290.69507255622,293.6613488068,296.76929795292,299.91223339337,302.93486508491,306.29334474217,309.48390041656,312.81317590289,316.13089140489,319.38705374359,322.78478835788,326.18252297218,329.64821227876,332.97799220076,336.37572681506,340.11323489078,343.8507429665,347.40443916965,351.12904816659,354.74652922115,358.52392281934,362.25078272391,366.27579142084,370.01329949656,373.75080757229,377.90359432309,381.83190611439,385.89770881839,389.97018224052,392.4383479509,398.12586024004,402.50086969323,406.65712867376,411.12588832951,415.52295665389,419.69101100305,424.01384721132,428.62060698183,433.03541842858,437.71969579139,442.27178896054,446.94367405519,451.89870370104,456.45311392871,461.28718092474,466.16918908107,470.92601754108,475.68284600109,481.05345877852,485.87604984397,491.34557385722,496.41773928832,501.44900015948,506.89953276991,512.35006538034,517.80059799077,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 66-tet"},"fj-72tet":{frequencies:[195.99771799087,197.9006084568,199.84081050049,201.76235675531,203.68390301012,205.67661764474,207.66424882366,209.67197738558,211.67753543014,213.81569235368,215.817711945,217.77524221208,219.99743856118,222.13074705632,223.99739198957,226.48625190056,228.66400432268,230.8417567448,233.07836734049,235.19726158904,237.57299150408,239.92824098882,242.11482810637,244.5635242187,246.9571246685,249.45164107929,251.74018824515,254.18454051941,256.66367832138,259.11562717437,261.33029065449,264.17083729204,266.68541956135,269.28382123963,271.86780237443,274.39680518722,277.19677258709,279.99673998696,282.60136082405,285.0875898049,288.0572521987,290.83532347032,293.66437746429,296.5093682426,299.34196929515,302.30156503677,304.88533909691,307.99641398565,311.29049327962,313.59634878539,317.15994365795,320.28895378996,323.39623468494,326.46784071315,329.63252571192,332.8263135694,335.99608798435,339.22681959958,342.55457018224,345.87832586624,349.232297511,352.79589238357,355.99585512627,359.32914964993,362.95873702013,366.4305162438,367.49572123288,373.6206499201,376.91868844398,380.79556638226,384.45706221286,388.2262490973,391.99543598174],description:"Franck Jedrzejewski continued fractions approx. of 72-tet"},"fj-78tet":{frequencies:[138.59131548844,139.82873794816,141.06616040788,142.33702671786,143.60064014465,144.89092073791,146.18536017274,147.4753741736,148.781853392,150.14059177914,151.48353088271,152.80580938469,154.18283848089,155.56168065029,156.95883922787,158.39007484393,159.76498868806,161.21846903757,162.6138101731,164.12129465736,165.53962683341,167.02030328094,168.55700532378,170.00534699915,171.58924774759,173.06676710248,174.62505751543,176.17540104463,177.75842638735,179.35346710269,180.93866188769,182.53490332624,184.15558359423,185.8383548595,187.50589742554,188.98815748424,190.84705739392,192.48793817839,194.02784168382,196.00771761937,197.74614527009,199.57149430335,201.28738678083,203.10796235375,204.87411854813,206.71247055903,207.88697323266,210.45347907504,212.31010032272,214.18657848213,216.10849194808,217.78635291041,220.11561871693,221.7461047815,223.87827886594,225.96410133985,228.00506741647,230.00260868294,232.05987709692,234.17153306667,236.2351968553,238.37706264012,240.41350645954,242.53480210477,244.7463656498,246.9445257794,249.1343885566,251.39820018833,253.59261982991,255.8608901325,258.1602935569,260.55167311827,262.84559834014,265.13121223875,267.51346943117,269.88835121433,272.23294113801,274.70778605744,277.18263097688],description:"Franck Jedrzejewski continued fractions approx. of 78-tet"},"fj-7tet":{frequencies:[261.6255653006,288.87822835275,318.85615771011,352.18826098158,388.70083987518,429.33426100611,473.88781639354,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 7-tet"},"fj-84tet":{frequencies:[97.99885899544,98.81551615374,99.63217331203,100.44883047033,101.26548762862,102.12512674262,102.98185182572,103.83212441184,104.68059938149,105.53723276432,106.39876119505,107.33208366167,108.20707347413,109.09306944775,109.9987192806,110.89344570537,111.83399203009,112.76581035092,113.67867643471,114.64017467391,115.58839778949,116.53918367025,117.50574088079,118.47623251688,119.43610940069,120.45693084856,121.43336875522,122.4985737443,123.47856233425,124.48503710232,125.50731064328,126.58185953578,127.62642101732,128.62350243151,129.74496824748,130.66514532725,131.9215409554,132.99845149381,134.10370178323,135.17083999371,136.34623860235,137.19840259362,138.59838629355,139.73911375276,140.87335980595,142.09834554339,143.22910160872,144.41937115117,145.59830479323,146.83218873215,148.0408295463,149.25980062382,150.498247743,151.74016876713,153.01576229113,154.29607586516,155.64524663982,156.7981743927,158.13452246991,159.45577056885,160.81864040277,162.07503603092,163.33143165907,164.81626285597,166.17197829662,167.54643634704,168.96354999214,170.33135015874,171.49800324202,173.20728566636,174.61614875551,176.03498745477,177.50736723702,178.95443816559,180.52421393897,181.99788099153,183.48722535316,183.74786061645,186.51395744293,188.05186455882,189.60648805639,191.21728584476,192.8364644749,194.36440367429,195.99771799088],description:"Franck Jedrzejewski continued fractions approx. of 84-tet"},"fj-8tet":{frequencies:[261.6255653006,285.40970760065,311.12229387098,339.29565499922,370.01329949656,403.52417698906,440.00663255101,479.64686971777,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 8-tet"},"fj-90tet":{frequencies:[69.29565774422,69.83283338565,70.37840239647,70.9071846685,71.46114704873,72.0131345185,72.59545097014,73.14541650779,73.69538204544,74.24534758309,74.83931036376,75.40998048636,76.00168913882,76.58993750677,77.19009976571,77.78084032514,78.38361285822,78.99704982841,79.59636362512,80.23707738804,80.84493403492,81.4527906818,82.08870225085,82.70772053342,83.37133822351,83.99473665966,84.69469279849,85.2869633775,85.97794571968,86.61957218027,87.31252875772,87.95218098305,88.65767976099,89.35492709123,90.08435506749,90.74431371267,91.43177063473,92.14038007748,92.85618137725,93.5491379547,94.28753430771,95.03404490636,95.75399979201,96.51895185802,97.25706350066,98.00385880968,98.74631228551,99.50145727375,100.29634673506,101.05616754365,101.84361819984,102.66023369514,103.42635484212,103.94348661633,105.02623126858,105.83336819117,106.60870422188,107.47897935838,108.27446522534,109.14066094715,110.05780935847,110.87305239075,111.72157064884,112.60544383436,113.39289449054,114.33783527796,115.19278170468,116.11704811194,116.93642244337,117.80261816517,118.79255613295,119.69249974002,120.62577459179,121.5942673625,122.52275717094,123.4722628897,124.41720367712,125.39214258478,126.36267000417,127.35418180019,128.32529211893,129.35189445588,130.27583655913,131.29703572589,132.29171023897,133.26088027735,134.39157865546,135.4415128637,136.49144707195,137.52522844622,138.59131548844],description:"Franck Jedrzejewski continued fractions approx. of 90-tet"},"fj-96tet":{frequencies:[48.99942949772,49.35708956705,49.70956615711,50.0646344868,50.44058918883,50.81422318282,51.17718191984,51.5338827476,51.91606220592,52.2660581309,52.67438671005,53.04896912563,53.45392308842,53.81904551389,54.21213476343,54.59936429746,54.9993596403,55.39065943221,55.80490581685,56.20522795327,56.62156297514,57.01751796098,57.44760699733,57.85474808165,58.26959183513,58.69162434342,59.11042288614,59.54361052887,59.98206024721,60.41025554513,60.85413018265,61.24928687215,61.73928116713,62.19158359326,62.61038213598,63.09515579158,63.54613512986,63.99925485416,64.47293354963,64.92424408448,65.33257266363,65.89578449693,66.3533941115,66.81740386053,67.32095530991,67.84536391992,68.30223505743,68.78766064103,69.29919314678,69.78706625433,70.30352927934,70.77695371893,71.27189745123,71.86582992999,72.36838818125,72.90159022832,73.41609436608,73.94459360565,74.47913283653,75.03037641838,75.5753912592,76.10549687944,76.66039776256,77.21122223883,77.82262331991,78.34524166943,78.94352530188,79.48796340741,80.07223844749,80.64489438166,81.23589627254,81.66571582953,82.40813142798,82.999033639,83.58726208435,84.21776944921,84.8067048999,85.43490271397,86.04777863014,86.69129834212,87.30807437776,87.94769397027,88.57589178434,89.20408959841,89.83228741249,90.46048522656,91.16172929808,91.87393030822,92.49330511929,93.09891604567,93.82869478287,94.4988997456,95.19889159557,95.91377688915,96.59887529551,97.28872233605,97.99885899544],description:"Franck Jedrzejewski continued fractions approx. of 96-tet"},"fj-9tet":{frequencies:[261.6255653006,282.55561052465,305.22982618403,329.64821227876,355.98232655655,384.51030051755,415.52295665389,448.50096908674,484.4917875937,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 9-tet"},flavel:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Bill Flavel's just tuning. Tuning List 6-5-98"},fogliano:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord with D-/D and Bb-/Bb"},fogliano1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.1, Musica theorica (1529)"},fogliano2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.2"},"fokker-h":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker-H 5-limit per.bl. synt.comma&small diesis, KNAW B71, 1968"},"fokker-ht":{frequencies:[261.6255653006,272.31140503734,279.67242998298,290.89121260742,305.67073265504,313.92185180985,326.66733279836,335.5942968927,349.22294231864,363.36596605244,376.74379448613,392.00137290182,407.92073675044,419.068143928,436.08264938702,447.85404100892,470.60848490625,489.4864783277,502.71810253025,523.2511306012],description:"Tempered version of Fokker-H per.bl. with better 6 tetrads, OdC"},"fokker-k":{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Fokker-K 5-limit per.bl. of 225/224 & 81/80 & 10976/10935, KNAW B71, 1968"},"fokker-l":{frequencies:[261.6255653006,271.31540105247,282.62020942966,291.99281841585,301.39265122629,313.95067836072,325.57848126297,339.14425131559,350.39138209902,363.36884069528,376.74081403286,390.69417751556,403.65087217807,420.46965851882,436.04260883433,454.2110508691,468.83301301868,484.38104661368,504.56359022259,523.2511306012],description:"Fokker-L 7-limit periodicity block 10976/10935 & 225/224 & 15625/15552, 1969"},"fokker-lt":{frequencies:[261.6255653006,272.07297743248,282.57734531132,291.77233860052,302.20925621315,313.90139500947,326.42149564976,339.58797317787,349.9403315901,363.14714144228,376.97081214523,391.19775936204,403.12344267272,419.38375585596,436.11106867998,452.98371913917,469.18728997524,484.4545223075,503.15865298196,523.2511306012],description:"Tempered version of Fokker-L per.bl. with more triads"},"fokker-m":{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker-M 7-limit periodicity block 81/80 & 225/224 & 1029/1024, KNAW B72, 1969"},"fokker-n":{frequencies:[261.6255653006,265.7783520514,273.37201925287,277.71125765371,286.15296204753,290.69507255622,299.00064605783,303.74668805875,313.95067836072,318.93402246168,328.62879235146,333.84512238879,343.38355445704,348.83408706747,358.80077526939,364.4960256705,375.57576268738,381.53728273004,392.4383479509,398.6675280771,410.05802887931,416.56688648057,429.2294430713,436.04260883433,450.69091522486,457.84473927605,470.92601754108,478.40103369253,492.94318852719,500.76768358318,515.07533168556,523.2511306012],description:"Fokker-N 7-limit periodicity block 81/80 & 2100875/2097152 & 1029/1024, 1969"},"fokker-n2":{frequencies:[261.6255653006,265.7783520514,272.52663052146,279.06726965397,286.15296204753,290.69507255622,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"Fokker-N different block shape"},"fokker-p":{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.31310567921,286.15296204753,290.69507255622,299.00064605783,306.17666156322,312.97980223949,320.35783506196,327.03195662575,334.88072358477,341.85740532612,350.39138209902,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.69417751556,400.44729382745,408.78994578219,418.60090448096,427.32175665765,437.39523080459,447.11400319927,457.84473927605,470.92601754108,478.40103369253,488.36772189445,500.76768358318,510.98743222773,523.2511306012],description:"Fokker-P 7-limit periodicity block 65625/65536 & 6144/6125 & 2401/2400, 1969"},"fokker-q":{frequencies:[261.6255653006,265.7783520514,269.10058145205,272.52663052146,274.70684356563,279.06726965397,284.76252005507,286.15296204753,290.69507255622,294.32876096318,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,318.93402246168,321.92208230347,327.03195662575,332.22294006425,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,381.53728273004,387.59343007496,392.4383479509,398.6675280771,401.85686830172,408.78994578219,412.06026534844,418.60090448096,425.24536328225,429.2294430713,436.04260883433,439.53094970501,448.50096908674,454.2110508691,457.84473927605,465.11211608996,470.92601754108,478.40103369253,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-Q 7-limit per.bl. 225/224 & 4000/3969 & 6144/6125, KNAW B72, 1969"},"fokker-r":{frequencies:[261.6255653006,264.95644634031,268.26840191956,272.52663052146,275.55899540689,279.06726965397,282.62020942966,287.04062021552,290.69507255622,294.32876096318,298.07600213285,301.80195215951,306.17666156322,310.07474405997,313.95067836072,317.94773560837,322.92069774245,327.03195662575,331.19555792538,334.88072358477,340.1962906258,344.44874425862,348.83408706747,353.19451315581,357.69120255941,363.36884069528,367.91095120397,372.08969287196,376.74081403286,382.72082695402,387.59343007496,392.4383479509,397.43466951046,402.40260287934,408.78994578219,413.33849311034,418.60090448096,423.93031414449,430.56093032327,436.04260883433,441.49314144476,447.11400319927,453.59505416773,459.26499234482,465.11211608996,470.92601754108,476.92160341255,484.38104661368,490.54793493862,496.79333688808,502.32108537715,510.29443593869,516.67311638793,523.2511306012],description:"Fokker-R 7-limit per.bl. 4375/4374 & 65625/65536 & 6144/6125, 1969"},"fokker-s":{frequencies:[261.6255653006,265.7783520514,269.10058145205,273.37201925287,273.85732695955,278.20426865732,282.55561052465,286.15296204753,290.69507255622,295.2417807931,299.00064605783,303.74668805875,304.28591884395,309.04519901133,313.95067836072,317.94773560837,322.92069774245,328.04642310345,332.22294006425,333.84512238879,338.01818641865,343.38355445704,348.83408706747,353.19451315581,358.80077526939,364.4960256705,369.13660007139,370.8542388136,375.57576268738,381.53728273004,387.59343007496,392.4383479509,398.6675280771,404.99558407833,410.05802887931,412.06026534844,417.30640298598,423.93031414449,430.56093032327,436.04260883433,442.96392008567,449.89223739901,450.69091522486,457.84473927605,463.67378109554,470.92601754108,478.40103369253,484.4917875937,492.06963465517,499.88026377668,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-S 7-limit per.bl. 4375/4374 & 323/322 & 64827/65536, 1969"},fokker_12:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Fokker's 7-limit 12-tone just scale"},fokker_12a:{frequencies:[261.6255653006,274.70684356563,293.02063313667,309.04519901133,327.03195662575,348.83408706747,367.91095120397,390.69417751556,412.06026534844,439.53094970501,465.11211608996,490.54793493862,523.2511306012],description:"Fokker's 7-limit periodicity block of 2048/2025 & 3969/4000 & 225/224"},fokker_12b:{frequencies:[261.6255653006,275.93321340298,293.02063313667,309.04519901133,332.22294006425,348.83408706747,367.91095120397,392.4383479509,412.06026534844,439.53094970501,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit semitone scale KNAW B72, 1969"},fokker_12c:{frequencies:[261.6255653006,275.93321340298,293.02063313667,311.45900631024,332.22294006425,348.83408706747,372.08969287196,392.4383479509,412.06026534844,442.96392008567,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit complementary semitone scale, KNAW B72, 1969"},fokker_12t:{frequencies:[261.6255653006,279.53180800295,293.53544531438,305.4439412874,326.66157401657,349.08351368992,366.63408494061,391.81886165309,419.06057467847,436.03416050506,457.88164994338,489.21957814041,523.2511306012],description:"Tempered version of fokker_12 with egalised 225/224, see also lumma"},fokker_12t2:{frequencies:[261.6255653006,279.53060025556,293.5302824794,305.44678713816,326.66192308793,349.10467831311,366.62831408589,391.81689264402,419.03095498017,436.04260883433,457.88067400285,489.21694446174,523.2511306012],description:"Another tempered version of fokker_12 with egalised 225/224"},fokker_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 3125/3072. KNAW B71, 1968"},fokker_22a:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 2109375/2097152 = semicomma"},fokker_31:{frequencies:[261.6255653006,265.7783520514,275.93321340298,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,315.35224388912,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,482.88312345521,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone just system"},fokker_31a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,476.92160341255,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone first alternate septimal tuning"},fokker_31b:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,480.53675259294,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone second alternate septimal tuning"},fokker_31c:{frequencies:[261.6255653006,269.46602871384,272.52663052146,279.06726965397,287.4304306281,294.32876096318,297.67175429757,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,383.2405741708,392.4383479509,396.89567239676,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,465.11211608996,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & 2109375/2097152 = semicomma"},fokker_31d:{frequencies:[261.6255653006,266.13928761861,272.52663052146,279.06726965397,287.4304306281,294.32876096318,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,399.20893142792,408.78994578219,418.60090448096,425.82286018978,436.04260883433,443.56547936435,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & W\xEF\xBF\xBDrschmidt's comma"},fokker_31d2:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Reduced version of fokker_31d by Prooijen expressibility"},fokker_41:{frequencies:[261.6255653006,264.89588486686,271.31540105247,274.70684356563,280.31310567921,283.8170195002,290.69507255622,294.32876096318,300.33547037059,305.22982618403,311.45900631024,313.95067836072,321.55899383997,325.57848126297,329.64821227876,336.37572681506,341.85740532612,348.83408706747,353.19451315581,361.75386806997,366.27579142084,373.75080757229,378.42269266694,387.59343007496,392.4383479509,400.44729382745,406.97310157871,415.27867508032,420.46965851882,425.72552925031,436.04260883433,439.53094970501,448.50096908674,455.80987376816,465.11211608996,470.92601754108,482.33849075995,488.36772189445,498.33441009638,504.56359022259,516.79124009995,523.2511306012],description:"Fokker's 7-limit supracomma per.bl. 10976/10935 & 225/224 & 496125/262144"},fokker_41a:{frequencies:[261.6255653006,264.59711493117,272.83435407277,275.93321340298,279.06726965397,287.4304306281,291.02331101095,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.77913876369,367.91095120397,372.08969287196,376.315896791,388.03108134794,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 34171875/33554432"},fokker_41b:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,287.4304306281,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,340.65828815182,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,383.2405741708,388.03108134794,392.4383479509,397.34382730029,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,454.2110508691,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.67978412536,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 3125/3072"},fokker_53:{frequencies:[261.6255653006,263.718569823,268.26840191956,272.52663052146,274.70684356563,279.06726965397,282.55561052465,286.15296204753,290.69507255622,294.32876096318,299.00064605783,300.46061014991,305.22982618403,309.04519901133,313.95067836072,317.87506184023,321.92208230347,327.03195662575,329.64821227876,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,357.69120255941,360.55273217989,366.27579142084,373.75080757229,376.74081403286,381.53728273004,386.30649876417,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.83341578697,429.2294430713,436.04260883433,439.53094970501,448.50096908674,450.69091522486,457.84473927605,465.11211608996,470.92601754108,476.92160341255,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker's 53-tone system, degree 37 has alternatives"},fokker_53a:{frequencies:[261.6255653006,264.89588486686,269.46602871384,272.52663052146,275.93321340298,279.38237857051,283.88190679319,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.42486507835,313.95067836072,319.36714514233,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,359.28803828513,363.36884069528,367.91095120397,372.50983809402,378.50920905758,383.2405741708,388.03108134794,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,425.82286018978,431.14564594215,436.04260883433,441.49314144476,447.01180571282,454.2110508691,459.88868900496,465.63729761752,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,504.67894541011,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & kleisma"},fokker_53b:{frequencies:[261.6255653006,264.59711493117,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,388.03108134794,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.35538388988,431.14564594215,436.04260883433,441.49314144476,446.50763144636,451.5790761492,459.88868900496,465.11211608996,470.92601754108,476.27480687611,485.03885168492,490.54793493862,496.11959049595,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & 2109375/2097152"},fokker_av:{frequencies:[261.6255653006,267.53238172257,273.57240048543,279.74894499065,286.06477437084,292.52336378682,299.12777114678,305.88111195206,312.78710209553,319.84901131344,327.07017092477,334.45455423048,342.00545991849,349.72704272607,357.62295854304,365.69693211485,373.95340598657,382.39606841888,391.02956482064,399.85798283974,408.88548711149,418.11704484248,427.5567798744,437.20988623572,447.08093432269,457.17458061119,467.49637893146,478.0512162812,488.84407170063,499.88088374606,511.16658268681,522.70737825664],description:"Fokker's suggestion for a shrinked octave by averaging approximations"},fokker_bosch:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Scale of "Naar Den Bosch toe", genus diatonicum cum septimis. 1/1=D'},fokker_sr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,296.75121990114,305.22982618403,315.35224388912,325.57848126297,336.37572681506,347.28371334717,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,446.50763144636,461.31528248922,474.80195184183,490.54793493862,506.45541529795,523.2511306012],description:"Fokker's 7-limit sruti scale, KNAW B72, 1969"},fokker_sr2:{frequencies:[261.6255653006,270.30192333353,279.06726965397,288.32205155576,296.75121990114,306.59245933664,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,372.08969287196,381.53728273004,394.1903048614,406.97310157871,420.46965851882,434.10464168396,448.50096908674,461.31528248922,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Fokker's complementary 7-limit sruti scale, KNAW B72, 1969"},fokker_sra:{frequencies:[261.6255653006,269.76956886185,278.7476190342,287.42460593148,296.37169586701,305.59729331129,315.11006948887,325.59707150921,336.43308557971,346.90573279191,357.7043774887,368.83916960349,381.11429755927,392.97780480816,406.05627704035,419.57000893919,433.5334812886,447.02871783796,460.94403787128,475.29252052682,490.08765232515,506.39798251136,523.2511306012],description:"Two-step approximation 9-13 to Fokker's 7-limit sruti scale"},fokker_srb:{frequencies:[261.6255653006,269.31534001393,278.64197723942,286.83190328195,296.76515515861,305.48776291796,316.06708432391,325.35701999957,336.62443200122,346.51859521924,358.51885197895,369.0565423573,381.83730669135,393.06038214356,406.67242132093,418.62545783369,433.12283887627,445.85331391262,461.29362042034,474.85209942927,491.29666030217,505.73699464332,523.2511306012],description:"Two-step maximally even approximation 11-11 to Fokker's 7-limit sruti scale"},fokker_uv:{frequencies:[220,220.05029721079,220.09166666667,220.14198483463,220.15668113546,220.24841308594,220.29876708984,220.3905582428,220.5253936656,220.68244897959,220.7744,220.82487425697,220.98214285714,221.03266460905,221.0236875,221.07421875,221.28224372864,221.41762468656,221.66763848397,221.71831695641,221.76,221.81069958848,222.01040039062,222.06115722656,222.40609622534,222.44790857143,222.4987654321,222.65722615577,222.75,222.80092592593,223.00151824951,223.05250167847,223.14544022083,223.18896568405,223.23999196793,223.44097959184,223.49206349206,223.58518518519,223.79557291667,223.88882107205,224.18534499514,224.23659907493,224.33003099121,224.48979591837,224.58333333333,224.79466029576,224.83692169189,224.88832473755,225.18617242815,225.28,225.33150434385,225.49198250729,225.5859375,225.67993164062,225.9788277551,226.03049186753,226.28571428571,226.4317558299,226.68743133545,227.08224,227.1341563786,227.29591836735,227.390625,227.44261188272,228.096,228.14814814815,229.16666666667,231,232.03125,233.6237037037,233.84353741497],description:"Table of Unison Vectors, Microsons and Minisons, from article KNAW, 1969"},foote:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,492.17459484008,523.2511306012],description:"Ed Foote, piano temperament. TL 9 Jun 1999, almost equal to Coleman"},forster:{frequencies:[261.6255653006,279.06726965397,283.42769574232,287.78812183066,299.00064605783,309.19384990071,319.76457981184,327.03195662575,336.37572681506,340.11323489078,343.38355445704,353.19451315581,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,387.59343007496,392.4383479509,398.6675280771,402.50086969323,406.97310157871,418.60090448096,428.11456140098,441.49314144476,442.75095666255,448.50096908674,457.84473927605,465.11211608996,483.00104363188,490.54793493862,507.3950357345,523.2511306012],description:"Cris Forster's Chrysalis tuning, XH 7+8"},fortuna11:{frequencies:[261.6255653006,274.70684356563,299.00064605783,305.22982618403,332.97799220076,343.38355445704,373.75080757229,398.6675280771,411.12588832951,448.50096908674,457.84473927605,498.33441009638,523.2511306012],description:"11-limit scale from Clem Fortuna"},fortuna_a1:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,320.24370022528,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,479.82340237272,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or G major, superset of Basandida, trivalent"},fortuna_a2:{frequencies:[261.6255653006,277.18263097687,285.30470202322,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,428.11456140098,440,466.16376151809,493.88330125613,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or F minor"},fortuna_bag:{frequencies:[261.6255653006,266.17557513191,291.58269109838,303.42373253797,318.96815495553,348.01136516401,359.18086083642,388.55281975337,398.8194592997,432.92801877123,462.35552488468,479.64686971777,523.2511306012],description:"Bagpipe tuning from Fortuna, try key of G with F natural"},fortuna_eth:{frequencies:[261.6255653006,280.31310567921,288.69027895239,305.7551787248,323.91736656265,346.02090894595,368.95913055213,385.17097113699,414.24047839262,422.62591317789,469.58434797544,484.00729580611,523.2511306012],description:"Ethiopian Tunings from Fortuna"},fortuna_sheng:{frequencies:[261.6255653006,275.29257244317,286.94416839421,312.81317590289,320.2657782128,348.83408706747,367.19377586049,382.62738925213,417.81993264424,433.74764773521,467.75479856774,484.77678276288,523.2511306012],description:"Sheng scale on naturals starting on d, from Fortuna"},"francis_r12-14p":{frequencies:[261.6255653006,277.2273508585,293.19140419912,311.27759533081,328.56574776048,349.51003591412,369.636465861,391.67937618637,415.43871422078,438.93656251816,466.46466724696,492.84862139436,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cornet-ton"},"francis_r12-2":{frequencies:[261.6255653006,277.2831963903,293.15801965318,311.35818177599,328.6319369554,349.45847225471,369.71092870521,391.50168688506,415.45657533448,438.80025285527,466.56783666625,492.94847466277,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R12-2, fifths beat ratios 0, 1, 2. C=279.331 Cornet-ton"},"francis_r2-1":{frequencies:[261.6255653006,276.41735337657,293.40958958006,310.96959408698,328.77281747949,349.18425877583,368.55655650762,391.91325216238,414.62612565656,439.06418506387,465.92902003736,492.10921220871,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R2-1, fifths beat ratios 0, 1, 2. C=249.072 Cammerton"},"francis_r2-14p":{frequencies:[261.6255653006,276.42350693124,293.47533146651,310.97644498676,328.88393162803,349.17189700163,368.56467609256,392.05867944486,414.6352601896,439.36162975058,466.01338145177,492.37181018521,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cammerton"},francis_seal:{frequencies:[261.6255653006,275.89934348748,293.01242796531,310.38672525582,327.92787107993,349.18506556371,367.865749003,391.38524198103,413.84896721463,437.93907827641,465.58008765101,490.83740312498,523.2511306012],description:"J. Charles Francis, Bach tuning interpretion as beats/sec. from seal"},francis_suppig:{frequencies:[261.6255653006,276.33536163417,293.13939342657,310.64213412049,328.58201670643,349.47038191026,368.45885450371,391.47500324588,414.51381656966,438.73106346722,465.97531289569,491.91879926026,523.2511306012],description:"J. Charles Francis, Suppig Calculus musicus, 5ths beat ratios 0, 1, 2."},efg333:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,523.2511306012],description:"Genus primum [333]"},efg333333333337:{frequencies:[261.6255653006,275.01702890535,279.38237857051,289.72987407313,294.32876096318,309.39415751852,314.30517589183,325.94610833227,331.11985608357,343.38355445704,353.59332287831,366.6893718738,372.50983809402,386.30649876417,392.4383479509,412.52554335802,419.07356785577,434.59481110969,441.49314144476,457.84473927605,471.45776383774,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:"Genus [333333333337]"},efg333333355:{frequencies:[261.6255653006,264.89588486686,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.42486507835,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,397.34382730029,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Genus [333333355]"},efg33335:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Genus [33335]"},efg3333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Genus [3333555]"},efg33335555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Genus bis-ultra-chromaticum [33335555]"},efg333355577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,278.20426865732,279.06726965397,281.68182201554,284.8811711051,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,317.94773560837,320.49131749323,321.92208230347,325.57848126297,327.03195662575,333.84512238879,343.38355445704,348.83408706747,352.10227751942,356.10146388137,357.69120255941,360.55273217989,363.36884069528,366.27579142084,367.91095120397,372.08969287196,375.57576268738,381.53728273004,392.4383479509,400.61414686654,402.40260287934,406.97310157871,408.78994578219,412.06026534844,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,445.12682985172,450.69091522486,457.84473927605,459.88868900496,465.11211608996,469.46970335923,470.92601754108,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Genus [333355577]"},efg33337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,386.30649876417,392.4383479509,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33337]"},efg3335:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonicum veterum correctum [3335]"},efg33355:{frequencies:[261.6255653006,272.52663052146,290.69507255622,310.07474405997,327.03195662575,348.83408706747,363.36884069528,387.59343007496,408.78994578219,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Genus diatonico-chromaticum hodiernum correctum [33355]"},efg333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonico-hyperchromaticum [333555]"},efg33355555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,319.36714514233,327.03195662575,340.65828815182,348.83408706747,359.28803828513,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,425.82286018978,436.04260883433,459.88868900496,470.92601754108,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"Genus [33355555]"},efg333555777:{frequencies:[261.6255653006,262.79353657426,267.07609791103,268.26840191956,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,281.68182201554,286.15296204753,294.32876096318,299.00064605783,300.46061014991,305.22982618403,306.59245933664,311.45900631024,312.97980223949,313.95067836072,318.93402246168,320.49131749323,321.92208230347,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,350.39138209902,352.10227751942,357.69120255941,358.80077526939,360.55273217989,366.27579142084,367.91095120397,373.75080757229,375.57576268738,381.53728273004,392.4383479509,398.6675280771,400.61414686654,402.40260287934,408.78994578219,412.06026534844,417.30640298598,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,448.50096908674,450.69091522486,457.84473927605,459.88868900496,467.18850946536,469.46970335923,470.92601754108,476.92160341255,478.40103369253,480.73697623985,488.36772189445,490.54793493862,498.33441009638,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333555777]"},efg333557:{frequencies:[261.6255653006,265.7783520514,279.06726965397,280.31310567921,290.69507255622,299.00064605783,313.95067836072,318.93402246168,327.03195662575,332.22294006425,348.83408706747,358.80077526939,372.08969287196,373.75080757229,392.4383479509,398.6675280771,418.60090448096,425.24536328225,436.04260883433,448.50096908674,465.11211608996,478.40103369253,490.54793493862,498.33441009638,523.2511306012],description:"Genus diatonico-enharmonicum [333557]"},efg33357:{frequencies:[261.6255653006,274.70684356563,279.06726965397,305.22982618403,313.95067836072,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,406.97310157871,418.60090448096,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Genus diatonico-enharmonicum [33357]"},efg3335711:{frequencies:[261.6255653006,265.58571790036,269.80136421624,275.93321340298,286.15296204753,294.32876096318,295.09524211152,303.52653474327,314.76825825228,321.92208230347,327.03195662575,331.98214737546,337.2517052703,343.38355445704,354.11429053382,359.73515228832,367.91095120397,379.40816842909,386.30649876417,392.4383479509,393.46032281536,404.70204632437,429.2294430713,441.49314144476,442.64286316727,449.66894036041,457.84473927605,472.15238737843,482.88312345521,490.54793493862,505.87755790546,515.07533168556,523.2511306012],description:"Genus [3 3 3 5 7 11], expanded hexany 1 3 5 7 9 11"},efg333577:{frequencies:[261.6255653006,267.07609791103,281.68182201554,286.15296204753,294.32876096318,300.46061014991,305.22982618403,321.92208230347,327.03195662575,333.84512238879,343.38355445704,348.83408706747,367.91095120397,375.57576268738,381.53728273004,392.4383479509,400.61414686654,429.2294430713,436.04260883433,450.69091522486,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333577]"},efg3337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus [3337]"},efg33377:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33377] Bi-enharmonicum simplex"},efg335:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Genus secundum [335]"},efg3355:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Genus chromaticum veterum correctum [3355]"},efg33555:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,367.91095120397,392.4383479509,408.78994578219,418.60090448096,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Genus bichromaticum [33555]"},efg335555577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,320.49131749323,327.03195662575,333.84512238879,334.88072358477,341.85740532612,343.38355445704,348.83408706747,357.69120255941,366.27579142084,375.57576268738,381.53728273004,384.58958099188,390.69417751556,392.4383479509,400.61414686654,408.78994578219,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,446.50763144636,457.84473927605,469.46970335923,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,502.32108537715,512.78610798918,523.2511306012],description:"Genus [335555577]"},efg33557:{frequencies:[261.6255653006,274.70684356563,279.06726965397,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,429.2294430713,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Genus chromatico-enharmonicum [33557]"},efg335577:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Genus chromaticum septimis triplex [335577]"},efg3357:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,343.38355445704,348.83408706747,381.53728273004,392.4383479509,429.2294430713,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum vocale [3357]"},efg33577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,523.2511306012],description:"Genus [33577]"},efg337:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus quintum [337]"},efg3377:{frequencies:[261.6255653006,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [3377]"},efg33777:{frequencies:[261.6255653006,267.07609791103,299.00064605783,300.46061014991,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777]"},efg33777a:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777] with comma discarded which disappears in 31-tET"},efg355:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Genus tertium [355]"},efg3555:{frequencies:[261.6255653006,306.59245933664,327.03195662575,383.2405741708,392.4383479509,408.78994578219,490.54793493862,510.98743222773,523.2511306012],description:"Genus enharmonicum veterum correctum [3555]"},efg35555:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,334.88072358477,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Genus [35555]"},efg35557:{frequencies:[261.6255653006,268.26840191956,274.70684356563,286.15296204753,306.59245933664,313.95067836072,327.03195662575,343.38355445704,357.69120255941,366.27579142084,392.4383479509,408.78994578219,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus [35557]"},efg3557:{frequencies:[261.6255653006,274.70684356563,286.15296204753,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum instrumentale [3557]"},efg35577:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,358.80077526939,366.27579142084,373.75080757229,392.4383479509,418.60090448096,429.2294430713,448.50096908674,457.84473927605,478.40103369253,490.54793493862,523.2511306012],description:"Genus [35577]"},efg357:{frequencies:[261.6255653006,286.15296204753,327.03195662575,343.38355445704,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus sextum [357] & 7-limit Octony, see ch.6 p.118"},efg35711:{frequencies:[261.6255653006,269.80136421624,286.15296204753,295.09524211152,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,392.4383479509,393.46032281536,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,523.2511306012],description:"Genus [3 5 7 11]"},efg3571113:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.01701053212,278.99913799634,286.15296204753,292.28481123426,295.09524211152,314.76825825228,318.85615771011,319.68651228748,327.03195662575,337.2517052703,343.38355445704,348.74892249543,359.73515228832,365.35601404283,371.99885066179,383.62381474497,392.4383479509,393.46032281536,398.57019713763,425.14154361347,429.2294430713,438.4272168514,449.66894036041,457.84473927605,464.99856332724,472.15238737843,479.52976843121,490.54793493862,511.49841965996,523.2511306012],description:"Genus [3 5 7 11 13]"},efg3577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,429.2294430713,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Genus [3577]"},efg35777:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,300.46061014991,327.03195662575,343.38355445704,373.75080757229,375.57576268738,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777]"},efg35777a:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777] with comma discarded which disappears in 31-tET"},efg377:{frequencies:[261.6255653006,300.46061014991,343.38355445704,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus octavum [377]"},efg3777:{frequencies:[261.6255653006,262.90303388117,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus [3777]"},efg37777:{frequencies:[261.6255653006,262.90303388117,299.00064605783,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777]"},efg37777a:{frequencies:[261.6255653006,299.00064605783,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777] with comma discarded that disappears in 31-tET"},efg555:{frequencies:[261.6255653006,327.03195662575,408.78994578219,510.98743222773,523.2511306012],description:"Genus quartum [555]"},efg55557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [55557]"},efg5557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,408.78994578219,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [5557]"},efg55577:{frequencies:[261.6255653006,286.15296204753,291.99281841585,299.00064605783,327.03195662575,357.69120255941,373.75080757229,408.78994578219,447.11400319927,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"Genus [55577]"},efg557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Genus septimum [557]"},efg5577:{frequencies:[261.6255653006,293.02063313667,320.49131749323,334.88072358477,366.27579142084,400.61414686654,418.60090448096,457.84473927605,512.78610798918,523.2511306012],description:"Genus [5577]"},efg55777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,320.49131749323,327.03195662575,366.27579142084,373.75080757229,400.61414686654,418.60090448096,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"Genus [55777]"},efg577:{frequencies:[261.6255653006,286.15296204753,327.03195662575,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus nonum [577]"},efg5777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus [5777]"},efg57777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,350.53737850823,373.75080757229,400.61414686654,438.17172313528,457.84473927605,500.76768358318,523.2511306012],description:"Genus [57777]"},efg777:{frequencies:[261.6255653006,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus decimum [777]"},efg77777:{frequencies:[261.6255653006,299.00064605783,341.71502406609,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus [77777]"},eikohole1:{frequencies:[261.6255653006,277.4816601673,305.22982618403,332.97799220076,436.04260883433,475.68284600109,523.2511306012],description:"First eikohole ball <6 9 13 17 20|-epimorphic"},eikohole2:{frequencies:[261.6255653006,266.38239376061,274.70684356563,285.40970760065,299.68019298069,313.95067836072,332.97799220076,348.83408706747,366.27579142084,380.54627680087,392.4383479509,399.57359064092,418.60090448096,428.11456140098,443.97065626768,470.92601754108,488.36772189445,499.46698830115,523.2511306012],description:"Second eikohole ball"},eikohole4:{frequencies:[261.6255653006,274.70684356563,279.79400733536,287.78812183066,305.22982618403,313.95067836072,319.76457981184,335.75280880244,348.83408706747,359.73515228832,366.27579142084,373.05867644715,383.71749577421,392.4383479509,406.97310157871,418.60090448096,419.69101100305,431.68218274599,447.67041173658,457.84473927605,470.92601754108,479.64686971777,488.36772189445,503.62921320365,523.2511306012],description:"Fourth eikohole ball"},eikohole5:{frequencies:[261.6255653006,266.38239376061,274.70684356563,279.06726965397,285.40970760065,287.78812183066,294.32876096318,295.98043751179,299.68019298069,305.22982618403,313.95067836072,321.08592105074,325.57848126297,332.97799220076,342.49164912079,348.83408706747,353.19451315581,355.17652501415,363.24871876447,366.27579142084,374.60024122586,380.54627680087,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Fifth eikohole ball"},eikohole6:{frequencies:[261.6255653006,266.38239376061,272.43653907335,274.70684356563,279.06726965397,285.40970760065,287.78812183066,293.02063313667,294.32876096318,295.98043751179,299.00064605783,299.68019298069,305.22982618403,310.77945938738,313.95067836072,317.12189733406,321.08592105074,325.57848126297,329.64821227876,332.97799220076,336.37572681506,342.49164912079,348.83408706747,349.6268918108,353.19451315581,355.17652501415,356.76213450082,363.24871876447,366.27579142084,374.60024122586,380.54627680087,383.71749577421,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,431.68218274599,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,484.33162501929,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Sixth eikohole ball"},eikosany:{frequencies:[261.6255653006,269.80136421624,274.70684356563,287.78812183066,294.32876096318,305.22982618403,323.76163705949,335.75280880244,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,412.06026534844,419.69101100305,431.68218274599,457.84473927605,470.92601754108,479.64686971777,503.62921320365,523.2511306012],description:"3)6 1.3.5.7.9.11 Eikosany (1.3.5 tonic)"},ekring1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,376.74081403286,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Single-tie circular mirroring of 3:4:5"},ekring2:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,384.42940207435,400.61414686654,448.50096908674,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Single-tie circular mirroring of 6:7:8"},ekring3:{frequencies:[261.6255653006,266.96486255163,299.00064605783,305.10270005901,327.03195662575,333.70607818954,341.71502406609,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,523.2511306012],description:"Single-tie circular mirroring of 4:5:7"},ekring4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,376.74081403286,392.4383479509,401.85686830172,436.04260883433,446.50763144636,465.11211608996,502.32108537715,523.2511306012],description:"Single-tie circular mirroring of 4:5:6"},ekring5:{frequencies:[261.6255653006,263.718569823,269.10058145205,305.22982618403,322.92069774245,366.27579142084,373.75080757229,376.74081403286,384.42940207435,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Single-tie circular mirroring of 3:5:7"},ekring5bp:{frequencies:[261.6255653006,282.55561052465,336.37572681506,363.28578496026,366.27579142084,395.57785473451,432.48307733364,512.78610798918,560.62621135843,605.4763082671,610.45965236807,659.29642455751,784.8766959018],description:"Single-tie BP circular mirroring of 3:5:7"},ekring6:{frequencies:[261.6255653006,288.32205155576,299.00064605783,336.37572681506,348.83408706747,384.42940207435,392.4383479509,406.97310157871,432.48307733364,465.11211608996,494.26637409559,512.57253609913,523.2511306012],description:"Single-tie circular mirroring of 6:7:9"},ekring7:{frequencies:[261.6255653006,266.96486255163,290.69507255622,296.62762505737,322.99452506247,336.37572681506,343.24053756638,406.97310157871,415.27867508032,432.48307733364,470.92601754108,480.53675259294,523.2511306012],description:"Single-tie circular mirroring of 5:7:9"},ekring7bp:{frequencies:[261.6255653006,311.45900631024,336.37572681506,400.44729382745,432.48307733364,436.04260883433,470.92601754108,514.86080634958,610.45965236807,667.41215637908,720.80512888941,726.73768139056,784.8766959018],description:"Single-tie BP circular mirroring of 5:7:9"},ellis:{frequencies:[261.6255653006,277.10015133873,293.57875905702,310.98767008297,329.52610437773,349.11112716429,369.96685849926,391.93834696391,415.15022554673,439.86813926913,465.98150356841,493.78915701915,523.2511306012],description:"Alexander John Ellis' imitation equal temperament (1875)"},ellis_24:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,294.32876096318,298.00787047521,306.59245933664,310.42486507835,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,397.34382730029,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,523.2511306012],description:"Ellis, from p.421 of Helmholtz, 24 tones of JI for 1 manual harmonium"},ellis_eb:{frequencies:[261.6255653006,277.21587437848,293.6537610003,311.19285946782,329.68548178616,349.2169654334,370.02116610622,391.93834696391,415.32381240723,439.98064151826,466.28928903228,494.02822100775,523.2511306012],description:"Ellis' new equal beating temperament for pianofortes (1885)"},ellis_harm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Just Harmonium"},ellis_mteb:{frequencies:[261.6255653006,273.31920907322,292.34465012884,313.05587813274,326.9349299255,350.18846153218,365.78692922515,391.15004079048,408.78346942429,437.23842445073,468.2723780569,489.17031487243,523.2511306012],description:"Ellis' equal beating meantone tuning (1885)"},enh14:{frequencies:[261.6255653006,267.70988077271,274.08392555301,348.83408706747,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"14/11 Enharmonic"},enh15:{frequencies:[261.6255653006,270.64713651786,280.31310567921,356.76213450082,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Tonos-15 Enharmonic"},enh15_inv:{frequencies:[261.6255653006,331.39238271409,340.11323489078,348.83408706747,383.71749577421,488.36772189445,505.80942624783,523.2511306012],description:"Inverted Enharmonic Tonos-15 Harmonia"},enh15_inv2:{frequencies:[261.6255653006,270.34641747729,279.06726965397,348.83408706747,383.71749577421,392.4383479509,401.15920012759,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-15"},enh17:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,404.33041910093,413.73345210327,423.58424858192,523.2511306012],description:"Tonos-17 Enharmonic"},enh17_con:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,378.52209447746,386.75083566176,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Enharmonic"},enh19:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,382.37582620857,389.87339142835,397.67085925691,523.2511306012],description:"Tonos-19 Enharmonic"},enh19_con:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,361.51896296083,368.21375857121,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Enharmonic"},enh2:{frequencies:[261.6255653006,266.71168334607,277.18263097687,349.22823143301,391.99543598175,399.61600264311,415.30469757995,523.2511306012],description:"1:2 Enharmonic. New genus 2 + 4 + 24 parts"},enh21:{frequencies:[261.6255653006,268.0066766494,274.70684356563,343.38355445704,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Tonos-21 Enharmonic"},enh21_inv:{frequencies:[261.6255653006,336.37572681506,342.60490694126,348.83408706747,398.6675280771,498.33441009638,510.79277034879,523.2511306012],description:"Inverted Enharmonic Tonos-21 Harmonia"},enh21_inv2:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,398.6675280771,411.12588832951,423.58424858192,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-21"},enh23:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,376.08675011961,388.21858076863,401.15920012759,523.2511306012],description:"Tonos-23 Enharmonic"},enh23_con:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,343.8507429665,353.96400011258,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Enharmonic"},enh25:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,408.78994578219,421.97671822677,436.04260883433,523.2511306012],description:"Tonos-25 Enharmonic"},enh25_con:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,373.75080757229,384.74347838324,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Enharmonic"},enh27:{frequencies:[261.6255653006,269.10058145205,277.01530443593,353.19451315581,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Tonos-27 Enharmonic"},enh27_inv:{frequencies:[261.6255653006,329.45441556372,339.14425131559,348.83408706747,387.59343007496,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Enharmonic Tonos-27 Harmonia"},enh27_inv2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,387.59343007496,397.28326582684,406.97310157871,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-27"},enh29:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,379.35706968587,389.08417403679,399.32323124828,523.2511306012],description:"Tonos-29 Enharmonic"},enh29_con:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,352.8902973822,361.29244731988,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Enharmonic"},enh31:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,368.65420565085,377.22755927063,386.2091678247,523.2511306012],description:"Tonos-31 Enharmonic. Tone 24 alternates with 23 as MESE or A"},enh31_con:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,360.46188996972,368.65420565085,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Enharmonic"},enh33:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"Tonos-33 Enharmonic"},enh33_con:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,367.38909169871,375.37581108347,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Enharmonic"},enh_invcon:{frequencies:[261.6255653006,283.42769574232,370.63621750918,381.53728273004,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Enharmonic Conjunct Phrygian Harmonia"},enh_mod:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Enharmonic After Wilson's Purvi Modulations, See page 111"},enh_perm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Permuted Enharmonic, After Wilson's Marwa Permutations, See page 110."},enn45ji:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.92069774245,329.64821227876,336.37572681506,339.14425131559,346.06556256693,348.83408706747,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,392.4383479509,395.57785473451,403.65087217807,406.97310157871,415.27867508032,423.93031414449,427.32175665765,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.78610798918,523.2511306012],description:"Detempered Ennealimma[45], Hahn reduced"},enn72synch:{frequencies:[195.99771799087,197.54967854522,199.11392792408,201.62391554947,203.22042578925,204.82957760946,207.41161549338,209.05395423619,211.68924370912,213.36545381699,215.05493658943,217.76587316352,219.49019959291,221.22817968434,224.01693484168,225.790758792,228.63703016722,230.44743589451,232.27217821307,235.20015301436,237.06252857463,238.93964952543,241.95167308427,243.86750892427,246.94165062806,248.89699839908,250.8678291188,254.03021536301,256.04169222048,258.06909647124,261.3222603528,263.39147750593,266.71173418544,268.8236265844,270.95224149283,274.36780754746,276.54032271274,278.73004041423,282.24365173996,284.47852987378,288.0646054292,290.34557537779,292.64460663558,296.33362372129,298.68006816723,301.0450940916,304.84000597616,307.25380610435,311.12698372207,313.59056753865,316.0736586482,320.05801564518,322.59231767928,325.14668697146,329.24541662461,331.85246687263,336.03572815421,338.69654584276,341.37843257302,345.68177614255,348.4189737305,351.17784515594,355.60471802638,358.42048803112,362.93866010991,365.81250216232,368.70910003837,373.35696816148,376.31330506793,379.29305101359,384.07434037944,387.11553797119,391.99543598174],description:"Poptimal synchonized beating ennealimmal tuning, TM 10-10-2005"},ennea45:{frequencies:[261.6255653006,267.02028728287,269.13615104392,274.68574138534,276.8623300691,282.57123430547,288.39787286736,290.68311542614,296.67700440585,299.02785016604,305.1938252949,311.48692526882,313.95512370264,320.42888174436,322.96795420876,329.62755691287,336.42448069667,339.09030198792,346.08234767737,348.824677577,356.01744619623,363.3585507705,366.23777597441,373.78960287068,376.751482929,384.52012478698,392.44893391322,395.5586690753,403.715093104,406.91412394911,415.30469757995,423.86828492968,427.22700928979,436.03643483576,439.49155400205,448.55387459245,457.80308677504,461.43068321685,470.94538888861,474.67712392136,484.46499932732,494.45467284607,498.37269363637,508.649143962,512.67967026301,523.2511306012],description:"Ennealimmal-45, in a 7-limit least-squares tuning, g=48.999, G.W. Smith"},epimore_enh:{frequencies:[261.6255653006,265.11390617127,279.06726965397,348.83408706747,392.4383479509,397.67085925691,418.60090448096,523.2511306012],description:"New Epimoric Enharmonic, Dorian mode of the 4th new Enharmonic on Hofmann's list"},eratos_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Dorian mode of Eratosthenes's Chromatic. same as Ptol. Intense Chromatic"},eratos_diat:{frequencies:[261.6255653006,275.62199471997,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Dorian mode of Eratosthenes's Diatonic, Pythagorean"},eratos_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Dorian mode of Eratosthenes's Enharmonic"},erlangen:{frequencies:[261.6255653006,275.62199471997,293.99679436797,310.07474405997,327.03195662575,348.83408706747,367.49599295996,392.4383479509,413.43299207996,440.99519155196,465.11211608996,490.54793493862,523.2511306012],description:"Anonymus: Pro clavichordiis faciendis, Erlangen 15th century"},erlangen2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Revised Erlangen"},erlich1:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,433.12277132725,461.29357245868,491.2966347616,523.2511306012],description:"Asymmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich10:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Canonical JI interpretation of the Pentachordal decatonic mode of 22-tET"},erlich10s1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Superparticular version of erlich10 using 50/49 decatonic comma"},erlich10s2:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Other superparticular version of erlich10 using 50/49 decatonic comma"},erlich11:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Canonical JI interpretation of the Symmetrical decatonic mode of 22-tET"},erlich11s1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Superparticular version of erlich11 using 50/49 decatonic comma"},erlich11s2:{frequencies:[261.6255653006,280.31310567921,305.22982618403,311.45900631024,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other superparticular version of erlich11 using 50/49 decatonic comma"},erlich12:{frequencies:[261.6255653006,267.01308914069,282.57123920205,288.39008844866,305.19382000629,311.47852302926,329.62755691287,336.41541160581,356.01745236555,363.34874301751,384.52011812375,392.4383479509,415.30469757995,423.85685859121,448.5538823653,457.7907297806,484.46499093218,494.44133512215,523.2511306012],description:"Two 9-tET scales 3/2 shifted, Paul Erlich, TL 5-12-2001"},erlich13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Just scale by Paul Erlich (2002)"},erlich2:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,476.05893615592,523.2511306012],description:"Asymmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich3:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,419.68935090103,461.29357245868,491.2966347616,523.2511306012],description:"Symmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich4:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,491.2966347616,523.2511306012],description:"Symmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich5:{frequencies:[261.6255653006,269.33066959279,278.10477655849,287.16472157287,295.62197660533,306.17967660611,315.19693888202,326.45372959864,335.05049156411,348.07025322573,357.23626005287,368.87410717392,380.89108570115,393.29954676976,406.11224388345,419.34234602259,433.00345117936,444.40607048653,461.67529188567,473.83294924974,490.75518955849,505.2083639382,523.2511306012],description:"Unequal 22-note compromise between decatonic & Indian srutis, Paul Erlich"},erlich6:{frequencies:[261.6255653006,274.70684356563,280.31310567921,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Scale of consonant tones against 1/1-3/2 drone. TL 23-9-1998"},erlich7:{frequencies:[261.6255653006,272.64118737561,277.98432293805,281.84855879469,292.47977325983,303.51199286577,307.73108663824,313.76190292287,326.97270111135,337.05955506058,340.85784563832,350.05627231138,365.1325261687,373.60234843661,378.13992750117,391.18115131013,406.9458559663,413.62886206386,420.42161880722,437.36472209676,452.44848028305,457.94368329907,468.56640608675,488.7466646507,501.93603498211,507.59230220159,523.2511306012],description:"Meantone-like circle of sinuoidally varying fifths, TL 08-12-99"},erlich8:{frequencies:[261.6255653006,263.902226729,277.18263097687,279.59466973861,293.66476791741,296.22023396764,311.12698372208,313.83440569119,329.62755691287,332.49597057,349.22823143301,352.26720984209,369.99442271164,373.21410818061,391.99543598175,395.40657391157,415.30469757995,418.91867232636,440,443.82887286778,466.16376151809,470.22031101449,493.88330125613,498.18106573801,523.2511306012],description:"Two 12-tET scales 15 cents shifted, Paul Erlich"},erlich9:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,302.70726563706,308.34441624714,319.76457981184,332.97799220076,345.34574619679,356.76213450082,369.97554688974,383.71749577421,396.40237166758,411.12588832951,428.11456140098,436.04260883433,452.23847716247,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"11-limit periodicity block, u.v.: 9801/9800 243/242 126/125 100/99"},erlich_bpf:{frequencies:[261.6255653006,269.93113880221,277.4816601673,282.55561052465,293.6613488068,301.87565226992,311.45900631024,319.76457981184,328.70904358281,336.37572681506,347.05432131712,356.76213450082,366.27579142084,377.90359432309,388.47432423422,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,591.67627844905,610.45965236807,624.69777837082,642.17184210147,659.29642455751,680.22646978156,699.2537836216,726.73768139056,740.02659899313,760.72664372021,784.8766959018],description:"Erlich's 39-tone Triple Bohlen-Pierce scale"},erlich_bpp:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.6613488068,299.68019298069,311.45900631024,319.76457981184,323.65460841914,336.37572681506,345.34574619679,356.76213450082,366.27579142084,380.67211882362,385.30310526088,400.44729382745,411.12588832951,419.55227017296,436.04260883433,447.67041173658,458.69417292962,470.92601754108,489.43558134466,499.46698830115,512.78610798918,528.59042785223,539.42434736524,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.27431887171,642.17184210147,659.29642455751,685.20981388252,699.2537836216,720.80512888941,740.02659899313,764.49028821604,784.8766959018],description:"Periodicity block for erlich_bpf, 1625/1617 1331/1323 275/273 245/243"},erlich_bpp2:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.92501780685,299.68019298069,311.45900631024,319.76457981184,326.02570445152,336.37572681506,345.34574619679,356.76213450082,366.27579142084,377.90359432309,385.30310526088,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.83932387181,642.17184210147,659.29642455751,685.20981388252,698.62650953896,726.73768139056,740.02659899313,764.49028821604,784.8766959018],description:"Improved shape for erlich_bpp"},erlich_bppe:{frequencies:[261.6255653006,269.03526454087,276.77324548748,284.61195549492,292.79795257063,301.09050901183,309.7504615497,318.52314490095,327.68449417797,337.10934179701,346.6568752383,356.62740568226,366.72772736951,377.27553481706,387.96064596243,399.11915372018,410.59860200806,422.22748385656,434.37157296247,446.67374500165,459.5209564409,472.53540627884,486.12644973042,499.89441151621,514.27235352402,529.06383329425,544.0478609495,559.69574261012,575.54731703113,592.10118472076,608.870542156,626.38285104305,644.39884822068,662.64936456684,681.70845767885,701.01565227402,721.17823493702,741.60327945962,762.93324174612,784.8766959018],description:"LS optimal 3:5:7:11:13 tempering, virtually equal, g=780.2702 cents"},erlich_bppm:{frequencies:[261.6255653006,269.3148593258,276.83859227209,284.97500405989,292.93622770824,301.54575630263,309.96990811138,319.08006614158,327.99406628962,337.15709295818,347.06629484351,356.76213450082,367.24753706379,377.50717076432,388.60227773252,399.45849178361,410.61798882758,422.6862401977,434.49464068244,447.26463523836,459.75967424319,473.27221959449,486.49381977384,500.79209531182,514.78250488433,529.16376146212,544.7161244152,559.93362036345,576.39032675477,592.49269103014,609.9063234692,626.94500947499,644.45969779399,663.40066444061,681.93379843592,701.97614206495,721.5869464624,742.79471409673,763.54584931731,784.8766959018],description:"MM optimal 3:5:7:11:13 tempering, g=780.352 cents"},erlich_paj:{frequencies:[261.6255653006,269.74106841426,278.59741216196,287.23937405609,296.67040683594,305.87298460253,315.91563888094,325.71519477697,336.4093235789,346.84458402385,358.23265591403,369.99442271164,381.47147728046,393.99623872149,406.21781843768,419.55531290213,432.56972318844,446.77218107119,460.63084592459,475.75462791404,490.51231476219,506.61748047856,523.2511306012],description:"Erlich's Pajara or Twintone, with RMS optimal generator"},erlich_paj2:{frequencies:[261.6255653006,270.25447814202,278.68577354399,287.87753105276,296.85845221806,306.64959036092,316.21614384055,326.645747324,336.83612131731,347.94582350257,358.80069640371,369.99442271164,382.1975482805,394.12120058634,407.1203087173,419.82124923186,433.66800958456,447.19715926063,461.9468459571,476.35821106408,492.06970256841,507.42081104304,523.2511306012],description:"Erlich's Pajara or Twintone with minimax optimal generator"},escapade:{frequencies:[261.6255653006,270.11362843741,278.8770761192,287.9248395776,297.26614463769,306.91051483225,316.86778450163,327.1481015562,337.76194863153,348.72014864112,360.03386958939,371.71464785337,383.77439429365,392.56657056143,405.30282760495,418.45229174958,432.02837124332,446.04490958069,460.51619165905,475.45697355792,490.88248752006,506.80846290374,523.2511306012],description:"Escapade temperament, g=55.275493, 5-limit"},"et-mix6":{frequencies:[261.6255653006,293.66476791741,300.52885648597,311.12698372208,329.62755691287,345.21700307457,369.99442271164,396.55020354877,415.30469757995,440,455.51656649021,466.16376151809,523.2511306012],description:"Mix of equal temperaments from 1-6 (= 4-6)"},euler:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Euler's Monochord (a mode of Ellis's duodene) (1739), genus [33355]"},euler20:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,489.33808574423,509.07699553894,513.57043963064,523.2511306012],description:"Genus [3333555] tempered by 225/224-planar"},euler24:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,308.1508239679,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,384.70789368407,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,480.28481865546,489.33808574423,493.65730140218,509.07699553894,513.57043963064,523.2511306012],description:"Genus [33333555] tempered by 225/224-planar"},euler_diat:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Euler's genus diatonicum veterum correctum"},euler_enh:{frequencies:[261.6255653006,267.90457886781,275.62199471997,348.83408706747,392.4383479509,401.85686830172,413.43299207996,523.2511306012],description:"Euler's Old Enharmonic, From Tentamen Novae Theoriae Musicae"},euler_gm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,348.83408706747,361.75386806997,372.08969287196,385.87079260796,523.2511306012],description:"Euler's Genus Musicum, Octony based on Archytas's Enharmonic"},exptriad2:{frequencies:[261.6255653006,306.59245933664,327.03195662575,367.91095120397,392.4383479509,459.88868900496,490.54793493862,523.2511306012],description:"Two times expanded major triad"},exptriad3:{frequencies:[261.6255653006,269.46602871384,275.93321340298,279.06726965397,287.4304306281,294.32876096318,297.67175429757,303.14928230307,306.59245933664,313.95067836072,323.35923445661,327.03195662575,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,378.93660287884,383.2405741708,392.4383479509,404.19904307077,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,490.54793493862,505.24880383846,517.37477513058,523.2511306012],description:"Three times expanded major triad"},iivv17:{frequencies:[261.6255653006,269.80136421624,277.97716313189,283.42769574232,294.32876096318,305.22982618403,318.85615771011,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,370.63621750918,392.4383479509,416.96574469783,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"17-limit IIVV"},"indian-ayyar":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Carnatic sruti system, C.Subrahmanya Ayyar, 1976. alt:21/20 25/16 63/40 40/21"},"indian-dk":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,465.11211608996,523.2511306012],description:"Raga Darbari Kanada"},"indian-ellis":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,367.68998366571,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Ellis's Indian Chromatic, theoretical #74 of App.XX, p.517 of Helmholtz"},"indian-hahn":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Indian shrutis Paul Hahn proposal"},"indian-hrdaya1":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,328.55303549378,348.83408706747,375.07381928051,392.4383479509,428.11456140098,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Bhatkande's interpretation"},"indian-hrdaya2":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,330.47439827444,348.83408706747,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Levy's interpretation"},"indian-invrot":{frequencies:[261.6255653006,267.90457886781,279.06726965397,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Inverted and rotated North Indian gamut"},"indian-magrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Ma-grama (Sa Ri Ga Ma Pa Dha Ni Sa)"},"indian-newbengali":{frequencies:[261.6255653006,269.13627541126,277.02257024271,285.46954808622,294.32876096318,303.84527498141,313.95067836072,324.71413568646,336.35938765066,348.83408706747,358.01090280364,367.91095120397,377.98706287655,388.6137256405,400.23209335925,412.19781491431,425.25755219187,438.98455767189,453.41648894489,469.13512554326,485.39868175205,503.9696508909,523.2511306012],description:"Modern Bengali scale,S.M. Tagore: The mus. scales of the Hindus,Calcutta 1884"},"indian-old2ellis":{frequencies:[261.6255653006,270.06509966514,277.97716313189,285.40970760065,294.32876096318,305.22982618403,316.13089140489,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,415.52295665389,428.11456140098,441.49314144476,457.84473927605,474.19633710734,490.54793493862,505.80942624783,523.2511306012],description:"Ellis Old Indian Chrom2, Helmholtz, p. 517. This is a 4 cent appr. to #73"},"indian-oldellis":{frequencies:[261.6255653006,269.44737349144,277.4816601673,285.79952600623,294.32876096318,304.84150796353,315.71315096976,327.03195662575,337.72216249472,348.83408706747,359.25382662183,369.99442271164,381.0561299374,392.4383479509,404.18156579781,416.22249025095,428.71043212875,441.49314144476,457.27414749797,473.58203588493,490.54793493862,506.59641128799,523.2511306012],description:"Ellis Old Indian Chromatic, Helmholtz, p. 517. This is a 0.5 cent appr. to #73"},"indian-raja":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:"A folk scale from Rajasthan, India"},"indian-sagrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Sa-grama (Sa Ri Ga Ma Pa Dha Ni Sa), inverse of Didymus' diatonic"},"indian-srutiharm":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"B. Chaitanya Deva's sruti harmonium. The Music of India, 1981, p. 109"},"indian-srutivina":{frequencies:[261.6255653006,268.56758546278,278.98051393788,288.52577197574,297.52863491406,305.33829130574,314.01573591759,327.57422802312,336.57725592546,350.35262131413,358.2707318239,366.40588882483,378.77125721528,394.82459335461,403.28512412878,416.95215854696,428.77531684666,444.28620821491,453.93981227417,469.5594057965,487.34812384257,504.37765306036,529.32520658991],description:"Raja S.M. Tagore's sruti vina, measured by Ellis and Hipkins, 1886. 1/1=241.2"},"indian-srutivina2":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"S. Ramanathan's sruti vina, 1973. In B.C. Deva, The Music of India, p. 110"},"indian-vina":{frequencies:[261.6255653006,276.70272600503,292.81785438923,313.29104303136,329.05685050583,352.26720984209,369.14054089803,390.18821123181,411.0090584005,435.70052664441,465.35666077712,491.60634075178,525.37110555681],description:"Observed South Indian tuning of a vina, Ellis"},"indian-vina2":{frequencies:[261.6255653006,277.02257024271,292.81785438923,308.97787266236,326.21810583671,344.81842302716,363.84824628932,386.37547528213,409.11417474979,432.19134773437,455.25352578019,480.93331155807,507.76825077597,539.82938999168,571.59905201246,602.44805673853,637.90290877605,678.5727631795,715.19510239543,756.4109196702,799.53998816902,846.10508618474,890.73947019126,943.16064703194,1001.55531043729],description:"Observed tuning of old vina in Tanjore Palace, Ellis and Hipkins. 1/1=210.7 Hz"},"indian-vina3":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Tuning of K.S. Subramanian's vina (1983)"},indian:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale"},indian2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale with tritone 64/45 schisma lower (Mr.Devarajan, Madurai)"},indian2_sm:{frequencies:[261.6255653006,275.80107697063,279.12844116922,290.7446524607,294.25230137258,310.19560923413,313.9379197281,327.00276442799,330.9478443499,348.87940629173,353.08841191408,367.78254402461,372.21960384438,392.38737044642,413.64787586584,418.63827382983,436.06032987759,441.3211172644,465.23297251763,470.84571179248,490.44043044945,496.35728163707,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 289-equal (schismic) temperament"},indian3:{frequencies:[261.6255653006,270.06509966514,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"Indian shruti scale with 32/31 and 31/16 and tritone schisma lower"},indian4:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"Indian shruti scale according to Firoze Framjee: Text book of Indian music"},indian5:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"23 Shrutis, Amit Mitra, 1/1 no. 12:2, Table C."},indian6:{frequencies:[146.8323839587,148.66778875818,150.35636117371,151.0621234143,152.23581568838,152.95039995698,154.68761437624,154.86227995644,156.62120955595,158.5789746754,159.32333328852,163.14709328744,165.18643195354,167.06262352634,169.15090632042,169.94488884109,172.0691999516,174.02356617327,176.19886075044,178.40134650982,179.23874994958,180.42763340845,181.27454809716,183.54047994838,185.62513725149,185.83473594773,187.94545146714,188.82765426788,190.29476961048,191.18799994622,193.3595179703,193.57784994555,195.77651194493,198.22371834425,200.47514823161,202.98108758451,203.93386660931,206.48303994192,208.82827940793,209.0640779412,211.43863290053,212.43111105136,214.08161581178,215.0864999395,217.52945771659,220.24857593805,223.00168313728,225.53454176056,226.59318512145,228.35372353257,229.42559993547,232.03142156437,232.29341993466,234.93181433392,237.86846201309,238.98499993278,240.57017787793,241.69939746288,244.72063993117,247.77964793031,250.59393528951,253.72635948063,254.91733326163,258.1037999274,261.03534925991,264.29829112566,267.60201976473,270.64145011268,271.91182214574,275.31071992256,278.43770587724,278.75210392159,281.9181772007,283.24148140181,285.44215441571,286.78199991934,290.03927695546,293.6647679174],description:"Shrutis calculated by generation method, Amit Mitra, 1/1 no. 12:2, Table B."},indian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"North Indian Gamut, modern Hindustani gamut out of 22 or more shrutis"},indian_12c:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"Carnatic gamut. Kuppuswami: Carnatic music and the Tamils, p. v"},indian_a:{frequencies:[261.6255653006,290.79521372391,318.76727400207,355.94891173479,388.6137256405,432.69092326853,486.52148746092,523.2511306012],description:"One observed indian mode"},indian_b:{frequencies:[261.6255653006,290.79521372391,305.95868600104,356.15457528086,388.83826257328,432.94092754357,461.60862817266,523.2511306012],description:"Observed Indian mode"},indian_c:{frequencies:[261.6255653006,278.94941459687,313.65318017499,356.15457528086,388.83826257328,422.07621250312,470.76384471612,523.2511306012],description:"Observed Indian mode"},indian_d:{frequencies:[261.6255653006,289.28740724512,320.24370022528,344.61930560862,391.31674786192,442.03793673691,485.39868175205,523.2511306012],description:"Indian D (Ellis, correct)"},indian_e:{frequencies:[261.6255653006,275.58617649731,323.21709932123,347.81902735497,393.58362272115,410.77171881178,488.21056770985,523.2511306012],description:"Observed Indian mode"},indian_g:{frequencies:[261.6255653006,275.48458755707,279.57748987366,290.07776015425,294.38747470873,309.98198497505,314.58741860623,326.40257913196,331.25197518754,348.79929894143,353.98144532328,367.27615246113,372.73281132023,392.47748849606,413.26809526256,419.40806105693,435.16003737285,441.62525396027,465.0193523796,471.92819182319,489.65270022124,496.92751979948,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 94-et (garibaldi) temperament"},indian_rat:{frequencies:[261.6255653006,269.55361273395,277.4816601673,285.40970760065,294.32876096318,302.93486508491,315.75499260417,327.03195662575,337.58137458142,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,416.22249025095,428.77523202043,441.49314144476,457.84473927605,473.41768959156,490.54793493862,506.37206187213,523.2511306012],description:"Indian Raga, From Fortuna, after Helmholtz, ratios by JC"},indian_rot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,510.98743222773,523.2511306012],description:"Rotated North Indian Gamut"},ionic:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ancient greek Ionic"},iran_diat:{frequencies:[261.6255653006,297.21429859784,337.6441411202,347.13660997509,394.35734781054,448.00148789644,460.59652406882,523.2511306012],description:"Iranian Diatonic from Dariush Anooshfar, Safi-a-ddin Armavi's scale from 125 ET"},iraq:{frequencies:[261.6255653006,290.3675288125,326.6631048533,348.83408706747,387.1561215731,435.55129321875,465.11211608996,516.20736538157,523.2511306012],description:"Iraq 8-tone scale, Ellis"},isfahan_5:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,523.2511306012],description:"Isfahan (IG #2, DF #8), from Rouanet"},islamic:{frequencies:[261.6255653006,283.42769574232,305.22982618403,330.6656450327,348.83408706747,523.2511306012],description:"Islamic Genus (DF#7), from Rouanet"},italian:{frequencies:[261.6255653006,274.68983337859,292.34127285051,309.02606224197,326.6631048533,348.44038788768,366.66693712906,391.11111150212,411.56972129721,437.02884834934,464.06284405662,489.44164088633,523.2511306012],description:"Italian organ temperament, G.C. Klop (1974), 1/12 P.comma, also d'Alembert/Rousseau (1752/67)"},iter1:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,631.61998662719],description:"McLaren style, IE= 2.414214, PD=5, SD=0"},iter10:{frequencies:[261.6255653006,277.06070189651,293.38358189778,297.59908052943,301.91391280887,310.68035879446,328.97472072452,338.5155215149,348.35227203008,368.89204707385,413.65123162392,438.0707139917,463.89070822207,520.1365405381,535.27989222422,550.79066379074,583.29634230953,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter11:{frequencies:[261.6255653006,278.87608544381,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #2"},iter12:{frequencies:[261.6255653006,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #4"},iter13:{frequencies:[261.6255653006,297.26403435806,337.75715313333,383.76621672426,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #6"},iter14:{frequencies:[261.6255653006,280.22072913446,300.13755324878,344.3186075731,368.79121945838,395.0032340925,453.14877154631,519.85349135637,596.37732215892,638.76512932755,684.16567043124,784.8766959018],description:"Binary Divided 3/1 Scale #2"},iter15:{frequencies:[261.6255653006,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale"},iter16:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale 4+2"},iter17:{frequencies:[261.6255653006,278.49896488475,296.46060526524,301.12918013362,305.87127435301,315.58067012184,335.93387506143,346.5975621448,357.59974896504,380.66295170881,431.34763334053,459.16716607109,488.78090454553,553.8613271114,571.44277158458,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #2"},iter18:{frequencies:[261.6255653006,296.46060526524,335.93387506143,357.59974896504,380.66295170881,431.34763334053,488.78090454553,553.8613271114,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #4"},iter19:{frequencies:[261.6255653006,322.51878830959,331.06584352035,339.83940187549,358.09020513941,397.58488163802,418.936859706,441.43552612833,490.12256936272,604.19836236377,670.83693141722,744.82523718317,918.18295398723,967.49323514067,1019.45167961503,1131.88958971281,1395.33634826987],description:"Binary Kidjel Ratio scale #2, IE=16/3"},iter2:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,466.76379263857,529.06503205232,631.63886479716],description:"Iterated 1 + SQR(2) Scale, IE=2.414214, PD=5, SD=1"},iter20:{frequencies:[261.6255653006,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale #2"},iter21:{frequencies:[261.6255653006,265.58958666715,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale 5+2 #2"},iter22:{frequencies:[261.6255653006,301.8727519909,307.3207469799,312.86706369289,324.26179396336,348.311367392,360.99698978488,374.14462916403,401.89387036212,463.7192413329,498.11197631533,535.05552246568,617.36582527423,639.85050556571,663.15408964479,712.33833913185,821.92095613931],description:"Binary PI Scale #2"},iter23:{frequencies:[261.6255653006,280.22072913446,282.63618845904,285.07246866924,290.00821285991,300.13755151512,305.33413252207,310.62068712289,321.46997343155,344.3186075731,356.34488692223,368.79121945838,395.00323181087,401.84231702948,408.7998141568,423.07827792492,453.14877154631],description:"Binary SQR(3) Scale #2"},iter24:{frequencies:[261.6255653006,289.31157243481,292.97226416221,296.67927674571,304.23460945445,319.92739457651,328.07477344771,336.42963427227,353.78307729046,391.22147055517,411.40114203819,432.62170761687,478.4030399831,490.58621022536,503.07964402145,529.02909391167,585.01254970054],description:"Binary SQR(5) Scale #2"},iter25:{frequencies:[261.6255653006,295.4600775297,299.98610231105,304.581459303,313.98443628203,333.67021037701,343.97120738708,354.59021667251,376.82183739983,425.55401329039,452.23482674104,480.58843796626,542.7401414615,559.49550492793,576.76813324226,612.92956630767,692.19618110881],description:"Binary SQR(7) Scale #2"},iter26:{frequencies:[261.6255653006,266.56189672137,275.04226095704,276.16031892841,278.32506946872,283.8915708581,299.68019298069,302.93486508491,309.19384990071,326.13597866239,377.90359432309,389.87339142835,411.92110281371,477.08191319521,486.74523776856,503.12608711654,552.32063785682,711.29450566101],description:"E Scale"},iter27:{frequencies:[261.6255653006,264.53251602616,264.59858308811,264.97973921471,266.91093025617,277.4816601673,277.93638607994,279.98525409362,291.05844139692,358.0999925052,361.3330282979,375.61956161015,462.09190754392,465.48964215821,480.4396744611,568.53247844169,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=3"},iter28:{frequencies:[261.6255653006,265.20947715403,272.47639519786,295.60291144354,377.3445653374,784.8766959018],description:"McLaren 3-Division Scale"},iter29:{frequencies:[261.6255653006,264.46932144517,267.35459227799,273.20191774753,285.29018929764,311.12229387098,370.01329949656,523.2511306012],description:"Iterated Binary Division of the Octave, IE=2, PD=6, SD=0"},iter3:{frequencies:[261.6255653006,291.72408166262,314.40967058055,328.65360269166,338.82655178274,356.71329642628,384.4758307461,404.77917650282,417.30358762823,426.15298265459,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter30:{frequencies:[261.6255653006,263.40533105094,266.47048317654,274.97380842818,299.54231389489,377.98194879009,711.1793535636],description:"Iterated E-scale, IE= 2.71828, PD=5, SD=0"},iter31:{frequencies:[261.6255653006,264.53251602616,277.4816601673,358.0999925052,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=0"},iter32:{frequencies:[261.6255653006,264.32273607689,265.98599138894,268.74462830198,273.21657135822,280.65287914064,293.09931751721,314.43072526953,352.25402909754,423.30428543018],description:"Iterated PHI scale, IE= 1.61803339, PD=8, SD=0"},iter33:{frequencies:[261.6255653006,264.70351312767,271.46111286829,293.79264300149,376.62581378438,821.87425059077],description:"Iterated PI Scale, IE= 3.14159, PD=4, SD=0"},iter34:{frequencies:[261.6255653006,263.41752122732,264.70351312767,267.00143308075,271.01725226011,278.10591587072,290.81088732616,314.21361862735,359.24704489038,453.1728541814],description:"Iterated SQR3 Scale, IE= 1.73205, PD=8, SD=0"},iter35:{frequencies:[261.6255653006,263.32443260775,265.41724016003,270.17542037578,281.14986121856,307.30621955943,374.94109676838,585.0238335194],description:"Iterated SQR 5 Scale, IE= 2.23607, PD=6, SD=0"},iter36:{frequencies:[261.6255653006,263.60757715894,266.85807660661,275.72514666411,300.63990398578,377.90359432309,692.2176415245],description:"Iterated SQR 7 Scale, IE= 2.64575, PD=5, SD=0"},iter37:{frequencies:[261.6255653006,295.02271214403,313.28742377221,326.0879260201,332.68289475257,342.82647426905,364.05069339959,375.15068445646,382.73792346942,386.58911684499,392.4383479509],description:"Iterated 3/2 scale, IE=3/2, PD=3, SD=2"},iter4:{frequencies:[261.6255653006,267.82522324611,277.41331493081,278.97828136646,281.37089098366,287.35922746131,302.93486508491,307.2300216374,313.76772341995,330.79094463294,377.42704502382,390.96854140427,412.14986314478,470.26367433779,480.2976795817,495.79659597089,536.59937372878,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter5:{frequencies:[261.6255653006,292.148547919,314.45380444784,328.62723446295,338.43307070995,355.46951807147,382.59222452561,401.8431885336,413.81298563886,422.03832066739,436.04260883433],description:"Iterated 5/3 Scale, analog of Hexachord, IE=5/3, PD=3, SD=2"},iter6:{frequencies:[261.6255653006,276.4345595629,292.10621368514,326.13597866239,344.58001283494,364.1180547998,406.52587839016,453.84026633778,506.69255051888,535.41976154541,565.73733351326,631.63886479716],description:"Iterated binary 1+SQR(2) scale, IE= 2.414214, G=2, PD=4, SD=2"},iter7:{frequencies:[261.6255653006,279.30296836145,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter8:{frequencies:[261.6255653006,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=2"},iter9:{frequencies:[261.6255653006,298.19688088025,339.84351781315,387.34174602946,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=12"},ives:{frequencies:[261.6255653006,302.26980244078,349.22823143301,375.37611551499,433.69180740168,501.06699929295,578.9091089468,622.25396744417],description:`Charles Ives' stretched major scale, "Scrapbook" pp. 108-110`},ives2a:{frequencies:[261.6255653006,303.72829164664,352.60650301302,379.92060676531,441.0602510811,512.03893786214,594.44004134205,640.48740045057],description:"Speculation by Joe Monzo for Ives' other stretched scale"},ives2b:{frequencies:[261.6255653006,300.81831683262,345.88232658126,370.885984045,426.44646246473,490.3301667422,563.78395315523,604.53960488156],description:"Alt. speculation by Joe Monzo for Ives' other stretched scale"},abell1:{frequencies:[261.6255653006,273.68256372566,292.6487650037,305.95868600104,327.16162250699,342.04121835587,365.95599773772,391.31674786192,409.35055662695,437.71854962063,457.62637091093,489.33987776603,523.2511306012],description:"Ross Abell's French Baroque Meantone 1, a'=520"},abell2:{frequencies:[261.6255653006,275.90473010106,294.68429813772,308.79945157961,330.00857764288,348.01999353916,369.14054089803,392.90218486657,412.67427966689,441.52756934418,463.21121723949,493.59810545034,523.2511306012],description:"Ross Abell's French Baroque Meantone 2, a'=520"},abell3:{frequencies:[261.6255653006,275.90505521365,293.49576926806,308.08682543008,329.24698751194,350.03632176331,368.71497179837,392.44893164635,412.28324979826,440.25465969448,462.14293627657,492.7440237889,523.2511306012],description:"Ross Abell's French Baroque Meantone 3, a' = 520"},abell4:{frequencies:[261.6255653006,274.95017225036,292.98704147282,308.2648062752,328.10786809908,346.01554587335,367.43868454848,391.54284657258,411.48414905414,438.47771564426,461.87534079415,491.0387427573,523.2511306012],description:"Ross Abell's French Baroque Meantone 4, a'=520"},abell5:{frequencies:[261.6255653006,277.98432293805,295.87822452474,311.66659310186,331.15428443044,349.43001184052,371.27895029721,395.6350356808,416.26536455926,442.29334161825,466.70260620202,495.88429116026,523.2511306012],description:"Ross Abell's French Baroque Meantone 5, a'=520"},abell6:{frequencies:[261.6255653006,277.02257024271,293.32570896007,311.66659310186,330.00857764288,349.43001184052,369.99442271164,391.76907592069,414.82519580403,440.76312290327,466.70260620202,494.16866184506,523.2511306012],description:"Ross Abell's French Baroque Meantone 6, a'=520"},abell7:{frequencies:[261.6255653006,277.50302994288,294.34406205295,310.05056613125,328.86683469969,348.82502010853,369.99442271164,392.44854854484,416.26536455926,438.47771564426,465.08793784701,493.31307433255,523.2511306012],description:"Ross Abell's French Baroque Meantone 7, a'=520"},abell8:{frequencies:[261.6255653006,277.82379926216,294.68429813772,311.48661940174,329.62755691287,350.03605285217,371.27895029721,392.44854854484,415.30469757995,441.01779121056,467.78216486233,494.45418731234,523.2511306012],description:"Ross Abell's French Baroque Meantone 8, a'=520"},abell9:{frequencies:[261.6255653006,276.06414495892,293.32570896007,309.69258848748,330.19925313612,348.62358905703,369.14054089803,391.99543598175,412.67427966689,440,464.55095742407,493.88330125613,523.2511306012],description:"Ross Abell's French Baroque Meantone 9, a'=520"},"ad-dik":{frequencies:[261.6255653006,269.0348830679,275.62199471997,285.40970760065,294.32876096318,300.46061014991,310.07474405997,321.08592105074,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.49599295996,378.42269266694,392.4383479509,400.61414686654,413.43299207996,428.11456140098,441.49314144476,453.48431318771,470.92601754108,479.64686971777,490.54793493862,508.71637697339,523.2511306012],description:"Amin Ad-Dik, d'Erlanger, vol 5, p.42"},adjeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Soeroepan adjeng"},aeolic:{frequencies:[261.6255653006,294.32876096318,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Ancient Greek Aeolic, also tritriadic scale of the 54:64:81 triad"},agricola:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,331.11985608357,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Agricola's Monochord, Rudimenta musices (1539)"},"al-din":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012,551.24398943995,580.73440862809,588.65752192635,620.14948811994,653.3262097066,688.27781763329,697.66817413493,734.99198591993,774.31254483746,784.8766959018,826.86598415992,871.10161294214,917.70375684439,930.22423217991,979.98931455991,1032.41672644994,1046.5022612024,1102.48797887989],description:"Safi al-Din's complete lute tuning on 5 strings 4/3 apart"},"al-din_19":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic scale by Safi al-Din"},"al-farabi":{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Al-Farabi Syn Chrom"},"al-farabi_19":{frequencies:[261.6255653006,275.62199471997,285.40970760065,294.32876096318,310.07474405997,326.6631048533,331.11985608357,336.87132687997,348.83408706747,367.49599295996,380.54627680087,392.4383479509,413.43299207996,435.55080647107,441.49314144476,455.28980211491,465.11211608996,489.99465727995,507.3950357345,523.2511306012],description:"Arabic scale by Al Farabi"},"al-farabi_22":{frequencies:[261.6255653006,275.62199471997,277.01530443593,285.40970760065,294.32876096318,310.07474405997,321.08592105074,326.6631048533,331.11985608357,348.83408706747,367.49599295996,369.35373924791,380.54627680087,392.4383479509,413.43299207996,428.11456140098,435.55080647107,441.49314144476,465.11211608996,489.99465727995,492.47165233054,507.3950357345,523.2511306012],description:"Al-Farabi 22 note ud scale"},"al-farabi_9":{frequencies:[261.6255653006,294.32876096318,321.08592105074,331.11985608357,348.83408706747,392.4383479509,428.11456140098,441.49314144476,465.11211608996,523.2511306012],description:"Al-Farabi 9 note ud scale"},"al-farabi_blue":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.81054504865,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Another tuning from Al Farabi, c700 AD"},"al-farabi_chrom":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Al Farabi's Chromatic c700 AD"},"al-farabi_chrom2":{frequencies:[261.6255653006,279.06726965397,325.57848126297,348.83408706747,392.4383479509,418.60090448096,488.36772189445,523.2511306012],description:"Al-Farabi's Chromatic permuted"},"al-farabi_diat":{frequencies:[261.6255653006,299.00064605783,341.71502406609,348.83408706747,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Diatonic"},"al-farabi_diat2":{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Old Phrygian, permuted form of Al-Farabi's reduplicated 10/9 diatonic genus, same as ptolemy_diat"},"al-farabi_div":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al Farabi's 10 intervals for the division of the tetrachord"},"al-farabi_div2":{frequencies:[261.6255653006,275.62199471997,277.01530443593,279.38237857051,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,314.30517589183,321.08592105074,331.11985608357,348.83408706747],description:"Al-Farabi's tetrachord division, incl. extra 2187/2048 & 19683/16384"},"al-farabi_divo":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747,367.49599295996,369.35373924791,379.26927587201,392.4383479509,413.43299207996,415.52295665389,426.67793535601,432.48307733364,441.49314144476,465.11211608996,467.46332623563,481.6288815761,496.67978412536,523.2511306012],description:"Al Farabi's theoretical octave division with identical tetrachords, 10th c."},"al-farabi_dor":{frequencies:[261.6255653006,282.55561052465,313.95067836072,348.83408706747,392.4383479509,423.83341578697,470.92601754108,523.2511306012],description:"Dorian mode of Al-Farabi's 10/9 Diatonic"},"al-farabi_dor2":{frequencies:[261.6255653006,267.07609791103,305.22982618403,348.83408706747,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Dorian mode of Al-Farabi's Diatonic"},"al-farabi_g1":{frequencies:[261.6255653006,294.32876096318,331.11985608357,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus conjunctum medium, Land"},"al-farabi_g10":{frequencies:[261.6255653006,294.32876096318,343.38355445704,367.91095120397,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus chromaticum forte"},"al-farabi_g11":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,496.67978412536,523.2511306012],description:"Al-Farabi's Greek genus chromaticum mollissimum"},"al-farabi_g12":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.17464957743,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Al-Farabi's Greek genus mollissimum ordinantium"},"al-farabi_g3":{frequencies:[261.6255653006,294.32876096318,336.37572681506,378.42269266694,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus conjunctum primum"},"al-farabi_g4":{frequencies:[261.6255653006,294.32876096318,336.37572681506,384.42940207435,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Greek genus forte duplicatum primum"},"al-farabi_g5":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Al-Farabi's Greek genus conjunctum tertium, or forte aequatum"},"al-farabi_g6":{frequencies:[261.6255653006,294.32876096318,336.37572681506,373.75080757229,392.4383479509,448.50096908674,498.33441009638,523.2511306012],description:"Al-Farabi's Greek genus forte disjunctum primum"},"al-farabi_g7":{frequencies:[261.6255653006,294.32876096318,343.38355445704,374.60024122586,392.4383479509,457.84473927605,499.46698830115,523.2511306012],description:"Al-Farabi's Greek genus non continuum acre"},"al-farabi_g8":{frequencies:[261.6255653006,294.32876096318,353.19451315581,378.42269266694,392.4383479509,470.92601754108,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus non continuum mediocre"},"al-farabi_g9":{frequencies:[261.6255653006,294.32876096318,367.91095120397,383.71749577421,392.4383479509,490.54793493862,511.62332769895,523.2511306012],description:"Al-Farabi's Greek genus non continuum laxum"},"al-hwarizmi":{frequencies:[261.6255653006,294.32876096318,302.73815413355,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al-Hwarizmi's tetrachord division"},"al-kindi":{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747],description:"Al-Kindi's tetrachord division"},"al-kindi2":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,523.2511306012],description:"Arabic mode by al-Kindi"},"al-mausili":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Arabic mode by Ishaq al-Mausili, ? - 850 AD"},albion:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Terry Riley's Harp of New Albion scale, inverse Malcolm's Monochord, 1/1 on C#"},alembert:{frequencies:[261.6255653006,273.70610837433,292.50627485027,307.8325111191,327.03195662575,347.99121610009,365.92863081328,391.22147055517,409.45161370755,437.39890198442,462.86717295458,489.22460251523,523.2511306012],description:"Jean-Le Rond d'Alembert modified meantone (1752)"},alembert2:{frequencies:[261.6255653006,274.99999938609,292.5775112526,309.28790118232,327.03195662575,348.53877105022,367.08095907728,391.31674786192,412.03444522126,437.50542525192,464.32494005553,489.99429388332,523.2511306012],description:"d'Alembert (?)"},alves:{frequencies:[261.6255653006,267.07609791103,294.32876096318,305.22982618403,327.03195662575,336.37572681506,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:'Bill Alves, tuning for "Instantaneous Motion", 1/1 vol. 6/3'},alves_22:{frequencies:[261.6255653006,269.80136421624,279.06726965397,287.78812183066,297.30177875068,305.22982618403,317.12189733406,327.03195662575,336.37572681506,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,406.97310157871,418.60090448096,431.68218274599,448.50096908674,460.46099492906,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"11-limit rational interpretation of 22-tET, Bill Alves, tuning list 9-1-98"},amity:{frequencies:[261.6255653006,265.19165427121,275.22357733525,278.97501409741,282.77758484276,286.63198489776,290.53892403345,294.49911672845,305.63971046081,309.80573452349,314.02854360428,318.30891171173,322.64762154083,327.04547204619,339.41726037801,344.04368955469,348.73317930436,353.48658917459,358.304790429,371.85908609843,376.92771379174,382.0654272409,387.27317253358,392.55190203235,397.90258328792,412.95482206782,418.58360545772,424.28911201625,430.07238503487,435.93448947821,452.42543551278,458.59222335614,464.84306764133,471.17911410024,477.60152408164,484.11147196776,502.42490579041,509.27320879713,516.21486058423,523.2511306012],description:"Amity temperament, g=339.508826, 5-limit"},angklung:{frequencies:[261.6255653006,294.70472480469,326.28010551578,372.13971319976,421.00655337609,533.77627782773,589.40944960937,672.10704388342,757.81210779894],description:"Scale of an anklung set from Tasikmalaya. 1/1=174 Hz"},appunn:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.38237857051,287.10624449997,290.69507255622,294.32876096318,302.46583782713,306.24666079997,310.07474405997,322.99452506247,327.03195662575,331.11985608357,340.27406755552,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.50983809402,382.80832599996,387.59343007496,392.4383479509,408.78994578219,413.89982010446,419.07356785577,430.65936674996,436.04260883433,441.49314144476,453.6987567407,459.36999119996,465.11211608996,484.4917875937,490.54793493862,496.67978412536,510.41110133328,516.79124009995,523.2511306012],description:"Probable tuning of A. Appunn's 36-tone harmonium w. 3 manuals 80/81 apart,1887"},arabic:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic 17-tone Pythagorean mode, Safi al-Din"},arabic_s:{frequencies:[261.6255653006,275.62199471997,290.69507255622,294.32876096318,310.07474405997,327.03195662575,331.11985608357,348.83408706747,367.91095120397,387.59343007496,392.4383479509,413.43299207996,436.04260883433,441.49314144476,465.11211608996,490.54793493862,516.79124009995,523.2511306012],description:"Schimatically altered Arabic 17-tone Pythagorean mode"},arch_chrom:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,441.49314144476,523.2511306012],description:"Archytas' Chromatic"},arch_chromc2:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,331.11985608357,343.38355445704,348.83408706747,361.75386806997,392.4383479509,406.97310157871,422.04617941496,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:"Product set of 2 of Archytas' Chromatic"},arch_dor:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,465.11211608996,441.49314144476,523.2511306012],description:"Dorian mode of Archytas' Chromatic with added 16/9"},arch_enh:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Archytas' Enharmonic"},arch_enh2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,418.60090448096,523.2511306012],description:"Archytas' Enharmonic with added 16/9"},arch_enh3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,358.80077526939,448.50096908674,523.2511306012],description:"Complex 9 of p. 113 based on Archytas's Enharmonic"},arch_enhp:{frequencies:[261.6255653006,269.10058145205,279.06726965397,348.83408706747,392.4383479509,403.65087217807,418.60090448096,523.2511306012],description:"Permutation of Archytas's Enharmonic with the 36/35 first"},arch_enht:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 113 based on Archytas's Enharmonic"},arch_enht2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,490.54793493862,508.71637697339,523.2511306012],description:"Complex 5 of p. 113 based on Archytas's Enharmonic"},arch_enht3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 113 based on Archytas's Enharmonic"},arch_enht4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,339.14425131559,348.83408706747,436.04260883433,523.2511306012],description:"Complex 8 of p. 113 based on Archytas's Enharmonic"},arch_enht5:{frequencies:[261.6255653006,263.77886213435,271.31540105247,279.06726965397,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 10 of p. 113 based on Archytas's Enharmonic"},arch_enht6:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,297.67175429757,348.83408706747,372.08969287196,523.2511306012],description:"Complex 2 of p. 113 based on Archytas's Enharmonic"},arch_enht7:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,287.04062021552,348.83408706747,358.80077526939,523.2511306012],description:"Complex 11 of p. 113 based on Archytas's Enharmonic"},arch_mult:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,523.2511306012],description:"Multiple Archytas"},arch_ptol:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"Archytas/Ptolemy Hybrid 1"},arch_ptol2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Archytas/Ptolemy Hybrid 2"},arch_sept:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,465.11211608996,523.2511306012],description:"Archytas Septimal"},ariel1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 1"},ariel2:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 2"},ariel3:{frequencies:[261.6255653006,279.06726965397,290.69507255622,310.07474405997,322.99452506247,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Ariel's 12-tone JI scale"},ariel_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,302.80736724606,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Ariel 19-tone scale"},ariel_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Ariel's 31-tone system"},arist_archenh:{frequencies:[261.6255653006,271.89678302796,279.86396690685,349.22823143301,391.99543598175,407.38487419079,419.32216217931,523.2511306012],description:"PsAristo Arch. Enharmonic, 4 + 3 + 23 parts, similar to Archytas' enharmonic"},arist_chrom:{frequencies:[261.6255653006,277.18263097687,329.62755691287,349.22823143301,391.99543598175,415.30469757995,493.88330125613,523.2511306012],description:"Dorian, Neo-Chromatic,6+18+6 parts = Athanasopoulos' Byzant.liturg. 2nd chromatic"},arist_chrom2:{frequencies:[261.6255653006,282.57123920205,336.03572815422,349.22823143301,391.99543598175,423.37848741825,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 18 + 4 parts"},arist_chrom3:{frequencies:[261.6255653006,279.86388595857,299.37253740865,349.22869576324,391.99491478937,419.32387668214,448.55625766774,523.2511306012],description:"PsAristo 3 Chromatic, 7 + 7 + 16 parts"},arist_chrom4:{frequencies:[261.6255653006,275.85166538713,290.85115308106,349.22823143301,391.99543598175,413.31050241775,435.7843409791,523.2511306012],description:"PsAristo Chromatic, 5.5 + 5.5 + 19 parts"},arist_chromenh:{frequencies:[261.6255653006,269.29177952703,293.66476791741,349.22823143301,391.99543598175,403.48177901006,440,523.2511306012],description:"Aristoxenos' Chromatic/Enharmonic, 3 + 9 + 18 parts"},arist_chrominv:{frequencies:[261.6255653006,311.12698372208,329.62755691287,349.22823143301,391.99543598175,466.16376151809,493.88330125613,523.2511306012],description:"Aristoxenos' Inverted Chromatic, Dorian mode, 18 + 6 + 6 parts"},arist_chromrej:{frequencies:[261.6255653006,277.18263097687,285.30470202322,349.22823143301,391.99543598175,415.30469757995,427.47405410759,523.2511306012],description:"Aristoxenos Rejected Chromatic, 6 + 3 + 21 parts"},arist_chromunm:{frequencies:[261.6255653006,273.20871865617,282.57118533961,349.22823143301,391.99543598175,409.35055662695,423.37840671577,523.2511306012],description:"Unmelodic Chromatic, genus of Aristoxenos, Dorian Mode, 4.5 + 3.5 + 22 parts"},arist_diat:{frequencies:[261.6255653006,293.66476791741,311.12698372208,349.22823143301,391.99543598175,440,466.16376151809,523.2511306012],description:"Phrygian octave species on E, 12 + 6 + 12 parts"},arist_diat2:{frequencies:[261.6255653006,279.86396690685,311.12698372208,349.22823143301,391.99543598175,419.32216217931,466.16376151809,523.2511306012],description:"PsAristo 2 Diatonic, 7 + 11 + 12 parts"},arist_diat3:{frequencies:[261.6255653006,286.68133251996,314.13668154225,349.22823143301,391.99543598175,429.53666932309,470.6732130613,523.2511306012],description:"PsAristo Diat 3, 9.5 + 9.5 + 11 parts"},arist_diat4:{frequencies:[261.6255653006,282.57123920205,305.19382000629,349.22823143301,391.99543598175,423.37848741825,457.27406033445,523.2511306012],description:"PsAristo Diatonic, 8 + 8 + 14 parts"},arist_diatdor:{frequencies:[261.6255653006,299.37379946195,305.19382000629,349.22823143301,391.99543598175,448.5538823653,457.27406033445,523.2511306012],description:"PsAristo Redup. Diatonic, 14 + 2 + 14 parts"},arist_diatinv:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,493.88330125613,523.2511306012],description:"Lydian octave species on E, major mode, 12 + 12 + 6 parts"},arist_diatred:{frequencies:[261.6255653006,299.37379946195,342.56848033562,349.22823143301,391.99543598175,448.5538823653,513.27277840175,523.2511306012],description:"Aristo Redup. Diatonic, Dorian Mode, 14 + 14 + 2 parts"},arist_diatred2:{frequencies:[261.6255653006,271.89678302796,308.14612137864,349.22823143301,391.99543598175,407.38487419079,461.69751437372,523.2511306012],description:"PsAristo 2 Redup. Diatonic 2, 4 + 13 + 13 parts"},arist_diatred3:{frequencies:[261.6255653006,282.57123920205,314.13668154225,349.22823143301,391.99543598175,423.37848741825,470.6732130613,523.2511306012],description:"PsAristo 3 Redup. Diatonic, 8 + 11 + 11 parts"},arist_enh:{frequencies:[261.6255653006,269.29177952703,277.18263097687,349.22823143301,391.99543598175,403.48177901006,415.30469757995,523.2511306012],description:"Aristoxenos' Enharmonion, Dorian mode"},arist_enh2:{frequencies:[261.6255653006,270.59109411209,279.86402025325,349.22823143301,391.99543598175,405.42855124795,419.32224210861,523.2511306012],description:"PsAristo 2 Enharmonic, 3.5 + 3.5 + 23 parts"},arist_enh3:{frequencies:[261.6255653006,267.99870394401,274.52693220706,349.22823143301,391.99543598175,401.54435471309,411.32564531909,523.2511306012],description:"PsAristo Enharmonic, 2.5 + 2.5 + 25 parts"},arist_hemchrom:{frequencies:[261.6255653006,273.20871865617,285.30470202322,349.22823143301,391.99543598175,409.35055662695,427.47405410759,523.2511306012],description:"Aristoxenos's Chromatic Hemiolion, Dorian Mode"},arist_hemchrom2:{frequencies:[261.6255653006,273.20871865617,293.66476791741,349.22823143301,391.99543598175,409.35055662695,440,523.2511306012],description:"PsAristo C/H Chromatic, 4.5 + 7.5 + 18 parts"},arist_hemchrom3:{frequencies:[261.6255653006,271.81876914348,282.83844897362,348.83408706747,392.4383479509,407.72815371522,424.25767346043,523.2511306012],description:"Dorian mode of Aristoxenos' Hemiolic Chromatic according to Ptolemy's interpret"},arist_hypenh2:{frequencies:[261.6255653006,267.3544191957,273.20871865617,349.22823143301,391.99543598175,400.57901831518,409.35055662695,523.2511306012],description:"PsAristo 2nd Hyperenharmonic, 37.5 + 37.5 + 425 cents"},arist_hypenh3:{frequencies:[261.6255653006,265.43099677612,269.29177952703,349.22823143301,391.99543598175,397.69714089209,403.48177901006,523.2511306012],description:"PsAristo 3 Hyperenharmonic, 1.5 + 1.5 + 27 parts"},arist_hypenh4:{frequencies:[261.6255653006,266.71168334607,271.8968348557,349.22823143301,391.99543598175,399.61600264311,407.38495184466,523.2511306012],description:"PsAristo 4 Hyperenharmonic, 2 + 2 + 26 parts"},arist_hypenh5:{frequencies:[261.6255653006,265.12453591719,268.67030163715,349.22823143301,391.99543598175,397.23796841836,402.55061428954,523.2511306012],description:"PsAristo Hyperenharmonic, 23 + 23 + 454 cents"},arist_intdiat:{frequencies:[261.6255653006,275.39533189537,307.79478270659,348.83408706747,392.4383479509,413.09299784305,461.69217405988,523.2511306012],description:"Dorian mode of Aristoxenos's Intense Diatonic according to Ptolemy"},arist_penh2:{frequencies:[261.6255653006,269.29177952703,339.28638158975,349.22823143301,391.99543598175,403.48177901006,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 3 + 24 + 3 parts"},arist_penh3:{frequencies:[261.6255653006,329.62755691287,339.28638158975,349.22823143301,391.99543598175,493.88330125613,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 24 + 3 + 3 parts"},arist_pschrom2:{frequencies:[261.6255653006,278.52001838539,296.50560089735,349.22823143301,391.99543598175,417.30851459865,444.25644015807,523.2511306012],description:"PsAristo 2 Chromatic, 6.5 + 6.5 + 17 parts"},arist_softchrom:{frequencies:[261.6255653006,271.89678302796,282.57123920205,349.22823143301,391.99543598175,407.38487419079,423.37848741825,523.2511306012],description:"Aristoxenos's Chromatic Malakon, Dorian Mode"},arist_softchrom2:{frequencies:[261.6255653006,277.18263097687,324.90175210669,349.22823143301,391.99543598175,415.30469757995,486.80259447109,523.2511306012],description:"Aristoxenos' Soft Chromatic, 6 + 16.5 + 9.5 parts"},arist_softchrom3:{frequencies:[261.6255653006,281.2143451833,329.62755691287,349.22823143301,391.99543598175,421.34544350737,493.88330125613,523.2511306012],description:"Aristoxenos's Chromatic Malakon, 9.5 + 16.5 + 6 parts"},arist_softchrom4:{frequencies:[261.6255653006,277.18263097687,297.93622032612,349.22823143301,391.99543598175,415.30469757995,446.39994737251,523.2511306012],description:"PsAristo S. Chromatic, 6 + 7.5 + 16.5 parts"},arist_softchrom5:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,392.4383479509,405.97070477679,420.46965851882,523.2511306012],description:"Dorian mode of Aristoxenos' Soft Chromatic according to Ptolemy's interpretati"},arist_softdiat:{frequencies:[261.6255653006,277.18263097687,302.26980244078,349.22823143301,391.99543598175,415.30469757995,452.89298412314,523.2511306012],description:"Aristoxenos's Diatonon Malakon, Dorian Mode"},arist_softdiat2:{frequencies:[261.6255653006,277.18263097687,320.24370022528,349.22823143301,391.99543598175,415.30469757995,479.82340237272,523.2511306012],description:"Dorian Mode, 6 + 15 + 9 parts"},arist_softdiat3:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Dorian Mode, 9 + 15 + 6 parts"},arist_softdiat4:{frequencies:[261.6255653006,285.30470202322,302.26980244078,349.22823143301,391.99543598175,427.47405410759,452.89298412314,523.2511306012],description:"Dorian Mode, 9 + 6 + 15 parts"},arist_softdiat5:{frequencies:[261.6255653006,302.26980244078,320.24370022528,349.22823143301,391.99543598175,452.89298412314,479.82340237272,523.2511306012],description:"Dorian Mode, 15 + 6 + 9 parts"},arist_softdiat6:{frequencies:[261.6255653006,302.26980244078,329.62755691287,349.22823143301,391.99543598175,452.89298412314,493.88330125613,523.2511306012],description:"Dorian Mode, 15 + 9 + 6 parts"},arist_softdiat7:{frequencies:[261.6255653006,275.39533189537,299.00064605783,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Dorian mode of Aristoxenos's Soft Diatonic according to Ptolemy"},arist_synchrom:{frequencies:[261.6255653006,277.18263097687,293.66476791741,349.22823143301,391.99543598175,415.30469757995,440,523.2511306012],description:"Aristoxenos's Chromatic Syntonon, Dorian Mode"},arist_syndiat:{frequencies:[261.6255653006,277.18263097687,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Aristoxenos's Diatonon Syntonon, Dorian Mode"},arist_unchrom:{frequencies:[261.6255653006,271.89678302796,293.66476791741,349.22823143301,391.99543598175,407.38487419079,440,523.2511306012],description:"Aristoxenos's Unnamed Chromatic, Dorian Mode, 4 + 8 + 18 parts"},arist_unchrom2:{frequencies:[261.6255653006,282.57123920205,293.66476791741,349.22823143301,391.99543598175,423.37848741825,440,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 4 + 18 parts"},arist_unchrom3:{frequencies:[261.6255653006,311.12698372208,323.3415889232,349.22823143301,391.99543598175,466.16376151809,484.46499093218,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 4 + 8 parts"},arist_unchrom4:{frequencies:[261.6255653006,311.12698372208,336.03572815422,349.22823143301,391.99543598175,466.16376151809,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 8 + 4 parts"},arith13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,318.85615771011,327.03195662575,343.38355445704,367.91095120397,371.99885066179,392.4383479509,449.66894036041,457.84473927605,490.54793493862,523.2511306012],description:"The first 13 terms of the arithmetic series, octave reduced"},arith22:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,312.72430852337,318.85615771011,327.03195662575,343.38355445704,349.51540364377,367.91095120397,371.99885066179,388.35044849308,392.4383479509,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,517.11928141447,523.2511306012],description:"The first 22 terms of the arithmetic series, octave reduced"},arnautoff_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,523.2511306012],description:"Philip Arnautoff, transposed Archytas enharmonic (2005), 1/1 vol 12/1"},"aron-neidhardt":{frequencies:[261.6255653006,275.62199471997,292.53519855339,310.07474405997,327.04005607367,348.83408706747,367.49599295996,391.42133845759,413.43299207996,437.43855491017,465.11211608996,489.99465727995,523.2511306012],description:"Aron-Neidhardt equal beating well temperament"},art_nam:{frequencies:[261.6255653006,287.78812183066,317.68818643644,324.77656382143,348.83408706747,353.19451315581,392.4383479509,431.68218274599,473.41768959156,523.2511306012],description:"Artificial Nam System"},artusi:{frequencies:[261.6255653006,276.63528606528,292.50629850443,309.28767786778,327.03195662575,349.91920725962,369.99442271164,391.22137338448,413.66637442451,437.39882871549,462.49310482954,489.02679755603,523.2511306012],description:"Lute tuning of Giovanni Maria Artusi (1603). 1/4-comma w. acc. 1/2-way naturals"},astro:{frequencies:[13.75,13.8316453704,13.91377553836,13.99639338254,14.07098381034,14.15453513289,14.23858257025,14.32312915102,14.40817767355,14.49373120103,14.57979273211,14.66636528323,14.75345188876,14.84105560105,14.92917949063,15.01782664621,15.10700017487,15.1875093157,15.27769039377,15.36840704189,15.45966226264,15.55145934276,15.64380149972,15.73669197012,15.83013400973,15.92413089371,16.01868591662,16.11380239262,16.20948365552,16.30573305894,16.39263055969,16.48996755631,16.58788242969,16.68637870643,16.78545983879,16.88512929958,16.98539058219,17.08624720077,17.18770269033,17.28976060687,17.39242452751,17.49569805061,17.59958489756,17.69337767194,17.7984382082,17.90412257766,18.01043448453,18.11737765504,18.22495583753,18.33317280261,18.44203234327,18.55153827502,18.66169443603,18.77250468726,18.88397302169,18.99610312873,19.09733831271,19.21073534981,19.32480572095,19.43955342429,19.55498248173,19.67109693902,19.78790086598,19.90539835657,20.02359352906,20.14249064253,20.26209363229,20.38240680608,20.50343438087,20.62518059864,20.73509756099,20.85821935885,20.98207223488,21.1066605301,21.23198861133,21.35806087129,21.4848817288,21.61245575376,21.74078716869,21.86988059568,21.99974055944,22.13037161156,22.26177833063,22.38041714879,22.51330859954,22.64698913914,22.78146345308,22.91673625467,23.0528122852,23.18969644807,23.32739327396,23.46590772227,23.60524464792,23.74540893465,23.88640549521,24.02823927151,24.15629202037,24.29972834105,24.44401636439,24.58916114767,24.73516777819,24.8820415172,25.02978722599,25.17841022592,25.32791572621,25.478308967,25.62959521956,25.78177978645,25.93486800174,26.07308167197,26.22789959273,26.38363679833,26.54029874734,26.69789108494,26.85641902723,27.01588828389,27.17630444429,27.33767313101,27.5],description:"Astro temperament, g=132.194511, 5-limit"},athan_chrom:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,493.88330125613,523.2511306012],description:"Athanasopoulos's Byzantine Liturgical mode Chromatic"},auftetf:{frequencies:[261.6255653006,264.29521392612,269.80136421624,287.78812183066,359.73515228832,380.54627680087,384.42940207435,392.4383479509,418.60090448096],description:"5/4 C.I. again"},augmented:{frequencies:[261.6255653006,312.71213182188,329.62755691287,393.99259743989,415.30469757995,496.39956701727,523.2511306012],description:"Augmented temperament, g=91.2, oct=1/3, 5-limit"},augteta:{frequencies:[261.6255653006,280.76889934699,302.93486508491,328.90071066361,359.73515228832,380.54627680087,408.39112632289,440.63253103259,478.40103369253],description:"Linear Division of the 11/8, duplicated on the 16/11"},augteta2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,373.75080757229,402.50086969323,436.04260883433,475.68284600109],description:"Linear Division of the 7/5, duplicated on the 10/7"},augtetb:{frequencies:[261.6255653006,270.8594087818,280.76889934699,302.93486508491,359.73515228832,380.54627680087,295.48299139832,408.39112632289,440.63253103259],description:"Harmonic mean division of 11/8"},augtetc:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,359.73515228832,380.54627680087,407.72815371522,439.09185784716,475.68284600109],description:"11/10 C.I."},augtetd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,359.73515228832,380.54627680087,395.18267206244,410.98997894494,428.11456140098],description:"11/9 C.I."},augtete:{frequencies:[261.6255653006,269.80136421624,278.50463402967,287.78812183066,359.73515228832,380.54627680087,392.4383479509,405.0976494977,418.60090448096],description:"5/4 C.I."},augtetg:{frequencies:[261.6255653006,278.50463402967,297.71185016965,319.76457981184,359.73515228832,380.54627680087,405.0976494977,433.03541842858,465.11211608996],description:"9/8 C.I."},augteth:{frequencies:[261.6255653006,278.50463402967,287.78812183066,319.76457981184,359.73515228832,380.54627680087,405.0976494977,418.60090448096,465.11211608996],description:"9/8 C.I. A gapped version of this scale is called AugTetI"},augtetj:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. comprised of 11:10:9:8 subharmonic series on 1 and 8:9:10:11 on 16/11"},augtetk:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,418.60090448096,465.11211608996],description:"9/8 C.I. This is the converse form of AugTetJ"},augtetl:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. This is the harmonic form of AugTetI"},avg_bac:{frequencies:[261.6255653006,290.69507255622,307.79478270659,348.83408706747,392.4383479509,436.04260883433,461.69217405988,523.2511306012],description:"Average Bac System"},avicenna:{frequencies:[261.6255653006,290.69507255622,299.00064605783,348.83408706747,392.4383479509,436.04260883433,448.50096908674,523.2511306012],description:"Soft diatonic of Avicenna (Ibn Sina)"},avicenna_17:{frequencies:[261.6255653006,278.99913799634,283.42769574232,294.32876096318,310.07474405997,318.85615771011,331.11985608357,348.83408706747,371.99885066179,377.90359432309,392.4383479509,413.43299207996,425.14154361347,441.49314144476,465.11211608996,495.99846754905,503.87145909745,523.2511306012],description:"Tuning by Avicenna (Ibn Sina), Ahmed Mahmud Hifni, Cairo, 1977"},avicenna_19:{frequencies:[261.6255653006,275.62199471997,283.49690885483,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,358.80077526939,372.50983809402,377.99587847311,392.4383479509,413.43299207996,425.24536328225,441.49314144476,465.11211608996,478.40103369253,496.67978412536,503.45611792634,523.2511306012],description:"Arabic scale by Ibn Sina"},avicenna_chrom:{frequencies:[261.6255653006,269.10058145205,299.00064605783,348.83408706747,392.4383479509,403.65087217807,448.50096908674,523.2511306012],description:"Dorian mode a chromatic genus of Avicenna"},avicenna_chrom2:{frequencies:[261.6255653006,271.8968348557,323.34165055711,349.22823143301,391.99543598175,407.38495184466,484.46508327871,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 4 + 18 + 8 parts"},avicenna_chrom3:{frequencies:[261.6255653006,290.69507255622,339.14425131559,348.83408706747,392.4383479509,436.04260883433,508.71637697339,523.2511306012],description:"Avicenna's Chromatic permuted"},avicenna_diat:{frequencies:[261.6255653006,281.75060878526,305.22982618403,348.83408706747,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Dorian mode a soft diatonic genus of Avicenna"},avicenna_diff:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,310.68035879446,343.38355445704,367.91095120397,392.4383479509,400.61414686654,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Difference tones of Avicenna's Soft diatonic reduced by 2/1"},avicenna_enh:{frequencies:[261.6255653006,268.33391312882,279.06726965397,348.83408706747,392.4383479509,402.50086969323,418.60090448096,523.2511306012],description:"Dorian mode of Avicenna's (Ibn Sina) Enharmonic genus"},awad:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,358.80077526939,369.35373924791,380.54627680087,392.4383479509,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"d'Erlanger vol.5, p.37, after Mans.ur 'Awad"},awraamoff:{frequencies:[261.6255653006,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Awraamoff Septimal Just"},ayers:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,537.78588422901,569.42034800719,605.00911975764,645.34306107481,691.43899400873,744.62660893248,806.67882634352,880.01326510202,968.01459161222,1075.57176845802,1210.01823951527,1382.87798801746,1613.35765268703,1936.02918322444,2420.03647903055,3226.71530537407,4840.0729580611,9680.1459161222],description:"Lydia Ayers, algorithmic composition, subharmonics 1-37"},ayers_19:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,523.2511306012],description:"Scale for NINETEEN, for 19 for the 90's CD. Repeats at 37/19 (or 2/1)"},ayers_ap:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Lydia Ayers' Appetizer, ICMC 96, Balinese Slendro from Singaraja,"},ayers_me:{frequencies:[261.6255653006,280.31310567921,299.00064605783,308.34441624714,336.37572681506,392.4383479509,420.46965851882,448.50096908674,504.56359022259,523.2511306012],description:"Scale for Merapi (1996), Lydia Ayers. Slendro 0 2 4 5 7 9, Pelog 0 1 3 6 8 9"},h10_27:{frequencies:[261.6255653006,281.00523680435,300.3849083081,319.76457981184,348.83408706747,368.21375857121,397.28326582684,426.35277308246,455.42228033808,484.4917875937,523.2511306012],description:"10-tET harmonic approximation, fundamental=27"},h12_24:{frequencies:[261.6255653006,272.52663052146,294.32876096318,316.13089140489,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,468.74580449691,490.54793493862,523.2511306012],description:"12-tET harmonic approximation, fundamental=24"},h14_27:{frequencies:[261.6255653006,271.31540105247,290.69507255622,300.3849083081,319.76457981184,339.14425131559,348.83408706747,368.21375857121,387.59343007496,406.97310157871,426.35277308246,455.42228033808,474.80195184183,494.18162334558,523.2511306012],description:"14-tET harmonic approximation, fundamental=27"},h15_24:{frequencies:[261.6255653006,272.52663052146,283.42769574232,305.22982618403,316.13089140489,327.03195662575,348.83408706747,359.73515228832,381.53728273004,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"15-tET harmonic approximation, fundamental=24"},hahn9:{frequencies:[261.6255653006,286.15296204753,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,457.84473927605,490.54793493862,523.2511306012],description:"Paul Hahn's just version of 9 out of 31 scale. TL 6-8-'98"},hahn_7:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Paul Hahn's scale with 32 consonant 7-limit dyads. TL '99, see also smithgw_hahn12"},hahn_g:{frequencies:[261.6255653006,280.50183143454,294.66523452594,309.54379154736,331.87735433448,348.63486612079,373.78884718875,392.66259958718,420.99317852788,442.25042328711,464.58101193362,498.10049926644,523.2511306012],description:'fourth of sqrt(2)-1 octave "recursive" meantone, Paul Hahn'},hahnmaxr:{frequencies:[261.6255653006,275.93321340298,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Paul Hahn's hahn_7 marvel projected to the 5-limit"},halfefg357777:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.35783506196,341.71502406609,375.57576268738,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Half genus [357777]"},hamilton:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,479.64686971777,523.2511306012],description:"Elsie Hamilton's gamut, from article The Modes of Ancient Greek Music (1953)"},hamilton_jc:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,338.57426097725,411.12588832951,383.71749577421,442.75095666255,426.35277308246,479.64686971777,523.2511306012],description:"Chalmers' permutation of Hamilton's gamut. Diatonic notes on white"},hamilton_jc2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"EH gamut, diatonic notes on white and drops 17 for 25. JC Dorian Harmonia on C"},hammond:{frequencies:[261.6255653006,226.52945288223,240.12209418,254.35818848669,269.43528366778,285.40970760065,302.50455987882,320.49131749323,339.40613876835,359.73515228832,381.06332337261,403.65087217807,427.65717404906,453.05890576445],description:'Hammond organ pitch wheel ratios, 1/1=320 Hz. Do "del 0" to get 12-tone scale'},hammond12:{frequencies:[261.6255653006,277.32410877127,293.76579515365,311.17877832054,329.62811300357,349.37146352202,370.1449018936,391.99018843668,415.46876743159,440.10130305006,466.18833124791,493.91391932426,523.2511306012],description:"Hammond organ scale, 1/1=277.0731707 Hz, A=440, see hammond for the ratios"},handblue:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Handy Blues" of Pitch Palette, 7-limit'},handel:{frequencies:[261.6255653006,276.07055536165,292.89641271707,310.57937447136,328.79480940231,349.02322090701,368.4933346061,391.37619916626,414.10583283548,438.86859125239,465.61660972366,492.3908742288,523.2511306012],description:"Well temperament according to Georg Friedrich H\xEF\xBF\xBDndel's rules (c. 1780)"},hanson_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"JI version of Hanson's 19 out of 53-tET scale"},"harm-doreninv1":{frequencies:[261.6255653006,321.08592105074,327.03195662575,332.97799220076,380.54627680087,499.46698830115,511.35905945117,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Dorian Harmonia"},"harm-dorinv1":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Dorian Harmonia"},"harm-lydchrinv1":{frequencies:[261.6255653006,322.00069575458,342.12573923925,362.25078272391,402.50086969323,483.00104363188,503.12608711654,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Lydian Harmonia"},"harm-lydeninv1":{frequencies:[261.6255653006,342.12573923925,352.18826098158,362.25078272391,402.50086969323,503.12608711654,513.18860885887,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Lydian Harmonia"},"harm-mixochrinv1":{frequencies:[261.6255653006,336.37572681506,355.06326719367,373.75080757229,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Mixolydian Harmonia"},"harm-mixoeninv1":{frequencies:[261.6255653006,355.06326719367,364.40703738298,373.75080757229,411.12588832951,504.56359022259,513.90736041189,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Mixolydian Harmonia"},harm10:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"6/7/8/9/10 harmonics"},harm11s:{frequencies:[261.6255653006,65.40639132515,95.13656920022,104.65022612024,116.27802902249,130.8127826503,149.50032302891,174.41704353373,196.21917397545,209.30045224048,261.6255653006,327.03195662575,348.83408706747,392.4383479509,457.84473927605,523.2511306012,588.65752192635,654.0639132515,719.47030457665,1046.5022612024],description:"Harm. 1/4-11/4 and subh. 4/1-4/11. Joseph Pehrson 1999"},harm12s:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,348.83408706747,359.73515228832,380.54627680087,392.4383479509,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"Harmonics 1 to 12 and subharmonics mixed"},"harm15-30":{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,383.71749577421,418.60090448096,436.04260883433,453.48431318771,488.36772189445,523.2511306012],description:"Harmonics 15 to 30"},harm15:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991],description:"Fifth octave of the harmonic overtone series"},"harm16-32":{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Harmonics 16-32 & Tom Stone's Guitar Scale"},harm16:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,2093.0045224048,1395.33634826987,1046.5022612024,837.20180896192,697.66817413493,598.00129211566,523.2511306012,465.11211608996,418.60090448096,380.54627680087,348.83408706747,322.00069575458,299.00064605783,279.06726965397,261.6255653006],description:"First 16 harmonics and subharmonics"},"harm1c-dorian":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"Harm1C-Dorian"},"harm1c-hypod":{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"HarmC-Hypodorian"},"harm1c-hypol":{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"HarmC-Hypolydian"},"harm1c-lydian":{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,382.37582620857,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"Harm1C-Lydian"},"harm1c-mix":{frequencies:[261.6255653006,299.00064605783,373.75080757229,392.4383479509,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"Harm1C-Con Mixolydian"},"harm1c-mixolydian":{frequencies:[261.6255653006,280.31310567921,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"Harm1C-Mixolydian"},harm24:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"Harmonics 12 to 24"},harm24_2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 12 to 24, mode 9"},harm3:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605],description:"Third octave of the harmonic overtone series"},"harm30-60":{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,357.55493924415,366.27579142084,374.99664359753,383.71749577421,392.4383479509,401.15920012759,409.88005230427,418.60090448096,427.32175665765,436.04260883433,444.76346101102,453.48431318771,462.20516536439,470.92601754108,479.64686971777,488.36772189445,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Harmonics 30-60"},harm30:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,310.07474405997,322.00069575458,334.88072358477,348.83408706747,364.00078650518,398.6675280771,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024,1196.00258423131,1395.33634826987,1674.40361792384,2093.0045224048,2790.67269653973,4186.0090448096,8372.0180896192,8633.6436549198,8895.2692202204,9156.894785521,9418.5203508216,9680.1459161222,9941.7714814228,10203.3970467234,10465.022612024,10726.6481773246,10988.2737426252,11249.8993079258,11511.5248732264,11773.150438527,12034.7760038276,12296.4015691282,12558.0271344288,12819.6526997294,13081.27826503,13342.9038303306,13604.5293956312,13866.1549609318,14127.7805262324,14389.406091533,14651.0316568336,14912.6572221342,15174.2827874348,15435.9083527354,15697.533918036,15959.1594833366,16220.7850486372],description:"First 30 harmonics and subharmonics"},"harm32-64":{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,335.20775554139,343.38355445704,351.55935337268,359.73515228832,367.91095120397,376.08675011961,384.26254903526,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,449.66894036041,457.84473927605,466.02053819169,474.19633710734,482.37213602298,490.54793493862,498.72373385427,506.89953276991,515.07533168556,523.2511306012],description:"Harmonics 32-64"},harm37odd:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Odd harmonics until 37"},harm4:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862],description:"Fourth octave of the harmonic overtone series"},"harm6-12":{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,331.11985608357,343.38355445704,359.73515228832,367.91095120397,392.4383479509,400.61414686654,404.70204632437,408.78994578219,441.49314144476,449.66894036041,457.84473927605,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"First 12 harmonics of 6th through 12th harmonics"},harm6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:"Harmonics 6-12"},"harm60-30":{frequencies:[261.6255653006,280.31310567921,290.69507255622,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,413.09299784305,436.04260883433,448.50096908674,490.54793493862,523.2511306012],description:"Harmonics 60 to 30 (Perkis)"},harm7lim:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,3139.5067836072,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,7325.5158284168,7848.766959018,8372.0180896192,9156.894785521,9418.5203508216,10465.022612024,10988.2737426252,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14651.0316568336,15697.533918036,16482.4106139378,16744.0361792384,18313.789571042,18837.0407016432,19621.917397545,20930.045224048,21191.6707893486,21976.5474852504,23546.300877054,25116.0542688576,25639.3053994588,26162.55653006,27470.684356563,29302.0633136672,31395.067836072],description:"7-limit harmonics"},harm8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 8-16"},harm9:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,356.10146388137,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"6/7/8/9 harmonics, First 9 overtones of 5th through 9th harmonics"},harm_bastard:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:`Schlesinger's "Bastard" Hypodorian Harmonia & inverse 1)7 from 1.3.5.7.9.11.13`},harm_bastinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,523.2511306012],description:`Inverse Schlesinger's "Bastard" Hypodorian Harmonia & 1)7 from 1.3.5.7.9.11.13`},harm_darreg:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,5232.511306012,6279.0135672144,7325.5158284168,8372.0180896192,9418.5203508216,10465.022612024,11511.5248732264,12558.0271344288,13604.5293956312,14651.0316568336,15697.533918036],description:"Darreg Harmonics 4-15"},harm_mean:{frequencies:[261.6255653006,270.06509966514,279.06726965397,299.00064605783,348.83408706747,392.4383479509,405.0976494977,418.60090448096,448.50096908674,523.2511306012],description:"Harm. Mean 9-tonic 8/7 is HM of 1/1 and 4/3, etc."},"harmc-hypop":{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,363.36884069528,377.90359432309,406.97310157871,465.11211608996,494.18162334558,523.2511306012],description:"HarmC-Hypophrygian"},"harmd-15":{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"HarmD-15-Harmonia"},"harmd-conmix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-ConMixolydian"},"harmd-hypod":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"HarmD-Hypodorian"},"harmd-hypol":{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"HarmD-Hypolydian"},"harmd-hypop":{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,406.97310157871,436.04260883433,465.11211608996,523.2511306012],description:"HarmD-Hypophrygian"},"harmd-lyd":{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"HarmD-Lydian"},"harmd-mix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-Mixolydian. Harmonics 7-14"},"harmd-phr":{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,348.83408706747,327.03195662575,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"HarmD-Phryg (with 5 extra tones)"},"harme-hypod":{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,376.08675011961,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"HarmE-Hypodorian"},"harme-hypol":{frequencies:[261.6255653006,281.24748269815,274.70684356563,340.11323489078,366.27579142084,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"HarmE-Hypolydian"},"harme-hypop":{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,363.36884069528,377.90359432309,406.97310157871,494.18162334558,508.71637697339,523.2511306012],description:"HarmE-Hypophrygian"},"harmjc-15":{frequencies:[261.6255653006,280.31310567921,301.87565226992,313.95067836072,327.03195662575,356.76213450082,373.75080757229,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Rationalized JC Sub-15 Harmonia on C. MD=15, No planetary assignment."},"harmjc-17-2":{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-17":{frequencies:[261.6255653006,269.55361273395,277.97716313189,296.50897400735,317.68818643644,342.12573923925,355.81076880882,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-19-2":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-19":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,414.24047839262,432.2509339749,451.89870370104,473.41768959156,497.08857407114,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-21":{frequencies:[261.6255653006,268.0066766494,274.70684356563,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,406.97310157871,422.62591317789,439.53094970501,457.84473927605,523.2511306012],description:"Rationalized JC Sub-21 Harmonia on C. MD=21, No planetary assignment."},"harmjc-23-2":{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,462.87600014722,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-23":{frequencies:[261.6255653006,273.51763645063,300.86940009569,316.70463167967,334.29933343966,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,481.3910401531,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-25":{frequencies:[261.6255653006,272.52663052146,297.30177875068,311.45900631024,327.03195662575,363.36884069528,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,503.12608711654,523.2511306012],description:"Rationalized JC Sub-25 Harmonia on C. MD=25, No planetary assignment."},"harmjc-27":{frequencies:[261.6255653006,271.68808704293,294.32876096318,307.12566361375,321.08592105074,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,504.56359022259,523.2511306012],description:"Rationalized JC Sub-27 Harmonia on C. MD=27, No planetary assignment."},"harmjc-hypod16":{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,418.60090448096,440.63253103259,465.11211608996,523.2511306012],description:"Rationalized JC Hypodorian Harmonia on C. Saturn Scale on C, MD=16. (Steiner)"},"harmjc-hypol20":{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,455.00098313148,575.57624366132,523.2511306012],description:"Rationalized JC Hypolydian Harmonia on C. Mars scale on C., MD=20"},"harmjc-hypop18":{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Rationalized JC Hypophrygian Harmonia on C. Jupiter scale on C, MD =18"},"harmjc-lydian13":{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,400.13321751856,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"Rationalized JC Lydian Harmonia on C. Mercury scale on C, MD = 26 or 13"},"harmjc-mix14":{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,332.97799220076,348.83408706747,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Rationalized JC Mixolydian Harmonia on C. Moon Scale on C, MD = 14"},"harmjc-phryg12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Rationalized JC Phrygian Harmonia on C. Venus scale on C, MD = 24 or 12"},harmonical:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"See pp 17 and 466-468 Helmholtz. lower 4 oct. Instr. designed & tuned by Ellis"},harmonical_up:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,457.84473927605,392.4383479509,408.78994578219,425.14154361347,474.19633710734,490.54793493862,523.2511306012],description:"Upper 2 octaves of Ellis's Harmonical"},harmsub16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,301.87565226992,327.03195662575,356.76213450082,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"16 harmonics on 1/1 and 16 subharmonics on 15/8"},harrison_16:{frequencies:[261.6255653006,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:'Lou Harrison 16-tone superparticular "Ptolemy Duple"'},harrison_5:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_3:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,406.97310157871,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,490.54793493862,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_8:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,367.91095120397,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:'Lou Harrison 8-tone tuning for "Serenade for Guitar"'},harrison_cinna:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,343.38355445704,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Lou Harrison, "Incidental Music for Corneille's Cinna" (1955-56) 1/1=C`},harrison_diat:{frequencies:[261.6255653006,274.70684356563,313.95067836072,348.83408706747,392.4383479509,412.06026534844,470.92601754108,523.2511306012],description:"From Lou Harrison, a soft diatonic"},harrison_joy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Lou Harrison's Joyous 6"},harrison_mid:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Lou Harrison mid mode"},harrison_mid2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"Lou Harrison mid mode 2"},harrison_min:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"From Lou Harrison, a symmetrical pentatonic with minor thirds"},harrison_mix1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,425.14154361347,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix2:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix3:{frequencies:[261.6255653006,313.95067836072,336.37572681506,392.4383479509,418.60090448096,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix4:{frequencies:[261.6255653006,280.31310567921,327.03195662575,392.4383479509,448.50096908674,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_songs:{frequencies:[261.6255653006,271.31540105247,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'Shared gamut of "Four Strict Songs" (1951-55), each pentatonic'},harrisonj:{frequencies:[261.6255653006,272.17712546173,292.13970819848,313.56642833783,326.21280531667,350.13858362887,364.25994396351,390.97625694066,406.744629928,436.57694340361,468.59728067062,487.49616921257,523.2511306012],description:"John Harrison's temperament (1775), almost 3/10-comma. Third = 1200/pi"},harrisonm_rev:{frequencies:[261.6255653006,257.53766584278,294.32876096318,289.72987407313,331.11985608357,343.38355445704,372.50983809402,392.4383479509,386.30649876417,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:'Michael Harrison, piano tuning for "Revelation" (2001), 1/1=F'},haverstick13:{frequencies:[261.6255653006,283.85429714132,301.75671459889,307.97166902637,320.78822215662,341.02002673508,362.52783176564,377.61479489998,401.43059675514,426.7484383229,444.50800708553,482.27514684959,502.34551296122,523.2511306012],description:"Neil Haverstick, scale in 34-tET, MMM 21-5-2006"},hawkes:{frequencies:[261.6255653006,274.56549986328,292.86986732103,310.24975557428,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901507992,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1807)"},hawkes2:{frequencies:[261.6255653006,275.15193010334,293.04845178801,312.10900487995,328.24542585003,349.59527202198,367.66978141816,391.58387939843,411.8292495232,438.61558204759,467.14415995873,491.2960898965,523.2511306012],description:"Meantone with fifth tempered 1/6 of 53-tET step by William Hawkes (1808)"},hawkes3:{frequencies:[261.6255653006,274.56549986328,292.86986732103,311.6193417424,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1811)"},hbarnes:{frequencies:[261.6255653006,276.71351472429,293.33333347996,310.95136287868,328.88393162803,349.42547049952,369.15973155124,391.77416758435,414.83597850347,439.25532436715,466.16376151809,493.04743111995,523.2511306012],description:"Variation on Barnes with 1/6P -> 1/8P. OdC '99"},hebdome1:{frequencies:[261.6255653006,265.71346475842,267.23182741418,269.80136421624,273.30527803723,280.31310567921,283.42769574232,287.78812183066,289.07289023169,292.28481123426,294.32876096318,300.63580584096,303.67253115248,308.34441624714,311.77046531655,315.35224388912,318.85615771011,323.76163705949,327.03195662575,334.03978426773,336.37572681506,340.11323489078,341.63159754654,346.88746827803,350.74177348112,359.73515228832,364.40703738298,367.91095120397,370.01329949656,375.7947573012,382.62738925213,385.43052030892,389.71308164569,392.4383479509,400.84774112128,404.70204632437,409.95791705585,411.12588832951,417.54973033466,420.46965851882,425.14154361347,431.68218274599,437.28844485957,441.49314144476,445.38637902364,449.66894036041,455.50879672872,462.5166243707,467.65569797482,470.92601754108,478.28423656516,479.64686971777,485.87604984397,490.54793493862,501.0596764016,504.56359022259,510.16985233617,513.90736041189,523.2511306012],description:"Wilson 1.3.5.7.9.11.13.15 hebdomekontany, 1.3.5.7 tonic"},helmholtz:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Helmholtz's Chromatic scale and Gipsy major from Slovakia"},helmholtz_24:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,331.11985608357,344.91651675372,348.83408706747,367.91095120397,372.50983809402,388.03108134794,392.4383479509,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,517.37477513058,523.2511306012],description:"Simplified Helmholtz 24"},helmholtz_hd:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Helmholtz Harmonic Decad"},helmholtz_pure:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,330.74639366397,344.91651675372,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,413.43299207996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,496.11959049595,516.79124009995,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning untempered"},helmholtz_temp:{frequencies:[261.6255653006,275.81645389904,279.10671937395,290.77707354032,294.24580701304,306.54917537161,310.20605716322,327.03195662575,330.9330448436,344.77062435684,348.88325535732,367.80710710303,372.19474608839,387.75741156435,392.38304142029,408.78994578219,413.66637442451,436.10414127513,441.30625330017,459.75895986689,465.24324076996,490.4788828408,496.3296094287,517.08305349316,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning"},hem_chrom:{frequencies:[261.6255653006,269.55361273395,285.40970760065,348.83408706747,392.4383479509,404.33041910093,428.11456140098,523.2511306012],description:"Hemiolic Chromatic genus has the strong or 1:2 division of the 12/11 pyknon"},hem_chrom11:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"11'al Hemiolic Chromatic genus with a CI of 11/9, Winnington-Ingram"},hem_chrom13:{frequencies:[261.6255653006,272.09058791262,283.42769574232,348.83408706747,392.4383479509,408.13588186894,425.14154361347,523.2511306012],description:"13'al Hemiolic Chromatic or neutral-third genus has a CI of 16/13"},hem_chrom2:{frequencies:[261.6255653006,269.29177952703,285.30470202322,349.22823143301,391.99543598175,403.48177901006,427.47405410759,523.2511306012],description:"1:2 Hemiolic Chromatic genus 3 + 6 + 21 parts"},hemiwuer24:{frequencies:[261.6255653006,274.60778382002,280.48822448524,286.49458884928,292.62957327549,307.15025309186,313.72755695954,320.44570714783,327.30771955335,350.90592546776,358.42021185082,366.09540888186,373.9349620795,392.49012653442,400.89489544613,409.47964376542,418.24822532303,439.00227453173,448.4030528436,458.00513880662,467.8128437444,491.02635713596,501.54117720983,512.28116095218,523.2511306012],description:"Hemiw\xEF\xBF\xBDrschmidt[24] in 229-tET tuning."},hen12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Adjusted Hahn12"},hen22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,415.27867508032,418.60090448096,436.04260883433,448.50096908674,457.84473927605,484.4917875937,490.54793493862,508.71637697339,523.2511306012],description:"Adjusted Hahn22"},hept_diamond:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,316.53463456122,325.57848126297,327.03195662575,334.88072358477,336.37572681506,348.83408706747,392.4383479509,406.97310157871,408.78994578219,418.60090448096,420.46965851882,432.48307733364,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Inverted-Prime Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondi:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,281.36411960997,289.40309445597,294.32876096318,297.67175429757,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,459.88868900496,465.11211608996,473.02836583367,486.54346200035,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Prime-Inverted Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondp:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,361.75386806997,367.91095120397,372.08969287196,378.42269266694,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Heptatonic Diamond based on Archytas's Enharmonic, 27 tones"},herf:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Sims:Reflections on This and That, 1991. Used by Herf in Ekmelischer Gesang"},heun:{frequencies:[261.6255653006,275.15237829755,293.0485888979,312.10878854255,328.24573110938,349.59519124833,367.67029324081,391.58396987353,411.83001550364,438.61588607285,467.14394139401,491.29666030217,523.2511306012],description:"Well temperament for organ of Jan Heun (1805), subset of 55-tET"},hexagonal13:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 13-tone scale"},hexagonal37:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,313.95067836072,322.99452506247,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 37-tone scale"},hexany1:{frequencies:[261.6255653006,305.22982618403,327.03195662575,381.53728273004,436.04260883433,457.84473927605,523.2511306012],description:"Two out of 1 3 5 7 hexany on 1.3"},hexany10:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"1.3.5.9 Hexany"},hexany11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"1.3.7.9 Hexany on 1.3"},hexany12:{frequencies:[261.6255653006,290.69507255622,305.22982618403,339.14425131559,406.97310157871,436.04260883433,523.2511306012],description:"3.5.7.9 Hexany on 3.9"},hexany13:{frequencies:[261.6255653006,285.40970760065,327.03195662575,356.76213450082,392.4383479509,475.68284600109,523.2511306012],description:"1.3.5.11 Hexany on 1.11"},hexany14:{frequencies:[261.6255653006,287.78812183066,340.11323489078,383.71749577421,453.48431318771,498.83274450648,523.2511306012],description:"5.11.13.15 Hexany (5.15), used in The Giving, by Stephen J. Taylor"},hexany15:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"1.3.5.15 2)4 hexany (1.15 tonic) degenerate, symmetrical pentatonic"},hexany16:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,465.11211608996,523.2511306012],description:"1.3.9.27 Hexany, a degenerate pentatonic form"},hexany17:{frequencies:[261.6255653006,327.03195662575,334.88072358477,408.78994578219,418.60090448096,523.2511306012],description:"1.5.25.125 Hexany, a degenerate pentatonic form"},hexany18:{frequencies:[261.6255653006,299.00064605783,341.71502406609,400.61414686654,457.84473927605,523.2511306012],description:"1.7.49.343 Hexany, a degenerate pentatonic form"},hexany19:{frequencies:[261.6255653006,299.00064605783,327.03195662575,418.60090448096,457.84473927605,523.2511306012],description:"1.5.7.35 Hexany, a degenerate pentatonic form"},hexany2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 2"},hexany20:{frequencies:[261.6255653006,279.06726965397,305.22982618403,398.6675280771,436.04260883433,465.11211608996,523.2511306012],description:"3.5.7.105 Hexany"},hexany21:{frequencies:[261.6255653006,279.06726965397,310.07474405997,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany"},hexany21a:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany + 4/3. Is Didymos Diatonic tetrachord on 1/1 and inv. on 3/2"},hexany22:{frequencies:[261.6255653006,276.76092858245,359.73515228832,380.54627680087,494.63583439645,523.2511306012],description:"1.11.121.1331 Hexany, a degenerate pentatonic form"},hexany23:{frequencies:[261.6255653006,348.83408706747,359.73515228832,380.54627680087,392.4383479509,523.2511306012],description:"1.3.11.33 Hexany, degenerate pentatonic form"},hexany24:{frequencies:[261.6255653006,327.03195662575,359.73515228832,380.54627680087,418.60090448096,523.2511306012],description:"1.5.11.55 Hexany, a degenerate pentatonic form"},hexany25:{frequencies:[261.6255653006,299.00064605783,359.73515228832,380.54627680087,457.84473927605,523.2511306012],description:"1.7.11.77 Hexany, a degenerate pentatonic form"},hexany26:{frequencies:[261.6255653006,294.32876096318,359.73515228832,380.54627680087,465.11211608996,523.2511306012],description:"1.9.11.99 Hexany, a degenerate pentatonic form"},hexany3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 3"},hexany4:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 4"},hexany49:{frequencies:[261.6255653006,299.00064605783,305.22982618403,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"1.3.21.49 2)4 hexany (1.21 tonic)"},hexany5:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 5"},hexany6:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 6"},hexany7:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 7"},hexany8:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,340.65828815182,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 8"},hexany9:{frequencies:[261.6255653006,299.00064605783,313.95067836072,358.80077526939,418.60090448096,448.50096908674,523.2511306012],description:"1.3.5.7 Hexany on 5.7"},hexany_cl:{frequencies:[261.6255653006,294.32876096318,301.39265122629,313.95067836072,327.03195662575,348.83408706747,353.19451315581,376.74081403286,392.4383479509,418.60090448096,470.92601754108,502.32108537715,523.2511306012],description:"Hexany Cluster 1"},hexany_cl2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Composed of 1.3.5.45, 1.3.5.75, 1.3.5.9, and 1.3.5.25 hexanies"},hexany_flank:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,327.03195662575,348.83408706747,373.75080757229,381.53728273004,427.14378008261,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Hexany Flanker, 7-limit, from Wilson"},hexany_tetr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,336.37572681506,348.83408706747,358.80077526939,523.2511306012],description:"Complex 12 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,339.14425131559,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,358.80077526939,372.08969287196,523.2511306012],description:"Complex 2 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,523.2511306012],description:"Complex 9 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_u2:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Hexany union = genus [335577] minus two corners"},hexany_union:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"The union of all of the pitches of the 1.3.5.7 hexany on each tone as 1/1"},hexany_urot:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,333.84512238879,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,392.4383479509,400.61414686654,406.97310157871,436.04260883433,445.12682985172,448.50096908674,457.84473927605,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Aggregate rotations of 1.3.5.7 hexany, 1.3 = 1/1"},hexanys:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Hexanys 1 3 5 7 9"},hexanys2:{frequencies:[261.6255653006,314.76825825228,425.14154361347,457.84473927605,269.80136421624,371.99885066179,392.4383479509,472.15238737843,318.85615771011,359.73515228832,343.38355445704,292.28481123426,523.2511306012],description:"Hexanys 1 3 7 11 13"},higgs:{frequencies:[261.6255653006,392.4383479509,418.60090448096,422.62591317789,423.58424858192,425.14154361347,436.04260883433,523.2511306012],description:"From Greg Higgs announcement of the formation of an Internet Tuning list"},hinsz_gr:{frequencies:[261.6255653006,274.68983337859,292.34127285051,310.07474405997,326.6631048533,348.83408706747,366.25311135453,391.11111150212,412.03474986192,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Reconstructed Hinsz temperament, organ Pelstergasthuiskerk Groningen. Ortgies,2002"},hipkins:{frequencies:[261.6255653006,275.62199471997,299.00064605783,348.83408706747,392.4383479509,413.43299207996,448.50096908674,523.2511306012],description:"Hipkins' Chromatic"},hirajoshi:{frequencies:[261.6255653006,291.13134764929,317.84796618517,388.16504068057,412.91271853531,523.2511306012],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.112"},hirajoshi2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"Japanese pentatonic koto scale, theoretical. Helmholz/Ellis p.519, nr.110"},hirajoshi3:{frequencies:[261.6255653006,292.47977325983,321.54118165335,396.32121331049,415.54465627623,522.94897617031],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.111"},hirashima:{frequencies:[261.6255653006,277.33928225406,292.50627485027,312.00669222389,327.03195662575,349.91912034749,369.78570985692,391.22147055517,416.00892317314,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Tatsushi Hirashima, temperament of chapel organ of Kobe Shoin Women's Univ."},hjelmboogie:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:`Paul Hjelmstad's "Boogie Woogie" scale, TL 20-3-2006`},ho_mai_nhi:{frequencies:[261.6255653006,287.78812183066,348.83408706747,392.4383479509,431.68218274599,523.2511306012],description:"Ho Mai Nhi (Nam Hue) dan tranh scale, Vietnam"},hochgartz:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.86458629683,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.49999887294,438.2147004401,465.53241962975,490.54793493862,523.2511306012],description:"Michael Hochgartz, modified 1/5-comma meantone temperament"},hofmann1:{frequencies:[261.6255653006,262.65154790962,279.06726965397,348.83408706747,392.4383479509,393.97732186443,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #1, Dorian mode"},hofmann2:{frequencies:[261.6255653006,263.56353245097,279.06726965397,348.83408706747,392.4383479509,395.34529867646,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #2, Dorian mode"},hofmann_chrom:{frequencies:[261.6255653006,264.26824777838,290.69507255622,348.83408706747,392.4383479509,396.40237166758,436.04260883433,523.2511306012],description:"Hofmann's Chromatic"},holder:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,409.94826565972,437.46806069696,467.28984664562,489.70152554512,523.2511306012],description:"William Holder's equal beating meantone temperament (1694). 3/2 beats 2.8 Hz"},holder2:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,410.64811919433,437.46806069696,467.46154552107,489.70152554512,523.2511306012],description:"Holder's irregular e.b. temperament with improved Eb and G#"},hummel:{frequencies:[261.6255653006,277.1703574486,293.54676487235,311.03465677994,329.45811370906,349.13199096171,369.8583804246,391.99149393462,415.308682162,439.8732919971,466.10512967869,493.74031485884,523.2511306012],description:"Johann Nepomuk Hummel's quasi-equal temperament (1829)"},hummel2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"Johann Nepomuk Hummel's temperament according to the second bearing plan"},husmann:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747],description:"Tetrachord division according to Husmann"},hwerck3:{frequencies:[261.6255653006,276.40121172404,293.00227310437,310.60041853231,328.69828757761,349.03110370139,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Variation on Werckmeister III with 1/4P -> 1/6P and 0P -> 1/24P. OdC '99"},hyper_enh:{frequencies:[261.6255653006,264.93728131706,268.33391312882,348.83408706747,392.4383479509,397.40592197559,402.50086969323,523.2511306012],description:"13/10 HyperEnharmonic. This genus is at the limit of usable tunings"},hyper_enh2:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Hyperenharmonic genus from Kathleen Schlesinger's enharmonic Phrygian Harmonia"},hypo_chrom:{frequencies:[261.6255653006,275.39533189537,282.83844897362,290.69507255622,348.83408706747,373.75080757229,387.59343007496,402.50086969323,418.60090448096,427.14378008261,436.04260883433,455.00098313148,523.2511306012],description:"Hypolydian Chromatic Tonos"},hypo_diat:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012],description:"Hypolydian Diatonic Tonos"},hypo_enh:{frequencies:[261.6255653006,268.33391312882,271.81876914348,275.39533189537,348.83408706747,373.75080757229,387.59343007496,402.50086969323,410.39304360878,414.45634107026,418.60090448096,465.11211608996,523.2511306012],description:"Hypolydian Enharmonic Tonos"},hypod_chrom:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012],description:"Hypodorian Chromatic Tonos"},hypod_chrom2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chrom2inv:{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chromenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Hypodorian Harmonia in a mixed chromatic-enharmonic genus"},hypod_chrominv:{frequencies:[261.6255653006,277.97716313189,294.32876096318,359.73515228832,392.4383479509,408.78994578219,425.14154361347,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypodorian Inverted"},hypod_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012],description:"Hypodorian Diatonic Tonos"},hypod_diat2:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Schlesinger's Hypodorian Harmonia, a subharmonic series through 13 from 16"},hypod_diatcon:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,418.60090448096,465.11211608996,523.2511306012],description:"A Hypodorian Diatonic with its own trite synemmenon replacing paramese"},hypod_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Hypodorian Harmonia, a harmonic series from 8 from 16"},hypod_enh:{frequencies:[261.6255653006,270.06509966514,274.49239638096,279.06726965397,310.07474405997,348.83408706747,364.00078650518,380.54627680087,389.39619021485,393.97732186443,398.6675280771,452.54151835779,523.2511306012],description:"Hypodorian Enharmonic Tonos"},hypod_enhinv:{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypodorian Harmonia"},hypod_enhinv2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,359.73515228832,392.4383479509,400.61414686654,408.78994578219,523.2511306012],description:"A harmonic form of Schlesinger's Hypodorian enharmonic inverted"},hypodorian_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,784.8766959018,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the Hypodorian Tonos"},hypol_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the chromatic genus"},hypol_chrominv:{frequencies:[261.6255653006,313.95067836072,327.03195662575,340.11323489078,366.27579142084,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypolydian Harmonia"},hypol_chrominv2:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,523.2511306012],description:"harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_chrominv3:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_diat:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"Schlesinger's Hypolydian Harmonia, a subharmonic series through 13 from 20"},hypol_diatcon:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"A Hypolydian Diatonic with its own trite synemmenon replacing paramese"},hypol_diatinv:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Inverted Schlesinger's Hypolydian Harmonia, a harmonic series from 10 from 20"},hypol_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the enharmonic genus"},hypol_enhinv:{frequencies:[261.6255653006,327.03195662575,333.57259575826,340.11323489078,366.27579142084,392.4383479509,497.08857407114,510.16985233617,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypolydian Harmonia"},hypol_enhinv2:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,366.27579142084,379.35706968587,392.4383479509,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_enhinv3:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_pent:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,373.75080757229,402.50086969323,415.27867508032,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the pentachromatic genus"},hypol_tri:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,373.75080757229,402.50086969323,413.09299784305,424.25767346043,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the first trichromatic genus"},hypol_tri2:{frequencies:[261.6255653006,270.64713651786,290.69507255622,348.83408706747,373.75080757229,402.50086969323,413.09299784305,436.04260883433,2093.0045224048],description:"Schlesinger's Hypolydian Harmonia in the second trichromatic genus"},hypolydian_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,406.97310157871,457.84473927605,488.36772189445,523.2511306012,563.50121757052,610.45965236807,665.95598440153,732.55158284168,813.94620315742,915.6894785521,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypolydian Tonos"},hypop_chrom:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012],description:"Hypophrygian Chromatic Tonos"},hypop_chromenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia in a mixed chromatic-enharmonic genus"},hypop_chrominv:{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,377.90359432309,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypophrygian Harmonia"},hypop_chrominv2:{frequencies:[261.6255653006,276.16031892841,290.69507255622,348.83408706747,377.90359432309,406.97310157871,436.04260883433,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypophrygian inverted"},hypop_diat:{frequencies:[261.6255653006,294.32876096318,303.82323712328,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"Hypophrygian Diatonic Tonos"},hypop_diat2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia"},hypop_diat2inv:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,436.04260883433,465.11211608996,523.2511306012],description:"Inverted Schlesinger's Hypophrygian Harmonia, a harmonic series from 9 from 18"},hypop_diatcon:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012],description:"A Hypophrygian Diatonic with its own trite synemmenon replacing paramese"},hypop_enh:{frequencies:[261.6255653006,269.10058145205,273.00058987889,277.01530443593,313.95067836072,362.25078272391,376.74081403286,392.4383479509,400.78810003496,405.0976494977,409.50088481833,470.92601754108,523.2511306012],description:"Hypophrygian Enharmonic Tonos"},hypop_enhinv:{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,377.90359432309,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypophrygian Harmonia"},hypop_enhinv2:{frequencies:[261.6255653006,268.89294211451,276.16031892841,348.83408706747,377.90359432309,392.4383479509,406.97310157871,523.2511306012],description:"A harmonic form of Schlesinger's Hypophrygian enharmonic inverted"},hypophryg_pis:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,377.90359432309,425.14154361347,453.48431318771,523.2511306012,544.18117582525,566.85539148463,618.38769980142,680.22646978156,755.80718864618,850.28308722695,971.75209968794,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypophrygian Tonos"},kanzelmeyer_11:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 11 harmonics from 16 to 32. Base 388.3614815 Hz"},kanzelmeyer_18:{frequencies:[261.6255653006,277.97716313189,302.50455987882,310.68035879446,327.03195662575,335.20775554139,351.55935337268,359.73515228832,376.08675011961,384.26254903526,392.4383479509,425.14154361347,433.31734252912,457.84473927605,474.19633710734,482.37213602298,498.72373385427,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 18 harmonics from 32 to 64. Base 388.3614815 Hz"},kayolonian:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"19-tone 5-limit scale of the Kayenian Imperium on Kayolonia (reeks van Sjauriek)"},kayolonian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"See Barnard: De Keiaanse Muziek, p. 11. (uitgebreide reeks)"},kayolonian_40:{frequencies:[261.6255653006,267.90457886781,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,319.36714514233,327.03195662575,331.11985608357,334.88072358477,340.65828815182,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,401.85686830172,408.78994578219,413.43299207996,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,496.11959049595,502.32108537715,510.98743222773,523.2511306012],description:"See Barnard: De Keiaanse Muziek"},kayolonian_f:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"Kayolonian scale F and periodicity block (128/125, 16875/16384)"},kayolonian_p:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale P"},kayolonian_s:{frequencies:[261.6255653006,287.4304306281,306.59245933664,327.03195662575,359.28803828513,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale S"},kayolonian_t:{frequencies:[261.6255653006,279.06726965397,297.67175429757,317.51653791741,348.83408706747,381.01984550089,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale T"},kayolonian_z:{frequencies:[261.6255653006,279.06726965397,297.67175429757,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale Z"},kayoloniana:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"Amendment by Rasch of Kayolonian scale's note 9"},"kebyar-b":{frequencies:[261.6255653006,280.40333801024,299.48910562989,384.37207420335,402.78320381033,523.2511306012],description:"Gamelan Kebyar tuning begbeg, Andrew Toth, 1993"},"kebyar-s":{frequencies:[261.6255653006,283.00682726281,309.51375468789,385.26118901859,416.26536455926,523.2511306012],description:"Gamelan kebyar tuning sedung, Andrew Toth, 1993"},"kebyar-t":{frequencies:[261.6255653006,293.15632631094,325.27731021818,397.46748834812,422.07621250312,523.2511306012],description:"Gamelan kebyar tuning tirus, Andrew Toth, 1993"},keenan:{frequencies:[261.6255653006,279.77706779472,292.57243455474,305.95298478736,327.17991022208,349.87955533643,365.88099775759,391.26571058456,418.41160951721,437.54730686196,457.55816161244,489.30340830564,523.2511306012],description:"Dave Keenan 31-ET mode has 3 4:5:6:7 tetrads + 3 inv. is Fokker's 12-tone mode"},keenan2:{frequencies:[261.6255653006,278.14493936283,295.70736791055,306.84360659709,326.21810583671,346.81593583087,369.99442271164,393.35634555235,418.19337019276,433.94238997708,461.34206956593,490.47180009913,523.2511306012],description:"Dave Keenan strange 9-limit temperament TL 19-11-98"},keenan3:{frequencies:[261.6255653006,272.10155294862,282.99701916355,314.19580976213,326.77681046955,339.86157848985,377.32935907335,392.4383479509,408.1523292189,453.14877154631,471.29371440761,523.2511306012],description:"Chain of 1/6 kleisma tempered 6/5s, 10 tetrads, Dave Keenan, 30-Jun-99, TD235"},keenan3eb:{frequencies:[261.6255653006,272.52625793573,283.88113057344,314.31833892864,327.41448875753,341.05629284549,377.62371824792,393.35750206077,409.74683779238,453.67913385439,472.5817850056,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 same"},keenan3eb2:{frequencies:[261.6255653006,271.88912362492,282.55531921581,314.13446783,326.45794787121,339.26487744082,377.18204004818,391.97887331053,407.35618327602,452.88341485066,470.6500094,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 opposite"},keenan3j:{frequencies:[261.6255653006,291.88463270656,302.72962012827,313.97755176024,350.29154279212,363.30663963964,405.32593044476,420.38583225541,436.00528786292,486.43275040712,504.50618240233,523.2511306012],description:"Chain of 11 nearly just 19-tET minor thirds, Dave Keenan, 1-Jul-99"},keenan7:{frequencies:[261.6255653006,269.29177952703,279.86396690685,288.06460709314,296.5055443788,305.19382000629,314.13668154225,326.46944327063,336.03572815422,349.22823143301,359.46139971304,369.99442271164,380.8360868427,391.99543598175,407.38487419079,419.32216217931,435.78442404634,448.5538823653,461.69751437372,475.22628419761,489.15147723638,508.3551866238,523.2511306012],description:"Dave Keenan, 22 out of 72-tET periodicity block. TL 29-04-2001"},keenanmt:{frequencies:[261.6255653006,279.93529690293,292.50627485027,305.64177427204,327.03195662575,349.91912034749,365.63284274659,391.22147055517,418.60090448096,437.39890198442,457.04105241293,489.02683710225,523.2511306012],description:"Dave Keenan 1/4-comma tempered version of keenan with 6 7-limit tetrads"},keenanst:{frequencies:[261.6255653006,268.50609092997,277.46533822773,286.72352888229,294.26410920268,304.08282473376,314.22916151277,322.49311613356,333.25374941849,342.01803421352,353.43015577174,365.22306367425,374.82811589307,387.33500976677,397.52158713557,410.7856943143,424.4923875554,435.65616946139,450.19271626925,462.0323945472,477.44903730562,493.38008744487,506.35555615636,523.2511306012],description:"Dave Keenan, 7-limit temperament, g=260.353"},kelletat:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,327.14272545641,348.82502010853,367.43868454848,391.99543598175,413.39000965417,437.97145880542,465.08793784701,489.90551202062,523.2511306012],description:"Herbert Kelletat's Bach-tuning (1967)"},kellner:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,491.32444638706,523.2511306012],description:"Herbert Anton Kellner's Bach tuning. 5 1/5 Pyth. comma and 7 pure fifths"},kellners:{frequencies:[261.6255653006,275.84425785506,292.86986732103,310.2247482054,327.84547867349,348.89032888179,367.85164222246,391.46454285105,413.69968681881,438.2147004401,465.26210635182,491.68894399626,523.2511306012],description:"Kellner's temperament with 1/5 synt. comma instead of 1/5 Pyth. comma"},kepler1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.1, Harmonices Mundi (1619)"},kepler2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.2"},kepler3:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Kepler's choice system, Harmonices Mundi, Liber III (1619)"},kilroy:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Kilroy"},kimball:{frequencies:[261.6255653006,272.52663052146,275.93321340298,290.69507255622,294.32876096318,306.59245933664,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Buzz Kimball 18-note just scale"},kimball_53:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,281.75060878526,283.42769574232,285.40970760065,287.78812183066,296.50897400735,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,461.69217405988,475.68284600109,479.64686971777,483.00104363188,485.87604984397,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Buzz Kimball 53-note just scale"},kirkwood:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Scale based on Kirkwood gaps of the asteroid belt"},"kirn-stan":{frequencies:[261.6255653006,276.16031892841,292.60754013883,310.68035879446,327.03195662575,348.83408706747,368.21375857121,392.4383479509,414.24047839262,437.1900893839,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger temperament improved by Charles Earl Stanhope (1806)"},kirnberger:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's well-temperament, also called Kirnberger III, letter to Forkel 1779"},kirnberger1:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,438.75944753732,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's temperament 1 (1766)"},kirnberger2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,438.75941205608,465.11211608996,490.54793493862,523.2511306012],description:'Kirnberger 2: 1/2 synt. comma. "Die Kunst des reinen Satzes" (1774)'},kirnberger3:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.89982010446,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger 3: 1/4 synt. comma (1744)"},kirnberger3v:{frequencies:[261.6255653006,275.93321340298,292.50063201309,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.21579858034,413.43299207996,437.39258595147,465.11211608996,490.54793493862,523.2511306012],description:"Variant well-temperament like Kirnberger 3, Kenneth Scholz, MTO 4.4, 1998"},klais:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,327.21690075602,348.83408706747,367.49599295996,391.99543598175,413.43299207996,438.01699797506,465.11211608996,489.99465727995,523.2511306012],description:"Johannes Klais, Bach temperament"},klonaris:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Johnny Klonaris, 19-limit harmonic scale"},knot:{frequencies:[261.6255653006,268.26840191956,280.31310567921,286.15296204753,294.32876096318,299.00064605783,306.59245933664,327.03195662575,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,459.88868900496,476.92160341255,478.40103369253,490.54793493862,523.2511306012],description:"Smallest knot in 3-D, American Scientist, Nov-Dec '97 p506-510, trefoil knot"},koepf_36:{frequencies:[261.6255653006,272.26348829648,274.95017225036,277.18263097687,288.45311779165,291.29956028699,293.66476791741,305.60543275312,308.62113352716,311.12698372208,323.77767743764,326.97270111135,329.62755691287,343.03050002254,346.41550969045,349.22823143301,363.4281550135,367.0144478307,369.99442271164,385.03871768789,388.83826257328,391.99543598175,407.93431128975,411.95978887118,415.30469757995,432.19134773437,436.45619266906,440,457.89078262597,462.40922843744,466.16376151809,485.11838543951,489.90551202062,493.88330125613,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 36-tone subset of 48-tone scale (1991)"},koepf_48:{frequencies:[261.6255653006,269.44737349144,272.26348829648,274.95017225036,277.18263097687,285.46954808622,288.45311779165,291.29956028699,293.66476791741,302.44445076078,305.60543275312,308.62113352716,311.12698372208,320.42873367481,323.77767743764,326.97270111135,329.62755691287,339.48241770075,343.03050002254,346.41550969045,349.22823143301,359.66909273781,363.4281550135,367.0144478307,369.99442271164,381.0561299374,385.03871768789,388.83826257328,391.99543598175,403.71490654806,407.93431128975,411.95978887118,415.30469757995,427.72104413038,432.19134773437,436.45619266906,440,453.15466093696,457.89078262597,462.40922843744,466.16376151809,480.10063929961,485.11838543951,489.90551202062,493.88330125613,508.64890891624,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 48-tone scale (1991)"},kolinsky:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Kolinsky's 7th root of 3/2, also invented by Augusto Novaro"},kora1:{frequencies:[261.6255653006,293.66476791741,326.78388880949,349.22823143301,391.99543598175,440,489.62261321254,523.2511306012],description:"Kora tuning Tomora Ba, also called Silaba, 1/1=F, R. King"},kora2:{frequencies:[261.6255653006,298.79793764201,315.65242990842,349.22823143301,391.99543598175,447.69106452518,472.94426956511,523.2511306012],description:"Kora tuning Tomora Mesengo, also called Tomora, 1/1=F, R. King"},kora3:{frequencies:[261.6255653006,291.13134764929,330.58093469714,349.22823143301,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Hardino, 1/1=F, R.King"},kora4:{frequencies:[261.6255653006,291.13134764929,330.58093469714,371.06455309218,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Sauta, 1/1=F, R. King"},korea_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:'According to Lou Harrison, called "the Delightful" in Korea'},kornerup:{frequencies:[261.6255653006,272.97226153513,280.22976278938,292.38332274669,305.0639823888,313.17470478367,326.75708630452,340.92853547661,349.99278713323,365.17196824772,374.88056242272,391.13935185123,408.10305876469,418.95303445734,437.12302030357,456.08130156398,468.2068441924,488.51296691354,509.70006023951,523.2511306012],description:"Kornerup's temperament with fifth of (15 - sqrt 5) / 22 octaves"},kornerup_11:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Kornerup's doric minor"},kraeh_22:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,320.49131749323,336.37572681506,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,400.61414686654,412.06026534844,436.04260883433,441.49314144476,457.84473927605,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Kraehenbuehl & Schmidt 7-limit 22-tone tuning"},kraeh_22a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,318.93402246168,320.49131749323,327.03195662575,336.37572681506,343.38355445704,348.83408706747,350.39138209902,353.19451315581,358.80077526939,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,400.61414686654,403.65087217807,408.78994578219,412.06026534844,418.60090448096,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,478.40103369253,488.36772189445,490.54793493862,498.33441009638,504.56359022259,523.2511306012],description:'Kraehenbuehl & Schmidt 7-limit 22-tone tuning with "inflections" for some tones'},kraeh_22b:{frequencies:[261.6255653006,269.10058145205,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,448.50096908674,457.84473927605,476.92160341255,490.54793493862,504.56359022259,523.2511306012],description:"Best 22-tET approximation of KRAEH_22A"},kring1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Double-tie circular mirroring of 4:5:6 and Partch's 5-limit tonality Diamond"},kring1p3:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,310.07474405997,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,441.49314144476,446.50763144636,454.2110508691,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Third carthesian power of double-tie mirroring of 4:5:6 with kleismas removed"},kring2:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,392.4383479509,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 6:7:8"},kring2p3:{frequencies:[261.6255653006,265.7783520514,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,515.07533168556,523.2511306012],description:"Third power of 6:7:8 mirroring with 1029/1024 intervals removed"},kring3:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,373.75080757229,436.04260883433,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 3:5:7"},kring3bp:{frequencies:[261.6255653006,336.37572681506,366.27579142084,436.04260883433,470.92601754108,560.62621135843,610.45965236807,784.8766959018],description:"Double-tie BP circular mirroring of 3:5:7"},kring4:{frequencies:[261.6255653006,299.00064605783,327.03195662575,366.27579142084,373.75080757229,418.60090448096,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 4:5:7"},kring4p3:{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.42990280658,286.15296204753,293.02063313667,299.00064605783,305.10270005901,320.49131749323,327.03195662575,334.88072358477,341.71502406609,350.53737850823,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.53145607553,400.61414686654,408.78994578219,418.60090448096,427.14378008261,448.68784449053,457.84473927605,467.18850946536,478.40103369253,488.16432009441,500.76768358318,510.98743222773,523.2511306012],description:"Third power of 4:5:7 mirroring with 3136/3125 intervals removed"},kring5:{frequencies:[261.6255653006,290.69507255622,336.37572681506,366.27579142084,373.75080757229,406.97310157871,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 5:7:9"},kring5p3:{frequencies:[261.6255653006,266.96486255163,272.4643387202,278.02483542877,284.8811711051,290.69507255622,296.68339105088,302.73815413355,308.91648380975,316.53463456122,322.99452506247,329.64821227876,336.37572681506,343.24053756638,351.70514951247,358.88280562497,366.27579142084,373.75080757229,381.45007420827,389.23476960028,398.83363954714,406.97310157871,415.27867508032,423.83341578697,432.48307733364,443.14848838571,452.19233508746,461.42075008924,470.92601754108,480.53675259294,492.38720931745,502.43592787495,512.78610798918,523.2511306012],description:"Third power of 5:7:9 mirroring with 250047/250000 intervals removed"},kring6:{frequencies:[261.6255653006,305.22982618403,336.37572681506,348.83408706747,392.4383479509,406.97310157871,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 6:7:9"},kring6p3:{frequencies:[261.6255653006,267.07609791103,271.31540105247,276.96780524107,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,316.53463456122,324.36230800023,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,361.75386806997,369.29040698809,378.42269266694,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,422.04617941496,432.48307733364,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,494.26637409559,504.56359022259,512.57253609913,523.2511306012],description:"Third power of 6:7:9 mirroring with 118098/117649 intervals removed"},krousseau:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,343.38355445704,348.83408706747,366.27579142084,392.4383479509,406.97310157871,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Kami Rousseau's tri-blues scale"},krousseau2:{frequencies:[261.6255653006,271.34627406517,291.88463270656,302.72962012827,337.74269681563,350.29154279212,363.30663963964,390.80553229045,405.32593044476,452.20508247496,469.00678383895,486.43275040712,523.2511306012],description:"19-tET version of Kami Rousseau's tri-blues scale"},kukuya:{frequencies:[261.6255653006,307.37578701508,361.96165147221,412.67427966689,460.80941404108],description:"African Kukuya Horns (aerophone, ivory, one note only)"},kurzw_arab:{frequencies:[261.6255653006,282.02769802256,290.29174037004,302.26980244078,321.16993719469,349.63190883464,374.94271441196,393.35634555235,411.95978887118,429.20598402782,447.69106452518,496.7443381147,523.2511306012],description:'Kurzweil "Empirical Arabic"'},kurzw_harmp:{frequencies:[261.6255653006,285.46954808622,287.62123438446,306.48933163909,308.79945157961,324.90175210669,345.81573716922,348.42227432308,427.72104413038,430.94493093825,458.94995811222,462.40922843744,523.2511306012],description:'Kurzweil "Empirical Bali/Java Harmonic Pelog"'},kurzw_melp:{frequencies:[261.6255653006,281.53940445957,283.98935579354,303.66981774726,307.02089761314,323.96475278212,344.02264297658,347.0163224393,421.10213511252,424.76655906637,451.06547253417,454.99063696457,523.2511306012],description:'Kurzweil "Empirical Bali/Java Melodic Pelog"'},kurzw_slen:{frequencies:[261.6255653006,266.96862289802,288.95340229325,306.66641795878,318.95145438803,352.26720984209,352.26720984209,389.06292924114,404.41509766528,429.20598402782,464.81937009253,474.03826620294,523.2511306012],description:'Kurzweil "Empirical Bali/Java Slendro, Siam 7"'},kurzw_tibet:{frequencies:[261.6255653006,270.53905136894,299.14332201883,312.9293240034,325.46525203475,353.69443592699,373.86139962101,397.69714089209,408.87792937274,438.98455767189,471.30800669535,489.90551202062,523.2511306012],description:'Kurzweil "Empirical Tibetian Ceremonial"'},kwazy:{frequencies:[13.75,13.8425266748,13.92142234948,14.00076777204,14.0805654254,14.16081788707,14.25610896047,14.337361936,14.41907801447,14.50125983535,14.58391005315,14.66703125278,14.76572882594,14.84988638999,14.93452361174,15.01964313826,15.10524789197,15.20689431811,15.29356631363,15.38073220905,15.46839499707,15.55655742089,15.66124080485,15.75050226619,15.84027256598,15.93055451337,16.0213510245,16.11266503216,16.22109048883,16.31354291552,16.40652227664,16.50003157548,16.59407373656,16.70573878851,16.80095347779,16.89671084507,16.99301388521,17.08986590459,17.18726993397,17.30292672931,17.40154500258,17.50072545316,17.60047118468,17.70078541898,17.81989766631,17.92146252619,18.023606257,18.12633215803,18.22964354736,18.35231459047,18.45691397115,18.56210951808,18.66790462912,18.77430261304,18.88130712282,19.00836345475,19.11670199894,19.22565790976,19.335234928,19.44543648263,19.57628896102,19.68786429416,19.80007566685,19.91292659048,20.02642071019,20.16118263857,20.27609169854,20.39165568498,20.50787833065,20.62476338959,20.74231451743,20.88189396397,21.00091073243,21.12060583931,21.24098302814,21.36204643183,21.50579618625,21.62836889778,21.75164008927,21.875613993,22.00029448845,22.14833914981,22.27457391904,22.40152829449,22.52920624893,22.65761190639,22.78674941445,22.94008616579,23.07083364148,23.202326315,23.33456843363,23.46756413327,23.62548236417,23.76013626908,23.89555763659,24.03175070206,24.16872014141,24.30647024079,24.47003364934,24.60950094889,24.74976328722,24.89082505353,25.03269080417,25.2011409598,25.3447753621,25.48922841152,25.63450477396,25.78060914191,25.95409219477,26.10201805756,26.25078702673,26.40040390759,26.55087337946,26.70220060843,26.88188539622,27.03509923475,27.18918616153,27.34415146685,27.5],description:"Kwazy temperament, g=162.741892, p=600, 5-limit"},lambdoma5_12:{frequencies:[261.6255653006,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,47.56828460011,52.32511306012,58.13901451124,65.40639132515,71.35242690016,74.75016151446,78.48766959018,87.20852176687,95.13656920022,98.10958698772,104.65022612024,109.01065220858,112.12524227169,116.27802902249,118.92071150027,130.8127826503,145.34753627811,149.50032302891,156.97533918036,163.51597831288,174.41704353373,186.87540378614,196.21917397545,209.30045224048,218.02130441717,261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012,654.0639132515,784.8766959018,1046.5022612024,1308.127826503],description:"5x12 Lambdoma"},lambdoma_prim:{frequencies:[261.6255653006,8.43953436454,9.02157121726,11.37502457829,13.76976659477,15.38973913533,16.87906872907,18.04314243452,20.12504348466,22.75004915657,23.78414230005,25.31860309361,27.06471365179,27.53953318954,30.77947827066,34.12507373486,37.37508075723,40.25008696932,41.30929978431,42.19767182268,45.10785608631,46.16921740599,47.56828460011,52.32511306012,56.87512289143,59.07674055175,60.37513045398,63.15099852083,68.84883297384,71.35242690016,74.75016151446,76.94869567665,79.62517204801,87.20852176687,96.38836616338,100.62521742331,104.65022612024,107.72817394731,112.12524227169,118.92071150027,130.8127826503,140.87530439263,156.97533918036,166.48899610038,174.41704353373,186.87540378614,261.6255653006,366.27579142084,392.4383479509,436.04260883433,523.2511306012,610.45965236807,654.0639132515,784.8766959018,915.6894785521,1308.127826503,1831.3789571042],description:"Prime Lambdoma"},lambert:{frequencies:[261.6255653006,276.15600972046,293.19138048956,310.67551062492,328.56569462012,349.50994910362,368.20801314466,391.67947347082,414.23401437362,438.93663604468,466.01326570444,491.89550004992,523.2511306012],description:"Lambert's temperament (1774) 1/7 Pyth. comma, 5 pure"},lara:{frequencies:[261.6255653006,286.4606265643,298.28060863281,313.11013128311,341.05478972476,377.11473546037,395.40657391157,420.13030572059,450.02449304881,492.74350578058,523.2511306012,577.23956595248,599.67057787333],description:"Sundanese 'multi-laras' gamelan Ki Barong tuning, Weintraub, TL 15-2-99 1/1=497"},lebanon:{frequencies:[261.6255653006,285.30470202322,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Lebanese scale? Dastgah Shur"},leedy:{frequencies:[261.6255653006,269.80136421624,290.69507255622,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:'Douglas Leedy, scale for "Pastorale" (1987), 1/1=f, 10/9 only in vocal parts'},leeuw1:{frequencies:[261.6255653006,311.12698372208,349.22823143301,380.8360868427,415.30469757995,466.16376151809,508.3551866238,554.36526195375,604.53960488156,659.25511382574,739.98884542327,806.96355802011,880,987.76660251225],description:'Ton de Leeuw: non-oct. mode from "Car nos vignes sont en fleurs",part 5. 1/1=A'},leftpistol:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Left Pistol"},legros1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.49749487796,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 3 just major thirds"},legros2:{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.49749487796,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 2 just major thirds"},"lehman-bach":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.77584116741,328.14198392915,349.6228209638,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Brad Lehman's Bach keyboard temperament"},lemba10:{frequencies:[261.6255653006,283.65327551057,298.9489942119,324.1191713102,341.59697290141,370.35792032269,401.5404117335,423.19307614937,458.82405293702,483.56568031466,524.27976214079],description:"10-note Lemba scale, Herman Miller"},lemba12:{frequencies:[261.6255653006,276.1173031791,283.29759227608,298.9897683987,323.75689816556,341.69016129748,369.99442271164,390.48883496177,400.64329718448,422.83538548023,457.86139629758,483.22286023634,523.2511306012],description:"Lemba[12] in 270-et (poptimal)"},lemba22:{frequencies:[261.6255653006,268.42900262332,276.1173031791,283.29759227608,298.9897683987,306.76484424299,315.55115201964,323.75689816556,341.69016129748,350.57563899649,360.61677037127,369.99442271164,379.61593604418,390.48883496177,400.64329718448,422.83538548023,433.83100318771,446.25671880862,457.86139629758,483.22286023634,495.78882330645,509.98912747823,523.2511306012],description:"Lemba[22] in 270-et (poptimal)"},lemba24:{frequencies:[261.6255653006,275.73346179752,283.65327551057,290.60211247891,298.9489942119,307.53562105228,315.06951922004,324.1191713102,332.05932738876,341.59697290141,351.40856549044,360.01724743313,370.35792032269,390.32910012969,401.5404117335,411.37720579947,423.19307614937,435.34833037897,446.01333880095,458.82405293702,470.06416125332,483.56568031466,497.45499966368,509.64147516102,524.27976214079],description:"24-note Lemba scale for mapping millerlemba24.kbm"},lemba8:{frequencies:[261.6255653006,275.73334871592,283.6533803711,298.94898212432,307.53584843097,324.11927802481,341.59694330429,351.4088110982,370.358025147],description:"Lemba temperament (4 down, 3 up) TOP tuning, Herman Miller, TL 22-11-2004"},leusden:{frequencies:[261.6255653006,275.54404190554,292.50627485027,310.51268695591,327.03195662575,349.91912034749,367.08095907728,391.22147055517,413.66634097248,437.39890198442,466.16376151809,489.02683710225,523.2511306012],description:"Organ in Gereformeerde kerk De Koningshof, Henk van Eeken, 1984, a'=415, modif. 1/4 mean"},leven:{frequencies:[261.6255653006,279.06726965397,298.97057995496,313.95067836072,330.39003879965,348.83408706747,369.35382642901,392.4383479509,418.60090448096,448.46752658184,465.11211608996,502.32108537715,523.2511306012],description:"Leven's monochord ?"},ligon:{frequencies:[261.6255653006,279.66870773512,292.40504357126,309.19384990071,329.87571277032,342.12573923925,366.27579142084,392.4383479509,411.12588832951,436.04260883433,462.87600014722,485.87604984397,523.2511306012],description:"Jacky Ligon, strictly proper all prime scale, TL 08-09-2000"},ligon2:{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,411.78935130154,441.2028763945,470.61640148747,500.02992658044,529.4434516734,558.85697676637],description:"Jacky Ligon, 19-limit symmetrical non-octave scale, 2001"},ligon3:{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,341.25073734861,376.08675011961,401.15920012759,427.90314680276,471.58492637221,481.3910401531,508.13498682828,534.87893350345,561.62288017862,588.36682685379,615.11077352897],description:"Jacky Ligon, 23-limit non-octave scale (2001)"},ligon4:{frequencies:[261.6255653006,278.49926570678,289.46759601673,308.13698517552,320.27237341115,340.92853547661,362.91692931321,386.32347802158,401.53832428939,427.43578342293,444.26952759254,472.92296174596,491.54841572131,523.2511306012,556.99853141357,592.92249142473,616.27397035104,640.54474682231,681.85707095323,725.83385862642,754.41987838254,803.07664857879],description:"Jacky Ligon, 2/1 Phi Scale, TL 12-04-2001"},ligon5:{frequencies:[261.6255653006,273.22765669781,280.653851324,293.09977429907,314.41721066027,328.36040925687,337.28508524374,352.24238645938,377.86132347501,394.61802538749,405.34378524393,423.31898451752,454.1076550834,474.24531572837,487.13535379632,508.73764640933,545.73895363303],description:'Jacky Ligon, scale for "Two Golden Flutes" (2001)'},ligon6:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:'Jacky Ligon, "Primal Golden Tuning" (2001)'},ligon7:{frequencies:[261.6255653006,294.32876096318,321.08592105074,361.22166118208,394.05999401681,443.31749326891,483.61908356609,527.58445479937],description:"Jacky Ligon, 7 tone, 27/22=generator, MMM 22-01-2002"},lindley_ea:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Mark Lindley +J. de Boer +W. Drake (1991), for organ Grosvenor Chapel, London"},lindley_sf:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.07474405997,328.14198392915,349.6228209638,368.32692341742,391.5530240856,413.90012676351,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Lindley (1988) suggestion nr. 2 for Stanford Fisk organ"},"ling-lun":{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Scale of Ling Lun from C"},liu_major:{frequencies:[261.6255653006,290.69507255622,322.99452506247,348.83408706747,392.4383479509,436.04260883433,484.4917875937,523.2511306012],description:`Linus Liu's Major Scale, see his 1978 book, "Intonation Theory"`},liu_mel:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,423.83341578697,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Linus Liu's Melodic Minor, use 5 and 7 descending and 6 and 8 ascending"},liu_minor:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,387.59343007496,418.60090448096,484.4917875937,523.2511306012],description:"Linus Liu's Harmonic Minor"},liu_pent:{frequencies:[261.6255653006,294.32876096318,331.11985608357,353.19451315581,392.4383479509,441.49314144476,496.67978412536,529.79176973372],description:`Linus Liu's "pentatonic scale"`},lorina:{frequencies:[261.6255653006,271.31540105247,293.02063313667,305.22982618403,313.95067836072,348.83408706747,348.83408706747,385.55346465352,406.97310157871,457.84473927605,457.84473927605,465.11211608996,523.2511306012],description:"Lorina"},lt46a:{frequencies:[261.6255653006,265.62583852249,273.73233506765,277.91772325275,286.39934942254,290.77841553921,299.65253047503,308.79746990018,313.51900484808,323.08712797864,328.02715279963,338.03804253716,348.35444940179,353.68081538041,364.47461587782,370.04745828823,381.3407438317,387.1714705201,398.98735486934,411.16384203565,417.45056598488,430.19052226982,436.76816801564,450.09766813034,463.83396431287,470.92601754108,485.29796386361,492.71820372913,507.75521382755,523.2511306012],description:"13-limit temperament, minimax g=495.66296 cents"},lucy_19:{frequencies:[261.6255653006,272.17716319349,280.81422591737,292.13972001074,301.4102593031,313.56641022552,326.2128298123,336.56461921066,350.13857756143,364.25998604447,375.81913491042,390.97626371576,406.74469336313,419.65201956185,436.57696862128,450.43096951372,468.59726172356,487.49621708267,502.96605061019,523.2511306012],description:"Lucy's 19-tone scale"},lucy_24:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,292.13970819848,301.41031849758,303.92192719902,313.56642833783,326.21280343239,336.56467170065,339.36921655583,350.13858362887,364.25994396351,375.81917832675,390.97625694066,403.38329512334,406.744629928,419.65205349792,436.57694340361,450.43105016925,454.18442712942,468.59728067062,487.49616921257,502.96612033609,523.2511306012],description:"Lucy/Harrison, meantone tuning from Bbb to Cx, third=1200.0/pi, 1/1=A"},lucy_31:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,283.15423815518,292.13970819848,301.41031849758,303.92192719902,313.56642833783,323.51698308414,326.21280343239,336.56467170065,339.36921655583,350.13858362887,361.24970022276,364.25994396351,375.81917832675,378.95082751155,390.97625694066,403.38329512334,406.744629928,419.65205349792,432.96907456701,436.57694340361,450.43105016925,454.18442712942,468.59728067062,483.46750424654,487.49616921257,502.96612033609,507.15726445705,523.2511306012],description:"Lucy/Harrison's meantone tuning, 1/1=A"},lucy_7:{frequencies:[261.6255653006,292.13972001074,326.2128298123,350.13857756143,390.97626371576,436.57696862128,487.49621708267,523.2511306012],description:"Diatonic Lucy's scale"},lumma5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Carl Lumma's 5-limit version of lumma7, also Fokker 12-tone just."},lumma7:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,390.69417751556,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Carl Lumma's 7-limit 12-tone scale, a.k.a GW Smith's Prism. TL 21-11-98"},lumma7t:{frequencies:[261.6255653006,279.68948643792,293.67396186758,305.56991806333,326.66797434652,349.22276480589,366.68390442934,392.00157215927,419.06732091375,436.04260883433,457.84473927605,489.45662770953,523.2511306012],description:"Tempered lumma7, 6 tetrads + 4 triads within 2c of Just, TL 19-2-99"},lumma7t72:{frequencies:[261.6255653006,279.86396690685,293.66476791741,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"72-tET version of lumma7t"},lumma7t_keen:{frequencies:[261.6255653006,279.95098841649,293.39965821869,305.14186035122,326.51537799354,349.38597341375,366.17023517096,391.81845653432,419.26317124465,436.04260556019,456.98979229899,488.99939844699,523.2511306012],description:"Dave Keenan's adaptation of lumma7t to include 6:8:11, TL 17-04-9"},lumma_10:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,375.37611551499,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:"Carl Lumma's 10-tone 125 cent Pyth. scale, TL 29-12-1999"},lumma_12_fun:{frequencies:[261.6255653006,276.16031892841,293.246794009,310.68035879446,327.94037872749,348.23056788569,368.93292606842,390.99572534534,413.52379936426,439.8701910135,464.30742384759,491.05951174505,522.34585182853],description:"Rational well temperament based on 577/289, 3/2, and 19/16."},"lumma_12_moh-ha-ha":{frequencies:[261.6255653006,276.16031892841,293.42033886144,310.68035879446,330.09788121912,349.51540364377,368.93292606842,391.72740891476,414.24047839262,440.13050829216,466.02053819169,493.4335110265,523.2511306012],description:"Rational well temperament."},lumma_12_strangeion:{frequencies:[261.6255653006,277.97716313189,292.40504357126,310.68035879446,330.09788121912,349.23197505989,368.93292606842,391.9912339477,414.71297038361,440.63253103259,468.17206422213,492.47165233054,523.2511306012],description:'19-limit "dodekaphonic" scale.'},lumma_22:{frequencies:[261.6255653006,263.29318697558,262.98919438538,262.83732973433,262.68555277841,262.53386346698,263.29318697558,262.38226174944,262.98919438538,262.23074757519,263.29318697558,262.68555277841,262.07932089369,263.29318697558,262.83732973433,263.59753095473,262.38226174944,263.44531501617,262.68555277841,262.98919438538,263.29318697558,263.902226729,261.92798165442],description:"Carl Lumma, intervals of attraction by trial and error, 1999."},lumma_5151:{frequencies:[261.6255653006,276.7826524273,292.81785438923,309.78204413166,327.729041887,346.71578592374,369.67398581173,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Carl Lumma's 5151 temperament III (1197/709.5/696). June 2003"},lumma_al1:{frequencies:[261.6255653006,274.63272075836,292.81785438923,309.78204413166,327.729041887,346.71578592374,366.8025131876,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Alaska I (1197/709.5/696), Carl Lumma, 6 June 2003."},lumma_al2:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,347.216824829,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska II (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al3:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,349.32910706765,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska III (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al4:{frequencies:[261.6255653006,276.38325105256,293.32570896007,309.87152561537,328.86683469969,349.02656754477,368.7143392539,391.31674786192,413.39000965417,438.73106346722,464.55095742407,491.89038573682,522.04355935974],description:"Alaska IV (1196/701/697), Carl Lumma, 6 June 2003."},lumma_al5:{frequencies:[261.6255653006,276.84261239447,293.89809826895,310.99222741882,329.08061019985,349.35433052883,369.67398581173,391.17550247358,415.27471248744,439.42852501549,464.98720675925,493.63374591774,522.3451906503],description:"Alaska V (1197/702/696.375), Carl Lumma, 6 June 2003."},lumma_al6:{frequencies:[261.6255653006,276.86260193655,293.83444433876,310.94732162256,329.05685050583,349.22823143301,369.56723519412,391.09077971329,415.06487744922,439.23819834286,464.81937009253,493.31307433255,522.04355935974],description:"Alaska VI (1196/701/696), Carl Lumma, 6 June 2003."},lumma_al7:{frequencies:[261.6255653006,276.11677207256,293.26810788146,310.16878953668,328.73958549954,348.42227432308,368.499294457,391.39134599911,413.94674961638,438.72852926454,464.99660740427,491.79379203259,522.3451906503],description:"Alaska VII, Carl Lumma, 27 Jan 2004"},lumma_dec1:{frequencies:[261.6255653006,286.10322937235,299.18791603519,327.17991022208,342.14320575162,374.15409293384,391.26571058456,427.87249484695,457.55816161244,489.30340830564,523.2511306012],description:"Carl Lumma, two 5-tone 7/4-chains, 5/4 apart in 31-tET, TL 9-2-2000"},lumma_dec2:{frequencies:[261.6255653006,286.10322937235,292.57243455474,327.17991022208,342.14320575162,382.6142546815,391.26571058456,437.54730686196,457.55816161244,511.68128147674,523.2511306012],description:"Carl Lumma, two 5-tone 3/2-chains, 7/4 apart in 31-tET, TL 9-2-2000"},lumma_magic:{frequencies:[261.6255653006,293.02063313667,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,418.60090448096,436.04260883433,457.84473927605,467.18850946536,523.2511306012],description:"Magic chord test, Carl Lumma, TL 24-06-99"},"lumma_synchtrines+2":{frequencies:[261.6255653006,277.1478691313,293.59111644706,311.009943641,329.46223568632,349.00930447981,369.71610741159,391.65144749868,414.88821865981,439.50363030131,465.57948255979,493.20241832805,522.46423212702],description:"The 12-tone equal temperament with 2:3:4 brats of +2"},"lumma_synchtrines-2":{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338321153,392.13011885309,415.46777761785,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"The 12-tone equal temperament with 2:3:4 brats of -2"},lydian_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,317.12189733406,327.03195662575,373.75080757229,402.50086969323,418.60090448096,427.14378008261,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,615.58956541318,634.24379466812,654.0639132515,747.50161514457,805.00173938646,837.20180896192,854.28756016522,872.08521766867,951.36569200218,1046.5022612024],description:"Lydian Chromatic Tonos"},lydian_chrom2:{frequencies:[261.6255653006,272.09058791262,283.42769574232,340.11323489078,377.90359432309,400.13321751856,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the chromatic genus"},lydian_chrominv:{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Lydian inverted"},lydian_diat:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,697.66817413493,747.50161514457,852.70554616492,805.00173938646,872.08521766867,910.00196626296,951.36569200218,996.66882019276,1046.5022612024],description:"Lydian Diatonic Tonos"},lydian_diat2:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,377.90359432309,425.14154361347,485.87604984397,523.2511306012],description:"Schlesinger's Lydian Harmonia, a subharmonic series through 13 from 26"},lydian_diat2inv:{frequencies:[261.6255653006,281.75060878526,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"Inverted Schlesinger's Lydian Harmonia, a harmonic series from 13 from 26"},lydian_diatcon:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,425.14154361347,485.87604984397,523.2511306012],description:"A Lydian Diatonic with its own trite synemmenon replacing paramese"},lydian_enh:{frequencies:[261.6255653006,275.39533189537,290.69507255622,299.00064605783,303.33398875432,307.79478270659,373.75080757229,402.50086969323,410.39304360878,414.45634107026,418.60090448096,475.68284600109,523.2511306012,550.79066379074,581.39014511244,598.00129211566,606.66797750864,615.58956541318,747.50161514457,805.00173938646,820.78608721757,828.91268214051,837.20180896192,951.36569200218,1046.5022612024],description:"Lydian Enharmonic Tonos"},lydian_enh2:{frequencies:[261.6255653006,266.75547834571,272.09058791262,340.11323489078,377.90359432309,388.70083987518,400.13321751856,523.2511306012],description:"Schlesinger's Lydian Harmonia in the enharmonic genus"},lydian_enhinv:{frequencies:[261.6255653006,266.65682617177,271.68808704293,362.25078272391,402.50086969323,412.56339143556,422.62591317789,523.2511306012],description:"A harmonic form of Schlesinger's Enharmonic Lydian inverted"},lydian_pent:{frequencies:[261.6255653006,269.93113880221,283.42769574232,340.11323489078,377.90359432309,395.48050568695,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the pentachromatic genus"},lydian_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,805.00173938646,872.08521766867,951.36569200218,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Lydian Tonos"},lydian_tri:{frequencies:[261.6255653006,268.51044859798,275.76748774928,340.11323489078,377.90359432309,392.4383479509,408.13588186894,523.2511306012],description:"Schlesinger's Lydian Harmonia in the first trichromatic genus"},lydian_tri2:{frequencies:[261.6255653006,268.51044859798,283.42769574232,340.11323489078,377.90359432309,392.4383479509,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the second trichromatic genus"},nachbaur_6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:`Fred Nachbaur's harmonic hexatonic, as used in "Void of Sensation"`},nassarre:{frequencies:[261.6255653006,277.66336828161,294.34406205295,311.66659310186,331.15428443044,350.6431449633,372.56793743951,394.49404533893,419.16071913933,443.82887286778,471.58032351597,495.88429116026,523.2511306012],description:"Nassarre's Equal Semitones"},negri5_19:{frequencies:[261.6255653006,271.22480440713,281.41555648081,291.74090527404,302.70251050738,313.80889368201,325.59966315504,337.54616011163,350.22880998446,363.07896889448,376.72096510961,390.54314115106,405.21705098851,420.08476989056,435.86864979507,451.86099895106,468.83881245397,486.04086171852,504.30291533224,523.2511306012],description:"Negri temperament, g=126.238272, 5-limit"},negri_19:{frequencies:[261.6255653006,269.02825605326,281.18681366715,289.14299126725,302.21061955257,310.76166549402,324.80633749066,333.99672707734,349.09149261831,358.96903024071,375.19240283292,392.14898023137,403.24482870584,421.46921730446,433.39468387282,452.98167562873,465.79878414581,486.85025820508,500.62567766841,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},negri_29:{frequencies:[261.6255653006,269.02825605326,276.64040740805,281.18681366715,289.14299126725,297.32428710198,302.21061955257,310.76166549402,319.55466133443,324.80633749066,333.99672707734,343.44715857517,349.09149261831,358.96903024071,369.1260526158,375.19240283292,385.80846524917,392.14898023137,403.24482870584,414.65463641221,421.46921730446,433.39468387282,445.65757880387,452.98167562873,465.79878414581,478.97855252217,486.85025820508,500.62567766841,514.79087238232,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},"neid-mar-morg":{frequencies:[261.6255653006,277.49581689502,293.99657683935,311.12698372208,329.99999983505,349.6228209638,369.99442271164,392.4383479509,415.77394625748,440,466.69047534984,494.44133512215,523.2511306012],description:"Neidhardt-Marpurg-de Morgan temperament (1858)"},neidhardt1:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,348.83408706747,368.32692341742,391.5530240856,414.36778843034,438.51190905657,465.11211608996,491.65745674141,523.2511306012],description:"Neidhardt I temperament (1724)"},neidhardt2:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,349.22823143301,369.15973155124,391.5530240856,414.36778843034,438.51190905657,466.16376151809,492.7691222293,523.2511306012],description:"Neidhardt II temperament (1724)"},neidhardt3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Neidhardt III temperament (1724) 'Grosse Stadt'"},neidhardt4:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"Neidhardt IV temperament (1724), equal temperament"},neidhardtn:{frequencies:[261.6255653006,276.86979852503,293.66476791741,310.77584116741,329.62755691287,348.83408706747,369.99442271164,391.5530240856,415.30469757995,439.50340943686,466.16376151809,493.32589719545,523.2511306012],description:"Johann Georg Neidhardt's temperament (1732), alt. 1/6 & 0 P, also Marpurg nr.10"},neogeb24:{frequencies:[261.6255653006,270.11478301563,282.39420473706,291.55732426372,295.23185084282,304.81152420286,308.65309481038,318.66826025208,333.15492371116,343.96512368902,348.30015108876,359.6017829051,375.94928703407,388.14807710176,393.03994675222,405.79329398283,424.24066266408,438.00640969567,443.52664897728,457.91818970179,463.68937649142,478.73515685363,500.49846361623,516.73862125829,523.2511306012],description:"Neo-Gothic e-based lineotuning (T/S or Blackwood's R=e, ~2.71828), 24 notes"},neogji12:{frequencies:[261.6255653006,282.52678126125,294.32876096318,317.84262891891,332.97799220076,348.83408706747,374.60024122586,392.4383479509,423.79017189188,441.49314144476,443.97065626768,499.46698830115,523.2511306012],description:"M. Schulter, neo-Gothic 12-note JI (prim. 2/3/7/11) 1/1=F with Eb key as D+1"},neogp16a:{frequencies:[261.6255653006,274.38778799819,281.28352228595,295.02457363685,309.19384990071,317.19205704586,332.33517754401,348.83408706747,366.27579142084,374.86334014511,392.4383479509,411.12588832951,422.62591317789,442.75095666255,464.34856430463,498.91386871277,523.2511306012],description:"M. Schulter, scale from mainly prime-to-prime ratios and octave complements (Gb-D#)"},neutr_diat:{frequencies:[261.6255653006,294.32876096318,320.24370022528,348.83408706747,392.4383479509,427.47405410759,479.82340237272,523.2511306012],description:"Neutral Diatonic, 9 + 9 + 12 parts, geometric mean of major and minor"},neutr_pent1:{frequencies:[261.6255653006,302.32287545847,348.83408706747,392.4383479509,453.48431318771,523.2511306012],description:"Quasi-Neutral Pentatonic 1, 15/13 x 52/45 in each trichord, after Dudon"},neutr_pent2:{frequencies:[261.6255653006,301.87565226992,348.83408706747,392.4383479509,452.81347840488,523.2511306012],description:"Quasi-Neutral Pentatonic 2, 15/13 x 52/45 in each trichord, after Dudon"},new_enh:{frequencies:[261.6255653006,264.89588486686,279.06726965397,348.83408706747,392.4383479509,397.34382730029,418.60090448096,523.2511306012],description:"New Enharmonic"},new_enh2:{frequencies:[261.6255653006,327.03195662575,331.11985608357,348.83408706747,392.4383479509,490.54793493862,496.67978412536,523.2511306012],description:"New Enharmonic permuted"},newcastle:{frequencies:[261.6255653006,273.65745935891,291.9012907804,312.65334602246,327.03195662575,350.28154752005,366.3906401674,390.81668391305,410.48618883318,436.04260883433,467.04206359353,490.54793493862,523.2511306012],description:"Newcastle modified 1/3-comma meantone"},norden:{frequencies:[261.6255653006,274.87601291722,292.73769384471,310.07474405997,327.54963108844,349.78078158391,366.5013507395,391.37619916626,412.31401916973,437.91808280662,466.37437567834,489.99465727995,523.2511306012],description:"Reconstructed Schnitger temperament, organ in Norden. Ortgies, 2002"},novaro:{frequencies:[261.6255653006,274.70684356563,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,498.33441009638,523.2511306012],description:"9-limit diamond with 21/20, 16/15, 15/8 and 40/21 added for evenness"},novaro15:{frequencies:[261.6255653006,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,523.2511306012],description:"1-15 diamond, see Novaro, 1927, Sistema Natural base del Natural-Aproximado, p"},novaro_eb:{frequencies:[261.6255653006,277.27733921611,293.70273468471,311.34510173929,329.85947563084,349.74559786079,370.61463194963,392.51515715445,416.03831243363,440.72414616847,467.23897542105,495.06435356607,524.26505360912],description:"Novaro (?) equal beating 4/3 with strectched octave, almost pure 3/2"},janke1:{frequencies:[261.6255653006,276.38325105256,293.32570896007,310.58830860439,328.86683469969,349.02656754477,368.7143392539,391.76907592069,414.34624765043,439.23819834286,465.62553897253,492.45896815637,523.2511306012],description:"Rainer Janke, Temperatur I"},janke2:{frequencies:[261.6255653006,276.38325105256,292.98704147282,310.58830860439,328.48713220126,349.02656754477,368.7143392539,391.54284657258,414.34624765043,438.73106346722,465.62553897253,491.89038573682,523.2511306012],description:"Rainer Janke, Temperatur II"},janke3:{frequencies:[261.6255653006,276.22365192501,292.98704147282,310.40895756597,328.29744538229,349.02656754477,368.50142299854,391.54284657258,414.10698098223,438.47771564426,465.62553897253,491.60634075178,523.2511306012],description:"Rainer Janke, Temperatur III"},janke4:{frequencies:[261.6255653006,275.90473010106,292.98704147282,310.76776326996,328.10786809908,349.22823143301,368.07595926604,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.32245979018,523.2511306012],description:"Rainer Janke, Temperatur IV"},janke5:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,328.10786809908,348.82502010853,367.43868454848,391.54284657258,413.39000965417,438.47771564426,465.08793784701,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur V"},janke6:{frequencies:[261.6255653006,275.74540729824,292.98704147282,310.58830860439,328.10786809908,349.43001184052,367.65098676472,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur VI"},janke7:{frequencies:[261.6255653006,275.42703764514,292.81785438923,311.12698372208,327.91840028839,349.63190883464,367.0144478307,391.54284657258,413.62886206386,438.22451411849,467.24207374344,490.75518955849,523.2511306012],description:"Rainer Janke, Temperatur VII"},jemblung1:{frequencies:[261.6255653006,298.87388797409,337.89601991959,388.44742741354,452.30188977628,523.2511306012],description:"Scale of bamboo gamelan jemblung from Kalijering, slendro-like. 1/1=590 Hz."},jemblung2:{frequencies:[261.6255653006,300.03885820455,355.06324470257,391.40016308218,451.61555914985,523.2511306012],description:"Bamboo gamelan jemblung at Royal Batavia Society. 1/1=504 Hz."},ji_10coh:{frequencies:[261.6255653006,283.42769574232,299.7792935736,327.03195662575,348.83408706747,370.63621750918,392.4383479509,436.04260883433,457.84473927605,485.0974023282,523.2511306012],description:"Differentially coherent 10-tone scale"},ji_10coh2:{frequencies:[261.6255653006,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Other diff. coherent 10-tone scale"},ji_11:{frequencies:[261.6255653006,276.96780524107,294.32876096318,316.53463456122,336.37572681506,356.10146388137,384.42940207435,406.97310157871,432.48307733364,465.11211608996,494.26637409559,523.2511306012],description:"3 and 7 prime rational interpretation of 11-tET. OdC 2000"},ji_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Basic JI with 7-limit tritone"},ji_12a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"7-limit 12-tone scale"},ji_12b:{frequencies:[261.6255653006,272.52663052146,290.69507255622,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"alternate 7-limit 12-tone scale"},ji_12c:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Kurzweil "Just with natural b7th", is Sauveur Just with 7/4'},ji_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"5-limit 12-tone symmetrical scale with two tritones"},ji_17:{frequencies:[261.6255653006,271.31540105247,283.8170195002,294.32876096318,310.07474405997,321.55899383997,336.37572681506,348.83408706747,361.75386806997,378.42269266694,392.4383479509,406.97310157871,425.72552925031,441.49314144476,465.11211608996,482.33849075995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 17-tET. OdC"},ji_17a:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,310.07474405997,321.08592105074,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,426.35277308246,441.49314144476,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_17b:{frequencies:[261.6255653006,272.52663052146,285.40970760065,294.32876096318,310.07474405997,319.76457981184,334.88072358477,348.83408706747,359.73515228832,380.54627680087,392.4383479509,408.78994578219,428.11456140098,441.49314144476,465.11211608996,479.64686971777,502.32108537715,523.2511306012],description:"Alt. 3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_19:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"5-limit 19-tone scale"},ji_20:{frequencies:[261.6255653006,271.31540105247,279.38237857051,288.32205155576,299.00064605783,310.07474405997,321.55899383997,331.11985608357,348.83408706747,356.10146388137,372.50983809402,384.42940207435,392.4383479509,413.43299207996,425.72552925031,441.49314144476,457.84473927605,474.80195184183,489.99465727995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 20-tET. OdC"},ji_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"7-limit 21-tone just scale, Op de Coul, 2001"},ji_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"5-limit 22-tone scale (Zarlino?)"},ji_27:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,331.11985608357,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,413.43299207996,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"7-limit rational interpretation of 27-tET, OdC"},ji_29:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,287.78812183066,294.32876096318,301.39265122629,310.07474405997,317.12189733406,323.76163705949,331.11985608357,340.65828815182,348.83408706747,356.76213450082,367.91095120397,372.08969287196,383.71749577421,392.4383479509,401.85686830172,413.43299207996,422.82919644541,431.68218274599,441.49314144476,454.2110508691,465.11211608996,475.68284600109,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"3,5,11-prime rational interpretation of 29-tET, OdC"},ji_30:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,313.95067836072,321.92208230347,329.64821227876,336.37572681506,344.91651675372,353.19451315581,360.81424763342,370.01329949656,379.40816842909,387.59343007496,396.89567239676,406.97310157871,415.27867508032,425.24536328225,436.04260883433,443.97065626768,456.65553216105,465.11211608996,478.40103369253,488.36772189445,498.33441009638,511.62332769895,523.2511306012],description:"11-limit rational interpretation of 30-tET"},ji_31:{frequencies:[261.6255653006,267.57160087561,274.08392555301,280.31310567921,285.40970760065,293.02063313667,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,356.76213450082,366.27579142084,373.75080757229,383.71749577421,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,467.18850946536,479.64686971777,490.54793493862,499.46698830115,512.78610798918,523.2511306012],description:"A just 11-limit 31-tone scale, optimized for Mann complexity"},ji_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 7-limit 31-tone scale"},ji_31b:{frequencies:[261.6255653006,267.90457886781,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 5-limit 31-tone scale, corner clipped genus"},ji_31c:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"A just 11-limit 31-tone scale"},ji_5coh:{frequencies:[261.6255653006,305.22982618403,348.83408706747,381.53728273004,446.94367405519,523.2511306012],description:"Differential fully coherent pentatonic scale"},ji_6coh:{frequencies:[261.6255653006,294.32876096318,330.74639366397,372.08969287196,418.60090448096,465.11211608996,523.2511306012],description:"Differential coherent 6-tone scale, OdC 2003"},ji_7:{frequencies:[261.6255653006,290.69507255622,318.93402246168,348.83408706747,392.4383479509,429.2294430713,470.92601754108,523.2511306012],description:"7-limit rational interpretation of 7-tET. OdC"},ji_7a:{frequencies:[261.6255653006,287.78812183066,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Superparticular approximation to 7-tET. Op de Coul, 1998"},ji_8coh:{frequencies:[261.6255653006,286.99041781007,312.35527031954,339.96223546814,370.00947616612,405.83764015148,441.71144237774,480.75585116768,523.2511306012],description:"Differential coherent 8-tone scale, OdC, 2003"},ji_8coh3:{frequencies:[261.6255653006,277.97716313189,302.50455987882,327.03195662575,359.73515228832,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Differential fully coherent 8-tone scale, OdC, 2003"},ji_9coh:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Differentially coherent 9-tone scale"},ji_ri24a:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,301.87565226992,310.68035879446,319.76457981184,329.87571277032,340.11323489078,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,402.50086969323,414.99227599406,428.11456140098,440.63253103259,453.48431318771,465.11211608996,479.64686971777,494.18162334558,508.71637697339,523.2511306012],description:"M. Schulter, just/rational intonation system - with circulating 24-note set"},jioct12:{frequencies:[261.6255653006,272.52663052146,282.55561052465,302.80736724606,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"12-tone JI version of Messiaen's octatonic scale, Erlich & Par\xEF\xBF\xBDzek"},"jobin-bach":{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.76836826904,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,464.6525521713,489.02683710225,523.2511306012],description:"Emile Jobin, WTC temperament after Bach's signet"},"johnson-secor_rwt":{frequencies:[261.6255653006,276.16031892841,293.03678286293,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.52992584916,414.24047839262,438.40450629885,465.11211608996,490.95167809495,523.2511306012],description:"Johnson/Secor proportional-beating well-temperament with five 24/19s."},johnson_44:{frequencies:[261.6255653006,265.7783520514,269.99705605222,274.2827236086,278.63641763414,283.05921791404,287.55222124002,292.11654190835,296.75331210627,301.46368356757,306.24882108355,311.17820103386,316.11753722951,321.13527558179,326.23266245367,331.4109583385,336.67144939063,342.01544029518,347.44425644654,352.9592442771,358.56177366235,364.2532300084,370.03502692537,375.90859839047,381.87540114246,387.93691728375,394.09464571975,400.35011587045,406.70487919155,413.16051176499,419.71861468993,426.38081694263,433.14876596753,440.02414274758,447.00865248514,454.10402744924,461.31203006992,468.63444275836,476.07308421189,483.62979961065,491.30646309654,499.10497838378,507.02727962797,515.07533168556,523.2511306012],description:"Aaron Johnson, 44-tET approximation"},johnson_7:{frequencies:[261.6255653006,288.83389952765,318.87182567809,352.10227751942,388.71994014354,429.2294430713,473.86811641255,523.2511306012],description:"Aaron Johnson, 7-tET approximation"},johnson_eb:{frequencies:[261.6255653006,273.1678696521,292.40504357126,312.71949922989,327.03195662575,349.65487315468,365.50630446407,390.89937403737,408.78994578219,437.06859144336,467.84806971401,488.62421754671,523.2511306012],description:'Aaron Johnson, "1/4-comma tempered" equal beating C-G-D-A-E plus just thirds'},johnson_ratwell:{frequencies:[261.6255653006,276.16031892841,292.90688289089,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.49724879514,414.24047839262,438.30776524386,465.11211608996,490.95167809495,523.2511306012],description:"Aaron Johnson, rational well-temperament with five 24/19's"},johnson_temp:{frequencies:[261.6255653006,275.52965735686,292.50638298357,309.88336774144,327.03195662575,348.76230617841,367.55223824197,391.22154286826,413.09299784305,437.39914452994,464.92072007996,490.30891677011,523.2511306012],description:"Aaron Johnson, temperament with just 5/4, 24/19 and 19/15"},johnston:{frequencies:[261.6255653006,275.93321340298,294.32876096318,315.35224388912,327.03195662575,359.73515228832,367.91095120397,392.4383479509,401.35740131342,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Ben Johnston's combined otonal-utonal scale"},johnston_21:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Johnston 21-note just enharmonic scale"},johnston_22:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,353.19451315581,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Johnston 22-note scale from end of string quartet nr. 4"},johnston_25:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Johnston 25-note just enharmonic scale"},"johnston_6-qt":{frequencies:[261.6255653006,262.79353657426,266.47048317654,267.57160087561,271.31540105247,272.52663052146,277.4816601673,280.31310567921,284.23518205497,290.69507255622,294.32876096318,297.30177875068,299.7792935736,300.33547037059,305.22982618403,306.59245933664,310.07474405997,311.45900631024,316.53463456122,317.12189733406,319.76457981184,322.99452506247,327.03195662575,334.46450109452,339.14425131559,342.60490694126,348.83408706747,350.39138209902,355.29397756872,356.76213450082,361.75386806997,363.36884069528,367.91095120397,373.75080757229,381.53728273004,382.24514410802,387.59343007496,390.82337532559,392.4383479509,396.40237166758,399.70572476481,406.97310157871,408.78994578219,413.43299207996,420.46965851882,426.35277308246,436.04260883433,445.95266812602,452.19233508746,459.88868900496,465.11211608996,467.18850946536,475.68284600109,479.64686971777,484.4917875937,486.49381977384,490.54793493862,248.7057842981,498.33441009638,508.71637697339,516.79124009995,523.2511306012],description:"11-limit complete system from Ben Johnston's _6th Quartet_"},"johnston_6-qt_row":{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,350.39138209902,363.36884069528,399.70572476481,408.78994578219,436.04260883433,445.95266812602,490.54793493862,508.71637697339],description:`11-limit 'prime row' from Ben Johnston's "6th Quartet"`},johnston_81:{frequencies:[116.54094037952,117.99770213426,119.33792294863,119.89808681021,120.82964698549,121.39681289533,122.77564089365,122.91427305652,124.31033640482,124.45070146973,125.86421560988,127.43751830501,127.89129259755,128.03570110055,129.48993375502,131.10855792696,132.74741490105,134.25516331721,134.88534766148,135.93335285867,136.57141450725,138.12259600536,138.27855718859,139.84912845542,141.59724256112,142.26189011172,143.87770417225,145.6761754744,147.49712766783,149.17240368579,151.03705873186,151.74601611917,153.46955111706,155.38792050603,157.33026951235,159.11723059817,159.29689788126,161.10619598065,161.86241719378,163.70085452487,163.8856974087,165.74711520643,165.93426862631,167.81895414651,169.91669107334,170.71426813406,172.6532450067,174.81141056928,176.9965532014,179.00688442294,179.84713021531,181.24447047823,182.095219343,184.16346134048,184.37140958479,186.46550460723,188.79632341482,189.68252014896,191.15627745751,191.83693889633,194.23490063253,196.66283689044,198.89653824771,199.12112235157,199.83014468368,201.38274497581,202.32802149222,204.62606815608,204.85712176088,207.18389400804,207.41783578289,209.77369268314,212.39586384168,213.39283516758,215.81655625837,218.5142632116,221.24569150175,223.75860552868,226.55558809779,227.61902417875,230.2043266756,233.08188075904],description:"Johnston 81-note 5-limit scale of Sonata for Microtonal Piano"},jorgensen:{frequencies:[261.6255653006,269.51415085551,288.85811466493,309.59046173614,318.92511007349,352.12195684808,355.62605411908,388.77403176757,408.50706336067,429.24143792307,469.25139168707,473.92081401802,523.2511306012],description:"Jorgensen's 5&7 temperament"},jousse:{frequencies:[261.6255653006,276.90198715646,293.15566421679,311.51473523959,328.62702621286,349.28097970329,369.20264759391,391.76800554826,415.35298052707,439.0631553946,466.60176257857,492.27019703794,523.2511306012],description:"Temperament of Jean Jousse (1832)"},jousse2:{frequencies:[261.6255653006,277.21176919085,293.63180098233,311.16627887077,329.63881547742,349.36510452864,370.14670828388,392.04008509316,415.41939014292,440.0494382652,466.3511549761,494.0599599767,523.2511306012],description:"Jean Jousse's quasi-equal temperament"},quasi_5:{frequencies:[261.6255653006,302.26980244078,349.22823143301,391.99543598175,452.89298412314,523.2511306012],description:"Quasi-Equal 5-Tone in 24-tET, 5 5 4 5 5 steps"},quasi_9:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:'Quasi-Equal Enneatonic, Each "tetrachord" has 125 + 125 + 125 + 125 cents'},quint_chrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,348.83408706747,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Aristides Quintilianus' Chromatic genus"},oconnell:{frequencies:[261.6255653006,267.57429119961,272.27874977392,278.46970304972,283.3657217904,288.34782337261,294.90414810658,300.08911516052,305.36524364276,312.30850472426,317.79947295261,323.38698268281,330.74001416845,336.55504284097,344.20748191927,350.25929591231,356.41751010259,364.52157313929,370.93054700815,377.45220049416,386.03454097812,392.82175095637,399.72829510222,408.81713953112,416.00491024634,423.31905787312],description:"Walter O'Connell, Pythagorean scale of 25 octaves reduced by Phi. XH 15 (1993)"},oconnell_11:{frequencies:[261.6255653006,272.27874977392,288.34782337261,300.08911516052,312.30850472426,323.38698268281,344.20748191927,356.41751010259,370.93054700815,386.03454097812,408.81713953112,423.31905787312],description:"Walter O'Connell, 11-note mode of 25-tone scale"},oconnell_14:{frequencies:[261.6255653006,272.27874977392,283.3657217904,288.34782337261,300.08911516052,312.30850472426,323.38698268281,336.55504284097,344.20748191927,356.41751010259,370.93054700815,386.03454097812,399.72829510222,408.81713953112,423.31905787312],description:"Walter O'Connell, 14-note mode of 25-tone scale"},oconnell_7:{frequencies:[261.6255653006,283.3657217904,300.08911516052,323.38698268281,344.20748191927,370.93054700815,392.82175095637,423.31905787312],description:"Walter O'Connell, 7-note mode of 25-tone scale"},oconnell_9:{frequencies:[261.6255653006,278.46970304972,294.90414810658,305.36524364276,323.38698268281,344.20748191927,364.52157313929,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 9-tone mode of 25-tone scale"},oconnell_9a:{frequencies:[261.6255653006,272.27874977392,288.34782337261,305.36524364276,323.38698268281,344.20748191927,356.41751010259,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 7+2 major mode analogy for 25-tone scale"},octony_min:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Octony on Harmonic Minor, from Palmer on an album of Turkish music"},octony_rot:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Rotated Octony on Harmonic Minor"},octony_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,408.78994578219,420.46965851882,436.04260883433,523.2511306012],description:"Complex 10 of p. 115, an Octony based on Archytas's Enharmonic,"},octony_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,315.35224388912,324.36230800023,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,306.59245933664,315.35224388912,327.03195662575,348.83408706747,490.54793493862,523.2511306012],description:"Complex 5 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,420.46965851882,432.48307733364,448.50096908674,523.2511306012],description:"Complex 11 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans5:{frequencies:[261.6255653006,271.31540105247,279.06726965397,317.94773560837,327.03195662575,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 15 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans6:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,345.98646186692,348.83408706747,358.80077526939,523.2511306012],description:"Complex 14 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_u:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,356.76213450082,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"7)8 octony from 1.3.5.7.9.11.13.15, 1.3.5.7.9.11.13 tonic (subharmonics 8-16)"},odd1:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"ODD-1"},odd2:{frequencies:[261.6255653006,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"ODD-2"},oettingen:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,301.39265122629,306.59245933664,310.42486507835,313.95067836072,317.87506184023,323.35923445661,327.03195662575,331.11985608357,334.88072358477,339.06673262958,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.50983809402,376.74081403286,383.2405741708,388.03108134794,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,452.08897683944,459.88868900496,465.11211608996,470.92601754108,476.81259276034,485.03885168492,490.54793493862,496.67978412536,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"von Oettingen's Orthotonophonium tuning"},oettingen2:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"von Oettingen's Orthotonophonium tuning with central 1/1"},ogr10:{frequencies:[261.6255653006,264.15640940857,271.89678302796,296.5055443788,342.56848033562,359.46139971304,411.32572372413,440,484.46499093218,513.27277840175,523.2511306012],description:"Optimal Golomb Ruler of 10 segments, length 72"},ogr10a:{frequencies:[261.6255653006,264.15640940857,285.30470202322,314.13668154225,329.62755691287,352.60650301302,431.60923940535,448.5538823653,457.27406033445,508.3551866238,523.2511306012],description:"2nd Optimal Golomb Ruler of 10 segments, length 72"},ogr11:{frequencies:[261.6255653006,265.92749183559,274.74472021414,318.1829357186,331.4244391468,362.52783176564,371.50609336774,409.69842558521,455.51656649021,482.27514684959,486.22402266421,523.2511306012],description:"Optimal Golomb Ruler of 11 segments, length 85"},ogr12:{frequencies:[261.6255653006,265.06964174786,270.3209511875,308.09015504092,333.2396629384,346.57411320722,384.79959982017,413.49815209867,456.11269186454,468.20039948765,496.58195036371,499.83980314828,523.2511306012],description:"Optimal Golomb Ruler of 12 segments, length 106"},ogr2:{frequencies:[261.6255653006,329.62755691287,523.2511306012],description:"Optimal Golomb Ruler of 2 segments, length 3"},ogr3:{frequencies:[261.6255653006,293.66476791741,415.30469757995,523.2511306012],description:"Optimal Golomb Ruler of 3 segments, length 6"},ogr4:{frequencies:[261.6255653006,278.64197723942,336.62443200122,461.29362042034,523.2511306012],description:"Optimal Golomb Ruler of 4 segments, length 11"},ogr4a:{frequencies:[261.6255653006,296.76515515861,406.67242132093,433.12283887627,523.2511306012],description:"2nd Optimal Golomb Ruler of 4 segments, length 11"},ogr5:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,426.7484383229,523.2511306012],description:"Optimal Golomb Ruler of 5 segments, length 17"},ogr5a:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,482.27514684959,523.2511306012],description:"2nd Optimal Golomb Ruler of 5 segments, length 17"},ogr5b:{frequencies:[261.6255653006,272.51337835337,362.52783176564,426.7484383229,463.0066556268,523.2511306012],description:"3rd Optimal Golomb Ruler of 5 segments, length 17"},ogr5c:{frequencies:[261.6255653006,272.51337835337,362.52783176564,409.69842558521,444.50800708553,523.2511306012],description:"4th Optimal Golomb Ruler of 5 segments, length 17"},ogr6:{frequencies:[261.6255653006,268.98086109226,292.31087910123,345.21700307457,430.94493093825,495.02573326308,523.2511306012],description:"Optimal Golomb Ruler of 6 segments, length 25"},ogr6a:{frequencies:[261.6255653006,276.5429423948,284.31762274025,345.21700307457,407.69874723177,468.32288027948,523.2511306012],description:"2nd Optimal Golomb Ruler of 6 segments, length 25"},ogr6b:{frequencies:[261.6255653006,268.98086109226,354.92237405774,407.69874723177,443.06044202496,495.02573326308,523.2511306012],description:"3rd Optimal Golomb Ruler of 6 segments, length 25"},ogr6c:{frequencies:[261.6255653006,268.98086109226,317.66442301495,354.92237405774,455.51656649021,495.02573326308,523.2511306012],description:"4th Optimal Golomb Ruler of 6 segments, length 25"},ogr6d:{frequencies:[261.6255653006,276.5429423948,317.66442301495,375.1593523779,468.32288027948,481.48922855473,523.2511306012],description:"5th Optimal Golomb Ruler of 6 segments, length 25"},ogr7:{frequencies:[261.6255653006,267.01398215014,283.85429714132,314.3146261019,355.21191871351,409.69842558521,502.34551296122,523.2511306012],description:"Optimal Golomb Ruler of 7 segments, length 34"},ogr8:{frequencies:[261.6255653006,265.77967818767,283.06627815664,316.06708432391,387.90015179087,400.3161696196,454.08364189083,499.09751029017,523.2511306012],description:"Optimal Golomb Ruler of 8 segments, length 44"},ogr9:{frequencies:[261.6255653006,264.94361147373,282.17583275232,296.76515515861,349.59519124833,363.06573983159,401.57942110183,438.61588607285,510.2272282764,523.2511306012],description:"Optimal Golomb Ruler of 9 segments, length 55"},oldani:{frequencies:[261.6255653006,272.52663052146,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"This scale by Norbert L. Oldani appeared in Interval 5(3), p.10-11"},oljare:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Tampere" (2001)'},oljare17:{frequencies:[261.6255653006,272.51337835337,320.78822215662,334.13814720468,393.32961502355,409.69842558521,426.7484383229,502.34551296122,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Fafner" (2001), MOS in 17-tET'},olympos:{frequencies:[261.6255653006,279.06726965397,348.83408706747,372.08969287196,465.11211608996,523.2511306012],description:"Scale of ancient Greek flutist Olympos, 6th century BC as reported by Partch"},opelt:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friederich Wilhelm Opelt 19-tone"},organ1373a:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 ficta semitones (Eb-G#)"},organ1373b:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 accidental semitones (Eb-G#)"},ragib:{frequencies:[261.6255653006,269.99542342683,281.01564479119,288.12007609225,294.32876096318,303.49446183192,311.45900631024,323.77767743764,335.77702597132,341.99420300732,348.83408706747,360.36579242507,371.06455309218,381.37837507376,392.4383479509,407.46331920162,417.22825371678,432.79663407874,450.28451247858,458.15534711532,465.11211608996,476.50902003141,487.19844562495,503.12608711654,523.2511306012],description:"Idris Ragib Bey, vol.5 d'Erlanger, p 40. Idris Rag'ib Bey"},ragib7:{frequencies:[261.6255653006,270.30192333353,281.29980781121,288.32205155576,294.32876096318,303.74668805875,311.45900631024,324.36230800023,336.37572681506,341.71502406609,348.83408706747,360.4025644447,370.6997805717,381.53728273004,392.4383479509,406.97310157871,417.13259773693,432.48307733364,450.69091522486,457.84473927605,465.11211608996,476.92160341255,486.65469735975,502.32108537715,523.2511306012],description:"7-limit version of Idris Rag'ib Bey scale"},"rameau-flat":{frequencies:[261.6255653006,276.01120901503,292.50629850443,312.00666699279,327.03195662575,349.91920725962,366.20974703841,391.22137338448,415.30469757995,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:'Rameau bemols, see Pierre-Yves Asselin in "Musique et temperament"'},"rameau-gall":{frequencies:[261.6255653006,274.65078342868,292.50627485027,310.49874388777,327.03195662575,349.91912034749,366.20104475463,391.22147055517,412.61639318626,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Rameau's temperament, after Gallimard (1st solution)"},"rameau-merc":{frequencies:[261.6255653006,273.37431312998,292.50627485027,308.72950296259,327.03195662575,348.83408706747,365.63284274659,391.22147055517,409.55238583376,437.39890198442,464.53468854848,489.02683710225,523.2511306012],description:"Rameau's temperament, after Mercadier"},"rameau-minor":{frequencies:[261.6255653006,294.32876096318,313.95067836072,353.19451315581,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Rameau's systeme diatonique mineur on E. Asc. 4-6-8-9, desc. 9-7-5-4"},"rameau-nouv":{frequencies:[261.6255653006,275.98004852257,292.50627485027,311.49614460359,327.03195662575,349.91912034749,367.37127028704,391.22147055517,414.64857675456,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Temperament by Rameau in Nouveau Systeme (1726)"},"rameau-sharp":{frequencies:[261.6255653006,273.37431312998,292.50629850443,308.54983514133,327.03195662575,348.83408706747,365.63293356166,391.22137338448,409.42528169498,437.39882871549,464.33633889105,489.02679755603,523.2511306012],description:'Rameau dieses, see Pierre-Yves Asselin in "Musique et temperament"'},rameau:{frequencies:[261.6255653006,275.07757335026,292.50629850443,310.73186404381,327.03195662575,349.91920725962,366.77009798369,391.22137338448,412.61635981914,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:"Rameau's modified meantone temperament (1725)"},ramis:{frequencies:[261.6255653006,275.93321340298,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monochord of Ramos de Pareja (Ramis de Pareia), Musica practica (1482). Carlos: Switched on Bach"},rapoport_8:{frequencies:[261.6255653006,297.86386736488,316.53463456122,336.37572681506,382.96782946913,406.97310157871,432.48307733364,492.38720931745,523.2511306012],description:"Paul Rapoport, cycle of 14/9 close to 8 out of 11-tET, XH 13, 1991"},rast_moha:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Rast + Mohajira (Dudon) 4 + 3 + 3 Rast and 3 + 4 + 3 Mohajira tetrachords"},rat_dorenh:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,418.60090448096,426.35277308246,523.2511306012],description:"Rationalized Schlesinger's Dorian Harmonia in the enharmonic genus"},rat_hypodenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,389.39619021485,398.6675280771,523.2511306012],description:"1+1 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh2:{frequencies:[261.6255653006,270.06509966514,288.69027895239,348.83408706747,380.54627680087,389.39619021485,408.39112632289,523.2511306012],description:"1+2 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh3:{frequencies:[261.6255653006,270.06509966514,299.00064605783,348.83408706747,380.54627680087,389.39619021485,418.60090448096,523.2511306012],description:"1+3 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,380.54627680087,386.4008349055,392.4383479509,523.2511306012],description:"1+1 rationalized hexachromatic/hexenharmonic genus derived from K.S.'Bastard'"},rat_hypodhex2:{frequencies:[261.6255653006,267.19206668997,279.06726965397,348.83408706747,380.54627680087,386.4008349055,398.6675280771,523.2511306012],description:"1+2 rat. hexachromatic/hexenharmonic genus derived from K.S.'s 'Bastard' Hypodo"},rat_hypodhex3:{frequencies:[261.6255653006,267.19206668997,285.40970760065,348.83408706747,380.54627680087,386.4008349055,405.0976494977,523.2511306012],description:"1+3 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex4:{frequencies:[261.6255653006,267.19206668997,292.04714266113,348.83408706747,380.54627680087,386.4008349055,411.73859457144,523.2511306012],description:"1+4 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex5:{frequencies:[261.6255653006,267.19206668997,299.00064605783,348.83408706747,380.54627680087,386.4008349055,418.60090448096,523.2511306012],description:"1+5 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex6:{frequencies:[261.6255653006,273.00058987889,292.04714266113,348.83408706747,380.54627680087,392.4383479509,411.73859457144,523.2511306012],description:"2+3 rationalized hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' hypod"},rat_hypodpen:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,380.54627680087,387.59343007496,394.90651366128,523.2511306012],description:"1+1 rationalized pentachromatic/pentenharmonic genus derived from K.S.'s 'Bastar"},rat_hypodpen2:{frequencies:[261.6255653006,268.33391312882,282.83844897362,348.83408706747,380.54627680087,387.59343007496,402.50086969323,523.2511306012],description:"1+2 rationalized pentachromatic/pentenharmonic genus from K.S.'s 'Bastard' hyp"},rat_hypodpen3:{frequencies:[261.6255653006,268.33391312882,290.69507255622,348.83408706747,380.54627680087,387.59343007496,410.39304360878,523.2511306012],description:"1+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen4:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,387.59343007496,418.60090448096,523.2511306012],description:"1+4 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen5:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,380.54627680087,394.90651366128,410.39304360878,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen6:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,394.90651366128,418.60090448096,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodtri:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,380.54627680087,392.4383479509,405.0976494977,523.2511306012],description:"rationalized first (1+1) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypodtri2:{frequencies:[261.6255653006,273.00058987889,299.00064605783,348.83408706747,380.54627680087,392.4383479509,418.60090448096,523.2511306012],description:"rationalized second (1+2) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypolenh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,410.39304360878,418.60090448096,523.2511306012],description:"Rationalized Schlesinger's Hypolydian Harmonia in the enharmonic genus"},rat_hypopchrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the chromatic genus"},rat_hypopenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the enharmonic genus"},rat_hypoppen:{frequencies:[261.6255653006,273.79419624481,294.32876096318,362.25078272391,392.4383479509,405.97070477679,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the pentachromatic genus"},rat_hypoptri:{frequencies:[261.6255653006,271.68808704293,282.55561052465,362.25078272391,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in first trichromatic genus"},rat_hypoptri2:{frequencies:[261.6255653006,271.68808704293,294.32876096318,362.25078272391,392.4383479509,403.65087217807,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in second trichromatic genus"},rectsp10:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,340.11323489078,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10"},rectsp10a:{frequencies:[261.6255653006,275.39533189537,277.01530443593,279.06726965397,281.75060878526,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10 union with inversion"},rectsp11:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,523.2511306012],description:"Rectangle minimal beats spectrum of order 11"},rectsp12:{frequencies:[261.6255653006,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,414.24047839262,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,501.44900015948,523.2511306012],description:"Rectangle minimal beats spectrum of order 12"},rectsp6:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 (=songlines)"},rectsp6a:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 union with inversion"},rectsp7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7"},rectsp7a:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7 union with inversion"},rectsp8:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8"},rectsp8a:{frequencies:[261.6255653006,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8 union with inversion"},rectsp9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9"},rectsp9a:{frequencies:[261.6255653006,277.01530443593,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9 union with inversion"},redfield:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Redfield New Diatonic"},reinhard:{frequencies:[261.6255653006,277.01530443593,294.32876096318,309.81974838229,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Reinhard 19-limit superparticular"},reinhard17:{frequencies:[261.6255653006,277.01530443593,277.97716313189,286.94416839421,292.40504357126,296.50897400735,307.79478270659,317.68818643644,338.57426097725,342.12573923925,369.35373924791,400.13321751856,404.33041910093,430.91269578922,444.76346101102,477.08191319521,492.47165233054,523.2511306012],description:`Reinhard's Harmonic-17 tuning for "Tresspass", 1998`},renteng1:{frequencies:[261.6255653006,285.40970760065,313.15788183285,391.64553850062,426.52890806662,523.2511306012],description:"Gamelan Renteng from Chileunyi (Tg. Sari). 1/1=330 Hz"},renteng2:{frequencies:[261.6255653006,294.32876096318,311.77048523333,396.07199334683,425.86840190162,523.2511306012],description:"Gamelan Renteng from Chikebo (Tg. Sari). 1/1=360 Hz"},renteng3:{frequencies:[261.6255653006,278.97471276149,312.97903559457,379.60005211265,409.44065404912,468.42785143649,523.2511306012],description:"Gamelan Renteng from Lebakwangi (Pameungpeuk). 1/1=377 Hz"},renteng4:{frequencies:[261.6255653006,296.45730715573,311.93819010347,397.0826586675,424.17395032031,523.2511306012],description:"Gamelan Renteng Bale` bandung from Kanoman (Cheribon). 1/1=338 Hz"},robot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Dead Robot (see lattice)"},robot_live:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,376.74081403286,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Live Robot"},romieu:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu's Monochord, Memoire theorique & pratique (1758)"},romieu_inv:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu inverted, Pure (just) C minor in Wilkinson: Tuning In"},rosati_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Dante Rosati, JI guitar tuning"},rosati_21a:{frequencies:[261.6255653006,280.31310567921,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,488.36772189445,523.2511306012],description:"Alternative version of rosati_21 with more tetrads"},rousseau:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Rousseau's Monochord, Dictionnaire de musique (1768)"},rousseauw:{frequencies:[261.6255653006,276.81658657456,293.31219032635,311.14941643136,328.83652403056,349.33732971591,369.19521129916,391.76004912942,415.1051791302,439.20783490896,466.32059269121,492.40223109551,523.2511306012],description:"Jean-Jacques Rousseau's temperament (1768)"},rsr_12:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"RSR - 7 limit JI"},"rvf-1":{frequencies:[261.6255653006,272.14556467328,280.20095193414,292.09989854643,304.19649364034,313.29104303136,326.0297292803,340.21856244106,350.08660369014,364.11104988921,374.67209286633,390.97784457618,406.87534373272,419.03967825638,436.39317047385,454.92493848389,468.39051363853,487.22455955444,508.94280091833,523.2511306012],description:"D-A 695 cents, the increment is 0.25 cents, interval range 49.5 to 75.5"},"rvf-2":{frequencies:[261.6255653006,272.87751533003,278.75612859219,292.27711197479,305.71136588092,312.51386339015,326.29348693151,342.97106251658,349.87433921674,364.79522794952,372.13777859784,391.13596290168,408.38225803817,417.4934384938,436.65792486176,457.83788806384,467.7011114131,487.81592522452,513.9947144098,523.2511306012],description:"695 cents, 0.607 cents, 31-90 cents, C-A# is 7/4."},"rvf-3":{frequencies:[261.6255653006,272.98787180262,278.19314238431,292.29399505039,306.11778315204,312.24320803046,326.25579420701,343.90343447252,349.81371586656,364.81629995674,371.08598724028,391.15855645336,408.71263878415,416.89098941754,436.60748307387,458.73792719255,467.48503753613,487.78774868553,515.83876338215,523.2511306012],description:"694.737, 0.082, 25-97, the fifth E#-B# is 3/2."},majmin:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Malcolm & Marpurg 4 (Yamaha major & minor) mixed. Mersenne/Ban without D#"},major_clus:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Chalmers' Major Mode Cluster"},major_wing:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Chalmers' Major Wing with 7 major and 6 minor triads"},malcolm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Malcolm's Monochord (1721), and C major in Yamaha synths, Wilkinson: Tuning In"},malcolm2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Malcolm 2"},malcolm_ap:{frequencies:[261.6255653006,279.47938236087,293.66476791741,313.97746652079,326.1838132033,349.22823143301,369.99442271164,391.99543598175,419.68935090103,436.0054062308,466.16376151809,489.82458627646,523.2511306012],description:"Best approximations in mix of all ETs from 12-23 to Malcolm's Monochord"},malcolm_me:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Malcolm's Mid-East"},malcolme:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,496.11959049595,523.2511306012],description:"Most equal interval permutation of Malcolm's Monochord"},malcolme2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Inverse most equal interval permutation of Malcolm's Monochord"},malcolms:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,369.99442271164,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical version of Malcolm's Monochord and Albion scale"},malerbi:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Luigi Malerbi's well-temperament nr.1 (1794) (nr.2 = Young)"},malgache:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,353.19451315581,376.74081403286,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,392.4383479509,408.78994578219,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malkauns:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"Raga Malkauns, inverse of prime_5"},mambuti:{frequencies:[261.6255653006,294.34406205295,331.72862856444,394.26624244126,466.16376151809,525.06772693396,590.39077962608,792.18471060794,999.82182774046],description:"African Mambuti Flutes (aerophone; vertical wooden; one note each)"},mandelbaum5:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,454.2110508691,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Mandelbaum's 5-limit 19-tone scale, kleismic detempered circle of minor thirds"},mandelbaum7:{frequencies:[261.6255653006,272.52663052146,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Mandelbaum's 7-limit 19-tone scale"},marimba1:{frequencies:[261.6255653006,284.4818984792,319.50463429683,342.83241505062,371.92288545737,411.72190027758,457.09800545097,500.48847822777,547.68138927822,612.97866327818,651.68292300609,728.11694797601,807.8963375694,903.69557412727,1013.19282257599,1069.7265813247,1225.95732655636,1303.36584601218],description:"Marimba of the Bakwese, SW Belgian Congo (Zaire). 1/1=140.5 Hz"},marimba2:{frequencies:[261.6255653006,279.11058864149,318.03161540472,343.03050002254,379.95718438213,421.58889248327,458.6849347701,519.33670373121,571.2689787911,613.68721319418,694.83488613378,761.23234162637,846.59395682498,953.56868388592,1049.52904699774,1145.8425062572,1271.3918647407,1389.66977226756],description:"Marimba of the Bakubu, S. Belgian Congo (Zaire). 1/1=141.5 Hz"},marimba3:{frequencies:[261.6255653006,296.73398952435,348.2210758395,420.13030572059,476.50902003141,518.73708886244,603.49292471609,696.44215167899,840.26061144117,953.01804006282,1037.47417772488],description:"Marimba from the Yakoma tribe, Zaire. 1/1=185.5 Hz"},marion:{frequencies:[261.6255653006,269.91407136119,278.46532473603,287.28749371714,296.38899008685,305.77900572762,315.46632790985,325.46074015958,335.7715953476,346.4093067252,357.3838291689,368.70624618807,380.38737313392,392.4383479509,411.71310103548,431.93429139282,453.14890242083,475.40520223986,498.75490298644,523.2511306012],description:"scale with two different ET step sizes"},marion1:{frequencies:[261.6255653006,262.79353657426,272.52663052146,280.31310567921,286.15296204753,294.32876096318,305.22982618403,311.45900631024,327.03195662575,336.37572681506,343.38355445704,350.39138209902,367.91095120397,373.75080757229,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,476.92160341255,490.54793493862,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 1"},marion10:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,290.69507255622,296.75121990114,305.22982618403,317.94773560837,327.03195662575,339.14425131559,356.10146388137,363.36884069528,370.93902487643,381.53728273004,400.61414686654,406.97310157871,408.78994578219,423.93031414449,436.04260883433,445.12682985172,457.84473927605,474.80195184183,476.92160341255,484.4917875937,508.71637697339,523.2511306012],description:"Marion's 7-limit Scale # 10"},marion15:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,299.00064605783,313.95067836072,320.35783506196,327.03195662575,336.37572681506,353.19451315581,358.80077526939,360.4025644447,373.75080757229,384.42940207435,392.4383479509,403.65087217807,418.60090448096,420.46965851882,427.14378008261,448.50096908674,461.31528248922,470.92601754108,480.53675259294,504.56359022259,523.2511306012],description:"Marion's 7-limit Scale # 15"},marion19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,309.04519901133,313.95067836072,315.35224388912,327.03195662575,336.37572681506,343.38355445704,353.19451315581,366.27579142084,367.91095120397,373.75080757229,392.4383479509,403.65087217807,412.06026534844,420.46965851882,441.49314144476,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 19"},marion26:{frequencies:[261.6255653006,271.31540105247,279.06726965397,284.8811711051,293.02063313667,303.87324917877,305.22982618403,310.07474405997,325.57848126297,334.88072358477,341.85740532612,348.83408706747,366.27579142084,379.84156147346,390.69417751556,406.97310157871,418.60090448096,427.32175665765,434.10464168396,455.80987376816,465.11211608996,474.80195184183,488.36772189445,512.78610798918,523.2511306012],description:"Marion's 7-limit Scale # 26"},marissing:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Peter van Marissing, just scale, Mens en Melodie, 1979"},"marpurg-1":{frequencies:[261.6255653006,276.86979852503,294.32876096318,311.47852302926,329.62755691287,348.83408706747,370.83100115625,392.4383479509,415.30469757995,439.50340943686,467.21778431035,494.44133512215,523.2511306012],description:"Other temperament by Marpurg, 3 fifths 1/3 Pyth. comma flat"},"marpurg-t1":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg's temperament nr.1, Kirnbergersche Temperatur (1766)"},"marpurg-t11":{frequencies:[261.6255653006,278.12325072816,294.32876096318,311.47852302926,331.11985608357,348.83408706747,371.66947115233,392.4383479509,416.24372513446,441.49314144476,466.16376151809,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.11, 6 tempered fifths"},"marpurg-t12":{frequencies:[261.6255653006,279.06706247425,294.66131982972,310.42509491746,330.74614861362,349.22823143301,372.08941681833,392.88175996935,418.60059350213,441.99197952365,465.63764214343,496.11922267243,523.2511306012],description:"Marpurg's temperament nr.12, 4 tempered fifths"},"marpurg-t2":{frequencies:[261.6255653006,278.75210322491,294.32876096318,313.59611581451,331.11985608357,348.83408706747,371.66947115233,392.4383479509,418.12815462835,441.49314144476,470.39417348663,495.55929511749,523.2511306012],description:"Marpurg's temperament nr.2, 2 tempered fifths, Neue Methode (1790)"},"marpurg-t3":{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,331.11985608357,348.83408706747,368.74309237173,392.4383479509,414.83597850347,441.49314144476,465.11211608996,491.65745674141,523.2511306012],description:"Marpurg's temperament nr.3, 2 tempered fifths"},"marpurg-t4":{frequencies:[261.6255653006,276.86979852503,294.32876096318,310.07474405997,331.11985608357,348.83408706747,369.15973155124,392.4383479509,415.30469757995,441.49314144476,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.4, 2 tempered fifths"},"marpurg-t5":{frequencies:[261.6255653006,277.80935667884,294.32876096318,312.53552595124,331.11985608357,348.83408706747,370.41247575694,392.4383479509,416.71403480995,441.49314144476,468.80328869252,493.88330125613,523.2511306012],description:"Marpurg's temperament nr.5, 2 tempered fifths"},"marpurg-t7":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.07474405997,329.62755691287,348.83408706747,369.15973155124,390.66969766777,415.30469757995,439.50340943686,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.7, 3 tempered fifths"},"marpurg-t8":{frequencies:[261.6255653006,277.49581689502,293.33333347996,311.12698372208,329.99999983505,348.83408706747,369.99442271164,391.11111150212,414.83597850347,440,466.69047534984,493.32589719545,523.2511306012],description:"Marpurg's temperament nr.8, 4 tempered fifths"},"marpurg-t9":{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,350.01785633742,371.24999944327,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.9, 4 tempered fifths"},marpurg:{frequencies:[261.6255653006,277.49581689502,293.83071040301,311.12698372208,329.99999983505,349.42557141756,369.99442271164,392.4383479509,415.53937569366,440,466.69047534984,494.16238213869,523.2511306012],description:"Marpurg, Versuch ueber die musikalische Temperatur (1776), p. 153"},marpurg1:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg's Monochord no.1 (1776)"},marpurg3:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg 3"},marpurg4:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg 4, also Yamaha Pure Minor"},marsh:{frequencies:[261.6255653006,275.50659558095,293.15632631094,311.93674864629,328.48713220126,349.53094576004,368.07595926604,391.65594491223,412.43597848639,438.85779226656,466.97226207056,491.74834273545,523.2511306012],description:"John Marsh's meantone temperament (1809)"},marsh2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"John Marsh's quasi-equal temperament (1840)"},mavila12:{frequencies:[261.6255653006,256.98292999787,287.53945699376,321.72930260925,316.02010771872,353.59644178868,347.32175377489,388.62000642034,381.72381344999,427.11263899087,477.89842030218,469.41794908116,525.2340355968],description:"A 12-note mavila scale (for warping meantone-based music)"},mavila9:{frequencies:[261.6255653006,287.53945699376,316.02010771872,321.72930260925,353.59644178868,388.62000642034,427.11263899087,434.82882549415,477.89842030218,525.2340355968],description:"9-note scale of mavila temperament (TOP tuning)"},mavlim1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"First 27/25&135/128 scale"},mbira_banda:{frequencies:[261.6255653006,291.13134764929,327.53979283172,368.50142299854,404.88256627495,443.57258128492,480.10063929961,555.00605988575],description:"Mubayiwa Bandambira's tuning of keys R2-R9 from Berliner: The soul of mbira."},mbira_banda2:{frequencies:[261.6255653006,321.16993719469,360.29289210659,380.8360868427,422.32008370967,461.34206956593,587.32953583482,513.96502576833,761.67217368541,711.48673390068,849.04255025658,936.10488897708,1046.50286568598,633.49659152295,1055.60951665979,1174.65975017952,1321.5609185619,1486.83332446121,1633.62433483289,1789.73120457747,1937.11498804338,2239.34414798534],description:"Mubayiwa Bandambira's Mbira DzaVadzimu tuning B1=114 Hz"},mbira_gondo:{frequencies:[261.6255653006,315.28798447451,345.21700307457,379.51849407657,422.56409582244,461.07566488503,564.05539604512,516.94239487354,778.57545143809,697.24717811406,842.69088701475,926.42243447898,1029.11884353824,628.3943418294,1040.47545270591,1153.813137635,1308.64724593201,1415.59600512246,1572.51770682594,1715.83353717518,1883.05646656025,2103.91477035149],description:"John Gondo's Mbira DzaVadzimu tuning B1=122 Hz"},mbira_kunaka:{frequencies:[261.6255653006,292.98704147282,325.27731021818,350.44066402496,386.59871897734,434.19311733646,479.82340237272,507.76825077597],description:"John Kunaka's mbira tuning of keys R2-R9"},mbira_kunaka2:{frequencies:[261.6255653006,340.26769547546,358.83903996308,405.11650317313,448.98591596033,490.75518955849,622.61349925697,541.70354187177,817.28364083393,724.3415782324,907.35693646861,997.5144154576,1094.73088724383,673.88551872153,1085.91380691742,1216.08403680913,1350.10935126711,1454.55340013417,1604.63250673428,1802.17976955899,1991.5747030301,2107.56373750553],description:"John Kunaka's Mbira DzaVadzimu tuning B1=113 Hz"},mbira_mude:{frequencies:[261.6255653006,289.28740724512,309.15639683494,364.68988616898,372.56793743951,408.17001145418,507.1819925915,459.74594725879,689.63684605432,610.50517472746,760.79276355093,824.39562982862,887.65774573556,562.75365576207,888.68380073365,1015.53708814899,1126.80895076279,1206.28956516212,1365.00817887311,1507.58874420517,1666.02447560859,1935.99638964471],description:"Hakurotwi Mude's Mbira DzaVadzimu tuning B1=132 Hz"},mbira_mujuru:{frequencies:[261.6255653006,281.37682788104,301.05008478933,329.43721154897,394.9500460767,419.64523240241,533.01280425363,488.77489658044,700.88132804992,602.10016957865,765.19999119503,809.29752893,942.6160133907,577.57308891646,937.72844143307,1046.50286568598,1145.18149427149,1243.7900049313,1411.51350174391,1540.15576038017,1658.34356815416,1904.9365287586],description:"Ephat Mujuru's Mbira DzaVadzimu tuning, B1=106 Hz"},mbira_zimb:{frequencies:[261.6255653006,276.86260193655,305.95868600104,343.62544191138,379.08031027329,408.40584780369,453.41648894489,507.76825077597],description:"Shona mbira scale"},mboko_bow:{frequencies:[261.6255653006,347.61817721989,375.37611551499],description:"African Mboko Mouth Bow (chordophone, single string, plucked)"},mboko_zither:{frequencies:[261.6255653006,294.68429813772,319.3201344739,354.92237405774,396.55020354877,418.67676528474,472.67116512585,513.07516347663],description:"African Mboko Zither (chordophone; idiochordic palm fibre, plucked)"},mcclain:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,331.11985608357,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,510.98743222773,523.2511306012],description:"McClain's 12-tone scale, see page 119 of The Myth of Invariance"},mcclain_18:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,319.36714514233,327.03195662575,331.11985608357,344.91651675372,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,441.49314144476,459.88868900496,490.54793493862,496.67978412536,510.98743222773,523.2511306012],description:"McClain's 18-tone scale, see page 143 of The Myth of Invariance"},mcclain_8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,523.2511306012],description:"McClain's 8-tone scale, see page 51 of The Myth of Invariance"},mccoskey_22:{frequencies:[261.6255653006,270.06509966514,279.06726965397,287.78812183066,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,382.37582620857,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"31-limit rational interpretation of 22-tET, Marion McCoskey"},mclaren_bar:{frequencies:[261.6255653006,281.77400528964,292.14326370913,304.76756192248,325.50548568708,328.66136118639,353.45752508165,360.67039921732,379.1552038283,397.63971531932,405.75513620619,436.411067852,476.98680497297,521.16951219839],description:"Metal bar scale. see McLaren, Xenharmonicon 15, pp.31-33"},mclaren_cps:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,367.91095120397,392.4383479509,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"2)12 [1,2,3,4,5,6,8,9,10,12,14,15] a degenerate CPS"},mclaren_harm:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012],description:'from "Wilson part 9", claimed to be Schlesingers Dorian Enharmonic, prov. unkn'},mclaren_rath1:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,372.08969287196,380.54627680087,389.39619021485,398.6675280771,492.47165233054,507.3950357345,523.2511306012],description:"McLaren Rat H1"},mclaren_rath2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,380.54627680087,389.39619021485,398.6675280771,440.63253103259,452.54151835779,465.11211608996,523.2511306012],description:"McLaren Rat H2"},mean10:{frequencies:[261.6255653006,272.18829429226,292.14313377277,313.56091500001,326.220453695,350.13653284039,364.27275363262,390.97854693193,406.76370320307,436.58461973079,468.59178605305,487.51045723915,523.2511306012],description:"3/10-comma meantone scale"},mean11:{frequencies:[261.6255653006,272.83457350033,292.34115464648,313.24237654315,326.6628419965,350.01792709981,365.01399145768,391.11103243201,407.86767761879,437.02858581415,468.2743796482,488.33699124025,523.2511306012],description:"3/11-comma meantone scale. A.J. Ellis no. 10"},mean11ls_19:{frequencies:[261.6255653006,272.93479580544,280.25721516838,292.37183188538,305.01012622427,313.1930753928,326.73140514978,340.85495140859,349.99956372811,365.12891753666,374.92476290643,391.13155279262,408.03891236124,418.98596425085,437.09738047696,455.99169236578,468.2252457596,488.46511500326,509.57988860269,523.2511306012],description:"Least squares appr. to 3/2, 5/4, 7/6, 15/14 and 11/8, Petr Par\xEF\xBF\xBDzek"},mean13:{frequencies:[261.6255653006,273.83184954717,292.64606374809,312.75295135888,327.34460995374,349.8355370417,366.15730590163,391.31494185909,409.57195510156,437.7124891801,467.78648270341,489.61131479929,523.2511306012],description:"3/13-comma meantone scale"},mean14:{frequencies:[261.6255653006,274.22463192287,292.76593693997,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"3/14-comma meantone scale (Giordano Riccati, 1762)"},mean14_15:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,417.8586951835,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"15 of 3/14-comma meantone scale"},mean14_19:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,343.38964426558,349.76390952171,366.60744235102,373.41269440635,391.39507854003,410.24343789088,417.8586951835,437.98145930734,459.07327263526,467.59494724206,490.11285326462,513.71515101261,523.2511306012],description:"19 of 3/14-comma meantone scale"},mean14_7:{frequencies:[261.6255653006,292.76593693997,327.61283758281,349.76390952171,391.39507854003,437.98145930734,490.11285326462,523.2511306012],description:"Least squares appr. of 5L+2S to Ptolemy's Intense Diatonic scale"},mean14a:{frequencies:[261.6255653006,274.24690838881,292.77273178776,312.55000460003,327.62804498858,349.75985073129,366.63296888199,391.39962048672,410.28152481852,437.9967071602,467.58409501387,490.1412915133,523.2511306012],description:'fifth of sqrt(5/2)-1 octave "recursive" meantone, Paul Hahn'},mean16:{frequencies:[261.6255653006,274.864106667,292.9608347655,312.24903186879,328.04917632434,349.64754658398,367.34009701877,391.52533508436,411.33694767869,438.41888642025,467.28387071703,490.92894854125,523.2511306012],description:"3/16-comma meantone scale"},mean17:{frequencies:[261.6255653006,273.72412433093,292.61316553779,312.80569569783,327.2710181906,349.85520131118,366.03383354947,391.29294726693,409.38781813791,437.63868343995,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean17_17:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},mean17_19:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,342.40527209253,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,512.10885267608,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean18:{frequencies:[261.6255653006,272.71477685134,292.30447317753,313.30134186202,326.58087306932,350.03988839382,364.87661266094,391.0864943589,407.66301227525,436.94633423564,468.33314368944,488.18382342185,523.2511306012],description:"5/18-comma meantone scale (Smith). 3/2 and 5/3 eq. beat. A.J. Ellis no. 9"},mean19:{frequencies:[261.6255653006,273.06170311607,292.41066686775,313.13068664042,326.81820677503,349.97632128221,365.27443420834,391.15752841841,408.25574814862,437.18446858874,468.16306089008,488.62733218513,523.2511306012],description:"5/19-comma meantone scale, fifths beats three times third. A.J. Ellis no. 11"},mean19r:{frequencies:[261.6255653006,273.04332227389,292.40504357126,313.13971948727,326.80563693258,349.97968716666,365.25335892465,391.15376651139,408.22434232755,437.17185753972,468.17206422213,488.60384173026,523.2511306012],description:"Approximate 5/19-comma meantone with 19/17 tone, Petr Parizek, 2002"},mean23:{frequencies:[261.6255653006,274.15058593695,292.74334833321,312.59706303545,327.56228503462,349.77740346966,366.52259116395,391.37997903742,410.11684180717,437.93077103284,467.63102771476,490.01832104213,523.2511306012],description:"5/23-comma meantone scale, A.J. Ellis no. 4"},mean23six:{frequencies:[261.6255653006,273.11604376732,292.42729246507,313.10398392891,326.85537164611,349.96637341293,365.33674088125,391.16864715511,408.34860251967,437.22175336101,468.13644404983,488.69678846289,523.2511306012],description:"6/23-comma meantone scale"},mean25:{frequencies:[261.6255653006,272.66208311698,292.28833573479,313.32728859832,326.54481265413,350.04955123355,364.81618195011,391.07569872695,407.57299290994,436.91015056532,468.35900068872,488.11644468937,523.2511306012],description:"7/25-comma meantone scale, least square weights 3/2:0 5/4:1 6/5:1"},mean26:{frequencies:[261.6255653006,272.91754119498,292.36655103694,313.20156187458,326.7196004604,350.00272362315,365.10913291207,391.12802157824,408.00943064927,437.08553692506,468.23370304224,488.44305713046,523.2511306012],description:"7/26-comma meantone scale (Woolhouse 1835). Almost equal to meaneb742"},mean26_21:{frequencies:[261.6255653006,272.91754592428,280.26986822267,292.36655272572,304.98534036063,313.20156006546,326.71960423481,335.52133892506,340.8210986211,350.00272362315,365.10913712997,374.9450750913,391.12802157824,408.00943771953,419.00109777107,437.08553944976,455.95052092314,468.23370033762,488.44306277317,501.60158217053,509.52467838008,523.2511306012],description:"21 of 7/26-comma meantone scale (Woolhouse 1835)"},mean27:{frequencies:[261.6255653006,273.15429014256,292.43899158768,313.08519355925,326.88152513903,349.9593710588,365.38059276675,391.17647406766,408.41395592075,437.24799400905,468.11771609009,488.74567091648,523.2511306012],description:"7/27-comma meantone scale, least square weights 3/2:2 5/4:1 6/5:1"},mean29:{frequencies:[261.6255653006,273.57932033947,292.56893127899,312.87664195194,327.1720749345,349.88164908166,365.86785468743,391.26336919078,409.14031659695,437.53944680455,467.90980928584,489.28875967044,523.2511306012],description:"7/29-comma meantone scale, least square weights 3/2:4 5/4:1 6/5:1"},mean2sev:{frequencies:[261.6255653006,272.52663052146,292.24684137387,313.39402123097,326.45210604021,350.07440004945,364.66083404534,391.04793957621,407.34160211012,436.81711699543,468.42550014967,487.94322738789,523.2511306012],description:"2/7-comma meantone scale. Zarlino's temperament (1558). See also meaneb371"},mean2sev_15:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,350.07447082328,364.66081719444,391.04786051887,407.34165622677,419.34452602299,436.81710690282,468.42541627199,487.94330348661,523.2511306012],description:"15 of 2/7-comma meantone scale"},mean2sev_19:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,340.0543130973,350.07447082328,364.66081719444,375.40603866065,391.04786051887,407.34165622677,419.34452602299,436.81710690282,455.01770749831,468.42541627199,487.94330348661,508.27414914183,523.2511306012],description:"19 of 2/7-comma meantone scale"},mean2sev_31:{frequencies:[261.6255653006,264.72620698393,272.52663052146,280.55692507618,283.88190679319,292.24689370448,300.8583415146,304.42377254813,313.39402847191,317.10820138491,326.45203249943,336.07138073182,340.0543130973,350.07447082328,354.22315547012,364.66081719444,375.40603866065,379.85514366424,391.04786051887,395.6823437549,407.34165622677,419.34452602299,424.31412061457,436.81710690282,449.68851049921,455.01770749831,468.42541627199,473.97693555703,487.94330348661,502.32108537715,508.27414914183,523.2511306012],description:"31 of 2/7-comma meantone scale"},mean2seveb:{frequencies:[261.6255653006,274.26749945295,292.59076110537,312.44357330613,327.42660602987,349.76102048238,366.6169314736,391.04794861134,410.01084835752,437.49574139527,467.27496094916,489.74950989452,523.2511306012],description:'"2/7-comma" meantone with equal beating fifths. A.J. Ellis no. 8'},mean2sevr:{frequencies:[261.6255653006,272.52663052146,292.24289114742,313.39346366789,326.45152465405,350.07234194042,364.65868952128,391.04531121882,407.33886585294,436.81651812993,468.41855142334,487.93599106598,523.2511306012],description:"Rational approximation to 2/7-comma meantone, 1/1 = 262.9333"},mean9:{frequencies:[261.6255653006,274.03547926168,292.70827332867,306.59245933664,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"2/9-comma meantone scale, Lemme Rossi, Sistema musico (1666)"},mean94:{frequencies:[261.6255653006,268.79084150406,291.09659021292,315.25339315665,323.88740273232,350.76536842075,360.37196303797,390.27761906502,400.96635635801,434.24075936811,470.27645613296,483.15616342113,523.2511306012],description:"4/9-comma meantone scale"},mean9_15:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,418.0235894185,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"15 of 2/9-comma meantone scale"},mean9_19:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,343.0174228875,349.79835961887,366.39065074918,373.63364091796,391.35653176554,409.92008797511,418.0235894185,437.85206746661,458.62082212371,467.68706357679,489.87127257422,513.10776453427,523.2511306012],description:"19 of 2/9-comma meantone scale"},mean9_31:{frequencies:[261.6255653006,268.72322665693,274.03547926168,279.45274708261,287.03404351137,292.70827332867,298.49467410529,306.59245933664,312.65343270838,321.13524775754,327.48360691354,333.95746354843,343.0174228875,349.79835961887,359.28803828513,366.39065074918,373.63364091796,383.76997851754,391.35653176554,401.97367512027,409.92008797511,418.0235894185,429.36393755067,437.85181455341,446.50763144636,458.62082212371,467.68706357679,480.3749841712,489.87127257422,499.55528826613,513.10776453427,523.2511306012],description:"31 of 2/9-comma meantone scale"},meaneb1071:{frequencies:[261.6255653006,273.45959631537,292.5323192343,305.76452283047,327.09038632535,349.9034421565,365.73073124967,391.23900009103,408.93579686983,437.45744778434,457.24482979639,489.13584427285,523.2511306012],description:"Equal beating 7/4 = 3/2 same."},meaneb1071a:{frequencies:[261.6255653006,273.94115519525,292.67936294368,306.45675889694,327.41929816594,349.81553441422,366.28252094772,391.33731744348,409.75863641311,437.78732645584,458.39517452459,489.75074612717,523.2511306012],description:"Equal beating 7/4 = 3/2 opposite."},meaneb341:{frequencies:[261.6255653006,272.43747957464,292.21954801903,313.43802026715,326.39113133433,350.09085029289,364.55867287416,391.02956482064,407.18921698842,436.75579855003,468.46925117002,487.82916876009,523.2511306012],description:"Equal beating 6/5 = 5/4 same. Almost 4/15 Pyth. comma"},meaneb371:{frequencies:[261.6255653006,272.52577151658,292.24657972098,313.39444482621,326.45151771442,350.07455777399,364.65985037488,391.0477633913,407.34013625771,436.81652657765,468.42591953828,487.94213100406,523.2511306012],description:"Equal beating 6/5 = 3/2 same. Practically 2/7-comma (Zarlino)"},meaneb371a:{frequencies:[261.6255653006,269.83862220337,291.42039690163,314.72828847419,324.6081803116,350.57044084899,361.57569171511,390.49462500658,421.72650333798,434.96526321606,469.75391665508,484.50062400899,523.2511306012],description:"Equal beating 6/5 = 3/2 opposite. Almost 2/5-comma"},meaneb381:{frequencies:[261.6255653006,275.92799893014,293.28437056932,311.73248946737,328.77414682856,349.45463702831,368.55847249214,391.74146894101,416.38271791821,439.14534885862,466.76838786866,492.28548089506,523.2511306012],description:"Equal beating 6/5 = 8/5 same. Almost 1/7-comma"},meaneb451:{frequencies:[261.6255653006,274.36682021224,292.8092284668,312.49148032108,327.70992276921,349.73795145032,366.77030983847,391.42412846541,410.48661799548,438.07873640926,467.5258138363,490.29448158868,523.2511306012],description:"Equal beating 5/4 = 4/3 same, 5/24 comma meantone. A.J. Ellis no. 6"},meaneb471:{frequencies:[261.6255653006,272.3284467197,292.18612898941,313.49179640307,326.31648163178,350.11087068539,364.43361138613,391.00720457415,407.00321492741,436.68087780422,468.52283272721,487.68970701588,523.2511306012],description:"Equal beating 5/4 = 3/2 same. Almost 5/17-comma"},meaneb471a:{frequencies:[261.6255653006,274.14912748586,292.7429036132,312.59777626068,327.56128980523,349.7776701617,366.52092076205,391.37968062521,410.11434970273,437.92977184699,467.63173811584,490.01645860508,523.2511306012],description:"Equal beating 5/4 = 3/2 opposite. Almost 1/5 Pyth. Gottfried Keller (1707)"},meaneb471b:{frequencies:[261.6255653006,272.31089540773,292.18072491748,313.50040506268,326.30440921209,350.11400731728,364.41338872146,391.00370158472,406.97310157871,436.668886633,468.53149836075,487.66729542944,523.2511306012],description:"21/109-comma meantone with 9/7 major thirds, almost equal beating 5/4 and 3/2"},meaneb472:{frequencies:[261.6255653006,270.83769079127,291.72826852127,314.23020335825,325.29440843388,350.38540704884,362.72286472858,390.7008399429,404.45761497645,435.65472502222,469.25816799182,485.78126704788,523.2511306012],description:"Beating of 5/4 = twice 3/2 same. Almost 5/14-comma"},meaneb472_19:{frequencies:[261.6255653006,270.8378472333,281.80541953687,291.72826852127,302.00051792575,314.23002185182,325.29459633135,336.74877333101,350.38540704884,362.72307424558,377.41153667283,390.7008399429,404.45808222448,420.83660282593,435.65497666633,450.99513069838,469.25816799182,485.78154764623,502.88674365212,523.2511306012],description:"Beating of 5/4 = twice 3/2 same, 19 tones"},meaneb472a:{frequencies:[261.6255653006,274.74648495017,292.92493846141,312.30633997417,327.96897748493,349.66886860972,367.20529370531,391.50146074488,411.13561642091,438.33843670622,467.34113372786,490.7787182415,523.2511306012],description:"Beating of 5/4 = twice 3/2 opposite. Almost 3/17-comma"},meaneb591:{frequencies:[261.6255653006,273.06215106005,292.41085266114,313.13038820279,326.81843330822,349.97621009739,365.27491737756,391.15765268623,418.87439289145,437.18488525956,468.16276342643,488.62782610925,523.2511306012],description:"Equal beating 4/3 = 5/3 same."},meaneb732:{frequencies:[261.6255653006,272.00548436883,292.08705896894,313.65121264041,326.09523618955,350.1701397801,364.06303937825,390.94102347986,406.4514961644,436.45893055948,468.68174619223,487.27655969467,523.2511306012],description:"Beating of 3/2 = twice 6/5 same. Almost 4/13-comma"},meaneb732_19:{frequencies:[261.6255653006,272.00553778846,280.94077405591,292.08707584055,303.67560621907,313.65118727632,326.09527197795,339.03307470248,350.17012966679,364.06310036266,376.02237826726,390.94103477068,406.45158772689,419.80330474394,436.45896585468,453.77543893118,468.68171912011,487.27662724555,506.60928680033,523.2511306012],description:"Beating of 3/2 = twice 6/5 same, 19 tones"},meaneb732a:{frequencies:[261.6255653006,270.68848625127,291.6822692306,314.3042667302,325.1920204578,350.41293324447,362.5515203525,390.67014898736,404.20304509584,435.55206635241,469.33217160858,485.59021720901,523.2511306012],description:"Beating of 3/2 = twice 6/5 opposite. Almost 1/3 Pyth. comma"},meaneb742:{frequencies:[261.6255653006,272.89343543801,292.35917287023,313.21341909223,326.70311046689,350.00714105462,365.08148980199,391.12308516115,407.96824372307,437.06899032128,468.24551969328,488.41224041213,523.2511306012],description:"Beating of 3/2 = twice 5/4 same."},meaneb742a:{frequencies:[261.6255653006,273.78850133971,292.63287562287,312.77409391616,327.31510698093,349.84341999552,366.10759179471,391.30612443552,409.49789158088,437.68290117536,467.80756449982,489.55615570194,523.2511306012],description:"Beating of 3/2 = twice 5/4 opposite. Almost 3/13-comma, 3/14 Pyth. comma"},meaneb781:{frequencies:[261.6255653006,273.88372205101,292.66195046404,312.72748571568,327.38015167213,349.82604176358,366.21672762941,391.32556326448,418.15568884829,437.74813244966,467.76108961433,489.67748280644,523.2511306012],description:"Equal beating 3/2 = 8/5 same."},meaneb891:{frequencies:[261.6255653006,272.7426257605,292.31307409948,313.28760473417,326.59990179186,350.03483972175,364.90860969063,391.092135133,419.1546662649,436.96549358815,468.31936361194,488.21959184068,523.2511306012],description:"Equal beating 8/5 = 5/3 same. Almost 5/18-comma"},meaneight:{frequencies:[261.6255653006,276.08926119362,293.33333347996,311.65444160511,328.88393162803,349.42547049952,368.74309237173,391.77416758435,413.43299207996,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8 Pyth. comma meantone scale"},meanfifth:{frequencies:[261.6255653006,274.56546814423,292.86978442859,312.39456569414,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"1/5-comma meantone scale (Verheijen)"},meanfifth2:{frequencies:[261.6255653006,279.06726965397,292.86986732103,312.39452419152,327.84547867349,349.70184487387,366.99801003998,391.46454285105,417.56218018201,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"1/5-comma meantone by John Holden (1770)"},meanfifth_19:{frequencies:[261.6255653006,274.56546814423,279.06726965397,292.86978442859,307.35519222791,312.39456569414,327.84548435462,344.06059968708,349.70179235499,366.99791252626,373.01539917593,391.46460164194,410.82629477826,417.56217294621,438.21464222188,459.88868900496,467.42914467878,490.54793493862,514.81033759999,523.2511306012],description:"19 of 1/5-comma meantone scale"},meanfifth_43:{frequencies:[261.6255653006,265.91515911649,270.13633240739,274.56546814423,279.06726965397,283.49717461664,288.14537375445,292.86978442859,297.67175429757,302.39711110066,307.35519222791,312.39456569414,317.35355938713,322.556865357,327.84548435462,333.22081516619,338.51040756711,344.06059968708,349.70179235499,355.43547760922,361.07770857381,366.99791252626,373.01539917593,378.93660287884,385.14971481892,391.46460164194,397.88302689184,404.19904307077,410.82629477826,417.56217294621,424.19061149626,431.14564594215,438.21464222188,445.39957775044,452.46991103879,459.88868900496,467.42914467878,475.09307907327,482.63477102771,490.54793493862,498.59100550039,506.50570672499,514.81033759999,523.2511306012],description:"Complete 1/5-comma meantone scale"},meanfiftheb:{frequencies:[261.6255653006,275.80023422757,293.11157312801,311.73372470712,328.53333183909,349.48325286892,368.3828117434,391.46459711956,412.7266004334,438.69360944226,466.62683936965,491.82624824197,523.2511306012],description:'"1/5-comma" meantone with equal beating fifths'},meangold:{frequencies:[261.6255653006,272.97231199113,292.38331430233,313.17462880702,326.75706743029,349.99269211627,365.17193449866,391.13923210785,408.10300926149,437.12312635029,468.20685771475,488.51307131873,523.2511306012],description:"Meantone scale with Blackwood's R = phi, and diat./chrom. ST = phi, ~4/15-comma"},meanhalf:{frequencies:[261.6255653006,267.49544939623,290.69507255622,315.90677595028,322.99452506247,351.00752840096,358.88280562497,390.00836666198,398.75867291663,433.34262909025,470.92601754108,481.49180950675,523.2511306012],description:"1/2-comma meantone scale"},meanhar2:{frequencies:[261.6255653006,273.08769296879,292.41861893027,305.22982618403,326.83598255713,349.97156260351,365.30423365264,391.16284711627,408.30015740759,437.20230245522,456.35665612784,488.66055322307,523.2511306012],description:"1/9-Harrison's comma meantone scale"},meanhar3:{frequencies:[261.6255653006,274.22153683641,292.76499331753,306.86017365004,327.61072570921,343.38355445704,366.60389537541,391.39444778107,410.23814647641,437.9793418028,459.06587176894,490.10890120058,523.2511306012],description:"1/11-Harrison's comma meantone scale"},meanharris:{frequencies:[261.6255653006,273.71072489962,292.60907359238,306.12544311476,327.26186315247,349.85764856047,366.01847563765,391.29021017831,409.36491649663,437.62950220286,457.84473927605,489.45661357347,523.2511306012],description:"1/10-Harrison's comma meantone scale"},meanhsev:{frequencies:[261.6255653006,265.69493617871,271.18768033644,275.4057836544,279.68949451567,284.03983498254,289.91182549392,294.4211659268,299.00064605783,305.1819244006,309.92877868547,314.74946639166,321.25632089757,326.25319922315,331.32779988873,336.4813337451,343.43745382287,348.77934146077,354.20431777528,361.52682728594,367.15008027699,372.86080050545,378.66034414493,386.48843610249,392.49994642563,398.60496085649,406.84537033315,413.17351844213,419.60009331305,426.12662827999,434.93599657884,441.70106893056,448.57136642871,457.84473927605,464.96613926104,472.19830582795,481.96011959425,489.45661357347,497.06970936204,504.80122352123,515.23704142273,523.2511306012],description:"1/14-septimal schisma tempered meantone scale"},meanhskl:{frequencies:[261.6255653006,275.0605216927,293.02063313667,312.15345277639,328.18310911307,349.61186736411,367.56508220664,391.56529173291,411.67289207144,438.55312706018,467.18850946536,491.17950266504,523.2511306012],description:"Half septimal kleisma meantone"},meanlst357_19:{frequencies:[261.6255653006,273.71260157103,279.68803244686,292.60971924044,306.12821574316,312.81131320311,327.26311833974,342.38279105966,349.85736361975,366.02068710341,374.01129952811,391.29052886394,409.36829077259,418.30522648629,437.63082426891,457.84952434322,467.84458559023,489.45917220726,512.07206464598,523.2511306012],description:"19 of mean-tone scale, least square error in 3/2, 5/4 and 7/4"},meanmalc:{frequencies:[261.6255653006,279.16226462633,292.82999876562,312.45832383396,327.75622702832,349.72564885805,366.84815356577,391.43789792004,417.67588698136,438.12522309524,467.49265244264,490.38100841085,523.2511306012],description:"Meantone approximation to Malcolm's Monochord, 3/16 Pyth. comma"},meannkleis:{frequencies:[261.6255653006,277.55670411237,293.77792781181,311.66693695111,329.88161264913,349.96913477239,370.42222384066,392.07096746411,415.94530241673,440.25439013544,467.06275302556,494.35929617392,523.2511306012],description:"1/5 kleisma tempered meantone scale"},meanpi:{frequencies:[261.6255653006,275.38456311745,294.43027471344,309.91448590794,326.2128298123,348.77404705732,367.11600789597,392.50613131028,413.14795414706,434.87532652316,464.95175460796,489.40347900327,523.2511306012],description:"Pi-based meantone with Harrison's major third by Erv Wilson"},meanpi2:{frequencies:[261.6255653006,287.5806999253,296.7710142931,326.2128298123,336.6377243117,370.0346037192,381.85992557156,394.06315326167,433.15704755212,446.99959483943,491.34516423327,507.04724898227,523.2511306012],description:"Pi-based meantone by Erv Wilson analogous to 22-tET"},meanpkleis:{frequencies:[261.6255653006,274.33428876064,294.88060759996,309.2047285643,324.22465805628,348.50752497012,365.43662717622,392.80607455881,411.88702081614,442.73537947933,464.24169412807,486.7926967469,523.2511306012],description:"1/5 kleisma positive temperament"},meanquar:{frequencies:[261.6255653006,273.37431312998,292.50627485027,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale. Pietro Aaron's temp. (1523). 6/5 beats twice 3/2"},meanquar_14:{frequencies:[261.6255653006,273.37431312998,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split D#/Eb and G#/Ab, Otto Gibelius (1666)"},meanquar_15:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb and G#/Ab"},meanquar_16:{frequencies:[261.6255653006,273.37431312998,279.93548123753,292.50629850443,305.64179898843,312.97722776199,327.03195662575,349.91920725962,365.63293356166,391.22137338448,408.78994578219,418.60090448096,437.39882871549,457.04097849371,468.01000025525,489.02679755603,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, G#/Ab and A#/Bb"},meanquar_17:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177250659,312.977175335,327.03195662575,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39889945791,457.04105241293,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},meanquar_19:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,341.71789064962,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39890198442,457.04105241293,468.01003810189,489.02683710225,510.98743222773,523.2511306012],description:"19 of 1/4-comma meantone scale"},meanquar_27:{frequencies:[261.6255653006,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,327.03195662575,334.88072358477,341.71789064962,349.91912034749,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"27 of 1/4-comma meantone scale"},meanquar_31:{frequencies:[261.6255653006,267.90457886781,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,320.48862783822,327.03195662575,334.88072358477,341.71789064962,349.91912034749,358.31717956585,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,479.24227945773,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"31 of 1/4-comma meantone scale"},meanquareb:{frequencies:[261.6255653006,274.90575459855,292.80763523599,312.14798050979,327.88746490679,349.6453532581,367.3522744581,391.22144795733,411.14173398328,437.99455416256,467.00507093977,490.61429903129,523.2511306012],description:"Variation on 1/4-comma meantone with equal beating fifths"},meanquarm23:{frequencies:[261.6255653006,273.51763645063,292.40504357126,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,408.78994578219,436.04260883433,468.17206422213,489.12605686634,523.2511306012],description:"1/4-comma meantone approximation with minimal order 23 beatings"},meanquarr:{frequencies:[261.6255653006,273.37036621967,292.50063201309,312.98169478553,327.03195662575,349.92419358955,365.62579001637,391.21579858034,408.78994578219,437.39258595147,468.01906681552,489.01974822542,523.2511306012],description:"Rational approximation to 1/4-comma meantone, Kenneth Scholz, MTO 4.4, 1998"},meansabat:{frequencies:[261.6255653006,279.13726386405,294.25495796556,313.95067836072,330.95382015833,348.87783040382,372.229687597,392.38914286775,418.65339720992,441.32709511026,470.8669722571,496.36848628125,523.2511306012],description:"1/9-schisma meantone scale of Eduard Sa'bat-Garibaldi"},meansabat_53:{frequencies:[261.6255653006,264.79625752493,268.00537599851,271.25338610366,275.79485124716,279.13726386405,282.52018221184,285.94410045135,290.73152483281,294.25495796556,297.82109228474,301.4304452945,305.08354077075,310.19140758515,313.95067836072,317.75550958044,321.60645175541,326.99095182327,330.95382015833,334.96471528237,339.02421924159,343.13292113612,348.87783040382,353.10595017045,357.38531136087,361.71653498009,367.77258074571,372.229687597,376.74081403286,381.30660995465,385.92774054592,392.38914286775,397.14458487807,401.95765903525,406.82906379475,413.640406907,418.65339720992,423.72714093867,428.86237189887,436.04260883433,441.32709511026,446.67562589029,452.08897683944,457.56793273834,465.22877230071,470.8669722571,476.57350267936,482.349191678,490.42492909292,496.36848628125,502.38407462043,508.4725670703,514.63484717027,523.2511306012],description:"53-tone 1/9-schisma meantone scale"},meanschis:{frequencies:[261.6255653006,275.81646505128,294.24573392894,310.20599265769,327.03195662575,348.88329767713,367.80716871461,392.38299382393,413.66634097248,436.10412364188,465.24335632603,490.47874118496,523.2511306012],description:"1/8-schisma temperament, Helmholtz"},meanschis7:{frequencies:[261.6255653006,275.84425785506,294.23387584933,310.2247482054,327.0846843223,348.89032888179,367.85164222246,392.37508610937,413.69968681881,436.18322603255,465.26210635182,490.54793493862,523.2511306012],description:"1/7-schisma linear temperament"},meanschis_17:{frequencies:[261.6255653006,275.81646505128,290.77709705464,294.24573392894,310.20599265769,327.03195662575,330.93307160522,348.88329767713,367.80716871461,372.19468374184,392.38299382393,413.66634097248,436.10412364188,441.30634506723,465.24335632603,490.47874118496,496.32958936031,523.2511306012],description:"17-tone 1/8-schisma linear temperament"},meansept:{frequencies:[261.6255653006,273.93523095528,292.67762672082,312.70235991264,327.41522444303,349.81667202162,366.27579142084,391.33604481052,409.74867679276,437.78330574787,467.73603562223,489.74334292241,523.2511306012],description:"Meantone scale with septimal diminished fifth"},meansept2:{frequencies:[261.6255653006,273.61459551034,286.15296204753,292.57963558274,305.98714063953,320.00886175336,327.19620693615,342.18982383643,349.87514759905,365.9082279648,382.67602660872,391.27063976147,409.20043831214,427.95210889573,437.56358849756,457.61500463173,478.58500343311,489.333659422,511.75744671018,523.2511306012],description:"Meantone scale with septimal neutral second"},meansept3:{frequencies:[261.6255653006,267.11515986718,271.23581508831,275.42019673559,281.19923906193,285.53716249988,289.94217244295,296.02592413073,300.59257160392,305.22982618403,309.9384746623,316.44180152381,321.32358037849,326.28048244956,333.12670774706,338.26588629419,343.48414905091,348.7829114007,356.10146388137,361.59490682213,367.17305499414,374.87731434423,380.66058361349,386.53284867747,394.643327573,400.73152907611,406.91341882127,413.19091223118,421.86074762795,428.36858751681,434.97682067587,444.1040384307,450.95501471222,457.91167766162,464.97592623609,474.73234784313,482.05581210758,489.49253462334,499.76337935275,507.47298512535,515.30182087389,523.2511306012],description:"Pythagorean scale with septimal minor third"},meansept4:{frequencies:[261.6255653006,266.94086705872,271.13211808455,275.38917613856,280.98410555769,285.39585012732,289.87686370457,295.76613145071,300.40996929954,305.12672026341,309.91752915454,316.21395200486,321.17884203959,326.22168604472,332.8493514236,338.07543464185,343.38355445704,348.77505435772,355.86092403367,361.44831302863,367.12342987925,374.58207334188,380.46340397682,386.43730087372,394.28810581018,400.47907310734,406.76701374557,413.15368163355,421.54749623588,428.16623317002,434.88889120201,443.72428802318,450.69091522486,457.76754776364,464.95497741911,474.40121026751,481.84980583512,489.41535214975,499.35853288878,507.19898454493,515.16253949886,523.2511306012],description:"Pythagorean scale with septimal narrow fourth"},meansev:{frequencies:[261.6255653006,275.93321340298,293.28595453555,311.72996498387,328.77769811601,349.45369437647,368.5644419122,391.74252566418,413.16594588103,439.14890519043,466.76586696593,492.29212632197,523.2511306012],description:"1/7-comma meantone scale, Jean-Baptiste Romieu (1755)"},meansev2:{frequencies:[261.6255653006,273.98141462199,292.76593693997,312.83835055233,327.61283758281,350.07440004945,366.60744235102,391.74252566418,410.24343789088,438.37026184168,468.42550014967,490.54793493862,524.18054130269],description:"Meantone scale with 1/7-comma stretched octave (stretched meansept)"},meansev_19:{frequencies:[261.6255653006,275.93321340298,278.07859353335,293.28589524255,309.32501829942,311.72996858511,328.77775508885,346.75764506664,349.4536277652,368.56443339655,371.42996022741,391.74260033637,413.16585280598,416.37814821359,439.14890011719,463.16493144882,466.76596133102,492.29202110912,496.11959049595,523.2511306012],description:"19 of 1/7-comma meantone scale"},meanseveb:{frequencies:[261.6255653006,276.822915312,293.45907344559,311.2600957924,329.2717708679,349.29792128041,369.56105314287,391.74259807358,414.53862252605,439.49286138442,466.19439430972,493.21190508606,523.2511306012],description:'"1/7-comma" meantone with equal beating fifths'},meansixth:{frequencies:[261.6255653006,275.36245350283,293.11247215425,312.00666699279,328.38886075091,349.55699144229,367.91095120397,391.62676241399,412.18948168074,438.75944753732,467.04212833931,491.56459996916,523.2511306012],description:"1/6-comma meantone scale (tritonic temperament of Salinas)"},meansixth_19:{frequencies:[261.6255653006,275.36245350283,278.49009641114,293.11247215425,308.50278723002,312.00666699279,328.38886075091,345.6314161331,349.55699144229,367.91095120397,372.08969287196,391.62676241399,412.18948168074,416.87124381956,438.75944753732,461.79691129422,467.04212833931,491.56459996916,517.37477513058,523.2511306012],description:"19 of 1/6-comma meantone scale"},meansixtheb:{frequencies:[261.6255653006,276.39673661379,293.31426069206,311.4574698476,328.96404447481,349.37515437283,369.07004939896,391.62674884124,413.78350416977,439.15979251365,466.37460465854,492.63446576705,523.2511306012],description:'"1/6-comma" meantone with equal beating fifths'},meansixthm:{frequencies:[261.6255653006,275.36250599118,293.11251278827,312.00669222389,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52369088643,438.75941205608,467.04206359353,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 2 fifths"},meansixthm2:{frequencies:[261.6255653006,276.14113065853,293.11251278827,310.24975557428,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52380581681,438.75941205608,465.72523006308,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 4 fifths"},meansixthpm:{frequencies:[261.6255653006,275.00020270933,293.00227310437,309.72478954314,328.14198392915,348.83408706747,367.49599295996,391.5530240856,412.50030385781,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"modified 1/6P-comma temperament, French 18th century"},meansixthso:{frequencies:[261.6255653006,273.09145986506,292.50627485027,313.30134186202,327.03195662575,350.28154752005,365.63284274659,391.62667645325,408.78994578219,437.85193595173,468.98001879925,489.53334447372,524.3356019912],description:"1/6-comma meantone scale with 1/6-comma stretched oct, Dave Keenan TL 13-12-99"},meanstr:{frequencies:[261.6255653006,272.52663052146,292.30447317753,313.51763757869,326.58087306932,350.28154752005,364.87661266094,391.35649333595,407.66301227525,437.24799400905,468.98001879925,488.52085380073,523.97386302914],description:"Meantone with 1/9-comma stretched octave, Petr Parizek (2006)"},meanten:{frequencies:[261.6255653006,276.96346718799,293.59840699152,311.2324721493,329.47860040677,349.26769656434,369.74365294187,391.95114287501,414.92943551322,439.85086739936,466.26912673157,493.60433806962,523.2511306012],description:"1/10-comma meantone scale"},meanthird:{frequencies:[261.6255653006,271.40047399919,291.9012907804,313.95067836072,325.68056936328,350.28154752005,363.36884069528,390.81668391305,405.4184580124,436.04260883433,468.98001879925,486.50215045777,523.2511306012],description:"1/3-comma meantone scale (Salinas)"},meanthird_19:{frequencies:[261.6255653006,271.40047399919,281.38801176707,291.9012907804,302.80736724606,313.95067836072,325.68056936328,337.848714425,350.28154752005,363.36884069528,376.74081403286,390.81668391305,405.4184580124,420.33785775232,436.04260883433,452.33412516107,468.98001879925,486.50215045777,504.40543017669,523.2511306012],description:"Complete 1/3-comma meantone scale"},meanthirdeb:{frequencies:[261.6255653006,273.41679662438,292.30169912182,312.83755546226,326.81234905863,349.91518709086,365.63683018302,390.81669745772,408.5035451685,436.83089868331,467.63468237516,488.59687355467,523.2511306012],description:'"1/3-comma" meantone with equal beating fifths'},meanvar1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,312.00669222389,327.03195662575,349.55706816887,366.3906401674,391.22147055517,410.48618883318,437.39890198442,467.04206359353,489.53334447372,523.2511306012],description:"Variable meantone 1: C-G-D-A-E 1/4, others 1/6"},meanvar2:{frequencies:[261.6255653006,274.19219069011,292.50627485027,312.04360750473,327.03195662575,349.70184487387,366.23895640989,391.22147055517,410.65012590831,437.39890198442,467.23549927892,489.3306802979,523.2511306012],description:"Variable meantone 2: C..E 1/4, 1/5-1/6-1/7-1/8 outward both directions"},meanvar3:{frequencies:[261.6255653006,275.36250599118,292.50627485027,310.71739423852,327.03195662575,349.55706816887,367.15000817177,391.22147055517,413.04376116614,437.39890198442,466.0760911248,489.53334447372,523.2511306012],description:"Variable meantone 3: C..E 1/4, 1/6 next, then Pyth."},meanvar4:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,412.61639318626,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Variable meantone 4: naturals 1/4-comma, accidentals Pyth."},mediant16:{frequencies:[261.6255653006,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Mediant doubling of octave done four times"},mercadier:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,349.22823143301,368.74309237173,391.5530240856,413.90012676351,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Mercadier's well-temperament (1777), 1/12 and 1/6 Pyth. comma"},mercadier2:{frequencies:[261.6255653006,276.14388692511,292.95319623755,310.40895756597,328.03206784165,349.20805980193,368.45885450371,391.49761638186,413.86785247997,438.37641748302,465.57175090792,491.63473786767,523.2511306012],description:"Mercadier de Belestas (1776)"},mercator:{frequencies:[261.6255653006,272.09448029963,279.3054110864,290.48161516351,306.08206748155,318.32990397837,326.76614606023,335.42596179815,348.84778913489,362.80689075348,372.42184279259,387.32403355801,408.12545368833,418.94141877379,435.70530841001,453.13974129598,465.14865565404,490.12996697565,509.74216322321,523.2511306012],description:"19 out of 53-tET, see Mandelbaum p. 331"},merrick:{frequencies:[261.6255653006,278.62147458377,295.28844751169,312.94924079019,329.91874474504,349.29981986967,371.62722343835,394.01440557319,416.60121863153,438.96906929631,468.0242659544,493.6331420766,523.2511306012],description:"A. Merrick's melodically tuned equal temperament (1811)"},mersen_l1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 1"},mersen_l2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 2"},mersen_s1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 1"},mersen_s2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 2"},mersenmt1:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.03921839762,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 1"},mersenmt2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 2"},mersenne:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,340.65828815182,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,510.98743222773,523.2511306012],description:"31-note choice system of Mersenne, Harmonie universelle (1636)"},meyer:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},meyer_29:{frequencies:[261.6255653006,268.26840191956,275.93321340298,286.15296204753,289.72987407313,294.32876096318,306.59245933664,321.92208230347,327.03195662575,331.11985608357,343.38355445704,344.91651675372,357.69120255941,367.91095120397,372.50983809402,383.2405741708,386.30649876417,392.4383479509,408.78994578219,413.89982010446,429.2294430713,441.49314144476,457.84473927605,459.88868900496,482.88312345521,490.54793493862,496.67978412536,510.98743222773,515.07533168556,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},mid_enh1:{frequencies:[261.6255653006,269.10058145205,336.37572681506,348.83408706747,392.4383479509,403.65087217807,504.56359022259,523.2511306012],description:"Mid-Mode1 Enharmonic, permutation of Archytas's with the 5/4 lying medially"},mid_enh2:{frequencies:[261.6255653006,271.31540105247,339.14425131559,348.83408706747,392.4383479509,406.97310157871,508.71637697339,523.2511306012],description:"Permutation of Archytas' Enharmonic with the 5/4 medially and 28/27 first"},miller19:{frequencies:[261.6255653006,271.16557874802,283.07475767856,293.39690257971,304.09543631541,315.18408718336,326.67707691855,338.58915326012,350.93559605343,363.73224209988,376.99551198295,390.74241649248,407.9032302438,422.77716528297,438.1934715504,454.17192383337,470.73301771751,487.89800430439,505.68889852562,524.12852955557],description:"TOP tempered nr. 64 [1202.9, 570.4479508], 7-limit {225/224, 1029/1000}"},miller7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,313.95067836072,329.64821227876,353.19451315581,366.27579142084,392.4383479509,412.06026534844,439.53094970501,470.92601754108,494.47231841813,523.2511306012],description:"Herman Miller, 7-limit JI. mode of parizek_ji1"},miller_12:{frequencies:[261.6255653006,273.36657578691,291.63627719304,313.29104303136,327.35065305942,349.22823143301,364.90060015836,391.99543598175,418.19337019276,436.9606979923,456.57025003029,487.08386390194,523.2511306012],description:"Herman Miller, scale with appr. to three 7/4 and one 11/8. Tuning List 19-11-99"},miller_12a:{frequencies:[261.6255653006,273.46133384191,291.68681828778,313.23675853409,327.40738352015,349.22823143301,365.02708698668,391.99543598175,418.12090908234,437.03642407223,456.80766452229,487.25270356141,523.85596330884],description:'Herman Miller, "Starling" scale, alternative version TL 25-11-99'},miller_12r:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,484.4917875937,523.2511306012],description:'Herman Miller, "Starling" scale rational version'},miller_ar1:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.07474405997,327.9937953665,348.83408706747,368.24374600687,391.64146650178,414.27421384356,438.21489534465,465.11211608996,490.99166158792,523.2511306012],description:'Herman Miller, "Arrow I" well-temperament'},miller_ar2:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.2849072826,328.2161033156,349.07052034394,368.24374600687,391.64146650178,414.27421384356,438.51190905657,465.42736069124,491.32444638706,523.2511306012],description:'Herman Miller, "Arrow II" well-temperament'},miller_b1:{frequencies:[261.6255653006,276.37000081643,292.93610587951,310.49521248455,328.2161033156,348.83408706747,368.4933346061,391.64146650178,413.993616853,438.80912407872,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Butterfly I" well-temperament'},miller_b2:{frequencies:[261.6255653006,276.55731914056,293.13465239421,310.70566022736,328.2161033156,349.07052034394,368.74309237173,392.17254067411,414.27421384356,439.10654054756,465.42736069124,491.99069280383,523.2511306012],description:'Herman Miller, "Butterfly II" well-temperament'},miller_bug:{frequencies:[261.6255653006,275.99574470663,292.73769384471,310.49521248455,327.54963108844,348.83408706747,368.4933346061,391.64146650178,413.993616853,437.62147130622,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Bug I" well-temperament'},miller_dim:{frequencies:[261.6255653006,272.37088095799,275.97178311718,291.10467300644,307.06737543415,311.12698372208,323.9053895548,328.18760802294,346.1837483498,365.1667076515,369.99442271164,385.1905938463,390.2830385166,411.68417663589,434.25884690128,440,458.07139483414,464.12736626882,489.57775198944,516.42371048788,523.2511306012],description:"Diminished temperament, g=92.421, oct=1/4, 7-limit"},miller_nikta:{frequencies:[261.6255653006,272.78230567952,282.82337239762,292.30660227893,305.1368529352,315.1779191367,326.89249731477,341.39626079795,349.76381456689,364.82541608424,379.88701473,391.60159255926,407.77886614283,422.28262813098,436.22855406869,456.86852448015,469.69877536137,488.10739794888,508.74736733766,523.2511306012],description:'Herman Miller, 19-tone scale of "Nikta". Tuning List 22-1-99'},miller_sp:{frequencies:[261.6255653006,276.74268633071,292.73329748773,304.15432597486,321.72882314722,340.31880135827,353.5963846,374.02771873076,395.63960626236,411.07553805605,434.82810464551,459.95313047266,477.89826295658,505.51194770063,525.23456349057],description:"Herman Miller, Superpelog temperament, TOP tuning"},minor_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"A minor pentatonic"},minor_clus:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,353.19451315581,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,523.2511306012],description:"Chalmers' Minor Mode Cluster, Genus [333335]"},minor_wing:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Chalmers' Minor Wing with 7 minor and 6 major triads"},minortone:{frequencies:[261.6255653006,264.87670583656,269.18630372462,273.56601964703,276.96554054138,281.47182622933,286.05143175444,290.70554674078,294.31805527354,299.10666990622,303.97319627313,307.75057781118,312.75774231814,317.84637624619,323.01780144749,327.03184444407,332.35271908155,337.76016543181,341.95740725719,347.52112383796,353.17536321933,358.9216002989,363.3818066762,369.29410472703,375.30259493676,379.96636500161,386.14849505708,392.43120962619,398.81614754309,403.7721109712,410.34156772664,417.0179085097,422.20006196255,429.06934285921,436.05038835349,443.14501943782,448.65184388114,455.95150328441,463.36992699746,469.12808274602,476.76089208744,484.51788878959,492.4010934061,498.52001054206,506.63103252794,514.8740254656,523.2511306012],description:"Minortone temperament, g=182.466089, 5-limit"},miracle1:{frequencies:[261.6255653006,266.71173418545,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,479.82340237272,489.15147723638,513.27277840175,523.2511306012],description:'21 out of 72-tET Pyth. scale "Miracle/Blackjack", Keenan & Erlich, TL 2-5-2001'},miracle1a:{frequencies:[261.6255653006,266.57640943865,279.87817034289,285.17441410431,299.40418912991,305.0699313594,320.29246281951,326.35348199782,342.63803067389,349.1219037468,366.54256247747,373.47879032775,392.11482112276,399.53496279579,419.47115746916,427.40897376302,448.73603972606,457.22764679928,480.04261976898,489.12665346498,513.5333359992,523.2511306012],description:"Version of Blackjack with just 11/8 intervals"},miracle2:{frequencies:[261.6255653006,266.71172956369,274.52699087907,279.86396690685,285.30469707927,293.66477470251,299.3738011912,305.19381471768,314.13668880034,320.24370207508,326.46943949911,336.03573785931,342.56848231438,349.22822739856,359.4614100947,366.44956423737,373.57357245769,380.83607584373,391.99544051026,399.61607650784,407.38486242506,419.32216702351,427.4740516384,435.78441397758,448.55389013814,457.27405769313,466.16375074742,479.82341068742,489.15147723638,498.66088722045,513.27278729609,523.2511306012],description:'31 out of 72-tET Pythagorean scale "Miracle/Canasta", tempered Fokker-M, 36 7-limit tetrads'},miracle24:{frequencies:[261.6255653006,266.71173418545,274.52698453615,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,513.27277840175,523.2511306012],description:"Miracle[24] in 72-tET tuning."},miracle2a:{frequencies:[261.6255653006,266.57640943865,274.68028654691,279.87817034289,285.17441410431,293.84366906071,299.40418912991,305.0699313594,314.34400674513,320.29246281951,326.35348199782,336.27457379784,342.63803067389,349.1219037468,359.73515228832,366.54256247747,373.47879032775,380.54627680087,392.11482112276,399.53496279579,407.09552105481,419.47115746916,427.40897376302,435.49700296564,448.73603972606,457.22764679928,465.87994655565,480.04261976898,489.12665346498,498.38259075187,513.5333359992,523.2511306012],description:"Version of Canasta with just 11/8 intervals"},miracle3:{frequencies:[261.6255653006,266.71172956369,271.8967720342,274.52699087907,279.86396690685,285.30469707927,290.85119844166,293.66477470251,299.3738011912,305.19381471768,311.12697293924,314.13668880034,320.24370207508,326.46943949911,332.81620914398,336.03573785931,342.56848231438,349.22822739856,356.01744208336,359.4614100947,366.44956423737,373.57357245769,380.83607584373,384.52012922913,391.99544051026,399.61607650784,407.38486242506,411.32573797959,419.32216702351,427.4740516384,435.78441397758,440.00001524924,448.55389013814,457.27405769313,466.16375074742,470.67322937359,479.82341068742,489.15147723638,498.66088722045,503.48472993456,513.27278729609,523.2511306012],description:'41 out of 72-tET Pythagorean scale "Miracle/Studloco", Erlich/Keenan 2001'},miracle31s:{frequencies:[261.6255653006,266.63636836248,274.61234258734,279.87187586531,285.23214274484,293.7643779857,299.39072204343,305.12482507342,314.2521161294,320.27085311289,326.40486440328,336.1687117034,342.60720791066,349.16901789451,359.61381619398,366.50134650551,373.52079096839,380.6746756467,392.06191220286,399.57090708206,407.22371854314,419.40512463865,427.43781242392,435.62434685833,448.6553095271,457.24821364991,466.00569400686,479.94546308962,489.13765420145,498.50589943595,513.41785698047,523.2511306012],description:"Canasta with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle3a:{frequencies:[261.6255653006,266.57640943865,271.6209387912,274.68028654691,279.87817034289,285.17441410431,290.57088243021,293.84366906071,299.40418912991,305.0699313594,310.84289043406,314.34400674513,320.29246281951,326.35348199782,332.52919812642,336.27457379784,342.63803067389,349.1219037468,355.72847573316,359.73515228832,366.54256247747,373.47879032775,380.54627680087,384.83248369581,392.11482112276,399.53496279579,407.09552105481,411.6807594913,419.47115746916,427.40897376302,435.49700296564,440.40213577526,448.73603972606,457.22764679928,465.87994655565,471.12729153307,480.04261976898,489.12665346498,498.38259075187,503.99602271809,513.5333359992,523.2511306012],description:"Version of Studloco with just 11/8 intervals"},miracle3ls:{frequencies:[261.6255653006,266.8561524992,272.19132869617,274.36355553357,279.84880885615,285.44374339214,291.1505189834,293.47406686496,299.34138986722,305.32601617869,311.43030899178,313.91568307924,320.1916880693,326.59318586748,333.12264767748,335.78115718319,342.4943108472,349.34167821305,356.32594256772,359.16962765504,366.35037871957,373.67471357934,381.14545968569,384.18721873359,391.86813762951,399.70261841457,407.69373119716,410.94736065575,419.16328558448,427.54349328421,436.09121881038,439.57145109254,448.35967321435,457.32356924795,466.46667727785,470.18934850506,479.58967749961,489.177972196,498.95793401383,502.93987502638,512.99500332159,523.2511306012],description:"Miracle-41 in a 7-limit least-squares tuning, Gene Ward Smith, 2001"},miracle3p:{frequencies:[261.6255653006,266.34679554672,270.06721067987,274.94077677072,279.90228841312,284.95333588433,290.09553330897,294.14767822015,299.45579274291,304.85969791727,310.36112062791,314.69634158508,320.37527393455,326.15668500873,332.04242788125,336.6805001021,342.75615313904,348.94144590806,355.2383548887,360.20043713509,366.70052302062,373.3179099666,380.0547104455,385.36343543368,392.31760641523,399.39727291251,406.60469732047,412.28427858225,419.7242587073,427.29849640545,435.00941939202,441.0857666732,449.04549132915,457.14885520764,465.39844769831,471.89927840742,480.41505607532,489.08450736089,497.91040254418,504.86537329764,513.97604599191,523.2511306012],description:"Least squares Pythagorean approximation to partch_43"},miracle41s:{frequencies:[261.6255653006,266.63636836248,269.45164985995,274.61234258734,279.87187586531,285.23214274484,290.69507255622,293.7643779857,299.39072204343,305.12482507342,310.96875093738,314.2521161294,320.27085311289,326.40486440328,332.65635780028,336.1687117034,342.60720791066,349.16901789451,355.85650343121,359.61381619398,366.50134650551,373.52079096839,380.6746756467,384.69403121132,392.06191220286,399.57090708206,407.22371854314,411.52339231679,419.40512463865,427.43781242392,435.62434685833,440.22388881539,448.6553095271,457.24821364991,466.00569400686,470.92601754108,479.94546308962,489.13765420145,498.50589943595,503.76937659657,513.41785698047,523.2511306012],description:"StudLoco with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle_12:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,336.03572815422,342.56848033562,359.46139971304,366.44956000397,384.52011812375,411.32572372413,440,470.6732130613,523.2511306012],description:"A 12-tone subset of Blackjack with six 4-7-9-11 tetrads"},miracle_12a:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82339960115,489.15147723638,513.27277840175,523.2511306012],description:"A 12-tone chain of Miracle generators and subset of Blackjack"},"24erlich-keenan":{frequencies:[261.6255653006,266.71173469898,279.86396636799,285.30470202322,290.8512090818,299.37380003836,305.19381941867,320.24370022528,326.46944389922,342.56847967604,349.22823143301,356.01745305102,366.44956070954,373.5735760541,391.99543598175,399.61607958554,407.38487340641,419.32216137194,427.47405410759,448.55388322895,457.27405945401,479.82340237272,489.15147817819,498.66089778183,523.2511306012],description:"24 note mapping for Erlich/Keenan Miracle scale low version, tuned to 72-equal"},miracle_8:{frequencies:[261.6255653006,279.86396690685,314.13668154225,336.03572815422,366.44956000397,391.99543598175,419.32216217931,448.5538823653,523.2511306012],description:"tet3a in 72-et"},miring1:{frequencies:[261.6255653006,285.29448470177,307.6953604706,387.15515639797,420.96788906714,523.2511306012],description:"Gamelan Miring from Serdang wetan, Tangerang. 1/1=309.5 Hz"},miring2:{frequencies:[261.6255653006,279.34865171253,304.66723527068,384.42070010042,412.69311132744,523.2511306012],description:"Gamelan Miring (Melog gender) from Serdang wetan"},misca:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,348.83408706747,392.4383479509,412.06026534844,433.74764773521,457.84473927605,523.2511306012],description:"21/20 x 20/19 x 19/18=7/6 7/6 x 8/7=4/3"},miscb:{frequencies:[261.6255653006,269.80136421624,278.50463402967,319.76457981184,348.83408706747,392.4383479509,404.70204632437,417.75695104451,479.64686971777,523.2511306012],description:"33/32 x 32/31x 31/27=11/9 11/9 x 12/11=4/3"},miscc:{frequencies:[261.6255653006,276.00059636107,292.04714266113,310.07474405997,348.83408706747,392.4383479509,414.00089454161,438.0707139917,465.11211608996,523.2511306012],description:"96/91 x 91/86 x 86/54=32/27. 32/27 x 9/8=4/3."},miscd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,348.83408706747,392.4383479509,407.5321305644,423.83341578697,441.49314144476,523.2511306012],description:"27/26 x 26/25 x 25/24=9/8. 9/8 x 32/27=4/3."},misce:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,348.83408706747,392.4383479509,420.46965851882,452.81347840488,490.54793493862,523.2511306012],description:"15/14 x 14/13 x 13/12=5/4. 5/4 x 16/15= 4/3."},miscf:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,378.42269266694,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh1"},miscg:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh 2"},misch:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,490.54793493862,504.56359022259,523.2511306012],description:"SupraEnh 3"},misty:{frequencies:[261.6255653006,268.57642185399,270.57706033988,272.59260010205,274.62315370363,276.66883458144,284.01936005382,286.13503371773,288.26646546986,290.41377434565,292.57708030445,300.35025535204,302.58757688062,304.84156607104,307.11234355974,309.40003795144,311.70477168653,319.9861304005,322.36972224007,324.77106769218,327.19030275625,329.62755691287,338.38508739928,340.90573394089,343.44515491415,346.00349213972,348.58088853904,357.84197030948,360.50755209334,363.19298782427,365.89842747751,368.62402219236,378.41760905933,381.23645754858,384.07630597582,386.93730633346,389.81962065329,392.72340320054,403.157261366,406.16039889903,409.18590458221,412.23394976407,415.30469757995,426.33849458487,429.51431022199,432.71378016074,435.93708308397,439.18439906139,450.85263092877,454.21105352848,457.59449053401,461.00313090234,464.43716505707,476.77631130474,480.3278378528,483.9058226648,487.51045723915,491.14194572312,494.80048247871,507.94632001299,511.73003620658,515.54193450341,519.38223078906,523.2511306012],description:"Misty temperament, g=96.787939, p=400, 5-limit"},mistyschism:{frequencies:[261.6255653006,278.75251614148,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,418.12877421223,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Mistyschism scale 32805/32768 and 67108864/66430125"},mixed9_3:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,349.22823143301,391.99543598175,409.35055662695,427.47405410759,466.16376151809,523.2511306012],description:"A mixture of the hemiolic chromatic and diatonic genera, 75 + 75 + 150 + 200 c"},mixed9_4:{frequencies:[261.6255653006,271.89678302796,282.57123920205,305.19382000629,349.22823143301,391.99543598175,407.38487419079,423.37848741825,457.27406033445,523.2511306012],description:'Mixed enneatonic 4, each "tetrachord" contains 67 + 67 + 133 + 233 cents.'},mixed9_5:{frequencies:[261.6255653006,277.18263097687,293.66476791741,329.62755691287,349.22823143301,391.99543598175,415.30469757995,440,493.88330125613,523.2511306012],description:"A mixture of the intense chromatic genus and the permuted intense diatonic"},mixed9_6:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,349.22823143301,391.99543598175,415.30469757995,440,466.16376151809,523.2511306012],description:"Mixed 9-tonic 6, Mixture of Chromatic and Diatonic"},mixed9_7:{frequencies:[261.6255653006,277.18263097687,311.12698372208,329.62755691287,349.22823143301,391.99543598175,415.30469757995,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 7, Mixture of Chromatic and Diatonic"},mixed9_8:{frequencies:[261.6255653006,293.66476791741,311.12698372208,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 8, Mixture of Chromatic and Diatonic"},mixol_chrom:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,311.12229387098,319.76457981184,359.73515228832,411.12588832951,426.35277308246,434.39716502741,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,605.86973016981,622.24458774197,639.52915962369,719.47030457665,822.25177665903,852.70554616492,868.79433005482,885.50191332511,959.29373943553,1046.5022612024],description:"Mixolydian chromatic tonos"},mixol_chrom2:{frequencies:[261.6255653006,271.31540105247,281.75060878526,332.97799220076,366.27579142084,385.55346465352,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the chromatic genus"},mixol_chrominv:{frequencies:[261.6255653006,279.06726965397,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Mixolydian inverted"},mixol_diat:{frequencies:[261.6255653006,274.08392555301,287.78812183066,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,500.50108144463,523.2511306012,548.16785110602,575.57624366132,639.52915962369,677.14852195449,719.47030457665,767.43499154843,822.25177665903,885.50191332511,920.92198985811,959.29373943553,1001.00216288925,1046.5022612024],description:"Mixolydian diatonic tonos"},mixol_diat2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,348.83408706747,366.27579142084,406.97310157871,457.84473927605,523.2511306012],description:"Schlesinger's Mixolydian Harmonia, a subharmonic series though 13 from 28"},mixol_diatcon:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv2:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"Inverted Schlesinger's Mixolydian Harmonia, a harmonic series from 14 from 28"},mixol_enh:{frequencies:[261.6255653006,274.08392555301,287.78812183066,295.1673044417,299.00064605783,302.93486508491,348.83408706747,411.12588832951,418.60090448096,422.44127975143,426.35277308246,469.85815809087,523.2511306012,548.16785110602,575.57624366132,590.33460888341,598.00129211566,605.86973016981,697.66817413493,822.25177665903,837.20180896192,844.88255950285,852.70554616492,939.71631618175,1046.5022612024],description:"Mixolydian Enharmonic Tonos"},mixol_enh2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,332.97799220076,366.27579142084,375.66747838035,385.55346465352,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the enharmonic genus"},mixol_enhinv:{frequencies:[261.6255653006,270.34641747729,279.06726965397,373.75080757229,411.12588832951,420.46965851882,429.81342870813,523.2511306012],description:"A harmonic form of Schlesinger's Mixolydian inverted"},mixol_penta:{frequencies:[261.6255653006,269.32043486826,281.75060878526,332.97799220076,366.27579142084,381.53728273004,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the pentachromatic genus"},mixol_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,822.25177665903,885.50191332511,959.29373943553,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Mixolydian Tonos"},mixol_tri1:{frequencies:[261.6255653006,268.0066766494,274.70684356563,332.97799220076,366.27579142084,378.90599112501,392.4383479509,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the first trichromatic genus"},mixol_tri2:{frequencies:[261.6255653006,268.0066766494,281.75060878526,332.97799220076,366.27579142084,378.90599112501,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the second trichromatic genus"},mmmgeo1:{frequencies:[261.6255653006,291.52662303231,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo2:{frequencies:[261.6255653006,295.05751399041,323.4477810403,352.62279726972,392.9238840789,430.73079539701,485.77193724523,529.58860866211],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo3a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,477.32335087626,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4b:{frequencies:[261.6255653006,295.05751399041,323.4477810403,348.40303271111,392.9238840789,430.73079539701,485.77193724523,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmswap:{frequencies:[261.6255653006,251.16054268858,294.32876096318,282.55561052465,313.95067836072,348.83408706747,353.19451315581,392.4383479509,376.74081403286,418.60090448096,423.83341578697,470.92601754108,523.2511306012],description:"Swapping major and minor in 5-limit JI"},mokhalif:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,425.01198472693,477.05982293263,523.2511306012],description:"Iranian mode Mokhalif from C"},montvallon:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Montvallon's Monochord, Nouveau sisteme de musique (1742)"},monzismic:{frequencies:[261.6255653006,265.20988799749,268.52946324281,272.20837072565,275.61554447717,279.39153269358,282.88861654172,286.76424730356,290.69297498385,294.33151655947,298.3639173457,302.09847446042,306.23728412706,310.07039048391,314.31841699833,318.25267316085,322.61279858837,327.03265671938,331.12605620426,335.66254762155,339.86396564906,344.52016812641,348.83245514045,353.61152766937,358.03760933268,362.94279426564,367.48567344471,372.52029869489,377.62390147213,382.35053879638,387.58881783384,392.44018387738,397.81669307529,402.79607923799,408.31446627855,413.42525081527,419.08925963743,424.33490995001,430.14838328955,436.04150237937,441.49934027584,447.54796975207,453.14983163098,459.35807517454,465.10776160818,471.47983118983,477.38124304179,483.92146177974,489.97860285142,496.69140794435,503.49617981289,509.7983334288,516.78267280423,523.2511306012],description:"Monzismic temperament, g=249.018448, 5-limit"},sevengroups:{frequencies:[261.6255653006,261.6255653006,275.62199471997,265.19499215873,270.69536599394,266.7406479561],description:"Here are some suggestions for a logical system encompassing intervals into seven broad groups: skhisma, kleisma, comma,"},"monzo-sym-11":{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,285.40970760065,286.15296204753,287.78812183066,294.32876096318,299.00064605783,304.4370214407,305.22982618403,313.95067836072,314.76825825228,327.03195662575,332.97799220076,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,411.12588832951,418.60090448096,434.91003062957,436.04260883433,448.50096908674,449.66894036041,457.84473927605,465.11211608996,475.68284600109,478.40103369253,479.64686971777,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Monzo symmetrical system: 11-limit"},"monzo-sym-5":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 5-limit"},"monzo-sym-7":{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 7-limit"},monzo_sumerian_2place12:{frequencies:[261.6255653006,277.17835052447,293.68632213351,311.15032543183,329.66469551353,349.22211163595,369.93402791915,391.94841243536,415.27867508032,439.91220695103,466.03267445926,493.6331420766,523.2511306012],description:"Monzo - most accurate 2-place sexagesimal 12-tET approximation"},monzo_sumerian_simp12:{frequencies:[261.6255653006,277.34158865788,293.41184893525,310.84225580269,329.78012432849,348.83408706747,370.22485655745,392.4383479509,415.27867508032,440.11777340288,466.26338370404,493.6331420766,523.2511306012],description:"Monzo - simplified 2-place sexagesimal 12-tET approximation"},morgan:{frequencies:[261.6255653006,277.18263097687,294.07958763262,310.86358783941,330.18637907377,349.03110370139,370.30791823326,392.32757291716,415.07027187895,440.74593809176,465.76911360306,494.58094207912,523.2511306012],description:"Augustus de Morgan's temperament (1843)"},"mos11-34":{frequencies:[261.6255653006,272.51337835337,301.75671459889,314.3146261019,348.04364484358,362.52783176564,377.61479489998,418.13653788176,435.53771116377,453.66305442345,502.34551296122,523.2511306012],description:"Wilson 11 of 34-tET, G=9, Chain of minor & major thirds with Kleismatic fusion"},"mos12-17":{frequencies:[261.6255653006,272.51337835337,283.85429714132,307.97166902637,320.78822215662,348.04364484358,362.52783176564,377.61479489998,409.69842558521,426.7484383229,463.0066556268,482.27514684959,523.2511306012],description:"MOS 12 of 17, generator 7"},"mos12-22":{frequencies:[261.6255653006,287.56082683758,296.76515515861,326.18384711731,336.62443200122,347.39920007397,381.83730669135,394.05926325844,433.12283887627,446.9863572706,491.29666030217,507.02222283506,523.2511306012],description:"MOS 12 of 22, contains nearly just, recognizable diatonic, and pentatonic scales"},"mos13-22":{frequencies:[261.6255653006,278.64197723942,296.76515515861,316.06708432391,326.18384711731,347.39920007397,369.99442271164,381.83730669135,406.67242132093,433.12283887627,446.9863572706,476.05883716226,507.02222283506,523.2511306012],description:"MOS 13 of 22, contains 5 and 9 tone MOS as well. G=5 or 17"},"mos15-22":{frequencies:[261.6255653006,278.64197723942,287.56082683758,306.26409645618,316.06708432391,336.62443200122,347.39920007397,369.99442271164,381.83730669135,406.67242132093,419.68930726506,446.9863572706,461.29362042034,491.29666030217,507.02222283506,523.2511306012],description:"MOS 15 in 22, contains 7 and 8 tone MOS as well. G= 3 or 19"},moscow:{frequencies:[261.6255653006,277.4816141504,293.64820765919,311.48626315692,329.67368081467,349.7414907984,370.88289054572,392.4383479509,416.22242101754,440.4723112686,467.22939450183,494.51052097482,523.2511306012],description:"Charles E. Moscow's equal beating piano tuning (1895)"},mundeuc45:{frequencies:[261.6255653006,267.57160087561,269.80136421624,271.31540105247,274.70684356563,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,499.46698830115,504.56359022259,507.3950357345,513.90736041189,523.2511306012],description:"Euclidean reduced detempered Miracle[45] with Tenney tie-breaker"},musaqa:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Egyptian scale by Miha'il Musaqa"},musaqa_24:{frequencies:[261.6255653006,269.02051582234,276.67624041581,284.6011815168,292.80374147632,300.29158209195,310.07474405997,319.15917884888,328.55303549378,338.26335715633,348.29659232622,358.65845048745,369.35373924791,380.38618160659,391.75821216589,403.47075130695,415.52295665389,427.91195157543,440.63253103259,453.67684579974,467.03406698289,480.69003385373,494.62688932105,508.8227088795,523.2511306012],description:"from d'Erlanger vol.5, p.34, after Mih.a'il Mu^saqah, 1899, a Lebanese scholar"},myna23:{frequencies:[261.6255653006,267.85369360167,274.23008563259,291.58574485564,298.52709031489,305.63367799752,312.90944157785,320.35840837329,327.98470157359,348.7424193045,357.04440817535,365.54403007102,374.24598974517,383.15510395049,392.27630410488,417.10295228105,427.03229805648,437.19801690717,447.60573581317,458.26121570764,469.17035466565,498.86352554567,510.73922293119,522.89762727195],description:"23 notes of Myna temperament, 7-limit TOP tuning (Paul Erlich)"},"mystic-r":{frequencies:[261.6255653006,367.91095120397,465.11211608996,654.0639132515,872.08521766867,1177.3150438527],description:"Skriabin's mystic chord, op. 60 rationalised"},mystic:{frequencies:[261.6255653006,369.99442271164,466.16376151809,659.25511382574,880,1174.65907166964],description:"Skriabin's mystic chord, op. 60"},urmawi:{frequencies:[261.6255653006,294.32876096318,326.6631048533,348.83408706747,392.4383479509,441.49314144476,471.45776383774,523.2511306012],description:"al-Urmawi, one of twelve maqam rows. First tetrachord is Rast"},valentine:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,330.47439827444,348.83408706747,371.78369805875,392.4383479509,414.24047839262,440.63253103259,466.02053819169,495.71159741166,523.2511306012],description:"Robert Valentine, tuning with primes 3 & 19, TL 7-2-2002"},valentine2:{frequencies:[261.6255653006,286.10322937235,312.87102146627,349.87955533643,382.6142546815,418.41160951721,467.90420651233,511.68128147674,559.55413558945,625.74204293254,684.28641150324,748.30818586768,782.53142116911,855.74498969389,935.80841302466,1046.5022612024],description:"Robert Valentine, two octave 31-tET subset for guitar, TL 10-5-2002"},vallotti:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.6228209638,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Vallotti & Young scale (Vallotti version)"},vavoom:{frequencies:[164.81377845643,165.83014536684,167.75567809608,168.79018601865,170.75008918846,172.7327497266,173.79795102719,175.81600173949,176.90021569146,178.95428827501,180.05785630665,182.14859375797,184.26360775673,185.39991601304,187.55268266167,188.70927492235,190.90046811205,192.07770535997,194.30800987601,196.56421264146,197.77637683895,200.07285246365,201.3066535986,203.64411977036,206.00872855044,207.27913480479,209.68595147418,210.9790342774,213.42881100738,214.74497512464,217.23848121866,219.76094059848,221.11615343515,223.68363702025,225.06304018178,227.6763542391,229.0803795269,231.74034082302,234.43118684139,235.87686755635,238.61574610914,240.08723199411,242.87499909192,244.37274935352,247.21027763268,250.08075380295,251.62294163139,254.54465534315,256.1143694988,259.0882353168,260.68597011615,263.71291896434,266.77501515601,268.42015092639,271.53690502834,273.21140777811,276.38379544331,278.08818779989,281.31720045362,284.58370833477,286.33866758091,289.66348210637,291.44976709494,294.83392732599,296.65209720599,300.09666587055,303.58123106099,305.45334345815,309.00010579622,310.90563508986,314.51570836542,316.45525105281,320.12976356015,323.84694071013,325.84402686189,329.62755691286],description:"Vavoom temperament, g=111.875426, 5-limit"},veroli:{frequencies:[261.6255653006,276.87699530057,293.57148765354,310.97965314221,329.42008585855,349.28270065725,369.64409253099,391.93430587921,414.97617910427,439.79164309579,466.09106516521,493.49262474744,523.2511306012],description:"Claudio di Veroli's well temperament (1978)"},vertex_chrom:{frequencies:[261.6255653006,271.89678302796,317.17549194805,349.22823143301,391.99543598175,407.38487419079,448.5538823653,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 266.7 + 166.7 cents"},vertex_chrom2:{frequencies:[261.6255653006,274.52698453615,323.3415889232,349.22823143301,391.99543598175,411.32572372413,484.46499093218,523.2511306012],description:"A vertex tetrachord from Chapter 5, 83.3 + 283.3 + 133.3 cents"},vertex_chrom3:{frequencies:[261.6255653006,275.18850165466,324.90175210669,349.22823143301,391.99543598175,412.31687950427,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 287.5 + 125 cents"},vertex_chrom4:{frequencies:[261.6255653006,275.40936140075,325.42347822215,349.22823143301,391.99543598175,412.64779522483,487.58430040208,523.2511306012],description:"A vertex tetrachord from Chapter 5, 88.9 + 288.9 + 122.2 cents"},vertex_chrom5:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 133.3 + 266.7 + 100 cents"},vertex_diat:{frequencies:[261.6255653006,299.37379946195,323.3415889232,349.22823143301,391.99543598175,448.5538823653,484.46499932732,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 133.3 + 133.3 cents"},vertex_diat10:{frequencies:[261.6255653006,295.79278388132,324.90175210669,349.22823143301,391.99543598175,443.18842137843,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 162.5 + 125 cents"},vertex_diat11:{frequencies:[261.6255653006,295.79278388132,306.66641795878,349.22823143301,391.99543598175,443.18842137843,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 62.5 + 225 cents"},vertex_diat12:{frequencies:[261.6255653006,293.66476791741,315.65242990842,349.22823143301,391.99543598175,440,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 125 + 175 cents"},vertex_diat2:{frequencies:[261.6255653006,299.37379946195,329.62755691287,349.22823143301,391.99543598175,448.5538823653,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 166.7 + 100 cents"},vertex_diat3:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 225 + 200 cents"},vertex_diat4:{frequencies:[261.6255653006,297.93622032612,329.62755691287,349.22823143301,391.99543598175,446.39994737251,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 225 + 175 + 100 cents"},vertex_diat5:{frequencies:[261.6255653006,275.18850165466,315.65242990842,349.22823143301,391.99543598175,412.31687950427,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 237.5 + 175 cents"},vertex_diat7:{frequencies:[261.6255653006,293.66476791741,306.66641795878,349.22823143301,391.99543598175,440,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 75 + 225 cents"},vertex_diat8:{frequencies:[261.6255653006,277.18263097687,306.66641795878,349.22823143301,391.99543598175,415.30469757995,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 100 + 175 + 225 cents"},vertex_diat9:{frequencies:[261.6255653006,295.79278388132,320.24370022528,349.22823143301,391.99543598175,443.18842137843,479.82340237272,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 137.5 + 150 cents"},vertex_sdiat:{frequencies:[261.6255653006,275.18850165466,306.66641795878,349.22823143301,391.99543598175,412.31687950427,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 187.5 + 225 cents"},vertex_sdiat2:{frequencies:[261.6255653006,273.20871865617,302.26980244078,349.22823143301,391.99543598175,409.35055662695,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 175 + 250 cents"},vertex_sdiat3:{frequencies:[261.6255653006,265.43099677612,302.26980244078,349.22823143301,391.99543598175,397.69714089209,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 25 + 225 + 250 cents"},vertex_sdiat4:{frequencies:[261.6255653006,271.8968348557,302.26980244078,349.22823143301,391.99543598175,407.38495184466,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 183.3 + 250 cents"},vertex_sdiat5:{frequencies:[261.6255653006,299.37374239667,302.26980244078,349.22823143301,391.99543598175,448.55379686399,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.33 + 16.67 + 250 cents"},vicentino1:{frequencies:[261.6255653006,267.54129532085,273.59078691818,279.77706779472,286.10322937235,292.57243455474,295.8616864168,299.18791603519,305.95298478736,312.87102146627,319.94548489658,327.17991022208,330.85823737058,334.57791819083,342.14320575162,349.87955533643,357.79083283678,365.88099775759,374.15409293384,382.6142546815,391.26571058456,395.66452371628,400.11279059885,409.15991580663,418.41160951721,427.87249484695,437.54730686196,442.46644183113,447.44088028055,457.55816161244,467.90420651233,478.48419305869,489.30340830564,494.80441235385,500.36726155789,511.68128147674,523.2511306012],description:"Usual Archicembalo tuning, 31-tET plus D,E,G,A,B a 10th tone higher"},vicentino2:{frequencies:[261.6255653006,262.40966637115,273.59078691818,274.41074818102,279.77706779472,280.61556956011,292.57243455474,293.44928279173,305.95298478736,306.86993670158,312.87102146627,313.80870698104,327.17991022208,328.16047998243,342.14320575162,343.16862103779,349.87955533643,350.92815470883,365.88099775759,366.97755604579,374.15409293384,391.26571058456,392.4383479509,409.15991580663,410.38618254261,418.41160951721,419.66560148231,437.54730686196,438.85865161274,457.55816161244,458.92947695163,467.90420651233,469.30653196482,489.30340830564,490.7698679226,511.68128147674,523.2511306012],description:"Alternative Archicembalo tuning, lower 3 rows the same upper 3 rows 3/2 higher"},vicentino2q217:{frequencies:[261.6255653006,262.46259217279,273.59078691818,274.46609608433,279.77706779472,280.67216895906,292.57243455474,293.50847071582,305.95298478736,306.93183153514,312.87102146627,313.87199953275,327.17991022208,328.2266690608,342.14320575162,343.23783523487,349.87955533643,350.99893596542,365.88099775759,367.05157442308,374.15409293384,391.26571058456,392.51750150462,409.15991580663,410.46895395112,418.41160951721,419.7502468954,437.54730686196,438.9471656765,457.55816161244,459.02204178186,467.90420651233,469.40118981889,489.30340830564,490.86885203792,511.68128147674,523.2511306012],description:"Vicentino's second tuning, 217-tET version"},vicentino36:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,279.93529690293,280.80602334765,292.50627485027,293.41610276971,305.64177427204,306.59245933664,312.97717714283,313.95067836072,327.03195662575,328.04917632434,341.71789064962,349.91912034749,351.00752840096,365.63284274659,366.77012764335,374.40803131735,375.5726110527,391.22147055517,392.4383479509,408.78994578219,410.06146948999,418.60090448096,419.90294514449,437.39889945791,438.75941205608,457.04105505291,458.46266117889,468.01003810189,469.46576276783,489.02683710225,490.54793493862,510.98743222773,523.2511306012],description:"Vicentino's second tuning of 1555"},victor_eb:{frequencies:[261.6255653006,276.45300885359,293.16631378471,311.00963644582,328.52867116285,348.83408706747,368.60401198904,391.83966133014,414.6795130731,439.03603741286,465.77732204887,492.79300649794,523.2511306012],description:"Equal beating Victorian piano temperament, interpr. by Bill Bremmer (improved)"},victorian:{frequencies:[261.6255653006,276.5429423948,293.32570896007,310.76776326996,328.29744538229,349.22823143301,368.92737853004,391.99543598175,414.58565256441,438.73106346722,465.89457252293,492.17459484008,523.2511306012],description:"Form of Victorian temperament (1885)"},vitale1:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,457.84473927605,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Rami Vitale's 7-limit just scale"},vitale2:{frequencies:[261.6255653006,274.70684356563,294.32876096318,299.00064605783,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,448.50096908674,457.84473927605,470.92601754108,504.56359022259,523.2511306012],description:"Rami Vitale, inverse mode of vitale1"},vitale3:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,412.06026534844,420.46965851882,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Superset of several Byzantine scales by Rami Vitale, TL 29-Aug-2001"},vogel_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,310.07474405997,313.95067836072,321.55899383997,330.74639366397,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,413.43299207996,418.60090448096,428.74532511996,440.99519155196,465.11211608996,482.33849075995,496.11959049595,523.2511306012],description:"Martin Vogel's 21-tone Archytas system, see Divisions of the tetrachord"},vogelh_b:{frequencies:[261.6255653006,276.37000081643,292.73769384471,310.07474405997,327.54963108844,349.78078158391,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Harald Vogel's temperament, van Eeken organ in Bunschoten, Immanuelkerk, 1992"},vogelh_fisk:{frequencies:[261.6255653006,274.01856817608,292.73769384471,312.85332572834,327.54963108844,349.78078158391,366.49445363528,391.37619916626,409.75340805561,437.91808280662,467.82492621575,489.99465727995,523.2511306012],description:"Modified meantone tuning of Fisk organ in Memorial Church at Stanford"},vogelh_hb:{frequencies:[261.6255653006,276.50527247638,293.79744652436,312.85332572834,329.92547760025,349.78078158391,369.82037393809,392.08397832814,413.47189899094,440.29822362186,467.82492621575,494.44133512215,523.2511306012],description:"Harald Vogel hybrid meantone (1984)"},vogelh_jakobi:{frequencies:[261.6255653006,275.2485073924,292.86986732103,310.4251397446,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.87276088221,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Harald Vogel's temperament for the Schnitger organ in St. Jakobi, Hamburg"},volans:{frequencies:[261.6255653006,288.78654445823,322.09885310804,352.06379107796,388.6137256405,429.95038611107,482.60299106564,523.2511306012],description:"African scale according to Kevin Volans 1/1=G"},vong:{frequencies:[261.6255653006,287.78812183066,324.77656382143,353.19451315581,392.4383479509,431.68218274599,476.53227965466,523.2511306012],description:"Vong Co Dan Tranh scale, Vietnam"},"vries19-72":{frequencies:[261.6255653006,271.89678302796,282.57123920205,293.66476791741,305.19382000629,314.13668154225,326.46944327063,339.28638158975,352.60650301302,366.44956000397,377.18735172911,391.99543598175,407.38487419079,423.37848741825,452.89298412314,470.6732130613,489.15147723638,508.3551866238,523.2511306012],description:"Leo de Vries 19/72 Through-Transposing-Tonality 18 tone scale"},"vries35-72":{frequencies:[261.6255653006,320.24370022528,326.46944327063,332.81622067851,339.28638158975,345.88232658126,352.60650301302,359.46139971304,366.44956000397,448.5538823653,457.27406033445,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Leo de Vries 35/72 Through-Transposing-Tonality 17 tone scale"},"vries5-72":{frequencies:[261.6255653006,269.29177952703,274.52698453615,282.57123920205,288.06460709314,296.5055443788,302.26980244078,317.17549194805,332.81622067851,349.22823143301,366.44956000397,384.52011812375,403.48177901006,423.37848741825,444.25635547592,466.16376151809,489.15147723638,513.27277840175,523.2511306012],description:"Leo de Vries 5/72 Through-Transposing-Tonality 18 tone scale"},"vries6-31":{frequencies:[261.6255653006,292.57243455474,299.18791603519,334.57791819083,342.14320575162,382.6142546815,391.26571058456,437.54730686196,447.44088028055,500.36726155789,511.68128147674,523.2511306012],description:'Leo de Vries 6/31 TTT used in "For 31-tone organ" (1995)'},vulture:{frequencies:[261.6255653006,265.58852967049,269.02996542365,272.51599294435,276.04719319079,279.62414831161,283.24745441839,286.9177088442,290.63552324927,294.40151054717,298.21629835234,302.73351960911,306.6562716924,310.62985211059,314.65492307423,318.73214815075,322.86220682342,327.0457799678,331.28356479042,335.57625992643,339.9245807679,344.32924417279,349.54496173019,354.07428378691,358.66229781376,363.30976018416,368.01744541334,372.78612960355,377.61660747204,382.50967536449,387.46614872711,392.486844677,398.43202813578,403.59481739244,408.82450722915,414.12195980508,419.48805795853,424.92368633675,430.42975080549,436.00715908665,441.65684067409,447.37972696622,453.17677170128,460.0412514682,466.0023613576,472.04071122634,478.15730738573,484.35315820906,490.6292962557,496.98675620078,503.42659462849,509.94988192555,516.55769649554,523.2511306012],description:"Vulture temperament, g=475.542233, 5-limit"},walker_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:'Douglas Walker, 1977, for "out of the fathomless dark/into the limitless light'},walkerr_11:{frequencies:[261.6255653006,291.47537246454,299.00064605783,333.11471138804,341.71502406609,380.70252730062,390.53145607553,435.08860262928,484.72943438718,497.2441172906,510.08190181294,523.2511306012],description:'Robert Walker, "Seven to Pi" scale, TL 09-07-2002'},wauchope:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Symmetrical 7-limit JI whole-half step scale, Ken Wauchope"},wendell1:{frequencies:[261.6255653006,276.25045813601,293.35468319005,310.78176509232,328.42642049784,348.83408706747,369.47972269069,391.8804287311,414.37568699689,438.92294511207,466.17264740545,492.63963050051,523.2511306012],description:"Robert Wendell's Natural Synchronous well-temperament (2003)"},wendell1r:{frequencies:[261.6255653006,276.25560153172,293.36810129327,310.78755172318,328.43721515437,348.83408706747,369.49186704867,391.89926583958,414.38340229758,438.93945576706,466.18132758477,492.65582273156,523.2511306012],description:"Rational version of wendell1 by Gene Ward Smith"},wendell2:{frequencies:[261.6255653006,276.37223575148,293.46077701205,310.91876490958,328.50868755512,348.91469434159,369.57235851938,392.00856887742,414.55835341999,438.92345217603,466.37814713124,492.76314493882,523.2511306012],description:"Robert Wendell's Very Mild Synchronous well-temperament (2003)"},werck1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Werckmeister I (just intonation)"},werck3:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,491.65745674141,523.2511306012],description:"Andreas Werckmeister's temperament III (the most famous one, 1681)"},werck3_eb:{frequencies:[261.6255653006,275.62199471997,292.52927773082,310.07474405997,328.06371231954,348.83408706747,367.49599295996,391.41011079897,413.43299207996,437.41828331138,465.11211608996,492.10978071589,523.2511306012],description:"Werckmeister III equal beating version, 5/4 beats twice 3/2"},werck3_mod:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,490.82535372381,523.2511306012],description:"Modified Werckmeister III with B between E and F#, Nijsse (1997), organ Soest"},werck4:{frequencies:[261.6255653006,274.37997440822,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,390.66969766777,411.5699614066,437.52264545758,467.21778431035,489.99465727995,523.2511306012],description:"Andreas Werckmeister's temperament IV"},werck5:{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,328.88393162803,350.01785633742,369.99442271164,392.4383479509,413.43299207996,440,466.69047534984,493.32589719545,523.2511306012],description:"Andreas Werckmeister's temperament V"},werck6:{frequencies:[261.6255653006,275.69145590816,291.35574317567,310.77945938738,328.70904358281,348.83408706747,368.91086905696,391.43977709097,413.53718386224,438.27872477707,466.16918908107,493.06356537421,523.2511306012],description:`Andreas Werckmeister's "septenarius" tuning VI`},werck6_dup:{frequencies:[261.6255653006,275.62199471997,291.49363009634,310.67551062492,328.56569462012,348.83408706747,368.92162485303,391.67947347082,413.43299207996,438.08759304581,466.01326570444,492.84854168382,523.2511306012],description:"Andreas Werckmeister's VI in the interpretation by Dupont (1935)"},werck_cl5:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.97737261399,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.14811800305,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/5-comma"},werck_cl6:{frequencies:[261.6255653006,275.36250599118,293.11251278827,310.35057963607,328.38895179964,349.55706816887,367.91095120397,391.62667645325,413.31226430431,438.75941205608,466.0760911248,491.56462836305,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/6-comma"},werck_puzzle:{frequencies:[261.6255653006,272.52663052146,291.60349465796,306.59245933664,327.03195662575,347.47145391486,365.18568489875,389.71308164569,408.78994578219,436.04260883433,461.93263873387,490.54793493862,523.2511306012],description:"From Hypomnemata Musica, 1697, p. 49, 1/1=192, fifths tempered superparticular"},white:{frequencies:[261.6255653006,275.93321340298,289.72987407313,294.32876096318,305.22982618403,310.42486507835,327.03195662575,331.11985608357,343.38355445704,348.83408706747,367.91095120397,386.30649876417,392.4383479509,406.97310157871,413.89982010446,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"Justin White's 22-tone scale based on Al-Farabi's tetrachord"},wicks:{frequencies:[261.6255653006,276.65728054629,293.45376109391,310.36444075595,329.26048109616,348.28499607284,369.54304125029,391.93835601961,414.48592121967,439.68064187634,465.04666232412,493.39072329352,523.2511306012],description:"Mark Wicks' equal beating temperament for organs (1887)"},wier_cl:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Danny Wier, ClownTone (2003)"},wiesse:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Von Wiesse's 1/2 Pyth. comma tuning"},wilson1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 19-tone Scott scale (1976)"},wilson11:{frequencies:[261.6255653006,271.31540105247,277.4816601673,291.35574317567,305.22982618403,312.16686768822,325.57848126297,332.97799220076,348.83408706747,366.27579142084,374.60024122586,392.4383479509,406.97310157871,416.22249025095,437.0336147635,457.84473927605,468.25030153232,488.36772189445,499.46698830115,523.2511306012],description:"Wilson 11-limit 19-tone scale, 1977"},wilson1t:{frequencies:[261.6255653006,273.34666024156,279.64601698606,292.92954243175,306.05308604033,313.10617410217,327.13365148064,334.67254769546,349.66622272551,366.27579142084,374.71672979763,391.50442319155,409.04422481132,418.47077311482,437.21869500104,457.98711402938,468.54156606881,489.53271107931,500.81414097667,523.2511306012],description:"Wilson's Scott scale, wilson1, in minimax minerva tempering"},wilson2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,418.60090448096,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 19-tone, 1975"},wilson3:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Wilson 19-tone"},wilson5:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 22-tone 5-limit scale"},wilson7:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson's 22-tone 7-limit 'marimba' scale"},wilson7_2:{frequencies:[261.6255653006,263.718569823,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,329.64821227876,343.38355445704,353.19451315581,366.27579142084,376.74081403286,392.4383479509,408.78994578219,412.06026534844,436.04260883433,439.53094970501,457.84473927605,470.92601754108,490.54793493862,494.47231841813,523.2511306012],description:"Wilson 7-limit scale"},wilson7_3:{frequencies:[261.6255653006,267.90457886781,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson 7-limit scale"},wilson7_4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,387.59343007496,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 7-limit 22-tone scale XH 3, 1975"},wilson_17:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,310.42486507835,327.03195662575,331.11985608357,348.83408706747,367.91095120397,372.50983809402,392.4383479509,413.89982010446,436.04260883433,441.49314144476,465.11211608996,490.54793493862,496.67978412536,523.2511306012],description:"Wilson's 17-tone 5-limit scale"},wilson_31:{frequencies:[261.6255653006,265.7783520514,271.31540105247,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.08592105074,327.03195662575,332.22294006425,339.14425131559,348.83408706747,354.37113606854,361.75386806997,372.08969287196,380.54627680087,392.4383479509,398.6675280771,406.97310157871,418.60090448096,428.11456140098,441.49314144476,448.50096908674,457.84473927605,470.92601754108,481.6288815761,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Wilson 11-limit 31-tone scale XH 3, 1975"},wilson_41:{frequencies:[261.6255653006,265.7783520514,271.31540105247,275.62199471997,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,321.08592105074,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.37113606854,361.75386806997,367.49599295996,372.08969287196,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,413.43299207996,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,481.6288815761,490.54793493862,496.67978412536,504.56359022259,515.07533168556,523.2511306012],description:"Wilson 11-limit 41-tone scale XH 3, 1975"},wilson_alessandro:{frequencies:[261.6255653006,265.58571790036,269.80136421624,270.50397193556,275.93321340298,278.232656848,284.55612632182,286.15296204753,288.53757006459,294.32876096318,295.09524211152,303.52653474327,304.3169684275,305.22982618403,309.14739649778,314.76825825228,321.92208230347,324.60476632267,327.03195662575,331.98214737546,337.2517052703,340.06213614756,343.38355445704,347.79082106,351.18772614924,354.11429053382,359.73515228832,365.180362113,367.91095120397,370.97687579734,379.40816842909,386.30649876417,391.2646736925,392.4383479509,393.46032281536,404.70204632437,405.75595790334,413.89982010446,417.348985272,419.69101100305,429.2294430713,432.80635509689,441.49314144476,442.64286316727,449.66894036041,456.47545264125,457.84473927605,463.72109474667,472.15238737843,482.88312345521,486.907149484,490.54793493862,494.63583439645,505.87755790546,515.07533168556,521.68623159,523.2511306012],description:"D'Alessandro, genus [3 3 3 5 7 11 11] plus 8 pigtails, XH 12, 1989"},wilson_bag:{frequencies:[261.6255653006,294.32876096318,318.85615771011,349.51540364377,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Erv's bagpipe, mar '97, after Theodore Podnos (37-39)."},wilson_class:{frequencies:[261.6255653006,272.52663052146,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,381.53728273004,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Class Scale, Erv Wilson, 9 july 1967"},wilson_dia1:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,362.25078272391,371.78369805875,381.83190611439,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycles, tetrachordal form"},wilson_dia2:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle, conjunctive form"},wilson_dia3:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycle on 3/2"},wilson_dia4:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,381.83190611439,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle on 4/3"},wilson_duo:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 'duovigene'"},wilson_enh:{frequencies:[261.6255653006,264.37951861955,279.06726965397,348.83408706747,392.4383479509,396.56927792933,418.60090448096,523.2511306012],description:"Wilson's Enharmonic & 3rd new Enharmonic on Hofmann's list of superp. 4chords"},wilson_enh2:{frequencies:[261.6255653006,265.7783520514,275.62199471997,348.83408706747,392.4383479509,398.6675280771,413.43299207996,523.2511306012],description:"Wilson's 81/64 Enharmonic, a strong division of the 256/243 pyknon"},wilson_facet:{frequencies:[261.6255653006,271.31540105247,274.70684356563,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,366.27579142084,387.59343007496,392.4383479509,406.97310157871,412.06026534844,436.04260883433,452.19233508746,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson study in 'conjunct facets', Hexany based"},wilson_gh1:{frequencies:[261.6255653006,286.54684077898,313.84200313831,343.73718179912,398.2573899082,436.19359890902,477.74343791599,523.2511306012],description:"Golden Horagram nr.1: 1phi+0 / 7phi+1"},wilson_gh11:{frequencies:[261.6255653006,294.51148904212,316.87124012705,356.70145865606,383.78276711707,432.02365977685,464.82353976398,523.2511306012],description:"Golden Horagram nr.11: 1phi+0 / 3phi+1"},wilson_gh2:{frequencies:[261.6255653006,290.51361927671,322.59142140135,358.21117585067,382.16527586729,424.3630293795,471.22015545621,523.2511306012],description:"Golden Horagram nr.2: 1phi+0 / 6phi+1"},wilson_gh50:{frequencies:[261.6255653006,270.80964219588,280.31611759965,306.81496952381,317.58537244461,347.60736272384,359.80973785756,372.44046183271,407.64801512355,421.95805149354,461.8466031062,478.05922145,523.2511306012],description:"Golden Horagram nr.50: 7phi+2 / 17phi+5"},wilson_helix:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Wilson's Helix Song, see David Rosenthal, Helix Song, XH 7&8, 1979. Also Secor, 1964"},wilson_hypenh:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Wilson's Hyperenharmonic, this genus has a CI of 9/7"},wilson_l1:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,404.70204632437,419.69101100305,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l2:{frequencies:[261.6255653006,267.07609791103,279.79400733536,287.78812183066,294.32876096318,305.22982618403,314.76825825228,327.03195662575,335.75280880244,348.83408706747,359.73515228832,373.05867644715,381.53728273004,392.4383479509,411.12588832951,419.69101100305,436.04260883433,447.67041173658,457.84473927605,479.64686971777,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l3:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 11-limit scale"},wilson_l4:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l5:{frequencies:[261.6255653006,267.07609791103,279.79400733536,285.40970760065,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,479.64686971777,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l6:{frequencies:[261.6255653006,267.57160087561,277.4816601673,285.40970760065,294.32876096318,305.22982618403,312.16686768822,327.03195662575,332.97799220076,348.83408706747,356.76213450082,369.97554688974,381.53728273004,392.4383479509,406.97310157871,416.22249025095,436.04260883433,443.97065626768,457.84473927605,475.68284600109,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 1 3 7 9 11 15 eikosany plus 9/8 and tritone. Used Stearns: Jewel"},window:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,297.67175429757,306.59245933664,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,446.50763144636,459.88868900496,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Window lattice"},wonder1:{frequencies:[261.6255653006,272.72256190885,277.86237426839,283.09905309511,288.43442562998,293.8703485525,299.4087202614,312.10830899518,317.99039712482,323.98334274799,330.08923137594,336.31019538088,342.64839962317,357.18202566262,363.91358676728,370.77201292014,377.75969724053,384.87907140314,392.13262172187,408.76514672187,416.46885901676,424.31776026786,432.3145818485,440.46211650535,448.76319953449,467.79774494453,476.61400354229,485.59641603135,494.74811665626,504.07229015717,513.57219283465,523.2511306012],description:"Wonder Scale, gen=~233.54 cents, 8/7+1029/1024^7/25, LS 12:14:18:21, M.Schulter"},wonder36:{frequencies:[261.6255653006,271.89678302796,277.18263097687,282.57123920205,288.06460709314,293.66476791741,299.37379946195,311.12698372208,317.17549194805,323.3415889232,329.62755691287,336.03572815422,342.56848033562,356.01745236555,362.93866220634,369.99442271164,377.18735172911,384.52011812375,391.99543598175,407.38487419079,415.30469757995,423.37848741825,431.60923940535,440,448.5538823653,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Wonder Scale, 36-tET version"},wronski:{frequencies:[261.6255653006,277.97716313189,294.32876096318,308.86351459099,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,463.29527188648,494.18162334558,523.2511306012],description:`Wronski's scale, from Jocelyn Godwin, "Music and the Occult", p. 105.`},wurschmidt:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,331.11985608357,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's normalised 12-tone system"},wurschmidt1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-1 19-tone scale"},wurschmidt2:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-2 19-tone scale"},wurschmidt_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system"},wurschmidt_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,372.08969287196,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system with alternative tritone"},wurschmidt_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,319.36714514233,321.48549464138,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,425.82286018978,428.6473261885,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 53-tone system"},wurschmidt_temp:{frequencies:[261.6255653006,270.6876810201,276.46178051834,282.35904862511,288.38211267756,294.53365605714,300.81641938515,307.23320174366,313.78686192261,320.48031969341,327.31655710978,338.6540596739,345.87796520471,353.25596548096,360.79134753214,368.48746850413,376.34775715481,384.37571538166,392.57491978195,400.94902556208,409.5017589506,423.68596790742,432.72370810117,441.95423435346,451.38165902684,461.01018486849,470.84409628664,480.88777706987,491.14570185547,501.62244073019,512.32266126632,523.2511306012],description:"W\xEF\xBF\xBDrschmidt temperament, 5-limit, g=387.744375, 5-limit"},"t-side":{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Tau-on-Side"},"t-side2":{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Tau-on-Side opposite"},tagawa_55:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Rick Tagawa, 17-limit diamond subset with good 72-tET approximation, 2003"},tamil:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,372.50983809402,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Possible Tamil sruti scale. Alternative 11th sruti is 45/32 or 64/45"},tamil_vi:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale in Tamil music, Vidyasankar Sundaresan"},tamil_vi2:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.49599295996,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale with 1024/729 tritone"},tanaka:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"26-note choice system of Shoh\xEF\xBF\xBD Tanaka, Studien i.G.d. reinen Stimmung (1890)"},tanbur:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,306.66732929008,314.73752216614,323.24394168414,332.22294006425,341.71502406609,351.76546595039,523.2511306012],description:"Sub-40 tanbur scale"},tansur:{frequencies:[261.6255653006,275.71279889585,293.19126194179,310.07474405997,328.21516866261,348.83408706747,367.61706537823,391.78834765065,413.56919813705,438.48689188122,465.11211608996,491.022754507,523.2511306012],description:"William Tans'ur temperament from A New Musical Grammar (1746) p. 73"},tartini_7:{frequencies:[261.6255653006,294.32876096318,313.95067836072,367.91095120397,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Tartini (1754) with 2 neochromatic tetrachords, 1/1=d, Minor Gipsy (Slovakia)"},taylor_g:{frequencies:[261.6255653006,274.70684356563,287.78812183066,294.32876096318,313.95067836072,353.19451315581,366.27579142084,392.4383479509,412.06026534844,418.60090448096,431.68218274599,470.92601754108,523.2511306012],description:"Gregory Taylor's Dutch train ride scale based on pelog_schmidt"},taylor_n:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,348.83408706747,367.9112241576,391.33200541501,413.90012676351,437.76975193523,465.63764214343,491.10256480205,523.2511306012],description:"Nigel Taylor's Circulating Balanced temperament (20th cent.)"},telemann:{frequencies:[261.6255653006,264.94361147373,271.70648167539,275.15237829755,278.64197723942,282.17583275232,289.3785657319,293.0485888979,296.76515515861,300.52885648597,304.34029066685,308.20006306951,312.10878854255,316.06708432391,324.13491490251,328.24573110938,332.40868242763,336.62443200122,345.21700307457,349.59519124833,354.02890545793,363.06573983159,367.67029324081,372.33324354561,377.05533136015,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,417.05301810033,422.34226102699,433.12283887627,438.61588607285,444.17860098504,449.81186203693,461.29362042034,467.14394139401,473.06846134744,485.14386048744,491.29666030217,497.52749252881,503.83734680745,516.69814597997,523.2511306012],description:"G.Ph. Telemann (1767). 55-tET interpretation of Klang- und Intervallen-Tafel"},telemann_28:{frequencies:[261.6255653006,264.94361147373,275.15237829755,278.64197723942,293.0485888979,296.76515515861,308.20006306951,312.10878854255,328.24573110938,332.40868242763,345.21700307457,349.59519124833,354.02890545793,367.67029324081,372.33324354561,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,438.61588607285,444.17860098504,461.29362042034,467.14394139401,473.06846134744,491.29666030217,497.52749252881,516.69814597997,523.2511306012],description:"Telemann's tuning as described on Sorge's monochord, 1746, 1748, 1749"},"temes-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,378.62819763364,399.72843132859,423.31905787312,446.91000942727,523.2511306012],description:"Temes' 5-tone Phi scale mixed with its octave inverse"},"temes-ur":{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312],description:"Temes' Ur 5-tone phi scale"},temes:{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312,495.63057556553,523.2511306012,554.13187513888,585.01259700885,684.94462120932],description:"Temes' 5-tone Phi scale / 2 cycle"},"temes2-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,399.72843132859,423.31905787312,468.0102705885,495.63057556553,523.2511306012,552.41124604023,585.01259700885,646.77396536561,684.94438778203,757.25639526728,799.45686265718,846.63811574624,893.82001885454,1046.5022612024],description:"Temes' 2 cycle Phi scale mixed with its 4/1 inverse"},temp10coh:{frequencies:[261.6255653006,279.06726965397,299.10339764541,320.57805584394,343.5945271479,368.2635494613,394.70435354475,423.05284121745,453.57582505819,488.36772189445,523.2511306012],description:"Differential coherent 10-tone scale, OdC, 2003"},temp10ebss:{frequencies:[261.6255653006,280.43397904206,300.58585223371,322.17714382919,345.31067040124,370.09659148016,396.65293718743,425.1061627261,455.59176355181,488.25490599611,523.2511306012],description:`Cycle of 10 equal "beating" 15/14's`},temp11ebst:{frequencies:[261.6255653006,278.68301283272,296.80966039395,316.07252488244,336.70993118161,358.64093492832,381.94662420398,406.71316497313,433.24697173408,461.44397806515,491.40843569917,523.2511306012],description:"Cycle of 11 equal beating 9/7's"},temp12coh3:{frequencies:[261.6255653006,279.8393060116,294.68135606466,311.32770136359,332.21069717879,353.56473801237,370.2386298036,397.61708850394,418.97112933752,440.1984563065,471.2874275201,496.80305467842,523.2511306012],description:"Differential coherent scale, interval=3, OdC, 2003"},temp12ebf:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.5354160273,349.23174343306,369.98176018664,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating temperament tuned by The Best Factory Tuners (1840)"},temp12ebf4:{frequencies:[261.6255653006,276.98801737971,293.51517393789,310.79793252689,329.39098365485,348.83408706747,369.75126958642,391.78747833067,414.83115644933,439.62189128662,465.54602917011,493.43560586205,523.2511306012],description:"Eleven equal beating fifths and just fourth"},temp12ebfo:{frequencies:[261.6255653006,277.20265787963,293.64844512428,311.16011036869,329.64835309433,349.33484978517,370.11921182839,392.06266066657,415.42830219132,440.09698059047,466.36447845344,494.0968438935,523.62658899088],description:"Equal beating fifths and fifth beats twice octave at C"},temp12ebfp:{frequencies:[261.6255653006,277.75307788644,293.77513637875,310.82931496301,329.94340332986,349.12935317325,370.63270249518,391.99544730302,416.18671544528,440.21980402758,465.80107112682,494.47220378931,523.2511306012],description:"All fifths except G#-Eb beat same as 700 c. C-G"},temp12ebfr:{frequencies:[261.6255653006,277.1880780098,293.58315312731,311.09097992515,329.53543943235,349.23174457993,369.98176152553,391.84186168221,415.185630746,439.77824342227,466.03998361904,493.70667287983,523.2511306012],description:"Exact values of equal beating temperament of Best Factory Tuners (1840)"},temp12ep:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767],description:"Pythagorean comma distributed equally over octave and fifth: 1/19-Pyth comma"},temp12fo1o:{frequencies:[261.6255653006,277.20349049726,293.7089710611,311.19723286579,329.72679517909,349.35966199273,370.1615231373,392.20198585541,415.5548023839,440.29810917508,466.51470234738,494.29230838881,523.72386870485],description:"Fifth beats same octave opposite"},temp12fo2o:{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338107372,392.13011658806,415.46777521802,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"Fifth beats twice octave opposite"},temp12p10:{frequencies:[261.6255653006,277.12003622197,293.53214922797,310.91625060765,329.32990524605,349.3071136959,369.493381814,391.90691363044,415.11714643072,439.70197837153,465.74281849401,493.32589719545,523.2511306012],description:"1/10-Pyth. comma well temperament"},temp12p6:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Modified 1/6-Pyth. comma temperament"},temp12p8:{frequencies:[261.6255653006,277.02617059261,293.33333347996,310.60041853231,328.88393162803,349.42547049952,369.36822764145,391.77416758435,414.83597850347,439.25532436715,465.90062756558,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament"},temp12p8a:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,349.42547049952,368.74309237173,391.77416758435,414.83597850347,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament, consecutive just fifths"},temp12s17:{frequencies:[261.6255653006,275.41266079541,292.61316553779,309.9334225479,327.2710181906,348.78108411875,367.16108497228,391.29294726693,413.18177371806,437.63868343995,464.97078294553,490.98112850332,523.2511306012],description:'4/17th synt. comma "well"-temperament. OdC 1999'},temp12s3:{frequencies:[261.6255653006,275.79485124716,293.07576161921,310.19140758515,326.99095182327,348.87783040382,367.77258074571,390.81668391305,413.640406907,437.79703699716,465.22877230071,490.42492909292,523.2511306012],description:'1/3 synt. comma "well"-temperament. OdC 1999'},temp12septendec:{frequencies:[261.6255653006,277.01530443593,293.31032234393,310.5638707171,328.83233370046,348.17541215342,368.65631875068,390.34198455955,413.30334035457,437.61515184999,463.35732874365,494.18162334558,523.2511306012],description:"Scale with 18/17 steps"},temp12w2b:{frequencies:[261.6255653006,276.80621914251,293.38957467182,310.9374037046,329.12408537692,349.33498699812,369.32540968366,391.68699838314,414.83365420901,439.33301386008,466.03043161756,492.93477894539,523.2511306012],description:"The fifths on white keys beat twice the amount of fifths on black keys"},temp15coh:{frequencies:[261.6255653006,273.98642352939,286.93424587686,300.52595924487,314.76156220527,329.6715499436,345.28562122078,360.48992106995,377.61407292725,395.54746439596,414.33033691342,434.93480826785,455.53927928881,477.11963158959,499.65025190386,523.2511306012],description:"Differential coherent 15-tone scale, OdC, 2003"},temp15ebmt:{frequencies:[261.6255653006,274.13344448045,287.10161388969,300.54701305042,315.02372625978,330.03318193885,345.59498492211,361.72946206059,379.10151766291,397.1128647533,415.78702800292,435.14840215297,455.99486887387,477.60848441971,500.01748339385,523.2511306012],description:"Cycle of 15 equal beating minor thirds"},temp15ebsi:{frequencies:[261.6255653006,274.09084013406,287.01483652929,300.41443756554,314.84183942382,329.80016763418,345.30896502873,361.38848559819,378.7013656391,396.65136316555,415.2619179078,434.55734100747,455.33280077531,476.87279531786,499.20546063174,523.2511306012],description:"Cycle of 15 equal beating major sixths"},temp15mt:{frequencies:[261.6255653006,272.10155294862,290.46827626332,302.09918118188,314.19580976213,326.77681046955,348.83408706747,362.80207077951,377.32935907335,392.4383479509,418.92774655891,435.70241417719,453.14877154631,471.29371440761,503.10581234929,523.2511306012],description:"Cycle of 15 minor thirds, Petr Parizek"},temp16d3:{frequencies:[261.6255653006,272.52663052146,287.69189096389,299.67905363019,312.16568143019,325.17258353382,338.72144179457,352.83483584176,372.46899992671,387.98854005196,404.15472995283,420.99451113006,438.53594735503,462.93911228358,482.22824196207,502.32108537715,523.2511306012],description:"Cycle of 16 thirds tempered by 1/3 small diesis"},temp16d4:{frequencies:[261.6255653006,271.36369423603,291.82218013836,302.68427617679,313.95067836072,325.63643364742,337.75715313333,350.32902355546,376.74081403286,390.76372105392,405.30858212106,420.39482899491,436.04260883433,468.91646607712,486.37029938793,504.47379566792,523.2511306012],description:"Cycle of 16 thirds tempered by 1/4 small diesis"},temp16ebs:{frequencies:[261.6255653006,273.35566334732,285.38860666159,297.73221513295,311.13803992337,324.88997598926,338.996955196,354.31789928052,370.0343963911,386.15666093499,403.66631166114,421.62802297921,440.05346707662,460.0644954801,480.59216613216,501.64981691394,523.2511306012],description:"Cycle of 16 equal beating sevenths"},temp16ebt:{frequencies:[261.6255653006,273.54317752885,285.74681450472,298.24333695649,311.03977535434,324.14332902314,339.04034606654,354.29488987405,369.91554384313,385.91109319424,402.29053605603,420.91180538217,439.97998583037,459.50580330844,479.50024102158,499.97454326842,523.2511306012],description:"Cycle of 16 equal beating thirds"},temp16l4:{frequencies:[261.6255653006,278.81939890042,286.59644689091,305.43134787805,313.95067836072,322.70763593891,343.91573686494,353.50850469302,376.74081403286,387.24916379762,412.69888495295,424.21020636659,436.04260883433,464.69899736225,477.66074674968,509.05224558146,523.2511306012],description:"Cycle of 16 fifths tempered by 1/4 major limma"},temp17c10:{frequencies:[261.6255653006,278.13248184697,287.25399162485,296.67464640038,315.39293803189,325.73642523995,336.41913481987,347.45218787195,369.37422084479,381.48805431277,393.9991677018,418.85802036446,432.59470262079,446.78188702878,474.97099505857,490.54793493862,506.63572944675,523.2511306012],description:'Cycle of 17 fifths tempered by 1/10 of "17-tET comma"'},temp17c11:{frequencies:[261.6255653006,276.93071634298,286.5293181416,296.46061382736,313.80362259461,324.68026371274,335.93389640617,347.57758745223,367.91095120397,380.66298908833,393.8570200719,416.89773925535,431.34769064645,446.29848691039,472.40704302301,488.78098359819,505.72245578392,523.2511306012],description:'Cycle of 17 fifths tempered by 1/11 of "17-tET comma"'},temp17c12:{frequencies:[261.6255653006,275.93321340298,285.92682111936,296.28237159295,312.48531442823,323.80274674587,335.53006800342,347.68212334757,366.69599021774,379.97679689512,393.73860099464,415.27118158544,430.3112595477,445.8960513142,470.2809925818,487.31338757149,504.96265307831,523.2511306012],description:'Cycle of 17 fifths tempered by 1/12 of "17-tET comma"'},temp17c13:{frequencies:[261.6255653006,275.09197878886,285.41800532755,296.13163442011,311.37414725128,323.06208421743,335.18874504319,347.77059980835,365.67107999768,379.3971387881,393.63842979584,413.89982010446,429.43622376713,445.55581352332,468.48950048969,486.07501593832,504.32063522708,523.2511306012],description:'Cycle of 17 fifths tempered by 1/13 of "17-tET comma"'},temp17c14:{frequencies:[261.6255653006,274.37296298479,284.98259752889,296.00249241327,310.42486507835,322.42857866752,334.89645942743,347.84645641687,364.79486552165,378.90099378095,393.5525871037,412.72797362103,428.68761089217,445.26438593469,466.95936897503,485.01606158014,503.77098227424,523.2511306012],description:'Cycle of 17 fifths tempered by 1/14 of "17-tET comma"'},temp17c15:{frequencies:[261.6255653006,273.75133628611,284.60578240525,295.8906154666,309.60449456672,321.88054534371,334.64335075548,347.91221098893,364.0371787025,378.47152629398,393.47820661021,411.71505587788,428.03986711385,445.01196937812,465.63729761752,484.10016650719,503.29510175355,523.2511306012],description:'Cycle of 17 fifths tempered by 1/15 of "17-tET comma"'},temp17ebf:{frequencies:[261.6255653006,272.44226039746,283.83762774933,295.84262353625,308.01140541539,320.83119298602,334.33681303028,348.02669374128,362.44895565855,377.64277622383,393.64943714798,409.87448211667,426.96753159265,444.97502525992,463.22819966593,482.45788080796,502.71631088044,523.2511306012],description:"Cycle of 17 equal beating fifths"},temp17ebs:{frequencies:[261.6255653006,272.25303191034,284.09302419378,294.99486987374,307.14054534497,320.67196534338,333.1312181383,347.01199086095,362.47647062671,376.71561430061,392.57935523584,410.25304697073,426.52635565248,444.65634289229,464.854847056,483.45291583119,504.17290303449,523.2511306012],description:"Cycle of 17 equal beating sevenths"},temp17fo2:{frequencies:[261.6255653006,272.49443630436,283.81483782984,295.60553136463,307.88605111976,320.67674980257,333.99881838086,347.87433573796,362.32629011314,377.37863296804,393.05630224552,409.38528080469,426.39262165238,444.10651133426,462.55629730628,481.77255670213,501.78712602614,522.6331757532],description:"Fifth beats twice octave"},temp17nt:{frequencies:[261.6255653006,272.67141175251,283.62400127587,295.59862296305,308.07881564783,321.08592105074,333.98321109015,348.08400151932,362.78013022893,377.35217954558,393.28401259522,409.88848628312,426.35277308246,444.35341180422,463.11404114636,482.66674266598,502.05436630802,523.2511306012],description:"17-tone temperament with 27/22 neutral thirds"},temp17s:{frequencies:[261.6255653006,272.47577100117,283.83144686231,295.66037914716,307.98229466369,320.75501909295,334.12277657932,348.04764753103,362.48197303348,377.58873713905,393.32509157531,409.63717539588,426.70917767843,444.49267120113,463.01730800927,482.21968335939,502.31662775181,523.2511306012],description:"Cycle of 17 fifths tempered by 2 schismas. Schulter, Tuning List 10-9-98"},temp19d5:{frequencies:[261.6255653006,270.66831710441,280.02362001571,289.70227696231,304.50185643804,315.02657220273,325.91506125677,337.17989695691,348.83408706747,360.89108965294,379.3273836973,392.4383479509,406.00247545366,420.03542981361,434.55341522625,449.57319616728,472.53985806789,488.87259164079,505.76984518255,523.2511306012],description:"Cycle of 19 thirds tempered by 1/5 small diesis. Third = 3\\5"},temp19ebf:{frequencies:[261.6255653006,271.21349495395,281.45216719787,291.55303152151,302.33945232218,313.85796000757,325.22143162672,337.35615460362,350.31447634238,363.09838134063,376.74994653359,390.21776437961,404.59965986997,419.95766938963,435.10896436483,451.288596451,468.56635736893,485.61156561298,503.81364896584,523.2511306012],description:"Cycle of 19 equal beating fifths"},temp19ebmt:{frequencies:[261.6255653006,271.3515811897,281.43551369743,291.89053542337,302.73030209663,313.98726376766,325.65848288741,337.75920164946,350.30522706536,363.3129458114,376.82130195458,390.82676353803,405.34762742982,420.40285701732,436.01212051281,452.22214724761,469.0287008844,486.45373685079,504.52001310976,523.2511306012],description:"Cycle of 19 equal beating minor thirds"},temp19ebo:{frequencies:[261.6255653006,277.22364042749,293.65618047886,311.2040149966,329.6906225544,349.43193638686,370.22936988938,392.1394232912,415.53653598153,440.18534605859,466.50709783521,494.2370091719,523.84897992059,555.04513017437,587.91021027711,623.0058793126,659.97909442818,699.46172209312,741.05658909815,784.8766959018],description:"Cycle of 19 equal beating octaves in twelfth"},temp19ebt:{frequencies:[261.6255653006,271.59402175166,281.80172126331,292.25440577595,302.95795550425,313.91838845704,325.14187338321,337.60244413755,350.36206814823,363.42792409681,376.80735887968,390.50790160795,404.53725818867,420.11297167574,436.06250107414,452.39482160095,469.11911613638,486.2447950704,503.78149001575,523.2511306012],description:"Cycle of 19 equal beating thirds"},temp19k10:{frequencies:[261.6255653006,271.76196854941,282.29109592175,293.22816309454,304.58897525989,314.09773337131,326.2671147593,338.90798583865,352.03861397416,365.67797428016,377.09383089344,391.70392883316,406.88007915549,422.6442137645,439.01911266466,452.72455471179,470.26488431194,488.48479525859,507.41061720556,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/10 kleisma"},temp19k3:{frequencies:[261.6255653006,272.95237156345,284.76956174698,297.09836322231,309.96092731219,314.44113201634,328.05453510669,342.25731432435,357.07498823553,372.53417996774,377.91882441317,394.28042610165,411.35038641496,429.15937528906,447.73938330242,454.2110508691,473.87564511273,494.39160029408,515.79576952378,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/3 kleisma"},temp19k4:{frequencies:[261.6255653006,272.52663052146,283.88190679319,295.71031957624,308.03158289191,314.31844786309,327.4150485592,341.05734286691,355.26806612985,370.07090075127,377.62397563434,393.35830866491,409.74823893478,426.8210805314,444.6052930255,453.67960031314,472.58291784883,492.27387080735,512.78528301977,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/4 kleisma"},temp19k5:{frequencies:[261.6255653006,272.27150423996,283.35064249518,294.88062803952,306.8797443789,314.24485853342,327.03195662575,340.33937954017,354.18830437416,368.6007608062,377.44717941318,392.80607455881,408.78994578219,425.42422593284,442.73537947933,453.36102900438,471.8089732132,491.00759210237,510.98743222773,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/5 kleisma"},temp19k6:{frequencies:[261.6255653006,272.10155294862,282.99701916355,294.32876096318,306.11424676116,314.19580976213,326.77681046955,339.86157848985,353.47028562902,367.62391141072,377.32935907335,392.4383479509,408.1523292189,424.49552853314,441.49314144476,453.14877154631,471.29371440761,490.16521545931,509.79236747994,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/6 kleisma"},temp19k7:{frequencies:[261.6255653006,271.9802243463,282.7447017667,293.93521741989,305.56863311614,314.16077935352,326.59468561952,339.52070304385,352.95830848174,366.92774752709,377.24522513926,392.17589782962,407.69749910471,423.83341578697,440.60837682578,452.99722066906,470.92601754108,489.56440442681,508.94046380742,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/7 kleisma"},temp19k8:{frequencies:[261.6255653006,271.88926339885,282.55561052465,293.64040364533,305.16005936662,314.13450956378,326.45815718343,339.26526937521,352.57481080357,366.4064920117,377.18213591051,391.97917444376,407.35670799125,423.33750965456,439.94524339387,452.88359011983,470.65043349884,489.11427877975,508.30246674991,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/8 kleisma"},temp19k9:{frequencies:[261.6255653006,271.81853598083,282.40862793607,293.41130980736,304.84265779003,314.11407882217,326.35200974457,339.06673262958,352.27682225125,366.00158141044,377.13307501509,391.82623534045,407.09184571451,422.95220417284,439.43048454013,452.79523167251,470.4362008006,488.76446469244,507.80680338678,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/9 kleisma"},temp19lst:{frequencies:[261.6255653006,270.56149416036,279.80263334807,289.3594074481,304.78245180412,315.19242188443,325.95794877725,337.09117667186,348.60466454729,360.5114003397,379.7268899367,392.69661814622,406.10933276067,419.98016416303,434.32475952075,449.15930043669,473.09978287909,489.25870067642,505.96953296163,523.2511306012],description:"Cycle of 19 least squares thirds 5/4^5 = 3/2"},temp19lst2:{frequencies:[261.6255653006,270.86681403244,280.43448605562,290.34011310859,303.98143643885,314.71879896063,325.83542931914,337.34472599098,349.26055890156,361.59728998429,378.58655645252,391.95915298383,405.80409975455,420.1380835834,434.97837844393,450.34287106955,471.50175486263,488.15634183652,505.39920634693,523.2511306012],description:"Cycle of 19 least squares thirds 5/4, 3/2 (5), 6/5 (4)"},temp21ebs:{frequencies:[261.6255653006,270.48603901573,279.57527100587,288.89916626223,298.46378542286,308.59004184051,318.97773454914,329.63361550747,340.56460989801,352.13747205507,364.00912264098,376.18727282918,388.67983604901,401.90596519454,415.47356606258,429.3914526989,443.66866815503,458.78424493347,474.29007331382,490.19622772738,506.51304733863,523.2511306012],description:"Cycle of 21 equal beating sevenths"},temp22ebf:{frequencies:[261.6255653006,269.81217946012,278.43675961795,287.52273893052,297.09479717246,306.30473778727,316.00739221221,326.22911792828,336.99768333647,347.35886661388,358.27435338478,369.77379349451,381.88843101834,394.65117841871,406.93109909525,419.8679691216,433.49693671533,447.85502662133,461.66993710068,476.2239184443,491.55650493929,507.70935693135,523.2511306012],description:"Cycle of 22 equal beating fifths"},temp22ebt:{frequencies:[261.6255653006,270.16401944699,278.90739732088,287.86061708193,297.02871287074,306.4168425362,316.03028815926,325.87445510174,336.54752540671,347.4767459334,358.66827061689,370.12838991426,381.86355177507,393.88036006393,406.18556836568,419.52690380046,433.1884314408,447.17783799964,461.50298590676,476.17193984405,491.19294816955,506.57446222015,523.2511306012],description:"Cycle of 22 equal beating thirds"},temp22fo2:{frequencies:[261.6255653006,269.97341665226,278.58762814388,287.47669703533,296.64939669548,306.114775449,315.88217199169,325.96122111215,336.36187067071,347.09438029185,358.16933884319,369.59767092309,381.39065611261,393.55992749281,406.11749146369,419.07573510033,432.44744798202,446.24582051114,460.48446638525,475.17743368268,490.33921589034,505.98477744485,522.12955176559],description:"Fifth beats twice opposite rate as octave"},temp23ebs:{frequencies:[261.6255653006,269.54528659271,277.75645349026,286.26979186473,295.09642104593,304.24787054065,313.41421505132,322.9178815064,332.77128133421,342.98728793362,353.5792427091,364.56098080918,375.56059498003,386.96499273375,398.78907363541,411.04828247111,423.75862731373,436.93671323096,450.13624919654,463.82153026575,478.01042762353,492.72147385367,507.97388874722,523.2511306012],description:"Cycle of 23 equal beating major sixths"},temp24ebaf:{frequencies:[261.6255653006,269.28287293678,277.23083697142,285.33112867981,293.73889258015,302.30779732819,311.20195864933,320.26658492056,329.67528611807,339.26431305611,349.21731641877,359.36108127338,369.88988063787,380.8183283077,391.95623237686,403.5169050439,415.29914897519,427.52862168357,439.9924847314,452.92944495636,466.1143590732,479.79973930305,493.74741628009,508.22451419243,523.2511306012],description:"Cycle of 24 equal beating 11/8's"},temp24ebf:{frequencies:[261.6255653006,269.29177952703,277.18807786937,285.37455545576,293.58315284916,302.20762754558,311.09098010692,320.17688686519,329.5354160273,339.23795459232,349.23174343306,359.45337270909,369.98176018664,380.89707445632,391.84186131702,403.3411703213,415.18563115404,427.4653330282,439.77824302677,452.71493931339,466.03998256716,479.66882917609,493.70667148145,508.26043277122,523.2511306012],description:"24-tone ET with 23 equal beatings fifths. Fifth on 17 slightly smaller."},temp25ebt:{frequencies:[261.6255653006,269.07040607882,276.69392272178,284.50040351526,292.49424189123,300.67993013952,309.06207502162,317.64539198503,326.43470939254,335.74076076764,345.27015661764,355.02825763358,365.02055286832,375.25266439783,385.73034580726,396.45949385543,407.44613828076,419.07870286007,430.99044652419,443.18807578441,455.67844358274,468.46858279232,481.56568677979,494.97711759939,508.71042703507,523.2511306012],description:"Cycle of 25 equal beating thirds"},temp26eb3:{frequencies:[261.6255653006,268.53506427639,276.23413316293,283.52944261778,291.01742029734,298.70315454572,307.26715974579,315.38204761281,323.71124866952,332.26042290088,341.78653782772,350.81307822085,360.07800843467,370.40166886388,380.18393134541,390.22454217496,400.5303243006,412.0137801623,422.89501338113,434.06361862988,445.5271853685,458.30072684004,470.40439262311,482.82771472967,495.57913524385,509.78770018956,523.2511306012],description:"Cycle of 26 fifths, 5/4 beats three times 3/2"},temp26ebf:{frequencies:[261.6255653006,268.42568455944,275.6873347244,283.44184249631,290.6057533496,298.25588724353,306.42524452376,315.14906491362,323.2084665433,331.81486605817,341.00539333861,350.8196903474,359.88651586494,369.56871668171,379.90806097321,389.45994242989,399.66012078319,410.55259814459,422.18435687733,432.93022440227,444.40542617247,456.65946119637,469.74519313893,481.83429211771,494.74389287961,508.52968420524,523.2511306012],description:"Cycle of 26 equal beating fifths"},temp26ebmt:{frequencies:[261.6255653006,268.65375733515,276.22103845862,283.50786797993,291.35362426947,298.90860888253,307.04308924768,315.80151824033,324.23534814673,333.31608510092,342.06028051348,351.47518831899,360.54116941247,370.30254728737,380.81265974123,390.93325547321,401.83014055422,412.32317421544,423.62106542614,434.50024245702,446.21389528982,458.82603004394,470.97074536855,484.04700949484,496.63864979835,510.1961187079,523.2511306012],description:"Cycle of 26 equal beating minor thirds"},temp26ebs:{frequencies:[261.6255653006,268.70854008298,275.97438147252,283.42781183148,291.07367309004,298.91693448926,307.01176285104,315.31558194419,323.83378869523,332.57191674,341.53564330438,350.78687613393,360.27695513986,370.01204624828,379.9984780646,390.24273934583,400.81557597059,411.66137956276,422.7871998129,434.200265189,445.90799193987,457.99123299379,470.38643795716,483.10166179174,496.14516363988,509.5254229925,523.2511306012],description:"Cycle of 26 equal beating sevenths"},temp27c8:{frequencies:[261.6255653006,268.8683660761,273.88218275531,281.46429379013,289.25630678777,297.26403435806,305.49344487497,313.95067836072,319.80518189674,328.65861797738,337.75715313333,347.10756874671,356.7168418477,363.36884069528,373.42828707985,383.76621672426,394.39034225616,405.30858212106,412.86671295557,424.29645219584,436.04260883433,448.1139452722,460.51946086698,473.26841152735,482.09384659572,495.44005640506,509.15574351714,523.2511306012],description:"Cycle of 27 fifths tempered by 1/8 of difference between augm. 2nd and 5/4"},temp27eb2:{frequencies:[261.6255653006,268.46319812592,275.47953375729,282.6792426258,290.06711722511,297.6480770209,305.21714541248,313.19405229436,321.37943712173,329.77875040935,338.39757940759,347.00289091411,356.07187808578,365.37788286775,374.92710181611,384.72589137834,394.78077412888,404.81988946592,415.39993259502,426.25648711974,437.39677971686,448.82822593369,460.24174609969,472.27024976331,484.61312060812,497.27857467888,510.27504274822,523.2511306012],description:"Cycle of 27 fourths, 5/4 beats twice 4/3"},temp28ebt:{frequencies:[261.6255653006,268.20719354764,274.94677993062,281.84811597329,288.91508487862,296.15166190523,303.56191452522,311.15001492268,318.92023016627,326.87692943437,335.10396312415,343.5284476344,352.15511767098,360.98882840285,370.03454814671,379.29736707683,388.78249121135,398.49525813745,408.44113355924,418.72492751128,429.25553103998,440.03886948281,451.08100913788,462.38815755283,473.96667987616,485.82308640697,497.96404651665,510.39638953936,523.2511306012],description:"Cycle of 28 equal beating thirds"},temp29c14:{frequencies:[261.6255653006,268.03384168485,274.59908446169,281.12309545065,288.00894581307,294.85155418799,302.07367045706,309.47268578827,316.82523654187,324.58557784847,332.29718551084,340.4364979057,348.77517523396,357.06148706459,365.80737813473,374.49834647311,383.67133729641,392.78672100419,402.40767098088,412.26427490957,422.0589810157,432.39692561869,442.66994710331,453.51274088813,464.62111626441,475.65973015548,487.31057837675,498.88825560972,511.10806227553,523.2511306012],description:"Cycle of 29 fifths 1/14 comma positive"},temp29ebf:{frequencies:[261.6255653006,267.97141371953,274.40384216744,281.08918054527,287.86573007783,294.90872015661,302.04780073409,309.28428172011,316.80528774769,324.42890571749,332.35226986162,340.383734589,348.52477529448,356.98590767403,365.56247629567,374.47626314535,383.51165984234,392.90231649713,402.42108995343,412.06973029551,422.09773822292,432.26256191617,442.8270465847,453.53566813958,464.39038927288,475.67189906986,487.10732348594,498.99237046175,511.03956815915,523.2511306012],description:"Cycle of 29 equal beating fifths"},temp29fo:{frequencies:[261.6255653006,267.94780983951,274.42283293416,281.05432651499,287.84607006616,294.80193939197,301.92589896847,309.2220107369,316.69443479624,324.34743177532,332.18536334326,340.21270232633,348.43402388135,356.85401564372,365.47747852664,374.30932945854,383.35460418662,392.61845788025,402.10617708826,411.82316930666,421.77497497272,431.96726840975,442.4058610624,453.0967048103,464.04589268124,475.25967298378,486.74443697706,498.50673304697,510.55326782272,522.89091000079],description:"Fifth beats with opposite equal rate as octave"},temp31c51:{frequencies:[261.6255653006,267.17944246504,273.80687224646,279.61933836952,286.55534345926,292.63843680803,298.85066583755,306.26370726525,312.76517639908,319.40466275447,327.32754956004,334.27616903285,342.56794607269,349.84009583671,357.26662128823,366.1286782788,373.90098334082,383.17565840352,391.30984260196,399.61670205031,409.52926208827,418.22288720188,428.59697681668,437.69538032917,446.98692528774,458.07451174337,467.79867446983,477.72926229583,489.57941763243,499.97237729845,512.37427391379,523.2511306012],description:"Cycle of 31 51/220-comma tempered fifths (twice diff. of 31-tET and 1/4-comma)"},temp31coh:{frequencies:[261.6255653006,267.17903658035,272.71444919697,278.8328003927,286.67318542907,292.31259119845,298.22448926086,305.9625493141,312.79375273624,319.37019903425,325.99008611032,333.53448283298,342.55073731576,349.35067604096,356.49690427728,365.94514964733,373.94225818849,381.74854907994,389.68867781295,401.66236977474,409.34549662494,417.52928752537,426.20510506248,437.61344561246,447.02040600938,456.30467151405,466.17931462488,479.8608061495,489.18804557359,499.02680928636,509.58872491278,523.2511306012],description:"Differential coherent 31-tone scale, interval=8, OdC, 2003"},temp31eb1:{frequencies:[261.6255653006,267.35556661283,273.21106374578,279.19480525048,287.36432599524,293.65804565963,300.08960744161,306.66203029506,313.37839929357,320.24186707858,327.25565533923,334.42305632458,341.74743438901,349.23222958864,356.8809512704,367.32364464292,375.36859607341,383.58974428421,391.99094825517,400.57615379751,409.34938620036,418.31476585427,427.47650107887,436.83889236244,446.40633438056,459.46863260649,469.5317006585,479.81516534138,490.32385367952,501.06269841655,512.03674033076,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats equal 5/4. Third 1/18 synt. comma higher"},temp31eb1a:{frequencies:[261.6255653006,267.52830363402,273.56421824856,279.73631545395,286.19123047598,292.64821393201,299.25087842544,306.00251077972,312.90647197491,319.96619882071,327.18520755731,334.56708808783,342.11551697966,349.83425186023,357.90667665031,365.98168819447,374.23888853079,382.68238383924,391.31637942763,400.14517332125,409.17316051655,418.40483516889,427.84479530109,437.49773526159,447.36846272566,457.69148927209,468.01782376277,478.57713873597,489.37469064597,500.41585743254,511.7061296998,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats equal 7/4"},temp31eb2:{frequencies:[261.6255653006,267.43633367564,273.37616065041,279.44791264824,286.8151286113,293.18536340431,299.69708268426,306.35342885652,313.15761412007,320.11292201761,327.22270902014,334.4904061467,341.91952062013,349.51363755953,357.2764217104,366.69546492458,374.83986170174,383.16514754137,391.67534003419,400.37454600262,409.26696348258,418.35688374945,427.64869338884,437.14687641357,446.85601642745,458.63669049374,468.82312458207,479.23580188553,489.87974732177,500.7600974131,511.88210276525,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats twice 5/4"},temp31eb2a:{frequencies:[261.6255653006,267.30377559621,273.10522335955,279.03258328435,287.71713441117,293.9616250555,300.34164347605,306.86013111019,313.520093235,320.3246003528,327.27678960683,334.37986622751,341.63710501026,349.05185182525,356.62752721996,367.72712485201,375.70811839104,383.86232802855,392.19351543866,400.70551714108,409.40225971792,418.28775270674,427.36609266644,436.64146506587,446.11814621352,460.00303307438,469.98674378481,480.18713671772,490.60891465214,501.25688243424,512.13594919255,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 3/2"},temp31eb2b:{frequencies:[261.6255653006,267.52098517401,273.5492512983,279.71335720518,286.24081966732,292.69091492047,299.28635537219,306.03041620307,312.92644639599,319.97787039914,327.18818982659,334.56098519707,342.09991771207,349.80873107384,357.97195918064,366.0384300542,374.28666922186,382.72077261519,391.34492846269,400.16341936959,409.18062444454,418.40102147414,427.82918914659,437.46980932536,447.32766937413,457.76662230541,468.08184681118,478.62951259033,489.41485742956,500.44323714283,511.72012823096,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 7/4 (7/4 beats twice 5/4 gives 31-tET)"},temp31ebf:{frequencies:[261.6255653006,267.58895287558,273.47207673981,279.84020613447,286.1226232561,292.32048149598,299.02929415269,305.64780689513,312.81195283539,319.87967238294,326.85226402826,334.39967773649,341.84550545999,349.90516819854,357.85635261941,365.7005167875,374.19135817901,382.56791460144,390.83172556312,399.77680617055,408.60149248083,418.153686518,427.57731316062,436.87410111252,446.93731687602,456.86508723973,467.61130449655,478.21288647115,488.67177324268,499.99289085438,511.16163412976,523.2511306012],description:"Cycle of 31 equal beating fifths"},temp31ebf2:{frequencies:[261.6255653006,268.47208070676,273.9410776603,281.1098810272,286.83632036086,292.67941197057,300.33857976184,306.45672349367,312.69950064833,320.88257689406,327.41921873353,335.98749730659,342.8318387903,349.81560715632,358.96997989875,366.28249344322,375.86779039798,383.5245262314,391.33723606718,401.57819634767,409.75867428285,420.48170539436,429.04726334649,437.78730875453,449.24382765192,458.39529367535,467.73318258368,479.97335657757,489.75080836323,502.56716753771,512.80487382351,523.2511306012],description:"Cycle of 31 fifths, 3/2 beats equal 7/4"},temp31ebs:{frequencies:[261.6255653006,267.49970467488,273.5255021102,279.70687352555,286.04783307233,292.55250379055,299.22511217624,305.93841412724,312.82503848113,319.88946348152,327.13627425327,334.57018402367,342.19602042672,349.86836735032,357.73879552978,365.81242398075,374.09449397971,382.59039112658,391.30563169636,400.0740276901,409.06880268892,418.29580572823,427.76103041037,437.4706255228,447.4309015606,457.4519243295,467.73166961576,478.27681510244,489.09421437332,500.19089295757,511.57406697079,523.2511306012],description:"Cycle of 31 equal beating sevenths"},temp31ebs1:{frequencies:[261.6255653006,267.15774161678,272.80689957055,278.57550963341,287.00766304701,293.07655388437,299.27377555355,305.60203820353,312.06411627904,318.6628357552,328.30838543699,335.25059642555,342.33960321815,349.5785118895,356.97048813578,364.51877275634,375.55232561156,383.49353066309,391.60265342908,399.88324912115,408.33893898267,416.9734277591,429.59472356821,438.6786743379,447.954711436,457.42689142912,467.09936712211,476.97636845082,491.41388278482,501.80502418824,512.41589335668,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats equal 7/4. 17/9 schisma fifth"},temp31ebs2:{frequencies:[261.6255653006,267.52957387699,273.56681763873,279.74030009523,286.13080593576,292.58781532731,299.19053769144,305.94226304679,312.84635035505,319.90623967996,327.21431324819,334.59843914397,342.14920188821,349.87035796113,357.76575454309,365.83932576918,374.19671203989,382.64107477964,391.27599615891,400.10577865514,409.13482199124,418.3676180873,427.92498506647,437.58181190976,447.45656083737,457.55415226032,467.87960969795,478.43807796233,489.36771995709,500.41110255739,511.70370009509,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats twice 7/4. Almost 31-tET"},temp31ebsi:{frequencies:[261.6255653006,267.31506098272,273.2139312212,279.32987994092,285.67089487749,292.24525964349,299.06156112772,306.12870201667,312.71376833043,319.5411631371,326.61980701828,333.95894503443,341.56816427739,349.45740040562,357.63696227352,366.11753111539,374.01961057916,382.2124855973,390.7068565555,399.51382386635,408.64488423766,418.11197066674,427.92744450622,438.10412760018,447.58662182594,457.41807184609,467.61131789159,478.17967690081,489.136951815,500.49745466086,512.27602199232,523.2511306012],description:"Cycle of 31 equal beating major sixths"},temp31ebt:{frequencies:[261.6255653006,267.508686718,273.53300221315,279.70190221389,286.0188552526,292.48741633838,299.11122072338,305.89399777728,312.83956126154,319.95181832117,327.23477005018,334.588671338,342.11906613961,349.83019225353,357.72638299858,365.81208378543,374.09184045976,382.57031224079,391.25226584136,400.14258695229,409.24627647794,418.43865241641,427.85164834976,437.49055334209,447.36079317794,457.46791872903,467.81761394993,478.41570188597,489.26814549043,500.38104816704,511.76065992154,523.2511306012],description:"Cycle of 31 equal beating thirds"},temp31g3:{frequencies:[261.6255653006,266.21023205793,270.87523947024,275.62199471997,289.25983723073,294.32876096318,299.48651076576,304.73464409936,310.07474405997,315.5084236529,331.11985608357,336.92232427465,342.82647426905,348.83408706747,354.94697625466,361.16698614085,379.03761443004,385.6797831671,392.4383479509,399.31534788729,406.31285900225,413.43299207996,433.88975562921,441.49314144476,449.22976592409,457.10196592055,465.11211608996,473.26263524279,496.67978412536,505.38348615935,514.23971114652,523.2511306012],description:"Wonder Scale, cycle of 31 sevenths tempered by 1/3 gamelan residue, s.wonder1"},temp31g4:{frequencies:[261.6255653006,266.75106828164,271.97698492363,277.30528403104,287.97116616014,293.61280545832,299.36497003718,305.22982618403,311.20958045219,317.30648321666,329.51091606373,335.96636137331,342.54827390456,349.25913259695,356.10146388137,363.07784268567,377.0427625798,384.42940207435,391.96075366681,399.63965159508,407.46898671086,415.4517078616,431.43106138252,439.88322158593,448.50096908674,457.28754710584,466.24626137824,475.38048570318,493.66485502092,503.33623955776,513.19709315346,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/4 gamelan residue"},temp31g5:{frequencies:[261.6255653006,267.07609791103,272.64018328418,278.3201871026,287.20071989568,293.1840695693,299.2920706603,305.52732176658,311.89247392994,318.39023342226,328.54930692245,335.39408374843,342.38146206091,349.5144087687,356.79595852417,364.22920722399,375.85089312601,383.68111960674,391.67447579625,399.83436022994,408.16424460367,416.66766586736,429.96253800336,438.92009035289,448.06425836543,457.39892986705,466.92807368021,476.65574406444,491.86469103391,502.11187209711,512.57253609913,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/5 gamelan residue"},temp31g6:{frequencies:[261.6255653006,267.29300481931,273.08321314304,278.9988528944,286.68823620156,292.89859205665,299.24348036203,305.72581270733,312.34856974117,319.11478979112,327.9097940226,335.01310892782,342.27029731995,349.68469585889,357.2597060542,364.99881126821,375.05840734677,383.18307527508,391.48374080678,399.96422099622,408.62840644009,417.48028065389,428.98629965513,438.27917301224,447.77335490729,457.47320099372,467.3831713443,477.50781354513,490.66822826519,501.2972832058,512.15658610391,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/6 gamelan residue"},temp31g7:{frequencies:[261.6255653006,267.44804485495,273.40010374961,279.48462577409,286.32273545638,292.69485077785,299.20877758909,305.86767190621,312.6747599825,319.63333987564,327.45376040978,334.74124806474,342.19091885571,349.80638115363,357.59132564064,365.54952414453,374.49336901227,382.82772265927,391.34755742947,400.0570012071,408.96027492626,418.06169111145,428.2903432132,437.821949061,447.565680886,457.52625955954,467.70851101039,478.11736856842,489.81539667363,500.71624319167,511.85968815724,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/7 gamelan residue"},temp31h10:{frequencies:[261.6255653006,267.8597617245,273.71072489962,279.68949451567,286.35413084244,292.60907359238,299.00064605783,306.12544311476,312.81225819702,320.26616683613,327.26186315247,334.41036913783,342.37893460431,349.85764856047,358.19430059608,366.01847563765,374.01355928612,382.92581520849,391.29021017831,400.61414686654,409.36491649663,418.30683086326,428.27453775026,437.62950220286,447.18881072031,457.84473927605,467.84561789912,478.99376955124,489.45661357347,500.14800438647,512.06587983104,523.2511306012],description:"Cycle of 31 fifths tempered by 1/10 Harrison's comma"},temp31h11:{frequencies:[261.6255653006,269.21878403965,274.22153683641,279.31725480271,287.42394184039,292.76499331753,298.20529308835,306.86017365004,312.56239683413,321.63396690808,327.61072570921,333.69854562169,343.38355445704,349.7644731902,359.91576765193,366.60389537541,373.41630725864,384.25405432087,391.39444778107,402.75397853578,410.23814647641,417.86138882164,429.98907567166,437.9793418028,446.11808436842,459.06587176894,467.59645436585,481.16761342105,490.10890120058,499.21634316923,513.70521350358,523.2511306012],description:"Cycle of 31 fifths tempered by 1/11 Harrison's comma"},temp31h12:{frequencies:[261.6255653006,270.35656674398,274.64794212014,279.0074329748,288.31850430385,292.89498819461,297.54411640065,307.47379627264,312.35433239663,322.77826253379,327.90172667751,333.10651564349,344.2229903876,349.68684701428,361.35664068489,367.0924599966,372.91932620731,385.3644371109,391.48133253101,404.54589939324,410.96726244836,417.49055189439,431.4231018689,438.27108715714,445.22777061734,460.08596806997,467.38892215786,482.98668436162,490.65313915878,498.44128370652,515.07533168556,523.2511306012],description:"Cycle of 31 fifths tempered by 1/12 Harrison's comma"},temp31h8:{frequencies:[261.6255653006,264.15772162327,272.31089540773,280.71571360382,283.4326348965,292.18072491748,301.19882119914,304.11398928909,313.50040506268,316.53463456122,326.30440921209,336.37572681506,339.63135730234,350.11400731728,353.50260556257,364.41338872146,375.66093089504,379.29678648678,391.00370158472,394.788050771,406.97310157871,419.5342415638,423.59472503043,436.668886633,450.14658206855,454.50334862767,468.53149836075,473.06620699858,487.66729542944,502.71904336675,507.58463809481,523.2511306012],description:"Cycle of 31 fifths tempered by 1/8 Harrison's comma"},temp31h9:{frequencies:[261.6255653006,266.20804854623,273.08769296879,280.14512719472,285.05198845745,292.41861893027,299.97562432697,305.22982618403,313.11791376428,318.60230743232,326.83598255713,335.28243953396,341.15505431438,349.97156260351,356.10146388137,365.30423365264,374.74482972428,381.30864508241,391.16284711627,398.01423104415,408.30015740759,418.85190169901,426.18827121524,437.20230245522,448.50096908674,456.35665612784,468.15032961482,476.35018210031,488.66055322307,501.28905975035,510.06935121341,523.2511306012],description:"Cycle of 31 fifths tempered by 1/9 Harrison's comma"},temp31ms:{frequencies:[261.6255653006,267.90457886781,273.56603860918,280.13162379381,286.05147140959,292.91670530125,299.10673210371,306.2852939563,312.75782903301,320.26401722477,327.03195662575,334.88072358477,341.95754947331,350.16453098318,357.56433846376,366.14588292411,373.88341429498,382.85661659068,390.94728541851,400.33002063726,408.78994578219,418.60090448096,427.44693588739,437.70566275183,446.9554220819,457.68235263341,467.35426952494,478.57076966998,488.68410850494,500.41252756995,510.98743222773,523.2511306012],description:"Cycle of 31 5th root of 5/4 chromatic semitones"},temp31mt:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,285.65057792122,292.50627485027,299.52642572255,306.71505845072,314.07622014281,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,365.63273925968,374.40803131735,383.39382442208,392.5952765698,402.01756125559,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,457.04092569426,468.01003810189,479.24227945773,490.7440946167,502.52195335034,510.98743222773,523.2511306012],description:"Cycle of 31 square root of 5/4 meantones"},temp31to:{frequencies:[261.6255653006,267.53589118464,273.57973594714,279.76011588387,286.08011543105,292.54288870475,299.15166280294,305.90973254237,312.82047235615,319.88733118052,327.11383586587,334.50359293692,342.06029039257,349.78769954651,357.68967690936,365.77016611333,374.03319988033,382.48290424395,391.12349182016,399.95927701915,408.9946695077,418.23417857039,427.68241536008,437.34409519915,447.22403993284,457.32718033558,467.65855857191,478.22333071276,489.02676930874,500.07426891005,511.37133726836,522.92361522538],description:"Third beats with opposite equal rate as octave"},temp31w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,356.97015906904,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 31 thirds tempered by 1/10 Wuerschmidt comma"},temp31w11:{frequencies:[261.6255653006,267.42197848694,273.34681181717,279.40291364591,286.91265577589,293.26931399985,299.76680465545,306.40825140143,313.19684009872,320.13583435099,327.22856275086,334.47843511672,341.88893114233,349.46360748692,357.20610515709,366.80702823839,374.93377645155,383.2405741708,391.73141324262,400.41036830387,409.28161120445,418.34939984118,427.61808628905,437.09212645494,446.77606497733,458.78443573652,468.94897543376,479.33871705477,489.95864449434,500.81386326642,511.90958055231,523.2511306012],description:"Cycle of 31 thirds tempered by 1/11 Wuerschmidt comma"},temp31w12:{frequencies:[261.6255653006,267.46216197987,273.42896553533,279.52888390694,286.63976159726,293.03439921138,299.57169286871,306.25482853931,313.08705807777,320.0717057658,327.2121755928,334.51194000906,341.9745565771,349.60365642833,357.40295156876,366.49485373999,374.67097398132,383.02949720151,391.57448819698,400.31011139524,409.24061734241,418.37035125513,427.70376253715,437.24539007841,446.99988402026,458.37102198078,468.59680699416,479.0507177135,489.73784363297,500.66339010461,511.83267129957,523.2511306012],description:"Cycle of 31 thirds tempered by 1/12 Wuerschmidt comma"},temp31w13:{frequencies:[261.6255653006,267.49616787535,273.49850059869,279.63551774138,286.40905375482,292.83577174957,299.40669857094,306.12507001426,312.99419468163,320.01745343487,327.19830857776,334.54029455907,342.04702698539,349.72220057363,357.56974544479,366.23091133098,374.44874787361,382.85098402684,391.44175752404,400.22529663315,409.2059314354,418.38808223908,427.77627085136,437.37511801764,447.18935574711,458.02150335998,468.29902426597,478.80716193382,489.55109116118,500.53609997149,511.7676037195,523.2511306012],description:"Cycle of 31 thirds tempered by 1/13 Wuerschmidt comma"},temp31w14:{frequencies:[261.6255653006,267.52531966849,273.55811412425,279.72695193191,286.21145362846,292.66562728487,299.26534666214,306.01389218024,312.91461811683,319.97095981222,327.18642276261,334.56459899164,342.10915585471,349.82384327668,357.71250180664,366.00482869479,374.25837321367,382.69803863807,391.32802257119,400.15261355898,409.17620468607,418.4030501472,427.83842920638,437.48634583318,447.35182400506,457.72212848121,468.04393370572,478.5984967348,489.39107187298,500.42702361787,511.71183724724,523.2511306012],description:"Cycle of 31 thirds tempered by 1/14 Wuerschmidt comma"},temp31w15:{frequencies:[261.6255653006,267.55058630145,273.60979095449,279.80621811014,286.0403087015,292.51824916652,299.142895223,305.91756930507,312.84566908988,319.93066920159,327.176122954,334.58566413263,342.16300881716,349.91195724514,357.83639571789,365.80900091179,374.09345893182,382.56553686518,391.22947931103,400.08963362509,409.15044340767,418.41645289306,427.89230922859,437.58276480531,447.49267964143,457.46282942114,467.82296651709,478.41773025336,489.25243249537,500.33250769337,511.66351279634,523.2511306012],description:"Cycle of 31 thirds tempered by 1/15 Wuerschmidt comma, almost 31-tET"},temp31w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,278.83674800471,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,356.32163474066,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,445.77026919414,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 31 thirds tempered by 1/8 Wuerschmidt comma"},temp31w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,356.68171037974,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,446.1797636563,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 31 thirds tempered by 1/9 Wuerschmidt comma"},temp32ebf:{frequencies:[261.6255653006,266.99024669658,272.64192755012,278.59596223891,284.86852586219,291.47665855944,298.4383110444,304.47357861204,310.83171904039,317.53000821614,324.58664278196,332.02079024875,339.85265231199,346.64232633314,353.79523650997,361.33080945807,369.26952339658,377.6329406438,386.44378308989,395.72598875513,403.77301123196,412.25053247262,421.18158418009,430.59042797451,440.50262726312,450.945108697,459.9980085603,469.53522100534,479.58265227668,490.16760508681,501.31882698223,513.0666164148,523.2511306012],description:"Cycle of 32 equal beating fifths"},temp33a12:{frequencies:[261.6255653006,266.94139439278,272.36523138282,277.89927397158,284.73748648557,290.5229142688,296.42589304627,302.44880952638,308.5941041528,316.1876182869,322.61206437627,329.16704532903,335.85521147284,342.67927280589,351.11151394887,358.24555988319,365.52455654698,372.95145333883,382.12859604556,389.89286138208,397.81488464837,405.89786889835,414.14508930077,424.3358756666,432.95772800787,441.75476312782,450.73053786756,459.88868900496,471.20507923536,480.77924170569,490.54793493862,500.51511311891,512.83118959171,523.2511306012],description:'Cycle of 33 fifths tempered by 1/12 "11 fifths" comma'},temp34eb2a:{frequencies:[261.6255653006,267.30377714022,273.10522651459,279.03258811962,285.08859470169,291.27603831759,293.96161656556,300.34163653669,306.86012579271,313.52008961307,320.32459850253,327.27678960683,334.37986815896,341.63710895701,349.05185787385,356.62753339984,364.36762821878,372.27571081823,375.70810971034,383.86232137672,392.19350864246,400.70551251195,409.40225735312,418.28775270674,427.36609513501,436.64147011015,446.11815394416,455.80051576031,465.69301950749,469.98673021106,480.18712562304,490.60890615053,501.2568766435,512.13594623433,523.2511306012],description:"Cycle of 34 thirds, 5/4 beats twice 3/2"},temp34ebsi:{frequencies:[261.6255653006,266.99788221884,272.57696520339,278.14698300137,283.93137567849,289.70637009331,295.70363067102,301.69114426564,307.90910207865,314.36637542255,320.81315450625,327.50805511637,334.19207543599,341.13334896852,348.06334108321,355.26005273528,362.44506998142,369.90662102486,377.65534755435,385.39148338011,393.42536256589,401.44618836017,409.77571602141,418.09170597447,426.72775997548,435.3497813463,444.30364141769,453.60211446558,462.88547695756,472.52613162558,482.15112257833,492.14655599832,502.125745683,512.48900933996,523.2511306012],description:"Cycle of 34 equal beating major sixths"},temp34ebt:{frequencies:[261.6255653006,266.93199967636,272.36578831151,277.92998813547,283.62773001764,289.46221547291,295.43672985114,301.55463262869,307.81936583026,314.23445063866,320.80349820247,327.5302045997,334.16324661664,340.95548417522,347.91073392156,355.03290870525,362.32601803901,369.79415983503,377.44153922514,385.2724539348,393.29131162714,401.50262139782,409.91100286066,418.20230551726,426.69260242977,435.3866631899,444.28938530291,453.40576935587,462.74094691381,472.3001707563,482.08881469934,492.11238732973,502.37652397446,512.8870010249,523.2511306012],description:"Cycle of 34 equal beating thirds"},temp34w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,281.06516151868,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,351.5637974276,359.28803828513,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,449.40705529895,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 34 thirds tempered by 1/10 Wuerschmidt comma"},temp34w5:{frequencies:[261.6255653006,266.84400329087,272.16653090376,277.59522118835,285.18293865736,290.87125860088,296.67303727804,302.5905394405,308.62607485572,314.78199505921,321.06070411799,327.46464776022,333.99632772474,340.65828815182,347.45313114562,356.95032497057,364.07013256472,371.33195122039,378.73861781039,386.29301712643,393.99809806388,401.85686830172,409.8723892274,418.04779164423,426.38625992488,434.89105154177,443.56547936435,455.68978545099,464.77906877635,474.04965097839,483.50514461458,493.14924173292,502.98569917153,513.01835960126,523.2511306012],description:"Cycle of 34 thirds tempered by 1/5 Wuerschmidt comma"},temp34w6:{frequencies:[261.6255653006,267.02047390967,272.52663052146,278.06968704778,283.80368699438,289.65592453275,295.6288411546,301.72492193478,307.94670831505,314.29679425134,320.77782174252,327.39249271371,334.14356492035,341.03384719449,348.06621207862,355.14570764395,362.46906930947,369.94344613252,377.57194788125,385.35775486011,393.30411308867,401.41432870635,409.69178284295,418.13992649314,426.76227456772,435.56242170336,444.42154779224,453.58584388327,462.93911228358,472.48525217168,482.22824196207,492.17213857029,502.32108537715,512.67931193931,523.2511306012],description:"Cycle of 34 thirds tempered by 1/6 Wuerschmidt comma"},temp34w7:{frequencies:[261.6255653006,267.14659557842,272.78413659373,276.97759061533,282.82259314675,288.79093992594,294.88523549471,301.10813946365,307.46236235072,313.95067836072,320.57591524951,327.34096447962,334.24877325582,341.30235609413,348.50479124753,353.86228320674,361.3297679824,368.9548354601,376.74081403286,384.69109896591,392.80915578714,401.0985286019,409.56282802254,418.20574780595,427.03105980737,436.04260883433,442.74580331919,452.08897683944,461.62931955889,471.37098776125,481.31823237599,491.47539447856,501.84689823661,512.43727265667,523.2511306012],description:"Cycle of 34 thirds tempered by 1/7 Wuerschmidt comma"},temp34w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,276.16133434798,282.08899791039,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,352.90276052629,360.47764004221,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,441.49314144476,450.96957067185,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 34 thirds tempered by 1/8 Wuerschmidt comma"},temp34w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,281.5197407082,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,352.15826244648,359.81626391233,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,440.52130132575,450.10083737825,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 34 thirds tempered by 1/9 Wuerschmidt comma"},temp35ebsi:{frequencies:[261.6255653006,266.57889315685,271.71450319234,277.03910343536,282.55964921963,288.28335166643,294.21768457231,300.3704033182,306.74954035112,312.48255822683,318.42655208483,324.58928450704,330.97880464114,337.6034601246,344.47190142434,351.59310182482,358.97636423712,366.63132974323,373.51095055492,380.64374131787,388.03901984907,395.70644562254,403.65603146762,411.89816253905,420.4436041444,429.30351656419,438.48947534443,446.74502047858,455.30437022365,464.17870575399,473.37961532931,482.91911915131,492.80967579032,503.06420520117,513.69610107468,523.2511306012],description:"Cycle of 35 equal beating major sixths"},temp37ebs:{frequencies:[261.6255653006,266.54882370674,271.76117582243,276.81154351547,282.15846820925,287.3392230449,292.82419544994,298.13870690002,303.76528724985,309.7222634282,315.49411047005,321.60488016898,327.52574544851,333.79428377068,339.86801168664,346.29839044807,353.1063601343,359.70275861181,366.68649693083,373.45319917734,380.61724149647,387.55864668979,394.907650003,402.68818871569,410.22692643911,418.2083422233,425.94171605945,434.12919568644,442.06222705415,450.46108885682,459.35313199837,467.96883572953,477.09045247204,485.92859505436,495.28571063961,504.35203618851,513.95073426779,523.2511306012],description:"Cycle of 37 equal beating sevenths"},temp37ebt:{frequencies:[261.6255653006,266.44794669373,271.38606435347,276.44269655507,281.62068893017,286.92295259461,292.35247205526,297.91229840101,303.60556084342,309.43546158348,315.40528084,321.51837488336,327.7781831369,333.8061589736,339.9788066307,346.29959662983,352.77208770341,359.39991652139,366.18681567584,373.13659908053,380.25317623321,387.54055229398,395.00282568127,402.64419215928,410.46895395112,418.00392297279,425.71973353547,433.62072344005,441.71133574434,449.99612361773,458.47974493329,467.16697490003,476.06269518051,485.17191513214,494.49975815874,504.05146656861,513.83241864047,523.2511306012],description:"Cycle of 37 equal beating thirds"},temp3ebt:{frequencies:[261.6255653006,330.24866439584,416.02753826489,523.2511306012],description:"Cycle of 3 equal beating thirds"},temp4ebmt:{frequencies:[261.6255653006,310.36356181711,368.84915763691,439.03187262068,523.2511306012],description:"Cycle of 4 equal beating minor thirds"},temp4ebsi:{frequencies:[261.6255653006,310.92686529443,370.08842528703,441.08229727815,523.2511306012],description:"Cycle of 4 equal beating major sixths"},temp53ebs:{frequencies:[261.6255653006,264.97369574946,268.51842903659,272.2713107977,275.7058824095,279.342132921,283.19190440533,286.71515038985,290.44528277978,294.39444663109,298.00865518834,301.83509073593,305.88621462445,310.17522146598,314.10044576101,318.25616227247,322.65590013911,326.68246801001,330.94547393755,335.45880590636,339.58933056423,343.96239778214,348.59225483118,353.4939765515,357.97994689961,362.72933676467,367.75761084241,372.35940104854,377.23140801172,382.38950169412,387.11009989437,392.10789272021,397.3991578827,403.00112480292,408.12795020911,413.55582307376,419.3024201087,424.56160969567,430.12961973912,436.02458225248,441.41955172249,447.13131541518,453.17847579573,459.58072182695,465.43995070361,471.64323472325,478.21077610462,484.22127701861,490.5847168482,497.32181757346,503.48749858841,510.01522804676,516.92626488088,523.2511306012],description:"Cycle of 53 equal beating harmonic sevenths"},temp53ebsi:{frequencies:[261.6255653006,265.08815342092,268.54511416675,272.14096825888,275.73097879106,279.31515577755,283.04333763043,286.76545980208,290.48153462492,294.34691329876,298.20601137227,302.05883614112,306.06646174912,310.06757319581,314.22944103195,318.38454699407,322.53289853772,326.84792360782,331.1559371129,335.45694960827,339.93076775401,344.39731584765,348.85660497561,353.49505873963,358.12597594237,362.74936749482,367.55851619873,372.35985057275,377.35409330215,382.34021841275,387.3182413058,392.49627136254,397.66588656991,402.8271015422,408.19568270781,413.55554119639,418.90668980097,424.47283359145,430.02993471298,435.57800299537,441.34898312942,447.11058430799,453.10367443873,459.08702461554,465.06065502782,471.27428848056,477.47782740925,483.67128540638,490.11358366391,496.54541154487,502.96678854317,509.64616466331,516.31468511822,523.2511306012],description:"Cycle of 53 equal beating major sixths"},temp53ebt:{frequencies:[261.6255653006,265.06408390481,268.61942739596,272.14046995187,275.78114176924,279.3866896354,283.11473715719,286.8068186786,290.62433945466,294.40503066492,298.31417332138,302.18560037327,306.18856199636,310.15290198883,314.25193588094,318.31142144389,322.50883104059,326.66574402863,330.9638909587,335.40807143415,339.80937339101,344.36021509659,348.86714800611,353.52720940583,358.14231011275,362.91421253104,367.64007568808,372.5265022753,377.36578530136,382.3694885676,387.32491504393,392.44870495902,397.52306357866,402.76982394565,407.96596497751,413.33865052838,418.89387526617,424.39550434456,430.08405345947,435.71772111176,441.54279782575,447.31167294612,453.27655186057,459.18388087721,465.29191391782,471.34101945319,477.59564801313,483.78993007475,490.19466758193,496.53761595054,503.09606844751,509.59124455492,516.30709807412,523.2511306012],description:"Cycle of 53 equal beating thirds"},temp57ebs:{frequencies:[261.6255653006,264.8277951114,268.04955507264,271.33445958124,274.63939933433,278.00911284632,281.39937814535,284.85609135359,288.33388628378,291.8798428433,295.4474281527,299.08493440323,302.74462553584,306.42663750246,310.18081323211,313.95788745209,317.80898926922,321.68357852782,325.63410692083,329.60872876069,333.66125215256,337.73849074816,341.89564167341,346.07814569972,350.28615866377,354.57664765081,358.89330206442,363.2945606359,367.72266219717,372.23755268366,376.77997919433,381.41143316036,386.07113633698,390.82216502962,395.60217018381,400.41132814233,405.3147417445,410.24806349136,415.27807310888,420.33876095689,425.4986359826,430.68997922537,435.98307052812,441.30844296951,446.73819252663,452.20105472878,457.69723413281,463.30113726238,468.93921588924,474.68780077646,480.47144432851,486.36844238798,492.30140788993,498.35065469266,504.4367956254,510.6422225112,516.88549425379,523.2511306012],description:"Cycle of 57 equal beating harmonic sevenths"},temp59ebt:{frequencies:[261.6255653006,264.71774803536,267.84005552541,271.00645194849,274.20369404321,277.44608402629,280.72006081878,284.04026812198,287.39281927261,290.79271098314,294.22572486522,297.70721418515,301.22261902261,304.78766466692,308.38743972219,312.03804524126,315.72421513091,319.46243532331,323.23707283878,327.06501147453,330.93024062011,334.83312418563,338.79111909993,342.78767359614,346.84065928187,350.93313112856,355.08338946648,359.27407840069,363.52394351295,367.81521017702,372.16707169716,376.56132871014,381.01763522853,385.51735474883,390.08061088885,394.68832388107,399.36109834092,404.07939600279,408.86431870994,413.69585627072,418.57446131049,423.52195428502,428.51764625978,433.58387848862,438.69946807471,443.88729218006,449.12565432864,454.4379830027,459.80206875391,465.24189440938,470.73471441434,476.30509804765,481.92974808423,487.63381799831,493.39345924022,499.23442935246,505.13230099895,511.11345315981,517.15287439575,523.2511306012],description:"Cycle of 59 equal beating thirds"},temp5ebf:{frequencies:[261.6255653006,300.99242152138,345.28013476976,397.76927639746,456.81956072863,523.2511306012],description:"Cycle of 5 equal beating fifths"},temp5ebs:{frequencies:[261.6255653006,300.72264357012,345.40501873528,396.4705903526,454.83124362955,523.2511306012],description:"Cycle of 5 equal beating harmonic sevenths"},temp6:{frequencies:[261.6255653006,292.50629174609,327.17562781541,373.91502405318,418.23333786749,467.5991148023,523.2511306012],description:"Tempered wholetone scale with approximations to 5/4 (4), 7/5 (4) and 7/4 (1)"},temp65ebf:{frequencies:[261.6255653006,264.41601755103,267.24454169377,270.11165630441,273.01788702098,275.96376822181,278.903505094,281.88335012505,284.90384796088,287.96555727487,291.06903608099,294.16604397209,297.30530343106,300.48739162418,303.71289539257,306.98240612292,310.29652144782,313.60372560746,316.95605020285,320.35411162765,323.7985328567,327.28994911888,330.77408078649,334.30574717623,337.88559766085,341.51429052286,345.19248907458,348.92086961342,352.64147345074,356.41283883338,360.23565716142,364.11063345825,368.0384739541,371.95812372083,375.93124824951,379.95858022583,384.04085801267,388.17883226226,392.30817269042,396.49385281186,400.73664000181,405.03730976228,409.39665754461,413.81548025993,418.22508312451,422.69484912531,427.22559773342,431.81816208034,436.47338166162,441.11888946365,445.82778005125,450.60091414809,455.43916939942,460.34343547357,465.31460883154,470.27541574397,475.30390033467,480.4009926512,485.56762723834,490.80474851567,496.03094699932,501.32844669322,506.69822455894,512.14126217109,517.65855736571,523.2511306012],description:"Cycle of 65 equal beating fifths"},temp65ebt:{frequencies:[261.6255653006,264.43406811535,267.2034679247,270.07937559507,272.91523803531,275.86016780291,278.76409255008,281.77970028627,284.75331888701,287.84130158502,290.886287826,294.04838131756,297.16644728835,300.4044304772,303.59732911309,306.91302510559,310.18255295306,313.57782661988,316.92582314139,320.40258196387,323.83093239735,327.39113302053,330.90176198948,334.36350914498,337.95839429282,341.50322405771,345.18438591943,348.81429298672,352.58380229516,356.30082494405,360.1608038988,363.96703524466,367.91965255368,371.81723365001,375.86471396542,379.85583700975,384.00045811272,388.08736764479,392.33145942297,396.5164558179,400.86240365726,405.1478399234,409.59809307723,413.98637838791,418.31356254814,422.80716945583,427.23820566351,431.83965831621,436.37704077554,441.08892851835,445.73520856761,450.56017999004,455.31796985254,460.25874195194,465.13071889642,470.19006822446,475.1789734801,480.35974823468,485.46838574269,490.77349931217,496.0047455553,501.43718079349,506.7939752079,512.35679191473,517.84214996629,523.2511306012],description:"Cycle of 65 equal beating thirds"},temp6eb2:{frequencies:[261.6255653006,293.46010680596,329.2739659995,369.56455759223,414.89147313404,465.88425311859,523.2511306012],description:"Cycle of 6 equal beating 9/8 seconds"},temp6s:{frequencies:[261.6255653006,271.93638072959,309.96730300827,353.31693843766,402.72911708552,459.05170412301,523.2511306012],description:"Cycle of 6 tempered harmonic sevenths, 6/5 and 4/3 minimax, Op de Coul, 2002"},temp6teb:{frequencies:[261.6255653006,314.31996068356,377.55323514312,453.43316449459,544.48907971635,653.75617798246,784.8766959018],description:"Cycle of 6 equal beating 6/5's in a twelfth"},"temp7-5ebf":{frequencies:[261.6255653006,272.53310095338,288.29512120063,313.54121701986,318.29837158817,352.05202827415,359.67534615791,387.61143614087,414.35283422339,427.61576999092,475.86500581459,472.62064557223,523.2511306012],description:"7 equal beating fifths on white, 5 equal beating fifths on black"},temp7ebf:{frequencies:[261.6255653006,288.29512120063,318.29837158817,352.05202827415,387.61143614087,427.61576999092,472.62064557223,523.2511306012],description:"Cycle of 7 equal beating fifths"},temp7ebnt:{frequencies:[261.6255653006,288.84289825546,318.65722544634,351.9228541964,388.36258888271,429.02057812008,473.55803233064,523.2511306012],description:"Cycle of 7 equal beating 11/9 neutral thirds"},temp8eb3q:{frequencies:[261.6255653006,285.27029088455,311.06453578321,339.20371183191,369.9009952302,403.38894083349,439.92124473489,479.77466958441,523.2511306012],description:`Cycle of 8 equal "beating" 12/11's`},temp9ebmt:{frequencies:[261.6255653006,282.57058469242,305.18178513943,329.6176429161,355.99737593287,384.50587463168,415.28223014648,448.54214811156,484.4478959333,523.2511306012],description:"Cycle of 9 equal beating 7/6 septimal minor thirds"},tenney_11:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,523.2511306012],description:`Scale of James Tenney's "Spectrum II" for wind quintet`},tertiadia:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"Tertiadia 2048/2025 and 262144/253125 scale"},tertiadie:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,383.2405741708,408.78994578219,436.04260883433,476.27480687611,490.54793493862,523.2511306012],description:"First Tertiadie 262144/253125 and 128/125 scale"},tet3a:{frequencies:[261.6255653006,280.31310567921,313.95067836072,336.37572681506,366.27579142084,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Eight notes, two major one minor tetrad"},tetracot:{frequencies:[261.6255653006,266.81074454173,272.09868928948,277.49143626213,289.66902367154,295.4099985897,301.26475437609,307.23554606336,320.71844041089,327.07478634962,333.55710924695,340.16790585091,355.09602205939,362.13370020095,369.31085868177,376.6302618745,393.15851224787,400.95055410677,408.89702710335,417.00099192139,435.30089370336,443.92815899023,452.72640877864,461.69903182491,481.96048707062,491.51250279099,501.25383072009,523.2511306012],description:"tetracot temperament, g=176.28227, 5-limit"},"tetragam-di":{frequencies:[261.6255653006,279.06726965397,290.69507255622,290.69507255622,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,436.04260883433,457.84473927605,523.2511306012],description:"Tetragam Dia2"},"tetragam-enh":{frequencies:[261.6255653006,271.31540105247,279.06726965397,279.06726965397,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,418.60090448096,418.60090448096,457.84473927605,523.2511306012],description:"Tetragam Enharm."},"tetragam-hex":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Tetragam/Hexgam"},"tetragam-py":{frequencies:[261.6255653006,275.62199471997,294.32876096318,294.32876096318,331.11985608357,348.83408706747,372.50983809402,392.4383479509,413.43299207996,441.49314144476,441.49314144476,465.11211608996,523.2511306012],description:"Tetragam Pyth."},"tetragam-slpe":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,279.06726965397,345.21700307457,348.83408706747,396.55020354877,455.51656649021,392.4383479509,455.51656649021,418.60090448096,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-slpe2":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,286.29520819723,345.21700307457,313.29104303136,396.55020354877,396.55020354877,387.04559340587,455.51656649021,423.54155496477,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-sp":{frequencies:[261.6255653006,271.31540105247,271.31540105247,271.31540105247,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,406.97310157871,406.97310157871,457.84473927605,523.2511306012],description:"Tetragam Septimal"},"tetragam-un":{frequencies:[261.6255653006,269.80136421624,285.40970760065,285.40970760065,319.76457981184,348.83408706747,359.73515228832,392.4383479509,404.70204632437,428.11456140098,428.11456140098,479.64686971777,523.2511306012],description:"Tetragam Undecimal"},tetragam13:{frequencies:[261.6255653006,275.95382006469,307.00724256551,307.00724256551,341.55514486295,341.55514486295,400.80167111126,400.80167111126,445.90437572008,445.90437572008,445.90437572008,496.08254310677,523.2511306012],description:"Tetragam (13-tET)"},tetragam5:{frequencies:[261.6255653006,300.52885648597,300.52885648597,300.52885648597,300.52885648597,345.21700307457,345.21700307457,396.55020354877,455.51656649021,455.51656649021,455.51656649021,455.51656649021,523.2511306012],description:"Tetragam (5-tET)"},tetragam7:{frequencies:[261.6255653006,288.85811466493,288.85811466493,288.85811466493,318.92511007349,352.12195684808,352.12195684808,388.77403176757,429.24143792307,429.24143792307,429.24143792307,473.92081401802,523.2511306012],description:"Tetragam (7-tET)"},tetragam8:{frequencies:[261.6255653006,285.30470202322,311.12698372208,311.12698372208,339.28638158975,339.28638158975,403.48177901006,403.48177901006,440,440,440,440,523.2511306012],description:"Tetragam (8-tET)"},tetragam9a:{frequencies:[261.6255653006,282.57118533961,305.19387818096,305.19387818096,329.62755691287,356.01738450312,415.30469757995,415.30469757995,448.55379686399,448.55379686399,448.55379686399,484.46508327871,523.2511306012],description:"Tetragam (9-tET) A"},tetragam9b:{frequencies:[261.6255653006,282.57118533961,282.57118533961,282.57118533961,305.19387818096,305.19387818096,384.52019141924,384.52019141924,415.30469757995,415.30469757995,415.30469757995,448.55379686399,523.2511306012],description:"Tetragam (9-tET) B"},tetraphonic_31:{frequencies:[261.6255653006,266.96486255163,272.52663052146,278.32506946872,284.37561445717,290.69507255622,297.30177875068,304.21577360535,311.45900631024,319.05556743976,327.03195662575,333.99008336247,341.25073734861,348.83408706747,356.76213450082,365.05892832642,373.75080757229,382.86668092771,392.4383479509,400.61414686654,409.13785211902,418.03215325205,427.32175665765,437.0336147635,447.19718719986,457.84473927605,467.58611670746,477.75103228805,488.36772189445,499.46698830115,511.08249965699,523.2511306012],description:"31-tone Tetraphonic Cycle, conjunctive form on 5/4, 6/5, 7/6 and 8/7"},tetratriad:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"4:5:6 Tetratriadic scale"},tetratriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"3:5:9 Tetratriadic scale"},tetratriad2:{frequencies:[261.6255653006,296.75121990114,305.22982618403,356.10146388137,373.75080757229,415.4517078616,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"3:5:7 Tetratriadic scale"},thailand:{frequencies:[261.6255653006,281.86483947605,307.02089761314,350.84574289301,397.92692612688,408.40584780369,474.03826620294,539.82938999168],description:"Observed ranat tuning from Thailand, Helmholtz/Ellis p. 518, nr.85"},thailand2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,356.77227917518,391.76907592069,435.19747628762,477.88722128969,525.37110555681],description:"Observed ranat t'hong tuning, Helmholtz/Ellis p. 518"},thailand3:{frequencies:[261.6255653006,293.32570896007,322.47117131255,354.92237405774,396.55020354877,437.46578647972,488.21056770985,538.58355905405],description:"Observed tak'hay tuning. Helmholtz, p. 518"},thailand4:{frequencies:[261.6255653006,281.88044777549,304.38587215019,332.5176539627,392.71966479735,416.35036198375,461.923848369,523.2511306012,563.76089555097,608.77174430039,665.59794246809,786.00196746963,831.57545378481,924.97296635309,1046.5022612024,1127.52179110194],description:"Khong mon (bronze percussion vessels) tuning, Gemeentemuseum Den Haag 1/1=465"},thirds:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,502.32108537715,523.2511306012],description:"Major and minor thirds parallellogram"},thomas:{frequencies:[261.6255653006,280.80530480292,294.66217084622,313.95044496966,332.05645032639,350.21604710412,374.62015588545,391.99543598175,420.73257541073,441.99197952365,468.79922683914,499.49209883845,523.2511306012],description:"Tuning of the Thomas/Philpott organ, Gereformeerde Kerk, St. Jansklooster"},tiby1:{frequencies:[261.6255653006,295.66718139806,337.56154978455,348.04364484358,393.32961502355,444.50800708553,507.49227916989,523.2511306012],description:"Tiby's 1st Byzantine Liturgical genus, 12 + 13 + 3 parts"},tiby2:{frequencies:[261.6255653006,295.66718139806,311.12698372208,348.04364484358,393.32961502355,444.50800708553,467.75037672729,523.2511306012],description:"Tiby's second Byzantine Liturgical genus, 12 + 5 + 11 parts"},tiby3:{frequencies:[261.6255653006,295.66718139806,324.07484847125,348.04364484358,393.32961502355,444.50800708553,487.21628271135,523.2511306012],description:"Tiby's third Byzantine Liturgical genus, 12 + 9 + 7 parts"},tiby4:{frequencies:[261.6255653006,286.76251801126,324.07484847125,348.04364484358,393.32961502355,431.12067692221,487.21628271135,523.2511306012],description:"Tiby's fourth Byzantine Liturgical genus, 9 + 12 + 7 parts"},todi_av:{frequencies:[261.6255653006,276.38325105256,310.05056613125,371.27895029721,392.44854854484,413.39000965417,495.88429116026,523.2511306012],description:"Average of 8 interpretations of raga Todi, in B. Bel, 1988."},tonos15_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,767.43499154843,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-15"},tonos17_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,738.70747849581,784.8766959018,897.00193817349,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-17"},tonos19_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,385.55346465352,406.97310157871,457.84473927605,523.2511306012,542.63080210495,563.50121757052,610.45965236807,665.95598440153,771.10692930703,813.94620315742,915.6894785521,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-19"},tonos21_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,398.6675280771,440.63253103259,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,797.33505615421,881.26506206518,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-21"},tonos23_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,409.50088481833,448.50096908674,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,819.00176963666,897.00193817349,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-23"},tonos25_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,753.48162806573,856.22912280196,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-25"},tonos27_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,387.59343007496,436.04260883433,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,775.18686014993,872.08521766867,996.66882019276,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-27"},tonos29_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,396.94913355953,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,793.89826711906,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-29"},tonos31_pis:{frequencies:[261.6255653006,273.51763645063,300.86940009569,334.29933343966,388.21858076863,429.81342870813,462.87600014722,501.44900015948,523.2511306012,547.03527290125,601.73880019138,668.59866687931,776.43716153726,859.62685741626,925.75200029443,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31"},tonos31_pis2:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,405.0976494977,448.50096908674,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,810.19529899541,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31B"},tonos33_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-33"},top31:{frequencies:[261.6255653006,267.49189720203,273.48976766293,279.62212612306,285.89198815637,292.30243695391,298.85662483994,305.55777482212,312.40918217641,319.41421606749,326.57632120555,333.89901954025,341.38591199258,349.04068022565,358.99452880887,367.04412845091,375.2742212459,383.6888543241,392.29216556304,401.08838562235,410.08184002413,419.27695128006,428.67824106611,438.29033244612,448.11795214515,458.16593287385,468.4392157049,478.94285250284,489.68200840824,500.66196437769,511.88811978069,523.36599505479],description:"Top temperament, 11-limit, {225/224, 385/384, 1331/1323}, Gene Ward Smith"},trab19:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,5,45,75,225}"},trab19a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,9,15,675}"},tranh:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Bac Dan Tranh scale, Vietnam"},tranh2:{frequencies:[261.6255653006,290.69507255622,307.79478270659,392.4383479509,436.04260883433,523.2511306012],description:"Dan Ca Dan Tranh Scale"},tranh3:{frequencies:[261.6255653006,317.68818643644,348.83408706747,392.4383479509,473.41768959156,476.53227965466,523.2511306012],description:"Sa Mac Dan Tranh scale"},"tri12-1":{frequencies:[261.6255653006,264.29521392612,275.21650375777,319.76457981184,323.02748368748,332.97799220076,336.37572681506,406.97310157871,411.12588832951,428.11456140098,432.48307733364,502.48719684718,523.2511306012],description:"12-tone Tritriadic of 7:9:11"},"tri12-2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,504.56359022259,523.2511306012],description:"12-tone Tritriadic of 6:7:9"},"tri19-1":{frequencies:[261.6255653006,266.96486255163,269.10058145205,305.22982618403,311.45900631024,313.95067836072,320.35783506196,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,427.32175665765,436.04260883433,439.53094970501,448.50096908674,508.71637697339,512.78610798918,523.2511306012],description:"3:5:7 Tritriadic 19-Tone Matrix"},"tri19-2":{frequencies:[261.6255653006,282.55561052465,290.69507255622,294.32876096318,313.95067836072,322.99452506247,327.03195662575,348.83408706747,353.19451315581,363.36884069528,376.74081403286,387.59343007496,392.4383479509,418.60090448096,423.83341578697,436.04260883433,465.11211608996,470.92601754108,484.4917875937,523.2511306012],description:"3:5:9 Tritriadic 19-Tone Matrix"},"tri19-3":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"4:5:6 Tritriadic 19-Tone Matrix"},"tri19-4":{frequencies:[261.6255653006,264.89588486686,290.69507255622,294.32876096318,322.99452506247,327.03195662575,331.11985608357,334.88072358477,363.36884069528,367.91095120397,372.08969287196,376.74081403286,408.78994578219,413.43299207996,418.60090448096,423.83341578697,465.11211608996,470.92601754108,516.79124009995,523.2511306012],description:"4:5:9 Tritriadic 19-Tone Matrix"},"tri19-5":{frequencies:[261.6255653006,266.96486255163,284.8811711051,290.69507255622,302.73815413355,316.53463456122,322.99452506247,329.64821227876,336.37572681506,366.27579142084,373.75080757229,406.97310157871,415.27867508032,423.83341578697,432.48307733364,452.19233508746,470.92601754108,480.53675259294,512.78610798918,523.2511306012],description:"5:7:9 Tritriadic 19-Tone Matrix"},"tri19-6":{frequencies:[261.6255653006,267.07609791103,294.32876096318,299.00064605783,305.22982618403,336.37572681506,341.71502406609,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,400.61414686654,406.97310157871,448.50096908674,457.84473927605,465.11211608996,512.57253609913,523.2511306012],description:"6:7:8 Tritriadic 19-Tone Matrix"},"tri19-7":{frequencies:[261.6255653006,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,316.53463456122,336.37572681506,348.83408706747,356.10146388137,384.42940207435,392.4383479509,406.97310157871,432.48307733364,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,523.2511306012],description:"6:7:9 Tritriadic 19-Tone Matrix"},"tri19-8":{frequencies:[261.6255653006,264.29521392612,272.43653907335,275.21650375777,316.53463456122,319.76457981184,323.02748368748,332.97799220076,336.37572681506,350.27555023717,390.82337532559,406.97310157871,411.12588832951,423.79017189188,428.11456140098,432.48307733364,497.4115685962,502.48719684718,517.96576564563,523.2511306012],description:"7:9:11 Tritriadic 19-Tone Matrix"},"tri19-9":{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,341.71502406609,366.27579142084,373.75080757229,400.61414686654,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"4:5:7 Tritriadic 19-Tone Matrix"},triang11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"11-limit triangular diamond lattice with 64/63 intervals removed"},triaphonic_12:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,367.19377586049,387.59343007496,410.39304360878,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Triaphonic Cycle, conjunctive form on 4/3, 5/4 and 6/5"},triaphonic_17:{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,390.69417751556,406.97310157871,422.62591317789,439.53094970501,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"17-tone Triaphonic Cycle, conjunctive form on 4/3, 7/6 and 9/7"},trichord7:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Trichordal undecatonic, 7-limit"},tricot:{frequencies:[261.6255653006,264.94025538413,268.70564228797,272.11003565477,275.55755973666,279.4738436282,283.01466417842,286.6003471482,290.673570175,294.35628843049,298.08566525814,302.32211998602,306.15242072385,310.03124984507,314.43747949204,318.42127516569,322.45554578164,327.03835025925,331.18179578139,335.37773516927,339.62683737367,344.45368576554,348.81777463097,353.23715677741,358.25743790514,362.79641682209,367.39290067029,372.61436622199,377.33523951767,382.11592657559,387.54663888312,392.45669803325,397.4289679423,403.0773124301,408.18413893183,413.35566924724,419.23036738005,424.541846554,429.92062250389,436.03074525334,441.55507841911,447.14940523431,453.50438708518,459.25010687752,465.06861996272,470.9608512551,477.65424916833,483.70593529179,489.8342966599,496.79592520903,503.09012862502,509.46407999504,516.70469117363,523.2511306012],description:"Tricot temperament, g=565.988015, 5-limit"},tritriad:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Tritriadic scale of the 10:12:15 triad, natural minor mode"},tritriad10:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,366.27579142084,392.4383479509,488.36772189445,523.2511306012],description:"Tritriadic scale of the 10:14:15 triad"},tritriad11:{frequencies:[261.6255653006,309.19384990071,356.76213450082,383.71749577421,421.62797713733,453.48431318771,486.49381977384,523.2511306012],description:"Tritriadic scale of the 11:13:15 triad"},tritriad13:{frequencies:[261.6255653006,294.32876096318,340.11323489078,348.83408706747,392.4383479509,453.48431318771,510.16985233617,523.2511306012],description:"Tritriadic scale of the 10:13:15 triad"},tritriad14:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Tritriadic scale of the 14:18:21 triad"},tritriad18:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,426.35277308246,479.64686971777,523.2511306012],description:"Tritriadic scale of the 18:22:27 triad"},tritriad22:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Tritriadic scale of the 22:27:33 triad"},tritriad26:{frequencies:[261.6255653006,294.32876096318,301.87565226992,348.83408706747,392.4383479509,402.50086969323,452.81347840488,523.2511306012],description:"Tritriadic scale of the 26:30:39 triad"},tritriad3:{frequencies:[261.6255653006,305.22982618403,356.10146388137,373.75080757229,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Tritriadic scale of the 3:5:7 triad. Possibly Mathews's 3.5.7a"},tritriad32:{frequencies:[261.6255653006,294.32876096318,322.00069575458,348.83408706747,392.4383479509,429.33426100611,483.00104363188,523.2511306012],description:"Tritriadic scale of the 26:32:39 triad"},tritriad3c:{frequencies:[261.6255653006,305.22982618403,366.27579142084,373.75080757229,427.32175665765,436.04260883433,512.78610798918,523.2511306012],description:"From 1/1 7/6 7/5, a variant of the 3.5.7 triad"},tritriad3d:{frequencies:[261.6255653006,305.22982618403,313.95067836072,363.36884069528,366.27579142084,436.04260883433,508.71637697339,523.2511306012],description:"From 1/1 7/6 5/3, a variant of the 3.5.7 triad"},tritriad5:{frequencies:[261.6255653006,290.69507255622,329.64821227876,366.27579142084,406.97310157871,423.83341578697,470.92601754108,523.2511306012],description:"Tritriadic scale of the 5:7:9 triad. Possibly Mathews's 5.7.9a."},tritriad68:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Tritriadic scale of the 6:7:8 triad"},tritriad68i:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,398.6675280771,448.50096908674,465.11211608996,523.2511306012],description:"Tritriadic scale of the subharmonic 6:7:8 triad"},tritriad69:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Tritriadic scale of the 6:7:9 triad, septimal natural minor"},tritriad7:{frequencies:[261.6255653006,264.29521392612,323.02748368748,332.97799220076,336.37572681506,411.12588832951,428.11456140098,523.2511306012],description:"Tritriadic scale of the 7:9:11 triad"},tritriad9:{frequencies:[261.6255653006,272.93037367779,319.76457981184,362.25078272391,377.90359432309,442.75095666255,461.88217083933,523.2511306012],description:"Tritriadic scale of the 9:11:13 triad"},tsjerepnin:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,470.92601754108,490.54793493862,523.2511306012],description:"Scale from Ivan Tsjerepnin's Santur Opera (1977) & suite from it Santur Live!"},tsuda13:{frequencies:[261.6255653006,281.75060878526,283.42769574232,322.00069575458,340.11323489078,362.25078272391,377.90359432309,402.50086969323,425.14154361347,442.75095666255,485.87604984397,518.26778650024,523.2511306012],description:"Mayumi Tsuda's Harmonic-13 scale. 1/1=440 Hz."},tuneable3:{frequencies:[36.70809598968,41.95210970249,42.82611198796,43.59086398774,44.04971518762,44.86545065405,45.8851199871,46.71939489596,47.1961234153,47.72052478658,48.94412798624,49.55592958607,50.47363198581,51.39133438555,52.00313598538,52.44013712811,53.02280531843,53.39359416681,55.06214398452,57.10148265061,57.68415084093,58.73295358349,59.65065598323,61.1801599828,62.40376318246,62.92816455374,64.23916798194,66.07457278142,66.74199270851,67.29817598108,68.17217826655,68.82767998065,70.35718398022,73.41619197936,79.53420797764,80.7578111773,82.59321597678,85.65222397592,87.18172797549,88.09943037523,89.14823311779,89.73090130811,90.10169015649,91.7702399742,94.39224683061,95.44104957317,96.35875197291,97.88825597248,100.94726397162,102.7826687711,104.00627197076,104.88027425623,105.53577597033,110.12428796904,114.20296530123,114.71279996775,115.36830168185,116.24230396732,117.46590716698,119.30131196646,120.61231539466,122.3603199656,123.88982396517,124.80752636491,125.85632910747,128.47833596388,132.14914556285,134.59635196216,137.6553599613,139.49076476078,140.71436796044,141.58837024591,146.83238395872,152.950399957,154.17400315666,156.00940795614,159.06841595528,161.51562235459,165.18643195356,168.85724155253,171.30444795184,174.36345595098,176.19886075046,183.5404799484,190.88209914634,192.71750394582,195.77651194496,201.89452794324,205.56533754221,208.01254394152,211.07155194066,220.24857593808,229.4255999355,232.48460793464,238.60262393292,244.7206399312,247.77964793034,256.95667192776,269.19270392432,275.3107199226,281.42873592088,293.66476791744],description:"Marc Sabat, 3 octaves of intervals tuneable by ear"},tuners1:{frequencies:[261.6255653006,276.50456653385,293.15590636358,311.0676370396,328.627540632,349.28088891463,369.11955599459,391.76814585061,414.75684959346,439.06365754828,466.60145532616,492.6062100846,523.2511306012],description:"The Tuner's Guide well temperament no. 1 (1840)"},tuners2:{frequencies:[261.6255653006,276.9861853325,293.55936848273,311.27971878774,329.48489606404,349.42029142443,369.90111701824,391.99869425741,415.03962525779,439.89939957166,466.4799232208,493.78769382322,523.2511306012],description:"The Tuner's Guide well temperament no. 2 (1840)"},tuners3:{frequencies:[261.6255653006,276.9180796764,293.64050032496,311.25753558078,329.38199580693,349.20116137147,369.59117881045,391.8877401954,415.37711930697,439.91014033466,466.33569310799,493.52238512763,523.2511306012],description:"The Tuner's Guide well temperament no. 3 (1840)"},turkish:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Turkish, 5-limit from Palmer on a Turkish music record, harmonic minor inverse"},turkish_24:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Ra'uf Yekta, 24-tone Pythagorean Turkish Theoretical Gamut, 1/1=D (perde yegah) at 294 Hz"},turkish_24a:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,344.52749339997,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,459.36999119996,465.11211608996,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:"Turkish gamut with schismatic simplifications"},turkish_41:{frequencies:[261.6255653006,266.80864394988,272.09440643071,275.67629620338,281.13773466533,286.70737164501,290.48162858661,294.30556868769,300.13607443832,306.08208692954,310.11139540064,316.25503135793,322.52037740267,326.76608188608,333.2396629384,339.84149442859,344.31521657963,348.8478314504,355.75887527351,362.80683626646,367.58287746967,374.8650823332,382.29155536296,387.32409620162,392.42288612931,400.19720009986,408.12552912594,413.49815209867,421.6899870258,430.04411333507,435.70527569249,441.44096240275,450.1863739015,459.10504388656,465.14876849982,474.36385666592,483.76150545705,490.12981126508,499.83980314828,509.74215733443,516.45247616827,523.2511306012],description:"Abd\xEF\xBF\xBDlkadir T\xEF\xBF\xBDre and M. Ekrem Karadeniz theoretical Turkish gamut"},turkish_41a:{frequencies:[261.6255653006,268.5590565112,272.09440643071,275.67629620338,279.3053384865,286.70737164501,290.48162858661,294.30556868769,298.17984938441,306.08208692954,310.11139540064,314.19374626607,322.52037740267,326.76608188608,335.42589979828,339.84149442859,344.31521657963,348.8478314504,353.4401143131,362.80683626646,367.58287746967,377.32440283229,382.29155536296,387.32409620162,392.42288612931,402.82271318249,408.12552912594,413.49815209867,424.45650702809,430.04411333507,435.70527569249,441.44096240275,453.1398459935,459.10504388656,465.14876849982,477.47594368525,483.76150545705,490.12981126508,503.11902634639,509.74215733443,516.45247616827,523.2511306012],description:"Karadeniz's theoretical Turkish gamut, quantized to subset of 53-tET"},turkish_aeu:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Arel-Ezgi-Uzdilek (AEU) 24 tone theoretical system"},turkish_bagl:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,311.64221749042,321.08592105074,331.11985608357,348.83408706747,369.35373924791,380.54627680087,392.4383479509,415.52295665389,428.11456140098,441.49314144476,465.11211608996,492.47165233054,507.3950357345,523.2511306012],description:'Ratios of the 17 frets on the neck of "Baglama" ("saz") according to Yal\xEF\xBF\xBD\xEF\xBF\xBDn Tura'},two29:{frequencies:[261.6255653006,265.43099677612,267.95417262175,271.85165581044,274.43586616969,278.42762776199,281.0743490329,285.16266958193,287.87341387594,292.06062910037,294.83694510625,299.12544722478,301.96892109338,306.36116019141,309.2734164419,313.77190187131,316.75460431924,321.36190613206,324.41675883995,329.13550925662,332.26425750751,337.09715242073,340.3015837153,345.25138423021,348.53332930799,353.60286331966,356.96419720496,362.15636101402,365.59900408717,370.91676405444,374.44268531179,379.88907958456,383.50028913155,389.07842928561,392.77699240278,398.49006531303,402.2780950448,408.12936467525,412.00902517967,418.00183444819,421.97534223334,428.1131149215,432.1827401118,438.46898282094,442.63705045414,449.07535460876,453.34424596425,459.9382898638,464.31044382305,471.06399474345,475.54190918343,482.45882552933,487.04505874954,494.12929225872,498.82646444278,506.0820624438,510.89285715645,518.32396488098,523.2511306012],description:"Two 29-tET scales 25 cents shifted, many near just intervals"},two29a:{frequencies:[261.6255653006,264.02813680074,267.95417262175,270.41486126945,274.43586616969,276.95607779319,281.0743490329,283.65552346679,287.87341387594,290.51702578379,294.83694510625,297.54450482308,301.96892109338,304.74197548856,309.2734164419,312.11354980287,316.75460431924,319.66343925668,324.41675883995,327.39595721478,332.26425750751,335.31552138031,340.3015837153,343.42665631876,348.53332930799,351.73399604284,356.96419720496,360.24228665998,365.59900408717,368.95638908389,374.44268531179,377.88128181162,383.50028913155,387.02206376789,392.77699240278,396.38395721814,402.2780950448,405.97231075214,412.00902517967,415.79260233969,421.97534223334,425.85044246025,432.1827401118,436.15157730833,442.63705045414,446.70189207635,453.34424596425,457.50741431695,464.31044382305,468.5743173866,475.54190918343,479.90892674463,487.04505874954,491.51771254425,498.82646444278,503.40730976502,510.89285715645,515.58451111167,523.2511306012],description:"Two 29-tET scales 15.826 cents shifted, 13-limit chords, Mystery temperament, Gene Ward Smith"},xenakis_chrom:{frequencies:[261.6255653006,274.52698453615,329.62755691287,349.22823143301,391.99543598175,411.32572372413,493.88330125613,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 5 + 19 + 6 parts"},xenakis_diat:{frequencies:[261.6255653006,293.66476791741,326.46944327063,349.22823143301,391.99543598175,440,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 12 + 11 + 7 parts"},xenakis_schrom:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 7 + 16 + 7 parts"},xenoga24:{frequencies:[261.6255653006,265.7783520514,279.38237857051,283.8170195002,294.32876096318,299.00064605783,310.07474405997,314.99656539426,331.11985608357,336.37572681506,348.83408706747,354.37113606854,372.50983809402,378.42269266694,392.4383479509,398.6675280771,419.07356785577,425.72552925031,441.49314144476,448.50096908674,465.11211608996,472.49484809138,496.67978412536,504.56359022259,523.2511306012],description:"M. Schulter, 3+7 ratios Xeno-Gothic adaptive tuning (keyboards 64:63 apart)"},xylophone2:{frequencies:[261.6255653006,295.19538981304,332.68808325276,388.83826257328,446.65787257783,506.59641128799,527.19506190947,579.57827742703,633.13077520476,751.1860077911,842.69088701475],description:"African Yaswa xylophones (idiophone; calbash resonators with membrane)"},xylophone3:{frequencies:[261.6255653006,292.47977325983,348.01999353916,392.4383479509,442.29334161825,523.2511306012],description:"African Banyoro xylophone (idiophone; loose log)"},xylophone4:{frequencies:[261.6255653006,281.70207497315,314.1971709147,349.63190883464,391.76907592069,436.9606979923,505.71930677521,568.9637969584,597.94115990992,660.7800775993,716.43551549302],description:"African Bapare xylophone (idiophone, loose-log)"},zalzal:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,465.11211608996,523.2511306012],description:"Tuning of popular flute by Al Farabi & Zalzal. First tetrachord is modern Rast"},zalzal2:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,387.59343007496,419.89288258121,465.11211608996,523.2511306012],description:"Zalzal's Scale, a medieval Islamic with Ditone Diatonic & 10/9 x 13/12 x 72/65"},zarlino:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Ptolemy's Intense Diatonic Systonon, also Zarlino's scale"},zarlino2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"16-note choice system of Zarlino, Sopplimenti musicali (1588)"},zartehijaz1:{frequencies:[261.6255653006,280.55696721076,336.07142343876,350.07440004945,375.4060213132,393.89732161404,446.43551156053,468.42549744394,502.32108537715,523.2511306012],description:"Scale from Zarlino temperament extraordinaire -- lower Hijaz tetrachord"},zesster_a:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Harmonic six-star, group A, from Fokker"},zesster_b:{frequencies:[261.6255653006,293.02063313667,299.00064605783,334.88072358477,366.27579142084,418.60090448096,457.84473927605,478.40103369253,523.2511306012],description:"Harmonic six-star, group B, from Fokker"},zesster_c:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,398.6675280771,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Harmonic six-star, group C on Eb, from Fokker"},zesster_mix:{frequencies:[261.6255653006,274.70684356563,279.06726965397,293.02063313667,299.00064605783,313.95067836072,334.88072358477,348.83408706747,358.80077526939,366.27579142084,392.4383479509,418.60090448096,457.84473927605,478.40103369253,488.36772189445,502.32108537715,523.2511306012],description:"Harmonic six-star, groups A, B and C mixed, from Fokker"},zest24:{frequencies:[261.6255653006,269.33468959023,272.52663052146,280.55696721076,292.24684137387,300.8582598368,308.87634556583,317.97777315513,326.45210604021,336.07142343876,350.07440004945,360.38977980792,364.66083404534,375.4060213132,391.04793957621,402.57065589001,410.30971075781,422.39999923493,436.81711699543,449.68847932918,465.03699205118,478.73988827571,487.94322738789,502.32108537715,523.2511306012],description:"Zarlino Extraordinaire Spectrum Temperament (two circles at ~50.28c apart)"},zir_bouzourk:{frequencies:[261.6255653006,281.75060878526,305.22982618403,313.95067836072,353.19451315581,392.4383479509,523.2511306012],description:"Zirafkend Bouzourk (IG #3, DF #9), from both Rouanet and Safi al-Din"},zwolle:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Henri Arnaut De Zwolle. Pythagorean on G flat."},zwolle2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.68386704488,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,467.04206359353,489.02683710225,523.2511306012],description:"Henri Arnaut De Zwolle's modified meantone tuning (c. 1440)"},yarman12:{frequencies:[261.6255653006,283.42769574232,294.32876096318,309.19384990071,332.97799220076,348.83408706747,377.90359432309,392.4383479509,411.12588832951,442.75095666255,465.11211608996,499.46698830115,523.2511306012],description:"Detempered Yarman 13-limit, [<1 1 -20 -6 -3 -1|, <0 1 38 15 11 8|]"},yarman12_80:{frequencies:[261.6255653006,282.84340331238,295.36595061166,319.3201344739,333.45764463229,348.2210758395,376.46181130035,393.12919962609,425.01198472693,443.82887286778,479.82340237272,501.06699929295,523.2511306012],description:"Ozan Yarman MOS, 80-et version"},yarman17:{frequencies:[261.6255653006,274.08392555301,283.42769574232,294.32876096318,309.19384990071,322.00069575458,332.97799220076,348.83408706747,362.25078272391,377.90359432309,392.4383479509,411.12588832951,425.14154361347,442.75095666255,465.11211608996,485.87604984397,499.46698830115,523.2511306012],description:"80-et commas 13-limit detempering of a chain of 16 fifths"},"yarman_ney-ahengs":{frequencies:[261.6255653006,275.39533189537,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Well Temperament for piano by Ozan Yarman from Ney Ahengs"},yasser_6:{frequencies:[261.6255653006,291.88463270656,325.64340264099,363.30663963964,405.32593044476,452.20508247496,523.2511306012],description:"Yasser Hexad, 6 of 19 as whole tone scale"},yasser_diat:{frequencies:[261.6255653006,281.42815779395,291.88463270656,313.97755176024,325.64340264099,350.29154279212,376.80531512858,390.80553229045,420.38583225541,436.00528786292,469.00678383895,486.43275040712,523.2511306012],description:"Yasser's Supra-Diatonic, the flat notes are V,W,X,Y,and Z"},yasser_ji:{frequencies:[261.6255653006,282.64904822654,294.32876096318,304.39128270551,327.03195662575,347.87575166344,359.73515228832,391.36022062136,425.14154361347,434.84468957929,457.84473927605,478.32915853722,523.2511306012],description:"Yasser's just scale, 2 Yasser hexads, 121/91 apart"},yekta:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rauf Yekta's 12-tone tuning suggested in 1922 Lavignac Music Encyclopedia"},"young-g":{frequencies:[261.6255653006,299.07507698093,319.76457981184,341.88537054616,390.82337532559,446.76650366117,477.67301428683,510.71739232152,583.82257301724,667.39198333921,713.56092257662,762.92356430953,872.13001648254,996.96833978235,1065.93668681199,1139.67601990796,1302.81150610354,1489.29848625885,1592.32474578757,1702.47910946196,1946.17475603251,2224.75468143463,2378.65811671778,2543.20970830682,2907.24890901465,3323.39919648924,3553.30434397593,3799.11599765247,4342.92768045015],description:"Gayle Young's Harmonium, see PNM 26(2): 204-212 (1988)"},"young-lm_guitar":{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"LaMonte Young, Tuning of For Guitar '58. 1/1 March '92, inv.of Mersenne lute 1"},"young-lm_piano":{frequencies:[261.6255653006,289.72987407313,294.32876096318,300.46061014991,343.38355445704,338.01818641865,386.30649876417,392.4383479509,400.61414686654,457.84473927605,450.69091522486,515.07533168556,523.2511306012],description:"LaMonte Young's Well-Tempered Piano"},"young-w10":{frequencies:[261.6255653006,277.18263097687,302.26980244078,320.24370022528,349.22823143301,369.99442271164,391.99543598175,427.47405410759,452.89298412314,493.88330125613,523.2511306012],description:"William Lyman Young 10 out of 24-tET (1961)"},"young-w14":{frequencies:[261.6255653006,277.18263097687,293.66476791741,302.26980244078,320.24370022528,339.28638158975,359.46139971304,369.99442271164,391.99543598175,415.30469757995,427.47405410759,452.89298412314,479.82340237272,508.3551866238,523.2511306012],description:"William Lyman Young 14 out of 24-tET (1961)"},"young-wt":{frequencies:[261.6255653006,285.40970760065,309.19384990071,348.83408706747,392.4383479509,428.11456140098,463.79077485106,523.2511306012],description:'William Lyman Young "exquisite 3/4 tone Hellenic Lyre" dorian'},young:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,391.5530240856,413.43299207996,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"Thomas Young well temperament (1807), also Luigi Malerbi nr.2 (1794)"},young2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.22823143301,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.65745674141,523.2511306012],description:"Thomas Young well temperament no.2 (1799)"},yugo_bagpipe:{frequencies:[261.6255653006,277.02257024271,294.00421879736,322.47117131255,341.84370465044,381.9375744369,404.41509766528,430.1988069325,452.63145841613,463.74664903953,478.99265177484,502.22604835608,523.2511306012],description:"Yugoslavian Bagpipe"},yves:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:`St Yves's scale II from Jocelyn Godwin, "Music and the Occult", 1995.`},saba_sup:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular version of maqam Sab"},sabagh:{frequencies:[261.6255653006,275.67629620338,279.3053384865,286.70737164501,294.30556868769,310.11139540064,314.19374626607,322.52037740267,326.76608188608,331.06767743197,348.8478314504,362.80683626646,367.58287746967,372.42178901277,392.42288612931,413.49815209867,418.94150105041,430.04411333507,441.44096240275,465.14876849982,471.27205084813,483.76150545705,490.12981126508,496.58195036371,523.2511306012],description:"Twfiq Al-Sabagh, Arabic master musical scale in 53-tET (1954)"},sabbagh:{frequencies:[261.6255653006,294.30556868769,321.46759848648,348.8478314504,392.42288612931,428.64035280622,465.14876849982,523.2511306012],description:"Tawfiq as-Sabbagh, a composer from Syria. 1/1=G"},safi_diat:{frequencies:[261.6255653006,276.16031892841,305.22982618403,348.83408706747,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:"Safi al-Din's Diatonic, also the strong form of Avicenna's 8/7 diatonic"},safi_diat2:{frequencies:[261.6255653006,283.79722337692,310.07474405997,348.83408706747,392.4383479509,425.69583506538,465.11211608996,523.2511306012],description:"Safi al-Din's 2nd Diatonic, a 3/4 tone diatonic like Ptolemy's Equable Diatonic"},safi_major:{frequencies:[261.6255653006,281.75060878526,322.00069575458,348.83408706747,375.66747838035,392.4383479509,523.2511306012],description:"Singular Major (DF #6), from Safi al-Din, strong 32/27 chromatic"},salinas_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:`Salinas' enharmonic tuning for his 19-tone instr. "instrumentum imperfectum"`},salinas_24:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:'Salinas enharmonic system "instrumentum perfectum". Subset of Mersenne'},salinas_enh:{frequencies:[261.6255653006,272.52663052146,279.06726965397,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Salinas's and Euler's enharmonic"},salunding:{frequencies:[261.6255653006,282.38958039978,310.76686573877,390.36201910543,419.43149305958,523.2511306012],description:"Gamelan slunding, Kengetan, South-Bali. 1/1=378 Hz"},sankey:{frequencies:[261.6255653006,274.88665260982,292.54735824399,309.58527581215,327.03195662575,348.83408706747,366.73895666255,391.24894371175,412.31687950427,437.13741259348,464.79252184829,489.99465727995,523.2511306012],description:"John Sankey's Scarlatti tuning, personal evaluation based on d'Alembert's"},santur1:{frequencies:[261.6255653006,282.02765077995,319.3201344739,347.21689301951,376.46192220133,427.47393558663,475.68393915562,504.55222794679,523.2511306012],description:"Persian santur tuning. 1/1=E"},santur2:{frequencies:[261.6255653006,281.2143451833,317.48098583281,345.21700307457,375.37611551499,423.78627283082,475.68393915562,498.18106573801,523.2511306012],description:"Persian santur tuning. 1/1=E"},sanza:{frequencies:[261.6255653006,293.15632631094,308.97787266236,346.21547002486,390.18821123181,462.40922843744,524.46149515038,595.18445928535,620.10113226249],description:"African N'Gundi Sanza (idiophone; set of lamellas, thumb-plucked)"},sanza2:{frequencies:[261.6255653006,390.63923480058,465.35666077712,523.2511306012,588.68812410589,663.45725712889,702.9084786129,783.08569314515],description:"African Baduma Sanza (idiophone, like mbira)"},sauveur:{frequencies:[261.6255653006,274.85950244128,292.7026939092,313.25286195357,328.80795208256,349.69755047152,367.27338607435,391.35133250294,417.15885134862,438.29716799286,468.84228427561,491.11646492505,523.2511306012],description:"Sauveur's tempered system of the harpsichord. Trait\xEF\xBF\xBD (1697)"},sauveur2:{frequencies:[261.6255653006,278.64199172491,293.04864983565,312.10886966906,328.2456799168,349.5951549002,372.33322418948,391.58401058733,417.05308314313,438.61577206336,467.14384425417,491.2966347616,523.2511306012],description:"Sauveur's Syste^me Chromatique des Musiciens (Memoires 1701), 12 out of 55."},sauveur_17:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,489.99465727995,496.67978412536,523.2511306012],description:"Sauveur's oriental system, aft. Kitab al-adwar (Bagdad 1294) by Safi al-Din"},sauveur_ji:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Aplication des sons harmoniques aux jeux d'orgues (1702) (PB 81/80 & 128/125)"},savas_bardiat:{frequencies:[261.6255653006,282.57123920205,317.17549194805,349.22823143301,391.99543598175,423.37848741825,475.22628419761,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 12 + 10 parts"},savas_barenh:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 16 + 6 parts"},savas_chrom:{frequencies:[261.6255653006,282.57123920205,323.3415889232,349.22823143301,391.99543598175,423.37848741825,484.46499093218,523.2511306012],description:"Savas's Chromatic, Byzantine Liturgical mode, 8 + 14 + 8 parts"},savas_diat:{frequencies:[261.6255653006,288.06460709314,311.12698372208,349.22823143301,391.99543598175,431.60923940535,466.16376151809,523.2511306012],description:"Savas's Diatonic, Byzantine Liturgical mode, 10 + 8 + 12 parts"},savas_palace:{frequencies:[261.6255653006,277.18263097687,336.03572815422,349.22823143301,391.99543598175,415.30469757995,503.48470957687,523.2511306012],description:"Savas's Byzantine Liturgical mode, 6 + 20 + 4 parts"},scalatron:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:"Scalatron (tm) 19-tone scale, see manual, 1974"},scheengaas:{frequencies:[261.6255653006,273.84069463911,292.6487650037,312.74862113192,327.53979283172,350.03605285217,366.8025131876,391.54284657258,418.19337019276,437.97145880542,467.51204131067,489.62261321254,523.2511306012],description:"Scheengaas' variation"},scheffer:{frequencies:[261.6255653006,274.56546814423,292.86978442859,309.86465789076,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"H.Th. Scheffer (1748) modified 1/5-comma temperament, Sweden"},schidlof:{frequencies:[261.6255653006,264.89588486686,274.70684356563,280.31310567921,294.32876096318,305.22982618403,315.35224388912,322.99452506247,327.03195662575,348.83408706747,353.19451315581,366.27579142084,373.75080757229,392.4383479509,406.97310157871,420.46965851882,436.04260883433,457.84473927605,467.18850946536,484.4917875937,490.54793493862,523.2511306012],description:"Schidlof"},schillinger:{frequencies:[261.6255653006,262.8879410321,275.85161280553,277.18263097687,278.52007147562,292.25460328695,293.66476791741,295.08173676673,309.63296633914,311.12698372208,312.62820992379,328.04470063332,329.62755691287,331.21805066987,347.55125362114,349.22823143301,350.91330087035,368.21772660991,369.99442271164,371.77969159194,390.11309203208,391.99543598175,393.88686247394,413.31042363438,415.30469757995,417.30859414412,437.88714035463,440,442.12305445465,463.92526470026,466.16376151809,468.41305936011,491.51169649079,493.88330125613,496.26634930797,520.73850287792,523.2511306012],description:"Joseph Schillinger's double equal temperament, p.664 Mathematical Basis..."},schis41:{frequencies:[261.6255653006,266.96486255163,272.52663052146,275.21650375777,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,321.08592105074,327.03195662575,329.64821227876,336.37572681506,343.38355445704,348.83408706747,355.95315006884,363.36884069528,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,415.27867508032,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,484.4917875937,490.54793493862,497.4115685962,504.56359022259,512.78610798918,523.2511306012],description:"41&53 <<1 -8 -14 23 -15 -25 33 -10 81 113||"},schisynch17:{frequencies:[261.6255653006,275.80289341725,290.74848220557,294.25152581512,310.19683462128,327.0062098829,330.94609980123,348.87986495302,367.78544978395,387.71551660339,392.38685458718,413.65005636851,436.06549769577,441.31937388998,465.23419873014,490.4449531872,496.35401261224,523.2511306012],description:"fifth satisfies f^9 + f^8 - 64 = 0"},schlick:{frequencies:[261.6255653006,275.62199471997,293.00227310437,311.47852302926,328.14198392915,349.6228209638,367.9112241576,391.5530240856,414.36778843034,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Reconstructed temp. A. Schlick, Spiegel d. Orgelmacher und Organisten (1511)"},schlick2:{frequencies:[261.6255653006,275.31092272332,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.9112241576,391.5530240856,415.30469757995,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Schlick's temperament reconstructed by F.J. Ratte (1991)"},schlick3:{frequencies:[261.6255653006,275.31092431358,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.70355049744,391.5530240856,415.07027187895,438.51190905657,466.95405539699,491.10256480205,523.2511306012],description:"Possible well-tempered interpretation of 1555 tuning, Margo Schulter"},schlick4:{frequencies:[261.6255653006,275.29566620843,293.00166043901,311.83758337792,328.14192706649,349.6222474261,367.6987228158,391.55300599201,415.35839309639,438.51185079886,466.95962791236,491.10245700671,523.2511306012],description:"Another reconstructed Schlick's modified meantone (Poletti?)"},scholz:{frequencies:[261.6255653006,271.31540105247,299.00064605783,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Simple Tune #1 Carter Scholz"},scholz_epi:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,6802.2646978156,7063.8902631162,7325.5158284168,8372.0180896192,8633.6436549198,9156.894785521,9418.5203508216,10203.3970467234,10465.022612024,10988.2737426252,11511.5248732264,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14127.7805262324,14389.406091533,14651.0316568336,16482.4106139378,16744.0361792384,17005.661744539],description:"Carter Scholz, Epimore"},schulter:{frequencies:[261.6255653006,277.184065539,293.66520219021,311.12905403417,329.62853176407,349.23107169224,369.99606406306,391.99572582396,415.30715405467,440.00097595231,466.1672081452,493.88512703986,523.25577305438],description:`Margo Schulter's 5-limit JI virt. ET, "scintilla of Artusi" tempered 22-08-98`},schulter_17:{frequencies:[261.6255653006,272.43653907335,282.13181390574,295.15344695336,308.77608605158,319.09647917983,332.97799220076,348.34640884647,361.82138782225,375.64984936577,392.98775403209,410.26687922759,423.79017189188,443.34998408798,463.81254988138,480.53289366295,500.16624277499,523.2511306012],description:"Neo-Gothic well-temperament (14:11, 9:7 hypermeantone fifths) TL 04-09-2000"},schulter_24:{frequencies:[261.6255653006,270.06509966514,283.8170195002,292.97240722602,295.75063903546,305.22982618403,307.79478270659,317.68818643644,334.29933343966,345.08318290545,348.06842720833,359.29644098925,377.90359432309,390.09403284964,393.30161007617,406.07983174306,426.86276443782,440.63253103259,444.76346101102,458.66231916761,462.87600014722,477.80748402293,502.32108537715,518.89070451286,523.2511306012],description:'Rational intonation (RI) scale with some "17-ish" features (24 notes)'},schulter_cart34:{frequencies:[261.6255653006,270.08718526646,272.51337835337,281.3271372098,283.85429714132,293.03484945212,295.66718139806,305.22982618403,307.97166902637,317.93223698752,320.78822215662,331.16330924834,334.13814720468,344.94500399825,348.04364484358,359.30023993517,362.52783176564,374.2528814026,377.61479489998,389.82779436071,393.32961502355,406.05087076101,409.69842558521,422.94908927295,426.7484383229,440.55054172958,444.50800708553,458.88449901367,463.0066556268,477.98143975034,482.27514684959,497.87312179111,502.34551296122,518.59261334435,523.2511306012],description:'"Carthesian tuning" with two 17-tET chains 55.106 cents apart'},schulter_diat7:{frequencies:[261.6255653006,295.1673044417,332.97799220076,348.83408706747,392.4383479509,442.75095666255,499.46698830115,523.2511306012],description:"Diatonic scale, symmetrical tetrachords based on 14/11 and 13/11 triads"},schulter_ham:{frequencies:[261.6255653006,272.52663052146,283.8170195002,295.75063903546,307.79478270659,320.70230585235,334.29933343966,348.01136516401,362.25078272391,377.90359432309,393.36609818246,409.50088481833,426.86276443782,444.76346101102,462.87600014722,482.33849075995,502.32108537715,523.2511306012],description:'New rational tuning of "Hammond organ type", TL 01-03-2002'},schulter_jot17a:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.1673044417,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.75095666255,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"Just octachord tuning -- 4:3-9:8-4:3 division, 17 steps (7 + 3 + 7), Bb-Bb"},schulter_jot17bb:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.15228855401,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.72843283101,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:'"Just Octachord Tuning" (Bb-Eb, F-Bb) -- 896:891 divided into 1792:1787:1782'},schulter_jwt17:{frequencies:[261.6255653006,272.43653907335,282.34838235411,295.1673044417,308.34441624714,319.76457981184,332.97799220076,347.8430811383,362.25078272391,376.08675011961,393.55640592227,409.81906732402,425.14154361347,443.97065626768,462.87600014722,481.6288815761,500.8899711738,523.2511306012],description:'"Just well-tuned 17" circulating system'},"schulter_lin76-34":{frequencies:[261.6255653006,270.6250663876,281.88470155261,291.58108453077,295.07956188513,305.22982618403,308.89206602106,319.51745915009,332.81131277165,344.25948974019,348.39001840879,360.3740779397,375.36781334896,388.27986588625,392.93856423817,406.45502016129,423.36600317146,437.92911415628,443.18352164838,458.42832346067,463.9286840578,479.88708893184,499.85328649772,517.04744024951,523.2511306012],description:"Two 12-note chains, ~704.160 cents, 34 4ths apart (32 4ths = 7:6), TL 29-11-02"},schulter_pel:{frequencies:[261.6255653006,271.31540105247,305.22982618403,392.4383479509,406.97310157871,523.2511306012],description:"Just pelog-style Phrygian pentatonic"},schulter_pepr:{frequencies:[261.6255653006,270.64528702739,281.81099471089,291.52662303231,295.05751399041,305.22982618403,308.92668738628,319.57714790608,332.76158224462,344.23376719628,348.40303271111,360.41446953256,375.28368107222,388.22184469544,392.9238840789,406.47020586181,423.23948674937,437.83095983374,443.13385158124,458.41119660824,463.96335069158,479.95880706014,499.75992392917,516.98949183803,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},schulter_qcm62a:{frequencies:[261.6255653006,262.43934012943,267.90457886781,268.73788454005,273.37431312998,274.22463192287,279.93529690293,280.80602334765,285.65065877038,286.53916259713,292.50627485027,293.41610276971,299.52642572255,300.45808951291,305.64177427204,306.59245933664,312.977175335,313.95067836072,320.36052345918,320.48862783822,327.03195662575,328.04917632434,334.88072358477,335.92235492515,341.71789064962,342.78078913836,349.91912034749,351.00752840096,358.31717956585,359.43170941363,365.63284274659,366.77012764335,374.40803131735,375.5726110527,382.05221698715,383.2405741708,391.22147055517,392.4383479509,400.61078621746,401.85686830172,408.78994578219,410.06146948999,418.60090448096,419.90294514449,427.14736482575,428.47598794138,437.39890198442,438.75941205608,447.89647345742,449.28963835923,457.04105241293,458.46266117889,468.01003810189,469.46576276783,479.24227945773,480.73294151703,489.02683710225,490.54793493862,500.76348165392,502.32108537715,510.98743222773,512.57683571821,523.2511306012],description:"1/4-comma meantone, two 31-notes at 1/4-comma (Vicentino-like system)"},schulter_qcmlji24:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,292.50627485027,293.41610276971,306.59245933664,312.977175335,327.03195662575,328.04917632434,349.91912034749,351.00752840096,365.63284274659,366.77012764335,391.22147055517,392.4383479509,408.78994578219,410.06146948999,437.39890198442,438.75941205608,458.46266117889,468.01003810189,489.02683710225,490.54793493862,523.2511306012],description:"24-note adaptive JI (Eb-G#/F'-A#') for Lasso's Prologue to _Prophetiae_"},schulter_qcmqd8_4:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28772967674,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.22091428214,437.39890198442,465.24335632603,489.02683710225,523.2511306012],description:"F-C# in 1/4-comma meantone, other 5ths ~4.888 cents wide or (2048/2025)^(1/4)"},schulter_sq:{frequencies:[261.6255653006,271.31540105247,279.38237857051,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,419.07356785577,434.59481110969,441.49314144476,457.84473927605,465.11211608996,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:'"Sesquisexta" tuning, two 12-tone Pyth. manuals a 7/6 apart. TL 16-5-2001'},schulter_tedorian:{frequencies:[261.6255653006,295.99553712036,309.28772789022,347.85054122562,393.54796334264,442.61656607198,462.49302735707,523.2511306012],description:"Eb Dorian in temperament extraordinaire -- neo-medieval style"},schulter_zarte84:{frequencies:[261.6255653006,272.52663052146,292.24684137387,308.87634556583,326.45210604021,350.07440004945,364.66083404534,391.04793957621,410.30971075781,436.81711699543,465.03699205118,487.94322738789,523.2511306012],description:"Temperament extraordinaire, Zarlino's 2/7-comma meantone (F-C#)"},schulter_zarte84n:{frequencies:[261.6255653006,272.46997760396,292.1447183254,308.81896225817,326.44489157977,350.01709816983,364.52535053201,391.11195868293,410.09013064752,436.73596474349,465.11312402839,488.01232708701,523.2511306012],description:"Zarlino temperament extraordinaire, 1024-tET mapping"},scotbag:{frequencies:[261.6255653006,290.69507255622,327.03195662575,356.76213450082,387.59343007496,436.04260883433,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning"},scotbag2:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Scottish bagpipe tuning 2"},scotbag3:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning 3"},scotbag4:{frequencies:[261.6255653006,293.15632631094,318.58319997217,348.2210758395,392.67530119805,428.21545238314,468.59347232539,523.2511306012],description:"Scottish Higland Bagpipe by Macdonald, Edinburgh. Helmholtz/Ellis p. 515, nr.52"},scottd1:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,349.22823143301,367.9112241576,391.5530240856,413.90012676351,437.52264545758,465.63764214343,490.54829628849,523.2511306012],description:"Dale Scott's temperament 1, TL 9-6-1999"},scottd2:{frequencies:[261.6255653006,276.1828093671,292.93610587951,310.70566022736,327.9937953665,349.3071136959,368.24374600687,391.64146650178,414.27421384356,438.21489534465,466.05849010807,491.32444638706,523.2511306012],description:"Dale Scott's temperament 2, TL 9-6-1999"},scottd3:{frequencies:[261.6255653006,276.40121172404,293.16775656083,310.95136287868,328.51274831708,349.22813057195,368.53494914961,391.77416758435,414.60181737882,438.75957425603,466.42704408487,491.93513777943,523.2511306012],description:"Dale Scott's temperament 3, TL 9-6-1999"},scottd4:{frequencies:[261.6255653006,276.60439543337,293.30494246724,310.98285414553,328.78580734933,349.37474066871,369.05201453919,391.83105388699,414.77686160481,439.10664961187,466.16991430388,492.5350487994,523.2511306012],description:"Dale Scott's temperament 4, TL 9-6-1999"},scottj:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509],description:`Jeff Scott's "seven and five" tuning, fifth-repeating. TL 20-04-99`},scottj2:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,313.95067836072,348.83408706747,366.27579142084,406.97310157871,418.60090448096,428.11456140098,436.04260883433,485.87604984397,523.2511306012,566.85539148463,581.39014511244,598.00129211566,610.45965236807,680.22646978156,719.47030457665,784.8766959018],description:`Jeff Scott's "just tritone/13" tuning. TL 17-03-2001`},secor12_1:{frequencies:[261.6255653006,275.03488264166,292.74290192225,310.07362690431,327.56128791316,349.21167447253,366.91716522699,391.37968062521,412.76363757129,437.92977184699,465.61556619611,490.01645577464,523.2511306012],description:"George Secor's 12-tone temperament ordinaire #1, proportional beating"},secor12_2:{frequencies:[261.6255653006,275.62199471997,292.79557634972,310.07474405997,327.35540669465,348.83408706747,367.49599295996,391.60840570078,413.43299207996,437.83150862942,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's closed 12-tone well-temperament #2, with 7 just fifths"},secor12_3:{frequencies:[261.6255653006,274.49585366342,292.50627485027,309.76836826904,327.03195662575,349.57337698802,365.99447173417,391.22147055517,411.74378028931,437.39890198442,466.09783352473,489.02683710225,523.2511306012],description:"George Secor's closed 12-tone temperament #3 with 5 meantone, 3 just, and 2 wide fifths"},secor17htt1:{frequencies:[261.6255653006,266.21235100401,283.6936382117,294.88137067808,304.94368688875,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,435.63385416574,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #1 on C (5/4 & 7/4 exact)"},secor17htt2:{frequencies:[261.6255653006,266.21235100401,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #2 on Eo (5/4 & 7/4 exact)"},secor17htt3:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #3 on G (5/4 & 7/4 exact)"},secor17htt4:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,332.36439517321,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,420.07165483694,442.73709545768,450.49910517366,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #4 on Bo (5/4 & 7/4 exact)"},secor17wt:{frequencies:[261.6255653006,271.90848849519,284.45827635845,296.12458543709,307.25838681362,320.91221742866,335.17278980765,347.77473997341,362.0378075073,378.74746489181,393.63374363584,408.43373030454,427.2847686483,445.53990619223,462.29147990415,482.0422296857,504.29062567056,523.2511306012],description:"George Secor's well temperament with 5 pure 11/7 and 3 near just 11/6"},secor19wt:{frequencies:[261.6255653006,272.32755795875,282.27948808054,292.18583194851,304.13791554835,314.37102040472,326.31582004031,339.6640167515,350.11094753355,364.43250202589,378.27942889874,391.0071187494,407.00156221801,421.24111755476,436.68033801788,454.54308187078,469.17957429271,487.6886112017,506.92782577841,523.2511306012],description:"George Secor's 19-tone well temperament with ten 5/17-comma fifths"},secor19wt1:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.3856167727,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.33223555387,436.68095599763,454.54522431957,469.16941157468,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.1)"},secor19wt2:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.27577204952,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.20165315727,436.68095599763,454.54522431957,469.03541436973,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.2)"},secor1_4tx:{frequencies:[261.6255653006,274.52656755164,292.65557420835,309.65910769439,327.20096538886,349.14957009195,366.50113643833,391.42429537222,412.04336447213,437.62002395673,465.5327601226,489.58458498887,523.2511306012],description:"George Secor's rational 1/4-comma temperament extraordinaire"},secor1_5tx:{frequencies:[261.6255653006,275.23833828784,292.86443876933,310.12174699459,327.84546895566,349.26796031009,366.98445105045,391.462133155,412.85750743176,438.21197504744,465.69061374678,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma temperament extraordinaire (ratios supplied by G. W. Smith)"},secor1_5wt:{frequencies:[261.6255653006,275.62199471997,292.86443876933,310.07474405997,327.84546895566,348.83408706747,367.44664657419,391.462133155,413.43299207996,438.21197504744,465.11211608996,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma well-temperament (ratios supplied by G. W. Smith)"},secor1_7wt:{frequencies:[261.6255653006,276.40791719395,293.28186156416,310.6264877857,328.77715667764,349.45479875891,368.54388959194,391.74026793015,414.61187579093,439.14616729155,465.93973167855,492.29203182992,523.2511306012],description:"George Secor's 1/7-comma well-temperament (ratios supplied by G. W. Smith)"},secor22_19p3:{frequencies:[261.6255653006,266.86058412305,272.32845615788,282.28026746552,292.18610873661,304.13920677667,314.37137994881,326.31643450984,339.6657766488,350.11078170334,357.11635499175,364.43353349925,378.28077924825,391.00730395019,407.00309738029,421.28573964817,436.68095599763,454.54522431957,469.17973147781,477.89781576412,487.689760539,506.93004530576,523.2511306012],description:"George Secor's 19+3 well temperament with ten ~5/17-comma (equal-beating) fifths and 3 pure 9:11. TL 28-6-2002,26-10-2006. Aux=1,10,19"},secor22_ji29:{frequencies:[261.6255653006,272.52663052146,283.42769574232,286.15296204753,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.65828815182,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,414.24047839262,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,501.44900015948,523.2511306012],description:"George Secor's 22-tone just intonation (29-limit otonality on 4/3)"},secor29htt:{frequencies:[261.6255653006,270.55308473255,276.71069203503,283.6936382117,290.1503157249,294.88137067808,304.94368688875,310.54087273367,319.75456524059,327.03195662575,332.36439517321,343.70575469589,348.50707605838,360.3992766165,368.60172104124,377.19539564757,387.3949548402,392.80658053205,406.21042497925,415.4555026381,425.93975025566,435.63385416574,442.73709545768,457.84473927605,464.24049278842,480.08189580921,491.0082387498,499.01438878341,516.04239079678,523.2511306012],description:"George Secor's 29-tone 13-limit high-tolerance temperament (5/4 & 7/4 exact)"},secor2_11wt:{frequencies:[261.6255653006,275.91396717201,292.9984614786,310.40321306851,328.14053952957,349.20361470207,367.88528956268,391.55148162785,413.87095075801,438.50612639837,465.60481960276,491.10222639053,523.2511306012],description:"George Secor's rational 2/11-comma well-temperament"},secor41htt:{frequencies:[261.6255653006,266.21235100401,270.55308473255,276.71069203503,279.78524030783,283.6936382117,290.1503157249,294.88137067808,300.05119287674,304.94368688875,310.54087273367,315.34936221801,319.75456524059,327.03195662575,332.36439517321,338.19136297459,343.70575469589,348.50707605838,354.61705516636,360.3992766165,368.60172104124,372.69727792826,377.90358994896,387.3949548402,392.80658053205,399.69321489333,406.21042497925,415.4555026381,420.07165483694,425.93975025566,435.63385416574,442.73709545768,450.49910517366,457.84473927605,464.24049278842,473.46789104304,480.08189580921,491.0082387498,499.01438878341,507.7630447553,516.04239079678,523.2511306012],description:"George Secor's 13-limit high-tolerance temperament superset (5/4 & 7/4 exact)"},secor5_23tx:{frequencies:[261.6255653006,275.02417915696,292.7420830065,310.0721322444,327.56084927797,349.21018850905,366.91927748105,391.38056264645,412.75664067387,437.92311604224,465.61358467873,490.0190422864,523.2511306012],description:"George Secor's rational 5/23-comma temperament extraordinaire"},secor5_23wt:{frequencies:[261.6255653006,275.62199471997,292.75872440224,310.07474405997,327.56278518065,348.83408706747,367.49599295996,391.3766908411,413.43299207996,437.81158306864,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's rational 5/23-comma proportional-beating well-temperament"},secor7p:{frequencies:[261.6255653006,281.10327891957,302.03108525935,356.94582815655,383.52002471837,412.07263653985,442.75095666255,523.2511306012],description:"George Secor's pelog-like MOS with near just 11:13:15:19 tetrads (1979)"},secor_vrwt:{frequencies:[261.6255653006,276.32932769153,293.15777167588,310.55777256823,328.11844153148,349.04269216937,368.62018440632,392.00375398861,414.25255044712,438.65017260809,465.6191423793,491.6947801169,523.2511306012],description:"George Secor's Victorian rational well-temperament (based on Ellis #2)"},"secor_wt1-7":{frequencies:[261.6255653006,276.2204353545,293.2843722634,310.74798946314,328.77415062671,349.45463702831,368.55847674989,391.74146894101,414.33065282463,439.14535139523,466.13275379077,492.28548658217,523.2511306012],description:"George Secor's 1/7-comma well-temperament"},secor_wt10:{frequencies:[261.6255653006,276.4188590209,293.2843722634,310.62634254146,328.77415062671,349.45463500978,368.55847887877,391.7414712038,414.6282883241,439.14535393183,465.93951357928,492.28548942572,523.2511306012],description:"George Secor's 12-tone well-temperament, proportional beating"},"secor_wtpb-24a":{frequencies:[261.6255653006,275.62199471997,292.84836938997,310.07474405997,327.30111872997,348.83408706747,367.49599295996,391.90002374246,413.43299207996,437.54991661796,465.11211608996,490.95167809495,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24a)"},"secor_wtpb-24b":{frequencies:[261.6255653006,275.62199471997,292.56126314547,310.07474405997,327.51644841334,348.83408706747,367.49599295996,391.46936437571,413.43299207996,437.76524630133,465.11211608996,490.37746560595,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24b)"},segah:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Arabic SEGAH (Dudon) Two 4 + 3 + 3 tetrachords"},segah2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,349.22823143301,391.99543598175,425.01198472693,466.16376151809,523.2511306012],description:"Iranian mode Segah from C"},segah_rat:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Rationalized Arabic Seg\xEF\xBF\xBDh\r"},seidel974:{frequencies:[261.6255653006,262.64754016506,266.73543962288,267.75741448733,268.77938935179,273.88926367407,274.91123853852,276.95518826743,277.97716313189,280.0211128608,283.08703745416,284.10901231862,285.13098718308,287.17493691199,289.2188866409,290.24086150535,294.32876096318,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,486.4600354808,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,515.07533168556,519.16323114338,523.2511306012],description:"Dave Seidel, Base 9:7:4 Symmetry, scale for Passacaglia and Fugue State (2005)"},seikilos:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,441.49314144476,457.84473927605,504.56359022259,523.2511306012],description:"Seikilos Tuning"},sekati1:{frequencies:[261.6255653006,285.2147362526,318.99014578736,340.97107458785,383.86043226246,424.60539155549,468.56721805116,523.2511306012],description:"Gamelan sekati from Sumenep, East-Madura. 1/1=244 Hz."},sekati2:{frequencies:[261.6255653006,288.87830434024,317.34219433319,357.31261688157,393.64955765984,420.29657220667,469.35141988267,523.2511306012],description:"Gamelan Kyahi Sepuh from kraton Solo. 1/1=216 Hz."},sekati3:{frequencies:[261.6255653006,291.90272733088,308.20569577938,369.53649673407,403.69531865382,425.43272843735,475.11832680028,523.2511306012],description:"Gamelan Kyahi Henem from kraton Solo. 1/1=168.5 Hz."},sekati4:{frequencies:[261.6255653006,271.36353278789,288.89182053123,342.12578909252,379.12979967788,410.29128883625,439.50493264224,523.2511306012],description:"Gamelan Kyahi Guntur madu from kraton Jogya. 1/1=201.5 Hz."},sekati5:{frequencies:[261.6255653006,274.79663866182,311.31645994273,355.61927540077,375.97459751383,397.52718524897,433.44837981883,523.2511306012],description:"Gamelan Kyahi Naga Ilaga from kraton Jogya. 1/1=218.5 Hz."},sekati6:{frequencies:[261.6255653006,284.57524936299,310.80330758934,358.01400474517,390.79902205709,427.51850178351,468.18764285778,523.2511306012],description:"Gamelan Kyahi Munggang from Paku Alaman, Jogya. 1/1=199.5 Hz."},sekati7:{frequencies:[261.6255653006,286.67481979642,318.21831168293,371.10013445627,390.58282835584,422.12643845206,463.87524473877,523.2511306012],description:"Gamelan of Sultan Anom from Cheribon. 1/1=282 Hz."},sekati8:{frequencies:[261.6255653006,287.04067548259,315.94410704802,350.82750428678,381.72407804086,425.57749367468,447.5043967797,523.2511306012],description:"The old Sultans-gamelan Kyahi Suka rame from Banten. 1/1=262.5 Hz."},sekati9:{frequencies:[261.6255653006,280.44107893528,310.90439774384,346.74342440827,376.31071188751,412.14996063869,455.1567650372,523.2511306012],description:"Gamelan Sekati from Katjerbonan, Cheribon. 1/1=292 Hz."},selisir:{frequencies:[261.6255653006,278.78833362316,320.24370022528,380.8360868427,417.71053321823,524.76452349887],description:"Gamelan semara pagulingan, Bali. Pagan Kelod"},selisir2:{frequencies:[261.6255653006,279.59466973861,299.66214729245,376.46181130035,408.17001145418,520.23742585195],description:"Gamelan semara pagulingan, Bali. Kamasan"},selisir3:{frequencies:[261.6255653006,284.98499077387,305.5412851438,378.42269266694,406.45400323486,523.2511306012],description:"Gamelan gong, Pliatan, Bali. 1/1=280 Hz, McPhee, 1966"},selisir4:{frequencies:[261.6255653006,277.23130136276,295.59098907682,376.373620257,399.32323124828,523.2511306012],description:"Gamelan gong, Apuan, Bali. 1/1=285 Hz. McPhee, 1966"},selisir5:{frequencies:[261.6255653006,275.89605068063,309.19384990071,383.40037296022,406.23315014465,523.2511306012],description:"Gamelan gong, Sayan, Bali. 1/1=275 Hz. McPhee, 1966"},selisir6:{frequencies:[261.6255653006,282.63199755101,312.23197007902,396.25769882774,415.35445602102,523.2511306012],description:"Gamelan gong, Gianyar, Bali. 1/1=274 Hz. McPhee, 1966"},semipor1:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,353.19451315581,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"First 16/15&250/243 = 648/625&250/243 scale"},semisixths:{frequencies:[261.6255653006,264.19830736984,270.23055453212,272.88791531122,275.57140613391,281.86332858923,284.63508234504,291.13394747727,293.99686553194,300.70948316519,303.66656221886,306.65272199551,313.65430163898,316.7386758187,323.97054074552,327.15636145846,330.37351240232,337.91669168384,341.23965429995,349.03093233441,352.46319080675,360.51072564419,364.05587272954,367.63587953306,376.02984347246,379.72760059524,388.39764380609,392.21702191873,396.07395857323,405.11722624758,409.10101938242,418.44172684717,422.55654641528,426.71183224275,436.45463212963,440.74658728358,450.80983509489,455.24295209046,465.63718490681,470.21611194415,474.84006394159,485.68174342829,490.45777940536,501.656046885,506.58917188228,511.57080469686,523.2511306012],description:"Semisixths temperament, 13-limit, g=443.0"},"scalamakesrc2\\semisixths_8":{frequencies:[261.6255653006,282.20554108354,304.40437778605,337.94858305883,364.53227585368,393.20709362444,436.53702313055,470.87587163898,522.76460573117],description:"8-note MOS of Semisixths [7, 9, 13, -2, 1, 5] temperament, TOP tuning"},semisuper:{frequencies:[261.6255653006,267.78942821112,272.60119889127,277.49943141001,284.03728045772,289.141002119,295.95312328758,301.27095467792,308.36885759663,313.90977919898,321.30545111289,327.07882560827,334.78475653951,340.80033382945,348.82954357113,355.09748450744,363.46353108469,369.99442271164,378.7114412363,385.5163125912,392.44345945086,401.68937424288,408.90712663484,418.54092077997,426.06147005461,436.09942062666,443.93546710474,454.39452662825,462.55931114028,473.45714317395,481.96445416288,493.31947147471,502.18367855499,514.01505508798,523.2511306012],description:"Semisuper temperament, g=71.146064, p=600, 5-limit"},semithirds:{frequencies:[13.75,13.81661017188,13.90316796691,13.99026794524,14.07791366516,14.14611237417,14.23473442257,14.3239115844,14.41364750281,14.48347263281,14.57420816344,14.665512046,14.73655738771,14.82887834882,14.92177776458,15.01525908647,15.08799873642,15.18252139242,15.27763629821,15.37334698758,15.4478213521,15.54459820959,15.64198144101,15.73997475533,15.81622511342,15.91530993122,16.01501558389,16.11534586889,16.19341466585,16.29486248479,16.39694594444,16.47637891809,16.57959953527,16.68346670883,16.78798468204,16.86931199442,16.97499424439,17.08133847,17.18834901569,17.27161584349,17.37981843193,17.48869878298,17.59826134469,17.68351394199,17.7942969746,17.90577393328,18.01794937217,18.10523509614,18.21866011204,18.33279560295,18.42160666689,18.53701356879,18.6531435747,18.77000099922,18.86093005309,18.97908920954,19.09798871479,19.21763298632,19.3107305405,19.43170758802,19.55344264036,19.67594033402,19.77125798984,19.89512013023,20.01975835255,20.14517740386,20.24276822054,20.36958425827,20.49719488615,20.62560496443,20.72552315291,20.85536353332,20.98601745346,21.08768161561,21.21979095359,21.352727802,21.48649759166,21.59058626784,21.72584618454,21.86195334633,21.99891331359,22.10548432428,22.24396995552,22.38332303719,22.52354926226,22.63266180681,22.7744500803,22.91712649141,23.06069686887,23.17241155847,23.3175812365,23.46366023269,23.57732716458,23.72503340608,23.87366512928,24.02322785632,24.1396055475,24.29083432682,24.44301065897,24.59614033986,24.71529329517,24.87012861873,25.02593409262,25.18271565096,25.30471019771,25.46323807533,25.62275923969,25.78327976642,25.90818367164,26.07049216435,26.23381763196,26.36090411207,26.52604894185,26.69222821075,26.85944870765,26.98956598001,27.15864922771,27.32879158412,27.5],description:"Semithirds temperament, g=193.199615, 5-limit"},sensisynch19:{frequencies:[261.6255653006,272.4389540986,281.73678149918,293.38139793239,303.39395317428,313.74821628003,326.71591476706,337.86611241253,351.83064080634,363.83795665907,376.25506171692,391.80626469239,405.17787315281,421.92450060765,436.32398762558,454.35793210906,469.86431365505,485.89989602801,505.98288939536,523.2511306012],description:"Sensi[19] in synch (brat=-1) tuning, generator ~162/125 satisfies g^9-g^7-4=0"},serre_enh:{frequencies:[261.6255653006,265.7783520514,279.06726965397,348.83408706747,392.4383479509,398.6675280771,418.60090448096,523.2511306012],description:"Dorian mode of the Serre's Enharmonic"},"sev-elev":{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,336.37572681506,359.73515228832,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Seven-Eleven Blues" of Pitch Palette'},sha:{frequencies:[261.6255653006,266.96486255163,280.31310567921,284.82183961519,290.63452941521,294.32876096318,300.33547037059,305.16625703708,320.42456924675,326.96384715385,343.31203882349,348.83408706747,355.95315006884,373.75080757229,392.4383479509,400.44729382745,406.8883429195,420.46965851882,427.23275920923,435.9517939049,457.74938532681,480.63685362987,490.44577048562,498.33441009638,523.2511306012],description:"Three chains of sqrt(3/2) separated by 10/7"},shahin:{frequencies:[261.6255653006,277.01530443593,282.55561052465,294.32876096318,310.50067090621,317.47821407264,328.55303549378,348.83408706747,357.66532977804,371.78369805875,376.74081403286,392.4383479509,415.52295665389,428.11456140098,441.49314144476,463.20591889287,478.90781444856,495.71159741166,523.2511306012],description:"Mohajeri Shahin Iranian style scale, TL 9-4-2006"},shahin_wt:{frequencies:[261.6255653006,276.93928561067,294.25491037444,311.47852302926,329.62755691287,348.92163548373,370.73795561568,392.4383479509,415.30469757995,439.61371330969,467.10055427519,494.44133512215,523.2511306012],description:"Mohajeri Shahin, well temperament, TL 28-12-2006"},shalfun:{frequencies:[261.6255653006,269.43930514995,277.46904793785,285.74220762407,294.32876096318,302.80736724606,311.45900631024,320.30554027987,329.50323085718,338.98103822311,348.83408706747,359.12912189513,369.78878487717,380.87868001252,392.4383479509,404.24222079821,416.2697936366,428.68354137408,441.49314144476,454.4477424016,467.68960547122,481.19471271032,494.94053216156,508.90014647073,523.2511306012],description:"d'Erlanger vol.5, p.40. After Alexandre ^Salfun (Chalfoun)"},"sharm1c-conm":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Subharm1C-ConMixolydian"},"sharm1c-conp":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharm1C-ConPhryg"},"sharm1c-dor":{frequencies:[261.6255653006,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,479.64686971777,547.03527290125,523.2511306012],description:"Subharm1C-Dorian"},"sharm1c-lyd":{frequencies:[261.6255653006,309.19384990071,323.91736656265,340.11323489078,382.37582620857,377.90359432309,485.87604984397,503.87145909745,523.2511306012],description:"Subharm1C-Lydian"},"sharm1c-mix":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,366.27579142084,457.84473927605,488.36772189445,523.2511306012],description:"Subharm1C-Mixolydian"},"sharm1c-phr":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,392.4383479509,483.00104363188,502.32108537715,523.2511306012],description:"Subharm1C-Phrygian"},"sharm1e-conm":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,430.91269578922,443.97065626768,457.84473927605,523.2511306012],description:"Subharm1E-ConMixolydian"},"sharm1e-conp":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Subharm1E-ConPhrygian"},"sharm1e-dor":{frequencies:[261.6255653006,338.57426097725,348.83408706747,359.73515228832,383.71749577421,411.12588832951,500.50108144463,511.62332769895,523.2511306012],description:"Subharm1E-Dorian"},"sharm1e-lyd":{frequencies:[261.6255653006,323.91736656265,331.81779013735,340.11323489078,382.37582620857,377.90359432309,503.87145909745,513.37846775967,523.2511306012],description:"Subharm1E-Lydian"},"sharm1e-mix":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,366.27579142084,488.36772189445,505.20798816668,523.2511306012],description:"Subharm1E-Mixolydian"},"sharm1e-phr":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,392.4383479509,502.32108537715,512.57253609913,523.2511306012],description:"Subharm1E-Phrygian"},"sharm2c-15":{frequencies:[261.6255653006,327.03195662575,341.25073734861,356.76213450082,392.4383479509,461.69217405988,490.54793493862,523.2511306012],description:"Subharm2C-15-Harmonia"},"sharm2c-hypod":{frequencies:[261.6255653006,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,465.11211608996,492.47165233054,523.2511306012],description:"SHarm2C-Hypodorian"},"sharm2c-hypol":{frequencies:[261.6255653006,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,475.68284600109,498.33441009638,523.2511306012],description:"SHarm2C-Hypolydian"},"sharm2c-hypop":{frequencies:[261.6255653006,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,470.92601754108,495.71159741166,523.2511306012],description:"SHarm2C-Hypophrygian"},"sharm2e-15":{frequencies:[261.6255653006,341.25073734861,348.83408706747,356.76213450082,392.4383479509,490.54793493862,506.37206187213,523.2511306012],description:"Subharm2E-15-Harmonia"},"sharm2e-hypod":{frequencies:[261.6255653006,334.88072358477,341.71502406609,348.83408706747,364.00078650518,380.54627680087,492.47165233054,507.3950357345,523.2511306012],description:"SHarm2E-Hypodorian"},"sharm2e-hypol":{frequencies:[261.6255653006,327.03195662575,337.58137458142,348.83408706747,373.75080757229,402.50086969323,498.33441009638,510.48890790361,523.2511306012],description:"SHarm2E-Hypolydian"},"sharm2e-hypop":{frequencies:[261.6255653006,348.83408706747,355.41586229515,362.25078272391,376.74081403286,392.4383479509,495.71159741166,509.10920815252,523.2511306012],description:"SHarm2E-Hypophrygian"},sherwood:{frequencies:[261.6255653006,279.50101530337,292.73346657716,312.73435005323,327.54017122074,349.91920725962,366.48547573919,391.52543233055,418.27599117656,438.07873640926,468.01000025525,490.16733894289,523.65750116998],description:"Sherwood's improved meantone temperament"},shrutar:{frequencies:[261.6255653006,269.80136421624,277.49581689502,285.40970760065,294.32876096318,304.37698984459,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,368.95121675679,379.48299988042,392.4383479509,405.83598431812,417.42065019394,428.11456140098,441.49314144476,457.84473927605,470.92601754108,490.54793493862,505.97733342682,523.2511306012],description:"Paul Erlich's Shrutar tuning (from 9th fret) tempered with Dave Keenan"},shrutar_temp:{frequencies:[261.6255653006,269.67683152447,277.97586744827,286.53029793775,295.34798250635,304.4370214407,313.80576690868,327.74897996102,337.83512841993,348.23166805304,358.94815083964,369.99442271164,381.38063259971,393.11724175776,405.21503337437,417.68512248001,430.53896367224,443.78837151315,463.50705251482,477.77102045752,492.47394780842,507.62934310616,523.2511306012],description:"Shrutar temperament, 11-limit, g=52.474, 1/2 oct."},shrutart:{frequencies:[261.6255653006,269.83675183105,278.27349931787,286.14641333958,294.32706056425,305.2349557921,313.94319125793,327.02936607233,337.2932679302,348.82502010853,358.79758764604,369.99442271164,381.540672377,392.44854854484,405.86600994967,418.6042204156,436.0530078362,448.49343183014,465.11480315564,478.41198231361,491.94721442498,507.32849364948,523.2511306012],description:"Paul Erlich's 'Shrutar' tuning tempered by Dave Keenan, TL 29-12-2000"},siamese:{frequencies:[261.6255653006,269.26067151764,288.95340229325,296.22023396764,319.13574119147,352.26720984209,362.5475414329,388.79334481031,400.18585940536,429.40436513853,443.77760270734,473.98350631811,523.2511306012],description:"Siamese Tuning, after Clem Fortuna's Microtonal Guide"},silbermann1:{frequencies:[261.6255653006,275.15551885617,293.66476791741,312.53552595124,327.77163799145,349.82028288879,367.9112241576,391.99543598175,411.56972129721,438.75957425603,467.74568907204,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 1"},silbermann2:{frequencies:[261.6255653006,275.00020270933,293.00227310437,312.18279369479,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 2, 1/6 Pyth. comma meantone"},silbermann2a:{frequencies:[261.6255653006,275.00020270933,293.00227310437,310.77584116741,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Modified Silbermann's temperament nr. 2, also used by Hinsz in Midwolda"},silver:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.53543886896,349.23174545031,369.98176232374,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating chromatic scale, A.L.Leigh Silver JASA 29/4, 476-481, 1957"},silver_10:{frequencies:[261.6255653006,270.26884019355,294.27266239927,320.41022551991,330.99364634362,360.39280035711,392.40094712608,405.36462386145,441.36692569059,480.56953386201,523.2511306012],description:"Ten-tone MOS from 350.9 cents"},silver_11:{frequencies:[261.6255653006,277.73657748574,294.83971256733,315.81001885226,335.25773244276,355.90304440354,381.21644531515,404.69191411574,429.61301214396,460.16899244324,488.50639225338,523.2511306012],description:"Eleven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_11a:{frequencies:[261.6255653006,272.21316796874,283.22923537857,314.22802528801,326.94437231289,340.17533123945,377.40674067136,392.67983758722,408.5710143206,453.28817432381,471.63208149661,523.2511306012],description:"Eleven-tone MOS from 317.17 cents"},silver_11b:{frequencies:[261.6255653006,281.48899567641,302.85877036442,316.87090334834,340.92873240472,366.81310701257,383.78194911277,412.91987382947,444.27004083312,464.82473992747,500.11279777071,523.2511306012],description:"Eleven-tone MOS from 331.67 cents"},silver_7:{frequencies:[261.6255653006,277.73649727228,315.81000061035,335.2576162513,381.21640127531,404.69175048432,460.16888612163,523.2511306012],description:"Seven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_8:{frequencies:[261.6255653006,288.49477506296,306.46277751246,337.93681424842,358.98416079003,395.852196628,420.50662316693,492.57276348379,523.2511306012],description:"Eight-tone MOS from 273.85 cents"},silver_9:{frequencies:[261.6255653006,294.18258755347,307.6617709921,345.94759796409,361.79860795042,406.82129262791,425.46148093979,478.40645551359,500.32661205896,523.2511306012],description:"Nine-tone MOS from 280.61 cents"},silvermean:{frequencies:[261.6255653006,286.15296204753,327.03195662575,345.42750418595,392.4383479509,416.96574469783,474.19633710734,523.2511306012],description:"First 6 approximants to the Silver Mean, 1+ sqr(2) reduced by 2/1"},simonton:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Simonton Integral Ratio Scale, JASA 25/6 (1953): A new integral ratio scale"},sims:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Ezra Sims' 18-tone mode"},sims2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Sims II"},sims_24:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.97716313189,283.42769574232,286.15296204753,294.32876096318,302.50455987882,305.22982618403,310.68035879446,316.13089140489,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"See his article, Reflections on This and That, 1991 p.93-106"},sin:{frequencies:[261.6255653006,275.08939827539,302.09917071192,334.63165645627,369.99442271164,407.01712569342,445.10399729103,483.9175316883,523.2511306012,562.97086325858,602.98541169118,643.23087116255,683.66056756853,724.23972686276,764.94197926416,805.74682982871,846.63811574624,887.6028851904,928.63083777952,969.71346974542,1010.84345850104,1052.01529432917],description:"1/sin(2pi/n), n=4..25"},sinemod12:{frequencies:[261.6255653006,270.6035983646,282.0485507085,292.16840832754,301.82804372114,314.42520179993,326.24260278214,336.76433478807,350.4641458176,364.21811789193,375.86233664064,390.61306119732,406.50371126161,419.61372202861,435.38454314112,453.55584308858,468.551249676,485.36279478778,505.89080731022,523.2511306012],description:"Sine modulated F=12, A=-.08203754"},sinemod8:{frequencies:[261.6255653006,272.43905323978,281.98404270447,290.99567087708,301.68076007415,314.40050256998,326.99158834066,337.97331861211,348.96407538813,362.38276875396,377.76595534172,392.29216556304,405.04934945717,418.6525822649,435.418746849,453.77727371169,470.43955130022,485.47382867757,502.48255971303,523.2511306012],description:"Sine modulated F=8, A=.11364155. Deviation minimal3/2, 4/3, 5/4, 6/5, 5/3, 8/5"},singapore:{frequencies:[261.6255653006,291.46787011619,321.35550581422,354.51258839996,385.70651737906,428.95813651779,462.1422075194,523.2511306012],description:"An observed xylophone tuning from Singapore"},sintemp6:{frequencies:[261.6255653006,277.18263097687,292.42974339757,312.08834713741,327.870830746,349.91196330865,369.15973155124,391.11111150212,416.11779639122,437.6550518996,467.60417912673,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/6 Pyth, one cycle, f0=-90 degrees"},sintemp6a:{frequencies:[261.6255653006,276.17281343288,293.21211353711,310.64741311165,328.42667470471,349.22823143301,368.43838932195,391.77416758435,414.19655102258,438.82595961933,465.90062756558,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/12 Pyth, one cycle, f0= D-A"},sintemp_19:{frequencies:[261.6255653006,272.86445838226,281.30973389888,292.50627485027,304.14845459111,313.56198179795,327.03195662575,338.65502209741,350.02113164026,365.30494475029,376.98581738134,391.19763056219,407.47965586966,419.94695489748,437.42555500456,453.91586039553,468.43012697388,488.88431353627,505.29249383438,523.2511306012],description:"Sine modulated thirds, A=7.366 cents, one cycle over fifths, f0=90 degrees"},sintemp_7:{frequencies:[261.6255653006,291.06608881088,319.67397341855,351.09362859375,390.60192440975,432.07134328681,473.03044489876,523.2511306012],description:"Sine modulated fifths, A=8.12 cents, one cycle, f0=90 degrees"},slen_pel:{frequencies:[261.6255653006,261.6255653006,283.17034563789,298.45295203849,338.50336851425,364.68988616898,346.01554587335,389.06292924114,398.38689497567,420.13030572059,455.51656649021,493.31307433255,523.2511306012],description:"Pelog white, Slendro black"},slen_pel16:{frequencies:[261.6255653006,261.6255653006,285.30470202322,285.30470202322,297.93622032612,311.12698372208,339.28638158975,386.37547528213,386.37547528213,403.48177901006,421.34544350737,440,523.2511306012],description:"16-tET Slendro and Pelog"},slen_pel23:{frequencies:[261.6255653006,261.6255653006,295.14355885465,295.14355885465,286.38154466424,343.14246862785,313.47984535337,398.94762483098,398.94762483098,387.10394860926,450.05828708186,423.73315704439,523.2511306012],description:"23-tET Slendro and Pelog"},slen_pel_jc:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,279.06726965397,341.71502406609,348.83408706747,392.4383479509,392.4383479509,392.4383479509,448.50096908674,418.60090448096,523.2511306012],description:"Slendro/JC PELOG S1c,P1c#,S2d,eb,P2e,S3f,P3f#,S4g,ab,P4a,S5bb,P5b"},slen_pel_schmidt:{frequencies:[261.6255653006,261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,392.4383479509,457.84473927605,457.84473927605,490.54793493862,523.2511306012],description:"Dan Schmidt (Pelog white, Slendro black)"},slendro:{frequencies:[261.6255653006,298.45295203849,346.01554587335,398.38689497567,455.51656649021,523.2511306012],description:"Observed Javanese Slendro scale, Helmholtz/Ellis p. 518, nr.94"},slendro10:{frequencies:[261.6255653006,304.21577360535,342.24274530602,391.67780832635,463.92905474816,523.2511306012],description:"Low gender from Singaraja (banjar Lod Peken), Bali. 1/1=172 Hz. McPhee, 1966."},slendro11:{frequencies:[261.6255653006,299.11221417218,343.62760815601,387.36203100102,452.96366529656,523.2511306012],description:"Low gender from Sawan, Bali. 1/1=167.5 Hz. McPhee, 1966."},slendro2:{frequencies:[261.6255653006,299.13295468097,343.58614396263,395.91119354826,450.08870388136,523.2511306012],description:"Gamelan slendro from Ranchaiyuh, distr. Tanggerang, Batavia. 1/1=282.5 Hz"},slendro3:{frequencies:[261.6255653006,298.44694115772,339.14425131559,391.46936437571,453.48431318771,522.28214737536],description:"Gamelan kodok ngorek. 1/1=270 Hz"},slendro4:{frequencies:[261.6255653006,294.5074669504,344.54514337401,400.3014113889,467.49486258632,523.2511306012],description:"Low gender in saih lima from Kuta, Bali. 1/1=183 Hz. McPhee, 1966"},slendro5_1:{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7; from Lou Harrison"},slendro5_2:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 2"},slendro5_4:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 4"},slendro6:{frequencies:[261.6255653006,295.05549864457,341.56671025356,398.25224940202,461.478427683,523.2511306012],description:"Low gender from Klandis, Bali. 1/1=180 Hz. McPhee, 1966"},slendro8:{frequencies:[261.6255653006,309.85821141747,350.78288084997,406.32350365121,467.71050779996,523.2511306012],description:"Low gender from Tabanan, Bali. 1/1=179 Hz. McPhee, 1966."},slendro9:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Low gender from Singaraja (banjar Panataran), Bali. 1/1=175 Hz. McPhee, 1966."},slendro_7_1:{frequencies:[261.6255653006,299.00064605783,341.71502406609,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 1, From HMSL Manual, also Lou Harrison, Jacques Dudon"},slendro_7_2:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 2, From Lou Harrison, Jacques Dudon's APTOS"},slendro_7_3:{frequencies:[261.6255653006,294.32876096318,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:'Septimal Slendro 3, Harrison, Dudon, called "MILLS" after Mills Gamelan'},slendro_7_4:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:'Septimal Slendro 4, from Lou Harrison, Jacques Dudon, called "NAT"'},slendro_7_5:{frequencies:[261.6255653006,305.22982618403,343.38355445704,400.61414686654,467.3831713443,523.2511306012],description:"Septimal Slendro 5, from Jacques Dudon"},slendro_7_6:{frequencies:[261.6255653006,299.00064605783,341.71502406609,390.53145607553,455.62003208812,523.2511306012],description:"Septimal Slendro 6, from Robert Walker"},slendro_a1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:`Dudon's Slendro A1, "Seven-Limit Slendro Mutations", 1/1 8:2'94 hexany 1.3.7.21`},slendro_a2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,448.50096908674,523.2511306012],description:`Dudon's Slendro A2 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_alv:{frequencies:[261.6255653006,299.00064605783,348.83408706747,406.97310157871,465.11211608996,523.2511306012],description:"Bill Alves, slendro for Gender Barung, 1/1 vol.9 no.4, 1997. 1/1=282.86"},slendro_ang:{frequencies:[261.6255653006,299.00064605783,340.82516392797,388.43396508487,445.83123341082,523.2511306012],description:"Gamelan Angklung Sangsit, North Bali. 1/1=294 Hz"},slendro_av:{frequencies:[261.6255653006,298.97057995496,344.02264297658,395.86362945285,454.20288100724,525.67465946865],description:"Average of 30 measured slendro gamelans, W. Surjodiningrat et al., 1993."},slendro_dudon:{frequencies:[261.6255653006,305.22982618403,348.83408706747,399.70572476481,457.84473927605,523.2511306012],description:'Dudon\'s Slendro from "Fleurs de lumie`re"'},slendro_gum:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.92601754108,525.62941881859],description:"Gumbeng, bamboo idiochord from Banyumas. 1/1=440 Hz"},slendro_ky1:{frequencies:[261.6255653006,297.58776037991,344.33874539242,394.68595744625,449.52853279627,523.2511306012],description:"Kyahi Kanyut Me`sem slendro, Mangku Nagaran, Solo. 1/1=291 Hz"},slendro_ky2:{frequencies:[261.6255653006,302.42139140287,345.87786599062,395.54249276388,453.1886900261,523.2511306012],description:"Kyahi Pengawe' sari, Paku Alaman, Jogya. 1/1=295 Hz"},slendro_laras:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012,598.00129211566,697.66817413493],description:'Lou Harrison, gamelan "Si Betty"'},slendro_m:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:`Dudon's Slendro M from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_madu:{frequencies:[261.6255653006,300.52885648597,345.61604384578,394.49404533893,447.94973572445,522.94897617031],description:"Sultan's gamelan Madoe kentir, Jogjakarta, Jaap Kunst"},slendro_mat:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,455.62003208812,457.84473927605,523.2511306012],description:`Dudon's Slendro Matrix from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_pa:{frequencies:[261.6255653006,304.19649364034,353.69443592699,411.24653512154,478.16333951147,523.2511306012],description:'"Blown fifth" primitive slendro, von Hornbostel'},slendro_pas:{frequencies:[261.6255653006,300.35531433711,343.03050002254,393.12919962609,450.54468214486,523.2511306012],description:"Gamelan slendro of regent of Pasoeroean, Jaap Kunst"},slendro_pb:{frequencies:[261.6255653006,304.72408298441,342.83241505062,399.30842833955,449.24533531117,523.2511306012],description:'"Blown fifth" medium slendro, von Hornbostel'},slendro_pc:{frequencies:[261.6255653006,299.48910562989,342.83241505062,392.44854854484,449.24533531117,523.2511306012],description:'"Blown fifth" modern slendro, von Hornbostel'},slendro_pliat:{frequencies:[261.6255653006,299.73468146833,339.98478643783,393.08060743874,447.03290350508,523.2511306012,599.46936293666,679.96957287566,786.16121487749,894.06580701017],description:"Gender wayang from Pliatan, South Bali (Slendro), 1/1=305.5 Hz"},slendro_q13:{frequencies:[261.6255653006,307.00725675226,360.2608752926,400.8015646157,470.32478922042,523.2511306012],description:"13-tET quasi slendro, Blackwood"},slendro_s1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,398.6675280771,457.84473927605,523.2511306012],description:`Dudon's Slendro S1 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_s2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,455.62003208812,523.2511306012],description:"Dudon's Slendro S2"},slendro_udan:{frequencies:[261.6255653006,305.22982618403,351.32575911795,402.50086969323,465.11211608996,523.2511306012],description:"Slendro Udan Mas (approx)"},slendro_wolf:{frequencies:[261.6255653006,298.18866107946,339.86157848985,395.0032340925,450.20632964813,523.2511306012],description:"Daniel Wolf's slendro. Tuning List 30 5 1997"},slendrob1:{frequencies:[261.6255653006,307.44024341205,355.66611281954,409.9203247543,476.83364134848,523.2511306012],description:"Gamelan miring of Musadikrama, desa Katur, Bajanegara. 1/1=434 Hz"},slendrob2:{frequencies:[261.6255653006,307.55978097874,346.50416420081,398.42969909174,449.35693171058,523.2511306012],description:"Gamelan miring from Bajanegara. 1/1=262 Hz"},slendrob3:{frequencies:[261.6255653006,304.90191053936,342.27700149692,398.33972372326,447.51732140012,523.2511306012],description:"Gamelan miring from Ngumpak, Bajanegara. 1/1=266 Hz"},slendroc1:{frequencies:[261.6255653006,297.59222964268,344.42030317161,394.72197985873,449.50490455178,523.2511306012],description:"Kyahi Kanyut mesem slendro (Mangku Nagaran Solo). 1/1=291 Hz"},slendroc2:{frequencies:[261.6255653006,302.44445076078,346.01554587335,396.09235530397,453.15466093696,523.2511306012],description:"Kyahi Pengawe sari (Paku Alaman, Jogja). 1/1=295 Hz."},slendroc3:{frequencies:[261.6255653006,301.39807245198,344.42030317161,395.40657391157,451.84778706363,523.2511306012],description:"Gamelan slendro of R.M. Jayadipura, Jogja. 1/1=231 Hz"},slendroc4:{frequencies:[261.6255653006,299.14332201883,343.8239850859,396.09235530397,450.28451247858,523.2511306012],description:"Gamelan slendro, Rancha iyuh, Tanggerang, Batavia. 1/1=282.5 Hz"},slendroc5:{frequencies:[261.6255653006,299.83528893666,340.07120590121,393.12919962609,447.17417015401,523.2511306012],description:"Gender wayang from Pliatan, South Bali. 1/1=611 Hz"},slendroc6:{frequencies:[261.6255653006,296.73398952435,343.8239850859,396.7793260952,453.9405988926,527.19506190947,607.33963549452,696.44215167899,797.23415748628,918.4302691641,1071.58188326661],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},slendrod1:{frequencies:[261.6255653006,292.47977325983,340.6610152784,389.06292924114,444.85552088095,523.2511306012],description:"Gender wayang from Ubud (S. Bali). 1/1=347 Hz"},smith_eh:{frequencies:[261.6255653006,272.7117507892,292.30354792656,313.30283124826,326.5788018031,350.04044239751,364.87314355143,391.08587539224,407.65784362321,436.94425707006,468.33462614046,488.17995458879,523.2511306012],description:"Robert Smith's Equal Harmony temperament (1749)"},smith_mq:{frequencies:[261.6255653006,273.37438418823,292.50629623572,312.97714101186,327.03200500996,349.91910755601,365.63292511375,391.22148485648,408.79006910398,437.39894995248,468.01000388518,489.02693031834,523.2511306012],description:"Robert Smith approximation of quarter comma meantone fifth"},"scalamakesrc2\\smithgw-ball":{frequencies:[261.6255653006,267.07609791103,272.52663052146,274.70684356563,280.31310567921,286.15296204753,294.32876096318,300.46061014991,305.22982618403,306.59245933664,313.95067836072,320.49131749323,327.03195662575,333.84512238879,336.37572681506,343.38355445704,350.39138209902,357.69120255941,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,480.73697623985,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Ball 2 around tetrad lattice hole"},smithgw46:{frequencies:[261.6255653006,273.72380653152,313.47993226845,327.97605323154,364.46098649856,392.98113253789,436.69740466987,456.89141950378,523.2511306012],description:'Gene Ward Smith 46-tET subset "Star"'},smithgw46a:{frequencies:[261.6255653006,282.09853500802,313.47993226845,327.97605323154,375.61187043063,392.98113253789,436.69740466987,470.87026054824,523.2511306012],description:'46-tET version of "Star", alternative version'},smithgw72a:{frequencies:[261.6255653006,285.30470202322,299.37379946195,326.46944327063,342.56848033562,373.57357677338,391.99543598175,427.47405410759,435.78442404634,457.27406033445,498.66089874196,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72c:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72d:{frequencies:[261.6255653006,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72e:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72f:{frequencies:[261.6255653006,326.46944327063,349.22823143301,435.78442404634,466.16376151809,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72g:{frequencies:[261.6255653006,326.46944327063,349.22823143301,391.99543598175,419.32216217931,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72h:{frequencies:[261.6255653006,279.86396690685,314.13668154225,349.22823143301,391.99543598175,435.78442404634,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 09-01-2002"},smithgw72i:{frequencies:[261.6255653006,279.86396690685,293.66476791741,314.13668154225,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,470.6732130613,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset version of Duodene, TL 02-06-2002"},smithgw72j:{frequencies:[261.6255653006,274.52698453615,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"{225/224, 441/440} tempering of decad, 72-et version (2002)"},smithgw84:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:'Gene Ward Smith 84-tET subset, 11-limit temperament "Orwell", 2002'},smithgw_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,350.39138209902,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,490.54793493862,523.2511306012],description:"Gene Ward Smith chord analogue to periodicity blocks, TL 12-07-2002"},smithgw_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,299.00064605783,305.22982618403,320.49131749323,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,427.14378008261,448.50096908674,457.84473927605,478.40103369253,488.36772189445,512.57253609913,523.2511306012],description:"Gene Ward Smith symmetrical 7-limit JI version of Blackjack, TL 10-5-2002"},smithgw_45:{frequencies:[261.6255653006,267.02002970726,269.13627541126,274.68560334708,276.86260193655,282.57123920205,288.39758300936,290.68325478745,296.67686217097,299.02814898089,305.19382000629,311.48661940174,313.95528147508,320.42873367481,322.96826575344,329.62755691287,336.42415617173,339.09045868095,346.08217376006,348.82502010853,356.01745236555,363.35818557229,366.23795155866,373.78942366597,376.75185941212,384.52011812375,392.44854854484,395.55886785613,403.71490654806,406.9145164708,415.30469757995,423.86787605389,427.22720671064,436.03621571368,439.49198556474,448.5538823653,457.80262665414,461.43090443914,470.94516310483,474.67759826036,484.46499093218,494.45418731234,498.37294408452,508.64890891624,512.68016480935,523.2511306012],description:"Gene Ward Smith large limma repeating 5-tone MOS"},smithgw_58:{frequencies:[261.6255653006,264.89588486686,267.57160087561,269.80136421624,274.70684356563,279.06726965397,282.55561052465,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.49231810831,305.22982618403,310.07474405997,313.95067836072,317.12189733406,319.76457981184,323.76163705949,327.03195662575,332.97799220076,336.37572681506,340.54567384169,343.38355445704,348.83408706747,353.19451315581,356.76213450082,359.73515228832,366.27579142084,370.01329949656,373.75080757229,380.54627680087,383.71749577421,387.59343007496,392.4383479509,398.6675280771,401.98975747775,406.97310157871,411.12588832951,418.60090448096,423.83341578697,428.11456140098,431.68218274599,436.04260883433,441.49314144476,448.50096908674,452.23847716247,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,484.4917875937,490.54793493862,498.33441009638,507.3950357345,511.62332769895,516.79124009995,523.2511306012],description:"Gene Ward Smith 58-tone epimorphic superset of Partch's 43-tone scale"},smithgw_9:{frequencies:[261.6255653006,279.06726965397,305.22982618403,327.03195662575,348.83408706747,392.4383479509,418.60090448096,448.50096908674,490.54793493862,523.2511306012],description:'Gene Ward Smith "Miracle-Magic square" tuning, genus chromaticum of ji_12a'},"smithgw_al-baked":{frequencies:[261.6255653006,277.59364499865,293.85651796007,311.0721560172,330.05816364769,349.39467974592,369.86402907174,392.4383479509,415.42941801053,439.76742419786,466.60823379256,493.94455998605,522.88238970142],description:"Baked alaska, with beat ratios of 2 and 3/2"},"smithgw_al-fried":{frequencies:[261.6255653006,277.00141553195,293.28091128458,310.96067952124,329.23597434237,348.58531822795,369.59898601143,391.32048195179,414.31855981944,439.29480556849,465.11235566178,492.44721175277,522.13326741512],description:"Fried alaska, with octave-fifth brats of 1 and 2"},smithgw_asbru:{frequencies:[261.6255653006,275.52281548997,293.66476791741,313.00128725319,329.62755691287,351.33206601369,367.77883484915,391.99543598175,415.30469757995,440,468.97204376297,490.92584627687,523.2511306012],description:"Modified bifrost (2003)"},smithgw_bifrost:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,413.66634097248,437.39889945791,466.55882736321,489.02683710225,523.2511306012],description:"Six meantone fifths, four pure, two of sqrt(2048/2025 sqrt(5))"},smithgw_cauldron:{frequencies:[261.6255653006,275.03056468741,291.83931845209,312.58541512404,325.54230007562,350.31873582686,364.83969341757,390.77519652096,414.65779561271,435.90375768372,469.07960710644,486.243977751,523.2511306012],description:"Circulating temperament with two pure 9/7 thirds"},smithgw_ck:{frequencies:[195.99771799087,198.06437430898,200.15282320192,202.2632921446,203.72940721765,205.87758869102,208.04842120778,210.24214482145,211.76609376362,213.99901760782,216.25548480725,218.5357448459,220.11981156469,222.44081817627,224.78629944762,227.15651084977,228.80306427848,231.21563094,233.65363506284,235.34728316698,237.82885399313,240.33658984216,242.87076938222,244.63122826831,247.21069030843,249.81735238129,252.45149840587,254.28140507407,256.96262135434,259.67210915034,262.4101678886,264.31225911206,267.09924514556,269.91561641866,272.7616843206,274.73881033537,277.63573538138,280.56320805899,282.59688215652,285.57666497222,288.58786914203,291.63082264784,293.74472081062,296.84205135845,299.9720393359,303.13503255793,305.33231946532,308.55183127196,311.80529233825,315.09305703284,317.37702217863,320.72353853051,324.10533989702,327.52280172307,329.89686439088,333.37539375097,336.89059979959,339.33256534187,342.91058750208,346.52633537645,350.18021075922,352.71850659998,356.43767199462,360.19605541958,363.99406623991,366.6324923874,370.49837299068,374.40501441099,378.35285076765,381.09535716275,385.11373623244,389.17448849491,391.99543598174],description:"Catakleismic temperament, g=316.745, 11-limit"},smithgw_decab:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,439.53094970501,488.36772189445,523.2511306012],description:"(10/9) <==> (16/15) transform of decaa"},smithgw_decac:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,498.33441009638,523.2511306012],description:"inversion of decaa"},smithgw_decad:{frequencies:[261.6255653006,280.31310567921,311.45900631024,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,467.18850946536,498.33441009638,523.2511306012],description:"inversion of decab"},smithgw_diff13:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,313.95067836072,320.35783506196,336.37572681506,406.97310157871,427.32175665765,436.04260883433,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"mod 13 perfect difference set, 7-limit"},smithgw_dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},smithgw_exotic1:{frequencies:[261.6255653006,274.95996987324,293.39100498914,313.05750197389,327.96500300935,349.94905375768,367.78508905896,392.4383479509,411.12588832951,438.68435539504,468.09011223803,491.94750426812,523.2511306012],description:"Exotic temperament featuring four pure 14/11 thirds and two pure fifths"},smithgw_glumma:{frequencies:[261.6255653006,269.10058145205,299.00064605783,313.95067836072,327.03195662575,358.80077526939,373.75080757229,392.4383479509,436.04260883433,448.50096908674,457.84473927605,512.57253609913,523.2511306012],description:"Gene Smith's Glumma scale, 7-limit, 2002"},smithgw_gm:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:'Gene Ward Smith "Genesis Minus" periodicity block'},smithgw_graileq:{frequencies:[261.6255653006,274.83794140225,293.02845982215,312.42294214419,328.20064112269,350.39711148969,365.67350481015,391.53226450123,414.40482204179,438.61355268439,469.63029662389,490.10494633744,523.2511306012],description:"56% RMS grail + 44% JI grail"},smithgw_grailrms:{frequencies:[261.6255653006,274.64037495938,293.11160698959,312.82513967025,328.38692028068,350.6222941497,365.93760986436,391.94882001935,414.52240989365,438.39608269016,469.55771333591,490.068176414,523.2511306012],description:"RMS optimized Holy Grail"},smithgw_hahn12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Hahn-reduced 12 note scale, Fokker block 225/224, 126/125, 64/63"},smithgw_hahn15:{frequencies:[261.6255653006,279.06726965397,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Hahn-reduced 15 note scale"},smithgw_hahn16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Hahn-reduced 16 note scale"},smithgw_hahn19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 19 note scale"},smithgw_hahn22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 22 note scale"},smithgw_indianred:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"32805/32768 Hahn-reduced"},smithgw_klv:{frequencies:[261.6255653006,271.78681896552,282.34272472006,293.30861211826,314.10491445143,326.30440921209,338.97771913949,352.14324873572,377.11107157735,391.75765725694,406.97310157871,422.77949745352,452.75560414132,470.34014155688,488.60764618722,523.2511306012],description:"Variant of kleismic with 9/7 thirds, g=316.492"},smithgw_meandin:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,470.92601754108,504.56359022259,523.2511306012],description:"Gene Smith, inverted detempered 7-limit meantone"},smithgw_meanred:{frequencies:[261.6255653006,281.29980781121,291.99281841585,313.95067836072,325.57848126297,350.39138209902,363.36884069528,390.69417751556,420.46965851882,436.04260883433,468.83301301868,486.65469735975,523.2511306012],description:"171-et Hahn reduced rational Meantone[12]"},smithgw_meantune:{frequencies:[261.6255653006,273.55401844854,279.77233440758,292.56174910339,312.85829351777,327.16018629281,334.59705725462,349.85254391288,365.77071543428,374.29488261541,391.03456781852,418.40555295943,437.51985793188,468.14464283802,489.08159472971,500.47948461038,523.2511306012],description:"Meantune scale/temperament, Gene Ward Smith, 2003"},smithgw_mir22:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,285.40970760065,299.00064605783,305.22982618403,319.76457981184,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,428.11456140098,448.50096908674,457.84473927605,479.64686971777,490.54793493862,512.78610798918,523.2511306012],description:"11-limit Miracle[22]"},smithgw_mmt:{frequencies:[261.6255653006,273.37431312998,292.50627485027,307.38829724655,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.12588832951,437.39890198442,459.65271605653,489.02683710225,523.2511306012],description:"Modified meantone with 5/4, 14/11 and 44/35 major thirds, TL 17-03-2003"},smithgw_modmos12a:{frequencies:[261.6255653006,265.27772209197,292.31087910123,304.72408298441,326.59518553839,340.46429857933,364.90060015836,391.09077971329,407.69874723177,425.01198472693,455.51656649021,488.21056770985,523.2511306012],description:"A 12-note modmos in 50-et meantone"},smithgw_octoid:{frequencies:[261.6255653006,272.34559486824,274.88944875317,277.45706359738,280.04865972334,282.66446436432,285.30470202322,296.99497716113,299.76906949343,302.56907333554,305.39522895084,308.24778413898,311.12698372208,323.87531915696,326.90048829645,329.95391413777,333.03585868997,336.14659218049,339.28638158975,353.18853996009,356.48751029933,359.81729479041,363.17817915623,366.5704580819,369.99442271164,385.15483391523,388.75238658,392.38354231563,396.04861270515,399.74791910495,403.48177901006,420.01432465796,423.93748365756,427.89728706578,431.89407466632,435.9281969008,440,458.02886886968,462.30710409523,466.62530033172,470.98382811593,475.38306960714,479.82340237272,499.48402328631,504.14947188193,508.85849826899,513.6115065207,518.40891338474,523.2511306012],description:"Octoid temperament, g=16.096, oct=1/8, 11-limit"},smithgw_orw18r:{frequencies:[261.6255653006,269.10058145205,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,448.50096908674,457.84473927605,474.80195184183,490.54793493862,523.2511306012],description:'Rational version of two cycles of 9-tone "Orwell"'},smithgw_pel1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 1"},smithgw_pel2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 2"},smithgw_pel3:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 3"},smithgw_pk:{frequencies:[261.6255653006,271.01659746112,280.74472171431,290.822034715,313.8821415949,325.1489200649,336.82012073975,348.91025643633,376.57634157395,390.09352641046,404.09590743895,418.60090448096,451.79296003201,468.01003810189,484.80922990434,523.2511306012],description:"Parakleismic temperament, g=315.263, 5-limit"},smithgw_pris:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_prisa:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,439.53094970501,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_pum13marv:{frequencies:[261.6255653006,293.67396865289,305.56991629828,343.00138030143,326.66798000724,366.68389807519,349.22276077151,392.00157668785,407.88051296056,457.84473927605,436.04260883433,489.45661357347,549.41368713126,523.2511306012],description:"pum13 marvel tempered and in epimorphic order"},smithgw_qm3a:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode A, 72-tET, TL 04-01-2002"},smithgw_qm3b:{frequencies:[261.6255653006,279.86396690685,299.37379946195,326.46944327063,349.22823143301,373.57357677338,391.99543598175,419.32216217931,448.5538823653,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode B"},smithgw_ragasyn1:{frequencies:[261.6255653006,269.16210421872,290.69507255622,313.95067836072,322.99452506247,348.83408706747,363.36884069528,392.4383479509,403.74315632809,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Ragasyn 6561/6250 81/80 scale"},smithgw_rainbow:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.51268695591,327.03195662575,349.91912034749,365.63284274659,391.22147055517,412.03444522126,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Circulating 1/4-comma meantone, Gene Ward SMith"},smithgw_ratwell:{frequencies:[261.6255653006,275.62199471997,293.02063313667,310.07474405997,326.72451751701,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.57747881743,465.11211608996,489.99465727995,523.2511306012],description:"7-limit rational well-temperament"},smithgw_ratwolf:{frequencies:[261.6255653006,272.55669785235,292.25605339318,313.37920299881,326.47268679644,350.06888377949,364.69531895389,391.05410158062,407.39296674476,436.83777202739,468.410735204,487.98168129749,523.2511306012],description:"Eleven fifths of (418/5)^(1/11) and one 20/13 wolf, G.W. Smith 2003"},smithgw_rectoo:{frequencies:[261.6255653006,290.69507255622,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Hahn-reduced circle of fifths via <12 19 27 34| kernel"},smithgw_sc19:{frequencies:[261.6255653006,269.16210421872,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,508.60009894437,523.2511306012],description:"Fokker block from commas <81/80, 78732/78125>, Gene Ward Smith 2002"},smithgw_sch13:{frequencies:[261.6255653006,269.71217215021,278.04872701265,282.14859498561,290.86954990528,295.15846273282,304.2815407612,313.68660297237,318.31195648825,328.15068782436,332.98931632582,343.28171142549,353.89223299652,359.11042631209,370.21019888355,375.66900084958,387.28058594818,392.99109319609,405.13808832031,417.66053353744,423.81899742763,436.9188548657,443.36128543927,457.06517711961,471.19264083172,478.14044600934,492.91932687455,500.18749236202,515.64783010531,523.2511306012],description:"13-limit schismic temperament, g=704.3917, TL 31-10-2002"},smithgw_sch13a:{frequencies:[261.6255653006,266.49502311502,271.45511438723,280.18048669638,285.39529457963,294.56874561631,300.051354061,305.6360048159,315.46005229837,321.33149462105,331.66004360268,337.8330052901,344.12086009392,355.18192699392,361.79268541866,373.4217751344,380.37201938485,392.59830625439,399.90547017058,407.34863733398,420.4420328577,428.26743302475,442.03321824291,450.26048038501,458.64087358289,473.38295124548,482.19370453904,497.69284002863,506.95605959354,523.2511306012],description:"13-limit schismic temperament, g=702.660507, TL 31-10-2002"},smithgw_scj22a:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,301.39265122629,313.95067836072,327.03195662575,334.88072358477,348.83408706747,361.67118147155,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 15625/15552 = [6,5,22,37,-18,-6] catakleismic"},smithgw_scj22b:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"5120/5103 ^ 225/224 = [1,-8,-14,-10,25,-15] schismic candidate"},smithgw_scj22c:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 65625/65536 = [7,-3,827,7,-21] orwell candidate"},smithgw_secab:{frequencies:[261.6255653006,274.07613169002,291.39807132323,313.10572011471,348.73657263424,365.33268718488,392.54808236386,417.35759110361,437.21932894603,486.97408086388,523.2511306012],description:"{126/125, 176/175} tempering of decab, 328-et version"},smithgw_secac:{frequencies:[261.6255653006,281.11531641881,298.8821409504,313.10572011471,348.73657263424,374.71564313773,392.54808236386,417.35759110361,448.44857247831,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decac, 328-et version"},smithgw_secad:{frequencies:[261.6255653006,281.11531641881,313.10572011471,328.00618883132,348.73657263424,374.71564313773,392.54808236386,437.21932894603,469.78990700991,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decad, 328-et version"},smithgw_smalldi11:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,373.75080757229,423.93031414449,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Small diesic 11-note block, <10/9, 126/125, 1728/1715> commas"},smithgw_smalldi19a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,299.00064605783,305.22982618403,313.95067836072,317.94773560837,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,430.56093032327,436.04260883433,448.50096908674,457.84473927605,502.32108537715,508.71637697339,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 1728/1715> commas"},smithgw_smalldi19b:{frequencies:[261.6255653006,266.96486255163,274.70684356563,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,498.33441009638,512.78610798918,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 2401/2400> commas"},smithgw_smalldi19c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,313.95067836072,320.49131749323,327.03195662575,336.37572681506,343.38355445704,373.75080757229,381.53728273004,392.4383479509,400.61414686654,436.04260883433,448.50096908674,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"Small diesic 19-note scale containing glumma"},smithgw_smalldiglum19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,280.40333801024,286.95745534843,312.9293240034,320.24370022528,327.729041887,335.38934511627,343.22869944589,374.29355081838,383.0422478503,391.99543598175,401.15789496562,437.46578647972,447.69106452518,458.15534711532,468.86422071654,511.30005826145,523.2511306012],description:'Small diesic "glumma" variant of 19-note MOS, 31/120 version'},smithgw_smalldimos11:{frequencies:[261.6255653006,267.74077300753,305.78200836532,312.9293240034,320.24370022528,365.74467430283,374.29355081838,427.47405410759,437.46578647972,447.69106452518,511.30005826145,523.2511306012],description:"Small diesic 11-note MOS, 31/120 version"},smithgw_smalldimos19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,298.79793764201,305.78200836532,312.9293240034,320.24370022528,327.729041887,357.39105439675,365.74467430283,374.29355081838,383.0422478503,417.71053321823,427.47405410759,437.46578647972,447.69106452518,458.15534711532,499.62194879119,511.30005826145,523.2511306012],description:"Small diesic 19-note MOS, 31/120 version"},smithgw_star:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, untempered version'},smithgw_star2:{frequencies:[261.6255653006,282.55561052465,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, alternative untempered version'},starra:{frequencies:[261.6255653006,274.07613169002,294.49338559574,313.10572011471,328.00618883132,343.61575980934,374.71564313773,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrb:{frequencies:[261.6255653006,274.07613169002,287.1192112957,305.26548915336,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,479.82340237272,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrc:{frequencies:[261.6255653006,274.07613169002,287.1192112957,313.10572011471,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_tetra:{frequencies:[261.6255653006,274.84135386022,293.90210492181,314.2847539672,326.44746606412,342.93767672779,366.7210324511,392.15380743582,419.35039192746,435.57910814854,457.58200907672,489.31615916483,523.2511306012],description:"{225/224, 385/384} tempering of two-tetrachord 12-note scale"},smithgw_tr31:{frequencies:[261.6255653006,267.54129532085,292.57243455474,299.18791603519,305.95298478736,334.57791819083,342.14320575162,349.87955533643,391.26571058456,400.11279059885,409.15991580663,447.44088028055,457.55816161244,467.90420651233,511.68128147674,523.2511306012],description:"6/31 generator supermajor seconds tripentatonic scale"},smithgw_tr7_13:{frequencies:[261.6255653006,183.87449048025,346.05860897284,243.21533855007,457.74028507734,321.70694650116,605.46440189891,425.52973856044,299.06887661109,562.85871464284,395.58580335293,744.50714985079,523.2511306012],description:"81/80 ==> 28561/28672"},smithgw_tr7_13b:{frequencies:[261.6255653006,372.25357492539,395.58580335293,281.42935732142,299.06887661109,425.52973856044,302.73220094945,321.70694650116,457.74028507734,486.43067710015,346.05860897284,367.7489809605,523.2511306012],description:"reverse reduced 81/80 ==> 28561/28672"},smithgw_tr7_13r:{frequencies:[261.6255653006,367.7489809605,346.05860897284,486.43067710015,457.74028507734,321.70694650116,302.73220094945,425.52973856044,299.06887661109,281.42935732142,395.58580335293,372.25357492539,523.2511306012],description:"reduced 81/80 ==> 28561/28672"},smithgw_tra:{frequencies:[261.6255653006,128.35937755236,399.56478905052,196.03545836752,610.23096296248,299.39301413087,931.96857771927,457.24471305759,224.33452437931,698.32199734535,342.61245382262,1066.50464849657,523.2511306012],description:"81/80 ==> 1029/512"},smithgw_tre:{frequencies:[261.6255653006,256.71872396454,399.56476227799,392.07084290614,305.11544059319,299.39293769309,465.98419519089,457.24482979639,448.66910888407,349.16106442144,342.6124767791,533.2523889322,523.2511306012],description:"81/80 ==> 1029/512 ==> reduction"},smithgw_treb:{frequencies:[261.6255653006,266.6261944661,342.6124767791,349.16106442144,448.66910888407,457.24482979639,465.98419519089,299.39293769309,305.11544059319,392.07084290614,399.56476227799,513.43744792908,523.2511306012],description:"reversed 81/80 ==> 1029/512 ==> reduction"},smithgw_trx:{frequencies:[261.6255653006,490.17835855476,354.35176059633,331.954494127,479.94227969828,449.60690021487,325.02250210538,304.47902995326,285.23403465053,412.39349145653,386.32762147798,279.2776760715,523.2511306012],description:"reduced 3/2->7/6 5/4->11/6 scale"},smithgw_trxb:{frequencies:[261.6255653006,279.2776760715,386.32762147798,412.39349145653,285.23403465053,304.47902995326,325.02250210538,449.60690021487,479.94227969828,331.954494127,354.35176059633,490.17835855476,523.2511306012],description:"reversed reduced 3/2->7/6 5/4->11/6 scale"},smithgw_wa:{frequencies:[261.6255653006,273.6474362764,299.37379946195,313.13022722746,327.51877211613,349.22823143301,374.77430422696,391.99543598175,417.97870684853,437.18511000944,469.1652354389,500.26367760099,523.2511306012],description:"Wreckmeister A temperament, TL 2-6-2002"},smithgw_wa120:{frequencies:[261.6255653006,273.99891691894,298.79793764201,312.9293240034,327.729041887,349.22823143301,374.29355081838,391.99543598175,417.71053321823,437.46578647972,468.86422071654,499.62194879119,523.2511306012],description:"120-tET version of Wreckmeister A temperament"},smithgw_wb:{frequencies:[261.6255653006,280.76349612739,291.78605424516,313.13022722746,327.51877211613,349.22823143301,365.2755039332,391.99543598175,417.97870684853,437.18511000944,469.1652354389,487.58430040208,523.2511306012],description:"Wreckmeister B temperament, TL 2-6-2002"},smithgw_well1:{frequencies:[261.6255653006,275.92984511873,292.92635710626,310.42107575858,327.5229776175,349.2237102284,367.90646015831,391.734151992,413.8947676781,437.99072463899,465.63161363786,490.54194687775,523.2511306012],description:"Well-temperament, Gene Ward Smith (2005)"},smithgw_whelp1:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.05120395042,368.50381975103,390.45372436301,413.66634097248,438.25895612273,464.36382062247,491.65133958137,523.2511306012],description:"well-temperament with one pure third, Gene Ward Smith, 2003"},smithgw_whelp2:{frequencies:[261.6255653006,275.85000668176,292.43269265164,309.98104674077,327.03195662575,347.97308568611,368.21146504308,391.7894791814,413.34036955908,438.14417346548,464.48314871299,489.73685071229,523.2511306012],description:"well-temperament with two pure thirds"},smithgw_whelp3:{frequencies:[261.6255653006,275.96871294479,292.50627485027,310.03485655885,327.03195662575,349.46135677641,368.11883862276,391.73393619399,413.66634097248,436.82669499534,464.84945270756,489.66742197778,523.2511306012],description:"well-temperament with three pure thirds"},smithgw_wiz28:{frequencies:[261.6255653006,269.80136421624,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,508.71637697339,523.2511306012],description:"11-limit Wizard[28]"},smithgw_wiz34:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[34]"},smithgw_wiz38:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,285.40970760065,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,339.14425131559,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,403.65087217807,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,479.64686971777,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[38]"},smithgw_wreckpop:{frequencies:[261.6255653006,272.73569398658,292.31087910123,313.29104303136,326.59518553839,350.03605285217,364.90060015836,391.09077971329,419.16071913933,436.9606979923,455.51656649021,501.93603498211,523.2511306012],description:'"Wreckmeister" 13-limit meanpop (50-et) tempered thirds'},smithj12:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,331.11985608357,344.91651675372,363.36884069528,392.4383479509,408.78994578219,441.49314144476,459.88868900496,496.67978412536,523.2511306012],description:"J. Smith, 5-limit JI scale, MMM 21-3-2006"},smithj17:{frequencies:[261.6255653006,272.57820116223,283.17034563789,295.02492750576,308.97787266236,319.3201344739,332.68808325276,348.42227432308,363.00854876594,377.11473546037,392.90218486657,411.48414905414,425.25755219187,443.06044202496,464.01459698705,479.54632553791,499.62194879119,523.2511306012],description:"J. Smith 17-tone well temperament, MMM 12-2006"},smithrk_19:{frequencies:[261.6255653006,274.68253637698,286.11368885031,294.3308008075,305.19387818096,313.95878694534,327.0246436172,343.34529416761,348.83287827711,366.24211271841,381.48359653409,392.43970784476,406.92376081862,418.61050714007,436.03134720211,457.79213919624,470.93981233279,488.32112480698,508.64303280756,523.2511306012],description:"19 out of 612-tET by Roger K. Smith, 1978"},smithrk_mult:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:'Roger K. Smith, "Multitonic" scale, just version'},solar:{frequencies:[261.6255653006,394.58976180129,774.00176545642,2207.36533954793,5481.83445910426,34573.03685904828,65024.37680021134,105705.6559450381],description:"Solar system scale: 0=Pluto, 8=Mercury. 1/1=248.54 years period"},solemn:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Solemn 6"},songlines:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Songlines.DEM, Bill Thibault and Scott Gresham-Lancaster. 1992 ICMC (=rectsp6)"},sorge:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Sorge's Monochord (1756)"},sorge1:{frequencies:[261.6255653006,276.86979852503,293.00227310437,311.47852302926,328.88393162803,349.6228209638,369.57684148724,391.5530240856,415.30469757995,439.00737933323,466.69047534984,493.32589719545,523.2511306012],description:"Georg Andreas Sorge, 1744 (A)"},sorge2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.88393162803,348.83408706747,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Georg Andreas Sorge, 1744 (B)"},sorge3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Georg Andreas Sorge, well temperament, (1756, 1758)"},sparschuh:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,439.53094970501,465.69350623507,491.85606276513,523.2511306012],description:"Andreas Sparschuh WTC temperament, 1/1=C=250, modified Collatz sequence"},sparschuh2:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,438.48444744381,465.69350623507,491.85606276513,523.2511306012],description:"Modified Sparschuh temperament with A=419Hz by Tom Dent"},spec1_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,523.2511306012],description:"Spectrum sequence of 8/7: 1 to 27 reduced by 2/1"},spec1_17:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/6: 1 to 27 reduced by 2/1"},spec1_25:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 5/4: 1 to 25 reduced by 2/1"},spec1_33:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of 4/3: 1 to 29 reduced by 2/1"},spec1_4:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/5: 1 to 25 reduced by 2/1"},spec1_5:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 1.5: 1 to 27 reduced by 2/1"},specr2:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of sqrt(2): 1 to 29 reduced by 2/1"},specr3:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Spectrum sequence of sqrt(3): 1 to 31 reduced by 2/1"},spon_chal1:{frequencies:[261.6255653006,280.31310567921,285.40970760065,286.15296204753,348.83408706747,392.4383479509,420.46965851882,428.11456140098,429.2294430713,523.2511306012],description:"JC Spondeion, from discussions with George Kahrimanis about tritone of spondeion"},spon_chal2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,285.40970760065,348.83408706747,392.4383479509,413.43299207996,418.60090448096,428.11456140098,523.2511306012],description:"JC Spondeion II, 10 May 1997. Various tunings for the parhypatai and hence trito"},spon_mont:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Montford's Spondeion, a mixed septimal and undecimal pentatonic, 1923"},spon_terp:{frequencies:[261.6255653006,285.40970760065,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Subharm. 6-tone series, guess at Greek poet Terpander's, 6th c. BC & Spondeion, Winnington-Ingram (1928)"},stade:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.28772967674,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Organs in St. Cosmae, Stade; Magnuskerk, Anloo; H.K. Sluipwijk, modif. 1/4 mean"},stanhope:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.52264545758,465.11211608996,489.99465727995,523.2511306012],description:"Well temperament of Charles, third earl of Stanhope (1806)"},stanhope2:{frequencies:[261.6255653006,275.85537639807,293.11251278827,310.16223770573,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.66634097248,437.85193595173,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament (real version?) with 1/3 synt. comma temp."},stanhope_f:{frequencies:[261.6255653006,275.62199471997,292.46014274879,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,436.79202494356,465.11211608996,489.99465727995,523.2511306012],description:"Stanhope temperament, equal beating version by Farey (1807)"},stanhope_s:{frequencies:[261.6255653006,275.77758308753,293.11247215425,310.2497806633,327.03195662575,348.83408706747,367.7034443005,392.4383479509,413.66637442451,437.85181455341,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament, alt. version with 1/3 syntonic comma"},starling:{frequencies:[261.6255653006,278.9816419584,293.66476791741,313.14630527334,327.50195613664,349.22823143301,367.60851651046,391.99543598175,418.00016846495,437.16266336983,466.16376151809,490.69849857048,523.2511306012],description:"Starling temperament, Herman Miller (1999)"},stearns:{frequencies:[261.6255653006,299.00064605783,336.37572681506,366.27579142084,398.6675280771,448.50096908674,504.56359022259,523.2511306012],description:"Dan Stearns, guitar scale"},stearns2:{frequencies:[261.6255653006,280.31310567921,287.78812183066,299.00064605783,313.95067836072,317.68818643644,336.37572681506,340.11323489078,355.06326719367,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,429.81342870813,444.76346101102,448.50096908674,467.18850946536,470.92601754108,485.87604984397,497.08857407114,504.56359022259,523.2511306012],description:'Dan Stearns, scale for "At A Day Job" based on harmonics 10-20 and 14-28'},stearns3:{frequencies:[261.6255653006,304.11599009871,327.88291945286,364.30920726489,423.47641042702,470.52269644143,546.93995798074,607.70247408742,706.39900722312,784.8766959018],description:"Dan Stearns, trivalent version of Bohlen's Lambda scale"},stearns4:{frequencies:[261.6255653006,296.65550714972,336.37572681506,347.46339693852,393.986457405,446.73865184892,461.46412096988,523.2511306012],description:"Dan Stearns, 1/4-septimal comma temperament, tuning-math 2-12-2001"},steldek1:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,343.38355445704,353.19451315581,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 5 7 9 dekany"},steldek1s:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,339.14425131559,343.38355445704,353.19451315581,360.4025644447,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,482.88312345521,490.54793493862,494.47231841813,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated two out of 1 3 5 7 9 dekany"},steldek2:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Stellated two out of 1 3 5 7 11 dekany"},steldek2s:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,295.09524211152,299.7792935736,302.17752792219,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,349.7425091692,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,440.49202321019,449.66894036041,454.06089845559,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Superstellated two out of 1 3 5 7 11 dekany"},steleik1:{frequencies:[220,220.57291666667,224.58333333333,225,226.875,229.16666666667,232.03125,235.27777777778,238.21875,240.625,242.63020833333,243.08035714286,247.5,248.14453125,252.08333333333,252.65625,255.234375,256.66666666667,257.8125,262.5,264.6875,270.703125,272.25,275,277.29166666667,278.4375,280.72916666667,283.59375,288.75,294.09722222222,297.7734375,302.5,308.80208333333,309.375,311.953125,315,315.10416666667,317.625,320.83333333333,324.10714285714,324.84375,330,330.859375,336.11111111111,336.875,340.3125,343.75,346.5,346.61458333333,350,352.91666666667,353.57142857143,360.9375,366.66666666667,371.25,378.125,385,388.92857142857,392.12962962963,393.75,397.03125,401.04166666667,403.33333333333,412.5,415.9375,423.5,425.390625,427.77777777778,432.14285714286,433.125,440],description:"Stellated Eikosany 3 out of 1 3 5 7 9 11"},steleik1s:{frequencies:[123.47082531403,123.79236392162,125.33976847064,127.32928860509,129.9819821177,130.22313607339,131.308328874,132.59082945654,132.63467563031,133.69575303535,135.04621518722,136.42423779117,136.73429287706,138.90467847828,139.26640941182,141.47698733899,141.79852594658,143.24544968073,144.69237341488,145.8499124022,145.89814319334,147.3231438406,148.55083670594,148.82644122673,151.92699208562,154.33853164254,156.26776328807,156.6747105883,159.16161075637,160.43490364242,160.48795751267,162.05545822466,163.70908534941,165.05648522882,165.43161360434,165.73853682068,167.11969129419,168.80776898403,169.77238480679,173.63084809785,175.077771832,175.80123369908,178.26100404713,179.05681210091,180.06162024963,181.89898372156,182.31239050275,185.20623797104,185.68854588243,189.06470126211,189.41547065221,190.99393290764,192.92316455317,195.33470411009,198.06778227459,200.54362955302,202.56932278083,204.25740047067,204.63635668676,208.35701771743,208.89961411773,212.21548100849,212.69778891987,214.8681745211,216.07394429955,217.03856012232,220.07531363843,220.98471576091,222.82625505891,227.89048812843,229.19271948917,231.50779746381,233.43702910934,233.87012192772,234.4016449321,236.33087657764,238.74241613455,241.07423537553,241.15395569146,243.083187337,246.94165062806],description:"Superstellated Eikosany 3 out of 1 3 5 7 9 11"},steleik2:{frequencies:[123.47082531403,124.49974885831,126.04313417474,126.11662871362,127.68005799519,128.74405847848,129.64436657973,130.41605923794,132.04518818306,132.96858110742,133.76006075687,135.81790784543,137.94006265552,138.64744759221,140.44806379471,141.47698733899,144.0492961997,145.92006628022,146.26543921816,147.13606683255,148.16499037684,148.55083670594,151.25176100969,152.15206911093,154.33853164254,154.49287017418,155.62468607289,156.05340421634,157.14468676331,157.64578589202,158.45422581967,160.51207290824,160.9300730981,163.85607442716,164.62776708537,167.20007594608,169.77238480679,170.24007732692,171.65874463798,172.85915543964,173.88807898393,175.56007974339,176.56328019906,180.06162024963,181.09054379391,182.8317990227,183.92008354069,185.20623797104,186.74962328747,187.26408505961,190.14507098361,193.11608771773,194.02558263633,197.55332050245,198.06778227459,200.6400911353,201.66901467958,202.31209189476,203.72686176815,204.2880927923,205.78470885672,205.99049356557,208.95062745451,210.19438118936,214.01609721099,214.57343079747,216.07394429955,217.36009872991,217.87456050205,220.70410024883,224.71690207153,226.36317974239,229.30296129748,230.47887391952,234.08010632452,237.68133872951,239.0961086029,240.76810936236,243.77573203026,245.22677805425,246.94165062806],description:"Stellated Eikosany 3 out of 1 3 5 7 11 13"},steleik2s:{frequencies:[61.73541265702,61.89618196081,62.32902239411,62.70002847979,63.66464430255,64.65940436978,64.99099105886,65.83502990378,66.22690508177,66.31733781516,67.05419712422,67.52310759362,68.40003106886,68.56192463352,68.97003132776,69.45233923915,69.63320470592,70.8992629733,71.32128239576,72.34618670745,72.41853289415,72.94907159667,73.15003322642,73.66157192031,73.89646213689,74.27541835298,75.24003417574,75.43597176474,76.80753488774,77.16926582128,78.37503559973,79.58080537819,79.800036247,80.24397875634,80.46503654906,81.02772911234,81.51003702372,82.29378737972,82.71580680218,82.76403759332,84.40388449202,84.45309958502,84.8861924034,85.7024057919,86.21253915971,86.81542404893,87.05458499673,87.53888591601,87.7800398717,89.13050202357,90.52316611769,90.94949186079,92.60311898553,92.84427294122,94.05004271968,94.53235063106,94.83379307568,95.49696645383,95.7600434964,96.46158227659,96.55804385887,97.94560661931,98.52861618252,100.32004556766,100.58129568632,101.28466139042,101.88754627965,102.12870023534,103.45504699165,104.17850885872,105.33604784604,105.47988405157,106.10774050425,107.4857631082,108.03697214979,109.72504983963,111.41312752947,112.07630090762,112.86005126361,113.15395764711,114.2698743892,114.95005221294,115.75389873191,115.86965263064,116.71851455468,118.16543828883,118.23433941902,119.7000543705,120.57697784574,120.69755482359,121.54159366851,122.26505553558,123.47082531404],description:"Superstellated Eikosany 3 out of 1 3 5 7 11 13"},stelhex1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,327.03195662575,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 7 hexany, also dekatesserany, mandala, tetradekany"},stelhex2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,331.11985608357,353.19451315581,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 9 hexany"},stelhex3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,297.67175429757,339.14425131559,348.83408706747,358.80077526939,361.75386806997,372.08969287196,385.87079260796,434.10464168396,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on Archytas's Enharmonic"},stelhex4:{frequencies:[261.6255653006,269.10058145205,276.78916949353,279.06726965397,287.04062021552,297.67175429757,336.37572681506,348.83408706747,358.80077526939,361.75386806997,372.08969287196,382.72082695402,430.56093032327,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on the 1/1 35/36 16/15 4/3 tetrachord"},stelhex5:{frequencies:[261.6255653006,294.32876096318,305.22982618403,331.11985608357,343.38355445704,386.30649876417,392.4383479509,400.61414686654,441.49314144476,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 7 9 hexany, stellation is degenerate"},stelhex6:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,327.03195662575,337.2517052703,356.76213450082,359.73515228832,392.4383479509,408.78994578219,431.68218274599,449.66894036041,490.54793493862,494.63583439645,523.2511306012],description:"Stellated two out of 1 3 5 11 hexany, from The Giving, by Stephen J. Taylor"},stelpd1:{frequencies:[207.65234878997,208.19311011494,212.37172035338,214.14148468966,218.03496622947,219.00833661442,222.07265078927,222.48465941783,222.99030637105,224.84855892414,227.11975648903,229.43730502463,233.60889238872,237.93498298851,240.90917027586,242.2610735883,244.73312535961,245.28933700815,247.76700707894,249.83173213793,250.29524184505,254.84606442405,255.50972605016,256.96978162759,259.56543598746,262.81000393731,267.67685586207,272.54370778684,275.32476602956,277.59081348659,280.33067086646,281.06069865517,283.1622938045,285.52197958621,292.0111154859,297.32040849473,299.79807856552,302.82634198537,305.91640669951,306.61167126019,311.47852318496,312.28966517242,317.24664398468,317.96765908464,318.55758053007,321.21222703448,324.45679498433,327.0524493442,330.35600943859,333.10897618391,333.72698912674,340.67963473354,342.62637550345,346.08724798328,350.41333858307,356.90247448276,363.39161038245,367.09968803941,371.65051061841,374.7475982069,380.69597278161,385.45467244138,389.34815398119,392.59272193104,396.42721132631,399.73077142069,400.47238695209,401.51528379311,403.7684559805,407.88854226601,408.81556168025,415.30469757994],description:"Stellated two out of 1 3 5 7 9 11 pentadekany"},stelpd1s:{frequencies:[21.82676446456,21.88360499702,22.15715005948,22.2309638065,22.3228272933,22.50885085408,22.68892166091,22.91810268779,23.02041564622,23.14959867453,23.15196087848,23.34251199682,23.38581906917,23.43896865797,23.624449876,23.63429339678,23.87302363311,24.11662591508,24.35217522905,24.55511002263,24.61905562165,25.00983428231,25.20991295657,25.32245721084,25.46455854199,25.72440097609,25.78286552376,25.93612444091,26.04329850885,26.26032599642,26.30904645282,26.78739275196,26.85715158725,27.01062102489,27.2834555807,27.56185818867,27.62449877546,27.69643757435,28.01101439619,28.1360635676,28.29395393554,28.36115207614,28.41087110056,28.58266775121,28.64762835974,28.9399510981,29.17813999603,29.29871082246,29.46613202716,29.54286674598,29.7637697244,30.01180113877,30.06748166036,30.69388752829,30.99367756425,31.12334932909,31.25195821062,31.51239119571,31.65307151355,31.83069817748,32.15550122011,32.2285819047,32.41274522987,32.74014669684,32.82540749553,33.0742298264,33.34644570974,33.42223308636,33.48424093995,33.76327628112,34.09304532068,34.10431947588,34.37715403168,34.58149925455,34.7243980118,35.01376799523,35.07872860376,35.45144009517,35.80953544967,36.01416136652,36.17493887262,36.37794077427,36.74914425156,36.83266503394,36.92858343247,37.50234985274,37.51475142346,37.81486943485,37.88116146742,38.19683781298,38.26770393137,38.58660146413,38.90418666137,39.06494776328,39.39048899464,40.01573485169,40.28572738088,40.51593153734,40.92518337105,41.25258483802,41.26622656581,41.342787283,41.66927761416,42.01652159428,42.09447432451,42.2040953514,42.44093090331,42.61630665085,42.87400162681,42.9714425396,43.65352892912],description:"Superstellated two out of 1 3 5 7 9 11 pentadekany"},stelpent1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,406.97310157871,412.06026534844,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated one out of 1 3 5 7 9 pentany"},stelpent1s:{frequencies:[261.6255653006,271.31540105247,274.70684356563,275.93321340298,280.31310567921,282.55561052465,286.15296204753,288.32205155576,290.69507255622,294.32876096318,301.46155672497,305.22982618403,309.04519901133,313.95067836072,315.35224388912,320.35783506196,321.92208230347,327.03195662575,329.64821227876,336.37572681506,339.14425131559,343.38355445704,348.83408706747,353.19451315581,360.4025644447,366.27579142084,367.91095120397,373.75080757229,381.53728273004,386.30649876417,387.59343007496,392.4383479509,395.57785473451,403.65087217807,406.97310157871,411.88864507966,412.06026534844,420.46965851882,429.2294430713,436.04260883433,439.53094970501,441.49314144476,448.50096908674,452.19233508746,457.84473927605,470.92601754108,480.53675259294,482.88312345521,488.36772189445,490.54793493862,494.47231841813,498.33441009638,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated one out of 1 3 5 7 9 pentany"},steltet1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,436.04260883433,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 7 tetrany"},steltet1s:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,320.35783506196,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,429.2294430713,436.04260883433,439.53094970501,448.50096908674,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"Superstellated one out of 1 3 5 7 tetrany"},steltet2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,305.22982618403,327.03195662575,333.84512238879,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,436.04260883433,457.84473927605,476.92160341255,490.54793493862,523.2511306012],description:"Stellated three out of 1 3 5 7 tetrany"},steltet2s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Superstellated three out of 1 3 5 7 tetrany"},steltri1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 triany"},steltri2:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,408.78994578219,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 triany"},stevin:{frequencies:[261.6255653006,277.20445571159,293.66434538175,311.1256573916,329.66931111467,349.25319089654,369.99797100919,392.00714009679,415.41055144586,440.15068186507,466.27261682516,494.00597677606,523.2511306012],description:"Simon Stevin, monochord division of 10000 parts for 12-tET (1585)"},stopper:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767,554.79375523088,587.81844599272,622.80896314278,659.88233179115,699.16252826162,740.78092441407,784.8766959018],description:"Bernard Stopper, piano tuning with 19th root of 3 (1988)"},storbeck:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,358.80077526939,381.53728273004,387.59343007496,392.4383479509,403.65087217807,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Ulrich Storbeck, 2001"},strahle:{frequencies:[261.6255653006,278.94941459687,296.90543930973,315.65242990842,335.0021118691,355.12744448111,376.24442122187,398.15684412917,421.10213511252,444.85552088095,469.94877954106,496.17080790016,523.2511306012],description:"Strahle's Geometrical scale"},"sub24-12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharmonics 24-12"},sub24:{frequencies:[261.6255653006,10.90106522086,11.37502457829,11.89207115003,12.45836025241,13.08127826503,13.76976659477,14.53475362781,15.38973913533,16.35159783129,17.44170435337,18.68754037861,20.12504348466,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,52.32511306012,65.40639132515,87.20852176687,130.8127826503,261.6255653006],description:"Subharmonics 24-1"},sub40:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,475.68284600109,498.33441009638,523.2511306012],description:"sub 40-20"},sub48:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,502.32108537715,523.2511306012],description:"12 of sub 48 (Leven)"},sub50:{frequencies:[261.6255653006,272.52663052146,290.69507255622,311.45900631024,327.03195662575,344.24416486921,373.75080757229,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,523.2511306012],description:"12 of sub 50"},sub8:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Subharmonic series 1/16 - 1/8"},sumatra:{frequencies:[261.6255653006,266.79889483106,324.44528279699,356.96377863828,390.9602296356,474.47355835313,530.64156666967,639.28283484968,713.92755727656,784.8766959018],description:'"Archeological" tuning of Pasirah Rus orch. in Muaralakitan, Sumatra. 1/1=354 Hz'},super_10:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 10-tone scale"},super_11:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 11-tone scale"},super_12:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,494.18162334558,523.2511306012],description:"A superparticular 12-tone scale"},super_12_1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"Another superparticular 12-tone scale"},super_12_2:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,420.46965851882,448.50096908674,473.41768959156,498.33441009638,523.2511306012],description:"Another superparticular 12-tone scale"},super_13:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 13-tone scale"},super_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 14-tone scale"},super_15:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,334.29933343966,348.83408706747,363.36884069528,381.53728273004,399.70572476481,417.87416679957,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 15-tone scale"},super_17:{frequencies:[261.6255653006,274.08392555301,286.54228580542,299.00064605783,311.45900631024,323.91736656265,336.37572681506,348.83408706747,363.36884069528,377.90359432309,392.4383479509,411.12588832951,429.81342870813,448.50096908674,467.18850946536,485.87604984397,504.56359022259,523.2511306012],description:"Superparticular 17-tone scale"},super_19:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.11323489078,353.19451315581,366.27579142084,379.35706968587,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.57848126297,337.20628416522,348.83408706747,363.36884069528,377.90359432309,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Superparticular 19-tone scale"},super_22:{frequencies:[261.6255653006,270.96933548991,280.31310567921,289.65687586852,299.00064605783,308.34441624714,317.68818643644,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,406.45400323486,420.46965851882,434.48531380278,448.50096908674,463.45100138963,478.40103369253,493.35106599542,508.30109829831,523.2511306012],description:"Superparticular 22-tone scale"},super_22_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.16320258789,336.37572681506,347.58825104223,358.80077526939,370.01329949656,381.22582372373,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 22-tone scale"},super_24:{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 24-tone scale, inverse of Mans.ur 'Awad"},super_7:{frequencies:[261.6255653006,287.78812183066,313.95067836072,353.19451315581,392.4383479509,431.68218274599,470.92601754108,523.2511306012],description:"A superparticular 7-tone scale"},super_8:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"A superparticular 8 tone scale"},super_9:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 9-tone scale"},suppig:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friedrich Suppig's 19-tone JI scale. Calculus Musicus, Berlin 1722"},sur_7:{frequencies:[261.6255653006,280.40333801024,327.729041887,351.25128999693,383.0422478503,410.5345162762,479.82340237272,523.2511306012],description:"7-tone surupan"},sur_9:{frequencies:[261.6255653006,280.40333801024,305.78200836532,327.729041887,351.25128999693,383.0422478503,410.5345162762,447.69106452518,479.82340237272,523.2511306012],description:"Theoretical nine-tone surupan gamut"},sur_ajeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan ajeng"},sur_degung:{frequencies:[261.6255653006,322.09885310804,345.21700307457,396.55020354877,488.21056770985,523.2511306012],description:"Surupan degung"},sur_madenda:{frequencies:[261.6255653006,322.09885310804,345.21700307457,425.01198472693,488.21056770985,523.2511306012],description:"Surupan madenda"},sur_melog:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,410.5345162762,523.2511306012],description:"Surupan melog"},sur_miring:{frequencies:[261.6255653006,285.30470202322,305.78200836532,389.73770840504,417.71053321823,523.2511306012],description:"Surupan miring"},sur_x:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan tone-gender X (= unmodified nyorog)"},sur_y:{frequencies:[261.6255653006,280.40333801024,300.52885648597,383.0422478503,410.5345162762,523.2511306012],description:"Surupan tone-gender Y (= mode on pamiring)"},sverige:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012,554.36526195375,587.32953583482,622.25396744417,659.25511382574,698.45646286601,739.98884542327,783.9908719635,830.60939515989,880,932.32752303618,987.76660251225,1046.5022612024,1174.65907166964,1318.51022765149,1396.91292573202,1567.98174392701],description:"Scale on Swedish 50 crown banknote of some kind of violin."},syntonolydian:{frequencies:[261.6255653006,294.32876096318,331.11985608357,372.50983809402,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Greek Syntonolydian, also genus duplicatum medium, or ditonum (Al-Farabi)"},syrian:{frequencies:[261.6255653006,268.67837258085,275.62199471997,279.38237857051,286.74979536837,294.32876096318,302.10804307229,310.07474405997,314.30517589183,322.59351978942,326.6631048533,331.11985608357,339.85160932548,348.83408706747,358.05397697456,367.49599295996,372.50983809402,382.33306049116,392.4383479509,402.81072409638,413.43299207996,419.07356785577,430.12469305256,441.49314144476,453.13547910064,465.11211608996,477.40530263275,489.99465727995,496.67978412536,509.77741398822,523.2511306012],description:"After ^Sayh.'Ali ad-Darwis^ (Shaykh Darvish) from d'Erlanger vol.5, p.29"},szpak_24:{frequencies:[261.6255653006,270.98948203641,277.18263097687,287.10335517712,293.66476791741,304.17540907689,311.12698372208,322.26262012861,329.62755691287,341.42535271779,349.22823143301,361.7275606831,369.99442271164,383.23700075636,391.99543598175,406.02545869431,415.30469757995,430.16898885692,440,455.74816803176,466.16376151809,482.84836435151,493.88330125613,511.56002220218,523.2511306012],description:"Stephen Szpak's scale, TL 2-1-2004"},pagano_b:{frequencies:[261.6255653006,277.97716313189,289.55954492905,312.72430852337,333.57259575826,351.8148470888,370.63621750918,389.16802838464,416.96574469783,444.76346101102,463.29527188648,486.4600354808,523.2511306012],description:"Pat Pagano and David Beardsley, 17-limit scale, TL 27-2-2001"},palace:{frequencies:[261.6255653006,277.01530443593,294.32876096318,299.00064605783,336.37572681506,348.83408706747,373.75080757229,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Palace mode+"},palace2:{frequencies:[261.6255653006,277.01530443593,336.37572681506,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Byzantine Palace mode, 17-limit"},panpipe1:{frequencies:[261.6255653006,305.78200836532,346.61566493686,386.59871897734,424.03113209229,475.68400784708,523.2511306012],description:"Palina panpipe of Solomon Islands. 1/1=f+45c. From Ocora CD Guadalcanal"},panpipe2:{frequencies:[261.6255653006,301.39807245198,340.46429857933,389.512652082,435.70052664441,481.48922855473,540.45338572244,606.98892366383,675.83458963267,749.45240308975,819.17415016614,915.78156525194,979.24522642508,1073.44040298899,1178.73719255088,1360.28482360484],description:"Lalave panpipe of Solomon Islands. 1/1=f'+47c."},panpipe3:{frequencies:[261.6255653006,302.44445076078,341.44901934006,382.59999559751,433.19107626846,482.88183400971,542.01653249392,602.10016957865,677.78929781797,755.1012944609,822.018116801,906.30932187391,994.06270356141,1067.87449159209,1155.14617783291,1300.35790771888],description:"Tenaho panpipe of Solomon Islands. 1/1=f'+67c."},parachrom:{frequencies:[261.6255653006,274.52698453615,288.06460709314,349.22823143301,391.99543598175,411.32572372413,431.60923940535,523.2511306012],description:"Parachromatic, new genus 5 + 5 + 20 parts"},parakleismic:{frequencies:[261.6255653006,269.41173453909,271.00883762044,279.07425994419,280.72864356353,282.39283618632,290.79705467987,292.52093234567,301.22657042972,303.0122754386,312.03014360907,313.87989341557,323.22118988972,325.13728335605,327.06473376202,336.79842078181,338.79499972275,348.87778808468,350.94597487438,361.39038519337,363.53274806687,374.35175001315,376.5709514911,387.77797996035,390.07677146523,392.38919046486,404.06698135965,406.46233589795,418.55895395107,421.04021853379,433.57068509561,436.14094342919,449.12081866987,451.783257426,465.22865943552,467.98658728446,470.76086444006,484.77105399159,487.64483417146,502.15750307968,505.13434926963,520.16751901001,523.2511306012],description:"Parakleismic temperament, g=315.250913, 5-limit"},parizek:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone Linear Level tuning, 1/1=Ab"},parizek_13lqmt:{frequencies:[261.6255653006,272.70676208351,292.18581651805,313.05623198362,325.57848126297,348.83408706747,365.23227064756,391.32028997953,406.97310157871,436.04260883433,467.18850946536,486.97636086341,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_17lqmt:{frequencies:[261.6255653006,272.52663052146,291.99281841585,312.60407618638,327.03195662575,350.39138209902,364.70475555078,390.75509523297,408.78994578219,436.04260883433,467.18850946536,488.44386904122,523.2511306012],description:"To tune the scale by ear, please choose the intervals in the following order:"},parizek_7lmtd1:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"Use SET MIDDLE 62"},parizek_7lqmtd2:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,390.69417751556,418.60090448096,437.98922762377,468.83301301868,488.36772189445,523.2511306012],description:"Use SET MIDDLE 62"},parizek_cirot:{frequencies:[261.6255653006,273.76082553017,293.33333347996,307.98092841354,327.40170814054,348.04713286849,366.66693712906,392.88175996935,409.71484950008,438.01699797506,463.01593599647,491.10256480205,523.2511306012],description:"Overtempered circular tuning (1/1 is F)"},parizek_epi:{frequencies:[261.6255653006,283.42769574232,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"In The Epimoric World"},parizek_epi2:{frequencies:[261.6255653006,283.42769574232,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,523.2511306012,523.2511306012],description:"In the Epimoric World - extended (version for two keyboards)"},parizek_epi2a:{frequencies:[261.6255653006,283.42769574232,287.78812183066,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_ji1:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone septimal tuning, 2002."},parizek_jiweltmp:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,329.45441556372,348.83408706747,370.63621750918,392.4383479509,416.96574469783,440.63253103259,465.11211608996,494.18162334558,523.2511306012],description:"April 2003 - Petr Parizek"},jiwt2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,331.11985608357,348.83408706747,372.08969287196,392.4383479509,415.8649508569,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"June 2003 - Petr Parizek"},parizek_llt7:{frequencies:[261.6255653006,283.42769574232,327.03195662575,359.73515228832,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"7-tone mode of Linear Level Tuning 2000 (= wilson_helix)"},parizek_qmeb1:{frequencies:[261.6255653006,273.53155294581,293.066620053,305.25690181412,326.9069921792,350.33366042609,366.2083106197,392.1884190578,408.50877577745,437.87542071709,457.7197748295,488.61098601707,523.2511306012],description:"Equal beating quasi-meantone tuning no. 1 - F...A# (1/1 = 261.7Hz)(3/2 5/3 5/4 7/4 7/6)"},parizek_qmeb2:{frequencies:[261.6255653006,274.12423619715,293.39509530855,306.21121252767,327.1564453797,350.32795211486,366.55713600477,391.6914154272,409.44351174042,438.20041390279,457.4712730142,489.73875803795,523.2511306012],description:"Equal beating quasi-meantone tuning no. 2 - F...A# (1/1 = 262.7Hz)"},parizek_qmeb3:{frequencies:[261.6255653006,274.23252240717,293.57983281823,306.4052273004,327.28159934073,350.29865766202,366.78755898655,391.93906252094,409.53887392713,438.37260750749,457.59509656107,490.04864950866,523.2511306012],description:"Equal beating quasi-meantone tuning no. 3 - F...A#. 1/1 = 262Hz"},parizek_qmtp12:{frequencies:[261.6255653006,273.55480692456,293.00227310437,305.44101254122,326.6631048533,350.4133380576,366.39100206434,391.84790908124,408.48291326839,437.52264545758,457.47219685667,489.2574430773,523.2511306012],description:"12-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (F...A#)"},parizek_qmtp24:{frequencies:[261.6255653006,273.14323313659,280.64720643091,285.59764149034,293.00227310437,305.44101254122,313.83229199844,326.6631048533,335.63741195089,341.5578378819,350.4133380576,365.83975262993,375.89034660662,381.37064019061,391.84790908124,407.86833637529,419.07356785577,437.52264545758,448.86620556368,457.47219685667,469.33298761093,489.2574430773,502.69865025911,510.02774559919,523.2511306012],description:"24-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (Bbb...C##)"},parizek_syndiat:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,436.04260883433,441.49314144476,484.4917875937,490.54793493862,523.2511306012],description:"Petr Parizek, diatonic scale with syntonic alternatives"},parizek_syntonal:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Petr Parizek, Syntonic corrections in JI tonality, Jan. 2004"},parizek_temp19:{frequencies:[261.6255653006,276.69969455132,294.32876096318,310.68035879446,328.58088727969,349.51540364377,368.93292606842,392.4383479509,415.04954182698,438.10784970625,466.02053819169,492.87133091954,523.2511306012],description:"Petr Parizek, genus [3 3 19 19 19] well temperament"},"partch-barstow":{frequencies:[261.6255653006,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,348.83408706747,359.73515228832,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,470.92601754108,479.64686971777,490.54793493862,523.2511306012],description:"Guitar scale for Partch's Barstow (1941, 1968)"},"partch-greek":{frequencies:[261.6255653006,261.6255653006,271.31540105247,294.32876096318,279.06726965397,348.83408706747,313.95067836072,392.4383479509,392.4383479509,406.97310157871,418.60090448096,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white'},"partch-grm":{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" mixed'},"partch-indian":{frequencies:[261.6255653006,269.80136421624,277.97716313189,285.40970760065,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,383.71749577421,392.4383479509,406.97310157871,411.12588832951,428.11456140098,441.49314144476,457.84473927605,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"Partch's Indian Chromatic, Exposition of Monophony, 1933."},"partch-ur":{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch curved keyboard, published in Interval"},"partch_29-av":{frequencies:[261.6255653006,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,488.36772189445,498.33441009638,507.3950357345,523.2511306012],description:"29-tone JI scale from Partch's Adapted Viola 1928-30"},partch_29:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,523.2511306012],description:"Partch/Ptolemy 11-limit Diamond"},partch_37:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol.9(2)'},partch_39:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch Keyboard 39 tones, published in Interval"},partch_41:{frequencies:[261.6255653006,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,523.2511306012],description:"13-limit Diamond after Partch, Genesis of a Music, p 454, 2nd edition"},partch_41a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},partch_41comb:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,274.70684356563,279.06726965397,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,490.54793493862,498.33441009638,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"41-tone JI combination from Partch's 29-tone and 37-tone scales"},partch_43:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:"Harry Partch's 43-tone pure scale"},partch_43a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},patala:{frequencies:[261.6255653006,289.6217982776,320.24370022528,355.94891173479,393.58362272115,439.74591942221,480.6555937997,537.34060327431],description:"Observed patala tuning from Burma, Helmholtz/Ellis p. 518, nr.83"},pelog1:{frequencies:[261.6255653006,285.79952600623,313.83440569119,359.87690576543,393.35634555235,426.98050185716,482.04578814299,523.2511306012],description:"Gamelan Saih pitu from Ksatria, Den Pasar (South Bali). 1/1=312.5 Hz"},pelog10:{frequencies:[261.6255653006,290.16653606067,310.14521470005,342.49164912079,385.30310526088,418.60090448096,442.38504678101,523.2511306012],description:"Balinese saih 7 scale, Krobokan. 1/1=275 Hz. McPhee, 1966"},pelog11:{frequencies:[261.6255653006,289.11520789678,327.03195662575,352.6257619269,388.64667309147,441.73012112348,478.69895237627,523.2511306012],description:"Balinese saih pitu, gamelan luang, banjar Se`se'h. 1/1=276 Hz. McPhee, 1966"},pelog11i:{frequencies:[261.6255653006,267.83009854382,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,392.61532371972,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog12:{frequencies:[261.6255653006,284.41230790592,308.04300430555,358.68021049276,385.68672051706,409.31741667997,472.61392441399,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Tampak Gangsai, 1/1=310, McPhee"},pelog13:{frequencies:[261.6255653006,289.80062617913,323.61069924911,351.78575931905,394.45085229937,454.02098012766,494.27106657141,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Klungkung, 1/1=325. McPhee, 1966"},pelog14:{frequencies:[261.6255653006,287.66412867175,309.98289727559,347.18084494866,375.69927149802,402.97776645827,427.77639824032,523.2511306012],description:"Balinese saih pitu, suling gambuh, Tabanan, 1/1=211 Hz, McPhee, 1966"},pelog15:{frequencies:[261.6255653006,284.9387344858,307.6043148279,344.51683351465,375.60105909492,407.98046074103,427.4081017287,523.2511306012],description:"Balinese saih pitu, suling gambuh, Batuan, 1/1=202 Hz. McPhee, 1966"},pelog2:{frequencies:[261.6255653006,285.30470202322,314.92395982138,345.81573716922,388.6137256405,424.52127512829,466.97226207056,523.2511306012],description:"Bamboo gambang from Batu lulan (South Bali). 1/1=315 Hz"},pelog3:{frequencies:[261.6255653006,285.63448939555,315.83481057014,390.18821123181,421.34544350737,523.2511306012],description:"Gamelan Gong from Padangtegal, distr. Ubud (South Bali). 1/1=555 Hz"},pelog4:{frequencies:[261.6255653006,290.96323214696,317.29765457754,352.87817160549,385.03871768789,434.94616895528,470.49199937597,523.2511306012],description:"Hindu-Jav. demung, excavated in Banjarnegara. 1/1=427 Hz"},pelog5:{frequencies:[261.6255653006,284.64626913494,310.94732162256,358.21775774651,390.8649420513,427.47405410759,468.32288027948,523.2511306012],description:"Gamelan Kyahi Munggang (Paku Alaman, Jogja). 1/1=199.5 Hz"},pelog6:{frequencies:[261.6255653006,282.02769802256,315.83481057014,354.51258839996,386.37547528213,413.39000965417,523.2511306012],description:"Gamelan Semar pegulingan, Ubud (S. Bali). 1/1=263.5 Hz"},pelog7:{frequencies:[261.6255653006,281.2143451833,303.31920717687,353.89879686059,384.81637482457,412.43597848639,448.72664641273,523.2511306012],description:"Gamelan Kantjilbelik (kraton Jogja). Measured by Surjodiningrat, 1972."},pelog8:{frequencies:[261.6255653006,281.2143451833,305.0763174688,362.1707891162,386.59871897734,415.30469757995,456.83405152976,529.33101587613,573.91491069685,623.33318620372,730.64478690489,786.25839925218,840.74610520523,945.88853913022,1075.30214607265],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},pelog9:{frequencies:[261.6255653006,282.57123920205,305.19382000629,356.01745236555,384.52011812375,415.30469757995,448.5538823653,523.2511306012],description:"9-tET Pelog"},pelog9i:{frequencies:[261.6255653006,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog_24:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Subset of 24-tET (Sumatra?)"},pelog_a:{frequencies:[261.6255653006,280.7274598329,305.95868600104,363.84824628932,386.82209166041,411.72190027758,452.10885997356,523.2511306012],description:"Pelog, average class A. Kunst 1949"},pelog_alv:{frequencies:[261.6255653006,299.00064605783,313.95067836072,343.38355445704,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"Bill Alves JI Pelog, 1/1 vol. 9 no. 4, 1997. 1/1=293.33"},pelog_av:{frequencies:[261.6255653006,280.40333801024,305.78200836532,357.39105439675,385.26118901859,411.72190027758,452.89298412314,523.2511306012],description:'"Normalised Pelog", Kunst, 1949. Average of 39 Javanese gamelans'},pelog_b:{frequencies:[261.6255653006,280.07959041159,302.79405018898,354.30787302884,382.82105786018,408.64182041696,451.58686491179,523.2511306012],description:"Pelog, average class B. Kunst 1949"},pelog_c:{frequencies:[261.6255653006,279.91785681123,304.37225518229,350.84574289301,384.81637482457,410.29745071461,451.58686491179,523.2511306012],description:"Pelog, average class C. Kunst 1949"},pelog_he:{frequencies:[261.6255653006,283.17034563789,338.50336851425,364.68988616898,389.06292924114,420.13030572059,493.31307433255,523.2511306012],description:"Observed Javanese Pelog scale, Helmholtz/Ellis p. 518, nr.96"},pelog_jc:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"John Chalmers' Pelog, on keys C# E F# A B c#, like Olympos' Enharmonic on 4/3"},pelog_laras:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:'Lou Harrison, gamelan "Si Betty"'},pelog_me1:{frequencies:[261.6255653006,281.13654920971,305.96893643544,353.85975480175,389.33427481332,412.3928606827,454.07565526112,523.2511306012],description:"Gamelan Kyahi Kanyut Mesem pelog (Mangku Nagaran). 1/1=295 Hz"},pelog_me2:{frequencies:[261.6255653006,277.86440299076,299.96729002515,349.58586605592,383.41679241104,405.97081699752,447.47001910635,523.2511306012],description:"Gamelan Kyahi Bermara (kraton Jogja). 1/1=290 Hz"},pelog_me3:{frequencies:[261.6255653006,281.75056896146,306.90688773629,358.59164065877,385.12012728597,411.64865826518,457.38747412584,523.2511306012],description:"Gamelan Kyahi Pangasih (kraton Solo). 1/1=286 Hz"},pelog_pa:{frequencies:[261.6255653006,286.29520819723,313.29104303136,342.83241505062,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:'"Blown fifth" pelog, von Hornbostel, type a.'},pelog_pa2:{frequencies:[261.6255653006,286.29520819723,313.29104303136,353.69443592699,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:"New mixed gender Pelog"},pelog_pb:{frequencies:[261.6255653006,277.98432293805,304.19649364034,353.69443592699,387.04559340587,411.24653512154,450.02449304881,523.2511306012],description:'"Primitive" Pelog, step of blown semi-fourths, von Hornbostel, type b.'},pelog_pb2:{frequencies:[261.6255653006,277.50302994288,303.66981774726,353.69443592699,387.04559340587,410.5345162762,449.24533531117,523.2511306012],description:'"Primitive" Pelog, Kunst: Music in Java, p. 28'},pelog_schmidt:{frequencies:[261.6255653006,287.78812183066,313.95067836072,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Modern Pelog designed by Dan Schmidt and used by Berkeley Gamelan"},pelog_selun:{frequencies:[261.6255653006,281.10829462369,350.68958753059,378.52209447746,416.55977244877,523.2511306012,562.21664032682,701.37917506118,757.04418895493,833.11970794305,1046.5022612024,1124.43328065364],description:"Gamelan selunding from Kengetan, South Bali (Pelog), 1/1=141 Hz"},pelog_slen:{frequencies:[261.6255653006,289.4545544734,306.66641795878,334.42210013281,344.22141564971,354.30787302884,386.37547528213,397.69714089209,446.39994737251,459.48046426806,493.88330125613,523.2511306012],description:"W.P. Malm, pelog+slendro, Musical Cultures Of The Pacific, The Near East, And Asia. P: 1,3,5,6,8,10; S: 2,4,7,9"},pelog_str:{frequencies:[261.6255653006,282.73796785026,305.22982618403,329.86096249197,356.10146388137,384.83778957396,415.4517078616,448.97742116962,484.69365917187,523.80699136456],description:"JI Pelog with stretched 2/1 and extra tones between 2-3, 6-7. Wolf, XH 11, '87"},pelogic:{frequencies:[261.6255653006,268.93425429917,294.59920226397,322.71340889889,353.51061198674,363.38617257172,398.06486099125,436.0530078362,477.66644151787,523.2511306012],description:"Pelogic temperament, g=521.1, 5-limit"},pelogic2:{frequencies:[261.6255653006,252.56770712848,285.96465797334,276.06414495892,312.56802260838,301.74646235804,341.64630500046,386.82209166041,373.42974737602,422.80824892286,408.17001145418,462.1422075194,523.2511306012],description:"Pelogic temperament, g=677.0 in cycle of fifths order"},penta1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,331.11985608357,372.50983809402,376.74081403286,397.34382730029,423.83341578697,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Pentagonal scale 9/8 3/2 16/15 4/3 5/3"},penta2:{frequencies:[261.6255653006,267.07609791103,286.15296204753,305.22982618403,312.97980223949,333.84512238879,356.10146388137,363.36884069528,400.61414686654,436.04260883433,457.84473927605,476.92160341255,523.2511306012],description:"Pentagonal scale 7/4 4/3 15/8 32/21 6/5"},penta_opt:{frequencies:[261.6255653006,292.5084949701,327.03692214239,391.62201198054,436.95817401562,523.2511306012],description:"Optimally consonant major pentatonic, John deLaubenfels, 2001"},pentadekany:{frequencies:[261.6255653006,283.42769574232,299.7792935736,305.22982618403,327.03195662575,354.2846196779,359.73515228832,381.53728273004,389.71308164569,419.69101100305,425.14154361347,436.04260883433,457.84473927605,479.64686971777,495.99846754905,523.2511306012],description:"2)6 1.3.5.7.11.13 Pentadekany (1.3 tonic)"},pentadekany2:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,305.22982618403,327.03195662575,343.38355445704,359.73515228832,381.53728273004,392.4383479509,419.69101100305,436.04260883433,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"2)6 1.3.5.7.9.11 Pentadekany (1.3 tonic)"},pentadekany3:{frequencies:[261.6255653006,277.97716313189,278.79474302345,287.78812183066,291.4672313427,300.86940009569,305.77487944508,319.67373760167,359.73515228832,376.08675011961,405.51962621593,413.69542513157,430.86460285443,444.76346101102,506.89953276991,523.2511306012],description:"2)6 1.5.11.17.23.31 Pentadekany (1.5 tonic)"},pentatetra1:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,392.4383479509,413.09299784305,436.04260883433,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra2:{frequencies:[261.6255653006,275.39533189537,307.79478270659,327.03195662575,348.83408706747,392.4383479509,413.09299784305,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra3:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,392.4383479509,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatriad:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"4:5:6 Pentatriadic scale"},pentatriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"3:5:9 Pentatriadic scale"},pepper:{frequencies:[261.6255653006,274.70684356563,290.69507255622,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,367.91095120397,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Keenan Pepper's 17-tone jazz tuning, TL 07-06-2000"},pepper2:{frequencies:[261.6255653006,281.81099471089,295.05751399041,308.92668738628,332.76158224462,348.40303271111,375.28368107222,392.9238840789,423.23948674937,443.13385158124,463.96335069158,499.75992392917,523.2511306012],description:`Keenan Pepper's "Noble Fifth" with chromatic/diatonic semitone = Phi (12)`},peprmint:{frequencies:[261.6255653006,270.64528749638,281.81099405977,291.52662269553,295.0575145017,305.22982618403,308.92668738628,319.57714845986,332.76158147578,344.23376699744,348.40303331485,360.41446869983,375.28368085545,388.22184514393,392.92388339801,406.47020562703,423.23948723831,437.83096109824,443.13385158124,458.41119713782,463.9633498876,479.95880678291,499.75992479518,516.98949333115,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},"perkis-indian":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.01393146398,369.99442271164,377.90359432309,388.70083987518,400.13321751856,412.18367363396,425.14154361347,438.99882991118,453.48431318771,469.12170329763,485.27322596079,503.87145909745,523.2511306012],description:"Indian 22 Perkis"},"perrett-tt":{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Perrett Tierce-Tone"},perrett:{frequencies:[261.6255653006,274.70684356563,279.06726965397,348.83408706747,392.4383479509,412.06026534844,418.60090448096,523.2511306012],description:"Perrett / Tartini / Pachymeres Enharmonic"},perrett_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Perrett's 14-tone system (subscale of tierce-tone)"},perrett_chrom:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,392.4383479509,412.06026534844,441.49314144476,523.2511306012],description:"Perrett's Chromatic"},perry:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Robin Perry, Tuning List 22-9-'98"},perry2:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,415.27867508032,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Robin Perry, 7-limit scale, TL 22-10-2006"},perry3:{frequencies:[261.6255653006,277.97716313189,294.32876096318,307.79478270659,327.03195662575,348.83408706747,369.35373924791,370.63621750918,392.4383479509,418.60090448096,444.76346101102,465.11211608996,492.47165233054,523.2511306012],description:"Robin Perry, symmetrical 3,5,17 scale, TL 22-10-2006"},"persian-far":{frequencies:[261.6255653006,275.58617649731,282.84340331238,294.51413096332,310.22971009486,318.39923223688,331.53706992441,349.22823143301,362.58942698662,376.46181130035,391.99543598175,412.91271853531,423.78627283082,441.27260666252,464.81937009253,477.05982293263,496.7443381147,523.2511306012],description:"Hormoz Farhat, average of observed Persian tar and sehtar tunings (1966)"},"persian-vaz":{frequencies:[261.6255653006,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,329.62755691287,349.22823143301,359.46139971304,380.8360868427,391.99543598175,415.30469757995,427.47405410759,440,466.16376151809,479.82340237272,493.88330125613,523.2511306012],description:"Vaziri's Persian tuning, using quartertones"},persian:{frequencies:[261.6255653006,275.62199471997,282.55561052465,294.32876096318,310.07474405997,317.87506184023,331.11985608357,348.83408706747,363.36884069528,376.74081403286,392.4383479509,413.43299207996,423.83341578697,441.49314144476,465.11211608996,476.81259276034,496.67978412536,523.2511306012],description:"Persian Tar Scale, from Dariush Anooshfar, Internet Tuning List 2/10/94"},persian2:{frequencies:[261.6255653006,275.62199471997,288.32205155576,294.32876096318,310.07474405997,321.08592105074,331.11985608357,348.83408706747,367.49599295996,384.42940207435,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,489.99465727995,512.57253609913,523.2511306012],description:"Traditional Persian scale, from Mark Rankin"},phi1_13:{frequencies:[261.6255653006,272.27874348295,293.41755524936,305.36527715608,329.07281683115,342.47239171077,356.41758627629,384.088434771,399.72820043646,416.00480451705,448.3020273708,466.55651779723,502.7784067407,523.2511306012],description:"Pythagorean scale with (Phi + 1) / 2 as fifth"},phi_10:{frequencies:[261.6255653006,277.06593756944,293.41755524936,323.38703872151,342.47239171077,362.68389667063,399.72820043646,423.31898451752,448.3020273708,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_12:{frequencies:[261.6255653006,280.653851324,301.06608340242,314.41721066027,337.28508524374,352.24238645938,377.86132347501,405.34355110824,423.31898451752,454.10739278061,474.24531572837,508.73764640933,531.29821178855],description:"Non-Octave Pythagorean scale with Phi as fourth. Jacky Ligon TL 12-04-2001"},phi_13:{frequencies:[261.6255653006,277.06593756944,293.41755524936,305.36527715608,323.38703872151,342.47239171077,362.68389667063,377.45230514615,399.72820043646,423.31898451752,448.3020273708,466.55651779723,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_13a:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:"Non-Octave Pythagorean scale with Phi as fifth, Jacky Ligon TL 12-04-2001"},phi_13b:{frequencies:[261.6255653006,277.56939878091,287.90530191745,305.45065986668,316.82478268872,336.13253486432,356.61692887617,369.89633953852,392.4383479509,407.05164722964,431.8579526603,458.17598957099,475.23717379553,504.19880204444],description:"Non-Octave Pythagorean scale with 12 3/2s, Jacky Ligon, TL 12-04-2001"},phi_17:{frequencies:[261.6255653006,276.86436108535,292.99059544936,310.05629713556,328.11582814217,347.22745468775,367.4522682176,388.8548834608,411.50435256812,435.47307590797,460.83762934409,487.67984759381,516.08523529366,546.14543793146,577.9565447239,611.62018657326,647.24497389216,684.94478342154],description:"Phi + 1 equal division by 17, Brouncker (1653)"},phi_7b:{frequencies:[261.6255653006,277.06593756944,299.7954575021,323.38703872151,342.47239171077,369.42210382256,399.72820043646,423.31898451752],description:"Heinz Bohlen's Pythagorean scale with Phi as fifth (1999)"},phi_7be:{frequencies:[261.6255653006,277.18263097687,299.37379946195,323.3415889232,342.56848033562,369.99442271164,399.61607881612,423.37848741825],description:"36-tET approximation of phi_7b"},phi_8:{frequencies:[261.6255653006,280.010356995,292.01318753119,312.53354015396,325.93049860793,348.83408706747,373.34714284662,389.35091690288,416.71138708025],description:"Non-Octave Pythagorean scale with 4/3s, Jacky Ligon, TL 12-04-2001"},phi_8a:{frequencies:[261.6255653006,275.77662731691,284.90271245142,300.31281179658,310.2506767011,327.03195662575,344.72084112096,356.12824371673,375.39107678967],description:"Non-Octave Pythagorean scale with 5/4s, Jacky Ligon, TL 12-04-2001"},phillips_19:{frequencies:[261.6255653006,274.63272075836,286.12988535196,293.66476791741,305.42895910556,326.59518553839,329.62755691287,342.83241505062,349.22823143301,366.5907009274,384.81637482457,391.99543598175,407.69874723177,428.71043212875,440,457.62637091093,489.33987776603,493.88330125613,513.66823365307,523.2511306012],description:"Pauline Phillips, organ manual scale, TL 7-10-2002"},phillips_19a:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,326.62388782443,329.50688232588,342.79852229325,349.26020182051,366.55580177366,381.34192228364,391.95955371998,407.7704102616,427.96347506501,439.87918162894,457.62301915088,489.33808574423,493.65730140218,509.07699553894,523.2511306012],description:"Adaptation by Gene Ward Smith with more consonant chords, TL 25-10-2002"},phillips_22:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,343.38355445704,349.22797321314,367.91095120397,392.4383479509,407.76797091773,408.78994578219,416.96574469783,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"All-key 19-limit JI scale (2002), TL 21-10-2002"},phillips_ji:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,349.22797321314,367.91095120397,386.30649876417,392.4383479509,407.76797091773,408.78994578219,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:'Pauline Phillips, JI 0 #/b "C" scale (2002), TL 8-10-2002'},phryg_chromcon2:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Harmonic Conjunct Chromatic Phrygian"},phryg_chromconi:{frequencies:[261.6255653006,283.42769574232,348.83408706747,370.63621750918,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Conjunct Chromatic Phrygian"},phryg_chrominv:{frequencies:[261.6255653006,272.52663052146,283.42769574232,348.83408706747,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian"},phryg_chromt:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,324.77656382143,336.37572681506,362.25078272391,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,627.90135672144,649.55312764287,672.75145363011,724.50156544782,784.8766959018,819.00176963666,837.20180896192,856.22912280196,941.85203508216,1046.5022612024],description:"Phrygian Chromatic Tonos"},phryg_diat:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,392.4383479509,448.50096908674,483.00104363188,523.2511306012],description:"Schlesinger's Phrygian Harmonia, a subharmonic series through 13 from 24"},phryg_diatcon:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,448.50096908674,483.00104363188,523.2511306012],description:"A Phrygian Diatonic with its own trite synemmenon replacing paramese"},phryg_diatinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Conjunct Phrygian Harmonia with 17, the local Trite Synemmenon"},phryg_diatsinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,348.83408706747,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Schlesinger's Phrygian Harmonia, a harmonic series from 12 from 24"},phryg_enh:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the enharmonic genus"},phryg_enhcon:{frequencies:[261.6255653006,283.42769574232,288.87822835275,294.32876096318,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Harmonic Conjunct Enharmonic Phrygian"},phryg_enhinv:{frequencies:[261.6255653006,327.03195662575,337.93302184661,348.83408706747,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Schlesinger's Enharmonic Phrygian Harmonia"},phryg_enhinv2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,348.83408706747,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Inverted harmonic form of Schlesinger's Enharmonic Phrygian"},phryg_penta:{frequencies:[261.6255653006,270.64713651786,285.40970760065,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the pentachromatic genus"},phryg_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,392.4383479509,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,784.8766959018,856.22912280196,941.85203508216,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Phrygian Tonos"},phryg_tri1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the chromatic genus"},phryg_tri1inv:{frequencies:[261.6255653006,305.22982618403,327.03195662575,348.83408706747,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian Harmonia"},phryg_tri2:{frequencies:[261.6255653006,269.10058145205,285.40970760065,348.83408706747,392.4383479509,409.50088481833,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the second trichromatic genus"},phryg_tri3:{frequencies:[261.6255653006,269.10058145205,277.01530443593,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the first trichromatic genus"},phrygian:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,523.2511306012],description:"Old Phrygian ??"},phrygian_diat:{frequencies:[261.6255653006,277.01530443593,294.32876096318,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012,554.03060887186,588.65752192635,672.75145363011,697.66817413493,724.50156544782,753.48162806573,784.8766959018,856.22912280196,897.00193817349,941.85203508216,991.42319482333,1046.5022612024],description:"Phrygian Diatonic Tonos"},phrygian_enh:{frequencies:[261.6255653006,277.01530443593,294.32876096318,303.82323712328,308.80394592858,313.95067836072,348.83408706747,392.4383479509,400.78810003496,405.0976494977,409.50088481833,459.44001711325,523.2511306012],description:"Phrygian Enharmonic Tonos"},phrygian_harm:{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Phrygian Harmonia-Aliquot 24 (flute tuning)"},piano:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Enhanced Piano Total Gamut, see 1/1 vol. 8/2 January 1994"},piano7:{frequencies:[261.6255653006,275.93321340298,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Enhanced piano 7-limit"},pipedum_10:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,372.08969287196,396.89567239676,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"2048/2025 and 34171875/33554432 are homophonic intervals"},pipedum_10a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025 and 25/24, Manuel Op de Coul, 2001"},pipedum_10b:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"225/224, 64/63 and 25/24 are homophonic intervals"},pipedum_10c:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 49/48 are homophonic intervals"},pipedum_10d:{frequencies:[261.6255653006,279.06726965397,299.00064605783,318.93402246168,343.38355445704,372.08969287196,392.4383479509,425.24536328225,448.50096908674,488.36772189445,523.2511306012],description:"1029/1024, 2048/2025 and 64/63 are homophonic intervals"},pipedum_10e:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,367.91095120397,406.97310157871,429.2294430713,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025, 64/63 and 49/48 are homophonic intervals"},pipedum_10f:{frequencies:[261.6255653006,280.31310567921,294.32876096318,327.03195662575,348.83408706747,373.75080757229,392.4383479509,420.46965851882,465.11211608996,490.54793493862,523.2511306012],description:"225/224, 64/63 and 28/27 are homophonic intervals"},pipedum_10g:{frequencies:[261.6255653006,280.31310567921,299.00064605783,325.57848126297,348.83408706747,372.08969287196,398.6675280771,425.24536328225,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 2048/2025 are homophonic intervals"},pipedum_10h:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,373.75080757229,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 64/63 are homophonic intervals"},pipedum_10i:{frequencies:[261.6255653006,279.06726965397,294.32876096318,321.92208230347,343.38355445704,367.91095120397,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"225/224, 2048/2025 and 49/48 are homophonic intervals"},pipedum_10j:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"25/24, 28/27 and 49/48, Gene Ward Smith, 2002"},pipedum_10k:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.49131749323,343.38355445704,367.91095120397,394.1903048614,420.46965851882,455.80987376816,488.36772189445,523.2511306012],description:"2048/2025, 225/224 and 2401/2400"},pipedum_11:{frequencies:[261.6255653006,272.52663052146,282.55561052465,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"16/15 and 15625/15552 are homophonic intervals"},pipedum_11a:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,376.74081403286,381.53728273004,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 10/9, Gene Ward Smith, 2002"},pipedum_12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12a:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12b:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,320.49131749323,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,488.36772189445,523.2511306012],description:"64/63, 50/49 comma and 36/35 chroma"},pipedum_12c:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 36/35 are homophonic intervals"},pipedum_12d:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"50/49, 128/125 and 225/224 are homophonic intervals"},pipedum_12e:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,373.75080757229,392.4383479509,418.60090448096,439.53094970501,467.18850946536,500.55911728431,523.2511306012],description:"50/49, 225/224 and 3136/3125 are homophonic intervals"},pipedum_12f:{frequencies:[261.6255653006,273.74326726486,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,408.78994578219,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"128/125, 3136/3125 and 703125/702464 are homophonic intervals"},pipedum_12g:{frequencies:[261.6255653006,279.06726965397,286.15296204753,306.59245933664,327.03195662575,348.83408706747,366.27579142084,390.69417751556,408.78994578219,437.98922762377,457.84473927605,488.36772189445,523.2511306012],description:"50/49, 225/224 and 28672/28125 are homophonic intervals"},pipedum_12h:{frequencies:[261.6255653006,275.93321340298,291.02331101095,310.42486507835,330.74639366397,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.53496651643,465.11211608996,496.11959049595,523.2511306012],description:"2048/2025 and 67108864/66430125, Gene Ward Smith, 2004"},pipedum_12i:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,441.49314144476,465.11211608996,504.56359022259,523.2511306012],description:"64/63 and 6561/6272, Gene Ward Smith, 2004"},pipedum_12j:{frequencies:[261.6255653006,283.8170195002,285.83021674664,310.07474405997,336.37572681506,348.83408706747,378.42269266694,392.4383479509,413.43299207996,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"6561/6272 and 59049/57344"},pipedum_12k:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,523.2511306012],description:"64/63 and 729/686, Gene Ward Smith, 2004"},pipedum_12l:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,331.39238271409,348.83408706747,368.21375857121,392.4383479509,414.24047839262,441.49314144476,465.11211608996,497.08857407114,523.2511306012],description:"81/80, 361/360 and 513/512, Gene Ward Smith"},pipedum_13:{frequencies:[261.6255653006,276.76092858245,287.78812183066,309.14739649778,327.03195662575,345.95116072807,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051 are homophonic intervals. Op de Coul, 2001"},pipedum_13a:{frequencies:[261.6255653006,266.96486255163,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"15/14, 3136/3125, 2401/2400, Gene Ward Smith, 2002"},pipedum_13b:{frequencies:[261.6255653006,267.90457886781,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"15/14, 3136/3125, 6144/6125, Gene Ward Smith, 2002"},pipedum_13bp:{frequencies:[261.6255653006,282.55561052465,305.16005936662,336.45263027341,363.36884069528,392.4383479509,436.04260883433,470.92601754108,508.60009894437,545.05326104292,605.61473449213,654.0639132515,706.38902631162,784.8766959018],description:"78732/78125 and 250/243, twelfth based, Manuel Op de Coul, 2003"},pipedum_13bp2:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012,565.1112210493,627.90135672144,678.13346525916,726.73768139056,784.8766959018],description:"250/243 and 648/625, twelfth based, Manuel Op de Coul, 2003"},pipedum_13c:{frequencies:[261.6255653006,267.07609791103,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.57253609913,523.2511306012],description:"15/14, 2401/2400, 6144/6125, Gene Ward Smith, 2002"},pipedum_13d:{frequencies:[261.6255653006,281.04308772525,287.78812183066,309.14739649778,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"125/121 and 33275/32768, Joe Monzo, 2003"},pipedum_13e:{frequencies:[261.6255653006,276.76092858245,287.78812183066,304.4370214407,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051, Manuel Op de Coul, 2004"},pipedum_14:{frequencies:[261.6255653006,274.70684356563,284.76252005507,305.22982618403,320.49131749323,336.37572681506,348.83408706747,373.90653707544,392.4383479509,406.97310157871,427.14378008261,448.50096908674,480.73697623985,498.33441009638,523.2511306012],description:"81/80, 49/48 and 2401/2400, Paul Erlich, TL 17-1-2001"},pipedum_14a:{frequencies:[261.6255653006,274.70684356563,284.8811711051,305.22982618403,320.35783506196,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,427.32175665765,448.50096908674,480.53675259294,498.33441009638,523.2511306012],description:"81/80, 50/49 and 2401/2400, Paul Erlich, 2001"},pipedum_14b:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,313.95067836072,339.14425131559,353.19451315581,366.27579142084,392.4383479509,406.97310157871,418.60090448096,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 81/80 comma and 25/24 chroma"},pipedum_14c:{frequencies:[261.6255653006,280.31310567921,282.55561052465,305.22982618403,327.03195662575,336.37572681506,363.36884069528,366.27579142084,392.4383479509,403.65087217807,436.04260883433,467.18850946536,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 50/49 comma and 25/24 chroma"},pipedum_15:{frequencies:[261.6255653006,272.52663052146,290.69507255622,301.39265122629,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,454.2110508691,470.92601754108,502.32108537715,523.2511306012],description:"126/125, 128/125 and 875/864, 5-limit, Paul Erlich, 2001"},pipedum_15a:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,502.32108537715,523.2511306012],description:"Septimal version of pipedum_15, Manuel Op de Coul, 2001"},pipedum_15b:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,311.45900631024,327.03195662575,343.38355445704,357.69120255941,382.72082695402,398.6675280771,418.60090448096,439.53094970501,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"126/125, 128/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15c:{frequencies:[261.6255653006,274.70684356563,284.76252005507,299.00064605783,313.95067836072,327.03195662575,341.71502406609,358.80077526939,381.53728273004,400.61414686654,418.60090448096,436.04260883433,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"49/48, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15d:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,360.55273217989,379.68336007343,398.6675280771,418.60090448096,436.04260883433,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"64/63, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15e:{frequencies:[261.6255653006,273.37201925287,286.15296204753,299.00064605783,313.95067836072,332.22294006425,343.38355445704,358.80077526939,381.53728273004,398.6675280771,412.06026534844,436.04260883433,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"64/63, 875/864 and 1029/1024, Paul Erlich, 2001"},pipedum_15f:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,488.36772189445,490.54793493862,523.2511306012],description:"126/125, 64/63 comma and 28/27 chroma"},pipedum_15g:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"128/125 and 250/243"},pipedum_16:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,355.95315006884,373.75080757229,384.58958099188,400.61414686654,418.60090448096,439.53094970501,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"50/49, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_16a:{frequencies:[261.6255653006,272.52663052146,283.88190679319,301.39265122629,313.95067836072,327.03195662575,340.65828815182,354.85238349148,363.36884069528,385.78259356965,401.85686830172,418.60090448096,436.04260883433,454.2110508691,482.22824196207,502.32108537715,523.2511306012],description:"3125/3072 and 1990656/1953125, OdC 2004"},pipedum_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,465.11211608996,478.40103369253,508.71637697339,523.2511306012],description:"245/243, 64/63 and 525/512, Paul Erlich, 2001"},pipedum_17a:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,461.31528248922,478.40103369253,504.56359022259,523.2511306012],description:"245/243, 525/512 and 1728/1715, Paul Erlich, 2001"},pipedum_17b:{frequencies:[261.6255653006,264.89588486686,286.15296204753,294.32876096318,305.22982618403,327.03195662575,339.14425131559,343.38355445704,367.91095120397,381.53728273004,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"245/243, 64/63 comma and 25/24 chroma"},pipedum_17c:{frequencies:[261.6255653006,273.6806973752,285.83021674664,299.00064605783,310.07474405997,321.55899383997,336.37572681506,348.83408706747,364.90759650026,378.42269266694,392.4383479509,413.43299207996,428.74532511996,448.50096908674,465.11211608996,486.54346200035,504.56359022259,523.2511306012],description:"1605632/1594323 and 177147/175616, Manuel Op de Coul, 2002"},pipedum_17d:{frequencies:[261.6255653006,274.08392555301,284.23518205497,299.00064605783,308.34441624714,319.76457981184,336.37572681506,348.83408706747,365.44523407068,373.05867644715,392.4383479509,411.12588832951,426.35277308246,448.50096908674,465.11211608996,479.64686971777,504.56359022259,523.2511306012],description:"243/242, 99/98 and 64/63, Manuel Op de Coul, 2002"},pipedum_17e:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,310.07474405997,321.92208230347,336.37572681506,348.83408706747,362.16234259141,378.42269266694,395.66829320152,413.43299207996,429.2294430713,445.12682985172,465.11211608996,482.88312345521,504.56359022259,523.2511306012],description:"245/243, 1728/1715 and 32805/32768, Manuel Op de Coul, 2003"},pipedum_17f:{frequencies:[261.6255653006,269.80136421624,285.40970760065,294.32876096318,310.07474405997,319.76457981184,331.11985608357,348.83408706747,359.73515228832,380.54627680087,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,479.64686971777,507.3950357345,523.2511306012],description:"243/242 and 8192/8019, Manuel Op de Coul"},pipedum_17g:{frequencies:[261.6255653006,274.08392555301,285.40970760065,299.00064605783,305.22982618403,319.76457981184,336.37572681506,348.83408706747,359.73515228832,380.54627680087,392.4383479509,406.97310157871,428.11456140098,448.50096908674,457.84473927605,479.64686971777,499.46698830115,523.2511306012],description:"243/242, 896/891 and 99/98, Manuel Op de Coul"},pipedum_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,340.65828815182,350.39138209902,379.84156147346,390.69417751556,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 128/125, Paul Erlich, 2001"},pipedum_18a:{frequencies:[261.6255653006,269.10058145205,280.31310567921,293.02063313667,305.22982618403,313.95067836072,327.03195662575,341.85740532612,356.10146388137,366.27579142084,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 50/49, Paul Erlich, 2001"},pipedum_18b:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,346.20975655133,356.10146388137,373.75080757229,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 686/675, Paul Erlich, 2001"},pipedum_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,301.39265122629,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,401.85686830172,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"81/80 and 15625/15552 are homophonic intervals, inverse of Mandelbaum"},pipedum_19a:{frequencies:[261.6255653006,271.25338610366,282.55561052465,294.32876096318,301.39265122629,313.95067836072,327.03195662575,339.06673262958,353.19451315581,361.67118147155,376.74081403286,392.4383479509,408.78994578219,416.64520105522,434.00541776586,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"3125/3072 and 15625/15552 are homophonic intervals"},pipedum_19b:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"15625/15552 and 78732/78125, Paul Erlich, TL 19-2-2001"},pipedum_19c:{frequencies:[261.6255653006,269.10058145205,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19d:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19e:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19f:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,305.22982618403,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,448.50096908674,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19g:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,360.4025644447,379.84156147346,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19h:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,412.06026534844,415.27867508032,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"126/125, 81/80 comma and 49/48 chroma"},pipedum_19i:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.22982618403,321.92208230347,327.03195662575,343.38355445704,348.83408706747,367.91095120397,381.53728273004,392.4383479509,406.97310157871,429.2294430713,436.04260883433,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"225/224, 81/80 comma and 49/48 chroma"},pipedum_19j:{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.70607818954,358.95027559242,366.27579142084,373.75080757229,381.37837507376,410.22888639134,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"21/20, 3136/3125 and 2401/2400, Gene Ward Smith, 2002"},pipedum_19k:{frequencies:[261.6255653006,267.90457886781,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,357.69120255941,366.27579142084,373.75080757229,382.72082695402,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,510.98743222773,523.2511306012],description:"21/20, 3136/3125 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19l:{frequencies:[261.6255653006,267.07609791103,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.84512238879,358.80077526939,366.27579142084,373.75080757229,381.53728273004,410.05802887931,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.57253609913,523.2511306012],description:"21/20, 2401/2400 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19m:{frequencies:[261.6255653006,269.10058145205,293.02063313667,299.00064605783,305.22982618403,313.95067836072,317.94773560837,348.83408706747,358.80077526939,366.27579142084,373.75080757229,406.97310157871,418.60090448096,430.56093032327,436.04260883433,448.50096908674,488.36772189445,502.32108537715,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 16/15, Gene Ward Smith, 2002"},pipedum_19n:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,366.27579142084,373.75080757229,381.53728273004,392.4383479509,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"126/125, 2401/2400 and 16/15, Gene Ward Smith, 2002"},pipedum_19o:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,502.32108537715,523.2511306012],description:"225/224, 3136/3125 and 4375/4374, OdC 2000"},pipedum_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,284.8811711051,299.00064605783,305.22982618403,320.35783506196,327.03195662575,341.85740532612,348.83408706747,366.27579142084,373.75080757229,392.4383479509,400.44729382745,418.60090448096,427.32175665765,448.50096908674,457.84473927605,480.53675259294,488.36772189445,512.57253609913,523.2511306012],description:"36/35, 225/224 and 2401/2400, P. Erlich, 2001. Just PB version of miracle1"},pipedum_21a:{frequencies:[261.6255653006,265.7783520514,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,332.22294006425,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"1029/1024, 81/80 comma and 25/24 chroma"},pipedum_21b:{frequencies:[261.6255653006,267.07609791103,279.06726965397,284.8811711051,299.00064605783,305.22982618403,318.93402246168,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,398.6675280771,418.60090448096,427.32175665765,448.50096908674,457.84473927605,478.40103369253,488.36772189445,496.11959049595,523.2511306012],description:"36/35, 225/224 and 1029/1024, Gene Ward Smith, 2002"},pipedum_21c:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"First 128/125 and ampersand comma Fokker block"},pipedum_22:{frequencies:[261.6255653006,267.90457886781,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,365.77905168086,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"3125/3072 and 2109375/2097152 are homophonic intervals"},pipedum_22a:{frequencies:[261.6255653006,267.90457886781,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,381.01984550089,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"2048/2025 and 2109375/2097152 are homophonic intervals"},pipedum_22b:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,357.69120255941,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:'2025/2048, 245/243 and 64/63. P. Erlich "7-limit Indian", TL 19-12-2000'},pipedum_22b2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,448.50096908674,465.11211608996,478.40103369253,490.54793493862,504.56359022259,523.2511306012],description:"Version of pipedum_22b with other shape, Paul Erlich"},pipedum_22c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,512.57253609913,523.2511306012],description:"1728/1715, 64/63 and 50/49, Paul Erlich, 2001"},pipedum_22d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 64/63, Paul Erlich, 2001"},pipedum_22e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,384.42940207435,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 50/49, Paul Erlich, 2001"},pipedum_22f:{frequencies:[261.6255653006,269.10058145205,276.78916949353,290.69507255622,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,470.92601754108,494.58536650191,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 875/864, Paul Erlich, 2001"},pipedum_22g:{frequencies:[261.6255653006,267.07609791103,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,490.54793493862,512.57253609913,523.2511306012],description:"225/224, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_22h:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"225/224, 1728/1715 and 875/864, Paul Erlich, 2001"},pipedum_22i:{frequencies:[261.6255653006,269.10058145205,279.06726965397,288.32205155576,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,474.80195184183,490.54793493862,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 245/243, Paul Erlich, 2001"},pipedum_22j:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,299.00064605783,305.22982618403,320.35783506196,332.22294006425,336.37572681506,348.83408706747,353.19451315581,373.75080757229,387.59343007496,392.4383479509,406.97310157871,427.14378008261,436.04260883433,448.50096908674,465.11211608996,480.53675259294,498.33441009638,504.56359022259,523.2511306012],description:"50/49, 64/63 and 245/243, Gene Ward Smith, 2002"},pipedum_22k:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"121/120, 2048/2025 and 4125/4096, Manuel Op de Coul"},pipedum_22l:{frequencies:[261.6255653006,275.62199471997,284.23518205497,290.69507255622,303.18419419197,310.07474405997,319.76457981184,330.74639366397,341.08221846597,348.83408706747,363.82103303037,372.08969287196,387.59343007496,404.24559225596,413.43299207996,426.35277308246,440.99519155196,454.77629128796,465.11211608996,485.09471070715,496.11959049595,511.62332769895,523.2511306012],description:"121/120, 736/729, 100/99 and 2048/2025"},pipedum_23:{frequencies:[261.6255653006,271.25338610366,276.85245005354,287.04062021552,297.60371503945,302.80736724606,313.95067836072,325.50406332439,332.22294006425,344.44874425862,348.83408706747,363.36884069528,376.74081403286,384.51729174103,398.6675280771,413.33849311034,420.56578784176,436.04260883433,452.08897683944,461.42075008924,478.40103369253,496.00619173241,504.67894541011,523.2511306012],description:"6144/6125, 15625/1552 and 5103/5000, Manuel Op de Coul, 2003"},pipedum_24:{frequencies:[261.6255653006,267.57160087561,275.93321340298,285.40970760065,290.69507255622,299.7792935736,310.07474405997,319.76457981184,327.03195662575,338.26335715633,348.83408706747,356.76213450082,367.91095120397,380.54627680087,392.4383479509,401.35740131342,413.43299207996,426.35277308246,436.04260883433,449.66894036041,465.11211608996,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"121/120, 16384/16335 and 32805/32768. Manuel Op de Coul, 2001"},pipedum_24a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,321.92208230347,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,412.06026534844,418.60090448096,429.2294430713,436.04260883433,457.84473927605,470.92601754108,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"49/48, 81/80 and 128/125, Gene Ward Smith, 2002"},pipedum_24b:{frequencies:[261.6255653006,271.31540105247,275.62199471997,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,413.43299207996,434.59481110969,441.49314144476,457.84473927605,465.11211608996,482.33849075995,496.67978412536,515.07533168556,523.2511306012],description:"49/48, 81/80 and 531441/524288"},pipedum_25:{frequencies:[261.6255653006,268.26840191956,274.70684356563,281.29980781121,291.99281841585,299.00064605783,306.17666156322,313.95067836072,327.03195662575,335.33550239945,343.38355445704,351.62475976401,364.99102301981,373.75080757229,382.72082695402,392.4383479509,408.78994578219,418.60090448096,429.2294430713,439.53094970501,447.89271634391,467.18850946536,478.40103369253,490.54793493862,502.32108537715,523.2511306012],description:"65625/65536, 1029/1024 and 3125/3072, Manuel Op de Coul, 2003"},pipedum_26:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,292.89859205665,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,341.71502406609,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,400.61414686654,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,467.3831713443,478.40103369253,498.33441009638,512.57253609913,523.2511306012],description:"1029/1024, 1728/1715 and 50/49, Paul Erlich, 2001"},pipedum_26a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,306.59245933664,321.92208230347,325.57848126297,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,457.84473927605,459.88868900496,465.11211608996,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"50/49, 81/80 and 525/512, Gene Ward Smith, 2002"},pipedum_26b:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,290.69507255622,301.39265122629,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,446.50763144636,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"81/80 and 78125/73728, Gene Ward Smith, 2005"},pipedum_27:{frequencies:[261.6255653006,271.20240005245,278.95104005395,284.76252005507,292.89859205665,299.00064605783,307.54352165948,316.40280006119,325.44288006294,332.22294006425,341.71502406609,351.47831046798,358.80077526939,369.05222599138,379.68336007343,390.53145607553,398.6675280771,410.05802887931,418.60090448096,430.56093032327,442.86267118965,455.62003208812,468.63774729064,478.40103369253,492.06963465517,502.32108537715,516.67311638793,523.2511306012],description:"126/125, 1728/1715 and 4000/3969 are homophonic intervals, Paul Erlich"},pipedum_27a:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,508.71637697339,523.2511306012],description:"126/126, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27b:{frequencies:[261.6255653006,266.96486255163,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.22888639134,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 128/125, Paul Erlich, 2001"},pipedum_27c:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 686/675, Paul Erlich, 2001"},pipedum_27d:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 64/63, Paul Erlich, 2001"},pipedum_27e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,329.64821227876,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.27867508032,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 126/125 and 245/243, Paul Erlich, 2001"},pipedum_27f:{frequencies:[261.6255653006,267.07609791103,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.05802887931,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 128/125, Paul Erlich, 2001"},pipedum_27g:{frequencies:[261.6255653006,267.07609791103,274.59243005311,280.31310567921,290.81619550312,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.72988009104,488.36772189445,498.54204943392,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 686/675, Paul Erlich, 2001"},pipedum_27h:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27i:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.43792805463,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,329.51091606373,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.4517078616,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.69365917187,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 1728/1715 and 245/243, Paul Erlich, 2001"},pipedum_27j:{frequencies:[261.6255653006,269.16210421872,276.91574508099,282.55561052465,290.69507255622,299.06900468747,305.16005936662,313.95067836072,322.99452506247,329.57286411595,339.06673262958,348.83408706747,358.88280562497,366.19207123994,376.74081403286,387.59343007496,395.48743693914,406.88007915549,418.60090448096,423.83341578697,436.04260883433,448.60350703121,461.52624180165,470.92601754108,484.4917875937,498.44834114579,508.60009894437,523.2511306012],description:"78732/78125 and 390625000/387420489"},pipedum_27k:{frequencies:[261.6255653006,264.89588486686,275.62199471997,279.38237857051,290.69507255622,294.32876096318,298.00787047521,310.07474405997,313.95067836072,331.11985608357,344.52749339997,348.83408706747,353.19451315581,367.49599295996,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,418.60090448096,441.49314144476,447.01180571282,459.36999119996,465.11211608996,470.92601754108,496.67978412536,516.79124009995,523.2511306012],description:"67108864/66430125 and 25/24"},pipedum_28:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"393216/390625 and 16875/16384"},pipedum_29:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,288.44218574391,294.32876096318,300.33547037059,310.07474405997,316.40280006119,325.57848126297,332.22294006425,341.85740532612,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,400.44729382745,412.06026534844,420.46965851882,434.10464168396,442.96392008567,455.80987376816,465.11211608996,474.60420009179,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"5120/5103, 225/224 and 50421/50000, Manuel Op de Coul, 2003"},pipedum_29a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,317.94773560837,327.03195662575,339.14425131559,343.38355445704,348.83408706747,363.36884069528,366.27579142084,372.60080508745,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,441.49314144476,457.84473927605,470.92601754108,476.92160341255,490.54793493862,508.71637697339,515.07533168556,523.2511306012],description:"49/48, 55/54, 65/64, 91/90 and 100/99"},pipedum_31:{frequencies:[261.6255653006,271.62175694356,275.93321340298,281.68182201554,289.72987407313,294.32876096318,300.46061014991,310.42486507835,316.89204976748,321.92208230347,331.11985608357,338.01818641865,343.38355445704,356.50355598842,362.16234259141,367.91095120397,380.27045972098,386.30649876417,392.4383479509,407.43263541533,413.89982010446,422.52273302331,434.59481110969,441.49314144476,450.69091522486,465.63729761752,475.33807465122,482.88312345521,496.67978412536,507.02727962797,515.07533168556,523.2511306012],description:"81/80, 225/224 and 1029/1024 are homophonic intervals"},pipedum_31a:{frequencies:[261.6255653006,269.46602871384,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,329.20114651277,336.83253589231,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,411.50143314096,421.04066986538,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,482.22824196207,490.54793493862,502.32108537715,514.3767914262,523.2511306012],description:"393216/390625 and 2109375/2097152 are homophonic intervals"},pipedum_31b:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,327.03195662575,333.84512238879,339.14425131559,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,387.59343007496,392.4383479509,400.61414686654,406.97310157871,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"245/243, 1029/1024 comma and 25/24 chroma"},pipedum_31c:{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,334.88072358477,343.38355445704,348.83408706747,360.55273217989,366.27579142084,373.75080757229,384.58958099188,392.4383479509,398.6675280771,412.06026534844,418.60090448096,429.2294430713,439.53094970501,448.50096908674,457.84473927605,470.92601754108,480.73697623985,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"126/125, 225/224 and 1029/1024, Op de Coul"},pipedum_31d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,316.53463456122,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"1728/1715, 225/224 and 81/80"},pipedum_31e:{frequencies:[261.6255653006,267.07609791103,272.52663052146,276.85245005354,286.15296204753,290.69507255622,299.00064605783,305.22982618403,311.45900631024,317.94773560837,327.03195662575,332.22294006425,343.38355445704,348.83408706747,357.69120255941,363.36884069528,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,415.27867508032,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,476.92160341255,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:'81/80, 126/125 and 1029/1024, Gene Smith (2005) "Synstargam"'},pipedum_32:{frequencies:[261.6255653006,267.07609791103,270.30192333353,280.31310567921,286.15296204753,292.11448209019,299.00064605783,305.22982618403,311.5887808962,315.35224388912,325.57848126297,333.84512238879,337.87740416691,348.83408706747,356.10146388137,360.4025644447,367.91095120397,379.84156147346,384.42940207435,394.1903048614,406.97310157871,415.4517078616,420.46965851882,429.2294430713,443.14848838571,448.50096908674,457.84473927605,474.80195184183,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"225/224, 2048/2025 and 117649/116640"},pipedum_32a:{frequencies:[261.6255653006,268.26840191956,274.59243005311,280.31310567921,286.15296204753,292.89859205665,299.00064605783,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,341.71502406609,348.83408706747,356.10146388137,364.4960256705,372.08969287196,381.53728273004,390.53145607553,398.6675280771,406.97310157871,416.56688648057,425.24536328225,434.10464168396,438.17172313528,450.50320555588,459.88868900496,469.46970335923,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"589824/588245, 225/224 and 2048/2025"},pipedum_34:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,327.03195662575,334.88072358477,340.65828815182,348.83408706747,354.85238349148,363.36884069528,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,470.92601754108,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 393216/390625 are homophonic intervals"},pipedum_34a:{frequencies:[261.6255653006,264.89588486686,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,317.87506184023,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,441.49314144476,452.08897683944,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 2048/2025, Manuel Op de Coul, 2001"},pipedum_34b:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.7792935736,310.07474405997,313.95067836072,319.76457981184,327.03195662575,334.88072358477,342.49164912079,348.83408706747,356.76213450082,359.73515228832,367.91095120397,380.54627680087,383.71749577421,392.4383479509,399.70572476481,408.78994578219,418.60090448096,428.11456140098,436.04260883433,441.49314144476,449.66894036041,465.11211608996,470.92601754108,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"100/99, 243/242 and 5632/5625, Manuel Op de Coul"},pipedum_36:{frequencies:[261.6255653006,267.07609791103,269.10058145205,280.31310567921,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,400.61414686654,406.97310157871,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,467.3831713443,480.53675259294,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"1029/1024, 245/243 comma and 50/49 chroma, Gene Ward Smith, 2001"},pipedum_36a:{frequencies:[261.6255653006,264.89588486686,275.62199471997,275.93321340298,279.06726965397,290.69507255622,293.99679436797,294.32876096318,310.07474405997,310.42486507835,313.95067836072,327.03195662575,330.74639366397,331.11985608357,348.83408706747,349.22797321314,353.19451315581,367.91095120397,372.08969287196,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,413.89982010446,418.60090448096,436.04260883433,440.99519155196,441.49314144476,465.11211608996,465.63729761752,470.92601754108,490.54793493862,496.11959049595,496.67978412536,516.79124009995,523.2511306012],description:"1125/1024 and 531441/524288, Op de Coul"},pipedum_37:{frequencies:[261.6255653006,263.718569823,276.85245005354,279.06726965397,280.31310567921,290.69507255622,293.02063313667,299.00064605783,308.98710943476,311.45900631024,313.95067836072,325.57848126297,332.22294006425,333.70607818954,346.06556256693,348.83408706747,351.62475976401,353.19451315581,370.78453132171,373.75080757229,376.74081403286,390.69417751556,392.4383479509,400.44729382745,415.27867508032,418.60090448096,421.94971171681,436.04260883433,444.94143758605,448.50096908674,465.11211608996,467.18850946536,470.92601754108,494.37937509562,498.33441009638,502.32108537715,519.0983438504,523.2511306012],description:"250/243, 3136/3125 and 3125/3087, Gene Ward Smith, 2002"},pipedum_38:{frequencies:[261.6255653006,271.25338610366,272.52663052146,280.3771918945,282.55561052465,290.69507255622,292.95365699196,301.39265122629,302.80736724606,313.95067836072,315.42434088132,325.50406332439,327.03195662575,336.45263027341,339.06673262958,348.83408706747,350.47148986813,361.67118147155,363.36884069528,376.74081403286,378.50920905758,390.60487598927,392.4383479509,403.74315632809,406.88007915549,418.60090448096,420.56578784176,434.00541776586,436.04260883433,452.08897683944,454.2110508691,467.29531982417,470.92601754108,484.4917875937,488.25609498659,502.32108537715,504.67894541011,519.21702202686,523.2511306012],description:"81/80 and 1224440064/1220703125, Manuel Op de Coul, 2001"},pipedum_38a:{frequencies:[261.6255653006,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,294.32876096318,305.22982618403,306.59245933664,313.95067836072,321.92208230347,327.03195662575,329.64821227876,340.65828815182,343.38355445704,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,383.2405741708,390.69417751556,392.4383479509,408.78994578219,412.06026534844,418.60090448096,429.2294430713,436.04260883433,439.53094970501,457.84473927605,459.88868900496,470.92601754108,476.92160341255,488.36772189445,490.54793493862,510.98743222773,515.07533168556,523.2511306012],description:"50/49, 81/80 and 3125/3072, Gene Ward Smith, 2002"},pipedum_41:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,303.67253115248,308.34441624714,313.95067836072,320.49131749323,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.2846196779,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.40708707973,392.4383479509,400.61414686654,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"100/99 105/104 196/195 275/273 385/384, Paul Erlich, TL 3-11-2000"},pipedum_41a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,400.61414686654,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"pipedum_41 improved shape by Manuel Op de Coul, all intervals superparticular"},pipedum_41b:{frequencies:[261.6255653006,265.7783520514,271.31540105247,274.70684356563,279.06726965397,284.8811711051,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,504.56359022259,515.07533168556,523.2511306012],description:"pipedum_41 more improved shape by M. OdC, all intervals superparticular"},pipedum_41c:{frequencies:[261.6255653006,267.07609791103,271.31540105247,275.93321340298,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,315.35224388912,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,360.4025644447,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,398.6675280771,406.97310157871,410.05802887931,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,474.80195184183,480.53675259294,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"225/224, 245/243 and 1029/1024, Gene Ward Smith, 2002"},pipedum_41d:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,282.55561052465,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,317.51653791741,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,423.83341578697,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"3125/3072 and 32805/32768"},pipedum_43:{frequencies:[261.6255653006,269.10058145205,273.37201925287,274.70684356563,282.55561052465,286.15296204753,287.04062021552,290.69507255622,299.00064605783,305.22982618403,307.54352165948,313.95067836072,322.92069774245,327.03195662575,328.04642310345,332.22294006425,341.71502406609,343.38355445704,348.83408706747,358.80077526939,366.27579142084,369.05222599138,376.74081403286,379.68336007343,381.53728273004,392.4383479509,398.6675280771,410.05802887931,412.06026534844,418.60090448096,423.93031414449,430.56093032327,436.04260883433,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,492.06963465517,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 12288/12005, Gene Ward Smith, 2002"},pipedum_45:{frequencies:[261.6255653006,265.7783520514,267.07609791103,274.70684356563,279.06726965397,280.31310567921,284.8811711051,293.02063313667,294.32876096318,299.00064605783,303.74668805875,305.22982618403,313.95067836072,320.49131749323,325.57848126297,327.03195662575,336.37572681506,341.85740532612,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,372.08969287196,373.75080757229,384.58958099188,392.4383479509,398.6675280771,400.61414686654,406.97310157871,418.60090448096,420.46965851882,427.32175665765,436.04260883433,439.53094970501,448.50096908674,455.80987376816,457.84473927605,465.11211608996,478.40103369253,480.73697623985,488.36772189445,498.33441009638,512.78610798918,515.07533168556,523.2511306012],description:"81/80, 525/512 and 2401/2400, Gene Ward Smith, 2002"},scala205pipedum_45a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.99452506247,329.64821227876,336.37572681506,339.14425131559,345.98646186692,348.83408706747,356.10146388137,363.28578496026,366.27579142084,373.75080757229,376.82694590621,384.42940207435,392.4383479509,395.66829320152,403.65087217807,406.97310157871,415.27867508032,423.83341578697,427.14378008261,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 2401/2400 and 4375/4374, Gene Ward Smith"},pipedum_46:{frequencies:[261.6255653006,265.7783520514,270.41454913492,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,295.30928005711,300.46061014991,305.22982618403,310.07474405997,313.95067836072,320.49131749323,325.57848126297,327.03195662575,332.22294006425,339.14425131559,343.38355445704,348.83408706747,354.37113606854,360.55273217989,366.27579142084,372.08969287196,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.32175665765,429.2294430713,436.04260883433,442.96392008567,450.69091522486,457.84473927605,465.11211608996,470.92601754108,480.73697623985,488.36772189445,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"126/125, 1029/1024 and 5120/5103. Manuel Op de Coul, 2001"},pipedum_46a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,313.95067836072,320.35783506196,320.49131749323,327.03195662575,332.22294006425,336.37572681506,343.38355445704,348.83408706747,353.19451315581,358.80077526939,366.12324007081,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.14378008261,427.32175665765,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,470.92601754108,478.40103369253,488.36772189445,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"126/125, 1029/1024 and 245/243, Gene Ward Smith, 2002"},pipedum_46b:{frequencies:[261.6255653006,264.89588486686,271.25338610366,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,301.39265122629,302.80736724606,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,334.88072358477,339.06673262958,340.65828815182,348.83408706747,353.19451315581,361.67118147155,363.36884069528,372.08969287196,376.74081403286,381.45007420827,387.59343007496,392.4383479509,401.85686830172,403.74315632809,408.78994578219,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,452.08897683944,454.2110508691,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,508.60009894437,516.79124009995,523.2511306012],description:"2048/2025 and 78732/78125"},pipedum_46c:{frequencies:[261.6255653006,266.47048317654,271.31540105247,274.08392555301,279.06726965397,282.62020942966,287.78812183066,290.69507255622,297.67175429757,299.7792935736,306.97399661937,310.07474405997,313.95067836072,319.76457981184,325.57848126297,328.90071066361,332.22294006425,339.14425131559,342.60490694126,348.83408706747,355.29397756872,359.73515228832,363.36884069528,372.08969287196,374.72411696701,383.71749577421,387.59343007496,394.68085279633,399.70572476481,406.97310157871,411.12588832951,418.60090448096,426.35277308246,431.68218274599,436.04260883433,446.50763144636,449.66894036041,460.46099492906,465.11211608996,467.18850946536,479.64686971777,484.4917875937,496.11959049595,499.63215595601,511.62332769895,516.79124009995,523.2511306012],description:"126/125, 176/175, 385/384 and 896/891, Paul Erlich"},pipedum_46d:{frequencies:[261.6255653006,267.23182741418,272.79915715198,274.70684356563,278.36648688978,283.42769574232,287.78812183066,291.52562990638,297.59908052943,299.7792935736,303.67253115248,311.77046531655,313.95067836072,320.67819289702,324.7609013714,327.03195662575,334.03978426773,340.11323489078,343.04051394309,345.34574619679,354.2846196779,359.73515228832,366.27579142084,374.12455837986,376.74081403286,381.53728273004,389.71308164569,392.4383479509,402.90337056292,408.13588186894,411.12588832951,419.69101100305,425.14154361347,431.68218274599,439.53094970501,445.38637902364,448.50096908674,457.84473927605,467.65569797482,470.92601754108,479.64686971777,485.87604984397,490.54793493862,503.62921320365,510.16985233617,519.61744219425,523.2511306012],description:"91/90, 121/120, 126/125, 169/168 and 176/175"},pipedum_5:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"16/15 and 27/25"},pipedum_50:{frequencies:[261.6255653006,267.07609791103,269.10058145205,273.37201925287,274.70684356563,276.85245005354,284.76252005507,286.15296204753,290.69507255622,299.00064605783,300.46061014991,305.22982618403,307.54352165948,313.95067836072,316.40280006119,320.49131749323,327.03195662575,332.22294006425,333.84512238879,341.71502406609,343.38355445704,348.83408706747,358.80077526939,360.55273217989,361.60320006994,366.27579142084,373.75080757229,379.68336007343,381.53728273004,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.93031414449,427.14378008261,436.04260883433,445.12682985172,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,480.73697623985,484.4917875937,498.33441009638,500.76768358318,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 16807/16384, Gene Ward Smith, 2002"},pipedum_53:{frequencies:[261.6255653006,264.89588486686,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"15625/15552 and 32805/32768, Manuel Op de Coul, 2001"},pipedum_53a:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,276.85245005354,280.31310567921,282.55561052465,288.32205155576,290.69507255622,294.32876096318,299.00064605783,302.80736724606,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.99452506247,327.03195662575,332.22294006425,336.37572681506,339.14425131559,346.06556256693,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,387.59343007496,392.4383479509,398.6675280771,403.65087217807,406.97310157871,415.27867508032,418.60090448096,423.83341578697,430.56093032327,436.04260883433,441.49314144476,448.50096908674,454.2110508691,457.84473927605,467.18850946536,470.92601754108,480.53675259294,484.4917875937,490.54793493862,498.33441009638,504.56359022259,508.71637697339,519.0983438504,523.2511306012],description:"225/224, 1728/1715 and 4375/4374, Manuel Op de Coul, 2001"},pipedum_53b:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,274.70684356563,280.31310567921,286.03378130532,288.32205155576,290.69507255622,293.02063313667,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.92069774245,327.03195662575,333.70607818954,336.37572681506,341.85740532612,343.24053756638,348.83408706747,351.62475976401,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,389.3237578878,392.4383479509,400.44729382745,403.65087217807,406.97310157871,410.22888639134,418.60090448096,427.14378008261,430.56093032327,436.04260883433,439.53094970501,448.50096908674,457.65405008851,457.84473927605,467.18850946536,470.92601754108,478.60036745656,480.53675259294,488.36772189445,498.33441009638,502.32108537715,512.57253609913,512.78610798918,523.2511306012],description:"225/224, 1728/1715 and 3125/3087, Gene Ward Smith, 2002"},pipedum_55:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,293.02063313667,294.32876096318,296.75121990114,299.00064605783,305.22982618403,306.59245933664,313.95067836072,317.94773560837,320.49131749323,325.57848126297,327.03195662575,333.84512238879,336.37572681506,340.65828815182,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,367.91095120397,373.75080757229,376.74081403286,381.53728273004,390.69417751556,392.4383479509,400.61414686654,403.65087217807,406.97310157871,408.78994578219,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,445.12682985172,448.50096908674,457.84473927605,459.88868900496,470.92601754108,474.80195184183,476.92160341255,488.36772189445,490.54793493862,502.32108537715,504.56359022259,508.71637697339,520.92557002075,523.2511306012],description:"81/80, 686/675 and 6144/6125, Gene Ward Smith, 2002"},pipedum_58:{frequencies:[261.6255653006,264.29521392612,268.60224704195,271.31540105247,275.62199471997,277.50997462242,280.31310567921,284.8811711051,287.78812183066,292.35618725654,295.30928005711,297.33211566688,302.17752792219,305.22982618403,310.07474405997,313.23877206058,315.35224388912,320.49131749323,323.76163705949,328.90071066361,332.22294006425,337.63694353197,339.94971891247,343.38355445704,348.83408706747,352.39361856816,358.13632938927,361.75386806997,364.23184169193,370.01329949656,373.75080757229,379.84156147346,383.71749577421,389.80824967539,392.4383479509,396.44282088917,402.90337056292,406.97310157871,413.43299207996,417.65169608078,420.46965851882,427.32175665765,431.68218274599,438.53428088482,442.96392008567,445.99817350032,453.26629188329,457.84473927605,465.11211608996,469.85815809087,477.51510585235,480.73697623985,485.64245558924,493.35106599542,498.33441009638,506.45541529795,511.62332769895,515.07533168556,523.2511306012],description:"9801/9800, 2401/2400, 5120/5103 and 896/891"},pipedum_58a:{frequencies:[261.6255653006,265.65057399753,267.66008354786,270.48058443385,272.52663052146,277.4816601673,281.75060878526,285.40970760065,287.78812183066,293.02063313667,295.1673044417,297.30177875068,301.87565226992,305.22982618403,309.92566966379,313.95067836072,316.2506833304,322.00069575458,323.72860352852,327.03195662575,332.97799220076,338.10073054231,342.60490694126,344.24801655217,348.83408706747,352.18826098158,358.59168390851,362.25078272391,366.27579142084,368.95913055213,375.66747838035,379.50081999647,381.53728273004,388.47432423422,392.4383479509,399.57359064092,402.50086969323,406.97310157871,411.12588832951,418.60090448096,422.62591317789,428.25613367658,430.31002069022,436.04260883433,442.75095666255,450.80097405642,455.40098399577,457.84473927605,466.16918908107,469.58434797544,475.68284600109,483.00104363188,488.36772189445,495.88107146206,499.46698830115,503.12608711654,512.27383415502,516.54278277298,523.2511306012],description:"126/125, 144/143, 176/175, 196/195 and 364/363"},pipedum_5a:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:"27/25 and 81/80"},pipedum_64:{frequencies:[261.6255653006,267.90457886781,266.96486255163,273.37201925287,274.70684356563,273.74326726486,280.31310567921,280.42990280658,284.76252005507,286.15296204753,294.32876096318,300.05312833195,299.00064605783,300.46061014991,307.67166479351,306.59245933664,313.95067836072,312.84944830269,320.35783506196,320.49131749323,328.18310911307,327.03195662575,336.37572681506,336.5158833679,341.71502406609,343.38355445704,351.62475976401,348.83408706747,358.80077526939,358.95027559242,366.12324007081,366.27579142084,375.06641041494,373.75080757229,382.72082695402,384.58958099188,383.2405741708,392.4383479509,392.60186392921,398.6675280771,400.61414686654,412.06026534844,408.78994578219,418.60090448096,428.6473261885,427.14378008261,429.2294430713,439.53094970501,437.98922762377,448.50096908674,448.68784449053,455.62003208812,457.84473927605,468.83301301868,467.18850946536,478.40103369253,480.73697623985,488.16432009441,490.54793493862,502.32108537715,500.55911728431,512.57253609913,512.78610798918,520.70860810071,523.2511306012],description:"225/224 235298/234375 and 67108864/66706983"},pipedum_65:{frequencies:[261.6255653006,264.59711493117,267.38234771992,270.72462706642,273.0589090967,275.93321340298,279.06726965397,282.00481986086,285.20783756792,287.99181818792,291.26283636981,294.32876096318,297.67175429757,300.80514118491,303.39878788522,306.84479880935,310.42486507835,313.95067836072,317.25542234346,320.85881726391,323.62537374423,327.30111872997,331.11985608357,334.60532825287,338.40578383303,341.32363637087,345.20039866051,348.83408706747,352.79615324157,356.9123501364,360.9661694219,364.07854546226,367.91095120397,372.08969287196,376.00642648114,380.70650681216,383.98909091723,388.35044849308,392.4383479509,396.89567239676,401.07352157989,404.53171718029,409.58836364504,413.89982010446,418.60090448096,423.00722979129,427.81175635188,431.50049832564,436.89425455471,441.49314144476,446.50763144636,451.20771177737,455.09818182783,460.26719821402,465.11211608996,470.92601754108,475.8831335152,481.28822589586,485.43806061635,490.95167809495,496.11959049595,501.90799237931,507.60867574954,511.9854545563,517.80059799077,523.2511306012],description:"1216/1215, 32805/32768 and 39858075/39845888. Manuel Op de Coul, 2001"},pipedum_65a:{frequencies:[261.6255653006,264.89588486686,267.90457886781,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,286.08755565621,287.10624449997,290.69507255622,294.32876096318,298.00787047521,301.39265122629,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,319.0069383333,322.99452506247,327.03195662575,331.11985608357,334.88072358477,339.06673262958,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.60944457026,358.88280562497,363.36884069528,367.91095120397,372.08969287196,376.74081403286,381.45007420827,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,403.74315632809,408.78994578219,413.43299207996,418.60090448096,423.83341578697,429.13133348431,430.65936674996,436.04260883433,441.49314144476,446.50763144636,452.08897683944,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,478.51040749995,484.4917875937,490.54793493862,496.67978412536,502.32108537715,508.60009894437,510.98743222773,516.79124009995,523.2511306012],description:"78732/78125 and 32805/32768"},pipedum_67:{frequencies:[261.6255653006,262.79353657426,266.96486255163,267.07609791103,272.52663052146,274.70684356563,279.06726965397,280.31310567921,284.8811711051,286.15296204753,293.02063313667,294.32876096318,299.00064605783,299.12522966035,300.33547037059,305.22982618403,306.59245933664,311.45900631024,313.95067836072,320.35783506196,320.49131749323,325.57848126297,327.03195662575,332.22294006425,336.5158833679,339.00300006557,341.85740532612,343.38355445704,348.83408706747,350.39138209902,355.95315006884,360.55273217989,366.27579142084,367.91095120397,373.75080757229,373.90653707544,381.53728273004,384.58958099188,390.69417751556,392.4383479509,398.83363954714,400.44729382745,400.61414686654,406.97310157871,408.78994578219,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,439.53094970501,448.50096908674,448.68784449053,455.80987376816,457.84473927605,459.88868900496,465.11211608996,467.18850946536,474.60420009179,480.73697623985,488.36772189445,490.54793493862,498.33441009638,504.77382505185,512.78610798918,515.07533168556,520.92557002075,523.2511306012],description:"81/80, 1029/1024 and 9604/9375, Gene Ward Smith, 2002"},pipedum_68:{frequencies:[246.94165062806,250.86135936819,252.08626834948,253.99712636029,258.02882677871,259.28873315946,263.4044273366,264.58033995864,268.89201957278,272.13977824317,273.16014686758,276.57464870343,277.80935695657,282.21902928921,286.81815421096,288.0985923994,291.6998248044,292.67158592955,296.32998075367,301.03363124183,302.50352201937,307.30516522603,308.67706328508,311.01688942076,316.08531280392,317.49640795036,322.53603347338,324.11091644933,329.25553417075,333.37122834788,334.48181249092,338.66283514705,340.17472280396,345.71831087928,351.20590311546,352.77378661151,357.18345894416,358.5226927637,362.85303765756,368.76619827124,370.41247594209,376.29203905228,378.12940252422,384.13145653254,387.04324016806,388.93309973919,395.1066410049,396.87050993795,403.33802935916,409.74022030137,411.56941771343,414.86197305514,416.71403543485,423.32854393382,430.22723131644,432.1478885991,439.00737889433,441.15096961159,444.49497113051,451.55044686274,453.56629707195,460.95774783905,468.27453748728,470.36504881535,474.12796920588,476.24461192554,483.80405021008,491.68826436165,493.88330125612],description:"245/243, 2048/2025 and 2401/2400, Gene Ward Smith, 2002"},pipedum_7:{frequencies:[261.6255653006,290.69507255622,317.94773560837,347.75533582165,392.4383479509,429.2294430713,476.92160341255,523.2511306012],description:"81/80, 64/63 and 6144/6125, Manuel Op de Coul"},pipedum_72:{frequencies:[195.99771799087,198.44768946576,200.08100378235,201.59765279061,204.16428957382,205.79760389041,208.41771227328,209.06423252359,211.67753543014,214.37250405251,216.08748408493,217.77524221208,220.49743273973,222.31222642483,223.99739198957,226.79735938944,228.66400432268,231.52230437672,232.29359169288,235.19726158904,238.19167116946,240.09720453882,241.91718334873,244.99714748859,246.9571246685,250.10125472793,251.99706598826,254.07111591409,257.24700486302,258.04499557198,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,277.89028303104,279.99673998696,282.23671390685,285.83000540335,289.40288047089,290.3669896161,293.99657698631,296.41630189977,300.12150567352,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,321.55875607877,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.76148788545,342.99600648402,347.28345656507,348.44038753932,352.79589238357,357.28750675419,360.14580680822,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,385.87050729453,387.1559861548,391.99543598174],description:"225/224, 1029/1024 and 4375/4374, Gene Ward Smith, 2002"},pipedum_72a:{frequencies:[195.99771799087,197.5656997348,200.08100378235,201.59765279061,203.21043401293,205.79760389041,207.44398472154,209.99755499022,211.67753543014,213.41973736784,216.04686727389,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.84921063758,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.07883968176,240.09720453882,241.91718334873,244.99714748859,246.9571246685,248.93278166584,251.99706598826,254.07111591409,256.1036848414,259.25624072866,261.33029065449,264.65741241051,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.59197962872,279.99673998696,282.23671390685,285.83000540335,288.11664544658,290.30062001848,293.99657698631,296.3485496022,298.59492344758,302.46561418344,304.88533909691,308.7669811456,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.68405668822,342.99600648402,345.73997453589,348.36074402217,352.79589238357,355.69956227973,360.07811212314,362.95873702013,365.86240691629,370.52037737472,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"4375/4374, 2401/2400 and 15625/15552, Manuel Op de Coul, 2002"},pipedum_72b:{frequencies:[195.99771799087,197.5656997348,200.51849868858,202.12264667808,204.16428957382,205.79760389041,207.94510975112,209.60867062912,211.67753543014,213.41973736784,215.59748978996,218.74745311481,220.49743273973,222.7983318762,224.58071853121,226.79735938944,228.66400432268,230.99731048924,232.89852292125,235.19726158904,238.19167116946,240.62219842629,242.5471760137,244.99714748859,246.9571246685,249.53413170134,251.53040475495,254.07111591409,256.1036848414,259.87197430039,262.49694373777,264.59691928767,267.35799825143,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.4782275055,283.49669923679,285.83000540335,288.74663811155,291.12315365156,293.99657698631,296.3485496022,299.44095804161,301.83648570594,304.88533909691,309.37139797666,311.91766462667,314.99633248533,317.51630314521,320.82959790172,323.39623468494,326.66286331812,329.27616622466,332.71217560179,336.87107779681,340.19603908415,342.99600648402,346.49596573386,349.34778438187,352.79589238357,355.69956227973,359.32914964993,362.08404605941,367.49572123288,371.24567757199,374.30119755201,377.99559898239,381.10667387114,384.99551748207,388.16420486875,391.99543598174],description:"225/224, 3025/3024, 1375/1372 and 4375/4374"},pipedum_72b2:{frequencies:[195.99771799087,198.44768946576,200.45221158157,202.12264667808,204.16428957382,205.79760389041,207.87636756607,209.06423252359,211.67753543014,213.81569235368,215.59748978996,217.77524221208,220.49743273973,222.72467953508,223.99739198957,226.79735938944,228.66400432268,230.99731048924,233.3306166558,235.19726158904,237.57299150408,239.55276643329,241.97249134675,244.99714748859,246.39713118852,249.45164107929,251.99706598826,254.07111591409,257.24700486302,258.71698774795,261.33029065449,264.59691928767,267.2696154421,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.99673998696,282.23671390685,285.0875898049,287.46331971994,290.3669896161,293.99657698631,296.96623938011,298.66318931942,302.39647918591,304.88533909691,307.99641398565,311.81455134911,313.59634878539,317.51630314521,320.72353853051,323.39623468494,326.66286331812,329.27616622466,332.60218810572,335.99608798435,338.76148788545,342.99600648402,344.95598366393,348.44038753932,352.79589238357,356.35948725613,359.32914964993,362.95873702013,367.49572123288,369.59569678278,374.17746161893,376.31561854247,380.11678640654,383.28442629326,387.1559861548,391.99543598174],description:"Optimised version of pipedum_72b, Manuel Op de Coul"},pipedum_72c:{frequencies:[195.99771799087,197.5656997348,199.99767141926,201.59765279061,203.25689273127,205.79760389041,207.40499258293,209.99755499022,211.67753543014,213.41973736784,215.9974851328,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.79735938944,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.13304151982,239.99720570311,241.91718334873,244.99714748859,246.9571246685,248.88599109952,251.99706598826,254.07111591409,256.1036848414,259.19698215935,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.47678096998,279.99673998696,282.23671390685,285.83000540335,287.99664684373,290.3669896161,293.99657698631,296.41630189977,298.66318931942,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.32945236543,335.99608798435,338.76148788545,342.99600648402,345.59597621247,348.44038753932,352.79589238357,355.69956227973,359.99580855466,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"441/440, 2401/2400, 4375/4374 and 1375/1372"},pipedum_74:{frequencies:[174.6141157165,175.4667237034,177.38576834692,178.25190979393,182.45393315683,183.34482150233,186.25505676427,187.16450528362,187.6669026756,191.57662981467,192.51206257744,194.01568412944,194.96302633711,195.48635695375,199.55898939029,200.53339851817,202.72659239648,203.71646833592,208.51878075067,209.5369388598,210.56006844408,212.8629220163,213.90229175271,216.62558481901,218.9447197882,220.01378580279,221.73221043365,222.81488724241,228.06741644604,229.18102687791,231.68753416741,232.81882095533,233.95563160453,239.47078726834,240.6400782218,243.27191087578,244.4597620031,249.5526737115,250.2225369008,251.44432663176,253.4082404956,254.6455854199,259.95070178281,260.64847593833,261.92117357475,266.07865252038,267.37786469089,273.68089973525,275.01723225349,278.02504100089,279.3825851464,280.74675792544,285.20305567028,287.36494472201,291.02352619417,291.92629305093,292.44453950566,297.08651632321,299.33848408543,304.08988859472,305.57470250388,310.42509460711,311.94084213937,312.778171126,319.29438302446,320.85343762907,325.94634933747,328.4170796823,333.63004920107,334.22233086361,335.25910217568,339.52744722653,342.10112466906,347.53130125111,349.228231433],description:"81/80, 126/125 and 4194304/4117715, Gene Ward Smith, 2002"},pipedum_81:{frequencies:[116.54094037952,117.10998793997,118.96887663743,119.87068153322,121.77339076391,122.3679873985,122.96548733697,124.86529326377,124.9173204693,126.84728204574,127.4666535401,128.08904930934,130.12220882219,130.47149010419,131.10855792696,133.18964614802,133.83998621711,135.96443044277,136.62831926329,136.99506460939,139.16958944446,139.84912845542,140.53198552796,142.70319230145,142.76265196491,144.96832233798,145.6761754744,146.38748492496,148.71109579678,149.83835191653,152.21673845488,152.95998424812,153.70685917121,155.38792050603,156.14665058662,156.56578812502,159.82757537763,160.60798346053,163.08936263023,163.15731653133,163.95398311595,166.48705768503,167.29998277138,169.12970939431,169.95553805347,170.78539907912,173.96198680558,174.81141056928,175.66498190995,177.58619486403,178.45331495614,182.66008614586,183.55198109774,184.08675852442,184.44823100545,186.46550460723,187.37598070395,190.2709230686,191.19998031015,193.29109645065,194.23490063253,195.18331323328,199.78446922203,200.75997932566,202.95565127318,203.94664566416,204.94247889494,208.7543841667,209.77369268314,210.79797829194,213.10343383684,214.14397794737,217.45248350698,218.5142632116,218.60531082127,221.98274358004,223.06664369518,227.71386543882,228.32510768232,229.43997637218,231.94931574077,233.08188075904],description:"81/80, 126/125 and 17294403/16777216, Gene Ward Smith, 2002"},pipedum_87:{frequencies:[82.40688922822,83.34286871081,83.43697534357,84.3846545697,84.87648045204,85.84050961273,86.81548824043,86.91351598289,87.90068184343,87.99993493267,88.99944036648,90.43280025045,90.53491248218,91.56321025358,92.60318745646,92.70775038175,93.76072729966,93.86659726152,95.37834401414,96.46165360048,96.57057331432,97.66742427048,97.77770548075,98.88826707386,100.01144245297,100.59434720242,101.73690028175,101.85177654245,103.00861153527,104.17858588852,104.29621917947,105.48081821212,105.59992191921,107.30063701591,108.51936030054,108.64189497861,109.87585230429,111.12382494775,111.2493004581,112.5128727596,113.16864060272,114.45401281697,115.75398432057,115.88468797718,117.20090912458,117.3332465769,118.66592048864,120.5770670006,120.7132166429,122.0842803381,122.22213185094,123.61033384233,125.01430306622,125.15546301536,127.17112535219,128.61553813397,128.76076441909,130.22323236064,130.37027397433,131.85102276515,133.3485899373,133.49916054972,135.64920037567,135.80236872326,137.34481538037,138.90478118469,139.06162557262,140.6410909495,140.79989589228,143.06751602122,144.69248040072,144.85585997148,146.50113640572,146.66655822112,148.3324006108,150.01716367946,150.89152080363,152.60535042263,154.33864576076,154.51291730291,156.26787883277,156.4443287692,158.22122731818,160.76942266746,160.95095552387,162.7790404508,162.96284246792,164.81377845644],description:"67108864/66430125 and 15625/15552, Op de Coul"},pipedum_9:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,392.4383479509,420.46965851882,448.50096908674,490.54793493862,523.2511306012],description:"225/224, 49/48 and 36/35 are homophonic intervals"},pipedum_99:{frequencies:[41.20344461411,41.53307217102,41.72802550619,42.06184971024,42.3806858888,42.72949811834,42.92025480636,43.26361684482,43.60972577957,43.95034092172,44.14654780083,44.49972018324,44.86597302425,45.06626754668,45.407877738,45.78160512679,46.1478579678,46.35387519087,46.73538856693,47.08965098755,47.46636819545,47.68917200707,48.07068538313,48.45525086619,48.65129757643,49.0517197787,49.44413353693,49.83968660523,50.07363060743,50.47421965228,50.85682306656,51.275397742,51.50430576764,51.91634021378,52.34363519496,52.55541404861,52.975857361,53.41187264792,53.8391676291,54.07952105602,54.50191086522,54.93792615215,55.37742956136,55.62465022905,56.08246628032,56.50758118507,56.7598471725,57.22700640849,57.68482245975,58.14630103943,58.41923570866,58.86206373444,59.33296024432,59.82129736567,60.08835672891,60.56906358274,61.04214016905,61.31464972338,61.80516692116,62.29960825653,62.81236223395,63.06649685833,63.5710288332,64.0942471775,64.60700115492,64.89542526722,65.40229303827,65.92551138258,66.21982170125,66.7648408099,67.29895953638,67.80909742208,68.12738858153,68.67240769018,69.2217869517,69.77556124732,70.1030828504,70.63447648133,71.19955229318,71.53375801061,72.10602807469,72.68287629929,73.25056820286,73.57757966805,74.1662003054,74.77662170709,75.37483468075,75.67979623,76.30267521131,76.91309661301,77.25645865146,77.87451032067,78.48275164592,79.11061365909,79.4637860415,80.11780897188,80.75875144366,81.37091690649,81.75286629784,82.40688922822],description:"2401/2400, 3136/3125 and 4375/4374, Gene Ward Smith, 2002"},pipedum_9a:{frequencies:[261.6255653006,282.62020942966,305.22982618403,329.72357766794,356.10146388137,384.67750727926,415.4517078616,448.79042515914,484.69365917187,523.2511306012],description:"4375/4374, 2401/2400 and 21/20 are homophonic intervals"},pipedum_9b:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,357.20610515709,383.2405741708,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"128/125 and 2109375/2097152 are homophonic intervals"},pipedum_9c:{frequencies:[261.6255653006,285.40970760065,305.22982618403,332.97799220076,348.83408706747,392.4383479509,411.12588832951,448.50096908674,479.64686971777,523.2511306012],description:"49/48, 21/20, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9d:{frequencies:[261.6255653006,277.4816601673,308.34441624714,327.03195662575,346.85207520913,394.68085279633,418.60090448096,443.97065626768,493.35106599542,523.2511306012],description:"128/125, 36/35, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9e:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"21/20, 27/25 and 128/125"},polansky_ps:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4447.6346101102,327.03195662575,654.0639132515,981.09586987725,1308.127826503,1635.15978312875,1962.1917397545,2289.22369638025,2616.255653006,2943.28760963175,3270.3195662575,3597.35152288325,3924.383479509,4251.41543613475,4578.4473927605,4905.47934938625,5232.511306012,5559.54326263775,392.4383479509,784.8766959018,1177.3150438527,1569.7533918036,1962.1917397545,2354.6300877054,2747.0684356563,3139.5067836072,3531.9451315581,3924.383479509,4316.8218274599,4709.2601754108,5101.6985233617,5494.1368713126,5886.5752192635,6279.0135672144,6671.4519151653],description:"Three interlocking harmonic series on 1:5:3 by Larry Polansky in Psaltery"},poole:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Poole's double diatonic or dichordal scale"},porcupine:{frequencies:[261.6255653006,268.5059110196,275.56719913678,277.81869773502,285.12489766782,287.45448663717,295.01409284105,302.77250493809,305.24628043356,313.27378316024,315.83336022842,324.13928669805,332.66364612382,335.38164643474,344.20166244741,347.01393314922,356.13986022226,365.50578499276,368.49211923405,378.18288921726,381.27279846892,391.29968045081,401.5902538439,404.87141319969,415.51890206933,418.91386427268,429.93064777916,441.23715556831,444.84224659643,456.54090625717,460.27103529174,472.37544811397,484.79818817936,488.75918813348,501.6127950959,505.71118020326,519.01059820838,523.2511306012],description:"porcupine temperament, g=162.996, 5-limit"},portbag1:{frequencies:[261.6255653006,281.75060878526,311.64221749042,334.88072358477,376.74081403286,413.43299207996,457.84473927605,523.2511306012],description:"Portugese bagpipe tuning"},portbag2:{frequencies:[261.6255653006,274.70684356563,281.75060878526,310.07474405997,317.68818643644,343.38355445704,372.08969287196,392.4383479509,408.78994578219,482.37213602298,523.2511306012],description:"Portugese bagpipe tuning 2"},prelleur:{frequencies:[261.6255653006,276.42153822591,293.20376052703,310.91918875105,328.72923110101,349.43408698743,368.89538496172,391.53834819612,414.55891854195,438.90564190541,466.17878415199,492.19384741628,523.2511306012],description:"Peter Prelleur's well temperament (1731)"},preston:{frequencies:[261.6255653006,276.24946721727,293.45376109391,311.26733605541,328.91048112005,349.30075403587,368.79929095641,391.73834630677,413.67420227347,439.48064068428,466.20100528964,492.6657196346,523.2511306012],description:"Preston's equal beating temperament (1785)"},preston2:{frequencies:[261.6255653006,276.2302000593,293.37610901672,311.58628319174,328.97985807656,349.39999567988,368.9044325484,391.80273191286,413.67420227347,439.35140993827,466.62242981045,492.67053466508,523.2511306012],description:"Preston's theoretically correct well temperament"},prime_10:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,523.2511306012],description:"First 10 prime numbers reduced by 2/1"},prime_5:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,523.2511306012],description:'What Lou Harrison calls "the Prime Pentatonic", a widely used scale'},primes6:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1308.127826503,1831.3789571042,2877.8812183066,3401.1323489078],description:"First 6 primes"},prinz:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.49599295996,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Prinz well-tempermament (1808)"},prinz2:{frequencies:[261.6255653006,275.62199471997,291.81313052759,310.07474405997,327.03195662575,348.83408706747,367.49599295996,390.42584360243,413.43299207996,436.71344361716,465.11211608996,490.54793493862,523.2511306012],description:"Prinz equal beating temperament (1808)"},"prod13-2":{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"13-limit binary products [1 3 5 7 11 13]"},prod13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,331.11985608357,343.38355445704,345.42750418595,359.73515228832,367.91095120397,371.99885066179,392.4383479509,400.61414686654,404.70204632437,408.78994578219,425.14154361347,441.49314144476,449.66894036041,457.84473927605,478.28423656516,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"13-limit binary products [1 3 5 7 9 11 13]"},prod7d:{frequencies:[261.6255653006,265.7783520514,267.90457886781,273.37201925287,279.06726965397,286.15296204753,294.32876096318,299.00064605783,300.46061014991,306.59245933664,310.07474405997,318.93402246168,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,350.53737850823,357.69120255941,367.91095120397,372.08969287196,382.72082695402,390.53145607553,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,429.2294430713,441.49314144476,446.50763144636,455.62003208812,457.84473927605,465.11211608996,478.40103369253,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Double Cubic Corner 7-limit. Chalmers '96"},prod7s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Single Cubic Corner 7-limit"},prodq13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"13-limit Binary products and quotients. Chalmers '96"},prog_ennea:{frequencies:[261.6255653006,269.29177952703,285.30470202322,311.12698372208,349.22823143301,391.99543598175,403.48177901006,427.47405410759,466.16376151809,523.2511306012],description:"Progressive Enneatonic, 50+100+150+200 cents in each half (500 cents)"},prog_ennea1:{frequencies:[261.6255653006,269.10058145205,285.40970760065,310.68035879446,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prog_ennea2:{frequencies:[261.6255653006,269.55361273395,285.40970760065,321.08592105074,348.83408706747,392.4383479509,404.33041910093,428.11456140098,481.6288815761,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+200+150 cents in each half (500 cents)"},prog_ennea3:{frequencies:[261.6255653006,269.55361273395,285.40970760065,310.07474405997,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prooijen1:{frequencies:[261.6255653006,339.14425131559,366.27579142084,436.04260883433,470.92601754108,610.45965236807,726.73768139056,784.8766959018],description:"Kees van Prooijen, major mode of Bohlen-Pierce"},prooijen2:{frequencies:[261.6255653006,311.45900631024,336.37572681506,436.04260883433,470.92601754108,560.62621135843,726.73768139056,784.8766959018],description:"Kees van Prooijen, minor mode of Bohlen-Pierce"},"ps-dorian":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 4 of p. 115 based on Archytas's Enharmonic"},"ps-enh":{frequencies:[261.6255653006,266.38239376061,279.06726965397,348.83408706747,392.4383479509,399.57359064092,418.60090448096,523.2511306012],description:"Dorian mode of an Enharmonic genus found in Ptolemy's Harmonics"},"ps-hypod":{frequencies:[261.6255653006,294.32876096318,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Complex 7 of p. 115 based on Archytas's Enharmonic"},"ps-hypod2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 8 of p. 115 based on Archytas's Enharmonic"},"ps-mixol":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Complex 3 of p. 115 based on Archytas's Enharmonic"},ptolemy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Intense Diatonic Syntonon, also Zarlino's scale"},ptolemy_chrom:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,436.04260883433,523.2511306012],description:"Ptolemy Soft Chromatic"},ptolemy_ddiat:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Lyra tuning, Dorian mode, comb. of diatonon toniaion & diatonon ditoniaion"},ptolemy_diat:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ptolemy's Diatonon Ditoniaion & Archytas' Diatonic, also Lyra tuning"},ptolemy_diat2:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Dorian mode of a permutation of Ptolemy's Tonic Diatonic"},ptolemy_diat3:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,441.49314144476,470.92601754108,523.2511306012],description:"Dorian mode of the remaining permutation of Ptolemy's Intense Diatonic"},ptolemy_diat4:{frequencies:[261.6255653006,299.00064605783,310.07474405997,348.83408706747,392.4383479509,448.50096908674,465.11211608996,523.2511306012],description:"permuted Ptolemy's diatonic"},ptolemy_diat5:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Sterea lyra, Dorian, comb. of 2 Tonic Diatonic 4chords, also Archytas' diatonic"},ptolemy_diff:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,425.14154361347,490.54793493862,523.2511306012],description:"Difference tones of Intense Diatonic reduced by 2/1"},ptolemy_enh:{frequencies:[261.6255653006,267.43946675172,279.06726965397,348.83408706747,392.4383479509,401.15920012759,418.60090448096,523.2511306012],description:"Dorian mode of Ptolemy's Enharmonic"},ptolemy_exp:{frequencies:[261.6255653006,272.52663052146,275.93321340298,287.4304306281,290.69507255622,294.32876096318,306.59245933664,327.03195662575,340.65828815182,344.91651675372,348.83408706747,363.36884069528,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,431.14564594215,436.04260883433,441.49314144476,459.88868900496,490.54793493862,510.98743222773,517.37477513058,523.2511306012],description:"Intense Diatonic expanded: all interval combinations"},ptolemy_hom:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Equable Diatonic or Diatonon Homalon"},ptolemy_iast:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Ptolemy's Iastia or Lydia tuning, mixture of Tonic Diatonic & Intense Diatonic"},ptolemy_iastaiol:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,441.49314144476,465.11211608996,523.2511306012],description:"Ptolemy's kithara tuning, mixture of Tonic Diatonic and Ditone Diatonic"},ptolemy_ichrom:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,411.12588832951,448.50096908674,523.2511306012],description:"Dorian mode of Ptolemy's Intense Chromatic"},ptolemy_idiat:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Intense Diatonic (Diatonon Syntonon)"},ptolemy_imix:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ptolemy Intense Diatonic mixed with its inverse"},ptolemy_malak:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Ptolemy's Malaka lyra tuning, a mixture of Intense Chrom. & Tonic Diatonic"},ptolemy_malak2:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Malaka lyra, mixture of his Soft Chromatic and Tonic Diatonic."},ptolemy_mdiat:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,412.06026534844,457.84473927605,523.2511306012],description:"Ptolemy soft diatonic"},ptolemy_mdiat2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_mdiat3:{frequencies:[261.6255653006,299.00064605783,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_meta:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Metabolika lyra tuning, mixture of Soft Diatonic & Tonic Diatonic"},ptolemy_mix:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"All modes of Ptolemy Intense Diatonic mixed"},ptolemy_prod:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,484.4917875937,490.54793493862,523.2511306012],description:"Product of Intense Diatonic with its intervals"},ptolemy_tree:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Intense Diatonic with all their Farey parent fractions"},pygmie:{frequencies:[261.6255653006,299.00064605783,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"Pygmie scale"},pyle:{frequencies:[261.6255653006,277.19063644077,293.6461094938,311.15753660095,329.66944764997,349.23831768549,369.99228554622,391.93430587921,415.28070933274,439.96441988338,466.23108306565,493.99742571239,523.2511306012],description:"Howard Willet Pyle quasi equal temperament"},pyramid:{frequencies:[261.6255653006,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'This scale may also be called the "Wedding Cake"'},pyramid_down:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Upside-Down Wedding Cake (divorce cake)"},pyth_12:{frequencies:[261.6255653006,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747,372.50983809402,392.4383479509,419.07356785577,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"12-tone Pythagorean scale"},pyth_12s:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,326.6631048533,348.83408706747,367.49599295996,392.4383479509,419.07356785577,435.55080647107,471.45776383774,489.99465727995,523.2511306012],description:"Scale with major thirds flat by a schisma"},pyth_17:{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,471.45776383774,496.67978412536,523.2511306012],description:"17-tone Pythagorean scale"},pyth_17s:{frequencies:[261.6255653006,275.62199471997,279.06726965397,294.32876096318,310.07474405997,313.95067836072,331.11985608357,348.83408706747,367.49599295996,372.08969287196,392.4383479509,413.43299207996,418.60090448096,441.49314144476,465.11211608996,470.92601754108,496.67978412536,523.2511306012],description:"Schismatically altered 17-tone Pythagorean scale"},pyth_22:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"Pythagorean shrutis"},pyth_27:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,290.36720431405,294.32876096318,298.34436617857,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,397.79248823809,413.43299207996,419.07356785577,435.55080647107,441.49314144476,447.51654926786,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"27-tone Pythagorean scale"},pyth_31:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,283.19406633357,294.32876096318,298.34436617857,310.07474405997,314.30517589183,318.59332496145,326.6631048533,331.11985608357,335.63741195089,348.83408706747,353.59332287831,367.49599295996,372.50983809402,377.59208844475,392.4383479509,397.79248823809,413.43299207996,419.07356785577,424.79110016094,441.49314144476,447.51654926786,465.11211608996,471.45776383774,477.8899872033,489.99465727995,496.67978412536,503.45611792634,523.2511306012],description:"31-tone Pythagorean scale"},pyth_7a:{frequencies:[261.6255653006,277.97716313189,294.32876096318,312.72430852337,331.11985608357,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,469.08646278506,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided arithmetically"},pyth_7h:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided harmonically"},pyth_chrom:{frequencies:[261.6255653006,275.62199471997,294.32876096318,348.83408706747,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Dorian mode of the so-called Pythagorean chromatic, recorded by Gaudentius"},pyth_sev:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,291.47537246454,299.00064605783,306.7202061947,314.63906894008,322.76237975718,333.11471138804,341.71502406609,350.53737850823,359.58750736009,368.87129039875,380.70252730062,390.53145607553,400.61414686654,410.95715126868,421.56719060242,435.08860262928,446.32166408632,457.84473927605,469.66531573563,481.7910743145,497.2441172906,510.08190181294,523.2511306012],description:"26-tone Pythagorean scale based on 7/4"},pyth_sev_16:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,306.7202061947,314.63906894008,322.76237975718,350.53737850823,359.58750736009,368.87129039875,400.61414686654,410.95715126868,421.56719060242,457.84473927605,469.66531573563,481.7910743145,523.2511306012],description:'16-tone Pythagorean scale based on 7/4, "Armodue"'},pyth_third:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,287.66035117148,290.46272611903,297.43383186155,304.57224382623,311.88197767806,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,363.07840893547,371.79228894479,380.71530478279,389.85247209758,399.20893142792,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,453.84801015616,464.74036282794,475.89413097849,487.31559012197,499.0111642849,510.98743222773,523.2511306012],description:"Cycle of 5/4 thirds"}};o.prototype._tune=function(i,n=220){const e=new t;if(!e.isValidScale(i))throw new Error('not a valid tune.js scale name: "'+i+'". See http://abbernie.github.io/tune/scales.html');return e.loadScale(i),e.tonicize(n),this._asNumber()._withHap(r=>r.withValue(()=>e.note(r.value)).setContext(a(c({},r.context),{type:"frequency"})))};o.prototype.define("tune",(i,n)=>n.tune(i),{composable:!0,patternified:!0}); diff --git a/assets/index.b1f4240b.js b/assets/index.b1f4240b.js new file mode 100644 index 000000000..e207f3966 --- /dev/null +++ b/assets/index.b1f4240b.js @@ -0,0 +1 @@ +var Bn=Object.defineProperty,Hn=Object.defineProperties;var Ln=Object.getOwnPropertyDescriptors;var kt=Object.getOwnPropertySymbols;var Un=Object.prototype.hasOwnProperty,Xn=Object.prototype.propertyIsEnumerable;var Rt=(t,n,e)=>n in t?Bn(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,y=(t,n)=>{for(var e in n||(n={}))Un.call(n,e)&&Rt(t,e,n[e]);if(kt)for(var e of kt(n))Xn.call(n,e)&&Rt(t,e,n[e]);return t},g=(t,n)=>Hn(t,Ln(n));import{P as w,z as Kn,A as Qn,B as Y,C as Yn,D as Zn,H as Jn,E as Wn}from"./index.d3c8394c.js";const x=(t,n)=>Array(Math.abs(n)+1).join(t);function v(t,n,e){return function(...o){return console.warn(`${t} is deprecated. Use ${n}.`),e.apply(this,o)}}function q(t){return t!==null&&typeof t=="object"&&typeof t.name=="string"}function G(t){return t!==null&&typeof t=="object"&&typeof t.step=="number"&&typeof t.alt=="number"}const Yt=[0,2,4,-1,1,3,5],Zt=Yt.map(t=>Math.floor(t*7/12));function et(t){const{step:n,alt:e,oct:o,dir:r=1}=t,i=Yt[n]+7*e;if(o===void 0)return[r*i];const a=o-Zt[n]-4*e;return[r*i,r*a]}const te=[3,0,4,1,5,2,6];function ot(t){const[n,e,o]=t,r=te[ne(n)],i=Math.floor((n+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const a=e+4*i+Zt[r];return{step:r,alt:i,oct:a,dir:o}}function ne(t){const n=(t+1)%7;return n<0?7+n:n}const Jt={empty:!0,name:"",pc:"",acc:""},Ot=new Map,vt=t=>"CDEFGAB".charAt(t),k=t=>t<0?x("b",-t):x("#",t),B=t=>t[0]==="b"?-t.length:t.length;function u(t){const n=Ot.get(t);if(n)return n;const e=typeof t=="string"?re(t):G(t)?u(ie(t)):q(t)?u(t.name):Jt;return Ot.set(t,e),e}const ee=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function rt(t){const n=ee.exec(t);return[n[1].toUpperCase(),n[2].replace(/x/g,"##"),n[3],n[4]]}function z(t){return u(ot(t))}const oe=(t,n)=>(t%n+n)%n,ht=[0,2,4,5,7,9,11];function re(t){const n=rt(t);if(n[0]===""||n[3]!=="")return Jt;const e=n[0],o=n[1],r=n[2],i=(e.charCodeAt(0)+3)%7,a=B(o),s=r.length?+r:void 0,c=et({step:i,alt:a,oct:s}),l=e+o+r,m=e+o,d=(ht[i]+a+120)%12,M=s===void 0?oe(ht[i]+a,12)-12*99:ht[i]+a+12*(s+1),b=M>=0&&M<=127?M:null,p=s===void 0?null:Math.pow(2,(M-69)/12)*440;return{empty:!1,acc:o,alt:a,chroma:d,coord:c,freq:p,height:M,letter:e,midi:b,name:l,oct:s,pc:m,step:i}}function ie(t){const{step:n,alt:e,oct:o}=t,r=vt(n);if(!r)return"";const i=r+k(e);return o||o===0?i+o:i}const yt={empty:!0,name:"",acc:""},ae="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",se="(AA|A|P|M|m|d|dd)([-+]?\\d+)",ce=new RegExp("^"+ae+"|"+se+"$");function Nt(t){const n=ce.exec(`${t}`);return n===null?["",""]:n[1]?[n[1],n[2]]:[n[4],n[3]]}const Ft={};function f(t){return typeof t=="string"?Ft[t]||(Ft[t]=me(t)):G(t)?f(le(t)):q(t)?f(t.name):yt}const zt=[0,2,4,5,7,9,11],Wt="PMMPPMM";function me(t){const n=Nt(t);if(n[0]==="")return yt;const e=+n[0],o=n[1],r=(Math.abs(e)-1)%7,i=Wt[r];if(i==="M"&&o==="P")return yt;const a=i==="M"?"majorable":"perfectable",s=""+e+o,c=e<0?-1:1,l=e===8||e===-8?e:c*(r+1),m=ue(a,o),d=Math.floor((Math.abs(e)-1)/7),M=c*(zt[r]+m+12*d),b=(c*(zt[r]+m)%12+12)%12,p=et({step:r,alt:m,oct:d,dir:c});return{empty:!1,name:s,num:e,q:o,step:r,alt:m,dir:c,type:a,simple:l,semitones:M,chroma:b,coord:p,oct:d}}function H(t,n){const[e,o=0]=t,r=e*7+o*12<0,i=n||r?[-e,-o,-1]:[e,o,1];return f(ot(i))}function ue(t,n){return n==="M"&&t==="majorable"||n==="P"&&t==="perfectable"?0:n==="m"&&t==="majorable"?-1:/^A+$/.test(n)?n.length:/^d+$/.test(n)?-1*(t==="perfectable"?n.length:n.length+1):0}function le(t){const{step:n,alt:e,oct:o=0,dir:r}=t;if(!r)return"";const i=n+1+7*o,a=i===0?n+1:i,s=r<0?"-":"",c=Wt[n]==="M"?"majorable":"perfectable";return s+a+de(c,e)}function de(t,n){return n===0?t==="majorable"?"M":"P":n===-1&&t==="majorable"?"m":n>0?x("A",n):x("d",t==="perfectable"?n:n+1)}function P(t,n){const e=u(t),o=f(n);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return z(a).name}function R(t,n){const e=u(t),o=u(n);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(a*7/12),c=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return H([a,s],c).name}var tn=Object.freeze(Object.defineProperty({__proto__:null,accToAlt:B,altToAcc:k,coordToInterval:H,coordToNote:z,decode:ot,deprecate:v,distance:R,encode:et,fillStr:x,interval:f,isNamed:q,isPitch:G,note:u,stepToLetter:vt,tokenizeInterval:Nt,tokenizeNote:rt,transpose:P},Symbol.toStringTag,{value:"Module"}));const qt=(t,n)=>Array(n+1).join(t),Me=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function nn(t){const n=Me.exec(t);return n?[n[1],n[2],n[3]]:["","",""]}function W(t){const[n,e,o]=nn(t);if(e==="")return"";let r=4;for(let a=0;a96?e.toUpperCase()+i+(r+1):e+i+r}function en(t){const n=u(t);if(n.empty||!n.oct&&n.oct!==0)return"";const{letter:e,acc:o,oct:r}=n,i=o[0]==="b"?o.replace(/b/g,"_"):o.replace(/#/g,"^"),a=r>4?e.toLowerCase():e,s=r===5?"":r>4?qt("'",r-5):qt(",",4-r);return i+a+s}function fe(t,n){return en(P(W(t),n))}function Pe(t,n){return R(W(t),W(n))}var pe={abcToScientificNotation:W,scientificToAbcNotation:en,tokenize:nn,transpose:fe,distance:Pe};function he(t,n){const e=[];for(;n--;e[n]=n+t);return e}function ye(t,n){const e=[];for(;n--;e[n]=t-n);return e}function ge(t,n){return tn===0||n)}function on(t){return t.map(e=>u(e)).filter(e=>!e.empty).sort((e,o)=>e.height-o.height).map(e=>e.name)}function ve(t){return on(t).filter((n,e,o)=>e===0||n!==o[e-1])}function Ne(t,n=Math.random){let e,o,r=t.length;for(;r;)e=Math.floor(n()*r--),o=t[r],t[r]=t[e],t[e]=o;return t}function rn(t){return t.length===0?[[]]:rn(t.slice(1)).reduce((n,e)=>n.concat(t.map((o,r)=>{const i=e.slice();return i.splice(r,0,t[0]),i})),[])}var $e=Object.freeze(Object.defineProperty({__proto__:null,compact:Ae,permutations:rn,range:ge,rotate:be,shuffle:Ne,sortedNoteNames:on,sortedUniqNoteNames:ve},Symbol.toStringTag,{value:"Module"}));function Ie(t,n){const e=[];for(;n--;e[n]=n+t);return e}function je(t,n){const e=[];for(;n--;e[n]=t-n);return e}function it(t,n){return tn===0||n)}function Te(t,n=Math.random){let e,o,r=t.length;for(;r;)e=Math.floor(n()*r--),o=t[r],t[r]=t[e],t[e]=o;return t}function an(t){return t.length===0?[[]]:an(t.slice(1)).reduce((n,e)=>n.concat(t.map((o,r)=>{const i=e.slice();return i.splice(r,0,t[0]),i})),[])}var Se={compact:$t,permutations:an,range:it,rotate:L,shuffle:Te};const C={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},It=t=>Number(t).toString(2),Gt=t=>parseInt(t,2),_e=/^[01]{12}$/;function sn(t){return _e.test(t)}const Ce=t=>typeof t=="number"&&t>=0&&t<=4095,Ve=t=>t&&sn(t.chroma),Bt={[C.chroma]:C};function h(t){const n=sn(t)?t:Ce(t)?It(t):Array.isArray(t)?Be(t):Ve(t)?t.chroma:C.chroma;return Bt[n]=Bt[n]||Ge(n)}const we=v("Pcset.pcset","Pcset.get",h),xe=t=>h(t).chroma,Ee=t=>h(t).intervals,De=t=>h(t).setNum,ke=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Re(t){const n=[];for(let e=0;e<12;e++)t.charAt(e)==="1"&&n.push(ke[e]);return n}function Oe(){return it(2048,4095).map(It)}function jt(t,n=!0){const o=h(t).chroma.split("");return $t(o.map((r,i)=>{const a=L(i,o);return n&&a[0]==="0"?null:a.join("")}))}function Fe(t,n){return h(t).setNum===h(n).setNum}function at(t){const n=h(t).setNum;return e=>{const o=h(e).setNum;return n&&n!==o&&(o&n)===o}}function st(t){const n=h(t).setNum;return e=>{const o=h(e).setNum;return n&&n!==o&&(o|n)===o}}function cn(t){const n=h(t);return e=>{const o=u(e);return n&&!o.empty&&n.chroma.charAt(o.chroma)==="1"}}function ze(t){const n=cn(t);return e=>e.filter(n)}var mn={get:h,chroma:xe,num:De,intervals:Ee,chromas:Oe,isSupersetOf:st,isSubsetOf:at,isNoteIncludedIn:cn,isEqual:Fe,filter:ze,modes:jt,pcset:we};function qe(t){const n=t.split("");return n.map((e,o)=>L(o,n).join(""))}function Ge(t){const n=Gt(t),e=qe(t).map(Gt).filter(i=>i>=2048).sort()[0],o=It(e),r=Re(t);return{empty:!1,name:"",setNum:n,chroma:t,normalized:o,intervals:r}}function Be(t){if(t.length===0)return C.chroma;let n;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;ot.name).filter(t=>t)}function Ke(){return O.map(t=>t.aliases[0]).filter(t=>t)}function Qe(){return Object.keys(S)}function F(){return O.slice()}const Ye=v("ChordType.entries","ChordType.all",F);function Ze(){O=[],S={}}function un(t,n,e){const o=We(t),r=g(y({},h(t)),{name:e||"",quality:o,intervals:t,aliases:n});O.push(r),r.name&&(S[r.name]=r),S[r.setNum]=r,S[r.chroma]=r,r.aliases.forEach(i=>Je(r,i))}function Je(t,n){S[n]=t}function We(t){const n=e=>t.indexOf(e)!==-1;return n("5A")?"Augmented":n("3M")?"Major":n("5d")?"Diminished":n("3m")?"Minor":"Unknown"}He.forEach(([t,n,e])=>un(t.split(" "),e.split(" "),n));O.sort((t,n)=>t.setNum-n.setNum);var ln={names:Xe,symbols:Ke,get:Tt,all:F,add:un,removeAll:Ze,keys:Qe,entries:Ye,chordType:Ue};const to=t=>{const n=t.reduce((e,o)=>{const r=u(o).chroma;return r!==void 0&&(e[r]=e[r]||u(o).name),e},{});return e=>n[e]};function no(t){const n=t.map(o=>u(o).pc).filter(o=>o);return u.length===0?[]:eo(n,1).filter(o=>o.weight).sort((o,r)=>r.weight-o.weight).map(o=>o.name)}function eo(t,n){const e=t[0],o=u(e).chroma,r=to(t),i=jt(t,!1),a=[];return i.forEach((s,c)=>{F().filter(m=>m.chroma===s).forEach(m=>{const d=m.aliases[0],M=r(c);c!==o?a.push({weight:.5*n,name:`${M}${d}/${e}`}):a.push({weight:1*n,name:`${M}${d}`})})}),a}const oo=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],ro=g(y({},C),{intervals:[],aliases:[]});let ct=[],_={};function dn(){return ct.map(t=>t.name)}function mt(t){return _[t]||ro}const io=v("ScaleDictionary.scaleType","ScaleType.get",mt);function U(){return ct.slice()}const ao=v("ScaleDictionary.entries","ScaleType.all",U);function so(){return Object.keys(_)}function co(){ct=[],_={}}function Mn(t,n,e=[]){const o=g(y({},h(t)),{name:n,intervals:t,aliases:e});return ct.push(o),_[o.name]=o,_[o.setNum]=o,_[o.chroma]=o,o.aliases.forEach(r=>mo(o,r)),o}function mo(t,n){_[n]=t}oo.forEach(([t,n,...e])=>Mn(t.split(" "),n,e));var fn={names:dn,get:mt,all:U,add:Mn,removeAll:co,keys:so,entries:ao,scaleType:io};const gt={empty:!0,name:"",symbol:"",root:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},uo=/^(6|64|7|9|11|13)$/;function ut(t){const[n,e,o,r]=rt(t);return n===""?["",t]:n==="A"&&r==="ug"?["","aug"]:!r&&(o==="4"||o==="5")?[n+e,o]:uo.test(o)?[n+e,o+r]:[n+e+o,r]}function X(t){if(t==="")return gt;if(Array.isArray(t)&&t.length===2)return Z(t[1],t[0]);{const[n,e]=ut(t),o=Z(e,n);return o.empty?Z(t):o}}function Z(t,n,e){const o=Tt(t),r=u(n||""),i=u(e||"");if(o.empty||n&&r.empty||e&&i.empty)return gt;const a=R(r.pc,i.pc),s=o.intervals.indexOf(a)+1;if(!i.empty&&!s)return gt;const c=Array.from(o.intervals);for(let M=1;MP(r,M));t=o.aliases.indexOf(t)!==-1?t:o.aliases[0];const m=`${r.empty?"":r.pc}${t}${i.empty||s<=1?"":"/"+i.pc}`,d=`${n?r.pc+" ":""}${o.name}${s>1&&e?" over "+i.pc:""}`;return g(y({},o),{name:d,symbol:m,type:o.name,root:i.name,intervals:c,rootDegree:s,tonic:r.name,notes:l})}const lo=v("Chord.chord","Chord.get",X);function Mo(t,n){const[e,o]=ut(t);return e?P(e,n)+o:t}function fo(t){const n=X(t),e=st(n.chroma);return U().filter(o=>e(o.chroma)).map(o=>o.name)}function Po(t){const n=X(t),e=st(n.chroma);return F().filter(o=>e(o.chroma)).map(o=>n.tonic+o.aliases[0])}function po(t){const n=X(t),e=at(n.chroma);return F().filter(o=>e(o.chroma)).map(o=>n.tonic+o.aliases[0])}var ho={getChord:Z,get:X,detect:no,chordScales:fo,extended:Po,reduced:po,tokenize:ut,transpose:Mo,chord:lo};const yo=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],lt=[];yo.forEach(([t,n,e])=>jo(t,n,e));const go={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function bo(){return lt.reduce((t,n)=>(n.names.forEach(e=>t.push(e)),t),[])}function Ao(){return lt.map(t=>t.shorthand)}const vo=/^([^.]+)(\.*)$/;function St(t){const[n,e,o]=vo.exec(t)||[],r=lt.find(s=>s.shorthand===e||s.names.includes(e));if(!r)return go;const i=To(r.fraction,o.length),a=i[0]/i[1];return g(y({},r),{name:t,dots:o,value:a,fraction:i})}const No=t=>St(t).value,$o=t=>St(t).fraction;var Io={names:bo,shorthands:Ao,get:St,value:No,fraction:$o};function jo(t,n,e){lt.push({empty:!1,dots:"",name:"",value:1/t,fraction:t<1?[1/t,1]:[1,t],shorthand:n,names:e})}function To(t,n){const e=Math.pow(2,n);let o=t[0]*e,r=t[1]*e;const i=o;for(let a=0;af(t).name,Co=t=>f(t).semitones,Vo=t=>f(t).q,wo=t=>f(t).num;function pn(t){const n=f(t);return n.empty?"":n.simple+n.q}function xo(t){const n=f(t);if(n.empty)return"";const e=(7-n.step)%7,o=n.type==="perfectable"?-n.alt:-(n.alt+1);return f({step:e,alt:o,oct:n.oct,dir:n.dir}).name}const Eo=[1,2,2,3,3,4,5,5,6,6,7,7],Do="P m M m M P d P m M m M".split(" ");function ko(t){const n=t<0?-1:1,e=Math.abs(t),o=e%12,r=Math.floor(e/12);return n*(Eo[o]+7*r)+Do[o]}const Ro=R,hn=gn((t,n)=>[t[0]+n[0],t[1]+n[1]]),Oo=t=>n=>hn(t,n),Fo=gn((t,n)=>[t[0]-n[0],t[1]-n[1]]);function yn(t,n){const e=Pn(t);if(e.empty)return"";const[o,r,i]=e.coord;return H([o+n,r,i]).name}var bt={names:So,get:Pn,name:_o,num:wo,semitones:Co,quality:Vo,fromSemitones:ko,distance:Ro,invert:xo,simplify:pn,add:hn,addTo:Oo,substract:Fo,transposeFifths:yn};function gn(t){return(n,e)=>{const o=f(n).coord,r=f(e).coord;if(o&&r){const i=t(o,r);return H(i).name}}}function bn(t){return+t>=0&&+t<=127}function An(t){if(bn(t))return+t;const n=u(t);return n.empty?null:n.midi}function zo(t,n=440){return Math.pow(2,(t-69)/12)*n}const qo=Math.log(2),Go=Math.log(440);function _t(t){const n=12*(Math.log(t)-Go)/qo+69;return Math.round(n*100)/100}const Bo="C C# D D# E F F# G G# A A# B".split(" "),Ho="C Db D Eb E F Gb G Ab A Bb B".split(" ");function T(t,n={}){if(isNaN(t)||t===-1/0||t===1/0)return"";t=Math.round(t);const o=(n.sharps===!0?Bo:Ho)[t%12];if(n.pitchClass)return o;const r=Math.floor(t/12)-1;return o+r}var Lo={isMidi:bn,toMidi:An,midiToFreq:zo,midiToNoteName:T,freqToMidi:_t};const Uo=["C","D","E","F","G","A","B"],vn=t=>t.name,Nn=t=>t.map(u).filter(n=>!n.empty);function Xo(t){return t===void 0?Uo.slice():Array.isArray(t)?Nn(t).map(vn):[]}const A=u,Ko=t=>A(t).name,Qo=t=>A(t).pc,Yo=t=>A(t).acc,Zo=t=>A(t).oct,Jo=t=>A(t).midi,Wo=t=>A(t).freq,tr=t=>A(t).chroma;function $n(t){return T(t)}function nr(t){return T(_t(t))}function er(t){return T(_t(t),{sharps:!0})}function or(t){return T(t,{sharps:!0})}const Ct=P,rr=P,In=t=>n=>Ct(n,t),ir=In,jn=t=>n=>Ct(t,n),ar=jn;function tt(t,n){const e=A(t);if(e.empty)return"";const[o,r]=e.coord;return z(r===void 0?[o+n]:[o+n,r]).name}const sr=tt,Vt=(t,n)=>t.height-n.height,cr=(t,n)=>n.height-t.height;function Tn(t,n){return n=n||Vt,Nn(t).sort(n).map(vn)}function Sn(t){return Tn(t,Vt).filter((n,e,o)=>e===0||n!==o[e-1])}const mr=t=>{const n=A(t);return n.empty?"":T(n.midi||n.chroma,{sharps:n.alt>0,pitchClass:n.midi===null})};function _n(t,n){const e=A(t);if(e.empty)return"";const o=A(n||T(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,a=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+a;return o.pc+s}var E={names:Xo,get:A,name:Ko,pitchClass:Qo,accidentals:Yo,octave:Zo,midi:Jo,ascending:Vt,descending:cr,sortedNames:Tn,sortedUniqNames:Sn,fromMidi:$n,fromMidiSharps:or,freq:Wo,fromFreq:nr,fromFreqSharps:er,chroma:tr,transpose:Ct,tr:rr,transposeBy:In,trBy:ir,transposeFrom:jn,trFrom:ar,transposeFifths:tt,trFifths:sr,simplify:mr,enharmonic:_n};const Cn={empty:!0,name:"",chordType:""},Ht={};function I(t){return typeof t=="string"?Ht[t]||(Ht[t]=pr(t)):typeof t=="number"?I(dt[t]||""):G(t)?dr(t):q(t)?I(t.name):Cn}const ur=v("RomanNumeral.romanNumeral","RomanNumeral.get",I);function lr(t=!0){return(t?dt:Pr).slice()}function dr(t){return I(k(t.alt)+dt[t.step])}const Mr=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function fr(t){return Mr.exec(t)||["","","",""]}const Vn="I II III IV V VI VII",dt=Vn.split(" "),Pr=Vn.toLowerCase().split(" ");function pr(t){const[n,e,o,r]=fr(t);if(!o)return Cn;const i=o.toUpperCase(),a=dt.indexOf(i),s=B(e),c=1;return{empty:!1,name:n,roman:o,interval:f({step:a,alt:s,dir:c}).name,acc:e,chordType:r,alt:s,step:a,major:o===i,oct:0,dir:c}}var hr={names:lr,get:I,romanNumeral:ur};const N=Object.freeze([]),wn={type:"major",tonic:"",alteration:0,keySignature:""},J={tonic:"",grades:N,intervals:N,scale:N,chords:N,chordsHarmonicFunction:N,chordScales:N},yr=g(y(y({},wn),J),{type:"major",minorRelative:"",scale:N,secondaryDominants:N,secondaryDominantsMinorRelative:N,substituteDominants:N,substituteDominantsMinorRelative:N}),gr=g(y({},wn),{type:"minor",relativeMajor:"",natural:J,harmonic:J,melodic:J}),Lt=(t,n,e="")=>n.map((o,r)=>`${t[r]}${e}${o}`);function Mt(t,n,e,o){return r=>{const i=t.map(s=>I(s).interval||""),a=i.map(s=>P(r,s));return{tonic:r,grades:t,intervals:i,scale:a,chords:Lt(a,n),chordsHarmonicFunction:e.slice(),chordScales:Lt(a,o," ")}}}const xn=(t,n)=>{const e=u(t),o=u(n);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},br=Mt("I II III IV V VI VII".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),Ar=Mt("I II bIII IV V bVI bVII".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),vr=Mt("I II bIII IV V bVI VII".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),Nr=Mt("I II bIII IV V VI VII".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function $r(t){const n=u(t).pc;if(!n)return yr;const e=br(n),o=xn("C",n),r=i=>{const a=I(i);return a.empty?"":P(t,a.interval)+a.chordType};return g(y({},e),{type:"major",minorRelative:P(n,"-3m"),alteration:o,keySignature:k(o),secondaryDominants:"- VI7 VII7 I7 II7 III7 -".split(" ").map(r),secondaryDominantsMinorRelative:"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ").map(r),substituteDominants:"- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ").map(r),substituteDominantsMinorRelative:"- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" ").map(r)})}function Ir(t){const n=u(t).pc;if(!n)return gr;const e=xn("C",n)-3;return{type:"minor",tonic:n,relativeMajor:P(n,"3m"),alteration:e,keySignature:k(e),natural:Ar(n),harmonic:vr(n),melodic:Nr(n)}}function jr(t){return typeof t=="number"?tt("C",t):typeof t=="string"&&/^b+|#+$/.test(t)?tt("C",B(t)):null}var Tr={majorKey:$r,majorTonicFromKeySignature:jr,minorKey:Ir};const wt=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],Ut=g(y({},C),{name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]}),xt=wt.map(Vr),At={};xt.forEach(t=>{At[t.name]=t,t.aliases.forEach(n=>{At[n]=t})});function V(t){return typeof t=="string"?At[t.toLowerCase()]||Ut:t&&t.name?V(t.name):Ut}const Sr=v("Mode.mode","Mode.get",V);function En(){return xt.slice()}const _r=v("Mode.mode","Mode.all",En);function Cr(){return xt.map(t=>t.name)}function Vr(t){const[n,e,o,r,i,a,s]=t,c=s?[s]:[],l=Number(e).toString(2),m=mt(r).intervals;return{empty:!1,intervals:m,modeNum:n,chroma:l,normalized:l,name:r,setNum:e,alt:o,triad:i,seventh:a,aliases:c}}function wr(t,n){return V(t).intervals.map(e=>P(n,e))}function Dn(t){return(n,e)=>{const o=V(n);if(o.empty)return[];const r=L(o.modeNum,t),i=o.intervals.map(a=>P(e,a));return r.map((a,s)=>i[s]+a)}}const xr=Dn(wt.map(t=>t[4])),Er=Dn(wt.map(t=>t[5]));function kn(t,n){const e=V(n),o=V(t);return e.empty||o.empty?"":pn(yn("1P",o.alt-e.alt))}function Dr(t,n,e){return P(e,kn(t,n))}var kr={get:V,names:Cr,all:En,distance:kn,relativeTonic:Dr,notes:wr,triads:xr,seventhChords:Er,entries:_r,mode:Sr};function Rr(t,n){return n.map(I).map(o=>P(t,f(o))+o.chordType)}function Or(t,n){return n.map(e=>{const[o,r]=ut(e),i=R(t,o);return I(f(i)).name+r})}var Fr={fromRomanNumerals:Rr,toRomanNumerals:Or};function Rn(t){const n=$t(t.map(An));return!t.length||n.length!==t.length?[]:n.reduce((e,o)=>{const r=e[e.length-1];return e.concat(it(r,o).slice(1))},[n[0]])}function zr(t,n){return Rn(t).map(e=>T(e,n))}var qr={numeric:Rn,chromatic:zr};const Gr={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function On(t){if(typeof t!="string")return["",""];const n=t.indexOf(" "),e=u(t.substring(0,n));if(e.empty){const r=u(t);return r.empty?["",t]:[r.name,""]}const o=t.substring(e.name.length+1);return[e.name,o.length?o:""]}const Br=dn;function j(t){const n=Array.isArray(t)?t:On(t),e=u(n[0]).name,o=mt(n[1]);if(o.empty)return Gr;const r=o.name,i=e?o.intervals.map(s=>P(e,s)):[],a=e?e+" "+r:r;return g(y({},o),{name:a,type:r,tonic:e,notes:i})}const Hr=v("Scale.scale","Scale.get",j);function Lr(t){const n=j(t),e=at(n.chroma);return F().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function Ur(t){const n=j(t),e=st(n.chroma);return U().filter(o=>e(o.chroma)).map(o=>o.name)}function Xr(t){const n=at(j(t).chroma);return U().filter(e=>n(e.chroma)).map(e=>e.name)}function Fn(t){const n=t.map(r=>u(r).pc).filter(r=>r),e=n[0],o=Sn(n);return L(o.indexOf(e),o)}function Kr(t){const n=j(t);if(n.empty)return[];const e=n.tonic?n.notes:n.intervals;return jt(n.chroma).map((o,r)=>{const i=j(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function Qr(t){const n=Array.isArray(t)?Fn(t):j(t).notes,e=n.map(o=>u(o).chroma);return o=>{const r=u(typeof o=="number"?$n(o):o),i=r.height;if(i===void 0)return;const a=i%12,s=e.indexOf(a);if(s!==-1)return _n(r.name,n[s])}}function Yr(t){const n=Qr(t);return(e,o)=>{const r=u(e).height,i=u(o).height;return r===void 0||i===void 0?[]:it(r,i).map(n).filter(a=>a)}}var nt={get:j,names:Br,extended:Ur,modeNames:Kr,reduced:Xr,scaleChords:Lr,scaleNotes:Fn,tokenize:On,rangeOf:Yr,scale:Hr};const Zr={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Jr=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function Wr(){return Jr.slice()}const ti=/^(\d?\d(?:\+\d)*)\/(\d)$/,Xt=new Map;function ni(t){const n=Xt.get(t);if(n)return n;const e=oi(Et(t));return Xt.set(t,e),e}function Et(t){if(typeof t=="string"){const[i,a,s]=ti.exec(t)||[];return Et([a,s])}const[n,e]=t,o=+e;if(typeof n=="number")return[n,o];const r=n.split("+").map(i=>+i);return r.length===1?[r[0],o]:[r,o]}var ei={names:Wr,parse:Et,get:ni};function oi([t,n]){const e=Array.isArray(t)?t.reduce((s,c)=>s+c,0):t,o=n;if(e===0||o===0)return Zr;const r=Array.isArray(t)?`${t.join("+")}/${n}`:`${t}/${n}`,i=Array.isArray(t)?t:[],a=o===4||o===2?"simple":o===8&&e%3===0?"compound":"irregular";return{empty:!1,name:r,type:a,upper:e,lower:o,additive:i}}const ri=tn,ii=mn,ai=ln,si=fn;var ci=Object.freeze(Object.defineProperty({__proto__:null,Array:$e,Core:tn,ChordDictionary:ai,PcSet:ii,ScaleDictionary:si,Tonal:ri,AbcNotation:pe,Chord:ho,ChordType:ln,Collection:Se,DurationValue:Io,Interval:bt,Key:Tr,Midi:Lo,Mode:kr,Note:E,Pcset:mn,Progression:Fr,Range:qr,RomanNumeral:hr,Scale:nt,ScaleType:fn,TimeSignature:ei,accToAlt:B,altToAcc:k,coordToInterval:H,coordToNote:z,decode:ot,deprecate:v,distance:R,encode:et,fillStr:x,interval:f,isNamed:q,isPitch:G,note:u,stepToLetter:vt,tokenizeInterval:Nt,tokenizeNote:rt,transpose:P},Symbol.toStringTag,{value:"Module"}));function zn(t,n,e){let[o,r]=nt.tokenize(t),{notes:i}=nt.get(`${o} ${r}`);if(i=i.map(b=>E.get(b).pc),n=Number(n),isNaN(n))throw new Error(`scale offset "${n}" not a number`);const{pc:a,oct:s=3}=E.get(e),c=i.indexOf(a);if(c===-1)throw new Error(`note "${e}" is not in scale "${t}"`);let l=c,m=s,d=a;const M=Math.sign(n);for(;Math.abs(l-c)0&&d[0]==="C"&&(m+=M)}return d+m}w.prototype._transpose=function(t){return this._withHap(n=>{const e=isNaN(Number(t))?String(t):bt.fromSemitones(t);if(typeof n.value=="number"){const o=typeof e=="string"?bt.semitones(e)||0:e;return n.withValue(()=>n.value+o)}return n.withValue(()=>E.simplify(E.transpose(n.value,e)))})};w.prototype._scaleTranspose=function(t){return this._withHap(n=>{if(!n.context.scale)throw new Error("can only use scaleTranspose after .scale");if(typeof n.value!="string")throw new Error("can only use scaleTranspose with notes");return n.withValue(()=>zn(n.context.scale,Number(t),n.value))})};w.prototype._scale=function(t){return this._withHap(n=>{let e=n.value;const o=Number(e);if(!isNaN(o)){let[r,i]=nt.tokenize(t);const{pc:a,oct:s=3}=E.get(r);e=zn(a+" "+i,o,a+s)}return n.withValue(()=>e).setContext(g(y({},n.context),{scale:t}))})};w.prototype.define("transpose",(t,n)=>n.transpose(t),{composable:!0,patternified:!0});w.prototype.define("scale",(t,n)=>n.scale(t),{composable:!0,patternified:!0});w.prototype.define("scaleTranspose",(t,n)=>n.scaleTranspose(t),{composable:!0,patternified:!0});var qn={},Dt={},K={};K.__esModule=!0;K.getBestVoicing=void 0;function mi(t){var n=t.chord,e=t.range,o=t.finder,r=t.picker,i=t.lastVoicing,a=o(n,e);return a.length?r(a,i):[]}K.getBestVoicing=mi;var ft={},Gn=Qn(ci),Q={};Q.__esModule=!0;Q.tokenizeChord=void 0;function ui(t){var n=(t||"").match(/^([A-G][b#]*)([^\/]*)[\/]?([A-G][b#]*)?$/);return n?n.slice(1):[]}Q.tokenizeChord=ui;ft.__esModule=!0;ft.voicingsInRange=void 0;var $=Gn,li=Dt,di=Q;function Mi(t,n,e){n===void 0&&(n=li.lefthand),e===void 0&&(e=["D3","A4"]);var o=(0,di.tokenizeChord)(t),r=o[0],i=o[1];if(!n[i])return[];var a=n[i].map(function(c){return c.split(" ")}),s=$.Range.chromatic(e);return a.reduce(function(c,l){var m=l.map(function(p){return $.Interval.substract(p,l[0])}),d=$.Note.transpose(r,l[0]),M=s.filter(function(p){return $.Note.chroma(p)===$.Note.chroma(d)}).filter(function(p){return $.Note.midi($.Note.transpose(p,m[m.length-1]))<=$.Note.midi(e[1])}).map(function(p){return $.Note.enharmonic(p,d)}),b=M.map(function(p){return m.map(function(pt){return $.Note.transpose(p,pt)})});return c.concat(b)},[])}ft.voicingsInRange=Mi;(function(t){var n=Y&&Y.__assign||function(){return n=Object.assign||function(s){for(var c,l=1,m=arguments.length;lPi({chord:t,dictionary:hi,range:e,picker:pi,lastVoicing:n}),D=w;D.prototype.fmapNested=function(t){return new D(n=>this.query(n).map(e=>Zn(t(e)).query(n).map(o=>new Jn(e.whole,e.part,o.value,o.context))).flat())};D.prototype.voicings=function(t){let n;return t!=null&&t.length||(t=["F3","A4"]),this.fmapNested(e=>(n=yi(e.value,n,t),Wn(...n)._withContext(()=>({locations:e.context.locations||[]}))))};D.prototype._rootNotes=function(t=2){return this.fmap(n=>{const[e,o]=n.match(/^([a-gA-G][b#]?).*$/);return o+t})};D.prototype.define("voicings",(t,n)=>n.voicings(t),{composable:!0});D.prototype.define("rootNotes",(t,n)=>n.rootNotes(t),{composable:!0,patternified:!0}); diff --git a/assets/index.c6426ad9.js b/assets/index.c6426ad9.js deleted file mode 100644 index 8edd6b066..000000000 --- a/assets/index.c6426ad9.js +++ /dev/null @@ -1 +0,0 @@ -import{W as a,G as b}from"./index.8e502404.js";export{a as WebMidi,b as enableWebMidi}; diff --git a/assets/index.d3c8394c.js b/assets/index.d3c8394c.js new file mode 100644 index 000000000..efe5457ae --- /dev/null +++ b/assets/index.d3c8394c.js @@ -0,0 +1,994 @@ +var _r=Object.defineProperty,vr=Object.defineProperties;var Dr=Object.getOwnPropertyDescriptors;var An=Object.getOwnPropertySymbols;var hr=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable;var cr=(o,e,s)=>e in o?_r(o,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[e]=s,Dt=(o,e)=>{for(var s in e||(e={}))hr.call(e,s)&&cr(o,s,e[s]);if(An)for(var s of An(e))dr.call(e,s)&&cr(o,s,e[s]);return o},kt=(o,e)=>vr(o,Dr(e));var dn=(o,e)=>{var s={};for(var a in o)hr.call(o,a)&&e.indexOf(a)<0&&(s[a]=o[a]);if(o!=null&&An)for(var a of An(o))e.indexOf(a)<0&&dr.call(o,a)&&(s[a]=o[a]);return s};function _mergeNamespaces(o,e){return e.forEach(function(s){s&&typeof s!="string"&&!Array.isArray(s)&&Object.keys(s).forEach(function(a){if(a!=="default"&&!(a in o)){var c=Object.getOwnPropertyDescriptor(s,a);Object.defineProperty(o,a,c.get?c:{enumerable:!0,get:function(){return s[a]}})}})}),Object.freeze(Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}))}const p$3=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const _ of d.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&a(_)}).observe(document,{childList:!0,subtree:!0});function s(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerpolicy&&(d.referrerPolicy=c.referrerpolicy),c.crossorigin==="use-credentials"?d.credentials="include":c.crossorigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(c){if(c.ep)return;c.ep=!0;const d=s(c);fetch(c.href,d)}};p$3();var commonjsGlobal=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function getDefaultExportFromCjs(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}function getAugmentedNamespace(o){if(o.__esModule)return o;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(o).forEach(function(s){var a=Object.getOwnPropertyDescriptor(o,s);Object.defineProperty(e,s,a.get?a:{enumerable:!0,get:function(){return o[s]}})}),e}var react={exports:{}},react_production_min={};/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var getOwnPropertySymbols$1=Object.getOwnPropertySymbols,hasOwnProperty$1=Object.prototype.hasOwnProperty,propIsEnumerable$1=Object.prototype.propertyIsEnumerable;function toObject$1(o){if(o==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(o)}function shouldUseNative$1(){try{if(!Object.assign)return!1;var o=new String("abc");if(o[5]="de",Object.getOwnPropertyNames(o)[0]==="5")return!1;for(var e={},s=0;s<10;s++)e["_"+String.fromCharCode(s)]=s;var a=Object.getOwnPropertyNames(e).map(function(d){return e[d]});if(a.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var objectAssign$1=shouldUseNative$1()?Object.assign:function(o,e){for(var s,a=toObject$1(o),c,d=1;d=at},c=function(){},o.unstable_forceFrameRate=function(At){0>At||125>>1,$t=At[Rt];if($t!==void 0&&0dt(wt,Tt))jt!==void 0&&0>dt(jt,wt)?(At[Rt]=jt,At[qt]=Tt,Rt=qt):(At[Rt]=wt,At[It]=Tt,Rt=It);else if(jt!==void 0&&0>dt(jt,Tt))At[Rt]=jt,At[qt]=Tt,Rt=qt;else break e}}return Ot}return null}function dt(At,Ot){var Tt=At.sortIndex-Ot.sortIndex;return Tt!==0?Tt:At.id-Ot.id}var pt=[],gt=[],yt=1,ft=null,mt=3,Et=!1,_t=!1,St=!1;function vt(At){for(var Ot=lt(gt);Ot!==null;){if(Ot.callback===null)ut(gt);else if(Ot.startTime<=At)ut(gt),Ot.sortIndex=Ot.expirationTime,ct(pt,Ot);else break;Ot=lt(gt)}}function Ct(At){if(St=!1,vt(At),!_t)if(lt(pt)!==null)_t=!0,e(xt);else{var Ot=lt(gt);Ot!==null&&s(Ct,Ot.startTime-At)}}function xt(At,Ot){_t=!1,St&&(St=!1,a()),Et=!0;var Tt=mt;try{for(vt(Ot),ft=lt(pt);ft!==null&&(!(ft.expirationTime>Ot)||At&&!o.unstable_shouldYield());){var Rt=ft.callback;if(typeof Rt=="function"){ft.callback=null,mt=ft.priorityLevel;var $t=Rt(ft.expirationTime<=Ot);Ot=o.unstable_now(),typeof $t=="function"?ft.callback=$t:ft===lt(pt)&&ut(pt),vt(Ot)}else ut(pt);ft=lt(pt)}if(ft!==null)var It=!0;else{var wt=lt(gt);wt!==null&&s(Ct,wt.startTime-Ot),It=!1}return It}finally{ft=null,mt=Tt,Et=!1}}var bt=c;o.unstable_IdlePriority=5,o.unstable_ImmediatePriority=1,o.unstable_LowPriority=4,o.unstable_NormalPriority=3,o.unstable_Profiling=null,o.unstable_UserBlockingPriority=2,o.unstable_cancelCallback=function(At){At.callback=null},o.unstable_continueExecution=function(){_t||Et||(_t=!0,e(xt))},o.unstable_getCurrentPriorityLevel=function(){return mt},o.unstable_getFirstCallbackNode=function(){return lt(pt)},o.unstable_next=function(At){switch(mt){case 1:case 2:case 3:var Ot=3;break;default:Ot=mt}var Tt=mt;mt=Ot;try{return At()}finally{mt=Tt}},o.unstable_pauseExecution=function(){},o.unstable_requestPaint=bt,o.unstable_runWithPriority=function(At,Ot){switch(At){case 1:case 2:case 3:case 4:case 5:break;default:At=3}var Tt=mt;mt=At;try{return Ot()}finally{mt=Tt}},o.unstable_scheduleCallback=function(At,Ot,Tt){var Rt=o.unstable_now();switch(typeof Tt=="object"&&Tt!==null?(Tt=Tt.delay,Tt=typeof Tt=="number"&&0Rt?(At.sortIndex=Tt,ct(gt,At),lt(pt)===null&&At===lt(gt)&&(St?a():St=!0,s(Ct,Tt-Rt))):(At.sortIndex=$t,ct(pt,At),_t||Et||(_t=!0,e(xt))),At},o.unstable_wrapCallback=function(At){var Ot=mt;return function(){var Tt=mt;mt=Ot;try{return At.apply(this,arguments)}finally{mt=Tt}}}})(scheduler_production_min);scheduler.exports=scheduler_production_min;/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var aa=react.exports,m$1=objectAssign$1,r=scheduler.exports;function y(o){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+o,s=1;se}return!1}function B(o,e,s,a,c,d,_){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=a,this.attributeNamespace=c,this.mustUseProperty=s,this.propertyName=o,this.type=e,this.sanitizeURL=d,this.removeEmptyString=_}var D={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(o){D[o]=new B(o,0,!1,o,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(o){var e=o[0];D[e]=new B(e,1,!1,o[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(o){D[o]=new B(o,2,!1,o.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(o){D[o]=new B(o,2,!1,o,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(o){D[o]=new B(o,3,!1,o.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(o){D[o]=new B(o,3,!0,o,null,!1,!1)});["capture","download"].forEach(function(o){D[o]=new B(o,4,!1,o,null,!1,!1)});["cols","rows","size","span"].forEach(function(o){D[o]=new B(o,6,!1,o,null,!1,!1)});["rowSpan","start"].forEach(function(o){D[o]=new B(o,5,!1,o.toLowerCase(),null,!1,!1)});var oa=/[\-:]([a-z])/g;function pa(o){return o[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(o){var e=o.replace(oa,pa);D[e]=new B(e,1,!1,o,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(o){var e=o.replace(oa,pa);D[e]=new B(e,1,!1,o,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(o){var e=o.replace(oa,pa);D[e]=new B(e,1,!1,o,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(o){D[o]=new B(o,1,!1,o.toLowerCase(),null,!1,!1)});D.xlinkHref=new B("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(o){D[o]=new B(o,1,!1,o.toLowerCase(),null,!0,!0)});function qa(o,e,s,a){var c=D.hasOwnProperty(e)?D[e]:null,d=c!==null?c.type===0:a?!1:!(!(2b||c[_]!==d[b])return` +`+c[_].replace(" at new "," at ");while(1<=_&&0<=b);break}}}finally{Oa=!1,Error.prepareStackTrace=s}return(o=o?o.displayName||o.name:"")?Na(o):""}function Qa(o){switch(o.tag){case 5:return Na(o.type);case 16:return Na("Lazy");case 13:return Na("Suspense");case 19:return Na("SuspenseList");case 0:case 2:case 15:return o=Pa(o.type,!1),o;case 11:return o=Pa(o.type.render,!1),o;case 22:return o=Pa(o.type._render,!1),o;case 1:return o=Pa(o.type,!0),o;default:return""}}function Ra(o){if(o==null)return null;if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case ua:return"Fragment";case ta:return"Portal";case xa:return"Profiler";case wa:return"StrictMode";case Ba:return"Suspense";case Ca:return"SuspenseList"}if(typeof o=="object")switch(o.$$typeof){case za:return(o.displayName||"Context")+".Consumer";case ya:return(o._context.displayName||"Context")+".Provider";case Aa:var e=o.render;return e=e.displayName||e.name||"",o.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case Da:return Ra(o.type);case Fa:return Ra(o._render);case Ea:e=o._payload,o=o._init;try{return Ra(o(e))}catch{}}return null}function Sa(o){switch(typeof o){case"boolean":case"number":case"object":case"string":case"undefined":return o;default:return""}}function Ta(o){var e=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Ua(o){var e=Ta(o)?"checked":"value",s=Object.getOwnPropertyDescriptor(o.constructor.prototype,e),a=""+o[e];if(!o.hasOwnProperty(e)&&typeof s!="undefined"&&typeof s.get=="function"&&typeof s.set=="function"){var c=s.get,d=s.set;return Object.defineProperty(o,e,{configurable:!0,get:function(){return c.call(this)},set:function(_){a=""+_,d.call(this,_)}}),Object.defineProperty(o,e,{enumerable:s.enumerable}),{getValue:function(){return a},setValue:function(_){a=""+_},stopTracking:function(){o._valueTracker=null,delete o[e]}}}}function Va(o){o._valueTracker||(o._valueTracker=Ua(o))}function Wa(o){if(!o)return!1;var e=o._valueTracker;if(!e)return!0;var s=e.getValue(),a="";return o&&(a=Ta(o)?o.checked?"true":"false":o.value),o=a,o!==s?(e.setValue(o),!0):!1}function Xa(o){if(o=o||(typeof document!="undefined"?document:void 0),typeof o=="undefined")return null;try{return o.activeElement||o.body}catch{return o.body}}function Ya(o,e){var s=e.checked;return m$1({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s!=null?s:o._wrapperState.initialChecked})}function Za(o,e){var s=e.defaultValue==null?"":e.defaultValue,a=e.checked!=null?e.checked:e.defaultChecked;s=Sa(e.value!=null?e.value:s),o._wrapperState={initialChecked:a,initialValue:s,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function $a(o,e){e=e.checked,e!=null&&qa(o,"checked",e,!1)}function ab(o,e){$a(o,e);var s=Sa(e.value),a=e.type;if(s!=null)a==="number"?(s===0&&o.value===""||o.value!=s)&&(o.value=""+s):o.value!==""+s&&(o.value=""+s);else if(a==="submit"||a==="reset"){o.removeAttribute("value");return}e.hasOwnProperty("value")?bb(o,e.type,s):e.hasOwnProperty("defaultValue")&&bb(o,e.type,Sa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(o.defaultChecked=!!e.defaultChecked)}function cb(o,e,s){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var a=e.type;if(!(a!=="submit"&&a!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+o._wrapperState.initialValue,s||e===o.value||(o.value=e),o.defaultValue=e}s=o.name,s!==""&&(o.name=""),o.defaultChecked=!!o._wrapperState.initialChecked,s!==""&&(o.name=s)}function bb(o,e,s){(e!=="number"||Xa(o.ownerDocument)!==o)&&(s==null?o.defaultValue=""+o._wrapperState.initialValue:o.defaultValue!==""+s&&(o.defaultValue=""+s))}function db(o){var e="";return aa.Children.forEach(o,function(s){s!=null&&(e+=s)}),e}function eb(o,e){return o=m$1({children:void 0},e),(e=db(e.children))&&(o.children=e),o}function fb(o,e,s,a){if(o=o.options,e){e={};for(var c=0;c=s.length))throw Error(y(93));s=s[0]}e=s}e==null&&(e=""),s=e}o._wrapperState={initialValue:Sa(s)}}function ib(o,e){var s=Sa(e.value),a=Sa(e.defaultValue);s!=null&&(s=""+s,s!==o.value&&(o.value=s),e.defaultValue==null&&o.defaultValue!==s&&(o.defaultValue=s)),a!=null&&(o.defaultValue=""+a)}function jb(o){var e=o.textContent;e===o._wrapperState.initialValue&&e!==""&&e!==null&&(o.value=e)}var kb={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function lb(o){switch(o){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function mb(o,e){return o==null||o==="http://www.w3.org/1999/xhtml"?lb(e):o==="http://www.w3.org/2000/svg"&&e==="foreignObject"?"http://www.w3.org/1999/xhtml":o}var nb,ob=function(o){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(e,s,a,c){MSApp.execUnsafeLocalFunction(function(){return o(e,s,a,c)})}:o}(function(o,e){if(o.namespaceURI!==kb.svg||"innerHTML"in o)o.innerHTML=e;else{for(nb=nb||document.createElement("div"),nb.innerHTML=""+e.valueOf().toString()+"",e=nb.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;e.firstChild;)o.appendChild(e.firstChild)}});function pb(o,e){if(e){var s=o.firstChild;if(s&&s===o.lastChild&&s.nodeType===3){s.nodeValue=e;return}}o.textContent=e}var qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=["Webkit","ms","Moz","O"];Object.keys(qb).forEach(function(o){rb.forEach(function(e){e=e+o.charAt(0).toUpperCase()+o.substring(1),qb[e]=qb[o]})});function sb(o,e,s){return e==null||typeof e=="boolean"||e===""?"":s||typeof e!="number"||e===0||qb.hasOwnProperty(o)&&qb[o]?(""+e).trim():e+"px"}function tb(o,e){o=o.style;for(var s in e)if(e.hasOwnProperty(s)){var a=s.indexOf("--")===0,c=sb(s,e[s],a);s==="float"&&(s="cssFloat"),a?o.setProperty(s,c):o[s]=c}}var ub=m$1({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vb(o,e){if(e){if(ub[o]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(y(137,o));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(y(60));if(!(typeof e.dangerouslySetInnerHTML=="object"&&"__html"in e.dangerouslySetInnerHTML))throw Error(y(61))}if(e.style!=null&&typeof e.style!="object")throw Error(y(62))}}function wb(o,e){if(o.indexOf("-")===-1)return typeof e.is=="string";switch(o){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function xb(o){return o=o.target||o.srcElement||window,o.correspondingUseElement&&(o=o.correspondingUseElement),o.nodeType===3?o.parentNode:o}var yb=null,zb=null,Ab=null;function Bb(o){if(o=Cb(o)){if(typeof yb!="function")throw Error(y(280));var e=o.stateNode;e&&(e=Db(e),yb(o.stateNode,o.type,e))}}function Eb(o){zb?Ab?Ab.push(o):Ab=[o]:zb=o}function Fb(){if(zb){var o=zb,e=Ab;if(Ab=zb=null,Bb(o),e)for(o=0;oa?0:1<s;s++)e.push(o);return e}function $c(o,e,s){o.pendingLanes|=e;var a=e-1;o.suspendedLanes&=a,o.pingedLanes&=a,o=o.eventTimes,e=31-Vc(e),o[e]=s}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(o){return o===0?32:31-(bd(o)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(o,e,s,a){Kb||Ib();var c=hd,d=Kb;Kb=!0;try{Hb(c,o,e,s,a)}finally{(Kb=d)||Mb()}}function id$2(o,e,s,a){ed(dd,hd.bind(null,o,e,s,a))}function hd(o,e,s,a){if(fd){var c;if((c=(e&4)===0)&&0=be),ee=String.fromCharCode(32),fe=!1;function ge(o,e){switch(o){case"keyup":return $d.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function he(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var ie$2=!1;function je(o,e){switch(o){case"compositionend":return he(e);case"keypress":return e.which!==32?null:(fe=!0,ee);case"textInput":return o=e.data,o===ee&&fe?null:o;default:return null}}function ke(o,e){if(ie$2)return o==="compositionend"||!ae&&ge(o,e)?(o=nd(),md=ld=kd=null,ie$2=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:s,offset:e-o};o=a}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Ke(s)}}function Me(o,e){return o&&e?o===e?!0:o&&o.nodeType===3?!1:e&&e.nodeType===3?Me(o,e.parentNode):"contains"in o?o.contains(e):o.compareDocumentPosition?!!(o.compareDocumentPosition(e)&16):!1:!1}function Ne(){for(var o=window,e=Xa();e instanceof o.HTMLIFrameElement;){try{var s=typeof e.contentWindow.location.href=="string"}catch{s=!1}if(s)o=e.contentWindow;else break;e=Xa(o.document)}return e}function Oe(o){var e=o&&o.nodeName&&o.nodeName.toLowerCase();return e&&(e==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||e==="textarea"||o.contentEditable==="true")}var Pe=fa&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;function Ue(o,e,s){var a=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Te||Qe==null||Qe!==Xa(a)||(a=Qe,"selectionStart"in a&&Oe(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Se&&Je(Se,a)||(Se=a,a=oe(Re,"onSelect"),0Af||(o.current=zf[Af],zf[Af]=null,Af--)}function I$1(o,e){Af++,zf[Af]=o.current,o.current=e}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;function Ef(o,e){var s=o.type.contextTypes;if(!s)return Cf;var a=o.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===e)return a.__reactInternalMemoizedMaskedChildContext;var c={},d;for(d in s)c[d]=e[d];return a&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=e,o.__reactInternalMemoizedMaskedChildContext=c),c}function Ff(o){return o=o.childContextTypes,o!=null}function Gf(){H(N),H(M)}function Hf(o,e,s){if(M.current!==Cf)throw Error(y(168));I$1(M,e),I$1(N,s)}function If(o,e,s){var a=o.stateNode;if(o=e.childContextTypes,typeof a.getChildContext!="function")return s;a=a.getChildContext();for(var c in a)if(!(c in o))throw Error(y(108,Ra(e)||"Unknown",c));return m$1({},s,a)}function Jf(o){return o=(o=o.stateNode)&&o.__reactInternalMemoizedMergedChildContext||Cf,Df=M.current,I$1(M,o),I$1(N,N.current),!0}function Kf(o,e,s){var a=o.stateNode;if(!a)throw Error(y(169));s?(o=If(o,e,Df),a.__reactInternalMemoizedMergedChildContext=o,H(N),H(M),I$1(M,o)):H(N),I$1(N,s)}var Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=Rf!==void 0?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1e4>dg?Sf:function(){return Sf()-dg};function eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332))}}function fg(o){switch(o){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332))}}function gg(o,e){return o=fg(o),Nf(o,e)}function hg(o,e,s){return o=fg(o),Of(o,e,s)}function ig(){if(bg!==null){var o=bg;bg=null,Pf(o)}jg()}function jg(){if(!cg&&ag!==null){cg=!0;var o=0;try{var e=ag;gg(99,function(){for(;out?(dt=lt,lt=null):dt=lt.sibling;var pt=et(rt,lt,at[ut],ot);if(pt===null){lt===null&&(lt=dt);break}o&<&&pt.alternate===null&&e(rt,lt),it=d(pt,it,ut),ct===null?ht=pt:ct.sibling=pt,ct=pt,lt=dt}if(ut===at.length)return s(rt,lt),ht;if(lt===null){for(;utut?(dt=lt,lt=null):dt=lt.sibling;var gt=et(rt,lt,pt.value,ot);if(gt===null){lt===null&&(lt=dt);break}o&<&>.alternate===null&&e(rt,lt),it=d(gt,it,ut),ct===null?ht=gt:ct.sibling=gt,ct=gt,lt=dt}if(pt.done)return s(rt,lt),ht;if(lt===null){for(;!pt.done;ut++,pt=at.next())pt=_e(rt,pt.value,ot),pt!==null&&(it=d(pt,it,ut),ct===null?ht=pt:ct.sibling=pt,ct=pt);return ht}for(lt=a(rt,lt);!pt.done;ut++,pt=at.next())pt=tt(lt,rt,ut,pt.value,ot),pt!==null&&(o&&pt.alternate!==null&<.delete(pt.key===null?ut:pt.key),it=d(pt,it,ut),ct===null?ht=pt:ct.sibling=pt,ct=pt);return o&<.forEach(function(yt){return e(rt,yt)}),ht}return function(rt,it,at,ot){var ht=typeof at=="object"&&at!==null&&at.type===ua&&at.key===null;ht&&(at=at.props.children);var ct=typeof at=="object"&&at!==null;if(ct)switch(at.$$typeof){case sa:e:{for(ct=at.key,ht=it;ht!==null;){if(ht.key===ct){switch(ht.tag){case 7:if(at.type===ua){s(rt,ht.sibling),it=c(ht,at.props.children),it.return=rt,rt=it;break e}break;default:if(ht.elementType===at.type){s(rt,ht.sibling),it=c(ht,at.props),it.ref=Qg(rt,ht,at),it.return=rt,rt=it;break e}}s(rt,ht);break}else e(rt,ht);ht=ht.sibling}at.type===ua?(it=Xg(at.props.children,rt.mode,ot,at.key),it.return=rt,rt=it):(ot=Vg(at.type,at.key,at.props,null,rt.mode,ot),ot.ref=Qg(rt,it,at),ot.return=rt,rt=ot)}return _(rt);case ta:e:{for(ht=at.key;it!==null;){if(it.key===ht)if(it.tag===4&&it.stateNode.containerInfo===at.containerInfo&&it.stateNode.implementation===at.implementation){s(rt,it.sibling),it=c(it,at.children||[]),it.return=rt,rt=it;break e}else{s(rt,it);break}else e(rt,it);it=it.sibling}it=Wg(at,rt.mode,ot),it.return=rt,rt=it}return _(rt)}if(typeof at=="string"||typeof at=="number")return at=""+at,it!==null&&it.tag===6?(s(rt,it.sibling),it=c(it,at),it.return=rt,rt=it):(s(rt,it),it=Ug(at,rt.mode,ot),it.return=rt,rt=it),_(rt);if(Pg(at))return nt(rt,it,at,ot);if(La(at))return st(rt,it,at,ot);if(ct&&Rg(rt,at),typeof at=="undefined"&&!ht)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(rt.type)||"Component"))}return s(rt,it)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);function dh(o){if(o===$g)throw Error(y(174));return o}function eh(o,e){switch(I$1(ch,e),I$1(bh,o),I$1(ah,$g),o=e.nodeType,o){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:mb(null,"");break;default:o=o===8?e.parentNode:e,e=o.namespaceURI||null,o=o.tagName,e=mb(e,o)}H(ah),I$1(ah,e)}function fh(){H(ah),H(bh),H(ch)}function gh(o){dh(ch.current);var e=dh(ah.current),s=mb(e,o.type);e!==s&&(I$1(bh,o),I$1(ah,s))}function hh(o){bh.current===o&&(H(ah),H(bh))}var P=Bf(0);function ih(o){for(var e=o;e!==null;){if(e.tag===13){var s=e.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&64)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===o)break;for(;e.sibling===null;){if(e.return===null||e.return===o)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var jh=null,kh=null,lh=!1;function mh(o,e){var s=nh(5,null,null,0);s.elementType="DELETED",s.type="DELETED",s.stateNode=e,s.return=o,s.flags=8,o.lastEffect!==null?(o.lastEffect.nextEffect=s,o.lastEffect=s):o.firstEffect=o.lastEffect=s}function oh(o,e){switch(o.tag){case 5:var s=o.type;return e=e.nodeType!==1||s.toLowerCase()!==e.nodeName.toLowerCase()?null:e,e!==null?(o.stateNode=e,!0):!1;case 6:return e=o.pendingProps===""||e.nodeType!==3?null:e,e!==null?(o.stateNode=e,!0):!1;case 13:return!1;default:return!1}}function ph(o){if(lh){var e=kh;if(e){var s=e;if(!oh(o,e)){if(e=rf(s.nextSibling),!e||!oh(o,e)){o.flags=o.flags&-1025|2,lh=!1,jh=o;return}mh(jh,s)}jh=o,kh=rf(e.firstChild)}else o.flags=o.flags&-1025|2,lh=!1,jh=o}}function qh(o){for(o=o.return;o!==null&&o.tag!==5&&o.tag!==3&&o.tag!==13;)o=o.return;jh=o}function rh(o){if(o!==jh)return!1;if(!lh)return qh(o),lh=!0,!1;var e=o.type;if(o.tag!==5||e!=="head"&&e!=="body"&&!nf(e,o.memoizedProps))for(e=kh;e;)mh(o,e),e=rf(e.nextSibling);if(qh(o),o.tag===13){if(o=o.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(y(317));e:{for(o=o.nextSibling,e=0;o;){if(o.nodeType===8){var s=o.data;if(s==="/$"){if(e===0){kh=rf(o.nextSibling);break e}e--}else s!=="$"&&s!=="$!"&&s!=="$?"||e++}o=o.nextSibling}kh=null}}else kh=jh?rf(o.stateNode.nextSibling):null;return!0}function sh(){kh=jh=null,lh=!1}var th=[];function uh(){for(var o=0;od))throw Error(y(301));d+=1,T$1=S=null,e.updateQueue=null,vh.current=Fh,o=s(a,c)}while(zh)}if(vh.current=Gh,e=S!==null&&S.next!==null,xh=0,T$1=S=R$1=null,yh=!1,e)throw Error(y(300));return o}function Hh(){var o={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return T$1===null?R$1.memoizedState=T$1=o:T$1=T$1.next=o,T$1}function Ih(){if(S===null){var o=R$1.alternate;o=o!==null?o.memoizedState:null}else o=S.next;var e=T$1===null?R$1.memoizedState:T$1.next;if(e!==null)T$1=e,S=o;else{if(o===null)throw Error(y(310));S=o,o={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null},T$1===null?R$1.memoizedState=T$1=o:T$1=T$1.next=o}return T$1}function Jh(o,e){return typeof e=="function"?e(o):e}function Kh(o){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=o;var a=S,c=a.baseQueue,d=s.pending;if(d!==null){if(c!==null){var _=c.next;c.next=d.next,d.next=_}a.baseQueue=c=d,s.pending=null}if(c!==null){c=c.next,a=a.baseState;var b=_=d=null,k=c;do{var $=k.lane;if((xh&$)===$)b!==null&&(b=b.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),a=k.eagerReducer===o?k.eagerState:o(a,k.action);else{var j={lane:$,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};b===null?(_=b=j,d=a):b=b.next=j,R$1.lanes|=$,Dg|=$}k=k.next}while(k!==null&&k!==c);b===null?d=a:b.next=_,He(a,e.memoizedState)||(ug=!0),e.memoizedState=a,e.baseState=d,e.baseQueue=b,s.lastRenderedState=a}return[e.memoizedState,s.dispatch]}function Lh(o){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=o;var a=s.dispatch,c=s.pending,d=e.memoizedState;if(c!==null){s.pending=null;var _=c=c.next;do d=o(d,_.action),_=_.next;while(_!==c);He(d,e.memoizedState)||(ug=!0),e.memoizedState=d,e.baseQueue===null&&(e.baseState=d),s.lastRenderedState=d}return[d,a]}function Mh(o,e,s){var a=e._getVersion;a=a(e._source);var c=e._workInProgressVersionPrimary;if(c!==null?o=c===a:(o=o.mutableReadLanes,(o=(xh&o)===o)&&(e._workInProgressVersionPrimary=a,th.push(e))),o)return s(e._source);throw th.push(e),Error(y(350))}function Nh(o,e,s,a){var c=U;if(c===null)throw Error(y(349));var d=e._getVersion,_=d(e._source),b=vh.current,k=b.useState(function(){return Mh(c,e,s)}),$=k[1],j=k[0];k=T$1;var _e=o.memoizedState,et=_e.refs,tt=et.getSnapshot,nt=_e.source;_e=_e.subscribe;var st=R$1;return o.memoizedState={refs:et,source:e,subscribe:a},b.useEffect(function(){et.getSnapshot=s,et.setSnapshot=$;var rt=d(e._source);if(!He(_,rt)){rt=s(e._source),He(j,rt)||($(rt),rt=Ig(st),c.mutableReadLanes|=rt&c.pendingLanes),rt=c.mutableReadLanes,c.entangledLanes|=rt;for(var it=c.entanglements,at=rt;0s?98:s,function(){o(!0)}),gg(97<\/script>",o=o.removeChild(o.firstChild)):typeof a.is=="string"?o=_.createElement(s,{is:a.is}):(o=_.createElement(s),s==="select"&&(_=o,a.multiple?_.multiple=!0:a.size&&(_.size=a.size))):o=_.createElementNS(o,s),o[wf]=e,o[xf]=a,Bi(o,e,!1,!1),e.stateNode=o,_=wb(s,a),s){case"dialog":G("cancel",o),G("close",o),c=a;break;case"iframe":case"object":case"embed":G("load",o),c=a;break;case"video":case"audio":for(c=0;cJi&&(e.flags|=64,d=!0,Fi(a,!1),e.lanes=33554432)}else{if(!d)if(o=ih(_),o!==null){if(e.flags|=64,d=!0,s=o.updateQueue,s!==null&&(e.updateQueue=s,e.flags|=4),Fi(a,!0),a.tail===null&&a.tailMode==="hidden"&&!_.alternate&&!lh)return e=e.lastEffect=a.lastEffect,e!==null&&(e.nextEffect=null),null}else 2*O()-a.renderingStartTime>Ji&&s!==1073741824&&(e.flags|=64,d=!0,Fi(a,!1),e.lanes=33554432);a.isBackwards?(_.sibling=e.child,e.child=_):(s=a.last,s!==null?s.sibling=_:e.child=_,a.last=_)}return a.tail!==null?(s=a.tail,a.rendering=s,a.tail=s.sibling,a.lastEffect=e.lastEffect,a.renderingStartTime=O(),s.sibling=null,e=P.current,I$1(P,d?e&1|2:e&1),s):null;case 23:case 24:return Ki(),o!==null&&o.memoizedState!==null!=(e.memoizedState!==null)&&a.mode!=="unstable-defer-without-hiding"&&(e.flags|=4),null}throw Error(y(156,e.tag))}function Li(o){switch(o.tag){case 1:Ff(o.type)&&Gf();var e=o.flags;return e&4096?(o.flags=e&-4097|64,o):null;case 3:if(fh(),H(N),H(M),uh(),e=o.flags,(e&64)!==0)throw Error(y(285));return o.flags=e&-4097|64,o;case 5:return hh(o),null;case 13:return H(P),e=o.flags,e&4096?(o.flags=e&-4097|64,o):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(o),null;case 23:case 24:return Ki(),null;default:return null}}function Mi(o,e){try{var s="",a=e;do s+=Qa(a),a=a.return;while(a);var c=s}catch(d){c=` +Error generating stack: `+d.message+` +`+d.stack}return{value:o,source:e,stack:c}}function Ni(o,e){try{console.error(e.value)}catch(s){setTimeout(function(){throw s})}}var Oi=typeof WeakMap=="function"?WeakMap:Map;function Pi(o,e,s){s=zg(-1,s),s.tag=3,s.payload={element:null};var a=e.value;return s.callback=function(){Qi||(Qi=!0,Ri=a),Ni(o,e)},s}function Si(o,e,s){s=zg(-1,s),s.tag=3;var a=o.type.getDerivedStateFromError;if(typeof a=="function"){var c=e.value;s.payload=function(){return Ni(o,e),a(c)}}var d=o.stateNode;return d!==null&&typeof d.componentDidCatch=="function"&&(s.callback=function(){typeof a!="function"&&(Ti===null?Ti=new Set([this]):Ti.add(this),Ni(o,e));var _=e.stack;this.componentDidCatch(e.value,{componentStack:_!==null?_:""})}),s}var Ui=typeof WeakSet=="function"?WeakSet:Set;function Vi(o){var e=o.ref;if(e!==null)if(typeof e=="function")try{e(null)}catch(s){Wi(o,s)}else e.current=null}function Xi(o,e){switch(e.tag){case 0:case 11:case 15:case 22:return;case 1:if(e.flags&256&&o!==null){var s=o.memoizedProps,a=o.memoizedState;o=e.stateNode,e=o.getSnapshotBeforeUpdate(e.elementType===e.type?s:lg(e.type,s),a),o.__reactInternalSnapshotBeforeUpdate=e}return;case 3:e.flags&256&&qf(e.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163))}function Yi(o,e,s){switch(s.tag){case 0:case 11:case 15:case 22:if(e=s.updateQueue,e=e!==null?e.lastEffect:null,e!==null){o=e=e.next;do{if((o.tag&3)===3){var a=o.create;o.destroy=a()}o=o.next}while(o!==e)}if(e=s.updateQueue,e=e!==null?e.lastEffect:null,e!==null){o=e=e.next;do{var c=o;a=c.next,c=c.tag,(c&4)!==0&&(c&1)!==0&&(Zi(s,o),$i(s,o)),o=a}while(o!==e)}return;case 1:o=s.stateNode,s.flags&4&&(e===null?o.componentDidMount():(a=s.elementType===s.type?e.memoizedProps:lg(s.type,e.memoizedProps),o.componentDidUpdate(a,e.memoizedState,o.__reactInternalSnapshotBeforeUpdate))),e=s.updateQueue,e!==null&&Eg(s,e,o);return;case 3:if(e=s.updateQueue,e!==null){if(o=null,s.child!==null)switch(s.child.tag){case 5:o=s.child.stateNode;break;case 1:o=s.child.stateNode}Eg(s,e,o)}return;case 5:o=s.stateNode,e===null&&s.flags&4&&mf(s.type,s.memoizedProps)&&o.focus();return;case 6:return;case 4:return;case 12:return;case 13:s.memoizedState===null&&(s=s.alternate,s!==null&&(s=s.memoizedState,s!==null&&(s=s.dehydrated,s!==null&&Cc(s))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163))}function aj(o,e){for(var s=o;;){if(s.tag===5){var a=s.stateNode;if(e)a=a.style,typeof a.setProperty=="function"?a.setProperty("display","none","important"):a.display="none";else{a=s.stateNode;var c=s.memoizedProps.style;c=c!=null&&c.hasOwnProperty("display")?c.display:null,a.style.display=sb("display",c)}}else if(s.tag===6)s.stateNode.nodeValue=e?"":s.memoizedProps;else if((s.tag!==23&&s.tag!==24||s.memoizedState===null||s===o)&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===o)break;for(;s.sibling===null;){if(s.return===null||s.return===o)return;s=s.return}s.sibling.return=s.return,s=s.sibling}}function bj(o,e){if(Mf&&typeof Mf.onCommitFiberUnmount=="function")try{Mf.onCommitFiberUnmount(Lf,e)}catch{}switch(e.tag){case 0:case 11:case 14:case 15:case 22:if(o=e.updateQueue,o!==null&&(o=o.lastEffect,o!==null)){var s=o=o.next;do{var a=s,c=a.destroy;if(a=a.tag,c!==void 0)if((a&4)!==0)Zi(e,s);else{a=e;try{c()}catch(d){Wi(a,d)}}s=s.next}while(s!==o)}break;case 1:if(Vi(e),o=e.stateNode,typeof o.componentWillUnmount=="function")try{o.props=e.memoizedProps,o.state=e.memoizedState,o.componentWillUnmount()}catch(d){Wi(e,d)}break;case 5:Vi(e);break;case 4:cj(o,e)}}function dj(o){o.alternate=null,o.child=null,o.dependencies=null,o.firstEffect=null,o.lastEffect=null,o.memoizedProps=null,o.memoizedState=null,o.pendingProps=null,o.return=null,o.updateQueue=null}function ej(o){return o.tag===5||o.tag===3||o.tag===4}function fj(o){e:{for(var e=o.return;e!==null;){if(ej(e))break e;e=e.return}throw Error(y(160))}var s=e;switch(e=s.stateNode,s.tag){case 5:var a=!1;break;case 3:e=e.containerInfo,a=!0;break;case 4:e=e.containerInfo,a=!0;break;default:throw Error(y(161))}s.flags&16&&(pb(e,""),s.flags&=-17);e:t:for(s=o;;){for(;s.sibling===null;){if(s.return===null||ej(s.return)){s=null;break e}s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.flags&2||s.child===null||s.tag===4)continue t;s.child.return=s,s=s.child}if(!(s.flags&2)){s=s.stateNode;break e}}a?gj(o,s,e):hj(o,s,e)}function gj(o,e,s){var a=o.tag,c=a===5||a===6;if(c)o=c?o.stateNode:o.stateNode.instance,e?s.nodeType===8?s.parentNode.insertBefore(o,e):s.insertBefore(o,e):(s.nodeType===8?(e=s.parentNode,e.insertBefore(o,s)):(e=s,e.appendChild(o)),s=s._reactRootContainer,s!=null||e.onclick!==null||(e.onclick=jf));else if(a!==4&&(o=o.child,o!==null))for(gj(o,e,s),o=o.sibling;o!==null;)gj(o,e,s),o=o.sibling}function hj(o,e,s){var a=o.tag,c=a===5||a===6;if(c)o=c?o.stateNode:o.stateNode.instance,e?s.insertBefore(o,e):s.appendChild(o);else if(a!==4&&(o=o.child,o!==null))for(hj(o,e,s),o=o.sibling;o!==null;)hj(o,e,s),o=o.sibling}function cj(o,e){for(var s=e,a=!1,c,d;;){if(!a){a=s.return;e:for(;;){if(a===null)throw Error(y(160));switch(c=a.stateNode,a.tag){case 5:d=!1;break e;case 3:c=c.containerInfo,d=!0;break e;case 4:c=c.containerInfo,d=!0;break e}a=a.return}a=!0}if(s.tag===5||s.tag===6){e:for(var _=o,b=s,k=b;;)if(bj(_,k),k.child!==null&&k.tag!==4)k.child.return=k,k=k.child;else{if(k===b)break e;for(;k.sibling===null;){if(k.return===null||k.return===b)break e;k=k.return}k.sibling.return=k.return,k=k.sibling}d?(_=c,b=s.stateNode,_.nodeType===8?_.parentNode.removeChild(b):_.removeChild(b)):c.removeChild(s.stateNode)}else if(s.tag===4){if(s.child!==null){c=s.stateNode.containerInfo,d=!0,s.child.return=s,s=s.child;continue}}else if(bj(o,s),s.child!==null){s.child.return=s,s=s.child;continue}if(s===e)break;for(;s.sibling===null;){if(s.return===null||s.return===e)return;s=s.return,s.tag===4&&(a=!1)}s.sibling.return=s.return,s=s.sibling}}function ij(o,e){switch(e.tag){case 0:case 11:case 14:case 15:case 22:var s=e.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var a=s=s.next;do(a.tag&3)===3&&(o=a.destroy,a.destroy=void 0,o!==void 0&&o()),a=a.next;while(a!==s)}return;case 1:return;case 5:if(s=e.stateNode,s!=null){a=e.memoizedProps;var c=o!==null?o.memoizedProps:a;o=e.type;var d=e.updateQueue;if(e.updateQueue=null,d!==null){for(s[xf]=a,o==="input"&&a.type==="radio"&&a.name!=null&&$a(s,a),wb(o,c),e=wb(o,a),c=0;cc&&(c=_),s&=~d}if(s=c,s=O()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*nj(s/1960))-s,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}V!==5&&(V=2),k=Mi(k,b),et=_;do{switch(et.tag){case 3:d=k,et.flags|=4096,e&=-e,et.lanes|=e;var ct=Pi(et,d,e);Bg(et,ct);break e;case 1:d=k;var lt=et.type,ut=et.stateNode;if((et.flags&64)===0&&(typeof lt.getDerivedStateFromError=="function"||ut!==null&&typeof ut.componentDidCatch=="function"&&(Ti===null||!Ti.has(ut)))){et.flags|=4096,e&=-e,et.lanes|=e;var dt=Si(et,d,e);Bg(et,dt);break e}}et=et.return}while(et!==null)}Zj(s)}catch(pt){e=pt,Y===s&&s!==null&&(Y=s=s.return);continue}break}while(1)}function Pj(){var o=oj.current;return oj.current=Gh,o===null?Gh:o}function Tj(o,e){var s=X;X|=16;var a=Pj();U===o&&W===e||Qj(o,e);do try{ak();break}catch(c){Sj(o,c)}while(1);if(qg(),X=s,oj.current=a,Y!==null)throw Error(y(261));return U=null,W=0,V}function ak(){for(;Y!==null;)bk(Y)}function Rj(){for(;Y!==null&&!Qf();)bk(Y)}function bk(o){var e=ck(o.alternate,o,qj);o.memoizedProps=o.pendingProps,e===null?Zj(o):Y=e,pj.current=null}function Zj(o){var e=o;do{var s=e.alternate;if(o=e.return,(e.flags&2048)===0){if(s=Gi(s,e,qj),s!==null){Y=s;return}if(s=e,s.tag!==24&&s.tag!==23||s.memoizedState===null||(qj&1073741824)!==0||(s.mode&4)===0){for(var a=0,c=s.child;c!==null;)a|=c.lanes|c.childLanes,c=c.sibling;s.childLanes=a}o!==null&&(o.flags&2048)===0&&(o.firstEffect===null&&(o.firstEffect=e.firstEffect),e.lastEffect!==null&&(o.lastEffect!==null&&(o.lastEffect.nextEffect=e.firstEffect),o.lastEffect=e.lastEffect),1_&&(b=_,_=ct,ct=b),b=Le(at,ct),d=Le(at,_),b&&d&&(ht.rangeCount!==1||ht.anchorNode!==b.node||ht.anchorOffset!==b.offset||ht.focusNode!==d.node||ht.focusOffset!==d.offset)&&(ot=ot.createRange(),ot.setStart(b.node,b.offset),ht.removeAllRanges(),ct>_?(ht.addRange(ot),ht.extend(d.node,d.offset)):(ot.setEnd(d.node,d.offset),ht.addRange(ot)))))),ot=[],ht=at;ht=ht.parentNode;)ht.nodeType===1&&ot.push({element:ht,left:ht.scrollLeft,top:ht.scrollTop});for(typeof at.focus=="function"&&at.focus(),at=0;atO()-jj?Qj(o,0):uj|=s),Mj(o,e)}function lj(o,e){var s=o.stateNode;s!==null&&s.delete(e),e=0,e===0&&(e=o.mode,(e&2)===0?e=1:(e&4)===0?e=eg()===99?1:2:(Gj===0&&(Gj=tj),e=Yc(62914560&~Gj),e===0&&(e=4194304))),s=Hg(),o=Kj(o,e),o!==null&&($c(o,e,s),Mj(o,s))}var ck;ck=function(o,e,s){var a=e.lanes;if(o!==null)if(o.memoizedProps!==e.pendingProps||N.current)ug=!0;else if((s&a)!==0)ug=(o.flags&16384)!==0;else{switch(ug=!1,e.tag){case 3:ri(e),sh();break;case 5:gh(e);break;case 1:Ff(e.type)&&Jf(e);break;case 4:eh(e,e.stateNode.containerInfo);break;case 10:a=e.memoizedProps.value;var c=e.type._context;I$1(mg,c._currentValue),c._currentValue=a;break;case 13:if(e.memoizedState!==null)return(s&e.child.childLanes)!==0?ti(o,e,s):(I$1(P,P.current&1),e=hi(o,e,s),e!==null?e.sibling:null);I$1(P,P.current&1);break;case 19:if(a=(s&e.childLanes)!==0,(o.flags&64)!==0){if(a)return Ai(o,e,s);e.flags|=64}if(c=e.memoizedState,c!==null&&(c.rendering=null,c.tail=null,c.lastEffect=null),I$1(P,P.current),a)break;return null;case 23:case 24:return e.lanes=0,mi(o,e,s)}return hi(o,e,s)}else ug=!1;switch(e.lanes=0,e.tag){case 2:if(a=e.type,o!==null&&(o.alternate=null,e.alternate=null,e.flags|=2),o=e.pendingProps,c=Ef(e,M.current),tg(e,s),c=Ch(null,e,a,o,c,s),e.flags|=1,typeof c=="object"&&c!==null&&typeof c.render=="function"&&c.$$typeof===void 0){if(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ff(a)){var d=!0;Jf(e)}else d=!1;e.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,xg(e);var _=a.getDerivedStateFromProps;typeof _=="function"&&Gg(e,a,_,o),c.updater=Kg,e.stateNode=c,c._reactInternals=e,Og(e,a,o,s),e=qi(null,e,a,!0,d,s)}else e.tag=0,fi(null,e,c,s),e=e.child;return e;case 16:c=e.elementType;e:{switch(o!==null&&(o.alternate=null,e.alternate=null,e.flags|=2),o=e.pendingProps,d=c._init,c=d(c._payload),e.type=c,d=e.tag=hk(c),o=lg(c,o),d){case 0:e=li(null,e,c,o,s);break e;case 1:e=pi(null,e,c,o,s);break e;case 11:e=gi(null,e,c,o,s);break e;case 14:e=ii(null,e,c,lg(c.type,o),a,s);break e}throw Error(y(306,c,""))}return e;case 0:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:lg(a,c),li(o,e,a,c,s);case 1:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:lg(a,c),pi(o,e,a,c,s);case 3:if(ri(e),a=e.updateQueue,o===null||a===null)throw Error(y(282));if(a=e.pendingProps,c=e.memoizedState,c=c!==null?c.element:null,yg(o,e),Cg(e,a,null,s),a=e.memoizedState.element,a===c)sh(),e=hi(o,e,s);else{if(c=e.stateNode,(d=c.hydrate)&&(kh=rf(e.stateNode.containerInfo.firstChild),jh=e,d=lh=!0),d){if(o=c.mutableSourceEagerHydrationData,o!=null)for(c=0;c{if(a=`${base$1}${a}`,a in seen)return;seen[a]=!0;const c=a.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${d}`))return;const _=document.createElement("link");if(_.rel=c?"stylesheet":scriptRel,c||(_.as="script",_.crossOrigin=""),_.href=a,document.head.appendChild(_),c)return new Promise((b,k)=>{_.addEventListener("load",b),_.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>e())};var fraction$1={exports:{}};/** + * @license Fraction.js v4.2.0 05/03/2022 + * https://www.xarg.org/2014/03/rational-numbers-in-javascript/ + * + * Copyright (c) 2021, Robert Eisele (robert@xarg.org) + * Dual licensed under the MIT or GPL Version 2 licenses. + **/(function(o,e){(function(s){var a=2e3,c={s:1,n:0,d:1};function d(nt,st){if(isNaN(nt=parseInt(nt,10)))throw tt.InvalidParameter;return nt*st}function _(nt,st){if(st===0)throw tt.DivisionByZero;var rt=Object.create(tt.prototype);rt.s=nt<0?-1:1,nt=nt<0?-nt:nt;var it=et(nt,st);return rt.n=nt/it,rt.d=st/it,rt}function b(nt){for(var st={},rt=nt,it=2,at=4;at<=rt;){for(;rt%it===0;)rt/=it,st[it]=(st[it]||0)+1;at+=1+2*it++}return rt!==nt?rt>1&&(st[rt]=(st[rt]||0)+1):st[nt]=(st[nt]||0)+1,st}var k=function(nt,st){var rt=0,it=1,at=1,ot=0,ht=0,ct=0,lt=1,ut=1,dt=0,pt=1,gt=1,yt=1,ft=1e7,mt;if(nt!=null)if(st!==void 0){if(rt=nt,it=st,at=rt*it,rt%1!==0||it%1!==0)throw tt.NonIntegerParameter}else switch(typeof nt){case"object":{if("d"in nt&&"n"in nt)rt=nt.n,it=nt.d,"s"in nt&&(rt*=nt.s);else if(0 in nt)rt=nt[0],1 in nt&&(it=nt[1]);else throw tt.InvalidParameter;at=rt*it;break}case"number":{if(nt<0&&(at=nt,nt=-nt),nt%1===0)rt=nt;else if(nt>0){for(nt>=1&&(ut=Math.pow(10,Math.floor(1+Math.log(nt)/Math.LN10)),nt/=ut);pt<=ft&&yt<=ft;)if(mt=(dt+gt)/(pt+yt),nt===mt){pt+yt<=ft?(rt=dt+gt,it=pt+yt):yt>pt?(rt=gt,it=yt):(rt=dt,it=pt);break}else nt>mt?(dt+=gt,pt+=yt):(gt+=dt,yt+=pt),pt>ft?(rt=gt,it=yt):(rt=dt,it=pt);rt*=ut}else(isNaN(nt)||isNaN(st))&&(it=rt=NaN);break}case"string":{if(pt=nt.match(/\d+|./g),pt===null)throw tt.InvalidParameter;if(pt[dt]==="-"?(at=-1,dt++):pt[dt]==="+"&&dt++,pt.length===dt+1?ht=d(pt[dt++],at):pt[dt+1]==="."||pt[dt]==="."?(pt[dt]!=="."&&(ot=d(pt[dt++],at)),dt++,(dt+1===pt.length||pt[dt+1]==="("&&pt[dt+3]===")"||pt[dt+1]==="'"&&pt[dt+3]==="'")&&(ht=d(pt[dt],at),lt=Math.pow(10,pt[dt].length),dt++),(pt[dt]==="("&&pt[dt+2]===")"||pt[dt]==="'"&&pt[dt+2]==="'")&&(ct=d(pt[dt+1],at),ut=Math.pow(10,pt[dt+1].length)-1,dt+=3)):pt[dt+1]==="/"||pt[dt+1]===":"?(ht=d(pt[dt],at),lt=d(pt[dt+2],1),dt+=3):pt[dt+3]==="/"&&pt[dt+1]===" "&&(ot=d(pt[dt],at),ht=d(pt[dt+2],at),lt=d(pt[dt+4],1),dt+=5),pt.length<=dt){it=lt*ut,at=rt=ct+it*ot+ut*ht;break}}default:throw tt.InvalidParameter}if(it===0)throw tt.DivisionByZero;c.s=at<0?-1:1,c.n=Math.abs(rt),c.d=Math.abs(it)};function $(nt,st,rt){for(var it=1;st>0;nt=nt*nt%rt,st>>=1)st&1&&(it=it*nt%rt);return it}function j(nt,st){for(;st%2===0;st/=2);for(;st%5===0;st/=5);if(st===1)return 0;for(var rt=10%st,it=1;rt!==1;it++)if(rt=rt*10%st,it>a)return 0;return it}function _e(nt,st,rt){for(var it=1,at=$(10,rt,st),ot=0;ot<300;ot++){if(it===at)return ot;it=it*10%st,at=at*10%st}return 0}function et(nt,st){if(!nt)return st;if(!st)return nt;for(;;){if(nt%=st,!nt)return st;if(st%=nt,!st)return nt}}function tt(nt,st){if(k(nt,st),this instanceof tt)nt=et(c.d,c.n),this.s=c.s,this.n=c.n/nt,this.d=c.d/nt;else return _(c.s*c.n,c.d)}tt.DivisionByZero=new Error("Division by Zero"),tt.InvalidParameter=new Error("Invalid argument"),tt.NonIntegerParameter=new Error("Parameters must be integer"),tt.prototype={s:1,n:0,d:1,abs:function(){return _(this.n,this.d)},neg:function(){return _(-this.s*this.n,this.d)},add:function(nt,st){return k(nt,st),_(this.s*this.n*c.d+c.s*this.d*c.n,this.d*c.d)},sub:function(nt,st){return k(nt,st),_(this.s*this.n*c.d-c.s*this.d*c.n,this.d*c.d)},mul:function(nt,st){return k(nt,st),_(this.s*c.s*this.n*c.n,this.d*c.d)},div:function(nt,st){return k(nt,st),_(this.s*c.s*this.n*c.d,this.d*c.n)},clone:function(){return _(this.s*this.n,this.d)},mod:function(nt,st){if(isNaN(this.n)||isNaN(this.d))return new tt(NaN);if(nt===void 0)return _(this.s*this.n%this.d,1);if(k(nt,st),c.n===0&&this.d===0)throw tt.DivisionByZero;return _(this.s*(c.d*this.n)%(c.n*this.d),c.d*this.d)},gcd:function(nt,st){return k(nt,st),_(et(c.n,this.n)*et(c.d,this.d),c.d*this.d)},lcm:function(nt,st){return k(nt,st),c.n===0&&this.n===0?_(0,1):_(c.n*this.n,et(c.n,this.n)*et(c.d,this.d))},ceil:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.ceil(nt*this.s*this.n/this.d),nt)},floor:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.floor(nt*this.s*this.n/this.d),nt)},round:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.round(nt*this.s*this.n/this.d),nt)},inverse:function(){return _(this.s*this.d,this.n)},pow:function(nt,st){if(k(nt,st),c.d===1)return c.s<0?_(Math.pow(this.s*this.d,c.n),Math.pow(this.n,c.n)):_(Math.pow(this.s*this.n,c.n),Math.pow(this.d,c.n));if(this.s<0)return null;var rt=b(this.n),it=b(this.d),at=1,ot=1;for(var ht in rt)if(ht!=="1"){if(ht==="0"){at=0;break}if(rt[ht]*=c.n,rt[ht]%c.d===0)rt[ht]/=c.d;else return null;at*=Math.pow(ht,rt[ht])}for(var ht in it)if(ht!=="1"){if(it[ht]*=c.n,it[ht]%c.d===0)it[ht]/=c.d;else return null;ot*=Math.pow(ht,it[ht])}return c.s<0?_(ot,at):_(at,ot)},equals:function(nt,st){return k(nt,st),this.s*this.n*c.d===c.s*c.n*this.d},compare:function(nt,st){k(nt,st);var rt=this.s*this.n*c.d-c.s*c.n*this.d;return(0=0;ot--)at=at.inverse().add(rt[ot]);if(at.sub(st).abs().valueOf()0&&(rt+=st,rt+=" ",it%=at),rt+=it,rt+="/",rt+=at),rt},toLatex:function(nt){var st,rt="",it=this.n,at=this.d;return this.s<0&&(rt+="-"),at===1?rt+=it:(nt&&(st=Math.floor(it/at))>0&&(rt+=st,it%=at),rt+="\\frac{",rt+=it,rt+="}{",rt+=at,rt+="}"),rt},toContinued:function(){var nt,st=this.n,rt=this.d,it=[];if(isNaN(st)||isNaN(rt))return it;do it.push(Math.floor(st/rt)),nt=st%rt,st=rt,rt=nt;while(st!==1);return it},toString:function(nt){var st=this.n,rt=this.d;if(isNaN(st)||isNaN(rt))return"NaN";nt=nt||15;var it=j(st,rt),at=_e(st,rt,it),ot=this.s<0?"-":"";if(ot+=st/rt|0,st%=rt,st*=10,st&&(ot+="."),it){for(var ht=at;ht--;)ot+=st/rt|0,st%=rt,st*=10;ot+="(";for(var ht=it;ht--;)ot+=st/rt|0,st%=rt,st*=10;ot+=")"}else for(var ht=nt;st&&ht--;)ot+=st/rt|0,st%=rt,st*=10;return ot}},Object.defineProperty(tt,"__esModule",{value:!0}),tt.default=tt,tt.Fraction=tt,o.exports=tt})()})(fraction$1);var Fraction=getDefaultExportFromCjs(fraction$1.exports);Fraction.prototype.sam=function(){return this.floor()};Fraction.prototype.nextSam=function(){return this.sam().add(1)};Fraction.prototype.wholeCycle=function(){return new TimeSpan$1(this.sam(),this.nextSam())};Fraction.prototype.cyclePos=function(){return this.sub(this.sam())};Fraction.prototype.lt=function(o){return this.compare(o)<0};Fraction.prototype.gt=function(o){return this.compare(o)>0};Fraction.prototype.lte=function(o){return this.compare(o)<=0};Fraction.prototype.gte=function(o){return this.compare(o)>=0};Fraction.prototype.eq=function(o){return this.compare(o)==0};Fraction.prototype.max=function(o){return this.gt(o)?this:o};Fraction.prototype.min=function(o){return this.lt(o)?this:o};Fraction.prototype.show=function(){return this.s*this.n+"/"+this.d};Fraction.prototype.or=function(o){return this.eq(0)?o:this};const fraction=o=>(typeof o=="number"&&(o=String(o)),Fraction(o)),gcd=(...o)=>o.reduce((e,s)=>e.gcd(s),fraction(1));fraction._original=Fraction;class TimeSpan$1{constructor(e,s){this.begin=fraction(e),this.end=fraction(s)}get spanCycles(){const e=[];var s=this.begin;const a=this.end,c=a.sam();for(;a.gt(s);){if(s.sam().equals(c)){e.push(new TimeSpan$1(s,this.end));break}const d=s.nextSam();e.push(new TimeSpan$1(s,d)),s=d}return e}get duration(){return this.end.sub(this.begin)}cycleArc(){const e=this.begin.cyclePos(),s=e.add(this.duration);return new TimeSpan$1(e,s)}withTime(e){return new TimeSpan$1(e(this.begin),e(this.end))}withEnd(e){return new TimeSpan$1(this.begin,e(this.end))}withCycle(e){const s=this.begin.sam(),a=s.add(e(this.begin.sub(s))),c=s.add(e(this.end.sub(s)));return new TimeSpan$1(a,c)}intersection(e){const s=this.begin.max(e.begin),a=this.end.min(e.end);if(!s.gt(a)&&!(s.equals(a)&&(s.equals(this.end)&&this.begin.lt(this.end)||s.equals(e.end)&&e.begin.lt(e.end))))return new TimeSpan$1(s,a)}intersection_e(e){const s=this.intersection(e);if(s==null)throw"TimeSpans do not intersect";return s}midpoint(){return this.begin.add(this.duration.div(fraction(2)))}equals(e){return this.begin.equals(e.begin)&&this.end.equals(e.end)}show(){return this.begin.show()+" -> "+this.end.show()}}class Hap{constructor(e,s,a,c={},d=!1){this.whole=e,this.part=s,this.value=a,this.context=c,this.stateful=d,d&&console.assert(typeof this.value=="function","Stateful values must be functions")}get duration(){return this.whole.end.sub(this.whole.begin)}wholeOrPart(){return this.whole?this.whole:this.part}withSpan(e){const s=this.whole?e(this.whole):void 0;return new Hap(s,e(this.part),this.value,this.context)}withValue(e){return new Hap(this.whole,this.part,e(this.value),this.context)}hasOnset(){return this.whole!=null&&this.whole.begin.equals(this.part.begin)}resolveState(e){if(this.stateful&&this.hasOnset()){console.log("stateful");const s=this.value,[a,c]=s(e);return[a,new Hap(this.whole,this.part,c,this.context,!1)]}return[e,this]}spanEquals(e){return this.whole==null&&e.whole==null||this.whole.equals(e.whole)}equals(e){return this.spanEquals(e)&&this.part.equals(e.part)&&this.value===e.value}show(){return"("+(this.whole==null?"~":this.whole.show())+", "+this.part.show()+", "+this.value+")"}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}combineContext(e){const s=this;return kt(Dt(Dt({},s.context),e.context),{locations:(s.context.locations||[]).concat(e.context.locations||[])})}setContext(e){return new Hap(this.whole,this.part,this.value,e)}}class State$1{constructor(e,s={}){this.span=e,this.controls=s}setSpan(e){return new State$1(e,this.controls)}withSpan(e){return this.setSpan(e(this.span))}setControls(e){return new State$1(this.span,e)}}const isNote$3=o=>/^[a-gA-G][#b]*[0-9]$/.test(o),tokenizeNote=o=>{var c;if(typeof o!="string")return[];const[e,s="",a]=((c=o.match(/^([a-gA-G])([#b]*)([0-9])?$/))==null?void 0:c.slice(1))||[];return e?[e,s,a?Number(a):void 0]:[]},toMidi=o=>{const[e,s,a]=tokenizeNote(o);if(!e)throw new Error('not a note: "'+o+'"');const c={c:0,d:2,e:4,f:5,g:7,a:9,b:11}[e.toLowerCase()],d=(s==null?void 0:s.split("").reduce((_,b)=>_+{"#":1,b:-1}[b],0))||0;return(Number(a)+1)*12+c+d},fromMidi=o=>Math.pow(2,(o-69)/12)*440,mod=(o,e)=>(o%e+e)%e,getPlayableNoteValue=o=>{let{value:e,context:s}=o;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="string"&&!isNote$3(e))throw new Error("not a note: "+e);return e},getFrequency=o=>{let{value:e,context:s}=o;if(typeof e=="object"&&e.freq)return e.freq;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="string"&&isNote$3(e))e=fromMidi(toMidi(o.value));else if(typeof e!="number")throw new Error("not a note or frequency:"+e);return e},rotate=(o,e)=>o.slice(e).concat(o.slice(0,e)),pipe=(...o)=>o.reduce((e,s)=>(...a)=>e(s(...a)),e=>e),compose=(...o)=>pipe(...o.reverse()),removeUndefineds=o=>o.filter(e=>e!=null),flatten$1=o=>[].concat(...o),id$1=o=>o,constant=(o,e)=>o,listRange=(o,e)=>Array.from({length:e-o+1},(s,a)=>a+o);function curry(o,e){const s=function a(...c){if(c.length>=o.length)return o.apply(this,c);{const d=function(..._){return a.apply(this,c.concat(_))};return e&&e(d,c),d}};return e&&e(s,[]),s}function unionWithObj(o,e,s){const a=Object.keys(o).filter(c=>Object.keys(e).includes(c));return Object.assign({},o,e,Object.fromEntries(a.map(c=>[c,s(o[c],e[c])])))}curry((o,e)=>o*e);curry((o,e)=>e.map(o));function drawLine(o,e=60){let s=0,a=fraction(0),c=[""],d="";for(;c[0].lengthj.hasOnset()).map(j=>j.duration),k=gcd(...b),$=k.inverse();c=c.map(j=>j+"|"),d+="|";for(let j=0;j<$;j++){const[_e,et]=[a,a.add(k)],tt=_.filter(st=>st.whole.begin.lte(_e)&&st.whole.end.gte(et)),nt=tt.length-c.length;nt>0&&(c=c.concat(Array(nt).fill(d))),c=c.map((st,rt)=>{const it=tt[rt];if(it){const ot=it.whole.begin.eq(_e)?""+it.value:"-";return st+ot}return st+"."}),d+=".",a=a.add(k)}s++}return c.join(` +`)}class Pattern$4{constructor(e){this.query=e}queryArc(e,s){return this.query(new State$1(new TimeSpan$1(e,s)))}_splitQueries(){const e=this,s=a=>flatten$1(a.span.spanCycles.map(c=>e.query(a.setSpan(c))));return new Pattern$4(s)}withQuerySpan(e){return new Pattern$4(s=>this.query(s.withSpan(e)))}withQueryTime(e){return new Pattern$4(s=>this.query(s.withSpan(a=>a.withTime(e))))}withHapSpan(e){return new Pattern$4(s=>this.query(s).map(a=>a.withSpan(e)))}withHapTime(e){return this.withHapSpan(s=>s.withTime(e))}_withHaps(e){return new Pattern$4(s=>e(this.query(s)))}_withHap(e){return this._withHaps(s=>s.map(e))}_setContext(e){return this._withHap(s=>s.setContext(e))}_withContext(e){return this._withHap(s=>s.setContext(e(s.context)))}_stripContext(){return this._withHap(e=>e.setContext({}))}withLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{const d=(c.locations||[]).concat([a]);return kt(Dt({},c),{locations:d})})}withMiniLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{let d=c.locations||[];return d=d.map(({start:_,end:b})=>{const k=_.line===1?a.start.column:0;return{start:kt(Dt({},_),{line:_.line-1+(a.start.line-1)+1,column:_.column-1+k}),end:kt(Dt({},b),{line:b.line-1+(a.start.line-1)+1,column:b.column-1+k})}}),kt(Dt({},c),{locations:d})})}withValue(e){return new Pattern$4(s=>this.query(s).map(a=>a.withValue(e)))}fmap(e){return this.withValue(e)}_filterHaps(e){return new Pattern$4(s=>this.query(s).filter(e))}_filterValues(e){return new Pattern$4(s=>this.query(s).filter(a=>e(a.value)))}_removeUndefineds(){return this._filterValues(e=>e!=null)}onsetsOnly(){return this._filterHaps(e=>e.hasOnset())}discreteOnly(){return this._filterHaps(e=>e.whole)}_appWhole(e,s){const a=this,c=function(d){const _=a.query(d),b=s.query(d),k=function($,j){const _e=$.part.intersection(j.part);if(_e!=null)return new Hap(e($.whole,j.whole),_e,$.value(j.value),j.combineContext($))};return flatten$1(_.map($=>removeUndefineds(b.map(j=>k($,j)))))};return new Pattern$4(c)}appBoth(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._appWhole(s,e)}appLeft(e){const s=this,a=function(c){const d=[];for(const _ of s.query(c)){const b=e.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=_.part.intersection(k.part);if(j){const _e=_.value(k.value),et=k.combineContext(_),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(a)}appRight(e){const s=this,a=function(c){const d=[];for(const _ of e.query(c)){const b=s.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=k.part.intersection(_.part);if(j){const _e=k.value(_.value),et=_.combineContext(k),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(a)}firstCycle(e=!1){var s=this;return e||(s=s._stripContext()),s.query(new State$1(new TimeSpan$1(fraction(0),fraction(1))))}get _firstCycleValues(){return this.firstCycle().map(e=>e.value)}get _showFirstCycle(){return this.firstCycle().map(e=>`${e.value}: ${e.whole.begin.toFraction()} - ${e.whole.end.toFraction()}`)}_sortHapsByPart(){return this._withHaps(e=>e.sort((s,a)=>s.part.begin.sub(a.part.begin).or(s.part.end.sub(a.part.end)).or(s.whole.begin.sub(a.whole.begin).or(s.whole.end.sub(a.whole.end)))))}_opIn(e,s){return this.fmap(s).appLeft(reify$1(e))}_opOut(e,s){return this.fmap(s).appRight(reify$1(e))}_opMix(e,s){return this.fmap(s).appBoth(reify$1(e))}_opSqueeze(e,s){const a=reify$1(e);return this.fmap(c=>a.fmap(d=>s(c)(d)))._squeezeJoin()}_opSqueezeOut(e,s){const a=this;return reify$1(e).fmap(d=>a.fmap(_=>s(_)(d)))._squeezeJoin()}_opTrig(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._trigJoin()}_opTrigzero(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._TrigzeroJoin()}_asNumber(e=!1,s=!1){return this._withHap(a=>{const c=Number(a.value);if(!isNaN(c))return a.withValue(()=>c);const d={e:Math.E,pi:Math.PI}[a.value];if(typeof d!="undefined")return a.withValue(()=>d);if(isNote$3(a.value))return new Hap(a.whole,a.part,toMidi(a.value),kt(Dt({},a.context),{type:"midi"}));if(!e){if(s)return a;throw new Error('cannot parse as number: "'+a.value+'"')}})}round(){return this._asNumber().fmap(e=>Math.round(e))}floor(){return this._asNumber().fmap(e=>Math.floor(e))}ceil(){return this._asNumber().fmap(e=>Math.ceil(e))}_toBipolar(){return this.fmap(e=>e*2-1)}_fromBipolar(){return this.fmap(e=>(e+1)/2)}range(e,s){return this.mul(s-e).add(e)}rangex(e,s){return this.range(Math.log(e),Math.log(s)).fmap(Math.exp)}range2(e,s){return this._fromBipolar().range(e,s)}_bindWhole(e,s){const a=this,c=function(d){const _=function(k,$){return new Hap(e(k.whole,$.whole),$.part,$.value,Object.assign({},k.context,$.context,{locations:(k.context.locations||[]).concat($.context.locations||[])}))},b=function(k){return s(k.value).query(d.setSpan(k.part)).map($=>_(k,$))};return flatten$1(a.query(d).map(k=>b(k)))};return new Pattern$4(c)}bind(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._bindWhole(s,e)}join(){return this.bind(id$1)}outerBind(e){return this._bindWhole((s,a)=>s,e)}outerJoin(){return this.outerBind(id$1)}innerBind(e){return this._bindWhole((s,a)=>a,e)}innerJoin(){return this.innerBind(id$1)}_trigJoin(e=!1){const s=this;return new Pattern$4(a=>s.discreteOnly().query(a).map(c=>c.value.late(e?c.whole.begin:c.whole.begin.cyclePos()).query(a).map(d=>new Hap(d.whole?d.whole.intersection(c.whole):void 0,d.part.intersection(c.part),d.value).setContext(c.combineContext(d))).filter(d=>d.part)).flat())}_TrigzeroJoin(){return this._trigJoin(!0)}_squeezeJoin(){const e=this;function s(a){const c=e.discreteOnly().query(a);function d(b){const $=b.value._compressSpan(b.wholeOrPart().cycleArc()).query(a.setSpan(b.part));function j(_e,et){let tt;if(et.whole&&_e.whole&&(tt=et.whole.intersection(_e.whole),!tt))return;const nt=et.part.intersection(_e.part);if(!nt)return;const st=et.combineContext(_e);return new Hap(tt,nt,et.value,st)}return $.map(_e=>j(b,_e))}return flatten$1(c.map(d)).filter(b=>b)}return new Pattern$4(s)}_squeezeBind(e){return this.fmap(e)._squeezeJoin()}_apply(e){return e(this)}layer(...e){return stack(...e.map(s=>s(this)))}_patternify(e){const s=this;return function(...c){return c=c.map(_=>isPattern$1(_)?_.fmap(b=>b.value||b):_),sequence(...c).fmap(_=>e.call(s,_)).innerJoin()}}_fastGap(e){const s=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).mul(e).min(1)),b=d.add(c.end.sub(d).mul(e).min(1));return new TimeSpan$1(_,b)},a=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).div(e).min(1)),b=d.add(c.end.sub(d).div(e).min(1));return new TimeSpan$1(_,b)};return this.withQuerySpan(s).withHapSpan(a)._splitQueries()}_compress(e,s){return e.gt(s)||e.gt(1)||s.gt(1)||e.lt(0)||s.lt(0)?silence:this._fastGap(fraction(1).div(s.sub(e)))._late(e)}_compressSpan(e){return this._compress(e.begin,e.end)}_fast(e){return this.withQueryTime(a=>a.mul(e)).withHapTime(a=>a.div(e))}_slow(e){return this._fast(fraction(1).div(e))}_inside(e,s){return s(this._slow(e))._fast(e)}_outside(e,s){return s(this._fast(e))._slow(e)}_ply(e){return this.fmap(s=>pure(s)._fast(e))._squeezeJoin()}_chop(e){const a=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=function(d){return sequence(a.map(_=>Object.assign({},d,_)))};return this._squeezeBind(c)}_striate(e){const a=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=slowcat(...a);return this.set(c)._fast(e)}_cpm(e){return this._fast(e/60)}_early(e){return e=fraction(e),this.withQueryTime(s=>s.add(e)).withHapTime(s=>s.sub(e))}_late(e){return e=fraction(e),this._early(fraction(0).sub(e))}_zoom(e,s){s=fraction(s),e=fraction(e);const a=s.sub(e);return this.withQuerySpan(c=>c.withCycle(d=>d.mul(a).add(e))).withHapSpan(c=>c.withCycle(d=>d.sub(e).div(a)))._splitQueries()}_zoomArc(e){return this.zoom(e.begin,e.end)}_linger(e){return e==0?silence:e<0?this._zoom(e.add(1),1)._slow(e):this._zoom(0,e)._slow(e)}_color(e){return this._withContext(s=>kt(Dt({},s),{color:e}))}log(){return this._withHap(e=>{var s;return e.setContext(kt(Dt({},e.context),{logs:(((s=e.context)==null?void 0:s.logs)||[]).concat([e.show()])}))})}drawLine(){return console.log(drawLine(this)),this}_segment(e){return this.struct(pure(!0)._fast(e))}invert(){return this.fmap(e=>!e)}inv(){return this.invert()}when(e,s){const a=e._filterValues(id$1),c=e._filterValues(b=>!b),d=a.fmap(b=>k=>k).appRight(s(this)),_=c.fmap(b=>k=>k).appRight(this);return stack(d,_)}off(e,s){return stack(this,s(this.late(e)))}every(e,s){const a=this,c=Array(e-1).fill(a);return c.unshift(s(a)),slowcatPrime(...c)}brak(){return this.when(slowcat(!1,!0),e=>fastcat(e,silence)._late(.25))}rev(){const e=this,s=function(a){const c=a.span,d=c.begin.sam(),_=c.begin.nextSam(),b=function($){const j=$.withTime(et=>d.add(_.sub(et))),_e=j.begin;return j.begin=j.end,j.end=_e,j};return e.query(a.setSpan(b(c))).map($=>$.withSpan(b))};return new Pattern$4(s)._splitQueries()}palindrome(){return this.every(2,rev)}juxBy(e,s){e/=2;const a=function(_,b,k){return b in _?_[b]:k},c=this.withValue(_=>Object.assign({},_,{pan:a(_,"pan",.5)-e})),d=this.withValue(_=>Object.assign({},_,{pan:a(_,"pan",.5)+e}));return stack(c,s(d))}_jux(e){return this.juxBy(1,e)}stack(...e){return stack(this,...e)}sequence(...e){return sequence(this,...e)}seq(...e){return sequence(this,...e)}cat(...e){return cat(this,...e)}fastcat(...e){return fastcat(this,...e)}slowcat(...e){return slowcat(this,...e)}superimpose(...e){return this.stack(...e.map(s=>s(this)))}stutWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}stut(e,s,a){return this.stutWith(e,a,(c,d)=>c.velocity(Math.pow(s,d)))}_echoWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}_echo(e,s,a){return this._echoWith(e,s,(c,d)=>c.velocity(Math.pow(a,d)))}iter(e,s=!1){return slowcat(...listRange(0,e-1).map(a=>s?this.late(a/e):this.early(a/e)))}iterBack(e){return this.iter(e,!0)}_chunk(e,s,a=!1){const c=Array(e-1).fill(!1);c.unshift(!0);const d=sequence(...c).iter(e,a);return this.when(d,s)}_chunkBack(e,s){return this._chunk(e,s,!0)}edit(...e){return stack(...e.map(s=>s(this)))}pipe(e){return e(this)}_bypass(e){return e=Boolean(parseInt(e)),e?silence:this}hush(){return silence}_duration(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(e)))}_legato(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(s.end.sub(s.begin).mul(e))))}_velocity(e){return this._withContext(s=>kt(Dt({},s),{velocity:(s.velocity||1)*e}))}_loopAt(e,s=1){return this.speed(1/e*s).unit("c").slow(e)}onTrigger(e){return this._withHap(s=>s.setContext(kt(Dt({},s.context),{onTrigger:e})))}}function _composeOp(o,e,s){function a(c){return c instanceof Object&&!(c instanceof Function)}return a(o)||a(e)?(a(o)||(o={value:o}),a(e)||(e={value:e}),unionWithObj(o,e,s)):s(o,e)}(function(){const o=a=>a._asNumber(),s={set:[(a,c)=>c],keep:[(a,c)=>a],keepif:[(a,c)=>c?a:void 0],add:[(a,c)=>a+c,a=>a._asNumber(!1,!0)],sub:[(a,c)=>a-c,o],mul:[(a,c)=>a*c,o],div:[(a,c)=>a/c,o],mod:[mod,o],pow:[Math.pow,o],_and:[(a,c)=>a&c,o],_or:[(a,c)=>a|c,o],_xor:[(a,c)=>a^c,o],_lshift:[(a,c)=>a<a>>c,o],lt:[(a,c)=>aa>c],lte:[(a,c)=>a<=c],gte:[(a,c)=>a>=c],eq:[(a,c)=>a==c],eqt:[(a,c)=>a===c],ne:[(a,c)=>a!=c],net:[(a,c)=>a!==c],and:[(a,c)=>a&&c],or:[(a,c)=>a||c],func:[(a,c)=>c(a)]};for(const[a,[c,d]]of Object.entries(s))for(const _ of["In","Out","Mix","Squeeze","SqueezeOut","Trig","Trigzero"])Pattern$4.prototype[a+_]=function(...b){var k=this;b=sequence(b),d&&(k=d(k),b=d(b));var $=k["_op"+_](b,j=>_e=>_composeOp(j,_e,c));return a==="keepif"&&($=$._removeUndefineds()),$},_==="Squeeze"&&(Pattern$4.prototype[a+"SqueezeIn"]=Pattern$4.prototype[a+_]),_==="In"?Pattern$4.prototype[a]=Pattern$4.prototype[a+_]:a==="set"&&(Pattern$4.prototype[_.toLowerCase()]=Pattern$4.prototype[a+_]);Pattern$4.prototype.struct=Pattern$4.prototype.keepifOut,Pattern$4.prototype.structAll=Pattern$4.prototype.keepOut,Pattern$4.prototype.mask=Pattern$4.prototype.keepifIn,Pattern$4.prototype.maskAll=Pattern$4.prototype.keepIn,Pattern$4.prototype.reset=Pattern$4.prototype.keepifTrig,Pattern$4.prototype.resetAll=Pattern$4.prototype.keepTrig,Pattern$4.prototype.restart=Pattern$4.prototype.keepifTrigzero,Pattern$4.prototype.restartAll=Pattern$4.prototype.keepTrigzero})();Pattern$4.prototype.patternified=["apply","chop","color","cpm","duration","early","fast","jux","late","legato","linger","ply","segment","striate","slow","velocity"];Pattern$4.prototype.factories={pure,stack,slowcat,fastcat,cat,timeCat:timeCat$1,sequence,seq:seq$2,polymeter,pm,polyrhythm,pr};const silence=new Pattern$4(o=>[]);function pure(o){function e(s){return s.span.spanCycles.map(a=>new Hap(fraction(a.begin).wholeCycle(),a,o))}return new Pattern$4(e)}function isPattern$1(o){return o instanceof Pattern$4}function reify$1(o){return isPattern$1(o)?o:pure(o)}function stack(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=s=>flatten$1(o.map(a=>a.query(s)));return new Pattern$4(e)}function slowcat(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=function(s){const a=s.span,c=mod(a.begin.sam(),o.length),d=o[c];if(!d)return[];const _=a.begin.floor().sub(a.begin.div(o.length).floor());return d.withHapTime(b=>b.add(_)).query(s.setSpan(a.withTime(b=>b.sub(_))))};return new Pattern$4(e)._splitQueries()}function slowcatPrime(...o){o=o.map(reify$1);const e=function(s){const a=Math.floor(s.span.begin)%o.length;return o[a].query(s)};return new Pattern$4(e)._splitQueries()}function fastcat(...o){return slowcat(...o)._fast(o.length)}function cat(...o){return slowcat(...o)}function timeCat$1(...o){const e=o.map(c=>c[0]).reduce((c,d)=>c.add(d),fraction(0));let s=fraction(0);const a=[];for(const[c,d]of o){const _=s.add(c);a.push(reify$1(d)._compress(s.div(e),_.div(e))),s=_}return stack(...a)}function sequence(...o){return fastcat(...o)}function seq$2(...o){return fastcat(...o)}function _sequenceCount(o){return Array.isArray(o)?o.length==0?[silence,0]:o.length==1?_sequenceCount(o[0]):[fastcat(...o.map(e=>_sequenceCount(e)[0])),o.length]:[reify$1(o),1]}function polymeterSteps(o,...e){const s=e.map(c=>_sequenceCount(c));if(s.length==0)return silence;o==0&&(o=s[0][1]);const a=[];for(const c of s)c[1]==0&&next,o==c[1]?a.push(c[0]):a.push(c[0]._fast(fraction(o).div(fraction(c[1]))));return stack(...a)}function polymeter(...o){return polymeterSteps(0,...o)}function pm(...o){polymeter(...o)}function polyrhythm(...o){const e=o.map(s=>sequence(s));return e.length==0?silence:stack(...e)}function pr(o){polyrhythm(o)}const add$1=curry((o,e)=>e.add(o)),chunk=curry((o,e)=>e.chunk(o)),chunkBack=curry((o,e)=>e.chunkBack(o)),div=curry((o,e)=>e.div(o)),early=curry((o,e)=>e.early(o)),echo=curry((o,e,s,a)=>a.echo(o,e,s)),every=curry((o,e,s)=>s.every(o,e)),fast=curry((o,e)=>e.fast(o)),inv=o=>o.inv(),invert=o=>o.invert(),iter=curry((o,e)=>e.iter(o)),iterBack=curry((o,e)=>e.iter(o)),jux=curry((o,e)=>e.jux(o)),juxBy=curry((o,e,s)=>s.juxBy(o,e)),late=curry((o,e)=>e.late(o)),linger=curry((o,e)=>e.linger(o)),mask=curry((o,e)=>e.mask(o)),mul=curry((o,e)=>e.mul(o)),off=curry((o,e,s)=>s.off(o,e)),ply=curry((o,e)=>e.ply(o)),range$1=curry((o,e,s)=>s.range(o,e)),range2=curry((o,e,s)=>s.range2(o,e)),rev=o=>o.rev(),slow=curry((o,e)=>e.slow(o)),struct$1=curry((o,e)=>e.struct(o)),sub=curry((o,e)=>e.sub(o)),superimpose=curry((o,e)=>e.superimpose(...o)),set=curry((o,e)=>e.set(o)),when=curry((o,e,s)=>s.when(o,e));Pattern$4.prototype.composable={fast,slow,early,late,superimpose};function makeComposable(o){return Object.entries(Pattern$4.prototype.composable).forEach(([e,s])=>{o[e]=(...a)=>{const c=compose(o,s(...a));return makeComposable(c)}}),o}const patternify2=o=>(e,s,a)=>e.fmap(c=>d=>o.call(a,c,d)).appLeft(s).innerJoin(),patternify3=o=>(e,s,a,c)=>e.fmap(d=>_=>b=>o.call(c,d,_,b)).appLeft(s).appLeft(a).innerJoin(),patternify4=o=>(e,s,a,c,d)=>e.fmap(_=>b=>k=>$=>o.call(d,_,b,k,$)).appLeft(s).appLeft(a).appLeft(c).innerJoin();Pattern$4.prototype.echo=function(...o){return o=o.map(reify$1),patternify3(Pattern$4.prototype._echo)(...o,this)};Pattern$4.prototype.echoWith=function(...o){return o=o.map(reify$1),patternify3(Pattern$4.prototype._echoWith)(...o,this)};Pattern$4.prototype.chunk=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._chunk)(...o,this)};Pattern$4.prototype.chunkBack=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._chunkBack)(...o,this)};Pattern$4.prototype.loopAt=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._loopAt)(...o,this)};Pattern$4.prototype.zoom=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._zoom)(...o,this)};Pattern$4.prototype.compress=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._compress)(...o,this)};Pattern$4.prototype.outside=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._outside)(...o,this)};Pattern$4.prototype.inside=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._inside)(...o,this)};Pattern$4.prototype.bootstrap=function(){const o=Object.fromEntries(Object.entries(Pattern$4.prototype.composable).map(([e,s])=>(Pattern$4.prototype[e]&&(Pattern$4.prototype[e]=makeComposable(Pattern$4.prototype[e])),[e,curry(s,makeComposable)])));return this.patternified.forEach(e=>{Pattern$4.prototype[e]=function(...s){return this._patternify(Pattern$4.prototype["_"+e])(...s)}}),o};Pattern$4.prototype.define=(o,e,s={})=>{s.composable&&(Pattern$4.prototype.composable[o]=e),s.patternified&&(Pattern$4.prototype.patternified=Pattern$4.prototype.patternified.concat([o])),Pattern$4.prototype.bootstrap()};Pattern$4.prototype.define("hush",o=>o.hush(),{patternified:!1,composable:!0});Pattern$4.prototype.define("bypass",o=>o.bypass(on),{patternified:!0,composable:!0});const controls={},generic_params=[["s","s","sound"],["f","n","The note or sample number to choose for a synth or sampleset"],["f","note","The note or pitch to play a sound or synth with"],["f","accelerate","a pattern of numbers that speed up (or slow down) samples while they play."],["f","gain","a pattern of numbers that specify volume. Values less than 1 make the sound quieter. Values greater than 1 make the sound louder. For the linear equivalent, see @amp@."],["f","amp","like @gain@, but linear."],["f","attack","a pattern of numbers to specify the attack time (in seconds) of an envelope applied to each sample."],["f","decay",""],["f","sustain",""],["f","release","a pattern of numbers to specify the release time (in seconds) of an envelope applied to each sample."],["f","hold","a pattern of numbers to specify the hold time (in seconds) of an envelope applied to each sample. Only takes effect if `attack` and `release` are also specified."],["f","bandf","A pattern of numbers from 0 to 1. Sets the center frequency of the band-pass filter."],["f","bandq","a pattern of anumbers from 0 to 1. Sets the q-factor of the band-pass filter."],["f","begin","a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. `0.25` to cut off the first quarter from each sample."],["f","end","the same as `begin`, but cuts the end off samples, shortening them; e.g. `0.75` to cut off the last quarter of each sample."],["f","loop","loops the sample (from `begin` to `end`) the specified number of times."],["f","legato","controls the amount of overlap between two adjacent sounds"],["f","crush","bit crushing, a pattern of numbers from 1 (for drastic reduction in bit-depth) to 16 (for barely no reduction)."],["f","coarse","fake-resampling, a pattern of numbers for lowering the sample rate, i.e. 1 for original 2 for half, 3 for a third and so on."],["i","channel","choose the channel the pattern is sent to in superdirt"],["i","cut","In the style of classic drum-machines, `cut` will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open."],["f","cutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the low-pass filter."],["f","hcutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the high-pass filter. Also has alias @hpf@"],["f","hresonance","a pattern of numbers from 0 to 1. Applies the resonance of the high-pass filter. Has alias @hpq@"],["f","resonance","a pattern of numbers from 0 to 1. Specifies the resonance of the low-pass filter."],["f","djf","DJ filter, below 0.5 is low pass filter, above is high pass filter."],["f","delay","a pattern of numbers from 0 to 1. Sets the level of the delay signal."],["f","delayfeedback","a pattern of numbers from 0 to 1. Sets the amount of delay feedback."],["f","delaytime","a pattern of numbers from 0 to 1. Sets the length of the delay."],["f","lock","A pattern of numbers. Specifies whether delaytime is calculated relative to cps. When set to 1, delaytime is a direct multiple of a cycle."],["f","detune",""],["f","dry","when set to `1` will disable all reverb for this pattern. See `room` and `size` for more information about reverb."],["f","fadeTime","Used when using begin/end or chop/striate and friends, to change the fade out time of the 'grain' envelope."],["f","fadeInTime","As with fadeTime, but controls the fade in time of the grain envelope. Not used if the grain begins at position 0 in the sample."],["f","freq",""],["f","gate",""],["f","leslie",""],["f","lrate",""],["f","lsize",""],["f","degree",""],["f","mtranspose",""],["f","ctranspose",""],["f","harmonic",""],["f","stepsPerOctave",""],["f","octaveR",""],["f","nudge","Nudges events into the future by the specified number of seconds. Negative numbers work up to a point as well (due to internal latency)"],["i","octave",""],["f","offset",""],["i","orbit","a pattern of numbers. An `orbit` is a global parameter context for patterns. Patterns with the same orbit will share hardware output bus offset and global effects, e.g. reverb and delay. The maximum number of orbits is specified in the superdirt startup, numbers higher than maximum will wrap around."],["f","overgain",""],["f","overshape",""],["f","pan","a pattern of numbers between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel)"],["f","panspan","a pattern of numbers between -inf and inf, which controls how much multichannel output is fanned out (negative is backwards ordering)"],["f","pansplay","a pattern of numbers between 0.0 and 1.0, which controls the multichannel spread range (multichannel only)"],["f","panwidth","a pattern of numbers between 0.0 and inf, which controls how much each channel is distributed over neighbours (multichannel only)"],["f","panorient","a pattern of numbers between -1.0 and 1.0, which controls the relative position of the centre pan in a pair of adjacent speakers (multichannel only)"],["f","rate","used in SuperDirt softsynths as a control rate or 'speed'"],["f","slide",""],["f","semitone",""],["f","velocity",""],["f","voice",""],["f","room","a pattern of numbers from 0 to 1. Sets the level of reverb."],["f","size","a pattern of numbers from 0 to 1. Sets the perceptual size (reverb time) of the `room` to be used in reverb."],["f","shape","wave shaping distortion, a pattern of numbers from 0 for no distortion up to 1 for loads of distortion."],["f","speed","a pattern of numbers which changes the speed of sample playback, i.e. a cheap way of changing pitch. Negative values will play the sample backwards!"],["s","unit",'used in conjunction with `speed`, accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using `unit "c"` means `speed` will be interpreted in units of cycles, e.g. `speed "1"` means samples will be stretched to fill a cycle. Using `unit "s"` means the playback speed will be adjusted so that the duration is the number of seconds specified by `speed`.'],["f","squiz",""],["f","stutterdepth",""],["f","stuttertime",""],["f","timescale",""],["f","timescalewin",""],["s","vowel","formant filter to make things sound like vowels, a pattern of either `a`, `e`, `i`, `o` or `u`. Use a rest (`~`) for no effect."],["f","waveloss",""],["f","dur",""],["f","expression",""],["f","sustainpedal",""],["f","tremolodepth","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","tremolorate","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","phaserdepth","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","phaserrate","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","fshift","frequency shifter"],["f","fshiftnote","frequency shifter"],["f","fshiftphase","frequency shifter"],["f","triode","tube distortion"],["f","krush","shape/bass enhancer"],["f","kcutoff",""],["f","octer","octaver effect"],["f","octersub","octaver effect"],["f","octersubsub","octaver effect"],["f","ring","ring modulation"],["f","ringf","ring modulation"],["f","ringdf","ring modulation"],["f","distort","noisy fuzzy distortion"],["f","freeze","Spectral freeze"],["f","xsdelay",""],["f","tsdelay",""],["f","real","Spectral conform"],["f","imag",""],["f","enhance","Spectral enhance"],["f","partials",""],["f","comb","Spectral comb"],["f","smear","Spectral smear"],["f","scram","Spectral scramble"],["f","binshift","Spectral binshift"],["f","hbrick","High pass sort of spectral filter"],["f","lbrick","Low pass sort of spectral filter"],["f","midichan",""],["f","control",""],["f","ccn",""],["f","ccv",""],["f","polyTouch",""],["f","midibend",""],["f","miditouch",""],["f","ctlNum",""],["f","frameRate",""],["f","frames",""],["f","hours",""],["s","midicmd",""],["f","minutes",""],["f","progNum",""],["f","seconds",""],["f","songPtr",""],["f","uid",""],["f","val",""],["f","cps",""]],_name=(o,...e)=>sequence(...e).withValue(s=>({[o]:s})),_setter=o=>function(...e){return this.set(o(...e))};generic_params.forEach(([o,e,s])=>{controls[e]=(...a)=>_name(e,...a),Pattern$4.prototype[e]=_setter(controls[e])});controls.createParam=o=>(Pattern$4.prototype[o]=_setter(controls[o]),(...e)=>_name(o,...e));controls.createParams=(...o)=>o.reduce((e,s)=>Object.assign(e,{[s]:createParam(s)}),{});var dist$7={},tokenizer={},utils$1={},unicode$2={};Object.defineProperty(unicode$2,"__esModule",{value:!0});unicode$2.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$2.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$2.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$2.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$2.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$2.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(utils$1,"__esModule",{value:!0});utils$1.isStrictModeReservedWord=isStrictModeReservedWord;utils$1.isWhiteSpace=isWhiteSpace;utils$1.isLineTerminator=isLineTerminator;utils$1.isIdentifierStart=isIdentifierStart$1;utils$1.isIdentifierPart=isIdentifierPart$1;utils$1.isDecimalDigit=isDecimalDigit;utils$1.getHexValue=getHexValue;var _unicode$2=unicode$2,strictReservedWords=["null","true","false","implements","interface","package","private","protected","public","static","let","if","in","do","var","for","new","try","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];function isStrictModeReservedWord(o){return strictReservedWords.indexOf(o)!==-1}function isWhiteSpace(o){return o<128?_unicode$2.whitespaceBool[o]:o===160||o>5759&&_unicode$2.whitespaceArray.indexOf(o)!==-1}function isLineTerminator(o){return o===10||o===13||o===8232||o===8233}function isIdentifierStart$1(o){return o<128?_unicode$2.idStartBool[o]:_unicode$2.idStartLargeRegex.test(String.fromCodePoint(o))}function isIdentifierPart$1(o){return o<128?_unicode$2.idContinueBool[o]:_unicode$2.idContinueLargeRegex.test(String.fromCodePoint(o))}function isDecimalDigit(o){return o>=48&&o<=57}function getHexValue(o){return o>="0"&&o<="9"?o.charCodeAt(0)-48:o>="a"&&o<="f"?o.charCodeAt(0)-87:o>="A"&&o<="F"?o.charCodeAt(0)-55:-1}var errors={};Object.defineProperty(errors,"__esModule",{value:!0});errors.ErrorMessages={UNEXPECTED_TOKEN:function(e){return"Unexpected token "+JSON.stringify(e)},UNEXPECTED_ILLEGAL_TOKEN:function(e){return"Unexpected "+JSON.stringify(e)},UNEXPECTED_ESCAPED_KEYWORD:"Unexpected escaped keyword",UNEXPECTED_NUMBER:"Unexpected number",UNEXPECTED_STRING:"Unexpected string",UNEXPECTED_IDENTIFIER:"Unexpected identifier",UNEXPECTED_RESERVED_WORD:"Unexpected reserved word",UNEXPECTED_TEMPLATE:"Unexpected template",UNEXPECTED_EOS:"Unexpected end of input",UNEXPECTED_LINE_TERMINATOR:"Unexpected line terminator",UNEXPECTED_COMMA_AFTER_REST:"Unexpected comma after rest",UNEXPECTED_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",NEWLINE_AFTER_THROW:"Illegal newline after throw",UNTERMINATED_REGEXP:"Invalid regular expression: missing /",INVALID_LAST_REST_PARAMETER:"Rest parameter must be last formal parameter",INVALID_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",INVALID_REGEXP_FLAGS:"Invalid regular expression flags",INVALID_REGEX:"Invalid regular expression",INVALID_LHS_IN_ASSIGNMENT:"Invalid left-hand side in assignment",INVALID_LHS_IN_BINDING:"Invalid left-hand side in binding",INVALID_LHS_IN_FOR_IN:"Invalid left-hand side in for-in",INVALID_LHS_IN_FOR_OF:"Invalid left-hand side in for-of",INVALID_LHS_IN_FOR_AWAIT:"Invalid left-hand side in for-await",INVALID_UPDATE_OPERAND:"Increment/decrement target must be an identifier or member expression",INVALID_EXPONENTIATION_LHS:"Unary expressions as the left operand of an exponentation expression must be disambiguated with parentheses",MULTIPLE_DEFAULTS_IN_SWITCH:"More than one default clause in switch statement",NO_CATCH_OR_FINALLY:"Missing catch or finally after try",ILLEGAL_RETURN:"Illegal return statement",ILLEGAL_ARROW_FUNCTION_PARAMS:"Illegal arrow function parameter list",INVALID_ASYNC_PARAMS:"Async function parameters must not contain await expressions",INVALID_VAR_INIT_FOR_IN:"Invalid variable declaration in for-in statement",INVALID_VAR_INIT_FOR_OF:"Invalid variable declaration in for-of statement",INVALID_VAR_INIT_FOR_AWAIT:"Invalid variable declaration in for-await statement",UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT:"Binding pattern appears without initializer in for statement init",ILLEGAL_PROPERTY:"Illegal property initializer",INVALID_ID_BINDING_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in binding position in strict mode"},INVALID_ID_IN_LABEL_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in label position in strict mode"},INVALID_ID_IN_EXPRESSION_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in expression position in strict mode"},INVALID_CALL_TO_SUPER:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',INVALID_DELETE_STRICT_MODE:"Identifier expressions must not be deleted in strict mode",DUPLICATE_BINDING:function(e){return"Duplicate binding "+JSON.stringify(e)},ILLEGAL_ID_IN_LEXICAL_DECLARATION:function(e){return"Lexical declarations must not have a binding named "+JSON.stringify(e)},UNITIALIZED_CONST:"Constant lexical declarations must have an initialiser",ILLEGAL_LABEL_IN_BODY:function(e){return"The body of a "+e+" statement must not be a labeled function declaration"},ILLEGEAL_LABEL_IN_IF:"The consequent of an if statement must not be a labeled function declaration",ILLEGAL_LABEL_IN_ELSE:"The alternate of an if statement must not be a labeled function declaration",ILLEGAL_CONTINUE_WITHOUT_ITERATION_WITH_ID:function(e){return"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e)},ILLEGAL_CONTINUE_WITHOUT_ITERATION:"Continue statement must be nested within an iteration statement",ILLEGAL_BREAK_WITHOUT_ITERATION_OR_SWITCH:"Break statement must be nested within an iteration statement or a switch statement",ILLEGAL_WITH_STRICT_MODE:"Strict mode code must not include a with statement",ILLEGAL_ACCESS_SUPER_MEMBER:"Member access on super must be in a method",ILLEGAL_SUPER_CALL:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',DUPLICATE_LABEL_DECLARATION:function(e){return"Label "+JSON.stringify(e)+" has already been declared"},ILLEGAL_BREAK_WITHIN_LABEL:function(e){return"Break statement must be nested within a statement with label "+JSON.stringify(e)},ILLEGAL_YIELD_EXPRESSIONS:function(e){return e+" parameters must not contain yield expressions"},ILLEGAL_YIELD_IDENTIFIER:'"yield" may not be used as an identifier in this context',ILLEGAL_AWAIT_IDENTIFIER:'"await" may not be used as an identifier in this context',DUPLICATE_CONSTRUCTOR:"Duplicate constructor method in class",ILLEGAL_CONSTRUCTORS:"Constructors cannot be async, generators, getters or setters",ILLEGAL_STATIC_CLASS_NAME:'Static class methods cannot be named "prototype"',NEW_TARGET_ERROR:"new.target must be within function (but not arrow expression) code",DUPLICATE_EXPORT:function(e){return"Duplicate export "+JSON.stringify(e)},UNDECLARED_BINDING:function(e){return"Exported binding "+JSON.stringify(e)+" is not declared"},DUPLICATE_PROPTO_PROP:"Duplicate __proto__ property in object literal not allowed",ILLEGAL_LABEL_FUNC_DECLARATION:"Labeled FunctionDeclarations are disallowed in strict mode",ILLEGAL_FUNC_DECL_IF:"FunctionDeclarations in IfStatements are disallowed in strict mode",ILLEGAL_USE_STRICT:'Functions with non-simple parameter lists may not contain a "use strict" directive',ILLEGAL_EXPORTED_NAME:"Names of variables used in an export specifier from the current module must be identifiers",NO_OCTALS_IN_TEMPLATES:"Template literals may not contain octal escape sequences",NO_AWAIT_IN_ASYNC_PARAMS:'Async arrow parameters may not contain "await"'};Object.defineProperty(tokenizer,"__esModule",{value:!0});tokenizer.JsError=tokenizer.TokenType=tokenizer.TokenClass=void 0;var _slicedToArray=function(){function o(e,s){var a=[],c=!0,d=!1,_=void 0;try{for(var b=e[Symbol.iterator](),k;!(c=(k=b.next()).done)&&(a.push(k.value),!(s&&a.length===s));c=!0);}catch($){d=!0,_=$}finally{try{!c&&b.return&&b.return()}finally{if(d)throw _}}return a}return function(e,s){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return o(e,s);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass$e=function(){function o(e,s){for(var a=0;a"},Ident:{name:"Identifier",isIdentifierName:!0},Keyword:{name:"Keyword",isIdentifierName:!0},NumericLiteral:{name:"Numeric"},TemplateElement:{name:"Template"},Punctuator:{name:"Punctuator"},StringLiteral:{name:"String"},RegularExpression:{name:"RegularExpression"},Illegal:{name:"Illegal"}},TokenType=tokenizer.TokenType={EOS:{klass:TokenClass.Eof,name:"EOS"},LPAREN:{klass:TokenClass.Punctuator,name:"("},RPAREN:{klass:TokenClass.Punctuator,name:")"},LBRACK:{klass:TokenClass.Punctuator,name:"["},RBRACK:{klass:TokenClass.Punctuator,name:"]"},LBRACE:{klass:TokenClass.Punctuator,name:"{"},RBRACE:{klass:TokenClass.Punctuator,name:"}"},COLON:{klass:TokenClass.Punctuator,name:":"},SEMICOLON:{klass:TokenClass.Punctuator,name:";"},PERIOD:{klass:TokenClass.Punctuator,name:"."},ELLIPSIS:{klass:TokenClass.Punctuator,name:"..."},ARROW:{klass:TokenClass.Punctuator,name:"=>"},CONDITIONAL:{klass:TokenClass.Punctuator,name:"?"},INC:{klass:TokenClass.Punctuator,name:"++"},DEC:{klass:TokenClass.Punctuator,name:"--"},ASSIGN:{klass:TokenClass.Punctuator,name:"="},ASSIGN_BIT_OR:{klass:TokenClass.Punctuator,name:"|="},ASSIGN_BIT_XOR:{klass:TokenClass.Punctuator,name:"^="},ASSIGN_BIT_AND:{klass:TokenClass.Punctuator,name:"&="},ASSIGN_SHL:{klass:TokenClass.Punctuator,name:"<<="},ASSIGN_SHR:{klass:TokenClass.Punctuator,name:">>="},ASSIGN_SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>="},ASSIGN_ADD:{klass:TokenClass.Punctuator,name:"+="},ASSIGN_SUB:{klass:TokenClass.Punctuator,name:"-="},ASSIGN_MUL:{klass:TokenClass.Punctuator,name:"*="},ASSIGN_DIV:{klass:TokenClass.Punctuator,name:"/="},ASSIGN_MOD:{klass:TokenClass.Punctuator,name:"%="},ASSIGN_EXP:{klass:TokenClass.Punctuator,name:"**="},COMMA:{klass:TokenClass.Punctuator,name:","},OR:{klass:TokenClass.Punctuator,name:"||"},AND:{klass:TokenClass.Punctuator,name:"&&"},BIT_OR:{klass:TokenClass.Punctuator,name:"|"},BIT_XOR:{klass:TokenClass.Punctuator,name:"^"},BIT_AND:{klass:TokenClass.Punctuator,name:"&"},SHL:{klass:TokenClass.Punctuator,name:"<<"},SHR:{klass:TokenClass.Punctuator,name:">>"},SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>"},ADD:{klass:TokenClass.Punctuator,name:"+"},SUB:{klass:TokenClass.Punctuator,name:"-"},MUL:{klass:TokenClass.Punctuator,name:"*"},DIV:{klass:TokenClass.Punctuator,name:"/"},MOD:{klass:TokenClass.Punctuator,name:"%"},EXP:{klass:TokenClass.Punctuator,name:"**"},EQ:{klass:TokenClass.Punctuator,name:"=="},NE:{klass:TokenClass.Punctuator,name:"!="},EQ_STRICT:{klass:TokenClass.Punctuator,name:"==="},NE_STRICT:{klass:TokenClass.Punctuator,name:"!=="},LT:{klass:TokenClass.Punctuator,name:"<"},GT:{klass:TokenClass.Punctuator,name:">"},LTE:{klass:TokenClass.Punctuator,name:"<="},GTE:{klass:TokenClass.Punctuator,name:">="},INSTANCEOF:{klass:TokenClass.Keyword,name:"instanceof"},IN:{klass:TokenClass.Keyword,name:"in"},NOT:{klass:TokenClass.Punctuator,name:"!"},BIT_NOT:{klass:TokenClass.Punctuator,name:"~"},ASYNC:{klass:TokenClass.Keyword,name:"async"},AWAIT:{klass:TokenClass.Keyword,name:"await"},ENUM:{klass:TokenClass.Keyword,name:"enum"},DELETE:{klass:TokenClass.Keyword,name:"delete"},TYPEOF:{klass:TokenClass.Keyword,name:"typeof"},VOID:{klass:TokenClass.Keyword,name:"void"},BREAK:{klass:TokenClass.Keyword,name:"break"},CASE:{klass:TokenClass.Keyword,name:"case"},CATCH:{klass:TokenClass.Keyword,name:"catch"},CLASS:{klass:TokenClass.Keyword,name:"class"},CONTINUE:{klass:TokenClass.Keyword,name:"continue"},DEBUGGER:{klass:TokenClass.Keyword,name:"debugger"},DEFAULT:{klass:TokenClass.Keyword,name:"default"},DO:{klass:TokenClass.Keyword,name:"do"},ELSE:{klass:TokenClass.Keyword,name:"else"},EXPORT:{klass:TokenClass.Keyword,name:"export"},EXTENDS:{klass:TokenClass.Keyword,name:"extends"},FINALLY:{klass:TokenClass.Keyword,name:"finally"},FOR:{klass:TokenClass.Keyword,name:"for"},FUNCTION:{klass:TokenClass.Keyword,name:"function"},IF:{klass:TokenClass.Keyword,name:"if"},IMPORT:{klass:TokenClass.Keyword,name:"import"},LET:{klass:TokenClass.Keyword,name:"let"},NEW:{klass:TokenClass.Keyword,name:"new"},RETURN:{klass:TokenClass.Keyword,name:"return"},SUPER:{klass:TokenClass.Keyword,name:"super"},SWITCH:{klass:TokenClass.Keyword,name:"switch"},THIS:{klass:TokenClass.Keyword,name:"this"},THROW:{klass:TokenClass.Keyword,name:"throw"},TRY:{klass:TokenClass.Keyword,name:"try"},VAR:{klass:TokenClass.Keyword,name:"var"},WHILE:{klass:TokenClass.Keyword,name:"while"},WITH:{klass:TokenClass.Keyword,name:"with"},NULL:{klass:TokenClass.Keyword,name:"null"},TRUE:{klass:TokenClass.Keyword,name:"true"},FALSE:{klass:TokenClass.Keyword,name:"false"},YIELD:{klass:TokenClass.Keyword,name:"yield"},NUMBER:{klass:TokenClass.NumericLiteral,name:""},STRING:{klass:TokenClass.StringLiteral,name:""},REGEXP:{klass:TokenClass.RegularExpression,name:""},IDENTIFIER:{klass:TokenClass.Ident,name:""},CONST:{klass:TokenClass.Keyword,name:"const"},TEMPLATE:{klass:TokenClass.TemplateElement,name:""},ESCAPED_KEYWORD:{klass:TokenClass.Keyword,name:""},ILLEGAL:{klass:TokenClass.Illegal,name:""}},TT=TokenType,I=TT.ILLEGAL,F=!1,T=!0,ONE_CHAR_PUNCTUATOR=[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.NOT,I,I,I,TT.MOD,TT.BIT_AND,I,TT.LPAREN,TT.RPAREN,TT.MUL,TT.ADD,TT.COMMA,TT.SUB,TT.PERIOD,TT.DIV,I,I,I,I,I,I,I,I,I,I,TT.COLON,TT.SEMICOLON,TT.LT,TT.ASSIGN,TT.GT,TT.CONDITIONAL,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACK,I,TT.RBRACK,TT.BIT_XOR,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACE,TT.BIT_OR,TT.RBRACE,TT.BIT_NOT],PUNCTUATOR_START=[F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,F,F,T,T,F,T,T,T,T,T,T,F,T,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,F],JsError=tokenizer.JsError=function(o){_inherits$8(e,o);function e(s,a,c,d){_classCallCheck$i(this,e);var _=_possibleConstructorReturn$8(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,d));_.index=s;try{_.line=a,_.column=c}catch{}return _.parseErrorLine=a,_.parseErrorColumn=c,_.description=d,_.message="["+a+":"+c+"]: "+d,_}return e}(Error);function fromCodePoint$1(o){if(o<=65535)return String.fromCharCode(o);var e=String.fromCharCode(Math.floor((o-65536)/1024)+55296),s=String.fromCharCode((o-65536)%1024+56320);return e+s}function decodeUtf16(o,e){return(o-55296)*1024+(e-56320)+65536}var Tokenizer=function(){function o(e){_classCallCheck$i(this,o),this.source=e,this.index=0,this.line=0,this.lineStart=0,this.startIndex=0,this.startLine=0,this.startLineStart=0,this.lastIndex=0,this.lastLine=0,this.lastLineStart=0,this.hasLineTerminatorBeforeNext=!1,this.tokenIndex=0}return _createClass$e(o,[{key:"saveLexerState",value:function(){return{source:this.source,index:this.index,line:this.line,lineStart:this.lineStart,startIndex:this.startIndex,startLine:this.startLine,startLineStart:this.startLineStart,lastIndex:this.lastIndex,lastLine:this.lastLine,lastLineStart:this.lastLineStart,lookahead:this.lookahead,hasLineTerminatorBeforeNext:this.hasLineTerminatorBeforeNext,tokenIndex:this.tokenIndex}}},{key:"restoreLexerState",value:function(s){this.source=s.source,this.index=s.index,this.line=s.line,this.lineStart=s.lineStart,this.startIndex=s.startIndex,this.startLine=s.startLine,this.startLineStart=s.startLineStart,this.lastIndex=s.lastIndex,this.lastLine=s.lastLine,this.lastLineStart=s.lastLineStart,this.lookahead=s.lookahead,this.hasLineTerminatorBeforeNext=s.hasLineTerminatorBeforeNext,this.tokenIndex=s.tokenIndex}},{key:"createILLEGAL",value:function(){return this.startIndex=this.index,this.startLine=this.line,this.startLineStart=this.lineStart,this.index1?c-1:0),_=1;_10)return TokenType.IDENTIFIER;switch(s.length){case 2:switch(s.charAt(0)){case"i":switch(s.charAt(1)){case"f":return TokenType.IF;case"n":return TokenType.IN}break;case"d":if(s.charAt(1)==="o")return TokenType.DO;break}break;case 3:switch(s.charAt(0)){case"v":if(o.cse2(s,"a","r"))return TokenType.VAR;break;case"f":if(o.cse2(s,"o","r"))return TokenType.FOR;break;case"n":if(o.cse2(s,"e","w"))return TokenType.NEW;break;case"t":if(o.cse2(s,"r","y"))return TokenType.TRY;break;case"l":if(o.cse2(s,"e","t"))return TokenType.LET;break}break;case 4:switch(s.charAt(0)){case"t":if(o.cse3(s,"h","i","s"))return TokenType.THIS;if(o.cse3(s,"r","u","e"))return TokenType.TRUE;break;case"n":if(o.cse3(s,"u","l","l"))return TokenType.NULL;break;case"e":if(o.cse3(s,"l","s","e"))return TokenType.ELSE;if(o.cse3(s,"n","u","m"))return TokenType.ENUM;break;case"c":if(o.cse3(s,"a","s","e"))return TokenType.CASE;break;case"v":if(o.cse3(s,"o","i","d"))return TokenType.VOID;break;case"w":if(o.cse3(s,"i","t","h"))return TokenType.WITH;break}break;case 5:switch(s.charAt(0)){case"a":if(o.cse4(s,"s","y","n","c"))return TokenType.ASYNC;if(o.cse4(s,"w","a","i","t"))return TokenType.AWAIT;break;case"w":if(o.cse4(s,"h","i","l","e"))return TokenType.WHILE;break;case"b":if(o.cse4(s,"r","e","a","k"))return TokenType.BREAK;break;case"f":if(o.cse4(s,"a","l","s","e"))return TokenType.FALSE;break;case"c":if(o.cse4(s,"a","t","c","h"))return TokenType.CATCH;if(o.cse4(s,"o","n","s","t"))return TokenType.CONST;if(o.cse4(s,"l","a","s","s"))return TokenType.CLASS;break;case"t":if(o.cse4(s,"h","r","o","w"))return TokenType.THROW;break;case"y":if(o.cse4(s,"i","e","l","d"))return TokenType.YIELD;break;case"s":if(o.cse4(s,"u","p","e","r"))return TokenType.SUPER;break}break;case 6:switch(s.charAt(0)){case"r":if(o.cse5(s,"e","t","u","r","n"))return TokenType.RETURN;break;case"t":if(o.cse5(s,"y","p","e","o","f"))return TokenType.TYPEOF;break;case"d":if(o.cse5(s,"e","l","e","t","e"))return TokenType.DELETE;break;case"s":if(o.cse5(s,"w","i","t","c","h"))return TokenType.SWITCH;break;case"e":if(o.cse5(s,"x","p","o","r","t"))return TokenType.EXPORT;break;case"i":if(o.cse5(s,"m","p","o","r","t"))return TokenType.IMPORT;break}break;case 7:switch(s.charAt(0)){case"d":if(o.cse6(s,"e","f","a","u","l","t"))return TokenType.DEFAULT;break;case"f":if(o.cse6(s,"i","n","a","l","l","y"))return TokenType.FINALLY;break;case"e":if(o.cse6(s,"x","t","e","n","d","s"))return TokenType.EXTENDS;break}break;case 8:switch(s.charAt(0)){case"f":if(o.cse7(s,"u","n","c","t","i","o","n"))return TokenType.FUNCTION;break;case"c":if(o.cse7(s,"o","n","t","i","n","u","e"))return TokenType.CONTINUE;break;case"d":if(o.cse7(s,"e","b","u","g","g","e","r"))return TokenType.DEBUGGER;break}break;case 10:if(s==="instanceof")return TokenType.INSTANCEOF;break}return TokenType.IDENTIFIER}},{key:"skipSingleLineComment",value:function(s){for(this.index+=s;this.index=a)break;if(c=this.source.charCodeAt(this.index+1),c===47)this.skipSingleLineComment(2),s=!0;else if(c===42)s=this.skipMultiLineComment()||s;else break}else if(!this.moduleIsTheGoalSymbol&&s&&c===45){if(this.index+2>=a)break;if(this.source.charAt(this.index+1)==="-"&&this.source.charAt(this.index+2)===">")this.skipSingleLineComment(3);else break}else if(!this.moduleIsTheGoalSymbol&&c===60)if(this.source.slice(this.index+1,this.index+4)==="!--")this.skipSingleLineComment(4),s=!0;else break;else break}}},{key:"scanHexEscape2",value:function(){if(this.index+2>this.source.length)return-1;var s=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(s===-1)return-1;var a=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));return a===-1?-1:(this.index+=2,s<<4|a)}},{key:"scanUnicode",value:function(){if(this.source.charAt(this.index)==="{"){for(var s=this.index+1,a=0,c=void 0;s1114111)throw this.createILLEGAL();s++}if(c!=="}")throw this.createILLEGAL();if(s===this.index+1)throw++this.index,this.createILLEGAL();return this.index=s+1,a}if(this.index+4>this.source.length)return-1;var _=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(_===-1)return-1;var b=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));if(b===-1)return-1;var k=(0,_utils$1.getHexValue)(this.source.charAt(this.index+2));if(k===-1)return-1;var $=(0,_utils$1.getHexValue)(this.source.charAt(this.index+3));return $===-1?-1:(this.index+=4,_<<12|b<<8|k<<4|$)}},{key:"getEscapedIdentifier",value:function(){for(var s="",a=_utils$1.isIdentifierStart;this.index=this.source.length)throw this.createILLEGAL();if(this.source.charAt(this.index)!=="u")throw this.createILLEGAL();if(++this.index,d=this.scanUnicode(),d<0)throw this.createILLEGAL();c=fromCodePoint$1(d)}else if(d>=55296&&d<=56319){if(this.index>=this.source.length)throw this.createILLEGAL();var b=this.source.charCodeAt(this.index);if(++this.index,!(b>=56320&&b<=57343))throw this.createILLEGAL();d=decodeUtf16(d,b),c=fromCodePoint$1(d)}if(!a(d)){if(s.length<1)throw this.createILLEGAL();return this.index=_,s}a=_utils$1.isIdentifierPart,s+=c}return s}},{key:"getIdentifier",value:function(){for(var s=this.index,a=this.source.length,c=this.index,d=_utils$1.isIdentifierStart;c=55296&&b<=56319)return this.index=s,this.getEscapedIdentifier();if(!d(b))return this.index=c,this.source.slice(s,c);++c,d=_utils$1.isIdentifierPart}return this.index=c,this.source.slice(s,c)}},{key:"scanIdentifier",value:function(){var s=this.getLocation(),a=this.index,c=this.source.charAt(this.index)==="\\"?this.getEscapedIdentifier():this.getIdentifier(),d=this.getSlice(a,s);d.text=c;var _=this.index-a!==c.length,b=this.getKeyword(c);return _&&b!==TokenType.IDENTIFIER&&(b=TokenType.ESCAPED_KEYWORD),{type:b,value:c,slice:d,escaped:_}}},{key:"getLocation",value:function(){return{line:this.startLine+1,column:this.startIndex-this.startLineStart,offset:this.startIndex}}},{key:"getLastTokenEndLocation",value:function(){return{line:this.lastLine+1,column:this.lastIndex-this.lastLineStart,offset:this.lastIndex}}},{key:"getSlice",value:function(s,a){return{text:this.source.slice(s,this.index),start:s,startLocation:a,end:this.index}}},{key:"scanPunctuatorHelper",value:function(){var s=this.source.charAt(this.index);switch(s){case".":{var a=this.source.charAt(this.index+1);if(a!==".")return TokenType.PERIOD;var c=this.source.charAt(this.index+2);return c!=="."?TokenType.PERIOD:TokenType.ELLIPSIS}case"(":return TokenType.LPAREN;case")":case";":case",":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];case"{":return TokenType.LBRACE;case"}":case"[":case"]":case":":case"?":case"~":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];default:if(this.index+1":return TokenType.GTE;case"/":return TokenType.ASSIGN_DIV;case"%":return TokenType.ASSIGN_MOD;case"^":return TokenType.ASSIGN_BIT_XOR;case"&":return TokenType.ASSIGN_BIT_AND}}if(this.index+1"&&_===">")return this.index+3"&&_==="=")return TokenType.ASSIGN_SHR;if(s==="*"&&_==="=")return TokenType.ASSIGN_EXP}switch(s){case"*":return TokenType.EXP;case"+":return TokenType.INC;case"-":return TokenType.DEC;case"<":return TokenType.SHL;case">":return TokenType.SHR;case"&":return TokenType.AND;case"|":return TokenType.OR}}else if(s==="="&&d===">")return TokenType.ARROW}return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)]}},{key:"scanPunctuator",value:function(){var s=this.getLocation(),a=this.index,c=this.scanPunctuatorHelper();return this.index+=c.name.length,{type:c,value:c.name,slice:this.getSlice(a,s)}}},{key:"scanHexLiteral",value:function(s,a){for(var c=this.index;c="0"&&c<="7")this.index++;else{if((0,_utils$1.isIdentifierPart)(c.charCodeAt(0)))throw this.createILLEGAL();break}}if(this.index-s===2)throw this.createILLEGAL();return{type:TokenType.NUMBER,value:parseInt(this.getSlice(s,a).text.substr(2),8),slice:this.getSlice(s,a),octal:!1,noctal:!1}}},{key:"scanLegacyOctalLiteral",value:function(s,a){for(var c=!0;this.index="0"&&d<="7")this.index++;else if(d==="8"||d==="9")c=!1,this.index++;else{if((0,_utils$1.isIdentifierPart)(d.charCodeAt(0)))throw this.createILLEGAL();break}}var _=this.getSlice(s,a);return c?{type:TokenType.NUMBER,slice:_,value:parseInt(_.text.substr(1),8),octal:!0,noctal:!c}:(this.eatDecimalLiteralSuffix(),{type:TokenType.NUMBER,slice:_,value:+_.text,octal:!0,noctal:!c})}},{key:"scanNumericLiteral",value:function(){var s=this.source.charAt(this.index),a=this.getLocation(),c=this.index;if(s==="0")if(this.index++,this.index="0"&&s<="9")return this.scanLegacyOctalLiteral(c,a)}else{var d=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+d.text,slice:d,octal:!1,noctal:!1}}else if(s!==".")for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length){var _=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+_.text,slice:_,octal:!1,noctal:!1}}s=this.source.charAt(this.index)}if(this.eatDecimalLiteralSuffix(),this.index!==this.source.length&&(0,_utils$1.isIdentifierStart)(this.source.charCodeAt(this.index)))throw this.createILLEGAL();var b=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+b.text,slice:b,octal:!1,noctal:!1}}},{key:"eatDecimalLiteralSuffix",value:function(){var s=this.source.charAt(this.index);if(s==="."){if(this.index++,this.index===this.source.length)return;for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length)return;s=this.source.charAt(this.index)}}if(s==="e"||s==="E"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();if(s=this.source.charAt(this.index),s==="+"||s==="-"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();s=this.source.charAt(this.index)}if(s>="0"&&s<="9")for(;s>="0"&&s<="9"&&(this.index++,this.index!==this.source.length);)s=this.source.charAt(this.index);else throw this.createILLEGAL()}}},{key:"scanStringEscape",value:function(s,a){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();var c=this.source.charAt(this.index);if((0,_utils$1.isLineTerminator)(c.charCodeAt(0)))this.index++,c==="\r"&&this.source.charAt(this.index)===` +`&&this.index++,this.lineStart=this.index,this.line++;else switch(c){case"n":s+=` +`,this.index++;break;case"r":s+="\r",this.index++;break;case"t":s+=" ",this.index++;break;case"u":case"x":{var d=void 0;if(this.index++,this.index>=this.source.length)throw this.createILLEGAL();if(d=c==="u"?this.scanUnicode():this.scanHexEscape2(),d<0)throw this.createILLEGAL();s+=fromCodePoint$1(d);break}case"b":s+="\b",this.index++;break;case"f":s+="\f",this.index++;break;case"v":s+="\v",this.index++;break;default:if(c>="0"&&c<="7"){var _=this.index,b=1;c>="0"&&c<="3"&&(b=0);for(var k=0;b<3&&c>="0"&&c<="7";){if(this.index++,(b>0||c!=="0")&&(a=this.source.slice(_,this.index)),k*=8,k+=c-"0",b++,this.index===this.source.length)throw this.createILLEGAL();c=this.source.charAt(this.index)}k===0&&b===1&&(c==="8"||c==="9")&&(a=this.source.slice(_,this.index+1)),s+=String.fromCharCode(k)}else{if(c==="8"||c==="9")throw this.createILLEGAL();s+=c,this.index++}}return[s,a]}},{key:"scanStringLiteral",value:function(){var s="",a=this.source.charAt(this.index),c=this.getLocation(),d=this.index;this.index++;for(var _=null;this.index=this.source.length)return{type:TokenType.EOS,slice:this.getSlice(this.index,s)};var a=this.source.charCodeAt(this.index);if(a<128){if(PUNCTUATOR_START[a])return this.scanPunctuator();if((0,_utils$1.isIdentifierStart)(a)||a===92)return this.scanIdentifier();if(a===46)return this.index+1=48&&a<=57)return this.scanNumericLiteral();throw this.createILLEGAL()}else{if((0,_utils$1.isIdentifierStart)(a)||a>=55296&&a<=56319)return this.scanIdentifier();throw this.createILLEGAL()}}},{key:"eof",value:function(){return this.lookahead.type===TokenType.EOS}},{key:"lex",value:function(){var s=this.lookahead;return this.lookahead=this.advance(),this.tokenIndex++,s}}],[{key:"cse2",value:function(s,a,c){return s.charAt(1)===a&&s.charAt(2)===c}},{key:"cse3",value:function(s,a,c,d){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d}},{key:"cse4",value:function(s,a,c,d,_){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_}},{key:"cse5",value:function(s,a,c,d,_,b){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b}},{key:"cse6",value:function(s,a,c,d,_,b,k){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k}},{key:"cse7",value:function(s,a,c,d,_,b,k,$){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k&&s.charAt(7)===$}}]),o}();tokenizer.default=Tokenizer;var parser$1={},dist$6={},mappings=new Map([["General_Category",new Map([["C","Other"],["Cc","Control"],["cntrl","Control"],["Cf","Format"],["Cn","Unassigned"],["Co","Private_Use"],["Cs","Surrogate"],["L","Letter"],["LC","Cased_Letter"],["Ll","Lowercase_Letter"],["Lm","Modifier_Letter"],["Lo","Other_Letter"],["Lt","Titlecase_Letter"],["Lu","Uppercase_Letter"],["M","Mark"],["Combining_Mark","Mark"],["Mc","Spacing_Mark"],["Me","Enclosing_Mark"],["Mn","Nonspacing_Mark"],["N","Number"],["Nd","Decimal_Number"],["digit","Decimal_Number"],["Nl","Letter_Number"],["No","Other_Number"],["P","Punctuation"],["punct","Punctuation"],["Pc","Connector_Punctuation"],["Pd","Dash_Punctuation"],["Pe","Close_Punctuation"],["Pf","Final_Punctuation"],["Pi","Initial_Punctuation"],["Po","Other_Punctuation"],["Ps","Open_Punctuation"],["S","Symbol"],["Sc","Currency_Symbol"],["Sk","Modifier_Symbol"],["Sm","Math_Symbol"],["So","Other_Symbol"],["Z","Separator"],["Zl","Line_Separator"],["Zp","Paragraph_Separator"],["Zs","Space_Separator"],["Other","Other"],["Control","Control"],["Format","Format"],["Unassigned","Unassigned"],["Private_Use","Private_Use"],["Surrogate","Surrogate"],["Letter","Letter"],["Cased_Letter","Cased_Letter"],["Lowercase_Letter","Lowercase_Letter"],["Modifier_Letter","Modifier_Letter"],["Other_Letter","Other_Letter"],["Titlecase_Letter","Titlecase_Letter"],["Uppercase_Letter","Uppercase_Letter"],["Mark","Mark"],["Spacing_Mark","Spacing_Mark"],["Enclosing_Mark","Enclosing_Mark"],["Nonspacing_Mark","Nonspacing_Mark"],["Number","Number"],["Decimal_Number","Decimal_Number"],["Letter_Number","Letter_Number"],["Other_Number","Other_Number"],["Punctuation","Punctuation"],["Connector_Punctuation","Connector_Punctuation"],["Dash_Punctuation","Dash_Punctuation"],["Close_Punctuation","Close_Punctuation"],["Final_Punctuation","Final_Punctuation"],["Initial_Punctuation","Initial_Punctuation"],["Other_Punctuation","Other_Punctuation"],["Open_Punctuation","Open_Punctuation"],["Symbol","Symbol"],["Currency_Symbol","Currency_Symbol"],["Modifier_Symbol","Modifier_Symbol"],["Math_Symbol","Math_Symbol"],["Other_Symbol","Other_Symbol"],["Separator","Separator"],["Line_Separator","Line_Separator"],["Paragraph_Separator","Paragraph_Separator"],["Space_Separator","Space_Separator"]])],["Script",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])],["Script_Extensions",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])]]);const propertyToValueAliases=mappings,matchPropertyValue=function(o,e){const s=propertyToValueAliases.get(o);if(!s)throw new Error(`Unknown property \`${o}\`.`);const a=s.get(e);if(a)return a;throw new Error(`Unknown value \`${e}\` for property \`${o}\`.`)};var unicodeMatchPropertyValueEcmascript=matchPropertyValue,unicodeCanonicalPropertyNamesEcmascript=new Set(["General_Category","Script","Script_Extensions","Alphabetic","Any","ASCII","ASCII_Hex_Digit","Assigned","Bidi_Control","Bidi_Mirrored","Case_Ignorable","Cased","Changes_When_Casefolded","Changes_When_Casemapped","Changes_When_Lowercased","Changes_When_NFKC_Casefolded","Changes_When_Titlecased","Changes_When_Uppercased","Dash","Default_Ignorable_Code_Point","Deprecated","Diacritic","Emoji","Emoji_Component","Emoji_Modifier","Emoji_Modifier_Base","Emoji_Presentation","Extended_Pictographic","Extender","Grapheme_Base","Grapheme_Extend","Hex_Digit","ID_Continue","ID_Start","Ideographic","IDS_Binary_Operator","IDS_Trinary_Operator","Join_Control","Logical_Order_Exception","Lowercase","Math","Noncharacter_Code_Point","Pattern_Syntax","Pattern_White_Space","Quotation_Mark","Radical","Regional_Indicator","Sentence_Terminal","Soft_Dotted","Terminal_Punctuation","Unified_Ideograph","Uppercase","Variation_Selector","White_Space","XID_Continue","XID_Start"]),unicodePropertyAliasesEcmascript=new Map([["scx","Script_Extensions"],["sc","Script"],["gc","General_Category"],["AHex","ASCII_Hex_Digit"],["Alpha","Alphabetic"],["Bidi_C","Bidi_Control"],["Bidi_M","Bidi_Mirrored"],["Cased","Cased"],["CI","Case_Ignorable"],["CWCF","Changes_When_Casefolded"],["CWCM","Changes_When_Casemapped"],["CWKCF","Changes_When_NFKC_Casefolded"],["CWL","Changes_When_Lowercased"],["CWT","Changes_When_Titlecased"],["CWU","Changes_When_Uppercased"],["Dash","Dash"],["Dep","Deprecated"],["DI","Default_Ignorable_Code_Point"],["Dia","Diacritic"],["Ext","Extender"],["Gr_Base","Grapheme_Base"],["Gr_Ext","Grapheme_Extend"],["Hex","Hex_Digit"],["IDC","ID_Continue"],["Ideo","Ideographic"],["IDS","ID_Start"],["IDSB","IDS_Binary_Operator"],["IDST","IDS_Trinary_Operator"],["Join_C","Join_Control"],["LOE","Logical_Order_Exception"],["Lower","Lowercase"],["Math","Math"],["NChar","Noncharacter_Code_Point"],["Pat_Syn","Pattern_Syntax"],["Pat_WS","Pattern_White_Space"],["QMark","Quotation_Mark"],["Radical","Radical"],["RI","Regional_Indicator"],["SD","Soft_Dotted"],["STerm","Sentence_Terminal"],["Term","Terminal_Punctuation"],["UIdeo","Unified_Ideograph"],["Upper","Uppercase"],["VS","Variation_Selector"],["WSpace","White_Space"],["space","White_Space"],["XIDC","XID_Continue"],["XIDS","XID_Start"]]);const canonicalProperties=unicodeCanonicalPropertyNamesEcmascript,propertyAliases=unicodePropertyAliasesEcmascript,matchProperty=function(o){if(canonicalProperties.has(o))return o;if(propertyAliases.has(o))return propertyAliases.get(o);throw new Error(`Unknown property: ${o}`)};var unicodeMatchPropertyEcmascript=matchProperty,unicode$1={};Object.defineProperty(unicode$1,"__esModule",{value:!0});unicode$1.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$1.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$1.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$1.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$1.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$1.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(dist$6,"__esModule",{value:!0});var _createClass$d=function(){function o(e,s){for(var a=0;a=this.pattern.length}},{key:"backreference",value:function(s){s>this.largestBackreference&&(this.largestBackreference=s)}},{key:"nextCodePoint",value:function(){return this.empty()?null:this.unicode?String.fromCodePoint(this.pattern.codePointAt(this.index)):this.pattern.charAt(this.index)}},{key:"skipCodePoint",value:function(){this.index+=this.nextCodePoint().length}},{key:"eat",value:function(s){return this.index+s.length>this.pattern.length||this.pattern.slice(this.index,this.index+s.length)!==s?!1:(this.index+=s.length,!0)}},{key:"eatIdentifierCodePoint",value:function(){var s=void 0,a=this.index,c=void 0;if(this.match("\\u")){if(this.skipCodePoint(),s=acceptUnicodeEscape(this),!s.matched)return this.index=a,null;s=s.value,c=String.fromCodePoint(s)}else{if(c=this.nextCodePoint(),c==null)return this.index=a,null;this.index+=c.length,s=c.codePointAt(0)}return{character:c,characterValue:s}}},{key:"eatIdentifierStart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="_"||a.character==="$"||isIdentifierStart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatIdentifierPart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="\u200C"||a.character==="\u200D"||a.character==="$"||isIdentifierPart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatAny",value:function(){for(var s=arguments.length,a=Array(s),c=0;c1&&arguments[1]!==void 0?arguments[1]:{},s=e.unicode,a=s===void 0?!1:s,c=new PatternAcceptorState(o,a),d=acceptDisjunction(c);if(d.matched){if(c.unicode&&c.largestBackreference>c.capturingGroups)return!1;if(c.groupingNames.length>0||c.unicode){var _=!0,b=!1,k=void 0;try{for(var $=c.backreferenceNames[Symbol.iterator](),j;!(_=(j=$.next()).done);_=!0){var _e=j.value;if(c.groupingNames.indexOf(_e)===-1)return!1}}catch(et){b=!0,k=et}finally{try{!_&&$.return&&$.return()}finally{if(b)throw k}}}}return d.matched};var backtrackOnFailure=function(e){return function(s){var a=s.index,c=s.largestBackreference,d=s.capturingGroups,_=e(s);return _.matched||(s.index=a,s.largestBackreference=c,s.capturingGroups=d),_}},acceptUnicodeEscape=backtrackOnFailure(function(o){if(!o.eat("u"))return{matched:!1};if(o.unicode&&o.eat("{")){for(var e=[];!o.eat("}");){var s=o.eatAny.apply(o,_toConsumableArray$6(hexDigits));if(s===null)return{matched:!1};e.push(s)}var a=parseInt(e.join(""),16);return a>1114111?{matched:!1}:{matched:!0,value:a}}var c=[0,0,0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});if(c.some(function(b){return b===null}))return{matched:!1};var d=parseInt(c.join(""),16);if(o.unicode&&d>=55296&&d<=56319){var _=backtrackOnFailure(function(b){if(!b.eat("\\u"))return{matched:!1};var k=[0,0,0,0].map(function(){return b.eatAny.apply(b,_toConsumableArray$6(hexDigits))});if(k.some(function(j){return j===null}))return{matched:!1};var $=parseInt(k.join(""),16);return $<56320||$>=57344?{matched:!1}:{matched:!0,value:65536+((d&1023)<<10)+($&1023)}})(o);if(_.matched)return _}return{matched:!0,value:d}}),acceptDisjunction=function(e,s){do{if(s!==void 0&&e.eat(s))return{matched:!0};if(e.match("|"))continue;if(!acceptAlternative(e,s).matched)return{matched:!1}}while(e.eat("|"));return{matched:s===void 0||!!e.eat(s)}},acceptAlternative=function(e,s){for(;!e.match("|")&&!e.empty()&&(s===void 0||!e.match(s));)if(!acceptTerm(e).matched)return{matched:!1};return{matched:!0}},anyOf=function(){for(var e=arguments.length,s=Array(e),a=0;aparseInt(_))return{matched:!1}}return c.eat("}")?(c.eat("?"),{matched:!0}):{matched:!1}})(s);return a.matched?a:{matched:!s.unicode}}else s.eatAny("*","+","?")&&s.eat("?");return{matched:!0}})},acceptCharacterExcept=function(e){return function(s){var a=s.nextCodePoint();return a===null||e.indexOf(a)!==-1?{matched:!1}:(s.skipCodePoint(),{matched:!0})}},acceptPatternCharacter=acceptCharacterExcept(syntaxCharacters),acceptExtendedPatternCharacter=acceptCharacterExcept(extendedSyntaxCharacters),acceptInvalidBracedQuantifier=function(e){return backtrackOnFailure(function(s){return{matched:!!(s.eat("{")&&acceptDecimal(s).matched&&(!s.eat(",")||s.match("}")||acceptDecimal(s).matched)&&s.eat("}"))}})(e)},acceptAtom=function(e){if(e.unicode)return anyOf(acceptPatternCharacter,function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);var s=anyOf(function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),backtrackOnFailure(function(a){return{matched:a.eat("\\")&&a.match("c")}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);return!s.matched&&acceptInvalidBracedQuantifier(e).matched?{matched:!1}:s.matched?s:acceptExtendedPatternCharacter(e)},acceptGrouping=backtrackOnFailure(function(o){if(!o.eat("("))return{matched:!1};var e=backtrackOnFailure(function(s){return o.eat("?")?acceptGroupName(s):{matched:!1}})(o);if(!acceptDisjunction(o,")").matched)return{matched:!1};if(e.matched){if(o.groupingNames.indexOf(e.data)!==-1)return{matched:!1};o.groupingNames.push(e.data)}return o.capturingGroups++,{matched:!0}}),acceptDecimalEscape=backtrackOnFailure(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(decimalDigits));return e===null?{matched:!1}:e==="0"?{matched:!0}:(o.backreference(parseInt(e+(o.eatNaturalNumber()||""))),{matched:!0})}),acceptCharacterClassEscape=function(e){return e.eatAny("d","D","s","S","w","W")?{matched:!0}:e.unicode?backtrackOnFailure(function(s){return!s.eat("p{")&&!s.eat("P{")?{matched:!1}:acceptUnicodePropertyValueExpression(s).matched?{matched:!!s.eat("}")}:{matched:!1}})(e):{matched:!1}},acceptUnicodePropertyName=function(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},acceptUnicodePropertyValue=function(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(_toConsumableArray$6(decimalDigits),["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},illegalLoneUnicodePropertyNames=["General_Category","Script","Script_Extensions","scx","sc","gc"],generalCategoryValues=_mappings2.default.get("General_Category"),acceptLoneUnicodePropertyNameOrValue=function(e){var s=acceptUnicodePropertyValue(e);return!s.matched||illegalLoneUnicodePropertyNames.includes(s.data)?{matched:!1}:{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyEcmascript2.default)(s.data)})||generalCategoryValues.get(s.data)!=null}},acceptUnicodePropertyValueExpression=function(e){return anyOf(backtrackOnFailure(function(s){var a=acceptUnicodePropertyName(s);if(!a.matched||!s.eat("="))return{matched:!1};var c=acceptUnicodePropertyValue(s);return c.matched?{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyValueEcmascript2.default)(_unicodePropertyAliasesEcmascript2.default.get(a.data)||a.data,c.data)})}:{matched:!1}}),backtrackOnFailure(acceptLoneUnicodePropertyNameOrValue))(e)},acceptCharacterEscape=anyOf(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(controlEscapeCharacters));return e===null?{matched:!1}:{matched:!0,value:controlEscapeCharacterValues[e]}},backtrackOnFailure(function(o){if(!o.eat("c"))return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(controlCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)%32}}),backtrackOnFailure(function(o){return!o.eat("0")||o.eatAny.apply(o,_toConsumableArray$6(decimalDigits))?{matched:!1}:{matched:!0,value:0}}),backtrackOnFailure(function(o){if(!o.eat("x"))return{matched:!1};var e=[0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});return e.some(function(s){return s===null})?{matched:!1}:{matched:!0,value:parseInt(e.join(""),16)}}),acceptUnicodeEscape,backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(octalDigits));if(e===null)return{matched:!1};var s=parseInt(e,8);if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s};var a=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),c=parseInt(a,8);if(s<4){if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s<<3|c};var d=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),_=parseInt(d,8);return{matched:!0,value:s<<6|c<<3|_}}return{matched:!0,value:s<<3|c}}),backtrackOnFailure(function(o){if(!o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(syntaxCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)}}),function(o){return!o.unicode||!o.eat("/")?{matched:!1}:{matched:!0,value:"/".charCodeAt(0)}},backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.nextCodePoint();return e!==null&&e!=="c"&&e!=="k"?(o.skipCodePoint(),{matched:!0,value:e.codePointAt(0)}):{matched:!1}})),acceptGroupNameBackreference=backtrackOnFailure(function(o){if(!o.eat("k"))return{matched:!1};var e=acceptGroupName(o);return e.matched?(o.backreferenceNames.push(e.data),{matched:!0}):(o.backreferenceNames.push(INVALID_NAMED_BACKREFERENCE_SENTINEL),{matched:!0})}),acceptGroupName=backtrackOnFailure(function(o){if(!o.eat("<"))return{matched:!1};var e=[],s=o.eatIdentifierStart();if(!s)return{matched:!1};e.push(s);for(var a=void 0;a=o.eatIdentifierPart();)e.push(a);return o.eat(">")?{matched:e.length>0,data:e.join("")}:{matched:!1}}),acceptAtomEscape=anyOf(acceptDecimalEscape,acceptCharacterClassEscape,acceptCharacterEscape,acceptGroupNameBackreference),acceptCharacterClass=backtrackOnFailure(function(o){if(!o.eat("["))return{matched:!1};o.eat("^");var e=anyOf(function(k){return{matched:!!k.eat("b"),value:8}},function(k){return{matched:k.unicode&&!!k.eat("-"),value:"-".charCodeAt(0)}},backtrackOnFailure(function(k){if(k.unicode||!k.eat("c"))return{matched:!1};var $=k.eatAny.apply(k,_toConsumableArray$6(decimalDigits).concat(["_"]));return $===null?{matched:!1}:{matched:!0,value:$.charCodeAt(0)%32}}),acceptCharacterClassEscape,acceptCharacterEscape,function(k){return{matched:!k.unicode&&!!k.eat("k"),value:107}}),s=function($){var j=$.nextCodePoint();if(j==="]"||j==="-"||j===null)return{matched:!1};if(j!=="\\")return $.skipCodePoint(),{matched:!0,value:j.codePointAt(0)};$.eat("\\");var _e=e($);return!_e.matched&&$.nextCodePoint()==="c"&&!$.unicode?{matched:!0,value:"\\".charCodeAt(0)}:_e},a=function($){return $.eat("-")?{matched:!0,value:"-".charCodeAt(0)}:s($)},c=function($,j){var _e=function(nt){return nt.value===void 0&&nt.matched};if($.eat("-")){if($.match("]"))return{matched:!0};var et=a($);return et.matched?$.unicode&&(_e(j)||_e(et))?{matched:!1}:!(!$.unicode&&(_e(j)||_e(et)))&&j.value>et.value?{matched:!1}:$.match("]")?{matched:!0}:d($):{matched:!1}}return $.match("]")?{matched:!0}:_($)},d=function($){var j=a($);return j.matched?c($,j):{matched:!1}},_=function($){var j=s($);return j.matched?c($,j):{matched:!1}};if(o.eat("]"))return{matched:!0};var b=d(o);return b.matched&&o.eat("]"),b}),dist$5={};Object.defineProperty(dist$5,"__esModule",{value:!0});function _classCallCheck$g(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$5.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$5.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};dist$5.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$g(this,o),this.type="ArrayExpression",this.elements=s};dist$5.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$g(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$5.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$g(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$5.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$5.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$5.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$5.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$5.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="AwaitExpression",this.expression=s};dist$5.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$g(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$5.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="BindingIdentifier",this.name=s};dist$5.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$5.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$5.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$5.Block=function o(e){var s=e.statements;_classCallCheck$g(this,o),this.type="Block",this.statements=s};dist$5.BlockStatement=function o(e){var s=e.block;_classCallCheck$g(this,o),this.type="BlockStatement",this.block=s};dist$5.BreakStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="BreakStatement",this.label=s};dist$5.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$5.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$g(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$5.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$5.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$g(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$5.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$5.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$g(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$5.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$5.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$5.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ComputedPropertyName",this.expression=s};dist$5.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$5.ContinueStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="ContinueStatement",this.label=s};dist$5.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$g(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$5.DebuggerStatement=function o(){_classCallCheck$g(this,o),this.type="DebuggerStatement"};dist$5.Directive=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="Directive",this.rawValue=s};dist$5.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$g(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$5.EmptyStatement=function o(){_classCallCheck$g(this,o),this.type="EmptyStatement"};dist$5.Export=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="Export",this.declaration=s};dist$5.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$5.ExportDefault=function o(e){var s=e.body;_classCallCheck$g(this,o),this.type="ExportDefault",this.body=s};dist$5.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$5.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$g(this,o),this.type="ExportLocals",this.namedExports=s};dist$5.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ExpressionStatement",this.expression=s};dist$5.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$5.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$5.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$5.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,d=e.body;_classCallCheck$g(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=d};dist$5.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$g(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$5.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$5.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$g(this,o),this.type="Getter",this.name=s,this.body=a};dist$5.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="IdentifierExpression",this.name=s};dist$5.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$5.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$5.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$5.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$5.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$g(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$5.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$5.LiteralInfinityExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralInfinityExpression"};dist$5.LiteralNullExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralNullExpression"};dist$5.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralNumericExpression",this.value=s};dist$5.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$g(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};dist$5.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralStringExpression",this.value=s};dist$5.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$g(this,o),this.type="Module",this.directives=s,this.items=a};dist$5.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$5.NewTargetExpression=function o(){_classCallCheck$g(this,o),this.type="NewTargetExpression"};dist$5.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$5.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$5.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$g(this,o),this.type="ObjectExpression",this.properties=s};dist$5.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ReturnStatement",this.expression=s};dist$5.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="Script",this.directives=s,this.statements=a};dist$5.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$g(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$5.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="ShorthandProperty",this.name=s};dist$5.SpreadElement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadElement",this.expression=s};dist$5.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadProperty",this.expression=s};dist$5.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};dist$5.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$5.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="StaticPropertyName",this.value=s};dist$5.Super=function o(){_classCallCheck$g(this,o),this.type="Super"};dist$5.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$g(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$5.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$g(this,o),this.type="SwitchDefault",this.consequent=s};dist$5.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$g(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$5.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$g(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=d};dist$5.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="TemplateElement",this.rawValue=s};dist$5.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$g(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$5.ThisExpression=function o(){_classCallCheck$g(this,o),this.type="ThisExpression"};dist$5.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ThrowStatement",this.expression=s};dist$5.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$g(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$5.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$g(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$5.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$g(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$5.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$g(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$5.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$g(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$5.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$5.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$5.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$g(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$5.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$g(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$5.YieldExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldExpression",this.expression=s};dist$5.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldGeneratorExpression",this.expression=s};Object.defineProperty(parser$1,"__esModule",{value:!0});parser$1.GenericParser=void 0;var _createClass$c=function(){function o(e,s){for(var a=0;a":Precedence$1.Relational,"<=":Precedence$1.Relational,">=":Precedence$1.Relational,in:Precedence$1.Relational,instanceof:Precedence$1.Relational,"<<":Precedence$1.BitwiseSHIFT,">>":Precedence$1.BitwiseSHIFT,">>>":Precedence$1.BitwiseSHIFT,"+":Precedence$1.Additive,"-":Precedence$1.Additive,"*":Precedence$1.Multiplicative,"%":Precedence$1.Multiplicative,"/":Precedence$1.Multiplicative};function isValidSimpleAssignmentTarget(o){if(o==null)return!1;switch(o.type){case"IdentifierExpression":case"ComputedMemberExpression":case"StaticMemberExpression":return!0}return!1}function isPrefixOperator(o){switch(o.type){case _tokenizer.TokenType.INC:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TYPEOF:return!0}return!1}function isUpdateOperator(o){return o.type===_tokenizer.TokenType.INC||o.type===_tokenizer.TokenType.DEC}parser$1.GenericParser=function(o){_inherits$7(e,o);function e(s){_classCallCheck$f(this,e);var a=_possibleConstructorReturn$7(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,s));return a.allowIn=!0,a.inFunctionBody=!1,a.inParameter=!1,a.allowYieldExpression=!1,a.allowAwaitExpression=!1,a.firstAwaitLocation=null,a.module=!1,a.moduleIsTheGoalSymbol=!1,a.strict=!1,a.isBindingElement=!0,a.isAssignmentTarget=!0,a.firstExprError=null,a}return _createClass$c(e,[{key:"match",value:function(a){return this.lookahead.type===a}},{key:"matchIdentifier",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IDENTIFIER:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.YIELD:case _tokenizer.TokenType.ASYNC:return!0;case _tokenizer.TokenType.AWAIT:return this.moduleIsTheGoalSymbol?!1:(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0);case _tokenizer.TokenType.ESCAPED_KEYWORD:return this.lookahead.value==="await"&&!this.moduleIsTheGoalSymbol?(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0):this.lookahead.value==="let"||this.lookahead.value==="yield"||this.lookahead.value==="async"}return!1}},{key:"eat",value:function(a){return this.lookahead.type===a?this.lex():null}},{key:"expect",value:function(a){if(this.lookahead.type===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"matchContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a}},{key:"expectContextualKeyword",value:function(a){if(this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"eatContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a?this.lex():null}},{key:"consumeSemicolon",value:function(){if(!this.eat(_tokenizer.TokenType.SEMICOLON)&&!this.hasLineTerminatorBeforeNext&&!this.eof()&&!this.match(_tokenizer.TokenType.RBRACE))throw this.createUnexpected(this.lookahead)}},{key:"startNode",value:function(a){return a}},{key:"copyNode",value:function(a,c){return c}},{key:"finishNode",value:function(a){return a}},{key:"parseModule",value:function(){this.moduleIsTheGoalSymbol=this.module=this.strict=!0,this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Module({directives:d,items:_}),a)}},{key:"parseScript",value:function(){this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Script({directives:d,statements:_}),a)}},{key:"parseFunctionBody",value:function(){var a=this.inFunctionBody,c=this.module,d=this.strict;this.inFunctionBody=!0,this.module=!1;var _=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);var b=new AST.FunctionBody(this.parseBody());return this.expect(_tokenizer.TokenType.RBRACE),b=this.finishNode(b,_),this.inFunctionBody=a,this.module=c,this.strict=d,b}},{key:"parseBody",value:function(){for(var a=[],c=[],d=!0,_=null;!(this.eof()||this.match(_tokenizer.TokenType.RBRACE));){var b=this.lookahead,k=b.slice.text,$=b.type===_tokenizer.TokenType.STRING,j=this.module,_e=this.getLocation(),et=this.startNode(),tt=j?this.parseModuleItem():this.parseStatementListItem();if(d)if($&&tt.type==="ExpressionStatement"&&tt.expression.type==="LiteralStringExpression"){!_&&b.octal&&(_=this.createErrorWithLocation(_e,"Unexpected legacy octal escape sequence: \\"+b.octal));var nt=k.slice(1,-1);nt==="use strict"&&(this.strict=!0),a.push(this.finishNode(new AST.Directive({rawValue:nt}),et))}else{if(d=!1,_&&this.strict)throw _;c.push(tt)}else c.push(tt)}if(_&&this.strict)throw _;return{directives:a,statements:c}}},{key:"parseImportSpecifier",value:function(){var a=this.startNode(),c=void 0;if(this.matchIdentifier()){if(c=this.parseIdentifier(),!this.eatContextualKeyword("as"))return this.finishNode(new AST.ImportSpecifier({name:null,binding:this.finishNode(new AST.BindingIdentifier({name:c}),a)}),a)}else this.lookahead.type.klass.isIdentifierName&&(c=this.parseIdentifierName(),this.expectContextualKeyword("as"));return this.finishNode(new AST.ImportSpecifier({name:c,binding:this.parseBindingIdentifier()}),a)}},{key:"parseNameSpaceBinding",value:function(){return this.expect(_tokenizer.TokenType.MUL),this.expectContextualKeyword("as"),this.parseBindingIdentifier()}},{key:"parseNamedImports",value:function(){var a=[];for(this.expect(_tokenizer.TokenType.LBRACE);!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseImportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseFromClause",value:function(){this.expectContextualKeyword("from");var a=this.expect(_tokenizer.TokenType.STRING).str;return a}},{key:"parseImportDeclaration",value:function(){var a=this.startNode(),c=null,d=void 0;if(this.expect(_tokenizer.TokenType.IMPORT),this.match(_tokenizer.TokenType.STRING))return d=this.lex().str,this.consumeSemicolon(),this.finishNode(new AST.Import({defaultBinding:null,namedImports:[],moduleSpecifier:d}),a);if(this.matchIdentifier()&&(c=this.parseBindingIdentifier(),!this.eat(_tokenizer.TokenType.COMMA))){var _=new AST.Import({defaultBinding:c,namedImports:[],moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(_,a)}if(this.match(_tokenizer.TokenType.MUL)){var b=new AST.ImportNamespace({defaultBinding:c,namespaceBinding:this.parseNameSpaceBinding(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(b,a)}else if(this.match(_tokenizer.TokenType.LBRACE)){var k=new AST.Import({defaultBinding:c,namedImports:this.parseNamedImports(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(k,a)}throw this.createUnexpected(this.lookahead)}},{key:"parseExportSpecifier",value:function(){var a=this.startNode(),c=this.finishNode({type:EXPORT_UNKNOWN_SPECIFIER,isIdentifier:this.matchIdentifier(),value:this.parseIdentifierName()},a);if(this.eatContextualKeyword("as")){var d=this.parseIdentifierName();return this.finishNode({name:c,exportedName:d},a)}return this.finishNode({name:c,exportedName:null},a)}},{key:"parseExportClause",value:function(){this.expect(_tokenizer.TokenType.LBRACE);for(var a=[];!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseExportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseExportDeclaration",value:function(){var a=this,c=this.startNode(),d=void 0;switch(this.expect(_tokenizer.TokenType.EXPORT),this.lookahead.type){case _tokenizer.TokenType.MUL:this.lex(),d=new AST.ExportAllFrom({moduleSpecifier:this.parseFromClause()}),this.consumeSemicolon();break;case _tokenizer.TokenType.LBRACE:{var _=this.parseExportClause(),b=null;this.matchContextualKeyword("from")?(b=this.parseFromClause(),d=new AST.ExportFrom({namedExports:_.map(function(_e){return a.copyNode(_e,new AST.ExportFromSpecifier({name:_e.name.value,exportedName:_e.exportedName}))}),moduleSpecifier:b})):(_.forEach(function(_e){var et=_e.name;if(!et.isIdentifier)throw a.createError(_errors$1.ErrorMessages.ILLEGAL_EXPORTED_NAME)}),d=new AST.ExportLocals({namedExports:_.map(function(_e){return a.copyNode(_e,new AST.ExportLocalSpecifier({name:a.copyNode(_e.name,new AST.IdentifierExpression({name:_e.name.value})),exportedName:_e.exportedName}))})})),this.consumeSemicolon();break}case _tokenizer.TokenType.CLASS:d=new AST.Export({declaration:this.parseClass({isExpr:!1,inDefault:!1})});break;case _tokenizer.TokenType.FUNCTION:d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.ASYNC:{var k=this.startNode();this.lex(),d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:k})});break}case _tokenizer.TokenType.DEFAULT:switch(this.lex(),this.lookahead.type){case _tokenizer.TokenType.FUNCTION:d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.CLASS:d=new AST.ExportDefault({body:this.parseClass({isExpr:!1,inDefault:!0})});break;case _tokenizer.TokenType.ASYNC:{var $=this.startNode(),j=this.saveLexerState();if(this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)){d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!1,isAsync:!0,startState:$})});break}this.restoreLexerState(j)}default:d=new AST.ExportDefault({body:this.parseAssignmentExpression()}),this.consumeSemicolon();break}break;case _tokenizer.TokenType.VAR:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.CONST:d=new AST.Export({declaration:this.parseVariableDeclaration(!0)}),this.consumeSemicolon();break;default:throw this.createUnexpected(this.lookahead)}return this.finishNode(d,c)}},{key:"parseModuleItem",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IMPORT:return this.parseImportDeclaration();case _tokenizer.TokenType.EXPORT:return this.parseExportDeclaration();default:return this.parseStatementListItem()}}},{key:"lookaheadLexicalDeclaration",value:function(){if(this.match(_tokenizer.TokenType.LET)||this.match(_tokenizer.TokenType.CONST)){var a=this.saveLexerState();if(this.lex(),this.matchIdentifier()||this.match(_tokenizer.TokenType.LBRACE)||this.match(_tokenizer.TokenType.LBRACK))return this.restoreLexerState(a),!0;this.restoreLexerState(a)}return!1}},{key:"parseStatementListItem",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.FUNCTION:return this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1});case _tokenizer.TokenType.CLASS:return this.parseClass({isExpr:!1,inDefault:!1});case _tokenizer.TokenType.ASYNC:{var a=this.getLocation(),c=this.saveLexerState();return this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:a}):(this.restoreLexerState(c),this.parseStatement())}default:if(this.lookaheadLexicalDeclaration()){var d=this.startNode();return this.finishNode(this.parseVariableDeclarationStatement(),d)}return this.parseStatement()}}},{key:"parseStatement",value:function(){var a=this.startNode(),c=this.isolateCoverGrammar(this.parseStatementHelper);return this.finishNode(c,a)}},{key:"parseStatementHelper",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.SEMICOLON:return this.parseEmptyStatement();case _tokenizer.TokenType.LBRACE:return this.parseBlockStatement();case _tokenizer.TokenType.LPAREN:return this.parseExpressionStatement();case _tokenizer.TokenType.BREAK:return this.parseBreakStatement();case _tokenizer.TokenType.CONTINUE:return this.parseContinueStatement();case _tokenizer.TokenType.DEBUGGER:return this.parseDebuggerStatement();case _tokenizer.TokenType.DO:return this.parseDoWhileStatement();case _tokenizer.TokenType.FOR:return this.parseForStatement();case _tokenizer.TokenType.IF:return this.parseIfStatement();case _tokenizer.TokenType.RETURN:return this.parseReturnStatement();case _tokenizer.TokenType.SWITCH:return this.parseSwitchStatement();case _tokenizer.TokenType.THROW:return this.parseThrowStatement();case _tokenizer.TokenType.TRY:return this.parseTryStatement();case _tokenizer.TokenType.VAR:return this.parseVariableDeclarationStatement();case _tokenizer.TokenType.WHILE:return this.parseWhileStatement();case _tokenizer.TokenType.WITH:return this.parseWithStatement();case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.CLASS:throw this.createUnexpected(this.lookahead);default:{var a=this.saveLexerState();if(this.eat(_tokenizer.TokenType.LET)){if(this.match(_tokenizer.TokenType.LBRACK))throw this.restoreLexerState(a),this.createUnexpected(this.lookahead);this.restoreLexerState(a)}else if(this.eat(_tokenizer.TokenType.ASYNC)){if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION))throw this.createUnexpected(this.lookahead);this.restoreLexerState(a)}var c=this.parseExpression();if(c.type==="IdentifierExpression"&&this.eat(_tokenizer.TokenType.COLON)){var d=this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement();return new AST.LabeledStatement({label:c.name,body:d})}return this.consumeSemicolon(),new AST.ExpressionStatement({expression:c})}}}},{key:"parseEmptyStatement",value:function(){return this.lex(),new AST.EmptyStatement}},{key:"parseBlockStatement",value:function(){return new AST.BlockStatement({block:this.parseBlock()})}},{key:"parseExpressionStatement",value:function(){var a=this.parseExpression();return this.consumeSemicolon(),new AST.ExpressionStatement({expression:a})}},{key:"parseBreakStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.BreakStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.BreakStatement({label:a})}},{key:"parseContinueStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ContinueStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.ContinueStatement({label:a})}},{key:"parseDebuggerStatement",value:function(){return this.lex(),this.consumeSemicolon(),new AST.DebuggerStatement}},{key:"parseDoWhileStatement",value:function(){this.lex();var a=this.parseStatement();this.expect(_tokenizer.TokenType.WHILE),this.expect(_tokenizer.TokenType.LPAREN);var c=this.parseExpression();return this.expect(_tokenizer.TokenType.RPAREN),this.eat(_tokenizer.TokenType.SEMICOLON),new AST.DoWhileStatement({body:a,test:c})}},{key:"parseForStatement",value:function(){this.lex();var a=this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT);this.expect(_tokenizer.TokenType.LPAREN);var c=null,d=null;if(a&&this.match(_tokenizer.TokenType.SEMICOLON))throw this.createUnexpected(this.lookahead);if(this.eat(_tokenizer.TokenType.SEMICOLON))return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:null,test:c,update:d,body:this.getIteratorStatementEpilogue()});var _=this.match(_tokenizer.TokenType.LET),b=this.lookaheadLexicalDeclaration(),k=this.startNode();if(this.match(_tokenizer.TokenType.VAR)||b){var $=this.allowIn;this.allowIn=!1;var j=this.parseVariableDeclaration(!1);if(this.allowIn=$,j.declarators.length===1&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){var _e=void 0,et=j.declarators[0];if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);if(et.init!==null&&(this.strict||j.kind!=="var"||et.binding.type!=="BindingIdentifier"))throw this.createError(_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_IN);_e=AST.ForInStatement,this.lex(),d=this.parseExpression()}else{if(et.init!==null)throw this.createError(a?_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_OF);a?_e=AST.ForAwaitStatement:_e=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression()}var tt=this.getIteratorStatementEpilogue();return new _e({left:j,right:d,body:tt})}else if(a)throw this.createUnexpected(this.lookahead);if(this.expect(_tokenizer.TokenType.SEMICOLON),j.declarators.some(function(at){return at.binding.type!=="BindingIdentifier"&&at.init===null}))throw this.createError(_errors$1.ErrorMessages.UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT);return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:j,test:c,update:d,body:this.getIteratorStatementEpilogue()})}var nt=this.allowIn;this.allowIn=!1;var st=this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget);if(this.allowIn=nt,this.isAssignmentTarget&&st.type!=="AssignmentExpression"&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){if((st.type==="ObjectAssignmentTarget"||st.type==="ArrayAssignmentTarget")&&(this.firstExprError=null),_&&this.matchContextualKeyword("of"))throw this.createError(a?_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);var rt=void 0;if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);rt=AST.ForInStatement,this.lex(),d=this.parseExpression()}else a?rt=AST.ForAwaitStatement:rt=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression();return new rt({left:this.transformDestructuring(st),right:d,body:this.getIteratorStatementEpilogue()})}else if(a)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT);if(this.firstExprError)throw this.firstExprError;for(;this.eat(_tokenizer.TokenType.COMMA);){var it=this.parseAssignmentExpression();st=this.finishNode(new AST.BinaryExpression({left:st,operator:",",right:it}),k)}if(this.match(_tokenizer.TokenType.IN))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_IN);if(this.matchContextualKeyword("of"))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);return this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:st,test:c,update:d,body:this.getIteratorStatementEpilogue()})}},{key:"getIteratorStatementEpilogue",value:function(){this.expect(_tokenizer.TokenType.RPAREN);var a=this.parseStatement();return a}},{key:"parseIfStatementChild",value:function(){return this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement()}},{key:"parseIfStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseIfStatementChild(),d=null;return this.eat(_tokenizer.TokenType.ELSE)&&(d=this.parseIfStatementChild()),new AST.IfStatement({test:a,consequent:c,alternate:d})}},{key:"parseReturnStatement",value:function(){if(!this.inFunctionBody)throw this.createError(_errors$1.ErrorMessages.ILLEGAL_RETURN);if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ReturnStatement({expression:null});var a=null;return!this.match(_tokenizer.TokenType.RBRACE)&&!this.eof()&&(a=this.parseExpression()),this.consumeSemicolon(),new AST.ReturnStatement({expression:a})}},{key:"parseSwitchStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();if(this.expect(_tokenizer.TokenType.RPAREN),this.expect(_tokenizer.TokenType.LBRACE),this.eat(_tokenizer.TokenType.RBRACE))return new AST.SwitchStatement({discriminant:a,cases:[]});var c=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT)){var d=this.parseSwitchDefault(),_=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT))throw this.createError(_errors$1.ErrorMessages.MULTIPLE_DEFAULTS_IN_SWITCH);return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatementWithDefault({discriminant:a,preDefaultCases:c,defaultCase:d,postDefaultCases:_})}return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatement({discriminant:a,cases:c})}},{key:"parseSwitchCases",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT));)a.push(this.parseSwitchCase());return a}},{key:"parseSwitchCase",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.CASE),this.finishNode(new AST.SwitchCase({test:this.parseExpression(),consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchDefault",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.DEFAULT),this.finishNode(new AST.SwitchDefault({consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchCaseBody",value:function(){return this.expect(_tokenizer.TokenType.COLON),this.parseStatementListInSwitchCaseBody()}},{key:"parseStatementListInSwitchCaseBody",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT)||this.match(_tokenizer.TokenType.CASE));)a.push(this.parseStatementListItem());return a}},{key:"parseThrowStatement",value:function(){var a=this.lex();if(this.hasLineTerminatorBeforeNext)throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.NEWLINE_AFTER_THROW);var c=this.parseExpression();return this.consumeSemicolon(),new AST.ThrowStatement({expression:c})}},{key:"parseTryStatement",value:function(){this.lex();var a=this.parseBlock();if(this.match(_tokenizer.TokenType.CATCH)){var c=this.parseCatchClause();if(this.eat(_tokenizer.TokenType.FINALLY)){var d=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:c,finalizer:d})}return new AST.TryCatchStatement({body:a,catchClause:c})}if(this.eat(_tokenizer.TokenType.FINALLY)){var _=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:null,finalizer:_})}throw this.createError(_errors$1.ErrorMessages.NO_CATCH_OR_FINALLY)}},{key:"parseVariableDeclarationStatement",value:function(){var a=this.parseVariableDeclaration(!0);return this.consumeSemicolon(),new AST.VariableDeclarationStatement({declaration:a})}},{key:"parseWhileStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression(),c=this.getIteratorStatementEpilogue();return new AST.WhileStatement({test:a,body:c})}},{key:"parseWithStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseStatement();return new AST.WithStatement({object:a,body:c})}},{key:"parseCatchClause",value:function(){var a=this.startNode();if(this.lex(),this.expect(_tokenizer.TokenType.LPAREN),this.match(_tokenizer.TokenType.RPAREN)||this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var c=this.parseBindingTarget();this.expect(_tokenizer.TokenType.RPAREN);var d=this.parseBlock();return this.finishNode(new AST.CatchClause({binding:c,body:d}),a)}},{key:"parseBlock",value:function(){var a=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);for(var c=[];!this.match(_tokenizer.TokenType.RBRACE);)c.push(this.parseStatementListItem());return this.expect(_tokenizer.TokenType.RBRACE),this.finishNode(new AST.Block({statements:c}),a)}},{key:"parseVariableDeclaration",value:function(a){var c=this.startNode(),d=this.lex(),_=d.type===_tokenizer.TokenType.VAR?"var":d.type===_tokenizer.TokenType.CONST?"const":"let",b=this.parseVariableDeclaratorList(a);return this.finishNode(new AST.VariableDeclaration({kind:_,declarators:b}),c)}},{key:"parseVariableDeclaratorList",value:function(a){var c=[];do c.push(this.parseVariableDeclarator(a));while(this.eat(_tokenizer.TokenType.COMMA));return c}},{key:"parseVariableDeclarator",value:function(a){var c=this.startNode();if(this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var d=this.allowIn;this.allowIn=!0;var _=this.parseBindingTarget();this.allowIn=d,a&&_.type!=="BindingIdentifier"&&!this.match(_tokenizer.TokenType.ASSIGN)&&this.expect(_tokenizer.TokenType.ASSIGN);var b=null;return this.eat(_tokenizer.TokenType.ASSIGN)&&(b=this.parseAssignmentExpression()),this.finishNode(new AST.VariableDeclarator({binding:_,init:b}),c)}},{key:"isolateCoverGrammar",value:function(a){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;if(this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=a.call(this),this.firstExprError!==null)throw this.firstExprError;return this.isBindingElement=c,this.isAssignmentTarget=d,this.firstExprError=_,b}},{key:"inheritCoverGrammar",value:function(a){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;return this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=a.call(this),this.isBindingElement=this.isBindingElement&&c,this.isAssignmentTarget=this.isAssignmentTarget&&d,this.firstExprError=_||this.firstExprError,b}},{key:"parseExpression",value:function(){var a=this.startNode(),c=this.parseAssignmentExpression();if(this.match(_tokenizer.TokenType.COMMA))for(;!this.eof()&&this.match(_tokenizer.TokenType.COMMA);){this.lex();var d=this.parseAssignmentExpression();c=this.finishNode(new AST.BinaryExpression({left:c,operator:",",right:d}),a)}return c}},{key:"finishArrowParams",value:function(a){var c=a.params,d=c===void 0?null:c,_=a.rest,b=_===void 0?null:_;if(a.type!==ARROW_EXPRESSION_PARAMS)if(a.type==="IdentifierExpression")d=[this.targetToBinding(this.transformDestructuring(a))];else throw this.createUnexpected(this.lookahead);return this.copyNode(a,new AST.FormalParameters({items:d,rest:b}))}},{key:"parseArrowExpressionTail",value:function(a,c,d){this.expect(_tokenizer.TokenType.ARROW);var _=this.allowYieldExpression,b=this.allowAwaitExpression,k=this.firstAwaitLocation;this.allowYieldExpression=!1,this.allowAwaitExpression=c,this.firstAwaitLocation=null;var $=void 0;if(this.match(_tokenizer.TokenType.LBRACE)){var j=this.allowIn;this.allowIn=!0,$=this.parseFunctionBody(),this.allowIn=j}else $=this.parseAssignmentExpression();return this.allowYieldExpression=_,this.allowAwaitExpression=b,this.firstAwaitLocation=k,this.finishNode(new AST.ArrowExpression({isAsync:c,params:a,body:$}),d)}},{key:"parseAssignmentExpression",value:function(){return this.isolateCoverGrammar(this.parseAssignmentExpressionOrTarget)}},{key:"parseAssignmentExpressionOrTarget",value:function(){var a=this.startNode();if(this.allowYieldExpression&&this.match(_tokenizer.TokenType.YIELD))return this.isBindingElement=this.isAssignmentTarget=!1,this.parseYieldExpression();var c=this.parseConditionalExpression();if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){this.isBindingElement=this.isAssignmentTarget=!1,this.firstExprError=null;var d=c.type===ARROW_EXPRESSION_PARAMS&&c.isAsync;return this.parseArrowExpressionTail(this.finishArrowParams(c),d,a)}var _=!1,b=this.lookahead;switch(b.type){case _tokenizer.TokenType.ASSIGN_BIT_OR:case _tokenizer.TokenType.ASSIGN_BIT_XOR:case _tokenizer.TokenType.ASSIGN_BIT_AND:case _tokenizer.TokenType.ASSIGN_SHL:case _tokenizer.TokenType.ASSIGN_SHR:case _tokenizer.TokenType.ASSIGN_SHR_UNSIGNED:case _tokenizer.TokenType.ASSIGN_ADD:case _tokenizer.TokenType.ASSIGN_SUB:case _tokenizer.TokenType.ASSIGN_MUL:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.ASSIGN_MOD:case _tokenizer.TokenType.ASSIGN_EXP:_=!0;break}if(_){if(!this.isAssignmentTarget||!isValidSimpleAssignmentTarget(c))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else if(b.type===_tokenizer.TokenType.ASSIGN){if(!this.isAssignmentTarget)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else return c;this.lex();var k=this.parseAssignmentExpression();this.firstExprError=null;var $=void 0;return b.type===_tokenizer.TokenType.ASSIGN?$=new AST.AssignmentExpression({binding:c,expression:k}):($=new AST.CompoundAssignmentExpression({binding:c,operator:b.type.name,expression:k}),this.isBindingElement=this.isAssignmentTarget=!1),this.finishNode($,a)}},{key:"targetToBinding",value:function(a){var c=this;if(a===null)return null;switch(a.type){case"AssignmentTargetIdentifier":return this.copyNode(a,new AST.BindingIdentifier({name:a.name}));case"ArrayAssignmentTarget":return this.copyNode(a,new AST.ArrayBinding({elements:a.elements.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(a.rest)}));case"ObjectAssignmentTarget":return this.copyNode(a,new AST.ObjectBinding({properties:a.properties.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(a.rest)}));case"AssignmentTargetPropertyIdentifier":return this.copyNode(a,new AST.BindingPropertyIdentifier({binding:this.targetToBinding(a.binding),init:a.init}));case"AssignmentTargetPropertyProperty":return this.copyNode(a,new AST.BindingPropertyProperty({name:a.name,binding:this.targetToBinding(a.binding)}));case"AssignmentTargetWithDefault":return this.copyNode(a,new AST.BindingWithDefault({binding:this.targetToBinding(a.binding),init:a.init}))}throw new Error("Not reached")}},{key:"transformDestructuring",value:function(a){var c=this;switch(a.type){case"DataProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyProperty({name:a.name,binding:this.transformDestructuringWithDefault(a.expression)}));case"ShorthandProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyIdentifier({binding:this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name.name})),init:null}));case"ObjectExpression":{var d=a.properties.length>0?a.properties[a.properties.length-1]:void 0;return d!=null&&d.type==="SpreadProperty"?this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.transformDestructuring(d.expression)})):this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"ArrayExpression":{var _=a.elements[a.elements.length-1];return _!=null&&_.type==="SpreadElement"?this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.copyNode(_.expression,this.transformDestructuring(_.expression))})):this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"IdentifierExpression":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name}));case"StaticPropertyName":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.value}));case"ComputedMemberExpression":return this.copyNode(a,new AST.ComputedMemberAssignmentTarget({object:a.object,expression:a.expression}));case"StaticMemberExpression":return this.copyNode(a,new AST.StaticMemberAssignmentTarget({object:a.object,property:a.property}));case"ArrayAssignmentTarget":case"ObjectAssignmentTarget":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":case"AssignmentTargetIdentifier":case"AssignmentTargetPropertyIdentifier":case"AssignmentTargetPropertyProperty":case"AssignmentTargetWithDefault":return a}throw new Error("Not reached")}},{key:"transformDestructuringWithDefault",value:function(a){switch(a.type){case"AssignmentExpression":return this.copyNode(a,new AST.AssignmentTargetWithDefault({binding:this.transformDestructuring(a.binding),init:a.expression}))}return this.transformDestructuring(a)}},{key:"lookaheadAssignmentExpression",value:function(){if(this.matchIdentifier())return!0;switch(this.lookahead.type){case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.CLASS:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.FALSE:case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.INC:case _tokenizer.TokenType.LBRACE:case _tokenizer.TokenType.LBRACK:case _tokenizer.TokenType.LPAREN:case _tokenizer.TokenType.NEW:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.NULL:case _tokenizer.TokenType.NUMBER:case _tokenizer.TokenType.STRING:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.SUPER:case _tokenizer.TokenType.THIS:case _tokenizer.TokenType.TRUE:case _tokenizer.TokenType.TYPEOF:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TEMPLATE:return!0}return!1}},{key:"parseYieldExpression",value:function(){var a=this.startNode();if(this.lex(),this.hasLineTerminatorBeforeNext)return this.finishNode(new AST.YieldExpression({expression:null}),a);var c=!!this.eat(_tokenizer.TokenType.MUL),d=null;(c||this.lookaheadAssignmentExpression())&&(d=this.parseAssignmentExpression());var _=c?AST.YieldGeneratorExpression:AST.YieldExpression;return this.finishNode(new _({expression:d}),a)}},{key:"parseConditionalExpression",value:function(){var a=this.startNode(),c=this.parseBinaryExpression();if(this.firstExprError)return c;if(this.eat(_tokenizer.TokenType.CONDITIONAL)){this.isBindingElement=this.isAssignmentTarget=!1;var d=this.allowIn;this.allowIn=!0;var _=this.isolateCoverGrammar(this.parseAssignmentExpression);this.allowIn=d,this.expect(_tokenizer.TokenType.COLON);var b=this.isolateCoverGrammar(this.parseAssignmentExpression);return this.finishNode(new AST.ConditionalExpression({test:c,consequent:_,alternate:b}),a)}return c}},{key:"isBinaryOperator",value:function(a){switch(a){case _tokenizer.TokenType.OR:case _tokenizer.TokenType.AND:case _tokenizer.TokenType.BIT_OR:case _tokenizer.TokenType.BIT_XOR:case _tokenizer.TokenType.BIT_AND:case _tokenizer.TokenType.EQ:case _tokenizer.TokenType.NE:case _tokenizer.TokenType.EQ_STRICT:case _tokenizer.TokenType.NE_STRICT:case _tokenizer.TokenType.LT:case _tokenizer.TokenType.GT:case _tokenizer.TokenType.LTE:case _tokenizer.TokenType.GTE:case _tokenizer.TokenType.INSTANCEOF:case _tokenizer.TokenType.SHL:case _tokenizer.TokenType.SHR:case _tokenizer.TokenType.SHR_UNSIGNED:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.MUL:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.MOD:return!0;case _tokenizer.TokenType.IN:return this.allowIn;default:return!1}}},{key:"parseBinaryExpression",value:function(){var a=this,c=this.startNode(),d=this.parseExponentiationExpression();if(this.firstExprError)return d;var _=this.lookahead.type;if(!this.isBinaryOperator(_))return d;this.isBindingElement=this.isAssignmentTarget=!1,this.lex();var b=[];b.push({startState:c,left:d,operator:_,precedence:BinaryPrecedence$1[_.name]}),c=this.startNode();var k=this.isolateCoverGrammar(this.parseExponentiationExpression);for(_=this.lookahead.type;this.isBinaryOperator(_);){for(var $=BinaryPrecedence$1[_.name];b.length&&$<=b[b.length-1].precedence;){var j=b[b.length-1],_e=j.operator;d=j.left,b.pop(),c=j.startState,k=this.finishNode(new AST.BinaryExpression({left:d,operator:_e.name,right:k}),c)}this.lex(),b.push({startState:c,left:k,operator:_,precedence:$}),c=this.startNode(),k=this.isolateCoverGrammar(this.parseExponentiationExpression),_=this.lookahead.type}return b.reduceRight(function(et,tt){return a.finishNode(new AST.BinaryExpression({left:tt.left,operator:tt.operator.name,right:et}),tt.startState)},k)}},{key:"parseExponentiationExpression",value:function(){var a=this.startNode(),c=this.lookahead.type===_tokenizer.TokenType.LPAREN,d=this.parseUnaryExpression();if(this.lookahead.type!==_tokenizer.TokenType.EXP)return d;if(d.type==="UnaryExpression"&&!c)throw this.createError(_errors$1.ErrorMessages.INVALID_EXPONENTIATION_LHS);this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=this.isolateCoverGrammar(this.parseExponentiationExpression);return this.finishNode(new AST.BinaryExpression({left:d,operator:"**",right:_}),a)}},{key:"parseUnaryExpression",value:function(){if(this.lookahead.type.klass!==_tokenizer.TokenClass.Punctuator&&this.lookahead.type.klass!==_tokenizer.TokenClass.Keyword)return this.parseUpdateExpression();var a=this.startNode();if(this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT)){this.isBindingElement=this.isAssignmentTarget=!1;var c=this.isolateCoverGrammar(this.parseUnaryExpression);return this.finishNode(new AST.AwaitExpression({expression:c}),a)}var d=this.lookahead;if(!isPrefixOperator(d))return this.parseUpdateExpression();this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=void 0;if(isUpdateOperator(d)){var b=this.getLocation(),k=this.isolateCoverGrammar(this.parseUnaryExpression);if(!isValidSimpleAssignmentTarget(k))throw this.createErrorWithLocation(b,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);k=this.transformDestructuring(k),_=new AST.UpdateExpression({isPrefix:!0,operator:d.value,operand:k})}else{var $=this.isolateCoverGrammar(this.parseUnaryExpression);_=new AST.UnaryExpression({operator:d.value,operand:$})}return this.finishNode(_,a)}},{key:"parseUpdateExpression",value:function(){var a=this.getLocation(),c=this.startNode(),d=this.parseLeftHandSideExpression({allowCall:!0});if(this.firstExprError||this.hasLineTerminatorBeforeNext)return d;var _=this.lookahead;if(!isUpdateOperator(_))return d;if(this.lex(),this.isBindingElement=this.isAssignmentTarget=!1,!isValidSimpleAssignmentTarget(d))throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);return d=this.transformDestructuring(d),this.finishNode(new AST.UpdateExpression({isPrefix:!1,operator:_.value,operand:d}),c)}},{key:"parseLeftHandSideExpression",value:function(a){var c=this,d=a.allowCall,_=this.startNode(),b=this.allowIn;this.allowIn=!0;var k=void 0,$=this.lookahead;if(this.eat(_tokenizer.TokenType.SUPER))if(this.isBindingElement=!1,this.isAssignmentTarget=!1,k=this.finishNode(new AST.Super,_),this.match(_tokenizer.TokenType.LPAREN))if(d)k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.LBRACK))k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_),this.isAssignmentTarget=!0;else if(this.match(_tokenizer.TokenType.PERIOD))k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_),this.isAssignmentTarget=!0;else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.NEW))this.isBindingElement=this.isAssignmentTarget=!1,k=this.parseNewExpression();else if(this.match(_tokenizer.TokenType.ASYNC)){if(k=this.parsePrimaryExpression(),k.type==="IdentifierExpression"&&d&&!this.hasLineTerminatorBeforeNext){if(this.matchIdentifier()){var j=this.startNode(),_e=this.allowAwaitExpression;this.allowAwaitExpression=!0;var et=this.parseBindingIdentifier();return this.allowAwaitExpression=_e,this.ensureArrow(),this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:[et],rest:null,isAsync:!0},j)}if(this.match(_tokenizer.TokenType.LPAREN)){var tt=this.startNode(),nt=this.firstAwaitLocation;this.firstAwaitLocation=null;var st=this.parseArgumentList(),rt=st.args,it=st.locationFollowingFirstSpread;if(this.isBindingElement&&!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){if(it!==null)throw this.createErrorWithLocation(it,_errors$1.ErrorMessages.UNEXPECTED_TOKEN(","));if(this.firstAwaitLocation!==null)throw this.createErrorWithLocation(this.firstAwaitLocation,_errors$1.ErrorMessages.NO_AWAIT_IN_ASYNC_PARAMS);var at=null;if(rt.length>0&&rt[rt.length-1].type==="SpreadElement"){if(at=this.targetToBinding(this.transformDestructuringWithDefault(rt[rt.length-1].expression)),at.init!=null)throw this.createError(_errors$1.ErrorMessages.UNEXPECTED_REST_PARAMETERS_INITIALIZATION);rt=rt.slice(0,-1)}var ot=rt.map(function(ht){return c.targetToBinding(c.transformDestructuringWithDefault(ht))});return this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:ot,rest:at,isAsync:!0},tt)}this.firstAwaitLocation=nt||this.firstAwaitLocation,this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:rt}),_)}}}else if(k=this.parsePrimaryExpression(),this.firstExprError)return k;for(;;)if(d&&this.match(_tokenizer.TokenType.LPAREN))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else if(this.match(_tokenizer.TokenType.LBRACK))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_);else if(this.match(_tokenizer.TokenType.PERIOD))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_);else if(this.match(_tokenizer.TokenType.TEMPLATE))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.TemplateExpression({tag:k,elements:this.parseTemplateElements()}),_);else break;return this.allowIn=b,k}},{key:"parseTemplateElements",value:function(){var a=this.startNode(),c=this.lookahead;if(c.tail)return this.lex(),[this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)];for(var d=[this.finishNode(new AST.TemplateElement({rawValue:this.lex().slice.text.slice(1,-2)}),a)];;){if(d.push(this.parseExpression()),!this.match(_tokenizer.TokenType.RBRACE))throw this.createILLEGAL();if(this.index=this.startIndex,this.line=this.startLine,this.lineStart=this.startLineStart,this.lookahead=this.scanTemplateElement(),a=this.startNode(),c=this.lex(),c.tail)return d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)),d;d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-2)}),a))}}},{key:"parseStaticMember",value:function(){if(this.lex(),this.lookahead.type.klass.isIdentifierName)return this.lex().value;throw this.createUnexpected(this.lookahead)}},{key:"parseComputedMember",value:function(){this.lex();var a=this.parseExpression();return this.expect(_tokenizer.TokenType.RBRACK),a}},{key:"parseNewExpression",value:function(){var a=this,c=this.startNode();if(this.lex(),this.eat(_tokenizer.TokenType.PERIOD))return this.expectContextualKeyword("target"),this.finishNode(new AST.NewTargetExpression,c);var d=this.isolateCoverGrammar(function(){return a.parseLeftHandSideExpression({allowCall:!1})});return this.finishNode(new AST.NewExpression({callee:d,arguments:this.match(_tokenizer.TokenType.LPAREN)?this.parseArgumentList().args:[]}),c)}},{key:"parseRegexFlags",value:function(a){for(var c=!1,d=!1,_=!1,b=!1,k=!1,$=!1,j=0;j1?e-1:0),a=1;a1&&c.slice(1).forEach(function(d){a.addError(s(d))})}),this}},{key:"enforceConflictingLexicallyDeclaredNames",value:function(s,a){var c=this;return this.lexicallyDeclaredNames.forEachEntry(function(d,_){s.has(_)&&d.forEach(function(b){c.addError(a(b))})}),this}},{key:"observeFunctionDeclaration",value:function(){return this.observeVarBoundary(),addEach(this.functionDeclarationNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"functionDeclarationNamesAreLexical",value:function(){return addEach(this.lexicallyDeclaredNames,this.functionDeclarationNames),this.functionDeclarationNames=new _multimap2.default,this}},{key:"observeVarDeclaration",value:function(){return addEach(this.varDeclaredNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"recordForOfVars",value:function(){var s=this;return this.varDeclaredNames.forEach(function(a){s.forOfVarDeclaredNames.push(a)}),this}},{key:"observeVarBoundary",value:function(){return this.lexicallyDeclaredNames=new _multimap2.default,this.functionDeclarationNames=new _multimap2.default,this.varDeclaredNames=new _multimap2.default,this.forOfVarDeclaredNames=[],this}},{key:"exportName",value:function(s,a){return this.exportedNames.set(s,a),this}},{key:"exportDeclaredNames",value:function(){return addEach(this.exportedNames,this.lexicallyDeclaredNames,this.varDeclaredNames),addEach(this.exportedBindings,this.lexicallyDeclaredNames,this.varDeclaredNames),this}},{key:"exportBinding",value:function(s,a){return this.exportedBindings.set(s,a),this}},{key:"clearExportedBindings",value:function(){return this.exportedBindings=new _multimap2.default,this}},{key:"observeYieldExpression",value:function(s){return this.yieldExpressions.push(s),this}},{key:"clearYieldExpressions",value:function(){return this.yieldExpressions=[],this}},{key:"observeAwaitExpression",value:function(s){return this.awaitExpressions.push(s),this}},{key:"clearAwaitExpressions",value:function(){return this.awaitExpressions=[],this}},{key:"addError",value:function(s){return this.errors.push(s),this}},{key:"addStrictError",value:function(s){return this.strictErrors.push(s),this}},{key:"enforceStrictErrors",value:function(){return[].push.apply(this.errors,this.strictErrors),this.strictErrors=[],this}},{key:"concat",value:function(s){return this===identity?s:s===identity?this:([].push.apply(this.errors,s.errors),[].push.apply(this.strictErrors,s.strictErrors),[].push.apply(this.usedLabelNames,s.usedLabelNames),[].push.apply(this.freeBreakStatements,s.freeBreakStatements),[].push.apply(this.freeContinueStatements,s.freeContinueStatements),[].push.apply(this.freeLabeledBreakStatements,s.freeLabeledBreakStatements),[].push.apply(this.freeLabeledContinueStatements,s.freeLabeledContinueStatements),[].push.apply(this.newTargetExpressions,s.newTargetExpressions),addEach(this.boundNames,s.boundNames),addEach(this.lexicallyDeclaredNames,s.lexicallyDeclaredNames),addEach(this.functionDeclarationNames,s.functionDeclarationNames),addEach(this.varDeclaredNames,s.varDeclaredNames),[].push.apply(this.forOfVarDeclaredNames,s.forOfVarDeclaredNames),addEach(this.exportedNames,s.exportedNames),addEach(this.exportedBindings,s.exportedBindings),[].push.apply(this.superCallExpressions,s.superCallExpressions),[].push.apply(this.superCallExpressionsInConstructorMethod,s.superCallExpressionsInConstructorMethod),[].push.apply(this.superPropertyExpressions,s.superPropertyExpressions),[].push.apply(this.yieldExpressions,s.yieldExpressions),[].push.apply(this.awaitExpressions,s.awaitExpressions),this)}}],[{key:"empty",value:function(){return identity}}]),o}();identity=new EarlyErrorState;Object.getOwnPropertyNames(EarlyErrorState.prototype).forEach(function(o){o!=="constructor"&&Object.defineProperty(identity,o,{value:function(){return EarlyErrorState.prototype[o].apply(new EarlyErrorState,arguments)},enumerable:!1,writable:!0,configurable:!0})});earlyErrorState.EarlyError=function(o){_inherits$4(e,o);function e(s,a){_classCallCheck$7(this,e);var c=_possibleConstructorReturn$4(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,a));return c.node=s,c.message=a,c}return e}(Error);Object.defineProperty(earlyErrors,"__esModule",{value:!0});earlyErrors.EarlyErrorChecker=void 0;var _createClass$5=function(){function o(e,s){for(var a=0;a1&&s.slice(1).forEach(function(a){e=e.addError(new _earlyErrorState.EarlyError(a,"Duplicate constructor method in class"))}),e}var SUPERCALL_ERROR=function(e){return new _earlyErrorState.EarlyError(e,_errors.ErrorMessages.ILLEGAL_SUPER_CALL)},SUPERPROPERTY_ERROR=function(e){return new _earlyErrorState.EarlyError(e,"Member access on super must be in a method")},DUPLICATE_BINDING=function(e){return new _earlyErrorState.EarlyError(e,"Duplicate binding "+JSON.stringify(e.name))},FREE_CONTINUE=function(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement")},UNBOUND_CONTINUE=function(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e.label))},FREE_BREAK=function(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within an iteration statement or a switch statement")},UNBOUND_BREAK=function(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within a statement with label "+JSON.stringify(e.label))};earlyErrors.EarlyErrorChecker=function(o){_inherits$3(e,o);function e(){return _classCallCheck$6(this,e),_possibleConstructorReturn$3(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,_earlyErrorState.EarlyErrorState))}return _createClass$5(e,[{key:"reduceAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceAssignmentTargetIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c}},{key:"reduceArrowExpression",value:function(a,c){var d=c.params,_=c.body,b=a.params.rest==null&&a.params.items.every(function($){return $.type==="BindingIdentifier"});d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a.body.type==="FunctionBody"&&(_=_.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors(),_=_.enforceStrictErrors())),d.yieldExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain yield expressions"))}),d.awaitExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain await expressions"))});var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceArrowExpression",this).call(this,a,{params:d,body:_});return!b&&a.body.type==="FunctionBody"&&isStrictFunctionBody(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),k=k.clearYieldExpressions(),k=k.clearAwaitExpressions(),k=k.observeVarBoundary(),k}},{key:"reduceAwaitExpression",value:function(a,c){var d=c.expression;return d.observeAwaitExpression(a)}},{key:"reduceBindingIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c=c.bindName(a.name,a),c}},{key:"reduceBlock",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBlock",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a=a.observeLexicalBoundary(),a}},{key:"reduceBreakStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBreakStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeBreakStatement(a):c.addFreeLabeledBreakStatement(a),c}},{key:"reduceCallExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCallExpression",this).apply(this,arguments);return a.callee.type==="Super"&&(c=c.observeSuperCallExpression(a)),c}},{key:"reduceCatchClause",value:function(a,c){var d=c.binding,_=c.body;d=d.observeLexicalDeclaration(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(_.previousLexicallyDeclaredNames,DUPLICATE_BINDING),d.lexicallyDeclaredNames.forEachEntry(function(k,$){_.varDeclaredNames.has($)&&_.varDeclaredNames.get($).forEach(function(j){_.forOfVarDeclaredNames.indexOf(j)>=0&&(d=d.addError(DUPLICATE_BINDING(j)))})});var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCatchClause",this).call(this,a,{binding:d,body:_});return b=b.observeLexicalBoundary(),b}},{key:"reduceClassDeclaration",value:function(a,c){var d=c.name,_=c.super,b=c.elements,k=d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),a.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(a,k),k=k.observeLexicalDeclaration(),k}},{key:"reduceClassElement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceClassElement",this).apply(this,arguments);return!a.isStatic&&isSpecialMethod(a.method)&&(c=c.addError(new _earlyErrorState.EarlyError(a,_errors.ErrorMessages.ILLEGAL_CONSTRUCTORS))),a.isStatic&&a.method.name.type==="StaticPropertyName"&&a.method.name.value==="prototype"&&(c=c.addError(new _earlyErrorState.EarlyError(a,'Static class methods cannot be named "prototype"'))),c}},{key:"reduceClassExpression",value:function(a,c){var d=c.name,_=c.super,b=c.elements,k=a.name==null?this.identity:d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),a.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(a,k),k=k.clearBoundNames(),k}},{key:"reduceCompoundAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCompoundAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceComputedMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceComputedMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceContinueStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceContinueStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeContinueStatement(a):c.addFreeLabeledContinueStatement(a),c}},{key:"reduceDoWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceDoWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a do-while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements(),c=c.clearFreeBreakStatements(),c}},{key:"reduceExport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExport",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.exportDeclaredNames(),a}},{key:"reduceExportFrom",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFrom",this).apply(this,arguments);return a=a.clearExportedBindings(),a}},{key:"reduceExportFromSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFromSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name,a),c=c.exportBinding(a.name,a),c}},{key:"reduceExportLocalSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportLocalSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name.name,a),c=c.exportBinding(a.name.name,a),c}},{key:"reduceExportDefault",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportDefault",this).apply(this,arguments);return c=c.functionDeclarationNamesAreLexical(),c=c.exportName("default",a),c}},{key:"reduceFormalParameters",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFormalParameters",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceForStatement",value:function(a,c){var d=c.init,_=c.test,b=c.update,k=c.body;d!=null&&(d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(k.varDeclaredNames,DUPLICATE_BINDING));var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForStatement",this).call(this,a,{init:d,test:_,update:b,body:k});return a.init!=null&&a.init.type==="VariableDeclaration"&&a.init.kind==="const"&&a.init.declarators.forEach(function(j){j.init==null&&($=$.addError(new _earlyErrorState.EarlyError(j,"Constant lexical declarations must have an initialiser")))}),isLabelledFunction(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for statement must not be a labeled function declaration"))),$=$.clearFreeContinueStatements(),$=$.clearFreeBreakStatements(),$=$.observeLexicalBoundary(),$}},{key:"reduceForInStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForInStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-in statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForOfStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-of statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForAwaitStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-await statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceFunctionBody",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionBody",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.clearUsedLabelNames(),c=c.clearYieldExpressions(),c=c.clearAwaitExpressions(),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceFunctionDeclaration",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||a.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e){_e.length>1&&_e.slice(1).forEach(function(et){_=_[$](DUPLICATE_BINDING(et))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionDeclaration",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&(j=j.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeFunctionDeclaration(),j}},{key:"reduceFunctionExpression",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||a.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e,et){_e.length>1&&_e.slice(1).forEach(function(tt){_=_[$](new _earlyErrorState.EarlyError(tt,"Duplicate binding "+JSON.stringify(et)))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionExpression",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&(j=j.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearBoundNames(),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeVarBoundary(),j}},{key:"reduceGetter",value:function(a,c){var d=c.name,_=c.body;_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors());var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceGetter",this).call(this,a,{name:d,body:_});return b=b.observeVarBoundary(),b}},{key:"reduceIdentifierExpression",value:function(a){var c=this.identity;return(0,_utils.isStrictModeReservedWord)(a.name)&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in expression position in strict mode"))),c}},{key:"reduceIfStatement",value:function(a,c){var d=c.test,_=c.consequent,b=c.alternate;return isLabelledFunction(a.consequent)&&(_=_.addError(new _earlyErrorState.EarlyError(a.consequent,"The consequent of an if statement must not be a labeled function declaration"))),a.alternate!=null&&isLabelledFunction(a.alternate)&&(b=b.addError(new _earlyErrorState.EarlyError(a.alternate,"The alternate of an if statement must not be a labeled function declaration"))),a.consequent.type==="FunctionDeclaration"&&(_=_.addStrictError(new _earlyErrorState.EarlyError(a.consequent,"FunctionDeclarations in IfStatements are disallowed in strict mode")),_=_.observeLexicalBoundary()),a.alternate!=null&&a.alternate.type==="FunctionDeclaration"&&(b=b.addStrictError(new _earlyErrorState.EarlyError(a.alternate,"FunctionDeclarations in IfStatements are disallowed in strict mode")),b=b.observeLexicalBoundary()),_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceIfStatement",this).call(this,a,{test:d,consequent:_,alternate:b})}},{key:"reduceImport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImport",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceImportNamespace",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImportNamespace",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceLabeledStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceLabeledStatement",this).apply(this,arguments);return(a.label==="yield"||(0,_utils.isStrictModeReservedWord)(a.label))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.label)+" must not be in label position in strict mode"))),c.usedLabelNames.indexOf(a.label)>=0&&(c=c.addError(new _earlyErrorState.EarlyError(a,"Label "+JSON.stringify(a.label)+" has already been declared"))),a.body.type==="FunctionDeclaration"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Labeled FunctionDeclarations are disallowed in strict mode"))),c=isIterationStatement(a.body)?c.observeIterationLabel(a.label):c.observeNonIterationLabel(a.label),c}},{key:"reduceLiteralRegExpExpression",value:function(){var a=this.identity;return a}},{key:"reduceMethod",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(j){return j.type==="BindingIdentifier"});_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),a.name.type==="StaticPropertyName"&&a.name.value==="constructor"?(b=b.observeConstructorMethod(),_=_.observeConstructorMethod()):(b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR)),a.isGenerator&&_.yieldExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Async function parameters must not contain await expressions"))}),b=b.clearSuperPropertyExpressions(),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceMethod",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.clearYieldExpressions(),$=$.clearAwaitExpressions(),$=$.observeVarBoundary(),$}},{key:"reduceModule",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceModule",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a.exportedNames.forEachEntry(function(c,d){c.length>1&&c.slice(1).forEach(function(_){a=a.addError(new _earlyErrorState.EarlyError(_,"Duplicate export "+JSON.stringify(d)))})}),a.exportedBindings.forEachEntry(function(c,d){!a.lexicallyDeclaredNames.has(d)&&!a.varDeclaredNames.has(d)&&c.forEach(function(_){a=a.addError(new _earlyErrorState.EarlyError(_,"Exported binding "+JSON.stringify(d)+" is not declared"))})}),a.newTargetExpressions.forEach(function(c){a=a.addError(new _earlyErrorState.EarlyError(c,"new.target must be within function (but not arrow expression) code"))}),a=a.enforceFreeContinueStatementErrors(FREE_CONTINUE),a=a.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),a=a.enforceFreeBreakStatementErrors(FREE_BREAK),a=a.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),a=a.enforceSuperCallExpressions(SUPERCALL_ERROR),a=a.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a=a.enforceStrictErrors(),a}},{key:"reduceNewTargetExpression",value:function(a){return this.identity.observeNewTargetExpression(a)}},{key:"reduceObjectExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceObjectExpression",this).apply(this,arguments);c=c.enforceSuperCallExpressionsInConstructorMethod(SUPERCALL_ERROR);var d=a.properties.filter(function(_){return _.type==="DataProperty"&&_.name.type==="StaticPropertyName"&&_.name.value==="__proto__"});return d.slice(1).forEach(function(_){c=c.addError(new _earlyErrorState.EarlyError(_,"Duplicate __proto__ property in object literal not allowed"))}),c}},{key:"reduceUpdateExpression",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUpdateExpression",this).apply(this,arguments);return a=a.clearBoundNames(),a}},{key:"reduceUnaryExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUnaryExpression",this).apply(this,arguments);return a.operator==="delete"&&a.operand.type==="IdentifierExpression"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Identifier expressions must not be deleted in strict mode"))),c}},{key:"reduceScript",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceScript",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c.newTargetExpressions.forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,"new.target must be within function (but not arrow expression) code"))}),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.enforceSuperCallExpressions(SUPERCALL_ERROR),c=c.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceSetter",value:function(a,c){var d=c.name,_=c.param,b=c.body,k=a.param.type==="BindingIdentifier";_=_.observeLexicalDeclaration(),_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),b=b.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceSetter",this).call(this,a,{name:d,param:_,body:b});return!k&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.observeVarBoundary(),$}},{key:"reduceStaticMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceStaticMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceSwitchStatement",value:function(a,c){var d=c.discriminant,_=c.cases,b=this.append.apply(this,_toConsumableArray$3(_));b=b.functionDeclarationNamesAreLexical(),b=b.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING),b=b.observeLexicalBoundary();var k=this.append(d,b);return k=k.clearFreeBreakStatements(),k}},{key:"reduceSwitchStatementWithDefault",value:function(a,c){var d=c.discriminant,_=c.preDefaultCases,b=c.defaultCase,k=c.postDefaultCases,$=this.append.apply(this,[b].concat(_toConsumableArray$3(_),_toConsumableArray$3(k)));$=$.functionDeclarationNamesAreLexical(),$=$.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),$=$.enforceConflictingLexicallyDeclaredNames($.varDeclaredNames,DUPLICATE_BINDING),$=$.observeLexicalBoundary();var j=this.append(d,$);return j=j.clearFreeBreakStatements(),j}},{key:"reduceVariableDeclaration",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclaration",this).apply(this,arguments);switch(a.kind){case"const":case"let":{c=c.observeLexicalDeclaration(),c.lexicallyDeclaredNames.has("let")&&c.lexicallyDeclaredNames.get("let").forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,'Lexical declarations must not have a binding named "let"'))});break}case"var":c=c.observeVarDeclaration();break}return c}},{key:"reduceVariableDeclarationStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclarationStatement",this).apply(this,arguments);return a.declaration.kind==="const"&&a.declaration.declarators.forEach(function(d){d.init==null&&(c=c.addError(new _earlyErrorState.EarlyError(d,"Constant lexical declarations must have an initialiser")))}),c}},{key:"reduceWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements().clearFreeBreakStatements(),c}},{key:"reduceWithStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWithStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a with statement must not be a labeled function declaration"))),c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Strict mode code must not include a with statement")),c}},{key:"reduceYieldExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}},{key:"reduceYieldGeneratorExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldGeneratorExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}}],[{key:"check",value:function(a){return(0,_shiftReducer2.default)(new e,a).errors}}]),e}(_shiftReducer$1.MonoidalReducer);(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.TokenType=o.TokenClass=o.Tokenizer=o.ParserWithLocation=o.GenericParser=o.EarlyErrorChecker=o.parseScriptWithLocation=o.parseModuleWithLocation=o.parseScript=o.parseModule=void 0;var e=function(){function st(rt,it){for(var at=0;at1&&arguments[1]!==void 0?arguments[1]:{},ot=at.earlyErrors,ht=ot===void 0?!0:ot,ct=new c.GenericParser(it),lt=ct[st]();if(ht){var ut=d.EarlyErrorChecker.check(lt);if(ut.length>0)throw new a.JsError(0,1,0,ut[0].message)}return lt}}function tt(st){return function(it){var at=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ot=at.earlyErrors,ht=ot===void 0?!0:ot,ct=new _e(it),lt=ct[st]();if(ht){var ut=d.EarlyErrorChecker.check(lt);if(ut.length>0){var dt=ut[0],pt=dt.node,gt=dt.message,yt=ct.locations.get(pt).start,ft=yt.offset,mt=yt.line,Et=yt.column;throw new a.JsError(ft,mt,Et,gt)}}return{tree:lt,locations:ct.locations,comments:ct.comments}}}o.parseModule=et("parseModule");var nt=o.parseScript=et("parseScript");o.parseModuleWithLocation=tt("parseModule"),o.parseScriptWithLocation=tt("parseScript"),o.default=nt,o.EarlyErrorChecker=d.EarlyErrorChecker,o.GenericParser=c.GenericParser,o.ParserWithLocation=_e})(dist$7);var dist$2={};Object.defineProperty(dist$2,"__esModule",{value:!0});var _default=dist$2.default=function(){var o={},e={typeName:"Boolean"},s={typeName:"Number"},a={typeName:"String"};function c(pn){return{typeName:"Maybe",argument:pn}}function d(pn){return{typeName:"List",argument:pn}}function _(pn){return{typeName:"Const",argument:pn}}function b(){return{typeName:"Union",arguments:[].slice.call(arguments,0)}}var k={typeName:"Enum",values:["ArrayAssignmentTarget","ArrayBinding","ArrayExpression","ArrowExpression","AssignmentExpression","AssignmentTargetIdentifier","AssignmentTargetPropertyIdentifier","AssignmentTargetPropertyProperty","AssignmentTargetWithDefault","AwaitExpression","BinaryExpression","BindingIdentifier","BindingPropertyIdentifier","BindingPropertyProperty","BindingWithDefault","Block","BlockStatement","BreakStatement","CallExpression","CatchClause","ClassDeclaration","ClassElement","ClassExpression","CompoundAssignmentExpression","ComputedMemberAssignmentTarget","ComputedMemberExpression","ComputedPropertyName","ConditionalExpression","ContinueStatement","DataProperty","DebuggerStatement","Directive","DoWhileStatement","EmptyStatement","Export","ExportAllFrom","ExportDefault","ExportFrom","ExportFromSpecifier","ExportLocalSpecifier","ExportLocals","ExpressionStatement","ForAwaitStatement","ForInStatement","ForOfStatement","ForStatement","FormalParameters","FunctionBody","FunctionDeclaration","FunctionExpression","Getter","IdentifierExpression","IfStatement","Import","ImportNamespace","ImportSpecifier","LabeledStatement","LiteralBooleanExpression","LiteralInfinityExpression","LiteralNullExpression","LiteralNumericExpression","LiteralRegExpExpression","LiteralStringExpression","Method","Module","NewExpression","NewTargetExpression","ObjectAssignmentTarget","ObjectBinding","ObjectExpression","ReturnStatement","Script","Setter","ShorthandProperty","SpreadElement","SpreadProperty","StaticMemberAssignmentTarget","StaticMemberExpression","StaticPropertyName","Super","SwitchCase","SwitchDefault","SwitchStatement","SwitchStatementWithDefault","TemplateElement","TemplateExpression","ThisExpression","ThrowStatement","TryCatchStatement","TryFinallyStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarationStatement","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","YieldGeneratorExpression"]},$={typeName:"Enum",values:["==","!=","===","!==","<","<=",">",">=","in","instanceof","<<",">>",">>>","+","-","*","/","%","**",",","||","&&","|","^","&"]},j={typeName:"Enum",values:["+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","|=","^=","&="]},_e={typeName:"Enum",values:["+","-","!","~","typeof","void","delete"]},et={typeName:"Enum",values:["++","--"]},tt={typeName:"Enum",values:["var","let","const"]},nt=o.ArrayAssignmentTarget={},st=o.ArrayBinding={},rt=o.ArrayExpression={},it=o.ArrowExpression={},at=o.AssignmentExpression={},ot=o.AssignmentTargetIdentifier={},ht=o.AssignmentTargetPropertyIdentifier={},ct=o.AssignmentTargetPropertyProperty={},lt=o.AssignmentTargetWithDefault={},ut=o.AwaitExpression={},dt=o.BinaryExpression={},pt=o.BindingIdentifier={},gt=o.BindingPropertyIdentifier={},yt=o.BindingPropertyProperty={},ft=o.BindingWithDefault={},mt=o.Block={},Et=o.BlockStatement={},_t=o.BreakStatement={},St=o.CallExpression={},vt=o.CatchClause={},Ct=o.ClassDeclaration={},xt=o.ClassElement={},bt=o.ClassExpression={},At=o.CompoundAssignmentExpression={},Ot=o.ComputedMemberAssignmentTarget={},Tt=o.ComputedMemberExpression={},Rt=o.ComputedPropertyName={},$t=o.ConditionalExpression={},It=o.ContinueStatement={},wt=o.DataProperty={},qt=o.DebuggerStatement={},jt=o.Directive={},Bt=o.DoWhileStatement={},Kt=o.EmptyStatement={},Jt=o.Export={},en=o.ExportAllFrom={},tn=o.ExportDefault={},Ft=o.ExportFrom={},Pt=o.ExportFromSpecifier={},Qt=o.ExportLocalSpecifier={},Lt=o.ExportLocals={},Mt=o.ExpressionStatement={},Wt=o.ForAwaitStatement={},Gt=o.ForInStatement={},zt=o.ForOfStatement={},nn=o.ForStatement={},Xt=o.FormalParameters={},Zt=o.FunctionBody={},sn=o.FunctionDeclaration={},fn=o.FunctionExpression={},Sn=o.Getter={},ln=o.IdentifierExpression={},_n=o.IfStatement={},vn=o.Import={},Dn=o.ImportNamespace={},mn=o.ImportSpecifier={},On=o.LabeledStatement={},Cn=o.LiteralBooleanExpression={},xn=o.LiteralInfinityExpression={},Tn=o.LiteralNullExpression={},bn=o.LiteralNumericExpression={},Fn=o.LiteralRegExpExpression={},kn=o.LiteralStringExpression={},wn=o.Method={},Bn=o.Module={},Nn=o.NewExpression={},Pn=o.NewTargetExpression={},Yt=o.ObjectAssignmentTarget={},Ut=o.ObjectBinding={},Rn=o.ObjectExpression={},In=o.ReturnStatement={},$n=o.Script={},Mn=o.Setter={},Ln=o.ShorthandProperty={},cn=o.SpreadElement={},Wn=o.SpreadProperty={},Qn=o.StaticMemberAssignmentTarget={},jn=o.StaticMemberExpression={},Vn=o.StaticPropertyName={},an=o.Super={},hn=o.SwitchCase={},gn=o.SwitchDefault={},qn=o.SwitchStatement={},Gn=o.SwitchStatementWithDefault={},yn=o.TemplateElement={},Un=o.TemplateExpression={},zn=o.ThisExpression={},Yn=o.ThrowStatement={},Hn=o.TryCatchStatement={},Xn=o.TryFinallyStatement={},Zn=o.UnaryExpression={},Kn=o.UpdateExpression={},rn=o.VariableDeclaration={},Jn=o.VariableDeclarationStatement={},En=o.VariableDeclarator={},er=o.WhileStatement={},tr=o.WithStatement={},nr=o.YieldExpression={},rr=o.YieldGeneratorExpression={},gr=b(Tt,jn),ir=b(ht,ct);b(Ct,bt);var sr=b(Jt,en,tn,Ft,Lt),un=b(Rt,Vn);b(sn,fn);var ar=b(vn,Dn),yr=b(Bt,Wt,Gt,zt,nn,er),Ht=b(Ot,Qn),or=b(gt,yt),ur=b(Sn,wn,Mn),Er=b(Bn,$n),Ar=b(ot,pt,ln),Sr=b(wt,ur),Nt=b(rt,it,at,ut,dt,St,bt,At,$t,fn,ln,Cn,xn,Tn,bn,Fn,kn,gr,Nn,Pn,Rn,Un,zn,Zn,Kn,nr,rr),Vt=b(Et,_t,Ct,It,qt,Kt,Mt,sn,_n,yr,On,In,qn,Gn,Yn,Hn,Xn,Jn,tr),lr=b(Sr,Ln,Wn);return b(nt,st,ir,lt,or,ft,mt,vt,xt,jt,sr,Pt,Qt,Nt,Xt,Zt,ar,mn,Ht,Yt,Ut,lr,Er,un,cn,Vt,an,hn,gn,yn,rn,En,Ar),nt.typeName="ArrayAssignmentTarget",nt.fields=[{name:"type",type:_(k),value:"ArrayAssignmentTarget"},{name:"elements",type:d(c(b(lt,b(b(nt,Yt),b(ot,Ht)))))},{name:"rest",type:c(b(b(nt,Yt),b(ot,Ht)))}],st.typeName="ArrayBinding",st.fields=[{name:"type",type:_(k),value:"ArrayBinding"},{name:"elements",type:d(c(b(ft,b(pt,b(st,Ut)))))},{name:"rest",type:c(b(pt,b(st,Ut)))}],rt.typeName="ArrayExpression",rt.fields=[{name:"type",type:_(k),value:"ArrayExpression"},{name:"elements",type:d(c(b(Nt,cn)))}],it.typeName="ArrowExpression",it.fields=[{name:"type",type:_(k),value:"ArrowExpression"},{name:"isAsync",type:e},{name:"params",type:Xt},{name:"body",type:b(Nt,Zt)}],at.typeName="AssignmentExpression",at.fields=[{name:"type",type:_(k),value:"AssignmentExpression"},{name:"binding",type:b(b(nt,Yt),b(ot,Ht))},{name:"expression",type:Nt}],ot.typeName="AssignmentTargetIdentifier",ot.fields=[{name:"type",type:_(k),value:"AssignmentTargetIdentifier"},{name:"name",type:a}],ht.typeName="AssignmentTargetPropertyIdentifier",ht.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyIdentifier"},{name:"binding",type:ot},{name:"init",type:c(Nt)}],ct.typeName="AssignmentTargetPropertyProperty",ct.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyProperty"},{name:"name",type:un},{name:"binding",type:b(lt,b(b(nt,Yt),b(ot,Ht)))}],lt.typeName="AssignmentTargetWithDefault",lt.fields=[{name:"type",type:_(k),value:"AssignmentTargetWithDefault"},{name:"binding",type:b(b(nt,Yt),b(ot,Ht))},{name:"init",type:Nt}],ut.typeName="AwaitExpression",ut.fields=[{name:"type",type:_(k),value:"AwaitExpression"},{name:"expression",type:Nt}],dt.typeName="BinaryExpression",dt.fields=[{name:"type",type:_(k),value:"BinaryExpression"},{name:"left",type:Nt},{name:"operator",type:$},{name:"right",type:Nt}],pt.typeName="BindingIdentifier",pt.fields=[{name:"type",type:_(k),value:"BindingIdentifier"},{name:"name",type:a}],gt.typeName="BindingPropertyIdentifier",gt.fields=[{name:"type",type:_(k),value:"BindingPropertyIdentifier"},{name:"binding",type:pt},{name:"init",type:c(Nt)}],yt.typeName="BindingPropertyProperty",yt.fields=[{name:"type",type:_(k),value:"BindingPropertyProperty"},{name:"name",type:un},{name:"binding",type:b(ft,b(pt,b(st,Ut)))}],ft.typeName="BindingWithDefault",ft.fields=[{name:"type",type:_(k),value:"BindingWithDefault"},{name:"binding",type:b(pt,b(st,Ut))},{name:"init",type:Nt}],mt.typeName="Block",mt.fields=[{name:"type",type:_(k),value:"Block"},{name:"statements",type:d(Vt)}],Et.typeName="BlockStatement",Et.fields=[{name:"type",type:_(k),value:"BlockStatement"},{name:"block",type:mt}],_t.typeName="BreakStatement",_t.fields=[{name:"type",type:_(k),value:"BreakStatement"},{name:"label",type:c(a)}],St.typeName="CallExpression",St.fields=[{name:"type",type:_(k),value:"CallExpression"},{name:"callee",type:b(Nt,an)},{name:"arguments",type:d(b(Nt,cn))}],vt.typeName="CatchClause",vt.fields=[{name:"type",type:_(k),value:"CatchClause"},{name:"binding",type:b(pt,b(st,Ut))},{name:"body",type:mt}],Ct.typeName="ClassDeclaration",Ct.fields=[{name:"type",type:_(k),value:"ClassDeclaration"},{name:"name",type:pt},{name:"super",type:c(Nt)},{name:"elements",type:d(xt)}],xt.typeName="ClassElement",xt.fields=[{name:"type",type:_(k),value:"ClassElement"},{name:"isStatic",type:e},{name:"method",type:ur}],bt.typeName="ClassExpression",bt.fields=[{name:"type",type:_(k),value:"ClassExpression"},{name:"name",type:c(pt)},{name:"super",type:c(Nt)},{name:"elements",type:d(xt)}],At.typeName="CompoundAssignmentExpression",At.fields=[{name:"type",type:_(k),value:"CompoundAssignmentExpression"},{name:"binding",type:b(ot,Ht)},{name:"operator",type:j},{name:"expression",type:Nt}],Ot.typeName="ComputedMemberAssignmentTarget",Ot.fields=[{name:"type",type:_(k),value:"ComputedMemberAssignmentTarget"},{name:"object",type:b(Nt,an)},{name:"expression",type:Nt}],Tt.typeName="ComputedMemberExpression",Tt.fields=[{name:"type",type:_(k),value:"ComputedMemberExpression"},{name:"object",type:b(Nt,an)},{name:"expression",type:Nt}],Rt.typeName="ComputedPropertyName",Rt.fields=[{name:"type",type:_(k),value:"ComputedPropertyName"},{name:"expression",type:Nt}],$t.typeName="ConditionalExpression",$t.fields=[{name:"type",type:_(k),value:"ConditionalExpression"},{name:"test",type:Nt},{name:"consequent",type:Nt},{name:"alternate",type:Nt}],It.typeName="ContinueStatement",It.fields=[{name:"type",type:_(k),value:"ContinueStatement"},{name:"label",type:c(a)}],wt.typeName="DataProperty",wt.fields=[{name:"type",type:_(k),value:"DataProperty"},{name:"name",type:un},{name:"expression",type:Nt}],qt.typeName="DebuggerStatement",qt.fields=[{name:"type",type:_(k),value:"DebuggerStatement"}],jt.typeName="Directive",jt.fields=[{name:"type",type:_(k),value:"Directive"},{name:"rawValue",type:a}],Bt.typeName="DoWhileStatement",Bt.fields=[{name:"type",type:_(k),value:"DoWhileStatement"},{name:"body",type:Vt},{name:"test",type:Nt}],Kt.typeName="EmptyStatement",Kt.fields=[{name:"type",type:_(k),value:"EmptyStatement"}],Jt.typeName="Export",Jt.fields=[{name:"type",type:_(k),value:"Export"},{name:"declaration",type:b(Ct,sn,rn)}],en.typeName="ExportAllFrom",en.fields=[{name:"type",type:_(k),value:"ExportAllFrom"},{name:"moduleSpecifier",type:a}],tn.typeName="ExportDefault",tn.fields=[{name:"type",type:_(k),value:"ExportDefault"},{name:"body",type:b(Ct,Nt,sn)}],Ft.typeName="ExportFrom",Ft.fields=[{name:"type",type:_(k),value:"ExportFrom"},{name:"namedExports",type:d(Pt)},{name:"moduleSpecifier",type:a}],Pt.typeName="ExportFromSpecifier",Pt.fields=[{name:"type",type:_(k),value:"ExportFromSpecifier"},{name:"name",type:a},{name:"exportedName",type:c(a)}],Qt.typeName="ExportLocalSpecifier",Qt.fields=[{name:"type",type:_(k),value:"ExportLocalSpecifier"},{name:"name",type:ln},{name:"exportedName",type:c(a)}],Lt.typeName="ExportLocals",Lt.fields=[{name:"type",type:_(k),value:"ExportLocals"},{name:"namedExports",type:d(Qt)}],Mt.typeName="ExpressionStatement",Mt.fields=[{name:"type",type:_(k),value:"ExpressionStatement"},{name:"expression",type:Nt}],Wt.typeName="ForAwaitStatement",Wt.fields=[{name:"type",type:_(k),value:"ForAwaitStatement"},{name:"left",type:b(b(b(nt,Yt),b(ot,Ht)),rn)},{name:"right",type:Nt},{name:"body",type:Vt}],Gt.typeName="ForInStatement",Gt.fields=[{name:"type",type:_(k),value:"ForInStatement"},{name:"left",type:b(b(b(nt,Yt),b(ot,Ht)),rn)},{name:"right",type:Nt},{name:"body",type:Vt}],zt.typeName="ForOfStatement",zt.fields=[{name:"type",type:_(k),value:"ForOfStatement"},{name:"left",type:b(b(b(nt,Yt),b(ot,Ht)),rn)},{name:"right",type:Nt},{name:"body",type:Vt}],nn.typeName="ForStatement",nn.fields=[{name:"type",type:_(k),value:"ForStatement"},{name:"init",type:c(b(Nt,rn))},{name:"test",type:c(Nt)},{name:"update",type:c(Nt)},{name:"body",type:Vt}],Xt.typeName="FormalParameters",Xt.fields=[{name:"type",type:_(k),value:"FormalParameters"},{name:"items",type:d(b(ft,b(pt,b(st,Ut))))},{name:"rest",type:c(b(pt,b(st,Ut)))}],Zt.typeName="FunctionBody",Zt.fields=[{name:"type",type:_(k),value:"FunctionBody"},{name:"directives",type:d(jt)},{name:"statements",type:d(Vt)}],sn.typeName="FunctionDeclaration",sn.fields=[{name:"type",type:_(k),value:"FunctionDeclaration"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:pt},{name:"params",type:Xt},{name:"body",type:Zt}],fn.typeName="FunctionExpression",fn.fields=[{name:"type",type:_(k),value:"FunctionExpression"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:c(pt)},{name:"params",type:Xt},{name:"body",type:Zt}],Sn.typeName="Getter",Sn.fields=[{name:"type",type:_(k),value:"Getter"},{name:"name",type:un},{name:"body",type:Zt}],ln.typeName="IdentifierExpression",ln.fields=[{name:"type",type:_(k),value:"IdentifierExpression"},{name:"name",type:a}],_n.typeName="IfStatement",_n.fields=[{name:"type",type:_(k),value:"IfStatement"},{name:"test",type:Nt},{name:"consequent",type:Vt},{name:"alternate",type:c(Vt)}],vn.typeName="Import",vn.fields=[{name:"type",type:_(k),value:"Import"},{name:"defaultBinding",type:c(pt)},{name:"namedImports",type:d(mn)},{name:"moduleSpecifier",type:a}],Dn.typeName="ImportNamespace",Dn.fields=[{name:"type",type:_(k),value:"ImportNamespace"},{name:"defaultBinding",type:c(pt)},{name:"namespaceBinding",type:pt},{name:"moduleSpecifier",type:a}],mn.typeName="ImportSpecifier",mn.fields=[{name:"type",type:_(k),value:"ImportSpecifier"},{name:"name",type:c(a)},{name:"binding",type:pt}],On.typeName="LabeledStatement",On.fields=[{name:"type",type:_(k),value:"LabeledStatement"},{name:"label",type:a},{name:"body",type:Vt}],Cn.typeName="LiteralBooleanExpression",Cn.fields=[{name:"type",type:_(k),value:"LiteralBooleanExpression"},{name:"value",type:e}],xn.typeName="LiteralInfinityExpression",xn.fields=[{name:"type",type:_(k),value:"LiteralInfinityExpression"}],Tn.typeName="LiteralNullExpression",Tn.fields=[{name:"type",type:_(k),value:"LiteralNullExpression"}],bn.typeName="LiteralNumericExpression",bn.fields=[{name:"type",type:_(k),value:"LiteralNumericExpression"},{name:"value",type:s}],Fn.typeName="LiteralRegExpExpression",Fn.fields=[{name:"type",type:_(k),value:"LiteralRegExpExpression"},{name:"pattern",type:a},{name:"global",type:e},{name:"ignoreCase",type:e},{name:"multiLine",type:e},{name:"dotAll",type:e},{name:"unicode",type:e},{name:"sticky",type:e}],kn.typeName="LiteralStringExpression",kn.fields=[{name:"type",type:_(k),value:"LiteralStringExpression"},{name:"value",type:a}],wn.typeName="Method",wn.fields=[{name:"type",type:_(k),value:"Method"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:un},{name:"params",type:Xt},{name:"body",type:Zt}],Bn.typeName="Module",Bn.fields=[{name:"type",type:_(k),value:"Module"},{name:"directives",type:d(jt)},{name:"items",type:d(b(sr,ar,Vt))}],Nn.typeName="NewExpression",Nn.fields=[{name:"type",type:_(k),value:"NewExpression"},{name:"callee",type:Nt},{name:"arguments",type:d(b(Nt,cn))}],Pn.typeName="NewTargetExpression",Pn.fields=[{name:"type",type:_(k),value:"NewTargetExpression"}],Yt.typeName="ObjectAssignmentTarget",Yt.fields=[{name:"type",type:_(k),value:"ObjectAssignmentTarget"},{name:"properties",type:d(ir)},{name:"rest",type:c(b(b(nt,Yt),b(ot,Ht)))}],Ut.typeName="ObjectBinding",Ut.fields=[{name:"type",type:_(k),value:"ObjectBinding"},{name:"properties",type:d(or)},{name:"rest",type:c(b(pt,b(st,Ut)))}],Rn.typeName="ObjectExpression",Rn.fields=[{name:"type",type:_(k),value:"ObjectExpression"},{name:"properties",type:d(lr)}],In.typeName="ReturnStatement",In.fields=[{name:"type",type:_(k),value:"ReturnStatement"},{name:"expression",type:c(Nt)}],$n.typeName="Script",$n.fields=[{name:"type",type:_(k),value:"Script"},{name:"directives",type:d(jt)},{name:"statements",type:d(Vt)}],Mn.typeName="Setter",Mn.fields=[{name:"type",type:_(k),value:"Setter"},{name:"name",type:un},{name:"param",type:b(ft,b(pt,b(st,Ut)))},{name:"body",type:Zt}],Ln.typeName="ShorthandProperty",Ln.fields=[{name:"type",type:_(k),value:"ShorthandProperty"},{name:"name",type:ln}],cn.typeName="SpreadElement",cn.fields=[{name:"type",type:_(k),value:"SpreadElement"},{name:"expression",type:Nt}],Wn.typeName="SpreadProperty",Wn.fields=[{name:"type",type:_(k),value:"SpreadProperty"},{name:"expression",type:Nt}],Qn.typeName="StaticMemberAssignmentTarget",Qn.fields=[{name:"type",type:_(k),value:"StaticMemberAssignmentTarget"},{name:"object",type:b(Nt,an)},{name:"property",type:a}],jn.typeName="StaticMemberExpression",jn.fields=[{name:"type",type:_(k),value:"StaticMemberExpression"},{name:"object",type:b(Nt,an)},{name:"property",type:a}],Vn.typeName="StaticPropertyName",Vn.fields=[{name:"type",type:_(k),value:"StaticPropertyName"},{name:"value",type:a}],an.typeName="Super",an.fields=[{name:"type",type:_(k),value:"Super"}],hn.typeName="SwitchCase",hn.fields=[{name:"type",type:_(k),value:"SwitchCase"},{name:"test",type:Nt},{name:"consequent",type:d(Vt)}],gn.typeName="SwitchDefault",gn.fields=[{name:"type",type:_(k),value:"SwitchDefault"},{name:"consequent",type:d(Vt)}],qn.typeName="SwitchStatement",qn.fields=[{name:"type",type:_(k),value:"SwitchStatement"},{name:"discriminant",type:Nt},{name:"cases",type:d(hn)}],Gn.typeName="SwitchStatementWithDefault",Gn.fields=[{name:"type",type:_(k),value:"SwitchStatementWithDefault"},{name:"discriminant",type:Nt},{name:"preDefaultCases",type:d(hn)},{name:"defaultCase",type:gn},{name:"postDefaultCases",type:d(hn)}],yn.typeName="TemplateElement",yn.fields=[{name:"type",type:_(k),value:"TemplateElement"},{name:"rawValue",type:a}],Un.typeName="TemplateExpression",Un.fields=[{name:"type",type:_(k),value:"TemplateExpression"},{name:"tag",type:c(Nt)},{name:"elements",type:d(b(Nt,yn))}],zn.typeName="ThisExpression",zn.fields=[{name:"type",type:_(k),value:"ThisExpression"}],Yn.typeName="ThrowStatement",Yn.fields=[{name:"type",type:_(k),value:"ThrowStatement"},{name:"expression",type:Nt}],Hn.typeName="TryCatchStatement",Hn.fields=[{name:"type",type:_(k),value:"TryCatchStatement"},{name:"body",type:mt},{name:"catchClause",type:vt}],Xn.typeName="TryFinallyStatement",Xn.fields=[{name:"type",type:_(k),value:"TryFinallyStatement"},{name:"body",type:mt},{name:"catchClause",type:c(vt)},{name:"finalizer",type:mt}],Zn.typeName="UnaryExpression",Zn.fields=[{name:"type",type:_(k),value:"UnaryExpression"},{name:"operator",type:_e},{name:"operand",type:Nt}],Kn.typeName="UpdateExpression",Kn.fields=[{name:"type",type:_(k),value:"UpdateExpression"},{name:"isPrefix",type:e},{name:"operator",type:et},{name:"operand",type:b(ot,Ht)}],rn.typeName="VariableDeclaration",rn.fields=[{name:"type",type:_(k),value:"VariableDeclaration"},{name:"kind",type:tt},{name:"declarators",type:d(En)}],Jn.typeName="VariableDeclarationStatement",Jn.fields=[{name:"type",type:_(k),value:"VariableDeclarationStatement"},{name:"declaration",type:rn}],En.typeName="VariableDeclarator",En.fields=[{name:"type",type:_(k),value:"VariableDeclarator"},{name:"binding",type:b(pt,b(st,Ut))},{name:"init",type:c(Nt)}],er.typeName="WhileStatement",er.fields=[{name:"type",type:_(k),value:"WhileStatement"},{name:"test",type:Nt},{name:"body",type:Vt}],tr.typeName="WithStatement",tr.fields=[{name:"type",type:_(k),value:"WithStatement"},{name:"object",type:Nt},{name:"body",type:Vt}],nr.typeName="YieldExpression",nr.fields=[{name:"type",type:_(k),value:"YieldExpression"},{name:"expression",type:c(Nt)}],rr.typeName="YieldGeneratorExpression",rr.fields=[{name:"type",type:_(k),value:"YieldGeneratorExpression"},{name:"expression",type:Nt}],o}(),estraverse$1={};(function(o){(function e(s){var a,c,d,_,b,k;function $(ct){var lt={},ut,dt;for(ut in ct)ct.hasOwnProperty(ut)&&(dt=ct[ut],typeof dt=="object"&&dt!==null?lt[ut]=$(dt):lt[ut]=dt);return lt}function j(ct,lt){var ut,dt,pt,gt;for(dt=ct.length,pt=0;dt;)ut=dt>>>1,gt=pt+ut,lt(ct[gt])?dt=ut:(pt=gt+1,dt-=ut+1);return pt}a={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ChainExpression:"ChainExpression",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",PrivateIdentifier:"PrivateIdentifier",Program:"Program",Property:"Property",PropertyDefinition:"PropertyDefinition",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},d={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},_={},b={},k={},c={Break:_,Skip:b,Remove:k};function _e(ct,lt){this.parent=ct,this.key=lt}_e.prototype.replace=function(lt){this.parent[this.key]=lt},_e.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)};function et(ct,lt,ut,dt){this.node=ct,this.path=lt,this.wrap=ut,this.ref=dt}function tt(){}tt.prototype.path=function(){var lt,ut,dt,pt,gt,yt;function ft(mt,Et){if(Array.isArray(Et))for(dt=0,pt=Et.length;dt=0;--ut)if(ct[ut].node===lt)return!0;return!1}tt.prototype.traverse=function(lt,ut){var dt,pt,gt,yt,ft,mt,Et,_t,St,vt,Ct,xt;for(this.__initialize(lt,ut),xt={},dt=this.__worklist,pt=this.__leavelist,dt.push(new et(lt,null,null,null)),pt.push(new et(null,null,null,null));dt.length;){if(gt=dt.pop(),gt===xt){if(gt=pt.pop(),mt=this.__execute(ut.leave,gt),this.__state===_||mt===_)return;continue}if(gt.node){if(mt=this.__execute(ut.enter,gt),this.__state===_||mt===_)return;if(dt.push(xt),pt.push(gt),this.__state===b||mt===b)continue;if(yt=gt.node,ft=yt.type||gt.wrap,vt=this.__keys[ft],!vt)if(this.__fallback)vt=this.__fallback(yt);else throw new Error("Unknown node type "+ft+".");for(_t=vt.length;(_t-=1)>=0;)if(Et=vt[_t],Ct=yt[Et],!!Ct){if(Array.isArray(Ct)){for(St=Ct.length;(St-=1)>=0;)if(!!Ct[St]&&!rt(pt,Ct[St])){if(st(ft,vt[_t]))gt=new et(Ct[St],[Et,St],"Property",null);else if(nt(Ct[St]))gt=new et(Ct[St],[Et,St],null,null);else continue;dt.push(gt)}}else if(nt(Ct)){if(rt(pt,Ct))continue;dt.push(new et(Ct,Et,null,null))}}}}},tt.prototype.replace=function(lt,ut){var dt,pt,gt,yt,ft,mt,Et,_t,St,vt,Ct,xt,bt;function At(Ot){var Tt,Rt,$t,It;if(Ot.ref.remove()){for(Rt=Ot.ref.key,It=Ot.ref.parent,Tt=dt.length;Tt--;)if($t=dt[Tt],$t.ref&&$t.ref.parent===It){if($t.ref.key=0;)if(bt=St[Et],vt=gt[bt],!!vt)if(Array.isArray(vt)){for(_t=vt.length;(_t-=1)>=0;)if(!!vt[_t]){if(st(yt,St[Et]))mt=new et(vt[_t],[bt,_t],"Property",new _e(vt,_t));else if(nt(vt[_t]))mt=new et(vt[_t],[bt,_t],null,new _e(vt,_t));else continue;dt.push(mt)}}else nt(vt)&&dt.push(new et(vt,bt,null,new _e(gt,bt)))}}return xt.root};function it(ct,lt){var ut=new tt;return ut.traverse(ct,lt)}function at(ct,lt){var ut=new tt;return ut.replace(ct,lt)}function ot(ct,lt){var ut;return ut=j(lt,function(pt){return pt.range[0]>ct.range[0]}),ct.extendedRange=[ct.range[0],ct.range[1]],ut!==lt.length&&(ct.extendedRange[1]=lt[ut].range[0]),ut-=1,ut>=0&&(ct.extendedRange[0]=lt[ut].range[1]),ct}function ht(ct,lt,ut){var dt=[],pt,gt,yt,ft;if(!ct.range)throw new Error("attachComments needs range information");if(!ut.length){if(lt.length){for(yt=0,gt=lt.length;ytmt.range[0]));)Et.extendedRange[1]===mt.range[0]?(mt.leadingComments||(mt.leadingComments=[]),mt.leadingComments.push(Et),dt.splice(ft,1)):ft+=1;if(ft===dt.length)return c.Break;if(dt[ft].extendedRange[0]>mt.range[1])return c.Skip}}),ft=0,it(ct,{leave:function(mt){for(var Et;ftmt.range[1])return c.Skip}}),ct}return s.Syntax=a,s.traverse=it,s.replace=at,s.attachComments=ht,s.VisitorKeys=d,s.VisitorOption=c,s.Controller=tt,s.cloneEnvironment=function(){return e({})},s})(o)})(estraverse$1);const Spec=_default.default||_default,estraverse=estraverse$1.cloneEnvironment();Object.keys(estraverse.Syntax).filter(o=>o!=="Property").forEach(o=>{delete estraverse.Syntax[o],delete estraverse.VisitorKeys[o]});Object.assign(estraverse.Syntax,Object.keys(Spec).reduce((o,e)=>(o[e]=e,o),{}));Object.assign(estraverse.VisitorKeys,Object.keys(Spec).reduce((o,e)=>(o[e]=Spec[e].fields.map(s=>s.name),o),{}));var dist$1={},StaticMemberExpression_1,ReturnStatement_1,LiteralStringExpression_1,LiteralNumericExpression_1,IdentifierExpression_1,CallExpression_1,ArrayExpression_1;Object.defineProperty(dist$1,"__esModule",{value:!0});function _classCallCheck$5(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$1.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$1.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};ArrayExpression_1=dist$1.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$5(this,o),this.type="ArrayExpression",this.elements=s};dist$1.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$5(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$1.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$5(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$1.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$1.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$1.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$1.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$1.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="AwaitExpression",this.expression=s};dist$1.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$5(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$1.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="BindingIdentifier",this.name=s};dist$1.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$1.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$1.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$1.Block=function o(e){var s=e.statements;_classCallCheck$5(this,o),this.type="Block",this.statements=s};dist$1.BlockStatement=function o(e){var s=e.block;_classCallCheck$5(this,o),this.type="BlockStatement",this.block=s};dist$1.BreakStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="BreakStatement",this.label=s};CallExpression_1=dist$1.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$1.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$5(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$1.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$1.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$5(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$1.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$1.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$5(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$1.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$1.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$1.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ComputedPropertyName",this.expression=s};dist$1.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$1.ContinueStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="ContinueStatement",this.label=s};dist$1.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$5(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$1.DebuggerStatement=function o(){_classCallCheck$5(this,o),this.type="DebuggerStatement"};dist$1.Directive=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="Directive",this.rawValue=s};dist$1.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$5(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$1.EmptyStatement=function o(){_classCallCheck$5(this,o),this.type="EmptyStatement"};dist$1.Export=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="Export",this.declaration=s};dist$1.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$1.ExportDefault=function o(e){var s=e.body;_classCallCheck$5(this,o),this.type="ExportDefault",this.body=s};dist$1.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$1.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$5(this,o),this.type="ExportLocals",this.namedExports=s};dist$1.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ExpressionStatement",this.expression=s};dist$1.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$1.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$1.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$1.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,d=e.body;_classCallCheck$5(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=d};dist$1.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$5(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$1.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$1.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$5(this,o),this.type="Getter",this.name=s,this.body=a};IdentifierExpression_1=dist$1.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="IdentifierExpression",this.name=s};dist$1.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$1.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$1.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$1.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$1.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$5(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$1.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$1.LiteralInfinityExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralInfinityExpression"};dist$1.LiteralNullExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralNullExpression"};LiteralNumericExpression_1=dist$1.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralNumericExpression",this.value=s};dist$1.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$5(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};LiteralStringExpression_1=dist$1.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralStringExpression",this.value=s};dist$1.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$5(this,o),this.type="Module",this.directives=s,this.items=a};dist$1.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$1.NewTargetExpression=function o(){_classCallCheck$5(this,o),this.type="NewTargetExpression"};dist$1.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$1.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$1.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$5(this,o),this.type="ObjectExpression",this.properties=s};ReturnStatement_1=dist$1.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ReturnStatement",this.expression=s};dist$1.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="Script",this.directives=s,this.statements=a};dist$1.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$5(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$1.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="ShorthandProperty",this.name=s};dist$1.SpreadElement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadElement",this.expression=s};dist$1.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadProperty",this.expression=s};dist$1.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};StaticMemberExpression_1=dist$1.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$1.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="StaticPropertyName",this.value=s};dist$1.Super=function o(){_classCallCheck$5(this,o),this.type="Super"};dist$1.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$5(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$1.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$5(this,o),this.type="SwitchDefault",this.consequent=s};dist$1.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$5(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$1.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$5(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=d};dist$1.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="TemplateElement",this.rawValue=s};dist$1.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$5(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$1.ThisExpression=function o(){_classCallCheck$5(this,o),this.type="ThisExpression"};dist$1.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ThrowStatement",this.expression=s};dist$1.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$5(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$1.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$5(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$1.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$5(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$1.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$5(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$1.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$5(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$1.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$1.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$1.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$5(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$1.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$5(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$1.YieldExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldExpression",this.expression=s};dist$1.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldGeneratorExpression",this.expression=s};var dist={},minimalCodegen={};/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty=Object.prototype.hasOwnProperty,propIsEnumerable=Object.prototype.propertyIsEnumerable;function toObject(o){if(o==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(o)}function shouldUseNative(){try{if(!Object.assign)return!1;var o=new String("abc");if(o[5]="de",Object.getOwnPropertyNames(o)[0]==="5")return!1;for(var e={},s=0;s<10;s++)e["_"+String.fromCharCode(s)]=s;var a=Object.getOwnPropertyNames(e).map(function(d){return e[d]});if(a.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var objectAssign=shouldUseNative()?Object.assign:function(o,e){for(var s,a=toObject(o),c,d=1;d=48&&rt<=55}s=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function $(rt){return rt===32||rt===9||rt===11||rt===12||rt===160||rt>=5760&&s.indexOf(rt)>=0}function j(rt){return rt===10||rt===13||rt===8232||rt===8233}function _e(rt){if(rt<=65535)return String.fromCharCode(rt);var it=String.fromCharCode(Math.floor((rt-65536)/1024)+55296),at=String.fromCharCode((rt-65536)%1024+56320);return it+at}for(a=new Array(128),d=0;d<128;++d)a[d]=d>=97&&d<=122||d>=65&&d<=90||d===36||d===95;for(c=new Array(128),d=0;d<128;++d)c[d]=d>=97&&d<=122||d>=65&&d<=90||d>=48&&d<=57||d===36||d===95;function et(rt){return rt<128?a[rt]:e.NonAsciiIdentifierStart.test(_e(rt))}function tt(rt){return rt<128?c[rt]:e.NonAsciiIdentifierPart.test(_e(rt))}function nt(rt){return rt<128?a[rt]:o.NonAsciiIdentifierStart.test(_e(rt))}function st(rt){return rt<128?c[rt]:o.NonAsciiIdentifierPart.test(_e(rt))}code$1.exports={isDecimalDigit:_,isHexDigit:b,isOctalDigit:k,isWhiteSpace:$,isLineTerminator:j,isIdentifierStartES5:et,isIdentifierPartES5:tt,isIdentifierStartES6:nt,isIdentifierPartES6:st}})();var keyword$1={exports:{}};(function(){var o=code$1.exports;function e(et){switch(et){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function s(et,tt){return!tt&&et==="yield"?!1:a(et,tt)}function a(et,tt){if(tt&&e(et))return!0;switch(et.length){case 2:return et==="if"||et==="in"||et==="do";case 3:return et==="var"||et==="for"||et==="new"||et==="try";case 4:return et==="this"||et==="else"||et==="case"||et==="void"||et==="with"||et==="enum";case 5:return et==="while"||et==="break"||et==="catch"||et==="throw"||et==="const"||et==="yield"||et==="class"||et==="super";case 6:return et==="return"||et==="typeof"||et==="delete"||et==="switch"||et==="export"||et==="import";case 7:return et==="default"||et==="finally"||et==="extends";case 8:return et==="function"||et==="continue"||et==="debugger";case 10:return et==="instanceof";default:return!1}}function c(et,tt){return et==="null"||et==="true"||et==="false"||s(et,tt)}function d(et,tt){return et==="null"||et==="true"||et==="false"||a(et,tt)}function _(et){return et==="eval"||et==="arguments"}function b(et){var tt,nt,st;if(et.length===0||(st=et.charCodeAt(0),!o.isIdentifierStartES5(st)))return!1;for(tt=1,nt=et.length;tt=nt||(rt=et.charCodeAt(tt),!(56320<=rt&&rt<=57343)))return!1;st=k(st,rt)}if(!it(st))return!1;it=o.isIdentifierPartES6}return!0}function j(et,tt){return b(et)&&!c(et,tt)}function _e(et,tt){return $(et)&&!d(et,tt)}keyword$1.exports={isKeywordES5:s,isKeywordES6:a,isReservedWordES5:c,isReservedWordES6:d,isRestrictedWord:_,isIdentifierNameES5:b,isIdentifierNameES6:$,isIdentifierES5:j,isIdentifierES6:_e}})();(function(){utils.ast=ast.exports,utils.code=code$1.exports,utils.keyword=keyword$1.exports})();var coderep={};Object.defineProperty(coderep,"__esModule",{value:!0});var _createClass$4=function(){function o(e,s){for(var a=0;a":Precedence.Relational,"<=":Precedence.Relational,">=":Precedence.Relational,in:Precedence.Relational,instanceof:Precedence.Relational,"<<":Precedence.BitwiseSHIFT,">>":Precedence.BitwiseSHIFT,">>>":Precedence.BitwiseSHIFT,"+":Precedence.Additive,"-":Precedence.Additive,"*":Precedence.Multiplicative,"%":Precedence.Multiplicative,"/":Precedence.Multiplicative,"**":Precedence.Exponential};function getPrecedence(o){switch(o.type){case"ArrayExpression":case"FunctionExpression":case"ClassExpression":case"IdentifierExpression":case"AssignmentTargetIdentifier":case"NewTargetExpression":case"Super":case"LiteralBooleanExpression":case"LiteralNullExpression":case"LiteralNumericExpression":case"LiteralInfinityExpression":case"LiteralRegExpExpression":case"LiteralStringExpression":case"ObjectExpression":case"ThisExpression":case"SpreadElement":case"FunctionBody":return Precedence.Primary;case"ArrowExpression":case"AssignmentExpression":case"CompoundAssignmentExpression":case"YieldExpression":case"YieldGeneratorExpression":return Precedence.Assignment;case"ConditionalExpression":return Precedence.Conditional;case"ComputedMemberExpression":case"StaticMemberExpression":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":switch(o.object.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.object);default:return Precedence.Member}case"TemplateExpression":if(o.tag==null)return Precedence.Member;switch(o.tag.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.tag);default:return Precedence.Member}case"BinaryExpression":return BinaryPrecedence[o.operator];case"CallExpression":return Precedence.Call;case"NewExpression":return o.arguments.length===0?Precedence.New:Precedence.Member;case"UpdateExpression":return o.isPrefix?Precedence.Prefix:Precedence.Postfix;case"AwaitExpression":case"UnaryExpression":return Precedence.Prefix;default:throw new Error("unreachable: "+o.type)}}function escapeStringLiteral(o){for(var e="",s=0,a=0,c=0,d=o.length;cs?"'":'"';e+=b;for(var k=0;k1&&arguments[1]!==void 0?arguments[1]:!1;_classCallCheck$4(this,e);var c=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return c.token=s,c.isRegExp=a,c}return _createClass$4(e,[{key:"emit",value:function(a){a.put(this.token,this.isRegExp)}}]),e}(CodeRep);coderep.RawToken=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.token=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putRaw(this.token)}}]),e}(CodeRep);coderep.NumberCodeRep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.number=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putNumber(this.number)}}]),e}(CodeRep);coderep.Paren=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("("),this.expr.emit(a,!1),a.put(")")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Bracket=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("["),this.expr.emit(a,!1),a.put("]")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Brace=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("{"),this.expr.emit(a,!1),a.put("}")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.NoIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){this.expr.emit(a,!0)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.ContainsIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){c?(a.put("("),this.expr.emit(a,!1),a.put(")")):this.expr.emit(a,!1)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Seq=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){this.children.forEach(function(d){return d.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.Semi=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,";"))}return e}(Token);coderep.CommaSep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){var d=!0;this.children.forEach(function(_){d?d=!1:a.put(","),_.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.SemiOp=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this))}return _createClass$4(e,[{key:"emit",value:function(a){a.putOptionalSemi()}}]),e}(CodeRep);Object.defineProperty(minimalCodegen,"__esModule",{value:!0});var _createClass$3=function(){function o(e,s){for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep$1.Token(o,e)}function paren(o){return new _coderep$1.Paren(o)}function brace(o){return new _coderep$1.Brace(o)}function bracket$1(o){return new _coderep$1.Bracket(o)}function noIn$1(o){return new _coderep$1.NoIn(o)}function markContainsIn$1(o){return o.containsIn?new _coderep$1.ContainsIn(o):o}function seq$1(){for(var o=arguments.length,e=Array(o),s=0;s0&&c[c.length-1]==null&&(d=seq$1(d,t$1(","))),bracket$1(d)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq$1(t$1("await"),p$1(s.expression,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1("="),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,d=a.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep$1.getPrecedence)(s.left)<(0,_coderep$1.getPrecedence)(s)||_e&&((0,_coderep$1.getPrecedence)(s.left)===(0,_coderep$1.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=paren(_),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep$1.getPrecedence)(s.right)<(0,_coderep$1.getPrecedence)(s)||!_e&&(0,_coderep$1.getPrecedence)(s.right)===(0,_coderep$1.getPrecedence)(s))&&(et=paren(et),tt=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=a.elements,d=a.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceArrayBinding",value:function(s,a){var c=a.elements,d=a.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,d=a.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,d=a.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return brace(seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return c}},{key:"reduceBreakStatement",value:function(s){return seq$1(t$1("break"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceCallExpression",value:function(s,a){var c=a.callee,d=a.arguments,_=d.map(function(b,k){return p$1(s.arguments[k],_coderep$1.Precedence.Assignment,b)});return(0,_objectAssign2$1.default)(seq$1(p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c),paren(commaSep(_))),{startsWithCurly:c.startsWithCurly,startsWithLet:c.startsWithLet,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,d=a.body;return seq$1(t$1("catch"),paren(c),d)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=seq$1(t$1("class"),s.name.name==="*default*"?empty$2():c);return d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=t$1("class");return c!=null&&(b=seq$1(b,c)),d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return s.isStatic?seq$1(t$1("static"),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return bracket$1(p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2$1.default)(seq$1(p$1(s.test,_coderep$1.Precedence.LogicalOR,c),t$1("?"),p$1(s.consequent,_coderep$1.Precedence.Assignment,d),t$1(":"),p$1(s.alternate,_coderep$1.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq$1(t$1("continue"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,d=a.expression;return seq$1(c,t$1(":"),getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(){return seq$1(t$1("debugger"),semiOp())}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,d=a.test;return seq$1(t$1("do"),c,t$1("while"),paren(d),semiOp())}},{key:"reduceEmptyStatement",value:function(){return semi()}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq$1(d?paren(c):c,semiOp())}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("in"),d)),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,d=a.test,_=a.update,b=a.body;return c&&(c.startsWithLetSquareBracket&&(c=paren(c)),c=noIn$1(markContainsIn$1(c))),(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c||empty$2(),semi(),d||empty$2(),semi(),_||empty$2())),b),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),t$1("await"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),brace(seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d))))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),s.name.name==="*default*"?empty$2():c,d,_)}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,d=a.params,_=a.body,b=seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),c||empty$2(),d,_);return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,d=a.rest;return paren(commaSep(c.concat(d==null?[]:[seq$1(t$1("..."),d)])))}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,d=a.body;c=this.regenerateArrowParams(s.params,c);var _=!1;return s.body.type!=="FunctionBody"&&(d.startsWithCurly?d=paren(d):d.containsIn&&(_=!0)),(0,_objectAssign2$1.default)(seq$1(s.isAsync?t$1("async"):empty$2(),c,t$1("=>"),p$1(s.body,_coderep$1.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,a){var c=a.name,d=a.body;return seq$1(t$1("get"),c,paren(empty$2()),d)}},{key:"reduceIdentifierExpression",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate;return _&&d.endsWithMissingElse&&(d=brace(d)),(0,_objectAssign2$1.default)(seq$1(t$1("if"),paren(c),d,_?seq$1(t$1("else"),_):empty$2()),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,d=a.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(brace(commaSep(d))),_.length===0?seq$1(t$1("import"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp()):seq$1(t$1("import"),commaSep(_),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,d=a.namespaceBinding;return seq$1(t$1("import"),c==null?empty$2():seq$1(c,t$1(",")),t$1("*"),t$1("as"),d,t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq$1(t$1(s.name),t$1("as"),c)}},{key:"reduceExportAllFrom",value:function(s){return seq$1(t$1("export"),t$1("*"),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),semiOp())}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq$1(c,semiOp())}return seq$1(t$1("export"),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?paren(c):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq$1(t$1("export default"),c);default:return seq$1(t$1("export default"),p$1(s.body,_coderep$1.Precedence.Assignment,c),semiOp())}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?t$1(s.name):seq$1(t$1(s.name),t$1("as"),t$1(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq$1(c,t$1("as"),t$1(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2$1.default)(seq$1(t$1(s.label+":"),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return t$1(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return t$1("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return t$1("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep$1.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return t$1("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),s.isGenerator?t$1("*"):empty$2(),c,d,_)}},{key:"reduceModule",value:function(s,a){var c=a.directives,d=a.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceNewExpression",value:function(s,a){var c=a.callee,d=a.arguments,_=d.map(function(k,$){return p$1(s.arguments[$],_coderep$1.Precedence.Assignment,k)}),b=(0,_coderep$1.getPrecedence)(s.callee)===_coderep$1.Precedence.Call?paren(c):p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c);return seq$1(t$1("new"),b,d.length===0?empty$2():paren(commaSep(_)))}},{key:"reduceNewTargetExpression",value:function(){return t$1("new.target")}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,d=brace(commaSep(c));return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2$1.default)(seq$1(p$1(s.operand,_coderep$1.Precedence.New,c),t$1(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq$1(t$1(s.operator),p$1(s.operand,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq$1(t$1("return"),c||empty$2(),semiOp())}},{key:"reduceScript",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,d=a.param,_=a.body;return seq$1(t$1("set"),c,paren(d),_)}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils$1.keyword.isIdentifierNameES6(s.value))return t$1(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep$1.NumberCodeRep(a):t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return t$1("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,d=a.consequent;return seq$1(t$1("case"),c,t$1(":"),seq$1.apply(void 0,_toConsumableArray$2(d)))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq$1(t$1("default:"),seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,d=a.cases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d))))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,d=a.preDefaultCases,_=a.defaultCase,b=a.postDefaultCases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d).concat([_],_toConsumableArray$2(b)))))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,d=a.elements,_=s.tag==null?empty$2():p$1(s.tag,(0,_coderep$1.getPrecedence)(s),c);_=seq$1(_,t$1("`"));for(var b=0,k=s.elements.length;b0?t$1("}"):empty$2(),d[b],b1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep.Token(s,a)}},{key:"p",value:function(s,a,c){return(0,_coderep.getPrecedence)(s)0&&d[d.length-1]==null&&(_=seq(_,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA))),this.bracket(_,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq(this.t("await"),this.sep(Sep.AWAIT),this.p(s.expression,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.p(s.expression,_coderep.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP("=")),this.t("="),this.sep(Sep.AFTER_ASSIGN_OP("=")),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_ASSIGN_OP(s.operator)),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,d=a.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep.getPrecedence)(s.left)<(0,_coderep.getPrecedence)(s)||_e&&((0,_coderep.getPrecedence)(s.left)===(0,_coderep.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=this.paren(_,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep.getPrecedence)(s.right)<(0,_coderep.getPrecedence)(s)||!_e&&(0,_coderep.getPrecedence)(s.right)===(0,_coderep.getPrecedence)(s))&&(et=this.paren(et,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),tt=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_BINOP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_BINOP(s.operator)),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=this,d=a.elements,_=a.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceArrayBinding",value:function(s,a){var c=this,d=a.elements,_=a.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,d=a.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,d=a.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return this.brace(seq.apply(void 0,_toConsumableArray$1(c)),s,Sep.BLOCK_BRACE_INITIAL,Sep.BLOCK_BRACE_FINAL,Sep.BLOCK_EMPTY)}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return seq(c,this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceBreakStatement",value:function(s){return seq(this.t("break"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceCallExpression",value:function(s,a){var c=this,d=a.callee,_=a.arguments,b=_.map(function(k,$){return c.p(s.arguments[$],_coderep.Precedence.Assignment,k)});return(0,_objectAssign2.default)(seq(this.p(s.callee,(0,_coderep.getPrecedence)(s),d),this.sep(Sep.CALL),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.CALL_PAREN_BEFORE,Sep.CALL_PAREN_AFTER,Sep.CALL_PAREN_EMPTY)),{startsWithCurly:d.startsWithCurly,startsWithLet:d.startsWithLet,startsWithLetSquareBracket:d.startsWithLetSquareBracket,startsWithFunctionOrClass:d.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,d=a.body;return seq(this.t("catch"),this.sep(Sep.BEFORE_CATCH_BINDING),this.paren(c,Sep.CATCH_PAREN_BEFORE,Sep.CATCH_PAREN_AFTER),this.sep(Sep.AFTER_CATCH_BINDING),d)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=seq(this.t("class"),s.name.name==="*default*"?empty$1():seq(this.sep(Sep.BEFORE_CLASS_NAME),c));return d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_DECLARATION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_BRACE_INITIAL,Sep.CLASS_BRACE_FINAL,Sep.CLASS_EMPTY),this.sep(Sep.AFTER_STATEMENT(s))),b}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=this.t("class");return c!=null&&(b=seq(b,this.sep(Sep.BEFORE_CLASS_NAME),c)),d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_EXPRESSION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_EXPRESSION_BRACE_INITIAL,Sep.CLASS_EXPRESSION_BRACE_FINAL,Sep.CLASS_EXPRESSION_BRACE_EMPTY)),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return c=seq(this.sep(Sep.BEFORE_CLASS_ELEMENT),c,this.sep(Sep.AFTER_CLASS_ELEMENT)),s.isStatic?seq(this.t("static"),this.sep(Sep.AFTER_STATIC),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET),this.bracket(d,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_EXPRESSION),this.bracket(d,Sep.COMPUTED_MEMBER_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return this.bracket(this.p(s.expression,_coderep.Precedence.Assignment,c),Sep.COMPUTED_PROPERTY_BRACKET_INTIAL,Sep.COMPUTED_PROPERTY_BRACKET_FINAL)}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2.default)(seq(this.p(s.test,_coderep.Precedence.LogicalOR,c),this.sep(Sep.BEFORE_TERNARY_QUESTION),this.t("?"),this.sep(Sep.AFTER_TERNARY_QUESTION),this.p(s.consequent,_coderep.Precedence.Assignment,d),this.sep(Sep.BEFORE_TERNARY_COLON),this.t(":"),this.sep(Sep.AFTER_TERNARY_COLON),this.p(s.alternate,_coderep.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq(this.t("continue"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,d=a.expression;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),this.getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(s){return seq(this.t("debugger"),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,d=a.test;return seq(this.t("do"),this.sep(Sep.AFTER_DO),c,this.sep(Sep.BEFORE_DOWHILE_WHILE),this.t("while"),this.sep(Sep.AFTER_DOWHILE_WHILE),this.paren(d,Sep.DO_WHILE_TEST_PAREN_BEFORE,Sep.DO_WHILE_TEST_PAREN_AFTER),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceEmptyStatement",value:function(s){return seq(this.t(";"),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq(d?this.paren(c,Sep.EXPRESSION_STATEMENT_PAREN_BEFORE,Sep.EXPRESSION_STATEMENT_PAREN_AFTER):c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FORIN_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_IN_LET_PAREN_BEFORE,Sep.FOR_IN_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FORIN_IN),this.t("in"),this.sep(Sep.AFTER_FORIN_FOR),d),Sep.FOR_IN_PAREN_BEFORE,Sep.FOR_IN_PAREN_AFTER),this.sep(Sep.BEFORE_FORIN_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,d=a.test,_=a.update,b=a.body;return c&&(c.startsWithLetSquareBracket&&(c=this.paren(c,Sep.FOR_LET_PAREN_BEFORE,Sep.FOR_LET_PAREN_AFTER)),c=noIn(markContainsIn(c))),(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOR_FOR),this.paren(seq(c?seq(this.sep(Sep.BEFORE_FOR_INIT),c,this.sep(Sep.AFTER_FOR_INIT)):this.sep(Sep.EMPTY_FOR_INIT),this.t(";"),d?seq(this.sep(Sep.BEFORE_FOR_TEST),d,this.sep(Sep.AFTER_FOR_TEST)):this.sep(Sep.EMPTY_FOR_TEST),this.t(";"),_?seq(this.sep(Sep.BEFORE_FOR_UPDATE),_,this.sep(Sep.AFTER_FOR_UPDATE)):this.sep(Sep.EMPTY_FOR_UPDATE))),this.sep(Sep.BEFORE_FOR_BODY),b,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.t("await"),this.sep(Sep.AFTER_FORAWAIT_AWAIT),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_FUNCTION_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),s.name.name==="*default*"?empty$1():c,this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_DECLARATION_BODY),this.brace(_,s,Sep.FUNCTION_BRACE_INITIAL,Sep.FUNCTION_BRACE_FINAL,Sep.FUNCTION_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,d=a.params,_=a.body,b=seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),c||empty$1(),this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_EXPRESSION_BODY),this.brace(_,s,Sep.FUNCTION_EXPRESSION_BRACE_INITIAL,Sep.FUNCTION_EXPRESSION_BRACE_FINAL,Sep.FUNCTION_EXPRESSION_EMPTY));return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,d=a.rest;return this.commaSep(c.concat(d==null?[]:[seq(this.t("..."),this.sep(Sep.REST),d)]),Sep.PARAMETER_BEFORE_COMMA,Sep.PARAMETER_AFTER_COMMA)}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,d=a.body;(s.params.rest!=null||s.params.items.length!==1||s.params.items[0].type!=="BindingIdentifier")&&(c=this.paren(c,Sep.ARROW_PARAMETERS_PAREN_BEFORE,Sep.ARROW_PARAMETERS_PAREN_AFTER,Sep.ARROW_PARAMETERS_PAREN_EMPTY));var _=!1;return s.body.type==="FunctionBody"?d=this.brace(d,s,Sep.ARROW_BRACE_INITIAL,Sep.ARROW_BRACE_FINAL,Sep.ARROW_BRACE_EMPTY):d.startsWithCurly?d=this.paren(d,Sep.ARROW_BODY_PAREN_BEFORE,Sep.ARROW_BODY_PAREN_AFTER):d.containsIn&&(_=!0),(0,_objectAssign2.default)(seq(s.isAsync?seq(this.t("async"),this.sep(Sep.BEFORE_ARROW_ASYNC_PARAMS)):empty$1(),c,this.sep(Sep.BEFORE_ARROW),this.t("=>"),this.sep(Sep.AFTER_ARROW),this.p(s.body,_coderep.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,a){var c=a.name,d=a.body;return seq(this.t("get"),this.sep(Sep.AFTER_GET),c,this.sep(Sep.BEFORE_GET_PARAMS),this.paren(empty$1(),null,null,Sep.GETTER_PARAMS),this.sep(Sep.BEFORE_GET_BODY),this.brace(d,s,Sep.GET_BRACE_INTIAL,Sep.GET_BRACE_FINAL,Sep.GET_BRACE_EMPTY))}},{key:"reduceIdentifierExpression",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate;return _&&d.endsWithMissingElse&&(d=this.brace(d,s,Sep.MISSING_ELSE_INTIIAL,Sep.MISSING_ELSE_FINAL,Sep.MISSING_ELSE_EMPTY)),(0,_objectAssign2.default)(seq(this.t("if"),this.sep(Sep.AFTER_IF),this.paren(c,Sep.IF_PAREN_BEFORE,Sep.IF_PAREN_AFTER),this.sep(Sep.AFTER_IF_TEST),d,_?seq(this.sep(Sep.BEFORE_ELSE),this.t("else"),this.sep(Sep.AFTER_ELSE),_):empty$1(),this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,d=a.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(this.brace(this.commaSep(d,Sep.NAMED_IMPORT_BEFORE_COMMA,Sep.NAMED_IMPORT_AFTER_COMMA),s,Sep.IMPORT_BRACE_INTIAL,Sep.IMPORT_BRACE_FINAL,Sep.IMPORT_BRACE_EMPTY)),_.length===0?seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_MODULE),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s))):seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_BINDINGS),this.commaSep(_,Sep.IMPORT_BEFORE_COMMA,Sep.IMPORT_AFTER_COMMA),this.sep(Sep.AFTER_IMPORT_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,d=a.namespaceBinding;return seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_NAMESPACE),c==null?empty$1():seq(c,this.sep(Sep.IMPORT_BEFORE_COMMA),this.t(","),this.sep(Sep.IMPORT_AFTER_COMMA)),this.sep(Sep.BEFORE_IMPORT_STAR),this.t("*"),this.sep(Sep.AFTER_IMPORT_STAR),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),d,this.sep(Sep.AFTER_NAMESPACE_BINDING),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq(this.t(s.name),this.sep(Sep.BEFORE_IMPORT_AS),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),c)}},{key:"reduceExportAllFrom",value:function(s){return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_STAR),this.t("*"),this.sep(Sep.AFTER_EXPORT_STAR),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_FROM_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_LOCAL_BINDINGS),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq(c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}return seq(this.t("export"),this.sep(Sep.AFTER_EXPORT),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?this.paren(c,Sep.EXPORT_PAREN_BEFORE,Sep.EXPORT_PAREN_AFTER):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),c);default:return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),this.p(s.body,_coderep.Precedence.Assignment,c),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?this.t(s.name):seq(this.t(s.name),this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq(c,this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2.default)(seq(this.t(s.label),this.sep(Sep.BEFORE_LABEL_COLON),this.t(":"),this.sep(Sep.AFTER_LABEL_COLON),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return this.t(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return this.t("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return this.t("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return this.t("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq(s.isAsync?seq(this.t("async"),this.sep(Sep.AFTER_METHOD_ASYNC)):empty$1(),s.isGenerator?seq(this.t("*"),this.sep(Sep.AFTER_METHOD_GENERATOR_STAR)):empty$1(),c,this.sep(Sep.AFTER_METHOD_NAME),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_METHOD_BODY),this.brace(_,s,Sep.METHOD_BRACE_INTIAL,Sep.METHOD_BRACE_FINAL,Sep.METHOD_BRACE_EMPTY))}},{key:"reduceModule",value:function(s,a){var c=a.directives,d=a.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_MODULE_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceNewExpression",value:function(s,a){var c=this,d=a.callee,_=a.arguments,b=_.map(function($,j){return c.p(s.arguments[j],_coderep.Precedence.Assignment,$)}),k=(0,_coderep.getPrecedence)(s.callee)===_coderep.Precedence.Call?this.paren(d,Sep.NEW_CALLEE_PAREN_BEFORE,Sep.NEW_CALLEE_PAREN_AFTER):this.p(s.callee,(0,_coderep.getPrecedence)(s),d);return seq(this.t("new"),this.sep(Sep.AFTER_NEW),k,_.length===0?this.sep(Sep.EMPTY_NEW_CALL):seq(this.sep(Sep.BEFORE_NEW_ARGS),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.NEW_PAREN_BEFORE,Sep.NEW_PAREN_AFTER,Sep.NEW_PAREN_EMPTY)))}},{key:"reduceNewTargetExpression",value:function(){return seq(this.t("new"),this.sep(Sep.NEW_TARGET_BEFORE_DOT),this.t("."),this.sep(Sep.NEW_TARGET_AFTER_DOT),this.t("target"))}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,d=this.brace(this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2.default)(seq(this.p(s.operand,_coderep.Precedence.New,c),this.sep(Sep.BEFORE_POSTFIX(s.operator)),this.t(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq(this.t(s.operator),this.sep(Sep.UNARY(s.operator)),this.p(s.operand,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq(this.t("return"),c?seq(this.sep(Sep.RETURN),c):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceScript",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_SCRIPT_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,d=a.param,_=a.body;return seq(this.t("set"),this.sep(Sep.AFTER_SET),c,this.sep(Sep.BEFORE_SET_PARAMS),this.paren(d,Sep.SETTER_PARAM_BEFORE,Sep.SETTER_PARAM_AFTER),this.sep(Sep.BEFORE_SET_BODY),this.brace(_,s,Sep.SET_BRACE_INTIIAL,Sep.SET_BRACE_FINAL,Sep.SET_BRACE_EMPTY))}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils.keyword.isIdentifierNameES6(s.value))return this.t(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep.NumberCodeRep(a):this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return this.t("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,d=a.consequent;return seq(this.t("case"),this.sep(Sep.BEFORE_CASE_TEST),c,this.sep(Sep.AFTER_CASE_TEST),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(d)),this.sep(Sep.AFTER_CASE_BODY))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq(this.t("default"),this.sep(Sep.DEFAULT),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(c)),this.sep(Sep.AFTER_DEFAULT_BODY))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,d=a.cases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d)),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,d=a.preDefaultCases,_=a.defaultCase,b=a.postDefaultCases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d).concat([_],_toConsumableArray$1(b))),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,d=a.elements,_=s.tag==null?empty$1():seq(this.p(s.tag,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.TEMPLATE_TAG));_=seq(_,this.t("`"));for(var b=0,k=s.elements.length;b0&&($+="}"),$+=s.elements[b].rawValue,b=1e3&&o%10===0?(e=o.toString(10),/[eE]/.test(e)?e.replace(/[eE]\+/,"e"):o.toString(10).replace(/0{3,}$/,function(s){return"e"+s.length})):o%1===0?o>1e15&&o<1e20?"0x"+o.toString(16).toUpperCase():o.toString(10).replace(/[eE]\+/,"e"):o.toString(10).replace(/^0\./,".").replace(/[eE]\+/,"e")}tokenStream.TokenStream=function(){function o(){_classCallCheck$1(this,o),this.result="",this.lastNumber=null,this.lastCodePoint=null,this.lastTokenStr="",this.optionalSemi=!1,this.previousWasRegExp=!1,this.partialHtmlComment=!1}return _createClass$1(o,[{key:"putNumber",value:function(s){var a=renderNumber(s);this.put(a),this.lastNumber=a}},{key:"putOptionalSemi",value:function(){this.optionalSemi=!0}},{key:"putRaw",value:function(s){this.result+=s,this.lastTokenStr=s}},{key:"put",value:function(s,a){if(this.optionalSemi&&(this.optionalSemi=!1,s!=="}"&&(this.result+=";",this.lastCodePoint=";",this.previousWasRegExp=!1)),this.lastNumber!==null&&s.length===1&&s==="."){this.result+=needsDoubleDot(this.lastNumber)?"..":".",this.lastNumber=null,this.lastCodePoint=".";return}var c=[].concat(_toConsumableArray(s)).length;if(c>0){this.lastNumber=null;var d=String.fromCodePoint(s.codePointAt(0)),_=this.lastCodePoint;this.lastCodePoint=String.fromCodePoint(s.codePointAt(c-1));var b=this.previousWasRegExp;this.previousWasRegExp=a,_&&((_==="+"||_==="-")&&_===d||isIdentifierPartES6(_)&&isIdentifierPartES6(d)||_==="/"&&d==="/"||b&&d==="i"||this.partialHtmlComment&&s.startsWith("--"))&&(this.result+=" ")}this.partialHtmlComment=this.lastTokenStr.endsWith("<")&&s==="!",this.result+=s,this.lastTokenStr=s}}]),o}();Object.defineProperty(withLocation,"__esModule",{value:!0});var _createClass=function(){function o(e,s){for(var a=0;a1?c-1:0),_=1;_1?c-1:0),_=1;_1?c-1:0),_=1;_1&&arguments[1]!==void 0?arguments[1]:new _minimalCodegen2.default,s=new TokenStreamWithLocation,a=(0,_shiftReducer.reduce)(addLocationToReducer(e),o);return a.emit(s),{source:s.result,locations:s.locations}}(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.codeGenWithLocation=o.SemiOp=o.CommaSep=o.Semi=o.Seq=o.ContainsIn=o.NoIn=o.Brace=o.Bracket=o.Paren=o.NumberCodeRep=o.Token=o.Empty=o.CodeRep=o.escapeStringLiteral=o.getPrecedence=o.Precedence=o.Sep=o.FormattedCodeGen=o.ExtensibleCodeGen=o.MinimalCodeGen=void 0,o.default=j;var e=minimalCodegen;Object.defineProperty(o,"MinimalCodeGen",{enumerable:!0,get:function(){return $(e).default}});var s=formattedCodegen;Object.defineProperty(o,"ExtensibleCodeGen",{enumerable:!0,get:function(){return s.ExtensibleCodeGen}}),Object.defineProperty(o,"FormattedCodeGen",{enumerable:!0,get:function(){return s.FormattedCodeGen}}),Object.defineProperty(o,"Sep",{enumerable:!0,get:function(){return s.Sep}});var a=coderep;Object.defineProperty(o,"Precedence",{enumerable:!0,get:function(){return a.Precedence}}),Object.defineProperty(o,"getPrecedence",{enumerable:!0,get:function(){return a.getPrecedence}}),Object.defineProperty(o,"escapeStringLiteral",{enumerable:!0,get:function(){return a.escapeStringLiteral}}),Object.defineProperty(o,"CodeRep",{enumerable:!0,get:function(){return a.CodeRep}}),Object.defineProperty(o,"Empty",{enumerable:!0,get:function(){return a.Empty}}),Object.defineProperty(o,"Token",{enumerable:!0,get:function(){return a.Token}}),Object.defineProperty(o,"NumberCodeRep",{enumerable:!0,get:function(){return a.NumberCodeRep}}),Object.defineProperty(o,"Paren",{enumerable:!0,get:function(){return a.Paren}}),Object.defineProperty(o,"Bracket",{enumerable:!0,get:function(){return a.Bracket}}),Object.defineProperty(o,"Brace",{enumerable:!0,get:function(){return a.Brace}}),Object.defineProperty(o,"NoIn",{enumerable:!0,get:function(){return a.NoIn}}),Object.defineProperty(o,"ContainsIn",{enumerable:!0,get:function(){return a.ContainsIn}}),Object.defineProperty(o,"Seq",{enumerable:!0,get:function(){return a.Seq}}),Object.defineProperty(o,"Semi",{enumerable:!0,get:function(){return a.Semi}}),Object.defineProperty(o,"CommaSep",{enumerable:!0,get:function(){return a.CommaSep}}),Object.defineProperty(o,"SemiOp",{enumerable:!0,get:function(){return a.SemiOp}});var c=withLocation;Object.defineProperty(o,"codeGenWithLocation",{enumerable:!0,get:function(){return $(c).default}});var d=dist$4,_=$(d),b=tokenStream,k=$(e);function $(_e){return _e&&_e.__esModule?_e:{default:_e}}function j(_e){var et=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new k.default,tt=new b.TokenStream,nt=(0,_.default)(et,_e);return nt.emit(tt),tt.result}})(dist);var shiftCodegen=getDefaultExportFromCjs(dist);function bjorklund(o,e){for(var s=[],a=[],c=[e],d=o-e,_=0,b=function(k){if(k==-1)s.push(0);else if(k==-2)s.push(1);else{for(var $=0;$1;)a.push(Math.floor(d/c[_])),c.push(d%c[_]),d=c[_],_++;return a.push(d),b(_),s.reverse()}var bjork=function(o,e){return o>e?bjorklund(o,e):bjorklund(e,o)};const euclid=(o,e,s=0)=>{const a=bjork(e,o);return s?rotate(a,-s):a};Pattern$4.prototype.euclid=function(o,e,s=0){return this.struct(euclid(o,e,s))};Pattern$4.prototype.euclidLegato=function(o,e,s=0){const a=euclid(o,e,s),c=a.indexOf(1),d=rotate(a,c).join("").split("1").slice(1).map(_=>[_.length+1,!0]);return this.struct(timeCat$1(...d)).late(fraction(c).div(e))};function steady(o){return new Pattern$4(e=>[new Hap(void 0,e.span,o)])}const signal=o=>{const e=s=>[new Hap(void 0,s.span,o(s.span.midpoint()))];return new Pattern$4(e)},isaw=signal(o=>1-o%1),isaw2=isaw._toBipolar(),saw=signal(o=>o%1),saw2=saw._toBipolar(),sine2=signal(o=>Math.sin(Math.PI*2*o)),sine=sine2._fromBipolar(),cosine=sine._early(fraction(1).div(4)),cosine2=sine2._early(fraction(1).div(4)),square=signal(o=>Math.floor(o*2%2)),square2=square._toBipolar(),tri=fastcat(isaw,saw),tri2=fastcat(isaw2,saw2),time=signal(id$1),xorwise=o=>{const e=o<<13^o,s=e>>17^e;return s<<5^s},_frac=o=>o-Math.trunc(o),timeToIntSeed=o=>xorwise(Math.trunc(_frac(o/300)*536870912)),intSeedToRand=o=>o%536870912/536870912,timeToRand=o=>Math.abs(intSeedToRand(timeToIntSeed(o))),rand=signal(timeToRand),_brandBy=o=>rand.fmap(e=>ereify$1(o).fmap(_brandBy).innerJoin(),brand=_brandBy(.5),_irand=o=>rand.fmap(e=>Math.trunc(e*o)),irand=o=>reify$1(o).fmap(_irand).innerJoin(),chooseWith=(o,e)=>(e=e.map(reify$1),e.length==0?silence:o.range(0,e.length).fmap(s=>e[Math.floor(s)]).outerJoin()),choose=(...o)=>chooseWith(rand,o),_wchooseWith=function(o,...e){const s=e.map(b=>reify$1(b[0])),a=[];let c=0;for(const b of e)c+=b[1],a.push(c);const d=c,_=function(b){const k=b*d;return s[a.findIndex($=>$>k,a)]};return o.fmap(_)},wchooseWith=(...o)=>_wchooseWith(...o).outerJoin(),wchoose=(...o)=>wchooseWith(rand,...o),wchooseCycles=(...o)=>_wchooseWith(rand,...o).innerJoin(),perlinWith=o=>{const e=o.fmap(Math.floor),s=o.fmap(d=>Math.floor(d)+1),a=d=>6*d**5-15*d**4+10*d**3,c=d=>_=>b=>_+a(d)*(b-_);return o.sub(e).fmap(c).appBoth(e.fmap(timeToRand)).appBoth(s.fmap(timeToRand))},perlin=perlinWith(time);Pattern$4.prototype._degradeByWith=function(o,e){return this.fmap(s=>a=>s).appLeft(o._filterValues(s=>s>e))};Pattern$4.prototype._degradeBy=function(o){return this._degradeByWith(rand,o)};Pattern$4.prototype.degrade=function(){return this._degradeBy(.5)};Pattern$4.prototype._undegradeBy=function(o){return this._degradeByWith(rand.fmap(e=>1-e),o)};Pattern$4.prototype.undegrade=function(){return this._undegradeBy(.5)};Pattern$4.prototype._sometimesBy=function(o,e){return stack(this._degradeBy(o),e(this._undegradeBy(1-o)))};Pattern$4.prototype.sometimesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesBy(a,e)).innerJoin()};Pattern$4.prototype._sometimesByPre=function(o,e){return stack(this._degradeBy(o),e(this).undegradeBy(1-o))};Pattern$4.prototype.sometimesByPre=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesByPre(a,e)).innerJoin()};Pattern$4.prototype.sometimes=function(o){return this._sometimesBy(.5,o)};Pattern$4.prototype.sometimesPre=function(o){return this._sometimesByPre(.5,o)};Pattern$4.prototype._someCyclesBy=function(o,e){return stack(this._degradeByWith(rand._segment(1),o),e(this._degradeByWith(rand.fmap(s=>1-s)._segment(1),1-o)))};Pattern$4.prototype.someCyclesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._someCyclesBy(a,e)).innerJoin()};Pattern$4.prototype.someCycles=function(o){return this._someCyclesBy(.5,o)};Pattern$4.prototype.often=function(o){return this.sometimesBy(.75,o)};Pattern$4.prototype.rarely=function(o){return this.sometimesBy(.25,o)};Pattern$4.prototype.almostNever=function(o){return this.sometimesBy(.1,o)};Pattern$4.prototype.almostAlways=function(o){return this.sometimesBy(.9,o)};Pattern$4.prototype.never=function(o){return this};Pattern$4.prototype.always=function(o){return o(this)};Pattern$4.prototype.patternified.push("degradeBy","undegradeBy");let synth$1;try{synth$1=window==null?void 0:window.speechSynthesis}catch{console.warn("cannot use window: not in browser?")}let allVoices=synth$1==null?void 0:synth$1.getVoices();function speak(o,e,s){synth$1.cancel();const a=new SpeechSynthesisUtterance(o);a.lang=e,allVoices=synth$1.getVoices();const c=allVoices.filter(d=>d.lang.includes(e));typeof s=="number"?a.voice=c[s%c.length]:typeof s=="string"&&(a.voice=c.find(d=>d.name===d)),speechSynthesis.speak(a)}Pattern$4.prototype._speak=function(o,e){return this._withHap(s=>{const a=(c,d)=>{speak(d.value,o,e)};return s.setContext(kt(Dt({},s.context),{onTrigger:a}))})};Pattern$4.prototype.speak=function(o,e){return patternify2(Pattern$4.prototype._speak)(reify(o),reify(e),this)};var gist=route=>fetch(`https://gist.githubusercontent.com/${route}?cachebust=${Date.now()}`).then(o=>o.text()).then(code=>eval(code)),gist$1=Object.freeze(Object.defineProperty({__proto__:null,default:gist},Symbol.toStringTag,{value:"Module"})),strudel=Object.freeze(Object.defineProperty({__proto__:null,Fraction:fraction,gist:gist$1,Hap,Pattern:Pattern$4,silence,pure,isPattern:isPattern$1,reify:reify$1,stack,slowcat,slowcatPrime,fastcat,cat,timeCat:timeCat$1,sequence,seq:seq$2,polymeterSteps,polymeter,pm,polyrhythm,pr,add:add$1,chunk,chunkBack,div,early,echo,every,fast,inv,invert,iter,iterBack,jux,juxBy,late,linger,mask,mul,off,ply,range:range$1,range2,rev,slow,struct:struct$1,sub,superimpose,set,when,makeComposable,patternify2,patternify3,patternify4,steady,signal,isaw,isaw2,saw,saw2,sine2,sine,cosine,cosine2,square,square2,tri,tri2,time,rand,_brandBy,brandBy,brand,_irand,irand,chooseWith,choose,wchoose,wchooseCycles,perlinWith,perlin,State:State$1,TimeSpan:TimeSpan$1,isNote:isNote$3,tokenizeNote,toMidi,fromMidi,mod,getPlayableNoteValue,getFrequency,rotate,pipe,compose,removeUndefineds,flatten:flatten$1,id:id$1,constant,listRange,curry},Symbol.toStringTag,{value:"Module"}));const{replace}=estraverse,codegen=shiftCodegen.default||shiftCodegen,{Pattern:Pattern$3}=strudel,isNote$2=o=>/^[a-gC-G][bs]?[0-9]$/.test(o);var shapeshifter=o=>{const{code:e,addReturn:s}=wrapAsync(o),a=dist$7.parseScriptWithLocation(e),c=[],d=[],_=replace(a.tree,{enter(k,$){var tt,nt,st;if(d.push($),d.some(rt=>c.includes(rt)))return k;if(isBackTickString(k))return minifyWithLocation(k,k,a.locations,c);if(((tt=k.directives)==null?void 0:tt.length)===1&&!((nt=k.statements)!=null&&nt.length)){const rt=new LiteralStringExpression_1({value:k.directives[0].rawValue}),it=minifyWithLocation(rt,k.directives[0],a.locations,c);return kt(Dt({},k),{directives:[],statements:[it]})}if(isStringWithDoubleQuotes(k,a.locations,e))return minifyWithLocation(k,k,a.locations,c);const _e={"*":"fast","/":"slow","&":"stack","&&":"append"};if(k.type==="BinaryExpression"&&_e[k.operator]&&["LiteralNumericExpression","LiteralStringExpression","IdentifierExpression"].includes((st=k.right)==null?void 0:st.type)&&canBeOverloaded(k.left)){let rt=k.left;return k.left.type==="IdentifierExpression"&&(rt=wrapFunction("reify",k.left)),new CallExpression_1({callee:new StaticMemberExpression_1({property:_e[k.operator],object:wrapFunction("reify",rt)}),arguments:[k.right]})}const et=isPatternArg(d)||hasModifierCall($);if(k.type==="CallExpression"&&k.callee.name==="pure"){const rt=k.arguments[0];return reifyWithLocation(rt,k.arguments[0],a.locations,c)}if(k.type==="IdentifierExpression"){if(isNote$2(k.name)){const rt=k.name[1]==="s"?k.name.replace("s","#"):k.name;return et?reifyWithLocation(new LiteralStringExpression_1({value:rt}),k,a.locations,c):new LiteralStringExpression_1({value:rt})}if(k.name==="r")return new IdentifierExpression_1({name:"silence"})}return["LiteralStringExpression"].includes(k.type)&&et?reifyWithLocation(k,k,a.locations,c):addMiniNotationLocations(k,a.locations,c)},leave(){d.pop()}});return s(_),codegen(_)};function wrapAsync(o){return o=`(async () => { +${o} +})()`,{code:o,addReturn:s=>{const a=s.statements[0].expression.callee.body;a.statements=a.statements.slice(0,-1).concat([new ReturnStatement_1({expression:a.statements.slice(-1)[0]})])}}}function addMiniNotationLocations(o,e,s){const a=["mini","m"];if(o.type==="CallExpression"&&a.includes(o.callee.name)){if(o.arguments.length>1)return console.warn("multi arg mini locations not supported yet..."),o;const c=o.arguments[0];return minifyWithLocation(c,c,e,s)}return o.type==="StaticMemberExpression"&&a.includes(o.property)?minifyWithLocation(o.object,o,e,s):o}function wrapFunction(o,...e){return new CallExpression_1({callee:new IdentifierExpression_1({name:o}),arguments:e})}function isBackTickString(o){return o.type==="TemplateExpression"&&o.elements.length===1}function isStringWithDoubleQuotes(o,e,s){if(o.type!=="LiteralStringExpression")return!1;const a=e.get(o);return s.slice(a.start.offset,a.end.offset)[0]==='"'}function isPatternArg(o){if(!o.length)return!1;const e=o.slice(0,-1),s=o[o.length-1];return isPatternFactory(s)?!0:(s==null?void 0:s.type)==="ArrayExpression"?isPatternArg(e):!1}function hasModifierCall(o){return(o==null?void 0:o.type)==="StaticMemberExpression"&&Object.keys(Pattern$3.prototype.composable).includes(o.property)}const factories=Object.keys(Pattern$3.prototype.factories).concat(["mini"]);function isPatternFactory(o){return(o==null?void 0:o.type)==="CallExpression"&&factories.includes(o.callee.name)}function canBeOverloaded(o){return o.type==="IdentifierExpression"&&isNote$2(o.name)||isPatternFactory(o)}function reifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),d=new CallExpression_1({callee:new StaticMemberExpression_1({object:wrapFunction("reify",o),property:"withLocation"}),arguments:c});return a.push(d),d}function minifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),d=wrapFunction("mini",o),_=new CallExpression_1({callee:new StaticMemberExpression_1({object:d,property:"withMiniLocation"}),arguments:c});return a.push(_),_}function getLocationArguments(o,e){const s=e.get(o),a=-1;return[new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.start.line+a}),new LiteralNumericExpression_1({value:s.start.column}),new LiteralNumericExpression_1({value:s.start.offset})]}),new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.end.line+a}),new LiteralNumericExpression_1({value:s.end.column}),new LiteralNumericExpression_1({value:s.end.offset})]})]}const{isPattern,Pattern:Pattern$2}=strudel;let scoped=!1;const evalScope=async(...o)=>{scoped&&console.warn("@strudel.cycles/eval evalScope was called more than once."),scoped=!0;const e=await Promise.allSettled(o),s=e.filter(a=>a.status==="fulfilled").map(a=>a.value);e.forEach((a,c)=>{a.status==="rejected"&&console.warn(`evalScope: module with index ${c} could not be loaded:`,a.reason)}),Object.assign(globalThis,...s,Pattern$2.prototype.bootstrap())};function safeEval(o){return Function('"use strict";return ('+o+")")()}const evaluate=async o=>{scoped||await evalScope();const e=shapeshifter(o);let s=await safeEval(e);if(!isPattern(s)){console.log("evaluated",s);const a=`got "${typeof s}" instead of pattern`;throw new Error(a+(typeof s=="function"?", did you forget to call a function?":"."))}return{mode:"javascript",pattern:s}};let extend="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(o=>o?parseInt(o,36):1);for(let o=1;oo)return extend[e-1]<=o;return!1}function isRegionalIndicator(o){return o>=127462&&o<=127487}const ZWJ=8205;function findClusterBreak(o,e,s=!0,a=!0){return(s?nextClusterBreak:prevClusterBreak)(o,e,a)}function nextClusterBreak(o,e,s){if(e==o.length)return e;e&&surrogateLow(o.charCodeAt(e))&&surrogateHigh(o.charCodeAt(e-1))&&e--;let a=codePointAt(o,e);for(e+=codePointSize(a);e=0&&isRegionalIndicator(codePointAt(o,_));)d++,_-=2;if(d%2==0)break;e+=2}else break}return e}function prevClusterBreak(o,e,s){for(;e>0;){let a=nextClusterBreak(o,e-2,s);if(a=56320&&o<57344}function surrogateHigh(o){return o>=55296&&o<56320}function codePointAt(o,e){let s=o.charCodeAt(e);if(!surrogateHigh(s)||e+1==o.length)return s;let a=o.charCodeAt(e+1);return surrogateLow(a)?(s-55296<<10)+(a-56320)+65536:s}function fromCodePoint(o){return o<=65535?String.fromCharCode(o):(o-=65536,String.fromCharCode((o>>10)+55296,(o&1023)+56320))}function codePointSize(o){return o<65536?1:2}function countColumn(o,e,s=o.length){let a=0;for(let c=0;c=e)return c;if(c==o.length)break;d+=o.charCodeAt(c)==9?s-d%s:1,c=findClusterBreak(o,c)}return a===!0?-1:o.length}class Text{constructor(){}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,s,a){let c=[];return this.decompose(0,e,c,2),a.length&&a.decompose(0,a.length,c,3),this.decompose(s,this.length,c,1),TextNode.from(c,this.length-(s-e)+a.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,s=this.length){let a=[];return this.decompose(e,s,a,0),TextNode.from(a,s-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let s=this.scanIdentical(e,1),a=this.length-this.scanIdentical(e,-1),c=new RawTextCursor(this),d=new RawTextCursor(e);for(let _=s,b=s;;){if(c.next(_),d.next(_),_=0,c.lineBreak!=d.lineBreak||c.done!=d.done||c.value!=d.value)return!1;if(b+=c.value.length,c.done||b>=a)return!0}}iter(e=1){return new RawTextCursor(this,e)}iterRange(e,s=this.length){return new PartialTextCursor(this,e,s)}iterLines(e,s){let a;if(e==null)a=this.iter();else{s==null&&(s=this.lines+1);let c=this.line(e).from;a=this.iterRange(c,Math.max(c,s==this.lines+1?this.length:s<=1?0:this.line(s-1).to))}return new LineCursor(a)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?Text.empty:e.length<=32?new TextLeaf(e):TextNode.from(TextLeaf.split(e,[]))}}class TextLeaf extends Text{constructor(e,s=textLength(e)){super(),this.text=e,this.length=s}get lines(){return this.text.length}get children(){return null}lineInner(e,s,a,c){for(let d=0;;d++){let _=this.text[d],b=c+_.length;if((s?a:b)>=e)return new Line(c,b,a,_);c=b+1,a++}}decompose(e,s,a,c){let d=e<=0&&s>=this.length?this:new TextLeaf(sliceText(this.text,e,s),Math.min(s,this.length)-Math.max(0,e));if(c&1){let _=a.pop(),b=appendText(d.text,_.text.slice(),0,d.length);if(b.length<=32)a.push(new TextLeaf(b,_.length+d.length));else{let k=b.length>>1;a.push(new TextLeaf(b.slice(0,k)),new TextLeaf(b.slice(k)))}}else a.push(d)}replace(e,s,a){if(!(a instanceof TextLeaf))return super.replace(e,s,a);let c=appendText(this.text,appendText(a.text,sliceText(this.text,0,e)),s),d=this.length+a.length-(s-e);return c.length<=32?new TextLeaf(c,d):TextNode.from(TextLeaf.split(c,[]),d)}sliceString(e,s=this.length,a=` +`){let c="";for(let d=0,_=0;d<=s&&_e&&_&&(c+=a),ed&&(c+=b.slice(Math.max(0,e-d),s-d)),d=k+1}return c}flatten(e){for(let s of this.text)e.push(s)}scanIdentical(){return 0}static split(e,s){let a=[],c=-1;for(let d of e)a.push(d),c+=d.length+1,a.length==32&&(s.push(new TextLeaf(a,c)),a=[],c=-1);return c>-1&&s.push(new TextLeaf(a,c)),s}}class TextNode extends Text{constructor(e,s){super(),this.children=e,this.length=s,this.lines=0;for(let a of e)this.lines+=a.lines}lineInner(e,s,a,c){for(let d=0;;d++){let _=this.children[d],b=c+_.length,k=a+_.lines-1;if((s?k:b)>=e)return _.lineInner(e,s,a,c);c=b+1,a=k+1}}decompose(e,s,a,c){for(let d=0,_=0;_<=s&&d=_){let $=c&((_<=e?1:0)|(k>=s?2:0));_>=e&&k<=s&&!$?a.push(b):b.decompose(e-_,s-_,a,$)}_=k+1}}replace(e,s,a){if(a.lines=d&&s<=b){let k=_.replace(e-d,s-d,a),$=this.lines-_.lines+k.lines;if(k.lines<$>>5-1&&k.lines>$>>5+1){let j=this.children.slice();return j[c]=k,new TextNode(j,this.length-(s-e)+a.length)}return super.replace(d,b,k)}d=b+1}return super.replace(e,s,a)}sliceString(e,s=this.length,a=` +`){let c="";for(let d=0,_=0;de&&d&&(c+=a),e_&&(c+=b.sliceString(e-_,s-_,a)),_=k+1}return c}flatten(e){for(let s of this.children)s.flatten(e)}scanIdentical(e,s){if(!(e instanceof TextNode))return 0;let a=0,[c,d,_,b]=s>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;c+=s,d+=s){if(c==_||d==b)return a;let k=this.children[c],$=e.children[d];if(k!=$)return a+k.scanIdentical($,s);a+=k.length+1}}static from(e,s=e.reduce((a,c)=>a+c.length+1,-1)){let a=0;for(let tt of e)a+=tt.lines;if(a<32){let tt=[];for(let nt of e)nt.flatten(tt);return new TextLeaf(tt,s)}let c=Math.max(32,a>>5),d=c<<1,_=c>>1,b=[],k=0,$=-1,j=[];function _e(tt){let nt;if(tt.lines>d&&tt instanceof TextNode)for(let st of tt.children)_e(st);else tt.lines>_&&(k>_||!k)?(et(),b.push(tt)):tt instanceof TextLeaf&&k&&(nt=j[j.length-1])instanceof TextLeaf&&tt.lines+nt.lines<=32?(k+=tt.lines,$+=tt.length+1,j[j.length-1]=new TextLeaf(nt.text.concat(tt.text),nt.length+1+tt.length)):(k+tt.lines>c&&et(),k+=tt.lines,$+=tt.length+1,j.push(tt))}function et(){k!=0&&(b.push(j.length==1?j[0]:TextNode.from(j,$)),$=-1,k=j.length=0)}for(let tt of e)_e(tt);return et(),b.length==1?b[0]:new TextNode(b,s)}}Text.empty=new TextLeaf([""],0);function textLength(o){let e=-1;for(let s of o)e+=s.length+1;return e}function appendText(o,e,s=0,a=1e9){for(let c=0,d=0,_=!0;d=s&&(k>a&&(b=b.slice(0,a-c)),c0?1:(e instanceof TextLeaf?e.text.length:e.children.length)<<1]}nextInner(e,s){for(this.done=this.lineBreak=!1;;){let a=this.nodes.length-1,c=this.nodes[a],d=this.offsets[a],_=d>>1,b=c instanceof TextLeaf?c.text.length:c.children.length;if(_==(s>0?b:0)){if(a==0)return this.done=!0,this.value="",this;s>0&&this.offsets[a-1]++,this.nodes.pop(),this.offsets.pop()}else if((d&1)==(s>0?0:1)){if(this.offsets[a]+=s,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(c instanceof TextLeaf){let k=c.text[_+(s<0?-1:0)];if(this.offsets[a]+=s,k.length>Math.max(0,e))return this.value=e==0?k:s>0?k.slice(e):k.slice(0,k.length-e),this;e-=k.length}else{let k=c.children[_+(s<0?-1:0)];e>k.length?(e-=k.length,this.offsets[a]+=s):(s<0&&this.offsets[a]--,this.nodes.push(k),this.offsets.push(s>0?1:(k instanceof TextLeaf?k.text.length:k.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class PartialTextCursor{constructor(e,s,a){this.value="",this.done=!1,this.cursor=new RawTextCursor(e,s>a?-1:1),this.pos=s>a?e.length:0,this.from=Math.min(s,a),this.to=Math.max(s,a)}nextInner(e,s){if(s<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,s<0?this.pos-this.to:this.from-this.pos);let a=s<0?this.pos-this.from:this.to-this.pos;e>a&&(e=a),a-=e;let{value:c}=this.cursor.next(e);return this.pos+=(c.length+e)*s,this.value=c.length<=a?c:s<0?c.slice(c.length-a):c.slice(0,a),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class LineCursor{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:s,lineBreak:a,value:c}=this.inner.next(e);return s?(this.done=!0,this.value=""):a?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=c,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol!="undefined"&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this});class Line{constructor(e,s,a,c){this.from=e,this.to=s,this.number=a,this.text=c}get length(){return this.to-this.from}}const DefaultSplit=/\r\n?|\n/;var MapMode=function(o){return o[o.Simple=0]="Simple",o[o.TrackDel=1]="TrackDel",o[o.TrackBefore=2]="TrackBefore",o[o.TrackAfter=3]="TrackAfter",o}(MapMode||(MapMode={}));class ChangeDesc{constructor(e){this.sections=e}get length(){let e=0;for(let s=0;se)return d+(e-c);d+=b}else{if(a!=MapMode.Simple&&$>=e&&(a==MapMode.TrackDel&&ce||a==MapMode.TrackBefore&&ce))return null;if($>e||$==e&&s<0&&!b)return e==c||s<0?d:d+k;d+=k}c=$}if(e>c)throw new RangeError(`Position ${e} is out of range for changeset of length ${c}`);return d}touchesRange(e,s=e){for(let a=0,c=0;a=0&&c<=s&&b>=e)return cs?"cover":!0;c=b}return!1}toString(){let e="";for(let s=0;s=0?":"+c:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(s=>typeof s!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(e)}}class ChangeSet extends ChangeDesc{constructor(e,s){super(e),this.inserted=s}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return iterChanges(this,(s,a,c,d,_)=>e=e.replace(c,c+(a-s),_),!1),e}mapDesc(e,s=!1){return mapSet(this,e,s,!0)}invert(e){let s=this.sections.slice(),a=[];for(let c=0,d=0;c=0){s[c]=b,s[c+1]=_;let k=c>>1;for(;a.length0&&addInsert(a,s,d.text),d.forward(j),b+=j}let $=e[_++];for(;b<$;){if(d.done)break e;let j=Math.min(d.len,$-b);addSection(s,j,-1),addSection(c,j,d.ins==-1?-1:d.off==0?d.ins:0),d.forward(j),b+=j}}return{changes:new ChangeSet(s,a),filtered:new ChangeDesc(c)}}toJSON(){let e=[];for(let s=0;s>1].toJSON()))}return e}static of(e,s,a){let c=[],d=[],_=0,b=null;function k(j=!1){if(!j&&!c.length)return;_et||_e<0||et>s)throw new RangeError(`Invalid change range ${_e} to ${et} (in doc of length ${s})`);let nt=tt?typeof tt=="string"?Text.of(tt.split(a||DefaultSplit)):tt:Text.empty,st=nt.length;if(_e==et&&st==0)return;_e<_&&k(),_e>_&&addSection(c,_e-_,-1),addSection(c,et-_e,st),addInsert(d,c,nt),_=et}}return $(e),k(!b),b}static empty(e){return new ChangeSet(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let s=[],a=[];for(let c=0;cb&&typeof _!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(d.length==1)s.push(d[0],0);else{for(;a.length=0&&s<=0&&s==o[c+1]?o[c]+=e:e==0&&o[c]==0?o[c+1]+=s:a?(o[c]+=e,o[c+1]+=s):o.push(e,s)}function addInsert(o,e,s){if(s.length==0)return;let a=e.length-2>>1;if(a>1])),!(s||_==o.sections.length||o.sections[_+1]<0);)b=o.sections[_++],k=o.sections[_++];e(c,$,d,j,_e),c=$,d=j}}}function mapSet(o,e,s,a=!1){let c=[],d=a?[]:null,_=new SectionIter(o),b=new SectionIter(e);for(let k=0,$=0;;)if(_.ins==-1)k+=_.len,_.next();else if(b.ins==-1&&$=0&&(_.done||$$&&!_.done&&k+_.len<$+b.len;)k+=_.len,_.next();$+=b.len,b.next()}else if(_.ins>=0){let j=0,_e=k+_.len;for(;;)if(b.ins>=0&&$>k&&$+b.len<_e)j+=b.ins,$+=b.len,b.next();else if(b.ins==-1&&$<_e){let et=Math.min(b.len,_e-$);j+=et,b.forward(et),$+=et}else break;addSection(c,j,_.ins),d&&addInsert(d,c,_.text),k=_e,_.next()}else{if(_.done&&b.done)return d?new ChangeSet(c,d):new ChangeDesc(c);throw new Error("Mismatched change set lengths")}}function composeSets(o,e,s=!1){let a=[],c=s?[]:null,d=new SectionIter(o),_=new SectionIter(e);for(let b=!1;;){if(d.done&&_.done)return c?new ChangeSet(a,c):new ChangeDesc(a);if(d.ins==0)addSection(a,d.len,0,b),d.next();else if(_.len==0&&!_.done)addSection(a,0,_.ins,b),c&&addInsert(c,a,_.text),_.next();else{if(d.done||_.done)throw new Error("Mismatched change set lengths");{let k=Math.min(d.len2,_.len),$=a.length;if(d.ins==-1){let j=_.ins==-1?-1:_.off?0:_.ins;addSection(a,k,j,b),c&&j&&addInsert(c,a,_.text)}else _.ins==-1?(addSection(a,d.off?0:d.len,k,b),c&&addInsert(c,a,d.textBit(k))):(addSection(a,d.off?0:d.len,_.off?0:_.ins,b),c&&!_.off&&addInsert(c,a,_.text));b=(d.ins>k||_.ins>=0&&_.len>k)&&(b||a.length>$),d.forward2(k),_.forward(k)}}}}class SectionIter{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return s>=e.length?Text.empty:e[s]}textBit(e){let{inserted:s}=this.set,a=this.i-2>>1;return a>=s.length&&!e?Text.empty:s[a].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class SelectionRange{constructor(e,s,a){this.from=e,this.to=s,this.flags=a}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,s=-1){let a,c;return this.empty?a=c=e.mapPos(this.from,s):(a=e.mapPos(this.from,1),c=e.mapPos(this.to,-1)),a==this.from&&c==this.to?this:new SelectionRange(a,c,this.flags)}extend(e,s=e){if(e<=this.anchor&&s>=this.anchor)return EditorSelection.range(e,s);let a=Math.abs(e-this.anchor)>Math.abs(s-this.anchor)?e:s;return EditorSelection.range(this.anchor,a)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(e.anchor,e.head)}}class EditorSelection{constructor(e,s=0){this.ranges=e,this.mainIndex=s}map(e,s=-1){return e.empty?this:EditorSelection.create(this.ranges.map(a=>a.map(e,s)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let s=0;se.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(e.ranges.map(s=>SelectionRange.fromJSON(s)),e.main)}static single(e,s=e){return new EditorSelection([EditorSelection.range(e,s)],0)}static create(e,s=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let a=0,c=0;ce?4:0))}}function normalized(o,e=0){let s=o[e];o.sort((a,c)=>a.from-c.from),e=o.indexOf(s);for(let a=1;ac.head?EditorSelection.range(b,_):EditorSelection.range(_,b))}}return new EditorSelection(o,e)}function checkSelection(o,e){for(let s of o.ranges)if(s.to>e)throw new RangeError("Selection points outside of document")}let nextID=0;class Facet{constructor(e,s,a,c,d){this.combine=e,this.compareInput=s,this.compare=a,this.isStatic=c,this.extensions=d,this.id=nextID++,this.default=e([])}static define(e={}){return new Facet(e.combine||(s=>s),e.compareInput||((s,a)=>s===a),e.compare||(e.combine?(s,a)=>s===a:sameArray$1),!!e.static,e.enables)}of(e){return new FacetProvider([],this,0,e)}compute(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,1,s)}computeN(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,2,s)}from(e,s){return s||(s=a=>a),this.compute([e],a=>s(a.field(e)))}}function sameArray$1(o,e){return o==e||o.length==e.length&&o.every((s,a)=>s===e[a])}class FacetProvider{constructor(e,s,a,c){this.dependencies=e,this.facet=s,this.type=a,this.value=c,this.id=nextID++}dynamicSlot(e){var s;let a=this.value,c=this.facet.compareInput,d=this.id,_=e[d]>>1,b=this.type==2,k=!1,$=!1,j=[];for(let _e of this.dependencies)_e=="doc"?k=!0:_e=="selection"?$=!0:(((s=e[_e.id])!==null&&s!==void 0?s:1)&1)==0&&j.push(e[_e.id]);return{create(_e){return _e.values[_]=a(_e),1},update(_e,et){if(k&&et.docChanged||$&&(et.docChanged||et.selection)||j.some(tt=>(ensureAddr(_e,tt)&1)>0)){let tt=a(_e);if(b?!compareArray(tt,_e.values[_],c):!c(tt,_e.values[_]))return _e.values[_]=tt,1}return 0},reconfigure(_e,et){let tt=a(_e),nt=et.config.address[d];if(nt!=null){let st=getAddr(et,nt);if(b?compareArray(tt,st,c):c(tt,st))return _e.values[_]=st,0}return _e.values[_]=tt,1}}}}function compareArray(o,e,s){if(o.length!=e.length)return!1;for(let a=0;ao[k.id]),c=s.map(k=>k.type),d=a.filter(k=>!(k&1)),_=o[e.id]>>1;function b(k){let $=[];for(let j=0;jensureAddr(k,_e)&1))return 0;let j=b(k);return e.compare(j,k.values[_])?0:(k.values[_]=j,1)},reconfigure(k,$){let j=a.some(nt=>ensureAddr(k,nt)&1),_e=$.config.facets[e.id],et=$.facet(e);if(_e&&!j&&sameArray$1(s,_e))return k.values[_]=et,0;let tt=b(k);return e.compare(tt,et)?(k.values[_]=et,0):(k.values[_]=tt,1)}}}const initField=Facet.define({static:!0});class StateField{constructor(e,s,a,c,d){this.id=e,this.createF=s,this.updateF=a,this.compareF=c,this.spec=d,this.provides=void 0}static define(e){let s=new StateField(nextID++,e.create,e.update,e.compare||((a,c)=>a===c),e);return e.provide&&(s.provides=e.provide(s)),s}create(e){let s=e.facet(initField).find(a=>a.field==this);return((s==null?void 0:s.create)||this.createF)(e)}slot(e){let s=e[this.id]>>1;return{create:a=>(a.values[s]=this.create(a),1),update:(a,c)=>{let d=a.values[s],_=this.updateF(d,c);return this.compareF(d,_)?0:(a.values[s]=_,1)},reconfigure:(a,c)=>c.config.address[this.id]!=null?(a.values[s]=c.field(this),0):(a.values[s]=this.create(a),1)}}init(e){return[this,initField.of({field:this,create:e})]}get extension(){return this}}const Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(o){return e=>new PrecExtension(e,o)}const Prec={lowest:prec(Prec_.lowest),low:prec(Prec_.low),default:prec(Prec_.default),high:prec(Prec_.high),highest:prec(Prec_.highest),fallback:prec(Prec_.lowest),extend:prec(Prec_.high),override:prec(Prec_.highest)};class PrecExtension{constructor(e,s){this.inner=e,this.prec=s}}class Compartment{of(e){return new CompartmentInstance(this,e)}reconfigure(e){return Compartment.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class CompartmentInstance{constructor(e,s){this.compartment=e,this.inner=s}}class Configuration{constructor(e,s,a,c,d,_){for(this.base=e,this.compartments=s,this.dynamicSlots=a,this.address=c,this.staticValues=d,this.facets=_,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,s,a){let c=[],d=Object.create(null),_=new Map;for(let et of flatten(e,s,_))et instanceof StateField?c.push(et):(d[et.facet.id]||(d[et.facet.id]=[])).push(et);let b=Object.create(null),k=[],$=[];for(let et of c)b[et.id]=$.length<<1,$.push(tt=>et.slot(tt));let j=a==null?void 0:a.config.facets;for(let et in d){let tt=d[et],nt=tt[0].facet,st=j&&j[et]||[];if(tt.every(rt=>rt.type==0))if(b[nt.id]=k.length<<1|1,sameArray$1(st,tt))k.push(a.facet(nt));else{let rt=nt.combine(tt.map(it=>it.value));k.push(a&&nt.compare(rt,a.facet(nt))?a.facet(nt):rt)}else{for(let rt of tt)rt.type==0?(b[rt.id]=k.length<<1|1,k.push(rt.value)):(b[rt.id]=$.length<<1,$.push(it=>rt.dynamicSlot(it)));b[nt.id]=$.length<<1,$.push(rt=>dynamicFacetSlot(rt,nt,tt))}}let _e=$.map(et=>et(b));return new Configuration(e,_,_e,b,k,d)}}function flatten(o,e,s){let a=[[],[],[],[],[]],c=new Map;function d(_,b){let k=c.get(_);if(k!=null){if(k>=b)return;let $=a[k].indexOf(_);$>-1&&a[k].splice($,1),_ instanceof CompartmentInstance&&s.delete(_.compartment)}if(c.set(_,b),Array.isArray(_))for(let $ of _)d($,b);else if(_ instanceof CompartmentInstance){if(s.has(_.compartment))throw new RangeError("Duplicate use of compartment in extensions");let $=e.get(_.compartment)||_.inner;s.set(_.compartment,$),d($,b)}else if(_ instanceof PrecExtension)d(_.inner,_.prec);else if(_ instanceof StateField)a[b].push(_),_.provides&&d(_.provides,b);else if(_ instanceof FacetProvider)a[b].push(_),_.facet.extensions&&d(_.facet.extensions,b);else{let $=_.extension;if(!$)throw new Error(`Unrecognized extension value in extension set (${_}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);d($,b)}}return d(o,Prec_.default),a.reduce((_,b)=>_.concat(b))}function ensureAddr(o,e){if(e&1)return 2;let s=e>>1,a=o.status[s];if(a==4)throw new Error("Cyclic dependency between fields and/or facets");if(a&2)return a;o.status[s]=4;let c=o.computeSlot(o,o.config.dynamicSlots[s]);return o.status[s]=2|c}function getAddr(o,e){return e&1?o.config.staticValues[e>>1]:o.values[e>>1]}const languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:o=>o.some(e=>e),static:!0}),lineSeparator=Facet.define({combine:o=>o.length?o[0]:void 0,static:!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly$1=Facet.define({combine:o=>o.length?o[0]:!1});class Annotation{constructor(e,s){this.type=e,this.value=s}static define(){return new AnnotationType}}class AnnotationType{of(e){return new Annotation(this,e)}}class StateEffectType{constructor(e){this.map=e}of(e){return new StateEffect(this,e)}}class StateEffect{constructor(e,s){this.type=e,this.value=s}map(e){let s=this.type.map(this.value,e);return s===void 0?void 0:s==this.value?this:new StateEffect(this.type,s)}is(e){return this.type==e}static define(e={}){return new StateEffectType(e.map||(s=>s))}static mapEffects(e,s){if(!e.length)return e;let a=[];for(let c of e){let d=c.map(s);d&&a.push(d)}return a}}StateEffect.reconfigure=StateEffect.define();StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(e,s,a,c,d,_){this.startState=e,this.changes=s,this.selection=a,this.effects=c,this.annotations=d,this.scrollIntoView=_,this._doc=null,this._state=null,a&&checkSelection(a,s.newLength),d.some(b=>b.type==Transaction.time)||(this.annotations=d.concat(Transaction.time.of(Date.now())))}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let s of this.annotations)if(s.type==e)return s.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let s=this.annotation(Transaction.userEvent);return!!(s&&(s==e||s.length>e.length&&s.slice(0,e.length)==e&&s[e.length]=="."))}}Transaction.time=Annotation.define();Transaction.userEvent=Annotation.define();Transaction.addToHistory=Annotation.define();Transaction.remote=Annotation.define();function joinRanges(o,e){let s=[];for(let a=0,c=0;;){let d,_;if(a=o[a]))d=o[a++],_=o[a++];else if(c=0;c--){let d=a[c](o);d instanceof Transaction?o=d:Array.isArray(d)&&d.length==1&&d[0]instanceof Transaction?o=d[0]:o=resolveTransaction(e,asArray$1(d),!1)}return o}function extendTransaction(o){let e=o.startState,s=e.facet(transactionExtender),a=o;for(let c=s.length-1;c>=0;c--){let d=s[c](o);d&&Object.keys(d).length&&(a=mergeTransaction(o,resolveTransactionInner(e,d,o.changes.newLength),!0))}return a==o?o:new Transaction(e,o.changes,o.selection,a.effects,a.annotations,a.scrollIntoView)}const none$3=[];function asArray$1(o){return o==null?none$3:Array.isArray(o)?o:[o]}var CharCategory=function(o){return o[o.Word=0]="Word",o[o.Space=1]="Space",o[o.Other=2]="Other",o}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wordChar;try{wordChar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(o){}function hasWordChar(o){if(wordChar)return wordChar.test(o);for(let e=0;e"\x80"&&(s.toUpperCase()!=s.toLowerCase()||nonASCIISingleCaseWordChar.test(s)))return!0}return!1}function makeCategorizer(o){return e=>{if(!/\S/.test(e))return CharCategory.Space;if(hasWordChar(e))return CharCategory.Word;for(let s=0;s-1)return CharCategory.Word;return CharCategory.Other}}class EditorState{constructor(e,s,a,c,d,_){this.config=e,this.doc=s,this.selection=a,this.values=c,this.status=e.statusTemplate.slice(),this.computeSlot=d,_&&(_._state=this);for(let b=0;bc.set(k,b)),s=null),c.set(_.value.compartment,_.value.extension)):_.is(StateEffect.reconfigure)?(s=null,a=_.value):_.is(StateEffect.appendConfig)&&(s=null,a=asArray$1(a).concat(_.value));let d;s?d=e.startState.values.slice():(s=Configuration.resolve(a,c,this),d=new EditorState(s,this.doc,this.selection,s.dynamicSlots.map(()=>null),(b,k)=>k.reconfigure(b,this),null).values),new EditorState(s,e.newDoc,e.newSelection,d,(_,b)=>b.update(_,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(s=>({changes:{from:s.from,to:s.to,insert:e},range:EditorSelection.cursor(s.from+e.length)}))}changeByRange(e){let s=this.selection,a=e(s.ranges[0]),c=this.changes(a.changes),d=[a.range],_=asArray$1(a.effects);for(let b=1;b_.spec.fromJSON(b,k)))}return EditorState.create({doc:e.doc,selection:EditorSelection.fromJSON(e.selection),extensions:s.extensions?c.concat([s.extensions]):c})}static create(e={}){let s=Configuration.resolve(e.extensions||[],new Map),a=e.doc instanceof Text?e.doc:Text.of((e.doc||"").split(s.staticFacet(EditorState.lineSeparator)||DefaultSplit)),c=e.selection?e.selection instanceof EditorSelection?e.selection:EditorSelection.single(e.selection.anchor,e.selection.head):EditorSelection.single(0);return checkSelection(c,a.length),s.staticFacet(allowMultipleSelections)||(c=c.asSingle()),new EditorState(s,a,c,s.dynamicSlots.map(()=>null),(d,_)=>_.create(d),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||` +`}get readOnly(){return this.facet(readOnly$1)}phrase(e){for(let s of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(s,e))return s[e];return e}languageDataAt(e,s,a=-1){let c=[];for(let d of this.facet(languageData))for(let _ of d(this,s,a))Object.prototype.hasOwnProperty.call(_,e)&&c.push(_[e]);return c}charCategorizer(e){return makeCategorizer(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:s,from:a,length:c}=this.doc.lineAt(e),d=this.charCategorizer(e),_=e-a,b=e-a;for(;_>0;){let k=findClusterBreak(s,_,!1);if(d(s.slice(k,_))!=CharCategory.Word)break;_=k}for(;bo.length?o[0]:4});EditorState.lineSeparator=lineSeparator;EditorState.readOnly=readOnly$1;EditorState.phrases=Facet.define();EditorState.languageData=languageData;EditorState.changeFilter=changeFilter;EditorState.transactionFilter=transactionFilter;EditorState.transactionExtender=transactionExtender;Compartment.reconfigure=StateEffect.define();function combineConfig(o,e,s={}){let a={};for(let c of o)for(let d of Object.keys(c)){let _=c[d],b=a[d];if(b===void 0)a[d]=_;else if(!(b===_||_===void 0))if(Object.hasOwnProperty.call(s,d))a[d]=s[d](b,_);else throw new Error("Config merge conflict for field "+d)}for(let c in e)a[c]===void 0&&(a[c]=e[c]);return a}const C="\u037C",COUNT=typeof Symbol=="undefined"?"__"+C:Symbol.for(C),SET=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),top=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{};class StyleModule{constructor(e,s){this.rules=[];let{finish:a}=s||{};function c(_){return/^@/.test(_)?[_]:_.split(/,\s*/)}function d(_,b,k,$){let j=[],_e=/^@(\w+)\b/.exec(_[0]),et=_e&&_e[1]=="keyframes";if(_e&&b==null)return k.push(_[0]+";");for(let tt in b){let nt=b[tt];if(/&/.test(tt))d(tt.split(/,\s*/).map(st=>_.map(rt=>st.replace(/&/,rt))).reduce((st,rt)=>st.concat(rt)),nt,k);else if(nt&&typeof nt=="object"){if(!_e)throw new RangeError("The value of a property ("+tt+") should be a primitive value.");d(c(tt),nt,j,et)}else nt!=null&&j.push(tt.replace(/_.*/,"").replace(/[A-Z]/g,st=>"-"+st.toLowerCase())+": "+nt+";")}(j.length||et)&&k.push((a&&!_e&&!$?_.map(a):_).join(", ")+" {"+j.join(" ")+"}")}for(let _ in e)d(c(_),e[_],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=top[COUNT]||1;return top[COUNT]=e+1,C+e.toString(36)}static mount(e,s){(e[SET]||new StyleSet(e)).mount(Array.isArray(s)?s:[s])}}let adoptedSet=null;class StyleSet{constructor(e){if(!e.head&&e.adoptedStyleSheets&&typeof CSSStyleSheet!="undefined"){if(adoptedSet)return e.adoptedStyleSheets=[adoptedSet.sheet].concat(e.adoptedStyleSheets),e[SET]=adoptedSet;this.sheet=new CSSStyleSheet,e.adoptedStyleSheets=[this.sheet].concat(e.adoptedStyleSheets),adoptedSet=this}else{this.styleTag=(e.ownerDocument||e).createElement("style");let s=e.head||e;s.insertBefore(this.styleTag,s.firstChild)}this.modules=[],e[SET]=this}mount(e){let s=this.sheet,a=0,c=0;for(let d=0;d-1&&(this.modules.splice(b,1),c--,b=-1),b==-1){if(this.modules.splice(c++,0,_),s)for(let k=0;k<_.rules.length;k++)s.insertRule(_.rules[k],a++)}else{for(;c>1,$=d[k]-e||(a?this.value[k].endSide:this.value[k].startSide)-s;if(k==_)return $>=0?_:b;$>=0?b=k:_=k+1}}between(e,s,a,c){for(let d=this.findIndex(s,-1e9,!0),_=this.findIndex(a,1e9,!1,d);d<_;d++)if(c(this.from[d]+e,this.to[d]+e,this.value[d])===!1)return!1}map(e,s){let a=[],c=[],d=[],_=-1,b=-1;for(let k=0;ktt||et==tt&&$.startSide>0&&$.endSide<=0)continue;(tt-et||$.endSide-$.startSide)<0||(_<0&&(_=et),$.point&&(b=Math.max(b,tt-et)),a.push($),c.push(et-_),d.push(tt-_))}return{mapped:a.length?new Chunk(c,d,a,b):null,pos:_}}}class RangeSet{constructor(e,s,a=RangeSet.empty,c){this.chunkPos=e,this.chunk=s,this.nextLayer=a,this.maxPoint=c}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let s of this.chunk)e+=s.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:s=[],sort:a=!1,filterFrom:c=0,filterTo:d=this.length}=e,_=e.filter;if(s.length==0&&!_)return this;if(a&&(s=s.slice().sort(cmpRange)),this.isEmpty)return s.length?RangeSet.of(s):this;let b=new LayerCursor(this,null,-1).goto(0),k=0,$=[],j=new RangeSetBuilder;for(;b.value||k=0){let _e=s[k++];j.addInner(_e.from,_e.to,_e.value)||$.push(_e)}else b.rangeIndex==1&&b.chunkIndexthis.chunkEnd(b.chunkIndex)||db.to||d=d&&e<=d+_.length&&_.between(d,e-d,s-d,a)===!1)return}this.nextLayer.between(e,s,a)}}iter(e=0){return HeapCursor.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,s=0){return HeapCursor.from(e).goto(s)}static compare(e,s,a,c,d=-1){let _=e.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),b=s.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),k=findSharedChunks(_,b,a),$=new SpanCursor(_,k,d),j=new SpanCursor(b,k,d);a.iterGaps((_e,et,tt)=>compare($,_e,j,et,tt,c)),a.empty&&a.length==0&&compare($,0,j,0,0,c)}static eq(e,s,a=0,c){c==null&&(c=1e9);let d=e.filter(j=>!j.isEmpty&&s.indexOf(j)<0),_=s.filter(j=>!j.isEmpty&&e.indexOf(j)<0);if(d.length!=_.length)return!1;if(!d.length)return!0;let b=findSharedChunks(d,_),k=new SpanCursor(d,b,0).goto(a),$=new SpanCursor(_,b,0).goto(a);for(;;){if(k.to!=$.to||!sameValues(k.active,$.active)||k.point&&(!$.point||!k.point.eq($.point)))return!1;if(k.to>c)return!0;k.next(),$.next()}}static spans(e,s,a,c,d=-1){var _;let b=new SpanCursor(e,null,d,(_=c.filterPoint)===null||_===void 0?void 0:_.bind(c)).goto(s),k=s,$=b.openStart;for(;;){let j=Math.min(b.to,a);if(b.point?(c.point(k,j,b.point,b.activeForPoint(b.to),$),$=b.openEnd(j)+(b.to>j?1:0)):j>k&&(c.span(k,j,b.active,$),$=b.openEnd(j)),b.to>a)break;k=b.to,b.next()}return $}static of(e,s=!1){let a=new RangeSetBuilder;for(let c of e instanceof Range$1?[e]:s?lazySort(e):e)a.add(c.from,c.to,c.value);return a.finish()}}RangeSet.empty=new RangeSet([],[],null,-1);function lazySort(o){if(o.length>1)for(let e=o[0],s=1;s0)return o.slice().sort(cmpRange);e=a}return o}RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}finishChunk(e){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}add(e,s,a){this.addInner(e,s,a)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(e,s,a)}addInner(e,s,a){let c=e-this.lastTo||a.startSide-this.last.endSide;if(c<=0&&(e-this.lastFrom||a.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return c<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(s-this.chunkStart),this.last=a,this.lastFrom=e,this.lastTo=s,this.value.push(a),a.point&&(this.maxPoint=Math.max(this.maxPoint,s-e)),!0)}addChunk(e,s){if((e-this.lastTo||s.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,s.maxPoint),this.chunks.push(s),this.chunkPos.push(e);let a=s.value.length-1;return this.last=s.value[a],this.lastFrom=s.from[a]+e,this.lastTo=s.to[a]+e,!0}finish(){return this.finishInner(RangeSet.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let s=new RangeSet(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,s}}function findSharedChunks(o,e,s){let a=new Map;for(let d of o)for(let _=0;_=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=a&&c.push(new LayerCursor(_,s,a,d));return c.length==1?c[0]:new HeapCursor(c)}get startSide(){return this.value?this.value.startSide:0}goto(e,s=-1e9){for(let a of this.heap)a.goto(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);return this.next(),this}forward(e,s){for(let a of this.heap)a.forward(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);(this.to-e||this.value.endSide-s)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),heapBubble(this.heap,0)}}}function heapBubble(o,e){for(let s=o[e];;){let a=(e<<1)+1;if(a>=o.length)break;let c=o[a];if(a+1=0&&(c=o[a+1],a++),s.compare(c)<0)break;o[a]=s,o[e]=c,e=a}}class SpanCursor{constructor(e,s,a,c=()=>!0){this.minPoint=a,this.filterPoint=c,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=HeapCursor.from(e,s,a)}goto(e,s=-1e9){return this.cursor.goto(e,s),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=s,this.openStart=-1,this.next(),this}forward(e,s){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-s)<0;)this.removeActive(this.minActive);this.cursor.forward(e,s)}removeActive(e){remove(this.active,e),remove(this.activeTo,e),remove(this.activeRank,e),this.minActive=findMinIndex(this.active,this.activeTo)}addActive(e){let s=0,{value:a,to:c,rank:d}=this.cursor;for(;s-1&&(this.activeTo[d]-this.cursor.from||this.active[d].endSide-this.cursor.startSide)<0){if(this.activeTo[d]>e){this.to=this.activeTo[d],this.endSide=this.active[d].endSide;break}this.removeActive(d),a&&remove(a,d)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let _=this.cursor.value;if(!_.point)this.addActive(a),this.cursor.next();else if(s&&this.cursor.to==this.to&&this.cursor.from=0&&!(this.activeRank[a]e||this.activeTo[a]==e&&this.active[a].endSide>=this.point.endSide)&&s.push(this.active[a]);return s.reverse()}openEnd(e){let s=0;for(let a=this.activeTo.length-1;a>=0&&this.activeTo[a]>e;a--)s++;return s}}function compare(o,e,s,a,c,d){o.goto(e),s.goto(a);let _=a+c,b=a,k=a-e;for(;;){let $=o.to+k-s.to||o.endSide-s.endSide,j=$<0?o.to+k:s.to,_e=Math.min(j,_);if(o.point||s.point?o.point&&s.point&&(o.point==s.point||o.point.eq(s.point))&&sameValues(o.activeForPoint(o.to+k),s.activeForPoint(s.to))||d.comparePoint(b,_e,o.point,s.point):_e>b&&!sameValues(o.active,s.active)&&d.compareRange(b,_e,o.active,s.active),j>_)break;b=j,$<=0&&o.next(),$>=0&&s.next()}}function sameValues(o,e){if(o.length!=e.length)return!1;for(let s=0;s=e;a--)o[a+1]=o[a];o[e]=s}function findMinIndex(o,e){let s=-1,a=1e9;for(let c=0;c",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"',229:"Q"},chrome$1=typeof navigator!="undefined"&&/Chrome\/(\d+)/.exec(navigator.userAgent),safari$1=typeof navigator!="undefined"&&/Apple Computer/.test(navigator.vendor),gecko$1=typeof navigator!="undefined"&&/Gecko\/\d+/.test(navigator.userAgent),mac=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),ie$1=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),brokenModifierNames=chrome$1&&(mac||+chrome$1[1]<57)||gecko$1&&mac;for(var i=0;i<10;i++)base[48+i]=base[96+i]=String(i);for(var i=1;i<=24;i++)base[i+111]="F"+i;for(var i=65;i<=90;i++)base[i]=String.fromCharCode(i+32),shift[i]=String.fromCharCode(i);for(var code in base)shift.hasOwnProperty(code)||(shift[code]=base[code]);function keyName(o){var e=brokenModifierNames&&(o.ctrlKey||o.altKey||o.metaKey)||(safari$1||ie$1)&&o.shiftKey&&o.key&&o.key.length==1,s=!e&&o.key||(o.shiftKey?shift:base)[o.keyCode]||o.key||"Unidentified";return s=="Esc"&&(s="Escape"),s=="Del"&&(s="Delete"),s=="Left"&&(s="ArrowLeft"),s=="Up"&&(s="ArrowUp"),s=="Right"&&(s="ArrowRight"),s=="Down"&&(s="ArrowDown"),s}function getSelection(o){let e;return o.nodeType==11?e=o.getSelection?o:o.ownerDocument:e=o,e.getSelection()}function contains(o,e){return e?o==e||o.contains(e.nodeType!=1?e.parentNode:e):!1}function deepActiveElement(){let o=document.activeElement;for(;o&&o.shadowRoot;)o=o.shadowRoot.activeElement;return o}function hasSelection(o,e){if(!e.anchorNode)return!1;try{return contains(o,e.anchorNode)}catch{return!1}}function clientRectsFor(o){return o.nodeType==3?textRange(o,0,o.nodeValue.length).getClientRects():o.nodeType==1?o.getClientRects():[]}function isEquivalentPosition(o,e,s,a){return s?scanFor(o,e,s,a,-1)||scanFor(o,e,s,a,1):!1}function domIndex(o){for(var e=0;;e++)if(o=o.previousSibling,!o)return e}function scanFor(o,e,s,a,c){for(;;){if(o==s&&e==a)return!0;if(e==(c<0?0:maxOffset(o))){if(o.nodeName=="DIV")return!1;let d=o.parentNode;if(!d||d.nodeType!=1)return!1;e=domIndex(o)+(c<0?0:1),o=d}else if(o.nodeType==1){if(o=o.childNodes[e+(c<0?-1:0)],o.nodeType==1&&o.contentEditable=="false")return!1;e=c<0?maxOffset(o):0}else return!1}}function maxOffset(o){return o.nodeType==3?o.nodeValue.length:o.childNodes.length}const Rect0={left:0,right:0,top:0,bottom:0};function flattenRect(o,e){let s=e?o.left:o.right;return{left:s,right:s,top:o.top,bottom:o.bottom}}function windowRect(o){return{left:0,right:o.innerWidth,top:0,bottom:o.innerHeight}}function scrollRectIntoView(o,e,s,a,c,d,_,b){let k=o.ownerDocument,$=k.defaultView;for(let j=o;j;)if(j.nodeType==1){let _e,et=j==k.body;if(et)_e=windowRect($);else{if(j.scrollHeight<=j.clientHeight&&j.scrollWidth<=j.clientWidth){j=j.parentNode;continue}let st=j.getBoundingClientRect();_e={left:st.left,right:st.left+j.clientWidth,top:st.top,bottom:st.top+j.clientHeight}}let tt=0,nt=0;if(c=="nearest")e.top<_e.top?(nt=-(_e.top-e.top+_),s>0&&e.bottom>_e.bottom+nt&&(nt=e.bottom-_e.bottom+nt+_)):e.bottom>_e.bottom&&(nt=e.bottom-_e.bottom+_,s<0&&e.top-nt<_e.top&&(nt=-(_e.top+nt-e.top+_)));else{let st=e.bottom-e.top,rt=_e.bottom-_e.top;nt=(c=="center"&&st<=rt?e.top+st/2-rt/2:c=="start"||c=="center"&&s<0?e.top-_:e.bottom-rt+_)-_e.top}if(a=="nearest"?e.left<_e.left?(tt=-(_e.left-e.left+d),s>0&&e.right>_e.right+tt&&(tt=e.right-_e.right+tt+d)):e.right>_e.right&&(tt=e.right-_e.right+d,s<0&&e.left<_e.left+tt&&(tt=-(_e.left+tt-e.left+d))):tt=(a=="center"?e.left+(e.right-e.left)/2-(_e.right-_e.left)/2:a=="start"==b?e.left-d:e.right-(_e.right-_e.left)+d)-_e.left,tt||nt)if(et)$.scrollBy(tt,nt);else{if(nt){let st=j.scrollTop;j.scrollTop+=nt,nt=j.scrollTop-st}if(tt){let st=j.scrollLeft;j.scrollLeft+=tt,tt=j.scrollLeft-st}e={left:e.left-tt,top:e.top-nt,right:e.right-tt,bottom:e.bottom-nt}}if(et)break;j=j.assignedSlot||j.parentNode,a=c="nearest"}else if(j.nodeType==11)j=j.host;else break}class DOMSelectionState{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){this.set(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset)}set(e,s,a,c){this.anchorNode=e,this.anchorOffset=s,this.focusNode=a,this.focusOffset=c}}let preventScrollSupported=null;function focusPreventScroll(o){if(o.setActive)return o.setActive();if(preventScrollSupported)return o.focus(preventScrollSupported);let e=[];for(let s=o;s&&(e.push(s,s.scrollTop,s.scrollLeft),s!=s.ownerDocument);s=s.parentNode);if(o.focus(preventScrollSupported==null?{get preventScroll(){return preventScrollSupported={preventScroll:!0},!0}}:void 0),!preventScrollSupported){preventScrollSupported=!1;for(let s=0;ss)return _e.domBoundsAround(e,s,$);if(et>=e&&c==-1&&(c=k,d=$),$>s&&_e.dom.parentNode==this.dom){_=k,b=j;break}j=et,$=et+_e.breakAfter}return{from:d,to:b<0?a+this.length:b,startDOM:(c?this.children[c-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:_=0?this.children[_].dom:null}}markDirty(e=!1){this.dirty|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let s=this.parent;s;s=s.parent){if(e&&(s.dirty|=2),s.dirty&1)return;s.dirty|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.dirty&&this.markParentsDirty(!0))}setDOM(e){this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this}get rootView(){for(let e=this;;){let s=e.parent;if(!s)return e;e=s}}replaceChildren(e,s,a=noChildren){this.markDirty();for(let c=e;cthis.pos||e==this.pos&&(s>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let a=this.children[--this.i];this.pos-=a.length+a.breakAfter}}}function replaceRange(o,e,s,a,c,d,_,b,k){let{children:$}=o,j=$.length?$[e]:null,_e=d.length?d[d.length-1]:null,et=_e?_e.breakAfter:_;if(!(e==a&&j&&!_&&!et&&d.length<2&&j.merge(s,c,d.length?_e:null,s==0,b,k))){if(a<$.length){let tt=$[a];tt&&c0&&(!_&&d.length&&j.merge(s,j.length,d[0],!1,b,0)?j.breakAfter=d.shift().breakAfter:(s2);var browser={mac:ios$1||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios:ios$1,android:/Android\b/.test(nav.userAgent),webkit,safari,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:doc.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const MaxJoinLen=256;class TextView extends ContentView{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,s,a){return a&&(!(a instanceof TextView)||this.length-(s-e)+a.length>MaxJoinLen)?!1:(this.text=this.text.slice(0,e)+(a?a.text:"")+this.text.slice(s),this.markDirty(),!0)}split(e){let s=new TextView(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),s}localPosFromDOM(e,s){return e==this.dom?s:s?this.text.length:0}domAtPos(e){return new DOMPos(this.dom,e)}domBoundsAround(e,s,a){return{from:a,to:a+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,s){return textCoords(this.dom,e,s)}}class MarkView extends ContentView{constructor(e,s=[],a=0){super(),this.mark=e,this.children=s,this.length=a;for(let c of s)c.setParent(this)}setAttrs(e){if(clearAttributes(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let s in this.mark.attrs)e.setAttribute(s,this.mark.attrs[s]);return e}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.dirty|=6)}sync(e){this.dom?this.dirty&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e)}merge(e,s,a,c,d,_){return a&&(!(a instanceof MarkView&&a.mark.eq(this.mark))||e&&d<=0||se&&s.push(a=e&&(c=d),a=k,d++}let _=this.length-e;return this.length=e,c>-1&&(this.children.length=c,this.markDirty()),new MarkView(this.mark,s,_)}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}coordsAt(e,s){return coordsInChildren(this,e,s)}}function textCoords(o,e,s){let a=o.nodeValue.length;e>a&&(e=a);let c=e,d=e,_=0;e==0&&s<0||e==a&&s>=0?browser.chrome||browser.gecko||(e?(c--,_=1):(d++,_=-1)):s<0?c--:d++;let b=textRange(o,c,d).getClientRects();if(!b.length)return Rect0;let k=b[(_?_<0:s>=0)?0:b.length-1];return browser.safari&&!_&&k.width==0&&(k=Array.prototype.find.call(b,$=>$.width)||k),_?flattenRect(k,_<0):k||null}class WidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.side=a,this.prevWidget=null}static create(e,s,a){return new(e.customView||WidgetView)(e,s,a)}split(e){let s=WidgetView.create(this.widget,this.length-e,this.side);return this.length-=e,s}sync(){(!this.dom||!this.widget.updateDOM(this.dom))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}getSide(){return this.side}merge(e,s,a,c,d,_){return a&&(!(a instanceof WidgetView)||!this.widget.compare(a.widget)||e>0&&d<=0||s0?a.length-1:0;c=a[d],!(e>0?d==0:d==a.length-1||c.top0?-1:1);return e==0&&s>0||e==this.length&&s<=0?c:flattenRect(c,e==0)}get isEditable(){return!1}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class CompositionView extends WidgetView{domAtPos(e){let{topView:s,text:a}=this.widget;return s?scanCompositionTree(e,0,s,a,(c,d)=>c.domAtPos(d),c=>new DOMPos(a,Math.min(c,a.nodeValue.length))):new DOMPos(a,Math.min(e,a.nodeValue.length))}sync(){this.setDOM(this.widget.toDOM())}localPosFromDOM(e,s){let{topView:a,text:c}=this.widget;return a?posFromDOMInCompositionTree(e,s,a,c):Math.min(s,this.length)}ignoreMutation(){return!1}get overrideDOMText(){return null}coordsAt(e,s){let{topView:a,text:c}=this.widget;return a?scanCompositionTree(e,s,a,c,(d,_,b)=>d.coordsAt(_,b),(d,_)=>textCoords(c,d,_)):textCoords(c,e,s)}destroy(){var e;super.destroy(),(e=this.widget.topView)===null||e===void 0||e.destroy()}get isEditable(){return!0}}function scanCompositionTree(o,e,s,a,c,d){if(s instanceof MarkView){for(let _ of s.children){let b=contains(_.dom,a),k=b?a.nodeValue.length:_.length;if(o0?-1:1);return a&&a.tops.top?{left:s.left,right:s.right,top:a.top,bottom:a.bottom}:s}get overrideDOMText(){return Text.empty}}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=noChildren;function inlineSiblingRect(o,e){let s=o.parent,a=s?s.children.indexOf(o):-1;for(;s&&a>=0;)if(e<0?a>0:ac&&s<_&&d.dom.parentNode==o)return d.domAtPos(s-c);if(s<=c)break;c=_}}for(;a>0;a--){let c=e[a-1].dom;if(c.parentNode==o)return DOMPos.after(c)}return new DOMPos(o,0)}function joinInlineInto(o,e,s){let a,{children:c}=o;s>0&&e instanceof MarkView&&c.length&&(a=c[c.length-1])instanceof MarkView&&a.mark.eq(e.mark)?joinInlineInto(a,e.children[0],s-1):(c.push(e),e.setParent(o)),o.length+=e.length}function coordsInChildren(o,e,s){for(let d=0,_=0;_0?k>=e:k>e)&&(e0)){let j=0;if(k==d){if(b.getSide()<=0)continue;j=s=-b.getSide()}let _e=b.coordsAt(Math.max(0,e-d),s);return j&&_e?flattenRect(_e,s<0):_e}d=k}let a=o.dom.lastChild;if(!a)return o.dom.getBoundingClientRect();let c=clientRectsFor(a);return c[c.length-1]||null}function combineAttrs(o,e){for(let s in o)s=="class"&&e.class?e.class+=" "+o.class:s=="style"&&e.style?e.style+=";"+o.style:e[s]=o[s];return e}function attrsEq(o,e){if(o==e)return!0;if(!o||!e)return!1;let s=Object.keys(o),a=Object.keys(e);if(s.length!=a.length)return!1;for(let c of s)if(a.indexOf(c)==-1||o[c]!==e[c])return!1;return!0}function updateAttrs(o,e,s){if(e)for(let a in e)s&&a in s||o.removeAttribute(a);if(s)for(let a in s)e&&e[a]==s[a]||o.setAttribute(a,s[a])}class WidgetType{eq(e){return!1}updateDOM(e){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}ignoreEvent(e){return!0}get customView(){return null}destroy(e){}}var BlockType=function(o){return o[o.Text=0]="Text",o[o.WidgetBefore=1]="WidgetBefore",o[o.WidgetAfter=2]="WidgetAfter",o[o.WidgetRange=3]="WidgetRange",o}(BlockType||(BlockType={}));class Decoration extends RangeValue{constructor(e,s,a,c){super(),this.startSide=e,this.endSide=s,this.widget=a,this.spec=c}get heightRelevant(){return!1}static mark(e){return new MarkDecoration(e)}static widget(e){let s=e.side||0,a=!!e.block;return s+=a?s>0?3e8:-4e8:s>0?1e8:-1e8,new PointDecoration(e,s,s,a,e.widget||null,!1)}static replace(e){let s=!!e.block,a,c;if(e.isBlockGap)a=-5e8,c=4e8;else{let{start:d,end:_}=getInclusive(e,s);a=(d?s?-3e8:-1:5e8)-1,c=(_?s?2e8:1:-6e8)+1}return new PointDecoration(e,a,c,s,e.widget||null,!0)}static line(e){return new LineDecoration(e)}static set(e,s=!1){return RangeSet.of(e,s)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Decoration.none=RangeSet.empty;class MarkDecoration extends Decoration{constructor(e){let{start:s,end:a}=getInclusive(e);super(s?-1:5e8,a?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){return this==e||e instanceof MarkDecoration&&this.tagName==e.tagName&&this.class==e.class&&attrsEq(this.attrs,e.attrs)}range(e,s=e){if(e>=s)throw new RangeError("Mark decorations may not be empty");return super.range(e,s)}}MarkDecoration.prototype.point=!1;class LineDecoration extends Decoration{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof LineDecoration&&attrsEq(this.spec.attributes,e.spec.attributes)}range(e,s=e){if(s!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,s)}}LineDecoration.prototype.mapMode=MapMode.TrackBefore;LineDecoration.prototype.point=!0;class PointDecoration extends Decoration{constructor(e,s,a,c,d,_){super(s,a,d,e),this.block=c,this.isReplace=_,this.mapMode=c?s<=0?MapMode.TrackBefore:MapMode.TrackAfter:MapMode.TrackDel}get type(){return this.startSide=5}eq(e){return e instanceof PointDecoration&&widgetsEq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,s=e){if(this.isReplace&&(e>s||e==s&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&s!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,s)}}PointDecoration.prototype.point=!0;function getInclusive(o,e=!1){let{inclusiveStart:s,inclusiveEnd:a}=o;return s==null&&(s=o.inclusive),a==null&&(a=o.inclusive),{start:s!=null?s:e,end:a!=null?a:e}}function widgetsEq(o,e){return o==e||!!(o&&e&&o.compare(e))}function addRange(o,e,s,a=0){let c=s.length-1;c>=0&&s[c]+a>=o?s[c]=Math.max(s[c],e):s.push(o,e)}class LineView extends ContentView{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,s,a,c,d,_){if(a){if(!(a instanceof LineView))return!1;this.dom||a.transferDOM(this)}return c&&this.setDeco(a?a.attrs:null),mergeChildrenInto(this,e,s,a?a.children:[],d,_),!0}split(e){let s=new LineView;if(s.breakAfter=this.breakAfter,this.length==0)return s;let{i:a,off:c}=this.childPos(e);c&&(s.append(this.children[a].split(c),0),this.children[a].merge(c,this.children[a].length,null,!1,0,0),a++);for(let d=a;d0&&this.children[a-1].length==0;)this.children[--a].destroy();return this.children.length=a,this.markDirty(),this.length=e,s}transferDOM(e){!this.dom||(e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){attrsEq(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,s){joinInlineInto(this,e,s)}addLineDeco(e){let s=e.spec.attributes,a=e.spec.class;s&&(this.attrs=combineAttrs(s,this.attrs||{})),a&&(this.attrs=combineAttrs({class:a},this.attrs||{}))}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.dirty|=6)}sync(e){var s;this.dom?this.dirty&4&&(clearAttributes(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e);let a=this.dom.lastChild;for(;a&&ContentView.get(a)instanceof MarkView;)a=a.lastChild;if(!a||!this.length||a.nodeName!="BR"&&((s=ContentView.get(a))===null||s===void 0?void 0:s.isEditable)==!1&&(!browser.ios||!this.children.some(c=>c instanceof TextView))){let c=document.createElement("BR");c.cmIgnore=!0,this.dom.appendChild(c)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0;for(let s of this.children){if(!(s instanceof TextView))return null;let a=clientRectsFor(s.dom);if(a.length!=1)return null;e+=a[0].width}return{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length}}coordsAt(e,s){return coordsInChildren(this,e,s)}become(e){return!1}get type(){return BlockType.Text}static find(e,s){for(let a=0,c=0;a=s){if(d instanceof LineView)return d;if(_>s)break}c=_+d.breakAfter}return null}}class BlockWidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.type=a,this.breakAfter=0,this.prevWidget=null}merge(e,s,a,c,d,_){return a&&(!(a instanceof BlockWidgetView)||!this.widget.compare(a.widget)||e>0&&d<=0||s0;){if(this.textOff==this.text.length){let{value:d,lineBreak:_,done:b}=this.cursor.next(this.skip);if(this.skip=0,b)throw new Error("Ran out of text content when drawing inline views");if(_){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer([]),this.curLine=null,e--;continue}else this.text=d,this.textOff=0}let c=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(s.slice(0,a)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+c)),s),a),this.atCursorPos=!0,this.textOff+=c,e-=c,a=0}}span(e,s,a,c){this.buildText(s-e,a,c),this.pos=s,this.openStart<0&&(this.openStart=c)}point(e,s,a,c,d){let _=s-e;if(a instanceof PointDecoration)if(a.block){let{type:b}=a;b==BlockType.WidgetAfter&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(a.widget||new NullWidget("div"),_,b))}else{let b=WidgetView.create(a.widget||new NullWidget("span"),_,a.startSide),k=this.atCursorPos&&!b.isEditable&&d<=c.length&&(e0),$=!b.isEditable&&(ethis.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}return!0}static build(e,s,a,c,d){let _=new ContentBuilder(e,s,a,d);return _.openEnd=RangeSet.spans(c,s,a,_),_.openStart<0&&(_.openStart=_.openEnd),_.finish(_.openEnd),_}}function wrapMarks(o,e){for(let s of e)o=new MarkView(s,[o],o.length);return o}class NullWidget extends WidgetType{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}}const none$2=[],clickAddsSelectionRange=Facet.define(),dragMovesSelection$1=Facet.define(),mouseSelectionStyle=Facet.define(),exceptionSink=Facet.define(),updateListener=Facet.define(),inputHandler$1=Facet.define(),scrollTo=StateEffect.define({map:(o,e)=>o.map(e)}),centerOn=StateEffect.define({map:(o,e)=>o.map(e)});class ScrollTarget{constructor(e,s="nearest",a="nearest",c=5,d=5){this.range=e,this.y=s,this.x=a,this.yMargin=c,this.xMargin=d}map(e){return e.empty?this:new ScrollTarget(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin)}}const scrollIntoView$1=StateEffect.define({map:(o,e)=>o.map(e)});function logException(o,e,s){let a=o.facet(exceptionSink);a.length?a[0](e):window.onerror?window.onerror(String(e),s,void 0,void 0,e):s?console.error(s+":",e):console.error(e)}const editable=Facet.define({combine:o=>o.length?o[0]:!0});class PluginFieldProvider{constructor(e,s){this.field=e,this.get=s}}class PluginField{from(e){return new PluginFieldProvider(this,e)}static define(){return new PluginField}}PluginField.decorations=PluginField.define();PluginField.atomicRanges=PluginField.define();PluginField.scrollMargins=PluginField.define();let nextPluginID=0;const viewPlugin=Facet.define();class ViewPlugin{constructor(e,s,a){this.id=e,this.create=s,this.fields=a,this.extension=viewPlugin.of(this)}static define(e,s){let{eventHandlers:a,provide:c,decorations:d}=s||{},_=[];if(c)for(let b of Array.isArray(c)?c:[c])_.push(b);return a&&_.push(domEventHandlers.from(b=>({plugin:b,handlers:a}))),d&&_.push(PluginField.decorations.from(d)),new ViewPlugin(nextPluginID++,e,_)}static fromClass(e,s){return ViewPlugin.define(a=>new e(a),s)}}const domEventHandlers=PluginField.define();class PluginInstance{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}takeField(e,s){if(this.spec)for(let{field:a,get:c}of this.spec.fields)a==e&&s.push(c(this.value))}update(e){if(this.value){if(this.mustUpdate){let s=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(s)}catch(a){if(logException(s.state,a,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(s){logException(e.state,s,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var s;if(!((s=this.value)===null||s===void 0)&&s.destroy)try{this.value.destroy()}catch(a){logException(e.state,a,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const editorAttributes=Facet.define(),contentAttributes=Facet.define(),decorations=Facet.define(),styleModule=Facet.define();class ChangedRange{constructor(e,s,a,c){this.fromA=e,this.toA=s,this.fromB=a,this.toB=c}join(e){return new ChangedRange(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let s=e.length,a=this;for(;s>0;s--){let c=e[s-1];if(!(c.fromA>a.toA)){if(c.toAj)break;d+=2}if(!k)return a;new ChangedRange(k.fromA,k.toA,k.fromB,k.toB).addToSet(a),_=k.toA,b=k.toB}}}class ViewUpdate{constructor(e,s,a=none$2){this.view=e,this.state=s,this.transactions=a,this.flags=0,this.startState=e.state,this.changes=ChangeSet.empty(this.startState.doc.length);for(let _ of a)this.changes=this.changes.compose(_.changes);let c=[];this.changes.iterChangedRanges((_,b,k,$)=>c.push(new ChangedRange(_,b,k,$))),this.changedRanges=c;let d=e.hasFocus;d!=e.inputState.notifiedFocused&&(e.inputState.notifiedFocused=d,this.flags|=1)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}var Direction=function(o){return o[o.LTR=0]="LTR",o[o.RTL=1]="RTL",o}(Direction||(Direction={}));const LTR=Direction.LTR,RTL=Direction.RTL;function dec(o){let e=[];for(let s=0;s=s){if(b.level==a)return _;(d<0||(c!=0?c<0?b.froms:e[d].level>b.level))&&(d=_)}}if(d<0)throw new RangeError("Index out of range");return d}}const types=[];function computeOrder(o,e){let s=o.length,a=e==LTR?1:2,c=e==LTR?2:1;if(!o||a==1&&!BidiRE.test(o))return trivialOrder(s);for(let _=0,b=a,k=a;_=0;et-=3)if(BracketStack[et+1]==-j){let tt=BracketStack[et+2],nt=tt&2?a:tt&4?tt&1?c:a:0;nt&&(types[_]=types[BracketStack[et]]=nt),b=et;break}}else{if(BracketStack.length==189)break;BracketStack[b++]=_,BracketStack[b++]=$,BracketStack[b++]=k}else if((_e=types[_])==2||_e==1){let et=_e==a;k=et?0:1;for(let tt=b-3;tt>=0;tt-=3){let nt=BracketStack[tt+2];if(nt&2)break;if(et)BracketStack[tt+2]|=2;else{if(nt&4)break;BracketStack[tt+2]|=4}}}for(let _=0;_b;){let j=$,_e=types[--$]!=2;for(;$>b&&_e==(types[$-1]!=2);)$--;d.push(new BidiSpan($,j,_e?2:1))}else d.push(new BidiSpan(b,_,0))}else for(let _=0;_1)for(let k of this.points)k.node==e&&k.pos>this.text.length&&(k.pos-=_-1);a=d+_}}readNode(e){if(e.cmIgnore)return;let s=ContentView.get(e),a=s&&s.overrideDOMText;if(a!=null){this.findPointInside(e,a.length);for(let c=a.iter();!c.next().done;)c.lineBreak?this.lineBreak():this.append(c.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,s){for(let a of this.points)a.node==e&&e.childNodes[a.offset]==s&&(a.pos=this.text.length)}findPointInside(e,s){for(let a of this.points)(e.nodeType==3?a.node==e:e.contains(a.node))&&(a.pos=this.text.length+Math.min(s,a.offset))}}function isBlockElement(o){return o.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(o.nodeName)}class DOMPoint{constructor(e,s){this.node=e,this.offset=s,this.pos=-1}}class DocView extends ContentView{constructor(e){super(),this.view=e,this.compositionDeco=Decoration.none,this.decorations=[],this.pluginDecorationLength=0,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,e.state.doc.length)],0)}get root(){return this.view.root}get editorView(){return this.view}get length(){return this.view.state.doc.length}update(e){let s=e.changedRanges;this.minWidth>0&&s.length&&(s.every(({fromA:_,toA:b})=>bthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.view.inputState.composing<0?this.compositionDeco=Decoration.none:(e.transactions.length||this.dirty)&&(this.compositionDeco=computeCompositionDeco(this.view,e.changes)),(browser.ie||browser.chrome)&&!this.compositionDeco.size&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,c=this.updateDeco(),d=findChangedDeco(a,c,e.changes);return s=ChangedRange.extendWithRanges(s,d),this.dirty==0&&s.length==0?!1:(this.updateInner(s,e.startState.doc.length),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,s){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,s);let{observer:a}=this.view;a.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.minWidth=this.minWidth?this.minWidth+"px":"";let d=browser.chrome||browser.ios?{node:a.selectionRange.focusNode,written:!1}:void 0;this.sync(d),this.dirty=0,d&&(d.written||a.selectionRange.focusNode!=d.node)&&(this.forceSelection=!0),this.dom.style.height=""});let c=[];if(this.view.viewport.from||this.view.viewport.to=0?e[c]:null;if(!d)break;let{fromA:_,toA:b,fromB:k,toB:$}=d,{content:j,breakAtStart:_e,openStart:et,openEnd:tt}=ContentBuilder.build(this.view.state.doc,k,$,this.decorations,this.pluginDecorationLength),{i:nt,off:st}=a.findPos(b,1),{i:rt,off:it}=a.findPos(_,-1);replaceRange(this,rt,it,nt,st,j,_e,et,tt)}}updateSelection(e=!1,s=!1){if(e&&this.view.observer.readSelectionRange(),!(s||this.mayControlSelection())||browser.ios&&this.view.inputState.rapidCompositionStart)return;let a=this.forceSelection;this.forceSelection=!1;let c=this.view.state.selection.main,d=this.domAtPos(c.anchor),_=c.empty?d:this.domAtPos(c.head);if(browser.gecko&&c.empty&&betweenUneditable(d)){let k=document.createTextNode("");this.view.observer.ignore(()=>d.node.insertBefore(k,d.node.childNodes[d.offset]||null)),d=_=new DOMPos(k,0),a=!0}let b=this.view.observer.selectionRange;(a||!b.focusNode||!isEquivalentPosition(d.node,d.offset,b.anchorNode,b.anchorOffset)||!isEquivalentPosition(_.node,_.offset,b.focusNode,b.focusOffset))&&(this.view.observer.ignore(()=>{browser.android&&browser.chrome&&this.dom.contains(b.focusNode)&&inUneditable(b.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let k=getSelection(this.root);if(c.empty){if(browser.gecko){let $=nextToUneditable(d.node,d.offset);if($&&$!=3){let j=nearbyTextNode(d.node,d.offset,$==1?1:-1);j&&(d=new DOMPos(j,$==1?0:j.nodeValue.length))}}k.collapse(d.node,d.offset),c.bidiLevel!=null&&b.cursorBidiLevel!=null&&(b.cursorBidiLevel=c.bidiLevel)}else if(k.extend)k.collapse(d.node,d.offset),k.extend(_.node,_.offset);else{let $=document.createRange();c.anchor>c.head&&([d,_]=[_,d]),$.setEnd(_.node,_.offset),$.setStart(d.node,d.offset),k.removeAllRanges(),k.addRange($)}}),this.view.observer.setSelectionRange(d,_)),this.impreciseAnchor=d.precise?null:new DOMPos(b.anchorNode,b.anchorOffset),this.impreciseHead=_.precise?null:new DOMPos(b.focusNode,b.focusOffset)}enforceCursorAssoc(){if(this.compositionDeco.size)return;let e=this.view.state.selection.main,s=getSelection(this.root);if(!e.empty||!e.assoc||!s.modify)return;let a=LineView.find(this,e.head);if(!a)return;let c=a.posAtStart;if(e.head==c||e.head==c+a.length)return;let d=this.coordsAt(e.head,-1),_=this.coordsAt(e.head,1);if(!d||!_||d.bottom>_.top)return;let b=this.domAtPos(e.head+e.assoc);s.collapse(b.node,b.offset),s.modify("move",e.assoc<0?"forward":"backward","lineboundary")}mayControlSelection(){return this.view.state.facet(editable)?this.root.activeElement==this.dom:hasSelection(this.dom,this.view.observer.selectionRange)}nearest(e){for(let s=e;s;){let a=ContentView.get(s);if(a&&a.rootView==this)return a;s=s.parentNode}return null}posFromDOM(e,s){let a=this.nearest(e);if(!a)throw new RangeError("Trying to find position for a DOM position outside of the document");return a.localPosFromDOM(e,s)+a.posAtStart}domAtPos(e){let{i:s,off:a}=this.childCursor().findPos(e,-1);for(;s_||e==_&&d.type!=BlockType.WidgetBefore&&d.type!=BlockType.WidgetAfter&&(!c||s==2||this.children[c-1].breakAfter||this.children[c-1].type==BlockType.WidgetBefore&&s>-2))return d.coordsAt(e-_,s);a=_}}measureVisibleLineHeights(){let e=[],{from:s,to:a}=this.view.viewState.viewport,c=this.view.contentDOM.clientWidth,d=c>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,_=-1;for(let b=0,k=0;ka)break;if(b>=s){let _e=$.dom.getBoundingClientRect();if(e.push(_e.height),d){let et=$.dom.lastChild,tt=et?clientRectsFor(et):[];if(tt.length){let nt=tt[tt.length-1],st=this.view.textDirection==Direction.LTR?nt.right-_e.left:_e.right-nt.left;st>_&&(_=st,this.minWidth=c,this.minWidthFrom=b,this.minWidthTo=j)}}}b=j+$.breakAfter}return e}measureTextSize(){for(let c of this.children)if(c instanceof LineView){let d=c.measureTextSize();if(d)return d}let e=document.createElement("div"),s,a;return e.className="cm-line",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let c=clientRectsFor(e.firstChild)[0];s=e.getBoundingClientRect().height,a=c?c.width/27:7,e.remove()}),{lineHeight:s,charWidth:a}}childCursor(e=this.length){let s=this.children.length;return s&&(e-=this.children[--s].length),new ChildCursor(this.children,e,s)}computeBlockGapDeco(){let e=[],s=this.view.viewState;for(let a=0,c=0;;c++){let d=c==s.viewports.length?null:s.viewports[c],_=d?d.from-1:this.length;if(_>a){let b=s.lineBlockAt(_).bottom-s.lineBlockAt(a).top;e.push(Decoration.replace({widget:new BlockGapWidget(b),block:!0,inclusive:!0,isBlockGap:!0}).range(a,_))}if(!d)break;a=d.to+1}return Decoration.set(e)}updateDeco(){let e=this.view.pluginField(PluginField.decorations);return this.pluginDecorationLength=e.length,this.decorations=[...e,...this.view.state.facet(decorations),this.compositionDeco,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(e){let{range:s}=e,a=this.coordsAt(s.head,s.empty?s.assoc:s.head>s.anchor?-1:1),c;if(!a)return;!s.empty&&(c=this.coordsAt(s.anchor,s.anchor>s.head?-1:1))&&(a={left:Math.min(a.left,c.left),top:Math.min(a.top,c.top),right:Math.max(a.right,c.right),bottom:Math.max(a.bottom,c.bottom)});let d=0,_=0,b=0,k=0;for(let j of this.view.pluginField(PluginField.scrollMargins))if(j){let{left:_e,right:et,top:tt,bottom:nt}=j;_e!=null&&(d=Math.max(d,_e)),et!=null&&(_=Math.max(_,et)),tt!=null&&(b=Math.max(b,tt)),nt!=null&&(k=Math.max(k,nt))}let $={left:a.left-d,top:a.top-b,right:a.right+_,bottom:a.bottom+k};scrollRectIntoView(this.view.scrollDOM,$,s.head0&&s<=0)o=o.childNodes[e-1],e=maxOffset(o);else if(o.nodeType==1&&e=0)o=o.childNodes[e],e=0;else return null}}function nextToUneditable(o,e){return o.nodeType!=1?0:(e&&o.childNodes[e-1].contentEditable=="false"?1:0)|(e0;){let $=findClusterBreak(c.text,_,!1);if(a(c.text.slice($,_))!=k)break;_=$}for(;bo?e.left-o:Math.max(0,o-e.right)}function getdy(o,e){return e.top>o?e.top-o:Math.max(0,o-e.bottom)}function yOverlap(o,e){return o.tope.top+1}function upTop(o,e){return eo.bottom?{top:o.top,left:o.left,right:o.right,bottom:e}:o}function domPosAtCoords(o,e,s){let a,c,d,_,b,k,$,j;for(let tt=o.firstChild;tt;tt=tt.nextSibling){let nt=clientRectsFor(tt);for(let st=0;stat||_==at&&d>it)&&(a=tt,c=rt,d=it,_=at),it==0?s>rt.bottom&&(!$||$.bottomrt.top)&&(k=tt,j=rt):$&&yOverlap($,rt)?$=upBot($,rt.bottom):j&&yOverlap(j,rt)&&(j=upTop(j,rt.top))}}if($&&$.bottom>=s?(a=b,c=$):j&&j.top<=s&&(a=k,c=j),!a)return{node:o,offset:0};let _e=Math.max(c.left,Math.min(c.right,e));if(a.nodeType==3)return domPosInText(a,_e,s);if(!d&&a.contentEditable=="true")return domPosAtCoords(a,_e,s);let et=Array.prototype.indexOf.call(o.childNodes,a)+(e>=(c.left+c.right)/2?1:0);return{node:o,offset:et}}function domPosInText(o,e,s){let a=o.nodeValue.length,c=-1,d=1e9,_=0;for(let b=0;bs?j.top-s:s-j.bottom)-1;if(j.left-1<=e&&j.right+1>=e&&_e=(j.left+j.right)/2,tt=et;if((browser.chrome||browser.gecko)&&textRange(o,b).getBoundingClientRect().left==j.right&&(tt=!et),_e<=0)return{node:o,offset:b+(tt?1:0)};c=b+(tt?1:0),d=_e}}}return{node:o,offset:c>-1?c:_>0?o.nodeValue.length:0}}function posAtCoords(o,{x:e,y:s},a,c=-1){var d;let _=o.contentDOM.getBoundingClientRect(),b=_.top+o.viewState.paddingTop,k,{docHeight:$}=o.viewState,j=s-b;if(j<0)return 0;if(j>$)return o.state.doc.length;for(let it=o.defaultLineHeight/2,at=!1;k=o.elementAtHeight(j),k.type!=BlockType.Text;)for(;j=c>0?k.bottom+it:k.top-it,!(j>=0&&j<=$);){if(at)return a?null:0;at=!0,c=-c}s=b+j;let _e=k.from;if(_eo.viewport.to)return o.viewport.to==o.state.doc.length?o.state.doc.length:a?null:posAtCoordsImprecise(o,_,k,e,s);let et=o.dom.ownerDocument,tt=o.root.elementFromPoint?o.root:et,nt=tt.elementFromPoint(e,s);nt&&!o.contentDOM.contains(nt)&&(nt=null),nt||(e=Math.max(_.left+1,Math.min(_.right-1,e)),nt=tt.elementFromPoint(e,s),nt&&!o.contentDOM.contains(nt)&&(nt=null));let st,rt=-1;if(nt&&((d=o.docView.nearest(nt))===null||d===void 0?void 0:d.isEditable)!=!1){if(et.caretPositionFromPoint){let it=et.caretPositionFromPoint(e,s);it&&({offsetNode:st,offset:rt}=it)}else if(et.caretRangeFromPoint){let it=et.caretRangeFromPoint(e,s);it&&({startContainer:st,startOffset:rt}=it,browser.safari&&isSuspiciousCaretResult(st,rt,e)&&(st=void 0))}}if(!st||!o.docView.dom.contains(st)){let it=LineView.find(o.docView,_e);if(!it)return j>k.top+k.height/2?k.to:k.from;({node:st,offset:rt}=domPosAtCoords(it.dom,e,s))}return o.docView.posFromDOM(st,rt)}function posAtCoordsImprecise(o,e,s,a,c){let d=Math.round((a-e.left)*o.defaultCharacterWidth);o.lineWrapping&&s.height>o.defaultLineHeight*1.5&&(d+=Math.floor((c-s.top)/o.defaultLineHeight)*o.viewState.heightOracle.lineLength);let _=o.state.sliceDoc(s.from,s.to);return s.from+findColumn(_,d,o.state.tabSize)}function isSuspiciousCaretResult(o,e,s){let a;if(o.nodeType!=3||e!=(a=o.nodeValue.length))return!1;for(let c=o.nextSibling;c;c=c.nextSibling)if(c.nodeType!=1||c.nodeName!="BR")return!1;return textRange(o,a-1,a).getBoundingClientRect().left>s}function moveToLineBoundary(o,e,s,a){let c=o.state.doc.lineAt(e.head),d=!a||!o.lineWrapping?null:o.coordsAtPos(e.assoc<0&&e.head>c.from?e.head-1:e.head);if(d){let k=o.dom.getBoundingClientRect(),$=o.posAtCoords({x:s==(o.textDirection==Direction.LTR)?k.right-1:k.left+1,y:(d.top+d.bottom)/2});if($!=null)return EditorSelection.cursor($,s?-1:1)}let _=LineView.find(o.docView,e.head),b=_?s?_.posAtEnd:_.posAtStart:s?c.to:c.from;return EditorSelection.cursor(b,s?-1:1)}function moveByChar(o,e,s,a){let c=o.state.doc.lineAt(e.head),d=o.bidiSpans(c);for(let _=e,b=null;;){let k=moveVisually(c,d,o.textDirection,_,s),$=movedOver;if(!k){if(c.number==(s?o.state.doc.lines:1))return _;$=` +`,c=o.state.doc.line(c.number+(s?1:-1)),d=o.bidiSpans(c),k=EditorSelection.cursor(s?c.from:c.to)}if(b){if(!b($))return _}else{if(!a)return k;b=a($)}_=k}}function byGroup(o,e,s){let a=o.state.charCategorizer(e),c=a(s);return d=>{let _=a(d);return c==CharCategory.Space&&(c=_),c==_}}function moveVertically(o,e,s,a){let c=e.head,d=s?1:-1;if(c==(s?o.state.doc.length:0))return EditorSelection.cursor(c,e.assoc);let _=e.goalColumn,b,k=o.contentDOM.getBoundingClientRect(),$=o.coordsAtPos(c),j=o.documentTop;if($)_==null&&(_=$.left-k.left),b=d<0?$.top:$.bottom;else{let tt=o.viewState.lineBlockAt(c-j);_==null&&(_=Math.min(k.right-k.left,o.defaultCharacterWidth*(c-tt.from))),b=(d<0?tt.top:tt.bottom)+j}let _e=k.left+_,et=a!=null?a:o.defaultLineHeight>>1;for(let tt=0;;tt+=10){let nt=b+(et+tt)*d,st=posAtCoords(o,{x:_e,y:nt},!1,d);if(ntk.bottom||(d<0?stc))return EditorSelection.cursor(st,e.assoc,void 0,_)}}function skipAtoms(o,e,s){let a=o.pluginField(PluginField.atomicRanges);for(;;){let c=!1;for(let d of a)d.between(s.from-1,s.from+1,(_,b,k)=>{s.from>_&&s.froms.from?EditorSelection.cursor(_,1):EditorSelection.cursor(b,-1),c=!0)});if(!c)return s}}class InputState{constructor(e){this.lastKeyCode=0,this.lastKeyTime=0,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.rapidCompositionStart=!1,this.mouseSelection=null;for(let s in handlers){let a=handlers[s];e.contentDOM.addEventListener(s,c=>{!eventBelongsToEditor(e,c)||this.ignoreDuringComposition(c)||s=="keydown"&&this.keydown(e,c)||(this.mustFlushObserver(c)&&e.observer.forceFlush(),this.runCustomHandlers(s,e,c)?c.preventDefault():a(e,c))}),this.registeredEvents.push(s)}this.notifiedFocused=e.hasFocus,this.ensureHandlers(e),browser.safari&&e.contentDOM.addEventListener("input",()=>null)}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}ensureHandlers(e){let s=this.customHandlers=e.pluginField(domEventHandlers);for(let a of s)for(let c in a.handlers)this.registeredEvents.indexOf(c)<0&&c!="scroll"&&(this.registeredEvents.push(c),e.contentDOM.addEventListener(c,d=>{!eventBelongsToEditor(e,d)||this.runCustomHandlers(c,e,d)&&d.preventDefault()}))}runCustomHandlers(e,s,a){for(let c of this.customHandlers){let d=c.handlers[e];if(d)try{if(d.call(c.plugin,a,s)||a.defaultPrevented)return!0}catch(_){logException(s.state,_)}}return!1}runScrollHandlers(e,s){for(let a of this.customHandlers){let c=a.handlers.scroll;if(c)try{c.call(a.plugin,s,e)}catch(d){logException(e.state,d)}}}keydown(e,s){if(this.lastKeyCode=s.keyCode,this.lastKeyTime=Date.now(),s.keyCode==9&&Date.now()c.keyCode==s.keyCode))&&!(s.ctrlKey||s.altKey||s.metaKey)&&!s.synthetic?(this.pendingIOSKey=a,setTimeout(()=>this.flushIOSKey(e),250),!0):!1}flushIOSKey(e){let s=this.pendingIOSKey;return s?(this.pendingIOSKey=void 0,dispatchKey(e.contentDOM,s.key,s.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:browser.safari&&Date.now()-this.compositionEndedAt<500?(this.compositionEndedAt=0,!0):!1:!1}mustFlushObserver(e){return e.type=="keydown"&&e.keyCode!=229||e.type=="compositionend"&&!browser.ios}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const PendingKeys=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],modifierCodes=[16,17,18,20,91,92,224,225];class MouseSelection{constructor(e,s,a,c){this.view=e,this.style=a,this.mustSelect=c,this.lastEvent=s;let d=e.contentDOM.ownerDocument;d.addEventListener("mousemove",this.move=this.move.bind(this)),d.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=s.shiftKey,this.multiple=e.state.facet(EditorState.allowMultipleSelections)&&addsSelectionRange(e,s),this.dragMove=dragMovesSelection(e,s),this.dragging=isInPrimarySelection(e,s)&&getClickType(s)==1?null:!1,this.dragging===!1&&(s.preventDefault(),this.select(s))}move(e){if(e.buttons==0)return this.destroy();this.dragging===!1&&this.select(this.lastEvent=e)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}select(e){let s=this.style.get(e,this.extend,this.multiple);(this.mustSelect||!s.eq(this.view.state.selection)||s.main.assoc!=this.view.state.selection.main.assoc)&&this.view.dispatch({selection:s,userEvent:"select.pointer",scrollIntoView:!0}),this.mustSelect=!1}update(e){e.docChanged&&this.dragging&&(this.dragging=this.dragging.map(e.changes)),this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function addsSelectionRange(o,e){let s=o.state.facet(clickAddsSelectionRange);return s.length?s[0](e):browser.mac?e.metaKey:e.ctrlKey}function dragMovesSelection(o,e){let s=o.state.facet(dragMovesSelection$1);return s.length?s[0](e):browser.mac?!e.altKey:!e.ctrlKey}function isInPrimarySelection(o,e){let{main:s}=o.state.selection;if(s.empty)return!1;let a=getSelection(o.root);if(a.rangeCount==0)return!0;let c=a.getRangeAt(0).getClientRects();for(let d=0;d=e.clientX&&_.top<=e.clientY&&_.bottom>=e.clientY)return!0}return!1}function eventBelongsToEditor(o,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let s=e.target,a;s!=o.contentDOM;s=s.parentNode)if(!s||s.nodeType==11||(a=ContentView.get(s))&&a.ignoreEvent(e))return!1;return!0}const handlers=Object.create(null),brokenClipboardAPI=browser.ie&&browser.ie_version<15||browser.ios&&browser.webkit_version<604;function capturePaste(o){let e=o.dom.parentNode;if(!e)return;let s=e.appendChild(document.createElement("textarea"));s.style.cssText="position: fixed; left: -10000px; top: 10px",s.focus(),setTimeout(()=>{o.focus(),s.remove(),doPaste(o,s.value)},50)}function doPaste(o,e){let{state:s}=o,a,c=1,d=s.toText(e),_=d.lines==s.selection.ranges.length;if(lastLinewiseCopy!=null&&s.selection.ranges.every(k=>k.empty)&&lastLinewiseCopy==d.toString()){let k=-1;a=s.changeByRange($=>{let j=s.doc.lineAt($.from);if(j.from==k)return{range:$};k=j.from;let _e=s.toText((_?d.line(c++).text:e)+s.lineBreak);return{changes:{from:j.from,insert:_e},range:EditorSelection.cursor($.from+_e.length)}})}else _?a=s.changeByRange(k=>{let $=d.line(c++);return{changes:{from:k.from,to:k.to,insert:$.text},range:EditorSelection.cursor(k.from+$.length)}}):a=s.replaceSelection(d);o.dispatch(a,{userEvent:"input.paste",scrollIntoView:!0})}handlers.keydown=(o,e)=>{o.inputState.setSelectionOrigin("select"),e.keyCode==27?o.inputState.lastEscPress=Date.now():modifierCodes.indexOf(e.keyCode)<0&&(o.inputState.lastEscPress=0)};let lastTouch=0;handlers.touchstart=(o,e)=>{lastTouch=Date.now(),o.inputState.setSelectionOrigin("select.pointer")};handlers.touchmove=o=>{o.inputState.setSelectionOrigin("select.pointer")};handlers.mousedown=(o,e)=>{if(o.observer.flush(),lastTouch>Date.now()-2e3&&getClickType(e)==1)return;let s=null;for(let a of o.state.facet(mouseSelectionStyle))if(s=a(o,e),s)break;if(!s&&e.button==0&&(s=basicMouseSelection(o,e)),s){let a=o.root.activeElement!=o.contentDOM;a&&o.observer.ignore(()=>focusPreventScroll(o.contentDOM)),o.inputState.startMouseSelection(new MouseSelection(o,e,s,a))}};function rangeForClick(o,e,s,a){if(a==1)return EditorSelection.cursor(e,s);if(a==2)return groupAt(o.state,e,s);{let c=LineView.find(o.docView,e),d=o.state.doc.lineAt(c?c.posAtEnd:e),_=c?c.posAtStart:d.from,b=c?c.posAtEnd:d.to;return bo>=e.top&&o<=e.bottom,inside=(o,e,s)=>insideY(e,s)&&o>=s.left&&o<=s.right;function findPositionSide(o,e,s,a){let c=LineView.find(o.docView,e);if(!c)return 1;let d=e-c.posAtStart;if(d==0)return 1;if(d==c.length)return-1;let _=c.coordsAt(d,-1);if(_&&inside(s,a,_))return-1;let b=c.coordsAt(d,1);return b&&inside(s,a,b)?1:_&&insideY(a,_)?-1:1}function queryPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:s,bias:findPositionSide(o,s,e.clientX,e.clientY)}}const BadMouseDetail=browser.ie&&browser.ie_version<=11;let lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(o){if(!BadMouseDetail)return o.detail;let e=lastMouseDown,s=lastMouseDownTime;return lastMouseDown=o,lastMouseDownTime=Date.now(),lastMouseDownCount=!e||s>Date.now()-400&&Math.abs(e.clientX-o.clientX)<2&&Math.abs(e.clientY-o.clientY)<2?(lastMouseDownCount+1)%3:1}function basicMouseSelection(o,e){let s=queryPos(o,e),a=getClickType(e),c=o.state.selection,d=s,_=e;return{update(b){b.docChanged&&(s&&(s.pos=b.changes.mapPos(s.pos)),c=c.map(b.changes),_=null)},get(b,k,$){let j;if(_&&b.clientX==_.clientX&&b.clientY==_.clientY?j=d:(j=d=queryPos(o,b),_=b),!j||!s)return c;let _e=rangeForClick(o,j.pos,j.bias,a);if(s.pos!=j.pos&&!k){let et=rangeForClick(o,s.pos,s.bias,a),tt=Math.min(et.from,_e.from),nt=Math.max(et.to,_e.to);_e=tt<_e.from?EditorSelection.range(tt,nt):EditorSelection.range(nt,tt)}return k?c.replaceRange(c.main.extend(_e.from,_e.to)):$?c.addRange(_e):EditorSelection.create([_e])}}}handlers.dragstart=(o,e)=>{let{selection:{main:s}}=o.state,{mouseSelection:a}=o.inputState;a&&(a.dragging=s),e.dataTransfer&&(e.dataTransfer.setData("Text",o.state.sliceDoc(s.from,s.to)),e.dataTransfer.effectAllowed="copyMove")};function dropText(o,e,s,a){if(!s)return;let c=o.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:d}=o.inputState,_=a&&d&&d.dragging&&d.dragMove?{from:d.dragging.from,to:d.dragging.to}:null,b={from:c,insert:s},k=o.state.changes(_?[_,b]:b);o.focus(),o.dispatch({changes:k,selection:{anchor:k.mapPos(c,-1),head:k.mapPos(c,1)},userEvent:_?"move.drop":"input.drop"})}handlers.drop=(o,e)=>{if(!e.dataTransfer)return;if(o.state.readOnly)return e.preventDefault();let s=e.dataTransfer.files;if(s&&s.length){e.preventDefault();let a=Array(s.length),c=0,d=()=>{++c==s.length&&dropText(o,e,a.filter(_=>_!=null).join(o.state.lineBreak),!1)};for(let _=0;_{/[\x00-\x08\x0e-\x1f]{2}/.test(b.result)||(a[_]=b.result),d()},b.readAsText(s[_])}}else dropText(o,e,e.dataTransfer.getData("Text"),!0)};handlers.paste=(o,e)=>{if(o.state.readOnly)return e.preventDefault();o.observer.flush();let s=brokenClipboardAPI?null:e.clipboardData;s?(doPaste(o,s.getData("text/plain")),e.preventDefault()):capturePaste(o)};function captureCopy(o,e){let s=o.dom.parentNode;if(!s)return;let a=s.appendChild(document.createElement("textarea"));a.style.cssText="position: fixed; left: -10000px; top: 10px",a.value=e,a.focus(),a.selectionEnd=e.length,a.selectionStart=0,setTimeout(()=>{a.remove(),o.focus()},50)}function copiedRange(o){let e=[],s=[],a=!1;for(let c of o.selection.ranges)c.empty||(e.push(o.sliceDoc(c.from,c.to)),s.push(c));if(!e.length){let c=-1;for(let{from:d}of o.selection.ranges){let _=o.doc.lineAt(d);_.number>c&&(e.push(_.text),s.push({from:_.from,to:Math.min(o.doc.length,_.to+1)})),c=_.number}a=!0}return{text:e.join(o.lineBreak),ranges:s,linewise:a}}let lastLinewiseCopy=null;handlers.copy=handlers.cut=(o,e)=>{let{text:s,ranges:a,linewise:c}=copiedRange(o.state);if(!s&&!c)return;lastLinewiseCopy=c?s:null;let d=brokenClipboardAPI?null:e.clipboardData;d?(e.preventDefault(),d.clearData(),d.setData("text/plain",s)):captureCopy(o,s),e.type=="cut"&&!o.state.readOnly&&o.dispatch({changes:a,scrollIntoView:!0,userEvent:"delete.cut"})};handlers.focus=handlers.blur=o=>{setTimeout(()=>{o.hasFocus!=o.inputState.notifiedFocused&&o.update([])},10)};function forceClearComposition(o,e){if(o.docView.compositionDeco.size){o.inputState.rapidCompositionStart=e;try{o.update([])}finally{o.inputState.rapidCompositionStart=!1}}}handlers.compositionstart=handlers.compositionupdate=o=>{o.inputState.compositionFirstChange==null&&(o.inputState.compositionFirstChange=!0),o.inputState.composing<0&&(o.inputState.composing=0,o.docView.compositionDeco.size&&(o.observer.flush(),forceClearComposition(o,!0)))};handlers.compositionend=o=>{o.inputState.composing=-1,o.inputState.compositionEndedAt=Date.now(),o.inputState.compositionFirstChange=null,setTimeout(()=>{o.inputState.composing<0&&forceClearComposition(o,!1)},50)};handlers.contextmenu=o=>{o.inputState.lastContextMenu=Date.now()};handlers.beforeinput=(o,e)=>{var s;let a;if(browser.chrome&&browser.android&&(a=PendingKeys.find(c=>c.inputType==e.inputType))&&(o.observer.delayAndroidKey(a.key,a.keyCode),a.key=="Backspace"||a.key=="Delete")){let c=((s=window.visualViewport)===null||s===void 0?void 0:s.height)||0;setTimeout(()=>{var d;(((d=window.visualViewport)===null||d===void 0?void 0:d.height)||0)>c+10&&o.hasFocus&&(o.contentDOM.blur(),o.focus())},100)}};const wrappingWhiteSpace=["pre-wrap","normal","pre-line","break-spaces"];class HeightOracle{constructor(){this.doc=Text.empty,this.lineWrapping=!1,this.direction=Direction.LTR,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.lineLength=30,this.heightChanged=!1}heightForGap(e,s){let a=this.doc.lineAt(s).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(a+=Math.ceil((s-e-a*this.lineLength*.5)/this.lineLength)),this.lineHeight*a}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForStyle(e,s){return wrappingWhiteSpace.indexOf(e)>-1!=this.lineWrapping||this.direction!=s}mustRefreshForHeights(e){let s=!1;for(let a=0;a-1,k=Math.round(a)!=Math.round(this.lineHeight)||this.lineWrapping!=b||this.direction!=s;if(this.lineWrapping=b,this.direction=s,this.lineHeight=a,this.charWidth=c,this.lineLength=d,k){this.heightSamples={};for(let $=0;$<_.length;$++){let j=_[$];j<0?$++:this.heightSamples[Math.floor(j*10)]=!0}}return k}}class MeasuredHeights{constructor(e,s){this.from=e,this.heights=s,this.index=0}get more(){return this.indexs.moveY(e)):this.type):this}}var QueryType$1=function(o){return o[o.ByPos=0]="ByPos",o[o.ByHeight=1]="ByHeight",o[o.ByPosNoHeight=2]="ByPosNoHeight",o}(QueryType$1||(QueryType$1={}));const Epsilon=.001;class HeightMap{constructor(e,s,a=2){this.length=e,this.height=s,this.flags=a}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,s){this.height!=s&&(Math.abs(this.height-s)>Epsilon&&(e.heightChanged=!0),this.height=s)}replace(e,s,a){return HeightMap.of(a)}decomposeLeft(e,s){s.push(this)}decomposeRight(e,s){s.push(this)}applyChanges(e,s,a,c){let d=this;for(let _=c.length-1;_>=0;_--){let{fromA:b,toA:k,fromB:$,toB:j}=c[_],_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0),et=_e.to>=k?_e:d.lineAt(k,QueryType$1.ByPosNoHeight,s,0,0);for(j+=et.to-k,k=et.to;_>0&&_e.from<=c[_-1].toA;)b=c[_-1].fromA,$=c[_-1].fromB,_--,b<_e.from&&(_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0));$+=_e.from-b,b=_e.from;let tt=NodeBuilder.build(a,e,$,j);d=d.replace(b,k,tt)}return d.updateHeight(a,0)}static empty(){return new HeightMapText(0,0)}static of(e){if(e.length==1)return e[0];let s=0,a=e.length,c=0,d=0;for(;;)if(s==a)if(c>d*2){let b=e[s-1];b.break?e.splice(--s,1,b.left,null,b.right):e.splice(--s,1,b.left,b.right),a+=1+b.break,c-=b.size}else if(d>c*2){let b=e[a];b.break?e.splice(a,1,b.left,null,b.right):e.splice(a,1,b.left,b.right),a+=2+b.break,d-=b.size}else break;else if(c0){let d=a[a.length-1];d instanceof HeightMapGap?a[a.length-1]=new HeightMapGap(d.length+c):a.push(null,new HeightMapGap(c-1))}if(e>0){let d=a[0];d instanceof HeightMapGap?a[0]=new HeightMapGap(e+d.length):a.unshift(new HeightMapGap(e-1),null)}return HeightMap.of(a)}decomposeLeft(e,s){s.push(new HeightMapGap(e-1),null)}decomposeRight(e,s){s.push(null,new HeightMapGap(this.length-e-1))}updateHeight(e,s=0,a=!1,c){let d=s+this.length;if(c&&c.from<=s+this.length&&c.more){let _=[],b=Math.max(s,c.from),k=-1,$=e.heightChanged;for(c.from>s&&_.push(new HeightMapGap(c.from-s-1).updateHeight(e,s));b<=d&&c.more;){let _e=e.doc.lineAt(b).length;_.length&&_.push(null);let et=c.heights[c.index++];k==-1?k=et:Math.abs(et-k)>=Epsilon&&(k=-2);let tt=new HeightMapText(_e,et);tt.outdated=!1,_.push(tt),b+=_e+1}b<=d&&_.push(null,new HeightMapGap(d-b).updateHeight(e,b));let j=HeightMap.of(_);return e.heightChanged=$||k<0||Math.abs(j.height-this.height)>=Epsilon||Math.abs(k-this.lines(e.doc,s).lineHeight)>=Epsilon,j}else(a||this.outdated)&&(this.setHeight(e,e.heightForGap(s,s+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class HeightMapBranch extends HeightMap{constructor(e,s,a){super(e.length+s+a.length,e.height+a.height,s|(e.outdated||a.outdated?2:0)),this.left=e,this.right=a,this.size=e.size+a.size}get break(){return this.flags&1}blockAt(e,s,a,c){let d=a+this.left.height;return eb))return $;let j=s==QueryType$1.ByPosNoHeight?QueryType$1.ByPosNoHeight:QueryType$1.ByPos;return k?$.join(this.right.lineAt(b,j,a,_,b)):this.left.lineAt(b,j,a,c,d).join($)}forEachLine(e,s,a,c,d,_){let b=c+this.left.height,k=d+this.left.length+this.break;if(this.break)e=k&&this.right.forEachLine(e,s,a,b,k,_);else{let $=this.lineAt(k,QueryType$1.ByPos,a,c,d);e<$.from&&this.left.forEachLine(e,$.from-1,a,c,d,_),$.to>=e&&$.from<=s&&_($),s>$.to&&this.right.forEachLine($.to+1,s,a,b,k,_)}}replace(e,s,a){let c=this.left.length+this.break;if(sthis.left.length)return this.balanced(this.left,this.right.replace(e-c,s-c,a));let d=[];e>0&&this.decomposeLeft(e,d);let _=d.length;for(let b of a)d.push(b);if(e>0&&mergeGaps(d,_-1),s=a&&s.push(null)),e>a&&this.right.decomposeLeft(e-a,s)}decomposeRight(e,s){let a=this.left.length,c=a+this.break;if(e>=c)return this.right.decomposeRight(e-c,s);e2*s.size||s.size>2*e.size?HeightMap.of(this.break?[e,null,s]:[e,s]):(this.left=e,this.right=s,this.height=e.height+s.height,this.outdated=e.outdated||s.outdated,this.size=e.size+s.size,this.length=e.length+this.break+s.length,this)}updateHeight(e,s=0,a=!1,c){let{left:d,right:_}=this,b=s+d.length+this.break,k=null;return c&&c.from<=s+d.length&&c.more?k=d=d.updateHeight(e,s,a,c):d.updateHeight(e,s,a),c&&c.from<=b+_.length&&c.more?k=_=_.updateHeight(e,b,a,c):_.updateHeight(e,b,a),k?this.balanced(d,_):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function mergeGaps(o,e){let s,a;o[e]==null&&(s=o[e-1])instanceof HeightMapGap&&(a=o[e+1])instanceof HeightMapGap&&o.splice(e-1,3,new HeightMapGap(s.length+1+a.length))}const relevantWidgetHeight=5;class NodeBuilder{constructor(e,s){this.pos=e,this.oracle=s,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,s){if(this.lineStart>-1){let a=Math.min(s,this.lineEnd),c=this.nodes[this.nodes.length-1];c instanceof HeightMapText?c.length+=a-this.pos:(a>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(a-this.pos,-1)),this.writtenTo=a,s>a&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=s}point(e,s,a){if(e=relevantWidgetHeight)&&this.addLineDeco(c,d)}else s>e&&this.span(e,s);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:s}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=s,this.writtenToe&&this.nodes.push(new HeightMapText(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,s){let a=new HeightMapGap(s-e);return this.oracle.doc.lineAt(e).to==s&&(a.flags|=4),a}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof HeightMapText)return e;let s=new HeightMapText(0,-1);return this.nodes.push(s),s}addBlock(e){this.enterLine(),e.type==BlockType.WidgetAfter&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,e.type!=BlockType.WidgetBefore&&(this.covering=e)}addLineDeco(e,s){let a=this.ensureLine();a.length+=s,a.collapsed+=s,a.widgetHeight=Math.max(a.widgetHeight,e),this.writtenTo=this.pos=this.pos+s}finish(e){let s=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(s instanceof HeightMapText)&&!this.isCovered?this.nodes.push(new HeightMapText(0,-1)):(this.writtenTo$.clientHeight||$.scrollWidth>$.clientWidth)&&j.overflow!="visible"){let _e=$.getBoundingClientRect();a=Math.max(a,_e.left),c=Math.min(c,_e.right),d=Math.max(d,_e.top),_=Math.min(_,_e.bottom)}k=j.position=="absolute"||j.position=="fixed"?$.offsetParent:$.parentNode}else if(k.nodeType==11)k=k.host;else break;return{left:a-s.left,right:Math.max(a,c)-s.left,top:d-(s.top+e),bottom:Math.max(d,_)-(s.top+e)}}function fullPixelRange(o,e){let s=o.getBoundingClientRect();return{left:0,right:s.right-s.left,top:e,bottom:s.bottom-(s.top+e)}}class LineGap{constructor(e,s,a){this.from=e,this.to=s,this.size=a}static same(e,s){if(e.length!=s.length)return!1;for(let a=0;as.draw(!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:s}=this.state.selection;for(let a=0;a<=1;a++){let c=a?s.head:s.anchor;if(!e.some(({from:d,to:_})=>c>=d&&c<=_)){let{from:d,to:_}=this.lineBlockAt(c);e.push(new Viewport(d,_))}}this.viewports=e.sort((a,c)=>a.from-c.from),this.scaler=this.heightMap.height<=7e6?IdScaler:new BigScaler(this.heightOracle.doc,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.state.doc,0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:scaleBlock(e,this.scaler))})}update(e,s=null){let a=this.state;this.state=e.state;let c=this.state.facet(decorations),d=e.changedRanges,_=ChangedRange.extendWithRanges(d,heightRelevantDecoChanges(e.startState.facet(decorations),c,e?e.changes:ChangeSet.empty(this.state.doc.length))),b=this.heightMap.height;this.heightMap=this.heightMap.applyChanges(c,a.doc,this.heightOracle.setDoc(this.state.doc),_),this.heightMap.height!=b&&(e.flags|=2);let k=_.length?this.mapViewport(this.viewport,e.changes):this.viewport;(s&&(s.range.headk.to)||!this.viewportIsAppropriate(k))&&(k=this.getViewport(0,s));let $=!e.changes.empty||e.flags&2||k.from!=this.viewport.from||k.to!=this.viewport.to;this.viewport=k,this.updateForViewport(),$&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),s&&(this.scrollTarget=s),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&(this.mustEnforceCursorAssoc=!0)}measure(e){let s=e.contentDOM,a=window.getComputedStyle(s),c=this.heightOracle,d=a.whiteSpace,_=a.direction=="rtl"?Direction.RTL:Direction.LTR,b=this.heightOracle.mustRefreshForStyle(d,_),k=b||this.mustMeasureContent||this.contentDOMHeight!=s.clientHeight,$=0,j=0;if(this.editorWidth!=e.scrollDOM.clientWidth&&(c.lineWrapping&&(k=!0),this.editorWidth=e.scrollDOM.clientWidth,$|=8),k){this.mustMeasureContent=!1,this.contentDOMHeight=s.clientHeight;let it=parseInt(a.paddingTop)||0,at=parseInt(a.paddingBottom)||0;(this.paddingTop!=it||this.paddingBottom!=at)&&($|=8,this.paddingTop=it,this.paddingBottom=at)}let _e=(this.printing?fullPixelRange:visiblePixelRange)(s,this.paddingTop),et=_e.top-this.pixelViewport.top,tt=_e.bottom-this.pixelViewport.bottom;this.pixelViewport=_e;let nt=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(nt!=this.inView&&(this.inView=nt,nt&&(k=!0)),!this.inView)return 0;let st=s.clientWidth;if((this.contentDOMWidth!=st||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=st,this.editorHeight=e.scrollDOM.clientHeight,$|=8),k){let it=e.docView.measureVisibleLineHeights();if(c.mustRefreshForHeights(it)&&(b=!0),b||c.lineWrapping&&Math.abs(st-this.contentDOMWidth)>c.charWidth){let{lineHeight:at,charWidth:ot}=e.docView.measureTextSize();b=c.refresh(d,_,at,ot,st/ot,it),b&&(e.docView.minWidth=0,$|=8)}et>0&&tt>0?j=Math.max(et,tt):et<0&&tt<0&&(j=Math.min(et,tt)),c.heightChanged=!1,this.heightMap=this.heightMap.updateHeight(c,0,b,new MeasuredHeights(this.viewport.from,it)),c.heightChanged&&($|=2)}let rt=!this.viewportIsAppropriate(this.viewport,j)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return rt&&(this.viewport=this.getViewport(j,this.scrollTarget)),this.updateForViewport(),($&2||rt)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(b?[]:this.lineGaps)),$|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),$}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,s){let a=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),c=this.heightMap,d=this.state.doc,{visibleTop:_,visibleBottom:b}=this,k=new Viewport(c.lineAt(_-a*1e3,QueryType$1.ByHeight,d,0,0).from,c.lineAt(b+(1-a)*1e3,QueryType$1.ByHeight,d,0,0).to);if(s){let{head:$}=s.range;if($k.to){let j=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),_e=c.lineAt($,QueryType$1.ByPos,d,0,0),et;s.y=="center"?et=(_e.top+_e.bottom)/2-j/2:s.y=="start"||s.y=="nearest"&&$=b+Math.max(10,Math.min(a,250)))&&c>_-2*1e3&&da.from&&b.push({from:a.from,to:d}),_=a.from&&k.from<=a.to&&cutRange(b,k.from-10,k.from+10),!k.empty&&k.to>=a.from&&k.to<=a.to&&cutRange(b,k.to-10,k.to+10);for(let{from:$,to:j}of b)j-$>1e3&&s.push(find(e,_e=>_e.from>=a.from&&_e.to<=a.to&&Math.abs(_e.from-$)<1e3&&Math.abs(_e.to-j)<1e3)||new LineGap($,j,this.gapSize(a,$,j,c)))}return s}gapSize(e,s,a,c){let d=findFraction(c,a)-findFraction(c,s);return this.heightOracle.lineWrapping?e.height*d:c.total*this.heightOracle.charWidth*d}updateLineGaps(e){LineGap.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Decoration.set(e.map(s=>s.draw(this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.state.facet(decorations);this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let s=[];RangeSet.spans(e,this.viewport.from,this.viewport.to,{span(c,d){s.push({from:c,to:d})},point(){}},20);let a=s.length!=this.visibleRanges.length||this.visibleRanges.some((c,d)=>c.from!=s[d].from||c.to!=s[d].to);return this.visibleRanges=s,a?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(s=>s.from<=e&&s.to>=e)||scaleBlock(this.heightMap.lineAt(e,QueryType$1.ByPos,this.state.doc,0,0),this.scaler)}lineBlockAtHeight(e){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(e),QueryType$1.ByHeight,this.state.doc,0,0),this.scaler)}elementAtHeight(e){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(e),this.state.doc,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Viewport{constructor(e,s){this.from=e,this.to=s}}function lineStructure(o,e,s){let a=[],c=o,d=0;return RangeSet.spans(s.facet(decorations),o,e,{span(){},point(_,b){_>c&&(a.push({from:c,to:_}),d+=_-c),c=b}},20),c=1)return e[e.length-1].to;let a=Math.floor(o*s);for(let c=0;;c++){let{from:d,to:_}=e[c],b=_-d;if(a<=b)return d+a;a-=b}}function findFraction(o,e){let s=0;for(let{from:a,to:c}of o.ranges){if(e<=c){s+=e-a;break}s+=c-a}return s/o.total}function cutRange(o,e,s){for(let a=0;ae){let d=[];c.froms&&d.push({from:s,to:c.to}),o.splice(a,1,...d),a+=d.length-1}}}function find(o,e){for(let s of o)if(e(s))return s}const IdScaler={toDOM(o){return o},fromDOM(o){return o},scale:1};class BigScaler{constructor(e,s,a){let c=0,d=0,_=0;this.viewports=a.map(({from:b,to:k})=>{let $=s.lineAt(b,QueryType$1.ByPos,e,0,0).top,j=s.lineAt(k,QueryType$1.ByPos,e,0,0).bottom;return c+=j-$,{from:b,to:k,top:$,bottom:j,domTop:0,domBottom:0}}),this.scale=(7e6-c)/(s.height-c);for(let b of this.viewports)b.domTop=_+(b.top-d)*this.scale,_=b.domBottom=b.domTop+(b.bottom-b.top),d=b.bottom}toDOM(e){for(let s=0,a=0,c=0;;s++){let d=sscaleBlock(c,e)):o.type)}const theme=Facet.define({combine:o=>o.join(" ")}),darkTheme=Facet.define({combine:o=>o.indexOf(!0)>-1}),baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName(),lightDarkIDs={"&light":"."+baseLightID,"&dark":"."+baseDarkID};function buildTheme(o,e,s){return new StyleModule(e,{finish(a){return/&/.test(a)?a.replace(/&\w*/,c=>{if(c=="&")return o;if(!s||!s[c])throw new RangeError(`Unsupported selector: ${c}`);return s[c]}):o+" "+a}})}const baseTheme$8=buildTheme("."+baseThemeID,{"&.cm-editor":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,minHeight:"100%",display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere"},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 4px"},".cm-selectionLayer":{zIndex:-1,contain:"size style"},".cm-selectionBackground":{position:"absolute"},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{zIndex:100,contain:"size style",pointerEvents:"none"},"&.cm-focused .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},".cm-cursor, .cm-dropCursor":{position:"absolute",borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},"&.cm-focused .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#f3f9ff"},"&dark .cm-activeLine":{backgroundColor:"#223039"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},lightDarkIDs),observeOptions={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},useCharData=browser.ie&&browser.ie_version<=11;class DOMObserver{constructor(e,s,a){this.view=e,this.onChange=s,this.onScrollChanged=a,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.scrollTargets=[],this.intersection=null,this.resize=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(c=>{for(let d of c)this.queue.push(d);(browser.ie&&browser.ie_version<=11||browser.ios&&e.composing)&&c.some(d=>d.type=="childList"&&d.removedNodes.length||d.type=="characterData"&&d.oldValue.length>d.target.nodeValue.length)?this.flushSoon():this.flush()}),useCharData&&(this.onCharData=c=>{this.queue.push({target:c.target,type:"characterData",oldValue:c.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),window.addEventListener("resize",this.onResize=this.onResize.bind(this)),typeof ResizeObserver=="function"&&(this.resize=new ResizeObserver(()=>{this.view.docView.lastUpdate{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),c.length>0&&c[c.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(c=>{c.length>0&&c[c.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange(),this.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((s,a)=>s!=e[a]))){this.gapIntersection.disconnect();for(let s of e)this.gapIntersection.observe(s);this.gaps=e}}onSelectionChange(e){if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:s}=this,a=this.selectionRange;if(s.state.facet(editable)?s.root.activeElement!=this.dom:!hasSelection(s.dom,a))return;let c=a.anchorNode&&s.docView.nearest(a.anchorNode);c&&c.ignoreEvent(e)||((browser.ie&&browser.ie_version<=11||browser.android&&browser.chrome)&&!s.state.selection.main.empty&&a.focusNode&&isEquivalentPosition(a.focusNode,a.focusOffset,a.anchorNode,a.anchorOffset)?this.flushSoon():this.flush(!1))}readSelectionRange(){let{root:e}=this.view,s=getSelection(e),a=browser.safari&&e.nodeType==11&&deepActiveElement()==this.view.contentDOM&&safariSelectionRangeHack(this.view)||s;return this.selectionRange.eq(a)?!1:(this.selectionRange.setRange(a),this.selectionChanged=!0)}setSelectionRange(e,s){this.selectionRange.set(e.node,e.offset,s.node,s.offset),this.selectionChanged=!1}listenForScroll(){this.parentCheck=-1;let e=0,s=null;for(let a=this.dom;a;)if(a.nodeType==1)!s&&e{let a=this.delayedAndroidKey;this.delayedAndroidKey=null;let c=this.view.state;dispatchKey(this.view.contentDOM,a.key,a.keyCode)?this.processRecords():this.flush(),this.view.state==c&&this.view.update([])}),(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:s})}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=window.setTimeout(()=>{this.delayedFlush=-1,this.flush()},20))}forceFlush(){this.delayedFlush>=0&&(window.clearTimeout(this.delayedFlush),this.delayedFlush=-1,this.flush())}processRecords(){let e=this.queue;for(let d of this.observer.takeRecords())e.push(d);e.length&&(this.queue=[]);let s=-1,a=-1,c=!1;for(let d of e){let _=this.readMutation(d);!_||(_.typeOver&&(c=!0),s==-1?{from:s,to:a}=_:(s=Math.min(_.from,s),a=Math.max(_.to,a)))}return{from:s,to:a,typeOver:c}}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return;e&&this.readSelectionRange();let{from:s,to:a,typeOver:c}=this.processRecords(),d=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(s<0&&!d)return;this.selectionChanged=!1;let _=this.view.state;this.onChange(s,a,c),this.view.state==_&&this.view.update([])}readMutation(e){let s=this.view.docView.nearest(e.target);if(!s||s.ignoreMutation(e))return null;if(s.markDirty(e.type=="attributes"),e.type=="attributes"&&(s.dirty|=4),e.type=="childList"){let a=findChild(s,e.previousSibling||e.target.previousSibling,-1),c=findChild(s,e.nextSibling||e.target.nextSibling,1);return{from:a?s.posAfter(a):s.posAtStart,to:c?s.posBefore(c):s.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:s.posAtStart,to:s.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}destroy(){var e,s,a;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(s=this.gapIntersection)===null||s===void 0||s.disconnect(),(a=this.resize)===null||a===void 0||a.disconnect();for(let c of this.scrollTargets)c.removeEventListener("scroll",this.onScroll);window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.onResize),window.removeEventListener("beforeprint",this.onPrint),this.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout)}}function findChild(o,e,s){for(;e;){let a=ContentView.get(e);if(a&&a.parent==o)return a;let c=e.parentNode;e=c!=o.dom?c:s>0?e.nextSibling:e.previousSibling}return null}function safariSelectionRangeHack(o){let e=null;function s(k){k.preventDefault(),k.stopImmediatePropagation(),e=k.getTargetRanges()[0]}if(o.contentDOM.addEventListener("beforeinput",s,!0),document.execCommand("indent"),o.contentDOM.removeEventListener("beforeinput",s,!0),!e)return null;let a=e.startContainer,c=e.startOffset,d=e.endContainer,_=e.endOffset,b=o.docView.domAtPos(o.state.selection.main.anchor);return isEquivalentPosition(b.node,b.offset,d,_)&&([a,c,d,_]=[d,_,a,c]),{anchorNode:a,anchorOffset:c,focusNode:d,focusOffset:_}}function applyDOMChange(o,e,s,a){let c,d,_=o.state.selection.main;if(e>-1){let b=o.docView.domBoundsAround(e,s,0);if(!b||o.state.readOnly)return;let{from:k,to:$}=b,j=o.docView.impreciseHead||o.docView.impreciseAnchor?[]:selectionPoints(o),_e=new DOMReader(j,o.state);_e.readRange(b.startDOM,b.endDOM);let et=_.from,tt=null;(o.inputState.lastKeyCode===8&&o.inputState.lastKeyTime>Date.now()-100||browser.android&&_e.text.length<$-k)&&(et=_.to,tt="end");let nt=findDiff(o.state.doc.sliceString(k,$,LineBreakPlaceholder),_e.text,et-k,tt);nt&&(browser.chrome&&o.inputState.lastKeyCode==13&&nt.toB==nt.from+2&&_e.text.slice(nt.from,nt.toB)==LineBreakPlaceholder+LineBreakPlaceholder&&nt.toB--,c={from:k+nt.from,to:k+nt.toA,insert:Text.of(_e.text.slice(nt.from,nt.toB).split(LineBreakPlaceholder))}),d=selectionFromPoints(j,k)}else if(o.hasFocus||!o.state.facet(editable)){let b=o.observer.selectionRange,{impreciseHead:k,impreciseAnchor:$}=o.docView,j=k&&k.node==b.focusNode&&k.offset==b.focusOffset||!contains(o.contentDOM,b.focusNode)?o.state.selection.main.head:o.docView.posFromDOM(b.focusNode,b.focusOffset),_e=$&&$.node==b.anchorNode&&$.offset==b.anchorOffset||!contains(o.contentDOM,b.anchorNode)?o.state.selection.main.anchor:o.docView.posFromDOM(b.anchorNode,b.anchorOffset);(j!=_.head||_e!=_.anchor)&&(d=EditorSelection.single(_e,j))}if(!(!c&&!d)){if(!c&&a&&!_.empty&&d&&d.main.empty?c={from:_.from,to:_.to,insert:o.state.doc.slice(_.from,_.to)}:c&&c.from>=_.from&&c.to<=_.to&&(c.from!=_.from||c.to!=_.to)&&_.to-_.from-(c.to-c.from)<=4&&(c={from:_.from,to:_.to,insert:o.state.doc.slice(_.from,c.from).append(c.insert).append(o.state.doc.slice(c.to,_.to))}),c){let b=o.state;if(browser.ios&&o.inputState.flushIOSKey(o)||browser.android&&(c.from==_.from&&c.to==_.to&&c.insert.length==1&&c.insert.lines==2&&dispatchKey(o.contentDOM,"Enter",13)||c.from==_.from-1&&c.to==_.to&&c.insert.length==0&&dispatchKey(o.contentDOM,"Backspace",8)||c.from==_.from&&c.to==_.to+1&&c.insert.length==0&&dispatchKey(o.contentDOM,"Delete",46)))return;let k=c.insert.toString();if(o.state.facet(inputHandler$1).some(_e=>_e(o,c.from,c.to,k)))return;o.inputState.composing>=0&&o.inputState.composing++;let $;if(c.from>=_.from&&c.to<=_.to&&c.to-c.from>=(_.to-_.from)/3&&(!d||d.main.empty&&d.main.from==c.from+c.insert.length)&&o.inputState.composing<0){let _e=_.fromc.to?b.sliceDoc(c.to,_.to):"";$=b.replaceSelection(o.state.toText(_e+c.insert.sliceString(0,void 0,o.state.lineBreak)+et))}else{let _e=b.changes(c),et=d&&!b.selection.main.eq(d.main)&&d.main.to<=_e.newLength?d.main:void 0;if(b.selection.ranges.length>1&&o.inputState.composing>=0&&c.to<=_.to&&c.to>=_.to-10){let tt=o.state.sliceDoc(c.from,c.to),nt=compositionSurroundingNode(o)||o.state.doc.lineAt(_.head),st=_.to-c.to,rt=_.to-_.from;$=b.changeByRange(it=>{if(it.from==_.from&&it.to==_.to)return{changes:_e,range:et||it.map(_e)};let at=it.to-st,ot=at-tt.length;if(it.to-it.from!=rt||o.state.sliceDoc(ot,at)!=tt||nt&&it.to>=nt.from&&it.from<=nt.to)return{range:it};let ht=b.changes({from:ot,to:at,insert:c.insert}),ct=it.to-_.to;return{changes:ht,range:et?EditorSelection.range(Math.max(0,et.anchor+ct),Math.max(0,et.head+ct)):it.map(ht)}})}else $={changes:_e,selection:et&&b.selection.replaceRange(et)}}let j="input.type";o.composing&&(j+=".compose",o.inputState.compositionFirstChange&&(j+=".start",o.inputState.compositionFirstChange=!1)),o.dispatch($,{scrollIntoView:!0,userEvent:j})}else if(d&&!d.main.eq(_)){let b=!1,k="select";o.inputState.lastSelectionTime>Date.now()-50&&(o.inputState.lastSelectionOrigin=="select"&&(b=!0),k=o.inputState.lastSelectionOrigin),o.dispatch({selection:d,scrollIntoView:b,userEvent:k})}}}function findDiff(o,e,s,a){let c=Math.min(o.length,e.length),d=0;for(;d0&&b>0&&o.charCodeAt(_-1)==e.charCodeAt(b-1);)_--,b--;if(a=="end"){let k=Math.max(0,d-Math.min(_,b));s-=_+k-d}return _=_?d-s:0,b=d+(b-_),_=d):b=b?d-s:0,_=d+(_-b),b=d),{from:d,toA:_,toB:b}}function selectionPoints(o){let e=[];if(o.root.activeElement!=o.contentDOM)return e;let{anchorNode:s,anchorOffset:a,focusNode:c,focusOffset:d}=o.observer.selectionRange;return s&&(e.push(new DOMPoint(s,a)),(c!=s||d!=a)&&e.push(new DOMPoint(c,d))),e}function selectionFromPoints(o,e){if(o.length==0)return null;let s=o[0].pos,a=o.length==2?o[1].pos:s;return s>-1&&a>-1?EditorSelection.single(s+e,a+e):null}class EditorView{constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: absolute; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=e.dispatch||(s=>this.update([s])),this.dispatch=this.dispatch.bind(this),this.root=e.root||getRoot(e.parent)||document,this.viewState=new ViewState(e.state||EditorState.create()),this.plugins=this.state.facet(viewPlugin).map(s=>new PluginInstance(s));for(let s of this.plugins)s.update(this);this.observer=new DOMObserver(this,(s,a,c)=>{applyDOMChange(this,s,a,c)},s=>{this.inputState.runScrollHandlers(this,s),this.observer.intersecting&&this.measure()}),this.inputState=new InputState(this),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),e.parent&&e.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}dispatch(...e){this._dispatch(e.length==1&&e[0]instanceof Transaction?e[0]:this.state.update(...e))}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let s=!1,a,c=this.state;for(let _ of e){if(_.startState!=c)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");c=_.state}if(this.destroyed){this.viewState.state=c;return}if(c.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(c);a=new ViewUpdate(this,c,e);let d=this.viewState.scrollTarget;try{this.updateState=2;for(let _ of e){if(d&&(d=d.map(_.changes)),_.scrollIntoView){let{main:b}=_.state.selection;d=new ScrollTarget(b.empty?b:EditorSelection.cursor(b.head,b.head>b.anchor?-1:1))}for(let b of _.effects)b.is(scrollTo)?d=new ScrollTarget(b.value):b.is(centerOn)?d=new ScrollTarget(b.value,"center"):b.is(scrollIntoView$1)&&(d=b.value)}this.viewState.update(a,d),this.bidiCache=CachedOrder.update(this.bidiCache,a.changes),a.empty||(this.updatePlugins(a),this.inputState.update(a)),s=this.docView.update(a),this.state.facet(styleModule)!=this.styleModules&&this.mountStyles(),this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(s,e.some(_=>_.isUserEvent("select.pointer")))}finally{this.updateState=0}if(a.startState.facet(theme)!=a.state.facet(theme)&&(this.viewState.mustMeasureContent=!0),(s||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!a.empty)for(let _ of this.state.facet(updateListener))_(a)}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let s=this.hasFocus;try{for(let a of this.plugins)a.destroy(this);this.viewState=new ViewState(e),this.plugins=e.facet(viewPlugin).map(a=>new PluginInstance(a)),this.pluginMap.clear();for(let a of this.plugins)a.update(this);this.docView=new DocView(this),this.inputState.ensureHandlers(this),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}s&&this.focus(),this.requestMeasure()}updatePlugins(e){let s=e.startState.facet(viewPlugin),a=e.state.facet(viewPlugin);if(s!=a){let c=[];for(let d of a){let _=s.indexOf(d);if(_<0)c.push(new PluginInstance(d));else{let b=this.plugins[_];b.mustUpdate=e,c.push(b)}}for(let d of this.plugins)d.mustUpdate!=e&&d.destroy(this);this.plugins=c,this.pluginMap.clear(),this.inputState.ensureHandlers(this)}else for(let c of this.plugins)c.mustUpdate=e;for(let c=0;c-1&&cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,e&&this.observer.flush();let s=null;try{for(let a=0;;a++){this.updateState=1;let c=this.viewport,d=this.viewState.measure(this);if(!d&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(a>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let _=[];d&4||([this.measureRequests,_]=[_,this.measureRequests]);let b=_.map(_e=>{try{return _e.read(this)}catch(et){return logException(this.state,et),BadMeasure}}),k=new ViewUpdate(this,this.state),$=!1,j=!1;k.flags|=d,s?s.flags|=d:s=k,this.updateState=2,k.empty||(this.updatePlugins(k),this.inputState.update(k),this.updateAttrs(),$=this.docView.update(k));for(let _e=0;_e<_.length;_e++)if(b[_e]!=BadMeasure)try{let et=_[_e];et.write&&et.write(b[_e],this)}catch(et){logException(this.state,et)}if(this.viewState.scrollTarget&&(this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,j=!0),$&&this.docView.updateSelection(!0),this.viewport.from==c.from&&this.viewport.to==c.to&&!j&&this.measureRequests.length==0)break}}finally{this.updateState=0,this.measureScheduled=-1}if(s&&!s.empty)for(let a of this.state.facet(updateListener))a(s)}get themeClasses(){return baseThemeID+" "+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+" "+this.state.facet(theme)}updateAttrs(){let e=attrsFromFacet(this,editorAttributes,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),s={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(editable)?"true":"false",class:"cm-content",style:`${browser.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(s["aria-readonly"]="true"),attrsFromFacet(this,contentAttributes,s),this.observer.ignore(()=>{updateAttrs(this.contentDOM,this.contentAttrs,s),updateAttrs(this.dom,this.editorAttrs,e)}),this.editorAttrs=e,this.contentAttrs=s}showAnnouncements(e){let s=!0;for(let a of e)for(let c of a.effects)if(c.is(EditorView.announce)){s&&(this.announceDOM.textContent=""),s=!1;let d=this.announceDOM.appendChild(document.createElement("div"));d.textContent=c.value}}mountStyles(){this.styleModules=this.state.facet(styleModule),StyleModule.mount(this.root,this.styleModules.concat(baseTheme$8).reverse())}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=requestAnimationFrame(()=>this.measure())),e){if(e.key!=null){for(let s=0;sa.spec==e)||null),s&&s.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}blockAtHeight(e,s){let a=ensureTop(s,this);return this.elementAtHeight(e-a).moveY(a)}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}visualLineAtHeight(e,s){let a=ensureTop(s,this);return this.lineBlockAtHeight(e-a).moveY(a)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}viewportLines(e,s){let a=ensureTop(s,this);for(let c of this.viewportLineBlocks)e(c.moveY(a))}get viewportLineBlocks(){return this.viewState.viewportLines}visualLineAt(e,s=0){return this.lineBlockAt(e).moveY(s+this.viewState.paddingTop)}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,s,a){return skipAtoms(this,e,moveByChar(this,e,s,a))}moveByGroup(e,s){return skipAtoms(this,e,moveByChar(this,e,s,a=>byGroup(this,e.head,a)))}moveToLineBoundary(e,s,a=!0){return moveToLineBoundary(this,e,s,a)}moveVertically(e,s,a){return skipAtoms(this,e,moveVertically(this,e,s,a))}scrollPosIntoView(e){this.dispatch({effects:scrollTo.of(EditorSelection.cursor(e))})}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,s=0){return this.docView.posFromDOM(e,s)}posAtCoords(e,s=!0){return this.readMeasured(),posAtCoords(this,e,s)}coordsAtPos(e,s=1){this.readMeasured();let a=this.docView.coordsAt(e,s);if(!a||a.left==a.right)return a;let c=this.state.doc.lineAt(e),d=this.bidiSpans(c),_=d[BidiSpan.find(d,e-c.from,-1,s)];return flattenRect(a,_.dir==Direction.LTR==s>0)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.heightOracle.direction}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>MaxBidiLine)return trivialOrder(e.length);let s=this.textDirection;for(let c of this.bidiCache)if(c.from==e.from&&c.dir==s)return c.order;let a=computeOrder(e.text,this.textDirection);return this.bidiCache.push(new CachedOrder(e.from,e.to,s,a)),a}get hasFocus(){var e;return(document.hasFocus()||browser.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()})}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,s={}){return scrollIntoView$1.of(new ScrollTarget(typeof e=="number"?EditorSelection.cursor(e):e,s.y,s.x,s.yMargin,s.xMargin))}static domEventHandlers(e){return ViewPlugin.define(()=>({}),{eventHandlers:e})}static theme(e,s){let a=StyleModule.newName(),c=[theme.of(a),styleModule.of(buildTheme(`.${a}`,e))];return s&&s.dark&&c.push(darkTheme.of(!0)),c}static baseTheme(e){return Prec.lowest(styleModule.of(buildTheme("."+baseThemeID,e,lightDarkIDs)))}}EditorView.scrollTo=scrollTo;EditorView.centerOn=centerOn;EditorView.styleModule=styleModule;EditorView.inputHandler=inputHandler$1;EditorView.exceptionSink=exceptionSink;EditorView.updateListener=updateListener;EditorView.editable=editable;EditorView.mouseSelectionStyle=mouseSelectionStyle;EditorView.dragMovesSelection=dragMovesSelection$1;EditorView.clickAddsSelectionRange=clickAddsSelectionRange;EditorView.decorations=decorations;EditorView.darkTheme=darkTheme;EditorView.contentAttributes=contentAttributes;EditorView.editorAttributes=editorAttributes;EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"});EditorView.announce=StateEffect.define();const MaxBidiLine=4096;function ensureTop(o,e){return(o==null?e.contentDOM.getBoundingClientRect().top:o)+e.viewState.paddingTop}const BadMeasure={};class CachedOrder{constructor(e,s,a,c){this.from=e,this.to=s,this.dir=a,this.order=c}static update(e,s){if(s.empty)return e;let a=[],c=e.length?e[e.length-1].dir:Direction.LTR;for(let d=Math.max(0,e.length-10);d=0;c--){let d=a[c],_=typeof d=="function"?d(o):d;_&&combineAttrs(_,s)}return s}const currentPlatform=browser.mac?"mac":browser.windows?"win":browser.linux?"linux":"key";function normalizeKeyName(o,e){const s=o.split(/-(?!$)/);let a=s[s.length-1];a=="Space"&&(a=" ");let c,d,_,b;for(let k=0;ka.concat(c),[]))),s}function runScopeHandlers(o,e,s){return runHandlers(getKeymap(o.state),e,o,s)}let storedPrefix=null;const PrefixTimeout=4e3;function buildKeymap(o,e=currentPlatform){let s=Object.create(null),a=Object.create(null),c=(_,b)=>{let k=a[_];if(k==null)a[_]=b;else if(k!=b)throw new Error("Key binding "+_+" is used both as a regular binding and as a multi-stroke prefix")},d=(_,b,k,$)=>{let j=s[_]||(s[_]=Object.create(null)),_e=b.split(/ (?!$)/).map(nt=>normalizeKeyName(nt,e));for(let nt=1;nt<_e.length;nt++){let st=_e.slice(0,nt).join(" ");c(st,!0),j[st]||(j[st]={preventDefault:!0,commands:[rt=>{let it=storedPrefix={view:rt,prefix:st,scope:_};return setTimeout(()=>{storedPrefix==it&&(storedPrefix=null)},PrefixTimeout),!0}]})}let et=_e.join(" ");c(et,!1);let tt=j[et]||(j[et]={preventDefault:!1,commands:[]});tt.commands.push(k),$&&(tt.preventDefault=!0)};for(let _ of o){let b=_[e]||_.key;if(!!b)for(let k of _.scope?_.scope.split(" "):["editor"])d(k,b,_.run,_.preventDefault),_.shift&&d(k,"Shift-"+b,_.shift,_.preventDefault)}return s}function runHandlers(o,e,s,a){let c=keyName(e),d=c.length==1&&c!=" ",_="",b=!1;storedPrefix&&storedPrefix.view==s&&storedPrefix.scope==a&&(_=storedPrefix.prefix+" ",(b=modifierCodes.indexOf(e.keyCode)<0)&&(storedPrefix=null));let k=_e=>{if(_e){for(let et of _e.commands)if(et(s))return!0;_e.preventDefault&&(b=!0)}return!1},$=o[a],j;if($){if(k($[_+modifiers(c,e,!d)]))return!0;if(d&&(e.shiftKey||e.altKey||e.metaKey)&&(j=base[e.keyCode])&&j!=c){if(k($[_+modifiers(j,e,!0)]))return!0}else if(d&&e.shiftKey&&k($[_+modifiers(c,e,!0)]))return!0}return b}const CanHidePrimary=!browser.ios,selectionConfig=Facet.define({combine(o){return combineConfig(o,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,s)=>Math.min(e,s),drawRangeCursor:(e,s)=>e||s})}});function drawSelection(o={}){return[selectionConfig.of(o),drawSelectionPlugin,hideNativeSelection]}class Piece{constructor(e,s,a,c,d){this.left=e,this.top=s,this.width=a,this.height=c,this.className=d}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width>=0&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}}const drawSelectionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.rangePieces=[],this.cursors=[],this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.selectionLayer=o.scrollDOM.appendChild(document.createElement("div")),this.selectionLayer.className="cm-selectionLayer",this.selectionLayer.setAttribute("aria-hidden","true"),this.cursorLayer=o.scrollDOM.appendChild(document.createElement("div")),this.cursorLayer.className="cm-cursorLayer",this.cursorLayer.setAttribute("aria-hidden","true"),o.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){this.cursorLayer.style.animationDuration=this.view.state.facet(selectionConfig).cursorBlinkRate+"ms"}update(o){let e=o.startState.facet(selectionConfig)!=o.state.facet(selectionConfig);(e||o.selectionSet||o.geometryChanged||o.viewportChanged)&&this.view.requestMeasure(this.measureReq),o.transactions.some(s=>s.scrollIntoView)&&(this.cursorLayer.style.animationName=this.cursorLayer.style.animationName=="cm-blink"?"cm-blink2":"cm-blink"),e&&this.setBlinkRate()}readPos(){let{state:o}=this.view,e=o.facet(selectionConfig),s=o.selection.ranges.map(c=>c.empty?[]:measureRange(this.view,c)).reduce((c,d)=>c.concat(d)),a=[];for(let c of o.selection.ranges){let d=c==o.selection.main;if(c.empty?!d||CanHidePrimary:e.drawRangeCursor){let _=measureCursor(this.view,c,d);_&&a.push(_)}}return{rangePieces:s,cursors:a}}drawSel({rangePieces:o,cursors:e}){if(o.length!=this.rangePieces.length||o.some((s,a)=>!s.eq(this.rangePieces[a]))){this.selectionLayer.textContent="";for(let s of o)this.selectionLayer.appendChild(s.draw());this.rangePieces=o}if(e.length!=this.cursors.length||e.some((s,a)=>!s.eq(this.cursors[a]))){let s=this.cursorLayer.children;if(s.length!==e.length){this.cursorLayer.textContent="";for(const a of e)this.cursorLayer.appendChild(a.draw())}else e.forEach((a,c)=>a.adjust(s[c]));this.cursors=e}}destroy(){this.selectionLayer.remove(),this.cursorLayer.remove()}}),themeSpec={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};CanHidePrimary&&(themeSpec[".cm-line"].caretColor="transparent !important");const hideNativeSelection=Prec.highest(EditorView.theme(themeSpec));function getBase(o){let e=o.scrollDOM.getBoundingClientRect();return{left:(o.textDirection==Direction.LTR?e.left:e.right-o.scrollDOM.clientWidth)-o.scrollDOM.scrollLeft,top:e.top-o.scrollDOM.scrollTop}}function wrappedLine(o,e,s){let a=EditorSelection.cursor(e);return{from:Math.max(s.from,o.moveToLineBoundary(a,!1,!0).from),to:Math.min(s.to,o.moveToLineBoundary(a,!0,!0).from),type:BlockType.Text}}function blockAt(o,e){let s=o.lineBlockAt(e);if(Array.isArray(s.type)){for(let a of s.type)if(a.to>e||a.to==e&&(a.to==s.to||a.type==BlockType.Text))return a}return s}function measureRange(o,e){if(e.to<=o.viewport.from||e.from>=o.viewport.to)return[];let s=Math.max(e.from,o.viewport.from),a=Math.min(e.to,o.viewport.to),c=o.textDirection==Direction.LTR,d=o.contentDOM,_=d.getBoundingClientRect(),b=getBase(o),k=window.getComputedStyle(d.firstChild),$=_.left+parseInt(k.paddingLeft)+Math.min(0,parseInt(k.textIndent)),j=_.right-parseInt(k.paddingRight),_e=blockAt(o,s),et=blockAt(o,a),tt=_e.type==BlockType.Text?_e:null,nt=et.type==BlockType.Text?et:null;if(o.lineWrapping&&(tt&&(tt=wrappedLine(o,s,tt)),nt&&(nt=wrappedLine(o,a,nt))),tt&&nt&&tt.from==nt.from)return rt(it(e.from,e.to,tt));{let ot=tt?it(e.from,null,tt):at(_e,!1),ht=nt?it(null,e.to,nt):at(et,!0),ct=[];return(tt||_e).to<(nt||et).from-1?ct.push(st($,ot.bottom,j,ht.top)):ot.bottomgt&&ft.from=Et)break;Ct>mt&&pt(Math.max(vt,mt),ot==null&&vt<=gt,Math.min(Ct,Et),ht==null&&Ct>=yt,St.dir)}if(mt=_t.to+1,mt>=Et)break}return dt.length==0&&pt(gt,ot==null,yt,ht==null,o.textDirection),{top:lt,bottom:ut,horizontal:dt}}function at(ot,ht){let ct=_.top+(ht?ot.top:ot.bottom);return{top:ct,bottom:ct,horizontal:[]}}}function measureCursor(o,e,s){let a=o.coordsAtPos(e.head,e.assoc||1);if(!a)return null;let c=getBase(o);return new Piece(a.left-c.left,a.top-c.top,-1,a.bottom-a.top,s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary")}function iterMatches(o,e,s,a,c){e.lastIndex=0;for(let d=o.iterRange(s,a),_=s,b;!d.next().done;_+=d.value.length)if(!d.lineBreak)for(;b=e.exec(d.value);)c(_+b.index,_+b.index+b[0].length,b)}function matchRanges(o,e){let s=o.visibleRanges;if(s.length==1&&s[0].from==o.viewport.from&&s[0].to==o.viewport.to)return s;let a=[];for(let{from:c,to:d}of s)c=Math.max(o.state.doc.lineAt(c).from,c-e),d=Math.min(o.state.doc.lineAt(d).to,d+e),a.length&&a[a.length-1].to>=c?a[a.length-1].to=d:a.push({from:c,to:d});return a}class MatchDecorator{constructor(e){let{regexp:s,decoration:a,boundary:c,maxLength:d=1e3}=e;if(!s.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");this.regexp=s,this.getDeco=typeof a=="function"?a:()=>a,this.boundary=c,this.maxLength=d}createDeco(e){let s=new RangeSetBuilder;for(let{from:a,to:c}of matchRanges(e,this.maxLength))iterMatches(e.state.doc,this.regexp,a,c,(d,_,b)=>s.add(d,_,this.getDeco(b,e,d)));return s.finish()}updateDeco(e,s){let a=1e9,c=-1;return e.docChanged&&e.changes.iterChanges((d,_,b,k)=>{k>e.view.viewport.from&&b1e3?this.createDeco(e.view):c>-1?this.updateRange(e.view,s.map(e.changes),a,c):s}updateRange(e,s,a,c){for(let d of e.visibleRanges){let _=Math.max(d.from,a),b=Math.min(d.to,c);if(b>_){let k=e.state.doc.lineAt(_),$=k.tok.from;_--)if(this.boundary.test(k.text[_-1-k.from])){j=_;break}for(;b<$.to;b++)if(this.boundary.test($.text[b-$.from])){_e=b;break}}let et=[],tt;if(k==$)for(this.regexp.lastIndex=j-k.from;(tt=this.regexp.exec(k.text))&&tt.index<_e-k.from;){let nt=tt.index+k.from;et.push(this.getDeco(tt,e,nt).range(nt,nt+tt[0].length))}else iterMatches(e.state.doc,this.regexp,j,_e,(nt,st,rt)=>et.push(this.getDeco(rt,e,nt).range(nt,st)));s=s.update({filterFrom:j,filterTo:_e,filter:(nt,st)=>nt_e,add:et})}}return s}}const UnicodeRegexpSupport=/x/.unicode!=null?"gu":"g",Specials=new RegExp(`[\0-\b +-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\uFEFF\uFFF9-\uFFFC]`,UnicodeRegexpSupport),Names={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let _supportsTabSize=null;function supportsTabSize(){var o;if(_supportsTabSize==null&&typeof document!="undefined"&&document.body){let e=document.body.style;_supportsTabSize=((o=e.tabSize)!==null&&o!==void 0?o:e.MozTabSize)!=null}return _supportsTabSize||!1}const specialCharConfig=Facet.define({combine(o){let e=combineConfig(o,{render:null,specialChars:Specials,addSpecialChars:null});return(e.replaceTabs=!supportsTabSize())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,UnicodeRegexpSupport)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,UnicodeRegexpSupport)),e}});function highlightSpecialChars(o={}){return[specialCharConfig.of(o),specialCharPlugin()]}let _plugin=null;function specialCharPlugin(){return _plugin||(_plugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=Decoration.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(o.state.facet(specialCharConfig)),this.decorations=this.decorator.createDeco(o)}makeDecorator(o){return new MatchDecorator({regexp:o.specialChars,decoration:(e,s,a)=>{let{doc:c}=s.state,d=codePointAt(e[0],0);if(d==9){let _=c.lineAt(a),b=s.state.tabSize,k=countColumn(_.text,b,a-_.from);return Decoration.replace({widget:new TabWidget((b-k%b)*this.view.defaultCharacterWidth)})}return this.decorationCache[d]||(this.decorationCache[d]=Decoration.replace({widget:new SpecialCharWidget(o,d)}))},boundary:o.replaceTabs?void 0:/[^]/})}update(o){let e=o.state.facet(specialCharConfig);o.startState.facet(specialCharConfig)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(o.view)):this.decorations=this.decorator.updateDeco(o,this.decorations)}},{decorations:o=>o.decorations}))}const DefaultPlaceholder="\u2022";function placeholder$1(o){return o>=32?DefaultPlaceholder:o==10?"\u2424":String.fromCharCode(9216+o)}class SpecialCharWidget extends WidgetType{constructor(e,s){super(),this.options=e,this.code=s}eq(e){return e.code==this.code}toDOM(e){let s=placeholder$1(this.code),a=e.state.phrase("Control character")+" "+(Names[this.code]||"0x"+this.code.toString(16)),c=this.options.render&&this.options.render(this.code,a,s);if(c)return c;let d=document.createElement("span");return d.textContent=s,d.title=a,d.setAttribute("aria-label",a),d.className="cm-specialChar",d}ignoreEvent(){return!1}}class TabWidget extends WidgetType{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function highlightActiveLine(){return activeLineHighlighter}const lineDeco=Decoration.line({class:"cm-activeLine"}),activeLineHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.docChanged||o.selectionSet)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=-1,s=[];for(let a of o.state.selection.ranges){if(!a.empty)return Decoration.none;let c=o.lineBlockAt(a.head);c.from>e&&(s.push(lineDeco.range(c.from)),e=c.from)}return Decoration.set(s)}},{decorations:o=>o.decorations}),fromHistory=Annotation.define(),isolateHistory=Annotation.define(),invertedEffects=Facet.define(),historyConfig=Facet.define({combine(o){return combineConfig(o,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})}});function changeEnd(o){let e=0;return o.iterChangedRanges((s,a)=>e=a),e}const historyField_=StateField.define({create(){return HistoryState.empty},update(o,e){let s=e.state.facet(historyConfig),a=e.annotation(fromHistory);if(a){let k=e.docChanged?EditorSelection.single(changeEnd(e.changes)):void 0,$=HistEvent.fromTransaction(e,k),j=a.side,_e=j==0?o.undone:o.done;return $?_e=updateBranch(_e,_e.length,s.minDepth,$):_e=addSelection(_e,e.startState.selection),new HistoryState(j==0?a.rest:_e,j==0?_e:a.rest)}let c=e.annotation(isolateHistory);if((c=="full"||c=="before")&&(o=o.isolate()),e.annotation(Transaction.addToHistory)===!1)return e.changes.empty?o:o.addMapping(e.changes.desc);let d=HistEvent.fromTransaction(e),_=e.annotation(Transaction.time),b=e.annotation(Transaction.userEvent);return d?o=o.addChanges(d,_,b,s.newGroupDelay,s.minDepth):e.selection&&(o=o.addSelection(e.startState.selection,_,b,s.newGroupDelay)),(c=="full"||c=="after")&&(o=o.isolate()),o},toJSON(o){return{done:o.done.map(e=>e.toJSON()),undone:o.undone.map(e=>e.toJSON())}},fromJSON(o){return new HistoryState(o.done.map(HistEvent.fromJSON),o.undone.map(HistEvent.fromJSON))}});function history(o={}){return[historyField_,historyConfig.of(o),EditorView.domEventHandlers({beforeinput(e,s){let a=e.inputType=="historyUndo"?undo:e.inputType=="historyRedo"?redo:null;return a?(e.preventDefault(),a(s)):!1}})]}function cmd(o,e){return function({state:s,dispatch:a}){if(!e&&s.readOnly)return!1;let c=s.field(historyField_,!1);if(!c)return!1;let d=c.pop(o,s,e);return d?(a(d),!0):!1}}const undo=cmd(0,!1),redo=cmd(1,!1),undoSelection=cmd(0,!0),redoSelection=cmd(1,!0);class HistEvent{constructor(e,s,a,c,d){this.changes=e,this.effects=s,this.mapped=a,this.startSelection=c,this.selectionsAfter=d}setSelAfter(e){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,s,a;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(s=this.mapped)===null||s===void 0?void 0:s.toJSON(),startSelection:(a=this.startSelection)===null||a===void 0?void 0:a.toJSON(),selectionsAfter:this.selectionsAfter.map(c=>c.toJSON())}}static fromJSON(e){return new HistEvent(e.changes&&ChangeSet.fromJSON(e.changes),[],e.mapped&&ChangeDesc.fromJSON(e.mapped),e.startSelection&&EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(EditorSelection.fromJSON))}static fromTransaction(e,s){let a=none$1;for(let c of e.startState.facet(invertedEffects)){let d=c(e);d.length&&(a=a.concat(d))}return!a.length&&e.changes.empty?null:new HistEvent(e.changes.invert(e.startState.doc),a,void 0,s||e.startState.selection,none$1)}static selection(e){return new HistEvent(void 0,none$1,void 0,void 0,e)}}function updateBranch(o,e,s,a){let c=e+1>s+20?e-s-1:0,d=o.slice(c,e);return d.push(a),d}function isAdjacent(o,e){let s=[],a=!1;return o.iterChangedRanges((c,d)=>s.push(c,d)),e.iterChangedRanges((c,d,_,b)=>{for(let k=0;k=$&&_<=j&&(a=!0)}}),a}function eqSelectionShape(o,e){return o.ranges.length==e.ranges.length&&o.ranges.filter((s,a)=>s.empty!=e.ranges[a].empty).length===0}function conc(o,e){return o.length?e.length?o.concat(e):o:e}const none$1=[],MaxSelectionsPerEvent=200;function addSelection(o,e){if(o.length){let s=o[o.length-1],a=s.selectionsAfter.slice(Math.max(0,s.selectionsAfter.length-MaxSelectionsPerEvent));return a.length&&a[a.length-1].eq(e)?o:(a.push(e),updateBranch(o,o.length-1,1e9,s.setSelAfter(a)))}else return[HistEvent.selection([e])]}function popSelection(o){let e=o[o.length-1],s=o.slice();return s[o.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),s}function addMappingToBranch(o,e){if(!o.length)return o;let s=o.length,a=none$1;for(;s;){let c=mapEvent(o[s-1],e,a);if(c.changes&&!c.changes.empty||c.effects.length){let d=o.slice(0,s);return d[s-1]=c,d}else e=c.mapped,s--,a=c.selectionsAfter}return a.length?[HistEvent.selection(a)]:none$1}function mapEvent(o,e,s){let a=conc(o.selectionsAfter.length?o.selectionsAfter.map(b=>b.map(e)):none$1,s);if(!o.changes)return HistEvent.selection(a);let c=o.changes.map(e),d=e.mapDesc(o.changes,!0),_=o.mapped?o.mapped.composeDesc(d):d;return new HistEvent(c,StateEffect.mapEffects(o.effects,e),_,o.startSelection.map(d),a)}const joinableUserEvent=/^(input\.type|delete)($|\.)/;class HistoryState{constructor(e,s,a=0,c=void 0){this.done=e,this.undone=s,this.prevTime=a,this.prevUserEvent=c}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this}addChanges(e,s,a,c,d){let _=this.done,b=_[_.length-1];return b&&b.changes&&!b.changes.empty&&e.changes&&(!a||joinableUserEvent.test(a))&&(!b.selectionsAfter.length&&s-this.prevTime0&&s-this.prevTime{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=NodeType.match(e)),s=>{let a=e(s);return a===void 0?null:[this,a]}}}NodeProp.closedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.openedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.group=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.contextHash=new NodeProp({perNode:!0});NodeProp.lookAhead=new NodeProp({perNode:!0});NodeProp.mounted=new NodeProp({perNode:!0});const noProps=Object.create(null);class NodeType{constructor(e,s,a,c=0){this.name=e,this.props=s,this.id=a,this.flags=c}static define(e){let s=e.props&&e.props.length?Object.create(null):noProps,a=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),c=new NodeType(e.name||"",s,e.id,a);if(e.props){for(let d of e.props)if(Array.isArray(d)||(d=d(c)),d){if(d[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");s[d[0].id]=d[1]}}return c}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let s=this.prop(NodeProp.group);return s?s.indexOf(e)>-1:!1}return this.id==e}static match(e){let s=Object.create(null);for(let a in e)for(let c of a.split(" "))s[c]=e[a];return a=>{for(let c=a.prop(NodeProp.group),d=-1;d<(c?c.length:0);d++){let _=s[d<0?a.name:c[d]];if(_)return _}}}}NodeType.none=new NodeType("",Object.create(null),0,8);class NodeSet{constructor(e){this.types=e;for(let s=0;s_.node;;){let k=!1;if(_.from<=d&&_.to>=c&&(_.type.isAnonymous||s(_.type,_.from,_.to,b)!==!1)){if(_.firstChild())continue;_.type.isAnonymous||(k=!0)}for(;k&&a&&a(_.type,_.from,_.to,b),k=_.type.isAnonymous,!_.nextSibling();){if(!_.parent())return;k=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let s in this.props)e.push([+s,this.props[s]]);return e}balance(e={}){return this.children.length<=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(s,a,c)=>new Tree(this.type,s,a,c,this.propValues),e.makeTree||((s,a,c)=>new Tree(NodeType.none,s,a,c)))}static build(e){return buildTree(e)}}Tree.empty=new Tree(NodeType.none,[],[],0);class FlatBufferCursor{constructor(e,s){this.buffer=e,this.index=s}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}}class TreeBuffer{constructor(e,s,a){this.buffer=e,this.length=s,this.set=a}get type(){return NodeType.none}toString(){let e=[];for(let s=0;s0));k=_[k+3]);return b}slice(e,s,a,c){let d=this.buffer,_=new Uint16Array(s-e);for(let b=e,k=0;b=e&&se;case 1:return s<=e&&a>e;case 2:return a>e;case 4:return!0}}function enterUnfinishedNodesBefore(o,e){let s=o.childBefore(e);for(;s;){let a=s.lastChild;if(!a||a.to!=s.to)break;a.type.isError&&a.from==a.to?(o=s,s=a.prevSibling):s=a}return o}function resolveNode(o,e,s,a){for(var c;o.from==o.to||(s<1?o.from>=e:o.from>e)||(s>-1?o.to<=e:o.to0?b.length:-1;e!=$;e+=s){let j=b[e],_e=k[e]+_._from;if(!!checkSide(c,a,_e,_e+j.length)){if(j instanceof TreeBuffer){if(d&2)continue;let et=j.findChild(0,j.buffer.length,s,a-_e,c);if(et>-1)return new BufferNode(new BufferContext(_,j,e,_e),null,et)}else if(d&1||!j.type.isAnonymous||hasChild(j)){let et;if(!(d&1)&&j.props&&(et=j.prop(NodeProp.mounted))&&!et.overlay)return new TreeNode(et.tree,_e,e,_);let tt=new TreeNode(j,_e,e,_);return d&1||!tt.type.isAnonymous?tt:tt.nextChild(s<0?j.children.length-1:0,s,a,c)}}}if(d&1||!_.type.isAnonymous||(_.index>=0?e=_.index+s:e=s<0?-1:_._parent.node.children.length,_=_._parent,!_))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this.node.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this.node.children.length-1,-1,e,-2)}enter(e,s,a=!0,c=!0){let d;if(a&&(d=this.node.prop(NodeProp.mounted))&&d.overlay){let _=e-this.from;for(let{from:b,to:k}of d.overlay)if((s>0?b<=_:b<_)&&(s<0?k>=_:k>_))return new TreeNode(d.tree,d.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,s,c?0:2)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get cursor(){return new TreeCursor(this)}get tree(){return this.node}toTree(){return this.node}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}toString(){return this.node.toString()}}function getChildren(o,e,s,a){let c=o.cursor,d=[];if(!c.firstChild())return d;if(s!=null){for(;!c.type.is(s);)if(!c.nextSibling())return d}for(;;){if(a!=null&&c.type.is(a))return d;if(c.type.is(e)&&d.push(c.node),!c.nextSibling())return a==null?d:[]}}class BufferContext{constructor(e,s,a,c){this.parent=e,this.buffer=s,this.index=a,this.start=c}}class BufferNode{constructor(e,s,a){this.context=e,this._parent=s,this.index=a,this.type=e.buffer.set.types[e.buffer.buffer[a]]}get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}child(e,s,a){let{buffer:c}=this.context,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.context.start,a);return d<0?null:new BufferNode(this.context,this,d)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,s,a,c=!0){if(!c)return null;let{buffer:d}=this.context,_=d.findChild(this.index+4,d.buffer[this.index+3],s>0?1:-1,e-this.context.start,s);return _<0?null:new BufferNode(this.context,this,_)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,s=e.buffer[this.index+3];return s<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new BufferNode(this.context,this._parent,s):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,s=this._parent?this._parent.index+4:0;return this.index==s?this.externalSibling(-1):new BufferNode(this.context,this._parent,e.findChild(s,this.index,-1,0,4))}get cursor(){return new TreeCursor(this)}get tree(){return null}toTree(){let e=[],s=[],{buffer:a}=this.context,c=this.index+4,d=a.buffer[this.index+3];if(d>c){let _=a.buffer[this.index+1],b=a.buffer[this.index+2];e.push(a.slice(c,d,_,b)),s.push(0)}return new Tree(this.type,e,s,this.to-this.from)}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}}class TreeCursor{constructor(e,s=0){if(this.mode=s,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof TreeNode)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let a=e._parent;a;a=a._parent)this.stack.unshift(a.index);this.bufferNode=e,this.yieldBuf(e.index)}}get name(){return this.type.name}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,s){this.index=e;let{start:a,buffer:c}=this.buffer;return this.type=s||c.set.types[c.buffer[e]],this.from=a+c.buffer[e+1],this.to=a+c.buffer[e+2],!0}yield(e){return e?e instanceof TreeNode?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,s,a){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree.node.children.length-1:0,e,s,a,this.mode));let{buffer:c}=this.buffer,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.buffer.start,a);return d<0?!1:(this.stack.push(this.index),this.yieldBuf(d))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,s,a=!0,c=!0){return this.buffer?c?this.enterChild(1,e,s):!1:this.yield(this._tree.enter(e,s,a&&!(this.mode&1),c))}parent(){if(!this.buffer)return this.yieldNode(this.mode&1?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&1?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:s}=this.buffer,a=this.stack.length-1;if(e<0){let c=a<0?0:this.stack[a]+4;if(this.index!=c)return this.yieldBuf(s.findChild(c,this.index,-1,0,4))}else{let c=s.buffer[this.index+3];if(c<(a<0?s.buffer.length:s.buffer[this.stack[a]+3]))return this.yieldBuf(c)}return a<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let s,a,{buffer:c}=this;if(c){if(e>0){if(this.index-1)for(let d=s+e,_=e<0?-1:a.node.children.length;d!=_;d+=e){let b=a.node.children[d];if(this.mode&1||b instanceof TreeBuffer||!b.type.isAnonymous||hasChild(b))return!1}return!0}move(e,s){if(s&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,s=0){for(;(this.from==this.to||(s<1?this.from>=e:this.from>e)||(s>-1?this.to<=e:this.to=0;){for(let _=e;_;_=_._parent)if(_.index==c){if(c==this.index)return _;s=_,a=d+1;break e}c=this.stack[--d]}}for(let c=a;ce instanceof TreeBuffer||!e.type.isAnonymous||hasChild(e))}function buildTree(o){var e;let{buffer:s,nodeSet:a,maxBufferLength:c=DefaultBufferLength,reused:d=[],minRepeatType:_=a.types.length}=o,b=Array.isArray(s)?new FlatBufferCursor(s,s.length):s,k=a.types,$=0,j=0;function _e(ht,ct,lt,ut,dt){let{id:pt,start:gt,end:yt,size:ft}=b,mt=j;for(;ft<0;)if(b.next(),ft==-1){let Ct=d[pt];lt.push(Ct),ut.push(gt-ht);return}else if(ft==-3){$=pt;return}else if(ft==-4){j=pt;return}else throw new RangeError(`Unrecognized record size: ${ft}`);let Et=k[pt],_t,St,vt=gt-ht;if(yt-gt<=c&&(St=st(b.pos-ct,dt))){let Ct=new Uint16Array(St.size-St.skip),xt=b.pos-St.size,bt=Ct.length;for(;b.pos>xt;)bt=rt(St.start,Ct,bt);_t=new TreeBuffer(Ct,yt-St.start,a),vt=St.start-ht}else{let Ct=b.pos-ft;b.next();let xt=[],bt=[],At=pt>=_?pt:-1,Ot=0,Tt=yt;for(;b.pos>Ct;)At>=0&&b.id==At&&b.size>=0?(b.end<=Tt-c&&(tt(xt,bt,gt,Ot,b.end,Tt,At,mt),Ot=xt.length,Tt=b.end),b.next()):_e(gt,Ct,xt,bt,At);if(At>=0&&Ot>0&&Ot-1&&Ot>0){let Rt=et(Et);_t=balanceRange(Et,xt,bt,0,xt.length,0,yt-gt,Rt,Rt)}else _t=nt(Et,xt,bt,yt-gt,mt-yt)}lt.push(_t),ut.push(vt)}function et(ht){return(ct,lt,ut)=>{let dt=0,pt=ct.length-1,gt,yt;if(pt>=0&&(gt=ct[pt])instanceof Tree){if(!pt&>.type==ht&>.length==ut)return gt;(yt=gt.prop(NodeProp.lookAhead))&&(dt=lt[pt]+gt.length+yt)}return nt(ht,ct,lt,ut,dt)}}function tt(ht,ct,lt,ut,dt,pt,gt,yt){let ft=[],mt=[];for(;ht.length>ut;)ft.push(ht.pop()),mt.push(ct.pop()+lt-dt);ht.push(nt(a.types[gt],ft,mt,pt-dt,yt-pt)),ct.push(dt-lt)}function nt(ht,ct,lt,ut,dt=0,pt){if($){let gt=[NodeProp.contextHash,$];pt=pt?[gt].concat(pt):[gt]}if(dt>25){let gt=[NodeProp.lookAhead,dt];pt=pt?[gt].concat(pt):[gt]}return new Tree(ht,ct,lt,ut,pt)}function st(ht,ct){let lt=b.fork(),ut=0,dt=0,pt=0,gt=lt.end-c,yt={size:0,start:0,skip:0};e:for(let ft=lt.pos-ht;lt.pos>ft;){let mt=lt.size;if(lt.id==ct&&mt>=0){yt.size=ut,yt.start=dt,yt.skip=pt,pt+=4,ut+=4,lt.next();continue}let Et=lt.pos-mt;if(mt<0||Et=_?4:0,St=lt.start;for(lt.next();lt.pos>Et;){if(lt.size<0)if(lt.size==-3)_t+=4;else break e;else lt.id>=_&&(_t+=4);lt.next()}dt=St,ut+=mt,pt+=_t}return(ct<0||ut==ht)&&(yt.size=ut,yt.start=dt,yt.skip=pt),yt.size>4?yt:void 0}function rt(ht,ct,lt){let{id:ut,start:dt,end:pt,size:gt}=b;if(b.next(),gt>=0&&ut<_){let yt=lt;if(gt>4){let ft=b.pos-(gt-4);for(;b.pos>ft;)lt=rt(ht,ct,lt)}ct[--lt]=yt,ct[--lt]=pt-ht,ct[--lt]=dt-ht,ct[--lt]=ut}else gt==-3?$=ut:gt==-4&&(j=ut);return lt}let it=[],at=[];for(;b.pos>0;)_e(o.start||0,o.bufferStart||0,it,at,-1);let ot=(e=o.length)!==null&&e!==void 0?e:it.length?at[0]+it[0].length:0;return new Tree(k[o.topID],it.reverse(),at.reverse(),ot)}const nodeSizeCache=new WeakMap;function nodeSize(o,e){if(!o.isAnonymous||e instanceof TreeBuffer||e.type!=o)return 1;let s=nodeSizeCache.get(e);if(s==null){s=1;for(let a of e.children){if(a.type!=o||!(a instanceof Tree)){s=1;break}s+=nodeSize(o,a)}nodeSizeCache.set(e,s)}return s}function balanceRange(o,e,s,a,c,d,_,b,k){let $=0;for(let nt=a;nt=j)break;lt+=ut}if(ot==ht+1){if(lt>j){let ut=nt[ht];tt(ut.children,ut.positions,0,ut.children.length,st[ht]+at);continue}_e.push(nt[ht])}else{let ut=st[ot-1]+nt[ot-1].length-ct;_e.push(balanceRange(o,nt,st,ht,ot,ct,ut,null,k))}et.push(ct+at-d)}}return tt(e,s,a,c,0),(b||k)(_e,et,_)}class TreeFragment{constructor(e,s,a,c,d=!1,_=!1){this.from=e,this.to=s,this.tree=a,this.offset=c,this.open=(d?1:0)|(_?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,s=[],a=!1){let c=[new TreeFragment(0,e.length,e,0,!1,a)];for(let d of s)d.to>e.length&&c.push(d);return c}static applyChanges(e,s,a=128){if(!s.length)return e;let c=[],d=1,_=e.length?e[0]:null;for(let b=0,k=0,$=0;;b++){let j=b=a)for(;_&&_.from<_e;){let et=_;if(k>=et.from||_e<=et.to||$){let tt=Math.max(et.from,k)-$,nt=Math.min(et.to,_e)-$;et=tt>=nt?null:new TreeFragment(tt,nt,et.tree,et.offset+$,b>0,!!j)}if(et&&c.push(et),_.to>_e)break;_=dnew Range(c.from,c.to)):[new Range(0,0)]:[new Range(0,e.length)],this.createParse(e,s||[],a)}parse(e,s,a){let c=this.startParse(e,s,a);for(;;){let d=c.advance();if(d)return d}}}class StringInput{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,s){return this.string.slice(e,s)}}new NodeProp({perNode:!0});var _a;const languageDataProp=new NodeProp;function defineLanguageFacet(o){return Facet.define({combine:o?e=>e.concat(o):void 0})}class Language{constructor(e,s,a,c=[]){this.data=e,this.topNode=a,EditorState.prototype.hasOwnProperty("tree")||Object.defineProperty(EditorState.prototype,"tree",{get(){return syntaxTree(this)}}),this.parser=s,this.extension=[language.of(this),EditorState.languageData.of((d,_,b)=>d.facet(languageDataFacetAt(d,_,b)))].concat(c)}isActiveAt(e,s,a=-1){return languageDataFacetAt(e,s,a)==this.data}findRegions(e){let s=e.facet(language);if((s==null?void 0:s.data)==this.data)return[{from:0,to:e.doc.length}];if(!s||!s.allowsNesting)return[];let a=[],c=(d,_)=>{if(d.prop(languageDataProp)==this.data){a.push({from:_,to:_+d.length});return}let b=d.prop(NodeProp.mounted);if(b){if(b.tree.prop(languageDataProp)==this.data){if(b.overlay)for(let k of b.overlay)a.push({from:k.from+_,to:k.to+_});else a.push({from:_,to:_+d.length});return}else if(b.overlay){let k=a.length;if(c(b.tree,b.overlay[0].from+_),a.length>k)return}}for(let k=0;ka.isTop?s:void 0)]}))}configure(e){return new LRLanguage(this.data,this.parser.configure(e))}get allowsNesting(){return this.parser.wrappers.length>0}}function syntaxTree(o){let e=o.field(Language.state,!1);return e?e.tree:Tree.empty}class DocInput{constructor(e,s=e.length){this.doc=e,this.length=s,this.cursorPos=0,this.string="",this.cursor=e.iter()}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,s){let a=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,s):this.string.slice(e-a,s-a)}}let currentContext=null;class ParseContext{constructor(e,s,a=[],c,d,_,b,k){this.parser=e,this.state=s,this.fragments=a,this.tree=c,this.treeLen=d,this.viewport=_,this.skipped=b,this.scheduleOn=k,this.parse=null,this.tempSkipped=[]}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(e,s){return s!=null&&s>=this.state.doc.length&&(s=void 0),this.tree!=Tree.empty&&this.isDone(s!=null?s:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var a;if(typeof e=="number"){let c=Date.now()+e;e=()=>Date.now()>c}for(this.parse||(this.parse=this.startParse()),s!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>s)&&s=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(s=this.parse.advance()););}),this.treeLen=e,this.tree=s,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let s=currentContext;currentContext=this;try{return e()}finally{currentContext=s}}withoutTempSkipped(e){for(let s;s=this.tempSkipped.pop();)e=cutFragments(e,s.from,s.to);return e}changes(e,s){let{fragments:a,tree:c,treeLen:d,viewport:_,skipped:b}=this;if(this.takeTree(),!e.empty){let k=[];if(e.iterChangedRanges(($,j,_e,et)=>k.push({fromA:$,toA:j,fromB:_e,toB:et})),a=TreeFragment.applyChanges(a,k),c=Tree.empty,d=0,_={from:e.mapPos(_.from,-1),to:e.mapPos(_.to,1)},this.skipped.length){b=[];for(let $ of this.skipped){let j=e.mapPos($.from,1),_e=e.mapPos($.to,-1);j<_e&&b.push({from:j,to:_e})}}}return new ParseContext(this.parser,s,a,c,d,_,b,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let s=this.skipped.length;for(let a=0;ae.from&&(this.fragments=cutFragments(this.fragments,c,d),this.skipped.splice(a--,1))}return this.skipped.length>=s?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,s){this.skipped.push({from:e,to:s})}static getSkippingParser(e){return new class extends Parser{createParse(s,a,c){let d=c[0].from,_=c[c.length-1].to;return{parsedPos:d,advance(){let k=currentContext;if(k){for(let $ of c)k.tempSkipped.push($);e&&(k.scheduleOn=k.scheduleOn?Promise.all([k.scheduleOn,e]):e)}return this.parsedPos=_,new Tree(NodeType.none,[],[],_-d)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let s=this.fragments;return this.treeLen>=e&&s.length&&s[0].from==0&&s[0].to>=e}static get(){return currentContext}}function cutFragments(o,e,s){return TreeFragment.applyChanges(o,[{fromA:e,toA:s,fromB:e,toB:s}])}class LanguageState{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let s=this.context.changes(e.changes,e.state),a=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),s.viewport.to);return s.work(20,a)||s.takeTree(),new LanguageState(s)}static init(e){let s=Math.min(3e3,e.doc.length),a=new ParseContext(e.facet(language).parser,e,[],Tree.empty,0,{from:0,to:s},[],null);return a.work(20,s)||a.takeTree(),new LanguageState(a)}}Language.state=StateField.define({create:LanguageState.init,update(o,e){for(let s of e.effects)if(s.is(Language.setState))return s.value;return e.startState.facet(language)!=e.state.facet(language)?LanguageState.init(e.state):o.apply(e)}});let requestIdle=o=>{let e=setTimeout(()=>o(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(requestIdle=o=>{let e=-1,s=setTimeout(()=>{e=requestIdleCallback(o,{timeout:500-100})},100);return()=>e<0?clearTimeout(s):cancelIdleCallback(e)});const isInputPending=typeof navigator!="undefined"&&((_a=navigator.scheduling)===null||_a===void 0?void 0:_a.isInputPending)?()=>navigator.scheduling.isInputPending():null,parseWorker=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let s=this.view.state.field(Language.state).context;(s.updateViewport(e.view.viewport)||this.view.viewport.to>s.treeLen)&&this.scheduleWork(),e.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(s)}scheduleWork(){if(this.working)return;let{state:e}=this.view,s=e.field(Language.state);(s.tree!=s.context.tree||!s.context.isDone(e.doc.length))&&(this.working=requestIdle(this.work))}work(e){this.working=null;let s=Date.now();if(this.chunkEndc+1e3,k=d.context.work(()=>isInputPending&&isInputPending()||Date.now()>_,c+(b?0:1e5));this.chunkBudget-=Date.now()-s,(k||this.chunkBudget<=0)&&(d.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(d.context))})),this.chunkBudget>0&&!(k&&!b)&&this.scheduleWork(),this.checkAsyncSchedule(d.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(s=>logException(this.view.state,s)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(o){return o.length?o[0]:null},enables:[Language.state,parseWorker]});class LanguageSupport{constructor(e,s=[]){this.language=e,this.support=s,this.extension=[e,s]}}const indentService=Facet.define(),indentUnit=Facet.define({combine:o=>{if(!o.length)return" ";if(!/^(?: +|\t+)$/.test(o[0]))throw new Error("Invalid indent unit: "+JSON.stringify(o[0]));return o[0]}});function getIndentUnit(o){let e=o.facet(indentUnit);return e.charCodeAt(0)==9?o.tabSize*e.length:e.length}function indentString(o,e){let s="",a=o.tabSize;if(o.facet(indentUnit).charCodeAt(0)==9)for(;e>=a;)s+=" ",e-=a;for(let c=0;c=a.from&&c<=a.to?d&&c==e?{text:"",from:e}:(s<0?c-1&&(d+=_-this.countColumn(a,a.search(/\S|$/))),d}countColumn(e,s=e.length){return countColumn(e,this.state.tabSize,s)}lineIndent(e,s=1){let{text:a,from:c}=this.lineAt(e,s),d=this.options.overrideIndentation;if(d){let _=d(c);if(_>-1)return _}return this.countColumn(a,a.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const indentNodeProp=new NodeProp;function syntaxIndentation(o,e,s){return indentFrom(e.resolveInner(s).enterUnfinishedNodesBefore(s),s,o)}function ignoreClosed(o){return o.pos==o.options.simulateBreak&&o.options.simulateDoubleBreak}function indentStrategy(o){let e=o.type.prop(indentNodeProp);if(e)return e;let s=o.firstChild,a;if(s&&(a=s.type.prop(NodeProp.closedBy))){let c=o.lastChild,d=c&&a.indexOf(c.name)>-1;return _=>delimitedStrategy(_,!0,1,void 0,d&&!ignoreClosed(_)?c.from:void 0)}return o.parent==null?topIndent:null}function indentFrom(o,e,s){for(;o;o=o.parent){let a=indentStrategy(o);if(a)return a(new TreeIndentContext(s,e,o))}return null}function topIndent(){return 0}class TreeIndentContext extends IndentContext{constructor(e,s,a){super(e.state,e.options),this.base=e,this.pos=s,this.node=a}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){let e=this.state.doc.lineAt(this.node.from);for(;;){let s=this.node.resolve(e.from);for(;s.parent&&s.parent.from==s.from;)s=s.parent;if(isParent(s,this.node))break;e=this.state.doc.lineAt(s.from)}return this.lineIndent(e.from)}continue(){let e=this.node.parent;return e?indentFrom(e,this.pos,this.base):0}}function isParent(o,e){for(let s=e;s;s=s.parent)if(o==s)return!0;return!1}function bracketedAligned(o){let e=o.node,s=e.childAfter(e.from),a=e.lastChild;if(!s)return null;let c=o.options.simulateBreak,d=o.state.doc.lineAt(s.from),_=c==null||c<=d.from?d.to:Math.min(d.to,c);for(let b=s.to;;){let k=e.childAfter(b);if(!k||k==a)return null;if(!k.type.isSkipped)return k.from<_?s:null;b=k.to}}function delimitedIndent({closing:o,align:e=!0,units:s=1}){return a=>delimitedStrategy(a,e,s,o)}function delimitedStrategy(o,e,s,a,c){let d=o.textAfter,_=d.match(/^\s*/)[0].length,b=a&&d.slice(_,_+a.length)==a||c==o.pos+_,k=e?bracketedAligned(o):null;return k?b?o.column(k.from):o.column(k.to):o.baseIndent+(b?0:o.unit*s)}const flatIndent=o=>o.baseIndent;function continuedIndent({except:o,units:e=1}={}){return s=>{let a=o&&o.test(s.textAfter);return s.baseIndent+(a?0:e*s.unit)}}const DontIndentBeyond=200;function indentOnInput(){return EditorState.transactionFilter.of(o=>{if(!o.docChanged||!o.isUserEvent("input.type")&&!o.isUserEvent("input.complete"))return o;let e=o.startState.languageDataAt("indentOnInput",o.startState.selection.main.head);if(!e.length)return o;let s=o.newDoc,{head:a}=o.newSelection.main,c=s.lineAt(a);if(a>c.from+DontIndentBeyond)return o;let d=s.sliceString(c.from,a);if(!e.some($=>$.test(d)))return o;let{state:_}=o,b=-1,k=[];for(let{head:$}of _.selection.ranges){let j=_.doc.lineAt($);if(j.from==b)continue;b=j.from;let _e=getIndentation(_,j.from);if(_e==null)continue;let et=/^\s*/.exec(j.text)[0],tt=indentString(_,_e);et!=tt&&k.push({from:j.from,to:j.from+et.length,insert:tt})}return k.length?[o,{changes:k,sequential:!0}]:o})}const foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside$1(o){let e=o.firstChild,s=o.lastChild;return e&&e.tos)continue;if(d&&_.from=e&&k.to>s&&(d=k)}}return d}function isUnfinished(o){let e=o.lastChild;return e&&e.to==o.to&&e.type.isError}function foldable(o,e,s){for(let a of o.facet(foldService)){let c=a(o,e,s);if(c)return c}return syntaxFolding(o,e,s)}class GutterMarker extends RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}GutterMarker.prototype.elementClass="";GutterMarker.prototype.toDOM=void 0;GutterMarker.prototype.mapMode=MapMode.TrackBefore;GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1;GutterMarker.prototype.point=!0;const gutterLineClass=Facet.define(),defaults$1={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>RangeSet.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},activeGutters=Facet.define();function gutter(o){return[gutters(),activeGutters.of(Object.assign(Object.assign({},defaults$1),o))]}const baseTheme$7=EditorView.baseTheme({".cm-gutters":{display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#999",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"}}),unfixGutters=Facet.define({combine:o=>o.some(e=>e)});function gutters(o){let e=[gutterView,baseTheme$7];return o&&o.fixed===!1&&e.push(unfixGutters.of(!0)),e}const gutterView=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.prevViewport=o.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=o.state.facet(activeGutters).map(e=>new SingleGutterView(o,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!o.state.facet(unfixGutters),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),o.scrollDOM.insertBefore(this.dom,o.contentDOM)}update(o){if(this.updateGutters(o)){let e=this.prevViewport,s=o.view.viewport,a=Math.min(e.to,s.to)-Math.max(e.from,s.from);this.syncGutters(a<(s.to-s.from)*.8)}o.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(unfixGutters)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=o.view.viewport}syncGutters(o){let e=this.dom.nextSibling;o&&this.dom.remove();let s=RangeSet.iter(this.view.state.facet(gutterLineClass),this.view.viewport.from),a=[],c=this.gutters.map(d=>new UpdateContext(d,this.view.viewport,-this.view.documentPadding.top));for(let d of this.view.viewportLineBlocks){let _;if(Array.isArray(d.type)){for(let b of d.type)if(b.type==BlockType.Text){_=b;break}}else _=d.type==BlockType.Text?d:void 0;if(!!_){a.length&&(a=[]),advanceCursor(s,a,d.from);for(let b of c)b.line(this.view,_,a)}}for(let d of c)d.finish();o&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(o){let e=o.startState.facet(activeGutters),s=o.state.facet(activeGutters),a=o.docChanged||o.heightChanged||o.viewportChanged||!RangeSet.eq(o.startState.facet(gutterLineClass),o.state.facet(gutterLineClass),o.view.viewport.from,o.view.viewport.to);if(e==s)for(let c of this.gutters)c.update(o)&&(a=!0);else{a=!0;let c=[];for(let d of s){let _=e.indexOf(d);_<0?c.push(new SingleGutterView(this.view,d)):(this.gutters[_].update(o),c.push(this.gutters[_]))}for(let d of this.gutters)d.dom.remove(),c.indexOf(d)<0&&d.destroy();for(let d of c)this.dom.appendChild(d.dom);this.gutters=c}return a}destroy(){for(let o of this.gutters)o.destroy();this.dom.remove()}},{provide:PluginField.scrollMargins.from(o=>o.gutters.length==0||!o.fixed?null:o.view.textDirection==Direction.LTR?{left:o.dom.offsetWidth}:{right:o.dom.offsetWidth})});function asArray(o){return Array.isArray(o)?o:[o]}function advanceCursor(o,e,s){for(;o.value&&o.from<=s;)o.from==s&&e.push(o.value),o.next()}class UpdateContext{constructor(e,s,a){this.gutter=e,this.height=a,this.localMarkers=[],this.i=0,this.cursor=RangeSet.iter(e.markers,s.from)}line(e,s,a){this.localMarkers.length&&(this.localMarkers=[]),advanceCursor(this.cursor,this.localMarkers,s.from);let c=a.length?this.localMarkers.concat(a):this.localMarkers,d=this.gutter.config.lineMarker(e,s,c);d&&c.unshift(d);let _=this.gutter;if(c.length==0&&!_.config.renderEmptyElements)return;let b=s.top-this.height;if(this.i==_.elements.length){let k=new GutterElement(e,s.height,b,c);_.elements.push(k),_.dom.appendChild(k.dom)}else _.elements[this.i].update(e,s.height,b,c);this.height=s.bottom,this.i++}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let s=e.elements.pop();e.dom.removeChild(s.dom),s.destroy()}}}class SingleGutterView{constructor(e,s){this.view=e,this.config=s,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let a in s.domEventHandlers)this.dom.addEventListener(a,c=>{let d=e.lineBlockAtHeight(c.clientY-e.documentTop);s.domEventHandlers[a](e,d,c)&&c.preventDefault()});this.markers=asArray(s.markers(e)),s.initialSpacer&&(this.spacer=new GutterElement(e,0,0,[s.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let s=this.markers;if(this.markers=asArray(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let c=this.config.updateSpacer(this.spacer.markers[0],e);c!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[c])}let a=e.view.viewport;return!RangeSet.eq(this.markers,s,a.from,a.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class GutterElement{constructor(e,s,a,c){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.update(e,s,a,c)}update(e,s,a,c){this.height!=s&&(this.dom.style.height=(this.height=s)+"px"),this.above!=a&&(this.dom.style.marginTop=(this.above=a)?a+"px":""),sameMarkers(this.markers,c)||this.setMarkers(e,c)}setMarkers(e,s){let a="cm-gutterElement",c=this.dom.firstChild;for(let d=0,_=0;;){let b=_,k=dd(b,k,$)||_(b,k,$):_}return a}})}});class NumberMarker extends GutterMarker{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function formatNumber(o,e){return o.state.facet(lineNumberConfig).formatNumber(e,o.state)}const lineNumberGutter=activeGutters.compute([lineNumberConfig],o=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(lineNumberMarkers)},lineMarker(e,s,a){return a.some(c=>c.toDOM)?null:new NumberMarker(formatNumber(e,e.state.doc.lineAt(s.from).number))},lineMarkerChange:e=>e.startState.facet(lineNumberConfig)!=e.state.facet(lineNumberConfig),initialSpacer(e){return new NumberMarker(formatNumber(e,maxLineNumber(e.state.doc.lines)))},updateSpacer(e,s){let a=formatNumber(s.view,maxLineNumber(s.view.state.doc.lines));return a==e.number?e:new NumberMarker(a)},domEventHandlers:o.facet(lineNumberConfig).domEventHandlers}));function lineNumbers(o={}){return[lineNumberConfig.of(o),gutters(),lineNumberGutter]}function maxLineNumber(o){let e=9;for(;e{let e=[],s=-1;for(let a of o.selection.ranges)if(a.empty){let c=o.doc.lineAt(a.head).from;c>s&&(s=c,e.push(activeLineGutterMarker.range(c)))}return RangeSet.of(e)});function highlightActiveLineGutter(){return activeLineGutterHighlighter}function mapRange(o,e){let s=e.mapPos(o.from,1),a=e.mapPos(o.to,-1);return s>=a?void 0:{from:s,to:a}}const foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(o){let e=[];for(let{head:s}of o.state.selection.ranges)e.some(a=>a.from<=s&&a.to>=s)||e.push(o.lineBlockAt(s));return e}const foldState=StateField.define({create(){return Decoration.none},update(o,e){o=o.map(e.changes);for(let s of e.effects)s.is(foldEffect)&&!foldExists(o,s.value.from,s.value.to)?o=o.update({add:[foldWidget.range(s.value.from,s.value.to)]}):s.is(unfoldEffect)&&(o=o.update({filter:(a,c)=>s.value.from!=a||s.value.to!=c,filterFrom:s.value.from,filterTo:s.value.to}));if(e.selection){let s=!1,{head:a}=e.selection.main;o.between(a,a,(c,d)=>{ca&&(s=!0)}),s&&(o=o.update({filterFrom:a,filterTo:a,filter:(c,d)=>d<=a||c>=a}))}return o},provide:o=>EditorView.decorations.from(o)});function foldInside(o,e,s){var a;let c=null;return(a=o.field(foldState,!1))===null||a===void 0||a.between(e,s,(d,_)=>{(!c||c.from>d)&&(c={from:d,to:_})}),c}function foldExists(o,e,s){let a=!1;return o.between(e,e,(c,d)=>{c==e&&d==s&&(a=!0)}),a}function maybeEnable(o,e){return o.field(foldState,!1)?e:e.concat(StateEffect.appendConfig.of(codeFolding()))}const foldCode=o=>{for(let e of selectedLines(o)){let s=foldable(o.state,e.from,e.to);if(s)return o.dispatch({effects:maybeEnable(o.state,[foldEffect.of(s),announceFold(o,s)])}),!0}return!1},unfoldCode=o=>{if(!o.state.field(foldState,!1))return!1;let e=[];for(let s of selectedLines(o)){let a=foldInside(o.state,s.from,s.to);a&&e.push(unfoldEffect.of(a),announceFold(o,a,!1))}return e.length&&o.dispatch({effects:e}),e.length>0};function announceFold(o,e,s=!0){let a=o.state.doc.lineAt(e.from).number,c=o.state.doc.lineAt(e.to).number;return EditorView.announce.of(`${o.state.phrase(s?"Folded lines":"Unfolded lines")} ${a} ${o.state.phrase("to")} ${c}.`)}const foldAll=o=>{let{state:e}=o,s=[];for(let a=0;a{let e=o.state.field(foldState,!1);if(!e||!e.size)return!1;let s=[];return e.between(0,o.state.doc.length,(a,c)=>{s.push(unfoldEffect.of({from:a,to:c}))}),o.dispatch({effects:s}),!0},foldKeymap=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:foldCode},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:unfoldCode},{key:"Ctrl-Alt-[",run:foldAll},{key:"Ctrl-Alt-]",run:unfoldAll}],defaultConfig={placeholderDOM:null,placeholderText:"\u2026"},foldConfig=Facet.define({combine(o){return combineConfig(o,defaultConfig)}});function codeFolding(o){let e=[foldState,baseTheme$6];return o&&e.push(foldConfig.of(o)),e}const foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(o){let{state:e}=o,s=e.facet(foldConfig),a=d=>{let _=o.lineBlockAt(o.posAtDOM(d.target)),b=foldInside(o.state,_.from,_.to);b&&o.dispatch({effects:unfoldEffect.of(b)}),d.preventDefault()};if(s.placeholderDOM)return s.placeholderDOM(o,a);let c=document.createElement("span");return c.textContent=s.placeholderText,c.setAttribute("aria-label",e.phrase("folded code")),c.title=e.phrase("unfold"),c.className="cm-foldPlaceholder",c.onclick=a,c}}}),foldGutterDefaults={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{}};class FoldMarker extends GutterMarker{constructor(e,s){super(),this.config=e,this.open=s}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let s=document.createElement("span");return s.textContent=this.open?this.config.openText:this.config.closedText,s.title=e.state.phrase(this.open?"Fold line":"Unfold line"),s}}function foldGutter(o={}){let e=Object.assign(Object.assign({},foldGutterDefaults),o),s=new FoldMarker(e,!0),a=new FoldMarker(e,!1),c=ViewPlugin.fromClass(class{constructor(_){this.from=_.viewport.from,this.markers=this.buildMarkers(_)}update(_){(_.docChanged||_.viewportChanged||_.startState.facet(language)!=_.state.facet(language)||_.startState.field(foldState,!1)!=_.state.field(foldState,!1)||syntaxTree(_.startState)!=syntaxTree(_.state))&&(this.markers=this.buildMarkers(_.view))}buildMarkers(_){let b=new RangeSetBuilder;for(let k of _.viewportLineBlocks){let $=foldInside(_.state,k.from,k.to)?a:foldable(_.state,k.from,k.to)?s:null;$&&b.add(k.from,k.from,$)}return b.finish()}}),{domEventHandlers:d}=e;return[c,gutter({class:"cm-foldGutter",markers(_){var b;return((b=_.plugin(c))===null||b===void 0?void 0:b.markers)||RangeSet.empty},initialSpacer(){return new FoldMarker(e,!1)},domEventHandlers:Object.assign(Object.assign({},d),{click:(_,b,k)=>{if(d.click&&d.click(_,b,k))return!0;let $=foldInside(_.state,b.from,b.to);if($)return _.dispatch({effects:unfoldEffect.of($)}),!0;let j=foldable(_.state,b.from,b.to);return j?(_.dispatch({effects:foldEffect.of(j)}),!0):!1}})}),codeFolding()]}const baseTheme$6=EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),baseTheme$5=EditorView.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),DefaultScanDist=1e4,DefaultBrackets="()[]{}",bracketMatchingConfig=Facet.define({combine(o){return combineConfig(o,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist})}}),matchingMark=Decoration.mark({class:"cm-matchingBracket"}),nonmatchingMark=Decoration.mark({class:"cm-nonmatchingBracket"}),bracketMatchingState=StateField.define({create(){return Decoration.none},update(o,e){if(!e.docChanged&&!e.selection)return o;let s=[],a=e.state.facet(bracketMatchingConfig);for(let c of e.state.selection.ranges){if(!c.empty)continue;let d=matchBrackets(e.state,c.head,-1,a)||c.head>0&&matchBrackets(e.state,c.head-1,1,a)||a.afterCursor&&(matchBrackets(e.state,c.head,1,a)||c.headEditorView.decorations.from(o)}),bracketMatchingUnique=[bracketMatchingState,baseTheme$5];function bracketMatching(o={}){return[bracketMatchingConfig.of(o),bracketMatchingUnique]}function matchingNodes(o,e,s){let a=o.prop(e<0?NodeProp.openedBy:NodeProp.closedBy);if(a)return a;if(o.name.length==1){let c=s.indexOf(o.name);if(c>-1&&c%2==(e<0?1:0))return[s[c+e]]}return null}function matchBrackets(o,e,s,a={}){let c=a.maxScanDistance||DefaultScanDist,d=a.brackets||DefaultBrackets,_=syntaxTree(o),b=_.resolveInner(e,s);for(let k=b;k;k=k.parent){let $=matchingNodes(k.type,s,d);if($&&k.from=a.to){if(k==0&&c.indexOf($.type.name)>-1&&$.from<$.to)return{start:b,end:{from:$.from,to:$.to},matched:!0};if(matchingNodes($.type,s,d))k++;else if(matchingNodes($.type,-s,d)&&(k--,k==0))return{start:b,end:$.from==$.to?void 0:{from:$.from,to:$.to},matched:!1}}while(s<0?$.prevSibling():$.nextSibling());return{start:b,matched:!1}}function matchPlainBrackets(o,e,s,a,c,d,_){let b=s<0?o.sliceDoc(e-1,e):o.sliceDoc(e,e+1),k=_.indexOf(b);if(k<0||k%2==0!=s>0)return null;let $={from:s<0?e-1:e,to:s>0?e+1:e},j=o.doc.iterRange(e,s>0?o.doc.length:0),_e=0;for(let et=0;!j.next().done&&et<=d;){let tt=j.value;s<0&&(et+=tt.length);let nt=e+et*s;for(let st=s>0?0:tt.length-1,rt=s>0?tt.length:-1;st!=rt;st+=s){let it=_.indexOf(tt[st]);if(!(it<0||a.resolve(nt+st,1).type!=c))if(it%2==0==s>0)_e++;else{if(_e==1)return{start:$,end:{from:nt+st,to:nt+st+1},matched:it>>1==k>>1};_e--}}s>0&&(et+=tt.length)}return j.done?{start:$,matched:!1}:null}function updateSel(o,e){return EditorSelection.create(o.ranges.map(e),o.mainIndex)}function setSel(o,e){return o.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function moveSel({state:o,dispatch:e},s){let a=updateSel(o.selection,s);return a.eq(o.selection)?!1:(e(setSel(o,a)),!0)}function rangeEnd(o,e){return EditorSelection.cursor(e?o.to:o.from)}function cursorByChar(o,e){return moveSel(o,s=>s.empty?o.moveByChar(s,e):rangeEnd(s,e))}const cursorCharLeft=o=>cursorByChar(o,o.textDirection!=Direction.LTR),cursorCharRight=o=>cursorByChar(o,o.textDirection==Direction.LTR);function cursorByGroup(o,e){return moveSel(o,s=>s.empty?o.moveByGroup(s,e):rangeEnd(s,e))}const cursorGroupLeft=o=>cursorByGroup(o,o.textDirection!=Direction.LTR),cursorGroupRight=o=>cursorByGroup(o,o.textDirection==Direction.LTR);function interestingNode(o,e,s){if(e.type.prop(s))return!0;let a=e.to-e.from;return a&&(a>2||/[^\s,.;:]/.test(o.sliceDoc(e.from,e.to)))||e.firstChild}function moveBySyntax(o,e,s){let a=syntaxTree(o).resolveInner(e.head),c=s?NodeProp.closedBy:NodeProp.openedBy;for(let k=e.head;;){let $=s?a.childAfter(k):a.childBefore(k);if(!$)break;interestingNode(o,$,c)?a=$:k=s?$.to:$.from}let d=a.type.prop(c),_,b;return d&&(_=s?matchBrackets(o,a.from,1):matchBrackets(o,a.to,-1))&&_.matched?b=s?_.end.to:_.end.from:b=s?a.to:a.from,EditorSelection.cursor(b,s?-1:1)}const cursorSyntaxLeft=o=>moveSel(o,e=>moveBySyntax(o.state,e,o.textDirection!=Direction.LTR)),cursorSyntaxRight=o=>moveSel(o,e=>moveBySyntax(o.state,e,o.textDirection==Direction.LTR));function cursorByLine(o,e){return moveSel(o,s=>{if(!s.empty)return rangeEnd(s,e);let a=o.moveVertically(s,e);return a.head!=s.head?a:o.moveToLineBoundary(s,e)})}const cursorLineUp=o=>cursorByLine(o,!1),cursorLineDown=o=>cursorByLine(o,!0);function cursorByPage(o,e){let{state:s}=o,a=updateSel(s.selection,_=>_.empty?o.moveVertically(_,e,o.dom.clientHeight):rangeEnd(_,e));if(a.eq(s.selection))return!1;let c=o.coordsAtPos(s.selection.main.head),d=o.scrollDOM.getBoundingClientRect();return o.dispatch(setSel(s,a),{effects:c&&c.top>d.top&&c.bottomcursorByPage(o,!1),cursorPageDown=o=>cursorByPage(o,!0);function moveByLineBoundary(o,e,s){let a=o.lineBlockAt(e.head),c=o.moveToLineBoundary(e,s);if(c.head==e.head&&c.head!=(s?a.to:a.from)&&(c=o.moveToLineBoundary(e,s,!1)),!s&&c.head==a.from&&a.length){let d=/^\s*/.exec(o.state.sliceDoc(a.from,Math.min(a.from+100,a.to)))[0].length;d&&e.head!=a.from+d&&(c=EditorSelection.cursor(a.from+d))}return c}const cursorLineBoundaryForward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!0)),cursorLineBoundaryBackward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!1)),cursorLineStart=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from,1)),cursorLineEnd=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to,-1));function toMatchingBracket(o,e,s){let a=!1,c=updateSel(o.selection,d=>{let _=matchBrackets(o,d.head,-1)||matchBrackets(o,d.head,1)||d.head>0&&matchBrackets(o,d.head-1,1)||d.headtoMatchingBracket(o,e,!1);function extendSel(o,e){let s=updateSel(o.state.selection,a=>{let c=e(a);return EditorSelection.range(a.anchor,c.head,c.goalColumn)});return s.eq(o.state.selection)?!1:(o.dispatch(setSel(o.state,s)),!0)}function selectByChar(o,e){return extendSel(o,s=>o.moveByChar(s,e))}const selectCharLeft=o=>selectByChar(o,o.textDirection!=Direction.LTR),selectCharRight=o=>selectByChar(o,o.textDirection==Direction.LTR);function selectByGroup(o,e){return extendSel(o,s=>o.moveByGroup(s,e))}const selectGroupLeft=o=>selectByGroup(o,o.textDirection!=Direction.LTR),selectGroupRight=o=>selectByGroup(o,o.textDirection==Direction.LTR),selectSyntaxLeft=o=>extendSel(o,e=>moveBySyntax(o.state,e,o.textDirection!=Direction.LTR)),selectSyntaxRight=o=>extendSel(o,e=>moveBySyntax(o.state,e,o.textDirection==Direction.LTR));function selectByLine(o,e){return extendSel(o,s=>o.moveVertically(s,e))}const selectLineUp=o=>selectByLine(o,!1),selectLineDown=o=>selectByLine(o,!0);function selectByPage(o,e){return extendSel(o,s=>o.moveVertically(s,e,o.dom.clientHeight))}const selectPageUp=o=>selectByPage(o,!1),selectPageDown=o=>selectByPage(o,!0),selectLineBoundaryForward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!0)),selectLineBoundaryBackward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!1)),selectLineStart=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from)),selectLineEnd=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to)),cursorDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:0})),!0),cursorDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.doc.length})),!0),selectDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:0})),!0),selectDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:o.doc.length})),!0),selectAll=({state:o,dispatch:e})=>(e(o.update({selection:{anchor:0,head:o.doc.length},userEvent:"select"})),!0),selectLine=({state:o,dispatch:e})=>{let s=selectedLineBlocks(o).map(({from:a,to:c})=>EditorSelection.range(a,Math.min(c+1,o.doc.length)));return e(o.update({selection:EditorSelection.create(s),userEvent:"select"})),!0},selectParentSyntax=({state:o,dispatch:e})=>{let s=updateSel(o.selection,a=>{var c;let d=syntaxTree(o).resolveInner(a.head,1);for(;!(d.from=a.to||d.to>a.to&&d.from<=a.from||!(!((c=d.parent)===null||c===void 0)&&c.parent));)d=d.parent;return EditorSelection.range(d.to,d.from)});return e(setSel(o,s)),!0},simplifySelection=({state:o,dispatch:e})=>{let s=o.selection,a=null;return s.ranges.length>1?a=EditorSelection.create([s.main]):s.main.empty||(a=EditorSelection.create([EditorSelection.cursor(s.main.head)])),a?(e(setSel(o,a)),!0):!1};function deleteBy({state:o,dispatch:e},s){if(o.readOnly)return!1;let a="delete.selection",c=o.changeByRange(d=>{let{from:_,to:b}=d;if(_==b){let k=s(_);k<_?a="delete.backward":k>_&&(a="delete.forward"),_=Math.min(_,k),b=Math.max(b,k)}return _==b?{range:d}:{changes:{from:_,to:b},range:EditorSelection.cursor(_)}});return c.changes.empty?!1:(e(o.update(c,{scrollIntoView:!0,userEvent:a})),!0)}function skipAtomic(o,e,s){if(o instanceof EditorView)for(let a of o.pluginField(PluginField.atomicRanges))a.between(e,e,(c,d)=>{ce&&(e=s?d:c)});return e}const deleteByChar=(o,e)=>deleteBy(o,s=>{let{state:a}=o,c=a.doc.lineAt(s),d,_;if(!e&&s>c.from&&sdeleteByChar(o,!1),deleteCharForward=o=>deleteByChar(o,!0),deleteByGroup=(o,e)=>deleteBy(o,s=>{let a=s,{state:c}=o,d=c.doc.lineAt(a),_=c.charCategorizer(a);for(let b=null;;){if(a==(e?d.to:d.from)){a==s&&d.number!=(e?c.doc.lines:1)&&(a+=e?1:-1);break}let k=findClusterBreak(d.text,a-d.from,e)+d.from,$=d.text.slice(Math.min(a,k)-d.from,Math.max(a,k)-d.from),j=_($);if(b!=null&&j!=b)break;($!=" "||a!=s)&&(b=j),a=k}return skipAtomic(o,a,e)}),deleteGroupBackward=o=>deleteByGroup(o,!1),deleteGroupForward=o=>deleteByGroup(o,!0),deleteToLineEnd=o=>deleteBy(o,e=>{let s=o.lineBlockAt(e).to;return skipAtomic(o,edeleteBy(o,e=>{let s=o.lineBlockAt(e).from;return skipAtomic(o,e>s?s:Math.max(0,e-1),!1)}),splitLine=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>({changes:{from:a.from,to:a.to,insert:Text.of(["",""])},range:EditorSelection.cursor(a.from)}));return e(o.update(s,{scrollIntoView:!0,userEvent:"input"})),!0},transposeChars=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>{if(!a.empty||a.from==0||a.from==o.doc.length)return{range:a};let c=a.from,d=o.doc.lineAt(c),_=c==d.from?c-1:findClusterBreak(d.text,c-d.from,!1)+d.from,b=c==d.to?c+1:findClusterBreak(d.text,c-d.from,!0)+d.from;return{changes:{from:_,to:b,insert:o.doc.slice(c,b).append(o.doc.slice(_,c))},range:EditorSelection.cursor(b)}});return s.changes.empty?!1:(e(o.update(s,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function selectedLineBlocks(o){let e=[],s=-1;for(let a of o.selection.ranges){let c=o.doc.lineAt(a.from),d=o.doc.lineAt(a.to);if(!a.empty&&a.to==d.from&&(d=o.doc.lineAt(a.to-1)),s>=c.number){let _=e[e.length-1];_.to=d.to,_.ranges.push(a)}else e.push({from:c.from,to:d.to,ranges:[a]});s=d.number+1}return e}function moveLine(o,e,s){if(o.readOnly)return!1;let a=[],c=[];for(let d of selectedLineBlocks(o)){if(s?d.to==o.doc.length:d.from==0)continue;let _=o.doc.lineAt(s?d.to+1:d.from-1),b=_.length+1;if(s){a.push({from:d.to,to:_.to},{from:d.from,insert:_.text+o.lineBreak});for(let k of d.ranges)c.push(EditorSelection.range(Math.min(o.doc.length,k.anchor+b),Math.min(o.doc.length,k.head+b)))}else{a.push({from:_.from,to:d.from},{from:d.to,insert:o.lineBreak+_.text});for(let k of d.ranges)c.push(EditorSelection.range(k.anchor-b,k.head-b))}}return a.length?(e(o.update({changes:a,scrollIntoView:!0,selection:EditorSelection.create(c,o.selection.mainIndex),userEvent:"move.line"})),!0):!1}const moveLineUp=({state:o,dispatch:e})=>moveLine(o,e,!1),moveLineDown=({state:o,dispatch:e})=>moveLine(o,e,!0);function copyLine(o,e,s){if(o.readOnly)return!1;let a=[];for(let c of selectedLineBlocks(o))s?a.push({from:c.from,insert:o.doc.slice(c.from,c.to)+o.lineBreak}):a.push({from:c.to,insert:o.lineBreak+o.doc.slice(c.from,c.to)});return e(o.update({changes:a,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const copyLineUp=({state:o,dispatch:e})=>copyLine(o,e,!1),copyLineDown=({state:o,dispatch:e})=>copyLine(o,e,!0),deleteLine=o=>{if(o.state.readOnly)return!1;let{state:e}=o,s=e.changes(selectedLineBlocks(e).map(({from:c,to:d})=>(c>0?c--:do.moveVertically(c,!0)).map(s);return o.dispatch({changes:s,selection:a,scrollIntoView:!0,userEvent:"delete.line"}),!0};function isBetweenBrackets(o,e){if(/\(\)|\[\]|\{\}/.test(o.sliceDoc(e-1,e+1)))return{from:e,to:e};let s=syntaxTree(o).resolveInner(e),a=s.childBefore(e),c=s.childAfter(e),d;return a&&c&&a.to<=e&&c.from>=e&&(d=a.type.prop(NodeProp.closedBy))&&d.indexOf(c.name)>-1&&o.doc.lineAt(a.to).from==o.doc.lineAt(c.from).from?{from:a.to,to:c.from}:null}const insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0);function newlineAndIndent(o){return({state:e,dispatch:s})=>{if(e.readOnly)return!1;let a=e.changeByRange(c=>{let{from:d,to:_}=c,b=e.doc.lineAt(d),k=!o&&d==_&&isBetweenBrackets(e,d);o&&(d=_=(_<=b.to?b:e.doc.lineAt(_)).to);let $=new IndentContext(e,{simulateBreak:d,simulateDoubleBreak:!!k}),j=getIndentation($,d);for(j==null&&(j=/^\s*/.exec(e.doc.lineAt(d).text)[0].length);_b.from&&d{let c=[];for(let _=a.from;_<=a.to;){let b=o.doc.lineAt(_);b.number>s&&(a.empty||a.to>b.from)&&(e(b,c,a),s=b.number),_=b.to+1}let d=o.changes(c);return{changes:c,range:EditorSelection.range(d.mapPos(a.anchor,1),d.mapPos(a.head,1))}})}const indentSelection=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=Object.create(null),a=new IndentContext(o,{overrideIndentation:d=>{let _=s[d];return _==null?-1:_}}),c=changeBySelectedLine(o,(d,_,b)=>{let k=getIndentation(a,d.from);if(k==null)return;/\S/.test(d.text)||(k=0);let $=/^\s*/.exec(d.text)[0],j=indentString(o,k);($!=j||b.fromo.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{a.push({from:s.from,insert:o.facet(indentUnit)})}),{userEvent:"input.indent"})),!0),indentLess=({state:o,dispatch:e})=>o.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{let c=/^\s*/.exec(s.text)[0];if(!c)return;let d=countColumn(c,o.tabSize),_=0,b=indentString(o,Math.max(0,d-getIndentUnit(o)));for(;_({mac:o.key,run:o.run,shift:o.shift}))),defaultKeymap=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:"Alt-ArrowUp",run:moveLineUp},{key:"Shift-Alt-ArrowUp",run:copyLineUp},{key:"Alt-ArrowDown",run:moveLineDown},{key:"Shift-Alt-ArrowDown",run:copyLineDown},{key:"Escape",run:simplifySelection},{key:"Mod-Enter",run:insertBlankLine},{key:"Alt-l",mac:"Ctrl-l",run:selectLine},{key:"Mod-i",run:selectParentSyntax,preventDefault:!0},{key:"Mod-[",run:indentLess},{key:"Mod-]",run:indentMore},{key:"Mod-Alt-\\",run:indentSelection},{key:"Shift-Mod-k",run:deleteLine},{key:"Shift-Mod-\\",run:cursorMatchingBracket}].concat(standardKeymap),defaults={brackets:["(","[","{","'",'"'],before:")]}:;>"},closeBracketEffect=StateEffect.define({map(o,e){let s=e.mapPos(o,-1,MapMode.TrackAfter);return s==null?void 0:s}}),skipBracketEffect=StateEffect.define({map(o,e){return e.mapPos(o)}}),closedBracket=new class extends RangeValue{};closedBracket.startSide=1;closedBracket.endSide=-1;const bracketState=StateField.define({create(){return RangeSet.empty},update(o,e){if(e.selection){let s=e.state.doc.lineAt(e.selection.main.head).from,a=e.startState.doc.lineAt(e.startState.selection.main.head).from;s!=e.changes.mapPos(a,-1)&&(o=RangeSet.empty)}o=o.map(e.changes);for(let s of e.effects)s.is(closeBracketEffect)?o=o.update({add:[closedBracket.range(s.value,s.value+1)]}):s.is(skipBracketEffect)&&(o=o.update({filter:a=>a!=s.value}));return o}});function closeBrackets(){return[inputHandler,bracketState]}const definedClosing="()[]{}<>";function closing(o){for(let e=0;e{if((android?o.composing:o.compositionStarted)||o.state.readOnly)return!1;let c=o.state.selection.main;if(a.length>2||a.length==2&&codePointSize(codePointAt(a,0))==1||e!=c.from||s!=c.to)return!1;let d=insertBracket(o.state,a);return d?(o.dispatch(d),!0):!1}),deleteBracketPair=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let a=config(o,o.selection.main.head).brackets||defaults.brackets,c=null,d=o.changeByRange(_=>{if(_.empty){let b=prevChar(o.doc,_.head);for(let k of a)if(k==b&&nextChar(o.doc,_.head)==closing(codePointAt(k,0)))return{changes:{from:_.head-k.length,to:_.head+k.length},range:EditorSelection.cursor(_.head-k.length),userEvent:"delete.backward"}}return{range:c=_}});return c||e(o.update(d,{scrollIntoView:!0})),!c},closeBracketsKeymap=[{key:"Backspace",run:deleteBracketPair}];function insertBracket(o,e){let s=config(o,o.selection.main.head),a=s.brackets||defaults.brackets;for(let c of a){let d=closing(codePointAt(c,0));if(e==c)return d==c?handleSame(o,c,a.indexOf(c+c+c)>-1):handleOpen(o,c,d,s.before||defaults.before);if(e==d&&closedBracketAt(o,o.selection.main.from))return handleClose(o,c,d)}return null}function closedBracketAt(o,e){let s=!1;return o.field(bracketState).between(0,o.doc.length,a=>{a==e&&(s=!0)}),s}function nextChar(o,e){let s=o.sliceString(e,e+2);return s.slice(0,codePointSize(codePointAt(s,0)))}function prevChar(o,e){let s=o.sliceString(e-2,e);return codePointSize(codePointAt(s,0))==s.length?s:s.slice(1)}function handleOpen(o,e,s,a){let c=null,d=o.changeByRange(_=>{if(!_.empty)return{changes:[{insert:e,from:_.from},{insert:s,from:_.to}],effects:closeBracketEffect.of(_.to+e.length),range:EditorSelection.range(_.anchor+e.length,_.head+e.length)};let b=nextChar(o.doc,_.head);return!b||/\s/.test(b)||a.indexOf(b)>-1?{changes:{insert:e+s,from:_.head},effects:closeBracketEffect.of(_.head+e.length),range:EditorSelection.cursor(_.head+e.length)}:{range:c=_}});return c?null:o.update(d,{scrollIntoView:!0,userEvent:"input.type"})}function handleClose(o,e,s){let a=null,c=o.selection.ranges.map(d=>d.empty&&nextChar(o.doc,d.head)==s?EditorSelection.cursor(d.head+s.length):a=d);return a?null:o.update({selection:EditorSelection.create(c,o.selection.mainIndex),scrollIntoView:!0,effects:o.selection.ranges.map(({from:d})=>skipBracketEffect.of(d))})}function handleSame(o,e,s){let a=null,c=o.changeByRange(d=>{if(!d.empty)return{changes:[{insert:e,from:d.from},{insert:e,from:d.to}],effects:closeBracketEffect.of(d.to+e.length),range:EditorSelection.range(d.anchor+e.length,d.head+e.length)};let _=d.head,b=nextChar(o.doc,_);if(b==e){if(nodeStart(o,_))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(closedBracketAt(o,_)){let k=s&&o.sliceDoc(_,_+e.length*3)==e+e+e;return{range:EditorSelection.cursor(_+e.length*(k?3:1)),effects:skipBracketEffect.of(_)}}}else{if(s&&o.sliceDoc(_-2*e.length,_)==e+e&&nodeStart(o,_-2*e.length))return{changes:{insert:e+e+e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(o.charCategorizer(_)(b)!=CharCategory.Word){let k=o.sliceDoc(_-1,_);if(k!=e&&o.charCategorizer(_)(k)!=CharCategory.Word&&!probablyInString(o,_,e))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)}}}return{range:a=d}});return a?null:o.update(c,{scrollIntoView:!0,userEvent:"input.type"})}function nodeStart(o,e){let s=syntaxTree(o).resolveInner(e+1);return s.parent&&s.from==e}function probablyInString(o,e,s){let a=syntaxTree(o).resolveInner(e,-1);for(let c=0;c<5;c++){if(o.sliceDoc(a.from,a.from+s.length)==s)return!0;let d=a.to==e&&a.parent;if(!d)break;a=d}return!1}const panelConfig=Facet.define({combine(o){let e,s;for(let a of o)e=e||a.topContainer,s=s||a.bottomContainer;return{topContainer:e,bottomContainer:s}}});function getPanel(o,e){let s=o.plugin(panelPlugin),a=s?s.specs.indexOf(e):-1;return a>-1?s.panels[a]:null}const panelPlugin=ViewPlugin.fromClass(class{constructor(o){this.input=o.state.facet(showPanel),this.specs=this.input.filter(s=>s),this.panels=this.specs.map(s=>s(o));let e=o.state.facet(panelConfig);this.top=new PanelGroup(o,!0,e.topContainer),this.bottom=new PanelGroup(o,!1,e.bottomContainer),this.top.sync(this.panels.filter(s=>s.top)),this.bottom.sync(this.panels.filter(s=>!s.top));for(let s of this.panels)s.dom.classList.add("cm-panel"),s.mount&&s.mount()}update(o){let e=o.state.facet(panelConfig);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new PanelGroup(o.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new PanelGroup(o.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let s=o.state.facet(showPanel);if(s!=this.input){let a=s.filter(k=>k),c=[],d=[],_=[],b=[];for(let k of a){let $=this.specs.indexOf(k),j;$<0?(j=k(o.view),b.push(j)):(j=this.panels[$],j.update&&j.update(o)),c.push(j),(j.top?d:_).push(j)}this.specs=a,this.panels=c,this.top.sync(d),this.bottom.sync(_);for(let k of b)k.dom.classList.add("cm-panel"),k.mount&&k.mount()}else for(let a of this.panels)a.update&&a.update(o)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:PluginField.scrollMargins.from(o=>({top:o.top.scrollMargin(),bottom:o.bottom.scrollMargin()}))});class PanelGroup{constructor(e,s,a){this.view=e,this.top=s,this.container=a,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let s of this.panels)s.destroy&&e.indexOf(s)<0&&s.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let s=this.container||this.view.dom;s.insertBefore(this.dom,this.top?s.firstChild:null)}let e=this.dom.firstChild;for(let s of this.panels)if(s.dom.parentNode==this.dom){for(;e!=s.dom;)e=rm(e);e=e.nextSibling}else this.dom.insertBefore(s.dom,e);for(;e;)e=rm(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function rm(o){let e=o.nextSibling;return o.remove(),e}const baseTheme$4=EditorView.baseTheme({".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"}}),showPanel=Facet.define({enables:[panelPlugin,baseTheme$4]});function crelt(){var o=arguments[0];typeof o=="string"&&(o=document.createElement(o));var e=1,s=arguments[1];if(s&&typeof s=="object"&&s.nodeType==null&&!Array.isArray(s)){for(var a in s)if(Object.prototype.hasOwnProperty.call(s,a)){var c=s[a];typeof c=="string"?o.setAttribute(a,c):c!=null&&(o[a]=c)}e++}for(;eo.normalize("NFKD"):o=>o;class SearchCursor{constructor(e,s,a=0,c=e.length,d){this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(a,c),this.bufferStart=a,this.normalize=d?_=>d(basicNormalize(_)):basicNormalize,this.query=this.normalize(s)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let s=fromCodePoint(e),a=this.bufferStart+this.bufferPos;this.bufferPos+=codePointSize(e);let c=this.normalize(s);for(let d=0,_=a;;d++){let b=c.charCodeAt(d),k=this.match(b,_);if(k)return this.value=k,this;if(d==c.length-1)break;_==a&&dthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let s=this.matchPos<=this.to&&this.re.exec(this.curLine);if(s){let a=this.curLineStart+s.index,c=a+s[0].length;if(this.matchPos=c+(a==c?1:0),a==this.curLine.length&&this.nextLine(),athis.value.to)return this.value={from:a,to:c,match:s},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=a||c.to<=s){let b=new FlattenedDoc(s,e.sliceString(s,a));return flattened.set(e,b),b}if(c.from==s&&c.to==a)return c;let{text:d,from:_}=c;return _>s&&(d=e.sliceString(s,_)+d,_=s),c.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,s=this.re.exec(this.flat.text);if(s&&!s[0]&&s.index==e&&(this.re.lastIndex=e+1,s=this.re.exec(this.flat.text)),s&&this.flat.tothis.flat.text.length-10&&(s=null),s){let a=this.flat.from+s.index,c=a+s[0].length;return this.value={from:a,to:c,match:s},this.matchPos=c+(a==c?1:0),this}else{if(this.flat.to==this.to)return this.done=!0,this;this.flat=FlattenedDoc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}}typeof Symbol!="undefined"&&(RegExpCursor.prototype[Symbol.iterator]=MultilineRegExpCursor.prototype[Symbol.iterator]=function(){return this});function validRegExp(o){try{return new RegExp(o,baseFlags),!0}catch{return!1}}function createLineDialog(o){let e=crelt("input",{class:"cm-textfield",name:"line"}),s=crelt("form",{class:"cm-gotoLine",onkeydown:c=>{c.keyCode==27?(c.preventDefault(),o.dispatch({effects:dialogEffect.of(!1)}),o.focus()):c.keyCode==13&&(c.preventDefault(),a())},onsubmit:c=>{c.preventDefault(),a()}},crelt("label",o.state.phrase("Go to line"),": ",e)," ",crelt("button",{class:"cm-button",type:"submit"},o.state.phrase("go")));function a(){let c=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!c)return;let{state:d}=o,_=d.doc.lineAt(d.selection.main.head),[,b,k,$,j]=c,_e=$?+$.slice(1):0,et=k?+k:_.number;if(k&&j){let nt=et/100;b&&(nt=nt*(b=="-"?-1:1)+_.number/d.doc.lines),et=Math.round(d.doc.lines*nt)}else k&&b&&(et=et*(b=="-"?-1:1)+_.number);let tt=d.doc.line(Math.max(1,Math.min(d.doc.lines,et)));o.dispatch({effects:dialogEffect.of(!1),selection:EditorSelection.cursor(tt.from+Math.max(0,Math.min(_e,tt.length))),scrollIntoView:!0}),o.focus()}return{dom:s,pos:-10}}const dialogEffect=StateEffect.define(),dialogField=StateField.define({create(){return!0},update(o,e){for(let s of e.effects)s.is(dialogEffect)&&(o=s.value);return o},provide:o=>showPanel.from(o,e=>e?createLineDialog:null)}),gotoLine=o=>{let e=getPanel(o,createLineDialog);if(!e){let s=[dialogEffect.of(!0)];o.state.field(dialogField,!1)==null&&s.push(StateEffect.appendConfig.of([dialogField,baseTheme$1$1])),o.dispatch({effects:s}),e=getPanel(o,createLineDialog)}return e&&e.dom.querySelector("input").focus(),!0},baseTheme$1$1=EditorView.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),defaultHighlightOptions={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!0},highlightConfig=Facet.define({combine(o){return combineConfig(o,defaultHighlightOptions,{highlightWordAroundCursor:(e,s)=>e||s,minSelectionLength:Math.min,maxMatches:Math.min})}});function highlightSelectionMatches(o){let e=[defaultTheme,matchHighlighter];return o&&e.push(highlightConfig.of(o)),e}const matchDeco=Decoration.mark({class:"cm-selectionMatch"}),mainMatchDeco=Decoration.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function insideWordBoundaries(o,e,s,a){return(s==0||o(e.sliceDoc(s-1,s))!=CharCategory.Word)&&(a==e.doc.length||o(e.sliceDoc(a,a+1))!=CharCategory.Word)}function insideWord(o,e,s,a){return o(e.sliceDoc(s,s+1))==CharCategory.Word&&o(e.sliceDoc(a-1,a))==CharCategory.Word}const matchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.selectionSet||o.docChanged||o.viewportChanged)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=o.state.facet(highlightConfig),{state:s}=o,a=s.selection;if(a.ranges.length>1)return Decoration.none;let c=a.main,d,_=null;if(c.empty){if(!e.highlightWordAroundCursor)return Decoration.none;let k=s.wordAt(c.head);if(!k)return Decoration.none;_=s.charCategorizer(c.head),d=s.sliceDoc(k.from,k.to)}else{let k=c.to-c.from;if(k200)return Decoration.none;if(e.wholeWords){if(d=s.sliceDoc(c.from,c.to),_=s.charCategorizer(c.head),!(insideWordBoundaries(_,s,c.from,c.to)&&insideWord(_,s,c.from,c.to)))return Decoration.none}else if(d=s.sliceDoc(c.from,c.to).trim(),!d)return Decoration.none}let b=[];for(let k of o.visibleRanges){let $=new SearchCursor(s.doc,d,k.from,k.to);for(;!$.next().done;){let{from:j,to:_e}=$.value;if((!_||insideWordBoundaries(_,s,j,_e))&&(c.empty&&j<=c.from&&_e>=c.to?b.push(mainMatchDeco.range(j,_e)):(j>=c.to||_e<=c.from)&&b.push(matchDeco.range(j,_e)),b.length>e.maxMatches))return Decoration.none}}return Decoration.set(b)}},{decorations:o=>o.decorations}),defaultTheme=EditorView.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),selectWord=({state:o,dispatch:e})=>{let{selection:s}=o,a=EditorSelection.create(s.ranges.map(c=>o.wordAt(c.head)||EditorSelection.cursor(c.head)),s.mainIndex);return a.eq(s)?!1:(e(o.update({selection:a})),!0)};function findNextOccurrence(o,e){let{main:s,ranges:a}=o.selection,c=o.wordAt(s.head),d=c&&c.from==s.from&&c.to==s.to;for(let _=!1,b=new SearchCursor(o.doc,e,a[a.length-1].to);;)if(b.next(),b.done){if(_)return null;b=new SearchCursor(o.doc,e,0,Math.max(0,a[a.length-1].from-1)),_=!0}else{if(_&&a.some(k=>k.from==b.value.from))continue;if(d){let k=o.wordAt(b.value.from);if(!k||k.from!=b.value.from||k.to!=b.value.to)continue}return b.value}}const selectNextOccurrence=({state:o,dispatch:e})=>{let{ranges:s}=o.selection;if(s.some(d=>d.from===d.to))return selectWord({state:o,dispatch:e});let a=o.sliceDoc(s[0].from,s[0].to);if(o.selection.ranges.some(d=>o.sliceDoc(d.from,d.to)!=a))return!1;let c=findNextOccurrence(o,a);return c?(e(o.update({selection:o.selection.addRange(EditorSelection.range(c.from,c.to),!1),effects:EditorView.scrollIntoView(c.to)})),!0):!1},searchConfigFacet=Facet.define({combine(o){var e;return{top:o.reduce((s,a)=>s!=null?s:a.top,void 0)||!1,caseSensitive:o.reduce((s,a)=>s!=null?s:a.caseSensitive||a.matchCase,void 0)||!1,createPanel:((e=o.find(s=>s.createPanel))===null||e===void 0?void 0:e.createPanel)||(s=>new SearchPanel(s))}}});class SearchQuery{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||validRegExp(this.search)),this.unquoted=this.search.replace(/\\([nrt\\])/g,(s,a)=>a=="n"?` +`:a=="r"?"\r":a=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp}create(){return this.regexp?new RegExpQuery(this):new StringQuery(this)}getCursor(e,s=0,a=e.length){return this.regexp?regexpCursor(this,e,s,a):stringCursor(this,e,s,a)}}class QueryType{constructor(e){this.spec=e}}function stringCursor(o,e,s,a){return new SearchCursor(e,o.unquoted,s,a,o.caseSensitive?void 0:c=>c.toLowerCase())}class StringQuery extends QueryType{constructor(e){super(e)}nextMatch(e,s,a){let c=stringCursor(this.spec,e,a,e.length).nextOverlapping();return c.done&&(c=stringCursor(this.spec,e,0,s).nextOverlapping()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=a;;){let d=Math.max(s,c-1e4-this.spec.unquoted.length),_=stringCursor(this.spec,e,d,c),b=null;for(;!_.nextOverlapping().done;)b=_.value;if(b)return b;if(d==s)return null;c-=1e4}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace}matchAll(e,s){let a=stringCursor(this.spec,e,0,e.length),c=[];for(;!a.next().done;){if(c.length>=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let d=stringCursor(this.spec,e,Math.max(0,s-this.spec.unquoted.length),Math.min(a+this.spec.unquoted.length,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}function regexpCursor(o,e,s,a){return new RegExpCursor(e,o.search,o.caseSensitive?void 0:{ignoreCase:!0},s,a)}class RegExpQuery extends QueryType{nextMatch(e,s,a){let c=regexpCursor(this.spec,e,a,e.length).next();return c.done&&(c=regexpCursor(this.spec,e,0,s).next()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=1;;c++){let d=Math.max(s,a-c*1e4),_=regexpCursor(this.spec,e,d,a),b=null;for(;!_.next().done;)b=_.value;if(b&&(d==s||b.from>d+10))return b;if(d==s)return null}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace.replace(/\$([$&\d+])/g,(s,a)=>a=="$"?"$":a=="&"?e.match[0]:a!="0"&&+a=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let d=regexpCursor(this.spec,e,Math.max(0,s-250),Math.min(a+250,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}const setSearchQuery=StateEffect.define(),togglePanel$1=StateEffect.define(),searchState=StateField.define({create(o){return new SearchState(defaultQuery(o).create(),null)},update(o,e){for(let s of e.effects)s.is(setSearchQuery)?o=new SearchState(s.value.create(),o.panel):s.is(togglePanel$1)&&(o=new SearchState(o.query,s.value?createSearchPanel:null));return o},provide:o=>showPanel.from(o,e=>e.panel)});class SearchState{constructor(e,s){this.query=e,this.panel=s}}const matchMark=Decoration.mark({class:"cm-searchMatch"}),selectedMatchMark=Decoration.mark({class:"cm-searchMatch cm-searchMatch-selected"}),searchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=this.highlight(o.state.field(searchState))}update(o){let e=o.state.field(searchState);(e!=o.startState.field(searchState)||o.docChanged||o.selectionSet||o.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:o,panel:e}){if(!e||!o.spec.valid)return Decoration.none;let{view:s}=this,a=new RangeSetBuilder;for(let c=0,d=s.visibleRanges,_=d.length;c<_;c++){let{from:b,to:k}=d[c];for(;c<_-1&&k>d[c+1].from-2*250;)k=d[++c].to;o.highlight(s.state.doc,b,k,($,j)=>{let _e=s.state.selection.ranges.some(et=>et.from==$&&et.to==j);a.add($,j,_e?selectedMatchMark:matchMark)})}return a.finish()}},{decorations:o=>o.decorations});function searchCommand(o){return e=>{let s=e.state.field(searchState,!1);return s&&s.query.spec.valid?o(e,s):openSearchPanel(e)}}const findNext=searchCommand((o,{query:e})=>{let{from:s,to:a}=o.state.selection.main,c=e.nextMatch(o.state.doc,s,a);return!c||c.from==s&&c.to==a?!1:(o.dispatch({selection:{anchor:c.from,head:c.to},scrollIntoView:!0,effects:announceMatch(o,c),userEvent:"select.search"}),!0)}),findPrevious=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a,to:c}=s.selection.main,d=e.prevMatch(s.doc,a,c);return d?(o.dispatch({selection:{anchor:d.from,head:d.to},scrollIntoView:!0,effects:announceMatch(o,d),userEvent:"select.search"}),!0):!1}),selectMatches=searchCommand((o,{query:e})=>{let s=e.matchAll(o.state.doc,1e3);return!s||!s.length?!1:(o.dispatch({selection:EditorSelection.create(s.map(a=>EditorSelection.range(a.from,a.to))),userEvent:"select.search.matches"}),!0)}),selectSelectionMatches=({state:o,dispatch:e})=>{let s=o.selection;if(s.ranges.length>1||s.main.empty)return!1;let{from:a,to:c}=s.main,d=[],_=0;for(let b=new SearchCursor(o.doc,o.sliceDoc(a,c));!b.next().done;){if(d.length>1e3)return!1;b.value.from==a&&(_=d.length),d.push(EditorSelection.range(b.value.from,b.value.to))}return e(o.update({selection:EditorSelection.create(d,_),userEvent:"select.search.matches"})),!0},replaceNext=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a,to:c}=s.selection.main;if(s.readOnly)return!1;let d=e.nextMatch(s.doc,a,a);if(!d)return!1;let _=[],b,k;if(d.from==a&&d.to==c&&(k=s.toText(e.getReplacement(d)),_.push({from:d.from,to:d.to,insert:k}),d=e.nextMatch(s.doc,d.from,d.to)),d){let $=_.length==0||_[0].from>=d.to?0:d.to-d.from-k.length;b={anchor:d.from-$,head:d.to-$}}return o.dispatch({changes:_,selection:b,scrollIntoView:!!b,effects:d?announceMatch(o,d):void 0,userEvent:"input.replace"}),!0}),replaceAll=searchCommand((o,{query:e})=>{if(o.state.readOnly)return!1;let s=e.matchAll(o.state.doc,1e9).map(a=>{let{from:c,to:d}=a;return{from:c,to:d,insert:e.getReplacement(a)}});return s.length?(o.dispatch({changes:s,userEvent:"input.replace.all"}),!0):!1});function createSearchPanel(o){return o.state.facet(searchConfigFacet).createPanel(o)}function defaultQuery(o,e){var s;let a=o.selection.main,c=a.empty||a.to>a.from+100?"":o.sliceDoc(a.from,a.to),d=(s=e==null?void 0:e.caseSensitive)!==null&&s!==void 0?s:o.facet(searchConfigFacet).caseSensitive;return e&&!c?e:new SearchQuery({search:c.replace(/\n/g,"\\n"),caseSensitive:d})}const openSearchPanel=o=>{let e=o.state.field(searchState,!1);if(e&&e.panel){let s=getPanel(o,createSearchPanel);if(!s)return!1;let a=s.dom.querySelector("[name=search]");if(a!=o.root.activeElement){let c=defaultQuery(o.state,e.query.spec);c.valid&&o.dispatch({effects:setSearchQuery.of(c)}),a.focus(),a.select()}}else o.dispatch({effects:[togglePanel$1.of(!0),e?setSearchQuery.of(defaultQuery(o.state,e.query.spec)):StateEffect.appendConfig.of(searchExtensions)]});return!0},closeSearchPanel=o=>{let e=o.state.field(searchState,!1);if(!e||!e.panel)return!1;let s=getPanel(o,createSearchPanel);return s&&s.dom.contains(o.root.activeElement)&&o.focus(),o.dispatch({effects:togglePanel$1.of(!1)}),!0},searchKeymap=[{key:"Mod-f",run:openSearchPanel,scope:"editor search-panel"},{key:"F3",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:closeSearchPanel,scope:"editor search-panel"},{key:"Mod-Shift-l",run:selectSelectionMatches},{key:"Alt-g",run:gotoLine},{key:"Mod-d",run:selectNextOccurrence,preventDefault:!0}];class SearchPanel{constructor(e){this.view=e;let s=this.query=e.state.field(searchState).query.spec;this.commit=this.commit.bind(this),this.searchField=crelt("input",{value:s.search,placeholder:phrase(e,"Find"),"aria-label":phrase(e,"Find"),class:"cm-textfield",name:"search",onchange:this.commit,onkeyup:this.commit}),this.replaceField=crelt("input",{value:s.replace,placeholder:phrase(e,"Replace"),"aria-label":phrase(e,"Replace"),class:"cm-textfield",name:"replace",onchange:this.commit,onkeyup:this.commit}),this.caseField=crelt("input",{type:"checkbox",name:"case",checked:s.caseSensitive,onchange:this.commit}),this.reField=crelt("input",{type:"checkbox",name:"re",checked:s.regexp,onchange:this.commit});function a(c,d,_){return crelt("button",{class:"cm-button",name:c,onclick:d,type:"button"},_)}this.dom=crelt("div",{onkeydown:c=>this.keydown(c),class:"cm-search"},[this.searchField,a("next",()=>findNext(e),[phrase(e,"next")]),a("prev",()=>findPrevious(e),[phrase(e,"previous")]),a("select",()=>selectMatches(e),[phrase(e,"all")]),crelt("label",null,[this.caseField,phrase(e,"match case")]),crelt("label",null,[this.reField,phrase(e,"regexp")]),...e.state.readOnly?[]:[crelt("br"),this.replaceField,a("replace",()=>replaceNext(e),[phrase(e,"replace")]),a("replaceAll",()=>replaceAll(e),[phrase(e,"replace all")]),crelt("button",{name:"close",onclick:()=>closeSearchPanel(e),"aria-label":phrase(e,"close"),type:"button"},["\xD7"])]])}commit(){let e=new SearchQuery({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:setSearchQuery.of(e)}))}keydown(e){runScopeHandlers(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?findPrevious:findNext)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),replaceNext(this.view))}update(e){for(let s of e.transactions)for(let a of s.effects)a.is(setSearchQuery)&&!a.value.eq(this.query)&&this.setQuery(a.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(searchConfigFacet).top}}function phrase(o,e){return o.state.phrase(e)}const AnnounceMargin=30,Break=/[\s\.,:;?!]/;function announceMatch(o,{from:e,to:s}){let a=o.state.doc.lineAt(e).from,c=o.state.doc.lineAt(s).to,d=Math.max(a,e-AnnounceMargin),_=Math.min(c,s+AnnounceMargin),b=o.state.sliceDoc(d,_);if(d!=a){for(let k=0;kb.length-AnnounceMargin;k--)if(!Break.test(b[k-1])&&Break.test(b[k])){b=b.slice(0,k);break}}return EditorView.announce.of(`${o.state.phrase("current match")}. ${b} ${o.state.phrase("on line")} ${o.state.doc.lineAt(e).number}`)}const baseTheme$3=EditorView.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),searchExtensions=[searchState,Prec.lowest(searchHighlighter),baseTheme$3],ios=typeof navigator!="undefined"&&!/Edge\/(\d+)/.exec(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor)&&(/Mobile\/\w+/.test(navigator.userAgent)||navigator.maxTouchPoints>2),Outside="-10000px";class TooltipViewManager{constructor(e,s,a){this.facet=s,this.createTooltipView=a,this.input=e.state.facet(s),this.tooltips=this.input.filter(c=>c),this.tooltipViews=this.tooltips.map(a)}update(e){let s=e.state.facet(this.facet),a=s.filter(d=>d);if(s===this.input){for(let d of this.tooltipViews)d.update&&d.update(e);return!1}let c=[];for(let d=0;d{var e,s,a;return{position:ios?"absolute":((e=o.find(c=>c.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((s=o.find(c=>c.parent))===null||s===void 0?void 0:s.parent)||null,tooltipSpace:((a=o.find(c=>c.tooltipSpace))===null||a===void 0?void 0:a.tooltipSpace)||windowSpace}}}),tooltipPlugin=ViewPlugin.fromClass(class{constructor(o){var e;this.view=o,this.inView=!0,this.lastTransaction=0,this.measureTimeout=-1;let s=o.state.facet(tooltipConfig);this.position=s.position,this.parent=s.parent,this.classes=o.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new TooltipViewManager(o,showTooltip,a=>this.createTooltip(a)),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(a=>{Date.now()>this.lastTransaction-50&&a.length>0&&a[a.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),(e=o.dom.ownerDocument.defaultView)===null||e===void 0||e.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let o of this.manager.tooltipViews)this.intersectionObserver.observe(o.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(o){o.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(o);e&&this.observeIntersection();let s=e||o.geometryChanged,a=o.state.facet(tooltipConfig);if(a.position!=this.position){this.position=a.position;for(let c of this.manager.tooltipViews)c.dom.style.position=this.position;s=!0}if(a.parent!=this.parent){this.parent&&this.container.remove(),this.parent=a.parent,this.createContainer();for(let c of this.manager.tooltipViews)this.container.appendChild(c.dom);s=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);s&&this.maybeMeasure()}createTooltip(o){let e=o.create(this.view);if(e.dom.classList.add("cm-tooltip"),o.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",e.dom.appendChild(s)}return e.dom.style.position=this.position,e.dom.style.top=Outside,this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var o,e;(o=this.view.dom.ownerDocument.defaultView)===null||o===void 0||o.removeEventListener("resize",this.measureSoon);for(let{dom:s}of this.manager.tooltipViews)s.remove();(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let o=this.view.dom.getBoundingClientRect();return{editor:o,parent:this.parent?this.container.getBoundingClientRect():o,pos:this.manager.tooltips.map((e,s)=>{let a=this.manager.tooltipViews[s];return a.getCoords?a.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(tooltipConfig).tooltipSpace(this.view)}}writeMeasure(o){let{editor:e,space:s}=o,a=[];for(let c=0;c=Math.min(e.bottom,s.bottom)||k.rightMath.min(e.right,s.right)+.1){b.style.top=Outside;continue}let j=d.arrow?_.dom.querySelector(".cm-tooltip-arrow"):null,_e=j?7:0,et=$.right-$.left,tt=$.bottom-$.top,nt=_.offset||noOffset,st=this.view.textDirection==Direction.LTR,rt=$.width>s.right-s.left?st?s.left:s.right-$.width:st?Math.min(k.left-(j?14:0)+nt.x,s.right-et):Math.max(s.left,k.left-et+(j?14:0)-nt.x),it=!!d.above;!d.strictSide&&(it?k.top-($.bottom-$.top)-nt.ys.bottom)&&it==s.bottom-k.bottom>k.top-s.top&&(it=!it);let at=it?k.top-tt-_e-nt.y:k.bottom+_e+nt.y,ot=rt+et;if(_.overlap!==!0)for(let ht of a)ht.leftrt&&ht.topat&&(at=it?ht.top-tt-2-_e:ht.bottom+_e+2);this.position=="absolute"?(b.style.top=at-o.parent.top+"px",b.style.left=rt-o.parent.left+"px"):(b.style.top=at+"px",b.style.left=rt+"px"),j&&(j.style.left=`${k.left+(st?nt.x:-nt.x)-(rt+14-7)}px`),_.overlap!==!0&&a.push({left:rt,top:at,right:ot,bottom:at+tt}),b.classList.toggle("cm-tooltip-above",it),b.classList.toggle("cm-tooltip-below",!it),_.positioned&&_.positioned()}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let o of this.manager.tooltipViews)o.dom.style.top=Outside}},{eventHandlers:{scroll(){this.maybeMeasure()}}}),baseTheme$2=EditorView.baseTheme({".cm-tooltip":{zIndex:100},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:`${7}px`,width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:`${7}px solid transparent`,borderRight:`${7}px solid transparent`},".cm-tooltip-above &":{bottom:`-${7}px`,"&:before":{borderTop:`${7}px solid #bbb`},"&:after":{borderTop:`${7}px solid #f5f5f5`,bottom:"1px"}},".cm-tooltip-below &":{top:`-${7}px`,"&:before":{borderBottom:`${7}px solid #bbb`},"&:after":{borderBottom:`${7}px solid #f5f5f5`,top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),noOffset={x:0,y:0},showTooltip=Facet.define({enables:[tooltipPlugin,baseTheme$2]}),showHoverTooltip=Facet.define();class HoverTooltipHost{constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new TooltipViewManager(e,showHoverTooltip,s=>this.createHostedView(s))}static create(e){return new HoverTooltipHost(e)}createHostedView(e){let s=e.create(this.view);return s.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(s.dom),this.mounted&&s.mount&&s.mount(this.view),s}mount(e){for(let s of this.manager.tooltipViews)s.mount&&s.mount(e);this.mounted=!0}positioned(){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned()}update(e){this.manager.update(e)}}const showHoverTooltipHost=showTooltip.compute([showHoverTooltip],o=>{let e=o.facet(showHoverTooltip).filter(s=>s);return e.length===0?null:{pos:Math.min(...e.map(s=>s.pos)),end:Math.max(...e.filter(s=>s.end!=null).map(s=>s.end)),create:HoverTooltipHost.create,above:e[0].above,arrow:e.some(s=>s.arrow)}});class HoverPlugin{constructor(e,s,a,c,d){this.view=e,this.source=s,this.field=a,this.setHover=c,this.hoverTime=d,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let e=Date.now()-this.lastMove.time;ec.bottom||s.xc.right+this.view.defaultCharacterWidth)return;let d=this.view.bidiSpans(this.view.state.doc.lineAt(a)).find(k=>k.from<=a&&k.to>=a),_=d&&d.dir==Direction.RTL?-1:1,b=this.source(this.view,a,s.x{this.pending==k&&(this.pending=null,$&&this.view.dispatch({effects:this.setHover.of($)}))},$=>logException(this.view.state,$,"hover tooltip"))}else b&&this.view.dispatch({effects:this.setHover.of(b)})}mousemove(e){var s;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let a=this.active;if(a&&!isInTooltip(this.lastMove.target)||this.pending){let{pos:c}=a||this.pending,d=(s=a==null?void 0:a.end)!==null&&s!==void 0?s:c;(c==d?this.view.posAtCoords(this.lastMove)!=c:!isOverRange(this.view,c,d,e.clientX,e.clientY,6))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1,this.active&&this.view.dispatch({effects:this.setHover.of(null)})}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}function isInTooltip(o){for(let e=o;e;e=e.parentNode)if(e.nodeType==1&&e.classList.contains("cm-tooltip"))return!0;return!1}function isOverRange(o,e,s,a,c,d){let _=document.createRange(),b=o.domAtPos(e),k=o.domAtPos(s);_.setEnd(k.node,k.offset),_.setStart(b.node,b.offset);let $=_.getClientRects();_.detach();for(let j=0;j<$.length;j++){let _e=$[j];if(Math.max(_e.top-c,c-_e.bottom,_e.left-a,a-_e.right)<=d)return!0}return!1}function hoverTooltip(o,e={}){let s=StateEffect.define(),a=StateField.define({create(){return null},update(c,d){if(c&&e.hideOnChange&&(d.docChanged||d.selection))return null;for(let _ of d.effects){if(_.is(s))return _.value;if(_.is(closeHoverTooltipEffect))return null}if(c&&d.docChanged){let _=d.changes.mapPos(c.pos,-1,MapMode.TrackDel);if(_==null)return null;let b=Object.assign(Object.create(null),c);return b.pos=_,c.end!=null&&(b.end=d.changes.mapPos(c.end)),b}return c},provide:c=>showHoverTooltip.from(c)});return[a,ViewPlugin.define(c=>new HoverPlugin(c,o,a,s,e.hoverTime||300)),showHoverTooltipHost]}function getTooltip(o,e){let s=o.plugin(tooltipPlugin);if(!s)return null;let a=s.manager.tooltips.indexOf(e);return a<0?null:s.manager.tooltipViews[a]}const closeHoverTooltipEffect=StateEffect.define();class CompletionContext{constructor(e,s,a){this.state=e,this.pos=s,this.explicit=a,this.abortListeners=[]}tokenBefore(e){let s=syntaxTree(this.state).resolveInner(this.pos,-1);for(;s&&e.indexOf(s.name)<0;)s=s.parent;return s?{from:s.from,to:this.pos,text:this.state.sliceDoc(s.from,this.pos),type:s.type}:null}matchBefore(e){let s=this.state.doc.lineAt(this.pos),a=Math.max(s.from,this.pos-250),c=s.text.slice(a-s.from,this.pos-s.from),d=c.search(ensureAnchor(e,!1));return d<0?null:{from:a+d,to:this.pos,text:c.slice(d)}}get aborted(){return this.abortListeners==null}addEventListener(e,s){e=="abort"&&this.abortListeners&&this.abortListeners.push(s)}}function toSet(o){let e=Object.keys(o).join(""),s=/\w/.test(e);return s&&(e=e.replace(/\w/g,"")),`[${s?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function prefixMatch(o){let e=Object.create(null),s=Object.create(null);for(let{label:c}of o){e[c[0]]=!0;for(let d=1;dtypeof c=="string"?{label:c}:c),[s,a]=e.every(c=>/^\w+$/.test(c.label))?[/\w*$/,/\w+$/]:prefixMatch(e);return c=>{let d=c.matchBefore(a);return d||c.explicit?{from:d?d.from:c.pos,options:e,span:s}:null}}function ifNotIn(o,e){return s=>{for(let a=syntaxTree(s.state).resolveInner(s.pos,-1);a;a=a.parent)if(o.indexOf(a.name)>-1)return null;return e(s)}}class Option{constructor(e,s,a){this.completion=e,this.source=s,this.match=a}}function cur(o){return o.selection.main.head}function ensureAnchor(o,e){var s;let{source:a}=o,c=e&&a[0]!="^",d=a[a.length-1]!="$";return!c&&!d?o:new RegExp(`${c?"^":""}(?:${a})${d?"$":""}`,(s=o.flags)!==null&&s!==void 0?s:o.ignoreCase?"i":"")}const pickedCompletion=Annotation.define();function applyCompletion(o,e){let s=e.completion.apply||e.completion.label,a=e.source;typeof s=="string"?o.dispatch({changes:{from:a.from,to:a.to,insert:s},selection:{anchor:a.from+s.length},userEvent:"input.complete",annotations:pickedCompletion.of(e.completion)}):s(o,e.completion,a.from,a.to)}const SourceCache=new WeakMap;function asSource(o){if(!Array.isArray(o))return o;let e=SourceCache.get(o);return e||SourceCache.set(o,e=completeFromList(o)),e}class FuzzyMatcher{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[];for(let s=0;s=48&&ct<=57||ct>=97&&ct<=122?2:ct>=65&&ct<=90?1:0:(lt=fromCodePoint(ct))!=lt.toLowerCase()?1:lt!=lt.toUpperCase()?2:0;(!at||ut==1&&rt||ht==0&&ut!=0)&&(s[_e]==ct||a[_e]==ct&&(et=!0)?_[_e++]=at:_.length&&(it=!1)),ht=ut,at+=codePointSize(ct)}return _e==k&&_[0]==0&&it?this.result(-100+(et?-200:0),_,e):tt==k&&nt==0?[-200-e.length,0,st]:b>-1?[-700-e.length,b,b+this.pattern.length]:tt==k?[-200+-700-e.length,nt,st]:_e==k?this.result(-100+(et?-200:0)+-700+(it?0:-1100),_,e):s.length==2?null:this.result((c[0]?-700:0)+-200+-1100,c,e)}result(e,s,a){let c=[e-a.length],d=1;for(let _ of s){let b=_+(this.astral?codePointSize(codePointAt(a,_)):1);d>1&&c[d-1]==_?c[d-1]=b:(c[d++]=_,c[d++]=b)}return c}}const completionConfig=Facet.define({combine(o){return combineConfig(o,{activateOnTyping:!0,override:null,maxRenderedOptions:100,defaultKeymap:!0,optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[]},{defaultKeymap:(e,s)=>e&&s,icons:(e,s)=>e&&s,optionClass:(e,s)=>a=>joinClass(e(a),s(a)),addToOptions:(e,s)=>e.concat(s)})}});function joinClass(o,e){return o?e?o+" "+e:o:e}function optionContent(o){let e=o.addToOptions.slice();return o.icons&&e.push({render(s){let a=document.createElement("div");return a.classList.add("cm-completionIcon"),s.type&&a.classList.add(...s.type.split(/\s+/g).map(c=>"cm-completionIcon-"+c)),a.setAttribute("aria-hidden","true"),a},position:20}),e.push({render(s,a,c){let d=document.createElement("span");d.className="cm-completionLabel";let{label:_}=s,b=0;for(let k=1;kb&&d.appendChild(document.createTextNode(_.slice(b,$)));let _e=d.appendChild(document.createElement("span"));_e.appendChild(document.createTextNode(_.slice($,j))),_e.className="cm-completionMatchedText",b=j}return b<_.length&&d.appendChild(document.createTextNode(_.slice(b))),d},position:50},{render(s){if(!s.detail)return null;let a=document.createElement("span");return a.className="cm-completionDetail",a.textContent=s.detail,a},position:80}),e.sort((s,a)=>s.position-a.position).map(s=>s.render)}function rangeAroundSelected(o,e,s){if(o<=s)return{from:0,to:o};if(e<=o>>1){let c=Math.floor(e/s);return{from:c*s,to:(c+1)*s}}let a=Math.floor((o-e)/s);return{from:o-(a+1)*s,to:o-a*s}}class CompletionTooltip{constructor(e,s){this.view=e,this.stateField=s,this.info=null,this.placeInfo={read:()=>this.measureInfo(),write:b=>this.positionInfo(b),key:this};let a=e.state.field(s),{options:c,selected:d}=a.open,_=e.state.facet(completionConfig);this.optionContent=optionContent(_),this.optionClass=_.optionClass,this.range=rangeAroundSelected(c.length,d,_.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.dom.addEventListener("mousedown",b=>{for(let k=b.target,$;k&&k!=this.dom;k=k.parentNode)if(k.nodeName=="LI"&&($=/-(\d+)$/.exec(k.id))&&+$[1]{this.info&&this.view.requestMeasure(this.placeInfo)})}mount(){this.updateSel()}update(e){e.state.field(this.stateField)!=e.startState.field(this.stateField)&&this.updateSel()}positioned(){this.info&&this.view.requestMeasure(this.placeInfo)}updateSel(){let e=this.view.state.field(this.stateField),s=e.open;if((s.selected=this.range.to)&&(this.range=rangeAroundSelected(s.options.length,s.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.list.remove(),this.list=this.dom.appendChild(this.createListBox(s.options,e.id,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfo)})),this.updateSelectedOption(s.selected)){this.info&&(this.info.remove(),this.info=null);let{completion:a}=s.options[s.selected],{info:c}=a;if(!c)return;let d=typeof c=="string"?document.createTextNode(c):c(a);if(!d)return;"then"in d?d.then(_=>{_&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(_)}).catch(_=>logException(this.view.state,_,"completion info")):this.addInfoPane(d)}}addInfoPane(e){let s=this.info=document.createElement("div");s.className="cm-tooltip cm-completionInfo",s.appendChild(e),this.dom.appendChild(s),this.view.requestMeasure(this.placeInfo)}updateSelectedOption(e){let s=null;for(let a=this.list.firstChild,c=this.range.from;a;a=a.nextSibling,c++)c==e?a.hasAttribute("aria-selected")||(a.setAttribute("aria-selected","true"),s=a):a.hasAttribute("aria-selected")&&a.removeAttribute("aria-selected");return s&&scrollIntoView(this.list,s),s}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let s=this.dom.getBoundingClientRect(),a=this.info.getBoundingClientRect(),c=e.getBoundingClientRect();if(c.top>Math.min(innerHeight,s.bottom)-10||c.bottomnew CompletionTooltip(e,o)}function scrollIntoView(o,e){let s=o.getBoundingClientRect(),a=e.getBoundingClientRect();a.tops.bottom&&(o.scrollTop+=a.bottom-s.bottom)}const MaxOptions=300;function score(o){return(o.boost||0)*100+(o.apply?10:0)+(o.info?5:0)+(o.type?1:0)}function sortOptions(o,e){let s=[],a=0;for(let _ of o)if(_.hasResult())if(_.result.filter===!1)for(let b of _.result.options)s.push(new Option(b,_,[1e9-a++]));else{let b=new FuzzyMatcher(e.sliceDoc(_.from,_.to)),k;for(let $ of _.result.options)(k=b.match($.label))&&($.boost!=null&&(k[0]+=$.boost),s.push(new Option($,_,k)))}let c=[],d=null;for(let _ of s.sort(cmpOption)){if(c.length==MaxOptions)break;!d||d.label!=_.completion.label||d.detail!=_.completion.detail||d.type!=_.completion.type||d.apply!=_.completion.apply?c.push(_):score(_.completion)>score(d)&&(c[c.length-1]=_),d=_.completion}return c}class CompletionDialog{constructor(e,s,a,c,d){this.options=e,this.attrs=s,this.tooltip=a,this.timestamp=c,this.selected=d}setSelected(e,s){return e==this.selected||e>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(s,e),this.tooltip,this.timestamp,e)}static build(e,s,a,c,d){let _=sortOptions(e,s);if(!_.length)return null;let b=0;if(c&&c.selected){let k=c.options[c.selected].completion;for(let $=0;$<_.length;$++)if(_[$].completion==k){b=$;break}}return new CompletionDialog(_,makeAttrs(a,b),{pos:e.reduce((k,$)=>$.hasResult()?Math.min(k,$.from):k,1e8),create:completionTooltip(completionState),above:d.aboveCursor},c?c.timestamp:Date.now(),b)}map(e){return new CompletionDialog(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected)}}class CompletionState{constructor(e,s,a){this.active=e,this.id=s,this.open=a}static start(){return new CompletionState(none,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:s}=e,a=s.facet(completionConfig),d=(a.override||s.languageDataAt("autocomplete",cur(s)).map(asSource)).map(b=>(this.active.find($=>$.source==b)||new ActiveSource(b,this.active.some($=>$.state!=0)?1:0)).update(e,a));d.length==this.active.length&&d.every((b,k)=>b==this.active[k])&&(d=this.active);let _=e.selection||d.some(b=>b.hasResult()&&e.changes.touchesRange(b.from,b.to))||!sameResults(d,this.active)?CompletionDialog.build(d,s,this.id,this.open,a):this.open&&e.docChanged?this.open.map(e.changes):this.open;!_&&d.every(b=>b.state!=1)&&d.some(b=>b.hasResult())&&(d=d.map(b=>b.hasResult()?new ActiveSource(b.source,0):b));for(let b of e.effects)b.is(setSelectedEffect)&&(_=_&&_.setSelected(b.value,this.id));return d==this.active&&_==this.open?this:new CompletionState(d,this.id,_)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:baseAttrs}}function sameResults(o,e){if(o==e)return!0;for(let s=0,a=0;;){for(;sd||s=="delete"&&cur(e.startState)==this.from)return new ActiveSource(this.source,s=="input"&&a.activateOnTyping?1:0);let b=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos);return this.span&&(c==d||this.span.test(e.state.sliceDoc(c,d)))?new ActiveResult(this.source,b,this.result,c,d,this.span):new ActiveSource(this.source,1,b)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty?this:new ActiveResult(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1),this.span)}}const startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),setActiveEffect=StateEffect.define({map(o,e){return o.map(s=>s.map(e))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(o,e){return o.update(e)},provide:o=>[showTooltip.from(o,e=>e.tooltip),EditorView.contentAttributes.from(o,e=>e.attrs)]}),CompletionInteractMargin=75;function moveCompletionSelection(o,e="option"){return s=>{let a=s.state.field(completionState,!1);if(!a||!a.open||Date.now()-a.open.timestamp=b&&(_=e=="page"?b-1:0),s.dispatch({effects:setSelectedEffect.of(_)}),!0}}const acceptCompletion=o=>{let e=o.state.field(completionState,!1);return o.state.readOnly||!e||!e.open||Date.now()-e.open.timestampo.state.field(completionState,!1)?(o.dispatch({effects:startCompletionEffect.of(!0)}),!0):!1,closeCompletion=o=>{let e=o.state.field(completionState,!1);return!e||!e.active.some(s=>s.state!=0)?!1:(o.dispatch({effects:closeCompletionEffect.of(null)}),!0)};class RunningQuery{constructor(e,s){this.active=e,this.context=s,this.time=Date.now(),this.updates=[],this.done=void 0}}const DebounceTime=50,MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.composing=0;for(let e of o.state.field(completionState).active)e.state==1&&this.startQuery(e)}update(o){let e=o.state.field(completionState);if(!o.selectionSet&&!o.docChanged&&o.startState.field(completionState)==e)return;let s=o.transactions.some(a=>(a.selection||a.docChanged)&&!getUserEvent(a));for(let a=0;aMaxUpdateCount&&Date.now()-c.time>MinAbortTime){for(let d of c.context.abortListeners)try{d()}catch(_){logException(this.view.state,_)}c.context.abortListeners=null,this.running.splice(a--,1)}else c.updates.push(...o.transactions)}if(this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),this.debounceUpdate=e.active.some(a=>a.state==1&&!this.running.some(c=>c.active.source==a.source))?setTimeout(()=>this.startUpdate(),DebounceTime):-1,this.composing!=0)for(let a of o.transactions)getUserEvent(a)=="input"?this.composing=2:this.composing==2&&a.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1;let{state:o}=this.view,e=o.field(completionState);for(let s of e.active)s.state==1&&!this.running.some(a=>a.active.source==s.source)&&this.startQuery(s)}startQuery(o){let{state:e}=this.view,s=cur(e),a=new CompletionContext(e,s,o.explicitPos==s),c=new RunningQuery(o,a);this.running.push(c),Promise.resolve(o.source(a)).then(d=>{c.context.aborted||(c.done=d||null,this.scheduleAccept())},d=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,d)})}scheduleAccept(){this.running.every(o=>o.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),DebounceTime))}accept(){var o;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],s=this.view.state.facet(completionConfig);for(let a=0;a_.source==c.active.source);if(d&&d.state==1)if(c.done==null){let _=new ActiveSource(c.active.source,0);for(let b of c.updates)_=_.update(b,s);_.state!=1&&e.push(_)}else this.startQuery(d)}e.length&&this.view.dispatch({effects:setActiveEffect.of(e)})}},{eventHandlers:{compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),baseTheme$1=EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",listStyle:"none",margin:0,padding:0,"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer",padding:"1px 3px",lineHeight:1.2}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"300px"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class FieldPos{constructor(e,s,a,c){this.field=e,this.line=s,this.from=a,this.to=c}}class FieldRange{constructor(e,s,a){this.field=e,this.from=s,this.to=a}map(e){let s=e.mapPos(this.from,-1,MapMode.TrackDel),a=e.mapPos(this.to,1,MapMode.TrackDel);return s==null||a==null?null:new FieldRange(this.field,s,a)}}class Snippet{constructor(e,s){this.lines=e,this.fieldPositions=s}instantiate(e,s){let a=[],c=[s],d=e.doc.lineAt(s),_=/^\s*/.exec(d.text)[0];for(let k of this.lines){if(a.length){let $=_,j=/^\t*/.exec(k)[0].length;for(let _e=0;_enew FieldRange(k.field,c[k.line]+k.from,c[k.line]+k.to));return{text:a,ranges:b}}static parse(e){let s=[],a=[],c=[],d;for(let _ of e.split(/\r\n?|\n/)){for(;d=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(_);){let b=d[1]?+d[1]:null,k=d[2]||d[3]||"",$=-1;for(let j=0;j=$&&_e.field++}c.push(new FieldPos($,a.length,d.index,d.index+k.length)),_=_.slice(0,d.index)+k+_.slice(d.index+d[0].length)}a.push(_)}return new Snippet(a,c)}}let fieldMarker=Decoration.widget({widget:new class extends WidgetType{toDOM(){let o=document.createElement("span");return o.className="cm-snippetFieldPosition",o}ignoreEvent(){return!1}}}),fieldRange=Decoration.mark({class:"cm-snippetField"});class ActiveSnippet{constructor(e,s){this.ranges=e,this.active=s,this.deco=Decoration.set(e.map(a=>(a.from==a.to?fieldMarker:fieldRange).range(a.from,a.to)))}map(e){let s=[];for(let a of this.ranges){let c=a.map(e);if(!c)return null;s.push(c)}return new ActiveSnippet(s,this.active)}selectionInsideField(e){return e.ranges.every(s=>this.ranges.some(a=>a.field==this.active&&a.from<=s.from&&a.to>=s.to))}}const setActive=StateEffect.define({map(o,e){return o&&o.map(e)}}),moveToField=StateEffect.define(),snippetState=StateField.define({create(){return null},update(o,e){for(let s of e.effects){if(s.is(setActive))return s.value;if(s.is(moveToField)&&o)return new ActiveSnippet(o.ranges,s.value)}return o&&e.docChanged&&(o=o.map(e.changes)),o&&e.selection&&!o.selectionInsideField(e.selection)&&(o=null),o},provide:o=>EditorView.decorations.from(o,e=>e?e.deco:Decoration.none)});function fieldSelection(o,e){return EditorSelection.create(o.filter(s=>s.field==e).map(s=>EditorSelection.range(s.from,s.to)))}function snippet(o){let e=Snippet.parse(o);return(s,a,c,d)=>{let{text:_,ranges:b}=e.instantiate(s.state,c),k={changes:{from:c,to:d,insert:Text.of(_)}};if(b.length&&(k.selection=fieldSelection(b,0)),b.length>1){let $=new ActiveSnippet(b,0),j=k.effects=[setActive.of($)];s.state.field(snippetState,!1)===void 0&&j.push(StateEffect.appendConfig.of([snippetState,addSnippetKeymap,snippetPointerHandler,baseTheme$1]))}s.dispatch(s.state.update(k))}}function moveField(o){return({state:e,dispatch:s})=>{let a=e.field(snippetState,!1);if(!a||o<0&&a.active==0)return!1;let c=a.active+o,d=o>0&&!a.ranges.some(_=>_.field==c+o);return s(e.update({selection:fieldSelection(a.ranges,c),effects:setActive.of(d?null:new ActiveSnippet(a.ranges,c))})),!0}}const clearSnippet=({state:o,dispatch:e})=>o.field(snippetState,!1)?(e(o.update({effects:setActive.of(null)})),!0):!1,nextSnippetField=moveField(1),prevSnippetField=moveField(-1),defaultSnippetKeymap=[{key:"Tab",run:nextSnippetField,shift:prevSnippetField},{key:"Escape",run:clearSnippet}],snippetKeymap=Facet.define({combine(o){return o.length?o[0]:defaultSnippetKeymap}}),addSnippetKeymap=Prec.highest(keymap.compute([snippetKeymap],o=>o.facet(snippetKeymap)));function snippetCompletion(o,e){return Object.assign(Object.assign({},e),{apply:snippet(o)})}const snippetPointerHandler=EditorView.domEventHandlers({mousedown(o,e){let s=e.state.field(snippetState,!1),a;if(!s||(a=e.posAtCoords({x:o.clientX,y:o.clientY}))==null)return!1;let c=s.ranges.find(d=>d.from<=a&&d.to>=a);return!c||c.field==s.active?!1:(e.dispatch({selection:fieldSelection(s.ranges,c.field),effects:setActive.of(s.ranges.some(d=>d.field>c.field)?new ActiveSnippet(s.ranges,c.field):null)}),!0)}});function autocompletion(o={}){return[completionState,completionConfig.of(o),completionPlugin,completionKeymapExt,baseTheme$1]}const completionKeymap=[{key:"Ctrl-Space",run:startCompletion},{key:"Escape",run:closeCompletion},{key:"ArrowDown",run:moveCompletionSelection(!0)},{key:"ArrowUp",run:moveCompletionSelection(!1)},{key:"PageDown",run:moveCompletionSelection(!0,"page")},{key:"PageUp",run:moveCompletionSelection(!1,"page")},{key:"Enter",run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],o=>o.facet(completionConfig).defaultKeymap?[completionKeymap]:[])),toggleComment=o=>{let e=getConfig(o.state);return e.line?toggleLineComment(o):e.block?toggleBlockCommentByLine(o):!1};function command(o,e){return({state:s,dispatch:a})=>{if(s.readOnly)return!1;let c=o(e,s);return c?(a(s.update(c)),!0):!1}}const toggleLineComment=command(changeLineComment,0),toggleBlockComment=command(changeBlockComment,0),toggleBlockCommentByLine=command((o,e)=>changeBlockComment(o,e,selectedLineRanges(e)),0),commentKeymap=[{key:"Mod-/",run:toggleComment},{key:"Alt-A",run:toggleBlockComment}];function getConfig(o,e=o.selection.main.head){let s=o.languageDataAt("commentTokens",e);return s.length?s[0]:{}}const SearchMargin=50;function findBlockComment(o,{open:e,close:s},a,c){let d=o.sliceDoc(a-SearchMargin,a),_=o.sliceDoc(c,c+SearchMargin),b=/\s*$/.exec(d)[0].length,k=/^\s*/.exec(_)[0].length,$=d.length-b;if(d.slice($-e.length,$)==e&&_.slice(k,k+s.length)==s)return{open:{pos:a-b,margin:b&&1},close:{pos:c+k,margin:k&&1}};let j,_e;c-a<=2*SearchMargin?j=_e=o.sliceDoc(a,c):(j=o.sliceDoc(a,a+SearchMargin),_e=o.sliceDoc(c-SearchMargin,c));let et=/^\s*/.exec(j)[0].length,tt=/\s*$/.exec(_e)[0].length,nt=_e.length-tt-s.length;return j.slice(et,et+e.length)==e&&_e.slice(nt,nt+s.length)==s?{open:{pos:a+et+e.length,margin:/\s/.test(j.charAt(et+e.length))?1:0},close:{pos:c-tt-s.length,margin:/\s/.test(_e.charAt(nt-1))?1:0}}:null}function selectedLineRanges(o){let e=[];for(let s of o.selection.ranges){let a=o.doc.lineAt(s.from),c=s.to<=a.to?a:o.doc.lineAt(s.to),d=e.length-1;d>=0&&e[d].to>a.from?e[d].to=c.to:e.push({from:a.from,to:c.to})}return e}function changeBlockComment(o,e,s=e.selection.ranges){let a=s.map(d=>getConfig(e,d.from).block);if(!a.every(d=>d))return null;let c=s.map((d,_)=>findBlockComment(e,a[_],d.from,d.to));if(o!=2&&!c.every(d=>d))return{changes:e.changes(s.map((d,_)=>c[_]?[]:[{from:d.from,insert:a[_].open+" "},{from:d.to,insert:" "+a[_].close}]))};if(o!=1&&c.some(d=>d)){let d=[];for(let _=0,b;_c&&(d==_||_>j.from)){c=j.from;let _e=getConfig(e,$).line;if(!_e)continue;let et=/^\s*/.exec(j.text)[0].length,tt=et==j.length,nt=j.text.slice(et,et+_e.length)==_e?et:-1;etd.comment<0&&(!d.empty||d.single))){let d=[];for(let{line:b,token:k,indent:$,empty:j,single:_e}of a)(_e||!j)&&d.push({from:b.from+$,insert:k+" "});let _=e.changes(d);return{changes:_,selection:e.selection.map(_,1)}}else if(o!=1&&a.some(d=>d.comment>=0)){let d=[];for(let{line:_,comment:b,token:k}of a)if(b>=0){let $=_.from+b,j=$+k.length;_.text[j-_.from]==" "&&j++,d.push({from:$,to:j})}return{changes:d}}return null}const MaxOff=2e3;function rectangleFor(o,e,s){let a=Math.min(e.line,s.line),c=Math.max(e.line,s.line),d=[];if(e.off>MaxOff||s.off>MaxOff||e.col<0||s.col<0){let _=Math.min(e.off,s.off),b=Math.max(e.off,s.off);for(let k=a;k<=c;k++){let $=o.doc.line(k);$.length<=b&&d.push(EditorSelection.range($.from+_,$.to+b))}}else{let _=Math.min(e.col,s.col),b=Math.max(e.col,s.col);for(let k=a;k<=c;k++){let $=o.doc.line(k),j=findColumn($.text,_,o.tabSize,!0);if(j>-1){let _e=findColumn($.text,b,o.tabSize);d.push(EditorSelection.range($.from+j,$.from+_e))}}}return d}function absoluteColumn(o,e){let s=o.coordsAtPos(o.viewport.from);return s?Math.round(Math.abs((s.left-e)/o.defaultCharacterWidth)):-1}function getPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1),a=o.state.doc.lineAt(s),c=s-a.from,d=c>MaxOff?-1:c==a.length?absoluteColumn(o,e.clientX):countColumn(a.text,o.state.tabSize,s-a.from);return{line:a.number,col:d,off:c}}function rectangleSelectionStyle(o,e){let s=getPos(o,e),a=o.state.selection;return s?{update(c){if(c.docChanged){let d=c.changes.mapPos(c.startState.doc.line(s.line).from),_=c.state.doc.lineAt(d);s={line:_.number,col:s.col,off:Math.min(s.off,_.length)},a=a.map(c.changes)}},get(c,d,_){let b=getPos(o,c);if(!b)return a;let k=rectangleFor(o.state,s,b);return k.length?_?EditorSelection.create(k.concat(a.ranges)):EditorSelection.create(k):a}}:null}function rectangularSelection(o){let e=(o==null?void 0:o.eventFilter)||(s=>s.altKey&&s.button==0);return EditorView.mouseSelectionStyle.of((s,a)=>e(a)?rectangleSelectionStyle(s,a):null)}let nextTagID=0;class Tag{constructor(e,s,a){this.set=e,this.base=s,this.modified=a,this.id=nextTagID++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let s=new Tag([],null,[]);if(s.set.push(s),e)for(let a of e.set)s.set.push(a);return s}static defineModifier(){let e=new Modifier;return s=>s.modified.indexOf(e)>-1?s:Modifier.get(s.base||s,s.modified.concat(e).sort((a,c)=>a.id-c.id))}}let nextModifierID=0;class Modifier{constructor(){this.instances=[],this.id=nextModifierID++}static get(e,s){if(!s.length)return e;let a=s[0].instances.find(b=>b.base==e&&sameArray(s,b.modified));if(a)return a;let c=[],d=new Tag(c,e,s);for(let b of s)b.instances.push(d);let _=permute(s);for(let b of e.set)for(let k of _)c.push(Modifier.get(b,k));return d}}function sameArray(o,e){return o.length==e.length&&o.every((s,a)=>s==e[a])}function permute(o){let e=[o];for(let s=0;s0&&_e+3==c.length){_=1;break}let et=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(b);if(!et)throw new RangeError("Invalid path: "+c);if(d.push(et[0]=="*"?null:et[0][0]=='"'?JSON.parse(et[0]):et[0]),_e+=et[0].length,_e==c.length)break;let tt=c[_e++];if(_e==c.length&&tt=="!"){_=0;break}if(tt!="/")throw new RangeError("Invalid path: "+c);b=c.slice(_e)}let k=d.length-1,$=d[k];if(!$)throw new RangeError("Invalid path: "+c);let j=new Rule(a,_,k>0?d.slice(0,k):null);e[$]=j.sort(e[$])}}return ruleNodeProp.add(e)}const ruleNodeProp=new NodeProp,highlightStyle=Facet.define({combine(o){return o.length?HighlightStyle.combinedMatch(o):null}}),fallbackHighlightStyle=Facet.define({combine(o){return o.length?o[0].match:null}});function getHighlightStyle(o){return o.facet(highlightStyle)||o.facet(fallbackHighlightStyle)}class Rule{constructor(e,s,a,c){this.tags=e,this.mode=s,this.context=a,this.next=c}sort(e){return!e||e.depth_.facet(EditorView.darkTheme)==(s.themeType=="dark")?[this]:[])),this.fallback=d.concat(fallbackHighlightStyle.of(this))}match(e,s){if(this.scope&&s!=this.scope)return null;for(let a of e.set){let c=this.map[a.id];if(c!==void 0)return a!=e&&(this.map[e.id]=c),c}return this.map[e.id]=this.all}static combinedMatch(e){if(e.length==1)return e[0].match;let s=e.some(a=>a.scope)?void 0:Object.create(null);return(a,c)=>{let d=s&&s[a.id];if(d!==void 0)return d;let _=null;for(let b of e){let k=b.match(a,c);k&&(_=_?_+" "+k:k)}return s&&(s[a.id]=_),_}}static define(e,s){return new HighlightStyle(e,s||{})}static get(e,s,a){let c=getHighlightStyle(e);return c&&c(s,a||NodeType.none)}}class TreeHighlighter{constructor(e){this.markCache=Object.create(null),this.tree=syntaxTree(e.state),this.decorations=this.buildDeco(e,getHighlightStyle(e.state))}update(e){let s=syntaxTree(e.state),a=getHighlightStyle(e.state),c=a!=e.startState.facet(highlightStyle);s.length{a.add(_,b,this.markCache[k]||(this.markCache[k]=Decoration.mark({class:k})))});return a.finish()}}const treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:o=>o.decorations})),nodeStack=[""];class HighlightBuilder{constructor(e,s,a){this.at=e,this.style=s,this.span=a,this.class=""}startSpan(e,s){s!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=s)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,s,a,c,d,_){let{type:b,from:k,to:$}=e;if(k>=a||$<=s)return;nodeStack[d]=b.name,b.isTop&&(_=b);let j=c,_e=b.prop(ruleNodeProp),et=!1;for(;_e;){if(!_e.context||matchContext(_e.context,nodeStack,d)){for(let nt of _e.tags){let st=this.style(nt,_);st&&(j&&(j+=" "),j+=st,_e.mode==1?c+=(c?" ":"")+st:_e.mode==0&&(et=!0))}break}_e=_e.next}if(this.startSpan(e.from,j),et)return;let tt=e.tree&&e.tree.prop(NodeProp.mounted);if(tt&&tt.overlay){let nt=e.node.enter(tt.overlay[0].from+k,1),st=e.firstChild();for(let rt=0,it=k;;rt++){let at=rt=ot||!e.nextSibling())););if(!at||ot>a)break;it=at.to+k,it>s&&(this.highlightRange(nt.cursor,Math.max(s,at.from+k),Math.min(a,it),c,d,tt.tree.type),this.startSpan(it,j))}st&&e.parent()}else if(e.firstChild()){do if(!(e.to<=s)){if(e.from>=a)break;this.highlightRange(e,s,a,c,d+1,_),this.startSpan(Math.min(a,e.to),j)}while(e.nextSibling());e.parent()}}}function highlightTreeRange(o,e,s,a,c){let d=new HighlightBuilder(e,a,c);d.highlightRange(o.cursor(),e,s,"",0,o.type),d.flush(s)}function matchContext(o,e,s){if(o.length>s-1)return!1;for(let a=s-1,c=o.length-1;c>=0;c--,a--){let d=o[c];if(d&&d!=e[a])return!1}return!0}const t=Tag.define,comment=t(),name=t(),typeName=t(name),propertyName=t(name),literal=t(),string=t(literal),number=t(literal),content=t(),heading=t(content),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment,lineComment:t(comment),blockComment:t(comment),docComment:t(comment),name,variableName:t(name),typeName,tagName:t(typeName),propertyName,attributeName:t(propertyName),className:t(name),labelName:t(name),namespace:t(name),macroName:t(name),literal,string,docString:t(string),character:t(string),attributeValue:t(string),number,integer:t(number),float:t(number),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content,heading,heading1:t(heading),heading2:t(heading),heading3:t(heading),heading4:t(heading),heading5:t(heading),heading6:t(heading),contentSeparator:t(content),list:t(content),quote:t(content),emphasis:t(content),strong:t(content),link:t(content),monospace:t(content),strikethrough:t(content),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(),constant:Tag.defineModifier(),function:Tag.defineModifier(),standard:Tag.defineModifier(),local:Tag.defineModifier(),special:Tag.defineModifier()},defaultHighlightStyle=HighlightStyle.define([{tag:tags.link,textDecoration:"underline"},{tag:tags.heading,textDecoration:"underline",fontWeight:"bold"},{tag:tags.emphasis,fontStyle:"italic"},{tag:tags.strong,fontWeight:"bold"},{tag:tags.strikethrough,textDecoration:"line-through"},{tag:tags.keyword,color:"#708"},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:"#219"},{tag:[tags.literal,tags.inserted],color:"#164"},{tag:[tags.string,tags.deleted],color:"#a11"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:"#e40"},{tag:tags.definition(tags.variableName),color:"#00f"},{tag:tags.local(tags.variableName),color:"#30a"},{tag:[tags.typeName,tags.namespace],color:"#085"},{tag:tags.className,color:"#167"},{tag:[tags.special(tags.variableName),tags.macroName],color:"#256"},{tag:tags.definition(tags.propertyName),color:"#00c"},{tag:tags.comment,color:"#940"},{tag:tags.meta,color:"#7a757a"},{tag:tags.invalid,color:"#f00"}]);tags.link,tags.heading,tags.emphasis,tags.strong,tags.keyword,tags.atom,tags.bool,tags.url,tags.labelName,tags.inserted,tags.deleted,tags.literal,tags.string,tags.number,tags.regexp,tags.escape,tags.string,tags.variableName,tags.variableName,tags.variableName,tags.variableName,tags.propertyName,tags.typeName,tags.namespace,tags.className,tags.macroName,tags.propertyName,tags.operator,tags.comment,tags.meta,tags.invalid,tags.punctuation;class SelectedDiagnostic{constructor(e,s,a){this.from=e,this.to=s,this.diagnostic=a}}class LintState{constructor(e,s,a){this.diagnostics=e,this.panel=s,this.selected=a}static init(e,s,a){let c=Decoration.set(e.map(d=>d.from==d.to||d.from==d.to-1&&a.doc.lineAt(d.from).to==d.from?Decoration.widget({widget:new DiagnosticWidget(d),diagnostic:d}).range(d.from):Decoration.mark({attributes:{class:"cm-lintRange cm-lintRange-"+d.severity},diagnostic:d}).range(d.from,d.to)),!0);return new LintState(c,s,findDiagnostic(c))}}function findDiagnostic(o,e=null,s=0){let a=null;return o.between(s,1e9,(c,d,{spec:_})=>{if(!(e&&_.diagnostic!=e))return a=new SelectedDiagnostic(c,d,_.diagnostic),!1}),a}function maybeEnableLint(o,e){return o.field(lintState,!1)?e:e.concat(StateEffect.appendConfig.of([lintState,EditorView.decorations.compute([lintState],s=>{let{selected:a,panel:c}=s.field(lintState);return!a||!c||a.from==a.to?Decoration.none:Decoration.set([activeMark.range(a.from,a.to)])}),hoverTooltip(lintTooltip),baseTheme]))}const setDiagnosticsEffect=StateEffect.define(),togglePanel=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(o,e){if(e.docChanged){let s=o.diagnostics.map(e.changes),a=null;if(o.selected){let c=e.changes.mapPos(o.selected.from,1);a=findDiagnostic(s,o.selected.diagnostic,c)||findDiagnostic(s,null,c)}o=new LintState(s,o.panel,a)}for(let s of e.effects)s.is(setDiagnosticsEffect)?o=LintState.init(s.value,o.panel,e.state):s.is(togglePanel)?o=new LintState(o.diagnostics,s.value?LintPanel.open:null,o.selected):s.is(movePanelSelection)&&(o=new LintState(o.diagnostics,o.panel,s.value));return o},provide:o=>[showPanel.from(o,e=>e.panel),EditorView.decorations.from(o,e=>e.diagnostics)]}),activeMark=Decoration.mark({class:"cm-lintRange cm-lintRange-active"});function lintTooltip(o,e,s){let{diagnostics:a}=o.state.field(lintState),c=[],d=2e8,_=0;return a.between(e-(s<0?1:0),e+(s>0?1:0),(b,k,{spec:$})=>{e>=b&&e<=k&&(b==k||(e>b||s>0)&&(erenderDiagnostic(o,s,!1)))}const openLintPanel=o=>{let e=o.state.field(lintState,!1);(!e||!e.panel)&&o.dispatch({effects:maybeEnableLint(o.state,[togglePanel.of(!0)])});let s=getPanel(o,LintPanel.open);return s&&s.dom.querySelector(".cm-panel-lint ul").focus(),!0},closeLintPanel=o=>{let e=o.state.field(lintState,!1);return!e||!e.panel?!1:(o.dispatch({effects:togglePanel.of(!1)}),!0)},nextDiagnostic=o=>{let e=o.state.field(lintState,!1);if(!e)return!1;let s=o.state.selection.main,a=e.diagnostics.iter(s.to+1);return!a.value&&(a=e.diagnostics.iter(0),!a.value||a.from==s.from&&a.to==s.to)?!1:(o.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0}),!0)},lintKeymap=[{key:"Mod-Shift-m",run:openLintPanel},{key:"F8",run:nextDiagnostic}];function assignKeys(o){let e=[];if(o)e:for(let{name:s}of o){for(let a=0;ad.toLowerCase()==c.toLowerCase())){e.push(c);continue e}}e.push("")}return e}function renderDiagnostic(o,e,s){var a;let c=s?assignKeys(e.actions):[];return crelt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},crelt("span",{class:"cm-diagnosticText"},e.message),(a=e.actions)===null||a===void 0?void 0:a.map((d,_)=>{let b=_e=>{_e.preventDefault();let et=findDiagnostic(o.state.field(lintState).diagnostics,e);et&&d.apply(o,et.from,et.to)},{name:k}=d,$=c[_]?k.indexOf(c[_]):-1,j=$<0?k:[k.slice(0,$),crelt("u",k.slice($,$+1)),k.slice($+1)];return crelt("button",{type:"button",class:"cm-diagnosticAction",onclick:b,onmousedown:b,"aria-label":` Action: ${k}${$<0?"":` (access key "${c[_]})"`}.`},j)}),e.source&&crelt("div",{class:"cm-diagnosticSource"},e.source))}class DiagnosticWidget extends WidgetType{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return crelt("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class PanelItem{constructor(e,s){this.diagnostic=s,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=renderDiagnostic(e,s,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class LintPanel{constructor(e){this.view=e,this.items=[];let s=c=>{if(c.keyCode==27)closeLintPanel(this.view),this.view.focus();else if(c.keyCode==38||c.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(c.keyCode==40||c.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(c.keyCode==36)this.moveSelection(0);else if(c.keyCode==35)this.moveSelection(this.items.length-1);else if(c.keyCode==13)this.view.focus();else if(c.keyCode>=65&&c.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:d}=this.items[this.selectedIndex],_=assignKeys(d.actions);for(let b=0;b<_.length;b++)if(_[b].toUpperCase().charCodeAt(0)==c.keyCode){let k=findDiagnostic(this.view.state.field(lintState).diagnostics,d);k&&d.actions[b].apply(e,k.from,k.to)}}else return;c.preventDefault()},a=c=>{for(let d=0;dcloseLintPanel(this.view)},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(lintState).selected;if(!e)return-1;for(let s=0;s{let $=-1,j;for(let _e=a;_ea&&(this.items.splice(a,$-a),c=!0)),s&&j.diagnostic==s.diagnostic?j.dom.hasAttribute("aria-selected")||(j.dom.setAttribute("aria-selected","true"),d=j):j.dom.hasAttribute("aria-selected")&&j.dom.removeAttribute("aria-selected"),a++});a({sel:d.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:_,panel:b})=>{_.topb.bottom&&(this.list.scrollTop+=_.bottom-b.bottom)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),c&&this.sync()}sync(){let e=this.list.firstChild;function s(){let a=e;e=a.nextSibling,a.remove()}for(let a of this.items)if(a.dom.parentNode==this.list){for(;e!=a.dom;)s();e=a.dom.nextSibling}else this.list.insertBefore(a.dom,e);for(;e;)s()}moveSelection(e){if(this.selectedIndex<0)return;let s=this.view.state.field(lintState),a=findDiagnostic(s.diagnostics,this.items[e].diagnostic);!a||this.view.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0,effects:movePanelSelection.of(a)})}static open(e){return new LintPanel(e)}}function svg(o,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(o)}')`}function underline(o){return svg(``,'width="6" height="3"')}const baseTheme=EditorView.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:underline("#d11")},".cm-lintRange-warning":{backgroundImage:underline("orange")},".cm-lintRange-info":{backgroundImage:underline("#999")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/** @license React v17.0.2 + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var f=react.exports,g=60103;reactJsxRuntime_production_min.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var h=Symbol.for;g=h("react.element"),reactJsxRuntime_production_min.Fragment=h("react.fragment")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};function q(o,e,s){var a,c={},d=null,_=null;s!==void 0&&(d=""+s),e.key!==void 0&&(d=""+e.key),e.ref!==void 0&&(_=e.ref);for(a in e)n.call(e,a)&&!p.hasOwnProperty(a)&&(c[a]=e[a]);if(o&&o.defaultProps)for(a in e=o.defaultProps,e)c[a]===void 0&&(c[a]=e[a]);return{$$typeof:g,type:o,key:d,ref:_,props:c,_owner:m.current}}reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;jsxRuntime.exports=reactJsxRuntime_production_min;const jsx=jsxRuntime.exports.jsx,jsxs=jsxRuntime.exports.jsxs,Fragment=jsxRuntime.exports.Fragment;/*! @license ReactCodeMirror - MIT License - Tom Golden (8162045+tbjgolden@users.noreply.github.com) */var __assign=function(){return __assign=Object.assign||function(e){for(var s,a=1,c=arguments.length;a0)&&!(c=a.next()).done;)d.push(c.value)}catch(b){_={error:b}}finally{try{c&&!c.done&&(s=a.return)&&s.call(a)}finally{if(_)throw _.error}}return d}function __spreadArray(o,e,s){if(s||arguments.length===2)for(var a=0,c=e.length,d;as%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,s,a=0){let c=e.parser.context;return new Stack(e,[],s,a,a,0,[],0,c?new StackContext(c,c.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,s){this.stack.push(this.state,s,this.bufferBase+this.buffer.length),this.state=e}reduce(e){let s=e>>19,a=e&65535,{parser:c}=this.p,d=c.dynamicPrecedence(a);if(d&&(this.score+=d),s==0){this.pushState(c.getGoto(this.state,a,!0),this.reducePos),a_;)this.stack.pop();this.reduceContext(a,b)}storeNode(e,s,a,c=4,d=!1){if(e==0){let _=this,b=this.buffer.length;if(b==0&&_.parent&&(b=_.bufferBase-_.parent.bufferBase,_=_.parent),b>0&&_.buffer[b-4]==0&&_.buffer[b-1]>-1){if(s==a)return;if(_.buffer[b-2]>=s){_.buffer[b-2]=a;return}}}if(!d||this.pos==a)this.buffer.push(e,s,a,c);else{let _=this.buffer.length;if(_>0&&this.buffer[_-4]!=0)for(;_>0&&this.buffer[_-2]>a;)this.buffer[_]=this.buffer[_-4],this.buffer[_+1]=this.buffer[_-3],this.buffer[_+2]=this.buffer[_-2],this.buffer[_+3]=this.buffer[_-1],_-=4,c>4&&(c-=4);this.buffer[_]=e,this.buffer[_+1]=s,this.buffer[_+2]=a,this.buffer[_+3]=c}}shift(e,s,a){let c=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let d=e,{parser:_}=this.p;(a>this.pos||s<=_.maxNode)&&(this.pos=a,_.stateFlag(d,1)||(this.reducePos=a)),this.pushState(d,c),this.shiftContext(s,c),s<=_.maxNode&&this.buffer.push(s,c,a,4)}else this.pos=a,this.shiftContext(s,c),s<=this.p.parser.maxNode&&this.buffer.push(s,c,a,4)}apply(e,s,a){e&65536?this.reduce(e):this.shift(e,s,a)}useNode(e,s){let a=this.p.reused.length-1;(a<0||this.p.reused[a]!=e)&&(this.p.reused.push(e),a++);let c=this.pos;this.reducePos=this.pos=c+e.length,this.pushState(s,c),this.buffer.push(a,c,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,s=e.buffer.length;for(;s>0&&e.buffer[s-2]>e.reducePos;)s-=4;let a=e.buffer.slice(s),c=e.bufferBase+s;for(;e&&c==e.bufferBase;)e=e.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,a,c,this.curContext,this.lookAhead,e)}recoverByDelete(e,s){let a=e<=this.p.parser.maxNode;a&&this.storeNode(e,this.pos,s,4),this.storeNode(0,this.pos,s,a?8:4),this.pos=this.reducePos=s,this.score-=190}canShift(e){for(let s=new SimulatedStack(this);;){let a=this.p.parser.stateSlot(s.state,4)||this.p.parser.hasAction(s.state,e);if((a&65536)==0)return!0;if(a==0)return!1;s.reduce(a)}}recoverByInsert(e){if(this.stack.length>=300)return[];let s=this.p.parser.nextStates(this.state);if(s.length>4<<1||this.stack.length>=120){let c=[];for(let d=0,_;dk&1&&b==_)||c.push(s[d],_)}s=c}let a=[];for(let c=0;c>19,c=e&65535,d=this.stack.length-a*3;if(d<0||s.getGoto(this.stack[d],c,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reduce(e),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let s=0;sthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class StackContext{constructor(e,s){this.tracker=e,this.context=s,this.hash=e.strict?e.hash(s):0}}var Recover;(function(o){o[o.Insert=200]="Insert",o[o.Delete=190]="Delete",o[o.Reduce=100]="Reduce",o[o.MaxNext=4]="MaxNext",o[o.MaxInsertStackDepth=300]="MaxInsertStackDepth",o[o.DampenInsertStackDepth=120]="DampenInsertStackDepth"})(Recover||(Recover={}));class SimulatedStack{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let s=e&65535,a=e>>19;a==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(a-1)*3;let c=this.start.p.parser.getGoto(this.stack[this.base-3],s,!0);this.state=c}}class StackBufferCursor{constructor(e,s,a){this.stack=e,this.pos=s,this.index=a,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,s=e.bufferBase+e.buffer.length){return new StackBufferCursor(e,s,s-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new StackBufferCursor(this.stack,this.pos,this.index)}}class CachedToken{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const nullToken=new CachedToken;class InputStream{constructor(e,s){this.input=e,this.ranges=s,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=nullToken,this.rangeIndex=0,this.pos=this.chunkPos=s[0].from,this.range=s[0],this.end=s[s.length-1].to,this.readNext()}resolveOffset(e,s){let a=this.range,c=this.rangeIndex,d=this.pos+e;for(;da.to:d>=a.to;){if(c==this.ranges.length-1)return null;let _=this.ranges[++c];d+=_.from-a.to,a=_}return d}peek(e){let s=this.chunkOff+e,a,c;if(s>=0&&s=this.chunk2Pos&&ab.to&&(this.chunk2=this.chunk2.slice(0,b.to-a)),c=this.chunk2.charCodeAt(0)}}return a>=this.token.lookAhead&&(this.token.lookAhead=a+1),c}acceptToken(e,s=0){let a=s?this.resolveOffset(s,-1):this.pos;if(a==null||a=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,s){if(s?(this.token=s,s.start=e,s.lookAhead=e+1,s.value=s.extended=-1):this.token=nullToken,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&s<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,s-this.chunkPos);if(e>=this.chunk2Pos&&s<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,s-this.chunk2Pos);if(e>=this.range.from&&s<=this.range.to)return this.input.read(e,s);let a="";for(let c of this.ranges){if(c.from>=s)break;c.to>e&&(a+=this.input.read(Math.max(c.from,e),Math.min(c.to,s)))}return a}}class TokenGroup{constructor(e,s){this.data=e,this.id=s}token(e,s){readToken(this.data,e,s,this.id)}}TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1;class ExternalTokenizer{constructor(e,s={}){this.token=e,this.contextual=!!s.contextual,this.fallback=!!s.fallback,this.extend=!!s.extend}}function readToken(o,e,s,a){let c=0,d=1<0){let j=o[$];if(b.allows(j)&&(e.token.value==-1||e.token.value==j||_.overrides(j,e.token.value))){e.acceptToken(j);break}}for(let $=e.next,j=0,_e=o[c+2];j<_e;){let et=j+_e>>1,tt=k+et+(et<<1),nt=o[tt],st=o[tt+1];if($=st)j=et+1;else{c=o[tt+2],e.advance();continue e}}break}}function decodeArray(o,e=Uint16Array){if(typeof o!="string")return o;let s=null;for(let a=0,c=0;a=92&&_--,_>=34&&_--;let k=_-32;if(k>=46&&(k-=46,b=!0),d+=k,b)break;d*=46}s?s[c++]=d:s=new e(d)}return s}const verbose=typeof process!="undefined"&&/\bparse\b/.test({}.LOG);let stackIDs=null;var Safety;(function(o){o[o.Margin=25]="Margin"})(Safety||(Safety={}));function cutAt(o,e,s){let a=o.fullCursor();for(a.moveTo(e);;)if(!(s<0?a.childBefore(e):a.childAfter(e)))for(;;){if((s<0?a.toe)&&!a.type.isError)return s<0?Math.max(0,Math.min(a.to-1,e-25)):Math.min(o.length,Math.max(a.from+1,e+25));if(s<0?a.prevSibling():a.nextSibling())break;if(!a.parent())return s<0?0:o.length}}class FragmentCursor{constructor(e,s){this.fragments=e,this.nodeSet=s,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?cutAt(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?cutAt(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=_,null;if(d instanceof Tree){if(_==e){if(_=Math.max(this.safeFrom,e)&&(this.trees.push(d),this.start.push(_),this.index.push(0))}else this.index[s]++,this.nextStart=_+d.length}}}class TokenCache{constructor(e,s){this.stream=s,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(a=>new CachedToken)}getActions(e){let s=0,a=null,{parser:c}=e.p,{tokenizers:d}=c,_=c.stateSlot(e.state,3),b=e.curContext?e.curContext.hash:0,k=0;for(let $=0;$_e.end+25&&(k=Math.max(_e.lookAhead,k)),_e.value!=0)){let et=s;if(_e.extended>-1&&(s=this.addActions(e,_e.extended,_e.end,s)),s=this.addActions(e,_e.value,_e.end,s),!j.extend&&(a=_e,s>et))break}}for(;this.actions.length>s;)this.actions.pop();return k&&e.setLookAhead(k),!a&&e.pos==this.stream.end&&(a=new CachedToken,a.value=e.p.parser.eofTerm,a.start=a.end=e.pos,s=this.addActions(e,a.value,a.end,s)),this.mainToken=a,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let s=new CachedToken,{pos:a,p:c}=e;return s.start=a,s.end=Math.min(a+1,c.stream.end),s.value=a==c.stream.end?c.parser.eofTerm:0,s}updateCachedToken(e,s,a){if(s.token(this.stream.reset(a.pos,e),a),e.value>-1){let{parser:c}=a.p;for(let d=0;d=0&&a.p.parser.dialect.allows(_>>1)){(_&1)==0?e.value=_>>1:e.extended=_>>1;break}}}else e.value=0,e.end=Math.min(a.p.stream.end,a.pos+1)}putAction(e,s,a,c){for(let d=0;de.bufferLength*4?new FragmentCursor(a,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,s=this.minStackPos,a=this.stacks=[],c,d;for(let _=0;_s)a.push(b);else{if(this.advanceStack(b,a,e))continue;{c||(c=[],d=[]),c.push(b);let k=this.tokens.getMainToken(b);d.push(k.value,k.end)}}break}}if(!a.length){let _=c&&findFinished(c);if(_)return this.stackToTree(_);if(this.parser.strict)throw verbose&&c&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+s);this.recovering||(this.recovering=5)}if(this.recovering&&c){let _=this.stoppedAt!=null&&c[0].pos>this.stoppedAt?c[0]:this.runRecovery(c,d,a);if(_)return this.stackToTree(_.forceAll())}if(this.recovering){let _=this.recovering==1?1:this.recovering*3;if(a.length>_)for(a.sort((b,k)=>k.score-b.score);a.length>_;)a.pop();a.some(b=>b.reducePos>s)&&this.recovering--}else if(a.length>1){e:for(let _=0;_500&&$.buffer.length>500)if((b.score-$.score||b.buffer.length-$.buffer.length)>0)a.splice(k--,1);else{a.splice(_--,1);continue e}}}}this.minStackPos=a[0].pos;for(let _=1;_ ":"";if(this.stoppedAt!=null&&c>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let $=e.curContext&&e.curContext.tracker.strict,j=$?e.curContext.hash:0;for(let _e=this.fragments.nodeAt(c);_e;){let et=this.parser.nodeSet.types[_e.type.id]==_e.type?d.getGoto(e.state,_e.type.id):-1;if(et>-1&&_e.length&&(!$||(_e.prop(NodeProp.contextHash)||0)==j))return e.useNode(_e,et),verbose&&console.log(_+this.stackID(e)+` (via reuse of ${d.getName(_e.type.id)})`),!0;if(!(_e instanceof Tree)||_e.children.length==0||_e.positions[0]>0)break;let tt=_e.children[0];if(tt instanceof Tree&&_e.positions[0]==0)_e=tt;else break}}let b=d.stateSlot(e.state,4);if(b>0)return e.reduce(b),verbose&&console.log(_+this.stackID(e)+` (via always-reduce ${d.getName(b&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let k=this.tokens.getActions(e);for(let $=0;$c?s.push(nt):a.push(nt)}return!1}advanceFully(e,s){let a=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>a)return pushStackDedup(e,s),!0}}runRecovery(e,s,a){let c=null,d=!1;for(let _=0;_ ":"";if(b.deadEnd&&(d||(d=!0,b.restart(),verbose&&console.log(j+this.stackID(b)+" (restarted)"),this.advanceFully(b,a))))continue;let _e=b.split(),et=j;for(let tt=0;_e.forceReduce()&&tt<10&&(verbose&&console.log(et+this.stackID(_e)+" (via force-reduce)"),!this.advanceFully(_e,a));tt++)verbose&&(et=this.stackID(_e)+" -> ");for(let tt of b.recoverByInsert(k))verbose&&console.log(j+this.stackID(tt)+" (via recover-insert)"),this.advanceFully(tt,a);this.stream.end>b.pos?($==b.pos&&($++,k=0),b.recoverByDelete(k,$),verbose&&console.log(j+this.stackID(b)+` (via recover-delete ${this.parser.getName(k)})`),pushStackDedup(b,a)):(!c||c.scoreo;class ContextTracker{constructor(e){this.start=e.start,this.shift=e.shift||id,this.reduce=e.reduce||id,this.reuse=e.reuse||id,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class LRParser extends Parser{constructor(e){if(super(),this.wrappers=[],e.version!=13)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (${13})`);let s=e.nodeNames.split(" ");this.minRepeatTerm=s.length;for(let b=0;be.topRules[b][1]),c=[];for(let b=0;b=0)d(j,k,b[$++]);else{let _e=b[$+-j];for(let et=-j;et>0;et--)d(b[$++],k,_e);$++}}}this.nodeSet=new NodeSet(s.map((b,k)=>NodeType.define({name:k>=this.minRepeatTerm?void 0:b,id:k,props:c[k],top:a.indexOf(k)>-1,error:k==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(k)>-1}))),this.strict=!1,this.bufferLength=DefaultBufferLength;let _=decodeArray(e.tokenData);if(this.context=e.context,this.specialized=new Uint16Array(e.specialized?e.specialized.length:0),this.specializers=[],e.specialized)for(let b=0;btypeof b=="number"?new TokenGroup(_,b):b),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,s,a){let c=new Parse(this,e,s,a);for(let d of this.wrappers)c=d(c,e,s,a);return c}getGoto(e,s,a=!1){let c=this.goto;if(s>=c[0])return-1;for(let d=c[s+1];;){let _=c[d++],b=_&1,k=c[d++];if(b&&a)return k;for(let $=d+(_>>1);d<$;d++)if(c[d]==e)return k;if(b)return-1}}hasAction(e,s){let a=this.data;for(let c=0;c<2;c++)for(let d=this.stateSlot(e,c?2:1),_;;d+=3){if((_=a[d])==65535)if(a[d+1]==1)_=a[d=pair(a,d+2)];else{if(a[d+1]==2)return pair(a,d+2);break}if(_==s||_==0)return pair(a,d+1)}return 0}stateSlot(e,s){return this.states[e*6+s]}stateFlag(e,s){return(this.stateSlot(e,0)&s)>0}validAction(e,s){if(s==this.stateSlot(e,4))return!0;for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else return!1;if(s==pair(this.data,a+1))return!0}}nextStates(e){let s=[];for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else break;if((this.data[a+2]&1)==0){let c=this.data[a+1];s.some((d,_)=>_&1&&d==c)||s.push(this.data[a],c)}}return s}overrides(e,s){let a=findOffset(this.data,this.tokenPrecTable,s);return a<0||findOffset(this.data,this.tokenPrecTable,e){let c=e.tokenizers.find(d=>d.from==a);return c?c.to:a})),e.contextTracker&&(s.context=e.contextTracker),e.dialect&&(s.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(s.strict=e.strict),e.wrap&&(s.wrappers=s.wrappers.concat(e.wrap)),e.bufferLength!=null&&(s.bufferLength=e.bufferLength),s}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let s=this.dynamicPrecedences;return s==null?0:s[e]||0}parseDialect(e){let s=Object.keys(this.dialects),a=s.map(()=>!1);if(e)for(let d of e.split(" ")){let _=s.indexOf(d);_>=0&&(a[_]=!0)}let c=null;for(let d=0;da)&&s.p.parser.stateFlag(s.state,2)&&(!e||e.score{let{next:s}=o;(s==braceR||s==-1||e.context)&&e.canShift(insertSemi)&&o.acceptToken(insertSemi)},{contextual:!0,fallback:!0}),noSemicolon=new ExternalTokenizer((o,e)=>{let{next:s}=o,a;space.indexOf(s)>-1||s==slash&&((a=o.peek(1))==slash||a==star)||s!=braceR&&s!=semicolon&&s!=-1&&!e.context&&e.canShift(noSemi)&&o.acceptToken(noSemi)},{contextual:!0}),incdecToken=new ExternalTokenizer((o,e)=>{let{next:s}=o;if((s==plus||s==minus)&&(o.advance(),s==o.next)){o.advance();let a=!e.context&&e.canShift(incdec);o.acceptToken(a?incdec:incdecPrefix)}},{contextual:!0}),template=new ExternalTokenizer(o=>{for(let e=!1,s=0;;s++){let{next:a}=o;if(a<0){s&&o.acceptToken(templateContent);break}else if(a==backtick){s?o.acceptToken(templateContent):o.acceptToken(templateEnd,1);break}else if(a==braceL&&e){s==1?o.acceptToken(InterpolationStart,1):o.acceptToken(templateContent,-1);break}else if(a==10&&s){o.advance(),o.acceptToken(templateContent);break}else a==backslash&&o.advance();e=a==dollar,o.advance()}});function tsExtends(o,e){return o=="extends"&&e.dialectEnabled(Dialect_ts)?TSExtends:-1}const spec_identifier={__proto__:null,export:18,as:23,from:29,default:32,async:37,function:38,this:48,true:56,false:56,void:66,typeof:70,null:86,super:88,new:122,await:139,yield:141,delete:142,class:152,extends:154,public:197,private:197,protected:197,readonly:199,instanceof:220,in:222,const:224,import:256,keyof:307,unique:311,infer:317,is:351,abstract:371,implements:373,type:375,let:378,var:380,interface:387,enum:391,namespace:397,module:399,declare:403,global:407,for:428,of:437,while:440,with:444,do:448,if:452,else:454,switch:458,case:464,try:470,catch:472,finally:474,return:478,throw:482,break:486,continue:490,debugger:494},spec_word={__proto__:null,async:109,get:111,set:113,public:161,private:161,protected:161,static:163,abstract:165,override:167,readonly:173,new:355},spec_LessThan={__proto__:null,"<":129},parser=LRParser.deserialize({version:13,states:"$1jO`QYOOO'QQ!LdO'#ChO'XOSO'#DVO)dQYO'#D]O)tQYO'#DhO){QYO'#DrO-xQYO'#DxOOQO'#E]'#E]O.]QWO'#E[O.bQWO'#E[OOQ!LS'#Ef'#EfO0aQ!LdO'#IrO2wQ!LdO'#IsO3eQWO'#EzO3jQpO'#FaOOQ!LS'#FS'#FSO3rO!bO'#FSO4QQWO'#FhO5_QWO'#FgOOQ!LS'#Is'#IsOOQ!LQ'#Ir'#IrOOQQ'#J['#J[O5dQWO'#HnO5iQ!LYO'#HoOOQQ'#If'#IfOOQQ'#Hp'#HpQ`QYOOO){QYO'#DjO5qQWO'#G[O5vQ#tO'#CmO6UQWO'#EZO6aQWO'#EgO6fQ#tO'#FRO7QQWO'#G[O7VQWO'#G`O7bQWO'#G`O7pQWO'#GcO7pQWO'#GdO7pQWO'#GfO5qQWO'#GiO8aQWO'#GlO9oQWO'#CdO:PQWO'#GyO:XQWO'#HPO:XQWO'#HRO`QYO'#HTO:XQWO'#HVO:XQWO'#HYO:^QWO'#H`O:cQ!LZO'#HdO){QYO'#HfO:nQ!LZO'#HhO:yQ!LZO'#HjO5iQ!LYO'#HlO){QYO'#DWOOOS'#Hr'#HrO;UOSO,59qOOQ!LS,59q,59qO=gQbO'#ChO=qQYO'#HsO>UQWO'#ItO@TQbO'#ItO'dQYO'#ItO@[QWO,59wO@rQ&jO'#DbOAkQWO'#E]OAxQWO'#JPOBTQWO'#JOOBTQWO'#JOOB]QWO,5:yOBbQWO'#I}OBiQWO'#DyO5vQ#tO'#EZOBwQWO'#EZOCSQ`O'#FROOQ!LS,5:S,5:SOC[QYO,5:SOEYQ!LdO,5:^OEvQWO,5:dOFaQ!LYO'#I|O7VQWO'#I{OFhQWO'#I{OFpQWO,5:xOFuQWO'#I{OGTQYO,5:vOITQWO'#EWOJ_QWO,5:vOKnQWO'#DlOKuQYO'#DqOLPQ&jO,5;PO){QYO,5;POOQQ'#Er'#ErOOQQ'#Et'#EtO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;ROOQQ'#Ex'#ExOLXQYO,5;cOOQ!LS,5;h,5;hOOQ!LS,5;i,5;iONXQWO,5;iOOQ!LS,5;j,5;jO){QYO'#H}ON^Q!LYO,5YOOQQ'#Ii'#IiOOQQ,5>Z,5>ZOOQQ-E;n-E;nO!+YQ!LdO,5:UOOQ!LQ'#Cp'#CpO!+yQ#tO,5O,5>OO){QYO,5>OO5iQ!LYO,5>QOOQQ,5>S,5>SO!8VQWO,5>SOOQQ,5>U,5>UO!8VQWO,5>UOOQQ,5>W,5>WO!8[Q`O,59rOOOS-E;p-E;pOOQ!LS1G/]1G/]O!8aQbO,5>_O'dQYO,5>_OOQO,5>d,5>dO!8kQYO'#HsOOQO-E;q-E;qO!8xQWO,5?`O!9QQbO,5?`O!9XQWO,5?jOOQ!LS1G/c1G/cO!9aQpO'#DTOOQO'#Iv'#IvO){QYO'#IvO!:OQpO'#IvO!:mQpO'#DcO!;OQ&jO'#DcO!=ZQYO'#DcO!=bQWO'#IuO!=jQWO,59|O!=oQWO'#EaO!=}QWO'#JQO!>VQWO,5:zO!>mQ&jO'#DcO){QYO,5?kO!>wQWO'#HxOOQO-E;v-E;vO!9XQWO,5?jOOQ!LQ1G0e1G0eO!@TQ&jO'#D|OOQ!LS,5:e,5:eO){QYO,5:eOITQWO,5:eO!@[QWO,5:eO:^QWO,5:uO!,rQpO,5:uO!,zQ#tO,5:uO5vQ#tO,5:uOOQ!LS1G/n1G/nOOQ!LS1G0O1G0OOOQ!LQ'#EV'#EVO){QYO,5?hO!@gQ!LYO,5?hO!@xQ!LYO,5?hO!APQWO,5?gO!AXQWO'#HzO!APQWO,5?gOOQ!LQ1G0d1G0dO7VQWO,5?gOOQ!LS1G0b1G0bO!AsQ!LdO1G0bO!BdQ!LbO,5:rOOQ!LS'#Fq'#FqO!CQQ!LdO'#IoOGTQYO1G0bO!EPQ#tO'#IwO!EZQWO,5:WO!E`QbO'#IxO){QYO'#IxO!EjQWO,5:]OOQ!LS'#DT'#DTOOQ!LS1G0k1G0kO!EoQWO1G0kO!HQQ!LdO1G0mO!HXQ!LdO1G0mO!JlQ!LdO1G0mO!JsQ!LdO1G0mO!LzQ!LdO1G0mO!M_Q!LdO1G0mO#!OQ!LdO1G0mO#!VQ!LdO1G0mO#$jQ!LdO1G0mO#$qQ!LdO1G0mO#&fQ!LdO1G0mO#)`Q7^O'#ChO#+ZQ7^O1G0}O#-UQ7^O'#IsOOQ!LS1G1T1G1TO#-iQ!LdO,5>iOOQ!LQ-E;{-E;{O#.YQ!LdO1G0mOOQ!LS1G0m1G0mO#0[Q!LdO1G1QO#0{QpO,5;sO#1QQpO,5;tO#1VQpO'#F[O#1kQWO'#FZOOQO'#JU'#JUOOQO'#H{'#H{O#1pQpO1G1]OOQ!LS1G1]1G1]OOOO1G1f1G1fO#2OQ7^O'#IrO#2YQWO,5;}OLXQYO,5;}OOOO-E;z-E;zOOQ!LS1G1Y1G1YOOQ!LS,5VQ&jO'#GhOOQQ1G2l1G2lO!&wQ&jO'#IWO!0OQ`O1G2oOOQQ1G2o1G2oOOQQ,5=Y,5=YO#>_Q#tO,5=[O5qQWO,5=[O#5YQWO,5=_O5_QWO,5=_O!,rQpO,5=_O!,zQ#tO,5=_O5vQ#tO,5=_O#>pQWO'#J_O#>{QWO,5=`OOQQ1G.j1G.jO#?QQ!LYO1G.jO#?]QWO1G.jO#?bQWO1G.jO5iQ!LYO1G.jO#?jQbO,5?|O#?tQWO,5?|O#@PQYO,5=gO#@WQWO,5=gO7VQWO,5?|OOQQ1G3P1G3PO`QYO1G3POOQQ1G3V1G3VOOQQ1G3X1G3XO:XQWO1G3ZO#@]QYO1G3]O#DWQYO'#H[OOQQ1G3`1G3`O:^QWO1G3fO#DeQWO1G3fO5iQ!LYO1G3jOOQQ1G3l1G3lOOQ!LQ'#Fx'#FxO5iQ!LYO1G3nO5iQ!LYO1G3pOOOS1G/^1G/^O#DmQ`O,5_O#EPQWO1G4zO#EXQWO1G5UO#EaQWO,5?bOLXQYO,5:{O7VQWO,5:{O:^QWO,59}OLXQYO,59}O!,rQpO,59}O#EfQ7^O,59}OOQO,5:{,5:{O#EpQ&jO'#HtO#FWQWO,5?aOOQ!LS1G/h1G/hO#F`Q&jO'#HyO#FtQWO,5?lOOQ!LQ1G0f1G0fO!;OQ&jO,59}O#F|QbO1G5VO7VQWO,5>dOOQ!LQ'#ES'#ESO#GWQ!LrO'#ETO!?{Q&jO'#D}OOQO'#Hw'#HwO#GrQ&jO,5:hOOQ!LS,5:h,5:hO#GyQ&jO'#D}O#H[Q&jO'#D}O#HcQ&jO'#EYO#HfQ&jO'#ETO#HsQ&jO'#ETO!?{Q&jO'#ETO#IWQWO1G0PO#I]Q`O1G0POOQ!LS1G0P1G0PO){QYO1G0POITQWO1G0POOQ!LS1G0a1G0aO:^QWO1G0aO!,rQpO1G0aO!,zQ#tO1G0aO#IdQ!LdO1G5SO){QYO1G5SO#ItQ!LYO1G5SO#JVQWO1G5RO7VQWO,5>fOOQO,5>f,5>fO#J_QWO,5>fOOQO-E;x-E;xO#JVQWO1G5RO#JmQ!LdO,59jO#LlQ!LdO,5k,5>kO$(]QWO,5>kOOQ!LS1G2P1G2PP$(bQWO'#IPPOQ!LS-E;}-E;}O$)RQ#tO1G2[O$)tQ#tO1G2^O$*OQ#tO1G2`OOQ!LS1G1x1G1xO$*VQWO'#IOO$*eQWO,5?sO$*eQWO,5?sO$*mQWO,5?sO$*xQWO,5?sOOQO1G1z1G1zO$+WQ#tO1G1yO$+hQWO'#IQO$+xQWO,5?tOITQWO,5?tO$,QQ`O,5?tOOQ!LS1G1}1G1}O5iQ!LYO,5n,5>nOOQO-Ev,5>vOOQO-Ep,5>pOOQ!LQ-Er,5>rOOQO-E`,5>`OOQO-E;r-E;rOOQO,5>e,5>eOOQO-E;w-E;wO!,rQpO1G/iO:^QWO,5:iOOQO,5:o,5:oO){QYO,5:oO$9pQ!LYO,5:oO$9{Q!LYO,5:oO!,rQpO,5:iOOQO-E;u-E;uOOQ!LS1G0S1G0SO!?{Q&jO,5:iO$:ZQ&jO,5:iO$:lQ!LrO,5:oO$;WQ&jO,5:iO!?{Q&jO,5:oOOQO,5:t,5:tO$;_Q&jO,5:oO$;lQ!LYO,5:oOOQ!LS7+%k7+%kO#IWQWO7+%kO#I]Q`O7+%kOOQ!LS7+%{7+%{O:^QWO7+%{O!,rQpO7+%{O$lQ!LdO1G2^O$@nQ!LdO1G1yO$BvQ#tO,5>aOOQO-E;s-E;sO$CQQbO,5>bO){QYO,5>bOOQO-E;t-E;tO$C[QWO1G5OO$CdQ7^O1G0bO$EkQ7^O1G0mO$ErQ7^O1G0mO$GsQ7^O1G0mO$GzQ7^O1G0mO$IoQ7^O1G0mO$JSQ7^O1G0mO$LaQ7^O1G0mO$LhQ7^O1G0mO$NiQ7^O1G0mO$NpQ7^O1G0mO%!eQ7^O1G0mO%!xQ!LdO<iOOOO7+'T7+'TOOOS1G/R1G/ROOQ!LS1G4V1G4VOJdQWO7+'zO%'rQWO,5>jO5qQWO,5>jOOQO-E;|-E;|O%(QQWO1G5_O%(QQWO1G5_O%(YQWO1G5_O%(eQ`O,5>lO%(oQWO,5>lOITQWO,5>lOOQO-Eu,5>uO%,RQWO,5>uO%,WQWO,5>uOOQO-EtOOQO-ERQ#tO<cQWO1G4UO%>nQWO1G4UO%>|QWO7+*yO%>|QWO7+*yOITQWO1G4WO%?UQ`O1G4WO%?`QWO7+*zOOQO7+'o7+'oO5iQ!LYO7+'oOOQO7+'n7+'nO$,[QWO7+'pO%?hQ`O7+'pOOQO7+'t7+'tO5iQ!LYO7+'nO$,[QWO7+'oO%?oQWO7+'pOITQWO7+'pO#5TQWO7+'oO%?tQ#tO<oOOQO-EqOOQO-E{AN>{OOQOAN>uAN>uO%0}Q!LdOAN>{O:^QWOAN>uO){QYOAN>{O!,rQpOAN>uO&(PQ!LYOAN>{O&([Q7^O<^O!O&OO~Ox&RO!W&]O!X&UO!Y&UO'[$bO~O]&SOk&SO!Q&VO'e&PO!S'iP!S'tP~P@aO!O'qX!R'qX!]'qX!c'qX'n'qX~O!{'qX#W#PX!S'qX~PAYO!{&^O!O'sX!R'sX~O!R&_O!O'rX~O!O&bO~O!{#eO~PAYOS&fO!T&cO!o&eO'Z$`O~Oc&kO!d$XO'Z$`O~Ou$nO!d$mO~O!S&lO~P`Ou!{Ov!{Ox!|O!b!yO!d!zO'dQOP!faZ!faj!fa!R!fa!a!fa!j!fa#[!fa#]!fa#^!fa#_!fa#`!fa#a!fa#b!fa#c!fa#e!fa#g!fa#i!fa#j!fa'n!fa'u!fa'v!fa~O_!fa'U!fa!O!fa!c!fan!fa!T!fa%Q!fa!]!fa~PCcO!c&mO~O!]!wO!{&oO'n&nO!R'pX_'pX'U'pX~O!c'pX~PE{O!R&sO!c'oX~O!c&uO~Ox$tO!T$uO#V&vO'Z$`O~OPTOQTO]cOb!kOc!jOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!TSO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!n!iO#t!lO#x^O'Z9YO'dQO'mYO'zaO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'Z&zO'd#sO~O#W&|O~O]#qOh$OOj#rOk#qOl#qOq$POs$QOx#xO!T#yO!_$VO!d#vO#V$WO#t$TO$_$RO$a$SO$d$UO'Z&zO'd#sO~O'_'kP~PJdO!Q'QO!c'lP~P){O'e'SO'mYO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!d!zO~O!R#bO_$]a'U$]a!c$]a!O$]a!T$]a%Q$]a!]$]a~O#d'iO~PITO!]'kO!T'wX#w'wX#z'wX$R'wX~Ou'lO~P! POu'lO!T'wX#w'wX#z'wX$R'wX~O!T'nO#w'rO#z'mO$R'sO~O!Q'vO~PLXO#z#fO$R'yO~Ou$eXx$eX!b$eX'n$eX'u$eX'v$eX~OSfX!RfX!{fX'_fX'_$eX~P!!iOk'{O~OR'|O'S'}O'T(PO~Ou(ROx(SO'n#[O'u(UO'v(WO~O'_(QO~P!#rO'_(ZO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~O!Q(_O'Z([O!c'{P~P!$aO#W(aO~O!Q(eO'Z(bO!O'|P~P!$aO_(nOj(sOx(kO!W(qO!X(jO!Y(jO!d(hO!x(rO$w(mO'[$bO'e(gO~O!S(pO~P!&XO!b!yOu'cXx'cX'n'cX'u'cX'v'cX!R'cX!{'cX~O'_'cX#m'cX~P!'TOS(vO!{(uO!R'bX'_'bX~O!R(wO'_'aX~O'Z(yO~O!d)OO~O'Z&zO~O!d(hO~Ox$tO!Q!rO!T$uO#U!uO#V!rO'Z$`O!c'oP~O!]!wO#W)SO~OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO#j#ZO'dQO'n#[O'u!}O'v#OO~O_!^a!R!^a'U!^a!O!^a!c!^an!^a!T!^a%Q!^a!]!^a~P!)fOS)[O!T&cO!o)ZO%Q)YO'`$cO~O'Z$zO'_'aP~O!])_O!T'^X_'^X'U'^X~O!d$XO'`$cO~O!d$XO'Z$`O'`$cO~O!]!wO#W&|O~O])jO%R)kO'Z)gO!S(TP~O!R)lO^(SX~O'e'SO~OZ)pO~O^)qO~O!T$kO'Z$`O'[$bO^(SP~Ox$tO!Q)vO!R&_O!T$uO'Z$`O!O'rP~O]&YOk&YO!Q)wO'e'SO!S'tP~O!R)xO_(PX'U(PX~O!{)|O'`$cO~OS*PO!T#yO'`$cO~O!T*RO~Ou*TO!TSO~O!n*YO~Oc*_O~O'Z(yO!S(RP~Oc$iO~O%RtO'Z$zO~P8tOZ*eO^*dO~OPTOQTO]cObnOcmOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!nlO#x^O%PqO'dQO'mYO'zaO~O!T!bO#t!lO'Z9YO~P!1RO^*dO_$[O'U$[O~O_*iO#d*kO%T*kO%U*kO~P){O!d%_O~O%t*pO~O!T*rO~O&U*uO&V*tOP&SaQ&SaX&Sa]&Sa_&Sab&Sac&Sah&Saj&Sak&Sal&Saq&Sas&Sax&Sa{&Sa|&Sa}&Sa!T&Sa!_&Sa!d&Sa!g&Sa!h&Sa!i&Sa!j&Sa!k&Sa!n&Sa#d&Sa#t&Sa#x&Sa%P&Sa%R&Sa%T&Sa%U&Sa%X&Sa%Z&Sa%^&Sa%_&Sa%a&Sa%n&Sa%t&Sa%v&Sa%x&Sa%z&Sa%}&Sa&T&Sa&X&Sa&Z&Sa&]&Sa&_&Sa&a&Sa'Q&Sa'Z&Sa'd&Sa'm&Sa'z&Sa!S&Sa%{&Sa`&Sa&Q&Sa~O'Z*xO~On*{O~O!O&ga!R&ga~P!)fO!Q+PO!O&gX!R&gX~P){O!R%yO!O'ha~O!O'ha~P>^O!R&_O!O'ra~O!RwX!R!ZX!SwX!S!ZX!]wX!]!ZX!d!ZX!{wX'`!ZX~O!]+UO!{+TO!R#TX!R'jX!S#TX!S'jX!]'jX!d'jX'`'jX~O!]+WO!d$XO'`$cO!R!VX!S!VX~O]&QOk&QOx&RO'e(gO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'dQO'mYO'z:kO~O'Z9vO~P!;^O!R+[O!S'iX~O!S+^O~O!]+UO!{+TO!R#TX!S#TX~O!R+_O!S'tX~O!S+aO~O]&QOk&QOx&RO'[$bO'e(gO~O!X+bO!Y+bO~P!>[Ox$tO!Q+dO!T$uO'Z$`O!O&lX!R&lX~O_+hO!W+kO!X+gO!Y+gO!r+oO!s+mO!t+nO!u+lO!x+pO'[$bO'e(gO'm+eO~O!S+jO~P!?]OS+uO!T&cO!o+tO~O!{+{O!R'pa!c'pa_'pa'U'pa~O!]!wO~P!@gO!R&sO!c'oa~Ox$tO!Q,OO!T$uO#U,QO#V,OO'Z$`O!R&nX!c&nX~O_#Oi!R#Oi'U#Oi!O#Oi!c#Oin#Oi!T#Oi%Q#Oi!]#Oi~P!)fO#W!za!R!za!c!za!{!za!T!za_!za'U!za!O!za~P!#rO#W'cXP'cXZ'cX_'cXj'cXv'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX'U'cX'd'cX!c'cX!O'cX!T'cXn'cX%Q'cX!]'cX~P!'TO!R,ZO'_'kX~P!#rO'_,]O~O!R,^O!c'lX~P!)fO!c,aO~O!O,bO~OP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zi_#Zij#Zi!R#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O#[#Zi~P!EtO#[#PO~P!EtOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO'dQOZ#Zi_#Zi!R#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~Oj#Zi~P!H`Oj#RO~P!H`OP#^Oj#ROu!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO'dQO_#Zi!R#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P!JzOZ#dO!a#TO#a#TO#b#TO#c#TO~P!JzOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO'dQO_#Zi!R#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'u#Zi~P!MrO'u!}O~P!MrOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO'dQO'u!}O_#Zi!R#Zi#i#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'v#Zi~P#!^O'v#OO~P#!^OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO'dQO'u!}O'v#OO~O_#Zi!R#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P#$xOP[XZ[Xj[Xu[Xv[Xx[X!a[X!b[X!d[X!j[X!{[X#WdX#[[X#][X#^[X#_[X#`[X#a[X#b[X#c[X#e[X#g[X#i[X#j[X#o[X'd[X'n[X'u[X'v[X!R[X!S[X~O#m[X~P#']OP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO#j9gO'dQO'n#[O'u!}O'v#OO~O#m,dO~P#)gOP'gXZ'gXj'gXu'gXv'gXx'gX!a'gX!b'gX!d'gX!j'gX#['gX#]'gX#^'gX#_'gX#`'gX#a'gX#b'gX#e'gX#g'gX#i'gX#j'gX'd'gX'n'gX'u'gX'v'gX!R'gX~O!{9kO#o9kO#c'gX#m'gX!S'gX~P#+bO_&qa!R&qa'U&qa!c&qan&qa!O&qa!T&qa%Q&qa!]&qa~P!)fOP#ZiZ#Zi_#Zij#Ziv#Zi!R#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'd#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P!#rO_#ni!R#ni'U#ni!O#ni!c#nin#ni!T#ni%Q#ni!]#ni~P!)fO#z,fO~O#z,gO~O!]'kO!{,hO!T$OX#w$OX#z$OX$R$OX~O!Q,iO~O!T'nO#w,kO#z'mO$R,lO~O!R9hO!S'fX~P#)gO!S,mO~O$R,oO~OR'|O'S'}O'T,rO~O],uOk,uO!O,vO~O!RdX!]dX!cdX!c$eX'ndX~P!!iO!c,|O~P!#rO!R,}O!]!wO'n&nO!c'{X~O!c-SO~O!O$eX!R$eX!]$lX~P!!iO!R-UO!O'|X~P!#rO!]-WO~O!O-YO~O!Q(_O'Z$`O!c'{P~Oj-^O!]!wO!d$XO'`$cO'n&nO~O!])_O~O!S-dO~P!&XO!X-eO!Y-eO'[$bO'e(gO~Ox-gO'e(gO~O!x-hO~O'Z$zO!R&vX'_&vX~O!R(wO'_'aa~Ou-mOv-mOx-nO'nra'ura'vra!Rra!{ra~O'_ra#mra~P#6fOu(ROx(SO'n$^a'u$^a'v$^a!R$^a!{$^a~O'_$^a#m$^a~P#7[Ou(ROx(SO'n$`a'u$`a'v$`a!R$`a!{$`a~O'_$`a#m$`a~P#7}O]-oO~O#W-pO~O'_$na!R$na#m$na!{$na~P!#rO#W-sO~OS-|O!T&cO!o-{O%Q-zO~O'_-}O~O]#qOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~Oh.PO'Z.OO~P#9tO!])_O!T'^a_'^a'U'^a~O#W.VO~OZ[X!RdX!SdX~O!R.WO!S(TX~O!S.YO~OZ.ZO~O].]O'Z)gO~O!T$kO'Z$`O^'OX!R'OX~O!R)lO^(Sa~O!c.`O~P!)fO].bO~OZ.cO~O^.dO~OS-|O!T&cO!o-{O%Q-zO'`$cO~O!R)xO_(Pa'U(Pa~O!{.jO~OS.mO!T#yO~O'e'SO!S(QP~OS.wO!T.sO!o.vO%Q.uO'`$cO~OZ/RO!R/PO!S(RX~O!S/SO~O^/UO_$[O'U$[O~O]/VO~O]/WO'Z(yO~O#c/XO%r/YO~P0zO!{#eO#c/XO%r/YO~O_/ZO~P){O_/]O~O%{/aOP%yiQ%yiX%yi]%yi_%yib%yic%yih%yij%yik%yil%yiq%yis%yix%yi{%yi|%yi}%yi!T%yi!_%yi!d%yi!g%yi!h%yi!i%yi!j%yi!k%yi!n%yi#d%yi#t%yi#x%yi%P%yi%R%yi%T%yi%U%yi%X%yi%Z%yi%^%yi%_%yi%a%yi%n%yi%t%yi%v%yi%x%yi%z%yi%}%yi&T%yi&X%yi&Z%yi&]%yi&_%yi&a%yi'Q%yi'Z%yi'd%yi'm%yi'z%yi!S%yi`%yi&Q%yi~O`/gO!S/eO&Q/fO~P`O!TSO!d/jO~O!R#bOn$]a~O!O&gi!R&gi~P!)fO!R%yO!O'hi~O!R&_O!O'ri~O!O/nO~O!R!Va!S!Va~P#)gO]&QOk&QO!Q/tO'e(gO!R&hX!S&hX~P@aO!R+[O!S'ia~O]&YOk&YO!Q)wO'e'SO!R&mX!S&mX~O!R+_O!S'ta~O!O'si!R'si~P!)fO_$[O!]!wO!d$XO!j0OO!{/|O'U$[O'`$cO'n&nO~O!S0RO~P!?]O!X0SO!Y0SO'[$bO'e(gO'm+eO~O!W0TO~P#GyO!TSO!W0TO!u0VO!x0WO~P#GyO!W0TO!s0YO!t0YO!u0VO!x0WO~P#GyO!T&cO~O!T&cO~P!#rO!R'pi!c'pi_'pi'U'pi~P!)fO!{0cO!R'pi!c'pi_'pi'U'pi~O!R&sO!c'oi~Ox$tO!T$uO#V0eO'Z$`O~O#WraPraZra_rajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra'Ura'dra!cra!Ora!Tranra%Qra!]ra~P#6fO#W$^aP$^aZ$^a_$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a'U$^a'd$^a!c$^a!O$^a!T$^an$^a%Q$^a!]$^a~P#7[O#W$`aP$`aZ$`a_$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a'U$`a'd$`a!c$`a!O$`a!T$`an$`a%Q$`a!]$`a~P#7}O#W$naP$naZ$na_$naj$nav$na!R$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na'U$na'd$na!c$na!O$na!T$na!{$nan$na%Q$na!]$na~P!#rO_#Oq!R#Oq'U#Oq!O#Oq!c#Oqn#Oq!T#Oq%Q#Oq!]#Oq~P!)fO!R&iX'_&iX~PJdO!R,ZO'_'ka~O!Q0mO!R&jX!c&jX~P){O!R,^O!c'la~O!R,^O!c'la~P!)fO#m!fa!S!fa~PCcO#m!^a!R!^a!S!^a~P#)gO!T1QO#x^O$P1RO~O!S1VO~On1WO~P!#rO_$Yq!R$Yq'U$Yq!O$Yq!c$Yqn$Yq!T$Yq%Q$Yq!]$Yq~P!)fO!O1XO~O],uOk,uO~Ou(ROx(SO'v(WO'n$xi'u$xi!R$xi!{$xi~O'_$xi#m$xi~P$(jOu(ROx(SO'n$zi'u$zi'v$zi!R$zi!{$zi~O'_$zi#m$zi~P$)]O#m1YO~P!#rO!Q1[O'Z$`O!R&rX!c&rX~O!R,}O!c'{a~O!R,}O!]!wO!c'{a~O!R,}O!]!wO'n&nO!c'{a~O'_$gi!R$gi#m$gi!{$gi~P!#rO!Q1cO'Z(bO!O&tX!R&tX~P!$aO!R-UO!O'|a~O!R-UO!O'|a~P!#rO!]!wO~O!]!wO#c1mO~Oj1qO!]!wO'n&nO~O!R'bi'_'bi~P!#rO!{1tO!R'bi'_'bi~P!#rO!c1wO~O_$Zq!R$Zq'U$Zq!O$Zq!c$Zqn$Zq!T$Zq%Q$Zq!]$Zq~P!)fO!R1{O!T'}X~P!#rO!T&cO%Q2OO~O!T&cO%Q2OO~P!#rO!T$eX$u[X_$eX'U$eX~P!!iO$u2SOugXxgX!TgX'ngX'ugX'vgX_gX'UgX~O$u2SO~O]2YO%R2ZO'Z)gO!R&}X!S&}X~O!R.WO!S(Ta~OZ2_O~O^2`O~O]2cO~OS2eO!T&cO!o2dO%Q2OO~O_$[O'U$[O~P!#rO!T#yO~P!#rO!R2jO!{2lO!S(QX~O!S2mO~Ox(kO!W2vO!X2oO!Y2oO!r2uO!s2tO!t2tO!x2sO'[$bO'e(gO'm+eO~O!S2rO~P$1nOS2}O!T.sO!o2|O%Q2{O~OS2}O!T.sO!o2|O%Q2{O'`$cO~O'Z(yO!R&|X!S&|X~O!R/PO!S(Ra~O]3XO'e3WO~O]3YO~O^3[O~O!c3_O~P){O_3aO~O_3aO~P){O#c3cO%r3dO~PE{O`/gO!S3hO&Q/fO~P`O!]3jO~O&V3kOP&SqQ&SqX&Sq]&Sq_&Sqb&Sqc&Sqh&Sqj&Sqk&Sql&Sqq&Sqs&Sqx&Sq{&Sq|&Sq}&Sq!T&Sq!_&Sq!d&Sq!g&Sq!h&Sq!i&Sq!j&Sq!k&Sq!n&Sq#d&Sq#t&Sq#x&Sq%P&Sq%R&Sq%T&Sq%U&Sq%X&Sq%Z&Sq%^&Sq%_&Sq%a&Sq%n&Sq%t&Sq%v&Sq%x&Sq%z&Sq%}&Sq&T&Sq&X&Sq&Z&Sq&]&Sq&_&Sq&a&Sq'Q&Sq'Z&Sq'd&Sq'm&Sq'z&Sq!S&Sq%{&Sq`&Sq&Q&Sq~O!R#Ti!S#Ti~P#)gO!{3mO!R#Ti!S#Ti~O!R!Vi!S!Vi~P#)gO_$[O!{3tO'U$[O~O_$[O!]!wO!{3tO'U$[O~O!X3xO!Y3xO'[$bO'e(gO'm+eO~O_$[O!]!wO!d$XO!j3yO!{3tO'U$[O'`$cO'n&nO~O!W3zO~P$:ZO!W3zO!u3}O!x4OO~P$:ZO_$[O!]!wO!j3yO!{3tO'U$[O'n&nO~O!R'pq!c'pq_'pq'U'pq~P!)fO!R&sO!c'oq~O#W$xiP$xiZ$xi_$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi'U$xi'd$xi!c$xi!O$xi!T$xin$xi%Q$xi!]$xi~P$(jO#W$ziP$ziZ$zi_$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi'U$zi'd$zi!c$zi!O$zi!T$zin$zi%Q$zi!]$zi~P$)]O#W$giP$giZ$gi_$gij$giv$gi!R$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi'U$gi'd$gi!c$gi!O$gi!T$gi!{$gin$gi%Q$gi!]$gi~P!#rO!R&ia'_&ia~P!#rO!R&ja!c&ja~P!)fO!R,^O!c'li~O#m#Oi!R#Oi!S#Oi~P#)gOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zij#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~O#[#Zi~P$CqO#[9]O~P$CqOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O'dQOZ#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~Oj#Zi~P$EyOj9_O~P$EyOP#^Oj9_Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O'dQO#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P$HROZ9jO!a9aO#a9aO#b9aO#c9aO~P$HROP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO'dQO#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'v#Zi!R#Zi!S#Zi~O'u#Zi~P$JgO'u!}O~P$JgOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO'dQO'u!}O#i#Zi#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~O'v#Zi~P$LoO'v#OO~P$LoOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO'dQO'u!}O'v#OO~O#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~P$NwO_#ky!R#ky'U#ky!O#ky!c#kyn#ky!T#ky%Q#ky!]#ky~P!)fOP#ZiZ#Zij#Ziv#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'd#Zi!R#Zi!S#Zi~P!#rO!b!yOP'cXZ'cXj'cXu'cXv'cXx'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX#m'cX'd'cX'n'cX'u'cX'v'cX!R'cX!S'cX~O#m#ni!R#ni!S#ni~P#)gO!S4`O~O!R&qa!S&qa~P#)gO!]!wO'n&nO!R&ra!c&ra~O!R,}O!c'{i~O!R,}O!]!wO!c'{i~O!O&ta!R&ta~P!#rO!]4gO~O!R-UO!O'|i~P!#rO!R-UO!O'|i~O!O4mO~O!]!wO#c4sO~Oj4tO!]!wO'n&nO~O!O4vO~O'_$iq!R$iq#m$iq!{$iq~P!#rO_$Zy!R$Zy'U$Zy!O$Zy!c$Zyn$Zy!T$Zy%Q$Zy!]$Zy~P!)fO!R1{O!T'}a~O!T&cO%Q4{O~O!T&cO%Q4{O~P!#rO_#Oy!R#Oy'U#Oy!O#Oy!c#Oyn#Oy!T#Oy%Q#Oy!]#Oy~P!)fOZ5OO~O]5QO'Z)gO~O!R.WO!S(Ti~O]5TO~O^5UO~O'e'SO!R&yX!S&yX~O!R2jO!S(Qa~O!S5cO~P$1nOx-gO'e(gO'm+eO~O!W5fO!X5eO!Y5eO!x0WO'[$bO'e(gO'm+eO~O!s5gO!t5gO~P%-iO!X5eO!Y5eO'[$bO'e(gO'm+eO~O!T.sO~O!T.sO%Q5iO~O!T.sO%Q5iO~P!#rOS5nO!T.sO!o5mO%Q5iO~OZ5sO!R&|a!S&|a~O!R/PO!S(Ri~O]5vO~O!c5wO~O!c5xO~O!c5yO~O!c5yO~P){O_5{O~O!]6OO~O!c6QO~O!R'si!S'si~P#)gO_$[O'U$[O~P!)fO_$[O!{6VO'U$[O~O_$[O!]!wO!{6VO'U$[O~O!X6[O!Y6[O'[$bO'e(gO'm+eO~O_$[O!]!wO!j6]O!{6VO'U$[O'n&nO~O!d$XO'`$cO~P%2TO!W6^O~P%1rO!R'py!c'py_'py'U'py~P!)fO#W$iqP$iqZ$iq_$iqj$iqv$iq!R$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq'U$iq'd$iq!c$iq!O$iq!T$iq!{$iqn$iq%Q$iq!]$iq~P!#rO!R&ji!c&ji~P!)fO#m#Oq!R#Oq!S#Oq~P#)gOu-mOv-mOx-nOPraZrajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra#mra'dra'nra'ura'vra!Rra!Sra~Ou(ROx(SOP$^aZ$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a#m$^a'd$^a'n$^a'u$^a'v$^a!R$^a!S$^a~Ou(ROx(SOP$`aZ$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a#m$`a'd$`a'n$`a'u$`a'v$`a!R$`a!S$`a~OP$naZ$naj$nav$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na#m$na'd$na!R$na!S$na~P!#rO#m$Yq!R$Yq!S$Yq~P#)gO#m$Zq!R$Zq!S$Zq~P#)gO!S6hO~O'_$|y!R$|y#m$|y!{$|y~P!#rO!]!wO!R&ri!c&ri~O!]!wO'n&nO!R&ri!c&ri~O!R,}O!c'{q~O!O&ti!R&ti~P!#rO!R-UO!O'|q~O!O6oO~P!#rO!O6oO~O!R'by'_'by~P!#rO!R&wa!T&wa~P!#rO!T$tq_$tq'U$tq~P!#rOZ6wO~O!R.WO!S(Tq~O]6zO~O!T&cO%Q6{O~O!T&cO%Q6{O~P!#rO!{6|O!R&ya!S&ya~O!R2jO!S(Qi~P#)gO!X7SO!Y7SO'[$bO'e(gO'm+eO~O!W7UO!x4OO~P%ArO!T.sO%Q7XO~O!T.sO%Q7XO~P!#rO]7`O'e7_O~O!R/PO!S(Rq~O!c7bO~O!c7bO~P){O!c7dO~O!c7eO~O!R#Ty!S#Ty~P#)gO_$[O!{7kO'U$[O~O_$[O!]!wO!{7kO'U$[O~O!X7nO!Y7nO'[$bO'e(gO'm+eO~O_$[O!]!wO!j7oO!{7kO'U$[O'n&nO~O#W$|yP$|yZ$|y_$|yj$|yv$|y!R$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y'U$|y'd$|y!c$|y!O$|y!T$|y!{$|yn$|y%Q$|y!]$|y~P!#rO#m#ky!R#ky!S#ky~P#)gOP$giZ$gij$giv$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi#m$gi'd$gi!R$gi!S$gi~P!#rOu(ROx(SO'v(WOP$xiZ$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi#m$xi'd$xi'n$xi'u$xi!R$xi!S$xi~Ou(ROx(SOP$ziZ$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi#m$zi'd$zi'n$zi'u$zi'v$zi!R$zi!S$zi~O#m$Zy!R$Zy!S$Zy~P#)gO#m#Oy!R#Oy!S#Oy~P#)gO!]!wO!R&rq!c&rq~O!R,}O!c'{y~O!O&tq!R&tq~P!#rO!O7uO~P!#rO!R.WO!S(Ty~O!R2jO!S(Qq~O!X8RO!Y8RO'[$bO'e(gO'm+eO~O!T.sO%Q8UO~O!T.sO%Q8UO~P!#rO!c8XO~O&V8YOP&S!ZQ&S!ZX&S!Z]&S!Z_&S!Zb&S!Zc&S!Zh&S!Zj&S!Zk&S!Zl&S!Zq&S!Zs&S!Zx&S!Z{&S!Z|&S!Z}&S!Z!T&S!Z!_&S!Z!d&S!Z!g&S!Z!h&S!Z!i&S!Z!j&S!Z!k&S!Z!n&S!Z#d&S!Z#t&S!Z#x&S!Z%P&S!Z%R&S!Z%T&S!Z%U&S!Z%X&S!Z%Z&S!Z%^&S!Z%_&S!Z%a&S!Z%n&S!Z%t&S!Z%v&S!Z%x&S!Z%z&S!Z%}&S!Z&T&S!Z&X&S!Z&Z&S!Z&]&S!Z&_&S!Z&a&S!Z'Q&S!Z'Z&S!Z'd&S!Z'm&S!Z'z&S!Z!S&S!Z%{&S!Z`&S!Z&Q&S!Z~O_$[O!{8_O'U$[O~O_$[O!]!wO!{8_O'U$[O~OP$iqZ$iqj$iqv$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq#m$iq'd$iq!R$iq!S$iq~P!#rO!R&yq!S&yq~P#)gO_$[O!{8tO'U$[O~OP$|yZ$|yj$|yv$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y#m$|y'd$|y!R$|y!S$|y~P!#rOn'fX~P.jOn[X!O[X!c[X%r[X!T[X%Q[X!][X~P$zO!]dX!c[X!cdX'ndX~P;aOP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!TSO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!R9hO!S$]a~O]#qOh$OOj#rOk#qOl#qOq$POs9mOx#xO!T#yO!_:pO!d#vO#V9sO#t$TO$_9oO$a9qO$d$UO'Z&zO'd#sO~O#d'iO~P&-UO!S[X!SdX~P;aO#W9[O~O!]!wO#W9[O~O!{9kO~O#c9aO~O!{9tO!R'sX!S'sX~O!{9kO!R'qX!S'qX~O#W9uO~O'_9wO~P!#rO#W9|O~O#W9}O~O!]!wO#W:OO~O!]!wO#W9uO~O#m:PO~P#)gO#W:QO~O#W:RO~O#W:SO~O#W:TO~O#m:UO~P!#rO#m:VO~P!#rO#x~!b!r!t!u#U#V'z$_$a$d$u%P%Q%R%X%Z%^%_%a%c~UT#x'z#]}'W'X#z'W'Z'e~",goto:"#Ed(XPPPPPPPP(YP(jP*^PPPP-uPP.[3n5b5uP5uPPP5uP7c5uP5uP7gPP7lP8Qk|}?O}!O>k!O!P?`!P!QCl!Q!R!0[!R![!1q![!]!7s!]!^!8V!^!_!8g!_!`!9d!`!a!:[!a!b!U#R#S2`#S#T!>i#T#o2`#o#p!>y#p#q!?O#q#r!?f#r#s!?x#s$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$I|2`$I|$I}!Bq$I}$JO!Bq$JO$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`W%YR$UWO!^%T!_#o%T#p~%T,T%jg$UW'W+{OX%TXY%cYZ%TZ[%c[p%Tpq%cq!^%T!_#o%T#p$f%T$f$g%c$g#BY%T#BY#BZ%c#BZ$IS%T$IS$I_%c$I_$JT%T$JT$JU%c$JU$KV%T$KV$KW%c$KW&FU%T&FU&FV%c&FV?HT%T?HT?HU%c?HU~%T,T'YR$UW'X+{O!^%T!_#o%T#p~%T$T'jS$UW!j#{O!^%T!_!`'v!`#o%T#p~%T$O'}S#e#v$UWO!^%T!_!`(Z!`#o%T#p~%T$O(bR#e#v$UWO!^%T!_#o%T#p~%T'u(rZ$UW]!ROY(kYZ)eZr(krs*rs!^(k!^!_+U!_#O(k#O#P-b#P#o(k#o#p+U#p~(k&r)jV$UWOr)ers*Ps!^)e!^!_*a!_#o)e#o#p*a#p~)e&r*WR$P&j$UWO!^%T!_#o%T#p~%T&j*dROr*ars*ms~*a&j*rO$P&j'u*{R$P&j$UW]!RO!^%T!_#o%T#p~%T'm+ZV]!ROY+UYZ*aZr+Urs+ps#O+U#O#P+w#P~+U'm+wO$P&j]!R'm+zROr+Urs,Ts~+U'm,[U$P&j]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R,sU]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R-[O]!R!R-_PO~,n'u-gV$UWOr(krs-|s!^(k!^!_+U!_#o(k#o#p+U#p~(k'u.VZ$P&j$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/PZ$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/yR$UW]!RO!^%T!_#o%T#p~%T!Z0XT$UWO!^.x!^!_,n!_#o.x#o#p,n#p~.xy0mZ$UWOt%Ttu1`u!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`y1g]$UW'mqOt%Ttu1`u!Q%T!Q![1`![!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`&i2k_$UW#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`[3q_$UW#zSOt%Ttu3ju}%T}!O3j!O!Q%T!Q![3j![!^%T!_!c%T!c!}3j!}#R%T#R#S3j#S#T%T#T#o3j#p$g%T$g~3j$O4wS#^#v$UWO!^%T!_!`5T!`#o%T#p~%T$O5[R$UW#o#vO!^%T!_#o%T#p~%T%r5lU'v%j$UWOv%Tvw6Ow!^%T!_!`5T!`#o%T#p~%T$O6VS$UW#i#vO!^%T!_!`5T!`#o%T#p~%T'u6jZ$UW]!ROY6cYZ7]Zw6cwx*rx!^6c!^!_8T!_#O6c#O#P:T#P#o6c#o#p8T#p~6c&r7bV$UWOw7]wx*Px!^7]!^!_7w!_#o7]#o#p7w#p~7]&j7zROw7wwx*mx~7w'm8YV]!ROY8TYZ7wZw8Twx+px#O8T#O#P8o#P~8T'm8rROw8Twx8{x~8T'm9SU$P&j]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R9kU]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R:QPO~9f'u:YV$UWOw6cwx:ox!^6c!^!_8T!_#o6c#o#p8T#p~6c'u:xZ$P&j$UW]!ROY;kYZ%TZw;kwx/rx!^;k!^!_9f!_#O;k#O#PW{!^%T!_!`5T!`#o%T#p~%T$O>_S#[#v$UWO!^%T!_!`5T!`#o%T#p~%T$u>rSj$m$UWO!^%T!_!`5T!`#o%T#p~%T&i?VR!R&a$UWO!^%T!_#o%T#p~%T&i?gVu%n$UWO!O%T!O!P?|!P!Q%T!Q![@r![!^%T!_#o%T#p~%Ty@RT$UWO!O%T!O!P@b!P!^%T!_#o%T#p~%Ty@iR!Qq$UWO!^%T!_#o%T#p~%Ty@yZ$UWkqO!Q%T!Q![@r![!^%T!_!g%T!g!hAl!h#R%T#R#S@r#S#X%T#X#YAl#Y#o%T#p~%TyAqZ$UWO{%T{|Bd|}%T}!OBd!O!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyBiV$UWO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyCVV$UWkqO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%T,TCs`$UW#]#vOYDuYZ%TZzDuz{Jl{!PDu!P!Q!-e!Q!^Du!^!_Fx!_!`!.^!`!a!/]!a!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXD|[$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXEy_$UW}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%TPF}V}POYFxZ!PFx!P!QGd!Q!}Fx!}#OG{#O#PHh#P~FxPGiU}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGdPHOTOYG{Z#OG{#O#PH_#P#QFx#Q~G{PHbQOYG{Z~G{PHkQOYFxZ~FxXHvY$UWOYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~HqXIkV$UWOYHqYZ%TZ!^Hq!^!_G{!_#oHq#o#pG{#p~HqXJVV$UWOYDuYZ%TZ!^Du!^!_Fx!_#oDu#o#pFx#p~Du,TJs^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q!,R!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,TKtV$UWOzKoz{LZ{!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TL`X$UWOzKoz{LZ{!PKo!P!QL{!Q!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TMSR$UWU+{O!^%T!_#o%T#p~%T+{M`ROzM]z{Mi{~M]+{MlTOzM]z{Mi{!PM]!P!QM{!Q~M]+{NQOU+{,TNX^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q! T!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,T! ^_$UWU+{}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%T+{!!bY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!&x!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#VY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!#u!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#|UU+{}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGd+{!$cWOY!$`YZM]Zz!$`z{!${{#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%OYOY!$`YZM]Zz!$`z{!${{!P!$`!P!Q!%n!Q#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%sTU+{OYG{Z#OG{#O#PH_#P#QFx#Q~G{+{!&VTOY!$`YZM]Zz!$`z{!${{~!$`+{!&iTOY!!]YZM]Zz!!]z{!#Q{~!!]+{!&}_}POzM]z{Mi{#ZM]#Z#[!&x#[#]M]#]#^!&x#^#aM]#a#b!&x#b#gM]#g#h!&x#h#iM]#i#j!&x#j#mM]#m#n!&x#n~M],T!(R[$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!(|^$UWOY!'|YZKoZz!'|z{!(w{!P!'|!P!Q!)x!Q!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!*PY$UWU+{OYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~Hq,T!*tX$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#o!'|#o#p!$`#p~!'|,T!+fX$UWOYJlYZKoZzJlz{NQ{!^Jl!^!_!!]!_#oJl#o#p!!]#p~Jl,T!,Yc$UW}POzKoz{LZ{!^Ko!^!_M]!_#ZKo#Z#[!,R#[#]Ko#]#^!,R#^#aKo#a#b!,R#b#gKo#g#h!,R#h#iKo#i#j!,R#j#mKo#m#n!,R#n#oKo#o#pM]#p~Ko,T!-lV$UWT+{OY!-eYZ%TZ!^!-e!^!_!.R!_#o!-e#o#p!.R#p~!-e+{!.WQT+{OY!.RZ~!.R$P!.g[$UW#o#v}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Du]!/f[#wS$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Duy!0cd$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#U%T#U#V!3X#V#X%T#X#YAl#Y#b%T#b#c!2w#c#d!4m#d#l%T#l#m!5{#m#o%T#p~%Ty!1x_$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#X%T#X#YAl#Y#b%T#b#c!2w#c#o%T#p~%Ty!3OR$UWkqO!^%T!_#o%T#p~%Ty!3^W$UWO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#o%T#p~%Ty!3}Y$UWkqO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#b%T#b#c!2w#c#o%T#p~%Ty!4rV$UWO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#o%T#p~%Ty!5`X$UWkqO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#b%T#b#c!2w#c#o%T#p~%Ty!6QZ$UWO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#o%T#p~%Ty!6z]$UWkqO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#b%T#b#c!2w#c#o%T#p~%T%w!7|R!]V$UW#m%hO!^%T!_#o%T#p~%T!P!8^R_w$UWO!^%T!_#o%T#p~%T+c!8rR'`d!a%Y#x&s'zP!P!Q!8{!^!_!9Q!_!`!9_W!9QO$WW#v!9VP#`#v!_!`!9Y#v!9_O#o#v#v!9dO#a#v%w!9kT!{%o$UWO!^%T!_!`'v!`!a!9z!a#o%T#p~%T$P!:RR#W#w$UWO!^%T!_#o%T#p~%T%w!:gT'_!s#a#v$RS$UWO!^%T!_!`!:v!`!a!;W!a#o%T#p~%T$O!:}R#a#v$UWO!^%T!_#o%T#p~%T$O!;_T#`#v$UWO!^%T!_!`5T!`!a!;n!a#o%T#p~%T$O!;uS#`#v$UWO!^%T!_!`5T!`#o%T#p~%T%w!]S#g#v$UWO!^%T!_!`5T!`#o%T#p~%T$P!>pR$UW'd#wO!^%T!_#o%T#p~%T~!?OO!T~%r!?VT'u%j$UWO!^%T!_!`5T!`#o%T#p#q!=P#q~%T$u!?oR!S$knQ$UWO!^%T!_#o%T#p~%TX!@PR!kP$UWO!^%T!_#o%T#p~%T,T!@gr$UW'W+{#zS'Z%k'epOX%TXY%cYZ%TZ[%c[p%Tpq%cqt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`,T!CO_$UW'X+{#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`",tokenizers:[noSemicolon,incdecToken,template,0,1,2,3,4,5,6,7,8,insertSemicolon],topRules:{Script:[0,7]},dialects:{jsx:11335,ts:11337},dynamicPrecedences:{"149":1,"176":1},specialized:[{term:287,get:(o,e)=>tsExtends(o,e)<<1},{term:287,get:o=>spec_identifier[o]||-1},{term:297,get:o=>spec_word[o]||-1},{term:63,get:o=>spec_LessThan[o]||-1}],tokenPrec:11358}),snippets=[snippetCompletion("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),snippetCompletion("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),snippetCompletion("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),snippetCompletion(`try { + \${} +} catch (\${error}) { + \${} +}`,{label:"try",detail:"block",type:"keyword"}),snippetCompletion(`class \${name} { + constructor(\${params}) { + \${} + } +}`,{label:"class",detail:"definition",type:"keyword"}),snippetCompletion('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),snippetCompletion('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],javascriptLanguage=LRLanguage.define({parser:parser.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\s*({|else\b)/}),TryStatement:continuedIndent({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:flatIndent,SwitchBody:o=>{let e=o.textAfter,s=/^\s*\}/.test(e),a=/^\s*(case|default)\b/.test(e);return o.baseIndent+(s?0:a?1:2)*o.unit},Block:delimitedIndent({closing:"}"}),ArrowFunction:o=>o.baseIndent+o.unit,"TemplateString BlockComment":()=>-1,"Statement Property":continuedIndent({except:/^{/}),JSXElement(o){let e=/^\s*<\//.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},JSXEscape(o){let e=/\s*\}/.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},"JSXOpenTag JSXSelfClosingTag"(o){return o.column(o.node.from)+o.unit}}),foldNodeProp.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression":foldInside$1,BlockComment(o){return{from:o.from+2,to:o.to-2}}}),styleTags({"get set async static":tags.modifier,"for while do if else switch try catch finally return throw break continue default case":tags.controlKeyword,"in of await yield void typeof delete instanceof":tags.operatorKeyword,"let var const function class extends":tags.definitionKeyword,"import export from":tags.moduleKeyword,"with debugger as new":tags.keyword,TemplateString:tags.special(tags.string),Super:tags.atom,BooleanLiteral:tags.bool,this:tags.self,null:tags.null,Star:tags.modifier,VariableName:tags.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":tags.function(tags.variableName),VariableDefinition:tags.definition(tags.variableName),Label:tags.labelName,PropertyName:tags.propertyName,PrivatePropertyName:tags.special(tags.propertyName),"CallExpression/MemberExpression/PropertyName":tags.function(tags.propertyName),"FunctionDeclaration/VariableDefinition":tags.function(tags.definition(tags.variableName)),"ClassDeclaration/VariableDefinition":tags.definition(tags.className),PropertyDefinition:tags.definition(tags.propertyName),PrivatePropertyDefinition:tags.definition(tags.special(tags.propertyName)),UpdateOp:tags.updateOperator,LineComment:tags.lineComment,BlockComment:tags.blockComment,Number:tags.number,String:tags.string,ArithOp:tags.arithmeticOperator,LogicOp:tags.logicOperator,BitOp:tags.bitwiseOperator,CompareOp:tags.compareOperator,RegExp:tags.regexp,Equals:tags.definitionOperator,"Arrow : Spread":tags.punctuation,"( )":tags.paren,"[ ]":tags.squareBracket,"{ }":tags.brace,"InterpolationStart InterpolationEnd":tags.special(tags.brace),".":tags.derefOperator,", ;":tags.separator,TypeName:tags.typeName,TypeDefinition:tags.definition(tags.typeName),"type enum interface implements namespace module declare":tags.definitionKeyword,"abstract global Privacy readonly override":tags.modifier,"is keyof unique infer":tags.operatorKeyword,JSXAttributeValue:tags.attributeValue,JSXText:tags.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":tags.angleBracket,"JSXIdentifier JSXNameSpacedName":tags.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":tags.attributeName})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),typescriptLanguage=javascriptLanguage.configure({dialect:"ts"}),jsxLanguage=javascriptLanguage.configure({dialect:"jsx"}),tsxLanguage=javascriptLanguage.configure({dialect:"jsx ts"});function javascript(o={}){let e=o.jsx?o.typescript?tsxLanguage:jsxLanguage:o.typescript?typescriptLanguage:javascriptLanguage;return new LanguageSupport(e,javascriptLanguage.data.of({autocomplete:ifNotIn(["LineComment","BlockComment","String"],completeFromList(snippets))}))}const scale=(o,e,s)=>o*(s-e)+e;Pattern$4.prototype.pianoroll=function({cycles:o=4,playhead:e=.5,overscan:s=1,flipTime:a=0,flipValues:c=0,hideNegative:d=!1,inactive:_="#C9E597",active:b="#FFCA28",background:k="transparent",minMidi:$=10,maxMidi:j=90,autorange:_e=0,timeframe:et,fold:tt=0,vertical:nt=0}={}){const st=getDrawContext(),rt=st.canvas.width,it=st.canvas.height;let at=-o*e,ot=o*(1-e);et&&(console.warn("timeframe is deprecated! use from/to instead"),at=0,ot=et),!_e&&tt&&console.warn("disabling autorange has no effect when fold is enabled");const ht=nt?it:rt,ct=nt?rt:it;let lt=nt?[ht,0]:[0,ht];const ut=ot-at,dt=nt?[0,ct]:[ct,0];let pt=j-$+1,gt=ct/pt,yt=[];a&<.reverse(),c&&dt.reverse();const ft=scale(-at/ut,...lt);return this.draw((mt,Et,_t)=>{mt.fillStyle=k,mt.clearRect(0,0,rt,it),mt.fillRect(0,0,rt,it);const St=vt=>(!d||vt.whole.begin>=0)&&vt.whole.begin<=_t+ot&&vt.whole.end>=_t+at;Et.filter(St).forEach(vt=>{var $t,It,wt;const Ct=vt.whole.begin<=_t&&vt.whole.end>_t;mt.fillStyle=(($t=vt.context)==null?void 0:$t.color)||_,mt.strokeStyle=((It=vt.context)==null?void 0:It.color)||b,mt.globalAlpha=(wt=vt.context.velocity)!=null?wt:1,mt.beginPath(),nt?(mt.moveTo(0,ft),mt.lineTo(ct,ft)):(mt.moveTo(ft,0),mt.lineTo(ft,ct)),mt.stroke();const xt=scale((vt.whole.begin-(a?ot:at))/ut,...lt);let bt=scale(vt.duration/ut,0,ht);const At=scale(tt?yt.indexOf(vt.value)/yt.length:(Number(vt.value)-$)/pt,...dt);let Ot=0;const Tt=scale(_t/ut,...lt);let Rt;nt?Rt=[At+1-(c?gt:0),ht-Tt+xt+Ot+1-(a?0:bt),gt-2,bt-2]:Rt=[xt-Tt+Ot+1-(a?bt:0),At+1-(c?0:gt),bt-2,gt-2],Ct?mt.strokeRect(...Rt):mt.fillRect(...Rt)})},{from:at-s,to:ot+s,onQuery:mt=>{const Et=Ct=>Number(Ct.value),{min:_t,max:St,values:vt}=mt.reduce(({min:Ct,max:xt,values:bt},At)=>{const Ot=Et(At);return{min:Otxt?Ot:xt,values:bt.includes(Ot)?bt:[...bt,Ot]}},{min:1/0,max:-1/0,values:[]});_e&&($=_t,j=St,pt=j-$+1),yt=vt.sort((Ct,xt)=>Ct-xt),gt=tt?ct/yt.length:ct/pt}}),this};const version="14.7.77",createExtendedExponentialRampToValueAutomationEvent=(o,e,s)=>({endTime:e,insertTime:s,type:"exponentialRampToValue",value:o}),createExtendedLinearRampToValueAutomationEvent=(o,e,s)=>({endTime:e,insertTime:s,type:"linearRampToValue",value:o}),createSetValueAutomationEvent=(o,e)=>({startTime:e,type:"setValue",value:o}),createSetValueCurveAutomationEvent=(o,e,s)=>({duration:s,startTime:e,type:"setValueCurve",values:o}),getTargetValueAtTime=(o,e,{startTime:s,target:a,timeConstant:c})=>a+(e-a)*Math.exp((s-o)/c),isExponentialRampToValueAutomationEvent=o=>o.type==="exponentialRampToValue",isLinearRampToValueAutomationEvent=o=>o.type==="linearRampToValue",isAnyRampToValueAutomationEvent=o=>isExponentialRampToValueAutomationEvent(o)||isLinearRampToValueAutomationEvent(o),isSetValueAutomationEvent=o=>o.type==="setValue",isSetValueCurveAutomationEvent=o=>o.type==="setValueCurve",getValueOfAutomationEventAtIndexAtTime=(o,e,s,a)=>{const c=o[e];return c===void 0?a:isAnyRampToValueAutomationEvent(c)||isSetValueAutomationEvent(c)?c.value:isSetValueCurveAutomationEvent(c)?c.values[c.values.length-1]:getTargetValueAtTime(s,getValueOfAutomationEventAtIndexAtTime(o,e-1,c.startTime,a),c)},getEndTimeAndValueOfPreviousAutomationEvent=(o,e,s,a,c)=>s===void 0?[a.insertTime,c]:isAnyRampToValueAutomationEvent(s)?[s.endTime,s.value]:isSetValueAutomationEvent(s)?[s.startTime,s.value]:isSetValueCurveAutomationEvent(s)?[s.startTime+s.duration,s.values[s.values.length-1]]:[s.startTime,getValueOfAutomationEventAtIndexAtTime(o,e-1,s.startTime,c)],isCancelAndHoldAutomationEvent=o=>o.type==="cancelAndHold",isCancelScheduledValuesAutomationEvent=o=>o.type==="cancelScheduledValues",getEventTime=o=>isCancelAndHoldAutomationEvent(o)||isCancelScheduledValuesAutomationEvent(o)?o.cancelTime:isExponentialRampToValueAutomationEvent(o)||isLinearRampToValueAutomationEvent(o)?o.endTime:o.startTime,getExponentialRampValueAtTime=(o,e,s,{endTime:a,value:c})=>s===c?c:0s+(o-e)/(a-e)*(c-s),interpolateValue=(o,e)=>{const s=Math.floor(e),a=Math.ceil(e);return s===a?o[s]:(1-(e-s))*o[s]+(1-(a-e))*o[a]},getValueCurveValueAtTime=(o,{duration:e,startTime:s,values:a})=>{const c=(o-s)/e*(a.length-1);return interpolateValue(a,c)},isSetTargetAutomationEvent=o=>o.type==="setTarget";class AutomationEventList{constructor(e){this._automationEvents=[],this._currenTime=0,this._defaultValue=e}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(e){const s=getEventTime(e);if(isCancelAndHoldAutomationEvent(e)||isCancelScheduledValuesAutomationEvent(e)){const a=this._automationEvents.findIndex(d=>isCancelScheduledValuesAutomationEvent(e)&&isSetValueCurveAutomationEvent(d)?d.startTime+d.duration>=s:getEventTime(d)>=s),c=this._automationEvents[a];if(a!==-1&&(this._automationEvents=this._automationEvents.slice(0,a)),isCancelAndHoldAutomationEvent(e)){const d=this._automationEvents[this._automationEvents.length-1];if(c!==void 0&&isAnyRampToValueAutomationEvent(c)){if(isSetTargetAutomationEvent(d))throw new Error("The internal list is malformed.");const _=isSetValueCurveAutomationEvent(d)?d.startTime+d.duration:getEventTime(d),b=isSetValueCurveAutomationEvent(d)?d.values[d.values.length-1]:d.value,k=isExponentialRampToValueAutomationEvent(c)?getExponentialRampValueAtTime(s,_,b,c):getLinearRampValueAtTime(s,_,b,c),$=isExponentialRampToValueAutomationEvent(c)?createExtendedExponentialRampToValueAutomationEvent(k,s,this._currenTime):createExtendedLinearRampToValueAutomationEvent(k,s,this._currenTime);this._automationEvents.push($)}d!==void 0&&isSetTargetAutomationEvent(d)&&this._automationEvents.push(createSetValueAutomationEvent(this.getValue(s),s)),d!==void 0&&isSetValueCurveAutomationEvent(d)&&d.startTime+d.duration>s&&(this._automationEvents[this._automationEvents.length-1]=createSetValueCurveAutomationEvent(new Float32Array([6,7]),d.startTime,s-d.startTime))}}else{const a=this._automationEvents.findIndex(_=>getEventTime(_)>s),c=a===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[a-1];if(c!==void 0&&isSetValueCurveAutomationEvent(c)&&getEventTime(c)+c.duration>s)return!1;const d=isExponentialRampToValueAutomationEvent(e)?createExtendedExponentialRampToValueAutomationEvent(e.value,e.endTime,this._currenTime):isLinearRampToValueAutomationEvent(e)?createExtendedLinearRampToValueAutomationEvent(e.value,s,this._currenTime):e;if(a===-1)this._automationEvents.push(d);else{if(isSetValueCurveAutomationEvent(e)&&s+e.duration>getEventTime(this._automationEvents[a]))return!1;this._automationEvents.splice(a,0,d)}}return!0}flush(e){const s=this._automationEvents.findIndex(a=>getEventTime(a)>e);if(s>1){const a=this._automationEvents.slice(s-1),c=a[0];isSetTargetAutomationEvent(c)&&a.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents,s-2,c.startTime,this._defaultValue),c.startTime)),this._automationEvents=a}}getValue(e){if(this._automationEvents.length===0)return this._defaultValue;const s=this._automationEvents.findIndex(_=>getEventTime(_)>e),a=this._automationEvents[s],c=(s===-1?this._automationEvents.length:s)-1,d=this._automationEvents[c];if(d!==void 0&&isSetTargetAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)||a.insertTime>e))return getTargetValueAtTime(e,getValueOfAutomationEventAtIndexAtTime(this._automationEvents,c-1,d.startTime,this._defaultValue),d);if(d!==void 0&&isSetValueAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)))return d.value;if(d!==void 0&&isSetValueCurveAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)||d.startTime+d.duration>e))return e({cancelTime:o,type:"cancelAndHold"}),createCancelScheduledValuesAutomationEvent=o=>({cancelTime:o,type:"cancelScheduledValues"}),createExponentialRampToValueAutomationEvent=(o,e)=>({endTime:e,type:"exponentialRampToValue",value:o}),createLinearRampToValueAutomationEvent=(o,e)=>({endTime:e,type:"linearRampToValue",value:o}),createSetTargetAutomationEvent=(o,e,s)=>({startTime:e,target:o,timeConstant:s,type:"setTarget"}),createAbortError=()=>new DOMException("","AbortError"),createAddActiveInputConnectionToAudioNode=o=>(e,s,[a,c,d],_)=>{o(e[c],[s,a,d],b=>b[0]===s&&b[1]===a,_)},createAddAudioNodeConnections=o=>(e,s,a)=>{const c=[];for(let d=0;d(e,s)=>{o.set(e,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:s})},ACTIVE_AUDIO_NODE_STORE=new WeakSet,AUDIO_NODE_CONNECTIONS_STORE=new WeakMap,AUDIO_NODE_STORE=new WeakMap,AUDIO_PARAM_CONNECTIONS_STORE=new WeakMap,AUDIO_PARAM_STORE=new WeakMap,CONTEXT_STORE=new WeakMap,EVENT_LISTENERS=new WeakMap,CYCLE_COUNTERS=new WeakMap,NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS=new WeakMap,NODE_TO_PROCESSOR_MAPS=new WeakMap,handler={construct(){return handler}},isConstructible=o=>{try{const e=new Proxy(o,handler);new e}catch{return!1}return!0},IMPORT_STATEMENT_REGEX=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,splitImportStatements=(o,e)=>{const s=[];let a=o.replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX);for(;c!==null;){const d=c[1].slice(1,-1),_=c[0].replace(/([\s]+)?;?$/,"").replace(d,new URL(d,e).toString());s.push(_),a=a.slice(c[0].length).replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX)}return[s.join(";"),a]},verifyParameterDescriptors=o=>{if(o!==void 0&&!Array.isArray(o))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},verifyProcessorCtor=o=>{if(!isConstructible(o))throw new TypeError("The given value for processorCtor should be a constructor.");if(o.prototype===null||typeof o.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},createAddAudioWorkletModule=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{let tt=0;return(nt,st,rt={credentials:"omit"})=>{const it=j.get(nt);if(it!==void 0&&it.has(st))return Promise.resolve();const at=$.get(nt);if(at!==void 0){const ct=at.get(st);if(ct!==void 0)return ct}const ot=d(nt),ht=ot.audioWorklet===void 0?c(st).then(([ct,lt])=>{const[ut,dt]=splitImportStatements(ct,lt),pt=`${ut};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${dt} +})})(window,'_AWGS')`;return s(pt)}).then(()=>{const ct=et._AWGS.pop();if(ct===void 0)throw new SyntaxError;a(ot.currentTime,ot.sampleRate,()=>ct(class{},void 0,(lt,ut)=>{if(lt.trim()==="")throw e();const dt=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(ot);if(dt!==void 0){if(dt.has(lt))throw e();verifyProcessorCtor(ut),verifyParameterDescriptors(ut.parameterDescriptors),dt.set(lt,ut)}else verifyProcessorCtor(ut),verifyParameterDescriptors(ut.parameterDescriptors),NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(ot,new Map([[lt,ut]]))},ot.sampleRate,void 0,void 0))}):Promise.all([c(st),Promise.resolve(o(_e,_e))]).then(([[ct,lt],ut])=>{const dt=tt+1;tt=dt;const[pt,gt]=splitImportStatements(ct,lt),Et=`${pt};((AudioWorkletProcessor,registerProcessor)=>{${gt} +})(${ut?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${ut?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${ut?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${dt}',class extends AudioWorkletProcessor{process(){return !1}})`,_t=new Blob([Et],{type:"application/javascript; charset=utf-8"}),St=URL.createObjectURL(_t);return ot.audioWorklet.addModule(St,rt).then(()=>{if(b(ot))return ot;const vt=_(ot);return vt.audioWorklet.addModule(St,rt).then(()=>vt)}).then(vt=>{if(k===null)throw new SyntaxError;try{new k(vt,`__sac${dt}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(St))});return at===void 0?$.set(nt,new Map([[st,ht]])):at.set(st,ht),ht.then(()=>{const ct=j.get(nt);ct===void 0?j.set(nt,new Set([st])):ct.add(st)}).finally(()=>{const ct=$.get(nt);ct!==void 0&&ct.delete(st)}),ht}},getValueForKey=(o,e)=>{const s=o.get(e);if(s===void 0)throw new Error("A value with the given key could not be found.");return s},pickElementFromSet=(o,e)=>{const s=Array.from(o).filter(e);if(s.length>1)throw Error("More than one element was found.");if(s.length===0)throw Error("No element was found.");const[a]=s;return o.delete(a),a},deletePassiveInputConnectionToAudioNode=(o,e,s,a)=>{const c=getValueForKey(o,e),d=pickElementFromSet(c,_=>_[0]===s&&_[1]===a);return c.size===0&&o.delete(e),d},getEventListenersOfAudioNode=o=>getValueForKey(EVENT_LISTENERS,o),setInternalStateToActive=o=>{if(ACTIVE_AUDIO_NODE_STORE.has(o))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE.add(o),getEventListenersOfAudioNode(o).forEach(e=>e(!0))},isAudioWorkletNode=o=>"port"in o,setInternalStateToPassive=o=>{if(!ACTIVE_AUDIO_NODE_STORE.has(o))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE.delete(o),getEventListenersOfAudioNode(o).forEach(e=>e(!1))},setInternalStateToPassiveWhenNecessary=(o,e)=>{!isAudioWorkletNode(o)&&e.every(s=>s.size===0)&&setInternalStateToPassive(o)},createAddConnectionToAudioNode=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{const tt=new WeakMap;return(nt,st,rt,it,at)=>{const{activeInputs:ot,passiveInputs:ht}=d(st),{outputs:ct}=d(nt),lt=b(nt),ut=dt=>{const pt=k(st),gt=k(nt);if(dt){const yt=deletePassiveInputConnectionToAudioNode(ht,nt,rt,it);o(ot,nt,yt,!1),!at&&!_e(nt)&&s(gt,pt,rt,it),et(st)&&setInternalStateToActive(st)}else{const yt=a(ot,nt,rt,it);e(ht,it,yt,!1),!at&&!_e(nt)&&c(gt,pt,rt,it);const ft=_(st);if(ft===0)j(st)&&setInternalStateToPassiveWhenNecessary(st,ot);else{const mt=tt.get(st);mt!==void 0&&clearTimeout(mt),tt.set(st,setTimeout(()=>{j(st)&&setInternalStateToPassiveWhenNecessary(st,ot)},ft*1e3))}}};return $(ct,[st,rt,it],dt=>dt[0]===st&&dt[1]===rt&&dt[2]===it,!0)?(lt.add(ut),j(nt)?o(ot,nt,[rt,it,ut],!0):e(ht,it,[nt,rt,ut],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode=o=>(e,s,[a,c,d],_)=>{const b=e.get(a);b===void 0?e.set(a,new Set([[c,s,d]])):o(b,[c,s,d],k=>k[0]===c&&k[1]===s,_)},createAddSilentConnection=o=>(e,s)=>{const a=o(e,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});s.connect(a).connect(e.destination);const c=()=>{s.removeEventListener("ended",c),s.disconnect(a),a.disconnect()};s.addEventListener("ended",c)},createAddUnrenderedAudioWorkletNode=o=>(e,s)=>{o(e).add(s)},DEFAULT_OPTIONS$j={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=Dt(Dt({},DEFAULT_OPTIONS$j),k),_e=a($,j),et=d($)?e():null;super(b,!1,_e,et),this._nativeAnalyserNode=_e}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(b){this._nativeAnalyserNode.fftSize=b}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(b){const k=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=b,!(b>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=k,s()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(b){const k=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=b,!(this._nativeAnalyserNode.maxDecibels>b))throw this._nativeAnalyserNode.minDecibels=k,s()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(b){this._nativeAnalyserNode.smoothingTimeConstant=b}getByteFrequencyData(b){this._nativeAnalyserNode.getByteFrequencyData(b)}getByteTimeDomainData(b){this._nativeAnalyserNode.getByteTimeDomainData(b)}getFloatFrequencyData(b){this._nativeAnalyserNode.getFloatFrequencyData(b)}getFloatTimeDomainData(b){this._nativeAnalyserNode.getFloatTimeDomainData(b)}},isOwnedByContext=(o,e)=>o.context===e,createAnalyserNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,fftSize:b.fftSize,maxDecibels:b.maxDecibels,minDecibels:b.minDecibels,smoothingTimeConstant:b.smoothingTimeConstant};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport=o=>{try{o.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod=o=>{o.getChannelData=(e=>s=>{try{return e.call(o,s)}catch(a){throw a.code===12?createIndexSizeError():a}})(o.getChannelData)},DEFAULT_OPTIONS$i={numberOfChannels:1},createAudioBufferConstructor=(o,e,s,a,c,d,_,b)=>{let k=null;return class fr{constructor(j){if(c===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:_e,numberOfChannels:et,sampleRate:tt}=Dt(Dt({},DEFAULT_OPTIONS$i),j);k===null&&(k=new c(1,1,44100));const nt=a!==null&&e(d,d)?new a({length:_e,numberOfChannels:et,sampleRate:tt}):k.createBuffer(et,_e,tt);if(nt.numberOfChannels===0)throw s();return typeof nt.copyFromChannel!="function"?(_(nt),wrapAudioBufferGetChannelDataMethod(nt)):e(testAudioBufferCopyChannelMethodsOutOfBoundsSupport,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport(nt))||b(nt),o.add(nt),nt}static[Symbol.hasInstance](j){return j!==null&&typeof j=="object"&&Object.getPrototypeOf(j)===fr.prototype||o.has(j)}}},MOST_NEGATIVE_SINGLE_FLOAT=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT=-MOST_NEGATIVE_SINGLE_FLOAT,isActiveAudioNode=o=>ACTIVE_AUDIO_NODE_STORE.has(o),DEFAULT_OPTIONS$h={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=Dt(Dt({},DEFAULT_OPTIONS$h),j),tt=c(_e,et),nt=_(_e),st=nt?e():null;super($,!1,tt,st),this._audioBufferSourceNodeRenderer=st,this._isBufferNullified=!1,this._isBufferSet=et.buffer!==null,this._nativeAudioBufferSourceNode=tt,this._onended=null,this._playbackRate=s(this,nt,tt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer($){if(this._nativeAudioBufferSourceNode.buffer=$,$!==null){if(this._isBufferSet)throw a();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop($){this._nativeAudioBufferSourceNode.loop=$}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd($){this._nativeAudioBufferSourceNode.loopEnd=$}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart($){this._nativeAudioBufferSourceNode.loopStart=$}get onended(){return this._onended}set onended($){const j=typeof $=="function"?b(this,$):null;this._nativeAudioBufferSourceNode.onended=j;const _e=this._nativeAudioBufferSourceNode.onended;this._onended=_e!==null&&_e===j?$:_e}get playbackRate(){return this._playbackRate}start($=0,j=0,_e){if(this._nativeAudioBufferSourceNode.start($,j,_e),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=_e===void 0?[$,j]:[$,j,_e]),this.context.state!=="closed"){setInternalStateToActive(this);const et=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",et),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",et)}}stop($=0){this._nativeAudioBufferSourceNode.stop($),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=$)}},createAudioBufferSourceNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={buffer:_e.buffer,channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,loop:_e.loop,loopEnd:_e.loopEnd,loopStart:_e.loopStart,playbackRate:_e.playbackRate.value};_e=e(j,tt),_!==null&&_e.start(..._),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.playbackRate,_e.playbackRate):await a(j,$.playbackRate,_e.playbackRate),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},isAudioBufferSourceNode=o=>"playbackRate"in o,isBiquadFilterNode=o=>"frequency"in o&&"gain"in o,isConstantSourceNode=o=>"offset"in o,isGainNode=o=>!("frequency"in o)&&"gain"in o,isOscillatorNode=o=>"detune"in o&&"frequency"in o,isStereoPannerNode=o=>"pan"in o,getAudioNodeConnections=o=>getValueForKey(AUDIO_NODE_CONNECTIONS_STORE,o),getAudioParamConnections=o=>getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE,o),deactivateActiveAudioNodeInputConnections=(o,e)=>{const{activeInputs:s}=getAudioNodeConnections(o);s.forEach(c=>c.forEach(([d])=>{e.includes(o)||deactivateActiveAudioNodeInputConnections(d,[...e,o])}));const a=isAudioBufferSourceNode(o)?[o.playbackRate]:isAudioWorkletNode(o)?Array.from(o.parameters.values()):isBiquadFilterNode(o)?[o.Q,o.detune,o.frequency,o.gain]:isConstantSourceNode(o)?[o.offset]:isGainNode(o)?[o.gain]:isOscillatorNode(o)?[o.detune,o.frequency]:isStereoPannerNode(o)?[o.pan]:[];for(const c of a){const d=getAudioParamConnections(c);d!==void 0&&d.activeInputs.forEach(([_])=>deactivateActiveAudioNodeInputConnections(_,e))}isActiveAudioNode(o)&&setInternalStateToPassive(o)},deactivateAudioGraph=o=>{deactivateActiveAudioNodeInputConnections(o.destination,[])},isValidLatencyHint=o=>o===void 0||typeof o=="number"||typeof o=="string"&&(o==="balanced"||o==="interactive"||o==="playback"),createAudioContextConstructor=(o,e,s,a,c,d,_,b,k)=>class extends o{constructor(j={}){if(k===null)throw new Error("Missing the native AudioContext constructor.");let _e;try{_e=new k(j)}catch(nt){throw nt.code===12&&nt.message==="sampleRate is not in range"?s():nt}if(_e===null)throw a();if(!isValidLatencyHint(j.latencyHint))throw new TypeError(`The provided value '${j.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(j.sampleRate!==void 0&&_e.sampleRate!==j.sampleRate)throw s();super(_e,2);const{latencyHint:et}=j,{sampleRate:tt}=_e;if(this._baseLatency=typeof _e.baseLatency=="number"?_e.baseLatency:et==="balanced"?512/tt:et==="interactive"||et===void 0?256/tt:et==="playback"?1024/tt:Math.max(2,Math.min(128,Math.round(et*tt/128)))*128/tt,this._nativeAudioContext=_e,k.name==="webkitAudioContext"?(this._nativeGainNode=_e.createGain(),this._nativeOscillatorNode=_e.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(_e.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,_e.state==="running"){this._state="suspended";const nt=()=>{this._state==="suspended"&&(this._state=null),_e.removeEventListener("statechange",nt)};_e.addEventListener("statechange",nt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw e()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph(this)}))}createMediaElementSource(j){return new c(this,{mediaElement:j})}createMediaStreamDestination(){return new d(this)}createMediaStreamSource(j){return new _(this,{mediaStream:j})}createMediaStreamTrackSource(j){return new b(this,{mediaStreamTrack:j})}resume(){return this._state==="suspended"?new Promise((j,_e)=>{const et=()=>{this._nativeAudioContext.removeEventListener("statechange",et),this._nativeAudioContext.state==="running"?j():this.resume().then(j,_e)};this._nativeAudioContext.addEventListener("statechange",et)}):this._nativeAudioContext.resume().catch(j=>{throw j===void 0||j.code===15?e():j})}suspend(){return this._nativeAudioContext.suspend().catch(j=>{throw j===void 0?e():j})}},createAudioDestinationNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_(_e),tt=c(_e,j,et),nt=et?e(b):null;super($,!1,tt,nt),this._isNodeOfNativeOfflineAudioContext=et,this._nativeAudioDestinationNode=tt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount($){if(this._isNodeOfNativeOfflineAudioContext)throw a();if($>this._nativeAudioDestinationNode.maxChannelCount)throw s();this._nativeAudioDestinationNode.channelCount=$}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode($){if(this._isNodeOfNativeOfflineAudioContext)throw a();this._nativeAudioDestinationNode.channelCountMode=$}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer=o=>{const e=new WeakMap,s=async(a,c)=>{const d=c.destination;return e.set(c,d),await o(a,c,d),d};return{render(a,c){const d=e.get(c);return d!==void 0?Promise.resolve(d):s(a,c)}}},createAudioListenerFactory=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=$.listener,_e=()=>{const ct=new Float32Array(1),lt=e($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),ut=_($);let dt=!1,pt=[0,0,-1,0,1,0],gt=[0,0,0];const yt=()=>{if(dt)return;dt=!0;const _t=a($,256,9,0);_t.onaudioprocess=({inputBuffer:St})=>{const vt=[d(St,ct,0),d(St,ct,1),d(St,ct,2),d(St,ct,3),d(St,ct,4),d(St,ct,5)];vt.some((xt,bt)=>xt!==pt[bt])&&(j.setOrientation(...vt),pt=vt);const Ct=[d(St,ct,6),d(St,ct,7),d(St,ct,8)];Ct.some((xt,bt)=>xt!==gt[bt])&&(j.setPosition(...Ct),gt=Ct)},lt.connect(_t)},ft=_t=>St=>{St!==pt[_t]&&(pt[_t]=St,j.setOrientation(...pt))},mt=_t=>St=>{St!==gt[_t]&&(gt[_t]=St,j.setPosition(...gt))},Et=(_t,St,vt)=>{const Ct=s($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:St});Ct.connect(lt,0,_t),Ct.start(),Object.defineProperty(Ct.offset,"defaultValue",{get(){return St}});const xt=o({context:k},ut,Ct.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT);return b(xt,"value",bt=>()=>bt.call(xt),bt=>At=>{try{bt.call(xt,At)}catch(Ot){if(Ot.code!==9)throw Ot}yt(),ut&&vt(At)}),xt.cancelAndHoldAtTime=(bt=>ut?()=>{throw c()}:(...At)=>{const Ot=bt.apply(xt,At);return yt(),Ot})(xt.cancelAndHoldAtTime),xt.cancelScheduledValues=(bt=>ut?()=>{throw c()}:(...At)=>{const Ot=bt.apply(xt,At);return yt(),Ot})(xt.cancelScheduledValues),xt.exponentialRampToValueAtTime=(bt=>ut?()=>{throw c()}:(...At)=>{const Ot=bt.apply(xt,At);return yt(),Ot})(xt.exponentialRampToValueAtTime),xt.linearRampToValueAtTime=(bt=>ut?()=>{throw c()}:(...At)=>{const Ot=bt.apply(xt,At);return yt(),Ot})(xt.linearRampToValueAtTime),xt.setTargetAtTime=(bt=>ut?()=>{throw c()}:(...At)=>{const Ot=bt.apply(xt,At);return yt(),Ot})(xt.setTargetAtTime),xt.setValueAtTime=(bt=>ut?()=>{throw c()}:(...At)=>{const Ot=bt.apply(xt,At);return yt(),Ot})(xt.setValueAtTime),xt.setValueCurveAtTime=(bt=>ut?()=>{throw c()}:(...At)=>{const Ot=bt.apply(xt,At);return yt(),Ot})(xt.setValueCurveAtTime),xt};return{forwardX:Et(0,0,ft(0)),forwardY:Et(1,0,ft(1)),forwardZ:Et(2,-1,ft(2)),positionX:Et(6,0,mt(0)),positionY:Et(7,0,mt(1)),positionZ:Et(8,0,mt(2)),upX:Et(3,0,ft(3)),upY:Et(4,1,ft(4)),upZ:Et(5,0,ft(5))}},{forwardX:et,forwardY:tt,forwardZ:nt,positionX:st,positionY:rt,positionZ:it,upX:at,upY:ot,upZ:ht}=j.forwardX===void 0?_e():j;return{get forwardX(){return et},get forwardY(){return tt},get forwardZ(){return nt},get positionX(){return st},get positionY(){return rt},get positionZ(){return it},get upX(){return at},get upY(){return ot},get upZ(){return ht}}},isAudioNode$1=o=>"context"in o,isAudioNodeOutputConnection=o=>isAudioNode$1(o[0]),insertElementInSet=(o,e,s,a)=>{for(const c of o)if(s(c)){if(a)return!1;throw Error("The set contains at least one similar element.")}return o.add(e),!0},addActiveInputConnectionToAudioParam=(o,e,[s,a],c)=>{insertElementInSet(o,[e,s,a],d=>d[0]===e&&d[1]===s,c)},addPassiveInputConnectionToAudioParam=(o,[e,s,a],c)=>{const d=o.get(e);d===void 0?o.set(e,new Set([[s,a]])):insertElementInSet(d,[s,a],_=>_[0]===s,c)},isNativeAudioNodeFaker=o=>"inputs"in o,connectNativeAudioNodeToNativeAudioNode=(o,e,s,a)=>{if(isNativeAudioNodeFaker(e)){const c=e.inputs[a];return o.connect(c,s,0),[c,s,0]}return o.connect(e,s,a),[e,s,a]},deleteActiveInputConnection=(o,e,s)=>{for(const a of o)if(a[0]===e&&a[1]===s)return o.delete(a),a;return null},deleteActiveInputConnectionToAudioParam=(o,e,s)=>pickElementFromSet(o,a=>a[0]===e&&a[1]===s),deleteEventListenerOfAudioNode=(o,e)=>{if(!getEventListenersOfAudioNode(o).delete(e))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam=(o,e,s)=>{const a=getValueForKey(o,e),c=pickElementFromSet(a,d=>d[0]===s);return a.size===0&&o.delete(e),c},disconnectNativeAudioNodeFromNativeAudioNode=(o,e,s,a)=>{isNativeAudioNodeFaker(e)?o.disconnect(e.inputs[a],s,0):o.disconnect(e,s,a)},getNativeAudioNode=o=>getValueForKey(AUDIO_NODE_STORE,o),getNativeAudioParam=o=>getValueForKey(AUDIO_PARAM_STORE,o),isPartOfACycle=o=>CYCLE_COUNTERS.has(o),isPassiveAudioNode=o=>!ACTIVE_AUDIO_NODE_STORE.has(o),testAudioNodeDisconnectMethodSupport=(o,e)=>new Promise(s=>{if(e!==null)s(!0);else{const a=o.createScriptProcessor(256,1,1),c=o.createGain(),d=o.createBuffer(1,2,44100),_=d.getChannelData(0);_[0]=1,_[1]=1;const b=o.createBufferSource();b.buffer=d,b.loop=!0,b.connect(a).connect(o.destination),b.connect(c),b.disconnect(c),a.onaudioprocess=k=>{const $=k.inputBuffer.getChannelData(0);Array.prototype.some.call($,j=>j===1)?s(!0):s(!1),b.stop(),a.onaudioprocess=null,b.disconnect(a),a.disconnect(o.destination)},b.start()}}),visitEachAudioNodeOnce=(o,e)=>{const s=new Map;for(const a of o)for(const c of a){const d=s.get(c);s.set(c,d===void 0?1:d+1)}s.forEach((a,c)=>e(c,a))},isNativeAudioNode$1=o=>"context"in o,wrapAudioNodeDisconnectMethod=o=>{const e=new Map;o.connect=(s=>(a,c=0,d=0)=>{const _=isNativeAudioNode$1(a)?s(a,c,d):s(a,c),b=e.get(a);return b===void 0?e.set(a,[{input:d,output:c}]):b.every(k=>k.input!==d||k.output!==c)&&b.push({input:d,output:c}),_})(o.connect.bind(o)),o.disconnect=(s=>(a,c,d)=>{if(s.apply(o),a===void 0)e.clear();else if(typeof a=="number")for(const[_,b]of e){const k=b.filter($=>$.output!==a);k.length===0?e.delete(_):e.set(_,k)}else if(e.has(a))if(c===void 0)e.delete(a);else{const _=e.get(a);if(_!==void 0){const b=_.filter(k=>k.output!==c&&(k.input!==d||d===void 0));b.length===0?e.delete(a):e.set(a,b)}}for(const[_,b]of e)b.forEach(k=>{isNativeAudioNode$1(_)?o.connect(_,k.output,k.input):o.connect(_,k.output)})})(o.disconnect)},addConnectionToAudioParamOfAudioContext=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioParamConnections(e),{outputs:_}=getAudioNodeConnections(o),b=getEventListenersOfAudioNode(o),k=$=>{const j=getNativeAudioNode(o),_e=getNativeAudioParam(e);if($){const et=deletePassiveInputConnectionToAudioParam(d,o,s);addActiveInputConnectionToAudioParam(c,o,et,!1),!a&&!isPartOfACycle(o)&&j.connect(_e,s)}else{const et=deleteActiveInputConnectionToAudioParam(c,o,s);addPassiveInputConnectionToAudioParam(d,et,!1),!a&&!isPartOfACycle(o)&&j.disconnect(_e,s)}};return insertElementInSet(_,[e,s],$=>$[0]===e&&$[1]===s,!0)?(b.add(k),isActiveAudioNode(o)?addActiveInputConnectionToAudioParam(c,o,[s,k],!0):addPassiveInputConnectionToAudioParam(d,[o,s,k],!0),!0):!1},deleteInputConnectionOfAudioNode=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioNodeConnections(e),_=deleteActiveInputConnection(c[a],o,s);return _===null?[deletePassiveInputConnectionToAudioNode(d,o,s,a)[2],!1]:[_[2],!0]},deleteInputConnectionOfAudioParam=(o,e,s)=>{const{activeInputs:a,passiveInputs:c}=getAudioParamConnections(e),d=deleteActiveInputConnection(a,o,s);return d===null?[deletePassiveInputConnectionToAudioParam(c,o,s)[1],!1]:[d[2],!0]},deleteInputsOfAudioNode=(o,e,s,a,c)=>{const[d,_]=deleteInputConnectionOfAudioNode(o,s,a,c);if(d!==null&&(deleteEventListenerOfAudioNode(o,d),_&&!e&&!isPartOfACycle(o)&&disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(o),getNativeAudioNode(s),a,c)),isActiveAudioNode(s)){const{activeInputs:b}=getAudioNodeConnections(s);setInternalStateToPassiveWhenNecessary(s,b)}},deleteInputsOfAudioParam=(o,e,s,a)=>{const[c,d]=deleteInputConnectionOfAudioParam(o,s,a);c!==null&&(deleteEventListenerOfAudioNode(o,c),d&&!e&&!isPartOfACycle(o)&&getNativeAudioNode(o).disconnect(getNativeAudioParam(s),a))},deleteAnyConnection=(o,e)=>{const s=getAudioNodeConnections(o),a=[];for(const c of s.outputs)isAudioNodeOutputConnection(c)?deleteInputsOfAudioNode(o,e,...c):deleteInputsOfAudioParam(o,e,...c),a.push(c[0]);return s.outputs.clear(),a},deleteConnectionAtOutput=(o,e,s)=>{const a=getAudioNodeConnections(o),c=[];for(const d of a.outputs)d[1]===s&&(isAudioNodeOutputConnection(d)?deleteInputsOfAudioNode(o,e,...d):deleteInputsOfAudioParam(o,e,...d),c.push(d[0]),a.outputs.delete(d));return c},deleteConnectionToDestination=(o,e,s,a,c)=>{const d=getAudioNodeConnections(o);return Array.from(d.outputs).filter(_=>_[0]===s&&(a===void 0||_[1]===a)&&(c===void 0||_[2]===c)).map(_=>(isAudioNodeOutputConnection(_)?deleteInputsOfAudioNode(o,e,..._):deleteInputsOfAudioParam(o,e,..._),d.outputs.delete(_),_[0]))},createAudioNodeConstructor=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt,nt,st)=>class extends ${constructor(it,at,ot,ht){super(ot),this._context=it,this._nativeAudioNode=ot;const ct=j(it);_e(ct)&&s(testAudioNodeDisconnectMethodSupport,()=>testAudioNodeDisconnectMethodSupport(ct,st))!==!0&&wrapAudioNodeDisconnectMethod(ot),AUDIO_NODE_STORE.set(this,ot),EVENT_LISTENERS.set(this,new Set),it.state!=="closed"&&at&&setInternalStateToActive(this),o(this,ht,ot)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(it){this._nativeAudioNode.channelCount=it}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(it){this._nativeAudioNode.channelCountMode=it}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(it){this._nativeAudioNode.channelInterpretation=it}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(it,at=0,ot=0){if(at<0||at>=this._nativeAudioNode.numberOfOutputs)throw c();const ht=j(this._context),ct=nt(ht);if(et(it)||tt(it))throw d();if(isAudioNode$1(it)){const dt=getNativeAudioNode(it);try{const gt=connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode,dt,at,ot),yt=isPassiveAudioNode(this);(ct||yt)&&this._nativeAudioNode.disconnect(...gt),this.context.state!=="closed"&&!yt&&isPassiveAudioNode(it)&&setInternalStateToActive(it)}catch(gt){throw gt.code===12?d():gt}if(e(this,it,at,ot,ct)){const gt=k([this],it);visitEachAudioNodeOnce(gt,a(ct))}return it}const lt=getNativeAudioParam(it);if(lt.name==="playbackRate"&<.maxValue===1024)throw _();try{this._nativeAudioNode.connect(lt,at),(ct||isPassiveAudioNode(this))&&this._nativeAudioNode.disconnect(lt,at)}catch(dt){throw dt.code===12?d():dt}if(addConnectionToAudioParamOfAudioContext(this,it,at,ct)){const dt=k([this],it);visitEachAudioNodeOnce(dt,a(ct))}}disconnect(it,at,ot){let ht;const ct=j(this._context),lt=nt(ct);if(it===void 0)ht=deleteAnyConnection(this,lt);else if(typeof it=="number"){if(it<0||it>=this.numberOfOutputs)throw c();ht=deleteConnectionAtOutput(this,lt,it)}else{if(at!==void 0&&(at<0||at>=this.numberOfOutputs)||isAudioNode$1(it)&&ot!==void 0&&(ot<0||ot>=it.numberOfInputs))throw c();if(ht=deleteConnectionToDestination(this,lt,it,at,ot),ht.length===0)throw d()}for(const ut of ht){const dt=k([this],ut);visitEachAudioNodeOnce(dt,b)}}},createAudioParamFactory=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,st,rt=null,it=null)=>{const at=new AutomationEventList(st.defaultValue),ot=nt?a(at):null,ht={get defaultValue(){return st.defaultValue},get maxValue(){return rt===null?st.maxValue:rt},get minValue(){return it===null?st.minValue:it},get value(){return st.value},set value(ct){st.value=ct,ht.setValueAtTime(ct,tt.context.currentTime)},cancelAndHoldAtTime(ct){if(typeof st.cancelAndHoldAtTime=="function")ot===null&&at.flush(tt.context.currentTime),at.add(c(ct)),st.cancelAndHoldAtTime(ct);else{const lt=Array.from(at).pop();ot===null&&at.flush(tt.context.currentTime),at.add(c(ct));const ut=Array.from(at).pop();st.cancelScheduledValues(ct),lt!==ut&&ut!==void 0&&(ut.type==="exponentialRampToValue"?st.exponentialRampToValueAtTime(ut.value,ut.endTime):ut.type==="linearRampToValue"?st.linearRampToValueAtTime(ut.value,ut.endTime):ut.type==="setValue"?st.setValueAtTime(ut.value,ut.startTime):ut.type==="setValueCurve"&&st.setValueCurveAtTime(ut.values,ut.startTime,ut.duration))}return ht},cancelScheduledValues(ct){return ot===null&&at.flush(tt.context.currentTime),at.add(d(ct)),st.cancelScheduledValues(ct),ht},exponentialRampToValueAtTime(ct,lt){if(ct===0)throw new RangeError;if(!Number.isFinite(lt)||lt<0)throw new RangeError;return ot===null&&at.flush(tt.context.currentTime),at.add(_(ct,lt)),st.exponentialRampToValueAtTime(ct,lt),ht},linearRampToValueAtTime(ct,lt){return ot===null&&at.flush(tt.context.currentTime),at.add(b(ct,lt)),st.linearRampToValueAtTime(ct,lt),ht},setTargetAtTime(ct,lt,ut){return ot===null&&at.flush(tt.context.currentTime),at.add(k(ct,lt,ut)),st.setTargetAtTime(ct,lt,ut),ht},setValueAtTime(ct,lt){return ot===null&&at.flush(tt.context.currentTime),at.add($(ct,lt)),st.setValueAtTime(ct,lt),ht},setValueCurveAtTime(ct,lt,ut){const dt=ct instanceof Float32Array?ct:new Float32Array(ct);if(_e!==null&&_e.name==="webkitAudioContext"){const pt=lt+ut,gt=tt.context.sampleRate,yt=Math.ceil(lt*gt),ft=Math.floor(pt*gt),mt=ft-yt,Et=new Float32Array(mt);for(let St=0;St({replay(e){for(const s of o)if(s.type==="exponentialRampToValue"){const{endTime:a,value:c}=s;e.exponentialRampToValueAtTime(c,a)}else if(s.type==="linearRampToValue"){const{endTime:a,value:c}=s;e.linearRampToValueAtTime(c,a)}else if(s.type==="setTarget"){const{startTime:a,target:c,timeConstant:d}=s;e.setTargetAtTime(c,a,d)}else if(s.type==="setValue"){const{startTime:a,value:c}=s;e.setValueAtTime(c,a)}else if(s.type==="setValueCurve"){const{duration:a,startTime:c,values:d}=s;e.setValueCurveAtTime(d,c,a)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,s=null){return this._map.forEach((a,c)=>e.call(s,a,c,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$g={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt)=>class extends e{constructor(st,rt,it){var at;const ot=b(st),ht=k(ot),ct=j(Dt(Dt({},DEFAULT_OPTIONS$g),it));et(ct);const lt=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(ot),ut=lt==null?void 0:lt.get(rt),dt=ht||ot.state!=="closed"?ot:(at=_(ot))!==null&&at!==void 0?at:ot,pt=c(dt,ht?null:st.baseLatency,$,rt,ut,ct),gt=ht?a(rt,ct,ut):null;super(st,!0,pt,gt);const yt=[];pt.parameters.forEach((mt,Et)=>{const _t=s(this,ht,mt);yt.push([Et,_t])}),this._nativeAudioWorkletNode=pt,this._onprocessorerror=null,this._parameters=new ReadOnlyMap(yt),ht&&o(ot,this);const{activeInputs:ft}=d(this);_e(pt,ft)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(st){const rt=typeof st=="function"?tt(this,st):null;this._nativeAudioWorkletNode.onprocessorerror=rt;const it=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=it!==null&&it===rt?st:it}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel(o,e,s,a,c){if(typeof o.copyFromChannel=="function")e[s].byteLength===0&&(e[s]=new Float32Array(128)),o.copyFromChannel(e[s],a,c);else{const d=o.getChannelData(a);if(e[s].byteLength===0)e[s]=d.slice(c,c+128);else{const _=new Float32Array(d.buffer,c*Float32Array.BYTES_PER_ELEMENT,128);e[s].set(_)}}}const copyToChannel=(o,e,s,a,c)=>{typeof o.copyToChannel=="function"?e[s].byteLength!==0&&o.copyToChannel(e[s],a,c):e[s].byteLength!==0&&o.getChannelData(a).set(e[s],c)},createNestedArrays=(o,e)=>{const s=[];for(let a=0;a{const s=getValueForKey(NODE_TO_PROCESSOR_MAPS,o),a=getNativeAudioNode(e);return getValueForKey(s,a)},processBuffer=async(o,e,s,a,c,d,_)=>{const b=e===null?Math.ceil(o.context.length/128)*128:e.length,k=a.channelCount*a.numberOfInputs,$=c.reduce((rt,it)=>rt+it,0),j=$===0?null:s.createBuffer($,b,s.sampleRate);if(d===void 0)throw new Error("Missing the processor constructor.");const _e=getAudioNodeConnections(o),et=await getAudioWorkletProcessor(s,o),tt=createNestedArrays(a.numberOfInputs,a.channelCount),nt=createNestedArrays(a.numberOfOutputs,c),st=Array.from(o.parameters.keys()).reduce((rt,it)=>kt(Dt({},rt),{[it]:new Float32Array(128)}),{});for(let rt=0;rt0&&e!==null)for(let it=0;it{copyFromChannel(e,st,it,k+at,rt)});for(let it=0;it_e.activeInputs[ht].size===0?[]:ot),at=_(rt/s.sampleRate,s.sampleRate,()=>et.process(it,nt,st));if(j!==null)for(let ot=0,ht=0;ot(rt,it,at)=>{const ot=new WeakMap;let ht=null;const ct=async(lt,ut)=>{let dt=j(lt),pt=null;const gt=isOwnedByContext(dt,ut),yt=Array.isArray(it.outputChannelCount)?it.outputChannelCount:Array.from(it.outputChannelCount);if(_e===null){const ft=yt.reduce((St,vt)=>St+vt,0),mt=c(ut,{channelCount:Math.max(1,ft),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ft)}),Et=[];for(let St=0;St{const At=new et(xt,Math.ceil(lt.context.length/128)*128,ut.sampleRate),Ot=[],Tt=[];for(let It=0;It{const wt=d(At,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:It.value});return await tt(At,It,wt.offset),wt})),$t=a(At,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,vt+Ct)});for(let It=0;Itnt(lt,At,It))),st(At)})(),ut,it,yt,at,$)}const ft=await ht,mt=s(ut,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[Et,_t,St]=pt;ft!==null&&(mt.buffer=ft,mt.start(0)),mt.connect(Et);for(let vt=0,Ct=0;vtclass extends nt{constructor(ct,lt){super(ct,lt),this._nativeContext=ct,this._audioWorklet=o===void 0?void 0:{addModule:(ut,dt)=>o(this,ut,dt)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new e(this)}createBiquadFilter(){return new c(this)}createBuffer(ct,lt,ut){return new s({length:lt,numberOfChannels:ct,sampleRate:ut})}createBufferSource(){return new a(this)}createChannelMerger(ct=6){return new d(this,{numberOfInputs:ct})}createChannelSplitter(ct=6){return new _(this,{numberOfOutputs:ct})}createConstantSource(){return new b(this)}createConvolver(){return new k(this)}createDelay(ct=1){return new j(this,{maxDelayTime:ct})}createDynamicsCompressor(){return new _e(this)}createGain(){return new et(this)}createIIRFilter(ct,lt){return new tt(this,{feedback:lt,feedforward:ct})}createOscillator(){return new st(this)}createPanner(){return new rt(this)}createPeriodicWave(ct,lt,ut={disableNormalization:!1}){return new it(this,kt(Dt({},ut),{imag:lt,real:ct}))}createStereoPanner(){return new at(this)}createWaveShaper(){return new ot(this)}decodeAudioData(ct,lt,ut){return $(this._nativeContext,ct).then(dt=>(typeof lt=="function"&<(dt),dt),dt=>{throw typeof ut=="function"&&ut(dt),dt})}},DEFAULT_OPTIONS$f={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=Dt(Dt({},DEFAULT_OPTIONS$f),j),tt=c(_e,et),nt=_(_e),st=nt?s():null;super($,!1,tt,st),this._Q=e(this,nt,tt.Q,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._detune=e(this,nt,tt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT)),this._frequency=e(this,nt,tt.frequency,$.sampleRate/2,0),this._gain=e(this,nt,tt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT),MOST_NEGATIVE_SINGLE_FLOAT),this._nativeBiquadFilterNode=tt,b(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type($){this._nativeBiquadFilterNode.type=$}getFrequencyResponse($,j,_e){try{this._nativeBiquadFilterNode.getFrequencyResponse($,j,_e)}catch(et){throw et.code===11?a():et}if($.length!==j.length||j.length!==_e.length)throw a()}},createBiquadFilterNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={Q:$.Q.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,detune:$.detune.value,frequency:$.frequency.value,gain:$.gain.value,type:$.type};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.Q,$.Q),await o(k,b.detune,$.detune),await o(k,b.frequency,$.frequency),await o(k,b.gain,$.gain)):(await a(k,b.Q,$.Q),await a(k,b.detune,$.detune),await a(k,b.frequency,$.frequency),await a(k,b.gain,$.gain)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createCacheTestResult=(o,e)=>(s,a)=>{const c=e.get(s);if(c!==void 0)return c;const d=o.get(s);if(d!==void 0)return d;try{const _=a();return _ instanceof Promise?(o.set(s,_),_.catch(()=>!1).then(b=>(o.delete(s),e.set(s,b),b))):(e.set(s,_),_)}catch{return e.set(s,!1),!1}},DEFAULT_OPTIONS$e={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor=(o,e,s,a,c)=>class extends o{constructor(_,b){const k=a(_),$=Dt(Dt({},DEFAULT_OPTIONS$e),b),j=s(k,$),_e=c(k)?e():null;super(_,!1,j,_e)}},createChannelMergerNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfInputs:b.numberOfInputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},DEFAULT_OPTIONS$d={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=d(Dt(Dt({},DEFAULT_OPTIONS$d),k)),_e=s($,j),et=c($)?e():null;super(b,!1,_e,et)}},createChannelSplitterNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfOutputs:b.numberOfOutputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createConnectAudioParam=o=>(e,s,a)=>o(s,e,a),createConnectMultipleOutputs=o=>(e,s,a=0,c=0)=>{const d=e[a];if(d===void 0)throw o();return isNativeAudioNode$1(s)?d.connect(s,0,c):d.connect(s,0)},createConnectedNativeAudioBufferSourceNodeFactory=o=>(e,s)=>{const a=o(e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),c=e.createBuffer(1,2,44100);return a.buffer=c,a.loop=!0,a.connect(s),a.start(),()=>{a.stop(),a.disconnect(s)}},DEFAULT_OPTIONS$c={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Dt(Dt({},DEFAULT_OPTIONS$c),$),et=a(j,_e),tt=d(j),nt=tt?s():null;super(k,!1,et,nt),this._constantSourceNodeRenderer=nt,this._nativeConstantSourceNode=et,this._offset=e(this,tt,et.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeConstantSourceNode.onended=$;const j=this._nativeConstantSourceNode.onended;this._onended=j!==null&&j===$?k:j}start(k=0){if(this._nativeConstantSourceNode.start(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeConstantSourceNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeConstantSourceNode.addEventListener("ended",$)}}stop(k=0){this._nativeConstantSourceNode.stop(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=k)}},createConstantSourceNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,offset:_e.offset.value};_e=e(j,tt),_!==null&&_e.start(_),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.offset,_e.offset):await a(j,$.offset,_e.offset),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},createConvertNumberToUnsignedLong=o=>e=>(o[0]=e,o[0]),DEFAULT_OPTIONS$b={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=Dt(Dt({},DEFAULT_OPTIONS$b),k),_e=s($,j),tt=c($)?e():null;super(b,!1,_e,tt),this._isBufferNullified=!1,this._nativeConvolverNode=_e,j.buffer!==null&&d(this,j.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(b){if(this._nativeConvolverNode.buffer=b,b===null&&this._nativeConvolverNode.buffer!==null){const k=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=k.createBuffer(1,1,44100),this._isBufferNullified=!0,d(this,0)}else this._isBufferNullified=!1,d(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(b){this._nativeConvolverNode.normalize=b}},createConvolverNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={buffer:b.buffer,channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,disableNormalization:!b.normalize};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createCreateNativeOfflineAudioContext=(o,e)=>(s,a,c)=>{if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new e(s,a,c)}catch(d){throw d.name==="SyntaxError"?o():d}},createDataCloneError=()=>new DOMException("","DataCloneError"),detachArrayBuffer=o=>{const{port1:e,port2:s}=new MessageChannel;return new Promise(a=>{const c=()=>{s.onmessage=null,e.close(),s.close(),a()};s.onmessage=()=>c();try{e.postMessage(o,[o])}finally{c()}})},createDecodeAudioData=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_(_e)?_e:d(_e);if(c.has(et)){const nt=s();return Promise.reject(nt)}try{c.add(et)}catch{}return e(k,()=>k(tt))?tt.decodeAudioData(et).then(nt=>(detachArrayBuffer(et).catch(()=>{}),e(b,()=>b(nt))||j(nt),o.add(nt),nt)):new Promise((nt,st)=>{const rt=async()=>{try{await detachArrayBuffer(et)}catch{}},it=at=>{st(at),rt()};try{tt.decodeAudioData(et,at=>{typeof at.copyFromChannel!="function"&&($(at),wrapAudioBufferGetChannelDataMethod(at)),o.add(at),rt().then(()=>nt(at))},at=>{it(at===null?a():at)})}catch(at){it(at)}})},createDecrementCycleCounter=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=e.get(k);if(j===void 0)throw new Error("Missing the expected cycle count.");const _e=d(k.context),et=b(_e);if(j===$){if(e.delete(k),!et&&_(k)){const tt=a(k),{outputs:nt}=s(k);for(const st of nt)if(isAudioNodeOutputConnection(st)){const rt=a(st[0]);o(tt,rt,st[1],st[2])}else{const rt=c(st[0]);tt.connect(rt,st[1])}}}else e.set(k,j-$)},DEFAULT_OPTIONS$a={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Dt(Dt({},DEFAULT_OPTIONS$a),$),et=a(j,_e),tt=d(j),nt=tt?s(_e.maxDelayTime):null;super(k,!1,et,nt),this._delayTime=e(this,tt,et.delayTime),_(this,_e.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory=(o,e,s,a,c)=>d=>{const _=new WeakMap,b=async(k,$)=>{let j=s(k);const _e=isOwnedByContext(j,$);if(!_e){const et={channelCount:j.channelCount,channelCountMode:j.channelCountMode,channelInterpretation:j.channelInterpretation,delayTime:j.delayTime.value,maxDelayTime:d};j=e($,et)}return _.set($,j),_e?await o($,k.delayTime,j.delayTime):await a($,k.delayTime,j.delayTime),await c(k,$,j),j};return{render(k,$){const j=_.get($);return j!==void 0?Promise.resolve(j):b(k,$)}}},createDeleteActiveInputConnectionToAudioNode=o=>(e,s,a,c)=>o(e[c],d=>d[0]===s&&d[1]===a),createDeleteUnrenderedAudioWorkletNode=o=>(e,s)=>{o(e).delete(s)},isDelayNode=o=>"delayTime"in o,createDetectCycles=(o,e,s)=>function a(c,d){const _=isAudioNode$1(d)?d:s(o,d);if(isDelayNode(_))return[];if(c[0]===_)return[c];if(c.includes(_))return[];const{outputs:b}=e(_);return Array.from(b).map(k=>a([...c,_],k[0])).reduce((k,$)=>k.concat($),[])},getOutputAudioNodeAtIndex=(o,e,s)=>{const a=e[s];if(a===void 0)throw o();return a},createDisconnectMultipleOutputs=o=>(e,s=void 0,a=void 0,c=0)=>s===void 0?e.forEach(d=>d.disconnect()):typeof s=="number"?getOutputAudioNodeAtIndex(o,e,s).disconnect():isNativeAudioNode$1(s)?a===void 0?e.forEach(d=>d.disconnect(s)):c===void 0?getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0):getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0,c):a===void 0?e.forEach(d=>d.disconnect(s)):getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0),DEFAULT_OPTIONS$9={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=Dt(Dt({},DEFAULT_OPTIONS$9),j),tt=a(_e,et),nt=_(_e),st=nt?s():null;super($,!1,tt,st),this._attack=e(this,nt,tt.attack),this._knee=e(this,nt,tt.knee),this._nativeDynamicsCompressorNode=tt,this._ratio=e(this,nt,tt.ratio),this._release=e(this,nt,tt.release),this._threshold=e(this,nt,tt.threshold),b(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount($){const j=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=$,$>2)throw this._nativeDynamicsCompressorNode.channelCount=j,c()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode($){const j=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=$,$==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=j,c()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={attack:$.attack.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,knee:$.knee.value,ratio:$.ratio.value,release:$.release.value,threshold:$.threshold.value};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.attack,$.attack),await o(k,b.knee,$.knee),await o(k,b.ratio,$.ratio),await o(k,b.release,$.release),await o(k,b.threshold,$.threshold)):(await a(k,b.attack,$.attack),await a(k,b.knee,$.knee),await a(k,b.ratio,$.ratio),await a(k,b.release,$.release),await a(k,b.threshold,$.threshold)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createEncodingError=()=>new DOMException("","EncodingError"),createEvaluateSource=o=>e=>new Promise((s,a)=>{if(o===null){a(new SyntaxError);return}const c=o.document.head;if(c===null)a(new SyntaxError);else{const d=o.document.createElement("script"),_=new Blob([e],{type:"application/javascript"}),b=URL.createObjectURL(_),k=o.onerror,$=()=>{o.onerror=k,URL.revokeObjectURL(b)};o.onerror=(j,_e,et,tt,nt)=>{if(_e===b||_e===o.location.href&&et===1&&tt===1)return $(),a(nt),!1;if(k!==null)return k(j,_e,et,tt,nt)},d.onerror=()=>{$(),a(new SyntaxError)},d.onload=()=>{$(),s()},d.src=b,d.type="module",c.appendChild(d)}}),createEventTargetConstructor=o=>class{constructor(s){this._nativeEventTarget=s,this._listeners=new WeakMap}addEventListener(s,a,c){if(a!==null){let d=this._listeners.get(a);d===void 0&&(d=o(this,a),typeof a=="function"&&this._listeners.set(a,d)),this._nativeEventTarget.addEventListener(s,d,c)}}dispatchEvent(s){return this._nativeEventTarget.dispatchEvent(s)}removeEventListener(s,a,c){const d=a===null?void 0:this._listeners.get(a);this._nativeEventTarget.removeEventListener(s,d===void 0?null:d,c)}},createExposeCurrentFrameAndCurrentTime=o=>(e,s,a)=>{Object.defineProperties(o,{currentFrame:{configurable:!0,get(){return Math.round(e*s)}},currentTime:{configurable:!0,get(){return e}}});try{return a()}finally{o!==null&&(delete o.currentFrame,delete o.currentTime)}},createFetchSource=o=>async e=>{try{const s=await fetch(e);if(s.ok)return[await s.text(),s.url]}catch{}throw o()},DEFAULT_OPTIONS$8={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=Dt(Dt({},DEFAULT_OPTIONS$8),k),_e=a($,j),et=d($),tt=et?s():null;super(b,!1,_e,tt),this._gain=e(this,et,_e.gain,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get gain(){return this._gain}},createGainNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,gain:$.gain.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.gain,$.gain):await a(k,b.gain,$.gain),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createGetActiveAudioWorkletNodeInputs=(o,e)=>s=>e(o,s),createGetAudioNodeRenderer=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return s.renderer},createGetAudioNodeTailTime=o=>e=>{var s;return(s=o.get(e))!==null&&s!==void 0?s:0},createGetAudioParamRenderer=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return s.renderer},createGetBackupOfflineAudioContext=o=>e=>o.get(e),createInvalidStateError=()=>new DOMException("","InvalidStateError"),createGetNativeContext=o=>e=>{const s=o.get(e);if(s===void 0)throw createInvalidStateError();return s},createGetOrCreateBackupOfflineAudioContext=(o,e)=>s=>{let a=o.get(s);if(a!==void 0)return a;if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");return a=new e(1,1,44100),o.set(s,a),a},createGetUnrenderedAudioWorkletNodes=o=>e=>{const s=o.get(e);if(s===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return s},createInvalidAccessError=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod=o=>{o.getFrequencyResponse=(e=>(s,a,c)=>{if(s.length!==a.length||a.length!==c.length)throw createInvalidAccessError();return e.call(o,s,a,c)})(o.getFrequencyResponse)},DEFAULT_OPTIONS$7={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=c($),_e=Dt(Dt({},DEFAULT_OPTIONS$7),k),et=e($,j?null:b.baseLatency,_e),tt=j?s(_e.feedback,_e.feedforward):null;super(b,!1,et,tt),wrapIIRFilterNodeGetFrequencyResponseMethod(et),this._nativeIIRFilterNode=et,d(this,1)}getFrequencyResponse(b,k,$){return this._nativeIIRFilterNode.getFrequencyResponse(b,k,$)}},filterBuffer=(o,e,s,a,c,d,_,b,k,$,j)=>{const _e=$.length;let et=b;for(let tt=0;tt<_e;tt+=1){let nt=s[0]*$[tt];for(let st=1;st{const c=s instanceof Float64Array?s:new Float64Array(s),d=a instanceof Float64Array?a:new Float64Array(a),_=c.length,b=d.length,k=Math.min(_,b);if(c[0]!==1){for(let nt=0;nt<_;nt+=1)d[nt]/=c[0];for(let nt=1;nt(d,_)=>{const b=new WeakMap;let k=null;const $=async(j,_e)=>{let et=null,tt=e(j);const nt=isOwnedByContext(tt,_e);if(_e.createIIRFilter===void 0?et=o(_e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):nt||(tt=_e.createIIRFilter(_,d)),b.set(_e,et===null?tt:et),et!==null){if(k===null){if(s===null)throw new Error("Missing the native OfflineAudioContext constructor.");const rt=new s(j.context.destination.channelCount,j.context.length,_e.sampleRate);k=(async()=>{await a(j,rt,rt.destination);const it=await c(rt);return filterFullBuffer(it,_e,d,_)})()}const st=await k;return et.buffer=st,et.start(0),et}return await a(j,_e,tt),tt};return{render(j,_e){const et=b.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},createIncrementCycleCounterFactory=(o,e,s,a,c,d)=>_=>(b,k)=>{const $=o.get(b);if($===void 0){if(!_&&d(b)){const j=a(b),{outputs:_e}=s(b);for(const et of _e)if(isAudioNodeOutputConnection(et)){const tt=a(et[0]);e(j,tt,et[1],et[2])}else{const tt=c(et[0]);j.disconnect(tt,et[1])}}o.set(b,k)}else o.set(b,$+k)},createIsAnyAudioContext=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsAnyAudioNode=(o,e)=>s=>o.has(s)||e(s),createIsAnyAudioParam=(o,e)=>s=>o.has(s)||e(s),createIsAnyOfflineAudioContext=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsNativeAudioContext=o=>e=>o!==null&&e instanceof o,createIsNativeAudioNode=o=>e=>o!==null&&typeof o.AudioNode=="function"&&e instanceof o.AudioNode,createIsNativeAudioParam=o=>e=>o!==null&&typeof o.AudioParam=="function"&&e instanceof o.AudioParam,createIsNativeContext=(o,e)=>s=>o(s)||e(s),createIsNativeOfflineAudioContext=o=>e=>o!==null&&e instanceof o,createIsSecureContext=o=>o!==null&&o.isSecureContext,createIsSupportedPromise=async(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt,nt,st)=>o(e,e)&&o(s,s)&&o(c,c)&&o(d,d)&&o(b,b)&&o(k,k)&&o($,$)&&o(j,j)&&o(_e,_e)&&o(et,et)&&o(tt,tt)?(await Promise.all([o(a,a),o(_,_),o(nt,nt),o(st,st)])).every(it=>it):!1,createMediaElementAudioSourceNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw TypeError();super(d,!0,k,null),this._nativeMediaElementAudioSourceNode=k}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$6={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d);if(a(b))throw new TypeError;const k=Dt(Dt({},DEFAULT_OPTIONS$6),_),$=e(b,k);super(d,!1,$,null),this._nativeMediaStreamAudioDestinationNode=$}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw new TypeError;super(d,!0,k,null),this._nativeMediaStreamAudioSourceNode=k}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor=(o,e,s)=>class extends o{constructor(c,d){const _=s(c),b=e(_,d);super(c,!0,b,null)}},createMinimalBaseAudioContextConstructor=(o,e,s,a,c,d)=>class extends s{constructor(b,k){super(b),this._nativeContext=b,CONTEXT_STORE.set(this,b),a(b)&&c.set(b,new Set),this._destination=new o(this,k),this._listener=e(this,b),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(b){const k=typeof b=="function"?d(this,b):null;this._nativeContext.onstatechange=k;const $=this._nativeContext.onstatechange;this._onstatechange=$!==null&&$===k?b:$}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport=o=>{const e=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const s=o.decodeAudioData(e.buffer,()=>{});return s===void 0?!1:(s.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections=(o,e)=>(s,a,c)=>{const d=new Set;return s.connect=(_=>(b,k=0,$=0)=>{const j=d.size===0;if(e(b))return _.call(s,b,k,$),o(d,[b,k,$],_e=>_e[0]===b&&_e[1]===k&&_e[2]===$,!0),j&&a(),b;_.call(s,b,k),o(d,[b,k],_e=>_e[0]===b&&_e[1]===k,!0),j&&a()})(s.connect),s.disconnect=(_=>(b,k,$)=>{const j=d.size>0;if(b===void 0)_.apply(s),d.clear();else if(typeof b=="number"){_.call(s,b);for(const et of d)et[1]===b&&d.delete(et)}else{e(b)?_.call(s,b,k,$):_.call(s,b,k);for(const et of d)et[0]===b&&(k===void 0||et[1]===k)&&($===void 0||et[2]===$)&&d.delete(et)}const _e=d.size===0;j&&_e&&c()})(s.disconnect),s},assignNativeAudioNodeOption=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s]&&(o[s]=a)},assignNativeAudioNodeOptions=(o,e)=>{assignNativeAudioNodeOption(o,e,"channelCount"),assignNativeAudioNodeOption(o,e,"channelCountMode"),assignNativeAudioNodeOption(o,e,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport=o=>typeof o.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod=o=>{o.getFloatTimeDomainData=e=>{const s=new Uint8Array(e.length);o.getByteTimeDomainData(s);const a=Math.max(s.length,o.fftSize);for(let c=0;c(s,a)=>{const c=s.createAnalyser();if(assignNativeAudioNodeOptions(c,a),!(a.maxDecibels>a.minDecibels))throw e();return assignNativeAudioNodeOption(c,a,"fftSize"),assignNativeAudioNodeOption(c,a,"maxDecibels"),assignNativeAudioNodeOption(c,a,"minDecibels"),assignNativeAudioNodeOption(c,a,"smoothingTimeConstant"),o(testAnalyserNodeGetFloatTimeDomainDataMethodSupport,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport(c))||wrapAnalyserNodeGetFloatTimeDomainDataMethod(c),c},createNativeAudioBufferConstructor=o=>o===null?null:o.hasOwnProperty("AudioBuffer")?o.AudioBuffer:null,assignNativeAudioNodeAudioParamValue=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s].value&&(o[s].value=a)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls=o=>{o.start=(e=>{let s=!1;return(a=0,c=0,d)=>{if(s)throw createInvalidStateError();e.call(o,a,c,d),s=!0}})(o.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters=o=>{o.start=(e=>(s=0,a=0,c)=>{if(typeof c=="number"&&c<0||a<0||s<0)throw new RangeError("The parameters can't be negative.");e.call(o,s,a,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters=o=>{o.stop=(e=>(s=0)=>{if(s<0)throw new RangeError("The parameter can't be negative.");e.call(o,s)})(o.stop)},createNativeAudioBufferSourceNodeFactory=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_e.createBufferSource();return assignNativeAudioNodeOptions(tt,et),assignNativeAudioNodeAudioParamValue(tt,et,"playbackRate"),assignNativeAudioNodeOption(tt,et,"buffer"),assignNativeAudioNodeOption(tt,et,"loop"),assignNativeAudioNodeOption(tt,et,"loopEnd"),assignNativeAudioNodeOption(tt,et,"loopStart"),e(s,()=>s(_e))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(tt),e(a,()=>a(_e))||k(tt),e(c,()=>c(_e))||$(tt,_e),e(d,()=>d(_e))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(tt),e(_,()=>_(_e))||j(tt,_e),e(b,()=>b(_e))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(tt),o(_e,tt),tt},createNativeAudioContextConstructor=o=>o===null?null:o.hasOwnProperty("AudioContext")?o.AudioContext:o.hasOwnProperty("webkitAudioContext")?o.webkitAudioContext:null,createNativeAudioDestinationNodeFactory=(o,e)=>(s,a,c)=>{const d=s.destination;if(d.channelCount!==a)try{d.channelCount=a}catch{}c&&d.channelCountMode!=="explicit"&&(d.channelCountMode="explicit"),d.maxChannelCount===0&&Object.defineProperty(d,"maxChannelCount",{value:a});const _=o(s,{channelCount:a,channelCountMode:d.channelCountMode,channelInterpretation:d.channelInterpretation,gain:1});return e(_,"channelCount",b=>()=>b.call(_),b=>k=>{b.call(_,k);try{d.channelCount=k}catch($){if(k>d.maxChannelCount)throw $}}),e(_,"channelCountMode",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelCountMode=k}),e(_,"channelInterpretation",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelInterpretation=k}),Object.defineProperty(_,"maxChannelCount",{get:()=>d.maxChannelCount}),_.connect(d),_},createNativeAudioWorkletNodeConstructor=o=>o===null?null:o.hasOwnProperty("AudioWorkletNode")?o.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions=o=>{const{port1:e}=new MessageChannel;try{e.postMessage(o)}finally{e.close()}},createNativeAudioWorkletNodeFactory=(o,e,s,a,c)=>(d,_,b,k,$,j)=>{if(b!==null)try{const _e=new b(d,k,j),et=new Map;let tt=null;if(Object.defineProperties(_e,{channelCount:{get:()=>j.channelCount,set:()=>{throw o()}},channelCountMode:{get:()=>"explicit",set:()=>{throw o()}},onprocessorerror:{get:()=>tt,set:nt=>{typeof tt=="function"&&_e.removeEventListener("processorerror",tt),tt=typeof nt=="function"?nt:null,typeof tt=="function"&&_e.addEventListener("processorerror",tt)}}}),_e.addEventListener=(nt=>(...st)=>{if(st[0]==="processorerror"){const rt=typeof st[1]=="function"?st[1]:typeof st[1]=="object"&&st[1]!==null&&typeof st[1].handleEvent=="function"?st[1].handleEvent:null;if(rt!==null){const it=et.get(st[1]);it!==void 0?st[1]=it:(st[1]=at=>{at.type==="error"?(Object.defineProperties(at,{type:{value:"processorerror"}}),rt(at)):rt(new ErrorEvent(st[0],Dt({},at)))},et.set(rt,st[1]))}}return nt.call(_e,"error",st[1],st[2]),nt.call(_e,...st)})(_e.addEventListener),_e.removeEventListener=(nt=>(...st)=>{if(st[0]==="processorerror"){const rt=et.get(st[1]);rt!==void 0&&(et.delete(st[1]),st[1]=rt)}return nt.call(_e,"error",st[1],st[2]),nt.call(_e,st[0],st[1],st[2])})(_e.removeEventListener),j.numberOfOutputs!==0){const nt=s(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return _e.connect(nt).connect(d.destination),c(_e,()=>nt.disconnect(),()=>nt.connect(d.destination))}return _e}catch(_e){throw _e.code===11?a():_e}if($===void 0)throw a();return testClonabilityOfAudioWorkletNodeOptions(j),e(d,_,$,j)},computeBufferSize=(o,e)=>o===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(o*e))))),cloneAudioWorkletNodeOptions=o=>new Promise((e,s)=>{const{port1:a,port2:c}=new MessageChannel;a.onmessage=({data:d})=>{a.close(),c.close(),e(d)},a.onmessageerror=({data:d})=>{a.close(),c.close(),s(d)},c.postMessage(o)}),createAudioWorkletProcessorPromise=async(o,e)=>{const s=await cloneAudioWorkletNodeOptions(e);return new o(s)},createAudioWorkletProcessor=(o,e,s,a)=>{let c=NODE_TO_PROCESSOR_MAPS.get(o);c===void 0&&(c=new WeakMap,NODE_TO_PROCESSOR_MAPS.set(o,c));const d=createAudioWorkletProcessorPromise(s,a);return c.set(e,d),d},createNativeAudioWorkletNodeFakerFactory=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,st,rt)=>{if(rt.numberOfInputs===0&&rt.numberOfOutputs===0)throw k();const it=Array.isArray(rt.outputChannelCount)?rt.outputChannelCount:Array.from(rt.outputChannelCount);if(it.some(Ft=>Ft<1))throw k();if(it.length!==rt.numberOfOutputs)throw e();if(rt.channelCountMode!=="explicit")throw k();const at=rt.channelCount*rt.numberOfInputs,ot=it.reduce((Ft,Pt)=>Ft+Pt,0),ht=st.parameterDescriptors===void 0?0:st.parameterDescriptors.length;if(at+ht>6||ot>6)throw k();const ct=new MessageChannel,lt=[],ut=[];for(let Ft=0;FtFt===void 0?0:Ft},maxValue:{get:()=>Pt===void 0?MOST_POSITIVE_SINGLE_FLOAT:Pt},minValue:{get:()=>Qt===void 0?MOST_NEGATIVE_SINGLE_FLOAT:Qt}}),dt.push(Mt)}const pt=a(tt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,at+ht)}),gt=computeBufferSize(nt,tt.sampleRate),yt=b(tt,gt,at+ht,Math.max(1,ot)),ft=c(tt,{channelCount:Math.max(1,ot),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ot)}),mt=[];for(let Ft=0;Ft{const Qt=dt[Pt];return Qt.connect(pt,0,at+Pt),Qt.start(0),[Ft,Qt.offset]}));pt.connect(yt);let _t=rt.channelInterpretation,St=null;const vt=rt.numberOfOutputs===0?[yt]:mt,Ct={get bufferSize(){return gt},get channelCount(){return rt.channelCount},set channelCount(Ft){throw s()},get channelCountMode(){return rt.channelCountMode},set channelCountMode(Ft){throw s()},get channelInterpretation(){return _t},set channelInterpretation(Ft){for(const Pt of lt)Pt.channelInterpretation=Ft;_t=Ft},get context(){return yt.context},get inputs(){return lt},get numberOfInputs(){return rt.numberOfInputs},get numberOfOutputs(){return rt.numberOfOutputs},get onprocessorerror(){return St},set onprocessorerror(Ft){typeof St=="function"&&Ct.removeEventListener("processorerror",St),St=typeof Ft=="function"?Ft:null,typeof St=="function"&&Ct.addEventListener("processorerror",St)},get parameters(){return Et},get port(){return ct.port2},addEventListener(...Ft){return yt.addEventListener(Ft[0],Ft[1],Ft[2])},connect:o.bind(null,vt),disconnect:$.bind(null,vt),dispatchEvent(...Ft){return yt.dispatchEvent(Ft[0])},removeEventListener(...Ft){return yt.removeEventListener(Ft[0],Ft[1],Ft[2])}},xt=new Map;ct.port1.addEventListener=(Ft=>(...Pt)=>{if(Pt[0]==="message"){const Qt=typeof Pt[1]=="function"?Pt[1]:typeof Pt[1]=="object"&&Pt[1]!==null&&typeof Pt[1].handleEvent=="function"?Pt[1].handleEvent:null;if(Qt!==null){const Lt=xt.get(Pt[1]);Lt!==void 0?Pt[1]=Lt:(Pt[1]=Mt=>{j(tt.currentTime,tt.sampleRate,()=>Qt(Mt))},xt.set(Qt,Pt[1]))}}return Ft.call(ct.port1,Pt[0],Pt[1],Pt[2])})(ct.port1.addEventListener),ct.port1.removeEventListener=(Ft=>(...Pt)=>{if(Pt[0]==="message"){const Qt=xt.get(Pt[1]);Qt!==void 0&&(xt.delete(Pt[1]),Pt[1]=Qt)}return Ft.call(ct.port1,Pt[0],Pt[1],Pt[2])})(ct.port1.removeEventListener);let bt=null;Object.defineProperty(ct.port1,"onmessage",{get:()=>bt,set:Ft=>{typeof bt=="function"&&ct.port1.removeEventListener("message",bt),bt=typeof Ft=="function"?Ft:null,typeof bt=="function"&&(ct.port1.addEventListener("message",bt),ct.port1.start())}}),st.prototype.port=ct.port1;let At=null;createAudioWorkletProcessor(tt,Ct,st,rt).then(Ft=>At=Ft);const Tt=createNestedArrays(rt.numberOfInputs,rt.channelCount),Rt=createNestedArrays(rt.numberOfOutputs,it),$t=st.parameterDescriptors===void 0?[]:st.parameterDescriptors.reduce((Ft,{name:Pt})=>kt(Dt({},Ft),{[Pt]:new Float32Array(128)}),{});let It=!0;const wt=()=>{rt.numberOfOutputs>0&&yt.disconnect(ft);for(let Ft=0,Pt=0;Ft{if(At!==null){const Qt=_e(Ct);for(let Lt=0;Lt{copyFromChannel(Ft,$t,Mt,at+Wt,Lt)});for(let Mt=0;Mt{if(Qt[zt].size>0)return qt.set(zt,gt/128),Gt;const Xt=qt.get(zt);return Xt===void 0?[]:(Gt.every(Zt=>Zt.every(sn=>sn===0))&&(Xt===1?qt.delete(zt):qt.set(zt,Xt-1)),Gt)});It=j(tt.currentTime+Lt/tt.sampleRate,tt.sampleRate,()=>At.process(Mt,Rt,$t));for(let Gt=0,zt=0;Gtyt.connect(Bt).connect(tt.destination),Jt=()=>{yt.disconnect(Bt),Bt.disconnect()},en=()=>{if(It){Jt(),rt.numberOfOutputs>0&&yt.connect(ft);for(let Ft=0,Pt=0;Ft{It&&(Kt(),wt()),jt=!1};return Kt(),et(Ct,en,tn)},createNativeBiquadFilterNode=(o,e)=>{const s=o.createBiquadFilter();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"Q"),assignNativeAudioNodeAudioParamValue(s,e,"detune"),assignNativeAudioNodeAudioParamValue(s,e,"frequency"),assignNativeAudioNodeAudioParamValue(s,e,"gain"),assignNativeAudioNodeOption(s,e,"type"),s},createNativeChannelMergerNodeFactory=(o,e)=>(s,a)=>{const c=s.createChannelMerger(a.numberOfInputs);return o!==null&&o.name==="webkitAudioContext"&&e(s,c),assignNativeAudioNodeOptions(c,a),c},wrapChannelSplitterNode=o=>{const e=o.numberOfOutputs;Object.defineProperty(o,"channelCount",{get:()=>e,set:s=>{if(s!==e)throw createInvalidStateError()}}),Object.defineProperty(o,"channelCountMode",{get:()=>"explicit",set:s=>{if(s!=="explicit")throw createInvalidStateError()}}),Object.defineProperty(o,"channelInterpretation",{get:()=>"discrete",set:s=>{if(s!=="discrete")throw createInvalidStateError()}})},createNativeChannelSplitterNode=(o,e)=>{const s=o.createChannelSplitter(e.numberOfOutputs);return assignNativeAudioNodeOptions(s,e),wrapChannelSplitterNode(s),s},createNativeConstantSourceNodeFactory=(o,e,s,a,c)=>(d,_)=>{if(d.createConstantSource===void 0)return s(d,_);const b=d.createConstantSource();return assignNativeAudioNodeOptions(b,_),assignNativeAudioNodeAudioParamValue(b,_,"offset"),e(a,()=>a(d))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(b),e(c,()=>c(d))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(b),o(d,b),b},interceptConnections=(o,e)=>(o.connect=e.connect.bind(e),o.disconnect=e.disconnect.bind(e),o),createNativeConstantSourceNodeFakerFactory=(o,e,s,a)=>(c,b)=>{var k=b,{offset:d}=k,_=dn(k,["offset"]);const $=c.createBuffer(1,2,44100),j=e(c,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),_e=s(c,kt(Dt({},_),{gain:d})),et=$.getChannelData(0);et[0]=1,et[1]=1,j.buffer=$,j.loop=!0;const tt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(rt){_e.channelCount=rt},get channelCountMode(){return _e.channelCountMode},set channelCountMode(rt){_e.channelCountMode=rt},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(rt){_e.channelInterpretation=rt},get context(){return _e.context},get inputs(){return[]},get numberOfInputs(){return j.numberOfInputs},get numberOfOutputs(){return _e.numberOfOutputs},get offset(){return _e.gain},get onended(){return j.onended},set onended(rt){j.onended=rt},addEventListener(...rt){return j.addEventListener(rt[0],rt[1],rt[2])},dispatchEvent(...rt){return j.dispatchEvent(rt[0])},removeEventListener(...rt){return j.removeEventListener(rt[0],rt[1],rt[2])},start(rt=0){j.start.call(j,rt)},stop(rt=0){j.stop.call(j,rt)}},nt=()=>j.connect(_e),st=()=>j.disconnect(_e);return o(c,j),a(interceptConnections(tt,_e),nt,st)},createNativeConvolverNodeFactory=(o,e)=>(s,a)=>{const c=s.createConvolver();if(assignNativeAudioNodeOptions(c,a),a.disableNormalization===c.normalize&&(c.normalize=!a.disableNormalization),assignNativeAudioNodeOption(c,a,"buffer"),a.channelCount>2||(e(c,"channelCount",d=>()=>d.call(c),d=>_=>{if(_>2)throw o();return d.call(c,_)}),a.channelCountMode==="max"))throw o();return e(c,"channelCountMode",d=>()=>d.call(c),d=>_=>{if(_==="max")throw o();return d.call(c,_)}),c},createNativeDelayNode=(o,e)=>{const s=o.createDelay(e.maxDelayTime);return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"delayTime"),s},createNativeDynamicsCompressorNodeFactory=o=>(e,s)=>{const a=e.createDynamicsCompressor();if(assignNativeAudioNodeOptions(a,s),s.channelCount>2||s.channelCountMode==="max")throw o();return assignNativeAudioNodeAudioParamValue(a,s,"attack"),assignNativeAudioNodeAudioParamValue(a,s,"knee"),assignNativeAudioNodeAudioParamValue(a,s,"ratio"),assignNativeAudioNodeAudioParamValue(a,s,"release"),assignNativeAudioNodeAudioParamValue(a,s,"threshold"),a},createNativeGainNode=(o,e)=>{const s=o.createGain();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"gain"),s},createNativeIIRFilterNodeFactory=o=>(e,s,a)=>{if(e.createIIRFilter===void 0)return o(e,s,a);const c=e.createIIRFilter(a.feedforward,a.feedback);return assignNativeAudioNodeOptions(c,a),c};function divide(o,e){const s=e[0]*e[0]+e[1]*e[1];return[(o[0]*e[0]+o[1]*e[1])/s,(o[1]*e[0]-o[0]*e[1])/s]}function multiply(o,e){return[o[0]*e[0]-o[1]*e[1],o[0]*e[1]+o[1]*e[0]]}function evaluatePolynomial(o,e){let s=[0,0];for(let a=o.length-1;a>=0;a-=1)s=multiply(s,e),s[0]+=o[a];return s}const createNativeIIRFilterNodeFakerFactory=(o,e,s,a)=>(c,d,{channelCount:_,channelCountMode:b,channelInterpretation:k,feedback:$,feedforward:j})=>{const _e=computeBufferSize(d,c.sampleRate),et=$ instanceof Float64Array?$:new Float64Array($),tt=j instanceof Float64Array?j:new Float64Array(j),nt=et.length,st=tt.length,rt=Math.min(nt,st);if(nt===0||nt>20)throw a();if(et[0]===0)throw e();if(st===0||st>20)throw a();if(tt[0]===0)throw e();if(et[0]!==1){for(let dt=0;dt{const pt=dt.inputBuffer,gt=dt.outputBuffer,yt=pt.numberOfChannels;for(let ft=0;fto.createMediaElementSource(e.mediaElement),createNativeMediaStreamAudioDestinationNode=(o,e)=>{const s=o.createMediaStreamDestination();return assignNativeAudioNodeOptions(s,e),s.numberOfOutputs===1&&Object.defineProperty(s,"numberOfOutputs",{get:()=>0}),s},createNativeMediaStreamAudioSourceNode=(o,{mediaStream:e})=>{const s=e.getAudioTracks();s.sort((d,_)=>d.id<_.id?-1:d.id>_.id?1:0);const a=s.slice(0,1),c=o.createMediaStreamSource(new MediaStream(a));return Object.defineProperty(c,"mediaStream",{value:e}),c},createNativeMediaStreamTrackAudioSourceNodeFactory=(o,e)=>(s,{mediaStreamTrack:a})=>{if(typeof s.createMediaStreamTrackSource=="function")return s.createMediaStreamTrackSource(a);const c=new MediaStream([a]),d=s.createMediaStreamSource(c);if(a.kind!=="audio")throw o();if(e(s))throw new TypeError;return d},createNativeOfflineAudioContextConstructor=o=>o===null?null:o.hasOwnProperty("OfflineAudioContext")?o.OfflineAudioContext:o.hasOwnProperty("webkitOfflineAudioContext")?o.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory=(o,e,s,a,c,d)=>(_,b)=>{const k=_.createOscillator();return assignNativeAudioNodeOptions(k,b),assignNativeAudioNodeAudioParamValue(k,b,"detune"),assignNativeAudioNodeAudioParamValue(k,b,"frequency"),b.periodicWave!==void 0?k.setPeriodicWave(b.periodicWave):assignNativeAudioNodeOption(k,b,"type"),e(s,()=>s(_))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(k),e(a,()=>a(_))||d(k,_),e(c,()=>c(_))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(k),o(_,k),k},createNativePannerNodeFactory=o=>(e,s)=>{const a=e.createPanner();return a.orientationX===void 0?o(e,s):(assignNativeAudioNodeOptions(a,s),assignNativeAudioNodeAudioParamValue(a,s,"orientationX"),assignNativeAudioNodeAudioParamValue(a,s,"orientationY"),assignNativeAudioNodeAudioParamValue(a,s,"orientationZ"),assignNativeAudioNodeAudioParamValue(a,s,"positionX"),assignNativeAudioNodeAudioParamValue(a,s,"positionY"),assignNativeAudioNodeAudioParamValue(a,s,"positionZ"),assignNativeAudioNodeOption(a,s,"coneInnerAngle"),assignNativeAudioNodeOption(a,s,"coneOuterAngle"),assignNativeAudioNodeOption(a,s,"coneOuterGain"),assignNativeAudioNodeOption(a,s,"distanceModel"),assignNativeAudioNodeOption(a,s,"maxDistance"),assignNativeAudioNodeOption(a,s,"panningModel"),assignNativeAudioNodeOption(a,s,"refDistance"),assignNativeAudioNodeOption(a,s,"rolloffFactor"),a)},createNativePannerNodeFakerFactory=(o,e,s,a,c,d,_,b,k,$)=>(j,gt)=>{var yt=gt,{coneInnerAngle:_e,coneOuterAngle:et,coneOuterGain:tt,distanceModel:nt,maxDistance:st,orientationX:rt,orientationY:it,orientationZ:at,panningModel:ot,positionX:ht,positionY:ct,positionZ:lt,refDistance:ut,rolloffFactor:dt}=yt,pt=dn(yt,["coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","orientationX","orientationY","orientationZ","panningModel","positionX","positionY","positionZ","refDistance","rolloffFactor"]);const ft=j.createPanner();if(pt.channelCount>2||pt.channelCountMode==="max")throw _();assignNativeAudioNodeOptions(ft,pt);const mt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},Et=s(j,kt(Dt({},mt),{channelInterpretation:"speakers",numberOfInputs:6})),_t=a(j,kt(Dt({},pt),{gain:1})),St=a(j,kt(Dt({},mt),{gain:1})),vt=a(j,kt(Dt({},mt),{gain:0})),Ct=a(j,kt(Dt({},mt),{gain:0})),xt=a(j,kt(Dt({},mt),{gain:0})),bt=a(j,kt(Dt({},mt),{gain:0})),At=a(j,kt(Dt({},mt),{gain:0})),Ot=c(j,256,6,1),Tt=d(j,kt(Dt({},mt),{curve:new Float32Array([1,1]),oversample:"none"}));let Rt=[rt,it,at],$t=[ht,ct,lt];const It=new Float32Array(1);Ot.onaudioprocess=({inputBuffer:Bt})=>{const Kt=[k(Bt,It,0),k(Bt,It,1),k(Bt,It,2)];Kt.some((en,tn)=>en!==Rt[tn])&&(ft.setOrientation(...Kt),Rt=Kt);const Jt=[k(Bt,It,3),k(Bt,It,4),k(Bt,It,5)];Jt.some((en,tn)=>en!==$t[tn])&&(ft.setPosition(...Jt),$t=Jt)},Object.defineProperty(vt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ct.gain,"defaultValue",{get:()=>0}),Object.defineProperty(xt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(bt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(At.gain,"defaultValue",{get:()=>0});const wt={get bufferSize(){},get channelCount(){return ft.channelCount},set channelCount(Bt){if(Bt>2)throw _();_t.channelCount=Bt,ft.channelCount=Bt},get channelCountMode(){return ft.channelCountMode},set channelCountMode(Bt){if(Bt==="max")throw _();_t.channelCountMode=Bt,ft.channelCountMode=Bt},get channelInterpretation(){return ft.channelInterpretation},set channelInterpretation(Bt){_t.channelInterpretation=Bt,ft.channelInterpretation=Bt},get coneInnerAngle(){return ft.coneInnerAngle},set coneInnerAngle(Bt){ft.coneInnerAngle=Bt},get coneOuterAngle(){return ft.coneOuterAngle},set coneOuterAngle(Bt){ft.coneOuterAngle=Bt},get coneOuterGain(){return ft.coneOuterGain},set coneOuterGain(Bt){if(Bt<0||Bt>1)throw e();ft.coneOuterGain=Bt},get context(){return ft.context},get distanceModel(){return ft.distanceModel},set distanceModel(Bt){ft.distanceModel=Bt},get inputs(){return[_t]},get maxDistance(){return ft.maxDistance},set maxDistance(Bt){if(Bt<0)throw new RangeError;ft.maxDistance=Bt},get numberOfInputs(){return ft.numberOfInputs},get numberOfOutputs(){return ft.numberOfOutputs},get orientationX(){return St.gain},get orientationY(){return vt.gain},get orientationZ(){return Ct.gain},get panningModel(){return ft.panningModel},set panningModel(Bt){ft.panningModel=Bt},get positionX(){return xt.gain},get positionY(){return bt.gain},get positionZ(){return At.gain},get refDistance(){return ft.refDistance},set refDistance(Bt){if(Bt<0)throw new RangeError;ft.refDistance=Bt},get rolloffFactor(){return ft.rolloffFactor},set rolloffFactor(Bt){if(Bt<0)throw new RangeError;ft.rolloffFactor=Bt},addEventListener(...Bt){return _t.addEventListener(Bt[0],Bt[1],Bt[2])},dispatchEvent(...Bt){return _t.dispatchEvent(Bt[0])},removeEventListener(...Bt){return _t.removeEventListener(Bt[0],Bt[1],Bt[2])}};_e!==wt.coneInnerAngle&&(wt.coneInnerAngle=_e),et!==wt.coneOuterAngle&&(wt.coneOuterAngle=et),tt!==wt.coneOuterGain&&(wt.coneOuterGain=tt),nt!==wt.distanceModel&&(wt.distanceModel=nt),st!==wt.maxDistance&&(wt.maxDistance=st),rt!==wt.orientationX.value&&(wt.orientationX.value=rt),it!==wt.orientationY.value&&(wt.orientationY.value=it),at!==wt.orientationZ.value&&(wt.orientationZ.value=at),ot!==wt.panningModel&&(wt.panningModel=ot),ht!==wt.positionX.value&&(wt.positionX.value=ht),ct!==wt.positionY.value&&(wt.positionY.value=ct),lt!==wt.positionZ.value&&(wt.positionZ.value=lt),ut!==wt.refDistance&&(wt.refDistance=ut),dt!==wt.rolloffFactor&&(wt.rolloffFactor=dt),(Rt[0]!==1||Rt[1]!==0||Rt[2]!==0)&&ft.setOrientation(...Rt),($t[0]!==0||$t[1]!==0||$t[2]!==0)&&ft.setPosition(...$t);const qt=()=>{_t.connect(ft),o(_t,Tt,0,0),Tt.connect(St).connect(Et,0,0),Tt.connect(vt).connect(Et,0,1),Tt.connect(Ct).connect(Et,0,2),Tt.connect(xt).connect(Et,0,3),Tt.connect(bt).connect(Et,0,4),Tt.connect(At).connect(Et,0,5),Et.connect(Ot).connect(j.destination)},jt=()=>{_t.disconnect(ft),b(_t,Tt,0,0),Tt.disconnect(St),St.disconnect(Et),Tt.disconnect(vt),vt.disconnect(Et),Tt.disconnect(Ct),Ct.disconnect(Et),Tt.disconnect(xt),xt.disconnect(Et),Tt.disconnect(bt),bt.disconnect(Et),Tt.disconnect(At),At.disconnect(Et),Et.disconnect(Ot),Ot.disconnect(j.destination)};return $(interceptConnections(wt,ft),qt,jt)},createNativePeriodicWaveFactory=o=>(e,{disableNormalization:s,imag:a,real:c})=>{const d=a instanceof Float32Array?a:new Float32Array(a),_=c instanceof Float32Array?c:new Float32Array(c),b=e.createPeriodicWave(_,d,{disableNormalization:s});if(Array.from(a).length<2)throw o();return b},createNativeScriptProcessorNode=(o,e,s,a)=>o.createScriptProcessor(e,s,a),createNativeStereoPannerNodeFactory=(o,e)=>(s,a)=>{const c=a.channelCountMode;if(c==="clamped-max")throw e();if(s.createStereoPanner===void 0)return o(s,a);const d=s.createStereoPanner();return assignNativeAudioNodeOptions(d,a),assignNativeAudioNodeAudioParamValue(d,a,"pan"),Object.defineProperty(d,"channelCountMode",{get:()=>c,set:_=>{if(_!==c)throw e()}}),d},createNativeStereoPannerNodeFakerFactory=(o,e,s,a,c,d)=>{const b=new Float32Array([1,1]),k=Math.PI/2,$={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},j=kt(Dt({},$),{oversample:"none"}),_e=(nt,st,rt,it)=>{const at=new Float32Array(16385),ot=new Float32Array(16385);for(let pt=0;pt<16385;pt+=1){const gt=pt/16384*k;at[pt]=Math.cos(gt),ot[pt]=Math.sin(gt)}const ht=s(nt,kt(Dt({},$),{gain:0})),ct=a(nt,kt(Dt({},j),{curve:at})),lt=a(nt,kt(Dt({},j),{curve:b})),ut=s(nt,kt(Dt({},$),{gain:0})),dt=a(nt,kt(Dt({},j),{curve:ot}));return{connectGraph(){st.connect(ht),st.connect(lt.inputs===void 0?lt:lt.inputs[0]),st.connect(ut),lt.connect(rt),rt.connect(ct.inputs===void 0?ct:ct.inputs[0]),rt.connect(dt.inputs===void 0?dt:dt.inputs[0]),ct.connect(ht.gain),dt.connect(ut.gain),ht.connect(it,0,0),ut.connect(it,0,1)},disconnectGraph(){st.disconnect(ht),st.disconnect(lt.inputs===void 0?lt:lt.inputs[0]),st.disconnect(ut),lt.disconnect(rt),rt.disconnect(ct.inputs===void 0?ct:ct.inputs[0]),rt.disconnect(dt.inputs===void 0?dt:dt.inputs[0]),ct.disconnect(ht.gain),dt.disconnect(ut.gain),ht.disconnect(it,0,0),ut.disconnect(it,0,1)}}},et=(nt,st,rt,it)=>{const at=new Float32Array(16385),ot=new Float32Array(16385),ht=new Float32Array(16385),ct=new Float32Array(16385),lt=Math.floor(16385/2);for(let vt=0;vt<16385;vt+=1)if(vt>lt){const Ct=(vt-lt)/(16384-lt)*k;at[vt]=Math.cos(Ct),ot[vt]=Math.sin(Ct),ht[vt]=0,ct[vt]=1}else{const Ct=vt/(16384-lt)*k;at[vt]=1,ot[vt]=0,ht[vt]=Math.cos(Ct),ct[vt]=Math.sin(Ct)}const ut=e(nt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),dt=s(nt,kt(Dt({},$),{gain:0})),pt=a(nt,kt(Dt({},j),{curve:at})),gt=s(nt,kt(Dt({},$),{gain:0})),yt=a(nt,kt(Dt({},j),{curve:ot})),ft=a(nt,kt(Dt({},j),{curve:b})),mt=s(nt,kt(Dt({},$),{gain:0})),Et=a(nt,kt(Dt({},j),{curve:ht})),_t=s(nt,kt(Dt({},$),{gain:0})),St=a(nt,kt(Dt({},j),{curve:ct}));return{connectGraph(){st.connect(ut),st.connect(ft.inputs===void 0?ft:ft.inputs[0]),ut.connect(dt,0),ut.connect(gt,0),ut.connect(mt,1),ut.connect(_t,1),ft.connect(rt),rt.connect(pt.inputs===void 0?pt:pt.inputs[0]),rt.connect(yt.inputs===void 0?yt:yt.inputs[0]),rt.connect(Et.inputs===void 0?Et:Et.inputs[0]),rt.connect(St.inputs===void 0?St:St.inputs[0]),pt.connect(dt.gain),yt.connect(gt.gain),Et.connect(mt.gain),St.connect(_t.gain),dt.connect(it,0,0),mt.connect(it,0,0),gt.connect(it,0,1),_t.connect(it,0,1)},disconnectGraph(){st.disconnect(ut),st.disconnect(ft.inputs===void 0?ft:ft.inputs[0]),ut.disconnect(dt,0),ut.disconnect(gt,0),ut.disconnect(mt,1),ut.disconnect(_t,1),ft.disconnect(rt),rt.disconnect(pt.inputs===void 0?pt:pt.inputs[0]),rt.disconnect(yt.inputs===void 0?yt:yt.inputs[0]),rt.disconnect(Et.inputs===void 0?Et:Et.inputs[0]),rt.disconnect(St.inputs===void 0?St:St.inputs[0]),pt.disconnect(dt.gain),yt.disconnect(gt.gain),Et.disconnect(mt.gain),St.disconnect(_t.gain),dt.disconnect(it,0,0),mt.disconnect(it,0,0),gt.disconnect(it,0,1),_t.disconnect(it,0,1)}}},tt=(nt,st,rt,it,at)=>{if(st===1)return _e(nt,rt,it,at);if(st===2)return et(nt,rt,it,at);throw c()};return(nt,ot)=>{var ht=ot,{channelCount:st,channelCountMode:rt,pan:it}=ht,at=dn(ht,["channelCount","channelCountMode","pan"]);if(rt==="max")throw c();const ct=o(nt,kt(Dt({},at),{channelCount:1,channelCountMode:rt,numberOfInputs:2})),lt=s(nt,kt(Dt({},at),{channelCount:st,channelCountMode:rt,gain:1})),ut=s(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:it});let{connectGraph:dt,disconnectGraph:pt}=tt(nt,st,lt,ut,ct);Object.defineProperty(ut.gain,"defaultValue",{get:()=>0}),Object.defineProperty(ut.gain,"maxValue",{get:()=>1}),Object.defineProperty(ut.gain,"minValue",{get:()=>-1});const gt={get bufferSize(){},get channelCount(){return lt.channelCount},set channelCount(Et){lt.channelCount!==Et&&(yt&&pt(),{connectGraph:dt,disconnectGraph:pt}=tt(nt,Et,lt,ut,ct),yt&&dt()),lt.channelCount=Et},get channelCountMode(){return lt.channelCountMode},set channelCountMode(Et){if(Et==="clamped-max"||Et==="max")throw c();lt.channelCountMode=Et},get channelInterpretation(){return lt.channelInterpretation},set channelInterpretation(Et){lt.channelInterpretation=Et},get context(){return lt.context},get inputs(){return[lt]},get numberOfInputs(){return lt.numberOfInputs},get numberOfOutputs(){return lt.numberOfOutputs},get pan(){return ut.gain},addEventListener(...Et){return lt.addEventListener(Et[0],Et[1],Et[2])},dispatchEvent(...Et){return lt.dispatchEvent(Et[0])},removeEventListener(...Et){return lt.removeEventListener(Et[0],Et[1],Et[2])}};let yt=!1;const ft=()=>{dt(),yt=!0},mt=()=>{pt(),yt=!1};return d(interceptConnections(gt,ct),ft,mt)}},createNativeWaveShaperNodeFactory=(o,e,s,a,c,d,_)=>(b,k)=>{const $=b.createWaveShaper();if(d!==null&&d.name==="webkitAudioContext"&&b.createGain().gain.automationRate===void 0)return s(b,k);assignNativeAudioNodeOptions($,k);const j=k.curve===null||k.curve instanceof Float32Array?k.curve:new Float32Array(k.curve);if(j!==null&&j.length<2)throw e();assignNativeAudioNodeOption($,{curve:j},"curve"),assignNativeAudioNodeOption($,k,"oversample");let _e=null,et=!1;return _($,"curve",st=>()=>st.call($),st=>rt=>(st.call($,rt),et&&(a(rt)&&_e===null?_e=o(b,$):!a(rt)&&_e!==null&&(_e(),_e=null)),rt)),c($,()=>{et=!0,a($.curve)&&(_e=o(b,$))},()=>{et=!1,_e!==null&&(_e(),_e=null)})},createNativeWaveShaperNodeFakerFactory=(o,e,s,a,c)=>(d,$)=>{var j=$,{curve:_,oversample:b}=j,k=dn(j,["curve","oversample"]);const _e=d.createWaveShaper(),et=d.createWaveShaper();assignNativeAudioNodeOptions(_e,k),assignNativeAudioNodeOptions(et,k);const tt=s(d,kt(Dt({},k),{gain:1})),nt=s(d,kt(Dt({},k),{gain:-1})),st=s(d,kt(Dt({},k),{gain:1})),rt=s(d,kt(Dt({},k),{gain:-1}));let it=null,at=!1,ot=null;const ht={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(ut){tt.channelCount=ut,nt.channelCount=ut,_e.channelCount=ut,st.channelCount=ut,et.channelCount=ut,rt.channelCount=ut},get channelCountMode(){return _e.channelCountMode},set channelCountMode(ut){tt.channelCountMode=ut,nt.channelCountMode=ut,_e.channelCountMode=ut,st.channelCountMode=ut,et.channelCountMode=ut,rt.channelCountMode=ut},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(ut){tt.channelInterpretation=ut,nt.channelInterpretation=ut,_e.channelInterpretation=ut,st.channelInterpretation=ut,et.channelInterpretation=ut,rt.channelInterpretation=ut},get context(){return _e.context},get curve(){return ot},set curve(ut){if(ut!==null&&ut.length<2)throw e();if(ut===null)_e.curve=ut,et.curve=ut;else{const dt=ut.length,pt=new Float32Array(dt+2-dt%2),gt=new Float32Array(dt+2-dt%2);pt[0]=ut[0],gt[0]=-ut[dt-1];const yt=Math.ceil((dt+1)/2),ft=(dt+1)/2-1;for(let mt=1;mt{tt.connect(_e).connect(st),tt.connect(nt).connect(et).connect(rt).connect(st),at=!0,a(ot)&&(it=o(d,tt))},lt=()=>{tt.disconnect(_e),_e.disconnect(st),tt.disconnect(nt),nt.disconnect(et),et.disconnect(rt),rt.disconnect(st),at=!1,it!==null&&(it(),it=null)};return c(interceptConnections(ht,st),ct,lt)},createNotSupportedError=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$5={numberOfChannels:1},createOfflineAudioContextConstructor=(o,e,s,a,c)=>class extends o{constructor(_,b,k){let $;if(typeof _=="number"&&b!==void 0&&k!==void 0)$={length:b,numberOfChannels:_,sampleRate:k};else if(typeof _=="object")$=_;else throw new Error("The given parameters are not valid.");const{length:j,numberOfChannels:_e,sampleRate:et}=Dt(Dt({},DEFAULT_OPTIONS$5),$),tt=a(_e,j,et);e(testPromiseSupport,()=>testPromiseSupport(tt))||tt.addEventListener("statechange",(()=>{let nt=0;const st=rt=>{this._state==="running"&&(nt>0?(tt.removeEventListener("statechange",st),rt.stopImmediatePropagation(),this._waitForThePromiseToSettle(rt)):nt+=1)};return st})()),super(tt,_e),this._length=j,this._nativeOfflineAudioContext=tt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(s()):(this._state="running",c(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph(this)}))}_waitForThePromiseToSettle(_){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(_):setTimeout(()=>this._waitForThePromiseToSettle(_))}},DEFAULT_OPTIONS$4={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Dt(Dt({},DEFAULT_OPTIONS$4),$),et=s(j,_e),tt=d(j),nt=tt?a():null,st=k.sampleRate/2;super(k,!1,et,nt),this._detune=e(this,tt,et.detune,153600,-153600),this._frequency=e(this,tt,et.frequency,st,-st),this._nativeOscillatorNode=et,this._onended=null,this._oscillatorNodeRenderer=nt,this._oscillatorNodeRenderer!==null&&_e.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=_e.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeOscillatorNode.onended=$;const j=this._nativeOscillatorNode.onended;this._onended=j!==null&&j===$?k:j}get type(){return this._nativeOscillatorNode.type}set type(k){this._nativeOscillatorNode.type=k,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(k){this._nativeOscillatorNode.setPeriodicWave(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=k)}start(k=0){if(this._nativeOscillatorNode.start(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeOscillatorNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeOscillatorNode.addEventListener("ended",$)}}stop(k=0){this._nativeOscillatorNode.stop(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=k)}},createOscillatorNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null,k=null;const $=async(j,_e)=>{let et=s(j);const tt=isOwnedByContext(et,_e);if(!tt){const nt={channelCount:et.channelCount,channelCountMode:et.channelCountMode,channelInterpretation:et.channelInterpretation,detune:et.detune.value,frequency:et.frequency.value,periodicWave:_===null?void 0:_,type:et.type};et=e(_e,nt),b!==null&&et.start(b),k!==null&&et.stop(k)}return d.set(_e,et),tt?(await o(_e,j.detune,et.detune),await o(_e,j.frequency,et.frequency)):(await a(_e,j.detune,et.detune),await a(_e,j.frequency,et.frequency)),await c(j,_e,et),et};return{set periodicWave(j){_=j},set start(j){b=j},set stop(j){k=j},render(j,_e){const et=d.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},DEFAULT_OPTIONS$3={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Dt(Dt({},DEFAULT_OPTIONS$3),$),et=s(j,_e),tt=d(j),nt=tt?a():null;super(k,!1,et,nt),this._nativePannerNode=et,this._orientationX=e(this,tt,et.orientationX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationY=e(this,tt,et.orientationY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationZ=e(this,tt,et.orientationZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionX=e(this,tt,et.positionX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionY=e(this,tt,et.positionY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionZ=e(this,tt,et.positionZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),_(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(k){this._nativePannerNode.coneInnerAngle=k}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(k){this._nativePannerNode.coneOuterAngle=k}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(k){this._nativePannerNode.coneOuterGain=k}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(k){this._nativePannerNode.distanceModel=k}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(k){this._nativePannerNode.maxDistance=k}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(k){this._nativePannerNode.panningModel=k}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(k){this._nativePannerNode.refDistance=k}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(k){this._nativePannerNode.rolloffFactor=k}},createPannerNodeRendererFactory=(o,e,s,a,c,d,_,b,k,$)=>()=>{const j=new WeakMap;let _e=null;const et=async(tt,nt)=>{let st=null,rt=d(tt);const it={channelCount:rt.channelCount,channelCountMode:rt.channelCountMode,channelInterpretation:rt.channelInterpretation},at=kt(Dt({},it),{coneInnerAngle:rt.coneInnerAngle,coneOuterAngle:rt.coneOuterAngle,coneOuterGain:rt.coneOuterGain,distanceModel:rt.distanceModel,maxDistance:rt.maxDistance,panningModel:rt.panningModel,refDistance:rt.refDistance,rolloffFactor:rt.rolloffFactor}),ot=isOwnedByContext(rt,nt);if("bufferSize"in rt)st=a(nt,kt(Dt({},it),{gain:1}));else if(!ot){const ht=kt(Dt({},at),{orientationX:rt.orientationX.value,orientationY:rt.orientationY.value,orientationZ:rt.orientationZ.value,positionX:rt.positionX.value,positionY:rt.positionY.value,positionZ:rt.positionZ.value});rt=c(nt,ht)}if(j.set(nt,st===null?rt:st),st!==null){if(_e===null){if(_===null)throw new Error("Missing the native OfflineAudioContext constructor.");const yt=new _(6,tt.context.length,nt.sampleRate),ft=e(yt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});ft.connect(yt.destination),_e=(async()=>{const mt=await Promise.all([tt.orientationX,tt.orientationY,tt.orientationZ,tt.positionX,tt.positionY,tt.positionZ].map(async(Et,_t)=>{const St=s(yt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:_t===0?1:0});return await b(yt,Et,St.offset),St}));for(let Et=0;Et<6;Et+=1)mt[Et].connect(ft,0,Et),mt[Et].start(0);return $(yt)})()}const ht=await _e,ct=a(nt,kt(Dt({},it),{gain:1}));await k(tt,nt,ct);const lt=[];for(let yt=0;ytEt!==ut[_t])||mt.some((Et,_t)=>Et!==dt[_t])){ut=ft,dt=mt;const Et=yt/nt.sampleRate;pt.gain.setValueAtTime(0,Et),pt=a(nt,kt(Dt({},it),{gain:0})),gt=c(nt,kt(Dt({},at),{orientationX:ut[0],orientationY:ut[1],orientationZ:ut[2],positionX:dt[0],positionY:dt[1],positionZ:dt[2]})),pt.gain.setValueAtTime(1,Et),ct.connect(pt).connect(gt.inputs[0]),gt.connect(st)}}return st}return ot?(await o(nt,tt.orientationX,rt.orientationX),await o(nt,tt.orientationY,rt.orientationY),await o(nt,tt.orientationZ,rt.orientationZ),await o(nt,tt.positionX,rt.positionX),await o(nt,tt.positionY,rt.positionY),await o(nt,tt.positionZ,rt.positionZ)):(await b(nt,tt.orientationX,rt.orientationX),await b(nt,tt.orientationY,rt.orientationY),await b(nt,tt.orientationZ,rt.orientationZ),await b(nt,tt.positionX,rt.positionX),await b(nt,tt.positionY,rt.positionY),await b(nt,tt.positionZ,rt.positionZ)),isNativeAudioNodeFaker(rt)?await k(tt,nt,rt.inputs[0]):await k(tt,nt,rt),rt};return{render(tt,nt){const st=j.get(nt);return st!==void 0?Promise.resolve(st):et(tt,nt)}}},DEFAULT_OPTIONS$2={disableNormalization:!1},createPeriodicWaveConstructor=(o,e,s,a)=>class mr{constructor(d,_){const b=e(d),k=a(Dt(Dt({},DEFAULT_OPTIONS$2),_)),$=o(b,k);return s.add($),$}static[Symbol.hasInstance](d){return d!==null&&typeof d=="object"&&Object.getPrototypeOf(d)===mr.prototype||s.has(d)}},createRenderAutomation=(o,e)=>(s,a,c)=>(o(a).replay(c),e(a,s,c)),createRenderInputsOfAudioNode=(o,e,s)=>async(a,c,d)=>{const _=o(a);await Promise.all(_.activeInputs.map((b,k)=>Array.from(b).map(async([$,j])=>{const et=await e($).render($,c),tt=a.context.destination;!s($)&&(a!==tt||!s(a))&&et.connect(d,j,k)})).reduce((b,k)=>[...b,...k],[]))},createRenderInputsOfAudioParam=(o,e,s)=>async(a,c,d)=>{const _=e(a);await Promise.all(Array.from(_.activeInputs).map(async([b,k])=>{const j=await o(b).render(b,c);s(b)||j.connect(d,k)}))},createRenderNativeOfflineAudioContext=(o,e,s,a)=>c=>o(testPromiseSupport,()=>testPromiseSupport(c))?Promise.resolve(o(a,a)).then(d=>{if(!d){const _=s(c,512,0,1);c.oncomplete=()=>{_.onaudioprocess=null,_.disconnect()},_.onaudioprocess=()=>c.currentTime,_.connect(c.destination)}return c.startRendering()}):new Promise(d=>{const _=e(c,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});c.oncomplete=b=>{_.disconnect(),d(b.renderedBuffer)},_.connect(c.destination),c.startRendering()}),createSetActiveAudioWorkletNodeInputs=o=>(e,s)=>{o.set(e,s)},createSetAudioNodeTailTime=o=>(e,s)=>o.set(e,s),createStartRendering=(o,e,s,a,c,d,_,b)=>(k,$)=>s(k).render(k,$).then(()=>Promise.all(Array.from(a($)).map(j=>s(j).render(j,$)))).then(()=>c($)).then(j=>(typeof j.copyFromChannel!="function"?(_(j),wrapAudioBufferGetChannelDataMethod(j)):e(d,()=>d(j))||b(j),o.add(j),j)),DEFAULT_OPTIONS$1={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=Dt(Dt({},DEFAULT_OPTIONS$1),k),_e=s($,j),et=d($),tt=et?a():null;super(b,!1,_e,tt),this._pan=e(this,et,_e.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,pan:$.pan.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.pan,$.pan):await a(k,b.pan,$.pan),isNativeAudioNodeFaker($)?await c(b,k,$.inputs[0]):await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createTestAudioBufferConstructorSupport=o=>()=>{if(o===null)return!1;try{new o({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioBufferCopyChannelMethodsSubarraySupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createBuffer(1,1,44100);if(s.copyToChannel===void 0)return!0;const a=new Float32Array(2);try{s.copyFromChannel(a,0,0)}catch{return!1}return!0},createTestAudioContextCloseMethodSupport=o=>()=>{if(o===null)return!1;if(o.prototype!==void 0&&o.prototype.close!==void 0)return!0;const e=new o,s=e.close!==void 0;try{e.close()}catch{}return s},createTestAudioContextDecodeAudioDataMethodTypeErrorSupport=o=>()=>{if(o===null)return Promise.resolve(!1);const e=new o(1,1,44100);return new Promise(s=>{let a=!0;const c=_=>{a&&(a=!1,e.startRendering(),s(_ instanceof TypeError))};let d;try{d=e.decodeAudioData(null,()=>{},c)}catch(_){c(_)}d!==void 0&&d.catch(c)})},createTestAudioContextOptionsSupport=o=>()=>{if(o===null)return!1;let e;try{e=new o({latencyHint:"balanced"})}catch{return!1}return e.close(),!0},createTestAudioNodeConnectMethodSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createGain(),a=s.connect(s)===s;return s.disconnect(s),a},createTestAudioWorkletProcessorNoOutputsSupport=(o,e)=>async()=>{if(o===null)return!0;if(e===null)return!1;const s=new Blob(['let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),a=new MessageChannel,c=new e(1,128,44100),d=URL.createObjectURL(s);let _=!1;try{await c.audioWorklet.addModule(d);const b=new o(c,"a",{numberOfOutputs:0}),k=c.createOscillator();await new Promise($=>{b.port.onmessage=()=>$(),b.port.postMessage(a.port2,[a.port2])}),b.port.onmessage=()=>_=!0,k.connect(b),k.start(0),await c.startRendering(),_=await new Promise($=>{a.port1.onmessage=({data:j})=>$(j===1),a.port1.postMessage(0)})}catch{}finally{a.port1.close(),URL.revokeObjectURL(d)}return _},createTestAudioWorkletProcessorPostMessageSupport=(o,e)=>async()=>{if(o===null)return!0;if(e===null)return!1;const s=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),a=new e(1,128,44100),c=URL.createObjectURL(s);let d=!1,_=!1;try{await a.audioWorklet.addModule(c);const b=new o(a,"a",{numberOfOutputs:0}),k=a.createOscillator();b.port.onmessage=()=>d=!0,b.onprocessorerror=()=>_=!0,k.connect(b),k.start(0),await a.startRendering()}catch{}finally{URL.revokeObjectURL(c)}return d&&!_},createTestChannelMergerNodeChannelCountSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createChannelMerger();if(s.channelCountMode==="max")return!0;try{s.channelCount=2}catch{return!0}return!1},createTestConstantSourceNodeAccurateSchedulingSupport=o=>()=>{if(o===null)return!1;const e=new o(1,1,44100);return e.createConstantSource===void 0?!0:e.createConstantSource().offset.maxValue!==Number.POSITIVE_INFINITY},createTestConvolverNodeBufferReassignabilitySupport=o=>()=>{if(o===null)return!1;const e=new o(1,1,44100),s=e.createConvolver();s.buffer=e.createBuffer(1,1,e.sampleRate);try{s.buffer=e.createBuffer(1,1,e.sampleRate)}catch{return!1}return!0},createTestConvolverNodeChannelCountSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createConvolver();try{s.channelCount=1}catch{return!1}return!0},createTestIsSecureContextSupport=o=>()=>o!==null&&o.hasOwnProperty("isSecureContext"),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport=o=>()=>{if(o===null)return!1;const e=new o;try{return e.createMediaStreamSource(new MediaStream),!1}catch{return!0}finally{e.close()}},createTestOfflineAudioContextCurrentTimeSupport=(o,e)=>()=>{if(e===null)return Promise.resolve(!1);const s=new e(1,1,44100),a=o(s,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(c=>{s.oncomplete=()=>{a.disconnect(),c(s.currentTime!==0)},s.startRendering()})},createTestStereoPannerNodeDefaultValueSupport=o=>()=>{if(o===null)return Promise.resolve(!1);const e=new o(1,1,44100);if(e.createStereoPanner===void 0||e.createConstantSource===void 0)return Promise.resolve(!0);const s=e.createConstantSource(),a=e.createStereoPanner();return s.channelCount=1,s.offset.value=1,a.channelCount=1,s.start(),s.connect(a).connect(e.destination),e.startRendering().then(c=>c.getChannelData(0)[0]!==1)},createUnknownError=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Dt(Dt({},DEFAULT_OPTIONS),$),et=s(j,_e),nt=d(j)?a():null;super(k,!0,et,nt),this._isCurveNullified=!1,this._nativeWaveShaperNode=et,_(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(k){if(k===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(k.length<2)throw e();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=k}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(k){this._nativeWaveShaperNode.oversample=k}},createWaveShaperNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,curve:b.curve,oversample:b.oversample};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createWindow=()=>typeof window=="undefined"?null:window,createWrapAudioBufferCopyChannelMethods=(o,e)=>s=>{s.copyFromChannel=(a,c,d=0)=>{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_e=>{e.copyFromChannel=(s=>(a,c,d=0)=>{const _=o(d),b=o(c);if(_(a,c,d=0)=>{const _=o(d),b=o(c);if(_(e,s)=>{const a=s.createBuffer(1,1,44100);e.buffer===null&&(e.buffer=a),o(e,"buffer",c=>()=>{const d=c.call(e);return d===a?null:d},c=>d=>c.call(e,d===null?a:d))},createWrapChannelMergerNode=(o,e)=>(s,a)=>{a.channelCount=1,a.channelCountMode="explicit",Object.defineProperty(a,"channelCount",{get:()=>1,set:()=>{throw o()}}),Object.defineProperty(a,"channelCountMode",{get:()=>"explicit",set:()=>{throw o()}});const c=s.createBufferSource();e(a,()=>{const b=a.numberOfInputs;for(let k=0;kc.disconnect(a))},getFirstSample=(o,e,s)=>o.copyFromChannel===void 0?o.getChannelData(s)[0]:(o.copyFromChannel(e,s),e[0]),isDCCurve=o=>{if(o===null)return!1;const e=o.length;return e%2!==0?o[Math.floor(e/2)]!==0:o[e/2-1]+o[e/2]!==0},overwriteAccessors=(o,e,s,a)=>{let c=o;for(;!c.hasOwnProperty(e);)c=Object.getPrototypeOf(c);const{get:d,set:_}=Object.getOwnPropertyDescriptor(c,e);Object.defineProperty(o,e,{get:s(d),set:a(_)})},sanitizeAudioWorkletNodeOptions=o=>kt(Dt({},o),{outputChannelCount:o.outputChannelCount!==void 0?o.outputChannelCount:o.numberOfInputs===1&&o.numberOfOutputs===1?[o.channelCount]:Array.from({length:o.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions=o=>kt(Dt({},o),{channelCount:o.numberOfOutputs}),sanitizePeriodicWaveOptions=o=>{const{imag:e,real:s}=o;return e===void 0?s===void 0?kt(Dt({},o),{imag:[0,0],real:[0,0]}):kt(Dt({},o),{imag:Array.from(s,()=>0),real:s}):s===void 0?kt(Dt({},o),{imag:e,real:Array.from(e,()=>0)}):kt(Dt({},o),{imag:e,real:s})},setValueAtTimeUntilPossible=(o,e,s)=>{try{o.setValueAtTime(e,s)}catch(a){if(a.code!==9)throw a;setValueAtTimeUntilPossible(o,e,s+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport=o=>{const e=o.createBufferSource();e.start();try{e.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport=o=>{const e=o.createBufferSource(),s=o.createBuffer(1,1,44100);e.buffer=s;try{e.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport=o=>{const e=o.createBufferSource();e.start();try{e.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport=o=>{const e=o.createOscillator();try{e.start(-1)}catch(s){return s instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport=o=>{const e=o.createBuffer(1,1,44100),s=o.createBufferSource();s.buffer=e,s.start(),s.stop();try{return s.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport=o=>{const e=o.createOscillator();try{e.stop(-1)}catch(s){return s instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability=o=>{const{port1:e,port2:s}=new MessageChannel;try{e.postMessage(o)}finally{e.close(),s.close()}},testDomExceptionConstructorSupport=()=>{try{new DOMException}catch{return!1}return!0},testTransferablesSupport=()=>new Promise(o=>{const e=new ArrayBuffer(0),{port1:s,port2:a}=new MessageChannel;s.onmessage=({data:c})=>o(c!==null),a.postMessage(e,[e])}),wrapAudioBufferSourceNodeStartMethodOffsetClamping=o=>{o.start=(e=>(s=0,a=0,c)=>{const d=o.buffer,_=d===null?a:Math.min(d.duration,a);d!==null&&_>d.duration-.5/o.context.sampleRate?e.call(o,s,0,0):e.call(o,s,_,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls=(o,e)=>{const s=e.createGain();o.connect(s);const a=(c=>()=>{c.call(o,s),o.removeEventListener("ended",a)})(o.disconnect);o.addEventListener("ended",a),interceptConnections(o,s),o.stop=(c=>{let d=!1;return(_=0)=>{if(d)try{c.call(o,_)}catch{s.gain.setValueAtTime(0,_)}else c.call(o,_),d=!0}})(o.stop)},wrapEventListener=(o,e)=>s=>{const a={value:o};return Object.defineProperties(s,{currentTarget:a,target:a}),typeof e=="function"?e.call(o,s):e.handleEvent.call(o,s)},addActiveInputConnectionToAudioNode=createAddActiveInputConnectionToAudioNode(insertElementInSet),addPassiveInputConnectionToAudioNode=createAddPassiveInputConnectionToAudioNode(insertElementInSet),deleteActiveInputConnectionToAudioNode=createDeleteActiveInputConnectionToAudioNode(pickElementFromSet),audioNodeTailTimeStore=new WeakMap,getAudioNodeTailTime=createGetAudioNodeTailTime(audioNodeTailTimeStore),cacheTestResult=createCacheTestResult(new Map,new WeakMap),window$1=createWindow(),createNativeAnalyserNode=createNativeAnalyserNodeFactory(cacheTestResult,createIndexSizeError),getAudioNodeRenderer=createGetAudioNodeRenderer(getAudioNodeConnections),renderInputsOfAudioNode=createRenderInputsOfAudioNode(getAudioNodeConnections,getAudioNodeRenderer,isPartOfACycle),createAnalyserNodeRenderer=createAnalyserNodeRendererFactory(createNativeAnalyserNode,getNativeAudioNode,renderInputsOfAudioNode),getNativeContext=createGetNativeContext(CONTEXT_STORE),nativeOfflineAudioContextConstructor=createNativeOfflineAudioContextConstructor(window$1),isNativeOfflineAudioContext=createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor),audioParamAudioNodeStore=new WeakMap,eventTargetConstructor=createEventTargetConstructor(wrapEventListener),nativeAudioContextConstructor=createNativeAudioContextConstructor(window$1),isNativeAudioContext=createIsNativeAudioContext(nativeAudioContextConstructor),isNativeAudioNode=createIsNativeAudioNode(window$1),isNativeAudioParam=createIsNativeAudioParam(window$1),nativeAudioWorkletNodeConstructor=createNativeAudioWorkletNodeConstructor(window$1),audioNodeConstructor=createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode,addPassiveInputConnectionToAudioNode,connectNativeAudioNodeToNativeAudioNode,deleteActiveInputConnectionToAudioNode,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getAudioNodeTailTime,getEventListenersOfAudioNode,getNativeAudioNode,insertElementInSet,isActiveAudioNode,isPartOfACycle,isPassiveAudioNode),cacheTestResult,createIncrementCycleCounterFactory(CYCLE_COUNTERS,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,isActiveAudioNode),createIndexSizeError,createInvalidAccessError,createNotSupportedError,createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode,CYCLE_COUNTERS,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,getNativeContext,isActiveAudioNode,isNativeOfflineAudioContext),createDetectCycles(audioParamAudioNodeStore,getAudioNodeConnections,getValueForKey),eventTargetConstructor,getNativeContext,isNativeAudioContext,isNativeAudioNode,isNativeAudioParam,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor),analyserNodeConstructor=createAnalyserNodeConstructor(audioNodeConstructor,createAnalyserNodeRenderer,createIndexSizeError,createNativeAnalyserNode,getNativeContext,isNativeOfflineAudioContext),audioBufferStore=new WeakSet,nativeAudioBufferConstructor=createNativeAudioBufferConstructor(window$1),convertNumberToUnsignedLong=createConvertNumberToUnsignedLong(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods=createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong,createIndexSizeError),wrapAudioBufferCopyChannelMethodsOutOfBounds=createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong),audioBufferConstructor=createAudioBufferConstructor(audioBufferStore,cacheTestResult,createNotSupportedError,nativeAudioBufferConstructor,nativeOfflineAudioContextConstructor,createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),addSilentConnection=createAddSilentConnection(createNativeGainNode),renderInputsOfAudioParam=createRenderInputsOfAudioParam(getAudioNodeRenderer,getAudioParamConnections,isPartOfACycle),connectAudioParam=createConnectAudioParam(renderInputsOfAudioParam),createNativeAudioBufferSourceNode=createNativeAudioBufferSourceNodeFactory(addSilentConnection,cacheTestResult,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,testAudioBufferSourceNodeStartMethodOffsetClampingSupport,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioBufferSourceNodeStartMethodOffsetClamping,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),renderAutomation=createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections),renderInputsOfAudioParam),createAudioBufferSourceNodeRenderer=createAudioBufferSourceNodeRendererFactory(connectAudioParam,createNativeAudioBufferSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),createAudioParam=createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),audioParamAudioNodeStore,AUDIO_PARAM_STORE,createAudioParamRenderer,createCancelAndHoldAutomationEvent,createCancelScheduledValuesAutomationEvent,createExponentialRampToValueAutomationEvent,createLinearRampToValueAutomationEvent,createSetTargetAutomationEvent,createSetValueAutomationEvent,createSetValueCurveAutomationEvent,nativeAudioContextConstructor,setValueAtTimeUntilPossible),audioBufferSourceNodeConstructor=createAudioBufferSourceNodeConstructor(audioNodeConstructor,createAudioBufferSourceNodeRenderer,createAudioParam,createInvalidStateError,createNativeAudioBufferSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),audioDestinationNodeConstructor=createAudioDestinationNodeConstructor(audioNodeConstructor,createAudioDestinationNodeRenderer,createIndexSizeError,createInvalidStateError,createNativeAudioDestinationNodeFactory(createNativeGainNode,overwriteAccessors),getNativeContext,isNativeOfflineAudioContext,renderInputsOfAudioNode),createBiquadFilterNodeRenderer=createBiquadFilterNodeRendererFactory(connectAudioParam,createNativeBiquadFilterNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),setAudioNodeTailTime=createSetAudioNodeTailTime(audioNodeTailTimeStore),biquadFilterNodeConstructor=createBiquadFilterNodeConstructor(audioNodeConstructor,createAudioParam,createBiquadFilterNodeRenderer,createInvalidAccessError,createNativeBiquadFilterNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),monitorConnections=createMonitorConnections(insertElementInSet,isNativeAudioNode),wrapChannelMergerNode=createWrapChannelMergerNode(createInvalidStateError,monitorConnections),createNativeChannelMergerNode=createNativeChannelMergerNodeFactory(nativeAudioContextConstructor,wrapChannelMergerNode),createChannelMergerNodeRenderer=createChannelMergerNodeRendererFactory(createNativeChannelMergerNode,getNativeAudioNode,renderInputsOfAudioNode),channelMergerNodeConstructor=createChannelMergerNodeConstructor(audioNodeConstructor,createChannelMergerNodeRenderer,createNativeChannelMergerNode,getNativeContext,isNativeOfflineAudioContext),createChannelSplitterNodeRenderer=createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode,getNativeAudioNode,renderInputsOfAudioNode),channelSplitterNodeConstructor=createChannelSplitterNodeConstructor(audioNodeConstructor,createChannelSplitterNodeRenderer,createNativeChannelSplitterNode,getNativeContext,isNativeOfflineAudioContext,sanitizeChannelSplitterOptions),createNativeConstantSourceNodeFaker=createNativeConstantSourceNodeFakerFactory(addSilentConnection,createNativeAudioBufferSourceNode,createNativeGainNode,monitorConnections),createNativeConstantSourceNode=createNativeConstantSourceNodeFactory(addSilentConnection,cacheTestResult,createNativeConstantSourceNodeFaker,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport),createConstantSourceNodeRenderer=createConstantSourceNodeRendererFactory(connectAudioParam,createNativeConstantSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),constantSourceNodeConstructor=createConstantSourceNodeConstructor(audioNodeConstructor,createAudioParam,createConstantSourceNodeRenderer,createNativeConstantSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createNativeConvolverNode=createNativeConvolverNodeFactory(createNotSupportedError,overwriteAccessors),createConvolverNodeRenderer=createConvolverNodeRendererFactory(createNativeConvolverNode,getNativeAudioNode,renderInputsOfAudioNode),convolverNodeConstructor=createConvolverNodeConstructor(audioNodeConstructor,createConvolverNodeRenderer,createNativeConvolverNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createDelayNodeRenderer=createDelayNodeRendererFactory(connectAudioParam,createNativeDelayNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),delayNodeConstructor=createDelayNodeConstructor(audioNodeConstructor,createAudioParam,createDelayNodeRenderer,createNativeDelayNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativeDynamicsCompressorNode=createNativeDynamicsCompressorNodeFactory(createNotSupportedError),createDynamicsCompressorNodeRenderer=createDynamicsCompressorNodeRendererFactory(connectAudioParam,createNativeDynamicsCompressorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),dynamicsCompressorNodeConstructor=createDynamicsCompressorNodeConstructor(audioNodeConstructor,createAudioParam,createDynamicsCompressorNodeRenderer,createNativeDynamicsCompressorNode,createNotSupportedError,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createGainNodeRenderer=createGainNodeRendererFactory(connectAudioParam,createNativeGainNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),gainNodeConstructor=createGainNodeConstructor(audioNodeConstructor,createAudioParam,createGainNodeRenderer,createNativeGainNode,getNativeContext,isNativeOfflineAudioContext),createNativeIIRFilterNodeFaker=createNativeIIRFilterNodeFakerFactory(createInvalidAccessError,createInvalidStateError,createNativeScriptProcessorNode,createNotSupportedError),renderNativeOfflineAudioContext=createRenderNativeOfflineAudioContext(cacheTestResult,createNativeGainNode,createNativeScriptProcessorNode,createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode,nativeOfflineAudioContextConstructor)),createIIRFilterNodeRenderer=createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderInputsOfAudioNode,renderNativeOfflineAudioContext),createNativeIIRFilterNode=createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker),iIRFilterNodeConstructor=createIIRFilterNodeConstructor(audioNodeConstructor,createNativeIIRFilterNode,createIIRFilterNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createAudioListener=createAudioListenerFactory(createAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeScriptProcessorNode,createNotSupportedError,getFirstSample,isNativeOfflineAudioContext,overwriteAccessors),unrenderedAudioWorkletNodeStore=new WeakMap,minimalBaseAudioContextConstructor=createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor,createAudioListener,eventTargetConstructor,isNativeOfflineAudioContext,unrenderedAudioWorkletNodeStore,wrapEventListener),createNativeOscillatorNode=createNativeOscillatorNodeFactory(addSilentConnection,cacheTestResult,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),createOscillatorNodeRenderer=createOscillatorNodeRendererFactory(connectAudioParam,createNativeOscillatorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),oscillatorNodeConstructor=createOscillatorNodeConstructor(audioNodeConstructor,createAudioParam,createNativeOscillatorNode,createOscillatorNodeRenderer,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createConnectedNativeAudioBufferSourceNode=createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode),createNativeWaveShaperNodeFaker=createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeGainNode,isDCCurve,monitorConnections),createNativeWaveShaperNode=createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeWaveShaperNodeFaker,isDCCurve,monitorConnections,nativeAudioContextConstructor,overwriteAccessors),createNativePannerNodeFaker=createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode,createInvalidStateError,createNativeChannelMergerNode,createNativeGainNode,createNativeScriptProcessorNode,createNativeWaveShaperNode,createNotSupportedError,disconnectNativeAudioNodeFromNativeAudioNode,getFirstSample,monitorConnections),createNativePannerNode=createNativePannerNodeFactory(createNativePannerNodeFaker),createPannerNodeRenderer=createPannerNodeRendererFactory(connectAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeGainNode,createNativePannerNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),pannerNodeConstructor=createPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativePannerNode,createPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativePeriodicWave=createNativePeriodicWaveFactory(createIndexSizeError),periodicWaveConstructor=createPeriodicWaveConstructor(createNativePeriodicWave,getNativeContext,new WeakSet,sanitizePeriodicWaveOptions),nativeStereoPannerNodeFakerFactory=createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeGainNode,createNativeWaveShaperNode,createNotSupportedError,monitorConnections),createNativeStereoPannerNode=createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory,createNotSupportedError),createStereoPannerNodeRenderer=createStereoPannerNodeRendererFactory(connectAudioParam,createNativeStereoPannerNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),stereoPannerNodeConstructor=createStereoPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativeStereoPannerNode,createStereoPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext),createWaveShaperNodeRenderer=createWaveShaperNodeRendererFactory(createNativeWaveShaperNode,getNativeAudioNode,renderInputsOfAudioNode),waveShaperNodeConstructor=createWaveShaperNodeConstructor(audioNodeConstructor,createInvalidStateError,createNativeWaveShaperNode,createWaveShaperNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),isSecureContext=createIsSecureContext(window$1),exposeCurrentFrameAndCurrentTime=createExposeCurrentFrameAndCurrentTime(window$1),backupOfflineAudioContextStore=new WeakMap,getOrCreateBackupOfflineAudioContext=createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore,nativeOfflineAudioContextConstructor),addAudioWorkletModule=isSecureContext?createAddAudioWorkletModule(cacheTestResult,createNotSupportedError,createEvaluateSource(window$1),exposeCurrentFrameAndCurrentTime,createFetchSource(createAbortError),getNativeContext,getOrCreateBackupOfflineAudioContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),window$1):void 0,isNativeContext=createIsNativeContext(isNativeAudioContext,isNativeOfflineAudioContext),decodeAudioData=createDecodeAudioData(audioBufferStore,cacheTestResult,createDataCloneError,createEncodingError,new WeakSet,getNativeContext,isNativeContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,testPromiseSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),baseAudioContextConstructor=createBaseAudioContextConstructor(addAudioWorkletModule,analyserNodeConstructor,audioBufferConstructor,audioBufferSourceNodeConstructor,biquadFilterNodeConstructor,channelMergerNodeConstructor,channelSplitterNodeConstructor,constantSourceNodeConstructor,convolverNodeConstructor,decodeAudioData,delayNodeConstructor,dynamicsCompressorNodeConstructor,gainNodeConstructor,iIRFilterNodeConstructor,minimalBaseAudioContextConstructor,oscillatorNodeConstructor,pannerNodeConstructor,periodicWaveConstructor,stereoPannerNodeConstructor,waveShaperNodeConstructor),mediaElementAudioSourceNodeConstructor=createMediaElementAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaElementAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioDestinationNodeConstructor=createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioDestinationNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioSourceNodeConstructor=createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),createNativeMediaStreamTrackAudioSourceNode=createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError,isNativeOfflineAudioContext),mediaStreamTrackAudioSourceNodeConstructor=createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamTrackAudioSourceNode,getNativeContext),audioContextConstructor=createAudioContextConstructor(baseAudioContextConstructor,createInvalidStateError,createNotSupportedError,createUnknownError,mediaElementAudioSourceNodeConstructor,mediaStreamAudioDestinationNodeConstructor,mediaStreamAudioSourceNodeConstructor,mediaStreamTrackAudioSourceNodeConstructor,nativeAudioContextConstructor),getUnrenderedAudioWorkletNodes=createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore),addUnrenderedAudioWorkletNode=createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),connectMultipleOutputs=createConnectMultipleOutputs(createIndexSizeError),deleteUnrenderedAudioWorkletNode=createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),disconnectMultipleOutputs=createDisconnectMultipleOutputs(createIndexSizeError),activeAudioWorkletNodeInputsStore=new WeakMap,getActiveAudioWorkletNodeInputs=createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore,getValueForKey),createNativeAudioWorkletNodeFaker=createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs,createIndexSizeError,createInvalidStateError,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,createNativeScriptProcessorNode,createNotSupportedError,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getActiveAudioWorkletNodeInputs,monitorConnections),createNativeAudioWorkletNode=createNativeAudioWorkletNodeFactory(createInvalidStateError,createNativeAudioWorkletNodeFaker,createNativeGainNode,createNotSupportedError,monitorConnections),createAudioWorkletNodeRenderer=createAudioWorkletNodeRendererFactory(connectAudioParam,connectMultipleOutputs,createNativeAudioBufferSourceNode,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,deleteUnrenderedAudioWorkletNode,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getNativeAudioNode,nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),getBackupOfflineAudioContext=createGetBackupOfflineAudioContext(backupOfflineAudioContextStore),setActiveAudioWorkletNodeInputs=createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore),audioWorkletNodeConstructor=isSecureContext?createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode,audioNodeConstructor,createAudioParam,createAudioWorkletNodeRenderer,createNativeAudioWorkletNode,getAudioNodeConnections,getBackupOfflineAudioContext,getNativeContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,sanitizeAudioWorkletNodeOptions,setActiveAudioWorkletNodeInputs,testAudioWorkletNodeOptionsClonability,wrapEventListener):void 0,createNativeOfflineAudioContext=createCreateNativeOfflineAudioContext(createNotSupportedError,nativeOfflineAudioContextConstructor),startRendering=createStartRendering(audioBufferStore,cacheTestResult,getAudioNodeRenderer,getUnrenderedAudioWorkletNodes,renderNativeOfflineAudioContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),offlineAudioContextConstructor=createOfflineAudioContextConstructor(baseAudioContextConstructor,cacheTestResult,createInvalidStateError,createNativeOfflineAudioContext,startRendering),isAnyAudioContext=createIsAnyAudioContext(CONTEXT_STORE,isNativeAudioContext),isAnyAudioNode=createIsAnyAudioNode(AUDIO_NODE_STORE,isNativeAudioNode),isAnyAudioParam=createIsAnyAudioParam(AUDIO_PARAM_STORE,isNativeAudioParam),isAnyOfflineAudioContext=createIsAnyOfflineAudioContext(CONTEXT_STORE,isNativeOfflineAudioContext),isSupported=()=>createIsSupportedPromise(cacheTestResult,createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor),createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor),createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor),createTestAudioContextOptionsSupport(nativeAudioContextConstructor),createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor),createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor),createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor),createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor),createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor),testDomExceptionConstructorSupport,createTestIsSecureContextSupport(window$1),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor),createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor),testTransferablesSupport);function assert(o,e){if(!o)throw new Error(e)}function assertRange(o,e,s=1/0){if(!(e<=o&&o<=s))throw new RangeError(`Value must be within [${e}, ${s}], got: ${o}`)}function assertContextRunning(o){!o.isOffline&&o.state!=="running"&&warn('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let defaultLogger=console;function setLogger(o){defaultLogger=o}function log(...o){defaultLogger.log(...o)}function warn(...o){defaultLogger.warn(...o)}var Debug=Object.freeze(Object.defineProperty({__proto__:null,assert,assertRange,assertContextRunning,setLogger,log,warn},Symbol.toStringTag,{value:"Module"}));function isUndef(o){return typeof o=="undefined"}function isDefined(o){return!isUndef(o)}function isFunction(o){return typeof o=="function"}function isNumber(o){return typeof o=="number"}function isObject(o){return Object.prototype.toString.call(o)==="[object Object]"&&o.constructor===Object}function isBoolean(o){return typeof o=="boolean"}function isArray(o){return Array.isArray(o)}function isString(o){return typeof o=="string"}function isNote$1(o){return isString(o)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(o)}function createAudioContext(o){return new audioContextConstructor(o)}function createOfflineAudioContext(o,e,s){return new offlineAudioContextConstructor(o,e,s)}const theWindow=typeof self=="object"?self:null,hasAudioContext=theWindow&&(theWindow.hasOwnProperty("AudioContext")||theWindow.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode(o,e,s){return assert(isDefined(audioWorkletNodeConstructor),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor(o,e,s)}/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */function __decorate(o,e,s,a){var c=arguments.length,d=c<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,s):a,_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(o,e,s,a);else for(var b=o.length-1;b>=0;b--)(_=o[b])&&(d=(c<3?_(d):c>3?_(e,s,d):_(e,s))||d);return c>3&&d&&Object.defineProperty(e,s,d),d}function __awaiter$4(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})}class Ticker{constructor(e,s,a){this._callback=e,this._type=s,this._updateInterval=a,this._createClock()}_createWorker(){const e=new Blob([` + // the initial timeout time + let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)}; + // onmessage callback + self.onmessage = function(msg){ + timeoutTime = parseInt(msg.data); + }; + // the tick function which posts a message + // and schedules a new tick + function tick(){ + setTimeout(tick, timeoutTime); + self.postMessage('tick'); + } + // call tick initially + tick(); + `],{type:"text/javascript"}),s=URL.createObjectURL(e),a=new Worker(s);a.onmessage=this._callback.bind(this),this._worker=a}_createTimeout(){this._timeout=setTimeout(()=>{this._createTimeout(),this._callback()},this._updateInterval*1e3)}_createClock(){if(this._type==="worker")try{this._createWorker()}catch{this._type="timeout",this._createClock()}else this._type==="timeout"&&this._createTimeout()}_disposeClock(){this._timeout&&(clearTimeout(this._timeout),this._timeout=0),this._worker&&(this._worker.terminate(),this._worker.onmessage=null)}get updateInterval(){return this._updateInterval}set updateInterval(e){this._updateInterval=Math.max(e,128/44100),this._type==="worker"&&this._worker.postMessage(Math.max(e*1e3,1))}get type(){return this._type}set type(e){this._disposeClock(),this._type=e,this._createClock()}dispose(){this._disposeClock()}}function isAudioParam(o){return isAnyAudioParam(o)}function isAudioNode(o){return isAnyAudioNode(o)}function isOfflineAudioContext(o){return isAnyOfflineAudioContext(o)}function isAudioContext(o){return isAnyAudioContext(o)}function isAudioBuffer(o){return o instanceof AudioBuffer}function noCopy(o,e){return o==="value"||isAudioParam(e)||isAudioNode(e)||isAudioBuffer(e)}function deepMerge(o,...e){if(!e.length)return o;const s=e.shift();if(isObject(o)&&isObject(s))for(const a in s)noCopy(a,s[a])?o[a]=s[a]:isObject(s[a])?(o[a]||Object.assign(o,{[a]:{}}),deepMerge(o[a],s[a])):Object.assign(o,{[a]:s[a]});return deepMerge(o,...e)}function deepEquals(o,e){return o.length===e.length&&o.every((s,a)=>e[a]===s)}function optionsFromArguments(o,e,s=[],a){const c={},d=Array.from(e);if(isObject(d[0])&&a&&!Reflect.has(d[0],a)&&(Object.keys(d[0]).some(b=>Reflect.has(o,b))||(deepMerge(c,{[a]:d[0]}),s.splice(s.indexOf(a),1),d.shift())),d.length===1&&isObject(d[0]))deepMerge(c,d[0]);else for(let _=0;_{Reflect.has(o,s)&&delete o[s]}),o}/** + * Tone.js + * @author Yotam Mann + * @license http://opensource.org/licenses/MIT MIT License + * @copyright 2014-2019 Yotam Mann + */class Tone$1{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||theWindow&&this.toString()===theWindow.TONE_DEBUG_CLASS)&&log(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone$1.version=version;const EPSILON=1e-6;function GT(o,e){return o>e+EPSILON}function GTE(o,e){return GT(o,e)||EQ(o,e)}function LT(o,e){return o+EPSILONthis.memory){const s=this.length-this.memory;this._timeline.splice(0,s)}return this}remove(e){const s=this._timeline.indexOf(e);return s!==-1&&this._timeline.splice(s,1),this}get(e,s="time"){const a=this._search(e,s);return a!==-1?this._timeline[a]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,s="time"){const a=this._search(e,s);return a+10&&this._timeline[s-1].time=0?this._timeline[a-1]:null}cancel(e){if(this._timeline.length>1){let s=this._search(e);if(s>=0)if(EQ(this._timeline[s].time,e)){for(let a=s;a>=0&&EQ(this._timeline[a].time,e);a--)s=a;this._timeline=this._timeline.slice(0,s)}else this._timeline=this._timeline.slice(0,s+1);else this._timeline=[]}else this._timeline.length===1&>E(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){const s=this._search(e);return s>=0&&(this._timeline=this._timeline.slice(s+1)),this}previousEvent(e){const s=this._timeline.indexOf(e);return s>0?this._timeline[s-1]:null}_search(e,s="time"){if(this._timeline.length===0)return-1;let a=0;const c=this._timeline.length;let d=c;if(c>0&&this._timeline[c-1][s]<=e)return c-1;for(;a=0&&this._timeline[a].time>=e;)a--;return this._iterate(s,a+1),this}forEachAtTime(e,s){const a=this._search(e);if(a!==-1&&EQ(this._timeline[a].time,e)){let c=a;for(let d=a;d>=0&&EQ(this._timeline[d].time,e);d--)c=d;this._iterate(d=>{s(d)},c,a)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext=[];function onContextInit(o){notifyNewContext.push(o)}function initializeContext(o){notifyNewContext.forEach(e=>e(o))}const notifyCloseContext=[];function onContextClose(o){notifyCloseContext.push(o)}function closeContext(o){notifyCloseContext.forEach(e=>e(o))}class Emitter extends Tone$1{constructor(){super(...arguments),this.name="Emitter"}on(e,s){return e.split(/\W+/).forEach(c=>{isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(c)||(this._events[c]=[]),this._events[c].push(s)}),this}once(e,s){const a=(...c)=>{s(...c),this.off(e,a)};return this.on(e,a),this}off(e,s){return e.split(/\W+/).forEach(c=>{if(isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(e))if(isUndef(s))this._events[e]=[];else{const d=this._events[e];for(let _=d.length-1;_>=0;_--)d[_]===s&&d.splice(_,1)}}),this}emit(e,...s){if(this._events&&this._events.hasOwnProperty(e)){const a=this._events[e].slice(0);for(let c=0,d=a.length;c{const a=Object.getOwnPropertyDescriptor(Emitter.prototype,s);Object.defineProperty(e.prototype,s,a)})}dispose(){return super.dispose(),this._events=void 0,this}}class BaseContext extends Emitter{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context extends BaseContext{constructor(){super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline,this._timeoutIds=0,this._initialized=!1,this.isOffline=!1,this._workletModules=new Map;const e=optionsFromArguments(Context.getDefaults(),arguments,["context"]);e.context?this._context=e.context:this._context=createAudioContext({latencyHint:e.latencyHint}),this._ticker=new Ticker(this.emit.bind(this,"tick"),e.clockSource,e.updateInterval),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this._setLatencyHint(e.latencyHint),this.lookAhead=e.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,s,a){return this._context.createBuffer(e,s,a)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,s){return this._context.createIIRFilter(e,s)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,s,a){return this._context.createPeriodicWave(e,s,a)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){assert(!this._initialized,"The listener cannot be set after initialization."),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){assert(!this._initialized,"The transport cannot be set after initialization."),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){assert(!this._initialized,"Draw cannot be set after initialization."),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){assert(!this._initialized,"The destination cannot be set after initialization."),this._destination=e}createAudioWorkletNode(e,s){return createAudioWorkletNode(this.rawContext,e,s)}addAudioWorkletModule(e,s){return __awaiter$4(this,void 0,void 0,function*(){assert(isDefined(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletModules.has(s)||this._workletModules.set(s,this.rawContext.audioWorklet.addModule(e)),yield this._workletModules.get(s)})}workletsAreReady(){return __awaiter$4(this,void 0,void 0,function*(){const e=[];this._workletModules.forEach(s=>e.push(s)),yield Promise.all(e)})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get latencyHint(){return this._latencyHint}_setLatencyHint(e){let s=0;if(this._latencyHint=e,isString(e))switch(e){case"interactive":s=.1;break;case"playback":s=.5;break;case"balanced":s=.25;break}this.lookAhead=s,this.updateInterval=s/2}get rawContext(){return this._context}now(){return this._context.currentTime+this.lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter$4(this,void 0,void 0,function*(){isAudioContext(this._context)&&(yield this._context.close()),this._initialized&&closeContext(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{const s=this._context.createBuffer(1,128,this._context.sampleRate),a=s.getChannelData(0);for(let d=0;dthis._constants[e].disconnect()),this}_timeoutLoop(){const e=this.now();let s=this._timeouts.peek();for(;this._timeouts.length&&s&&s.time<=e;)s.callback(),this._timeouts.shift(),s=this._timeouts.peek()}setTimeout(e,s){this._timeoutIds++;const a=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:a+s}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(s=>{s.id===e&&this._timeouts.remove(s)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,s){const a=++this._timeoutIds,c=()=>{const d=this.now();this._timeouts.add({callback:()=>{e(),c()},id:a,time:d+s})};return c(),a}}class DummyContext extends BaseContext{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,s,a){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,s){return{}}createPanner(){return{}}createPeriodicWave(e,s,a){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,s){return{}}get rawContext(){return{}}addAudioWorkletModule(e,s){return __awaiter$4(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,s){return 0}clearTimeout(e){return this}setInterval(e,s){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}}function readOnly(o,e){isArray(e)?e.forEach(s=>readOnly(o,s)):Object.defineProperty(o,e,{enumerable:!0,writable:!1})}function writable(o,e){isArray(e)?e.forEach(s=>writable(o,s)):Object.defineProperty(o,e,{writable:!0})}const noOp=()=>{};class ToneAudioBuffer extends Tone$1{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp;const e=optionsFromArguments(ToneAudioBuffer.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=e.reverse,this.onload=e.onload,e.url&&isAudioBuffer(e.url)||e.url instanceof ToneAudioBuffer?this.set(e.url):isString(e.url)&&this.load(e.url).catch(e.onerror)}static getDefaults(){return{onerror:noOp,onload:noOp,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext().sampleRate}set(e){return e instanceof ToneAudioBuffer?e.loaded?this._buffer=e.get():e.onload=()=>{this.set(e),this.onload(this)}:this._buffer=e,this._reversed&&this._reverse(),this}get(){return this._buffer}load(e){return __awaiter$4(this,void 0,void 0,function*(){const s=ToneAudioBuffer.load(e).then(a=>{this.set(a),this.onload(this)});ToneAudioBuffer.downloads.push(s);try{yield s}finally{const a=ToneAudioBuffer.downloads.indexOf(s);ToneAudioBuffer.downloads.splice(a,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){const s=isArray(e)&&e[0].length>0,a=s?e.length:1,c=s?e[0].length:e.length,d=getContext(),_=d.createBuffer(a,c,d.sampleRate),b=!s&&a===1?[e]:e;for(let k=0;kc/a),this.fromArray(s)}return this}toArray(e){if(isNumber(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{const s=[];for(let a=0;a0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(e){return new ToneAudioBuffer().fromArray(e)}static fromUrl(e){return __awaiter$4(this,void 0,void 0,function*(){return yield new ToneAudioBuffer().load(e)})}static load(e){return __awaiter$4(this,void 0,void 0,function*(){const s=e.match(/\[([^\]\[]+\|.+)\]$/);if(s){const b=s[1].split("|");let k=b[0];for(const $ of b)if(ToneAudioBuffer.supportsType($)){k=$;break}e=e.replace(s[0],k)}const a=ToneAudioBuffer.baseUrl===""||ToneAudioBuffer.baseUrl.endsWith("/")?ToneAudioBuffer.baseUrl:ToneAudioBuffer.baseUrl+"/",c=yield fetch(a+e);if(!c.ok)throw new Error(`could not load url: ${e}`);const d=yield c.arrayBuffer();return yield getContext().decodeAudioData(d)})}static supportsType(e){const s=e.split("."),a=s[s.length-1];return document.createElement("audio").canPlayType("audio/"+a)!==""}static loaded(){return __awaiter$4(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer.downloads.length;)yield ToneAudioBuffer.downloads[0]})}}ToneAudioBuffer.baseUrl="";ToneAudioBuffer.downloads=[];class OfflineContext extends Context{constructor(){super({clockSource:"offline",context:isOfflineAudioContext(arguments[0])?arguments[0]:createOfflineAudioContext(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return __awaiter$4(this,void 0,void 0,function*(){let s=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,s++;const a=Math.floor(this.sampleRate/128);e&&s%a===0&&(yield new Promise(c=>setTimeout(c,1)))}})}render(e=!0){return __awaiter$4(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(e);const s=yield this._context.startRendering();return new ToneAudioBuffer(s)})}close(){return Promise.resolve()}}const dummyContext=new DummyContext;let globalContext=dummyContext;function getContext(){return globalContext===dummyContext&&hasAudioContext&&setContext(new Context),globalContext}function setContext(o){isAudioContext(o)?globalContext=new Context(o):isOfflineAudioContext(o)?globalContext=new OfflineContext(o):globalContext=o}function start(){return globalContext.resume()}if(theWindow&&!theWindow.TONE_SILENCE_LOGGING){const e=` * Tone.js v${version} * `;console.log(`%c${e}`,"background: #000; color: #fff")}function dbToGain(o){return Math.pow(10,o/20)}function gainToDb(o){return 20*(Math.log(o)/Math.LN10)}function intervalToFrequencyRatio(o){return Math.pow(2,o/12)}let A4=440;function getA4(){return A4}function setA4(o){A4=o}function ftom(o){return Math.round(ftomf(o))}function ftomf(o){return 69+12*Math.log2(o/A4)}function mtof(o){return A4*Math.pow(2,(o-69)/12)}class TimeBaseClass extends Tone$1{constructor(e,s,a){super(),this.defaultUnits="s",this._val=s,this._units=a,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,s)=>{const a=parseInt(e,10),c=s==="."?1.5:1;return a===1?this._beatsToUnits(this._getTimeSignature())*c:this._beatsToUnits(4/a)*c},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{const s=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(s)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,s,a)=>{let c=0;return e&&e!=="0"&&(c+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c+=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c+=this._beatsToUnits(parseFloat(a)/4)),c},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass&&this.fromType(this._val),isUndef(this._val))return this._noArg();if(isString(this._val)&&isUndef(this._units)){for(const e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(isObject(this._val)){let e=0;for(const s in this._val)if(isDefined(this._val[s])){const a=this._val[s];e+=new this.constructor(this.context,s).valueOf()*a}return e}if(isDefined(this._units)){const e=this._expressions[this._units],s=this._val.toString().trim().match(e.regexp);return s?e.method.apply(this,s.slice(1)):e.method.call(this,this._val)}else return isString(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case"s":this._val=e.toSeconds();break;case"i":this._val=e.toTicks();break;case"hz":this._val=e.toFrequency();break;case"midi":this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass extends TimeBaseClass{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:e=>{const s=new TimeClass(this.context,e).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(s))},regexp:/^@(.+)/}})}quantize(e,s=1){const a=new this.constructor(this.context,e).valueOf(),c=this.valueOf(),b=Math.round(c/a)*a-c;return c+b*s}toNotation(){const e=this.toSeconds(),s=["1m"];for(let d=1;d<9;d++){const _=Math.pow(2,d);s.push(_+"n."),s.push(_+"n"),s.push(_+"t")}s.push("0");let a=s[0],c=new TimeClass(this.context,s[0]).toSeconds();return s.forEach(d=>{const _=new TimeClass(this.context,d).toSeconds();Math.abs(_-e)3&&(c=parseFloat(parseFloat(d).toFixed(3))),[a,s,c].join(":")}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.round(s*this._getPPQ())}toSeconds(){return this.valueOf()}toMidi(){return ftom(this.toFrequency())}_now(){return this.context.now()}}function Time(o,e){return new TimeClass(getContext(),o,e)}class FrequencyClass extends TimeClass{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4()}static set A4(e){setA4(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(e){return this.defaultUnits==="midi"?e:FrequencyClass.mtof(e)}},note:{regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method(e,s){const c=noteToScaleIndex[e.toLowerCase()]+(parseInt(s,10)+1)*12;return this.defaultUnits==="midi"?c:FrequencyClass.mtof(c)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,s,a){let c=1;return e&&e!=="0"&&(c*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c*=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c*=this._beatsToUnits(parseFloat(a)/4)),c}}})}transpose(e){return new FrequencyClass(this.context,this.valueOf()*intervalToFrequencyRatio(e))}harmonize(e){return e.map(s=>this.transpose(s))}toMidi(){return ftom(this.valueOf())}toNote(){const e=this.toFrequency(),s=Math.log2(e/FrequencyClass.A4);let a=Math.round(12*s)+57;const c=Math.floor(a/12);return c<0&&(a+=-12*c),scaleIndexToNote[a%12]+c.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.floor(s*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return mtof(e)}static ftom(e){return ftom(e)}}const noteToScaleIndex={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},scaleIndexToNote=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];function Frequency(o,e){return new FrequencyClass(getContext(),o,e)}class TransportTimeClass extends TimeClass{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}function TransportTime(o,e){return new TransportTimeClass(getContext(),o,e)}class ToneWithContext extends Tone$1{constructor(){super();const e=optionsFromArguments(ToneWithContext.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=e.context}static getDefaults(){return{context:getContext()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return new TimeClass(this.context,e).toSeconds()}toFrequency(e){return new FrequencyClass(this.context,e).toFrequency()}toTicks(e){return new TransportTimeClass(this.context,e).toTicks()}_getPartialProperties(e){const s=this.get();return Object.keys(s).forEach(a=>{isUndef(e[a])&&delete s[a]}),s}get(){const e=getDefaultsFromInstance(this);return Object.keys(e).forEach(s=>{if(Reflect.has(this,s)){const a=this[s];isDefined(a)&&isDefined(a.value)&&isDefined(a.setValueAtTime)?e[s]=a.value:a instanceof ToneWithContext?e[s]=a._getPartialProperties(e[s]):isArray(a)||isNumber(a)||isString(a)||isBoolean(a)?e[s]=a:delete e[s]}}),e}set(e){return Object.keys(e).forEach(s=>{Reflect.has(this,s)&&isDefined(this[s])&&(this[s]&&isDefined(this[s].value)&&isDefined(this[s].setValueAtTime)?this[s].value!==e[s]&&(this[s].value=e[s]):this[s]instanceof ToneWithContext?this[s].set(e[s]):this[s]=e[s])}),this}}class StateTimeline extends Timeline{constructor(e="stopped"){super(),this.name="StateTimeline",this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){const s=this.get(e);return s!==null?s.state:this._initial}setStateAtTime(e,s,a){return assertRange(s,0),this.add(Object.assign({},a,{state:e,time:s})),this}getLastState(e,s){const a=this._search(s);for(let c=a;c>=0;c--){const d=this._timeline[c];if(d.state===e)return d}}getNextState(e,s){const a=this._search(s);if(a!==-1)for(let c=a;c0,"timeConstant must be a number greater than 0");const d=this.toSeconds(s);return this._assertRange(c),assert(isFinite(c)&&isFinite(d),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(s)}`),this._events.add({constant:a,time:d,type:"setTargetAtTime",value:c}),this.log(this.units,"setTargetAtTime",e,d,a),this._param.setTargetAtTime(c,d,a),this}setValueCurveAtTime(e,s,a,c=1){a=this.toSeconds(a),s=this.toSeconds(s);const d=this._fromType(e[0])*c;this.setValueAtTime(this._toType(d),s);const _=a/(e.length-1);for(let b=1;b{c.type==="cancelScheduledValues"?e.cancelScheduledValues(c.time):c.type==="setTargetAtTime"?e.setTargetAtTime(c.value,c.time,c.constant):e[c.type](c.value,c.time)}),this}setParam(e){assert(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const s=this.input;return s.disconnect(this._param),this.apply(e),this._param=e,s.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,s,a,c,d){return a+(s-a)*Math.exp(-(d-e)/c)}_linearInterpolate(e,s,a,c,d){return s+(c-s)*((d-e)/(a-e))}_exponentialInterpolate(e,s,a,c,d){return s*Math.pow(c/s,(d-e)/(a-e))}}class ToneAudioNode extends ToneWithContext{constructor(){super(...arguments),this.name="ToneAudioNode",this._internalChannels=[]}get numberOfInputs(){return isDefined(this.input)?isAudioParam(this.input)||this.input instanceof Param?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined(this.output)?this.output.numberOfOutputs:0}_isAudioNode(e){return isDefined(e)&&(e instanceof ToneAudioNode||isAudioNode(e))}_getInternalNodes(){const e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(a=>{a.channelCount=e.channelCount,a.channelCountMode=e.channelCountMode,a.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){const e=this._getInternalNodes();assert(e.length>0,"ToneAudioNode does not have any internal nodes");const s=e[0];return{channelCount:s.channelCount,channelCountMode:s.channelCountMode,channelInterpretation:s.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelInterpretation:e}))}connect(e,s=0,a=0){return connect(this,e,s,a),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(e,s=0,a=0){return disconnect(this,e,s,a),this}chain(...e){return connectSeries(this,...e),this}fan(...e){return e.forEach(s=>this.connect(s)),this}dispose(){return super.dispose(),isDefined(this.input)&&(this.input instanceof ToneAudioNode?this.input.dispose():isAudioNode(this.input)&&this.input.disconnect()),isDefined(this.output)&&(this.output instanceof ToneAudioNode?this.output.dispose():isAudioNode(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries(...o){const e=o.shift();o.reduce((s,a)=>(s instanceof ToneAudioNode?s.connect(a):isAudioNode(s)&&connect(s,a),a),e)}function connect(o,e,s=0,a=0){for(assert(isDefined(o),"Cannot connect from undefined node"),assert(isDefined(e),"Cannot connect to undefined node"),(e instanceof ToneAudioNode||isAudioNode(e))&&assert(e.numberOfInputs>0,"Cannot connect to node with no inputs"),assert(o.numberOfOutputs>0,"Cannot connect from node with no outputs");e instanceof ToneAudioNode||e instanceof Param;)isDefined(e.input)&&(e=e.input);for(;o instanceof ToneAudioNode;)isDefined(o.output)&&(o=o.output);isAudioParam(e)?o.connect(e,s):o.connect(e,s,a)}function disconnect(o,e,s=0,a=0){if(isDefined(e))for(;e instanceof ToneAudioNode;)e=e.input;for(;!isAudioNode(o);)isDefined(o.output)&&(o=o.output);isAudioParam(e)?o.disconnect(e,s):isAudioNode(e)?o.disconnect(e,s,a):o.disconnect()}class Gain$1 extends ToneAudioNode{constructor(){super(optionsFromArguments(Gain$1.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const e=optionsFromArguments(Gain$1.getDefaults(),arguments,["gain","units"]);this.gain=new Param({context:this.context,convert:e.convert,param:this._gainNode.gain,units:e.units,value:e.gain,minValue:e.minValue,maxValue:e.maxValue}),readOnly(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource extends ToneAudioNode{constructor(e){super(e),this.onended=noOp,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain$1({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(s){const a=this.toSeconds(s);return this._startTime!==-1&&a>=this._startTime&&(this._stopTime===-1||a<=this._stopTime)?"started":"stopped"},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp})}_startGain(e,s=1){assert(this._startTime===-1,"Source cannot be started more than once");const a=this.toSeconds(this._fadeIn);return this._startTime=e+a,this._startTime=Math.max(this._startTime,this.context.currentTime),a>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(s,e+a):this._gainNode.gain.exponentialApproachValueAtTime(s,e,a)):this._gainNode.gain.setValueAtTime(s,e),this}stop(e){return this.log("stop",e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){assert(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const s=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+s,this._stopTime=Math.max(this._stopTime,this.context.currentTime),s>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,s,e):this._gainNode.gain.targetRampTo(0,s,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const a=this._curve==="exponential"?s*2:0;this._stopSource(this.now()+a),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp&&(this.onended(this),this.onended=noOp,!this.context.isOffline)){const e=()=>this.dispose();typeof window.requestIdleCallback!="undefined"?window.requestIdleCallback(e):setTimeout(e,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.disconnect(),this}}class ToneConstantSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const e=optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"]);connect(this._source,this._gainNode),this.offset=new Param({context:this.context,convert:e.convert,param:this._source.offset,units:e.units,value:e.offset,minValue:e.minValue,maxValue:e.maxValue})}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{convert:!0,offset:1,units:"number"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._source.start(s),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal extends ToneAudioNode{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const e=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource({context:this.context,convert:e.convert,offset:e.value,units:e.units,minValue:e.minValue,maxValue:e.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,units:"number",value:0})}connect(e,s=0,a=0){return connectSignal(this,e,s,a),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,s){return this._param.setValueAtTime(e,s),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,s){return this._param.linearRampToValueAtTime(e,s),this}exponentialRampToValueAtTime(e,s){return this._param.exponentialRampToValueAtTime(e,s),this}exponentialRampTo(e,s,a){return this._param.exponentialRampTo(e,s,a),this}linearRampTo(e,s,a){return this._param.linearRampTo(e,s,a),this}targetRampTo(e,s,a){return this._param.targetRampTo(e,s,a),this}exponentialApproachValueAtTime(e,s,a){return this._param.exponentialApproachValueAtTime(e,s,a),this}setTargetAtTime(e,s,a){return this._param.setTargetAtTime(e,s,a),this}setValueCurveAtTime(e,s,a,c){return this._param.setValueCurveAtTime(e,s,a,c),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,s,a){return this._param.rampTo(e,s,a),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}}function connectSignal(o,e,s,a){(e instanceof Param||isAudioParam(e)||e instanceof Signal&&e.override)&&(e.cancelScheduledValues(0),e.setValueAtTime(0,0),e instanceof Signal&&(e.overridden=!0)),connect(o,e,s,a)}class TickParam extends Param{constructor(){super(optionsFromArguments(TickParam.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline(1/0),this._multiplier=1;const e=optionsFromArguments(TickParam.getDefaults(),arguments,["value"]);this._multiplier=e.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(e.value)}),this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Param.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(e,s,a){s=this.toSeconds(s),this.setRampPoint(s);const c=this._fromType(e),d=this._events.get(s),_=Math.round(Math.max(1/a,1));for(let b=0;b<=_;b++){const k=a*b+s,$=this._exponentialApproach(d.time,d.value,c,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}setValueAtTime(e,s){const a=this.toSeconds(s);super.setValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}linearRampToValueAtTime(e,s){const a=this.toSeconds(s);super.linearRampToValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}exponentialRampToValueAtTime(e,s){s=this.toSeconds(s);const a=this._fromType(e),c=this._events.get(s),d=Math.round(Math.max((s-c.time)*10,1)),_=(s-c.time)/d;for(let b=0;b<=d;b++){const k=_*b+c.time,$=this._exponentialInterpolate(c.time,c.value,s,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}_getTicksUntilEvent(e,s){if(e===null)e={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef(e.ticks)){const _=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(_,e.time)}const a=this._fromType(this.getValueAtTime(e.time));let c=this._fromType(this.getValueAtTime(s));const d=this._events.get(s);return d&&d.time===s&&d.type==="setValueAtTime"&&(c=this._fromType(this.getValueAtTime(s-this.sampleTime))),.5*(s-e.time)*(a+c)+e.ticks}getTicksAtTime(e){const s=this.toSeconds(e),a=this._events.get(s);return Math.max(this._getTicksUntilEvent(a,s),0)}getDurationOfTicks(e,s){const a=this.toSeconds(s),c=this.getTicksAtTime(s);return this.getTimeOfTick(c+e)-a}getTimeOfTick(e){const s=this._events.get(e,"ticks"),a=this._events.getAfter(e,"ticks");if(s&&s.ticks===e)return s.time;if(s&&a&&a.type==="linearRampToValueAtTime"&&s.value!==a.value){const c=this._fromType(this.getValueAtTime(s.time)),_=(this._fromType(this.getValueAtTime(a.time))-c)/(a.time-s.time),b=Math.sqrt(Math.pow(c,2)-2*_*(s.ticks-e)),k=(-c+b)/_,$=(-c-b)/_;return(k>0?k:$)+s.time}else return s?s.value===0?1/0:s.time+(e-s.ticks)/s.value:e/this._initialValue}ticksToTime(e,s){return this.getDurationOfTicks(e,s)}timeToTicks(e,s){const a=this.toSeconds(s),c=this.toSeconds(e),d=this.getTicksAtTime(a);return this.getTicksAtTime(a+c)-d}_fromType(e){return this.units==="bpm"&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units==="bpm"&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){const s=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(s,0)}}class TickSignal extends Signal{constructor(){super(optionsFromArguments(TickSignal.getDefaults(),arguments,["value"])),this.name="TickSignal";const e=optionsFromArguments(TickSignal.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam({context:this.context,convert:e.convert,multiplier:e.multiplier,param:this._constantSource.offset,units:e.units,value:e.value})}static getDefaults(){return Object.assign(Signal.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(e,s){return this._param.ticksToTime(e,s)}timeToTicks(e,s){return this._param.timeToTicks(e,s)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,s){return this._param.getDurationOfTicks(e,s)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource extends ToneWithContext{constructor(){super(optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline,this._tickOffset=new Timeline;const e=optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal({context:this.context,units:e.units,value:e.frequency}),readOnly(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,s){const a=this.toSeconds(e);return this._state.getValueAtTime(a)!=="started"&&(this._state.setStateAtTime("started",a),isDefined(s)&&this.setTicksAtTime(s,a)),this}stop(e){const s=this.toSeconds(e);if(this._state.getValueAtTime(s)==="stopped"){const a=this._state.get(s);a&&a.time>0&&(this._tickOffset.cancel(a.time),this._state.cancel(a.time))}return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this.setTicksAtTime(0,s),this}pause(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)==="started"&&this._state.setStateAtTime("paused",s),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this}getTicksAtTime(e){const s=this.toSeconds(e),a=this._state.getLastState("stopped",s),c={state:"paused",time:s};this._state.add(c);let d=a,_=0;return this._state.forEachBetween(a.time,s+this.sampleTime,b=>{let k=d.time;const $=this._tickOffset.get(b.time);$&&$.time>=d.time&&(_=$.ticks,k=$.time),d.state==="started"&&b.state!=="started"&&(_+=this.frequency.getTicksAtTime(b.time)-this.frequency.getTicksAtTime(k)),d=b}),this._state.remove(c),_}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){const s=this.now(),a=this.frequency.timeToTicks(e,s);this.setTicksAtTime(a,s)}getSecondsAtTime(e){e=this.toSeconds(e);const s=this._state.getLastState("stopped",e),a={state:"paused",time:e};this._state.add(a);let c=s,d=0;return this._state.forEachBetween(s.time,e+this.sampleTime,_=>{let b=c.time;const k=this._tickOffset.get(_.time);k&&k.time>=c.time&&(d=k.seconds,b=k.time),c.state==="started"&&_.state!=="started"&&(d+=_.time-b),c=_}),this._state.remove(a),d}setTicksAtTime(e,s){return s=this.toSeconds(s),this._tickOffset.cancel(s),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,s),ticks:e,time:s}),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,s=this.now()){const a=this._tickOffset.get(s),c=this._state.get(s),d=Math.max(a.time,c.time),_=this.frequency.getTicksAtTime(d)+e-a.ticks;return this.frequency.getTimeOfTick(_)}forEachTickBetween(e,s,a){let c=this._state.get(e);this._state.forEachBetween(e,s,_=>{c&&c.state==="started"&&_.state!=="started"&&this.forEachTickBetween(Math.max(c.time,e),_.time-this.sampleTime,a),c=_});let d=null;if(c&&c.state==="started"){const _=Math.max(c.time,e),b=this.frequency.getTicksAtTime(_),k=this.frequency.getTicksAtTime(c.time),$=b-k;let j=Math.ceil($)-$;j=EQ(j,1)?0:j;let _e=this.frequency.getTimeOfTick(b+j);for(;_e{switch(a.state){case"started":const c=this._tickSource.getTicksAtTime(a.time);this.emit("start",a.time,c);break;case"stopped":a.time!==0&&this.emit("stop",a.time);break;case"paused":this.emit("pause",a.time);break}}),this._tickSource.forEachTickBetween(e,s,(a,c)=>{this.callback(a,c)}))}getStateAtTime(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter.mixin(Clock);class Delay extends ToneAudioNode{constructor(){super(optionsFromArguments(Delay.getDefaults(),arguments,["delayTime","maxDelay"])),this.name="Delay";const e=optionsFromArguments(Delay.getDefaults(),arguments,["delayTime","maxDelay"]),s=this.toSeconds(e.maxDelay);this._maxDelay=Math.max(s,this.toSeconds(e.delayTime)),this._delayNode=this.input=this.output=this.context.createDelay(s),this.delayTime=new Param({context:this.context,param:this._delayNode.delayTime,units:"time",value:e.delayTime,minValue:0,maxValue:this.maxDelay}),readOnly(this,"delayTime")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{delayTime:0,maxDelay:1})}get maxDelay(){return this._maxDelay}dispose(){return super.dispose(),this._delayNode.disconnect(),this.delayTime.dispose(),this}}function Offline(o,e,s=2,a=getContext().sampleRate){return __awaiter$4(this,void 0,void 0,function*(){const c=getContext(),d=new OfflineContext(s,e,a);setContext(d),yield o(d);const _=d.render();setContext(c);const b=yield _;return new ToneAudioBuffer(b)})}class ToneAudioBuffers extends Tone$1{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const e=optionsFromArguments(ToneAudioBuffers.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=e.baseUrl,Object.keys(e.urls).forEach(s=>{this._loadingCount++;const a=e.urls[s];this.add(s,a,this._bufferLoaded.bind(this,e.onload),e.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp,onload:noOp,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return assert(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,s])=>s.loaded)}add(e,s,a=noOp,c=noOp){return isString(s)?this._buffers.set(e.toString(),new ToneAudioBuffer(this.baseUrl+s,a,c)):this._buffers.set(e.toString(),new ToneAudioBuffer(s,a,c)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}}class MidiClass extends FrequencyClass{constructor(){super(...arguments),this.name="MidiClass",this.defaultUnits="midi"}_frequencyToUnits(e){return ftom(super._frequencyToUnits(e))}_ticksToUnits(e){return ftom(super._ticksToUnits(e))}_beatsToUnits(e){return ftom(super._beatsToUnits(e))}_secondsToUnits(e){return ftom(super._secondsToUnits(e))}toMidi(){return this.valueOf()}toFrequency(){return mtof(this.toMidi())}transpose(e){return new MidiClass(this.context,this.toMidi()+e)}}function Midi(o,e){return new MidiClass(getContext(),o,e)}class TicksClass extends TransportTimeClass{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}function Ticks(o,e){return new TicksClass(getContext(),o,e)}class Draw$1 extends ToneWithContext{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,s){return this._events.add({callback:e,time:this.toSeconds(s)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){const e=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=e;){const s=this._events.shift();s&&e-s.time<=this.expiration&&s.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit(o=>{o.draw=new Draw$1({context:o})});onContextClose(o=>{o.draw.dispose()});class IntervalTimeline extends Tone$1{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(e){assert(isDefined(e.time),"Events must have a time property"),assert(isDefined(e.duration),"Events must have a duration parameter"),e.time=e.time.valueOf();let s=new IntervalNode(e.time,e.time+e.duration,e);for(this._root===null?this._root=s:this._root.insert(s),this._length++;s!==null;)s.updateHeight(),s.updateMax(),this._rebalance(s),s=s.parent;return this}remove(e){if(this._root!==null){const s=[];this._root.search(e.time,s);for(const a of s)if(a.event===e){this._removeNode(a),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,s=>this.remove(s)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,s){e.parent!==null?(e.isLeftChild()?e.parent.left=s:e.parent.right=s,this._rebalance(e.parent)):this._setRoot(s)}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{const s=e.getBalance();let a,c=null;if(s>0)if(e.left.right===null)a=e.left,a.right=e.right,c=a;else{for(a=e.left.right;a.right!==null;)a=a.right;a.parent&&(a.parent.right=a.left,c=a.parent,a.left=e.left,a.right=e.right)}else if(e.right.left===null)a=e.right,a.left=e.left,c=a;else{for(a=e.right.left;a.left!==null;)a=a.left;a.parent&&(a.parent.left=a.right,c=a.parent,a.left=e.left,a.right=e.right)}e.parent!==null?e.isLeftChild()?e.parent.left=a:e.parent.right=a:this._setRoot(a),c&&this._rebalance(c)}e.dispose()}_rotateLeft(e){const s=e.parent,a=e.isLeftChild(),c=e.right;c&&(e.right=c.left,c.left=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rotateRight(e){const s=e.parent,a=e.isLeftChild(),c=e.left;c&&(e.left=c.right,c.right=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rebalance(e){const s=e.getBalance();s>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):s<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){const s=[];if(this._root.search(e,s),s.length>0){let a=s[0];for(let c=1;ca.low&&(a=s[c]);return a.event}}return null}forEach(e){if(this._root!==null){const s=[];this._root.traverse(a=>s.push(a)),s.forEach(a=>{a.event&&e(a.event)})}return this}forEachAtTime(e,s){if(this._root!==null){const a=[];this._root.search(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}forEachFrom(e,s){if(this._root!==null){const a=[];this._root.searchAfter(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}}class IntervalNode{constructor(e,s,a){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=a,this.low=e,this.high=s,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,s){e>this.max||(this.left!==null&&this.left.search(e,s),this.low<=e&&this.high>e&&s.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,s))}searchAfter(e,s){this.low>=e&&(s.push(this),this.left!==null&&this.left.searchAfter(e,s)),this.right!==null&&this.right.searchAfter(e,s)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left!==null?e=this.left.height+1:this.right!==null&&(e=-(this.right.height+1)),e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}var Units=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));class Volume extends ToneAudioNode{constructor(){super(optionsFromArguments(Volume.getDefaults(),arguments,["volume"])),this.name="Volume";const e=optionsFromArguments(Volume.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain$1({context:this.context,gain:e.volume,units:"decibels"}),this.volume=this.output.gain,readOnly(this,"volume"),this._unmutedVolume=e.volume,this.mute=e.mute}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}class Destination$2 extends ToneAudioNode{constructor(){super(optionsFromArguments(Destination$2.getDefaults(),arguments)),this.name="Destination",this.input=new Volume({context:this.context}),this.output=new Gain$1({context:this.context}),this.volume=this.input.volume;const e=optionsFromArguments(Destination$2.getDefaults(),arguments);connectSeries(this.input,this.output,this.context.rawContext.destination),this.mute=e.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),connectSeries(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}}onContextInit(o=>{o.destination=new Destination$2({context:o})});onContextClose(o=>{o.destination.dispose()});class TimelineValue extends Tone$1{constructor(e){super(),this.name="TimelineValue",this._timeline=new Timeline({memory:10}),this._initialValue=e}set(e,s){return this._timeline.add({value:e,time:s}),this}get(e){const s=this._timeline.get(e);return s?s.value:this._initialValue}}class TransportEvent{constructor(e,s){this.id=TransportEvent._eventId++;const a=Object.assign(TransportEvent.getDefaults(),s);this.transport=e,this.callback=a.callback,this._once=a.once,this.time=a.time}static getDefaults(){return{callback:noOp,once:!1,time:0}}invoke(e){this.callback&&(this.callback(e),this._once&&this.transport.clear(this.id))}dispose(){return this.callback=void 0,this}}TransportEvent._eventId=0;class TransportRepeatEvent extends TransportEvent{constructor(e,s){super(e,s),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const a=Object.assign(TransportRepeatEvent.getDefaults(),s);this.duration=new TicksClass(e.context,a.duration).valueOf(),this._interval=new TicksClass(e.context,a.interval).valueOf(),this._nextTick=a.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvents(e){const s=this.transport.getTicksAtTime(e);s>=this.time&&s>=this._nextTick&&this._nextTick+this._intervalthis.time&&(this._nextTick=this.time+Math.ceil((s-this.time)/this._interval)*this._interval),this._currentId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()),this._nextTick+=this._interval,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds())}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this}}class Transport$1 extends ToneWithContext{constructor(){super(optionsFromArguments(Transport$1.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline,this._repeatedEvents=new IntervalTimeline,this._syncedSignals=[],this._swingAmount=0;const e=optionsFromArguments(Transport$1.getDefaults(),arguments);this._ppq=e.ppq,this._clock=new Clock({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=e.ppq,this.bpm.setValueAtTime(e.bpm,0),readOnly(this,"bpm"),this._timeSignature=e.timeSignature,this._swingTicks=e.ppq/2}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(e,s){if(this._loop.get(e)&&s>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),s=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._swingAmount>0&&s%this._ppq!==0&&s%(this._swingTicks*2)!==0){const a=s%(this._swingTicks*2)/(this._swingTicks*2),c=Math.sin(a*Math.PI)*this._swingAmount;e+=new TicksClass(this.context,this._swingTicks*2/3).toSeconds()*c}this._timeline.forEachAtTime(s,a=>a.invoke(e))}schedule(e,s){const a=new TransportEvent(this,{callback:e,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}scheduleRepeat(e,s,a,c=1/0){const d=new TransportRepeatEvent(this,{callback:e,duration:new TimeClass(this.context,c).toTicks(),interval:new TimeClass(this.context,s).toTicks(),time:new TransportTimeClass(this.context,a).toTicks()});return this._addEvent(d,this._repeatedEvents)}scheduleOnce(e,s){const a=new TransportEvent(this,{callback:e,once:!0,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){const s=this._scheduledEvents[e.toString()];s.timeline.remove(s.event),s.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,s){return this._scheduledEvents[e.id.toString()]={event:e,timeline:s},s.add(e),e.id}cancel(e=0){const s=this.toTicks(e);return this._timeline.forEachFrom(s,a=>this.clear(a.id)),this._repeatedEvents.forEachFrom(s,a=>this.clear(a.id)),this}_bindClockEvents(){this._clock.on("start",(e,s)=>{s=new TicksClass(this.context,s).toSeconds(),this.emit("start",e,s)}),this._clock.on("stop",e=>{this.emit("stop",e)}),this._clock.on("pause",e=>{this.emit("pause",e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,s){let a;return isDefined(s)&&(a=this.toTicks(s)),this._clock.start(e,a),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!=="started"?this.start(e):this.stop(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){isArray(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new TimeClass(this.context,this._loopStart,"i").toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new TimeClass(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new TicksClass(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){const e=this.now(),s=this._clock.getTicksAtTime(e);return new TicksClass(this.context,s).toBarsBeatsSixteenths()}set position(e){const s=this.toTicks(e);this.ticks=s}get seconds(){return this._clock.seconds}set seconds(e){const s=this.now(),a=this._clock.frequency.timeToTicks(e,s);this.ticks=a}get progress(){if(this.loop){const e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){const s=this.now();if(this.state==="started"){const a=this._clock.getTicksAtTime(s),c=this._clock.frequency.getDurationOfTicks(Math.ceil(a)-a,s),d=s+c;this.emit("stop",d),this._clock.setTicksAtTime(e,d),this.emit("start",d,this._clock.getSecondsAtTime(d))}else this._clock.setTicksAtTime(e,s)}}getTicksAtTime(e){return Math.round(this._clock.getTicksAtTime(e))}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!=="started")return 0;{const s=this.now(),a=this.getTicksAtTime(s),c=e-a%e;return this._clock.nextTickTime(c,s)}}syncSignal(e,s){if(!s){const c=this.now();if(e.getValueAtTime(c)!==0){const d=this.bpm.getValueAtTime(c),_=1/(60/d/this.PPQ);s=e.getValueAtTime(c)/_}else s=0}const a=new Gain$1(s);return this.bpm.connect(a),a.connect(e._param),this._syncedSignals.push({initial:e.value,ratio:a,signal:e}),e.value=0,this}unsyncSignal(e){for(let s=this._syncedSignals.length-1;s>=0;s--){const a=this._syncedSignals[s];a.signal===e&&(a.ratio.dispose(),a.signal.value=a.initial,this._syncedSignals.splice(s,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}}Emitter.mixin(Transport$1);onContextInit(o=>{o.transport=new Transport$1({context:o})});onContextClose(o=>{o.transport.dispose()});class Source extends ToneAudioNode{constructor(e){super(e),this.input=void 0,this._state=new StateTimeline("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp,this._syncedStop=noOp,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,readOnly(this,"volume"),this.onstop=e.onstop}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,onstop:noOp,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,s,a){let c=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(c=this._clampToCurrentTime(c),!this._synced&&this._state.getValueAtTime(c)==="started")assert(GT(c,this._state.get(c).time),"Start time must be strictly greater than previous start time"),this._state.cancel(c),this._state.setStateAtTime("started",c),this.log("restart",c),this.restart(c,s,a);else if(this.log("start",c),this._state.setStateAtTime("started",c),this._synced){const d=this._state.get(c);d&&(d.offset=this.toSeconds(defaultArg(s,0)),d.duration=a?this.toSeconds(a):void 0);const _=this.context.transport.schedule(b=>{this._start(b,s,a)},c);this._scheduled.push(_),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>c&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning(this.context),this._start(c,s,a);return this}stop(e){let s=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(s=this._clampToCurrentTime(s),this._state.getValueAtTime(s)==="started"||isDefined(this._state.getNextState("started",s))){if(this.log("stop",s),!this._synced)this._stop(s);else{const a=this.context.transport.schedule(this._stop.bind(this),s);this._scheduled.push(a)}this._state.cancel(s),this._state.setStateAtTime("stopped",s)}return this}restart(e,s,a){return e=this.toSeconds(e),this._state.getValueAtTime(e)==="started"&&(this._state.cancel(e),this._restart(e,s,a)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,s)=>{if(s>0){const a=this._state.get(s);if(a&&a.state==="started"&&a.time!==s){const c=s-this.toSeconds(a.time);let d;a.duration&&(d=this.toSeconds(a.duration)-c),this._start(e,this.toSeconds(a.offset)+c,d)}}},this._syncedStop=e=>{const s=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(s)==="started"&&this._stop(e)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const e=optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"]);connect(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param({context:this.context,param:this._source.playbackRate,units:"positive",value:e.playbackRate}),this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this._buffer=new ToneAudioBuffer(e.url,e.onload,e.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{url:new ToneAudioBuffer,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,s,a,c=1){assert(this.buffer.loaded,"buffer is either not set or not loaded");const d=this.toSeconds(e);this._startGain(d,c),this.loop?s=defaultArg(s,this.loopStart):s=defaultArg(s,0);let _=Math.max(this.toSeconds(s),0);if(this.loop){const b=this.toSeconds(this.loopEnd)||this.buffer.duration,k=this.toSeconds(this.loopStart),$=b-k;GTE(_,b)&&(_=(_-k)%$+k),EQ(_,this.buffer.duration)&&(_=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT(_,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(d,_)),isDefined(a)){let b=this.toSeconds(a);b=Math.max(b,0),this.stop(d+b)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}class Noise extends Source{constructor(){super(optionsFromArguments(Noise.getDefaults(),arguments,["type"])),this.name="Noise",this._source=null;const e=optionsFromArguments(Noise.getDefaults(),arguments,["type"]);this._playbackRate=e.playbackRate,this.type=e.type,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{fadeIn:0,fadeOut:0,playbackRate:1,type:"white"})}get type(){return this._type}set type(e){if(assert(e in _noiseBuffers,"Noise: invalid type: "+e),this._type!==e&&(this._type=e,this.state==="started")){const s=this.now();this._stop(s),this._start(s)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._source&&(this._source.playbackRate.value=e)}_start(e){const s=_noiseBuffers[this._type];this._source=new ToneBufferSource({url:s,context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,loop:!0,onended:()=>this.onstop(this),playbackRate:this._playbackRate}).connect(this.output),this._source.start(this.toSeconds(e),Math.random()*(s.duration-.001))}_stop(e){this._source&&(this._source.stop(this.toSeconds(e)),this._source=null)}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._source&&(this._source.fadeIn=this._fadeIn)}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._source&&(this._source.fadeOut=this._fadeOut)}_restart(e){this._stop(e),this._start(e)}dispose(){return super.dispose(),this._source&&this._source.disconnect(),this}}const BUFFER_LENGTH=44100*5,NUM_CHANNELS=2,_noiseCache={brown:null,pink:null,white:null},_noiseBuffers={get brown(){if(!_noiseCache.brown){const o=[];for(let e=0;ed.label===e||d.deviceId===e),!this._device&&s.length>0&&(this._device=s[0]),assert(isDefined(this._device),`No matching device ${e}`));const a={audio:{echoCancellation:!1,sampleRate:this.context.sampleRate,noiseSuppression:!1,mozNoiseSuppression:!1}};this._device&&(a.audio.deviceId=this._device.deviceId);const c=yield navigator.mediaDevices.getUserMedia(a);if(!this._stream){this._stream=c;const d=this.context.createMediaStreamSource(c);connect(d,this.output),this._mediaStream=d}return this})}close(){return this._stream&&this._mediaStream&&(this._stream.getAudioTracks().forEach(e=>{e.stop()}),this._stream=void 0,this._mediaStream.disconnect(),this._mediaStream=void 0),this._device=void 0,this}static enumerateDevices(){return __awaiter$4(this,void 0,void 0,function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter(s=>s.kind==="audioinput")})}get state(){return this._stream&&this._stream.active?"started":"stopped"}get deviceId(){if(this._device)return this._device.deviceId}get groupId(){if(this._device)return this._device.groupId}get label(){if(this._device)return this._device.label}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this.close(),this._volume.dispose(),this.volume.dispose(),this}static get supported(){return isDefined(navigator.mediaDevices)&&isDefined(navigator.mediaDevices.getUserMedia)}}function generateWaveform(o,e){return __awaiter$4(this,void 0,void 0,function*(){const s=e/o.context.sampleRate,a=new OfflineContext(1,s,o.context.sampleRate);return new o.constructor(Object.assign(o.get(),{frequency:2/s,detune:0,context:a})).toDestination().start(0),(yield a.render()).getChannelData(0)})}class ToneOscillatorNode extends OneShotSource{constructor(){super(optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"])),this.name="ToneOscillatorNode",this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator];const e=optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"]);connect(this._oscillator,this._gainNode),this.type=e.type,this.frequency=new Param({context:this.context,param:this._oscillator.frequency,units:"frequency",value:e.frequency}),this.detune=new Param({context:this.context,param:this._oscillator.detune,units:"cents",value:e.detune}),readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{detune:0,frequency:440,type:"sine"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._oscillator.start(s),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}}class Oscillator extends Source{constructor(){super(optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"])),this.name="Oscillator",this._oscillator=null;const e=optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),readOnly(this,"frequency"),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly(this,"detune"),this._partials=e.partials,this._partialCount=e.partialCount,this._type=e.type,e.partialCount&&e.type!=="custom"&&(this._type=this.baseType+e.partialCount.toString()),this.phase=e.phase}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:"sine"})}_start(e){const s=this.toSeconds(e),a=new ToneOscillatorNode({context:this.context,onended:()=>this.onstop(this)});this._oscillator=a,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(s)}_stop(e){const s=this.toSeconds(e);this._oscillator&&this._oscillator.stop(s)}_restart(e){const s=this.toSeconds(e);return this.log("restart",s),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(s),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator._periodicWaveCache.find(s=>s.phase===this._phase&&deepEquals(s.partials,this._partials));{const e=Oscillator._periodicWaveCache.find(s=>s.type===this._type&&s.phase===this._phase);return this._partialCount=e?e.partialCount:this._partialCount,e}}get type(){return this._type}set type(e){this._type=e;const s=["sine","square","sawtooth","triangle"].indexOf(e)!==-1;if(this._phase===0&&s)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=e);else{const a=this._getCachedPeriodicWave();if(isDefined(a)){const{partials:c,wave:d}=a;this._wave=d,this._partials=c,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[c,d]=this._getRealImaginary(e,this._phase),_=this.context.createPeriodicWave(c,d);this._wave=_,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator._periodicWaveCache.push({imag:d,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:c,type:this._type,wave:this._wave}),Oscillator._periodicWaveCache.length>100&&Oscillator._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(e){this.partialCount&&this._type!=="custom"&&e!=="custom"?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){assertRange(e,0);let s=this._type;const a=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(a&&(s=a[1]),this._type!=="custom")e===0?this.type=s:this.type=s+e.toString();else{const c=new Float32Array(e);this._partials.forEach((d,_)=>c[_]=d),this._partials=Array.from(c),this.type=this._type}}_getRealImaginary(e,s){let c=2048;const d=new Float32Array(c),_=new Float32Array(c);let b=1;if(e==="custom"){if(b=this._partials.length+1,this._partialCount=this._partials.length,c=b,this._partials.length===0)return[d,_]}else{const k=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);k?(b=parseInt(k[2],10)+1,this._partialCount=parseInt(k[2],10),e=k[1],b=Math.max(b,2),c=b):this._partialCount=0,this._partials=[]}for(let k=1;k>1&1?-1:1):j=0,this._partials[k-1]=j;break;case"custom":j=this._partials[k-1];break;default:throw new TypeError("Oscillator: invalid type: "+e)}j!==0?(d[k]=-j*Math.sin(s*k),_[k]=j*Math.cos(s*k)):(d[k]=0,_[k]=0)}return[d,_]}_inverseFFT(e,s,a){let c=0;const d=e.length;for(let _=0;_a.includes(e));assert(s,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class AudioToGain extends SignalOperator{constructor(){super(...arguments),this.name="AudioToGain",this._norm=new WaveShaper({context:this.context,mapping:e=>(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply extends Signal{constructor(){super(Object.assign(optionsFromArguments(Multiply.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const e=optionsFromArguments(Multiply.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain$1({context:this.context,minValue:e.minValue,maxValue:e.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator extends Source{constructor(){super(optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain({context:this.context}),this._modulationNode=new Gain$1({context:this.context});const e=optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator extends Source{constructor(){super(optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain$1({context:this.context,gain:0});const e=optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:0,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.detune=this._carrier.detune,this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.modulationIndex=new Multiply({context:this.context,units:"positive",value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator extends Source{constructor(){super(optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain$1({context:this.context,gain:0}),this._thresh=new WaveShaper({context:this.context,mapping:s=>s<=0?-1:1});const e=optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"]);this.width=new Signal({context:this.context,units:"audioRange",value:e.width}),this._triangle=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator extends Source{constructor(){super(optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const e=optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this._spread=e.spread,this._type=e.type,this._phase=e.phase,this._partials=e.partials,this._partialCount=e.partialCount,this.count=e.count,readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(e){e=this.toSeconds(e),this._forEach(s=>s.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(s=>s.stop(e))}_restart(e){this._forEach(s=>s.restart(e))}_forEach(e){for(let s=0;ss.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){const s=-e/2,a=e/(this._oscillators.length-1);this._forEach((c,d)=>c.detune.value=s+a*d)}}get count(){return this._oscillators.length}set count(e){if(assertRange(e,1),this._oscillators.length!==e){this._forEach(s=>s.dispose()),this._oscillators=[];for(let s=0;sthis.onstop(this):noOp});this.type==="custom"&&(a.partials=this._partials),this.frequency.connect(a.frequency),this.detune.connect(a.detune),a.detune.overridden=!1,a.connect(this.output),this._oscillators[s]=a}this.spread=this._spread,this.state==="started"&&this._forEach(s=>s.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((s,a)=>s.phase=this._phase+a/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(s=>s.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type="custom",this._forEach(s=>s.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(s=>s.partialCount=e),this._type=this._oscillators[0].type}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}}class PWMOscillator extends Source{constructor(){super(optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply({context:this.context,value:2});const e=optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator({context:this.context,frequency:e.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap={am:AMOscillator,fat:FatOscillator,fm:FMOscillator,oscillator:Oscillator,pulse:PulseOscillator,pwm:PWMOscillator};class OmniOscillator extends Source{constructor(){super(optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const e=optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly(this,["frequency","detune"]),this.set(e)}static getDefaults(){return Object.assign(Oscillator.getDefaults(),FMOscillator.getDefaults(),AMOscillator.getDefaults(),FatOscillator.getDefaults(),PulseOscillator.getDefaults(),PWMOscillator.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e="";return["am","fm","fat"].some(s=>this._sourceType===s)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):e==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,"type")&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;const s=OmniOscillatorSourceMap[e],a=this.now();if(this._oscillator){const c=this._oscillator;c.stop(a),this.context.setTimeout(()=>c.dispose(),this.blockTime)}this._oscillator=new s({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(a)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let s="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(s=this._oscillator.type),e==="fm"?this.type="fm"+s:e==="am"?this.type="am"+s:e==="fat"?this.type="fat"+s:e==="oscillator"?this.type=s:e==="pulse"?this.type="pulse":e==="pwm"&&(this.type="pwm")}_getOscType(e,s){return e instanceof OmniOscillatorSourceMap[s]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&e!=="pulse"&&e!=="pwm"&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}class Add extends Signal{constructor(){super(Object.assign(optionsFromArguments(Add.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Add",this._sum=new Gain$1({context:this.context}),this.input=this._sum,this.output=this._sum,this.addend=this._param,connectSeries(this._constantSource,this._sum)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._sum.dispose(),this}}class Scale extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]))),this.name="Scale";const e=optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]);this._mult=this.input=new Multiply({context:this.context,value:e.max-e.min}),this._add=this.output=new Add({context:this.context,value:e.min}),this._min=e.min,this._max=e.max,this.input.connect(this.output)}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{max:1,min:0})}get min(){return this._min}set min(e){this._min=e,this._setRange()}get max(){return this._max}set max(e){this._max=e,this._setRange()}_setRange(){this._add.value=this._min,this._mult.value=this._max-this._min}dispose(){return super.dispose(),this._add.dispose(),this._mult.dispose(),this}}class Zero extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Zero.getDefaults(),arguments))),this.name="Zero",this._gain=new Gain$1({context:this.context}),this.output=this._gain,this.input=void 0,connect(this.context.getConstant(0),this._gain)}dispose(){return super.dispose(),disconnect(this.context.getConstant(0),this._gain),this}}class LFO extends ToneAudioNode{constructor(){super(optionsFromArguments(LFO.getDefaults(),arguments,["frequency","min","max"])),this.name="LFO",this._stoppedValue=0,this._units="number",this.convert=!0,this._fromType=Param.prototype._fromType,this._toType=Param.prototype._toType,this._is=Param.prototype._is,this._clampValue=Param.prototype._clampValue;const e=optionsFromArguments(LFO.getDefaults(),arguments,["frequency","min","max"]);this._oscillator=new Oscillator(e),this.frequency=this._oscillator.frequency,this._amplitudeGain=new Gain$1({context:this.context,gain:e.amplitude,units:"normalRange"}),this.amplitude=this._amplitudeGain.gain,this._stoppedSignal=new Signal({context:this.context,units:"audioRange",value:0}),this._zeros=new Zero({context:this.context}),this._a2g=new AudioToGain({context:this.context}),this._scaler=this.output=new Scale({context:this.context,max:e.max,min:e.min}),this.units=e.units,this.min=e.min,this.max=e.max,this._oscillator.chain(this._amplitudeGain,this._a2g,this._scaler),this._zeros.connect(this._a2g),this._stoppedSignal.connect(this._a2g),readOnly(this,["amplitude","frequency"]),this.phase=e.phase}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{amplitude:1,frequency:"4n",max:1,min:0,type:"sine",units:"number"})}start(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(0,e),this._oscillator.start(e),this}stop(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(this._stoppedValue,e),this._oscillator.stop(e),this}sync(){return this._oscillator.sync(),this._oscillator.syncFrequency(),this}unsync(){return this._oscillator.unsync(),this._oscillator.unsyncFrequency(),this}_setStoppedValue(){this._stoppedValue=this._oscillator.getInitialValue(),this._stoppedSignal.value=this._stoppedValue}get min(){return this._toType(this._scaler.min)}set min(e){e=this._fromType(e),this._scaler.min=e}get max(){return this._toType(this._scaler.max)}set max(e){e=this._fromType(e),this._scaler.max=e}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e,this._setStoppedValue()}get partials(){return this._oscillator.partials}set partials(e){this._oscillator.partials=e,this._setStoppedValue()}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e,this._setStoppedValue()}get units(){return this._units}set units(e){const s=this.min,a=this.max;this._units=e,this.min=s,this.max=a}get state(){return this._oscillator.state}connect(e,s,a){return(e instanceof Param||e instanceof Signal)&&(this.convert=e.convert,this.units=e.units),connectSignal(this,e,s,a),this}dispose(){return super.dispose(),this._oscillator.dispose(),this._stoppedSignal.dispose(),this._zeros.dispose(),this._scaler.dispose(),this._a2g.dispose(),this._amplitudeGain.dispose(),this.amplitude.dispose(),this}}function range(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(d,o,e),s.set(this,d)}})}}function timeRange(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(this.toSeconds(d),o,e),s.set(this,d)}})}}class Player extends Source{constructor(){super(optionsFromArguments(Player.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const e=optionsFromArguments(Player.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer({onload:this._onload.bind(this,e.onload),onerror:e.onerror,reverse:e.reverse,url:e.url}),this.autostart=e.autostart,this._loop=e.loop,this._loopStart=e.loopStart,this._loopEnd=e.loopEnd,this._playbackRate=e.playbackRate,this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1,reverse:!1})}load(e){return __awaiter$4(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=noOp){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(e,s,a){return super.start(e,s,a),this}_start(e,s,a){this._loop?s=defaultArg(s,this._loopStart):s=defaultArg(s,0);const c=this.toSeconds(s),d=a;a=defaultArg(a,Math.max(this._buffer.duration-c,0));let _=this.toSeconds(a);_=_/this._playbackRate,e=this.toSeconds(e);const b=new ToneBufferSource({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+_),this._state.setStateAtTime("stopped",e+_,{implicitEnd:!0})),this._activeSources.add(b),this._loop&&isUndef(d)?b.start(e,c):b.start(e,c,_-this.toSeconds(this.fadeOut))}_stop(e){const s=this.toSeconds(e);this._activeSources.forEach(a=>a.stop(s))}restart(e,s,a){return super.restart(e,s,a),this}_restart(e,s,a){this._stop(e),this._start(e,s,a)}seek(e,s){const a=this.toSeconds(s);if(this._state.getValueAtTime(a)==="started"){const c=this.toSeconds(e);this._stop(a),this._start(a,c)}return this}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(s=>{s.loop=e}),e)){const s=this._state.getNextState("stopped",this.now());s&&this._state.cancel(s.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;const s=this.now(),a=this._state.getNextState("stopped",s);a&&a.implicitEnd&&(this._state.cancel(a.time),this._activeSources.forEach(c=>c.cancelStop())),this._activeSources.forEach(c=>{c.playbackRate.setValueAtTime(e,s)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}}__decorate([timeRange(0)],Player.prototype,"fadeIn",void 0);__decorate([timeRange(0)],Player.prototype,"fadeOut",void 0);class Players$1 extends ToneAudioNode{constructor(){super(optionsFromArguments(Players$1.getDefaults(),arguments,["urls","onload"],"urls")),this.name="Players",this.input=void 0,this._players=new Map;const e=optionsFromArguments(Players$1.getDefaults(),arguments,["urls","onload"],"urls");this._volume=this.output=new Volume({context:this.context,volume:e.volume}),this.volume=this._volume.volume,readOnly(this,"volume"),this._buffers=new ToneAudioBuffers({urls:e.urls,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.mute=e.mute,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{baseUrl:"",fadeIn:0,fadeOut:0,mute:!1,onload:noOp,onerror:noOp,urls:{},volume:0})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._players.forEach(s=>{s.fadeIn=e})}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._players.forEach(s=>{s.fadeOut=e})}get state(){return Array.from(this._players).some(([s,a])=>a.state==="started")?"started":"stopped"}has(e){return this._buffers.has(e)}player(e){if(assert(this.has(e),`No Player with the name ${e} exists on this object`),!this._players.has(e)){const s=new Player({context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,url:this._buffers.get(e)}).connect(this.output);this._players.set(e,s)}return this._players.get(e)}get loaded(){return this._buffers.loaded}add(e,s,a){return assert(!this._buffers.has(e),"A buffer with that name already exists on this object"),this._buffers.add(e,s,a),this}stopAll(e){return this._players.forEach(s=>s.stop(e)),this}dispose(){return super.dispose(),this._volume.dispose(),this.volume.dispose(),this._players.forEach(e=>e.dispose()),this._buffers.dispose(),this}}class GrainPlayer extends Source{constructor(){super(optionsFromArguments(GrainPlayer.getDefaults(),arguments,["url","onload"])),this.name="GrainPlayer",this._loopStart=0,this._loopEnd=0,this._activeSources=[];const e=optionsFromArguments(GrainPlayer.getDefaults(),arguments,["url","onload"]);this.buffer=new ToneAudioBuffer({onload:e.onload,onerror:e.onerror,reverse:e.reverse,url:e.url}),this._clock=new Clock({context:this.context,callback:this._tick.bind(this),frequency:1/e.grainSize}),this._playbackRate=e.playbackRate,this._grainSize=e.grainSize,this._overlap=e.overlap,this.detune=e.detune,this.overlap=e.overlap,this.loop=e.loop,this.playbackRate=e.playbackRate,this.grainSize=e.grainSize,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.reverse=e.reverse,this._clock.on("stop",this._onstop.bind(this))}static getDefaults(){return Object.assign(Source.getDefaults(),{onload:noOp,onerror:noOp,overlap:.1,grainSize:.2,playbackRate:1,detune:0,loop:!1,loopStart:0,loopEnd:0,reverse:!1})}_start(e,s,a){s=defaultArg(s,0),s=this.toSeconds(s),e=this.toSeconds(e);const c=1/this._clock.frequency.getValueAtTime(e);this._clock.start(e,s/c),a&&this.stop(e+this.toSeconds(a))}restart(e,s,a){return super.restart(e,s,a),this}_restart(e,s,a){this._stop(e),this._start(e,s,a)}_stop(e){this._clock.stop(e)}_onstop(e){this._activeSources.forEach(s=>{s.fadeOut=0,s.stop(e)}),this.onstop(this)}_tick(e){const s=this._clock.getTicksAtTime(e),a=s*this._grainSize;if(this.log("offset",a),!this.loop&&a>this.buffer.duration){this.stop(e);return}const c=a{const _=this._activeSources.indexOf(d);_!==-1&&this._activeSources.splice(_,1)}}get playbackRate(){return this._playbackRate}set playbackRate(e){assertRange(e,.001),this._playbackRate=e,this.grainSize=this._grainSize}get loopStart(){return this._loopStart}set loopStart(e){this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._loopStart=this.toSeconds(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._loopEnd=this.toSeconds(e)}get reverse(){return this.buffer.reverse}set reverse(e){this.buffer.reverse=e}get grainSize(){return this._grainSize}set grainSize(e){this._grainSize=this.toSeconds(e),this._clock.frequency.setValueAtTime(this._playbackRate/this._grainSize,this.now())}get overlap(){return this._overlap}set overlap(e){const s=this.toSeconds(e);assertRange(s,0),this._overlap=s}get loaded(){return this.buffer.loaded}dispose(){return super.dispose(),this.buffer.dispose(),this._clock.dispose(),this._activeSources.forEach(e=>e.dispose()),this}}class Abs extends SignalOperator{constructor(){super(...arguments),this.name="Abs",this._abs=new WaveShaper({context:this.context,mapping:e=>Math.abs(e)<.001?0:Math.abs(e)}),this.input=this._abs,this.output=this._abs}dispose(){return super.dispose(),this._abs.dispose(),this}}class GainToAudio extends SignalOperator{constructor(){super(...arguments),this.name="GainToAudio",this._norm=new WaveShaper({context:this.context,mapping:e=>Math.abs(e)*2-1}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Negate extends SignalOperator{constructor(){super(...arguments),this.name="Negate",this._multiply=new Multiply({context:this.context,value:-1}),this.input=this._multiply,this.output=this._multiply}dispose(){return super.dispose(),this._multiply.dispose(),this}}class Subtract extends Signal{constructor(){super(Object.assign(optionsFromArguments(Subtract.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Subtract",this._sum=new Gain$1({context:this.context}),this.input=this._sum,this.output=this._sum,this._neg=new Negate({context:this.context}),this.subtrahend=this._param,connectSeries(this._constantSource,this._neg,this._sum)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._neg.dispose(),this._sum.dispose(),this}}class GreaterThanZero extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(GreaterThanZero.getDefaults(),arguments))),this.name="GreaterThanZero",this._thresh=this.output=new WaveShaper({context:this.context,length:127,mapping:e=>e<=0?0:1}),this._scale=this.input=new Multiply({context:this.context,value:1e4}),this._scale.connect(this._thresh)}dispose(){return super.dispose(),this._scale.dispose(),this._thresh.dispose(),this}}class GreaterThan extends Signal{constructor(){super(Object.assign(optionsFromArguments(GreaterThan.getDefaults(),arguments,["value"]))),this.name="GreaterThan",this.override=!1;const e=optionsFromArguments(GreaterThan.getDefaults(),arguments,["value"]);this._subtract=this.input=new Subtract({context:this.context,value:e.value}),this._gtz=this.output=new GreaterThanZero({context:this.context}),this.comparator=this._param=this._subtract.subtrahend,readOnly(this,"comparator"),this._subtract.connect(this._gtz)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._gtz.dispose(),this._subtract.dispose(),this.comparator.dispose(),this}}class Pow extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Pow.getDefaults(),arguments,["value"]))),this.name="Pow";const e=optionsFromArguments(Pow.getDefaults(),arguments,["value"]);this._exponentScaler=this.input=this.output=new WaveShaper({context:this.context,mapping:this._expFunc(e.value),length:8192}),this._exponent=e.value}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{value:1})}_expFunc(e){return s=>Math.pow(Math.abs(s),e)}get value(){return this._exponent}set value(e){this._exponent=e,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}}class ScaleExp extends Scale{constructor(){super(Object.assign(optionsFromArguments(ScaleExp.getDefaults(),arguments,["min","max","exponent"]))),this.name="ScaleExp";const e=optionsFromArguments(ScaleExp.getDefaults(),arguments,["min","max","exponent"]);this.input=this._exp=new Pow({context:this.context,value:e.exponent}),this._exp.connect(this._mult)}static getDefaults(){return Object.assign(Scale.getDefaults(),{exponent:1})}get exponent(){return this._exp.value}set exponent(e){this._exp.value=e}dispose(){return super.dispose(),this._exp.dispose(),this}}class SyncedSignal extends Signal{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="SyncedSignal",this.override=!1;const e=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this._lastVal=e.value,this._synced=this.context.transport.scheduleRepeat(this._onTick.bind(this),"1i"),this._syncedCallback=this._anchorValue.bind(this),this.context.transport.on("start",this._syncedCallback),this.context.transport.on("pause",this._syncedCallback),this.context.transport.on("stop",this._syncedCallback),this._constantSource.disconnect(),this._constantSource.stop(0),this._constantSource=this.output=new ToneConstantSource({context:this.context,offset:e.value,units:e.units}).start(0),this.setValueAtTime(e.value,0)}_onTick(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal!==s&&(this._lastVal=s,this._constantSource.offset.setValueAtTime(s,e))}_anchorValue(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal=s,this._constantSource.offset.cancelAndHoldAtTime(e),this._constantSource.offset.setValueAtTime(s,e)}getValueAtTime(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.getValueAtTime(s)}setValueAtTime(e,s){const a=new TransportTimeClass(this.context,s).toSeconds();return super.setValueAtTime(e,a),this}linearRampToValueAtTime(e,s){const a=new TransportTimeClass(this.context,s).toSeconds();return super.linearRampToValueAtTime(e,a),this}exponentialRampToValueAtTime(e,s){const a=new TransportTimeClass(this.context,s).toSeconds();return super.exponentialRampToValueAtTime(e,a),this}setTargetAtTime(e,s,a){const c=new TransportTimeClass(this.context,s).toSeconds();return super.setTargetAtTime(e,c,a),this}cancelScheduledValues(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.cancelScheduledValues(s),this}setValueCurveAtTime(e,s,a,c){const d=new TransportTimeClass(this.context,s).toSeconds();return a=this.toSeconds(a),super.setValueCurveAtTime(e,d,a,c),this}cancelAndHoldAtTime(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.cancelAndHoldAtTime(s),this}setRampPoint(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.setRampPoint(s),this}exponentialRampTo(e,s,a){const c=new TransportTimeClass(this.context,a).toSeconds();return super.exponentialRampTo(e,s,c),this}linearRampTo(e,s,a){const c=new TransportTimeClass(this.context,a).toSeconds();return super.linearRampTo(e,s,c),this}targetRampTo(e,s,a){const c=new TransportTimeClass(this.context,a).toSeconds();return super.targetRampTo(e,s,c),this}dispose(){return super.dispose(),this.context.transport.clear(this._synced),this.context.transport.off("start",this._syncedCallback),this.context.transport.off("pause",this._syncedCallback),this.context.transport.off("stop",this._syncedCallback),this._constantSource.dispose(),this}}class Envelope extends ToneAudioNode{constructor(){super(optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const e=optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve,this.decayCurve=e.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,s){if(isString(e))return e;{let a;for(a in EnvelopeCurves)if(EnvelopeCurves[a][s]===e)return a;return e}}_setCurve(e,s,a){if(isString(a)&&Reflect.has(EnvelopeCurves,a)){const c=EnvelopeCurves[a];isObject(c)?e!=="_decayCurve"&&(this[e]=c[s]):this[e]=c}else if(isArray(a)&&e!=="_decayCurve")this[e]=a;else throw new Error("Envelope: invalid curve: "+a)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(e){this._setCurve("_attackCurve","In",e)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(e){this._setCurve("_releaseCurve","Out",e)}get decayCurve(){return this._decayCurve}set decayCurve(e){assert(["linear","exponential"].some(s=>s===e),`Invalid envelope curve: ${e}`),this._decayCurve=e}triggerAttack(e,s=1){this.log("triggerAttack",e,s),e=this.toSeconds(e);let c=this.toSeconds(this.attack);const d=this.toSeconds(this.decay),_=this.getValueAtTime(e);if(_>0){const b=1/c;c=(1-_)/b}if(c0){const a=this.toSeconds(this.release);a{let e,s;const a=[];for(e=0;e<128;e++)a[e]=Math.sin(e/(128-1)*(Math.PI/2));const c=[],d=6.4;for(e=0;e<128-1;e++){s=e/(128-1);const et=Math.sin(s*(Math.PI*2)*d-Math.PI/2)+1;c[e]=et/10+s*.83}c[128-1]=1;const _=[],b=5;for(e=0;e<128;e++)_[e]=Math.ceil(e/(128-1)*b)/b;const k=[];for(e=0;e<128;e++)s=e/(128-1),k[e]=.5*(1-Math.cos(Math.PI*s));const $=[];for(e=0;e<128;e++){s=e/(128-1);const et=Math.pow(s,3)*4+.2,tt=Math.cos(et*Math.PI*2*s);$[e]=Math.abs(tt*(1-s))}function j(et){const tt=new Array(et.length);for(let nt=0;nt{const d=c[s],_=this.context.transport.schedule(b=>{c[s]=b,a.apply(this,c)},d);this._scheduledEvents.push(_)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease),this}triggerAttackRelease(e,s,a,c){const d=this.toSeconds(a),_=this.toSeconds(s);return this.triggerAttack(e,d,c),this.triggerRelease(d+_),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic extends Instrument{constructor(){super(optionsFromArguments(Monophonic.getDefaults(),arguments));const e=optionsFromArguments(Monophonic.getDefaults(),arguments);this.portamento=e.portamento,this.onsilence=e.onsilence}static getDefaults(){return Object.assign(Instrument.getDefaults(),{detune:0,onsilence:noOp,portamento:0})}triggerAttack(e,s,a=1){this.log("triggerAttack",e,s,a);const c=this.toSeconds(s);return this._triggerEnvelopeAttack(c,a),this.setNote(e,c),this}triggerRelease(e){this.log("triggerRelease",e);const s=this.toSeconds(e);return this._triggerEnvelopeRelease(s),this}setNote(e,s){const a=this.toSeconds(s),c=e instanceof FrequencyClass?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(a)>.05){const d=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(c,d,a)}else this.frequency.setValueAtTime(c,a);return this}}__decorate([timeRange(0)],Monophonic.prototype,"portamento",void 0);class AmplitudeEnvelope extends Envelope{constructor(){super(optionsFromArguments(AmplitudeEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain$1({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth$1 extends Monophonic{constructor(){super(optionsFromArguments(Synth$1.getDefaults(),arguments)),this.name="Synth";const e=optionsFromArguments(Synth$1.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign({context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)},e.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},e.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(e,s){if(this.envelope.triggerAttack(e,s),this.oscillator.start(e),this.envelope.sustain===0){const a=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+a+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class ModulationSynth extends Monophonic{constructor(){super(optionsFromArguments(ModulationSynth.getDefaults(),arguments)),this.name="ModulationSynth";const e=optionsFromArguments(ModulationSynth.getDefaults(),arguments);this._carrier=new Synth$1({context:this.context,oscillator:e.oscillator,envelope:e.envelope,onsilence:()=>this.onsilence(this),volume:-10}),this._modulator=new Synth$1({context:this.context,oscillator:e.modulation,envelope:e.modulationEnvelope,volume:-10}),this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope,this.modulation=this._modulator.oscillator,this.modulationEnvelope=this._modulator.envelope,this.frequency=new Signal({context:this.context,units:"frequency"}),this.detune=new Signal({context:this.context,value:e.detune,units:"cents"}),this.harmonicity=new Multiply({context:this.context,value:e.harmonicity,minValue:0}),this._modulationNode=new Gain$1({context:this.context,gain:0}),readOnly(this,["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{harmonicity:3,oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"sine"}),envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.01,decay:.01,sustain:1,release:.5}),modulation:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"square"}),modulationEnvelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.5,decay:0,sustain:1,release:.5})})}_triggerEnvelopeAttack(e,s){this._carrier._triggerEnvelopeAttack(e,s),this._modulator._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this._carrier._triggerEnvelopeRelease(e),this._modulator._triggerEnvelopeRelease(e),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this._carrier.dispose(),this._modulator.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._modulationNode.dispose(),this}}class AMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments(AMSynth$1.getDefaults(),arguments)),this.name="AMSynth",this._modulationScale=new AudioToGain({context:this.context}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output)}dispose(){return super.dispose(),this._modulationScale.dispose(),this}}class BiquadFilter extends ToneAudioNode{constructor(){super(optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"])),this.name="BiquadFilter";const e=optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"]);this._filter=this.context.createBiquadFilter(),this.input=this.output=this._filter,this.Q=new Param({context:this.context,units:"number",value:e.Q,param:this._filter.Q}),this.frequency=new Param({context:this.context,units:"frequency",value:e.frequency,param:this._filter.frequency}),this.detune=new Param({context:this.context,units:"cents",value:e.detune,param:this._filter.detune}),this.gain=new Param({context:this.context,units:"decibels",convert:!1,value:e.gain,param:this._filter.gain}),this.type=e.type}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{Q:1,type:"lowpass",frequency:350,detune:0,gain:0})}get type(){return this._filter.type}set type(e){assert(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(e)!==-1,`Invalid filter type: ${e}`),this._filter.type=e}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let _=0;_a.type=e)}get rolloff(){return this._rolloff}set rolloff(e){const s=isNumber(e)?e:parseInt(e,10),a=[-12,-24,-48,-96];let c=a.indexOf(s);assert(c!==-1,`rolloff can only be ${a.join(", ")}`),c+=1,this._rolloff=s,this.input.disconnect(),this._filters.forEach(d=>d.disconnect()),this._filters=new Array(c);for(let d=0;d1);return this._filters.forEach(()=>{s.getFrequencyResponse(e).forEach((d,_)=>a[_]*=d)}),s.dispose(),a}dispose(){return super.dispose(),this._filters.forEach(e=>{e.dispose()}),writable(this,["detune","frequency","gain","Q"]),this.frequency.dispose(),this.Q.dispose(),this.detune.dispose(),this.gain.dispose(),this}}class FrequencyEnvelope extends Envelope{constructor(){super(optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="FrequencyEnvelope";const e=optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this._octaves=e.octaves,this._baseFrequency=this.toFrequency(e.baseFrequency),this._exponent=this.input=new Pow({context:this.context,value:e.exponent}),this._scale=this.output=new Scale({context:this.context,min:this._baseFrequency,max:this._baseFrequency*Math.pow(2,this._octaves)}),this._sig.chain(this._exponent,this._scale)}static getDefaults(){return Object.assign(Envelope.getDefaults(),{baseFrequency:200,exponent:1,octaves:4})}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){const s=this.toFrequency(e);assertRange(s,0),this._baseFrequency=s,this._scale.min=this._baseFrequency,this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._scale.max=this._baseFrequency*Math.pow(2,e)}get exponent(){return this._exponent.value}set exponent(e){this._exponent.value=e}dispose(){return super.dispose(),this._exponent.dispose(),this._scale.dispose(),this}}class MonoSynth$1 extends Monophonic{constructor(){super(optionsFromArguments(MonoSynth$1.getDefaults(),arguments)),this.name="MonoSynth";const e=optionsFromArguments(MonoSynth$1.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign(e.oscillator,{context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)})),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.filterEnvelope=new FrequencyEnvelope(Object.assign(e.filterEnvelope,{context:this.context})),this.envelope=new AmplitudeEnvelope(Object.assign(e.envelope,{context:this.context})),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),readOnly(this,["oscillator","frequency","detune","filter","filterEnvelope","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.9}),filter:Object.assign(omitFromObject(Filter$1.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{Q:1,rolloff:-12,type:"lowpass"}),filterEnvelope:Object.assign(omitFromObject(FrequencyEnvelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.6,baseFrequency:200,decay:.2,exponent:2,octaves:3,release:2,sustain:.5}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),Object.keys(Source.getDefaults())),{type:"sawtooth"})})}_triggerEnvelopeAttack(e,s=1){if(this.envelope.triggerAttack(e,s),this.filterEnvelope.triggerAttack(e),this.oscillator.start(e),this.envelope.sustain===0){const a=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+a+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.filterEnvelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this.filterEnvelope.dispose(),this.filter.dispose(),this}}class DuoSynth$1 extends Monophonic{constructor(){super(optionsFromArguments(DuoSynth$1.getDefaults(),arguments)),this.name="DuoSynth";const e=optionsFromArguments(DuoSynth$1.getDefaults(),arguments);this.voice0=new MonoSynth$1(Object.assign(e.voice0,{context:this.context,onsilence:()=>this.onsilence(this)})),this.voice1=new MonoSynth$1(Object.assign(e.voice1,{context:this.context})),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this._vibrato=new LFO({frequency:e.vibratoRate,context:this.context,min:-50,max:50}),this._vibrato.start(),this.vibratoRate=this._vibrato.frequency,this._vibratoGain=new Gain$1({context:this.context,units:"normalRange",gain:e.vibratoAmount}),this.vibratoAmount=this._vibratoGain.gain,this.frequency=new Signal({context:this.context,units:"frequency",value:440}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this.frequency.connect(this.voice0.frequency),this.frequency.chain(this.harmonicity,this.voice1.frequency),this._vibrato.connect(this._vibratoGain),this._vibratoGain.fan(this.voice0.detune,this.voice1.detune),this.detune.fan(this.voice0.detune,this.voice1.detune),this.voice0.connect(this.output),this.voice1.connect(this.output),readOnly(this,["voice0","voice1","frequency","vibratoAmount","vibratoRate"])}getLevelAtTime(e){return e=this.toSeconds(e),this.voice0.envelope.getValueAtTime(e)+this.voice1.envelope.getValueAtTime(e)}static getDefaults(){return deepMerge(Monophonic.getDefaults(),{vibratoAmount:.5,vibratoRate:5,harmonicity:1.5,voice0:deepMerge(omitFromObject(MonoSynth$1.getDefaults(),Object.keys(Monophonic.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}}),voice1:deepMerge(omitFromObject(MonoSynth$1.getDefaults(),Object.keys(Monophonic.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}})})}_triggerEnvelopeAttack(e,s){this.voice0._triggerEnvelopeAttack(e,s),this.voice1._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this.voice0._triggerEnvelopeRelease(e),this.voice1._triggerEnvelopeRelease(e),this}dispose(){return super.dispose(),this.voice0.dispose(),this.voice1.dispose(),this.frequency.dispose(),this.detune.dispose(),this._vibrato.dispose(),this.vibratoRate.dispose(),this._vibratoGain.dispose(),this.harmonicity.dispose(),this}}class FMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments(FMSynth$1.getDefaults(),arguments)),this.name="FMSynth";const e=optionsFromArguments(FMSynth$1.getDefaults(),arguments);this.modulationIndex=new Multiply({context:this.context,value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output)}static getDefaults(){return Object.assign(ModulationSynth.getDefaults(),{modulationIndex:10})}dispose(){return super.dispose(),this.modulationIndex.dispose(),this}}const inharmRatios=[1,1.483,1.932,2.546,2.63,3.897];class MetalSynth$1 extends Monophonic{constructor(){super(optionsFromArguments(MetalSynth$1.getDefaults(),arguments)),this.name="MetalSynth",this._oscillators=[],this._freqMultipliers=[];const e=optionsFromArguments(MetalSynth$1.getDefaults(),arguments);this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this.frequency=new Signal({context:this.context,units:"frequency"}),this._amplitude=new Gain$1({context:this.context,gain:0}).connect(this.output),this._highpass=new Filter$1({Q:0,context:this.context,type:"highpass"}).connect(this._amplitude);for(let s=0;sthis.onsilence(this):noOp,type:"square"});a.connect(this._highpass),this._oscillators[s]=a;const c=new Multiply({context:this.context,value:inharmRatios[s]});this._freqMultipliers[s]=c,this.frequency.chain(c,a.frequency),this.detune.connect(a.detune)}this._filterFreqScaler=new Scale({context:this.context,max:7e3,min:this.toFrequency(e.resonance)}),this.envelope=new Envelope({attack:e.envelope.attack,attackCurve:"linear",context:this.context,decay:e.envelope.decay,release:e.envelope.release,sustain:0}),this.envelope.chain(this._filterFreqScaler,this._highpass.frequency),this.envelope.connect(this._amplitude.gain),this._octaves=e.octaves,this.octaves=e.octaves}static getDefaults(){return deepMerge(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.001,decay:1.4,release:.2}),harmonicity:5.1,modulationIndex:32,octaves:1.5,resonance:4e3})}_triggerEnvelopeAttack(e,s=1){return this.envelope.triggerAttack(e,s),this._oscillators.forEach(a=>a.start(e)),this.envelope.sustain===0&&this._oscillators.forEach(a=>{a.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay))}),this}_triggerEnvelopeRelease(e){return this.envelope.triggerRelease(e),this._oscillators.forEach(s=>s.stop(e+this.toSeconds(this.envelope.release))),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}get modulationIndex(){return this._oscillators[0].modulationIndex.value}set modulationIndex(e){this._oscillators.forEach(s=>s.modulationIndex.value=e)}get harmonicity(){return this._oscillators[0].harmonicity.value}set harmonicity(e){this._oscillators.forEach(s=>s.harmonicity.value=e)}get resonance(){return this._filterFreqScaler.min}set resonance(e){this._filterFreqScaler.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._filterFreqScaler.max=this._filterFreqScaler.min*Math.pow(2,e)}dispose(){return super.dispose(),this._oscillators.forEach(e=>e.dispose()),this._freqMultipliers.forEach(e=>e.dispose()),this.frequency.dispose(),this.detune.dispose(),this._filterFreqScaler.dispose(),this._amplitude.dispose(),this.envelope.dispose(),this._highpass.dispose(),this}}class MembraneSynth$1 extends Synth$1{constructor(){super(optionsFromArguments(MembraneSynth$1.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const e=optionsFromArguments(MembraneSynth$1.getDefaults(),arguments);this.pitchDecay=e.pitchDecay,this.octaves=e.octaves,readOnly(this,["oscillator","envelope"])}static getDefaults(){return deepMerge(Monophonic.getDefaults(),Synth$1.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(e,s){const a=this.toSeconds(s),c=this.toFrequency(e instanceof FrequencyClass?e.toFrequency():e),d=c*this.octaves;return this.oscillator.frequency.setValueAtTime(d,a),this.oscillator.frequency.exponentialRampToValueAtTime(c,a+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate([range(0)],MembraneSynth$1.prototype,"octaves",void 0);__decorate([timeRange(0)],MembraneSynth$1.prototype,"pitchDecay",void 0);class NoiseSynth$1 extends Instrument{constructor(){super(optionsFromArguments(NoiseSynth$1.getDefaults(),arguments)),this.name="NoiseSynth";const e=optionsFromArguments(NoiseSynth$1.getDefaults(),arguments);this.noise=new Noise(Object.assign({context:this.context},e.noise)),this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},e.envelope)),this.noise.chain(this.envelope,this.output)}static getDefaults(){return Object.assign(Instrument.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{decay:.1,sustain:0}),noise:Object.assign(omitFromObject(Noise.getDefaults(),Object.keys(Source.getDefaults())),{type:"white"})})}triggerAttack(e,s=1){return e=this.toSeconds(e),this.envelope.triggerAttack(e,s),this.noise.start(e),this.envelope.sustain===0&&this.noise.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay)),this}triggerRelease(e){return e=this.toSeconds(e),this.envelope.triggerRelease(e),this.noise.stop(e+this.toSeconds(this.envelope.release)),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",0),this._syncMethod("triggerRelease",0)),this}triggerAttackRelease(e,s,a=1){return s=this.toSeconds(s),e=this.toSeconds(e),this.triggerAttack(s,a),this.triggerRelease(s+e),this}dispose(){return super.dispose(),this.noise.dispose(),this.envelope.dispose(),this}}const workletContext=new Set;function addToWorklet(o){workletContext.add(o)}function registerProcessor(o,e){const s=`registerProcessor("${o}", ${e})`;workletContext.add(s)}function getWorkletGlobalScope(){return Array.from(workletContext).join(` +`)}class ToneAudioWorklet extends ToneAudioNode{constructor(e){super(e),this.name="ToneAudioWorklet",this.workletOptions={},this.onprocessorerror=noOp;const s=URL.createObjectURL(new Blob([getWorkletGlobalScope()],{type:"text/javascript"})),a=this._audioWorkletName();this._dummyGain=this.context.createGain(),this._dummyParam=this._dummyGain.gain,this.context.addAudioWorkletModule(s,a).then(()=>{this.disposed||(this._worklet=this.context.createAudioWorkletNode(a,this.workletOptions),this._worklet.onprocessorerror=this.onprocessorerror.bind(this),this.onReady(this._worklet))})}dispose(){return super.dispose(),this._dummyGain.disconnect(),this._worklet&&(this._worklet.port.postMessage("dispose"),this._worklet.disconnect()),this}}const toneAudioWorkletProcessor=` + /** + * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. + */ + class ToneAudioWorkletProcessor extends AudioWorkletProcessor { + + constructor(options) { + + super(options); + /** + * If the processor was disposed or not. Keep alive until it's disposed. + */ + this.disposed = false; + /** + * The number of samples in the processing block + */ + this.blockSize = 128; + /** + * the sample rate + */ + this.sampleRate = sampleRate; + + this.port.onmessage = (event) => { + // when it receives a dispose + if (event.data === "dispose") { + this.disposed = true; + } + }; + } + } +`;addToWorklet(toneAudioWorkletProcessor);const singleIOProcess=` + /** + * Abstract class for a single input/output processor. + * has a 'generate' function which processes one sample at a time + */ + class SingleIOProcessor extends ToneAudioWorkletProcessor { + + constructor(options) { + super(Object.assign(options, { + numberOfInputs: 1, + numberOfOutputs: 1 + })); + /** + * Holds the name of the parameter and a single value of that + * parameter at the current sample + * @type { [name: string]: number } + */ + this.params = {} + } + + /** + * Generate an output sample from the input sample and parameters + * @abstract + * @param input number + * @param channel number + * @param parameters { [name: string]: number } + * @returns number + */ + generate(){} + + /** + * Update the private params object with the + * values of the parameters at the given index + * @param parameters { [name: string]: Float32Array }, + * @param index number + */ + updateParams(parameters, index) { + for (const paramName in parameters) { + const param = parameters[paramName]; + if (param.length > 1) { + this.params[paramName] = parameters[paramName][index]; + } else { + this.params[paramName] = parameters[paramName][0]; + } + } + } + + /** + * Process a single frame of the audio + * @param inputs Float32Array[][] + * @param outputs Float32Array[][] + */ + process(inputs, outputs, parameters) { + const input = inputs[0]; + const output = outputs[0]; + // get the parameter values + const channelCount = Math.max(input && input.length || 0, output.length); + for (let sample = 0; sample < this.blockSize; sample++) { + this.updateParams(parameters, sample); + for (let channel = 0; channel < channelCount; channel++) { + const inputSample = input && input.length ? input[channel][sample] : 0; + output[channel][sample] = this.generate(inputSample, channel, this.params); + } + } + return !this.disposed; + } + }; +`;addToWorklet(singleIOProcess);const delayLine=` + /** + * A multichannel buffer for use within an AudioWorkletProcessor as a delay line + */ + class DelayLine { + + constructor(size, channels) { + this.buffer = []; + this.writeHead = [] + this.size = size; + + // create the empty channels + for (let i = 0; i < channels; i++) { + this.buffer[i] = new Float32Array(this.size); + this.writeHead[i] = 0; + } + } + + /** + * Push a value onto the end + * @param channel number + * @param value number + */ + push(channel, value) { + this.writeHead[channel] += 1; + if (this.writeHead[channel] > this.size) { + this.writeHead[channel] = 0; + } + this.buffer[channel][this.writeHead[channel]] = value; + } + + /** + * Get the recorded value of the channel given the delay + * @param channel number + * @param delay number delay samples + */ + get(channel, delay) { + let readHead = this.writeHead[channel] - Math.floor(delay); + if (readHead < 0) { + readHead += this.size; + } + return this.buffer[channel][readHead]; + } + } +`;addToWorklet(delayLine);const workletName$1="feedback-comb-filter",feedbackCombFilter=` + class FeedbackCombFilterWorklet extends SingleIOProcessor { + + constructor(options) { + super(options); + this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2); + } + + static get parameterDescriptors() { + return [{ + name: "delayTime", + defaultValue: 0.1, + minValue: 0, + maxValue: 1, + automationRate: "k-rate" + }, { + name: "feedback", + defaultValue: 0.5, + minValue: 0, + maxValue: 0.9999, + automationRate: "k-rate" + }]; + } + + generate(input, channel, parameters) { + const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate); + this.delayLine.push(channel, input + delayedSample * parameters.feedback); + return delayedSample; + } + } +`;registerProcessor(workletName$1,feedbackCombFilter);class FeedbackCombFilter extends ToneAudioWorklet{constructor(){super(optionsFromArguments(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"])),this.name="FeedbackCombFilter";const e=optionsFromArguments(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"]);this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this.delayTime=new Param({context:this.context,value:e.delayTime,units:"time",minValue:0,maxValue:1,param:this._dummyParam,swappable:!0}),this.resonance=new Param({context:this.context,value:e.resonance,units:"normalRange",param:this._dummyParam,swappable:!0}),readOnly(this,["resonance","delayTime"])}_audioWorkletName(){return workletName$1}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{delayTime:.1,resonance:.5})}onReady(e){connectSeries(this.input,e,this.output);const s=e.parameters.get("delayTime");this.delayTime.setParam(s);const a=e.parameters.get("feedback");this.resonance.setParam(a)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.delayTime.dispose(),this.resonance.dispose(),this}}class OnePoleFilter extends ToneAudioNode{constructor(){super(optionsFromArguments(OnePoleFilter.getDefaults(),arguments,["frequency","type"])),this.name="OnePoleFilter";const e=optionsFromArguments(OnePoleFilter.getDefaults(),arguments,["frequency","type"]);this._frequency=e.frequency,this._type=e.type,this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this._createFilter()}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{frequency:880,type:"lowpass"})}_createFilter(){const e=this._filter,s=this.toFrequency(this._frequency),a=1/(2*Math.PI*s);if(this._type==="lowpass"){const c=1/(a*this.context.sampleRate),d=c-1;this._filter=this.context.createIIRFilter([c,0],[1,d])}else{const c=1/(a*this.context.sampleRate)-1;this._filter=this.context.createIIRFilter([1,-1],[1,c])}this.input.chain(this._filter,this.output),e&&this.context.setTimeout(()=>{this.disposed||(this.input.disconnect(e),e.disconnect())},this.blockTime)}get frequency(){return this._frequency}set frequency(e){this._frequency=e,this._createFilter()}get type(){return this._type}set type(e){this._type=e,this._createFilter()}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let d=0;da.voice===e);this._activeVoices.splice(s,1)}_getNextAvailableVoice(){if(this._availableVoices.length)return this._availableVoices.shift();if(this._voices.lengthMath.ceil(this._averageActiveVoices+1)){const e=this._availableVoices.shift(),s=this._voices.indexOf(e);this._voices.splice(s,1),this.context.isOffline||e.dispose()}}_triggerAttack(e,s,a){e.forEach(c=>{const d=new MidiClass(this.context,c).toMidi(),_=this._getNextAvailableVoice();_&&(_.triggerAttack(c,s,a),this._activeVoices.push({midi:d,voice:_,released:!1}),this.log("triggerAttack",c,s))})}_triggerRelease(e,s){e.forEach(a=>{const c=new MidiClass(this.context,a).toMidi(),d=this._activeVoices.find(({midi:_,released:b})=>_===c&&!b);d&&(d.voice.triggerRelease(s),d.released=!0,this.log("triggerRelease",a,s))})}_scheduleEvent(e,s,a,c){assert(!this.disposed,"Synth was already disposed"),a<=this.now()?e==="attack"?this._triggerAttack(s,a,c):this._triggerRelease(s,a):this.context.setTimeout(()=>{this._scheduleEvent(e,s,a,c)},a-this.now())}triggerAttack(e,s,a){Array.isArray(e)||(e=[e]);const c=this.toSeconds(s);return this._scheduleEvent("attack",e,c,a),this}triggerRelease(e,s){Array.isArray(e)||(e=[e]);const a=this.toSeconds(s);return this._scheduleEvent("release",e,a),this}triggerAttackRelease(e,s,a,c){const d=this.toSeconds(a);if(this.triggerAttack(e,d,c),isArray(s)){assert(isArray(e),"If the duration is an array, the notes must also be an array"),e=e;for(let _=0;_0,"The duration must be greater than 0"),this.triggerRelease(e[_],d+k)}}else{const _=this.toSeconds(s);assert(_>0,"The duration must be greater than 0"),this.triggerRelease(e,d+_)}return this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}set(e){const s=omitFromObject(e,["onsilence","context"]);return this.options=deepMerge(this.options,s),this._voices.forEach(a=>a.set(s)),this._dummyVoice.set(s),this}get(){return this._dummyVoice.get()}releaseAll(e){const s=this.toSeconds(e);return this._activeVoices.forEach(({voice:a})=>{a.triggerRelease(s)}),this}dispose(){return super.dispose(),this._dummyVoice.dispose(),this._voices.forEach(e=>e.dispose()),this._activeVoices=[],this._availableVoices=[],this.context.clearInterval(this._gcTimeout),this}}class Sampler$1 extends Instrument{constructor(){super(optionsFromArguments(Sampler$1.getDefaults(),arguments,["urls","onload","baseUrl"],"urls")),this.name="Sampler",this._activeSources=new Map;const e=optionsFromArguments(Sampler$1.getDefaults(),arguments,["urls","onload","baseUrl"],"urls"),s={};Object.keys(e.urls).forEach(a=>{const c=parseInt(a,10);if(assert(isNote$1(a)||isNumber(c)&&isFinite(c),`url key is neither a note or midi pitch: ${a}`),isNote$1(a)){const d=new FrequencyClass(this.context,a).toMidi();s[d]=e.urls[a]}else isNumber(c)&&isFinite(c)&&(s[c]=e.urls[c])}),this._buffers=new ToneAudioBuffers({urls:s,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.attack=e.attack,this.release=e.release,this.curve=e.curve,this._buffers.loaded&&Promise.resolve().then(e.onload)}static getDefaults(){return Object.assign(Instrument.getDefaults(),{attack:0,baseUrl:"",curve:"exponential",onload:noOp,onerror:noOp,release:.1,urls:{}})}_findClosest(e){let a=0;for(;a<96;){if(this._buffers.has(e+a))return-a;if(this._buffers.has(e-a))return a;a++}throw new Error(`No available buffers for note: ${e}`)}triggerAttack(e,s,a=1){return this.log("triggerAttack",e,s,a),Array.isArray(e)||(e=[e]),e.forEach(c=>{const d=ftomf(new FrequencyClass(this.context,c).toFrequency()),_=Math.round(d),b=d-_,k=this._findClosest(_),$=_-k,j=this._buffers.get($),_e=intervalToFrequencyRatio(k+b),et=new ToneBufferSource({url:j,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:_e}).connect(this.output);et.start(s,0,j.duration/_e,a),isArray(this._activeSources.get(_))||this._activeSources.set(_,[]),this._activeSources.get(_).push(et),et.onended=()=>{if(this._activeSources&&this._activeSources.has(_)){const tt=this._activeSources.get(_),nt=tt.indexOf(et);nt!==-1&&tt.splice(nt,1)}}}),this}triggerRelease(e,s){return this.log("triggerRelease",e,s),Array.isArray(e)||(e=[e]),e.forEach(a=>{const c=new FrequencyClass(this.context,a).toMidi();if(this._activeSources.has(c)&&this._activeSources.get(c).length){const d=this._activeSources.get(c);s=this.toSeconds(s),d.forEach(_=>{_.stop(s)}),this._activeSources.set(c,[])}}),this}releaseAll(e){const s=this.toSeconds(e);return this._activeSources.forEach(a=>{for(;a.length;)a.shift().stop(s)}),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}triggerAttackRelease(e,s,a,c=1){const d=this.toSeconds(a);return this.triggerAttack(e,d,c),isArray(s)?(assert(isArray(e),"notes must be an array when duration is array"),e.forEach((_,b)=>{const k=s[Math.min(b,s.length-1)];this.triggerRelease(_,d+this.toSeconds(k))})):this.triggerRelease(e,d+this.toSeconds(s)),this}add(e,s,a){if(assert(isNote$1(e)||isFinite(e),`note must be a pitch or midi: ${e}`),isNote$1(e)){const c=new FrequencyClass(this.context,e).toMidi();this._buffers.add(c,s,a)}else this._buffers.add(e,s,a);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(s=>s.dispose())}),this._activeSources.clear(),this}}__decorate([timeRange(0)],Sampler$1.prototype,"attack",void 0);__decorate([timeRange(0)],Sampler$1.prototype,"release",void 0);class ToneEvent extends ToneWithContext{constructor(){super(optionsFromArguments(ToneEvent.getDefaults(),arguments,["callback","value"])),this.name="ToneEvent",this._state=new StateTimeline("stopped"),this._startOffset=0;const e=optionsFromArguments(ToneEvent.getDefaults(),arguments,["callback","value"]);this._loop=e.loop,this.callback=e.callback,this.value=e.value,this._loopStart=this.toTicks(e.loopStart),this._loopEnd=this.toTicks(e.loopEnd),this._playbackRate=e.playbackRate,this._probability=e.probability,this._humanize=e.humanize,this.mute=e.mute,this._playbackRate=e.playbackRate,this._state.increasing=!0,this._rescheduleEvents()}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{callback:noOp,humanize:!1,loop:!1,loopEnd:"1m",loopStart:0,mute:!1,playbackRate:1,probability:1,value:null})}_rescheduleEvents(e=-1){this._state.forEachFrom(e,s=>{let a;if(s.state==="started"){s.id!==-1&&this.context.transport.clear(s.id);const c=s.time+Math.round(this.startOffset/this._playbackRate);if(this._loop===!0||isNumber(this._loop)&&this._loop>1){a=1/0,isNumber(this._loop)&&(a=this._loop*this._getLoopDuration());const d=this._state.getAfter(c);d!==null&&(a=Math.min(a,d.time-c)),a!==1/0&&(this._state.setStateAtTime("stopped",c+a+1,{id:-1}),a=new TicksClass(this.context,a));const _=new TicksClass(this.context,this._getLoopDuration());s.id=this.context.transport.scheduleRepeat(this._tick.bind(this),_,new TicksClass(this.context,c),a)}else s.id=this.context.transport.schedule(this._tick.bind(this),new TicksClass(this.context,c))}})}get state(){return this._state.getValueAtTime(this.context.transport.ticks)}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e}get probability(){return this._probability}set probability(e){this._probability=e}get humanize(){return this._humanize}set humanize(e){this._humanize=e}start(e){const s=this.toTicks(e);return this._state.getValueAtTime(s)==="stopped"&&(this._state.add({id:-1,state:"started",time:s}),this._rescheduleEvents(s)),this}stop(e){this.cancel(e);const s=this.toTicks(e);if(this._state.getValueAtTime(s)==="started"){this._state.setStateAtTime("stopped",s,{id:-1});const a=this._state.getBefore(s);let c=s;a!==null&&(c=a.time),this._rescheduleEvents(c)}return this}cancel(e){e=defaultArg(e,-1/0);const s=this.toTicks(e);return this._state.forEachFrom(s,a=>{this.context.transport.clear(a.id)}),this._state.cancel(s),this}_tick(e){const s=this.context.transport.getTicksAtTime(e);if(!this.mute&&this._state.getValueAtTime(s)==="started"){if(this.probability<1&&Math.random()>this.probability)return;if(this.humanize){let a=.02;isBoolean(this.humanize)||(a=this.toSeconds(this.humanize)),e+=(Math.random()*2-1)*a}this.callback(e,this.value)}}_getLoopDuration(){return Math.round((this._loopEnd-this._loopStart)/this._playbackRate)}get loop(){return this._loop}set loop(e){this._loop=e,this._rescheduleEvents()}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._rescheduleEvents()}get loopEnd(){return new TicksClass(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._rescheduleEvents()}get loopStart(){return new TicksClass(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._rescheduleEvents()}get progress(){if(this._loop){const e=this.context.transport.ticks,s=this._state.get(e);if(s!==null&&s.state==="started"){const a=this._getLoopDuration();return(e-s.time)%a/a}else return 0}else return 0}dispose(){return super.dispose(),this.cancel(),this._state.dispose(),this}}class Loop extends ToneWithContext{constructor(){super(optionsFromArguments(Loop.getDefaults(),arguments,["callback","interval"])),this.name="Loop";const e=optionsFromArguments(Loop.getDefaults(),arguments,["callback","interval"]);this._event=new ToneEvent({context:this.context,callback:this._tick.bind(this),loop:!0,loopEnd:e.interval,playbackRate:e.playbackRate,probability:e.probability}),this.callback=e.callback,this.iterations=e.iterations}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{interval:"4n",callback:noOp,playbackRate:1,iterations:1/0,probability:1,mute:!1,humanize:!1})}start(e){return this._event.start(e),this}stop(e){return this._event.stop(e),this}cancel(e){return this._event.cancel(e),this}_tick(e){this.callback(e)}get state(){return this._event.state}get progress(){return this._event.progress}get interval(){return this._event.loopEnd}set interval(e){this._event.loopEnd=e}get playbackRate(){return this._event.playbackRate}set playbackRate(e){this._event.playbackRate=e}get humanize(){return this._event.humanize}set humanize(e){this._event.humanize=e}get probability(){return this._event.probability}set probability(e){this._event.probability=e}get mute(){return this._event.mute}set mute(e){this._event.mute=e}get iterations(){return this._event.loop===!0?1/0:this._event.loop}set iterations(e){e===1/0?this._event.loop=!0:this._event.loop=e}dispose(){return super.dispose(),this._event.dispose(),this}}class Part extends ToneEvent{constructor(){super(optionsFromArguments(Part.getDefaults(),arguments,["callback","events"])),this.name="Part",this._state=new StateTimeline("stopped"),this._events=new Set;const e=optionsFromArguments(Part.getDefaults(),arguments,["callback","events"]);this._state.increasing=!0,e.events.forEach(s=>{isArray(s)?this.add(s[0],s[1]):this.add(s)})}static getDefaults(){return Object.assign(ToneEvent.getDefaults(),{events:[]})}start(e,s){const a=this.toTicks(e);if(this._state.getValueAtTime(a)!=="started"){s=defaultArg(s,this._loop?this._loopStart:0),this._loop?s=defaultArg(s,this._loopStart):s=defaultArg(s,0);const c=this.toTicks(s);this._state.add({id:-1,offset:c,state:"started",time:a}),this._forEach(d=>{this._startNote(d,a,c)})}return this}_startNote(e,s,a){s-=a,this._loop?e.startOffset>=this._loopStart&&e.startOffset=a&&(e.loop=!1,e.start(new TicksClass(this.context,s))):e.startOffset>=a&&e.start(new TicksClass(this.context,s))}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e,this._forEach(s=>{s.startOffset+=this._startOffset})}stop(e){const s=this.toTicks(e);return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this._forEach(a=>{a.stop(e)}),this}at(e,s){const a=new TransportTimeClass(this.context,e).toTicks(),c=new TicksClass(this.context,1).toSeconds(),d=this._events.values();let _=d.next();for(;!_.done;){const b=_.value;if(Math.abs(a-b.startOffset){s.state==="started"?this._startNote(e,s.time,s.offset):e.stop(new TicksClass(this.context,s.time))})}remove(e,s){return isObject(e)&&e.hasOwnProperty("time")&&(s=e,e=s.time),e=this.toTicks(e),this._events.forEach(a=>{a.startOffset===e&&(isUndef(s)||isDefined(s)&&a.value===s)&&(this._events.delete(a),a.dispose())}),this}clear(){return this._forEach(e=>e.dispose()),this._events.clear(),this}cancel(e){return this._forEach(s=>s.cancel(e)),this._state.cancel(this.toTicks(e)),this}_forEach(e){return this._events&&this._events.forEach(s=>{s instanceof Part?s._forEach(e):e(s)}),this}_setAll(e,s){this._forEach(a=>{a[e]=s})}_tick(e,s){this.mute||this.callback(e,s)}_testLoopBoundries(e){this._loop&&(e.startOffset=this._loopEnd)?e.cancel(0):e.state==="stopped"&&this._restartEvent(e)}get probability(){return this._probability}set probability(e){this._probability=e,this._setAll("probability",e)}get humanize(){return this._humanize}set humanize(e){this._humanize=e,this._setAll("humanize",e)}get loop(){return this._loop}set loop(e){this._loop=e,this._forEach(s=>{s.loopStart=this.loopStart,s.loopEnd=this.loopEnd,s.loop=e,this._testLoopBoundries(s)})}get loopEnd(){return new TicksClass(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopEnd=e,this._testLoopBoundries(s)})}get loopStart(){return new TicksClass(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopStart=this.loopStart,this._testLoopBoundries(s)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._setAll("playbackRate",e)}get length(){return this._events.size}dispose(){return super.dispose(),this.clear(),this}}function*upPatternGen(o){let e=0;for(;e=0;)e=clampToArraySize(e,o),yield o[e],e--}function*infiniteGen(o,e){for(;;)yield*e(o)}function clampToArraySize(o,e){return clamp(o,0,e.length-1)}function*alternatingGenerator(o,e){let s=e?0:o.length-1;for(;;)s=clampToArraySize(s,o),yield o[s],e?(s++,s>=o.length-1&&(e=!1)):(s--,s<=0&&(e=!0))}function*jumpUp(o){let e=0,s=0;for(;e=0;)e=clampToArraySize(e,o),yield o[e],s++,e+=s%2?-2:1}function*randomGen(o){for(;;){const e=Math.floor(Math.random()*o.length);yield o[e]}}function*randomOnce(o){const e=[];for(let s=0;s0;){const s=e.splice(Math.floor(e.length*Math.random()),1),a=clampToArraySize(s[0],o);yield o[a]}}function*randomWalk(o){let e=Math.floor(Math.random()*o.length);for(;;)e===0?e++:e===o.length-1||Math.random()<.5?e--:e++,yield o[e]}function*PatternGenerator(o,e="up",s=0){switch(assert(o.length>0,"The array must have more than one value in it"),e){case"up":yield*infiniteGen(o,upPatternGen);case"down":yield*infiniteGen(o,downPatternGen);case"upDown":yield*alternatingGenerator(o,!0);case"downUp":yield*alternatingGenerator(o,!1);case"alternateUp":yield*infiniteGen(o,jumpUp);case"alternateDown":yield*infiniteGen(o,jumpDown);case"random":yield*randomGen(o);case"randomOnce":yield*infiniteGen(o,randomOnce);case"randomWalk":yield*randomWalk(o)}}class Pattern$1 extends Loop{constructor(){super(optionsFromArguments(Pattern$1.getDefaults(),arguments,["callback","values","pattern"])),this.name="Pattern";const e=optionsFromArguments(Pattern$1.getDefaults(),arguments,["callback","values","pattern"]);this.callback=e.callback,this._values=e.values,this._pattern=PatternGenerator(e.values,e.pattern),this._type=e.pattern}static getDefaults(){return Object.assign(Loop.getDefaults(),{pattern:"up",values:[],callback:noOp})}_tick(e){const s=this._pattern.next();this._value=s.value,this.callback(e,this._value)}get values(){return this._values}set values(e){this._values=e,this.pattern=this._type}get value(){return this._value}get pattern(){return this._type}set pattern(e){this._type=e,this._pattern=PatternGenerator(this._values,this._type)}}class Sequence extends ToneEvent{constructor(){super(optionsFromArguments(Sequence.getDefaults(),arguments,["callback","events","subdivision"])),this.name="Sequence",this._part=new Part({callback:this._seqCallback.bind(this),context:this.context}),this._events=[],this._eventsArray=[];const e=optionsFromArguments(Sequence.getDefaults(),arguments,["callback","events","subdivision"]);this._subdivision=this.toTicks(e.subdivision),this.events=e.events,this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.playbackRate=e.playbackRate,this.probability=e.probability,this.humanize=e.humanize,this.mute=e.mute,this.playbackRate=e.playbackRate}static getDefaults(){return Object.assign(omitFromObject(ToneEvent.getDefaults(),["value"]),{events:[],loop:!0,loopEnd:0,loopStart:0,subdivision:"8n"})}_seqCallback(e,s){s!==null&&this.callback(e,s)}get events(){return this._events}set events(e){this.clear(),this._eventsArray=e,this._events=this._createSequence(this._eventsArray),this._eventsUpdated()}start(e,s){return this._part.start(e,s&&this._indexTime(s)),this}stop(e){return this._part.stop(e),this}get subdivision(){return new TicksClass(this.context,this._subdivision).toSeconds()}_createSequence(e){return new Proxy(e,{get:(s,a)=>s[a],set:(s,a,c)=>(isString(a)&&isFinite(parseInt(a,10))&&isArray(c)?s[a]=this._createSequence(c):s[a]=c,this._eventsUpdated(),!0)})}_eventsUpdated(){this._part.clear(),this._rescheduleSequence(this._eventsArray,this._subdivision,this.startOffset),this.loopEnd=this.loopEnd}_rescheduleSequence(e,s,a){e.forEach((c,d)=>{const _=d*s+a;if(isArray(c))this._rescheduleSequence(c,s/c.length,_);else{const b=new TicksClass(this.context,_,"i").toSeconds();this._part.add(b,c)}})}_indexTime(e){return new TicksClass(this.context,e*this._subdivision+this.startOffset).toSeconds()}clear(){return this._part.clear(),this}dispose(){return super.dispose(),this._part.dispose(),this}get loop(){return this._part.loop}set loop(e){this._part.loop=e}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this._part.loopStart=this._indexTime(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,e===0?this._part.loopEnd=this._indexTime(this._eventsArray.length):this._part.loopEnd=this._indexTime(e)}get startOffset(){return this._part.startOffset}set startOffset(e){this._part.startOffset=e}get playbackRate(){return this._part.playbackRate}set playbackRate(e){this._part.playbackRate=e}get probability(){return this._part.probability}set probability(e){this._part.probability=e}get progress(){return this._part.progress}get humanize(){return this._part.humanize}set humanize(e){this._part.humanize=e}get length(){return this._part.length}}class CrossFade extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(CrossFade.getDefaults(),arguments,["fade"]))),this.name="CrossFade",this._panner=this.context.createStereoPanner(),this._split=this.context.createChannelSplitter(2),this._g2a=new GainToAudio({context:this.context}),this.a=new Gain$1({context:this.context,gain:0}),this.b=new Gain$1({context:this.context,gain:0}),this.output=new Gain$1({context:this.context}),this._internalChannels=[this.a,this.b];const e=optionsFromArguments(CrossFade.getDefaults(),arguments,["fade"]);this.fade=new Signal({context:this.context,units:"normalRange",value:e.fade}),readOnly(this,"fade"),this.context.getConstant(1).connect(this._panner),this._panner.connect(this._split),this._panner.channelCount=1,this._panner.channelCountMode="explicit",connect(this._split,this.a.gain,0),connect(this._split,this.b.gain,1),this.fade.chain(this._g2a,this._panner.pan),this.a.connect(this.output),this.b.connect(this.output)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{fade:.5})}dispose(){return super.dispose(),this.a.dispose(),this.b.dispose(),this.output.dispose(),this.fade.dispose(),this._g2a.dispose(),this._panner.disconnect(),this._split.disconnect(),this}}class Effect extends ToneAudioNode{constructor(e){super(e),this.name="Effect",this._dryWet=new CrossFade({context:this.context}),this.wet=this._dryWet.fade,this.effectSend=new Gain$1({context:this.context}),this.effectReturn=new Gain$1({context:this.context}),this.input=new Gain$1({context:this.context}),this.output=this._dryWet,this.input.fan(this._dryWet.a,this.effectSend),this.effectReturn.connect(this._dryWet.b),this.wet.setValueAtTime(e.wet,0),this._internalChannels=[this.effectReturn,this.effectSend],readOnly(this,"wet")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{wet:1})}connectEffect(e){return this._internalChannels.push(e),this.effectSend.chain(e,this.effectReturn),this}dispose(){return super.dispose(),this._dryWet.dispose(),this.effectSend.dispose(),this.effectReturn.dispose(),this.wet.dispose(),this}}class LFOEffect extends Effect{constructor(e){super(e),this.name="LFOEffect",this._lfo=new LFO({context:this.context,frequency:e.frequency,amplitude:e.depth}),this.depth=this._lfo.amplitude,this.frequency=this._lfo.frequency,this.type=e.type,readOnly(this,["frequency","depth"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:1,type:"sine",depth:1})}start(e){return this._lfo.start(e),this}stop(e){return this._lfo.stop(e),this}sync(){return this._lfo.sync(),this}unsync(){return this._lfo.unsync(),this}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class AutoFilter$1 extends LFOEffect{constructor(){super(optionsFromArguments(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"])),this.name="AutoFilter";const e=optionsFromArguments(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"]);this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.connectEffect(this.filter),this._lfo.connect(this.filter.frequency),this.octaves=e.octaves,this.baseFrequency=e.baseFrequency}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{baseFrequency:200,octaves:2.6,filter:{type:"lowpass",rolloff:-12,Q:1}})}get baseFrequency(){return this._lfo.min}set baseFrequency(e){this._lfo.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._lfo.max=this._lfo.min*Math.pow(2,e)}dispose(){return super.dispose(),this.filter.dispose(),this}}class Panner extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Panner.getDefaults(),arguments,["pan"]))),this.name="Panner",this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner;const e=optionsFromArguments(Panner.getDefaults(),arguments,["pan"]);this.pan=new Param({context:this.context,param:this._panner.pan,value:e.pan,minValue:-1,maxValue:1}),this._panner.channelCount=e.channelCount,this._panner.channelCountMode="explicit",readOnly(this,"pan")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}}class AutoPanner extends LFOEffect{constructor(){super(optionsFromArguments(AutoPanner.getDefaults(),arguments,["frequency"])),this.name="AutoPanner";const e=optionsFromArguments(AutoPanner.getDefaults(),arguments,["frequency"]);this._panner=new Panner({context:this.context,channelCount:e.channelCount}),this.connectEffect(this._panner),this._lfo.connect(this._panner.pan),this._lfo.min=-1,this._lfo.max=1}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{channelCount:1})}dispose(){return super.dispose(),this._panner.dispose(),this}}class Follower extends ToneAudioNode{constructor(){super(optionsFromArguments(Follower.getDefaults(),arguments,["smoothing"])),this.name="Follower";const e=optionsFromArguments(Follower.getDefaults(),arguments,["smoothing"]);this._abs=this.input=new Abs({context:this.context}),this._lowpass=this.output=new OnePoleFilter({context:this.context,frequency:1/this.toSeconds(e.smoothing),type:"lowpass"}),this._abs.connect(this._lowpass),this._smoothing=e.smoothing}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{smoothing:.05})}get smoothing(){return this._smoothing}set smoothing(e){this._smoothing=e,this._lowpass.frequency=1/this.toSeconds(this.smoothing)}dispose(){return super.dispose(),this._abs.dispose(),this._lowpass.dispose(),this}}class AutoWah extends Effect{constructor(){super(optionsFromArguments(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"])),this.name="AutoWah";const e=optionsFromArguments(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"]);this._follower=new Follower({context:this.context,smoothing:e.follower}),this._sweepRange=new ScaleExp({context:this.context,min:0,max:1,exponent:.5}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this._inputBoost=new Gain$1({context:this.context}),this._bandpass=new Filter$1({context:this.context,rolloff:-48,frequency:0,Q:e.Q}),this._peaking=new Filter$1({context:this.context,type:"peaking"}),this._peaking.gain.value=e.gain,this.gain=this._peaking.gain,this.Q=this._bandpass.Q,this.effectSend.chain(this._inputBoost,this._follower,this._sweepRange),this._sweepRange.connect(this._bandpass.frequency),this._sweepRange.connect(this._peaking.frequency),this.effectSend.chain(this._bandpass,this._peaking,this.effectReturn),this._setSweepRange(),this.sensitivity=e.sensitivity,readOnly(this,["gain","Q"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{baseFrequency:100,octaves:6,sensitivity:0,Q:2,gain:2,follower:.2})}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._setSweepRange()}get follower(){return this._follower.smoothing}set follower(e){this._follower.smoothing=e}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){this._baseFrequency=this.toFrequency(e),this._setSweepRange()}get sensitivity(){return gainToDb(1/this._inputBoost.gain.value)}set sensitivity(e){this._inputBoost.gain.value=1/dbToGain(e)}_setSweepRange(){this._sweepRange.min=this._baseFrequency,this._sweepRange.max=Math.min(this._baseFrequency*Math.pow(2,this._octaves),this.context.sampleRate/2)}dispose(){return super.dispose(),this._follower.dispose(),this._sweepRange.dispose(),this._bandpass.dispose(),this._peaking.dispose(),this._inputBoost.dispose(),this}}const workletName="bit-crusher",bitCrusherWorklet=` + class BitCrusherWorklet extends SingleIOProcessor { + + static get parameterDescriptors() { + return [{ + name: "bits", + defaultValue: 12, + minValue: 1, + maxValue: 16, + automationRate: 'k-rate' + }]; + } + + generate(input, _channel, parameters) { + const step = Math.pow(0.5, parameters.bits - 1); + const val = step * Math.floor(input / step + 0.5); + return val; + } + } +`;registerProcessor(workletName,bitCrusherWorklet);class BitCrusher extends Effect{constructor(){super(optionsFromArguments(BitCrusher.getDefaults(),arguments,["bits"])),this.name="BitCrusher";const e=optionsFromArguments(BitCrusher.getDefaults(),arguments,["bits"]);this._bitCrusherWorklet=new BitCrusherWorklet({context:this.context,bits:e.bits}),this.connectEffect(this._bitCrusherWorklet),this.bits=this._bitCrusherWorklet.bits}static getDefaults(){return Object.assign(Effect.getDefaults(),{bits:4})}dispose(){return super.dispose(),this._bitCrusherWorklet.dispose(),this}}class BitCrusherWorklet extends ToneAudioWorklet{constructor(){super(optionsFromArguments(BitCrusherWorklet.getDefaults(),arguments)),this.name="BitCrusherWorklet";const e=optionsFromArguments(BitCrusherWorklet.getDefaults(),arguments);this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this.bits=new Param({context:this.context,value:e.bits,units:"positive",minValue:1,maxValue:16,param:this._dummyParam,swappable:!0})}static getDefaults(){return Object.assign(ToneAudioWorklet.getDefaults(),{bits:12})}_audioWorkletName(){return workletName}onReady(e){connectSeries(this.input,e,this.output);const s=e.parameters.get("bits");this.bits.setParam(s)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.bits.dispose(),this}}class Chebyshev extends Effect{constructor(){super(optionsFromArguments(Chebyshev.getDefaults(),arguments,["order"])),this.name="Chebyshev";const e=optionsFromArguments(Chebyshev.getDefaults(),arguments,["order"]);this._shaper=new WaveShaper({context:this.context,length:4096}),this._order=e.order,this.connectEffect(this._shaper),this.order=e.order,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{order:1,oversample:"none"})}_getCoefficient(e,s,a){return a.has(s)||(s===0?a.set(s,0):s===1?a.set(s,e):a.set(s,2*e*this._getCoefficient(e,s-1,a)-this._getCoefficient(e,s-2,a))),a.get(s)}get order(){return this._order}set order(e){this._order=e,this._shaper.setMap(s=>this._getCoefficient(s,e,new Map))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class Split extends ToneAudioNode{constructor(){super(optionsFromArguments(Split.getDefaults(),arguments,["channels"])),this.name="Split";const e=optionsFromArguments(Split.getDefaults(),arguments,["channels"]);this._splitter=this.input=this.output=this.context.createChannelSplitter(e.channels),this._internalChannels=[this._splitter]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._splitter.disconnect(),this}}class Merge extends ToneAudioNode{constructor(){super(optionsFromArguments(Merge.getDefaults(),arguments,["channels"])),this.name="Merge";const e=optionsFromArguments(Merge.getDefaults(),arguments,["channels"]);this._merger=this.output=this.input=this.context.createChannelMerger(e.channels)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._merger.disconnect(),this}}class StereoEffect extends ToneAudioNode{constructor(e){super(e),this.name="StereoEffect",this.input=new Gain$1({context:this.context}),this.input.channelCount=2,this.input.channelCountMode="explicit",this._dryWet=this.output=new CrossFade({context:this.context,fade:e.wet}),this.wet=this._dryWet.fade,this._split=new Split({context:this.context,channels:2}),this._merge=new Merge({context:this.context,channels:2}),this.input.connect(this._split),this.input.connect(this._dryWet.a),this._merge.connect(this._dryWet.b),readOnly(this,["wet"])}connectEffectLeft(...e){this._split.connect(e[0],0,0),connectSeries(...e),connect(e[e.length-1],this._merge,0,0)}connectEffectRight(...e){this._split.connect(e[0],1,0),connectSeries(...e),connect(e[e.length-1],this._merge,0,1)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{wet:1})}dispose(){return super.dispose(),this._dryWet.dispose(),this._split.dispose(),this._merge.dispose(),this}}class StereoFeedbackEffect extends StereoEffect{constructor(e){super(e),this.feedback=new Signal({context:this.context,value:e.feedback,units:"normalRange"}),this._feedbackL=new Gain$1({context:this.context}),this._feedbackR=new Gain$1({context:this.context}),this._feedbackSplit=new Split({context:this.context,channels:2}),this._feedbackMerge=new Merge({context:this.context,channels:2}),this._merge.connect(this._feedbackSplit),this._feedbackMerge.connect(this._split),this._feedbackSplit.connect(this._feedbackL,0,0),this._feedbackL.connect(this._feedbackMerge,0,0),this._feedbackSplit.connect(this._feedbackR,1,0),this._feedbackR.connect(this._feedbackMerge,0,1),this.feedback.fan(this._feedbackL.gain,this._feedbackR.gain),readOnly(this,["feedback"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{feedback:.5})}dispose(){return super.dispose(),this.feedback.dispose(),this._feedbackL.dispose(),this._feedbackR.dispose(),this._feedbackSplit.dispose(),this._feedbackMerge.dispose(),this}}class Chorus extends StereoFeedbackEffect{constructor(){super(optionsFromArguments(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"])),this.name="Chorus";const e=optionsFromArguments(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"]);this._depth=e.depth,this._delayTime=e.delayTime/1e3,this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._delayNodeL=new Delay({context:this.context}),this._delayNodeR=new Delay({context:this.context}),this.frequency=this._lfoL.frequency,readOnly(this,["frequency"]),this._lfoL.frequency.connect(this._lfoR.frequency),this.connectEffectLeft(this._delayNodeL),this.connectEffectRight(this._delayNodeR),this._lfoL.connect(this._delayNodeL.delayTime),this._lfoR.connect(this._delayNodeR.delayTime),this.depth=this._depth,this.type=e.type,this.spread=e.spread}static getDefaults(){return Object.assign(StereoFeedbackEffect.getDefaults(),{frequency:1.5,delayTime:3.5,depth:.7,type:"sine",spread:180,feedback:0,wet:.5})}get depth(){return this._depth}set depth(e){this._depth=e;const s=this._delayTime*e;this._lfoL.min=Math.max(this._delayTime-s,0),this._lfoL.max=this._delayTime+s,this._lfoR.min=Math.max(this._delayTime-s,0),this._lfoR.max=this._delayTime+s}get delayTime(){return this._delayTime*1e3}set delayTime(e){this._delayTime=e/1e3,this.depth=this._depth}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._delayNodeL.dispose(),this._delayNodeR.dispose(),this.frequency.dispose(),this}}class Distortion extends Effect{constructor(){super(optionsFromArguments(Distortion.getDefaults(),arguments,["distortion"])),this.name="Distortion";const e=optionsFromArguments(Distortion.getDefaults(),arguments,["distortion"]);this._shaper=new WaveShaper({context:this.context,length:4096}),this._distortion=e.distortion,this.connectEffect(this._shaper),this.distortion=e.distortion,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{distortion:.4,oversample:"none"})}get distortion(){return this._distortion}set distortion(e){this._distortion=e;const s=e*100,a=Math.PI/180;this._shaper.setMap(c=>Math.abs(c)<.001?0:(3+s)*c*20*a/(Math.PI+s*Math.abs(c)))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class FeedbackEffect extends Effect{constructor(e){super(e),this.name="FeedbackEffect",this._feedbackGain=new Gain$1({context:this.context,gain:e.feedback,units:"normalRange"}),this.feedback=this._feedbackGain.gain,readOnly(this,"feedback"),this.effectReturn.chain(this._feedbackGain,this.effectSend)}static getDefaults(){return Object.assign(Effect.getDefaults(),{feedback:.125})}dispose(){return super.dispose(),this._feedbackGain.dispose(),this.feedback.dispose(),this}}class FeedbackDelay extends FeedbackEffect{constructor(){super(optionsFromArguments(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="FeedbackDelay";const e=optionsFromArguments(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"]);this._delayNode=new Delay({context:this.context,delayTime:e.delayTime,maxDelay:e.maxDelay}),this.delayTime=this._delayNode.delayTime,this.connectEffect(this._delayNode),readOnly(this,"delayTime")}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._delayNode.dispose(),this.delayTime.dispose(),this}}class PhaseShiftAllpass extends ToneAudioNode{constructor(e){super(e),this.name="PhaseShiftAllpass",this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this.offset90=new Gain$1({context:this.context});const s=[.6923878,.9360654322959,.988229522686,.9987488452737],a=[.4021921162426,.856171088242,.9722909545651,.9952884791278];this._bank0=this._createAllPassFilterBank(s),this._bank1=this._createAllPassFilterBank(a),this._oneSampleDelay=this.context.createIIRFilter([0,1],[1,0]),connectSeries(this.input,...this._bank0,this._oneSampleDelay,this.output),connectSeries(this.input,...this._bank1,this.offset90)}_createAllPassFilterBank(e){return e.map(a=>{const c=[[a*a,0,-1],[1,0,-(a*a)]];return this.context.createIIRFilter(c[0],c[1])})}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.offset90.dispose(),this._bank0.forEach(e=>e.disconnect()),this._bank1.forEach(e=>e.disconnect()),this._oneSampleDelay.disconnect(),this}}class FrequencyShifter extends Effect{constructor(){super(optionsFromArguments(FrequencyShifter.getDefaults(),arguments,["frequency"])),this.name="FrequencyShifter";const e=optionsFromArguments(FrequencyShifter.getDefaults(),arguments,["frequency"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency,minValue:-this.context.sampleRate/2,maxValue:this.context.sampleRate/2}),this._sine=new ToneOscillatorNode({context:this.context,type:"sine"}),this._cosine=new Oscillator({context:this.context,phase:-90,type:"sine"}),this._sineMultiply=new Multiply({context:this.context}),this._cosineMultiply=new Multiply({context:this.context}),this._negate=new Negate({context:this.context}),this._add=new Add({context:this.context}),this._phaseShifter=new PhaseShiftAllpass({context:this.context}),this.effectSend.connect(this._phaseShifter),this.frequency.fan(this._sine.frequency,this._cosine.frequency),this._phaseShifter.offset90.connect(this._cosineMultiply),this._cosine.connect(this._cosineMultiply.factor),this._phaseShifter.connect(this._sineMultiply),this._sine.connect(this._sineMultiply.factor),this._sineMultiply.connect(this._negate),this._cosineMultiply.connect(this._add),this._negate.connect(this._add.addend),this._add.connect(this.effectReturn);const s=this.immediate();this._sine.start(s),this._cosine.start(s)}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:0})}dispose(){return super.dispose(),this.frequency.dispose(),this._add.dispose(),this._cosine.dispose(),this._cosineMultiply.dispose(),this._negate.dispose(),this._phaseShifter.dispose(),this._sine.dispose(),this._sineMultiply.dispose(),this}}const combFilterTunings=[1557/44100,1617/44100,1491/44100,1422/44100,1277/44100,1356/44100,1188/44100,1116/44100],allpassFilterFrequencies=[225,556,441,341];class Freeverb extends StereoEffect{constructor(){super(optionsFromArguments(Freeverb.getDefaults(),arguments,["roomSize","dampening"])),this.name="Freeverb",this._combFilters=[],this._allpassFiltersL=[],this._allpassFiltersR=[];const e=optionsFromArguments(Freeverb.getDefaults(),arguments,["roomSize","dampening"]);this.roomSize=new Signal({context:this.context,value:e.roomSize,units:"normalRange"}),this._allpassFiltersL=allpassFilterFrequencies.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._allpassFiltersR=allpassFilterFrequencies.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._combFilters=combFilterTunings.map((s,a)=>{const c=new LowpassCombFilter({context:this.context,dampening:e.dampening,delayTime:s});return as.dampening=e)}dispose(){return super.dispose(),this._allpassFiltersL.forEach(e=>e.disconnect()),this._allpassFiltersR.forEach(e=>e.disconnect()),this._combFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this}}const combFilterDelayTimes=[1687/25e3,1601/25e3,2053/25e3,2251/25e3],combFilterResonances=[.773,.802,.753,.733],allpassFilterFreqs=[347,113,37];class JCReverb extends StereoEffect{constructor(){super(optionsFromArguments(JCReverb.getDefaults(),arguments,["roomSize"])),this.name="JCReverb",this._allpassFilters=[],this._feedbackCombFilters=[];const e=optionsFromArguments(JCReverb.getDefaults(),arguments,["roomSize"]);this.roomSize=new Signal({context:this.context,value:e.roomSize,units:"normalRange"}),this._scaleRoomSize=new Scale({context:this.context,min:-.733,max:.197}),this._allpassFilters=allpassFilterFreqs.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._feedbackCombFilters=combFilterDelayTimes.map((s,a)=>{const c=new FeedbackCombFilter({context:this.context,delayTime:s});return this._scaleRoomSize.connect(c.resonance),c.resonance.value=combFilterResonances[a],ae.disconnect()),this._feedbackCombFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this._scaleRoomSize.dispose(),this}}class StereoXFeedbackEffect extends StereoFeedbackEffect{constructor(e){super(e),this._feedbackL.disconnect(),this._feedbackL.connect(this._feedbackMerge,0,1),this._feedbackR.disconnect(),this._feedbackR.connect(this._feedbackMerge,0,0),readOnly(this,["feedback"])}}class PingPongDelay extends StereoXFeedbackEffect{constructor(){super(optionsFromArguments(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="PingPongDelay";const e=optionsFromArguments(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"]);this._leftDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightPreDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this.delayTime=new Signal({context:this.context,units:"time",value:e.delayTime}),this.connectEffectLeft(this._leftDelay),this.connectEffectRight(this._rightPreDelay,this._rightDelay),this.delayTime.fan(this._leftDelay.delayTime,this._rightDelay.delayTime,this._rightPreDelay.delayTime),this._feedbackL.disconnect(),this._feedbackL.connect(this._rightDelay),readOnly(this,["delayTime"])}static getDefaults(){return Object.assign(StereoXFeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._leftDelay.dispose(),this._rightDelay.dispose(),this._rightPreDelay.dispose(),this.delayTime.dispose(),this}}class PitchShift extends FeedbackEffect{constructor(){super(optionsFromArguments(PitchShift.getDefaults(),arguments,["pitch"])),this.name="PitchShift";const e=optionsFromArguments(PitchShift.getDefaults(),arguments,["pitch"]);this._frequency=new Signal({context:this.context}),this._delayA=new Delay({maxDelay:1,context:this.context}),this._lfoA=new LFO({context:this.context,min:0,max:.1,type:"sawtooth"}).connect(this._delayA.delayTime),this._delayB=new Delay({maxDelay:1,context:this.context}),this._lfoB=new LFO({context:this.context,min:0,max:.1,type:"sawtooth",phase:180}).connect(this._delayB.delayTime),this._crossFade=new CrossFade({context:this.context}),this._crossFadeLFO=new LFO({context:this.context,min:0,max:1,type:"triangle",phase:90}).connect(this._crossFade.fade),this._feedbackDelay=new Delay({delayTime:e.delayTime,context:this.context}),this.delayTime=this._feedbackDelay.delayTime,readOnly(this,"delayTime"),this._pitch=e.pitch,this._windowSize=e.windowSize,this._delayA.connect(this._crossFade.a),this._delayB.connect(this._crossFade.b),this._frequency.fan(this._lfoA.frequency,this._lfoB.frequency,this._crossFadeLFO.frequency),this.effectSend.fan(this._delayA,this._delayB),this._crossFade.chain(this._feedbackDelay,this.effectReturn);const s=this.now();this._lfoA.start(s),this._lfoB.start(s),this._crossFadeLFO.start(s),this.windowSize=this._windowSize}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{pitch:0,windowSize:.1,delayTime:0,feedback:0})}get pitch(){return this._pitch}set pitch(e){this._pitch=e;let s=0;e<0?(this._lfoA.min=0,this._lfoA.max=this._windowSize,this._lfoB.min=0,this._lfoB.max=this._windowSize,s=intervalToFrequencyRatio(e-1)+1):(this._lfoA.min=this._windowSize,this._lfoA.max=0,this._lfoB.min=this._windowSize,this._lfoB.max=0,s=intervalToFrequencyRatio(e)-1),this._frequency.value=s*(1.2/this._windowSize)}get windowSize(){return this._windowSize}set windowSize(e){this._windowSize=this.toSeconds(e),this.pitch=this._pitch}dispose(){return super.dispose(),this._frequency.dispose(),this._delayA.dispose(),this._delayB.dispose(),this._lfoA.dispose(),this._lfoB.dispose(),this._crossFade.dispose(),this._crossFadeLFO.dispose(),this._feedbackDelay.dispose(),this}}class Phaser extends StereoEffect{constructor(){super(optionsFromArguments(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"])),this.name="Phaser";const e=optionsFromArguments(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"]);this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this.Q=new Signal({context:this.context,value:e.Q,units:"positive"}),this._filtersL=this._makeFilters(e.stages,this._lfoL),this._filtersR=this._makeFilters(e.stages,this._lfoR),this.frequency=this._lfoL.frequency,this.frequency.value=e.frequency,this.connectEffectLeft(...this._filtersL),this.connectEffectRight(...this._filtersR),this._lfoL.frequency.connect(this._lfoR.frequency),this.baseFrequency=e.baseFrequency,this.octaves=e.octaves,this._lfoL.start(),this._lfoR.start(),readOnly(this,["frequency","Q"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:.5,octaves:3,stages:10,Q:10,baseFrequency:350})}_makeFilters(e,s){const a=[];for(let c=0;ce.disconnect()),this._filtersR.forEach(e=>e.disconnect()),this.frequency.dispose(),this}}class Reverb extends Effect{constructor(){super(optionsFromArguments(Reverb.getDefaults(),arguments,["decay"])),this.name="Reverb",this._convolver=this.context.createConvolver(),this.ready=Promise.resolve();const e=optionsFromArguments(Reverb.getDefaults(),arguments,["decay"]);this._decay=e.decay,this._preDelay=e.preDelay,this.generate(),this.connectEffect(this._convolver)}static getDefaults(){return Object.assign(Effect.getDefaults(),{decay:1.5,preDelay:.01})}get decay(){return this._decay}set decay(e){e=this.toSeconds(e),assertRange(e,.001),this._decay=e,this.generate()}get preDelay(){return this._preDelay}set preDelay(e){e=this.toSeconds(e),assertRange(e,0),this._preDelay=e,this.generate()}generate(){return __awaiter$4(this,void 0,void 0,function*(){const e=this.ready,s=new OfflineContext(2,this._decay+this._preDelay,this.context.sampleRate),a=new Noise({context:s}),c=new Noise({context:s}),d=new Merge({context:s});a.connect(d,0,0),c.connect(d,0,1);const _=new Gain$1({context:s}).toDestination();d.connect(_),a.start(0),c.start(0),_.gain.setValueAtTime(0,0),_.gain.setValueAtTime(1,this._preDelay),_.gain.exponentialApproachValueAtTime(0,this._preDelay,this.decay);const b=s.render();return this.ready=b.then(noOp),yield e,this._convolver.buffer=(yield b).get(),this})}dispose(){return super.dispose(),this._convolver.disconnect(),this}}class MidSideSplit extends ToneAudioNode{constructor(){super(optionsFromArguments(MidSideSplit.getDefaults(),arguments)),this.name="MidSideSplit",this._split=this.input=new Split({channels:2,context:this.context}),this._midAdd=new Add({context:this.context}),this.mid=new Multiply({context:this.context,value:Math.SQRT1_2}),this._sideSubtract=new Subtract({context:this.context}),this.side=new Multiply({context:this.context,value:Math.SQRT1_2}),this._split.connect(this._midAdd,0),this._split.connect(this._midAdd.addend,1),this._split.connect(this._sideSubtract,0),this._split.connect(this._sideSubtract.subtrahend,1),this._midAdd.connect(this.mid),this._sideSubtract.connect(this.side)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midAdd.dispose(),this._sideSubtract.dispose(),this._split.dispose(),this}}class MidSideMerge extends ToneAudioNode{constructor(){super(optionsFromArguments(MidSideMerge.getDefaults(),arguments)),this.name="MidSideMerge",this.mid=new Gain$1({context:this.context}),this.side=new Gain$1({context:this.context}),this._left=new Add({context:this.context}),this._leftMult=new Multiply({context:this.context,value:Math.SQRT1_2}),this._right=new Subtract({context:this.context}),this._rightMult=new Multiply({context:this.context,value:Math.SQRT1_2}),this._merge=this.output=new Merge({context:this.context}),this.mid.fan(this._left),this.side.connect(this._left.addend),this.mid.connect(this._right),this.side.connect(this._right.subtrahend),this._left.connect(this._leftMult),this._right.connect(this._rightMult),this._leftMult.connect(this._merge,0,0),this._rightMult.connect(this._merge,0,1)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._leftMult.dispose(),this._rightMult.dispose(),this._left.dispose(),this._right.dispose(),this}}class MidSideEffect extends Effect{constructor(e){super(e),this.name="MidSideEffect",this._midSideMerge=new MidSideMerge({context:this.context}),this._midSideSplit=new MidSideSplit({context:this.context}),this._midSend=this._midSideSplit.mid,this._sideSend=this._midSideSplit.side,this._midReturn=this._midSideMerge.mid,this._sideReturn=this._midSideMerge.side,this.effectSend.connect(this._midSideSplit),this._midSideMerge.connect(this.effectReturn)}connectEffectMid(...e){this._midSend.chain(...e,this._midReturn)}connectEffectSide(...e){this._sideSend.chain(...e,this._sideReturn)}dispose(){return super.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this._midSend.dispose(),this._sideSend.dispose(),this._midReturn.dispose(),this._sideReturn.dispose(),this}}class StereoWidener extends MidSideEffect{constructor(){super(optionsFromArguments(StereoWidener.getDefaults(),arguments,["width"])),this.name="StereoWidener";const e=optionsFromArguments(StereoWidener.getDefaults(),arguments,["width"]);this.width=new Signal({context:this.context,value:e.width,units:"normalRange"}),readOnly(this,["width"]),this._twoTimesWidthMid=new Multiply({context:this.context,value:2}),this._twoTimesWidthSide=new Multiply({context:this.context,value:2}),this._midMult=new Multiply({context:this.context}),this._twoTimesWidthMid.connect(this._midMult.factor),this.connectEffectMid(this._midMult),this._oneMinusWidth=new Subtract({context:this.context}),this._oneMinusWidth.connect(this._twoTimesWidthMid),connect(this.context.getConstant(1),this._oneMinusWidth),this.width.connect(this._oneMinusWidth.subtrahend),this._sideMult=new Multiply({context:this.context}),this.width.connect(this._twoTimesWidthSide),this._twoTimesWidthSide.connect(this._sideMult.factor),this.connectEffectSide(this._sideMult)}static getDefaults(){return Object.assign(MidSideEffect.getDefaults(),{width:.5})}dispose(){return super.dispose(),this.width.dispose(),this._midMult.dispose(),this._sideMult.dispose(),this._twoTimesWidthMid.dispose(),this._twoTimesWidthSide.dispose(),this._oneMinusWidth.dispose(),this}}class Tremolo extends StereoEffect{constructor(){super(optionsFromArguments(Tremolo.getDefaults(),arguments,["frequency","depth"])),this.name="Tremolo";const e=optionsFromArguments(Tremolo.getDefaults(),arguments,["frequency","depth"]);this._lfoL=new LFO({context:this.context,type:e.type,min:1,max:0}),this._lfoR=new LFO({context:this.context,type:e.type,min:1,max:0}),this._amplitudeL=new Gain$1({context:this.context}),this._amplitudeR=new Gain$1({context:this.context}),this.frequency=new Signal({context:this.context,value:e.frequency,units:"frequency"}),this.depth=new Signal({context:this.context,value:e.depth,units:"normalRange"}),readOnly(this,["frequency","depth"]),this.connectEffectLeft(this._amplitudeL),this.connectEffectRight(this._amplitudeR),this._lfoL.connect(this._amplitudeL.gain),this._lfoR.connect(this._amplitudeR.gain),this.frequency.fan(this._lfoL.frequency,this._lfoR.frequency),this.depth.fan(this._lfoR.amplitude,this._lfoL.amplitude),this.spread=e.spread}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:10,type:"sine",depth:.5,spread:180})}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this.context.transport.syncSignal(this.frequency),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this.context.transport.unsyncSignal(this.frequency),this}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._amplitudeL.dispose(),this._amplitudeR.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Vibrato extends Effect{constructor(){super(optionsFromArguments(Vibrato.getDefaults(),arguments,["frequency","depth"])),this.name="Vibrato";const e=optionsFromArguments(Vibrato.getDefaults(),arguments,["frequency","depth"]);this._delayNode=new Delay({context:this.context,delayTime:0,maxDelay:e.maxDelay}),this._lfo=new LFO({context:this.context,type:e.type,min:0,max:e.maxDelay,frequency:e.frequency,phase:-90}).start().connect(this._delayNode.delayTime),this.frequency=this._lfo.frequency,this.depth=this._lfo.amplitude,this.depth.value=e.depth,readOnly(this,["frequency","depth"]),this.effectSend.chain(this._delayNode,this.effectReturn)}static getDefaults(){return Object.assign(Effect.getDefaults(),{maxDelay:.005,frequency:5,depth:.1,type:"sine"})}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._delayNode.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Analyser extends ToneAudioNode{constructor(){super(optionsFromArguments(Analyser.getDefaults(),arguments,["type","size"])),this.name="Analyser",this._analysers=[],this._buffers=[];const e=optionsFromArguments(Analyser.getDefaults(),arguments,["type","size"]);this.input=this.output=this._gain=new Gain$1({context:this.context}),this._split=new Split({context:this.context,channels:e.channels}),this.input.connect(this._split),assertRange(e.channels,1);for(let s=0;s{const a=this._buffers[s];this._type==="fft"?e.getFloatFrequencyData(a):this._type==="waveform"&&e.getFloatTimeDomainData(a)}),this.channels===1?this._buffers[0]:this._buffers}get size(){return this._analysers[0].frequencyBinCount}set size(e){this._analysers.forEach((s,a)=>{s.fftSize=e*2,this._buffers[a]=new Float32Array(e)})}get channels(){return this._analysers.length}get type(){return this._type}set type(e){assert(e==="waveform"||e==="fft",`Analyser: invalid type: ${e}`),this._type=e}get smoothing(){return this._analysers[0].smoothingTimeConstant}set smoothing(e){this._analysers.forEach(s=>s.smoothingTimeConstant=e)}dispose(){return super.dispose(),this._analysers.forEach(e=>e.disconnect()),this._split.dispose(),this._gain.dispose(),this}}class MeterBase extends ToneAudioNode{constructor(){super(optionsFromArguments(MeterBase.getDefaults(),arguments)),this.name="MeterBase",this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform"})}dispose(){return super.dispose(),this._analyser.dispose(),this}}class Meter extends MeterBase{constructor(){super(optionsFromArguments(Meter.getDefaults(),arguments,["smoothing"])),this.name="Meter",this._rms=0;const e=optionsFromArguments(Meter.getDefaults(),arguments,["smoothing"]);this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform",channels:e.channels}),this.smoothing=e.smoothing,this.normalRange=e.normalRange}static getDefaults(){return Object.assign(MeterBase.getDefaults(),{smoothing:.8,normalRange:!1,channels:1})}getLevel(){return warn("'getLevel' has been changed to 'getValue'"),this.getValue()}getValue(){const e=this._analyser.getValue(),a=(this.channels===1?[e]:e).map(c=>{const d=c.reduce((b,k)=>b+k*k,0),_=Math.sqrt(d/c.length);return this._rms=Math.max(_,this._rms*this.smoothing),this.normalRange?this._rms:gainToDb(this._rms)});return this.channels===1?a[0]:a}get channels(){return this._analyser.channels}dispose(){return super.dispose(),this._analyser.dispose(),this}}class FFT extends MeterBase{constructor(){super(optionsFromArguments(FFT.getDefaults(),arguments,["size"])),this.name="FFT";const e=optionsFromArguments(FFT.getDefaults(),arguments,["size"]);this.normalRange=e.normalRange,this._analyser.type="fft",this.size=e.size}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{normalRange:!1,size:1024,smoothing:.8})}getValue(){return this._analyser.getValue().map(s=>this.normalRange?dbToGain(s):s)}get size(){return this._analyser.size}set size(e){this._analyser.size=e}get smoothing(){return this._analyser.smoothing}set smoothing(e){this._analyser.smoothing=e}getFrequencyOfIndex(e){return assert(0<=e&&es._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo._soloed.has(this.context)||Solo._soloed.set(this.context,new Set),Solo._soloed.get(this.context).add(this)}_removeSolo(){Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).delete(this)}_isSoloed(){return Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).has(this)}_noSolos(){return!Solo._soloed.has(this.context)||Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo._allSolos=new Map;Solo._soloed=new Map;class PanVol extends ToneAudioNode{constructor(){super(optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const e=optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner({context:this.context,pan:e.pan,channelCount:e.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume({context:this.context,volume:e.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=e.mute,readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel extends ToneAudioNode{constructor(){super(optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const e=optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo({solo:e.solo,context:this.context}),this._panVol=this.output=new PanVol({context:this.context,pan:e.pan,volume:e.volume,mute:e.mute,channelCount:e.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(e){return Channel.buses.has(e)||Channel.buses.set(e,new Gain$1({context:this.context})),Channel.buses.get(e)}send(e,s=0){const a=this._getBus(e),c=new Gain$1({context:this.context,units:"decibels",gain:s});return this.connect(c),c.connect(a),c}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel.buses=new Map;class Mono extends ToneAudioNode{constructor(){super(optionsFromArguments(Mono.getDefaults(),arguments)),this.name="Mono",this.input=new Gain$1({context:this.context}),this._merge=this.output=new Merge({channels:2,context:this.context}),this.input.connect(this._merge,0,0),this.input.connect(this._merge,0,1)}dispose(){return super.dispose(),this._merge.dispose(),this.input.dispose(),this}}class MultibandSplit extends ToneAudioNode{constructor(){super(optionsFromArguments(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"])),this.name="MultibandSplit",this.input=new Gain$1({context:this.context}),this.output=void 0,this.low=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this._lowMidFilter=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this.mid=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this.high=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this._internalChannels=[this.low,this.mid,this.high];const e=optionsFromArguments(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"]);this.lowFrequency=new Signal({context:this.context,units:"frequency",value:e.lowFrequency}),this.highFrequency=new Signal({context:this.context,units:"frequency",value:e.highFrequency}),this.Q=new Signal({context:this.context,units:"positive",value:e.Q}),this.input.fan(this.low,this.high),this.input.chain(this._lowMidFilter,this.mid),this.lowFrequency.fan(this.low.frequency,this._lowMidFilter.frequency),this.highFrequency.fan(this.mid.frequency,this.high.frequency),this.Q.connect(this.low.Q),this.Q.connect(this._lowMidFilter.Q),this.Q.connect(this.mid.Q),this.Q.connect(this.high.Q),readOnly(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{Q:1,highFrequency:2500,lowFrequency:400})}dispose(){return super.dispose(),writable(this,["high","mid","low","highFrequency","lowFrequency"]),this.low.dispose(),this._lowMidFilter.dispose(),this.mid.dispose(),this.high.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this.Q.dispose(),this}}class Listener$1 extends ToneAudioNode{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit(o=>{o.listener=new Listener$1({context:o})});onContextClose(o=>{o.listener.dispose()});class Panner3D extends ToneAudioNode{constructor(){super(optionsFromArguments(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"])),this.name="Panner3D";const e=optionsFromArguments(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"]);this._panner=this.input=this.output=this.context.createPanner(),this.panningModel=e.panningModel,this.maxDistance=e.maxDistance,this.distanceModel=e.distanceModel,this.coneOuterGain=e.coneOuterGain,this.coneOuterAngle=e.coneOuterAngle,this.coneInnerAngle=e.coneInnerAngle,this.refDistance=e.refDistance,this.rolloffFactor=e.rolloffFactor,this.positionX=new Param({context:this.context,param:this._panner.positionX,value:e.positionX}),this.positionY=new Param({context:this.context,param:this._panner.positionY,value:e.positionY}),this.positionZ=new Param({context:this.context,param:this._panner.positionZ,value:e.positionZ}),this.orientationX=new Param({context:this.context,param:this._panner.orientationX,value:e.orientationX}),this.orientationY=new Param({context:this.context,param:this._panner.orientationY,value:e.orientationY}),this.orientationZ=new Param({context:this.context,param:this._panner.orientationZ,value:e.orientationZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:0,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1})}setPosition(e,s,a){return this.positionX.value=e,this.positionY.value=s,this.positionZ.value=a,this}setOrientation(e,s,a){return this.orientationX.value=e,this.orientationY.value=s,this.orientationZ.value=a,this}get panningModel(){return this._panner.panningModel}set panningModel(e){this._panner.panningModel=e}get refDistance(){return this._panner.refDistance}set refDistance(e){this._panner.refDistance=e}get rolloffFactor(){return this._panner.rolloffFactor}set rolloffFactor(e){this._panner.rolloffFactor=e}get distanceModel(){return this._panner.distanceModel}set distanceModel(e){this._panner.distanceModel=e}get coneInnerAngle(){return this._panner.coneInnerAngle}set coneInnerAngle(e){this._panner.coneInnerAngle=e}get coneOuterAngle(){return this._panner.coneOuterAngle}set coneOuterAngle(e){this._panner.coneOuterAngle=e}get coneOuterGain(){return this._panner.coneOuterGain}set coneOuterGain(e){this._panner.coneOuterGain=e}get maxDistance(){return this._panner.maxDistance}set maxDistance(e){this._panner.maxDistance=e}dispose(){return super.dispose(),this._panner.disconnect(),this.orientationX.dispose(),this.orientationY.dispose(),this.orientationZ.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this}}class Recorder extends ToneAudioNode{constructor(){super(optionsFromArguments(Recorder.getDefaults(),arguments)),this.name="Recorder";const e=optionsFromArguments(Recorder.getDefaults(),arguments);this.input=new Gain$1({context:this.context}),assert(Recorder.supported,"Media Recorder API is not available"),this._stream=this.context.createMediaStreamDestination(),this.input.connect(this._stream),this._recorder=new MediaRecorder(this._stream.stream,{mimeType:e.mimeType})}static getDefaults(){return ToneAudioNode.getDefaults()}get mimeType(){return this._recorder.mimeType}static get supported(){return theWindow!==null&&Reflect.has(theWindow,"MediaRecorder")}get state(){return this._recorder.state==="inactive"?"stopped":this._recorder.state==="paused"?"paused":"started"}start(){return __awaiter$4(this,void 0,void 0,function*(){assert(this.state!=="started","Recorder is already started");const e=new Promise(s=>{const a=()=>{this._recorder.removeEventListener("start",a,!1),s()};this._recorder.addEventListener("start",a,!1)});return this._recorder.start(),yield e})}stop(){return __awaiter$4(this,void 0,void 0,function*(){assert(this.state!=="stopped","Recorder is not started");const e=new Promise(s=>{const a=c=>{this._recorder.removeEventListener("dataavailable",a,!1),s(c.data)};this._recorder.addEventListener("dataavailable",a,!1)});return this._recorder.stop(),yield e})}pause(){return assert(this.state==="started","Recorder must be started"),this._recorder.pause(),this}dispose(){return super.dispose(),this.input.dispose(),this._stream.disconnect(),this}}class Compressor extends ToneAudioNode{constructor(){super(optionsFromArguments(Compressor.getDefaults(),arguments,["threshold","ratio"])),this.name="Compressor",this._compressor=this.context.createDynamicsCompressor(),this.input=this._compressor,this.output=this._compressor;const e=optionsFromArguments(Compressor.getDefaults(),arguments,["threshold","ratio"]);this.threshold=new Param({minValue:this._compressor.threshold.minValue,maxValue:this._compressor.threshold.maxValue,context:this.context,convert:!1,param:this._compressor.threshold,units:"decibels",value:e.threshold}),this.attack=new Param({minValue:this._compressor.attack.minValue,maxValue:this._compressor.attack.maxValue,context:this.context,param:this._compressor.attack,units:"time",value:e.attack}),this.release=new Param({minValue:this._compressor.release.minValue,maxValue:this._compressor.release.maxValue,context:this.context,param:this._compressor.release,units:"time",value:e.release}),this.knee=new Param({minValue:this._compressor.knee.minValue,maxValue:this._compressor.knee.maxValue,context:this.context,convert:!1,param:this._compressor.knee,units:"decibels",value:e.knee}),this.ratio=new Param({minValue:this._compressor.ratio.minValue,maxValue:this._compressor.ratio.maxValue,context:this.context,convert:!1,param:this._compressor.ratio,units:"positive",value:e.ratio}),readOnly(this,["knee","release","attack","ratio","threshold"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.003,knee:30,ratio:12,release:.25,threshold:-24})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.disconnect(),this.attack.dispose(),this.release.dispose(),this.threshold.dispose(),this.ratio.dispose(),this.knee.dispose(),this}}class Gate extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Gate.getDefaults(),arguments,["threshold","smoothing"]))),this.name="Gate";const e=optionsFromArguments(Gate.getDefaults(),arguments,["threshold","smoothing"]);this._follower=new Follower({context:this.context,smoothing:e.smoothing}),this._gt=new GreaterThan({context:this.context,value:dbToGain(e.threshold)}),this.input=new Gain$1({context:this.context}),this._gate=this.output=new Gain$1({context:this.context}),this.input.connect(this._gate),this.input.chain(this._follower,this._gt,this._gate.gain)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{smoothing:.1,threshold:-40})}get threshold(){return gainToDb(this._gt.value)}set threshold(e){this._gt.value=dbToGain(e)}get smoothing(){return this._follower.smoothing}set smoothing(e){this._follower.smoothing=e}dispose(){return super.dispose(),this.input.dispose(),this._follower.dispose(),this._gt.dispose(),this._gate.dispose(),this}}class Limiter extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Limiter.getDefaults(),arguments,["threshold"]))),this.name="Limiter";const e=optionsFromArguments(Limiter.getDefaults(),arguments,["threshold"]);this._compressor=this.input=this.output=new Compressor({context:this.context,ratio:20,attack:.003,release:.01,threshold:e.threshold}),this.threshold=this._compressor.threshold,readOnly(this,"threshold")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{threshold:-12})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.dispose(),this.threshold.dispose(),this}}class MidSideCompressor extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(MidSideCompressor.getDefaults(),arguments))),this.name="MidSideCompressor";const e=optionsFromArguments(MidSideCompressor.getDefaults(),arguments);this._midSideSplit=this.input=new MidSideSplit({context:this.context}),this._midSideMerge=this.output=new MidSideMerge({context:this.context}),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.side=new Compressor(Object.assign(e.side,{context:this.context})),this._midSideSplit.mid.chain(this.mid,this._midSideMerge.mid),this._midSideSplit.side.chain(this.side,this._midSideMerge.side),readOnly(this,["mid","side"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},side:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10}})}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this}}class MultibandCompressor extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(MultibandCompressor.getDefaults(),arguments))),this.name="MultibandCompressor";const e=optionsFromArguments(MultibandCompressor.getDefaults(),arguments);this._splitter=this.input=new MultibandSplit({context:this.context,lowFrequency:e.lowFrequency,highFrequency:e.highFrequency}),this.lowFrequency=this._splitter.lowFrequency,this.highFrequency=this._splitter.highFrequency,this.output=new Gain$1({context:this.context}),this.low=new Compressor(Object.assign(e.low,{context:this.context})),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.high=new Compressor(Object.assign(e.high,{context:this.context})),this._splitter.low.chain(this.low,this.output),this._splitter.mid.chain(this.mid,this.output),this._splitter.high.chain(this.high,this.output),readOnly(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{lowFrequency:250,highFrequency:2e3,low:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10},mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},high:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16}})}dispose(){return super.dispose(),this._splitter.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.output.dispose(),this}}class EQ3 extends ToneAudioNode{constructor(){super(optionsFromArguments(EQ3.getDefaults(),arguments,["low","mid","high"])),this.name="EQ3",this.output=new Gain$1({context:this.context}),this._internalChannels=[];const e=optionsFromArguments(EQ3.getDefaults(),arguments,["low","mid","high"]);this.input=this._multibandSplit=new MultibandSplit({context:this.context,highFrequency:e.highFrequency,lowFrequency:e.lowFrequency}),this._lowGain=new Gain$1({context:this.context,gain:e.low,units:"decibels"}),this._midGain=new Gain$1({context:this.context,gain:e.mid,units:"decibels"}),this._highGain=new Gain$1({context:this.context,gain:e.high,units:"decibels"}),this.low=this._lowGain.gain,this.mid=this._midGain.gain,this.high=this._highGain.gain,this.Q=this._multibandSplit.Q,this.lowFrequency=this._multibandSplit.lowFrequency,this.highFrequency=this._multibandSplit.highFrequency,this._multibandSplit.low.chain(this._lowGain,this.output),this._multibandSplit.mid.chain(this._midGain,this.output),this._multibandSplit.high.chain(this._highGain,this.output),readOnly(this,["low","mid","high","lowFrequency","highFrequency"]),this._internalChannels=[this._multibandSplit]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{high:0,highFrequency:2500,low:0,lowFrequency:400,mid:0})}dispose(){return super.dispose(),writable(this,["low","mid","high","lowFrequency","highFrequency"]),this._multibandSplit.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this._lowGain.dispose(),this._midGain.dispose(),this._highGain.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.Q.dispose(),this}}class Convolver extends ToneAudioNode{constructor(){super(optionsFromArguments(Convolver.getDefaults(),arguments,["url","onload"])),this.name="Convolver",this._convolver=this.context.createConvolver();const e=optionsFromArguments(Convolver.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer(e.url,s=>{this.buffer=s,e.onload()}),this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this._buffer.loaded&&(this.buffer=this._buffer),this.normalize=e.normalize,this.input.chain(this._convolver,this.output)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{normalize:!0,onload:noOp})}load(e){return __awaiter$4(this,void 0,void 0,function*(){this.buffer=yield this._buffer.load(e)})}get buffer(){return this._buffer.length?this._buffer:null}set buffer(e){e&&this._buffer.set(e),this._convolver.buffer&&(this.input.disconnect(),this._convolver.disconnect(),this._convolver=this.context.createConvolver(),this.input.chain(this._convolver,this.output));const s=this._buffer.get();this._convolver.buffer=s||null}get normalize(){return this._convolver.normalize}set normalize(e){this._convolver.normalize=e}dispose(){return super.dispose(),this._buffer.dispose(),this._convolver.disconnect(),this}}function now(){return getContext().now()}function immediate(){return getContext().immediate()}const Transport=getContext().transport;function getTransport(){return getContext().transport}const Destination$1=getContext().destination,Master=getContext().destination;function getDestination$1(){return getContext().destination}const Listener=getContext().listener;function getListener(){return getContext().listener}const Draw=getContext().draw;function getDraw(){return getContext().draw}const context=getContext();function loaded(){return ToneAudioBuffer.loaded()}const Buffer=ToneAudioBuffer,Buffers=ToneAudioBuffers,BufferSource=ToneBufferSource;var _Tone=Object.freeze(Object.defineProperty({__proto__:null,now,immediate,Transport,getTransport,Destination:Destination$1,Master,getDestination:getDestination$1,Listener,getListener,Draw,getDraw,context,loaded,Buffer,Buffers,BufferSource,getContext,setContext,start,supported:isSupported,dbToGain,gainToDb,intervalToFrequencyRatio,ftom,mtof,optionsFromArguments,defaultArg,Clock,Context,BaseContext,Delay,Gain:Gain$1,Offline,OfflineContext,Param,ToneAudioBuffer,ToneAudioBuffers,ToneAudioNode,connectSeries,connect,disconnect,FrequencyClass,Frequency,MidiClass,Midi,TimeClass,Time,TicksClass,Ticks,TransportTimeClass,TransportTime,Emitter,IntervalTimeline,StateTimeline,Timeline,isUndef,isDefined,isFunction,isNumber,isObject,isBoolean,isArray,isString,isNote:isNote$1,Unit:Units,debug:Debug,Noise,UserMedia,Oscillator,AMOscillator,FMOscillator,PulseOscillator,FatOscillator,PWMOscillator,OmniOscillator,ToneOscillatorNode,LFO,ToneBufferSource,Player,Players:Players$1,GrainPlayer,Add,Abs,AudioToGain,GainToAudio,GreaterThan,GreaterThanZero,Multiply,Negate,Pow,Signal,connectSignal,Scale,ScaleExp,Subtract,SyncedSignal,WaveShaper,Zero,AMSynth:AMSynth$1,DuoSynth:DuoSynth$1,FMSynth:FMSynth$1,MetalSynth:MetalSynth$1,MembraneSynth:MembraneSynth$1,MonoSynth:MonoSynth$1,NoiseSynth:NoiseSynth$1,PluckSynth:PluckSynth$1,PolySynth:PolySynth$1,Sampler:Sampler$1,Synth:Synth$1,Loop,Part,Pattern:Pattern$1,Sequence,ToneEvent,AutoFilter:AutoFilter$1,AutoPanner,AutoWah,BitCrusher,Chebyshev,Chorus,Distortion,FeedbackDelay,FrequencyShifter,Freeverb,JCReverb,PingPongDelay,PitchShift,Phaser,Reverb,StereoWidener,Tremolo,Vibrato,Analyser,Meter,FFT,DCMeter,Waveform,Follower,Channel,CrossFade,Merge,MidSideMerge,MidSideSplit,Mono,MultibandSplit,Panner,Panner3D,PanVol,Recorder,Solo,Split,Volume,Compressor,Gate,Limiter,MidSideCompressor,MultibandCompressor,AmplitudeEnvelope,Envelope,FrequencyEnvelope,EQ3,Filter:Filter$1,OnePoleFilter,FeedbackCombFilter,LowpassCombFilter,Convolver,BiquadFilter,version},Symbol.toStringTag,{value:"Module"})),__awaiter$3=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class PianoComponent extends ToneAudioNode{constructor(e){super(e),this.name="PianoComponent",this.input=void 0,this.output=new Volume({context:this.context}),this._enabled=!1,this.volume=this.output.volume,this._loaded=!1,this.volume.value=e.volume,this._enabled=e.enabled,this.samples=e.samples}get loaded(){return this._loaded}load(){return __awaiter$3(this,void 0,void 0,function*(){if(this._enabled)yield this._internalLoad(),this._loaded=!0;else return Promise.resolve()})}}function midiToNote(o){return Frequency(o,"midi").toNote()}function randomBetween(o,e){return Math.random()*(e-o)+o}function getReleasesUrl(o){return`rel${o-20}.[mp3|ogg]`}function getHarmonicsUrl(o){return`harmS${midiToNote(o).replace("#","s")}.[mp3|ogg]`}function getNotesUrl(o,e){return`${midiToNote(o).replace("#","s")}v${e}.[mp3|ogg]`}const velocitiesMap={1:[8],2:[6,12],3:[1,7,15],4:[1,5,10,15],5:[1,4,8,12,16],6:[1,3,7,10,13,16],7:[1,3,6,9,11,13,16],8:[1,3,5,7,9,11,13,16],9:[1,3,5,7,9,11,13,15,16],10:[1,2,3,5,7,9,11,13,15,16],11:[1,2,3,5,7,9,11,13,14,15,16],12:[1,2,3,4,5,7,9,11,13,14,15,16],13:[1,2,3,4,5,7,9,11,12,13,14,15,16],14:[1,2,3,4,5,6,7,9,11,12,13,14,15,16],15:[1,2,3,4,5,6,7,9,10,11,12,13,14,15,16],16:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]},allNotes=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108];function getNotesInRange(o,e){return allNotes.filter(s=>o<=s&&s<=e)}const harmonics=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87];function getHarmonicsInRange(o,e){return harmonics.filter(s=>o<=s&&s<=e)}function inHarmonicsRange(o){return harmonics[0]<=o&&o<=harmonics[harmonics.length-1]}class Harmonics extends PianoComponent{constructor(e){super(e),this._urls={};const s=getHarmonicsInRange(e.minNote,e.maxNote);for(const a of s)this._urls[a]=getHarmonicsUrl(a)}triggerAttack(e,s,a){this._enabled&&inHarmonicsRange(e)&&this._sampler.triggerAttack(Midi(e).toNote(),s,a*randomBetween(.5,1))}_internalLoad(){return new Promise(e=>{this._sampler=new Sampler$1({baseUrl:this.samples,onload:e,urls:this._urls}).connect(this.output)})}}class Keybed extends PianoComponent{constructor(e){super(e),this._urls={};for(let s=e.minNote;s<=e.maxNote;s++)this._urls[s]=getReleasesUrl(s)}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers(this._urls,e,this.samples)})}start(e,s,a){this._enabled&&this._buffers.has(e)&&new ToneBufferSource({url:this._buffers.get(e),context:this.context}).connect(this.output).start(s,0,void 0,.015*a*randomBetween(.5,1))}}class Pedal extends PianoComponent{constructor(e){super(e),this._downTime=1/0,this._currentSound=null,this._downTime=1/0}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers({down1:"pedalD1.mp3",down2:"pedalD2.mp3",up1:"pedalU1.mp3",up2:"pedalU2.mp3"},e,this.samples)})}_squash(e){this._currentSound&&this._currentSound.state!=="stopped"&&this._currentSound.stop(e),this._currentSound=null}_playSample(e,s){this._enabled&&(this._currentSound=new ToneBufferSource({url:this._buffers.get(`${s}${Math.random()>.5?1:2}`),context:this.context,curve:"exponential",fadeIn:.05,fadeOut:.1}).connect(this.output),this._currentSound.start(e,randomBetween(0,.01),void 0,.1*randomBetween(.5,1)))}down(e){this._squash(e),this._downTime=e,this._playSample(e,"down")}up(e){this._squash(e),this._downTime=1/0,this._playSample(e,"up")}isDown(e){return e>this._downTime}}class PianoString extends ToneAudioNode{constructor(e){super(e),this.name="PianoString",this._urls={},e.notes.forEach(s=>this._urls[s]=getNotesUrl(s,e.velocity)),this.samples=e.samples}load(){return new Promise(e=>{this._sampler=this.output=new Sampler$1({attack:0,baseUrl:this.samples,curve:"exponential",onload:e,release:.4,urls:this._urls,volume:3})})}triggerAttack(e,s,a){this._sampler.triggerAttack(e,s,a)}triggerRelease(e,s){this._sampler.triggerRelease(e,s)}}var __awaiter$2=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class PianoStrings extends PianoComponent{constructor(e){super(e);const s=getNotesInRange(e.minNote,e.maxNote),a=velocitiesMap[e.velocities].slice();this._strings=a.map(c=>new PianoString(Object.assign(e,{notes:s,velocity:c}))),this._activeNotes=new Map}scale(e,s,a,c,d){return(e-s)/(a-s)*(d-c)+c}triggerAttack(e,s,a){const c=this.scale(a,0,1,-.5,this._strings.length-.51),d=Math.max(Math.round(c),0);let _=1+c-d;this._strings.length===1&&(_=a);const b=this._strings[d];this._activeNotes.has(e)&&this.triggerRelease(e,s),this._activeNotes.set(e,b),b.triggerAttack(Midi(e).toNote(),s,_)}triggerRelease(e,s){this._activeNotes.has(e)&&(this._activeNotes.get(e).triggerRelease(Midi(e).toNote(),s),this._activeNotes.delete(e))}_internalLoad(){return __awaiter$2(this,void 0,void 0,function*(){yield Promise.all(this._strings.map(e=>__awaiter$2(this,void 0,void 0,function*(){yield e.load(),e.connect(this.output)})))})}}var __awaiter$1=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class Piano$1 extends ToneAudioNode{constructor(){super(optionsFromArguments(Piano$1.getDefaults(),arguments)),this.name="Piano",this.input=void 0,this.output=new Gain$1({context:this.context}),this._heldNotes=new Map,this._loaded=!1;const e=optionsFromArguments(Piano$1.getDefaults(),arguments);e.url.endsWith("/")||(e.url+="/"),this.maxPolyphony=e.maxPolyphony,this._heldNotes=new Map,this._sustainedNotes=new Map,this._strings=new PianoStrings(Object.assign({},e,{enabled:!0,samples:e.url,volume:e.volume.strings})).connect(this.output),this.strings=this._strings.volume,this._pedal=new Pedal(Object.assign({},e,{enabled:e.pedal,samples:e.url,volume:e.volume.pedal})).connect(this.output),this.pedal=this._pedal.volume,this._keybed=new Keybed(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.keybed})).connect(this.output),this.keybed=this._keybed.volume,this._harmonics=new Harmonics(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.harmonics})).connect(this.output),this.harmonics=this._harmonics.volume}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{maxNote:108,minNote:21,pedal:!0,release:!1,url:"https://tambien.github.io/Piano/audio/",velocities:1,maxPolyphony:32,volume:{harmonics:0,keybed:0,pedal:0,strings:0}})}load(){return __awaiter$1(this,void 0,void 0,function*(){yield Promise.all([this._strings.load(),this._pedal.load(),this._keybed.load(),this._harmonics.load()]),this._loaded=!0})}get loaded(){return this._loaded}pedalDown({time:e=this.immediate()}={}){return this.loaded&&(e=this.toSeconds(e),this._pedal.isDown(e)||this._pedal.down(e)),this}pedalUp({time:e=this.immediate()}={}){if(this.loaded){const s=this.toSeconds(e);this._pedal.isDown(s)&&(this._pedal.up(s),this._sustainedNotes.forEach((a,c)=>{this._heldNotes.has(c)||this._strings.triggerRelease(c,s)}),this._sustainedNotes.clear())}return this}keyDown({note:e,midi:s,time:a=this.immediate(),velocity:c=.8}){return this.loaded&&this.maxPolyphony>this._heldNotes.size+this._sustainedNotes.size?(a=this.toSeconds(a),isString(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s)||(this._heldNotes.set(s,{time:a,velocity:c}),this._strings.triggerAttack(s,a,c))):console.warn("samples not loaded"),this}keyUp({note:e,midi:s,time:a=this.immediate(),velocity:c=.8}){if(this.loaded&&(a=this.toSeconds(a),isString(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s))){const d=this._heldNotes.get(s);this._heldNotes.delete(s);const _=Math.pow(Math.max(a-d.time,.1),.7),b=d.velocity;let k=3/_*b*c;k=Math.max(k,.4),k=Math.min(k,4),this._pedal.isDown(a)?this._sustainedNotes.has(s)||this._sustainedNotes.set(s,a):(this._strings.triggerRelease(s,a),this._harmonics.triggerAttack(s,a,k)),this._keybed.start(s,a,c)}return this}stopAll(){return this.pedalUp(),this._heldNotes.forEach((e,s)=>{this.keyUp({midi:s})}),this}}var events={exports:{}},R=typeof Reflect=="object"?Reflect:null,ReflectApply=R&&typeof R.apply=="function"?R.apply:function o(e,s,a){return Function.prototype.apply.call(e,s,a)},ReflectOwnKeys;R&&typeof R.ownKeys=="function"?ReflectOwnKeys=R.ownKeys:Object.getOwnPropertySymbols?ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e)};function ProcessEmitWarning(o){console&&console.warn&&console.warn(o)}var NumberIsNaN=Number.isNaN||function o(e){return e!==e};function EventEmitter(){EventEmitter.init.call(this)}events.exports=EventEmitter;events.exports.once=once;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=void 0;EventEmitter.prototype._eventsCount=0;EventEmitter.prototype._maxListeners=void 0;var defaultMaxListeners=10;function checkListener(o){if(typeof o!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof o)}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:!0,get:function(){return defaultMaxListeners},set:function(o){if(typeof o!="number"||o<0||NumberIsNaN(o))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+o+".");defaultMaxListeners=o}});EventEmitter.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};EventEmitter.prototype.setMaxListeners=function o(e){if(typeof e!="number"||e<0||NumberIsNaN(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function _getMaxListeners(o){return o._maxListeners===void 0?EventEmitter.defaultMaxListeners:o._maxListeners}EventEmitter.prototype.getMaxListeners=function o(){return _getMaxListeners(this)};EventEmitter.prototype.emit=function o(e){for(var s=[],a=1;a0&&(_=s[0]),_ instanceof Error)throw _;var b=new Error("Unhandled error."+(_?" ("+_.message+")":""));throw b.context=_,b}var k=d[e];if(k===void 0)return!1;if(typeof k=="function")ReflectApply(k,this,s);else for(var $=k.length,j=arrayClone(k,$),a=0;a<$;++a)ReflectApply(j[a],this,s);return!0};function _addListener(o,e,s,a){var c,d,_;if(checkListener(s),d=o._events,d===void 0?(d=o._events=Object.create(null),o._eventsCount=0):(d.newListener!==void 0&&(o.emit("newListener",e,s.listener?s.listener:s),d=o._events),_=d[e]),_===void 0)_=d[e]=s,++o._eventsCount;else if(typeof _=="function"?_=d[e]=a?[s,_]:[_,s]:a?_.unshift(s):_.push(s),c=_getMaxListeners(o),c>0&&_.length>c&&!_.warned){_.warned=!0;var b=new Error("Possible EventEmitter memory leak detected. "+_.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");b.name="MaxListenersExceededWarning",b.emitter=o,b.type=e,b.count=_.length,ProcessEmitWarning(b)}return o}EventEmitter.prototype.addListener=function o(e,s){return _addListener(this,e,s,!1)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function o(e,s){return _addListener(this,e,s,!0)};function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(o,e,s){var a={fired:!1,wrapFn:void 0,target:o,type:e,listener:s},c=onceWrapper.bind(a);return c.listener=s,a.wrapFn=c,c}EventEmitter.prototype.once=function o(e,s){return checkListener(s),this.on(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.prependOnceListener=function o(e,s){return checkListener(s),this.prependListener(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.removeListener=function o(e,s){var a,c,d,_,b;if(checkListener(s),c=this._events,c===void 0)return this;if(a=c[e],a===void 0)return this;if(a===s||a.listener===s)--this._eventsCount===0?this._events=Object.create(null):(delete c[e],c.removeListener&&this.emit("removeListener",e,a.listener||s));else if(typeof a!="function"){for(d=-1,_=a.length-1;_>=0;_--)if(a[_]===s||a[_].listener===s){b=a[_].listener,d=_;break}if(d<0)return this;d===0?a.shift():spliceOne(a,d),a.length===1&&(c[e]=a[0]),c.removeListener!==void 0&&this.emit("removeListener",e,b||s)}return this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.removeAllListeners=function o(e){var s,a,c;if(a=this._events,a===void 0)return this;if(a.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):a[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete a[e]),this;if(arguments.length===0){var d=Object.keys(a),_;for(c=0;c=0;c--)this.removeListener(e,s[c]);return this};function _listeners(o,e,s){var a=o._events;if(a===void 0)return[];var c=a[e];return c===void 0?[]:typeof c=="function"?s?[c.listener||c]:[c]:s?unwrapListeners(c):arrayClone(c,c.length)}EventEmitter.prototype.listeners=function o(e){return _listeners(this,e,!0)};EventEmitter.prototype.rawListeners=function o(e){return _listeners(this,e,!1)};EventEmitter.listenerCount=function(o,e){return typeof o.listenerCount=="function"?o.listenerCount(e):listenerCount.call(o,e)};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(o){var e=this._events;if(e!==void 0){var s=e[o];if(typeof s=="function")return 1;if(s!==void 0)return s.length}return 0}EventEmitter.prototype.eventNames=function o(){return this._eventsCount>0?ReflectOwnKeys(this._events):[]};function arrayClone(o,e){for(var s=new Array(e),a=0;a>4,j=15&_.data[0],_e=1+j;if(1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0),a.nrpnEventsEnabled&&$===a.MIDI_CHANNEL_MESSAGES.controlchange&&(b>=a.MIDI_NRPN_MESSAGES.increment&&b<=a.MIDI_NRPN_MESSAGES.parammsb||b===a.MIDI_NRPN_MESSAGES.entrymsb||b===a.MIDI_NRPN_MESSAGES.entrylsb)){var et={target:this,type:"controlchange",data:_.data,timestamp:_.timeStamp,channel:_e,controller:{number:b,name:this.getCcNameByNumber(b)},value:k};if(et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value!=a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j]=[],a._nrpnBuffer[j][0]=et;else if(a._nrpnBuffer[j].length===1&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb)a._nrpnBuffer[j].push(et);else if(a._nrpnBuffer[j].length!==2||et.controller.number!==a.MIDI_NRPN_MESSAGES.increment&&et.controller.number!==a.MIDI_NRPN_MESSAGES.decrement&&et.controller.number!==a.MIDI_NRPN_MESSAGES.entrymsb)if(a._nrpnBuffer[j].length===3&&a._nrpnBuffer[j][2].number===a.MIDI_NRPN_MESSAGES.entrymsb&&et.controller.number===a.MIDI_NRPN_MESSAGES.entrylsb)a._nrpnBuffer[j].push(et);else if(3<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=4&&et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j].push(et);else if(4<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=5&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter){a._nrpnBuffer[j].push(et);var tt=[];a._nrpnBuffer[j].forEach(function(at){tt.push(at.data)});var nt=a._nrpnBuffer[j][0].value<<7|a._nrpnBuffer[j][1].value,st=a._nrpnBuffer[j][2].value;a._nrpnBuffer[j].length===6&&(st=a._nrpnBuffer[j][2].value<<7|a._nrpnBuffer[j][3].value);var rt="";switch(a._nrpnBuffer[j][2].controller.number){case a.MIDI_NRPN_MESSAGES.entrymsb:rt=a._nrpnTypes[0];break;case a.MIDI_NRPN_MESSAGES.increment:rt=a._nrpnTypes[1];break;case a.MIDI_NRPN_MESSAGES.decrement:rt=a._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var it={timestamp:et.timestamp,channel:et.channel,type:"nrpn",data:tt,controller:{number:nt,type:rt,name:"Non-Registered Parameter "+nt},value:st};a._nrpnBuffer[j]=[],this._userHandlers.channel[it.type]&&this._userHandlers.channel[it.type][it.channel]&&this._userHandlers.channel[it.type][it.channel].forEach(function(at){at(it)})}else a._nrpnBuffer[j]=[];else a._nrpnBuffer[j].push(et)}},c.prototype._parseChannelEvent=function(_){var b,k,$=_.data[0]>>4,j=1+(15&_.data[0]);1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0);var _e={target:this,data:_.data,timestamp:_.timeStamp,channel:j};$===a.MIDI_CHANNEL_MESSAGES.noteoff||$===a.MIDI_CHANNEL_MESSAGES.noteon&&k===0?(_e.type="noteoff",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.noteon?(_e.type="noteon",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.keyaftertouch?(_e.type="keyaftertouch",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.value=k/127):$===a.MIDI_CHANNEL_MESSAGES.controlchange&&0<=b&&b<=119?(_e.type="controlchange",_e.controller={number:b,name:this.getCcNameByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.channelmode&&120<=b&&b<=127?(_e.type="channelmode",_e.controller={number:b,name:this.getChannelModeByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.programchange?(_e.type="programchange",_e.value=b):$===a.MIDI_CHANNEL_MESSAGES.channelaftertouch?(_e.type="channelaftertouch",_e.value=b/127):$===a.MIDI_CHANNEL_MESSAGES.pitchbend?(_e.type="pitchbend",_e.value=((k<<7)+b-8192)/8192):_e.type="unknownchannelmessage",this._userHandlers.channel[_e.type]&&this._userHandlers.channel[_e.type][j]&&this._userHandlers.channel[_e.type][j].forEach(function(et){et(_e)})},c.prototype.getCcNameByNumber=function(_){if(!(0<=(_=Math.floor(_))&&_<=119))throw new RangeError("The control change number must be between 0 and 119.");for(var b in a.MIDI_CONTROL_CHANGE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CONTROL_CHANGE_MESSAGES,b)&&_===a.MIDI_CONTROL_CHANGE_MESSAGES[b])return b},c.prototype.getChannelModeByNumber=function(_){if(!(120<=(_=Math.floor(_))&&status<=127))throw new RangeError("The control change number must be between 120 and 127.");for(var b in a.MIDI_CHANNEL_MODE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CHANNEL_MODE_MESSAGES,b)&&_===a.MIDI_CHANNEL_MODE_MESSAGES[b])return b},c.prototype._parseSystemEvent=function(_){var b=_.data[0],k={target:this,data:_.data,timestamp:_.timeStamp};b===a.MIDI_SYSTEM_MESSAGES.sysex?k.type="sysex":b===a.MIDI_SYSTEM_MESSAGES.timecode?k.type="timecode":b===a.MIDI_SYSTEM_MESSAGES.songposition?k.type="songposition":b===a.MIDI_SYSTEM_MESSAGES.songselect?(k.type="songselect",k.song=_.data[1]):b===a.MIDI_SYSTEM_MESSAGES.tuningrequest?k.type="tuningrequest":b===a.MIDI_SYSTEM_MESSAGES.clock?k.type="clock":b===a.MIDI_SYSTEM_MESSAGES.start?k.type="start":b===a.MIDI_SYSTEM_MESSAGES.continue?k.type="continue":b===a.MIDI_SYSTEM_MESSAGES.stop?k.type="stop":b===a.MIDI_SYSTEM_MESSAGES.activesensing?k.type="activesensing":b===a.MIDI_SYSTEM_MESSAGES.reset?k.type="reset":k.type="unknownsystemmessage",this._userHandlers.system[k.type]&&this._userHandlers.system[k.type].forEach(function($){$(k)})},d.prototype.send=function(_,b,k){if(!(128<=_&&_<=255))throw new RangeError("The status byte must be an integer between 128 (0x80) and 255 (0xFF).");b===void 0&&(b=[]),Array.isArray(b)||(b=[b]);var $=[];return b.forEach(function(j){var _e=Math.floor(j);if(!(0<=_e&&_e<=255))throw new RangeError("Data bytes must be integers between 0 (0x00) and 255 (0xFF).");$.push(_e)}),this._midiOutput.send([_].concat($),parseFloat(k)||0),this},d.prototype.sendSysex=function(_,b,k){if(!a.sysexEnabled)throw new Error("Sysex message support must first be activated.");return k=k||{},_=[].concat(_),b.forEach(function($){if($<0||127<$)throw new RangeError("The data bytes of a sysex message must be integers between 0 (0x00) and 127 (0x7F).")}),b=_.concat(b,a.MIDI_SYSTEM_MESSAGES.sysexend),this.send(a.MIDI_SYSTEM_MESSAGES.sysex,b,this._parseTimeParameter(k.time)),this},d.prototype.sendTimecodeQuarterFrame=function(_,b){return b=b||{},this.send(a.MIDI_SYSTEM_MESSAGES.timecode,_,this._parseTimeParameter(b.time)),this},d.prototype.sendSongPosition=function(_,b){b=b||{};var k=(_=Math.floor(_)||0)>>7&127,$=127&_;return this.send(a.MIDI_SYSTEM_MESSAGES.songposition,[k,$],this._parseTimeParameter(b.time)),this},d.prototype.sendSongSelect=function(_,b){if(b=b||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(a.MIDI_SYSTEM_MESSAGES.songselect,[_],this._parseTimeParameter(b.time)),this},d.prototype.sendTuningRequest=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendClock=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStart=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendContinue=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStop=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendActiveSensing=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(_.time)),this},d.prototype.sendReset=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(_.time)),this},d.prototype.stopNote=function(_,b,k){if(_==="all")return this.sendChannelMode("allnotesoff",0,b,k);var $=64;return(k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&($=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&($=127*k.velocity),this._convertNoteToArray(_).forEach(function(j){a.toMIDIChannels(b).forEach(function(_e){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(_e-1),[j,Math.round($)],this._parseTimeParameter(k.time))}.bind(this))}.bind(this)),this},d.prototype.playNote=function(_,b,k){var $,j=64;if((k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&(j=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&(j=127*k.velocity),$=this._parseTimeParameter(k.time),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteon<<4)+(tt-1),[et,Math.round(j)],$)}.bind(this))}.bind(this)),!isNaN(k.duration)){k.duration<=0&&(k.duration=0);var _e=64;k.rawVelocity?!isNaN(k.release)&&0<=k.release&&k.release<=127&&(_e=k.release):!isNaN(k.release)&&0<=k.release&&k.release<=1&&(_e=127*k.release),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(tt-1),[et,Math.round(_e)],($||a.time)+k.duration)}.bind(this))}.bind(this))}return this},d.prototype.sendKeyAftertouch=function(_,b,k,$){var j=this;if($=$||{},b<1||16>7&127,tt=127&_e;return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("channelcoarsetuning",j,b,{time:k.time}),$.setRegisteredParameter("channelfinetuning",[et,tt],b,{time:k.time})}),this},d.prototype.setTuningProgram=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The program value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningprogram",_,b,{time:k.time})}),this},d.prototype.setTuningBank=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_)||0)&&_<=127))throw new RangeError("The bank value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningbank",_,b,{time:k.time})}),this},d.prototype.sendChannelMode=function(_,b,k,$){if($=$||{},typeof _=="string"){if(!(_=a.MIDI_CHANNEL_MODE_MESSAGES[_]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(_=Math.floor(_))&&_<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((b=Math.floor(b)||0)<0||127>7&127,et=127&j;return a.toMIDIChannels(b).forEach(function(tt){$.send((a.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(tt-1),[et,_e],$._parseTimeParameter(k.time))}),this},d.prototype._parseTimeParameter=function(_){var b,k=parseFloat(_);return typeof _=="string"&&_.substring(0,1)==="+"?k&&0a.time&&(b=k),b},d.prototype._convertNoteToArray=function(_){var b=[];return Array.isArray(_)||(_=[_]),_.forEach(function(k){b.push(a.guessNoteNumber(k))}),b},o.exports?o.exports=a:e.WebMidi||(e.WebMidi=a)})(commonjsGlobal)})(webmidi_min);var _WebMidi=webmidi_min.exports,__awaiter=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class MidiInput extends events.exports.EventEmitter{constructor(e="all"){super(),this.deviceId=e,MidiInput.enabled().then(()=>{_WebMidi.addListener("connected",s=>{s.port.type==="input"&&this._addListeners(s.port)}),_WebMidi.addListener("disconnected",s=>{this._removeListeners(s.port)}),_WebMidi.inputs.forEach(s=>this._addListeners(s))})}_addListeners(e){MidiInput.connectedDevices.has(e.id)||(MidiInput.connectedDevices.set(e.id,e),this.emit("connect",this._inputToDevice(e)),e.addListener("noteon","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyDown",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("noteoff","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyUp",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("controlchange","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&s.controller.name==="holdpedal"&&this.emit(s.value?"pedalDown":"pedalUp",{device:this._inputToDevice(e)})}))}_inputToDevice(e){return{name:e.name,id:e.id,manufacturer:e.manufacturer}}_removeListeners(e){if(MidiInput.connectedDevices.has(e.id)){const s=MidiInput.connectedDevices.get(e.id);this.emit("disconnect",this._inputToDevice(s)),MidiInput.connectedDevices.delete(e.id),s.removeListener("noteon"),s.removeListener("noteoff"),s.removeListener("controlchange")}}emit(e,s){return super.emit(e,s)}on(e,s){return super.on(e,s),this}once(e,s){return super.once(e,s),this}off(e,s){return super.off(e,s),this}static enabled(){return __awaiter(this,void 0,void 0,function*(){MidiInput._isEnabled||(yield new Promise((e,s)=>{_WebMidi.enable(a=>{a?s(a):(MidiInput._isEnabled=!0,e())})}))})}static getDevices(){return __awaiter(this,void 0,void 0,function*(){return yield MidiInput.enabled(),_WebMidi.inputs})}}MidiInput.connectedDevices=new Map;MidiInput._isEnabled=!1;var tonePiano=Object.freeze(Object.defineProperty({__proto__:null,Piano:Piano$1,MidiInput},Symbol.toStringTag,{value:"Module"}));const Tone=_Tone,{AutoFilter,Destination,Filter,Gain,isNote,Synth,PolySynth,MembraneSynth,MetalSynth,MonoSynth,AMSynth,DuoSynth,FMSynth,NoiseSynth,PluckSynth,Sampler,getDestination,Players}=Tone,{Piano}=tonePiano,getDefaultSynth=()=>{const o=new PolySynth().chain(new Gain(.5),getDestination());return o.set({oscillator:{type:"triangle"},envelope:{release:.01}}),o};Pattern$4.prototype.tone=function(o){return this._withHap(e=>{const s=(a,c)=>{var b,k;let d,_=(k=(b=c.context)==null?void 0:b.velocity)!=null?k:.75;if(o instanceof PluckSynth)d=getPlayableNoteValue(c),o.triggerAttack(d,a);else if(o instanceof NoiseSynth)o.triggerAttackRelease(c.duration.valueOf(),a);else if(o instanceof Piano)d=getPlayableNoteValue(c),o.keyDown({note:d,time:a,velocity:_}),o.keyUp({note:d,time:a+c.duration.valueOf(),velocity:_});else if(o instanceof Sampler)d=getPlayableNoteValue(c),o.triggerAttackRelease(d,c.duration.valueOf(),a,_);else if(o instanceof Players){if(!o.has(c.value))throw new Error(`name "${c.value}" not defined for players`);const $=o.player(c.value);$.start(a),$.stop(a+c.duration.valueOf())}else d=getPlayableNoteValue(c),o.triggerAttackRelease(d,c.duration.valueOf(),a,_)};return e.setContext(kt(Dt({},e.context),{instrument:o,onTrigger:s}))})};Pattern$4.prototype.define("tone",(o,e)=>e.tone(o),{composable:!0,patternified:!1});const amsynth=o=>new AMSynth(o),duosynth=o=>new DuoSynth(o),fmsynth=o=>new FMSynth(o),membrane=o=>new MembraneSynth(o),metal=o=>new MetalSynth(o),monosynth=o=>new MonoSynth(o),noise=o=>new NoiseSynth(o),pluck=o=>new PluckSynth(o),polysynth=o=>new PolySynth(o),sampler=(o,e)=>new Promise(s=>{const a=new Sampler(o,()=>s(a),e)}),players=(o,e="")=>(o=e?Object.fromEntries(Object.entries(o).map(([s,a])=>[s,e+a])):o,new Promise(s=>{const a=new Players(o,()=>s(a))})),synth=o=>new Synth(o),piano=async(o={velocities:1})=>{const e=new Piano(o);return await e.load(),e},vol=o=>new Gain(o),lowpass=o=>new Filter(o,"lowpass"),highpass=o=>new Filter(o,"highpass"),adsr=(o,e=.1,s=.4,a=.01)=>({envelope:{attack:o,decay:e,sustain:s,release:a}}),osc=o=>({oscillator:{type:o}}),out=()=>getDestination(),getDrawContext$1=(o="test-canvas")=>{let e=document.querySelector("#"+o);return e||(e=document.createElement("canvas"),e.id=o,e.width=window.innerWidth,e.height=window.innerHeight,e.style="pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0;z-index:5",document.body.prepend(e)),e.getContext("2d")};Pattern$4.prototype.draw=function(o,{from:e,to:s,onQuery:a}){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const c=getDrawContext$1();let d,_=[];const b=k=>{const $=Tone.getTransport().seconds;if(e!==void 0&&s!==void 0){const j=Math.floor($);if(d!==j){d=j;const _e=j+e,et=j+s;setTimeout(()=>{_=this._asNumber(!0).query(new State(new TimeSpan(_e,et))).filter(Boolean).filter(tt=>tt.part.begin.equals(tt.whole.begin)),a==null||a(_)},0)}}o(c,_,$,k),window.strudelAnimation=requestAnimationFrame(b)};return requestAnimationFrame(b),this};const cleanupDraw=()=>{getDrawContext$1().clearRect(0,0,window.innerWidth,window.innerHeight),window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation),window.strudelScheduler&&clearInterval(window.strudelScheduler)},hideHeader=()=>{document.getElementById("header").style="display:none"};function frame(o){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const e=s=>{const a=Tone.getTransport().seconds;o(s,a),window.strudelAnimation=requestAnimationFrame(e)};requestAnimationFrame(e)}const backgroundImage=function(o,e={}){const s=document.getElementById("code"),a="background-image:url("+o+");background-size:contain;";s.style=a;const{className:c}=s,d=(k,$)=>{({style:()=>s.style=a+";"+$,className:()=>s.className=$+" "+c})[k]()},_=Object.entries(e).filter(([k,$])=>typeof $=="function");Object.entries(e).filter(([k,$])=>typeof $=="string").forEach(([k,$])=>d(k,$)),_.length!==0&&frame((k,$)=>_.forEach(([j,_e])=>{d(j,_e($))}))},cleanupUi=()=>{const o=document.getElementById("code");o&&(o.style="",o.className="grow relative")},WebMidi=_WebMidi;function enableWebMidi(){return new Promise((o,e)=>{if(WebMidi.enabled){o(WebMidi);return}WebMidi.enable(s=>{s&&e(s),o(WebMidi)})})}const outputByName=o=>WebMidi.getOutputByName(o);Pattern$4.prototype.midi=function(o,e=1){var s,a,c;if(isPattern$1((s=o==null?void 0:o.constructor)==null?void 0:s.name))throw new Error(`.midi does not accept Pattern input. Make sure to pass device name with single quotes. Example: .midi('${((c=(a=WebMidi.outputs)==null?void 0:a[0])==null?void 0:c.name)||"IAC Driver Bus 1"}')`);return this._withHap(d=>{const _=(b,k)=>{var tt,nt;let $=k.value;const j=(nt=(tt=k.context)==null?void 0:tt.velocity)!=null?nt:.9;if(!isNote$1($))throw new Error("not a note: "+$);if(!WebMidi.enabled)throw new Error("\u{1F3B9} WebMidi is not enabled. Supported Browsers: https://caniuse.com/?search=webmidi");if(!WebMidi.outputs.length)throw new Error("\u{1F50C} No MIDI devices found. Connect a device or enable IAC Driver.");let _e;if(typeof o=="number"?_e=WebMidi.outputs[o]:typeof o=="string"?_e=outputByName(o):_e=WebMidi.outputs[0],!_e)throw new Error(`\u{1F50C} MIDI device '${o||""}' not found. Use one of ${WebMidi.outputs.map(st=>`'${st.name}'`).join(" | ")}`);const et=WebMidi.time-Tone.getContext().currentTime*1e3;b=b*1e3+et,_e.playNote($,e,{time:b,duration:k.duration.valueOf()*1e3-5,velocity:j})};return d.setContext(kt(Dt({},d.context),{onTrigger:_}))})};const ivory="#abb2bf",stone="#7d8799",invalid="#ffffff",darkBackground="#21252b",highlightBackground="rgba(0, 0, 0, 0.5)",background="transparent",tooltipBackground="#353a42",selection="rgba(128, 203, 196, 0.5)",cursor="#ffcc00",materialPalenightTheme=EditorView.theme({"&":{color:"#ffffff",backgroundColor:background,fontSize:"15px","z-index":11},".cm-content":{caretColor:cursor,lineHeight:"22px"},".cm-line":{background:"#2C323699"},"&.cm-focused .cm-cursor":{backgroundColor:cursor,width:"3px"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:selection},".cm-panels":{backgroundColor:darkBackground,color:"#ffffff"},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:highlightBackground},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{background:"transparent",color:"#676e95",border:"none"},".cm-activeLineGutter":{backgroundColor:highlightBackground},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:tooltipBackground},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:highlightBackground,color:ivory}}},{dark:!0}),materialPalenightHighlightStyle=HighlightStyle.define([{tag:tags.keyword,color:"#c792ea"},{tag:tags.operator,color:"#89ddff"},{tag:tags.special(tags.variableName),color:"#eeffff"},{tag:tags.typeName,color:"#f07178"},{tag:tags.atom,color:"#f78c6c"},{tag:tags.number,color:"#ff5370"},{tag:tags.definition(tags.variableName),color:"#82aaff"},{tag:tags.string,color:"#c3e88d"},{tag:tags.special(tags.string),color:"#f07178"},{tag:tags.comment,color:stone},{tag:tags.variableName,color:"#f07178"},{tag:tags.tagName,color:"#ff5370"},{tag:tags.bracket,color:"#a2a1a4"},{tag:tags.meta,color:"#ffcb6b"},{tag:tags.attributeName,color:"#c792ea"},{tag:tags.propertyName,color:"#c792ea"},{tag:tags.className,color:"#decb6b"},{tag:tags.invalid,color:invalid}]),materialPalenight=[materialPalenightTheme,materialPalenightHighlightStyle],setHighlights=StateEffect.define(),highlightField=StateField.define({create(){return Decoration.none},update(o,e){try{for(let s of e.effects)s.is(setHighlights)&&(o=Decoration.set(s.value.flatMap(a=>(a.context.locations||[]).map(({start:c,end:d})=>{const _=a.context.color||"#FFCA28";let b=e.newDoc.line(c.line).from+c.column,k=e.newDoc.line(d.line).from+d.column;const $=e.newDoc.length;return b>$||k>$?void 0:Decoration.mark({attributes:{style:`outline: 1px solid ${_}`}}).range(b,k)})).filter(Boolean),!0));return o}catch{return o}},provide:o=>EditorView.decorations.from(o)});function CodeMirror({value:o,onChange:e,onViewChanged:s,onCursor:a,options:c,editorDidMount:d}){return jsx(Fragment,{children:jsx(CodeMirror$1,{onViewChange:s,style:{display:"flex",flexDirection:"column",flex:"1 0 auto"},value:o,onChange:e,extensions:[javascript(),materialPalenight,highlightField]})})}function useCycle(o){const{onEvent:e,onQuery:s,onSchedule:a,ready:c=!0,onDraw:d}=o,[_,b]=react.exports.useState(!1),k=1,$=()=>Math.floor(Tone.getTransport().seconds/k),j=(nt=$())=>{const st=new TimeSpan$1(nt,nt+1),rt=(s==null?void 0:s(new State$1(st)))||[];a==null||a(rt,nt);const it=st.begin.valueOf();Tone.getTransport().cancel(it);const at=(nt+1)*k-.5,ot=Math.max(Tone.getTransport().seconds,at)+.1;Tone.getTransport().schedule(()=>{j(nt+1)},ot),rt==null||rt.filter(ht=>{var ct;return ht.part.begin.equals((ct=ht.whole)==null?void 0:ct.begin)}).forEach(ht=>{Tone.getTransport().schedule(ct=>{e(ct,ht,Tone.getContext().currentTime),Tone.Draw.schedule(()=>{d==null||d(ct,ht)},ct)},ht.part.begin.valueOf())})};react.exports.useEffect(()=>{c&&j()},[e,a,s,d,c]);const _e=async()=>{b(!0),await Tone.start(),Tone.getTransport().start("+0.1")},et=()=>{Tone.getTransport().pause(),b(!1)};return{start:_e,stop:et,onEvent:e,started:_,setStarted:b,toggle:()=>_?et():_e(),query:j,activeCycle:$}}function usePostMessage(o){return react.exports.useEffect(()=>(window.addEventListener("message",o),()=>window.removeEventListener("message",o)),[o]),react.exports.useCallback(e=>window.postMessage(e,"*"),[])}let s4=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);const generateHash=o=>encodeURIComponent(btoa(o));function useRepl({tune:o,defaultSynth:e,autolink:s=!0,onEvent:a,onDraw:c}){const d=react.exports.useMemo(()=>s4(),[]),[_,b]=react.exports.useState(o),[k,$]=react.exports.useState(),[j,_e]=react.exports.useState(""),[et,tt]=react.exports.useState(),[nt,st]=react.exports.useState(!1),[rt,it]=react.exports.useState(""),[at,ot]=react.exports.useState(),ht=react.exports.useMemo(()=>_!==k||et,[_,k,et]),ct=react.exports.useCallback(ft=>_e(mt=>mt+`${mt?` + +`:""}${ft}`),[]),lt=react.exports.useMemo(()=>{if(k&&!k.includes("strudel disable-highlighting"))return(ft,mt)=>c==null?void 0:c(ft,mt,k)},[k,c]),ut=useCycle({onDraw:lt,onEvent:react.exports.useCallback((ft,mt,Et)=>{var _t;try{a==null||a(mt),(_t=mt.context.logs)!=null&&_t.length&&mt.context.logs.forEach(ct);const{onTrigger:St,velocity:vt}=mt.context;if(St)St(ft,mt,Et,1,mt.wholeOrPart().begin.valueOf(),mt.duration.valueOf());else if(e){const Ct=getPlayableNoteValue(mt);e.triggerAttackRelease(Ct,mt.duration.valueOf(),ft,vt)}else throw new Error("no defaultSynth passed to useRepl.")}catch(St){console.warn(St),St.message="unplayable event: "+(St==null?void 0:St.message),ct(St.message)}},[a,ct,e]),onQuery:react.exports.useCallback(ft=>{try{return(at==null?void 0:at.query(ft))||[]}catch(mt){return console.warn(mt),mt.message="query error: "+mt.message,tt(mt),[]}},[at]),onSchedule:react.exports.useCallback((ft,mt)=>gt(ft,mt),[]),ready:!!at&&!!k}),dt=usePostMessage(({data:{from:ft,type:mt}})=>{mt==="start"&&ft!==d&&(ut.setStarted(!1),$(void 0))}),pt=react.exports.useCallback(async(ft=_)=>{if(k&&!ht){tt(void 0),ut.start();return}try{st(!0);const mt=await evaluate(ft);ut.start(),dt({type:"start",from:d}),ot(()=>mt.pattern),s&&(window.location.hash="#"+encodeURIComponent(btoa(_))),it(generateHash(_)),tt(void 0),$(ft),st(!1)}catch(mt){mt.message="evaluation error: "+mt.message,console.warn(mt),tt(mt)}},[k,ht,_,ut,s,d,dt]),gt=(ft,mt)=>{ft.length};return{pending:nt,code:_,setCode:b,pattern:at,error:et,cycle:ut,setPattern:ot,dirty:ht,log:j,togglePlay:()=>{ut.started?ut.stop():pt()},setActiveCode:$,activateCode:pt,activeCode:k,pushLog:ct,hash:rt}}function cx(...o){return o.filter(Boolean).join(" ")}let highlights=[],lastEnd;function useHighlighting({view:o,pattern:e,active:s}){react.exports.useEffect(()=>{if(o)if(e&&s){let c=function(){try{const d=Tone.getTransport().seconds,b=[Math.max(lastEnd||d,d-1/10),d+1/60];lastEnd=d+1/60,highlights=highlights.filter($=>$.whole.end>d);const k=e.queryArc(...b).filter($=>$.hasOnset());highlights=highlights.concat(k),o.dispatch({effects:setHighlights.of(highlights)})}catch{o.dispatch({effects:setHighlights.of([])})}a=requestAnimationFrame(c)},a=requestAnimationFrame(c);return()=>{cancelAnimationFrame(a)}}else highlights=[],o.dispatch({effects:setHighlights.of([])})},[e,s,o])}function useWebMidi(o){const{ready:e,connected:s,disconnected:a}=o,[c,d]=react.exports.useState(!0),[_,b]=react.exports.useState((WebMidi==null?void 0:WebMidi.outputs)||[]);return react.exports.useEffect(()=>{enableWebMidi().then(()=>{WebMidi.addListener("connected",$=>{b([...WebMidi.outputs]),s==null||s(WebMidi,$)}),WebMidi.addListener("disconnected",$=>{b([...WebMidi.outputs]),a==null||a(WebMidi,$)}),e==null||e(WebMidi),d(!1)}).catch($=>{if($){console.error($),console.warn("Web Midi could not be enabled..");return}})},[e,s,a,_]),{loading:c,outputs:_,outputByName:$=>WebMidi.getOutputByName($)}}var App$1="",logo="/assets/logo.1efda363.svg";const timeCatMini=`stack( + "c3@3 [eb3, g3, [c4 d4]/2]", + "c2 g2", + "[eb4@5 [f4 eb4 d4]@3] [eb4 c4]/2".slow(8) +)`,timeCat=`stack( + timeCat([3, c3], [1, stack(eb3, g3, seq(c4, d4).slow(2))]), + seq(c2, g2), + seq( + timeCat([5, eb4], [3, seq(f4, eb4, d4)]), + seq(eb4, c4).slow(2) + ).slow(4) +)`,shapeShifted=`stack( + seq( + e5, [b4, c5], d5, [c5, b4], + a4, [a4, c5], e5, [d5, c5], + b4, [r, c5], d5, e5, + c5, a4, a4, r, + [r, d5], [r, f5], a5, [g5, f5], + e5, [r, c5], e5, [d5, c5], + b4, [b4, c5], d5, e5, + c5, a4, a4, r, + ).rev(), + seq( + e2, e3, e2, e3, e2, e3, e2, e3, + a2, a3, a2, a3, a2, a3, a2, a3, + gs2, gs3, gs2, gs3, e2, e3, e2, e3, + a2, a3, a2, a3, a2, a3, b1, c2, + d2, d3, d2, d3, d2, d3, d2, d3, + c2, c3, c2, c3, c2, c3, c2, c3, + b1, b2, b1, b2, e2, e3, e2, e3, + a1, a2, a1, a2, a1, a2, a1, a2, + ).rev() +).slow(16)`,tetrisMini=`\`[[e5 [b4 c5] d5 [c5 b4]] +[a4 [a4 c5] e5 [d5 c5]] +[b4 [~ c5] d5 e5] +[c5 a4 a4 ~] +[[~ d5] [~ f5] a5 [g5 f5]] +[e5 [~ c5] e5 [d5 c5]] +[b4 [b4 c5] d5 e5] +[c5 a4 a4 ~]], +[[e2 e3]*4] +[[a2 a3]*4] +[[g#2 g#3]*2 [e2 e3]*2] +[a2 a3 a2 a3 a2 a3 b1 c2] +[[d2 d3]*4] +[[c2 c3]*4] +[[b1 b2]*2 [e2 e3]*2] +[[a1 a2]*4]\`.slow(16) +`,whirlyStrudel=`seq(e4, [b2, b3], c4) +.every(4, fast(2)) +.every(3, slow(1.5)) +.fast(cat(1.25, 1, 1.5)) +.every(2, _ => seq(e4, r, e3, d4, r))`,swimming=`stack( + seq( + "~", + "~", + "~", + "A5 [F5@2 C5] [D5@2 F5] F5", + "[C5@2 F5] [F5@2 C6] A5 G5", + "A5 [F5@2 C5] [D5@2 F5] F5", + "[C5@2 F5] [Bb5 A5 G5] F5@2", + "A5 [F5@2 C5] [D5@2 F5] F5", + "[C5@2 F5] [F5@2 C6] A5 G5", + "A5 [F5@2 C5] [D5@2 F5] F5", + "[C5@2 F5] [Bb5 A5 G5] F5@2", + "A5 [F5@2 C5] A5 F5", + "Ab5 [F5@2 Ab5] G5@2", + "A5 [F5@2 C5] A5 F5", + "Ab5 [F5@2 C5] C6@2", + "A5 [F5@2 C5] [D5@2 F5] F5", + "[C5@2 F5] [Bb5 A5 G5] F5@2" + ), + seq( + "[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]", + "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]", + "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", + "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", + "[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]", + "[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", + "[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]", + "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", + "[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]", + "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", + "[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]", + "[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]", + "[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]", + "[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]", + "[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]", + "[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]", + "[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]" + ), + seq( + "[G3 G3 C3 E3]", + "[F2 D2 G2 C2]", + "[F2 D2 G2 C2]", + "[F2 A2 Bb2 B2]", + "[A2 Ab2 G2 C2]", + "[F2 A2 Bb2 B2]", + "[G2 C2 F2 F2]", + "[F2 A2 Bb2 B2]", + "[A2 Ab2 G2 C2]", + "[F2 A2 Bb2 B2]", + "[G2 C2 F2 F2]", + "[Bb2 Bb2 A2 A2]", + "[Ab2 Ab2 G2 [C2 D2 E2]]", + "[Bb2 Bb2 A2 A2]", + "[Ab2 Ab2 G2 [C2 D2 E2]]", + "[F2 A2 Bb2 B2]", + "[G2 C2 F2 F2]" + ) +).slow(51); +`,giantSteps=`stack( + // melody + seq( + "[F#5 D5] [B4 G4] Bb4 [B4 A4]", + "[D5 Bb4] [G4 Eb4] F#4 [G4 F4]", + "Bb4 [B4 A4] D5 [D#5 C#5]", + "F#5 [G5 F5] Bb5 [F#5 F#5]", + ), + // chords + seq( + "[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]", + "[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]", + "Eb^7 [Am7 D7] G^7 [C#m7 F#7]", + "B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]" + ).voicings(['E3', 'G4']), + // bass + seq( + "[B2 D2] [G2 Bb2] [Eb2 Bb3] [A2 D2]", + "[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]", + "[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]", + "[B2 F#2] [F2 Bb2] [Eb2 Bb3] [C#2 F#2]" + ) +).slow(20)`,giantStepsReggae=`stack( + // melody + seq( + "[F#5 D5] [B4 G4] Bb4 [B4 A4]", + "[D5 Bb4] [G4 Eb4] F#4 [G4 F4]", + "Bb4 [B4 A4] D5 [D#5 C#5]", + "F#5 [G5 F5] Bb5 [F#5 [F#5 ~@3]]", + ), + // chords + seq( + "[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]", + "[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]", + "Eb^7 [Am7 D7] G^7 [C#m7 F#7]", + "B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]" + ) + .struct("~ [x ~]".fast(4*8)) + .voicings(['E3', 'G4']), + // bass + seq( + "[B2 D2] [G2 D2] [Eb2 Bb2] [A2 D2]", + "[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]", + "[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]", + "[B2 F#2] [F2 Bb2] [Eb2 Bb2] [C#2 F#2]" + ) + .struct("x ~".fast(4*8)) +).slow(25)`,transposedChordsHacked=`stack( + "c2 eb2 g2", + "Cm7".voicings(['g2','c4']).slow(2) +).transpose( + "<1 2 3 2>".slow(2) +).transpose(5)`,scaleTranspose=`"f2,f3,c4,ab4" +.scale(seq('F minor', 'F harmonic minor').slow(4)) +.scaleTranspose("<0 -1 -2 -3>") +.transpose("0 1".slow(16))`,struct=`stack( + "c2 g2 a2 [e2@2 eb2] d2 a2 g2 [d2 ~ db2]", + "[C^7 A7] [Dm7 G7]".struct("[x@2 x] [~@2 x] [~ x@2]@2 [x ~@2] ~ [~@2 x@4]@2") + .voicings(['G3','A4']) +).slow(4)`,magicSofa=`stack( + " " + .every(2, fast(2)) + .voicings(), + " " +).transpose("<0 2 3 4>")`,confusedPhone=`"[g2 ~@1.3] [c3 ~@1.3]" +.superimpose( + transpose(-12).late(0), + transpose(7).late(0.1), + transpose(10).late(0.2), + transpose(12).late(0.3), + transpose(24).late(0.4) +) +.scale(cat('C dorian', 'C mixolydian')) +.scaleTranspose("<0 1 2 1>") +.slow(2)`,zeldasRescue=`stack( + // melody + \`[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] + [B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3] + [B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] + [B3@2 D4] [A4@2 G4] D5@2 + [D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2] + [D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]\`, + // bass + \`[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2] + [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2] + [[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2] + [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2] + [[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2] + [[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]\` +).transpose(12).slow(48).tone( + new PolySynth().chain( + new Gain(0.3), + new Chorus(2, 2.5, 0.5).start(), + new Freeverb(), + getDestination()) +)`,technoDrums=`stack( + "c1*2".tone(new MembraneSynth().toDestination()), + "~ x".tone(new NoiseSynth().toDestination()), + "[~ c4]*2".tone(new MetalSynth().set({envelope:{decay:0.06,sustain:0}}).chain(new Gain(0.5),getDestination())) +)`,caverave=`const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out()); +const kick = new MembraneSynth().chain(vol(.8), out()); +const snare = new NoiseSynth().chain(vol(.8), out()); +const hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out()); +const bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out()); +const keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out()); + +const drums = stack( + "c1*2".tone(kick).mask("/8"), + "~ ".tone(snare).mask("/4"), + "[~ c4]*2".tone(hihat) +); + +const thru = (x) => x.transpose("<0 1>/8").transpose(-1); +const synths = stack( + "/2".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct("[~ x]*2") + .edit( + scaleTranspose(0).early(0), + scaleTranspose(2).early(1/8), + scaleTranspose(7).early(1/4), + scaleTranspose(8).early(3/8) + ).apply(thru).tone(keys).mask("<~ x>/16"), + "/2".struct("[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2".fast(2)).apply(thru).tone(bass), + "/2".struct("~ [x@0.1 ~]".fast(2)).voicings().apply(thru).every(2, early(1/8)).tone(keys).mask("/8".early(1/4)) +) +stack( + drums.fast(2), + synths +).slow(2)`,callcenterhero=`const bpm = 90; +const lead = polysynth().set({...osc('sine4'),...adsr(.004)}).chain(vol(0.15),out()) +const bass = fmsynth({...osc('sawtooth6'),...adsr(0.05,.6,0.8,0.1)}).chain(vol(0.6), out()); +const s = scale(cat('F3 minor', 'Ab3 major', 'Bb3 dorian', 'C4 phrygian dominant').slow(4)); +stack( + "0 2".struct(" [x ~]").apply(s).scaleTranspose(stack(0,2)).tone(lead), + "<6 7 9 7>".struct("[~ [x ~]*2]*2").apply(s).scaleTranspose("[0,2] [2,4]".fast(2).every(4,rev)).tone(lead), + "-14".struct("[~ x@0.8]*2".early(0.01)).apply(s).tone(bass), + "c2*2".tone(membrane().chain(vol(0.6), out())), + "~ c2".tone(noise().chain(vol(0.2), out())), + "c4*4".tone(metal(adsr(0,.05,0)).chain(vol(0.03), out())) +) +.slow(120 / bpm)`,primalEnemy=`const f = fast("<1 <2 [4 8]>>"); +stack( + "c3,g3,c4".struct("[x ~]*2").apply(f).transpose("<0 <3 [5 [7 [9 [11 13]]]]>>"), + "c2 [c2 ~]*2".tone(synth(osc('sawtooth8')).chain(vol(0.8),out())), + "c1*2".tone(membrane().chain(vol(0.8),out())) +).slow(1)`,synthDrums=`stack( + "c1*2".tone(membrane().chain(vol(0.8),out())), + "~ c3".tone(noise().chain(vol(0.8),out())), + "c3*4".transpose("[-24 0]*2").tone(metal(adsr(0,.015)).chain(vol(0.8),out())) +) +`,sampleDrums=`const drums = await players({ + bd: 'bd/BT0A0D0.wav', + sn: 'sn/ST0T0S3.wav', + hh: 'hh/000_hh3closedhh.wav' +}, 'https://loophole-letters.vercel.app/samples/tidal/') + +stack( + "", + "hh*4", + "~ " +).tone(drums.chain(out())) +`,xylophoneCalling=`const t = x => x.scaleTranspose("<0 2 4 3>/4").transpose(-2) +const s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4)) +const delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out()); +const chorus = new Chorus(1,2.5,0.5).start(); +stack( + // melody + "<<10 7> <8 3>>/4".struct("x*3").apply(s) + .scaleTranspose("<0 3 2> <1 4 3>") + .superimpose(scaleTranspose(2).early(1/8)) + .apply(t).tone(polysynth().set({ + ...osc('triangle4'), + ...adsr(0,.08,0) + }).chain(vol(0.2).connect(delay),chorus,out())).mask("<~@3 x>/16".early(1/8)), + // pad + "[1,3]/4".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({ + ...osc('square2'), + ...adsr(0.1,.4,0.8) + }).chain(vol(0.2),chorus,out())).mask("<~ x>/32"), + // xylophone + "c3,g3,c4".struct("").fast("<1 <2!3 [4 8]>>").apply(s).scaleTranspose("<0 <1 [2 [3 <4 5>]]>>").apply(t).tone(polysynth().set({ + ...osc('sawtooth4'), + ...adsr(0,.1,0) + }).chain(vol(0.4).connect(delay),out())).mask("/16".early(1/8)), + // bass + "c2 [c2 ~]*2".scale('C hirajoshi').apply(t).tone(synth({ + ...osc('sawtooth6'), + ...adsr(0,.03,.4,.1) + }).chain(vol(0.4),out())), + // kick + "*2".tone(membrane().chain(vol(0.8),out())), + // snare + "~ ".tone(noise().chain(vol(0.8),out())), + // hihat + "c3*4".transpose("[-24 0]*2").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out())) +).slow(1) +// strudel disable-highlighting`,sowhatelse=`// mixer +const mix = (key) => vol({ + chords: .2, + lead: 0.8, + bass: .4, + snare: .95, + kick: .9, + hihat: .35, +}[key]||0); +const delay = new FeedbackDelay(1/6, .3).chain(vol(.7), out()); +const delay2 = new FeedbackDelay(1/6, .2).chain(vol(.15), out()); +const chorus = new Chorus(1,2.5,0.5).start(); +// instruments +const instr = (instrument) => ({ + organ: polysynth().set({...osc('sawtooth4'), ...adsr(.01,.2,0)}).chain(mix('chords').connect(delay),out()), + lead: polysynth().set({...osc('triangle4'),...adsr(0.01,.05,0)}).chain(mix('lead').connect(delay2), out()), + bass: polysynth().set({...osc('sawtooth8'),...adsr(.02,.05,.3,.2)}).chain(mix('bass'),lowpass(3000), out()), + pad: polysynth().set({...osc('square2'),...adsr(0.1,.4,0.8)}).chain(vol(0.15),chorus,out()), + hihat: metal(adsr(0, .02, 0)).chain(mix('hihat'), out()), + snare: noise(adsr(0, .15, 0.01)).chain(mix('snare'), lowpass(5000), out()), + kick: membrane().chain(mix('kick'), out()) +}[instrument]); +// harmony +const t = transpose("<0 0 1 0>/8"); +const sowhat = scaleTranspose("0,3,6,9,11"); +// track +stack( + "[<0 4 [3 [2 1]]>]/4".struct("[x]*3").mask("[~ x ~]").scale('D5 dorian').off(1/6, scaleTranspose(-7)).off(1/3, scaleTranspose(-5)).apply(t).tone(instr('lead')).mask("<~ ~ x x>/8"), + "< <[d3 ~] [c3 f3] g3>>".scale('D dorian').apply(sowhat).apply(t).tone(instr('organ')).mask("/8"), + "<[d2 [d2 ~]*3]!3 >".apply(t).tone(instr('bass')), + "c1*6".tone(instr('hihat')), + "~ c3".tone(instr('snare')), + "<[c1@5 c1] >".tone(instr('kick')), + "[2,4]/4".scale('D dorian').apply(t).tone(instr('pad')).mask("/8") +).fast(6/8) +// strudel disable-highlighting`,barryHarris=`backgroundImage( + 'https://media.npr.org/assets/img/2017/02/03/barryharris_600dpi_wide-7eb49998aa1af377d62bb098041624c0a0d1a454.jpg', + {style:'background-size:cover'}) + +"0,2,[7 6]" + .add("<0 1 2 3 4 5 7 8>") + .scale('C bebop major') + .transpose("<0 1 2 1>/8") + .slow(2) + .tone((await piano()).toDestination()) +`,blippyRhodes=`const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out()); + +const drums = await players({ + bd: 'samples/tidal/bd/BT0A0D0.wav', + sn: 'samples/tidal/sn/ST0T0S3.wav', + hh: 'samples/tidal/hh/000_hh3closedhh.wav' +}, 'https://loophole-letters.vercel.app/') + +const rhodes = await sampler({ + E1: 'samples/rhodes/MK2Md2000.mp3', + E2: 'samples/rhodes/MK2Md2012.mp3', + E3: 'samples/rhodes/MK2Md2024.mp3', + E4: 'samples/rhodes/MK2Md2036.mp3', + E5: 'samples/rhodes/MK2Md2048.mp3', + E6: 'samples/rhodes/MK2Md2060.mp3', + E7: 'samples/rhodes/MK2Md2072.mp3' +}, 'https://loophole-letters.vercel.app/') + +const bass = synth(osc('sawtooth8')).chain(vol(.5),out()) +const scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')]) + +stack( + " " + .tone(drums.chain(out())), + "]>" + .scale(scales) + .struct("x*8") + .scaleTranspose("0 [-5,-2] -7 [-9,-2]") + .legato(.3) + .slow(2) + .tone(rhodes.chain(vol(0.5).connect(delay), out())), + //"]>".slow(2).voicings().struct("~ x").legato(.25).tone(rhodes), + "" + .legato("<1@3 [.3 1]>") + .slow(2) + .tone(bass), +).fast(3/2)`,wavyKalimba=`const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out()) +let kalimba = await sampler({ + C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3' +}) +kalimba = kalimba.chain(vol(0.6).connect(delay),out()); +const scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major']) + +stack( + "[0 2 4 6 9 2 0 -2]*3" + .add("<0 2>/4") + .scale(scales) + .struct("x*8") + .velocity("<.8 .3 .6>*8") + .slow(2) + .tone(kalimba), + "" + .scale(scales) + .scaleTranspose("[0 <2 4>]*2") + .struct("x*4") + .velocity("<.8 .5>*4") + .velocity(0.8) + .slow(2) + .tone(kalimba) +) + .legato("<.4 .8 1 1.2 1.4 1.6 1.8 2>/8") + .fast(1)`,jemblung=`const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out()); +const snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out()); +const s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out()); +stack( + stack( + "0 1 4 [3!2 5]".edit( + // chords + x=>x.add("0,3").duration("0.05!3 0.02"), + // bass + x=>x.add("-8").struct("x*8").duration(0.1) + ), + // melody + "12 11*3 12 ~".duration(0.005) + ) + .add("<0 1>") + .tune("jemblung2") + //.mul(22/5).round().xen("22edo") + //.mul(12/5).round().xen("12edo") + .tone(s), + // kick + "[c2 ~]*2".duration(0.05).tone(membrane().chain(out())), + // snare + "[~ c1]*2".early(0.001).tone(snare), + // hihat + "c2*8".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())), +).slow(3)`,risingEnemy=`stack( + "2,6" + .scale('F3 dorian') + .transpose(sine2.struct("x*64").slow(4).mul(2).round()) + .fast(2) + .struct("x x*3") + .legato(".9 .3"), + "0@3 -3*3".legato(".95@3 .4").scale('F2 dorian') +) + .transpose("<0 1 2 1>/2".early(0.5)) + .transpose(5) + .fast(2 / 3) + .tone((await piano()).toDestination())`,festivalOfFingers=`const chords = ""; +stack( + chords.voicings().struct("x(3,8,-1)").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)), + chords.rootNotes(2).struct("x(4,8,-2)"), + chords.rootNotes(4) + .scale(cat('C minor','F dorian','G dorian','F# mixolydian')) + .struct("x(3,8,-2)".fast(2)) + .scaleTranspose("0 4 0 6".early(".125 .5")).layer(scaleTranspose("0,<2 [4,6] [5,7]>/4")) +).slow(2) + .velocity(sine.struct("x*8").add(3/5).mul(2/5).fast(8)) + .tone((await piano()).chain(out()))`,festivalOfFingers2=`const chords = ""; +const scales = cat('C minor','F dorian','G dorian','F# mixolydian') +stack( + chords.voicings().struct("x(3,8,-1)").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)), + chords.rootNotes(2).struct("x(4,8)"), + chords.rootNotes(4) + .scale(scales) + .struct("x(3,8,-2)".fast(2)) + .scaleTranspose("0 4 0 6".early(".125 .5")).layer(scaleTranspose("0,<2 [4,6] [5,7]>/3")) +).slow(2).transpose(-1) + .legato(cosine.struct("x*8").add(4/5).mul(4/5).fast(8)) + .velocity(sine.struct("x*8").add(3/5).mul(2/5).fast(8)) + .tone((await piano()).chain(out())).fast(3/4)`,undergroundPlumber=`backgroundImage('https://images.nintendolife.com/news/2016/08/video_exploring_the_funky_inspiration_for_the_super_mario_bros_underground_theme/large.jpg',{ className:'darken' }) + +const drums = await players({ + bd: 'bd/BT0A0D0.wav', + sn: 'sn/ST0T0S3.wav', + hh: 'hh/000_hh3closedhh.wav', + cp: 'cp/HANDCLP0.wav', +}, 'https://loophole-letters.vercel.app/samples/tidal/') +stack( +"< sn> hh".fast(4).slow(2).tone(drums.chain(vol(.5),out())), + stack( + "[c2 a1 bb1 ~] ~" + .stut(2, .6, 1/16) + .legato(.4) + .slow(2) + .tone(synth({...osc('sawtooth7'),...adsr(0,.3,0)}).chain(out())), + "[g2,[c3 eb3]]".iter(4) + .stutWith(4, 1/8, (x,n)=>x.transpose(n*12).velocity(Math.pow(.4,n))) + .legato(.1) + ) + .transpose("<0@2 5 0 7 5 0 -5>/2") + +) + .fast(2/3) + .pianoroll({minMidi:21,maxMidi:180, background:'transparent',inactive:'#3F8F90',active:'#DE3123'})`,bridgeIsOver=`const breaks = (await players({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})).chain(out()) +stack( + stack( + "c3*2 [[c3@1.4 bb2] ab2] gb2*2 <[[gb2@1.4 ab2] bb2] gb2>".legato(".5 1".fast(2)).velocity(.8), + "0 ~".scale('c4 whole tone') + .euclidLegato(3,8).slow(2).mask("x ~") + .stutWith(8, 1/16, (x,n)=>x.scaleTranspose(n).velocity(Math.pow(.7,n))) + .scaleTranspose("<0 1 2 3 4 3 2 1>") + .fast(2) + .velocity(.7) + .legato(.5) + .stut(3, .5, 1/8) + ).transpose(-1).tone((await piano()).chain(out())), + "mad".slow(2).tone(breaks) +).cpm(78).slow(4).pianoroll() +`,goodTimes=`const scale = cat('C3 dorian','Bb2 major').slow(4); +stack( + "2*4".add(12).scale(scale) + .off(1/8,x=>x.scaleTranspose("2")).fast(2) + .scaleTranspose("<0 1 2 1>").hush(), + "<0 1 2 3>(3,8,2)" + .scale(scale) + .off(1/4,x=>x.scaleTranspose("2,4")), + "<0 4>(5,8)".scale(scale).transpose(-12) +) + .velocity(".6 .7".fast(4)) + .legato("2") + .scale(scale) +.scaleTranspose("<0>".slow(4)) +.tone((await piano()).chain(out())) +//.midi() +.velocity(.8) +.transpose(5) +.slow(2) +.pianoroll({maxMidi:100,minMidi:20})`,echoPiano=`"<0 2 [4 6](3,4,1) 3*2>" +.scale('D minor') +.color('salmon') +.off(1/4, x=>x.scaleTranspose(2).color('green')) +.off(1/2, x=>x.scaleTranspose(6).color('steelblue')) +.legato(.5) +.echo(4, 1/8, .5) +.tone((await piano()).chain(out())) +.pianoroll()`,sml1=` +stack( + // melody + \`< + [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [e5 f5] [g5 a5] + [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ g6] [g6 ~] + [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [a5 g5] [c6 [e5@2 d5]] + [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ [g6@2 ~] ~@2] [g5 ~] + [~ a5] [b5 c6] [b5@2 ~@2 g5] ~ + [f5 ~] [[g5@2 f5] ~] [[e5 ~] [f5 ~]] [[f#5 ~] [g5 ~]] + [~ a5] [b5 c6] [b5@2 ~@2 g5] ~ + [eb6 d6] [~ c6] ~!2 + >\` + .legato(.95), + // sub melody + \`< + [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 + [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2 + [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 + [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2 + [~ c5]!4 [~ a4]!2 [[c4 ~] [d4 ~]] [[eb4 ~] [e4 ~]] + [~ c5]!4 [~ eb5]!2 [g4*2 [f4 ~]] [[e4 ~] [d4 ~]] + >\`, + // bass + \`< + c3!7 a3 f3!2 + e3!2 ~!4 + c3!7 a3 f3!2 + e3!2 ~!4 + f3!2 e3!2 d3!2 ~!2 + f3!2 e3!2 ab3!2 ~!2 + >\` + .legato(.5) +).fast(2) //.tone((await piano()).chain(out()))`,speakerman=`backgroundImage('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXR0rKqW3VwY%2Fmaxresdefault.jpg&f=1&nofb=1', +{ className:'darken', style:'background-size:cover'}) +stack( + "[g3,bb3,d4] [f3,a3,c4] [c3,e3,g3]@2".slow(2).late(.1), + cat( + 'Baker man', + 'is baking bread', + 'Baker man', + 'is baking bread', + 'Sagabona', + 'kunjani wena', + 'Sagabona', + 'kunjani wena', + 'The night train, is coming', + 'got to keep on running', + 'The night train, is coming', + 'got to keep on running', + ).speak("en zu en".slow(12), "<0 2 3 4 5 6>".slow(2)), +).slow(4)`,randomBells=`const delay = new FeedbackDelay(1/3, .8).chain(vol(.2), out()); +let bell = await sampler({ + C6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3' +}) +const bass = await sampler({ + d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3' +}); +bell = bell.chain(vol(0.6).connect(delay),out()); + +"0".euclidLegato(3,8) + .echo(3, 1/16, .5) + .add(rand.range(0,12)) + .velocity(rand.range(.5,1)) + .legato(rand.range(.4,3)) + .scale(cat('D minor pentatonic')).tone(bell) + .stack("".euclidLegato(6,8,1).tone(bass.toDestination())) + .slow(6) + .pianoroll({minMidi:20,maxMidi:120,background:'transparent'})`,waa=`"a4 [a3 c3] a3 c3" +.sub("<7 12>/2") +.off(1/8, add("12")) +.off(1/4, add("7")) +.legato(.5) +.slow(2) +.wave("sawtooth square") +.filter('lowpass', "<2000 1000 500>") +.out()`,waar=`"a4 [a3 c3] a3 c3".color('#F9D649') +.sub("<7 12 5 12>".slow(2)) +.off(1/4,x=>x.add(7).color("#FFFFFF #0C3AA1 #C63928")) +.off(1/8,x=>x.add(12).color('#215CB6')) +.slow(2) +.legato(sine.range(0.3, 2).slow(28)) +.wave("sawtooth square".fast(2)) +.filter('lowpass', cosine.range(500,4000).slow(16)) +.out() +.pianoroll({minMidi:20,maxMidi:120,background:'#202124'})`,hyperpop=`const lfo = cosine.slow(15); +const lfo2 = sine.slow(16); +const filter1 = x=>x.filter('lowpass', lfo2.range(300,3000)); +const filter2 = x=>x.filter('highpass', lfo.range(1000,6000)).filter('lowpass',4000) +const scales = cat('D3 major', 'G3 major').slow(8) + +const drums = await players({ + bd: '344/344757_1676145-lq.mp3', + sn: '387/387186_7255534-lq.mp3', + hh: '561/561241_12517458-lq.mp3', + hh2:'44/44944_236326-lq.mp3', + hh3: '44/44944_236326-lq.mp3', +}, 'https://freesound.org/data/previews/') + +stack( + "-7 0 -7 7".struct("x(5,8,2)").fast(2).sub(7) + .scale(scales).wave("sawtooth,square").velocity(.3).adsr(0.01,0.1,.5,0) + .apply(filter1), + "~@3 [<2 3>,<4 5>]" + .echo(8,1/16,.7) + .scale(scales) + .wave('square').velocity(.7).adsr(0.01,0.1,0).apply(filter1), + "6 5 4".add(14) + .superimpose(sub("5")) + .fast(1).euclidLegato(3,8) + .mask("<1 0@7>") + .fast(2) + .echo(32, 1/8, .9) + .scale(scales) + .wave("sawtooth") + .velocity(.2) + .adsr(.01,.5,0) + .apply(filter2) + //.echo(4,1/16,.5) +).out().stack( + stack( + "bd <~@7 [~ bd]>".fast(2), + "~ sn", + "[~ hh3]*2" + ).tone(drums.chain(vol(.18),out())).fast(2) +).slow(2) + +//.pianoroll({minMidi:20, maxMidi:160}) +// strudel disable-highlighting`,festivalOfFingers3=`"[-7*3],0,2,6,[8 7]" +.echoWith(4,1/4, (x,n)=>x + .add(n*7) + .velocity(1/(n+1)) + .legato(1/(n+1))) +.velocity(perlin.range(.5,.9).slow(8)) +.stack("[22 25]*3" + .legato(sine.range(.5,2).slow(8)) + .velocity(sine.range(.4,.8).slow(5)) + .echo(4,1/12,.5)) +.scale(cat('D dorian','G mixolydian','C dorian','F mixolydian')) +.legato(1) +.slow(2) +.tone((await piano()).toDestination()) +//.pianoroll({maxMidi:160})`,bossa=` +const scales = sequence('C minor', ['D locrian', 'G phrygian'], 'Bb2 minor', ['C locrian','F phrygian']).slow(4) +stack( + "".fast(2).struct("x ~ x@3 x ~ x ~ ~ ~ x ~ x@3".late(1/8)).early(1/8).slow(2).voicings(), + "[~ [0 ~]] 0 [~ [4 ~]] 4".sub(7).restart(scales).scale(scales).early(.25) +).tone((await piano()).toDestination()).slow(2)`;var tunes=Object.freeze(Object.defineProperty({__proto__:null,timeCatMini,timeCat,shapeShifted,tetrisMini,whirlyStrudel,swimming,giantSteps,giantStepsReggae,transposedChordsHacked,scaleTranspose,struct,magicSofa,confusedPhone,zeldasRescue,technoDrums,caverave,callcenterhero,primalEnemy,synthDrums,sampleDrums,xylophoneCalling,sowhatelse,barryHarris,blippyRhodes,wavyKalimba,jemblung,risingEnemy,festivalOfFingers,festivalOfFingers2,undergroundPlumber,bridgeIsOver,goodTimes,echoPiano,sml1,speakerman,randomBells,waa,waar,hyperpop,festivalOfFingers3,bossa},Symbol.toStringTag,{value:"Module"})),WebDirtPacked$1={exports:{}};(function(o,e){(function(s,a){o.exports=a()})(self,()=>(()=>{var s={d:($,j)=>{for(var _e in j)s.o(j,_e)&&!s.o($,_e)&&Object.defineProperty($,_e,{enumerable:!0,get:j[_e]})},o:($,j)=>Object.prototype.hasOwnProperty.call($,j),r:$=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty($,Symbol.toStringTag,{value:"Module"}),Object.defineProperty($,"__esModule",{value:!0})}},a={};function c($,j){if(this.msg=$,this.ac=j.ac,this.sampleBank=j.sampleBank,this.outputNode=j.destination,this.cutGroups=j.cutGroups,this.eventCounter=j.eventCounter,this.audioOutputs=j.audioOutputs,this.workletsAvailable=j.workletsAvailable,typeof $.buffer=="object")this.bufferContainer=$.buffer;else{if(this.sampleBank==null)return void console.log("WebDirt: there is no sample bank, cancelling event");if(typeof this.sampleBank!="object")return void console.log("WebDirt: buffer not provided by calling application + no WebDirt sample bank");if(this.msg.n=parseInt(this.msg.n),isNaN(this.msg.n)&&(this.msg.n=0),!this.sampleBank.sampleNameExists(this.msg.s))return void console.log("WebDirt: no sample named "+this.msg.s+" exists in sample map");if(!this.sampleBank.getBufferMightSucceed(this.msg.s,this.msg.n))return}if(this.when=this.msg.when,isNaN(this.when))console.log("WebDirt: 'when' is null or not a number");else if(this.nudge=parseFloat(this.msg.nudge),isNaN(this.nudge)||(this.when=this.when+this.nudge),isNaN(parseFloat(this.msg.speed))&&(this.msg.speed=1),this.msg.speed!=0)if(isNaN(parseFloat(this.msg.note))&&(this.msg.note=0),this.msg.speed=this.msg.speed*Math.pow(2,this.msg.note/12),this.msg.begin=d(this.msg.begin,0),this.msg.end=d(this.msg.end,1),this.msg.end!=this.msg.begin){if(this.msg.begin>this.msg.end&&(this.msg.speed=-1*this.msg.speed),this.msg.speed<0&&(this.msg.begin=1-this.msg.begin,this.msg.end=1-this.msg.end),this.msg.begin>this.msg.end){let dt=this.msg.begin;this.msg.begin=this.msg.end,this.msg.end=dt}var _e;if(this.source=_e=this.ac.createBufferSource(),this.source.onended=this.disconnectHandler(),this.disconnectOnEnd(this.source),this.source.playbackRate.value=Math.abs(this.msg.speed),this.prepareBuffer(),this.buffer!=null)this.source.buffer=this.buffer,this.start();else{var et=this,tt=1e3*(this.msg.when-this.ac.currentTime-.2);tt<=0&&(tt=1e3*(this.msg.when-this.ac.currentTime-.2)),tt>0&&setTimeout(function(){et.prepareBuffer(),et.buffer!=null?(et.source.buffer=et.buffer,et.start()):(console.log("WebDirt: unable to access sample "+$.s+":"+$.n+" on second attempt"),et.stopAll())},tt)}this.cut(this.msg.cut,this.msg.s),_e=this.shape(_e,this.msg.shape),_e=this.lowPassFilter(_e,this.msg.cutoff,this.msg.resonance),_e=this.highPassFilter(_e,this.msg.hcutoff,this.msg.hresonance),_e=this.bandPassFilter(_e,this.msg.bandf,this.msg.bandq),_e=this.vowel(_e,this.msg.vowel),_e=this.delay(_e,this.msg.delay,this.msg.delaytime,this.msg.delayfeedback),_e=this.loop(_e,this.msg.loop,this.msg.begin,this.msg.end,this.msg.speed),_e=this.crush(_e,this.msg.crush),_e=this.coarse(_e,this.msg.coarse),this.unit(this.msg.unit,this.msg.speed);var nt=parseFloat(this.msg.gain);isNaN(nt)&&(nt=1),nt>2&&(nt=2),nt<0&&(nt=0);var st=parseFloat(this.msg.overgain);isNaN(st)||(nt+=st),nt=Math.pow(nt,4);var rt,it,at,ot=parseFloat($.pan);if(isNaN(ot)&&(ot=.5),this.audioOutputs==2)(ot>1||ot<0)&&(ot-=Math.floor(ot)),rt=ot,it=0,at=1;else{var ht=(ot-=Math.floor(ot))*this.audioOutputs;(at=(it=Math.floor(ht))+1)>=this.audioOutputs&&(at=0),rt=ht-Math.floor(ht)}var ct=this.ac.createGain();this.disconnectOnEnd(ct);var lt=this.ac.createGain();this.disconnectOnEnd(lt),ct.gain.value=Math.cos(rt*Math.PI/2)*nt,lt.gain.value=Math.sin(rt*Math.PI/2)*nt,_e.connect(ct),_e.connect(lt),this.gain1=ct,this.gain2=lt;var ut=this.ac.createChannelMerger(this.audioOutputs);this.disconnectOnEnd(ut),ct.connect(ut,0,it),lt.connect(ut,0,at),ut.connect(this.outputNode)}else this.stopAll()}function d($,j){let _e=parseFloat($);return isNaN(_e)?j:_e>1?1:_e<0?0:_e}s.r(a),s.d(a,{WebDirt:()=>k}),c.prototype.prepareBuffer=function(){typeof this.bufferContainer=="object"?typeof this.bufferContainer.buffer=="object"&&(this.msg.speed>=0?this.buffer=this.bufferContainer.buffer:(typeof this.bufferContainer.reverseBuffer=="object"||(this.bufferContainer.reverseBuffer=reverseBuffer(this.ac,this.bufferContainer.buffer)),this.buffer=this.bufferContainer.reverseBuffer)):(this.msg.speed>=0?this.buffer=this.sampleBank.getBuffer(this.msg.s,this.msg.n):this.buffer=this.sampleBank.getReverseBuffer(this.msg.s,this.msg.n),this.buffer=this.accel(this.buffer,this.msg.accelerate,this.msg.speed))},c.prototype.disconnectOnEnd=function($){this.source.disconnectQueue==null&&(this.source.disconnectQueue=new Array),this.source.disconnectQueue.unshift($)},c.prototype.start=function(){let $=Math.abs(this.msg.speed),j=(this.msg.end-this.msg.begin)*this.source.buffer.duration/$,_e=this.msg.begin*this.source.buffer.duration;this.source.start(this.when,_e,j)},c.prototype.stopAll=function(){if(this.source!=null&&this.source.disconnectQueue!=null){for(var $=0;$1&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"coarse-processor");return _e.parameters.get("coarse").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.crush=function($,j){if(j=parseInt(j),isNaN(j)&&(j=null),j!=null&&j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"crush-processor");return _e.parameters.get("crush").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.cut=function($,j){if($=parseInt($),!isNaN($)&&$!=0){for(var _e={cutGroup:$,node:this,sampleName:j},et=0;et2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="highpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.lowPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="lowpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.bandPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=10),_e<1&&(_e=1),_e>100&&(_e=100);var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="bandpass",et.frequency.value=j,et.Q.value=_e,et.gain.value=_e,$.connect(et),et},c.prototype.loop=function($,j){if(isNaN(parseInt(j))||j==0)return $;try{var _e=this.source.buffer.duration-this.msg.begin*this.source.buffer.duration-(1-this.msg.end)*this.source.buffer.duration;return this.source.loop=!0,this.source.loopStart=this.msg.begin*this.source.buffer.duration,this.source.loopEnd=this.msg.end*this.source.buffer.duration,this.source.stop(this.when+_e*j/this.source.playbackRate.value),$}catch{return console.log("WebDirt Warning: buffer data not yet available to calculate loop time - no looping applied"),$}},c.prototype.accelerate=function($,j){if(j=Math.abs(j),isNaN(parseFloat($))&&($=0),$!=0){$=parseFloat($),this.source.playbackRate.setValueAtTime(j,this.when);var _e=Math.abs((this.source.buffer.length*$/this.ac.sampleRate+j)/j),et=j+this.source.buffer.length*$/this.ac.sampleRate;if(et<0)this.source.buffer=this.negativeAccelerateBuffer(this.source.buffer,$,j),this.source.playbackRate.linearRampToValueAtTime(0,this.when+_e),this.source.playbackRate.linearRampToValueAtTime(1,this.when+this.source.buffer.duration);else try{this.source.playbackRate.linearRampToValueAtTime(et,this.when+this.source.buffer.duration)}catch{console.log("WebDirt: Warning, buffer data not loaded, could not apply acclerate effect")}}},c.prototype.negativeAccelerateBuffer=function($,j,_e){var et=$.length,tt=new Float32Array(et),nt=this.ac.createBuffer($.numberOfChannels,$.length,this.ac.sampleRate),st=new Float32Array(et),rt=Math.abs(_e/(_e-j))*et;rt=et*Math.abs((this.source.buffer.length*j/this.ac.sampleRate+_e)/_e)/this.source.buffer.duration,rt=Math.trunc(rt);for(var it=0;it<$.numberOfChannels;it++){$.copyFromChannel(tt,it,0);for(var at=0;at=1&&(j=.999),j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"shape-processor");return _e.parameters.get("shape").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.stop=function($){this.gain1.gain.setValueAtTime(this.gain1.gain.value,$),this.gain1.gain.linearRampToValueAtTime(0,$+.02),this.gain2.gain.setValueAtTime(this.gain1.gain.value,$),this.gain2.gain.linearRampToValueAtTime(0,$+.02)},c.prototype.unit=function($,j){$=="c"&&(this.source.playbackRate.value=this.source.playbackRate.value*this.source.buffer.duration)},c.prototype.vowel=function($,j){if(typeof j!="string")return $;if((j=j.toLowerCase())=="a"||j=="e"||j=="i"||j=="o"||j=="u"){var _e,et,tt,nt=this.ac.createGain();switch(this.disconnectOnEnd(nt),j){case"a":_e=_.a.freqs,et=_.a.qs,tt=_.a.amps;break;case"e":_e=_.e.freqs,et=_.e.qs,tt=_.e.amps;break;case"i":_e=_.i.freqs,et=_.i.qs,tt=_.i.amps;break;case"o":_e=_.o.freqs,et=_.o.qs,tt=_.o.amps;break;case"u":_e=_.u.freqs,et=_.u.qs,tt=_.u.amps}for(var st=0;st<5;st++){var rt=this.ac.createGain();this.disconnectOnEnd(rt),rt.gain.value=tt[st];var it=this.ac.createBiquadFilter();this.disconnectOnEnd(it),it.type="bandpass",it.Q.value=et[st]/8,it.frequency.value=_e[st],$.connect(it),it.connect(rt),rt.connect(nt)}return nt.gain.value=8,nt}return $};var _={a:{freqs:[660,1120,2750,3e3,3350],amps:[1,.5012,.0708,.0631,.0126],qs:[80,90,120,130,140]},e:{freqs:[440,1800,2700,3e3,3300],amps:[1,.1995,.1259,.1,.1],qs:[70,80,100,120,120]},i:{freqs:[270,1850,2900,3350,3590],amps:[1,.0631,.0631,.0158,.0158],qs:[40,90,100,120,120]},o:{freqs:[430,820,2700,3e3,3300],amps:[1,.3162,.0501,.0794,.01995],qs:[40,80,100,120,120]},u:{freqs:[370,630,2750,3e3,3400],amps:[1,.1,.0708,.0316,.01995],qs:[40,60,100,120,120]}};function b($,j,_e){this.STATUS_PRELOAD=0,this.STATUS_LOADING=1,this.STATUS_READY=2,this.STATUS_ERROR=3,this.sampleMapUrl=$,this.urlPrefix=j,this.samples={};var et=new XMLHttpRequest;et.open("GET",this.sampleMapUrl,!0),et.responseType="json";var tt=this;et.onload=function(){if(et.readyState!=4)throw Error("WebDirt: readyState != 4 in callback of sampleMap load");if(et.status!=200)throw Error("WebDirt: status != 200 in callback of sampleMap load");if(et.response==null)throw Error("WebDirt: JSON response null in callback of sampleMap load");tt.sampleMap=et.response,console.log("WebDirt: sampleMap loaded from "+tt.sampleMapUrl),typeof _e=="function"&&_e()},et.onerror=function(){console.log("WebDirt: unspecified error in loading of sampleMap from "+tt.sampleMapUrl)},et.send()}function k($){this.workletsAvailable=!1,$===void 0&&($={}),typeof $=="object"?(typeof $.sampleMapUrl=="string"?($.sampleFolder==null&&($.sampleFolder="samples"),console.log("WebDirt: will manage own sample bank, samplemap="+$.sampleMapUrl+" sampleFolder="+$.sampleFolder),this.sampleBank=new b($.sampleMapUrl,$.sampleFolder,$.readyCallback)):console.log("WebDirt: will expect application to provide sample buffers"),$.latency==null&&($.latency=.4),this.latency=$.latency,typeof $.maxLateness!="number"?this.maxLateness=.005:this.maxLateness=$.maxLateness,this.ac=$.audioContext,this.destination=$.destination,this.cutGroups=new Array,this.eventCounter=0,this.audioOutputs=2,this.ac==null?console.log("WebDirt: initialized (without audio context)"):this.destination==null?(this.destination=this.ac.destination,console.log("WebDirt: initialized with provided context")):console.log("WebDirt: initialized with provided context + destination")):console.log("WebDirt: unable to construct WebDirt object, arguments object not provided to constructor")}return b.prototype.loadAllNamed=function($){if(this.ac==null)throw Error("WebDirt: called SampleBank.loadAllNamed with null audio context");if(this.sampleMap==null)throw Error("WebDirt: SampleBank.loadAllNamed: sampleMap is null");if(this.sampleMap[$]!=null)for(var j=0;j{console.log("WebDirt: audio worklets added"),this.workletsAvailable=!0}).catch(j=>{console.log("WebDirt: error loading AudioWorklets.js: "+j),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1}):(console.log("WebDirt: browser does not support audio worklets"),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1),this.tempo={time:this.ac.currentTime,beats:0,bpm:30},this.clockDiff=Date.now()/1e3-this.ac.currentTime,this.sampleBank!=null&&(this.sampleBank.ac=this.ac),this.silentNote=this.ac.createOscillator(),this.silentNote.type="sine",this.silentNote.frequency.value=440,this.silentGain=this.ac.createGain(),this.silentGain.gain.value=0,this.silentNote.connect(this.silentGain),this.silentGain.connect(this.ac.destination),this.silentNote.start();var $=this;setTimeout(function(){$.silentGain.disconnect($.ac.destination),$.silentNote.disconnect($.silentGain),$.silentNote.stop(),$.silentGain=null,$.silentNote=null},500)}console.log("WebDirt: initializeWebAudio finished.")},k.prototype.playSample=function($,j){if(j==null&&(j=this.latency),$.whenPosix!=null&&($.when=$.whenPosix-(new Date().getTime()/1e3-this.ac.currentTime)),$.when==null&&($.when=this.ac.currentTime),$.when=$.when+j,typeof $.maxLateness!="number"&&($.maxLateness=this.maxLateness),this.ac.currentTime-$.when>$.maxLateness)return void console.log("WebDirt warning: dropping msg late by "+(this.ac.currentTime-$.when)+" seconds");let _e=new c($,this);return this.eventCounter++,_e},k.prototype.playScore=function($,j,_e){this.initializeWebAudio(),j==null&&(j=this.latency);for(var et=this.ac.currentTime,tt=0,nt=0;nt<$.length;nt++){var st=$[nt];st.when>tt&&(tt=st.when),st.when=st.when+et,st.s!=null&&(st.sample_name=st.s),st.n!=null&&(st.sample_n=st.n),this.playSample(st,j)}setTimeout(function(){typeof _e=="function"&&_e()},1e3*(tt+j))},k.prototype.playScoreWhenReady=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);for(var tt=$.length,nt=0;nt<$.length;nt++){var st=$[nt],rt=this;st.s!=null&&(st.sample_name=st.s),st.n!=null&&(st.sample_n=st.n),this.sampleBank!=null&&this.sampleBank.load(st.sample_name,st.sample_n,function(){(tt-=1)<=0&&(rt.playScore($,j,et),typeof _e=="function"&&_e())})}},k.prototype.loadAndPlayScore=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);var tt=new XMLHttpRequest;tt.open("GET",$,!0),tt.responseType="json";var nt=this;tt.onload=function(){if(tt.readyState!=4)throw Error("readyState != 4 in callback of loadAndPlayScore");if(tt.status!=200)throw Error("status != 200 in callback of loadAndPlayScore");if(tt.response==null)throw Error("JSON response null in callback of loadAndPlayScore");console.log("playing JSON score from "+$),nt.playScoreWhenReady(tt.response,j,_e,et)},tt.send()},k.prototype.renderAndPlayScore=function($,j,_e,et,tt,nt,st){this.initializeWebAudio(),tt==null&&(tt=this.latency),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt.renderAndPlayScore: attempting websocket connection to "+$);var rt=new WebSocket($);rt.onerror=function(){console.log(" ERROR opening websocket connection to "+$)},rt.onopen=function(){console.log(" websocket connection to "+$+" established");try{var at='{"render":'+JSON.stringify(j)+',"cps":'+_e+',"cycles":'+et+"}";console.log(at),rt.send(at),console.log(" render request sent")}catch{console.log(" EXCEPTION during transmission of render request"),rt.close()}};var it=this;rt.onmessage=function(at){var ot=JSON.parse(at.data);if(!ot instanceof Array)return console.log(" WebDirt warning: rendering socket received non-array message"),console.log(typeof ot),void(globalX=ot);console.log(" received score from "+$),it.playScoreWhenReady(ot,tt,nt,st),console.log(" closing websocket connection to "+$),rt.close()}},k.prototype.subscribeToTidalSocket=function($,j){this.initializeWebAudio(),j==null&&(j=!1),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt: attempting websocket connection to "+$),ws=new WebSocket($),ws.onopen=function(){console.log("websocket connection to tidalSocket opened")},ws.onerror=function(){console.log("ERROR opening websocket connection to tidalSocket")};var _e=this;ws.onmessage=function(et){if(et.data==null)throw Error("null data in tidalSocket onmessage handler");var tt=JSON.parse(et.data);if(tt.address==null)throw Error("received message from tidalSocket with no address: "+et.data);if(tt.address!="/play")throw Error("address of message from tidalSocket wasn't /play: "+et.data);if(tt.args.constructor!==Array)throw Error("ERROR: message from tidalSocket where args doesn't exist or isn't an array: "+et.data);if(tt.args.length!=30&&tt.args.length!=33)throw Error("ERROR: message from tidalSocket with "+tt.args.length+" args instead of 30 or 33: "+et.data);var nt={};nt.when=tt.args[0]+tt.args[1]/1e6+_e.clockDiff,nt.sample_name=tt.args[3],nt.begin=tt.args[5],nt.end=tt.args[6],nt.speed=tt.args[7],nt.pan=tt.args[8],nt.vowel=tt.args[10],nt.cutoff=tt.args[11],nt.resonance=tt.args[12],nt.accelerate=tt.args[13],nt.shape=tt.args[14],nt.gain=tt.args[16],nt.cut=tt.args[17],nt.delay=tt.args[18],nt.delaytime=tt.args[19],nt.delayfeedback=tt.args[20],nt.crush=tt.args[21],nt.coarse=tt.args[22],nt.hcutoff=tt.args[23],nt.hresonance=tt.args[24],nt.bandf=tt.args[25],nt.bandq=tt.args[26],nt.unit_name=tt.args[27],nt.sample_loop=tt.args[28],nt.sample_n=tt.args[29],tt.args.length==33&&(nt.attack=tt.args[30],nt.hold=tt.args[31],nt.release=tt.args[32]),_e.playSample(nt),j&&console.log(tt)}},k.prototype.getCurrentTime=function(){return this.ac.currentTime},k.prototype.syncWithEsp=function($){if(typeof EspClient=="function")if(this.espClient==null){this.espClient=new EspClient($,this.ac);var j=this;this.espClient.tempoCallback=function(_e){j.tempo=_e}}else this.espClient.setUrl($);else console.log("WebDirt ERROR: syncWithEsp called but EspClient does not exist")},k.prototype.setTempo=function($){if(typeof $.time!="number")throw Error("WebDirt: no time in setTempo");if(typeof $.beats!="number")throw Error("WebDirt: no beats in setTempo");if(typeof $.bpm!="number")throw Error("WebDirt: no bpm in setTempo");this.espClient!=null&&this.espClient.sendSetTempo($),this.tempo=$},k.prototype.sampleHint=function($){this.sampleBank!=null&&(console.log("WebDirt received sample hint: "+$),this.sampleBank.loadAllNamed($))},a})())})(WebDirtPacked$1);var WebDirtPacked=getDefaultExportFromCjs(WebDirtPacked$1.exports),WebDirt=_mergeNamespaces({__proto__:null,default:WebDirtPacked},[WebDirtPacked$1.exports]);const bufferCache={},loadCache={},loadBuffer=(o,e)=>(loadCache[o]||(loadCache[o]=fetch(o).then(s=>s.arrayBuffer()).then(async s=>{const a=await e.decodeAudioData(s);return bufferCache[o]=a,a})),loadCache[o]),getLoadedBuffer=o=>bufferCache[o],githubCache={};let sampleCache={current:void 0};const loadGithubSamples=async(o,e)=>{const s="loadGithubSamples "+o,a=localStorage.getItem(s);if(a&&(console.log("[sampler]: loaded sample list from localstorage",o),githubCache[o]=JSON.parse(a)),githubCache[o])return sampleCache.current=githubCache[o],githubCache[o];console.log("[sampler]: fetching sample list from github",o);try{const[c,d,..._]=o.split("/"),b=`https://api.github.com/repos/${c}/${d}/contents`,k=await fetch(`${b}/${_.join("/")}`).then($=>$.json());githubCache[o]=(await Promise.all(k.map(async({name:$,path:j})=>({name:$,content:await fetch(`${b}/${j}`).then(_e=>_e.json()).catch(_e=>{console.error("could not load path",_e)})})))).filter(({content:$})=>!!$).reduce(($,{name:j,content:_e})=>kt(Dt({},$),{[(e==null?void 0:e(j))||j]:_e.map(({download_url:et})=>et)}),{})}catch(c){console.error("[sampler]: failed to fetch sample list from github",c);return}return sampleCache.current=githubCache[o],localStorage.setItem(s,JSON.stringify(sampleCache.current)),console.log("[sampler]: loaded samples:",sampleCache.current),githubCache[o]},samples=(o,e="")=>{sampleCache.current=Dt(Dt({},sampleCache.current),Object.fromEntries(Object.entries(o).map(([s,a])=>[s,(typeof a=="string"?[a]:a).map(c=>(e+c).replace("github:","https://raw.githubusercontent.com/"))])))},resetLoadedSamples=()=>{sampleCache.current=void 0},getLoadedSamples=()=>sampleCache.current,{Pattern}=strudel;let webDirt;function loadWebDirt(o){webDirt=new WebDirtPacked$1.exports.WebDirt(o),webDirt.initializeWebAudio()}Pattern.prototype.webdirt=function(){return this._withHap(o=>{const e=async(s,a,c)=>{if(!webDirt)throw new Error("WebDirt not initialized!");const d=s-c,j=a.value||{},{s:_,n:b=0}=j,k=dn(j,["s","n"]);_||console.warn('Pattern.webdirt: no "s" was set!');const $=getLoadedSamples();if(!($!=null&&$[_])){webDirt.playSample(Dt({s:_,n:b},k),d);return}if(!($!=null&&$[_]))console.warn(`Pattern.webdirt: sample "${_}" not found in loaded samples`,$);else{const _e=$[_],et=_e[b%_e.length],tt=getLoadedBuffer(et);if(!tt)console.log(`Pattern.webdirt: load ${_}:${b} from ${et}`),loadBuffer(et,webDirt.ac);else{const nt=Dt({buffer:{buffer:tt}},k);webDirt.playSample(nt,d)}}};return o.setContext(kt(Dt({},o.context),{onTrigger:e}))})};evalScope(Tone,controls,{WebDirt},__vitePreload(()=>Promise.resolve().then(function(){return strudel}),void 0),__vitePreload(()=>import("./index.e487bbaf.js"),[]),__vitePreload(()=>import("./index.b1f4240b.js"),[]),__vitePreload(()=>import("./index.e34274fe.js"),[]),__vitePreload(()=>import("./index.64a82e13.js"),[]),__vitePreload(()=>import("./index.b1ea7d26.js"),[]),__vitePreload(()=>import("./index.376adf92.js"),[]),__vitePreload(()=>import("./osc.1d3a7f92.js"),[]),__vitePreload(()=>import("./index.6ff547a5.js"),[]),__vitePreload(()=>import("./serial.aad8faad.js"),[]));loadWebDirt({sampleMapUrl:"EmuSP12.json",sampleFolder:"EmuSP12"});const initialUrl=window.location.href,codeParam=window.location.href.split("#")[1];let decoded;try{decoded=atob(decodeURIComponent(codeParam||""))}catch(o){console.warn("failed to decode",o)}function getRandomTune(){const o=Object.values(tunes);return(s=>s[Math.floor(Math.random()*s.length)])(o)}const randomTune=getRandomTune(),defaultSynth=getDefaultSynth(),isEmbedded=window.location!==window.parent.location;function App(){const[o,e]=react.exports.useState(),{setCode:s,setPattern:a,error:c,code:d,cycle:_,dirty:b,log:k,togglePlay:$,activeCode:j,setActiveCode:_e,activateCode:et,pattern:tt,pushLog:nt,pending:st}=useRepl({tune:decoded||randomTune,defaultSynth}),rt=react.exports.useRef();return react.exports.useLayoutEffect(()=>{var it;rt.current&&(rt.current.scrollTop=(it=rt.current)==null?void 0:it.scrollHeight)},[k]),react.exports.useLayoutEffect(()=>{const it=async at=>{(at.ctrlKey||at.altKey)&&(at.code==="Enter"?(at.preventDefault(),await et()):at.code==="Period"&&(_.stop(),at.preventDefault()))};return window.addEventListener("keydown",it,!0),()=>window.removeEventListener("keydown",it,!0)},[tt,d,et,_]),useHighlighting({view:o,pattern:tt,active:_.started&&!(j!=null&&j.includes("strudel disable-highlighting"))}),useWebMidi({ready:react.exports.useCallback(({outputs:it})=>{nt(`WebMidi ready! Just add .midi(${it.map(at=>`'${at.name}'`).join(" | ")}) to the pattern. `)},[nt]),connected:react.exports.useCallback(({outputs:it})=>{nt(`Midi device connected! Available: ${it.map(at=>`'${at.name}'`).join(", ")}`)},[nt]),disconnected:react.exports.useCallback(({outputs:it})=>{nt(`Midi device disconnected! Available: ${it.map(at=>`'${at.name}'`).join(", ")}`)},[nt])}),jsxs("div",{className:"min-h-screen flex flex-col",children:[jsxs("header",{id:"header",className:cx("flex-none w-full px-2 flex border-b border-gray-200 justify-between z-[10] bg-gray-100",isEmbedded?"h-8":"h-14"),children:[jsxs("div",{className:"flex items-center space-x-2",children:[jsx("img",{src:logo,className:cx("Tidal-logo",isEmbedded?"w-6 h-6":"w-10 h-10"),alt:"logo"}),jsxs("h1",{className:isEmbedded?"text-l":"text-xl",children:["Strudel ",isEmbedded?"Mini ":"","REPL"]})]}),jsxs("div",{className:"flex",children:[jsx("button",{onClick:()=>$(),className:cx("hover:bg-gray-300",isEmbedded?"px-2":"p-2"),children:st?jsx(Fragment,{children:"loading..."}):jsxs("span",{className:cx("flex items-center","w-16"),children:[_.started?jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}):jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"})}),_.started?"pause":"play"]})}),!isEmbedded&&jsx("button",{className:"hover:bg-gray-300 p-2",onClick:async()=>{const it=getRandomTune();console.log("tune",it),s(it),cleanupDraw(),cleanupUi(),resetLoadedSamples();const at=await evaluate(it);a(at.pattern),_e(it)},children:"\u{1F3B2} random"}),!isEmbedded&&jsx("button",{className:cx("hover:bg-gray-300",isEmbedded?"px-2":"p-2"),children:jsx("a",{href:"./tutorial",children:"\u{1F4DA} tutorial"})}),isEmbedded&&jsx("button",{className:cx("hover:bg-gray-300 px-2"),children:jsx("a",{href:window.location.href,target:"_blank",rel:"noopener noreferrer",title:"Open in REPL",children:"\u{1F680} open"})}),isEmbedded&&jsx("button",{className:cx("hover:bg-gray-300 px-2"),children:jsx("a",{onClick:()=>{window.location.href=initialUrl,window.location.reload()},title:"Reset",children:"\u{1F494} reset"})})]})]}),jsxs("section",{className:"grow flex flex-col text-gray-100",children:[jsxs("div",{className:"grow relative flex overflow-auto",id:"code",children:[jsx(CodeMirror,{value:d,onChange:s,onViewChanged:e}),jsx("span",{className:"z-[20] py-1 px-2 absolute top-0 right-0 text-xs whitespace-pre text-right pointer-events-none",children:_.started?b?`ctrl+enter to update +`:`no changes +`:`press ctrl+enter to play +`}),c&&jsx("div",{className:cx("absolute right-2 bottom-2 px-2","text-red-500"),children:(c==null?void 0:c.message)||"unknown error"})]}),!isEmbedded&&jsx("textarea",{className:"z-[10] h-16 border-0 text-xs bg-[transparent] border-t border-slate-600 resize-none",value:k,readOnly:!0,ref:rt,style:{fontFamily:"monospace"}})]})]})}var index="";ReactDOM.render(jsx(React.StrictMode,{children:jsx(App,{})}),document.getElementById("root"));export{getAugmentedNamespace as A,commonjsGlobal as B,getDefaultExportFromCjs as C,reify$1 as D,stack as E,strudel as F,enableWebMidi as G,Hap as H,TimeSpan$1 as I,loadWebDirt as J,loadBuffer as K,getLoadedBuffer as L,loadGithubSamples as M,samples as N,resetLoadedSamples as O,Pattern$4 as P,getLoadedSamples as Q,State$1 as S,Tone as T,WebMidi as W,amsynth as a,metal as b,monosynth as c,duosynth as d,polysynth as e,fmsynth as f,getDefaultSynth as g,players as h,synth as i,piano as j,highpass as k,lowpass as l,membrane as m,noise as n,adsr as o,pluck as p,osc as q,out as r,sampler as s,getDrawContext$1 as t,cleanupDraw as u,vol as v,hideHeader as w,backgroundImage as x,cleanupUi as y,mod as z}; diff --git a/assets/index.97f1f33f.js b/assets/index.e34274fe.js similarity index 99% rename from assets/index.97f1f33f.js rename to assets/index.e34274fe.js index 808e30a5b..2e428f075 100644 --- a/assets/index.97f1f33f.js +++ b/assets/index.e34274fe.js @@ -1,4 +1,4 @@ -var tt=Object.defineProperty,nt=Object.defineProperties;var at=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var Pe=Object.prototype.hasOwnProperty,Oe=Object.prototype.propertyIsEnumerable;var Re=(a,f,r)=>f in a?tt(a,f,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[f]=r,H=(a,f)=>{for(var r in f||(f={}))Pe.call(f,r)&&Re(a,r,f[r]);if(M)for(var r of M(f))Oe.call(f,r)&&Re(a,r,f[r]);return a},J=(a,f)=>nt(a,at(f));var qe=(a,f)=>{var r={};for(var $ in a)Pe.call(a,$)&&f.indexOf($)<0&&(r[$]=a[$]);if(a!=null&&M)for(var $ of M(a))f.indexOf($)<0&&Oe.call(a,$)&&(r[$]=a[$]);return r};import{F as it}from"./index.8e502404.js";function ft(a,f){function r(){this.constructor=a}r.prototype=f.prototype,a.prototype=new r}function D(a,f,r,$){var l=Error.call(this,a);return Object.setPrototypeOf&&Object.setPrototypeOf(l,D.prototype),l.expected=f,l.found=r,l.location=$,l.name="SyntaxError",l}ft(D,Error);function K(a,f,r){return r=r||" ",a.length>f?a:(f-=a.length,r+=r.repeat(f),a+r.slice(0,f))}D.prototype.format=function(a){var f="Error: "+this.message;if(this.location){var r=null,$;for($=0;$f in a?tt(a,f,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[f]=r,H=(a,f)=>{for(var r in f||(f={}))Pe.call(f,r)&&Re(a,r,f[r]);if(M)for(var r of M(f))Oe.call(f,r)&&Re(a,r,f[r]);return a},J=(a,f)=>nt(a,at(f));var qe=(a,f)=>{var r={};for(var $ in a)Pe.call(a,$)&&f.indexOf($)<0&&(r[$]=a[$]);if(a!=null&&M)for(var $ of M(a))f.indexOf($)<0&&Oe.call(a,$)&&(r[$]=a[$]);return r};import{F as it}from"./index.d3c8394c.js";function ft(a,f){function r(){this.constructor=a}r.prototype=f.prototype,a.prototype=new r}function D(a,f,r,$){var l=Error.call(this,a);return Object.setPrototypeOf&&Object.setPrototypeOf(l,D.prototype),l.expected=f,l.found=r,l.location=$,l.name="SyntaxError",l}ft(D,Error);function K(a,f,r){return r=r||" ",a.length>f?a:(f-=a.length,r+=r.repeat(f),a+r.slice(0,f))}D.prototype.format=function(a){var f="Error: "+this.message;if(this.location){var r=null,$;for($=0;$ `+m+` `+w+` | `+l.line+" | "+E+` diff --git a/assets/index.fb6b0577.js b/assets/index.e487bbaf.js similarity index 88% rename from assets/index.fb6b0577.js rename to assets/index.e487bbaf.js index 7190d42a0..0fd8f919b 100644 --- a/assets/index.fb6b0577.js +++ b/assets/index.e487bbaf.js @@ -1 +1 @@ -import{T as e,o as n,a as o,x as t,u as h,y as l,d as p,f as r,g as m,t as y,w as u,k as c,l as d,m as g,b as i,c as f,n as w,q as b,r as k,j as x,h as D,p as v,e as T,s as j,i as q,v as C}from"./index.8e502404.js";export{e as Tone,n as adsr,o as amsynth,t as backgroundImage,h as cleanupDraw,l as cleanupUi,p as duosynth,r as fmsynth,m as getDefaultSynth,y as getDrawContext,u as hideHeader,c as highpass,d as lowpass,g as membrane,i as metal,f as monosynth,w as noise,b as osc,k as out,x as piano,D as players,v as pluck,T as polysynth,j as sampler,q as synth,C as vol}; +import{T as e,o as n,a as o,x as t,u as h,y as l,d as p,f as r,g as m,t as y,w as u,k as c,l as d,m as g,b as i,c as f,n as w,q as b,r as k,j as x,h as D,p as v,e as T,s as j,i as q,v as C}from"./index.d3c8394c.js";export{e as Tone,n as adsr,o as amsynth,t as backgroundImage,h as cleanupDraw,l as cleanupUi,p as duosynth,r as fmsynth,m as getDefaultSynth,y as getDrawContext,u as hideHeader,c as highpass,d as lowpass,g as membrane,i as metal,f as monosynth,w as noise,b as osc,k as out,x as piano,D as players,v as pluck,T as polysynth,j as sampler,q as synth,C as vol}; diff --git a/assets/osc.91b4276f.js b/assets/osc.1d3a7f92.js similarity index 98% rename from assets/osc.91b4276f.js rename to assets/osc.1d3a7f92.js index cde9d471d..b3d5d952a 100644 --- a/assets/osc.91b4276f.js +++ b/assets/osc.1d3a7f92.js @@ -1 +1 @@ -var ot=Object.defineProperty,st=Object.defineProperties;var it=Object.getOwnPropertyDescriptors;var ke=Object.getOwnPropertySymbols;var at=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable;var be=(g,d,p)=>d in g?ot(g,d,{enumerable:!0,configurable:!0,writable:!0,value:p}):g[d]=p,Se=(g,d)=>{for(var p in d||(d={}))at.call(d,p)&&be(g,p,d[p]);if(ke)for(var p of ke(d))ut.call(d,p)&&be(g,p,d[p]);return g},Oe=(g,d)=>st(g,it(d));import{B as H,P as ct}from"./index.8e502404.js";var Ee={exports:{}};(function(g,d){(function(p,u){g.exports=u()})(H,function(){function p(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),n.push.apply(n,t)}return n}function u(r){for(var e=1;e1&&e[e.length-1]==="/"&&(e=e.slice(0,e.length-1)),e.length>1&&e[0]!=="/"&&(e="/".concat(e)),e;throw new Error("OSC prepareAddress() needs addresses of type array or string")}function ae(r){if(!v(r))throw new Error("OSC prepareRegExPattern() needs strings");return r.replace(/\./g,"\\.").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!/g,"[^").replace(/\?/g,".").replace(/\*/g,".*")}var ue=function(){function r(){f(this,r),this.data=[],this.byteLength=0}return l(r,[{key:"add",value:function(e){if(te(e)||ne(e)||oe(e))return this;var n=e.pack();return this.byteLength+=n.byteLength,this.data.push(n),this}},{key:"merge",value:function(){var e=new Uint8Array(this.byteLength),n=0;return this.data.forEach(function(t){e.set(t,n),n+=t.byteLength}),e}}]),r}(),C=function(){function r(e){f(this,r),this.value=e,this.offset=0}return l(r,[{key:"pack",value:function(e,n){if(!e||!n)throw new Error("OSC Atomic cant't be packed without given method or byteLength");var t=new Uint8Array(n),o=new DataView(t.buffer);if(A(this.value))throw new Error("OSC Atomic cant't be encoded with empty value");return o[e](this.offset,this.value,!1),t}},{key:"unpack",value:function(e,n,t){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(!(e&&n&&t))throw new Error("OSC Atomic cant't be unpacked without given dataView, method or byteLength");if(!(e instanceof DataView))throw new Error("OSC Atomic expects an instance of type DataView");return this.value=e[n](o,!1),this.offset=o+t,this.offset}}]),r}(),U=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!b(t))throw new Error("OSC AtomicInt32 constructor expects value of type number");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setInt32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getInt32",4,o)}}]),n}(C),ce="utf-8";function De(r){if(se("Buffer"))return Buffer.from(r).toString(ce);if(se("TextDecoder"))return new TextDecoder(ce).decode(new Int8Array(r));for(var e="",n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicString expects an instance of type DataView");for(var i,s=o,a=[];s0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(f(this,r),!b(e)||!b(n))throw new Error("OSC Timetag constructor expects values of type integer number");this.seconds=e,this.fractions=n}return l(r,[{key:"timestamp",value:function(e){var n;if(typeof e=="number"){n=e/1e3;var t=Math.floor(n);return this.seconds=t+fe,this.fractions=Math.round(le*(n-t)),e}return 1e3*((n=this.seconds-fe)+Math.round(this.fractions/le))}}]),r}(),B=function(r){k(n,r);var e=y(n);function n(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Date.now();f(this,n);var o=new G;return t instanceof G?o=t:b(t)?o.timestamp(t):Ae(t)&&o.timestamp(t.getTime()),e.call(this,o)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicTimetag can not be encoded with empty value");var t=this.value,o=t.seconds,i=t.fractions,s=new Uint8Array(8),a=new DataView(s.buffer);return a.setInt32(0,o,!1),a.setInt32(4,i,!1),s}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicTimetag expects an instance of type DataView");var i=t.getUint32(o,!1),s=t.getUint32(o+4,!1);return this.value=new G(i,s),this.offset=o+8,this.offset}}]),n}(C),he=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!re(t))throw new Error("OSC AtomicBlob constructor expects value of type Uint8Array");return e.call(this,t)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicBlob can not be encoded with empty value");var t=V(this.value.byteLength),o=new Uint8Array(t+4);return new DataView(o.buffer).setInt32(0,this.value.byteLength,!1),o.set(this.value,4),o}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicBlob expects an instance of type DataView");var i=t.getInt32(o,!1);return this.value=new Uint8Array(t.buffer,o+4,i),this.offset=V(o+4+i),this.offset}}]),n}(C),pe=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat32 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat32",4,o)}}]),n}(C),de=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat64 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat64",8,o)}}]),n}(C),je=BigInt("9223372036854775807"),xe=BigInt("-9223372036854775808"),ge=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicInt64 constructor expects value of type BigInt");if(t&&(tje))throw new Error("OSC AtomicInt64 value is out of bounds");var o;return t&&(o=BigInt.asIntN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigInt64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigInt64",8,o)}}]),n}(C),Be=BigInt("18446744073709551615"),ve=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicUInt64 constructor expects value of type BigInt");if(t&&(t<0||t>Be))throw new Error("OSC AtomicUInt64 value is out of bounds");var o;return t&&(o=BigInt.asUintN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigUint64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigUint64",8,o)}}]),n}(C),Z=!0,q=!1,J=null,K=1/0,Q=function(){function r(e,n){var t=this;if(f(this,r),this.offset=0,this.address="",this.types="",this.args=[],!A(e)){if(!v(e)&&!D(e))throw new Error("OSC Message constructor first argument (address) must be a string or array");this.address=L(e)}if(!A(n)){if(!D(n))throw new Error("OSC Message constructor second argument (args) must be an array");n.forEach(function(o){return t.add(o.type,o.value)})}}return l(r,[{key:"add",value:function(e,n){if(A(e))throw new Error("OSC Message needs a valid OSC Atomic Data Type");e==="N"?this.args.push(J):e==="T"?this.args.push(Z):e==="F"?this.args.push(q):e==="I"?this.args.push(K):this.args.push(n),this.types+=e}},{key:"pack",value:function(){var e=this;if(this.address.length===0||this.address[0]!=="/")throw new Error("OSC Message has an invalid address");var n=new ue;if(n.add(new S(this.address)),n.add(new S(",".concat(this.types))),this.args.length>0){var t;if(this.args.length>this.types.length)throw new Error("OSC Message argument and type tag mismatch");this.args.forEach(function(o,i){var s=e.types[i];if(s==="i")t=new U(o);else if(s==="h")t=new ge(o);else if(s==="t")t=new ve(o);else if(s==="f")t=new pe(o);else if(s==="d")t=new de(o);else if(s==="s")t=new S(o);else if(s==="b")t=new he(o);else if(s==="T")t=Z;else if(s==="F")t=q;else if(s==="N")t=J;else{if(s!=="I")throw new Error("OSC Message found unknown argument type");t=K}n.add(t)})}return n.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Message expects an instance of type DataView.");var t=new S;t.unpack(e,n);var o=new S;if(o.unpack(e,t.offset),t.value.length===0||t.value[0]!=="/")throw new Error("OSC Message found malformed or missing address string");if(o.value.length===0&&o.value[0]!==",")throw new Error("OSC Message found malformed or missing type string");for(var i,s,a=o.offset,c=[],w=1;w0&&(o=a.shift()),a.length>0&&a[0]instanceof Array&&(i=a.shift()),t=e.call(this,o,i),a.length>0&&(t.types=a.map(function(w){return ie(w)}).join(""),t.args=a),t}return l(n,[{key:"add",value:function(t){m(h(n.prototype),"add",this).call(this,ie(t),t)}}]),n}(Q),_="#bundle",I=function(){function r(){var e=this;f(this,r),this.offset=0,this.timetag=new B,this.bundleElements=[];for(var n=arguments.length,t=new Array(n),o=0;o0&&(t[0]instanceof Date||b(t[0])?this.timetag=new B(t[0]):D(t[0])?(t[0].forEach(function(i){e.add(i)}),t.length>1&&(t[1]instanceof Date||b(t[1]))&&(this.timetag=new B(t[1]))):t.forEach(function(i){e.add(i)}))}return l(r,[{key:"timestamp",value:function(e){if(!b(e))throw new Error("OSC Bundle needs an integer for setting the timestamp");this.timetag=new B(e)}},{key:"add",value:function(e){if(!(e instanceof E||e instanceof r))throw new Error("OSC Bundle contains only Messages and Bundles");this.bundleElements.push(e)}},{key:"pack",value:function(){var e=new ue;return e.add(new S(_)),this.timetag||(this.timetag=new B),e.add(this.timetag),this.bundleElements.forEach(function(n){e.add(new U(n.pack().byteLength)),e.add(n)}),e.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Bundle expects an instance of type DataView");var t=new S;if(t.unpack(e,n),t.value!==_)throw new Error("OSC Bundle does not contain a valid #bundle head");var o=new B,i=o.unpack(e,t.offset);for(this.bundleElements=[];i1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Packet expects an instance of type DataView");if(e.byteLength%4!=0)throw new Error("OSC Packet byteLength has to be a multiple of four");var t,o=new S;return o.unpack(e,n),(t=o.value===_?new I:new E).unpack(e,n),this.offset=t.offset,this.value=t,this.offset}}]),r}(),Me={discardLateMessages:!1},He=function(){function r(e){f(this,r),this.options=u(u({},Me),e),this.addressHandlers=[],this.eventHandlers={open:[],error:[],close:[]},this.uuid=0}return l(r,[{key:"dispatch",value:function(e,n){var t=this;if(!(e instanceof M))throw new Error("OSC EventHander dispatch() accepts only arguments of type Packet");if(!e.value)throw new Error("OSC EventHander dispatch() can't read empty Packets");if(e.value instanceof I){var o=e.value;return o.bundleElements.forEach(function(s){if(s instanceof I){if(o.timetag.value.timestamp()1&&(s=n[1]);var a=null;if(n.length>2)if(b(n[2]))a=n[2];else{if(!(n[2]instanceof Date))throw new Error("OSC EventHandler timestamp has to be a number or Date");a=n[2].getTime()}var c=null;if(n.length>=3&&(c=n[3]),a){var w=Date.now();if(w>a&&!this.options.discardLateMessages)return this.call(i,s,c);var P=this;return setTimeout(function(){P.call(i,s,c)},a-w),!0}return this.call(i,s,c)}},{key:"on",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!j(n))throw new Error("OSC EventHandler callback has to be a function");this.uuid+=1;var t={id:this.uuid,callback:n};if(v(e)&&e in this.eventHandlers)return this.eventHandlers[e].push(t),this.uuid;var o=L(e);return o in this.addressHandlers||(this.addressHandlers[o]=[]),this.addressHandlers[o].push(t),this.uuid}},{key:"off",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!b(n))throw new Error("OSC EventHandler subscription id has to be a number");var t,o;return v(e)&&e in this.eventHandlers?(t=e,o=this.eventHandlers):(t=L(e),o=this.addressHandlers),t in o&&o[t].some(function(i,s){return i.id===n&&(o[t].splice(s,1),!0)})}}]),r}(),Te=0,Le=1,Ne=2,Ve=3,Ue=function(){function r(){throw f(this,r),new Error("DatagramPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options.open),n),o=t.port,i=t.exclusive;this.socketStatus=Te,this.socket.bind({address:t.host,port:o,exclusive:i},function(){e.socketStatus=Le,e.notify("open")})}},{key:"close",value:function(){var e=this;this.socketStatus=Ne,this.socket.close(function(){e.socketStatus=Ve,e.notify("close")})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=u(u({},this.options.send),n),o=t.port,i=t.host;this.socket.send(Buffer.from(e),0,e.byteLength,o,i)}}]),r}();typeof WebSocket!="undefined"?x=WebSocket:typeof MozWebSocket!="undefined"?x=MozWebSocket:typeof H!="undefined"?x=H.WebSocket||H.MozWebSocket:typeof window!="undefined"?x=window.WebSocket||window.MozWebSocket:typeof self!="undefined"&&(x=self.WebSocket||self.MozWebSocket);var X=void 0,we=x,_e=0,We=1,Re=2,Fe=3,W={udpServer:{host:"localhost",port:41234,exclusive:!1},udpClient:{host:"localhost",port:41235},wsServer:{host:"localhost",port:8080},receiver:"ws"};function ye(r,e){return u(u(u(u({},W),r),e),{},{udpServer:u(u(u({},W.udpServer),r.udpServer),e.udpServer),udpClient:u(u(u({},W.udpClient),r.udpClient),e.udpClient),wsServer:u(u(u({},W.wsServer),r.wsServer),e.wsServer)})}var ze=function(){function r(){throw f(this,r),new Error("BridgePlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ye(this.options,n);this.socketStatus=_e,this.socket.bind({address:t.udpServer.host,port:t.udpServer.port,exclusive:t.udpServer.exclusive},function(){var o={};t.wsServer.server?o.server=t.wsServer.server:o=t.wsServer,e.websocket=new X(o),e.websocket.binaryType="arraybuffer",e.websocket.on("listening",function(){e.socketStatus=We,e.notify("open")}),e.websocket.on("error",function(i){e.notify("error",i)}),e.websocket.on("connection",function(i){i.on("message",function(s,a){e.send(s,{receiver:"udp"}),e.notify(new Uint8Array(s),a)})})})}},{key:"close",value:function(){var e=this;this.socketStatus=Re,this.socket.close(function(){e.websocket.close(function(){e.socketStatus=Fe,e.notify("close")})})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=ye(this.options,n),o=t.receiver;if(o==="udp"){var i=e instanceof Buffer?e:Buffer.from(e);this.socket.send(i,0,i.byteLength,t.udpClient.port,t.udpClient.host)}else{if(o!=="ws")throw new Error("BridgePlugin can not send message to unknown receiver");this.websocket.clients.forEach(function(s){s.send(e,{binary:!0})})}}}]),r}(),Ge=-1,Ze=0,qe=1,Je=2,Ke=3,Qe={host:"localhost",port:8080,secure:!1,protocol:[]},me=function(){function r(e){if(f(this,r),!we)throw new Error("WebsocketClientPlugin can't find a WebSocket class");this.options=u(u({},Qe),e),this.socket=null,this.socketStatus=Ge,this.notify=function(){}}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s=t.secure,a=t.protocol;this.socket&&this.close();var c=s?"wss":"ws",w={address:i,family:c,port:o,size:0};this.socket=new we("".concat(c,"://").concat(i,":").concat(o),a),this.socket.binaryType="arraybuffer",this.socketStatus=Ze,this.socket.onopen=function(){e.socketStatus=qe,e.notify("open")},this.socket.onclose=function(){e.socketStatus=Ke,e.notify("close")},this.socket.onerror=function(P){e.notify("error",P)},this.socket.onmessage=function(P){e.notify(P.data,w)}}},{key:"close",value:function(){this.socketStatus=Je,this.socket.close()}},{key:"send",value:function(e){this.socket.send(e)}}]),r}(),Xe=0,Ye=1,$e=2,et=3,tt=function(){function r(e){throw f(this,r),new Error("WebsocketServerPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s={address:i,family:"wsserver",port:o,size:0};this.socket&&this.close(),t.server?this.socket=new X({server:t.server}):this.socket=new X({host:i,port:o}),this.socket.binaryType="arraybuffer",this.socketStatus=Xe,this.socket.on("listening",function(){e.socketStatus=Ye,e.notify("open")}),this.socket.on("error",function(a){e.notify("error",a)}),this.socket.on("connection",function(a){a.on("message",function(c){e.notify(new Uint8Array(c),s)})})}},{key:"close",value:function(){var e=this;this.socketStatus=$e,this.socket.close(function(){e.socketStatus=et,e.notify("close")})}},{key:"send",value:function(e){this.socket.clients.forEach(function(n){n.send(e,{binary:!0})})}}]),r}(),nt={discardLateMessages:!1,plugin:new me},O=function(){function r(e){if(f(this,r),e&&!z(e))throw new Error("OSC options argument has to be an object.");this.options=u(u({},nt),e),this.eventHandler=new He({discardLateMessages:this.options.discardLateMessages});var n=this.eventHandler;this.options.plugin&&this.options.plugin.registerNotify&&this.options.plugin.registerNotify(function(){return n.notify.apply(n,arguments)})}return l(r,[{key:"on",value:function(e,n){if(!v(e)||!j(n))throw new Error("OSC on() needs event- or address string and callback function");return this.eventHandler.on(e,n)}},{key:"off",value:function(e,n){if(!v(e)||!b(n))throw new Error("OSC off() needs string and number (subscriptionId) to unsubscribe");return this.eventHandler.off(e,n)}},{key:"open",value:function(e){if(e&&!z(e))throw new Error("OSC open() options argument needs to be an object");if(!this.options.plugin||!j(this.options.plugin.open))throw new Error("OSC Plugin API #open is not implemented!");return this.options.plugin.open(e)}},{key:"status",value:function(){if(!this.options.plugin||!j(this.options.plugin.status))throw new Error("OSC Plugin API #status is not implemented!");return this.options.plugin.status()}},{key:"close",value:function(){if(!this.options.plugin||!j(this.options.plugin.close))throw new Error("OSC Plugin API #close is not implemented!");return this.options.plugin.close()}},{key:"send",value:function(e,n){if(!this.options.plugin||!j(this.options.plugin.send))throw new Error("OSC Plugin API #send is not implemented!");if(!(e instanceof Q||e instanceof E||e instanceof I||e instanceof M))throw new Error("OSC send() needs Messages, Bundles or Packets");if(n&&!z(n))throw new Error("OSC send() options argument has to be an object");return this.options.plugin.send(e.pack(),n)}}]),r}();return O.STATUS={IS_NOT_INITIALIZED:-1,IS_CONNECTING:0,IS_OPEN:1,IS_CLOSING:2,IS_CLOSED:3},O.Packet=M,O.Bundle=I,O.Message=E,O.TypedMessage=Q,O.DatagramPlugin=Ue,O.WebsocketClientPlugin=me,O.WebsocketServerPlugin=tt,O.BridgePlugin=ze,O})})(Ee);var $=Ee.exports;const Ce=new $;Ce.open();const ft=.1;let Y=-1;ct.prototype.osc=function(){return this._withHap(g=>{const d=(p,u,f,N,l,R)=>{Y<0&&(Y=Date.now()-f*1e3);const k=Object.assign({},{cps:N,cycle:l,delta:R},u.value),h=Object.entries(k).flat(),T=Math.floor(Y+(p+ft)*1e3),F=new $.Message("/dirt/play",...h),y=new $.Bundle([F],T);y.timestamp(T),Ce.send(y)};return g.setContext(Oe(Se({},g.context),{onTrigger:d}))})}; +var ot=Object.defineProperty,st=Object.defineProperties;var it=Object.getOwnPropertyDescriptors;var ke=Object.getOwnPropertySymbols;var at=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable;var be=(g,d,p)=>d in g?ot(g,d,{enumerable:!0,configurable:!0,writable:!0,value:p}):g[d]=p,Se=(g,d)=>{for(var p in d||(d={}))at.call(d,p)&&be(g,p,d[p]);if(ke)for(var p of ke(d))ut.call(d,p)&&be(g,p,d[p]);return g},Oe=(g,d)=>st(g,it(d));import{B as H,P as ct}from"./index.d3c8394c.js";var Ee={exports:{}};(function(g,d){(function(p,u){g.exports=u()})(H,function(){function p(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),n.push.apply(n,t)}return n}function u(r){for(var e=1;e1&&e[e.length-1]==="/"&&(e=e.slice(0,e.length-1)),e.length>1&&e[0]!=="/"&&(e="/".concat(e)),e;throw new Error("OSC prepareAddress() needs addresses of type array or string")}function ae(r){if(!v(r))throw new Error("OSC prepareRegExPattern() needs strings");return r.replace(/\./g,"\\.").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!/g,"[^").replace(/\?/g,".").replace(/\*/g,".*")}var ue=function(){function r(){f(this,r),this.data=[],this.byteLength=0}return l(r,[{key:"add",value:function(e){if(te(e)||ne(e)||oe(e))return this;var n=e.pack();return this.byteLength+=n.byteLength,this.data.push(n),this}},{key:"merge",value:function(){var e=new Uint8Array(this.byteLength),n=0;return this.data.forEach(function(t){e.set(t,n),n+=t.byteLength}),e}}]),r}(),C=function(){function r(e){f(this,r),this.value=e,this.offset=0}return l(r,[{key:"pack",value:function(e,n){if(!e||!n)throw new Error("OSC Atomic cant't be packed without given method or byteLength");var t=new Uint8Array(n),o=new DataView(t.buffer);if(A(this.value))throw new Error("OSC Atomic cant't be encoded with empty value");return o[e](this.offset,this.value,!1),t}},{key:"unpack",value:function(e,n,t){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(!(e&&n&&t))throw new Error("OSC Atomic cant't be unpacked without given dataView, method or byteLength");if(!(e instanceof DataView))throw new Error("OSC Atomic expects an instance of type DataView");return this.value=e[n](o,!1),this.offset=o+t,this.offset}}]),r}(),U=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!b(t))throw new Error("OSC AtomicInt32 constructor expects value of type number");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setInt32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getInt32",4,o)}}]),n}(C),ce="utf-8";function De(r){if(se("Buffer"))return Buffer.from(r).toString(ce);if(se("TextDecoder"))return new TextDecoder(ce).decode(new Int8Array(r));for(var e="",n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicString expects an instance of type DataView");for(var i,s=o,a=[];s0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(f(this,r),!b(e)||!b(n))throw new Error("OSC Timetag constructor expects values of type integer number");this.seconds=e,this.fractions=n}return l(r,[{key:"timestamp",value:function(e){var n;if(typeof e=="number"){n=e/1e3;var t=Math.floor(n);return this.seconds=t+fe,this.fractions=Math.round(le*(n-t)),e}return 1e3*((n=this.seconds-fe)+Math.round(this.fractions/le))}}]),r}(),B=function(r){k(n,r);var e=y(n);function n(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Date.now();f(this,n);var o=new G;return t instanceof G?o=t:b(t)?o.timestamp(t):Ae(t)&&o.timestamp(t.getTime()),e.call(this,o)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicTimetag can not be encoded with empty value");var t=this.value,o=t.seconds,i=t.fractions,s=new Uint8Array(8),a=new DataView(s.buffer);return a.setInt32(0,o,!1),a.setInt32(4,i,!1),s}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicTimetag expects an instance of type DataView");var i=t.getUint32(o,!1),s=t.getUint32(o+4,!1);return this.value=new G(i,s),this.offset=o+8,this.offset}}]),n}(C),he=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!re(t))throw new Error("OSC AtomicBlob constructor expects value of type Uint8Array");return e.call(this,t)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicBlob can not be encoded with empty value");var t=V(this.value.byteLength),o=new Uint8Array(t+4);return new DataView(o.buffer).setInt32(0,this.value.byteLength,!1),o.set(this.value,4),o}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicBlob expects an instance of type DataView");var i=t.getInt32(o,!1);return this.value=new Uint8Array(t.buffer,o+4,i),this.offset=V(o+4+i),this.offset}}]),n}(C),pe=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat32 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat32",4,o)}}]),n}(C),de=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat64 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat64",8,o)}}]),n}(C),je=BigInt("9223372036854775807"),xe=BigInt("-9223372036854775808"),ge=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicInt64 constructor expects value of type BigInt");if(t&&(tje))throw new Error("OSC AtomicInt64 value is out of bounds");var o;return t&&(o=BigInt.asIntN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigInt64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigInt64",8,o)}}]),n}(C),Be=BigInt("18446744073709551615"),ve=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicUInt64 constructor expects value of type BigInt");if(t&&(t<0||t>Be))throw new Error("OSC AtomicUInt64 value is out of bounds");var o;return t&&(o=BigInt.asUintN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigUint64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigUint64",8,o)}}]),n}(C),Z=!0,q=!1,J=null,K=1/0,Q=function(){function r(e,n){var t=this;if(f(this,r),this.offset=0,this.address="",this.types="",this.args=[],!A(e)){if(!v(e)&&!D(e))throw new Error("OSC Message constructor first argument (address) must be a string or array");this.address=L(e)}if(!A(n)){if(!D(n))throw new Error("OSC Message constructor second argument (args) must be an array");n.forEach(function(o){return t.add(o.type,o.value)})}}return l(r,[{key:"add",value:function(e,n){if(A(e))throw new Error("OSC Message needs a valid OSC Atomic Data Type");e==="N"?this.args.push(J):e==="T"?this.args.push(Z):e==="F"?this.args.push(q):e==="I"?this.args.push(K):this.args.push(n),this.types+=e}},{key:"pack",value:function(){var e=this;if(this.address.length===0||this.address[0]!=="/")throw new Error("OSC Message has an invalid address");var n=new ue;if(n.add(new S(this.address)),n.add(new S(",".concat(this.types))),this.args.length>0){var t;if(this.args.length>this.types.length)throw new Error("OSC Message argument and type tag mismatch");this.args.forEach(function(o,i){var s=e.types[i];if(s==="i")t=new U(o);else if(s==="h")t=new ge(o);else if(s==="t")t=new ve(o);else if(s==="f")t=new pe(o);else if(s==="d")t=new de(o);else if(s==="s")t=new S(o);else if(s==="b")t=new he(o);else if(s==="T")t=Z;else if(s==="F")t=q;else if(s==="N")t=J;else{if(s!=="I")throw new Error("OSC Message found unknown argument type");t=K}n.add(t)})}return n.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Message expects an instance of type DataView.");var t=new S;t.unpack(e,n);var o=new S;if(o.unpack(e,t.offset),t.value.length===0||t.value[0]!=="/")throw new Error("OSC Message found malformed or missing address string");if(o.value.length===0&&o.value[0]!==",")throw new Error("OSC Message found malformed or missing type string");for(var i,s,a=o.offset,c=[],w=1;w0&&(o=a.shift()),a.length>0&&a[0]instanceof Array&&(i=a.shift()),t=e.call(this,o,i),a.length>0&&(t.types=a.map(function(w){return ie(w)}).join(""),t.args=a),t}return l(n,[{key:"add",value:function(t){m(h(n.prototype),"add",this).call(this,ie(t),t)}}]),n}(Q),_="#bundle",I=function(){function r(){var e=this;f(this,r),this.offset=0,this.timetag=new B,this.bundleElements=[];for(var n=arguments.length,t=new Array(n),o=0;o0&&(t[0]instanceof Date||b(t[0])?this.timetag=new B(t[0]):D(t[0])?(t[0].forEach(function(i){e.add(i)}),t.length>1&&(t[1]instanceof Date||b(t[1]))&&(this.timetag=new B(t[1]))):t.forEach(function(i){e.add(i)}))}return l(r,[{key:"timestamp",value:function(e){if(!b(e))throw new Error("OSC Bundle needs an integer for setting the timestamp");this.timetag=new B(e)}},{key:"add",value:function(e){if(!(e instanceof E||e instanceof r))throw new Error("OSC Bundle contains only Messages and Bundles");this.bundleElements.push(e)}},{key:"pack",value:function(){var e=new ue;return e.add(new S(_)),this.timetag||(this.timetag=new B),e.add(this.timetag),this.bundleElements.forEach(function(n){e.add(new U(n.pack().byteLength)),e.add(n)}),e.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Bundle expects an instance of type DataView");var t=new S;if(t.unpack(e,n),t.value!==_)throw new Error("OSC Bundle does not contain a valid #bundle head");var o=new B,i=o.unpack(e,t.offset);for(this.bundleElements=[];i1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Packet expects an instance of type DataView");if(e.byteLength%4!=0)throw new Error("OSC Packet byteLength has to be a multiple of four");var t,o=new S;return o.unpack(e,n),(t=o.value===_?new I:new E).unpack(e,n),this.offset=t.offset,this.value=t,this.offset}}]),r}(),Me={discardLateMessages:!1},He=function(){function r(e){f(this,r),this.options=u(u({},Me),e),this.addressHandlers=[],this.eventHandlers={open:[],error:[],close:[]},this.uuid=0}return l(r,[{key:"dispatch",value:function(e,n){var t=this;if(!(e instanceof M))throw new Error("OSC EventHander dispatch() accepts only arguments of type Packet");if(!e.value)throw new Error("OSC EventHander dispatch() can't read empty Packets");if(e.value instanceof I){var o=e.value;return o.bundleElements.forEach(function(s){if(s instanceof I){if(o.timetag.value.timestamp()1&&(s=n[1]);var a=null;if(n.length>2)if(b(n[2]))a=n[2];else{if(!(n[2]instanceof Date))throw new Error("OSC EventHandler timestamp has to be a number or Date");a=n[2].getTime()}var c=null;if(n.length>=3&&(c=n[3]),a){var w=Date.now();if(w>a&&!this.options.discardLateMessages)return this.call(i,s,c);var P=this;return setTimeout(function(){P.call(i,s,c)},a-w),!0}return this.call(i,s,c)}},{key:"on",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!j(n))throw new Error("OSC EventHandler callback has to be a function");this.uuid+=1;var t={id:this.uuid,callback:n};if(v(e)&&e in this.eventHandlers)return this.eventHandlers[e].push(t),this.uuid;var o=L(e);return o in this.addressHandlers||(this.addressHandlers[o]=[]),this.addressHandlers[o].push(t),this.uuid}},{key:"off",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!b(n))throw new Error("OSC EventHandler subscription id has to be a number");var t,o;return v(e)&&e in this.eventHandlers?(t=e,o=this.eventHandlers):(t=L(e),o=this.addressHandlers),t in o&&o[t].some(function(i,s){return i.id===n&&(o[t].splice(s,1),!0)})}}]),r}(),Te=0,Le=1,Ne=2,Ve=3,Ue=function(){function r(){throw f(this,r),new Error("DatagramPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options.open),n),o=t.port,i=t.exclusive;this.socketStatus=Te,this.socket.bind({address:t.host,port:o,exclusive:i},function(){e.socketStatus=Le,e.notify("open")})}},{key:"close",value:function(){var e=this;this.socketStatus=Ne,this.socket.close(function(){e.socketStatus=Ve,e.notify("close")})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=u(u({},this.options.send),n),o=t.port,i=t.host;this.socket.send(Buffer.from(e),0,e.byteLength,o,i)}}]),r}();typeof WebSocket!="undefined"?x=WebSocket:typeof MozWebSocket!="undefined"?x=MozWebSocket:typeof H!="undefined"?x=H.WebSocket||H.MozWebSocket:typeof window!="undefined"?x=window.WebSocket||window.MozWebSocket:typeof self!="undefined"&&(x=self.WebSocket||self.MozWebSocket);var X=void 0,we=x,_e=0,We=1,Re=2,Fe=3,W={udpServer:{host:"localhost",port:41234,exclusive:!1},udpClient:{host:"localhost",port:41235},wsServer:{host:"localhost",port:8080},receiver:"ws"};function ye(r,e){return u(u(u(u({},W),r),e),{},{udpServer:u(u(u({},W.udpServer),r.udpServer),e.udpServer),udpClient:u(u(u({},W.udpClient),r.udpClient),e.udpClient),wsServer:u(u(u({},W.wsServer),r.wsServer),e.wsServer)})}var ze=function(){function r(){throw f(this,r),new Error("BridgePlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ye(this.options,n);this.socketStatus=_e,this.socket.bind({address:t.udpServer.host,port:t.udpServer.port,exclusive:t.udpServer.exclusive},function(){var o={};t.wsServer.server?o.server=t.wsServer.server:o=t.wsServer,e.websocket=new X(o),e.websocket.binaryType="arraybuffer",e.websocket.on("listening",function(){e.socketStatus=We,e.notify("open")}),e.websocket.on("error",function(i){e.notify("error",i)}),e.websocket.on("connection",function(i){i.on("message",function(s,a){e.send(s,{receiver:"udp"}),e.notify(new Uint8Array(s),a)})})})}},{key:"close",value:function(){var e=this;this.socketStatus=Re,this.socket.close(function(){e.websocket.close(function(){e.socketStatus=Fe,e.notify("close")})})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=ye(this.options,n),o=t.receiver;if(o==="udp"){var i=e instanceof Buffer?e:Buffer.from(e);this.socket.send(i,0,i.byteLength,t.udpClient.port,t.udpClient.host)}else{if(o!=="ws")throw new Error("BridgePlugin can not send message to unknown receiver");this.websocket.clients.forEach(function(s){s.send(e,{binary:!0})})}}}]),r}(),Ge=-1,Ze=0,qe=1,Je=2,Ke=3,Qe={host:"localhost",port:8080,secure:!1,protocol:[]},me=function(){function r(e){if(f(this,r),!we)throw new Error("WebsocketClientPlugin can't find a WebSocket class");this.options=u(u({},Qe),e),this.socket=null,this.socketStatus=Ge,this.notify=function(){}}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s=t.secure,a=t.protocol;this.socket&&this.close();var c=s?"wss":"ws",w={address:i,family:c,port:o,size:0};this.socket=new we("".concat(c,"://").concat(i,":").concat(o),a),this.socket.binaryType="arraybuffer",this.socketStatus=Ze,this.socket.onopen=function(){e.socketStatus=qe,e.notify("open")},this.socket.onclose=function(){e.socketStatus=Ke,e.notify("close")},this.socket.onerror=function(P){e.notify("error",P)},this.socket.onmessage=function(P){e.notify(P.data,w)}}},{key:"close",value:function(){this.socketStatus=Je,this.socket.close()}},{key:"send",value:function(e){this.socket.send(e)}}]),r}(),Xe=0,Ye=1,$e=2,et=3,tt=function(){function r(e){throw f(this,r),new Error("WebsocketServerPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s={address:i,family:"wsserver",port:o,size:0};this.socket&&this.close(),t.server?this.socket=new X({server:t.server}):this.socket=new X({host:i,port:o}),this.socket.binaryType="arraybuffer",this.socketStatus=Xe,this.socket.on("listening",function(){e.socketStatus=Ye,e.notify("open")}),this.socket.on("error",function(a){e.notify("error",a)}),this.socket.on("connection",function(a){a.on("message",function(c){e.notify(new Uint8Array(c),s)})})}},{key:"close",value:function(){var e=this;this.socketStatus=$e,this.socket.close(function(){e.socketStatus=et,e.notify("close")})}},{key:"send",value:function(e){this.socket.clients.forEach(function(n){n.send(e,{binary:!0})})}}]),r}(),nt={discardLateMessages:!1,plugin:new me},O=function(){function r(e){if(f(this,r),e&&!z(e))throw new Error("OSC options argument has to be an object.");this.options=u(u({},nt),e),this.eventHandler=new He({discardLateMessages:this.options.discardLateMessages});var n=this.eventHandler;this.options.plugin&&this.options.plugin.registerNotify&&this.options.plugin.registerNotify(function(){return n.notify.apply(n,arguments)})}return l(r,[{key:"on",value:function(e,n){if(!v(e)||!j(n))throw new Error("OSC on() needs event- or address string and callback function");return this.eventHandler.on(e,n)}},{key:"off",value:function(e,n){if(!v(e)||!b(n))throw new Error("OSC off() needs string and number (subscriptionId) to unsubscribe");return this.eventHandler.off(e,n)}},{key:"open",value:function(e){if(e&&!z(e))throw new Error("OSC open() options argument needs to be an object");if(!this.options.plugin||!j(this.options.plugin.open))throw new Error("OSC Plugin API #open is not implemented!");return this.options.plugin.open(e)}},{key:"status",value:function(){if(!this.options.plugin||!j(this.options.plugin.status))throw new Error("OSC Plugin API #status is not implemented!");return this.options.plugin.status()}},{key:"close",value:function(){if(!this.options.plugin||!j(this.options.plugin.close))throw new Error("OSC Plugin API #close is not implemented!");return this.options.plugin.close()}},{key:"send",value:function(e,n){if(!this.options.plugin||!j(this.options.plugin.send))throw new Error("OSC Plugin API #send is not implemented!");if(!(e instanceof Q||e instanceof E||e instanceof I||e instanceof M))throw new Error("OSC send() needs Messages, Bundles or Packets");if(n&&!z(n))throw new Error("OSC send() options argument has to be an object");return this.options.plugin.send(e.pack(),n)}}]),r}();return O.STATUS={IS_NOT_INITIALIZED:-1,IS_CONNECTING:0,IS_OPEN:1,IS_CLOSING:2,IS_CLOSED:3},O.Packet=M,O.Bundle=I,O.Message=E,O.TypedMessage=Q,O.DatagramPlugin=Ue,O.WebsocketClientPlugin=me,O.WebsocketServerPlugin=tt,O.BridgePlugin=ze,O})})(Ee);var $=Ee.exports;const Ce=new $;Ce.open();const ft=.1;let Y=-1;ct.prototype.osc=function(){return this._withHap(g=>{const d=(p,u,f,N)=>{const l=u.wholeOrPart().begin.valueOf(),R=u.duration.valueOf();Y<0&&(Y=Date.now()-f*1e3);const k=Object.assign({},{cps:N,cycle:l,delta:R},u.value),h=Object.entries(k).flat(),T=Math.floor(Y+(p+ft)*1e3),F=new $.Message("/dirt/play",...h),y=new $.Bundle([F],T);y.timestamp(T),Ce.send(y)};return g.setContext(Oe(Se({},g.context),{onTrigger:d}))})}; diff --git a/assets/serial.05b726f2.js b/assets/serial.aad8faad.js similarity index 94% rename from assets/serial.05b726f2.js rename to assets/serial.aad8faad.js index cf5616545..6bfbdac92 100644 --- a/assets/serial.05b726f2.js +++ b/assets/serial.aad8faad.js @@ -1 +1 @@ -var p=Object.defineProperty,y=Object.defineProperties;var d=Object.getOwnPropertyDescriptors;var s=Object.getOwnPropertySymbols;var m=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var c=(r,e,t)=>e in r?p(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,l=(r,e)=>{for(var t in e||(e={}))m.call(e,t)&&c(r,t,e[t]);if(s)for(var t of s(e))x.call(e,t)&&c(r,t,e[t]);return r},f=(r,e)=>y(r,d(e));import{P as T}from"./index.8e502404.js";var o,u=!1;async function W(r=115200){if(!u){if(u=!0,o)return o;if("serial"in navigator){const e=await navigator.serial.requestPort();await e.open({baudRate:r});const t=new TextEncoderStream;t.readable.pipeTo(e.writable);const a=t.writable.getWriter();o=function(i){a.write(i)}}else throw"Webserial is not available in this browser."}}const P=.1;T.prototype.serial=async function(...r){return this._withHap(e=>{o||W(...r);const t=(a,i,w)=>{var n="";if(typeof i.value=="object")for(const[b,g]of Object.entries(i.value).flat())n+=`${b}:${g};`;else n=i.value;const v=(a-w+P)*1e3;window.setTimeout(o,v,n)};return e.setContext(f(l({},e.context),{onTrigger:t}))})};export{W as getWriter}; +var p=Object.defineProperty,y=Object.defineProperties;var d=Object.getOwnPropertyDescriptors;var s=Object.getOwnPropertySymbols;var m=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var c=(r,e,t)=>e in r?p(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,l=(r,e)=>{for(var t in e||(e={}))m.call(e,t)&&c(r,t,e[t]);if(s)for(var t of s(e))x.call(e,t)&&c(r,t,e[t]);return r},f=(r,e)=>y(r,d(e));import{P as T}from"./index.d3c8394c.js";var o,u=!1;async function W(r=115200){if(!u){if(u=!0,o)return o;if("serial"in navigator){const e=await navigator.serial.requestPort();await e.open({baudRate:r});const t=new TextEncoderStream;t.readable.pipeTo(e.writable);const a=t.writable.getWriter();o=function(i){a.write(i)}}else throw"Webserial is not available in this browser."}}const P=.1;T.prototype.serial=async function(...r){return this._withHap(e=>{o||W(...r);const t=(a,i,w)=>{var n="";if(typeof i.value=="object")for(const[b,g]of Object.entries(i.value).flat())n+=`${b}:${g};`;else n=i.value;const v=(a-w+P)*1e3;window.setTimeout(o,v,n)};return e.setContext(f(l({},e.context),{onTrigger:t}))})};export{W as getWriter}; diff --git a/index.html b/index.html index 3401d52a4..762491ebc 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@ Strudel REPL - + diff --git a/tutorial/assets/index.153eae0f.css b/tutorial/assets/index.153eae0f.css deleted file mode 100644 index 8e32d4fa9..000000000 --- a/tutorial/assets/index.153eae0f.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.container{width:100%}.\!container{width:100%!important}@media (min-width: 640px){.container{max-width:640px}.\!container{max-width:640px!important}}@media (min-width: 768px){.container{max-width:768px}.\!container{max-width:768px!important}}@media (min-width: 1024px){.container{max-width:1024px}.\!container{max-width:1024px!important}}@media (min-width: 1280px){.container{max-width:1280px}.\!container{max-width:1280px!important}}@media (min-width: 1536px){.container{max-width:1536px}.\!container{max-width:1536px!important}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~="not-prose"] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(ol):not(:where([class~="not-prose"] *)){list-style-type:decimal;padding-left:1.625em}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~="not-prose"] *)){list-style-type:disc;padding-left:1.625em}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~="not-prose"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201c""\201d""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *)):after{content:close-quote}.prose :where(h1):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~="not-prose"] *)){font-weight:900}.prose :where(h2):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~="not-prose"] *)){font-weight:800}.prose :where(h3):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~="not-prose"] *)){font-weight:700}.prose :where(h4):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~="not-prose"] *)){font-weight:700}.prose :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~="not-prose"] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~="not-prose"] *)):before{content:"`"}.prose :where(code):not(:where([class~="not-prose"] *)):after{content:"`"}.prose :where(a code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links)}.prose :where(pre):not(:where([class~="not-prose"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~="not-prose"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~="not-prose"] *)):before{content:none}.prose :where(pre code):not(:where([class~="not-prose"] *)):after{content:none}.prose :where(table):not(:where([class~="not-prose"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~="not-prose"] *)){vertical-align:baseline;padding:.5714286em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.875em}.prose :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.9em}.prose :where(li):not(:where([class~="not-prose"] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose>:where(ul > li p):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose>:where(ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose>:where(ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose>:where(ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose>:where(ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(tbody td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(tbody td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose>:where(:first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose>:where(:last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~="not-prose"] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.prose-lg :where([class~="lead"]):not(:where([class~="not-prose"] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.prose-lg :where(blockquote):not(:where([class~="not-prose"] *)){margin-top:1.6666667em;margin-bottom:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~="not-prose"] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.prose-lg :where(h2):not(:where([class~="not-prose"] *)){font-size:1.6666667em;margin-top:1.8666667em;margin-bottom:1.0666667em;line-height:1.3333333}.prose-lg :where(h3):not(:where([class~="not-prose"] *)){font-size:1.3333333em;margin-top:1.6666667em;margin-bottom:.6666667em;line-height:1.5}.prose-lg :where(h4):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:.4444444em;line-height:1.5555556}.prose-lg :where(img):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.prose-lg :where(video):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.prose-lg :where(figure):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.prose-lg :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose-lg :where(figcaption):not(:where([class~="not-prose"] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(code):not(:where([class~="not-prose"] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~="not-prose"] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~="not-prose"] *)){padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~="not-prose"] *)){padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~="not-prose"] *)){margin-top:.6666667em;margin-bottom:.6666667em}.prose-lg :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.4444444em}.prose-lg :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.4444444em}.prose-lg>:where(ul > li p):not(:where([class~="not-prose"] *)){margin-top:.8888889em;margin-bottom:.8888889em}.prose-lg>:where(ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.3333333em}.prose-lg>:where(ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.3333333em}.prose-lg>:where(ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.3333333em}.prose-lg>:where(ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.8888889em;margin-bottom:.8888889em}.prose-lg :where(hr):not(:where([class~="not-prose"] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.prose-lg :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(table):not(:where([class~="not-prose"] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~="not-prose"] *)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.prose-lg :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose-lg :where(tbody td):not(:where([class~="not-prose"] *)){padding:.75em}.prose-lg :where(tbody td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose-lg :where(tbody td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose-lg>:where(:first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg>:where(:last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.\!visible{visibility:visible!important}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.\!fixed{position:fixed!important}.absolute{position:absolute}.\!absolute{position:absolute!important}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.-inset-1{top:-.25rem;right:-.25rem;bottom:-.25rem;left:-.25rem}.top-0{top:0px}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-\[2\]{z-index:2}.float-right{float:right}.float-left{float:left}.float-none{float:none}.clear-left{clear:left}.clear-right{clear:right}.clear-both{clear:both}.clear-none{clear:none}.mt-2{margin-top:.5rem}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.block{display:block}.\!block{display:block!important}.inline-block{display:inline-block}.inline{display:inline}.\!inline{display:inline!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.\!table{display:table!important}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.h-16{height:4rem}.h-10{height:2.5rem}.h-1{height:.25rem}.h-\[calc\(100\%-theme\(\'spacing\.1\'\)\)\],.h-\[calc\(100\%-theme\(\"spacing\.1\"\)\)\]{height:calc(100% - .25rem)}.min-h-screen{min-height:100vh}.w-full{width:100%}.w-10{width:2.5rem}.max-w-3xl{max-width:48rem}.flex-none{flex:none}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform-cpu{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-gpu{transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-pointer{cursor:pointer}.touch-auto{touch-action:auto}.touch-none{touch-action:none}.touch-pan-x{--tw-pan-x: pan-x;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-left{--tw-pan-x: pan-left;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-right{--tw-pan-x: pan-right;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-y{--tw-pan-y: pan-y;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-up{--tw-pan-y: pan-up;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-down{--tw-pan-y: pan-down;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pinch-zoom{--tw-pinch-zoom: pinch-zoom;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.resize-none{resize:none}.resize-y{resize:vertical}.resize-x{resize:horizontal}.resize{resize:both}.snap-none{-ms-scroll-snap-type:none;scroll-snap-type:none}.snap-x{-ms-scroll-snap-type:x var(--tw-scroll-snap-strictness);scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-y{-ms-scroll-snap-type:y var(--tw-scroll-snap-strictness);scroll-snap-type:y var(--tw-scroll-snap-strictness)}.snap-both{-ms-scroll-snap-type:both var(--tw-scroll-snap-strictness);scroll-snap-type:both var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness: mandatory}.snap-proximity{--tw-scroll-snap-strictness: proximity}.snap-start{scroll-snap-align:start}.snap-end{scroll-snap-align:end}.snap-center{scroll-snap-align:center}.snap-align-none{scroll-snap-align:none}.snap-normal{scroll-snap-stop:normal}.snap-always{scroll-snap-stop:always}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.break-before-auto{-moz-column-break-before:auto;break-before:auto}.break-before-avoid{-moz-column-break-before:avoid;break-before:avoid}.break-before-all{-moz-column-break-before:all;break-before:all}.break-before-avoid-page{-moz-column-break-before:avoid;break-before:avoid-page}.break-before-page{-moz-column-break-before:page;break-before:page}.break-before-left{-moz-column-break-before:left;break-before:left}.break-before-right{-moz-column-break-before:right;break-before:right}.break-before-column{-moz-column-break-before:column;break-before:column}.break-inside-auto{-moz-column-break-inside:auto;break-inside:auto}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.break-inside-avoid-page{break-inside:avoid-page}.break-inside-avoid-column{-moz-column-break-inside:avoid;break-inside:avoid-column}.break-after-auto{-moz-column-break-after:auto;break-after:auto}.break-after-avoid{-moz-column-break-after:avoid;break-after:avoid}.break-after-all{-moz-column-break-after:all;break-after:all}.break-after-avoid-page{-moz-column-break-after:avoid;break-after:avoid-page}.break-after-page{-moz-column-break-after:page;break-after:page}.break-after-left{-moz-column-break-after:left;break-after:left}.break-after-right{-moz-column-break-after:right;break-after:right}.break-after-column{-moz-column-break-after:column;break-after:column}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.grid-flow-row-dense{grid-auto-flow:row dense}.grid-flow-col-dense{grid-auto-flow:column dense}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.place-content-center{place-content:center}.place-content-start{place-content:start}.place-content-end{place-content:end}.place-content-between{place-content:space-between}.place-content-around{place-content:space-around}.place-content-evenly{place-content:space-evenly}.place-content-stretch{place-content:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 1}.divide-solid>:not([hidden])~:not([hidden]){border-style:solid}.divide-dashed>:not([hidden])~:not([hidden]){border-style:dashed}.divide-dotted>:not([hidden])~:not([hidden]){border-style:dotted}.divide-double>:not([hidden])~:not([hidden]){border-style:double}.divide-none>:not([hidden])~:not([hidden]){border-style:none}.place-self-auto{place-self:auto}.place-self-start{place-self:start}.place-self-end{place-self:end}.place-self-center{place-self:center}.place-self-stretch{place-self:stretch}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.self-baseline{align-self:baseline}.justify-self-auto{justify-self:auto}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.justify-self-stretch{justify-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.overflow-y-clip{overflow-y:clip}.overflow-x-visible{overflow-x:visible}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overscroll-auto{-ms-scroll-chaining:chained;overscroll-behavior:auto}.overscroll-contain{-ms-scroll-chaining:none;overscroll-behavior:contain}.overscroll-none{-ms-scroll-chaining:none;overscroll-behavior:none}.overscroll-y-auto{overscroll-behavior-y:auto}.overscroll-y-contain{overscroll-behavior-y:contain}.overscroll-y-none{overscroll-behavior-y:none}.overscroll-x-auto{overscroll-behavior-x:auto}.overscroll-x-contain{overscroll-behavior-x:contain}.overscroll-x-none{overscroll-behavior-x:none}.scroll-auto{scroll-behavior:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis,.text-ellipsis{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-l{border-left-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-double{border-style:double}.border-hidden{border-style:hidden}.border-none{border-style:none}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-\[rgb\(255\,0\,0\)\]{--tw-bg-opacity: 1;background-color:rgb(255 0 0 / var(--tw-bg-opacity))}.bg-\[url\(\'\.\.\.\'\)\]{background-image:url(...)}.bg-\[url\(\"\.\.\.\"\)\]{background-image:url(...)}.bg-\[url\(\'\.\.\.\'\)\,url\(\'\.\.\.\'\)\]{background-image:url(...),url(...)}.bg-\[url\(\"\.\.\.\"\)\,url\(\"\.\.\.\"\)\]{background-image:url(...),url(...)}.decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.box-decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.box-decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.bg-fixed{background-attachment:fixed}.bg-local{background-attachment:local}.bg-scroll{background-attachment:scroll}.bg-clip-border{background-clip:border-box}.bg-clip-padding{background-clip:padding-box}.bg-clip-content{background-clip:content-box}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-repeat{background-repeat:repeat}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-repeat-round{background-repeat:round}.bg-repeat-space{background-repeat:space}.bg-origin-border{background-origin:border-box}.bg-origin-padding{background-origin:padding-box}.bg-origin-content{background-origin:content-box}.fill-\[\#bada55\]{fill:#bada55}.fill-\[\#bada55\]\/50{fill:#bada5580}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.object-none{-o-object-fit:none;object-fit:none}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.p-4{padding:1rem}.p-1{padding:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-1{padding-left:.25rem;padding-right:.25rem}.pl-6{padding-left:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-top{vertical-align:text-top}.align-text-bottom{vertical-align:text-bottom}.align-sub{vertical-align:sub}.align-super{vertical-align:super}.font-\[\'some_font\'\,sans-serif\],.font-\[\"some_font\"\,sans-serif\]{font-family:some font,sans-serif}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal: ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero: slashed-zero;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure: lining-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure: oldstyle-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing: proportional-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction: diagonal-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction: stacked-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.decoration-solid{-webkit-text-decoration-style:solid;text-decoration-style:solid}.decoration-double{-webkit-text-decoration-style:double;text-decoration-style:double}.decoration-dotted{-webkit-text-decoration-style:dotted;text-decoration-style:dotted}.decoration-dashed{-webkit-text-decoration-style:dashed;text-decoration-style:dashed}.decoration-wavy{-webkit-text-decoration-style:wavy;text-decoration-style:wavy}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.bg-blend-normal{background-blend-mode:normal}.bg-blend-multiply{background-blend-mode:multiply}.bg-blend-screen{background-blend-mode:screen}.bg-blend-overlay{background-blend-mode:overlay}.bg-blend-darken{background-blend-mode:darken}.bg-blend-lighten{background-blend-mode:lighten}.bg-blend-color-dodge{background-blend-mode:color-dodge}.bg-blend-color-burn{background-blend-mode:color-burn}.bg-blend-hard-light{background-blend-mode:hard-light}.bg-blend-soft-light{background-blend-mode:soft-light}.bg-blend-difference{background-blend-mode:difference}.bg-blend-exclusion{background-blend-mode:exclusion}.bg-blend-hue{background-blend-mode:hue}.bg-blend-saturation{background-blend-mode:saturation}.bg-blend-color{background-blend-mode:color}.bg-blend-luminosity{background-blend-mode:luminosity}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-screen{mix-blend-mode:screen}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-darken{mix-blend-mode:darken}.mix-blend-lighten{mix-blend-mode:lighten}.mix-blend-color-dodge{mix-blend-mode:color-dodge}.mix-blend-color-burn{mix-blend-mode:color-burn}.mix-blend-hard-light{mix-blend-mode:hard-light}.mix-blend-soft-light{mix-blend-mode:soft-light}.mix-blend-difference{mix-blend-mode:difference}.mix-blend-exclusion{mix-blend-mode:exclusion}.mix-blend-hue{mix-blend-mode:hue}.mix-blend-saturation{mix-blend-mode:saturation}.mix-blend-color{mix-blend-mode:color}.mix-blend-luminosity{mix-blend-mode:luminosity}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.\!shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1) !important;--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-dashed{outline-style:dashed}.outline-dotted{outline-style:dotted}.outline-double{outline-style:double}.outline-hidden{outline-style:hidden}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!invert{--tw-invert: invert(100%) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.sepia{--tw-sepia: sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter-none{filter:none}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-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);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)}.backdrop-grayscale{--tw-backdrop-grayscale: grayscale(100%);-webkit-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);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)}.backdrop-invert{--tw-backdrop-invert: invert(100%);-webkit-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);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)}.backdrop-sepia{--tw-backdrop-sepia: sepia(100%);-webkit-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);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)}.backdrop-filter{-webkit-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);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)}.backdrop-filter-none{-webkit-backdrop-filter:none;backdrop-filter:none}.transition{transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.content-\[\'hello\'\],.content-\[\"hello\"\]{--tw-content: "hello";content:var(--tw-content)}.content-\[\'this-is-also-valid\]-weirdly-enough\'\]{--tw-content: "this-is-also-valid]-weirdly-enough";content:var(--tw-content)}.\[attr\:value\]{attr:value}.\[content\:\'hello\'\],.\[content\:\"hello\"\]{content:"hello"}.\[vite\:css\]{vite:css}h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{display:block;content:" ";margin-top:-70px;height:70px;visibility:hidden;pointer-events:none;position:relative}h1:hover .icon-link,h2:hover .icon-link,h3:hover .icon-link,h4:hover .icon-link,h5:hover .icon-link,h6:hover .icon-link,.icon.icon-link:hover{visibility:visible}.icon.icon-link{background-image:url(/tutorial/assets/link.55bc37e1.svg);background-repeat:no-repeat;height:16px;display:block;color:gray;fill:#000;position:absolute;visibility:hidden;margin-left:-20px;width:20px;margin-top:8px}#table-of-contents{display:none}#table-of-contents+ul{position:fixed;right:0;top:64px;overflow:auto;height:calc(100vh - 64px);width:33%;margin:2px;padding:12px 0 12px 8px}#table-of-contents+ul ul{padding-left:8px}#table-of-contents+ul li{list-style:none;margin:2px}#table-of-contents+ul li p{margin:0}#table-of-contents+ul li a{text-decoration:none}@media only screen and (max-width: 1120px){#table-of-contents+ul{display:none}}.hover\:font-bold:hover{font-weight:700}.before\:hover\:text-center:hover:before{content:var(--tw-content);text-align:center}.hover\:before\:text-center:hover:before{content:var(--tw-content);text-align:center}.hover\:focus\:text-center:focus:hover{text-align:center}.focus\:hover\:text-center:hover:focus{text-align:center}.prose-headings\:underline :is(:where(h1,h2,h3,h4,th):not(:where([class~="not-prose"] *))){-webkit-text-decoration-line:underline;text-decoration-line:underline}.prose-lead\:italic :is(:where([class~="lead"]):not(:where([class~="not-prose"] *))){font-style:italic}.prose-h1\:text-3xl :is(:where(h1):not(:where([class~="not-prose"] *))){font-size:1.875rem;line-height:2.25rem}.prose-h2\:text-2xl :is(:where(h2):not(:where([class~="not-prose"] *))){font-size:1.5rem;line-height:2rem}.prose-h3\:text-xl :is(:where(h3):not(:where([class~="not-prose"] *))){font-size:1.25rem;line-height:1.75rem}.prose-h4\:text-lg :is(:where(h4):not(:where([class~="not-prose"] *))){font-size:1.125rem;line-height:1.75rem}.prose-p\:text-gray-700 :is(:where(p):not(:where([class~="not-prose"] *))){--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.prose-a\:font-bold :is(:where(a):not(:where([class~="not-prose"] *))){font-weight:700}.prose-blockquote\:italic :is(:where(blockquote):not(:where([class~="not-prose"] *))){font-style:italic}.prose-figure\:mx-auto :is(:where(figure):not(:where([class~="not-prose"] *))){margin-left:auto;margin-right:auto}.prose-figcaption\:opacity-75 :is(:where(figcaption):not(:where([class~="not-prose"] *))){opacity:.75}.prose-strong\:font-medium :is(:where(strong):not(:where([class~="not-prose"] *))){font-weight:500}.prose-em\:italic :is(:where(em):not(:where([class~="not-prose"] *))){font-style:italic}.prose-code\:font-mono :is(:where(code):not(:where([class~="not-prose"] *))){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.prose-pre\:font-mono :is(:where(pre):not(:where([class~="not-prose"] *))){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.prose-ol\:pl-6 :is(:where(ol):not(:where([class~="not-prose"] *))){padding-left:1.5rem}.prose-ul\:pl-8 :is(:where(ul):not(:where([class~="not-prose"] *))){padding-left:2rem}.prose-li\:my-4 :is(:where(li):not(:where([class~="not-prose"] *))){margin-top:1rem;margin-bottom:1rem}.prose-table\:my-8 :is(:where(table):not(:where([class~="not-prose"] *))){margin-top:2rem;margin-bottom:2rem}.prose-thead\:border-red-300 :is(:where(thead):not(:where([class~="not-prose"] *))){--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.prose-tr\:border-red-200 :is(:where(tr):not(:where([class~="not-prose"] *))){--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity))}.prose-th\:text-left :is(:where(th):not(:where([class~="not-prose"] *))){text-align:left}.prose-img\:rounded-lg :is(:where(img):not(:where([class~="not-prose"] *))){border-radius:.5rem}.prose-video\:my-12 :is(:where(video):not(:where([class~="not-prose"] *))){margin-top:3rem;margin-bottom:3rem}.prose-hr\:border-t-2 :is(:where(hr):not(:where([class~="not-prose"] *))){border-top-width:2px}@media (min-width: 640px){.sm\:container{width:100%}@media (min-width: 640px){.sm\:container{max-width:640px}}@media (min-width: 768px){.sm\:container{max-width:768px}}@media (min-width: 1024px){.sm\:container{max-width:1024px}}@media (min-width: 1280px){.sm\:container{max-width:1280px}}@media (min-width: 1536px){.sm\:container{max-width:1536px}}.sm\:underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}}@media (prefers-color-scheme: dark){@media (min-width: 1024px){.dark\:lg\:hover\:\[paint-order\:markers\]:hover{paint-order:markers}}}*,:before,:after{--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sc-h-5{height:1.25rem}.sc-w-5{width:1.25rem}@-webkit-keyframes sc-pulse{50%{opacity:.5}}@keyframes sc-pulse{50%{opacity:.5}}.sc-animate-pulse{-webkit-animation:sc-pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:sc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cm-editor{background-color:transparent!important}._container_10e1g_1{overflow:hidden;border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(68 76 87 / var(--tw-bg-opacity))}._header_10e1g_5{display:flex;justify-content:space-between;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}._buttons_10e1g_9{display:flex}._button_10e1g_9{display:flex;width:4rem;cursor:pointer;align-items:center;justify-content:center;border-right-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}._button_10e1g_9:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}._buttonDisabled_10e1g_17{display:flex;width:4rem;cursor:pointer;cursor:not-allowed;align-items:center;justify-content:center;--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}._error_10e1g_21{padding:.25rem;text-align:right;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}._body_10e1g_25{position:relative;overflow:auto} diff --git a/tutorial/assets/index.cded106f.js b/tutorial/assets/index.2b76d197.js similarity index 71% rename from tutorial/assets/index.cded106f.js rename to tutorial/assets/index.2b76d197.js index da5868672..31d6adec8 100644 --- a/tutorial/assets/index.cded106f.js +++ b/tutorial/assets/index.2b76d197.js @@ -1 +1 @@ -import{I as s,M as d,G as o,J as l,F as r,L as t,K as f}from"./index.a9d67b3c.js";export{s as getLoadedBuffer,d as getLoadedSamples,o as loadBuffer,l as loadGithubSamples,r as loadWebDirt,t as resetLoadedSamples,f as samples}; +import{I as s,M as d,G as o,J as l,F as r,L as t,K as f}from"./index.5a47cda7.js";export{s as getLoadedBuffer,d as getLoadedSamples,o as loadBuffer,l as loadGithubSamples,r as loadWebDirt,t as resetLoadedSamples,f as samples}; diff --git a/tutorial/assets/index.4951e033.js b/tutorial/assets/index.4951e033.js new file mode 100644 index 000000000..0a27634d0 --- /dev/null +++ b/tutorial/assets/index.4951e033.js @@ -0,0 +1 @@ +var Bn=Object.defineProperty,Hn=Object.defineProperties;var Ln=Object.getOwnPropertyDescriptors;var kt=Object.getOwnPropertySymbols;var Un=Object.prototype.hasOwnProperty,Xn=Object.prototype.propertyIsEnumerable;var Rt=(t,n,e)=>n in t?Bn(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,y=(t,n)=>{for(var e in n||(n={}))Un.call(n,e)&&Rt(t,e,n[e]);if(kt)for(var e of kt(n))Xn.call(n,e)&&Rt(t,e,n[e]);return t},g=(t,n)=>Hn(t,Ln(n));import{P as w,w as Kn,x as Qn,y as Y,z as Yn,A as Zn,H as Jn,B as Wn}from"./index.5a47cda7.js";const x=(t,n)=>Array(Math.abs(n)+1).join(t);function v(t,n,e){return function(...o){return console.warn(`${t} is deprecated. Use ${n}.`),e.apply(this,o)}}function q(t){return t!==null&&typeof t=="object"&&typeof t.name=="string"}function G(t){return t!==null&&typeof t=="object"&&typeof t.step=="number"&&typeof t.alt=="number"}const Yt=[0,2,4,-1,1,3,5],Zt=Yt.map(t=>Math.floor(t*7/12));function et(t){const{step:n,alt:e,oct:o,dir:r=1}=t,i=Yt[n]+7*e;if(o===void 0)return[r*i];const a=o-Zt[n]-4*e;return[r*i,r*a]}const te=[3,0,4,1,5,2,6];function ot(t){const[n,e,o]=t,r=te[ne(n)],i=Math.floor((n+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const a=e+4*i+Zt[r];return{step:r,alt:i,oct:a,dir:o}}function ne(t){const n=(t+1)%7;return n<0?7+n:n}const Jt={empty:!0,name:"",pc:"",acc:""},Ot=new Map,vt=t=>"CDEFGAB".charAt(t),k=t=>t<0?x("b",-t):x("#",t),B=t=>t[0]==="b"?-t.length:t.length;function u(t){const n=Ot.get(t);if(n)return n;const e=typeof t=="string"?re(t):G(t)?u(ie(t)):q(t)?u(t.name):Jt;return Ot.set(t,e),e}const ee=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function rt(t){const n=ee.exec(t);return[n[1].toUpperCase(),n[2].replace(/x/g,"##"),n[3],n[4]]}function z(t){return u(ot(t))}const oe=(t,n)=>(t%n+n)%n,ht=[0,2,4,5,7,9,11];function re(t){const n=rt(t);if(n[0]===""||n[3]!=="")return Jt;const e=n[0],o=n[1],r=n[2],i=(e.charCodeAt(0)+3)%7,a=B(o),s=r.length?+r:void 0,c=et({step:i,alt:a,oct:s}),l=e+o+r,m=e+o,d=(ht[i]+a+120)%12,M=s===void 0?oe(ht[i]+a,12)-12*99:ht[i]+a+12*(s+1),b=M>=0&&M<=127?M:null,p=s===void 0?null:Math.pow(2,(M-69)/12)*440;return{empty:!1,acc:o,alt:a,chroma:d,coord:c,freq:p,height:M,letter:e,midi:b,name:l,oct:s,pc:m,step:i}}function ie(t){const{step:n,alt:e,oct:o}=t,r=vt(n);if(!r)return"";const i=r+k(e);return o||o===0?i+o:i}const yt={empty:!0,name:"",acc:""},ae="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",se="(AA|A|P|M|m|d|dd)([-+]?\\d+)",ce=new RegExp("^"+ae+"|"+se+"$");function Nt(t){const n=ce.exec(`${t}`);return n===null?["",""]:n[1]?[n[1],n[2]]:[n[4],n[3]]}const Ft={};function f(t){return typeof t=="string"?Ft[t]||(Ft[t]=me(t)):G(t)?f(le(t)):q(t)?f(t.name):yt}const zt=[0,2,4,5,7,9,11],Wt="PMMPPMM";function me(t){const n=Nt(t);if(n[0]==="")return yt;const e=+n[0],o=n[1],r=(Math.abs(e)-1)%7,i=Wt[r];if(i==="M"&&o==="P")return yt;const a=i==="M"?"majorable":"perfectable",s=""+e+o,c=e<0?-1:1,l=e===8||e===-8?e:c*(r+1),m=ue(a,o),d=Math.floor((Math.abs(e)-1)/7),M=c*(zt[r]+m+12*d),b=(c*(zt[r]+m)%12+12)%12,p=et({step:r,alt:m,oct:d,dir:c});return{empty:!1,name:s,num:e,q:o,step:r,alt:m,dir:c,type:a,simple:l,semitones:M,chroma:b,coord:p,oct:d}}function H(t,n){const[e,o=0]=t,r=e*7+o*12<0,i=n||r?[-e,-o,-1]:[e,o,1];return f(ot(i))}function ue(t,n){return n==="M"&&t==="majorable"||n==="P"&&t==="perfectable"?0:n==="m"&&t==="majorable"?-1:/^A+$/.test(n)?n.length:/^d+$/.test(n)?-1*(t==="perfectable"?n.length:n.length+1):0}function le(t){const{step:n,alt:e,oct:o=0,dir:r}=t;if(!r)return"";const i=n+1+7*o,a=i===0?n+1:i,s=r<0?"-":"",c=Wt[n]==="M"?"majorable":"perfectable";return s+a+de(c,e)}function de(t,n){return n===0?t==="majorable"?"M":"P":n===-1&&t==="majorable"?"m":n>0?x("A",n):x("d",t==="perfectable"?n:n+1)}function P(t,n){const e=u(t),o=f(n);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return z(a).name}function R(t,n){const e=u(t),o=u(n);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(a*7/12),c=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return H([a,s],c).name}var tn=Object.freeze(Object.defineProperty({__proto__:null,accToAlt:B,altToAcc:k,coordToInterval:H,coordToNote:z,decode:ot,deprecate:v,distance:R,encode:et,fillStr:x,interval:f,isNamed:q,isPitch:G,note:u,stepToLetter:vt,tokenizeInterval:Nt,tokenizeNote:rt,transpose:P},Symbol.toStringTag,{value:"Module"}));const qt=(t,n)=>Array(n+1).join(t),Me=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function nn(t){const n=Me.exec(t);return n?[n[1],n[2],n[3]]:["","",""]}function W(t){const[n,e,o]=nn(t);if(e==="")return"";let r=4;for(let a=0;a96?e.toUpperCase()+i+(r+1):e+i+r}function en(t){const n=u(t);if(n.empty||!n.oct&&n.oct!==0)return"";const{letter:e,acc:o,oct:r}=n,i=o[0]==="b"?o.replace(/b/g,"_"):o.replace(/#/g,"^"),a=r>4?e.toLowerCase():e,s=r===5?"":r>4?qt("'",r-5):qt(",",4-r);return i+a+s}function fe(t,n){return en(P(W(t),n))}function Pe(t,n){return R(W(t),W(n))}var pe={abcToScientificNotation:W,scientificToAbcNotation:en,tokenize:nn,transpose:fe,distance:Pe};function he(t,n){const e=[];for(;n--;e[n]=n+t);return e}function ye(t,n){const e=[];for(;n--;e[n]=t-n);return e}function ge(t,n){return tn===0||n)}function on(t){return t.map(e=>u(e)).filter(e=>!e.empty).sort((e,o)=>e.height-o.height).map(e=>e.name)}function ve(t){return on(t).filter((n,e,o)=>e===0||n!==o[e-1])}function Ne(t,n=Math.random){let e,o,r=t.length;for(;r;)e=Math.floor(n()*r--),o=t[r],t[r]=t[e],t[e]=o;return t}function rn(t){return t.length===0?[[]]:rn(t.slice(1)).reduce((n,e)=>n.concat(t.map((o,r)=>{const i=e.slice();return i.splice(r,0,t[0]),i})),[])}var $e=Object.freeze(Object.defineProperty({__proto__:null,compact:Ae,permutations:rn,range:ge,rotate:be,shuffle:Ne,sortedNoteNames:on,sortedUniqNoteNames:ve},Symbol.toStringTag,{value:"Module"}));function Ie(t,n){const e=[];for(;n--;e[n]=n+t);return e}function je(t,n){const e=[];for(;n--;e[n]=t-n);return e}function it(t,n){return tn===0||n)}function Te(t,n=Math.random){let e,o,r=t.length;for(;r;)e=Math.floor(n()*r--),o=t[r],t[r]=t[e],t[e]=o;return t}function an(t){return t.length===0?[[]]:an(t.slice(1)).reduce((n,e)=>n.concat(t.map((o,r)=>{const i=e.slice();return i.splice(r,0,t[0]),i})),[])}var Se={compact:$t,permutations:an,range:it,rotate:L,shuffle:Te};const V={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},It=t=>Number(t).toString(2),Gt=t=>parseInt(t,2),_e=/^[01]{12}$/;function sn(t){return _e.test(t)}const Ve=t=>typeof t=="number"&&t>=0&&t<=4095,Ce=t=>t&&sn(t.chroma),Bt={[V.chroma]:V};function h(t){const n=sn(t)?t:Ve(t)?It(t):Array.isArray(t)?Be(t):Ce(t)?t.chroma:V.chroma;return Bt[n]=Bt[n]||Ge(n)}const we=v("Pcset.pcset","Pcset.get",h),xe=t=>h(t).chroma,Ee=t=>h(t).intervals,De=t=>h(t).setNum,ke=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Re(t){const n=[];for(let e=0;e<12;e++)t.charAt(e)==="1"&&n.push(ke[e]);return n}function Oe(){return it(2048,4095).map(It)}function jt(t,n=!0){const o=h(t).chroma.split("");return $t(o.map((r,i)=>{const a=L(i,o);return n&&a[0]==="0"?null:a.join("")}))}function Fe(t,n){return h(t).setNum===h(n).setNum}function at(t){const n=h(t).setNum;return e=>{const o=h(e).setNum;return n&&n!==o&&(o&n)===o}}function st(t){const n=h(t).setNum;return e=>{const o=h(e).setNum;return n&&n!==o&&(o|n)===o}}function cn(t){const n=h(t);return e=>{const o=u(e);return n&&!o.empty&&n.chroma.charAt(o.chroma)==="1"}}function ze(t){const n=cn(t);return e=>e.filter(n)}var mn={get:h,chroma:xe,num:De,intervals:Ee,chromas:Oe,isSupersetOf:st,isSubsetOf:at,isNoteIncludedIn:cn,isEqual:Fe,filter:ze,modes:jt,pcset:we};function qe(t){const n=t.split("");return n.map((e,o)=>L(o,n).join(""))}function Ge(t){const n=Gt(t),e=qe(t).map(Gt).filter(i=>i>=2048).sort()[0],o=It(e),r=Re(t);return{empty:!1,name:"",setNum:n,chroma:t,normalized:o,intervals:r}}function Be(t){if(t.length===0)return V.chroma;let n;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;ot.name).filter(t=>t)}function Ke(){return O.map(t=>t.aliases[0]).filter(t=>t)}function Qe(){return Object.keys(S)}function F(){return O.slice()}const Ye=v("ChordType.entries","ChordType.all",F);function Ze(){O=[],S={}}function un(t,n,e){const o=We(t),r=g(y({},h(t)),{name:e||"",quality:o,intervals:t,aliases:n});O.push(r),r.name&&(S[r.name]=r),S[r.setNum]=r,S[r.chroma]=r,r.aliases.forEach(i=>Je(r,i))}function Je(t,n){S[n]=t}function We(t){const n=e=>t.indexOf(e)!==-1;return n("5A")?"Augmented":n("3M")?"Major":n("5d")?"Diminished":n("3m")?"Minor":"Unknown"}He.forEach(([t,n,e])=>un(t.split(" "),e.split(" "),n));O.sort((t,n)=>t.setNum-n.setNum);var ln={names:Xe,symbols:Ke,get:Tt,all:F,add:un,removeAll:Ze,keys:Qe,entries:Ye,chordType:Ue};const to=t=>{const n=t.reduce((e,o)=>{const r=u(o).chroma;return r!==void 0&&(e[r]=e[r]||u(o).name),e},{});return e=>n[e]};function no(t){const n=t.map(o=>u(o).pc).filter(o=>o);return u.length===0?[]:eo(n,1).filter(o=>o.weight).sort((o,r)=>r.weight-o.weight).map(o=>o.name)}function eo(t,n){const e=t[0],o=u(e).chroma,r=to(t),i=jt(t,!1),a=[];return i.forEach((s,c)=>{F().filter(m=>m.chroma===s).forEach(m=>{const d=m.aliases[0],M=r(c);c!==o?a.push({weight:.5*n,name:`${M}${d}/${e}`}):a.push({weight:1*n,name:`${M}${d}`})})}),a}const oo=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],ro=g(y({},V),{intervals:[],aliases:[]});let ct=[],_={};function dn(){return ct.map(t=>t.name)}function mt(t){return _[t]||ro}const io=v("ScaleDictionary.scaleType","ScaleType.get",mt);function U(){return ct.slice()}const ao=v("ScaleDictionary.entries","ScaleType.all",U);function so(){return Object.keys(_)}function co(){ct=[],_={}}function Mn(t,n,e=[]){const o=g(y({},h(t)),{name:n,intervals:t,aliases:e});return ct.push(o),_[o.name]=o,_[o.setNum]=o,_[o.chroma]=o,o.aliases.forEach(r=>mo(o,r)),o}function mo(t,n){_[n]=t}oo.forEach(([t,n,...e])=>Mn(t.split(" "),n,e));var fn={names:dn,get:mt,all:U,add:Mn,removeAll:co,keys:so,entries:ao,scaleType:io};const gt={empty:!0,name:"",symbol:"",root:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},uo=/^(6|64|7|9|11|13)$/;function ut(t){const[n,e,o,r]=rt(t);return n===""?["",t]:n==="A"&&r==="ug"?["","aug"]:!r&&(o==="4"||o==="5")?[n+e,o]:uo.test(o)?[n+e,o+r]:[n+e+o,r]}function X(t){if(t==="")return gt;if(Array.isArray(t)&&t.length===2)return Z(t[1],t[0]);{const[n,e]=ut(t),o=Z(e,n);return o.empty?Z(t):o}}function Z(t,n,e){const o=Tt(t),r=u(n||""),i=u(e||"");if(o.empty||n&&r.empty||e&&i.empty)return gt;const a=R(r.pc,i.pc),s=o.intervals.indexOf(a)+1;if(!i.empty&&!s)return gt;const c=Array.from(o.intervals);for(let M=1;MP(r,M));t=o.aliases.indexOf(t)!==-1?t:o.aliases[0];const m=`${r.empty?"":r.pc}${t}${i.empty||s<=1?"":"/"+i.pc}`,d=`${n?r.pc+" ":""}${o.name}${s>1&&e?" over "+i.pc:""}`;return g(y({},o),{name:d,symbol:m,type:o.name,root:i.name,intervals:c,rootDegree:s,tonic:r.name,notes:l})}const lo=v("Chord.chord","Chord.get",X);function Mo(t,n){const[e,o]=ut(t);return e?P(e,n)+o:t}function fo(t){const n=X(t),e=st(n.chroma);return U().filter(o=>e(o.chroma)).map(o=>o.name)}function Po(t){const n=X(t),e=st(n.chroma);return F().filter(o=>e(o.chroma)).map(o=>n.tonic+o.aliases[0])}function po(t){const n=X(t),e=at(n.chroma);return F().filter(o=>e(o.chroma)).map(o=>n.tonic+o.aliases[0])}var ho={getChord:Z,get:X,detect:no,chordScales:fo,extended:Po,reduced:po,tokenize:ut,transpose:Mo,chord:lo};const yo=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],lt=[];yo.forEach(([t,n,e])=>jo(t,n,e));const go={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function bo(){return lt.reduce((t,n)=>(n.names.forEach(e=>t.push(e)),t),[])}function Ao(){return lt.map(t=>t.shorthand)}const vo=/^([^.]+)(\.*)$/;function St(t){const[n,e,o]=vo.exec(t)||[],r=lt.find(s=>s.shorthand===e||s.names.includes(e));if(!r)return go;const i=To(r.fraction,o.length),a=i[0]/i[1];return g(y({},r),{name:t,dots:o,value:a,fraction:i})}const No=t=>St(t).value,$o=t=>St(t).fraction;var Io={names:bo,shorthands:Ao,get:St,value:No,fraction:$o};function jo(t,n,e){lt.push({empty:!1,dots:"",name:"",value:1/t,fraction:t<1?[1/t,1]:[1,t],shorthand:n,names:e})}function To(t,n){const e=Math.pow(2,n);let o=t[0]*e,r=t[1]*e;const i=o;for(let a=0;af(t).name,Vo=t=>f(t).semitones,Co=t=>f(t).q,wo=t=>f(t).num;function pn(t){const n=f(t);return n.empty?"":n.simple+n.q}function xo(t){const n=f(t);if(n.empty)return"";const e=(7-n.step)%7,o=n.type==="perfectable"?-n.alt:-(n.alt+1);return f({step:e,alt:o,oct:n.oct,dir:n.dir}).name}const Eo=[1,2,2,3,3,4,5,5,6,6,7,7],Do="P m M m M P d P m M m M".split(" ");function ko(t){const n=t<0?-1:1,e=Math.abs(t),o=e%12,r=Math.floor(e/12);return n*(Eo[o]+7*r)+Do[o]}const Ro=R,hn=gn((t,n)=>[t[0]+n[0],t[1]+n[1]]),Oo=t=>n=>hn(t,n),Fo=gn((t,n)=>[t[0]-n[0],t[1]-n[1]]);function yn(t,n){const e=Pn(t);if(e.empty)return"";const[o,r,i]=e.coord;return H([o+n,r,i]).name}var bt={names:So,get:Pn,name:_o,num:wo,semitones:Vo,quality:Co,fromSemitones:ko,distance:Ro,invert:xo,simplify:pn,add:hn,addTo:Oo,substract:Fo,transposeFifths:yn};function gn(t){return(n,e)=>{const o=f(n).coord,r=f(e).coord;if(o&&r){const i=t(o,r);return H(i).name}}}function bn(t){return+t>=0&&+t<=127}function An(t){if(bn(t))return+t;const n=u(t);return n.empty?null:n.midi}function zo(t,n=440){return Math.pow(2,(t-69)/12)*n}const qo=Math.log(2),Go=Math.log(440);function _t(t){const n=12*(Math.log(t)-Go)/qo+69;return Math.round(n*100)/100}const Bo="C C# D D# E F F# G G# A A# B".split(" "),Ho="C Db D Eb E F Gb G Ab A Bb B".split(" ");function T(t,n={}){if(isNaN(t)||t===-1/0||t===1/0)return"";t=Math.round(t);const o=(n.sharps===!0?Bo:Ho)[t%12];if(n.pitchClass)return o;const r=Math.floor(t/12)-1;return o+r}var Lo={isMidi:bn,toMidi:An,midiToFreq:zo,midiToNoteName:T,freqToMidi:_t};const Uo=["C","D","E","F","G","A","B"],vn=t=>t.name,Nn=t=>t.map(u).filter(n=>!n.empty);function Xo(t){return t===void 0?Uo.slice():Array.isArray(t)?Nn(t).map(vn):[]}const A=u,Ko=t=>A(t).name,Qo=t=>A(t).pc,Yo=t=>A(t).acc,Zo=t=>A(t).oct,Jo=t=>A(t).midi,Wo=t=>A(t).freq,tr=t=>A(t).chroma;function $n(t){return T(t)}function nr(t){return T(_t(t))}function er(t){return T(_t(t),{sharps:!0})}function or(t){return T(t,{sharps:!0})}const Vt=P,rr=P,In=t=>n=>Vt(n,t),ir=In,jn=t=>n=>Vt(t,n),ar=jn;function tt(t,n){const e=A(t);if(e.empty)return"";const[o,r]=e.coord;return z(r===void 0?[o+n]:[o+n,r]).name}const sr=tt,Ct=(t,n)=>t.height-n.height,cr=(t,n)=>n.height-t.height;function Tn(t,n){return n=n||Ct,Nn(t).sort(n).map(vn)}function Sn(t){return Tn(t,Ct).filter((n,e,o)=>e===0||n!==o[e-1])}const mr=t=>{const n=A(t);return n.empty?"":T(n.midi||n.chroma,{sharps:n.alt>0,pitchClass:n.midi===null})};function _n(t,n){const e=A(t);if(e.empty)return"";const o=A(n||T(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,a=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+a;return o.pc+s}var E={names:Xo,get:A,name:Ko,pitchClass:Qo,accidentals:Yo,octave:Zo,midi:Jo,ascending:Ct,descending:cr,sortedNames:Tn,sortedUniqNames:Sn,fromMidi:$n,fromMidiSharps:or,freq:Wo,fromFreq:nr,fromFreqSharps:er,chroma:tr,transpose:Vt,tr:rr,transposeBy:In,trBy:ir,transposeFrom:jn,trFrom:ar,transposeFifths:tt,trFifths:sr,simplify:mr,enharmonic:_n};const Vn={empty:!0,name:"",chordType:""},Ht={};function I(t){return typeof t=="string"?Ht[t]||(Ht[t]=pr(t)):typeof t=="number"?I(dt[t]||""):G(t)?dr(t):q(t)?I(t.name):Vn}const ur=v("RomanNumeral.romanNumeral","RomanNumeral.get",I);function lr(t=!0){return(t?dt:Pr).slice()}function dr(t){return I(k(t.alt)+dt[t.step])}const Mr=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function fr(t){return Mr.exec(t)||["","","",""]}const Cn="I II III IV V VI VII",dt=Cn.split(" "),Pr=Cn.toLowerCase().split(" ");function pr(t){const[n,e,o,r]=fr(t);if(!o)return Vn;const i=o.toUpperCase(),a=dt.indexOf(i),s=B(e),c=1;return{empty:!1,name:n,roman:o,interval:f({step:a,alt:s,dir:c}).name,acc:e,chordType:r,alt:s,step:a,major:o===i,oct:0,dir:c}}var hr={names:lr,get:I,romanNumeral:ur};const N=Object.freeze([]),wn={type:"major",tonic:"",alteration:0,keySignature:""},J={tonic:"",grades:N,intervals:N,scale:N,chords:N,chordsHarmonicFunction:N,chordScales:N},yr=g(y(y({},wn),J),{type:"major",minorRelative:"",scale:N,secondaryDominants:N,secondaryDominantsMinorRelative:N,substituteDominants:N,substituteDominantsMinorRelative:N}),gr=g(y({},wn),{type:"minor",relativeMajor:"",natural:J,harmonic:J,melodic:J}),Lt=(t,n,e="")=>n.map((o,r)=>`${t[r]}${e}${o}`);function Mt(t,n,e,o){return r=>{const i=t.map(s=>I(s).interval||""),a=i.map(s=>P(r,s));return{tonic:r,grades:t,intervals:i,scale:a,chords:Lt(a,n),chordsHarmonicFunction:e.slice(),chordScales:Lt(a,o," ")}}}const xn=(t,n)=>{const e=u(t),o=u(n);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},br=Mt("I II III IV V VI VII".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),Ar=Mt("I II bIII IV V bVI bVII".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),vr=Mt("I II bIII IV V bVI VII".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),Nr=Mt("I II bIII IV V VI VII".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function $r(t){const n=u(t).pc;if(!n)return yr;const e=br(n),o=xn("C",n),r=i=>{const a=I(i);return a.empty?"":P(t,a.interval)+a.chordType};return g(y({},e),{type:"major",minorRelative:P(n,"-3m"),alteration:o,keySignature:k(o),secondaryDominants:"- VI7 VII7 I7 II7 III7 -".split(" ").map(r),secondaryDominantsMinorRelative:"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ").map(r),substituteDominants:"- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ").map(r),substituteDominantsMinorRelative:"- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" ").map(r)})}function Ir(t){const n=u(t).pc;if(!n)return gr;const e=xn("C",n)-3;return{type:"minor",tonic:n,relativeMajor:P(n,"3m"),alteration:e,keySignature:k(e),natural:Ar(n),harmonic:vr(n),melodic:Nr(n)}}function jr(t){return typeof t=="number"?tt("C",t):typeof t=="string"&&/^b+|#+$/.test(t)?tt("C",B(t)):null}var Tr={majorKey:$r,majorTonicFromKeySignature:jr,minorKey:Ir};const wt=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],Ut=g(y({},V),{name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]}),xt=wt.map(Cr),At={};xt.forEach(t=>{At[t.name]=t,t.aliases.forEach(n=>{At[n]=t})});function C(t){return typeof t=="string"?At[t.toLowerCase()]||Ut:t&&t.name?C(t.name):Ut}const Sr=v("Mode.mode","Mode.get",C);function En(){return xt.slice()}const _r=v("Mode.mode","Mode.all",En);function Vr(){return xt.map(t=>t.name)}function Cr(t){const[n,e,o,r,i,a,s]=t,c=s?[s]:[],l=Number(e).toString(2),m=mt(r).intervals;return{empty:!1,intervals:m,modeNum:n,chroma:l,normalized:l,name:r,setNum:e,alt:o,triad:i,seventh:a,aliases:c}}function wr(t,n){return C(t).intervals.map(e=>P(n,e))}function Dn(t){return(n,e)=>{const o=C(n);if(o.empty)return[];const r=L(o.modeNum,t),i=o.intervals.map(a=>P(e,a));return r.map((a,s)=>i[s]+a)}}const xr=Dn(wt.map(t=>t[4])),Er=Dn(wt.map(t=>t[5]));function kn(t,n){const e=C(n),o=C(t);return e.empty||o.empty?"":pn(yn("1P",o.alt-e.alt))}function Dr(t,n,e){return P(e,kn(t,n))}var kr={get:C,names:Vr,all:En,distance:kn,relativeTonic:Dr,notes:wr,triads:xr,seventhChords:Er,entries:_r,mode:Sr};function Rr(t,n){return n.map(I).map(o=>P(t,f(o))+o.chordType)}function Or(t,n){return n.map(e=>{const[o,r]=ut(e),i=R(t,o);return I(f(i)).name+r})}var Fr={fromRomanNumerals:Rr,toRomanNumerals:Or};function Rn(t){const n=$t(t.map(An));return!t.length||n.length!==t.length?[]:n.reduce((e,o)=>{const r=e[e.length-1];return e.concat(it(r,o).slice(1))},[n[0]])}function zr(t,n){return Rn(t).map(e=>T(e,n))}var qr={numeric:Rn,chromatic:zr};const Gr={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function On(t){if(typeof t!="string")return["",""];const n=t.indexOf(" "),e=u(t.substring(0,n));if(e.empty){const r=u(t);return r.empty?["",t]:[r.name,""]}const o=t.substring(e.name.length+1);return[e.name,o.length?o:""]}const Br=dn;function j(t){const n=Array.isArray(t)?t:On(t),e=u(n[0]).name,o=mt(n[1]);if(o.empty)return Gr;const r=o.name,i=e?o.intervals.map(s=>P(e,s)):[],a=e?e+" "+r:r;return g(y({},o),{name:a,type:r,tonic:e,notes:i})}const Hr=v("Scale.scale","Scale.get",j);function Lr(t){const n=j(t),e=at(n.chroma);return F().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function Ur(t){const n=j(t),e=st(n.chroma);return U().filter(o=>e(o.chroma)).map(o=>o.name)}function Xr(t){const n=at(j(t).chroma);return U().filter(e=>n(e.chroma)).map(e=>e.name)}function Fn(t){const n=t.map(r=>u(r).pc).filter(r=>r),e=n[0],o=Sn(n);return L(o.indexOf(e),o)}function Kr(t){const n=j(t);if(n.empty)return[];const e=n.tonic?n.notes:n.intervals;return jt(n.chroma).map((o,r)=>{const i=j(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function Qr(t){const n=Array.isArray(t)?Fn(t):j(t).notes,e=n.map(o=>u(o).chroma);return o=>{const r=u(typeof o=="number"?$n(o):o),i=r.height;if(i===void 0)return;const a=i%12,s=e.indexOf(a);if(s!==-1)return _n(r.name,n[s])}}function Yr(t){const n=Qr(t);return(e,o)=>{const r=u(e).height,i=u(o).height;return r===void 0||i===void 0?[]:it(r,i).map(n).filter(a=>a)}}var nt={get:j,names:Br,extended:Ur,modeNames:Kr,reduced:Xr,scaleChords:Lr,scaleNotes:Fn,tokenize:On,rangeOf:Yr,scale:Hr};const Zr={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Jr=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function Wr(){return Jr.slice()}const ti=/^(\d?\d(?:\+\d)*)\/(\d)$/,Xt=new Map;function ni(t){const n=Xt.get(t);if(n)return n;const e=oi(Et(t));return Xt.set(t,e),e}function Et(t){if(typeof t=="string"){const[i,a,s]=ti.exec(t)||[];return Et([a,s])}const[n,e]=t,o=+e;if(typeof n=="number")return[n,o];const r=n.split("+").map(i=>+i);return r.length===1?[r[0],o]:[r,o]}var ei={names:Wr,parse:Et,get:ni};function oi([t,n]){const e=Array.isArray(t)?t.reduce((s,c)=>s+c,0):t,o=n;if(e===0||o===0)return Zr;const r=Array.isArray(t)?`${t.join("+")}/${n}`:`${t}/${n}`,i=Array.isArray(t)?t:[],a=o===4||o===2?"simple":o===8&&e%3===0?"compound":"irregular";return{empty:!1,name:r,type:a,upper:e,lower:o,additive:i}}const ri=tn,ii=mn,ai=ln,si=fn;var ci=Object.freeze(Object.defineProperty({__proto__:null,Array:$e,Core:tn,ChordDictionary:ai,PcSet:ii,ScaleDictionary:si,Tonal:ri,AbcNotation:pe,Chord:ho,ChordType:ln,Collection:Se,DurationValue:Io,Interval:bt,Key:Tr,Midi:Lo,Mode:kr,Note:E,Pcset:mn,Progression:Fr,Range:qr,RomanNumeral:hr,Scale:nt,ScaleType:fn,TimeSignature:ei,accToAlt:B,altToAcc:k,coordToInterval:H,coordToNote:z,decode:ot,deprecate:v,distance:R,encode:et,fillStr:x,interval:f,isNamed:q,isPitch:G,note:u,stepToLetter:vt,tokenizeInterval:Nt,tokenizeNote:rt,transpose:P},Symbol.toStringTag,{value:"Module"}));function zn(t,n,e){let[o,r]=nt.tokenize(t),{notes:i}=nt.get(`${o} ${r}`);if(i=i.map(b=>E.get(b).pc),n=Number(n),isNaN(n))throw new Error(`scale offset "${n}" not a number`);const{pc:a,oct:s=3}=E.get(e),c=i.indexOf(a);if(c===-1)throw new Error(`note "${e}" is not in scale "${t}"`);let l=c,m=s,d=a;const M=Math.sign(n);for(;Math.abs(l-c)0&&d[0]==="C"&&(m+=M)}return d+m}w.prototype._transpose=function(t){return this._withHap(n=>{const e=isNaN(Number(t))?String(t):bt.fromSemitones(t);if(typeof n.value=="number"){const o=typeof e=="string"?bt.semitones(e)||0:e;return n.withValue(()=>n.value+o)}return n.withValue(()=>E.simplify(E.transpose(n.value,e)))})};w.prototype._scaleTranspose=function(t){return this._withHap(n=>{if(!n.context.scale)throw new Error("can only use scaleTranspose after .scale");if(typeof n.value!="string")throw new Error("can only use scaleTranspose with notes");return n.withValue(()=>zn(n.context.scale,Number(t),n.value))})};w.prototype._scale=function(t){return this._withHap(n=>{let e=n.value;const o=Number(e);if(!isNaN(o)){let[r,i]=nt.tokenize(t);const{pc:a,oct:s=3}=E.get(r);e=zn(a+" "+i,o,a+s)}return n.withValue(()=>e).setContext(g(y({},n.context),{scale:t}))})};w.prototype.define("transpose",(t,n)=>n.transpose(t),{composable:!0,patternified:!0});w.prototype.define("scale",(t,n)=>n.scale(t),{composable:!0,patternified:!0});w.prototype.define("scaleTranspose",(t,n)=>n.scaleTranspose(t),{composable:!0,patternified:!0});var qn={},Dt={},K={};K.__esModule=!0;K.getBestVoicing=void 0;function mi(t){var n=t.chord,e=t.range,o=t.finder,r=t.picker,i=t.lastVoicing,a=o(n,e);return a.length?r(a,i):[]}K.getBestVoicing=mi;var ft={},Gn=Qn(ci),Q={};Q.__esModule=!0;Q.tokenizeChord=void 0;function ui(t){var n=(t||"").match(/^([A-G][b#]*)([^\/]*)[\/]?([A-G][b#]*)?$/);return n?n.slice(1):[]}Q.tokenizeChord=ui;ft.__esModule=!0;ft.voicingsInRange=void 0;var $=Gn,li=Dt,di=Q;function Mi(t,n,e){n===void 0&&(n=li.lefthand),e===void 0&&(e=["D3","A4"]);var o=(0,di.tokenizeChord)(t),r=o[0],i=o[1];if(!n[i])return[];var a=n[i].map(function(c){return c.split(" ")}),s=$.Range.chromatic(e);return a.reduce(function(c,l){var m=l.map(function(p){return $.Interval.substract(p,l[0])}),d=$.Note.transpose(r,l[0]),M=s.filter(function(p){return $.Note.chroma(p)===$.Note.chroma(d)}).filter(function(p){return $.Note.midi($.Note.transpose(p,m[m.length-1]))<=$.Note.midi(e[1])}).map(function(p){return $.Note.enharmonic(p,d)}),b=M.map(function(p){return m.map(function(pt){return $.Note.transpose(p,pt)})});return c.concat(b)},[])}ft.voicingsInRange=Mi;(function(t){var n=Y&&Y.__assign||function(){return n=Object.assign||function(s){for(var c,l=1,m=arguments.length;lPi({chord:t,dictionary:hi,range:e,picker:pi,lastVoicing:n}),D=w;D.prototype.fmapNested=function(t){return new D(n=>this.query(n).map(e=>Zn(t(e)).query(n).map(o=>new Jn(e.whole,e.part,o.value,o.context))).flat())};D.prototype.voicings=function(t){let n;return t!=null&&t.length||(t=["F3","A4"]),this.fmapNested(e=>(n=yi(e.value,n,t),Wn(...n)._withContext(()=>({locations:e.context.locations||[]}))))};D.prototype._rootNotes=function(t=2){return this.fmap(n=>{const[e,o]=n.match(/^([a-gA-G][b#]?).*$/);return o+t})};D.prototype.define("voicings",(t,n)=>n.voicings(t),{composable:!0});D.prototype.define("rootNotes",(t,n)=>n.rootNotes(t),{composable:!0,patternified:!0}); diff --git a/tutorial/assets/index.a9d67b3c.js b/tutorial/assets/index.5a47cda7.js similarity index 60% rename from tutorial/assets/index.a9d67b3c.js rename to tutorial/assets/index.5a47cda7.js index 2fc75fb54..1f7f357c8 100644 --- a/tutorial/assets/index.a9d67b3c.js +++ b/tutorial/assets/index.5a47cda7.js @@ -1,4 +1,4 @@ -var Cr=Object.defineProperty,Or=Object.defineProperties;var Dr=Object.getOwnPropertyDescriptors;var _n=Object.getOwnPropertySymbols;var hr=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable;var cr=(o,e,s)=>e in o?Cr(o,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[e]=s,_t=(o,e)=>{for(var s in e||(e={}))hr.call(e,s)&&cr(o,s,e[s]);if(_n)for(var s of _n(e))dr.call(e,s)&&cr(o,s,e[s]);return o},wt=(o,e)=>Or(o,Dr(e));var rn=(o,e)=>{var s={};for(var a in o)hr.call(o,a)&&e.indexOf(a)<0&&(s[a]=o[a]);if(o!=null&&_n)for(var a of _n(o))e.indexOf(a)<0&&dr.call(o,a)&&(s[a]=o[a]);return s};const p$3=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const _ of d.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&a(_)}).observe(document,{childList:!0,subtree:!0});function s(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerpolicy&&(d.referrerPolicy=c.referrerpolicy),c.crossorigin==="use-credentials"?d.credentials="include":c.crossorigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(c){if(c.ep)return;c.ep=!0;const d=s(c);fetch(c.href,d)}};p$3();var commonjsGlobal=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function getDefaultExportFromCjs(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}function getAugmentedNamespace(o){if(o.__esModule)return o;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(o).forEach(function(s){var a=Object.getOwnPropertyDescriptor(o,s);Object.defineProperty(e,s,a.get?a:{enumerable:!0,get:function(){return o[s]}})}),e}var react={exports:{}},react_production_min={};/* +var vr=Object.defineProperty,_r=Object.defineProperties;var Or=Object.getOwnPropertyDescriptors;var Sn=Object.getOwnPropertySymbols;var hr=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable;var cr=(o,e,s)=>e in o?vr(o,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[e]=s,Ot=(o,e)=>{for(var s in e||(e={}))hr.call(e,s)&&cr(o,s,e[s]);if(Sn)for(var s of Sn(e))dr.call(e,s)&&cr(o,s,e[s]);return o},wt=(o,e)=>_r(o,Or(e));var ln=(o,e)=>{var s={};for(var a in o)hr.call(o,a)&&e.indexOf(a)<0&&(s[a]=o[a]);if(o!=null&&Sn)for(var a of Sn(o))e.indexOf(a)<0&&dr.call(o,a)&&(s[a]=o[a]);return s};const p$3=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const _ of d.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&a(_)}).observe(document,{childList:!0,subtree:!0});function s(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerpolicy&&(d.referrerPolicy=c.referrerpolicy),c.crossorigin==="use-credentials"?d.credentials="include":c.crossorigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(c){if(c.ep)return;c.ep=!0;const d=s(c);fetch(c.href,d)}};p$3();var commonjsGlobal=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function getDefaultExportFromCjs(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}function getAugmentedNamespace(o){if(o.__esModule)return o;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(o).forEach(function(s){var a=Object.getOwnPropertyDescriptor(o,s);Object.defineProperty(e,s,a.get?a:{enumerable:!0,get:function(){return o[s]}})}),e}var react={exports:{}},react_production_min={};/* object-assign (c) Sindre Sorhus @license MIT @@ -16,7 +16,7 @@ object-assign * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */(function(o){var e,s,a,c;if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;o.unstable_now=function(){return d.now()}}else{var _=Date,b=_.now();o.unstable_now=function(){return _.now()-b}}if(typeof window=="undefined"||typeof MessageChannel!="function"){var k=null,$=null,j=function(){if(k!==null)try{var Ct=o.unstable_now();k(!0,Ct),k=null}catch(bt){throw setTimeout(j,0),bt}};e=function(Ct){k!==null?setTimeout(e,0,Ct):(k=Ct,setTimeout(j,0))},s=function(Ct,bt){$=setTimeout(Ct,bt)},a=function(){clearTimeout($)},o.unstable_shouldYield=function(){return!1},c=o.unstable_forceFrameRate=function(){}}else{var _e=window.setTimeout,et=window.clearTimeout;if(typeof console!="undefined"){var tt=window.cancelAnimationFrame;typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof tt!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var nt=!1,it=null,rt=-1,st=5,at=0;o.unstable_shouldYield=function(){return o.unstable_now()>=at},c=function(){},o.unstable_forceFrameRate=function(Ct){0>Ct||125>>1,Bt=Ct[It];if(Bt!==void 0&&0ht(Nt,$t))Qt!==void 0&&0>ht(Qt,Nt)?(Ct[It]=Qt,Ct[qt]=$t,It=qt):(Ct[It]=Nt,Ct[Pt]=$t,It=Pt);else if(Qt!==void 0&&0>ht(Qt,$t))Ct[It]=Qt,Ct[qt]=$t,It=qt;else break e}}return bt}return null}function ht(Ct,bt){var $t=Ct.sortIndex-bt.sortIndex;return $t!==0?$t:Ct.id-bt.id}var pt=[],Et=[],gt=1,ft=null,mt=3,yt=!1,At=!1,vt=!1;function St(Ct){for(var bt=ut(Et);bt!==null;){if(bt.callback===null)ot(Et);else if(bt.startTime<=Ct)ot(Et),bt.sortIndex=bt.expirationTime,ct(pt,bt);else break;bt=ut(Et)}}function Tt(Ct){if(vt=!1,St(Ct),!At)if(ut(pt)!==null)At=!0,e(Dt);else{var bt=ut(Et);bt!==null&&s(Tt,bt.startTime-Ct)}}function Dt(Ct,bt){At=!1,vt&&(vt=!1,a()),yt=!0;var $t=mt;try{for(St(bt),ft=ut(pt);ft!==null&&(!(ft.expirationTime>bt)||Ct&&!o.unstable_shouldYield());){var It=ft.callback;if(typeof It=="function"){ft.callback=null,mt=ft.priorityLevel;var Bt=It(ft.expirationTime<=bt);bt=o.unstable_now(),typeof Bt=="function"?ft.callback=Bt:ft===ut(pt)&&ot(pt),St(bt)}else ot(pt);ft=ut(pt)}if(ft!==null)var Pt=!0;else{var Nt=ut(Et);Nt!==null&&s(Tt,Nt.startTime-bt),Pt=!1}return Pt}finally{ft=null,mt=$t,yt=!1}}var xt=c;o.unstable_IdlePriority=5,o.unstable_ImmediatePriority=1,o.unstable_LowPriority=4,o.unstable_NormalPriority=3,o.unstable_Profiling=null,o.unstable_UserBlockingPriority=2,o.unstable_cancelCallback=function(Ct){Ct.callback=null},o.unstable_continueExecution=function(){At||yt||(At=!0,e(Dt))},o.unstable_getCurrentPriorityLevel=function(){return mt},o.unstable_getFirstCallbackNode=function(){return ut(pt)},o.unstable_next=function(Ct){switch(mt){case 1:case 2:case 3:var bt=3;break;default:bt=mt}var $t=mt;mt=bt;try{return Ct()}finally{mt=$t}},o.unstable_pauseExecution=function(){},o.unstable_requestPaint=xt,o.unstable_runWithPriority=function(Ct,bt){switch(Ct){case 1:case 2:case 3:case 4:case 5:break;default:Ct=3}var $t=mt;mt=Ct;try{return bt()}finally{mt=$t}},o.unstable_scheduleCallback=function(Ct,bt,$t){var It=o.unstable_now();switch(typeof $t=="object"&&$t!==null?($t=$t.delay,$t=typeof $t=="number"&&0<$t?It+$t:It):$t=It,Ct){case 1:var Bt=-1;break;case 2:Bt=250;break;case 5:Bt=1073741823;break;case 4:Bt=1e4;break;default:Bt=5e3}return Bt=$t+Bt,Ct={id:gt++,callback:bt,priorityLevel:Ct,startTime:$t,expirationTime:Bt,sortIndex:-1},$t>It?(Ct.sortIndex=$t,ct(Et,Ct),ut(pt)===null&&Ct===ut(Et)&&(vt?a():vt=!0,s(Tt,$t-It))):(Ct.sortIndex=Bt,ct(pt,Ct),At||yt||(At=!0,e(Dt))),Ct},o.unstable_wrapCallback=function(Ct){var bt=mt;return function(){var $t=mt;mt=bt;try{return Ct.apply(this,arguments)}finally{mt=$t}}}})(scheduler_production_min);scheduler.exports=scheduler_production_min;/** @license React v17.0.2 + */(function(o){var e,s,a,c;if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;o.unstable_now=function(){return d.now()}}else{var _=Date,b=_.now();o.unstable_now=function(){return _.now()-b}}if(typeof window=="undefined"||typeof MessageChannel!="function"){var k=null,$=null,j=function(){if(k!==null)try{var St=o.unstable_now();k(!0,St),k=null}catch(Ct){throw setTimeout(j,0),Ct}};e=function(St){k!==null?setTimeout(e,0,St):(k=St,setTimeout(j,0))},s=function(St,Ct){$=setTimeout(St,Ct)},a=function(){clearTimeout($)},o.unstable_shouldYield=function(){return!1},c=o.unstable_forceFrameRate=function(){}}else{var _e=window.setTimeout,et=window.clearTimeout;if(typeof console!="undefined"){var tt=window.cancelAnimationFrame;typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof tt!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var nt=!1,st=null,rt=-1,it=5,at=0;o.unstable_shouldYield=function(){return o.unstable_now()>=at},c=function(){},o.unstable_forceFrameRate=function(St){0>St||125>>1,Mt=St[Rt];if(Mt!==void 0&&0pt(Ft,xt))jt!==void 0&&0>pt(jt,Ft)?(St[Rt]=jt,St[Vt]=xt,Rt=Vt):(St[Rt]=Ft,St[It]=xt,Rt=It);else if(jt!==void 0&&0>pt(jt,xt))St[Rt]=jt,St[Vt]=xt,Rt=Vt;else break e}}return Ct}return null}function pt(St,Ct){var xt=St.sortIndex-Ct.sortIndex;return xt!==0?xt:St.id-Ct.id}var dt=[],gt=[],yt=1,ft=null,mt=3,Et=!1,vt=!1,At=!1;function _t(St){for(var Ct=lt(gt);Ct!==null;){if(Ct.callback===null)ut(gt);else if(Ct.startTime<=St)ut(gt),Ct.sortIndex=Ct.expirationTime,ct(dt,Ct);else break;Ct=lt(gt)}}function Dt(St){if(At=!1,_t(St),!vt)if(lt(dt)!==null)vt=!0,e(bt);else{var Ct=lt(gt);Ct!==null&&s(Dt,Ct.startTime-St)}}function bt(St,Ct){vt=!1,At&&(At=!1,a()),Et=!0;var xt=mt;try{for(_t(Ct),ft=lt(dt);ft!==null&&(!(ft.expirationTime>Ct)||St&&!o.unstable_shouldYield());){var Rt=ft.callback;if(typeof Rt=="function"){ft.callback=null,mt=ft.priorityLevel;var Mt=Rt(ft.expirationTime<=Ct);Ct=o.unstable_now(),typeof Mt=="function"?ft.callback=Mt:ft===lt(dt)&&ut(dt),_t(Ct)}else ut(dt);ft=lt(dt)}if(ft!==null)var It=!0;else{var Ft=lt(gt);Ft!==null&&s(Dt,Ft.startTime-Ct),It=!1}return It}finally{ft=null,mt=xt,Et=!1}}var Tt=c;o.unstable_IdlePriority=5,o.unstable_ImmediatePriority=1,o.unstable_LowPriority=4,o.unstable_NormalPriority=3,o.unstable_Profiling=null,o.unstable_UserBlockingPriority=2,o.unstable_cancelCallback=function(St){St.callback=null},o.unstable_continueExecution=function(){vt||Et||(vt=!0,e(bt))},o.unstable_getCurrentPriorityLevel=function(){return mt},o.unstable_getFirstCallbackNode=function(){return lt(dt)},o.unstable_next=function(St){switch(mt){case 1:case 2:case 3:var Ct=3;break;default:Ct=mt}var xt=mt;mt=Ct;try{return St()}finally{mt=xt}},o.unstable_pauseExecution=function(){},o.unstable_requestPaint=Tt,o.unstable_runWithPriority=function(St,Ct){switch(St){case 1:case 2:case 3:case 4:case 5:break;default:St=3}var xt=mt;mt=St;try{return Ct()}finally{mt=xt}},o.unstable_scheduleCallback=function(St,Ct,xt){var Rt=o.unstable_now();switch(typeof xt=="object"&&xt!==null?(xt=xt.delay,xt=typeof xt=="number"&&0Rt?(St.sortIndex=xt,ct(gt,St),lt(dt)===null&&St===lt(gt)&&(At?a():At=!0,s(Dt,xt-Rt))):(St.sortIndex=Mt,ct(dt,St),vt||Et||(vt=!0,e(bt))),St},o.unstable_wrapCallback=function(St){var Ct=mt;return function(){var xt=mt;mt=Ct;try{return St.apply(this,arguments)}finally{mt=xt}}}})(scheduler_production_min);scheduler.exports=scheduler_production_min;/** @license React v17.0.2 * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. @@ -27,20 +27,20 @@ object-assign `+Ma+o}var Oa=!1;function Pa(o,e){if(!o||Oa)return"";Oa=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(e)if(e=function(){throw Error()},Object.defineProperty(e.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(e,[])}catch(k){var a=k}Reflect.construct(o,[],e)}else{try{e.call()}catch(k){a=k}o.call(e.prototype)}else{try{throw Error()}catch(k){a=k}o()}}catch(k){if(k&&a&&typeof k.stack=="string"){for(var c=k.stack.split(` `),d=a.stack.split(` `),_=c.length-1,b=d.length-1;1<=_&&0<=b&&c[_]!==d[b];)b--;for(;1<=_&&0<=b;_--,b--)if(c[_]!==d[b]){if(_!==1||b!==1)do if(_--,b--,0>b||c[_]!==d[b])return` -`+c[_].replace(" at new "," at ");while(1<=_&&0<=b);break}}}finally{Oa=!1,Error.prepareStackTrace=s}return(o=o?o.displayName||o.name:"")?Na(o):""}function Qa(o){switch(o.tag){case 5:return Na(o.type);case 16:return Na("Lazy");case 13:return Na("Suspense");case 19:return Na("SuspenseList");case 0:case 2:case 15:return o=Pa(o.type,!1),o;case 11:return o=Pa(o.type.render,!1),o;case 22:return o=Pa(o.type._render,!1),o;case 1:return o=Pa(o.type,!0),o;default:return""}}function Ra(o){if(o==null)return null;if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case ua:return"Fragment";case ta:return"Portal";case xa:return"Profiler";case wa:return"StrictMode";case Ba:return"Suspense";case Ca:return"SuspenseList"}if(typeof o=="object")switch(o.$$typeof){case za:return(o.displayName||"Context")+".Consumer";case ya:return(o._context.displayName||"Context")+".Provider";case Aa:var e=o.render;return e=e.displayName||e.name||"",o.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case Da:return Ra(o.type);case Fa:return Ra(o._render);case Ea:e=o._payload,o=o._init;try{return Ra(o(e))}catch{}}return null}function Sa(o){switch(typeof o){case"boolean":case"number":case"object":case"string":case"undefined":return o;default:return""}}function Ta(o){var e=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Ua(o){var e=Ta(o)?"checked":"value",s=Object.getOwnPropertyDescriptor(o.constructor.prototype,e),a=""+o[e];if(!o.hasOwnProperty(e)&&typeof s!="undefined"&&typeof s.get=="function"&&typeof s.set=="function"){var c=s.get,d=s.set;return Object.defineProperty(o,e,{configurable:!0,get:function(){return c.call(this)},set:function(_){a=""+_,d.call(this,_)}}),Object.defineProperty(o,e,{enumerable:s.enumerable}),{getValue:function(){return a},setValue:function(_){a=""+_},stopTracking:function(){o._valueTracker=null,delete o[e]}}}}function Va(o){o._valueTracker||(o._valueTracker=Ua(o))}function Wa(o){if(!o)return!1;var e=o._valueTracker;if(!e)return!0;var s=e.getValue(),a="";return o&&(a=Ta(o)?o.checked?"true":"false":o.value),o=a,o!==s?(e.setValue(o),!0):!1}function Xa(o){if(o=o||(typeof document!="undefined"?document:void 0),typeof o=="undefined")return null;try{return o.activeElement||o.body}catch{return o.body}}function Ya(o,e){var s=e.checked;return m$1({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s!=null?s:o._wrapperState.initialChecked})}function Za(o,e){var s=e.defaultValue==null?"":e.defaultValue,a=e.checked!=null?e.checked:e.defaultChecked;s=Sa(e.value!=null?e.value:s),o._wrapperState={initialChecked:a,initialValue:s,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function $a(o,e){e=e.checked,e!=null&&qa(o,"checked",e,!1)}function ab(o,e){$a(o,e);var s=Sa(e.value),a=e.type;if(s!=null)a==="number"?(s===0&&o.value===""||o.value!=s)&&(o.value=""+s):o.value!==""+s&&(o.value=""+s);else if(a==="submit"||a==="reset"){o.removeAttribute("value");return}e.hasOwnProperty("value")?bb(o,e.type,s):e.hasOwnProperty("defaultValue")&&bb(o,e.type,Sa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(o.defaultChecked=!!e.defaultChecked)}function cb(o,e,s){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var a=e.type;if(!(a!=="submit"&&a!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+o._wrapperState.initialValue,s||e===o.value||(o.value=e),o.defaultValue=e}s=o.name,s!==""&&(o.name=""),o.defaultChecked=!!o._wrapperState.initialChecked,s!==""&&(o.name=s)}function bb(o,e,s){(e!=="number"||Xa(o.ownerDocument)!==o)&&(s==null?o.defaultValue=""+o._wrapperState.initialValue:o.defaultValue!==""+s&&(o.defaultValue=""+s))}function db(o){var e="";return aa.Children.forEach(o,function(s){s!=null&&(e+=s)}),e}function eb(o,e){return o=m$1({children:void 0},e),(e=db(e.children))&&(o.children=e),o}function fb(o,e,s,a){if(o=o.options,e){e={};for(var c=0;c=s.length))throw Error(y(93));s=s[0]}e=s}e==null&&(e=""),s=e}o._wrapperState={initialValue:Sa(s)}}function ib(o,e){var s=Sa(e.value),a=Sa(e.defaultValue);s!=null&&(s=""+s,s!==o.value&&(o.value=s),e.defaultValue==null&&o.defaultValue!==s&&(o.defaultValue=s)),a!=null&&(o.defaultValue=""+a)}function jb(o){var e=o.textContent;e===o._wrapperState.initialValue&&e!==""&&e!==null&&(o.value=e)}var kb={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function lb(o){switch(o){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function mb(o,e){return o==null||o==="http://www.w3.org/1999/xhtml"?lb(e):o==="http://www.w3.org/2000/svg"&&e==="foreignObject"?"http://www.w3.org/1999/xhtml":o}var nb,ob=function(o){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(e,s,a,c){MSApp.execUnsafeLocalFunction(function(){return o(e,s,a,c)})}:o}(function(o,e){if(o.namespaceURI!==kb.svg||"innerHTML"in o)o.innerHTML=e;else{for(nb=nb||document.createElement("div"),nb.innerHTML=""+e.valueOf().toString()+"",e=nb.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;e.firstChild;)o.appendChild(e.firstChild)}});function pb(o,e){if(e){var s=o.firstChild;if(s&&s===o.lastChild&&s.nodeType===3){s.nodeValue=e;return}}o.textContent=e}var qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=["Webkit","ms","Moz","O"];Object.keys(qb).forEach(function(o){rb.forEach(function(e){e=e+o.charAt(0).toUpperCase()+o.substring(1),qb[e]=qb[o]})});function sb(o,e,s){return e==null||typeof e=="boolean"||e===""?"":s||typeof e!="number"||e===0||qb.hasOwnProperty(o)&&qb[o]?(""+e).trim():e+"px"}function tb(o,e){o=o.style;for(var s in e)if(e.hasOwnProperty(s)){var a=s.indexOf("--")===0,c=sb(s,e[s],a);s==="float"&&(s="cssFloat"),a?o.setProperty(s,c):o[s]=c}}var ub=m$1({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vb(o,e){if(e){if(ub[o]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(y(137,o));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(y(60));if(!(typeof e.dangerouslySetInnerHTML=="object"&&"__html"in e.dangerouslySetInnerHTML))throw Error(y(61))}if(e.style!=null&&typeof e.style!="object")throw Error(y(62))}}function wb(o,e){if(o.indexOf("-")===-1)return typeof e.is=="string";switch(o){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function xb(o){return o=o.target||o.srcElement||window,o.correspondingUseElement&&(o=o.correspondingUseElement),o.nodeType===3?o.parentNode:o}var yb=null,zb=null,Ab=null;function Bb(o){if(o=Cb(o)){if(typeof yb!="function")throw Error(y(280));var e=o.stateNode;e&&(e=Db(e),yb(o.stateNode,o.type,e))}}function Eb(o){zb?Ab?Ab.push(o):Ab=[o]:zb=o}function Fb(){if(zb){var o=zb,e=Ab;if(Ab=zb=null,Bb(o),e)for(o=0;oa?0:1<s;s++)e.push(o);return e}function $c(o,e,s){o.pendingLanes|=e;var a=e-1;o.suspendedLanes&=a,o.pingedLanes&=a,o=o.eventTimes,e=31-Vc(e),o[e]=s}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(o){return o===0?32:31-(bd(o)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(o,e,s,a){Kb||Ib();var c=hd,d=Kb;Kb=!0;try{Hb(c,o,e,s,a)}finally{(Kb=d)||Mb()}}function id$2(o,e,s,a){ed(dd,hd.bind(null,o,e,s,a))}function hd(o,e,s,a){if(fd){var c;if((c=(e&4)===0)&&0=be),ee=String.fromCharCode(32),fe=!1;function ge(o,e){switch(o){case"keyup":return $d.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function he(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var ie$2=!1;function je(o,e){switch(o){case"compositionend":return he(e);case"keypress":return e.which!==32?null:(fe=!0,ee);case"textInput":return o=e.data,o===ee&&fe?null:o;default:return null}}function ke(o,e){if(ie$2)return o==="compositionend"||!ae&&ge(o,e)?(o=nd(),md=ld=kd=null,ie$2=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:s,offset:e-o};o=a}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Ke(s)}}function Me(o,e){return o&&e?o===e?!0:o&&o.nodeType===3?!1:e&&e.nodeType===3?Me(o,e.parentNode):"contains"in o?o.contains(e):o.compareDocumentPosition?!!(o.compareDocumentPosition(e)&16):!1:!1}function Ne(){for(var o=window,e=Xa();e instanceof o.HTMLIFrameElement;){try{var s=typeof e.contentWindow.location.href=="string"}catch{s=!1}if(s)o=e.contentWindow;else break;e=Xa(o.document)}return e}function Oe(o){var e=o&&o.nodeName&&o.nodeName.toLowerCase();return e&&(e==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||e==="textarea"||o.contentEditable==="true")}var Pe=fa&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;function Ue(o,e,s){var a=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Te||Qe==null||Qe!==Xa(a)||(a=Qe,"selectionStart"in a&&Oe(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Se&&Je(Se,a)||(Se=a,a=oe(Re,"onSelect"),0Af||(o.current=zf[Af],zf[Af]=null,Af--)}function I$1(o,e){Af++,zf[Af]=o.current,o.current=e}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;function Ef(o,e){var s=o.type.contextTypes;if(!s)return Cf;var a=o.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===e)return a.__reactInternalMemoizedMaskedChildContext;var c={},d;for(d in s)c[d]=e[d];return a&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=e,o.__reactInternalMemoizedMaskedChildContext=c),c}function Ff(o){return o=o.childContextTypes,o!=null}function Gf(){H(N),H(M)}function Hf(o,e,s){if(M.current!==Cf)throw Error(y(168));I$1(M,e),I$1(N,s)}function If(o,e,s){var a=o.stateNode;if(o=e.childContextTypes,typeof a.getChildContext!="function")return s;a=a.getChildContext();for(var c in a)if(!(c in o))throw Error(y(108,Ra(e)||"Unknown",c));return m$1({},s,a)}function Jf(o){return o=(o=o.stateNode)&&o.__reactInternalMemoizedMergedChildContext||Cf,Df=M.current,I$1(M,o),I$1(N,N.current),!0}function Kf(o,e,s){var a=o.stateNode;if(!a)throw Error(y(169));s?(o=If(o,e,Df),a.__reactInternalMemoizedMergedChildContext=o,H(N),H(M),I$1(M,o)):H(N),I$1(N,s)}var Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=Rf!==void 0?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1e4>dg?Sf:function(){return Sf()-dg};function eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332))}}function fg(o){switch(o){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332))}}function gg(o,e){return o=fg(o),Nf(o,e)}function hg(o,e,s){return o=fg(o),Of(o,e,s)}function ig(){if(bg!==null){var o=bg;bg=null,Pf(o)}jg()}function jg(){if(!cg&&ag!==null){cg=!0;var o=0;try{var e=ag;gg(99,function(){for(;oot?(ht=ut,ut=null):ht=ut.sibling;var pt=et(rt,ut,at[ot],lt);if(pt===null){ut===null&&(ut=ht);break}o&&ut&&pt.alternate===null&&e(rt,ut),st=d(pt,st,ot),ct===null?dt=pt:ct.sibling=pt,ct=pt,ut=ht}if(ot===at.length)return s(rt,ut),dt;if(ut===null){for(;otot?(ht=ut,ut=null):ht=ut.sibling;var Et=et(rt,ut,pt.value,lt);if(Et===null){ut===null&&(ut=ht);break}o&&ut&&Et.alternate===null&&e(rt,ut),st=d(Et,st,ot),ct===null?dt=Et:ct.sibling=Et,ct=Et,ut=ht}if(pt.done)return s(rt,ut),dt;if(ut===null){for(;!pt.done;ot++,pt=at.next())pt=_e(rt,pt.value,lt),pt!==null&&(st=d(pt,st,ot),ct===null?dt=pt:ct.sibling=pt,ct=pt);return dt}for(ut=a(rt,ut);!pt.done;ot++,pt=at.next())pt=tt(ut,rt,ot,pt.value,lt),pt!==null&&(o&&pt.alternate!==null&&ut.delete(pt.key===null?ot:pt.key),st=d(pt,st,ot),ct===null?dt=pt:ct.sibling=pt,ct=pt);return o&&ut.forEach(function(gt){return e(rt,gt)}),dt}return function(rt,st,at,lt){var dt=typeof at=="object"&&at!==null&&at.type===ua&&at.key===null;dt&&(at=at.props.children);var ct=typeof at=="object"&&at!==null;if(ct)switch(at.$$typeof){case sa:e:{for(ct=at.key,dt=st;dt!==null;){if(dt.key===ct){switch(dt.tag){case 7:if(at.type===ua){s(rt,dt.sibling),st=c(dt,at.props.children),st.return=rt,rt=st;break e}break;default:if(dt.elementType===at.type){s(rt,dt.sibling),st=c(dt,at.props),st.ref=Qg(rt,dt,at),st.return=rt,rt=st;break e}}s(rt,dt);break}else e(rt,dt);dt=dt.sibling}at.type===ua?(st=Xg(at.props.children,rt.mode,lt,at.key),st.return=rt,rt=st):(lt=Vg(at.type,at.key,at.props,null,rt.mode,lt),lt.ref=Qg(rt,st,at),lt.return=rt,rt=lt)}return _(rt);case ta:e:{for(dt=at.key;st!==null;){if(st.key===dt)if(st.tag===4&&st.stateNode.containerInfo===at.containerInfo&&st.stateNode.implementation===at.implementation){s(rt,st.sibling),st=c(st,at.children||[]),st.return=rt,rt=st;break e}else{s(rt,st);break}else e(rt,st);st=st.sibling}st=Wg(at,rt.mode,lt),st.return=rt,rt=st}return _(rt)}if(typeof at=="string"||typeof at=="number")return at=""+at,st!==null&&st.tag===6?(s(rt,st.sibling),st=c(st,at),st.return=rt,rt=st):(s(rt,st),st=Ug(at,rt.mode,lt),st.return=rt,rt=st),_(rt);if(Pg(at))return nt(rt,st,at,lt);if(La(at))return it(rt,st,at,lt);if(ct&&Rg(rt,at),typeof at=="undefined"&&!dt)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(rt.type)||"Component"))}return s(rt,st)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);function dh(o){if(o===$g)throw Error(y(174));return o}function eh(o,e){switch(I$1(ch,e),I$1(bh,o),I$1(ah,$g),o=e.nodeType,o){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:mb(null,"");break;default:o=o===8?e.parentNode:e,e=o.namespaceURI||null,o=o.tagName,e=mb(e,o)}H(ah),I$1(ah,e)}function fh(){H(ah),H(bh),H(ch)}function gh(o){dh(ch.current);var e=dh(ah.current),s=mb(e,o.type);e!==s&&(I$1(bh,o),I$1(ah,s))}function hh(o){bh.current===o&&(H(ah),H(bh))}var P=Bf(0);function ih(o){for(var e=o;e!==null;){if(e.tag===13){var s=e.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&64)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===o)break;for(;e.sibling===null;){if(e.return===null||e.return===o)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var jh=null,kh=null,lh=!1;function mh(o,e){var s=nh(5,null,null,0);s.elementType="DELETED",s.type="DELETED",s.stateNode=e,s.return=o,s.flags=8,o.lastEffect!==null?(o.lastEffect.nextEffect=s,o.lastEffect=s):o.firstEffect=o.lastEffect=s}function oh(o,e){switch(o.tag){case 5:var s=o.type;return e=e.nodeType!==1||s.toLowerCase()!==e.nodeName.toLowerCase()?null:e,e!==null?(o.stateNode=e,!0):!1;case 6:return e=o.pendingProps===""||e.nodeType!==3?null:e,e!==null?(o.stateNode=e,!0):!1;case 13:return!1;default:return!1}}function ph(o){if(lh){var e=kh;if(e){var s=e;if(!oh(o,e)){if(e=rf(s.nextSibling),!e||!oh(o,e)){o.flags=o.flags&-1025|2,lh=!1,jh=o;return}mh(jh,s)}jh=o,kh=rf(e.firstChild)}else o.flags=o.flags&-1025|2,lh=!1,jh=o}}function qh(o){for(o=o.return;o!==null&&o.tag!==5&&o.tag!==3&&o.tag!==13;)o=o.return;jh=o}function rh(o){if(o!==jh)return!1;if(!lh)return qh(o),lh=!0,!1;var e=o.type;if(o.tag!==5||e!=="head"&&e!=="body"&&!nf(e,o.memoizedProps))for(e=kh;e;)mh(o,e),e=rf(e.nextSibling);if(qh(o),o.tag===13){if(o=o.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(y(317));e:{for(o=o.nextSibling,e=0;o;){if(o.nodeType===8){var s=o.data;if(s==="/$"){if(e===0){kh=rf(o.nextSibling);break e}e--}else s!=="$"&&s!=="$!"&&s!=="$?"||e++}o=o.nextSibling}kh=null}}else kh=jh?rf(o.stateNode.nextSibling):null;return!0}function sh(){kh=jh=null,lh=!1}var th=[];function uh(){for(var o=0;od))throw Error(y(301));d+=1,T$1=S=null,e.updateQueue=null,vh.current=Fh,o=s(a,c)}while(zh)}if(vh.current=Gh,e=S!==null&&S.next!==null,xh=0,T$1=S=R$1=null,yh=!1,e)throw Error(y(300));return o}function Hh(){var o={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return T$1===null?R$1.memoizedState=T$1=o:T$1=T$1.next=o,T$1}function Ih(){if(S===null){var o=R$1.alternate;o=o!==null?o.memoizedState:null}else o=S.next;var e=T$1===null?R$1.memoizedState:T$1.next;if(e!==null)T$1=e,S=o;else{if(o===null)throw Error(y(310));S=o,o={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null},T$1===null?R$1.memoizedState=T$1=o:T$1=T$1.next=o}return T$1}function Jh(o,e){return typeof e=="function"?e(o):e}function Kh(o){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=o;var a=S,c=a.baseQueue,d=s.pending;if(d!==null){if(c!==null){var _=c.next;c.next=d.next,d.next=_}a.baseQueue=c=d,s.pending=null}if(c!==null){c=c.next,a=a.baseState;var b=_=d=null,k=c;do{var $=k.lane;if((xh&$)===$)b!==null&&(b=b.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),a=k.eagerReducer===o?k.eagerState:o(a,k.action);else{var j={lane:$,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};b===null?(_=b=j,d=a):b=b.next=j,R$1.lanes|=$,Dg|=$}k=k.next}while(k!==null&&k!==c);b===null?d=a:b.next=_,He(a,e.memoizedState)||(ug=!0),e.memoizedState=a,e.baseState=d,e.baseQueue=b,s.lastRenderedState=a}return[e.memoizedState,s.dispatch]}function Lh(o){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=o;var a=s.dispatch,c=s.pending,d=e.memoizedState;if(c!==null){s.pending=null;var _=c=c.next;do d=o(d,_.action),_=_.next;while(_!==c);He(d,e.memoizedState)||(ug=!0),e.memoizedState=d,e.baseQueue===null&&(e.baseState=d),s.lastRenderedState=d}return[d,a]}function Mh(o,e,s){var a=e._getVersion;a=a(e._source);var c=e._workInProgressVersionPrimary;if(c!==null?o=c===a:(o=o.mutableReadLanes,(o=(xh&o)===o)&&(e._workInProgressVersionPrimary=a,th.push(e))),o)return s(e._source);throw th.push(e),Error(y(350))}function Nh(o,e,s,a){var c=U;if(c===null)throw Error(y(349));var d=e._getVersion,_=d(e._source),b=vh.current,k=b.useState(function(){return Mh(c,e,s)}),$=k[1],j=k[0];k=T$1;var _e=o.memoizedState,et=_e.refs,tt=et.getSnapshot,nt=_e.source;_e=_e.subscribe;var it=R$1;return o.memoizedState={refs:et,source:e,subscribe:a},b.useEffect(function(){et.getSnapshot=s,et.setSnapshot=$;var rt=d(e._source);if(!He(_,rt)){rt=s(e._source),He(j,rt)||($(rt),rt=Ig(it),c.mutableReadLanes|=rt&c.pendingLanes),rt=c.mutableReadLanes,c.entangledLanes|=rt;for(var st=c.entanglements,at=rt;0s?98:s,function(){o(!0)}),gg(97<\/script>",o=o.removeChild(o.firstChild)):typeof a.is=="string"?o=_.createElement(s,{is:a.is}):(o=_.createElement(s),s==="select"&&(_=o,a.multiple?_.multiple=!0:a.size&&(_.size=a.size))):o=_.createElementNS(o,s),o[wf]=e,o[xf]=a,Bi(o,e,!1,!1),e.stateNode=o,_=wb(s,a),s){case"dialog":G("cancel",o),G("close",o),c=a;break;case"iframe":case"object":case"embed":G("load",o),c=a;break;case"video":case"audio":for(c=0;cJi&&(e.flags|=64,d=!0,Fi(a,!1),e.lanes=33554432)}else{if(!d)if(o=ih(_),o!==null){if(e.flags|=64,d=!0,s=o.updateQueue,s!==null&&(e.updateQueue=s,e.flags|=4),Fi(a,!0),a.tail===null&&a.tailMode==="hidden"&&!_.alternate&&!lh)return e=e.lastEffect=a.lastEffect,e!==null&&(e.nextEffect=null),null}else 2*O()-a.renderingStartTime>Ji&&s!==1073741824&&(e.flags|=64,d=!0,Fi(a,!1),e.lanes=33554432);a.isBackwards?(_.sibling=e.child,e.child=_):(s=a.last,s!==null?s.sibling=_:e.child=_,a.last=_)}return a.tail!==null?(s=a.tail,a.rendering=s,a.tail=s.sibling,a.lastEffect=e.lastEffect,a.renderingStartTime=O(),s.sibling=null,e=P.current,I$1(P,d?e&1|2:e&1),s):null;case 23:case 24:return Ki(),o!==null&&o.memoizedState!==null!=(e.memoizedState!==null)&&a.mode!=="unstable-defer-without-hiding"&&(e.flags|=4),null}throw Error(y(156,e.tag))}function Li(o){switch(o.tag){case 1:Ff(o.type)&&Gf();var e=o.flags;return e&4096?(o.flags=e&-4097|64,o):null;case 3:if(fh(),H(N),H(M),uh(),e=o.flags,(e&64)!==0)throw Error(y(285));return o.flags=e&-4097|64,o;case 5:return hh(o),null;case 13:return H(P),e=o.flags,e&4096?(o.flags=e&-4097|64,o):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(o),null;case 23:case 24:return Ki(),null;default:return null}}function Mi(o,e){try{var s="",a=e;do s+=Qa(a),a=a.return;while(a);var c=s}catch(d){c=` +`+c[_].replace(" at new "," at ");while(1<=_&&0<=b);break}}}finally{Oa=!1,Error.prepareStackTrace=s}return(o=o?o.displayName||o.name:"")?Na(o):""}function Qa(o){switch(o.tag){case 5:return Na(o.type);case 16:return Na("Lazy");case 13:return Na("Suspense");case 19:return Na("SuspenseList");case 0:case 2:case 15:return o=Pa(o.type,!1),o;case 11:return o=Pa(o.type.render,!1),o;case 22:return o=Pa(o.type._render,!1),o;case 1:return o=Pa(o.type,!0),o;default:return""}}function Ra(o){if(o==null)return null;if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case ua:return"Fragment";case ta:return"Portal";case xa:return"Profiler";case wa:return"StrictMode";case Ba:return"Suspense";case Ca:return"SuspenseList"}if(typeof o=="object")switch(o.$$typeof){case za:return(o.displayName||"Context")+".Consumer";case ya:return(o._context.displayName||"Context")+".Provider";case Aa:var e=o.render;return e=e.displayName||e.name||"",o.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case Da:return Ra(o.type);case Fa:return Ra(o._render);case Ea:e=o._payload,o=o._init;try{return Ra(o(e))}catch{}}return null}function Sa(o){switch(typeof o){case"boolean":case"number":case"object":case"string":case"undefined":return o;default:return""}}function Ta(o){var e=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Ua(o){var e=Ta(o)?"checked":"value",s=Object.getOwnPropertyDescriptor(o.constructor.prototype,e),a=""+o[e];if(!o.hasOwnProperty(e)&&typeof s!="undefined"&&typeof s.get=="function"&&typeof s.set=="function"){var c=s.get,d=s.set;return Object.defineProperty(o,e,{configurable:!0,get:function(){return c.call(this)},set:function(_){a=""+_,d.call(this,_)}}),Object.defineProperty(o,e,{enumerable:s.enumerable}),{getValue:function(){return a},setValue:function(_){a=""+_},stopTracking:function(){o._valueTracker=null,delete o[e]}}}}function Va(o){o._valueTracker||(o._valueTracker=Ua(o))}function Wa(o){if(!o)return!1;var e=o._valueTracker;if(!e)return!0;var s=e.getValue(),a="";return o&&(a=Ta(o)?o.checked?"true":"false":o.value),o=a,o!==s?(e.setValue(o),!0):!1}function Xa(o){if(o=o||(typeof document!="undefined"?document:void 0),typeof o=="undefined")return null;try{return o.activeElement||o.body}catch{return o.body}}function Ya(o,e){var s=e.checked;return m$1({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s!=null?s:o._wrapperState.initialChecked})}function Za(o,e){var s=e.defaultValue==null?"":e.defaultValue,a=e.checked!=null?e.checked:e.defaultChecked;s=Sa(e.value!=null?e.value:s),o._wrapperState={initialChecked:a,initialValue:s,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function $a(o,e){e=e.checked,e!=null&&qa(o,"checked",e,!1)}function ab(o,e){$a(o,e);var s=Sa(e.value),a=e.type;if(s!=null)a==="number"?(s===0&&o.value===""||o.value!=s)&&(o.value=""+s):o.value!==""+s&&(o.value=""+s);else if(a==="submit"||a==="reset"){o.removeAttribute("value");return}e.hasOwnProperty("value")?bb(o,e.type,s):e.hasOwnProperty("defaultValue")&&bb(o,e.type,Sa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(o.defaultChecked=!!e.defaultChecked)}function cb(o,e,s){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var a=e.type;if(!(a!=="submit"&&a!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+o._wrapperState.initialValue,s||e===o.value||(o.value=e),o.defaultValue=e}s=o.name,s!==""&&(o.name=""),o.defaultChecked=!!o._wrapperState.initialChecked,s!==""&&(o.name=s)}function bb(o,e,s){(e!=="number"||Xa(o.ownerDocument)!==o)&&(s==null?o.defaultValue=""+o._wrapperState.initialValue:o.defaultValue!==""+s&&(o.defaultValue=""+s))}function db(o){var e="";return aa.Children.forEach(o,function(s){s!=null&&(e+=s)}),e}function eb(o,e){return o=m$1({children:void 0},e),(e=db(e.children))&&(o.children=e),o}function fb(o,e,s,a){if(o=o.options,e){e={};for(var c=0;c=s.length))throw Error(y(93));s=s[0]}e=s}e==null&&(e=""),s=e}o._wrapperState={initialValue:Sa(s)}}function ib(o,e){var s=Sa(e.value),a=Sa(e.defaultValue);s!=null&&(s=""+s,s!==o.value&&(o.value=s),e.defaultValue==null&&o.defaultValue!==s&&(o.defaultValue=s)),a!=null&&(o.defaultValue=""+a)}function jb(o){var e=o.textContent;e===o._wrapperState.initialValue&&e!==""&&e!==null&&(o.value=e)}var kb={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function lb(o){switch(o){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function mb(o,e){return o==null||o==="http://www.w3.org/1999/xhtml"?lb(e):o==="http://www.w3.org/2000/svg"&&e==="foreignObject"?"http://www.w3.org/1999/xhtml":o}var nb,ob=function(o){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(e,s,a,c){MSApp.execUnsafeLocalFunction(function(){return o(e,s,a,c)})}:o}(function(o,e){if(o.namespaceURI!==kb.svg||"innerHTML"in o)o.innerHTML=e;else{for(nb=nb||document.createElement("div"),nb.innerHTML=""+e.valueOf().toString()+"",e=nb.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;e.firstChild;)o.appendChild(e.firstChild)}});function pb(o,e){if(e){var s=o.firstChild;if(s&&s===o.lastChild&&s.nodeType===3){s.nodeValue=e;return}}o.textContent=e}var qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=["Webkit","ms","Moz","O"];Object.keys(qb).forEach(function(o){rb.forEach(function(e){e=e+o.charAt(0).toUpperCase()+o.substring(1),qb[e]=qb[o]})});function sb(o,e,s){return e==null||typeof e=="boolean"||e===""?"":s||typeof e!="number"||e===0||qb.hasOwnProperty(o)&&qb[o]?(""+e).trim():e+"px"}function tb(o,e){o=o.style;for(var s in e)if(e.hasOwnProperty(s)){var a=s.indexOf("--")===0,c=sb(s,e[s],a);s==="float"&&(s="cssFloat"),a?o.setProperty(s,c):o[s]=c}}var ub=m$1({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vb(o,e){if(e){if(ub[o]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(y(137,o));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(y(60));if(!(typeof e.dangerouslySetInnerHTML=="object"&&"__html"in e.dangerouslySetInnerHTML))throw Error(y(61))}if(e.style!=null&&typeof e.style!="object")throw Error(y(62))}}function wb(o,e){if(o.indexOf("-")===-1)return typeof e.is=="string";switch(o){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function xb(o){return o=o.target||o.srcElement||window,o.correspondingUseElement&&(o=o.correspondingUseElement),o.nodeType===3?o.parentNode:o}var yb=null,zb=null,Ab=null;function Bb(o){if(o=Cb(o)){if(typeof yb!="function")throw Error(y(280));var e=o.stateNode;e&&(e=Db(e),yb(o.stateNode,o.type,e))}}function Eb(o){zb?Ab?Ab.push(o):Ab=[o]:zb=o}function Fb(){if(zb){var o=zb,e=Ab;if(Ab=zb=null,Bb(o),e)for(o=0;oa?0:1<s;s++)e.push(o);return e}function $c(o,e,s){o.pendingLanes|=e;var a=e-1;o.suspendedLanes&=a,o.pingedLanes&=a,o=o.eventTimes,e=31-Vc(e),o[e]=s}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(o){return o===0?32:31-(bd(o)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(o,e,s,a){Kb||Ib();var c=hd,d=Kb;Kb=!0;try{Hb(c,o,e,s,a)}finally{(Kb=d)||Mb()}}function id$2(o,e,s,a){ed(dd,hd.bind(null,o,e,s,a))}function hd(o,e,s,a){if(fd){var c;if((c=(e&4)===0)&&0=be),ee=String.fromCharCode(32),fe=!1;function ge(o,e){switch(o){case"keyup":return $d.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function he(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var ie$2=!1;function je(o,e){switch(o){case"compositionend":return he(e);case"keypress":return e.which!==32?null:(fe=!0,ee);case"textInput":return o=e.data,o===ee&&fe?null:o;default:return null}}function ke(o,e){if(ie$2)return o==="compositionend"||!ae&&ge(o,e)?(o=nd(),md=ld=kd=null,ie$2=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:s,offset:e-o};o=a}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Ke(s)}}function Me(o,e){return o&&e?o===e?!0:o&&o.nodeType===3?!1:e&&e.nodeType===3?Me(o,e.parentNode):"contains"in o?o.contains(e):o.compareDocumentPosition?!!(o.compareDocumentPosition(e)&16):!1:!1}function Ne(){for(var o=window,e=Xa();e instanceof o.HTMLIFrameElement;){try{var s=typeof e.contentWindow.location.href=="string"}catch{s=!1}if(s)o=e.contentWindow;else break;e=Xa(o.document)}return e}function Oe(o){var e=o&&o.nodeName&&o.nodeName.toLowerCase();return e&&(e==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||e==="textarea"||o.contentEditable==="true")}var Pe=fa&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;function Ue(o,e,s){var a=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Te||Qe==null||Qe!==Xa(a)||(a=Qe,"selectionStart"in a&&Oe(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Se&&Je(Se,a)||(Se=a,a=oe(Re,"onSelect"),0Af||(o.current=zf[Af],zf[Af]=null,Af--)}function I$1(o,e){Af++,zf[Af]=o.current,o.current=e}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;function Ef(o,e){var s=o.type.contextTypes;if(!s)return Cf;var a=o.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===e)return a.__reactInternalMemoizedMaskedChildContext;var c={},d;for(d in s)c[d]=e[d];return a&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=e,o.__reactInternalMemoizedMaskedChildContext=c),c}function Ff(o){return o=o.childContextTypes,o!=null}function Gf(){H(N),H(M)}function Hf(o,e,s){if(M.current!==Cf)throw Error(y(168));I$1(M,e),I$1(N,s)}function If(o,e,s){var a=o.stateNode;if(o=e.childContextTypes,typeof a.getChildContext!="function")return s;a=a.getChildContext();for(var c in a)if(!(c in o))throw Error(y(108,Ra(e)||"Unknown",c));return m$1({},s,a)}function Jf(o){return o=(o=o.stateNode)&&o.__reactInternalMemoizedMergedChildContext||Cf,Df=M.current,I$1(M,o),I$1(N,N.current),!0}function Kf(o,e,s){var a=o.stateNode;if(!a)throw Error(y(169));s?(o=If(o,e,Df),a.__reactInternalMemoizedMergedChildContext=o,H(N),H(M),I$1(M,o)):H(N),I$1(N,s)}var Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=Rf!==void 0?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1e4>dg?Sf:function(){return Sf()-dg};function eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332))}}function fg(o){switch(o){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332))}}function gg(o,e){return o=fg(o),Nf(o,e)}function hg(o,e,s){return o=fg(o),Of(o,e,s)}function ig(){if(bg!==null){var o=bg;bg=null,Pf(o)}jg()}function jg(){if(!cg&&ag!==null){cg=!0;var o=0;try{var e=ag;gg(99,function(){for(;out?(pt=lt,lt=null):pt=lt.sibling;var dt=et(rt,lt,at[ut],ot);if(dt===null){lt===null&&(lt=pt);break}o&<&&dt.alternate===null&&e(rt,lt),it=d(dt,it,ut),ct===null?ht=dt:ct.sibling=dt,ct=dt,lt=pt}if(ut===at.length)return s(rt,lt),ht;if(lt===null){for(;utut?(pt=lt,lt=null):pt=lt.sibling;var gt=et(rt,lt,dt.value,ot);if(gt===null){lt===null&&(lt=pt);break}o&<&>.alternate===null&&e(rt,lt),it=d(gt,it,ut),ct===null?ht=gt:ct.sibling=gt,ct=gt,lt=pt}if(dt.done)return s(rt,lt),ht;if(lt===null){for(;!dt.done;ut++,dt=at.next())dt=_e(rt,dt.value,ot),dt!==null&&(it=d(dt,it,ut),ct===null?ht=dt:ct.sibling=dt,ct=dt);return ht}for(lt=a(rt,lt);!dt.done;ut++,dt=at.next())dt=tt(lt,rt,ut,dt.value,ot),dt!==null&&(o&&dt.alternate!==null&<.delete(dt.key===null?ut:dt.key),it=d(dt,it,ut),ct===null?ht=dt:ct.sibling=dt,ct=dt);return o&<.forEach(function(yt){return e(rt,yt)}),ht}return function(rt,it,at,ot){var ht=typeof at=="object"&&at!==null&&at.type===ua&&at.key===null;ht&&(at=at.props.children);var ct=typeof at=="object"&&at!==null;if(ct)switch(at.$$typeof){case sa:e:{for(ct=at.key,ht=it;ht!==null;){if(ht.key===ct){switch(ht.tag){case 7:if(at.type===ua){s(rt,ht.sibling),it=c(ht,at.props.children),it.return=rt,rt=it;break e}break;default:if(ht.elementType===at.type){s(rt,ht.sibling),it=c(ht,at.props),it.ref=Qg(rt,ht,at),it.return=rt,rt=it;break e}}s(rt,ht);break}else e(rt,ht);ht=ht.sibling}at.type===ua?(it=Xg(at.props.children,rt.mode,ot,at.key),it.return=rt,rt=it):(ot=Vg(at.type,at.key,at.props,null,rt.mode,ot),ot.ref=Qg(rt,it,at),ot.return=rt,rt=ot)}return _(rt);case ta:e:{for(ht=at.key;it!==null;){if(it.key===ht)if(it.tag===4&&it.stateNode.containerInfo===at.containerInfo&&it.stateNode.implementation===at.implementation){s(rt,it.sibling),it=c(it,at.children||[]),it.return=rt,rt=it;break e}else{s(rt,it);break}else e(rt,it);it=it.sibling}it=Wg(at,rt.mode,ot),it.return=rt,rt=it}return _(rt)}if(typeof at=="string"||typeof at=="number")return at=""+at,it!==null&&it.tag===6?(s(rt,it.sibling),it=c(it,at),it.return=rt,rt=it):(s(rt,it),it=Ug(at,rt.mode,ot),it.return=rt,rt=it),_(rt);if(Pg(at))return nt(rt,it,at,ot);if(La(at))return st(rt,it,at,ot);if(ct&&Rg(rt,at),typeof at=="undefined"&&!ht)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(rt.type)||"Component"))}return s(rt,it)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);function dh(o){if(o===$g)throw Error(y(174));return o}function eh(o,e){switch(I$1(ch,e),I$1(bh,o),I$1(ah,$g),o=e.nodeType,o){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:mb(null,"");break;default:o=o===8?e.parentNode:e,e=o.namespaceURI||null,o=o.tagName,e=mb(e,o)}H(ah),I$1(ah,e)}function fh(){H(ah),H(bh),H(ch)}function gh(o){dh(ch.current);var e=dh(ah.current),s=mb(e,o.type);e!==s&&(I$1(bh,o),I$1(ah,s))}function hh(o){bh.current===o&&(H(ah),H(bh))}var P=Bf(0);function ih(o){for(var e=o;e!==null;){if(e.tag===13){var s=e.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&64)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===o)break;for(;e.sibling===null;){if(e.return===null||e.return===o)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var jh=null,kh=null,lh=!1;function mh(o,e){var s=nh(5,null,null,0);s.elementType="DELETED",s.type="DELETED",s.stateNode=e,s.return=o,s.flags=8,o.lastEffect!==null?(o.lastEffect.nextEffect=s,o.lastEffect=s):o.firstEffect=o.lastEffect=s}function oh(o,e){switch(o.tag){case 5:var s=o.type;return e=e.nodeType!==1||s.toLowerCase()!==e.nodeName.toLowerCase()?null:e,e!==null?(o.stateNode=e,!0):!1;case 6:return e=o.pendingProps===""||e.nodeType!==3?null:e,e!==null?(o.stateNode=e,!0):!1;case 13:return!1;default:return!1}}function ph(o){if(lh){var e=kh;if(e){var s=e;if(!oh(o,e)){if(e=rf(s.nextSibling),!e||!oh(o,e)){o.flags=o.flags&-1025|2,lh=!1,jh=o;return}mh(jh,s)}jh=o,kh=rf(e.firstChild)}else o.flags=o.flags&-1025|2,lh=!1,jh=o}}function qh(o){for(o=o.return;o!==null&&o.tag!==5&&o.tag!==3&&o.tag!==13;)o=o.return;jh=o}function rh(o){if(o!==jh)return!1;if(!lh)return qh(o),lh=!0,!1;var e=o.type;if(o.tag!==5||e!=="head"&&e!=="body"&&!nf(e,o.memoizedProps))for(e=kh;e;)mh(o,e),e=rf(e.nextSibling);if(qh(o),o.tag===13){if(o=o.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(y(317));e:{for(o=o.nextSibling,e=0;o;){if(o.nodeType===8){var s=o.data;if(s==="/$"){if(e===0){kh=rf(o.nextSibling);break e}e--}else s!=="$"&&s!=="$!"&&s!=="$?"||e++}o=o.nextSibling}kh=null}}else kh=jh?rf(o.stateNode.nextSibling):null;return!0}function sh(){kh=jh=null,lh=!1}var th=[];function uh(){for(var o=0;od))throw Error(y(301));d+=1,T$1=S=null,e.updateQueue=null,vh.current=Fh,o=s(a,c)}while(zh)}if(vh.current=Gh,e=S!==null&&S.next!==null,xh=0,T$1=S=R$1=null,yh=!1,e)throw Error(y(300));return o}function Hh(){var o={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return T$1===null?R$1.memoizedState=T$1=o:T$1=T$1.next=o,T$1}function Ih(){if(S===null){var o=R$1.alternate;o=o!==null?o.memoizedState:null}else o=S.next;var e=T$1===null?R$1.memoizedState:T$1.next;if(e!==null)T$1=e,S=o;else{if(o===null)throw Error(y(310));S=o,o={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null},T$1===null?R$1.memoizedState=T$1=o:T$1=T$1.next=o}return T$1}function Jh(o,e){return typeof e=="function"?e(o):e}function Kh(o){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=o;var a=S,c=a.baseQueue,d=s.pending;if(d!==null){if(c!==null){var _=c.next;c.next=d.next,d.next=_}a.baseQueue=c=d,s.pending=null}if(c!==null){c=c.next,a=a.baseState;var b=_=d=null,k=c;do{var $=k.lane;if((xh&$)===$)b!==null&&(b=b.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),a=k.eagerReducer===o?k.eagerState:o(a,k.action);else{var j={lane:$,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};b===null?(_=b=j,d=a):b=b.next=j,R$1.lanes|=$,Dg|=$}k=k.next}while(k!==null&&k!==c);b===null?d=a:b.next=_,He(a,e.memoizedState)||(ug=!0),e.memoizedState=a,e.baseState=d,e.baseQueue=b,s.lastRenderedState=a}return[e.memoizedState,s.dispatch]}function Lh(o){var e=Ih(),s=e.queue;if(s===null)throw Error(y(311));s.lastRenderedReducer=o;var a=s.dispatch,c=s.pending,d=e.memoizedState;if(c!==null){s.pending=null;var _=c=c.next;do d=o(d,_.action),_=_.next;while(_!==c);He(d,e.memoizedState)||(ug=!0),e.memoizedState=d,e.baseQueue===null&&(e.baseState=d),s.lastRenderedState=d}return[d,a]}function Mh(o,e,s){var a=e._getVersion;a=a(e._source);var c=e._workInProgressVersionPrimary;if(c!==null?o=c===a:(o=o.mutableReadLanes,(o=(xh&o)===o)&&(e._workInProgressVersionPrimary=a,th.push(e))),o)return s(e._source);throw th.push(e),Error(y(350))}function Nh(o,e,s,a){var c=U;if(c===null)throw Error(y(349));var d=e._getVersion,_=d(e._source),b=vh.current,k=b.useState(function(){return Mh(c,e,s)}),$=k[1],j=k[0];k=T$1;var _e=o.memoizedState,et=_e.refs,tt=et.getSnapshot,nt=_e.source;_e=_e.subscribe;var st=R$1;return o.memoizedState={refs:et,source:e,subscribe:a},b.useEffect(function(){et.getSnapshot=s,et.setSnapshot=$;var rt=d(e._source);if(!He(_,rt)){rt=s(e._source),He(j,rt)||($(rt),rt=Ig(st),c.mutableReadLanes|=rt&c.pendingLanes),rt=c.mutableReadLanes,c.entangledLanes|=rt;for(var it=c.entanglements,at=rt;0s?98:s,function(){o(!0)}),gg(97<\/script>",o=o.removeChild(o.firstChild)):typeof a.is=="string"?o=_.createElement(s,{is:a.is}):(o=_.createElement(s),s==="select"&&(_=o,a.multiple?_.multiple=!0:a.size&&(_.size=a.size))):o=_.createElementNS(o,s),o[wf]=e,o[xf]=a,Bi(o,e,!1,!1),e.stateNode=o,_=wb(s,a),s){case"dialog":G("cancel",o),G("close",o),c=a;break;case"iframe":case"object":case"embed":G("load",o),c=a;break;case"video":case"audio":for(c=0;cJi&&(e.flags|=64,d=!0,Fi(a,!1),e.lanes=33554432)}else{if(!d)if(o=ih(_),o!==null){if(e.flags|=64,d=!0,s=o.updateQueue,s!==null&&(e.updateQueue=s,e.flags|=4),Fi(a,!0),a.tail===null&&a.tailMode==="hidden"&&!_.alternate&&!lh)return e=e.lastEffect=a.lastEffect,e!==null&&(e.nextEffect=null),null}else 2*O()-a.renderingStartTime>Ji&&s!==1073741824&&(e.flags|=64,d=!0,Fi(a,!1),e.lanes=33554432);a.isBackwards?(_.sibling=e.child,e.child=_):(s=a.last,s!==null?s.sibling=_:e.child=_,a.last=_)}return a.tail!==null?(s=a.tail,a.rendering=s,a.tail=s.sibling,a.lastEffect=e.lastEffect,a.renderingStartTime=O(),s.sibling=null,e=P.current,I$1(P,d?e&1|2:e&1),s):null;case 23:case 24:return Ki(),o!==null&&o.memoizedState!==null!=(e.memoizedState!==null)&&a.mode!=="unstable-defer-without-hiding"&&(e.flags|=4),null}throw Error(y(156,e.tag))}function Li(o){switch(o.tag){case 1:Ff(o.type)&&Gf();var e=o.flags;return e&4096?(o.flags=e&-4097|64,o):null;case 3:if(fh(),H(N),H(M),uh(),e=o.flags,(e&64)!==0)throw Error(y(285));return o.flags=e&-4097|64,o;case 5:return hh(o),null;case 13:return H(P),e=o.flags,e&4096?(o.flags=e&-4097|64,o):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(o),null;case 23:case 24:return Ki(),null;default:return null}}function Mi(o,e){try{var s="",a=e;do s+=Qa(a),a=a.return;while(a);var c=s}catch(d){c=` Error generating stack: `+d.message+` -`+d.stack}return{value:o,source:e,stack:c}}function Ni(o,e){try{console.error(e.value)}catch(s){setTimeout(function(){throw s})}}var Oi=typeof WeakMap=="function"?WeakMap:Map;function Pi(o,e,s){s=zg(-1,s),s.tag=3,s.payload={element:null};var a=e.value;return s.callback=function(){Qi||(Qi=!0,Ri=a),Ni(o,e)},s}function Si(o,e,s){s=zg(-1,s),s.tag=3;var a=o.type.getDerivedStateFromError;if(typeof a=="function"){var c=e.value;s.payload=function(){return Ni(o,e),a(c)}}var d=o.stateNode;return d!==null&&typeof d.componentDidCatch=="function"&&(s.callback=function(){typeof a!="function"&&(Ti===null?Ti=new Set([this]):Ti.add(this),Ni(o,e));var _=e.stack;this.componentDidCatch(e.value,{componentStack:_!==null?_:""})}),s}var Ui=typeof WeakSet=="function"?WeakSet:Set;function Vi(o){var e=o.ref;if(e!==null)if(typeof e=="function")try{e(null)}catch(s){Wi(o,s)}else e.current=null}function Xi(o,e){switch(e.tag){case 0:case 11:case 15:case 22:return;case 1:if(e.flags&256&&o!==null){var s=o.memoizedProps,a=o.memoizedState;o=e.stateNode,e=o.getSnapshotBeforeUpdate(e.elementType===e.type?s:lg(e.type,s),a),o.__reactInternalSnapshotBeforeUpdate=e}return;case 3:e.flags&256&&qf(e.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163))}function Yi(o,e,s){switch(s.tag){case 0:case 11:case 15:case 22:if(e=s.updateQueue,e=e!==null?e.lastEffect:null,e!==null){o=e=e.next;do{if((o.tag&3)===3){var a=o.create;o.destroy=a()}o=o.next}while(o!==e)}if(e=s.updateQueue,e=e!==null?e.lastEffect:null,e!==null){o=e=e.next;do{var c=o;a=c.next,c=c.tag,(c&4)!==0&&(c&1)!==0&&(Zi(s,o),$i(s,o)),o=a}while(o!==e)}return;case 1:o=s.stateNode,s.flags&4&&(e===null?o.componentDidMount():(a=s.elementType===s.type?e.memoizedProps:lg(s.type,e.memoizedProps),o.componentDidUpdate(a,e.memoizedState,o.__reactInternalSnapshotBeforeUpdate))),e=s.updateQueue,e!==null&&Eg(s,e,o);return;case 3:if(e=s.updateQueue,e!==null){if(o=null,s.child!==null)switch(s.child.tag){case 5:o=s.child.stateNode;break;case 1:o=s.child.stateNode}Eg(s,e,o)}return;case 5:o=s.stateNode,e===null&&s.flags&4&&mf(s.type,s.memoizedProps)&&o.focus();return;case 6:return;case 4:return;case 12:return;case 13:s.memoizedState===null&&(s=s.alternate,s!==null&&(s=s.memoizedState,s!==null&&(s=s.dehydrated,s!==null&&Cc(s))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163))}function aj(o,e){for(var s=o;;){if(s.tag===5){var a=s.stateNode;if(e)a=a.style,typeof a.setProperty=="function"?a.setProperty("display","none","important"):a.display="none";else{a=s.stateNode;var c=s.memoizedProps.style;c=c!=null&&c.hasOwnProperty("display")?c.display:null,a.style.display=sb("display",c)}}else if(s.tag===6)s.stateNode.nodeValue=e?"":s.memoizedProps;else if((s.tag!==23&&s.tag!==24||s.memoizedState===null||s===o)&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===o)break;for(;s.sibling===null;){if(s.return===null||s.return===o)return;s=s.return}s.sibling.return=s.return,s=s.sibling}}function bj(o,e){if(Mf&&typeof Mf.onCommitFiberUnmount=="function")try{Mf.onCommitFiberUnmount(Lf,e)}catch{}switch(e.tag){case 0:case 11:case 14:case 15:case 22:if(o=e.updateQueue,o!==null&&(o=o.lastEffect,o!==null)){var s=o=o.next;do{var a=s,c=a.destroy;if(a=a.tag,c!==void 0)if((a&4)!==0)Zi(e,s);else{a=e;try{c()}catch(d){Wi(a,d)}}s=s.next}while(s!==o)}break;case 1:if(Vi(e),o=e.stateNode,typeof o.componentWillUnmount=="function")try{o.props=e.memoizedProps,o.state=e.memoizedState,o.componentWillUnmount()}catch(d){Wi(e,d)}break;case 5:Vi(e);break;case 4:cj(o,e)}}function dj(o){o.alternate=null,o.child=null,o.dependencies=null,o.firstEffect=null,o.lastEffect=null,o.memoizedProps=null,o.memoizedState=null,o.pendingProps=null,o.return=null,o.updateQueue=null}function ej(o){return o.tag===5||o.tag===3||o.tag===4}function fj(o){e:{for(var e=o.return;e!==null;){if(ej(e))break e;e=e.return}throw Error(y(160))}var s=e;switch(e=s.stateNode,s.tag){case 5:var a=!1;break;case 3:e=e.containerInfo,a=!0;break;case 4:e=e.containerInfo,a=!0;break;default:throw Error(y(161))}s.flags&16&&(pb(e,""),s.flags&=-17);e:t:for(s=o;;){for(;s.sibling===null;){if(s.return===null||ej(s.return)){s=null;break e}s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.flags&2||s.child===null||s.tag===4)continue t;s.child.return=s,s=s.child}if(!(s.flags&2)){s=s.stateNode;break e}}a?gj(o,s,e):hj(o,s,e)}function gj(o,e,s){var a=o.tag,c=a===5||a===6;if(c)o=c?o.stateNode:o.stateNode.instance,e?s.nodeType===8?s.parentNode.insertBefore(o,e):s.insertBefore(o,e):(s.nodeType===8?(e=s.parentNode,e.insertBefore(o,s)):(e=s,e.appendChild(o)),s=s._reactRootContainer,s!=null||e.onclick!==null||(e.onclick=jf));else if(a!==4&&(o=o.child,o!==null))for(gj(o,e,s),o=o.sibling;o!==null;)gj(o,e,s),o=o.sibling}function hj(o,e,s){var a=o.tag,c=a===5||a===6;if(c)o=c?o.stateNode:o.stateNode.instance,e?s.insertBefore(o,e):s.appendChild(o);else if(a!==4&&(o=o.child,o!==null))for(hj(o,e,s),o=o.sibling;o!==null;)hj(o,e,s),o=o.sibling}function cj(o,e){for(var s=e,a=!1,c,d;;){if(!a){a=s.return;e:for(;;){if(a===null)throw Error(y(160));switch(c=a.stateNode,a.tag){case 5:d=!1;break e;case 3:c=c.containerInfo,d=!0;break e;case 4:c=c.containerInfo,d=!0;break e}a=a.return}a=!0}if(s.tag===5||s.tag===6){e:for(var _=o,b=s,k=b;;)if(bj(_,k),k.child!==null&&k.tag!==4)k.child.return=k,k=k.child;else{if(k===b)break e;for(;k.sibling===null;){if(k.return===null||k.return===b)break e;k=k.return}k.sibling.return=k.return,k=k.sibling}d?(_=c,b=s.stateNode,_.nodeType===8?_.parentNode.removeChild(b):_.removeChild(b)):c.removeChild(s.stateNode)}else if(s.tag===4){if(s.child!==null){c=s.stateNode.containerInfo,d=!0,s.child.return=s,s=s.child;continue}}else if(bj(o,s),s.child!==null){s.child.return=s,s=s.child;continue}if(s===e)break;for(;s.sibling===null;){if(s.return===null||s.return===e)return;s=s.return,s.tag===4&&(a=!1)}s.sibling.return=s.return,s=s.sibling}}function ij(o,e){switch(e.tag){case 0:case 11:case 14:case 15:case 22:var s=e.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var a=s=s.next;do(a.tag&3)===3&&(o=a.destroy,a.destroy=void 0,o!==void 0&&o()),a=a.next;while(a!==s)}return;case 1:return;case 5:if(s=e.stateNode,s!=null){a=e.memoizedProps;var c=o!==null?o.memoizedProps:a;o=e.type;var d=e.updateQueue;if(e.updateQueue=null,d!==null){for(s[xf]=a,o==="input"&&a.type==="radio"&&a.name!=null&&$a(s,a),wb(o,c),e=wb(o,a),c=0;cc&&(c=_),s&=~d}if(s=c,s=O()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*nj(s/1960))-s,10c&&(c=_),s&=~d}if(s=c,s=O()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*nj(s/1960))-s,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}V!==5&&(V=2),k=Mi(k,b),et=_;do{switch(et.tag){case 3:d=k,et.flags|=4096,e&=-e,et.lanes|=e;var ct=Pi(et,d,e);Bg(et,ct);break e;case 1:d=k;var ut=et.type,ot=et.stateNode;if((et.flags&64)===0&&(typeof ut.getDerivedStateFromError=="function"||ot!==null&&typeof ot.componentDidCatch=="function"&&(Ti===null||!Ti.has(ot)))){et.flags|=4096,e&=-e,et.lanes|=e;var ht=Si(et,d,e);Bg(et,ht);break e}}et=et.return}while(et!==null)}Zj(s)}catch(pt){e=pt,Y===s&&s!==null&&(Y=s=s.return);continue}break}while(1)}function Pj(){var o=oj.current;return oj.current=Gh,o===null?Gh:o}function Tj(o,e){var s=X;X|=16;var a=Pj();U===o&&W===e||Qj(o,e);do try{ak();break}catch(c){Sj(o,c)}while(1);if(qg(),X=s,oj.current=a,Y!==null)throw Error(y(261));return U=null,W=0,V}function ak(){for(;Y!==null;)bk(Y)}function Rj(){for(;Y!==null&&!Qf();)bk(Y)}function bk(o){var e=ck(o.alternate,o,qj);o.memoizedProps=o.pendingProps,e===null?Zj(o):Y=e,pj.current=null}function Zj(o){var e=o;do{var s=e.alternate;if(o=e.return,(e.flags&2048)===0){if(s=Gi(s,e,qj),s!==null){Y=s;return}if(s=e,s.tag!==24&&s.tag!==23||s.memoizedState===null||(qj&1073741824)!==0||(s.mode&4)===0){for(var a=0,c=s.child;c!==null;)a|=c.lanes|c.childLanes,c=c.sibling;s.childLanes=a}o!==null&&(o.flags&2048)===0&&(o.firstEffect===null&&(o.firstEffect=e.firstEffect),e.lastEffect!==null&&(o.lastEffect!==null&&(o.lastEffect.nextEffect=e.firstEffect),o.lastEffect=e.lastEffect),1_&&(b=_,_=ct,ct=b),b=Le(at,ct),d=Le(at,_),b&&d&&(dt.rangeCount!==1||dt.anchorNode!==b.node||dt.anchorOffset!==b.offset||dt.focusNode!==d.node||dt.focusOffset!==d.offset)&&(lt=lt.createRange(),lt.setStart(b.node,b.offset),dt.removeAllRanges(),ct>_?(dt.addRange(lt),dt.extend(d.node,d.offset)):(lt.setEnd(d.node,d.offset),dt.addRange(lt)))))),lt=[],dt=at;dt=dt.parentNode;)dt.nodeType===1&<.push({element:dt,left:dt.scrollLeft,top:dt.scrollTop});for(typeof at.focus=="function"&&at.focus(),at=0;atO()-jj?Qj(o,0):uj|=s),Mj(o,e)}function lj(o,e){var s=o.stateNode;s!==null&&s.delete(e),e=0,e===0&&(e=o.mode,(e&2)===0?e=1:(e&4)===0?e=eg()===99?1:2:(Gj===0&&(Gj=tj),e=Yc(62914560&~Gj),e===0&&(e=4194304))),s=Hg(),o=Kj(o,e),o!==null&&($c(o,e,s),Mj(o,s))}var ck;ck=function(o,e,s){var a=e.lanes;if(o!==null)if(o.memoizedProps!==e.pendingProps||N.current)ug=!0;else if((s&a)!==0)ug=(o.flags&16384)!==0;else{switch(ug=!1,e.tag){case 3:ri(e),sh();break;case 5:gh(e);break;case 1:Ff(e.type)&&Jf(e);break;case 4:eh(e,e.stateNode.containerInfo);break;case 10:a=e.memoizedProps.value;var c=e.type._context;I$1(mg,c._currentValue),c._currentValue=a;break;case 13:if(e.memoizedState!==null)return(s&e.child.childLanes)!==0?ti(o,e,s):(I$1(P,P.current&1),e=hi(o,e,s),e!==null?e.sibling:null);I$1(P,P.current&1);break;case 19:if(a=(s&e.childLanes)!==0,(o.flags&64)!==0){if(a)return Ai(o,e,s);e.flags|=64}if(c=e.memoizedState,c!==null&&(c.rendering=null,c.tail=null,c.lastEffect=null),I$1(P,P.current),a)break;return null;case 23:case 24:return e.lanes=0,mi(o,e,s)}return hi(o,e,s)}else ug=!1;switch(e.lanes=0,e.tag){case 2:if(a=e.type,o!==null&&(o.alternate=null,e.alternate=null,e.flags|=2),o=e.pendingProps,c=Ef(e,M.current),tg(e,s),c=Ch(null,e,a,o,c,s),e.flags|=1,typeof c=="object"&&c!==null&&typeof c.render=="function"&&c.$$typeof===void 0){if(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ff(a)){var d=!0;Jf(e)}else d=!1;e.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,xg(e);var _=a.getDerivedStateFromProps;typeof _=="function"&&Gg(e,a,_,o),c.updater=Kg,e.stateNode=c,c._reactInternals=e,Og(e,a,o,s),e=qi(null,e,a,!0,d,s)}else e.tag=0,fi(null,e,c,s),e=e.child;return e;case 16:c=e.elementType;e:{switch(o!==null&&(o.alternate=null,e.alternate=null,e.flags|=2),o=e.pendingProps,d=c._init,c=d(c._payload),e.type=c,d=e.tag=hk(c),o=lg(c,o),d){case 0:e=li(null,e,c,o,s);break e;case 1:e=pi(null,e,c,o,s);break e;case 11:e=gi(null,e,c,o,s);break e;case 14:e=ii(null,e,c,lg(c.type,o),a,s);break e}throw Error(y(306,c,""))}return e;case 0:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:lg(a,c),li(o,e,a,c,s);case 1:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:lg(a,c),pi(o,e,a,c,s);case 3:if(ri(e),a=e.updateQueue,o===null||a===null)throw Error(y(282));if(a=e.pendingProps,c=e.memoizedState,c=c!==null?c.element:null,yg(o,e),Cg(e,a,null,s),a=e.memoizedState.element,a===c)sh(),e=hi(o,e,s);else{if(c=e.stateNode,(d=c.hydrate)&&(kh=rf(e.stateNode.containerInfo.firstChild),jh=e,d=lh=!0),d){if(o=c.mutableSourceEagerHydrationData,o!=null)for(c=0;c=0)&&(s[c]=o[c]);return s}function _objectWithoutProperties(o,e){if(o==null)return{};var s=_objectWithoutPropertiesLoose(o,e),a,c;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(o);for(c=0;c=0)&&(!Object.prototype.propertyIsEnumerable.call(o,a)||(s[a]=o[a]))}return s}var isFunction$2=function(e){return typeof e=="function"},MDXContext=React.createContext({}),useMDXComponents=function(e){var s=React.useContext(MDXContext),a=s;return e&&(a=isFunction$2(e)?e(s):_objectSpread2(_objectSpread2({},s),e)),a},TYPE_PROP_NAME="mdxType",DEFAULTS={inlineCode:"code",wrapper:function(e){var s=e.children;return React.createElement(React.Fragment,{},s)}},MDXCreateElement=React.forwardRef(function(o,e){var s=o.components,a=o.mdxType,c=o.originalType,d=o.parentName,_=_objectWithoutProperties(o,["components","mdxType","originalType","parentName"]),b=useMDXComponents(s),k=a,$=b["".concat(d,".").concat(k)]||b[k]||DEFAULTS[k]||c;return s?React.createElement($,_objectSpread2(_objectSpread2({ref:e},_),{},{components:s})):React.createElement($,_objectSpread2({ref:e},_))});MDXCreateElement.displayName="MDXCreateElement";function createElement(o,e){var s=arguments,a=e&&e.mdxType;if(typeof o=="string"||a){var c=s.length,d=new Array(c);d[0]=MDXCreateElement;var _={};for(var b in e)hasOwnProperty.call(e,b)&&(_[b]=e[b]);_.originalType=o,_[TYPE_PROP_NAME]=typeof o=="string"?o:a,d[1]=_;for(var k=2;k{if(a=`${base$1}${a}`,a in seen)return;seen[a]=!0;const c=a.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${d}`))return;const _=document.createElement("link");if(_.rel=c?"stylesheet":scriptRel,c||(_.as="script",_.crossOrigin=""),_.href=a,document.head.appendChild(_),c)return new Promise((b,k)=>{_.addEventListener("load",b),_.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>e())};var fraction$1={exports:{}};/** +Add a component higher in the tree to provide a loading indicator or placeholder to display.`)}V!==5&&(V=2),k=Mi(k,b),et=_;do{switch(et.tag){case 3:d=k,et.flags|=4096,e&=-e,et.lanes|=e;var ct=Pi(et,d,e);Bg(et,ct);break e;case 1:d=k;var lt=et.type,ut=et.stateNode;if((et.flags&64)===0&&(typeof lt.getDerivedStateFromError=="function"||ut!==null&&typeof ut.componentDidCatch=="function"&&(Ti===null||!Ti.has(ut)))){et.flags|=4096,e&=-e,et.lanes|=e;var pt=Si(et,d,e);Bg(et,pt);break e}}et=et.return}while(et!==null)}Zj(s)}catch(dt){e=dt,Y===s&&s!==null&&(Y=s=s.return);continue}break}while(1)}function Pj(){var o=oj.current;return oj.current=Gh,o===null?Gh:o}function Tj(o,e){var s=X;X|=16;var a=Pj();U===o&&W===e||Qj(o,e);do try{ak();break}catch(c){Sj(o,c)}while(1);if(qg(),X=s,oj.current=a,Y!==null)throw Error(y(261));return U=null,W=0,V}function ak(){for(;Y!==null;)bk(Y)}function Rj(){for(;Y!==null&&!Qf();)bk(Y)}function bk(o){var e=ck(o.alternate,o,qj);o.memoizedProps=o.pendingProps,e===null?Zj(o):Y=e,pj.current=null}function Zj(o){var e=o;do{var s=e.alternate;if(o=e.return,(e.flags&2048)===0){if(s=Gi(s,e,qj),s!==null){Y=s;return}if(s=e,s.tag!==24&&s.tag!==23||s.memoizedState===null||(qj&1073741824)!==0||(s.mode&4)===0){for(var a=0,c=s.child;c!==null;)a|=c.lanes|c.childLanes,c=c.sibling;s.childLanes=a}o!==null&&(o.flags&2048)===0&&(o.firstEffect===null&&(o.firstEffect=e.firstEffect),e.lastEffect!==null&&(o.lastEffect!==null&&(o.lastEffect.nextEffect=e.firstEffect),o.lastEffect=e.lastEffect),1_&&(b=_,_=ct,ct=b),b=Le(at,ct),d=Le(at,_),b&&d&&(ht.rangeCount!==1||ht.anchorNode!==b.node||ht.anchorOffset!==b.offset||ht.focusNode!==d.node||ht.focusOffset!==d.offset)&&(ot=ot.createRange(),ot.setStart(b.node,b.offset),ht.removeAllRanges(),ct>_?(ht.addRange(ot),ht.extend(d.node,d.offset)):(ot.setEnd(d.node,d.offset),ht.addRange(ot)))))),ot=[],ht=at;ht=ht.parentNode;)ht.nodeType===1&&ot.push({element:ht,left:ht.scrollLeft,top:ht.scrollTop});for(typeof at.focus=="function"&&at.focus(),at=0;atO()-jj?Qj(o,0):uj|=s),Mj(o,e)}function lj(o,e){var s=o.stateNode;s!==null&&s.delete(e),e=0,e===0&&(e=o.mode,(e&2)===0?e=1:(e&4)===0?e=eg()===99?1:2:(Gj===0&&(Gj=tj),e=Yc(62914560&~Gj),e===0&&(e=4194304))),s=Hg(),o=Kj(o,e),o!==null&&($c(o,e,s),Mj(o,s))}var ck;ck=function(o,e,s){var a=e.lanes;if(o!==null)if(o.memoizedProps!==e.pendingProps||N.current)ug=!0;else if((s&a)!==0)ug=(o.flags&16384)!==0;else{switch(ug=!1,e.tag){case 3:ri(e),sh();break;case 5:gh(e);break;case 1:Ff(e.type)&&Jf(e);break;case 4:eh(e,e.stateNode.containerInfo);break;case 10:a=e.memoizedProps.value;var c=e.type._context;I$1(mg,c._currentValue),c._currentValue=a;break;case 13:if(e.memoizedState!==null)return(s&e.child.childLanes)!==0?ti(o,e,s):(I$1(P,P.current&1),e=hi(o,e,s),e!==null?e.sibling:null);I$1(P,P.current&1);break;case 19:if(a=(s&e.childLanes)!==0,(o.flags&64)!==0){if(a)return Ai(o,e,s);e.flags|=64}if(c=e.memoizedState,c!==null&&(c.rendering=null,c.tail=null,c.lastEffect=null),I$1(P,P.current),a)break;return null;case 23:case 24:return e.lanes=0,mi(o,e,s)}return hi(o,e,s)}else ug=!1;switch(e.lanes=0,e.tag){case 2:if(a=e.type,o!==null&&(o.alternate=null,e.alternate=null,e.flags|=2),o=e.pendingProps,c=Ef(e,M.current),tg(e,s),c=Ch(null,e,a,o,c,s),e.flags|=1,typeof c=="object"&&c!==null&&typeof c.render=="function"&&c.$$typeof===void 0){if(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ff(a)){var d=!0;Jf(e)}else d=!1;e.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,xg(e);var _=a.getDerivedStateFromProps;typeof _=="function"&&Gg(e,a,_,o),c.updater=Kg,e.stateNode=c,c._reactInternals=e,Og(e,a,o,s),e=qi(null,e,a,!0,d,s)}else e.tag=0,fi(null,e,c,s),e=e.child;return e;case 16:c=e.elementType;e:{switch(o!==null&&(o.alternate=null,e.alternate=null,e.flags|=2),o=e.pendingProps,d=c._init,c=d(c._payload),e.type=c,d=e.tag=hk(c),o=lg(c,o),d){case 0:e=li(null,e,c,o,s);break e;case 1:e=pi(null,e,c,o,s);break e;case 11:e=gi(null,e,c,o,s);break e;case 14:e=ii(null,e,c,lg(c.type,o),a,s);break e}throw Error(y(306,c,""))}return e;case 0:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:lg(a,c),li(o,e,a,c,s);case 1:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:lg(a,c),pi(o,e,a,c,s);case 3:if(ri(e),a=e.updateQueue,o===null||a===null)throw Error(y(282));if(a=e.pendingProps,c=e.memoizedState,c=c!==null?c.element:null,yg(o,e),Cg(e,a,null,s),a=e.memoizedState.element,a===c)sh(),e=hi(o,e,s);else{if(c=e.stateNode,(d=c.hydrate)&&(kh=rf(e.stateNode.containerInfo.firstChild),jh=e,d=lh=!0),d){if(o=c.mutableSourceEagerHydrationData,o!=null)for(c=0;c=0)&&(s[c]=o[c]);return s}function _objectWithoutProperties(o,e){if(o==null)return{};var s=_objectWithoutPropertiesLoose(o,e),a,c;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(o);for(c=0;c=0)&&(!Object.prototype.propertyIsEnumerable.call(o,a)||(s[a]=o[a]))}return s}var isFunction$1=function(e){return typeof e=="function"},MDXContext=React.createContext({}),useMDXComponents=function(e){var s=React.useContext(MDXContext),a=s;return e&&(a=isFunction$1(e)?e(s):_objectSpread2(_objectSpread2({},s),e)),a},TYPE_PROP_NAME="mdxType",DEFAULTS={inlineCode:"code",wrapper:function(e){var s=e.children;return React.createElement(React.Fragment,{},s)}},MDXCreateElement=React.forwardRef(function(o,e){var s=o.components,a=o.mdxType,c=o.originalType,d=o.parentName,_=_objectWithoutProperties(o,["components","mdxType","originalType","parentName"]),b=useMDXComponents(s),k=a,$=b["".concat(d,".").concat(k)]||b[k]||DEFAULTS[k]||c;return s?React.createElement($,_objectSpread2(_objectSpread2({ref:e},_),{},{components:s})):React.createElement($,_objectSpread2({ref:e},_))});MDXCreateElement.displayName="MDXCreateElement";function createElement(o,e){var s=arguments,a=e&&e.mdxType;if(typeof o=="string"||a){var c=s.length,d=new Array(c);d[0]=MDXCreateElement;var _={};for(var b in e)hasOwnProperty.call(e,b)&&(_[b]=e[b]);_.originalType=o,_[TYPE_PROP_NAME]=typeof o=="string"?o:a,d[1]=_;for(var k=2;k{if(a=`${base$1}${a}`,a in seen)return;seen[a]=!0;const c=a.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${d}`))return;const _=document.createElement("link");if(_.rel=c?"stylesheet":scriptRel,c||(_.as="script",_.crossOrigin=""),_.href=a,document.head.appendChild(_),c)return new Promise((b,k)=>{_.addEventListener("load",b),_.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>e())};var fraction$1={exports:{}};/** * @license Fraction.js v4.2.0 05/03/2022 * https://www.xarg.org/2014/03/rational-numbers-in-javascript/ * * Copyright (c) 2021, Robert Eisele (robert@xarg.org) * Dual licensed under the MIT or GPL Version 2 licenses. - **/(function(o,e){(function(s){var a=2e3,c={s:1,n:0,d:1};function d(nt,it){if(isNaN(nt=parseInt(nt,10)))throw tt.InvalidParameter;return nt*it}function _(nt,it){if(it===0)throw tt.DivisionByZero;var rt=Object.create(tt.prototype);rt.s=nt<0?-1:1,nt=nt<0?-nt:nt;var st=et(nt,it);return rt.n=nt/st,rt.d=it/st,rt}function b(nt){for(var it={},rt=nt,st=2,at=4;at<=rt;){for(;rt%st===0;)rt/=st,it[st]=(it[st]||0)+1;at+=1+2*st++}return rt!==nt?rt>1&&(it[rt]=(it[rt]||0)+1):it[nt]=(it[nt]||0)+1,it}var k=function(nt,it){var rt=0,st=1,at=1,lt=0,dt=0,ct=0,ut=1,ot=1,ht=0,pt=1,Et=1,gt=1,ft=1e7,mt;if(nt!=null)if(it!==void 0){if(rt=nt,st=it,at=rt*st,rt%1!==0||st%1!==0)throw tt.NonIntegerParameter}else switch(typeof nt){case"object":{if("d"in nt&&"n"in nt)rt=nt.n,st=nt.d,"s"in nt&&(rt*=nt.s);else if(0 in nt)rt=nt[0],1 in nt&&(st=nt[1]);else throw tt.InvalidParameter;at=rt*st;break}case"number":{if(nt<0&&(at=nt,nt=-nt),nt%1===0)rt=nt;else if(nt>0){for(nt>=1&&(ot=Math.pow(10,Math.floor(1+Math.log(nt)/Math.LN10)),nt/=ot);pt<=ft&><=ft;)if(mt=(ht+Et)/(pt+gt),nt===mt){pt+gt<=ft?(rt=ht+Et,st=pt+gt):gt>pt?(rt=Et,st=gt):(rt=ht,st=pt);break}else nt>mt?(ht+=Et,pt+=gt):(Et+=ht,gt+=pt),pt>ft?(rt=Et,st=gt):(rt=ht,st=pt);rt*=ot}else(isNaN(nt)||isNaN(it))&&(st=rt=NaN);break}case"string":{if(pt=nt.match(/\d+|./g),pt===null)throw tt.InvalidParameter;if(pt[ht]==="-"?(at=-1,ht++):pt[ht]==="+"&&ht++,pt.length===ht+1?dt=d(pt[ht++],at):pt[ht+1]==="."||pt[ht]==="."?(pt[ht]!=="."&&(lt=d(pt[ht++],at)),ht++,(ht+1===pt.length||pt[ht+1]==="("&&pt[ht+3]===")"||pt[ht+1]==="'"&&pt[ht+3]==="'")&&(dt=d(pt[ht],at),ut=Math.pow(10,pt[ht].length),ht++),(pt[ht]==="("&&pt[ht+2]===")"||pt[ht]==="'"&&pt[ht+2]==="'")&&(ct=d(pt[ht+1],at),ot=Math.pow(10,pt[ht+1].length)-1,ht+=3)):pt[ht+1]==="/"||pt[ht+1]===":"?(dt=d(pt[ht],at),ut=d(pt[ht+2],1),ht+=3):pt[ht+3]==="/"&&pt[ht+1]===" "&&(lt=d(pt[ht],at),dt=d(pt[ht+2],at),ut=d(pt[ht+4],1),ht+=5),pt.length<=ht){st=ut*ot,at=rt=ct+st*lt+ot*dt;break}}default:throw tt.InvalidParameter}if(st===0)throw tt.DivisionByZero;c.s=at<0?-1:1,c.n=Math.abs(rt),c.d=Math.abs(st)};function $(nt,it,rt){for(var st=1;it>0;nt=nt*nt%rt,it>>=1)it&1&&(st=st*nt%rt);return st}function j(nt,it){for(;it%2===0;it/=2);for(;it%5===0;it/=5);if(it===1)return 0;for(var rt=10%it,st=1;rt!==1;st++)if(rt=rt*10%it,st>a)return 0;return st}function _e(nt,it,rt){for(var st=1,at=$(10,rt,it),lt=0;lt<300;lt++){if(st===at)return lt;st=st*10%it,at=at*10%it}return 0}function et(nt,it){if(!nt)return it;if(!it)return nt;for(;;){if(nt%=it,!nt)return it;if(it%=nt,!it)return nt}}function tt(nt,it){if(k(nt,it),this instanceof tt)nt=et(c.d,c.n),this.s=c.s,this.n=c.n/nt,this.d=c.d/nt;else return _(c.s*c.n,c.d)}tt.DivisionByZero=new Error("Division by Zero"),tt.InvalidParameter=new Error("Invalid argument"),tt.NonIntegerParameter=new Error("Parameters must be integer"),tt.prototype={s:1,n:0,d:1,abs:function(){return _(this.n,this.d)},neg:function(){return _(-this.s*this.n,this.d)},add:function(nt,it){return k(nt,it),_(this.s*this.n*c.d+c.s*this.d*c.n,this.d*c.d)},sub:function(nt,it){return k(nt,it),_(this.s*this.n*c.d-c.s*this.d*c.n,this.d*c.d)},mul:function(nt,it){return k(nt,it),_(this.s*c.s*this.n*c.n,this.d*c.d)},div:function(nt,it){return k(nt,it),_(this.s*c.s*this.n*c.d,this.d*c.n)},clone:function(){return _(this.s*this.n,this.d)},mod:function(nt,it){if(isNaN(this.n)||isNaN(this.d))return new tt(NaN);if(nt===void 0)return _(this.s*this.n%this.d,1);if(k(nt,it),c.n===0&&this.d===0)throw tt.DivisionByZero;return _(this.s*(c.d*this.n)%(c.n*this.d),c.d*this.d)},gcd:function(nt,it){return k(nt,it),_(et(c.n,this.n)*et(c.d,this.d),c.d*this.d)},lcm:function(nt,it){return k(nt,it),c.n===0&&this.n===0?_(0,1):_(c.n*this.n,et(c.n,this.n)*et(c.d,this.d))},ceil:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.ceil(nt*this.s*this.n/this.d),nt)},floor:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.floor(nt*this.s*this.n/this.d),nt)},round:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.round(nt*this.s*this.n/this.d),nt)},inverse:function(){return _(this.s*this.d,this.n)},pow:function(nt,it){if(k(nt,it),c.d===1)return c.s<0?_(Math.pow(this.s*this.d,c.n),Math.pow(this.n,c.n)):_(Math.pow(this.s*this.n,c.n),Math.pow(this.d,c.n));if(this.s<0)return null;var rt=b(this.n),st=b(this.d),at=1,lt=1;for(var dt in rt)if(dt!=="1"){if(dt==="0"){at=0;break}if(rt[dt]*=c.n,rt[dt]%c.d===0)rt[dt]/=c.d;else return null;at*=Math.pow(dt,rt[dt])}for(var dt in st)if(dt!=="1"){if(st[dt]*=c.n,st[dt]%c.d===0)st[dt]/=c.d;else return null;lt*=Math.pow(dt,st[dt])}return c.s<0?_(lt,at):_(at,lt)},equals:function(nt,it){return k(nt,it),this.s*this.n*c.d===c.s*c.n*this.d},compare:function(nt,it){k(nt,it);var rt=this.s*this.n*c.d-c.s*c.n*this.d;return(0=0;lt--)at=at.inverse().add(rt[lt]);if(at.sub(it).abs().valueOf()0&&(rt+=it,rt+=" ",st%=at),rt+=st,rt+="/",rt+=at),rt},toLatex:function(nt){var it,rt="",st=this.n,at=this.d;return this.s<0&&(rt+="-"),at===1?rt+=st:(nt&&(it=Math.floor(st/at))>0&&(rt+=it,st%=at),rt+="\\frac{",rt+=st,rt+="}{",rt+=at,rt+="}"),rt},toContinued:function(){var nt,it=this.n,rt=this.d,st=[];if(isNaN(it)||isNaN(rt))return st;do st.push(Math.floor(it/rt)),nt=it%rt,it=rt,rt=nt;while(it!==1);return st},toString:function(nt){var it=this.n,rt=this.d;if(isNaN(it)||isNaN(rt))return"NaN";nt=nt||15;var st=j(it,rt),at=_e(it,rt,st),lt=this.s<0?"-":"";if(lt+=it/rt|0,it%=rt,it*=10,it&&(lt+="."),st){for(var dt=at;dt--;)lt+=it/rt|0,it%=rt,it*=10;lt+="(";for(var dt=st;dt--;)lt+=it/rt|0,it%=rt,it*=10;lt+=")"}else for(var dt=nt;it&&dt--;)lt+=it/rt|0,it%=rt,it*=10;return lt}},Object.defineProperty(tt,"__esModule",{value:!0}),tt.default=tt,tt.Fraction=tt,o.exports=tt})()})(fraction$1);var Fraction=getDefaultExportFromCjs(fraction$1.exports);Fraction.prototype.sam=function(){return this.floor()};Fraction.prototype.nextSam=function(){return this.sam().add(1)};Fraction.prototype.wholeCycle=function(){return new TimeSpan$1(this.sam(),this.nextSam())};Fraction.prototype.cyclePos=function(){return this.sub(this.sam())};Fraction.prototype.lt=function(o){return this.compare(o)<0};Fraction.prototype.gt=function(o){return this.compare(o)>0};Fraction.prototype.lte=function(o){return this.compare(o)<=0};Fraction.prototype.gte=function(o){return this.compare(o)>=0};Fraction.prototype.eq=function(o){return this.compare(o)==0};Fraction.prototype.max=function(o){return this.gt(o)?this:o};Fraction.prototype.min=function(o){return this.lt(o)?this:o};Fraction.prototype.show=function(){return this.s*this.n+"/"+this.d};Fraction.prototype.or=function(o){return this.eq(0)?o:this};const fraction=o=>(typeof o=="number"&&(o=String(o)),Fraction(o)),gcd=(...o)=>o.reduce((e,s)=>e.gcd(s),fraction(1));fraction._original=Fraction;class TimeSpan$1{constructor(e,s){this.begin=fraction(e),this.end=fraction(s)}get spanCycles(){const e=[];var s=this.begin;const a=this.end,c=a.sam();for(;a.gt(s);){if(s.sam().equals(c)){e.push(new TimeSpan$1(s,this.end));break}const d=s.nextSam();e.push(new TimeSpan$1(s,d)),s=d}return e}get duration(){return this.end.sub(this.begin)}cycleArc(){const e=this.begin.cyclePos(),s=e.add(this.duration);return new TimeSpan$1(e,s)}withTime(e){return new TimeSpan$1(e(this.begin),e(this.end))}withEnd(e){return new TimeSpan$1(this.begin,e(this.end))}withCycle(e){const s=this.begin.sam(),a=s.add(e(this.begin.sub(s))),c=s.add(e(this.end.sub(s)));return new TimeSpan$1(a,c)}intersection(e){const s=this.begin.max(e.begin),a=this.end.min(e.end);if(!s.gt(a)&&!(s.equals(a)&&(s.equals(this.end)&&this.begin.lt(this.end)||s.equals(e.end)&&e.begin.lt(e.end))))return new TimeSpan$1(s,a)}intersection_e(e){const s=this.intersection(e);if(s==null)throw"TimeSpans do not intersect";return s}midpoint(){return this.begin.add(this.duration.div(fraction(2)))}equals(e){return this.begin.equals(e.begin)&&this.end.equals(e.end)}show(){return this.begin.show()+" -> "+this.end.show()}}class Hap{constructor(e,s,a,c={},d=!1){this.whole=e,this.part=s,this.value=a,this.context=c,this.stateful=d,d&&console.assert(typeof this.value=="function","Stateful values must be functions")}get duration(){return this.whole.end.sub(this.whole.begin)}wholeOrPart(){return this.whole?this.whole:this.part}withSpan(e){const s=this.whole?e(this.whole):void 0;return new Hap(s,e(this.part),this.value,this.context)}withValue(e){return new Hap(this.whole,this.part,e(this.value),this.context)}hasOnset(){return this.whole!=null&&this.whole.begin.equals(this.part.begin)}resolveState(e){if(this.stateful&&this.hasOnset()){console.log("stateful");const s=this.value,[a,c]=s(e);return[a,new Hap(this.whole,this.part,c,this.context,!1)]}return[e,this]}spanEquals(e){return this.whole==null&&e.whole==null||this.whole.equals(e.whole)}equals(e){return this.spanEquals(e)&&this.part.equals(e.part)&&this.value===e.value}show(){return"("+(this.whole==null?"~":this.whole.show())+", "+this.part.show()+", "+this.value+")"}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}combineContext(e){const s=this;return wt(_t(_t({},s.context),e.context),{locations:(s.context.locations||[]).concat(e.context.locations||[])})}setContext(e){return new Hap(this.whole,this.part,this.value,e)}}class State$1{constructor(e,s={}){this.span=e,this.controls=s}setSpan(e){return new State$1(e,this.controls)}withSpan(e){return this.setSpan(e(this.span))}setControls(e){return new State$1(this.span,e)}}const isNote$4=o=>/^[a-gA-G][#b]*[0-9]$/.test(o),tokenizeNote=o=>{var c;if(typeof o!="string")return[];const[e,s="",a]=((c=o.match(/^([a-gA-G])([#b]*)([0-9])?$/))==null?void 0:c.slice(1))||[];return e?[e,s,a?Number(a):void 0]:[]},toMidi=o=>{const[e,s,a]=tokenizeNote(o);if(!e)throw new Error('not a note: "'+o+'"');const c={c:0,d:2,e:4,f:5,g:7,a:9,b:11}[e.toLowerCase()],d=(s==null?void 0:s.split("").reduce((_,b)=>_+{"#":1,b:-1}[b],0))||0;return(Number(a)+1)*12+c+d},fromMidi=o=>Math.pow(2,(o-69)/12)*440,mod=(o,e)=>(o%e+e)%e,getPlayableNoteValue=o=>{let{value:e,context:s}=o;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="string"&&!isNote$4(e))throw new Error("not a note: "+e);return e},getFrequency=o=>{let{value:e,context:s}=o;if(typeof e=="object"&&e.freq)return e.freq;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="string"&&isNote$4(e))e=fromMidi(toMidi(o.value));else if(typeof e!="number")throw new Error("not a note or frequency:"+e);return e},rotate=(o,e)=>o.slice(e).concat(o.slice(0,e)),pipe=(...o)=>o.reduce((e,s)=>(...a)=>e(s(...a)),e=>e),compose=(...o)=>pipe(...o.reverse()),removeUndefineds=o=>o.filter(e=>e!=null),flatten$1=o=>[].concat(...o),id$1=o=>o,constant=(o,e)=>o,listRange=(o,e)=>Array.from({length:e-o+1},(s,a)=>a+o);function curry(o,e){const s=function a(...c){if(c.length>=o.length)return o.apply(this,c);{const d=function(..._){return a.apply(this,c.concat(_))};return e&&e(d,c),d}};return e&&e(s,[]),s}function unionWithObj(o,e,s){const a=Object.keys(o).filter(c=>Object.keys(e).includes(c));return Object.assign({},o,e,Object.fromEntries(a.map(c=>[c,s(o[c],e[c])])))}curry((o,e)=>o*e);curry((o,e)=>e.map(o));function drawLine(o,e=60){let s=0,a=fraction(0),c=[""],d="";for(;c[0].lengthj.hasOnset()).map(j=>j.duration),k=gcd(...b),$=k.inverse();c=c.map(j=>j+"|"),d+="|";for(let j=0;j<$;j++){const[_e,et]=[a,a.add(k)],tt=_.filter(it=>it.whole.begin.lte(_e)&&it.whole.end.gte(et)),nt=tt.length-c.length;nt>0&&(c=c.concat(Array(nt).fill(d))),c=c.map((it,rt)=>{const st=tt[rt];if(st){const lt=st.whole.begin.eq(_e)?""+st.value:"-";return it+lt}return it+"."}),d+=".",a=a.add(k)}s++}return c.join(` -`)}class Pattern$4{constructor(e){this.query=e}queryArc(e,s){return this.query(new State$1(new TimeSpan$1(e,s)))}_splitQueries(){const e=this,s=a=>flatten$1(a.span.spanCycles.map(c=>e.query(a.setSpan(c))));return new Pattern$4(s)}withQuerySpan(e){return new Pattern$4(s=>this.query(s.withSpan(e)))}withQueryTime(e){return new Pattern$4(s=>this.query(s.withSpan(a=>a.withTime(e))))}withHapSpan(e){return new Pattern$4(s=>this.query(s).map(a=>a.withSpan(e)))}withHapTime(e){return this.withHapSpan(s=>s.withTime(e))}_withHaps(e){return new Pattern$4(s=>e(this.query(s)))}_withHap(e){return this._withHaps(s=>s.map(e))}_setContext(e){return this._withHap(s=>s.setContext(e))}_withContext(e){return this._withHap(s=>s.setContext(e(s.context)))}_stripContext(){return this._withHap(e=>e.setContext({}))}withLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{const d=(c.locations||[]).concat([a]);return wt(_t({},c),{locations:d})})}withMiniLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{let d=c.locations||[];return d=d.map(({start:_,end:b})=>{const k=_.line===1?a.start.column:0;return{start:wt(_t({},_),{line:_.line-1+(a.start.line-1)+1,column:_.column-1+k}),end:wt(_t({},b),{line:b.line-1+(a.start.line-1)+1,column:b.column-1+k})}}),wt(_t({},c),{locations:d})})}withValue(e){return new Pattern$4(s=>this.query(s).map(a=>a.withValue(e)))}fmap(e){return this.withValue(e)}_filterHaps(e){return new Pattern$4(s=>this.query(s).filter(e))}_filterValues(e){return new Pattern$4(s=>this.query(s).filter(a=>e(a.value)))}_removeUndefineds(){return this._filterValues(e=>e!=null)}onsetsOnly(){return this._filterHaps(e=>e.hasOnset())}discreteOnly(){return this._filterHaps(e=>e.whole)}_appWhole(e,s){const a=this,c=function(d){const _=a.query(d),b=s.query(d),k=function($,j){const _e=$.part.intersection(j.part);if(_e!=null)return new Hap(e($.whole,j.whole),_e,$.value(j.value),j.combineContext($))};return flatten$1(_.map($=>removeUndefineds(b.map(j=>k($,j)))))};return new Pattern$4(c)}appBoth(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._appWhole(s,e)}appLeft(e){const s=this,a=function(c){const d=[];for(const _ of s.query(c)){const b=e.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=_.part.intersection(k.part);if(j){const _e=_.value(k.value),et=k.combineContext(_),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(a)}appRight(e){const s=this,a=function(c){const d=[];for(const _ of e.query(c)){const b=s.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=k.part.intersection(_.part);if(j){const _e=k.value(_.value),et=_.combineContext(k),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(a)}firstCycle(e=!1){var s=this;return e||(s=s._stripContext()),s.query(new State$1(new TimeSpan$1(fraction(0),fraction(1))))}get _firstCycleValues(){return this.firstCycle().map(e=>e.value)}get _showFirstCycle(){return this.firstCycle().map(e=>`${e.value}: ${e.whole.begin.toFraction()} - ${e.whole.end.toFraction()}`)}_sortHapsByPart(){return this._withHaps(e=>e.sort((s,a)=>s.part.begin.sub(a.part.begin).or(s.part.end.sub(a.part.end)).or(s.whole.begin.sub(a.whole.begin).or(s.whole.end.sub(a.whole.end)))))}_opIn(e,s){return this.fmap(s).appLeft(reify$1(e))}_opOut(e,s){return this.fmap(s).appRight(reify$1(e))}_opMix(e,s){return this.fmap(s).appBoth(reify$1(e))}_opSqueeze(e,s){const a=reify$1(e);return this.fmap(c=>a.fmap(d=>s(c)(d)))._squeezeJoin()}_opSqueezeOut(e,s){const a=this;return reify$1(e).fmap(d=>a.fmap(_=>s(_)(d)))._squeezeJoin()}_opTrig(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._trigJoin()}_opTrigzero(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._TrigzeroJoin()}_asNumber(e=!1,s=!1){return this._withHap(a=>{const c=Number(a.value);if(!isNaN(c))return a.withValue(()=>c);const d={e:Math.E,pi:Math.PI}[a.value];if(typeof d!="undefined")return a.withValue(()=>d);if(isNote$4(a.value))return new Hap(a.whole,a.part,toMidi(a.value),wt(_t({},a.context),{type:"midi"}));if(!e){if(s)return a;throw new Error('cannot parse as number: "'+a.value+'"')}})}round(){return this._asNumber().fmap(e=>Math.round(e))}floor(){return this._asNumber().fmap(e=>Math.floor(e))}ceil(){return this._asNumber().fmap(e=>Math.ceil(e))}_toBipolar(){return this.fmap(e=>e*2-1)}_fromBipolar(){return this.fmap(e=>(e+1)/2)}range(e,s){return this.mul(s-e).add(e)}rangex(e,s){return this.range(Math.log(e),Math.log(s)).fmap(Math.exp)}range2(e,s){return this._fromBipolar().range(e,s)}_bindWhole(e,s){const a=this,c=function(d){const _=function(k,$){return new Hap(e(k.whole,$.whole),$.part,$.value,Object.assign({},k.context,$.context,{locations:(k.context.locations||[]).concat($.context.locations||[])}))},b=function(k){return s(k.value).query(d.setSpan(k.part)).map($=>_(k,$))};return flatten$1(a.query(d).map(k=>b(k)))};return new Pattern$4(c)}bind(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._bindWhole(s,e)}join(){return this.bind(id$1)}outerBind(e){return this._bindWhole((s,a)=>s,e)}outerJoin(){return this.outerBind(id$1)}innerBind(e){return this._bindWhole((s,a)=>a,e)}innerJoin(){return this.innerBind(id$1)}_trigJoin(e=!1){const s=this;return new Pattern$4(a=>s.discreteOnly().query(a).map(c=>c.value.late(e?c.whole.begin:c.whole.begin.cyclePos()).query(a).map(d=>new Hap(d.whole?d.whole.intersection(c.whole):void 0,d.part.intersection(c.part),d.value).setContext(c.combineContext(d))).filter(d=>d.part)).flat())}_TrigzeroJoin(){return this._trigJoin(!0)}_squeezeJoin(){const e=this;function s(a){const c=e.discreteOnly().query(a);function d(b){const $=b.value._compressSpan(b.wholeOrPart().cycleArc()).query(a.setSpan(b.part));function j(_e,et){let tt;if(et.whole&&_e.whole&&(tt=et.whole.intersection(_e.whole),!tt))return;const nt=et.part.intersection(_e.part);if(!nt)return;const it=et.combineContext(_e);return new Hap(tt,nt,et.value,it)}return $.map(_e=>j(b,_e))}return flatten$1(c.map(d)).filter(b=>b)}return new Pattern$4(s)}_squeezeBind(e){return this.fmap(e)._squeezeJoin()}_apply(e){return e(this)}layer(...e){return stack(...e.map(s=>s(this)))}_patternify(e){const s=this;return function(...c){return c=c.map(_=>isPattern$1(_)?_.fmap(b=>b.value||b):_),sequence(...c).fmap(_=>e.call(s,_)).innerJoin()}}_fastGap(e){const s=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).mul(e).min(1)),b=d.add(c.end.sub(d).mul(e).min(1));return new TimeSpan$1(_,b)},a=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).div(e).min(1)),b=d.add(c.end.sub(d).div(e).min(1));return new TimeSpan$1(_,b)};return this.withQuerySpan(s).withHapSpan(a)._splitQueries()}_compress(e,s){return e.gt(s)||e.gt(1)||s.gt(1)||e.lt(0)||s.lt(0)?silence:this._fastGap(fraction(1).div(s.sub(e)))._late(e)}_compressSpan(e){return this._compress(e.begin,e.end)}_fast(e){return this.withQueryTime(a=>a.mul(e)).withHapTime(a=>a.div(e))}_slow(e){return this._fast(fraction(1).div(e))}_inside(e,s){return s(this._slow(e))._fast(e)}_outside(e,s){return s(this._fast(e))._slow(e)}_ply(e){return this.fmap(s=>pure(s)._fast(e))._squeezeJoin()}_chop(e){const a=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=function(d){return sequence(a.map(_=>Object.assign({},d,_)))};return this._squeezeBind(c)}_striate(e){const a=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=slowcat(...a);return this.set(c)._fast(e)}_cpm(e){return this._fast(e/60)}_early(e){return e=fraction(e),this.withQueryTime(s=>s.add(e)).withHapTime(s=>s.sub(e))}_late(e){return e=fraction(e),this._early(fraction(0).sub(e))}_zoom(e,s){s=fraction(s),e=fraction(e);const a=s.sub(e);return this.withQuerySpan(c=>c.withCycle(d=>d.mul(a).add(e))).withHapSpan(c=>c.withCycle(d=>d.sub(e).div(a)))._splitQueries()}_zoomArc(e){return this.zoom(e.begin,e.end)}_linger(e){return e==0?silence:e<0?this._zoom(e.add(1),1)._slow(e):this._zoom(0,e)._slow(e)}_color(e){return this._withContext(s=>wt(_t({},s),{color:e}))}log(){return this._withHap(e=>{var s;return e.setContext(wt(_t({},e.context),{logs:(((s=e.context)==null?void 0:s.logs)||[]).concat([e.show()])}))})}drawLine(){return console.log(drawLine(this)),this}_segment(e){return this.struct(pure(!0)._fast(e))}invert(){return this.fmap(e=>!e)}inv(){return this.invert()}when(e,s){const a=e._filterValues(id$1),c=e._filterValues(b=>!b),d=a.fmap(b=>k=>k).appRight(s(this)),_=c.fmap(b=>k=>k).appRight(this);return stack(d,_)}off(e,s){return stack(this,s(this.late(e)))}every(e,s){const a=this,c=Array(e-1).fill(a);return c.unshift(s(a)),slowcatPrime(...c)}brak(){return this.when(slowcat(!1,!0),e=>fastcat(e,silence)._late(.25))}rev(){const e=this,s=function(a){const c=a.span,d=c.begin.sam(),_=c.begin.nextSam(),b=function($){const j=$.withTime(et=>d.add(_.sub(et))),_e=j.begin;return j.begin=j.end,j.end=_e,j};return e.query(a.setSpan(b(c))).map($=>$.withSpan(b))};return new Pattern$4(s)._splitQueries()}palindrome(){return this.every(2,rev)}juxBy(e,s){e/=2;const a=function(_,b,k){return b in _?_[b]:k},c=this.withValue(_=>Object.assign({},_,{pan:a(_,"pan",.5)-e})),d=this.withValue(_=>Object.assign({},_,{pan:a(_,"pan",.5)+e}));return stack(c,s(d))}_jux(e){return this.juxBy(1,e)}stack(...e){return stack(this,...e)}sequence(...e){return sequence(this,...e)}seq(...e){return sequence(this,...e)}cat(...e){return cat(this,...e)}fastcat(...e){return fastcat(this,...e)}slowcat(...e){return slowcat(this,...e)}superimpose(...e){return this.stack(...e.map(s=>s(this)))}stutWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}stut(e,s,a){return this.stutWith(e,a,(c,d)=>c.velocity(Math.pow(s,d)))}_echoWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}_echo(e,s,a){return this._echoWith(e,s,(c,d)=>c.velocity(Math.pow(a,d)))}iter(e,s=!1){return slowcat(...listRange(0,e-1).map(a=>s?this.late(a/e):this.early(a/e)))}iterBack(e){return this.iter(e,!0)}_chunk(e,s,a=!1){const c=Array(e-1).fill(!1);c.unshift(!0);const d=sequence(...c).iter(e,a);return this.when(d,s)}_chunkBack(e,s){return this._chunk(e,s,!0)}edit(...e){return stack(...e.map(s=>s(this)))}pipe(e){return e(this)}_bypass(e){return e=Boolean(parseInt(e)),e?silence:this}hush(){return silence}_duration(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(e)))}_legato(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(s.end.sub(s.begin).mul(e))))}_velocity(e){return this._withContext(s=>wt(_t({},s),{velocity:(s.velocity||1)*e}))}_loopAt(e,s=1){return this.speed(1/e*s).unit("c").slow(e)}}function _composeOp(o,e,s){function a(c){return c instanceof Object&&!(c instanceof Function)}return a(o)||a(e)?(a(o)||(o={value:o}),a(e)||(e={value:e}),unionWithObj(o,e,s)):s(o,e)}(function(){const o=a=>a._asNumber(),s={set:[(a,c)=>c],keep:[(a,c)=>a],keepif:[(a,c)=>c?a:void 0],add:[(a,c)=>a+c,a=>a._asNumber(!1,!0)],sub:[(a,c)=>a-c,o],mul:[(a,c)=>a*c,o],div:[(a,c)=>a/c,o],mod:[mod,o],pow:[Math.pow,o],_and:[(a,c)=>a&c,o],_or:[(a,c)=>a|c,o],_xor:[(a,c)=>a^c,o],_lshift:[(a,c)=>a<a>>c,o],lt:[(a,c)=>aa>c],lte:[(a,c)=>a<=c],gte:[(a,c)=>a>=c],eq:[(a,c)=>a==c],eqt:[(a,c)=>a===c],ne:[(a,c)=>a!=c],net:[(a,c)=>a!==c],and:[(a,c)=>a&&c],or:[(a,c)=>a||c],func:[(a,c)=>c(a)]};for(const[a,[c,d]]of Object.entries(s))for(const _ of["In","Out","Mix","Squeeze","SqueezeOut","Trig","Trigzero"])Pattern$4.prototype[a+_]=function(...b){var k=this;b=sequence(b),d&&(k=d(k),b=d(b));var $=k["_op"+_](b,j=>_e=>_composeOp(j,_e,c));return a==="keepif"&&($=$._removeUndefineds()),$},_==="Squeeze"&&(Pattern$4.prototype[a+"SqueezeIn"]=Pattern$4.prototype[a+_]),_==="In"?Pattern$4.prototype[a]=Pattern$4.prototype[a+_]:a==="set"&&(Pattern$4.prototype[_.toLowerCase()]=Pattern$4.prototype[a+_]);Pattern$4.prototype.struct=Pattern$4.prototype.keepifOut,Pattern$4.prototype.structAll=Pattern$4.prototype.keepOut,Pattern$4.prototype.mask=Pattern$4.prototype.keepifIn,Pattern$4.prototype.maskAll=Pattern$4.prototype.keepIn,Pattern$4.prototype.reset=Pattern$4.prototype.keepifTrig,Pattern$4.prototype.resetAll=Pattern$4.prototype.keepTrig,Pattern$4.prototype.restart=Pattern$4.prototype.keepifTrigzero,Pattern$4.prototype.restartAll=Pattern$4.prototype.keepTrigzero})();Pattern$4.prototype.patternified=["apply","chop","color","cpm","duration","early","fast","jux","late","legato","linger","ply","segment","striate","slow","velocity"];Pattern$4.prototype.factories={pure,stack,slowcat,fastcat,cat,timeCat,sequence,seq:seq$2,polymeter,pm,polyrhythm,pr};const silence=new Pattern$4(o=>[]);function pure(o){function e(s){return s.span.spanCycles.map(a=>new Hap(fraction(a.begin).wholeCycle(),a,o))}return new Pattern$4(e)}function isPattern$1(o){return o instanceof Pattern$4}function reify$1(o){return isPattern$1(o)?o:pure(o)}function stack(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=s=>flatten$1(o.map(a=>a.query(s)));return new Pattern$4(e)}function slowcat(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=function(s){const a=s.span,c=mod(a.begin.sam(),o.length),d=o[c];if(!d)return[];const _=a.begin.floor().sub(a.begin.div(o.length).floor());return d.withHapTime(b=>b.add(_)).query(s.setSpan(a.withTime(b=>b.sub(_))))};return new Pattern$4(e)._splitQueries()}function slowcatPrime(...o){o=o.map(reify$1);const e=function(s){const a=Math.floor(s.span.begin)%o.length;return o[a].query(s)};return new Pattern$4(e)._splitQueries()}function fastcat(...o){return slowcat(...o)._fast(o.length)}function cat(...o){return slowcat(...o)}function timeCat(...o){const e=o.map(c=>c[0]).reduce((c,d)=>c.add(d),fraction(0));let s=fraction(0);const a=[];for(const[c,d]of o){const _=s.add(c);a.push(reify$1(d)._compress(s.div(e),_.div(e))),s=_}return stack(...a)}function sequence(...o){return fastcat(...o)}function seq$2(...o){return fastcat(...o)}function _sequenceCount(o){return Array.isArray(o)?o.length==0?[silence,0]:o.length==1?_sequenceCount(o[0]):[fastcat(...o.map(e=>_sequenceCount(e)[0])),o.length]:[reify$1(o),1]}function polymeterSteps(o,...e){const s=e.map(c=>_sequenceCount(c));if(s.length==0)return silence;o==0&&(o=s[0][1]);const a=[];for(const c of s)c[1]==0&&next,o==c[1]?a.push(c[0]):a.push(c[0]._fast(fraction(o).div(fraction(c[1]))));return stack(...a)}function polymeter(...o){return polymeterSteps(0,...o)}function pm(...o){polymeter(...o)}function polyrhythm(...o){const e=o.map(s=>sequence(s));return e.length==0?silence:stack(...e)}function pr(o){polyrhythm(o)}const add$1=curry((o,e)=>e.add(o)),chunk=curry((o,e)=>e.chunk(o)),chunkBack=curry((o,e)=>e.chunkBack(o)),div=curry((o,e)=>e.div(o)),early=curry((o,e)=>e.early(o)),echo=curry((o,e,s,a)=>a.echo(o,e,s)),every=curry((o,e,s)=>s.every(o,e)),fast=curry((o,e)=>e.fast(o)),inv=o=>o.inv(),invert=o=>o.invert(),iter=curry((o,e)=>e.iter(o)),iterBack=curry((o,e)=>e.iter(o)),jux=curry((o,e)=>e.jux(o)),juxBy=curry((o,e,s)=>s.juxBy(o,e)),late=curry((o,e)=>e.late(o)),linger=curry((o,e)=>e.linger(o)),mask=curry((o,e)=>e.mask(o)),mul=curry((o,e)=>e.mul(o)),off=curry((o,e,s)=>s.off(o,e)),ply=curry((o,e)=>e.ply(o)),range$2=curry((o,e,s)=>s.range(o,e)),range2=curry((o,e,s)=>s.range2(o,e)),rev=o=>o.rev(),slow=curry((o,e)=>e.slow(o)),struct=curry((o,e)=>e.struct(o)),sub=curry((o,e)=>e.sub(o)),superimpose=curry((o,e)=>e.superimpose(...o)),set=curry((o,e)=>e.set(o)),when=curry((o,e,s)=>s.when(o,e));Pattern$4.prototype.composable={fast,slow,early,late,superimpose};function makeComposable(o){return Object.entries(Pattern$4.prototype.composable).forEach(([e,s])=>{o[e]=(...a)=>{const c=compose(o,s(...a));return makeComposable(c)}}),o}const patternify2=o=>(e,s,a)=>e.fmap(c=>d=>o.call(a,c,d)).appLeft(s).innerJoin(),patternify3=o=>(e,s,a,c)=>e.fmap(d=>_=>b=>o.call(c,d,_,b)).appLeft(s).appLeft(a).innerJoin(),patternify4=o=>(e,s,a,c,d)=>e.fmap(_=>b=>k=>$=>o.call(d,_,b,k,$)).appLeft(s).appLeft(a).appLeft(c).innerJoin();Pattern$4.prototype.echo=function(...o){return o=o.map(reify$1),patternify3(Pattern$4.prototype._echo)(...o,this)};Pattern$4.prototype.echoWith=function(...o){return o=o.map(reify$1),patternify3(Pattern$4.prototype._echoWith)(...o,this)};Pattern$4.prototype.chunk=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._chunk)(...o,this)};Pattern$4.prototype.chunkBack=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._chunkBack)(...o,this)};Pattern$4.prototype.loopAt=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._loopAt)(...o,this)};Pattern$4.prototype.zoom=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._zoom)(...o,this)};Pattern$4.prototype.compress=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._compress)(...o,this)};Pattern$4.prototype.outside=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._outside)(...o,this)};Pattern$4.prototype.inside=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._inside)(...o,this)};Pattern$4.prototype.bootstrap=function(){const o=Object.fromEntries(Object.entries(Pattern$4.prototype.composable).map(([e,s])=>(Pattern$4.prototype[e]&&(Pattern$4.prototype[e]=makeComposable(Pattern$4.prototype[e])),[e,curry(s,makeComposable)])));return this.patternified.forEach(e=>{Pattern$4.prototype[e]=function(...s){return this._patternify(Pattern$4.prototype["_"+e])(...s)}}),o};Pattern$4.prototype.define=(o,e,s={})=>{s.composable&&(Pattern$4.prototype.composable[o]=e),s.patternified&&(Pattern$4.prototype.patternified=Pattern$4.prototype.patternified.concat([o])),Pattern$4.prototype.bootstrap()};Pattern$4.prototype.define("hush",o=>o.hush(),{patternified:!1,composable:!0});Pattern$4.prototype.define("bypass",o=>o.bypass(on),{patternified:!0,composable:!0});const controls={},generic_params=[["s","s","sound"],["f","n","The note or sample number to choose for a synth or sampleset"],["f","note","The note or pitch to play a sound or synth with"],["f","accelerate","a pattern of numbers that speed up (or slow down) samples while they play."],["f","gain","a pattern of numbers that specify volume. Values less than 1 make the sound quieter. Values greater than 1 make the sound louder. For the linear equivalent, see @amp@."],["f","amp","like @gain@, but linear."],["f","attack","a pattern of numbers to specify the attack time (in seconds) of an envelope applied to each sample."],["f","decay",""],["f","sustain",""],["f","release","a pattern of numbers to specify the release time (in seconds) of an envelope applied to each sample."],["f","hold","a pattern of numbers to specify the hold time (in seconds) of an envelope applied to each sample. Only takes effect if `attack` and `release` are also specified."],["f","bandf","A pattern of numbers from 0 to 1. Sets the center frequency of the band-pass filter."],["f","bandq","a pattern of anumbers from 0 to 1. Sets the q-factor of the band-pass filter."],["f","begin","a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. `0.25` to cut off the first quarter from each sample."],["f","end","the same as `begin`, but cuts the end off samples, shortening them; e.g. `0.75` to cut off the last quarter of each sample."],["f","loop","loops the sample (from `begin` to `end`) the specified number of times."],["f","legato","controls the amount of overlap between two adjacent sounds"],["f","crush","bit crushing, a pattern of numbers from 1 (for drastic reduction in bit-depth) to 16 (for barely no reduction)."],["f","coarse","fake-resampling, a pattern of numbers for lowering the sample rate, i.e. 1 for original 2 for half, 3 for a third and so on."],["i","channel","choose the channel the pattern is sent to in superdirt"],["i","cut","In the style of classic drum-machines, `cut` will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open."],["f","cutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the low-pass filter."],["f","hcutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the high-pass filter. Also has alias @hpf@"],["f","hresonance","a pattern of numbers from 0 to 1. Applies the resonance of the high-pass filter. Has alias @hpq@"],["f","resonance","a pattern of numbers from 0 to 1. Specifies the resonance of the low-pass filter."],["f","djf","DJ filter, below 0.5 is low pass filter, above is high pass filter."],["f","delay","a pattern of numbers from 0 to 1. Sets the level of the delay signal."],["f","delayfeedback","a pattern of numbers from 0 to 1. Sets the amount of delay feedback."],["f","delaytime","a pattern of numbers from 0 to 1. Sets the length of the delay."],["f","lock","A pattern of numbers. Specifies whether delaytime is calculated relative to cps. When set to 1, delaytime is a direct multiple of a cycle."],["f","detune",""],["f","dry","when set to `1` will disable all reverb for this pattern. See `room` and `size` for more information about reverb."],["f","fadeTime","Used when using begin/end or chop/striate and friends, to change the fade out time of the 'grain' envelope."],["f","fadeInTime","As with fadeTime, but controls the fade in time of the grain envelope. Not used if the grain begins at position 0 in the sample."],["f","freq",""],["f","gate",""],["f","leslie",""],["f","lrate",""],["f","lsize",""],["f","degree",""],["f","mtranspose",""],["f","ctranspose",""],["f","harmonic",""],["f","stepsPerOctave",""],["f","octaveR",""],["f","nudge","Nudges events into the future by the specified number of seconds. Negative numbers work up to a point as well (due to internal latency)"],["i","octave",""],["f","offset",""],["i","orbit","a pattern of numbers. An `orbit` is a global parameter context for patterns. Patterns with the same orbit will share hardware output bus offset and global effects, e.g. reverb and delay. The maximum number of orbits is specified in the superdirt startup, numbers higher than maximum will wrap around."],["f","overgain",""],["f","overshape",""],["f","pan","a pattern of numbers between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel)"],["f","panspan","a pattern of numbers between -inf and inf, which controls how much multichannel output is fanned out (negative is backwards ordering)"],["f","pansplay","a pattern of numbers between 0.0 and 1.0, which controls the multichannel spread range (multichannel only)"],["f","panwidth","a pattern of numbers between 0.0 and inf, which controls how much each channel is distributed over neighbours (multichannel only)"],["f","panorient","a pattern of numbers between -1.0 and 1.0, which controls the relative position of the centre pan in a pair of adjacent speakers (multichannel only)"],["f","rate","used in SuperDirt softsynths as a control rate or 'speed'"],["f","slide",""],["f","semitone",""],["f","velocity",""],["f","voice",""],["f","room","a pattern of numbers from 0 to 1. Sets the level of reverb."],["f","size","a pattern of numbers from 0 to 1. Sets the perceptual size (reverb time) of the `room` to be used in reverb."],["f","shape","wave shaping distortion, a pattern of numbers from 0 for no distortion up to 1 for loads of distortion."],["f","speed","a pattern of numbers which changes the speed of sample playback, i.e. a cheap way of changing pitch. Negative values will play the sample backwards!"],["s","unit",'used in conjunction with `speed`, accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using `unit "c"` means `speed` will be interpreted in units of cycles, e.g. `speed "1"` means samples will be stretched to fill a cycle. Using `unit "s"` means the playback speed will be adjusted so that the duration is the number of seconds specified by `speed`.'],["f","squiz",""],["f","stutterdepth",""],["f","stuttertime",""],["f","timescale",""],["f","timescalewin",""],["s","vowel","formant filter to make things sound like vowels, a pattern of either `a`, `e`, `i`, `o` or `u`. Use a rest (`~`) for no effect."],["f","waveloss",""],["f","dur",""],["f","expression",""],["f","sustainpedal",""],["f","tremolodepth","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","tremolorate","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","phaserdepth","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","phaserrate","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","fshift","frequency shifter"],["f","fshiftnote","frequency shifter"],["f","fshiftphase","frequency shifter"],["f","triode","tube distortion"],["f","krush","shape/bass enhancer"],["f","kcutoff",""],["f","octer","octaver effect"],["f","octersub","octaver effect"],["f","octersubsub","octaver effect"],["f","ring","ring modulation"],["f","ringf","ring modulation"],["f","ringdf","ring modulation"],["f","distort","noisy fuzzy distortion"],["f","freeze","Spectral freeze"],["f","xsdelay",""],["f","tsdelay",""],["f","real","Spectral conform"],["f","imag",""],["f","enhance","Spectral enhance"],["f","partials",""],["f","comb","Spectral comb"],["f","smear","Spectral smear"],["f","scram","Spectral scramble"],["f","binshift","Spectral binshift"],["f","hbrick","High pass sort of spectral filter"],["f","lbrick","Low pass sort of spectral filter"],["f","midichan",""],["f","control",""],["f","ccn",""],["f","ccv",""],["f","polyTouch",""],["f","midibend",""],["f","miditouch",""],["f","ctlNum",""],["f","frameRate",""],["f","frames",""],["f","hours",""],["s","midicmd",""],["f","minutes",""],["f","progNum",""],["f","seconds",""],["f","songPtr",""],["f","uid",""],["f","val",""],["f","cps",""]],_name=(o,...e)=>sequence(...e).withValue(s=>({[o]:s})),_setter=o=>function(...e){return this.set(o(...e))};generic_params.forEach(([o,e,s])=>{controls[e]=(...a)=>_name(e,...a),Pattern$4.prototype[e]=_setter(controls[e])});controls.createParam=o=>(Pattern$4.prototype[o]=_setter(controls[o]),(...e)=>_name(o,...e));controls.createParams=(...o)=>o.reduce((e,s)=>Object.assign(e,{[s]:createParam(s)}),{});function bjorklund(o,e){for(var s=[],a=[],c=[e],d=o-e,_=0,b=function(k){if(k==-1)s.push(0);else if(k==-2)s.push(1);else{for(var $=0;$1;)a.push(Math.floor(d/c[_])),c.push(d%c[_]),d=c[_],_++;return a.push(d),b(_),s.reverse()}var bjork=function(o,e){return o>e?bjorklund(o,e):bjorklund(e,o)};const euclid=(o,e,s=0)=>{const a=bjork(e,o);return s?rotate(a,-s):a};Pattern$4.prototype.euclid=function(o,e,s=0){return this.struct(euclid(o,e,s))};Pattern$4.prototype.euclidLegato=function(o,e,s=0){const a=euclid(o,e,s),c=a.indexOf(1),d=rotate(a,c).join("").split("1").slice(1).map(_=>[_.length+1,!0]);return this.struct(timeCat(...d)).late(fraction(c).div(e))};function steady(o){return new Pattern$4(e=>[new Hap(void 0,e.span,o)])}const signal=o=>{const e=s=>[new Hap(void 0,s.span,o(s.span.midpoint()))];return new Pattern$4(e)},isaw=signal(o=>1-o%1),isaw2=isaw._toBipolar(),saw=signal(o=>o%1),saw2=saw._toBipolar(),sine2=signal(o=>Math.sin(Math.PI*2*o)),sine=sine2._fromBipolar(),cosine=sine._early(fraction(1).div(4)),cosine2=sine2._early(fraction(1).div(4)),square=signal(o=>Math.floor(o*2%2)),square2=square._toBipolar(),tri=fastcat(isaw,saw),tri2=fastcat(isaw2,saw2),time=signal(id$1),xorwise=o=>{const e=o<<13^o,s=e>>17^e;return s<<5^s},_frac=o=>o-Math.trunc(o),timeToIntSeed=o=>xorwise(Math.trunc(_frac(o/300)*536870912)),intSeedToRand=o=>o%536870912/536870912,timeToRand=o=>Math.abs(intSeedToRand(timeToIntSeed(o))),rand=signal(timeToRand),_brandBy=o=>rand.fmap(e=>ereify$1(o).fmap(_brandBy).innerJoin(),brand=_brandBy(.5),_irand=o=>rand.fmap(e=>Math.trunc(e*o)),irand=o=>reify$1(o).fmap(_irand).innerJoin(),chooseWith=(o,e)=>(e=e.map(reify$1),e.length==0?silence:o.range(0,e.length).fmap(s=>e[Math.floor(s)]).outerJoin()),choose=(...o)=>chooseWith(rand,o),_wchooseWith=function(o,...e){const s=e.map(b=>reify$1(b[0])),a=[];let c=0;for(const b of e)c+=b[1],a.push(c);const d=c,_=function(b){const k=b*d;return s[a.findIndex($=>$>k,a)]};return o.fmap(_)},wchooseWith=(...o)=>_wchooseWith(...o).outerJoin(),wchoose=(...o)=>wchooseWith(rand,...o),wchooseCycles=(...o)=>_wchooseWith(rand,...o).innerJoin(),perlinWith=o=>{const e=o.fmap(Math.floor),s=o.fmap(d=>Math.floor(d)+1),a=d=>6*d**5-15*d**4+10*d**3,c=d=>_=>b=>_+a(d)*(b-_);return o.sub(e).fmap(c).appBoth(e.fmap(timeToRand)).appBoth(s.fmap(timeToRand))},perlin=perlinWith(time);Pattern$4.prototype._degradeByWith=function(o,e){return this.fmap(s=>a=>s).appLeft(o._filterValues(s=>s>e))};Pattern$4.prototype._degradeBy=function(o){return this._degradeByWith(rand,o)};Pattern$4.prototype.degrade=function(){return this._degradeBy(.5)};Pattern$4.prototype._undegradeBy=function(o){return this._degradeByWith(rand.fmap(e=>1-e),o)};Pattern$4.prototype.undegrade=function(){return this._undegradeBy(.5)};Pattern$4.prototype._sometimesBy=function(o,e){return stack(this._degradeBy(o),e(this._undegradeBy(1-o)))};Pattern$4.prototype.sometimesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesBy(a,e)).innerJoin()};Pattern$4.prototype._sometimesByPre=function(o,e){return stack(this._degradeBy(o),e(this).undegradeBy(1-o))};Pattern$4.prototype.sometimesByPre=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesByPre(a,e)).innerJoin()};Pattern$4.prototype.sometimes=function(o){return this._sometimesBy(.5,o)};Pattern$4.prototype.sometimesPre=function(o){return this._sometimesByPre(.5,o)};Pattern$4.prototype._someCyclesBy=function(o,e){return stack(this._degradeByWith(rand._segment(1),o),e(this._degradeByWith(rand.fmap(s=>1-s)._segment(1),1-o)))};Pattern$4.prototype.someCyclesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._someCyclesBy(a,e)).innerJoin()};Pattern$4.prototype.someCycles=function(o){return this._someCyclesBy(.5,o)};Pattern$4.prototype.often=function(o){return this.sometimesBy(.75,o)};Pattern$4.prototype.rarely=function(o){return this.sometimesBy(.25,o)};Pattern$4.prototype.almostNever=function(o){return this.sometimesBy(.1,o)};Pattern$4.prototype.almostAlways=function(o){return this.sometimesBy(.9,o)};Pattern$4.prototype.never=function(o){return this};Pattern$4.prototype.always=function(o){return o(this)};Pattern$4.prototype.patternified.push("degradeBy","undegradeBy");let synth$1;try{synth$1=window==null?void 0:window.speechSynthesis}catch{console.warn("cannot use window: not in browser?")}let allVoices=synth$1==null?void 0:synth$1.getVoices();function speak(o,e,s){synth$1.cancel();const a=new SpeechSynthesisUtterance(o);a.lang=e,allVoices=synth$1.getVoices();const c=allVoices.filter(d=>d.lang.includes(e));typeof s=="number"?a.voice=c[s%c.length]:typeof s=="string"&&(a.voice=c.find(d=>d.name===d)),speechSynthesis.speak(a)}Pattern$4.prototype._speak=function(o,e){return this._withHap(s=>{const a=(c,d)=>{speak(d.value,o,e)};return s.setContext(wt(_t({},s.context),{onTrigger:a}))})};Pattern$4.prototype.speak=function(o,e){return patternify2(Pattern$4.prototype._speak)(reify(o),reify(e),this)};var gist=route=>fetch(`https://gist.githubusercontent.com/${route}?cachebust=${Date.now()}`).then(o=>o.text()).then(code=>eval(code)),gist$1=Object.freeze(Object.defineProperty({__proto__:null,default:gist},Symbol.toStringTag,{value:"Module"})),strudel=Object.freeze(Object.defineProperty({__proto__:null,Fraction:fraction,gist:gist$1,Hap,Pattern:Pattern$4,silence,pure,isPattern:isPattern$1,reify:reify$1,stack,slowcat,slowcatPrime,fastcat,cat,timeCat,sequence,seq:seq$2,polymeterSteps,polymeter,pm,polyrhythm,pr,add:add$1,chunk,chunkBack,div,early,echo,every,fast,inv,invert,iter,iterBack,jux,juxBy,late,linger,mask,mul,off,ply,range:range$2,range2,rev,slow,struct,sub,superimpose,set,when,makeComposable,patternify2,patternify3,patternify4,steady,signal,isaw,isaw2,saw,saw2,sine2,sine,cosine,cosine2,square,square2,tri,tri2,time,rand,_brandBy,brandBy,brand,_irand,irand,chooseWith,choose,wchoose,wchooseCycles,perlinWith,perlin,State:State$1,TimeSpan:TimeSpan$1,isNote:isNote$4,tokenizeNote,toMidi,fromMidi,mod,getPlayableNoteValue,getFrequency,rotate,pipe,compose,removeUndefineds,flatten:flatten$1,id:id$1,constant,listRange,curry},Symbol.toStringTag,{value:"Module"}));const scale=(o,e,s)=>o*(s-e)+e;Pattern$4.prototype.pianoroll=function({cycles:o=4,playhead:e=.5,overscan:s=1,flipTime:a=0,flipValues:c=0,hideNegative:d=!1,inactive:_="#C9E597",active:b="#FFCA28",background:k="transparent",minMidi:$=10,maxMidi:j=90,autorange:_e=0,timeframe:et,fold:tt=0,vertical:nt=0}={}){const it=getDrawContext(),rt=it.canvas.width,st=it.canvas.height;let at=-o*e,lt=o*(1-e);et&&(console.warn("timeframe is deprecated! use from/to instead"),at=0,lt=et),!_e&&tt&&console.warn("disabling autorange has no effect when fold is enabled");const dt=nt?st:rt,ct=nt?rt:st;let ut=nt?[dt,0]:[0,dt];const ot=lt-at,ht=nt?[0,ct]:[ct,0];let pt=j-$+1,Et=ct/pt,gt=[];a&&ut.reverse(),c&&ht.reverse();const ft=scale(-at/ot,...ut);return this.draw((mt,yt,At)=>{mt.fillStyle=k,mt.clearRect(0,0,rt,st),mt.fillRect(0,0,rt,st);const vt=St=>(!d||St.whole.begin>=0)&&St.whole.begin<=At+lt&&St.whole.end>=At+at;yt.filter(vt).forEach(St=>{var Bt,Pt,Nt;const Tt=St.whole.begin<=At&&St.whole.end>At;mt.fillStyle=((Bt=St.context)==null?void 0:Bt.color)||_,mt.strokeStyle=((Pt=St.context)==null?void 0:Pt.color)||b,mt.globalAlpha=(Nt=St.context.velocity)!=null?Nt:1,mt.beginPath(),nt?(mt.moveTo(0,ft),mt.lineTo(ct,ft)):(mt.moveTo(ft,0),mt.lineTo(ft,ct)),mt.stroke();const Dt=scale((St.whole.begin-(a?lt:at))/ot,...ut);let xt=scale(St.duration/ot,0,dt);const Ct=scale(tt?gt.indexOf(St.value)/gt.length:(Number(St.value)-$)/pt,...ht);let bt=0;const $t=scale(At/ot,...ut);let It;nt?It=[Ct+1-(c?Et:0),dt-$t+Dt+bt+1-(a?0:xt),Et-2,xt-2]:It=[Dt-$t+bt+1-(a?xt:0),Ct+1-(c?0:Et),xt-2,Et-2],Tt?mt.strokeRect(...It):mt.fillRect(...It)})},{from:at-s,to:lt+s,onQuery:mt=>{const yt=Tt=>Number(Tt.value),{min:At,max:vt,values:St}=mt.reduce(({min:Tt,max:Dt,values:xt},Ct)=>{const bt=yt(Ct);return{min:btDt?bt:Dt,values:xt.includes(bt)?xt:[...xt,bt]}},{min:1/0,max:-1/0,values:[]});_e&&($=At,j=vt,pt=j-$+1),gt=St.sort((Tt,Dt)=>Tt-Dt),Et=tt?ct/gt.length:ct/pt}}),this};const version$1="14.7.77",createExtendedExponentialRampToValueAutomationEvent$1=(o,e,s)=>({endTime:e,insertTime:s,type:"exponentialRampToValue",value:o}),createExtendedLinearRampToValueAutomationEvent$1=(o,e,s)=>({endTime:e,insertTime:s,type:"linearRampToValue",value:o}),createSetValueAutomationEvent$1=(o,e)=>({startTime:e,type:"setValue",value:o}),createSetValueCurveAutomationEvent$1=(o,e,s)=>({duration:s,startTime:e,type:"setValueCurve",values:o}),getTargetValueAtTime$1=(o,e,{startTime:s,target:a,timeConstant:c})=>a+(e-a)*Math.exp((s-o)/c),isExponentialRampToValueAutomationEvent$1=o=>o.type==="exponentialRampToValue",isLinearRampToValueAutomationEvent$1=o=>o.type==="linearRampToValue",isAnyRampToValueAutomationEvent$1=o=>isExponentialRampToValueAutomationEvent$1(o)||isLinearRampToValueAutomationEvent$1(o),isSetValueAutomationEvent$1=o=>o.type==="setValue",isSetValueCurveAutomationEvent$1=o=>o.type==="setValueCurve",getValueOfAutomationEventAtIndexAtTime$1=(o,e,s,a)=>{const c=o[e];return c===void 0?a:isAnyRampToValueAutomationEvent$1(c)||isSetValueAutomationEvent$1(c)?c.value:isSetValueCurveAutomationEvent$1(c)?c.values[c.values.length-1]:getTargetValueAtTime$1(s,getValueOfAutomationEventAtIndexAtTime$1(o,e-1,c.startTime,a),c)},getEndTimeAndValueOfPreviousAutomationEvent$1=(o,e,s,a,c)=>s===void 0?[a.insertTime,c]:isAnyRampToValueAutomationEvent$1(s)?[s.endTime,s.value]:isSetValueAutomationEvent$1(s)?[s.startTime,s.value]:isSetValueCurveAutomationEvent$1(s)?[s.startTime+s.duration,s.values[s.values.length-1]]:[s.startTime,getValueOfAutomationEventAtIndexAtTime$1(o,e-1,s.startTime,c)],isCancelAndHoldAutomationEvent$1=o=>o.type==="cancelAndHold",isCancelScheduledValuesAutomationEvent$1=o=>o.type==="cancelScheduledValues",getEventTime$1=o=>isCancelAndHoldAutomationEvent$1(o)||isCancelScheduledValuesAutomationEvent$1(o)?o.cancelTime:isExponentialRampToValueAutomationEvent$1(o)||isLinearRampToValueAutomationEvent$1(o)?o.endTime:o.startTime,getExponentialRampValueAtTime$1=(o,e,s,{endTime:a,value:c})=>s===c?c:0s+(o-e)/(a-e)*(c-s),interpolateValue$1=(o,e)=>{const s=Math.floor(e),a=Math.ceil(e);return s===a?o[s]:(1-(e-s))*o[s]+(1-(a-e))*o[a]},getValueCurveValueAtTime$1=(o,{duration:e,startTime:s,values:a})=>{const c=(o-s)/e*(a.length-1);return interpolateValue$1(a,c)},isSetTargetAutomationEvent$1=o=>o.type==="setTarget";class AutomationEventList$1{constructor(e){this._automationEvents=[],this._currenTime=0,this._defaultValue=e}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(e){const s=getEventTime$1(e);if(isCancelAndHoldAutomationEvent$1(e)||isCancelScheduledValuesAutomationEvent$1(e)){const a=this._automationEvents.findIndex(d=>isCancelScheduledValuesAutomationEvent$1(e)&&isSetValueCurveAutomationEvent$1(d)?d.startTime+d.duration>=s:getEventTime$1(d)>=s),c=this._automationEvents[a];if(a!==-1&&(this._automationEvents=this._automationEvents.slice(0,a)),isCancelAndHoldAutomationEvent$1(e)){const d=this._automationEvents[this._automationEvents.length-1];if(c!==void 0&&isAnyRampToValueAutomationEvent$1(c)){if(isSetTargetAutomationEvent$1(d))throw new Error("The internal list is malformed.");const _=isSetValueCurveAutomationEvent$1(d)?d.startTime+d.duration:getEventTime$1(d),b=isSetValueCurveAutomationEvent$1(d)?d.values[d.values.length-1]:d.value,k=isExponentialRampToValueAutomationEvent$1(c)?getExponentialRampValueAtTime$1(s,_,b,c):getLinearRampValueAtTime$1(s,_,b,c),$=isExponentialRampToValueAutomationEvent$1(c)?createExtendedExponentialRampToValueAutomationEvent$1(k,s,this._currenTime):createExtendedLinearRampToValueAutomationEvent$1(k,s,this._currenTime);this._automationEvents.push($)}d!==void 0&&isSetTargetAutomationEvent$1(d)&&this._automationEvents.push(createSetValueAutomationEvent$1(this.getValue(s),s)),d!==void 0&&isSetValueCurveAutomationEvent$1(d)&&d.startTime+d.duration>s&&(this._automationEvents[this._automationEvents.length-1]=createSetValueCurveAutomationEvent$1(new Float32Array([6,7]),d.startTime,s-d.startTime))}}else{const a=this._automationEvents.findIndex(_=>getEventTime$1(_)>s),c=a===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[a-1];if(c!==void 0&&isSetValueCurveAutomationEvent$1(c)&&getEventTime$1(c)+c.duration>s)return!1;const d=isExponentialRampToValueAutomationEvent$1(e)?createExtendedExponentialRampToValueAutomationEvent$1(e.value,e.endTime,this._currenTime):isLinearRampToValueAutomationEvent$1(e)?createExtendedLinearRampToValueAutomationEvent$1(e.value,s,this._currenTime):e;if(a===-1)this._automationEvents.push(d);else{if(isSetValueCurveAutomationEvent$1(e)&&s+e.duration>getEventTime$1(this._automationEvents[a]))return!1;this._automationEvents.splice(a,0,d)}}return!0}flush(e){const s=this._automationEvents.findIndex(a=>getEventTime$1(a)>e);if(s>1){const a=this._automationEvents.slice(s-1),c=a[0];isSetTargetAutomationEvent$1(c)&&a.unshift(createSetValueAutomationEvent$1(getValueOfAutomationEventAtIndexAtTime$1(this._automationEvents,s-2,c.startTime,this._defaultValue),c.startTime)),this._automationEvents=a}}getValue(e){if(this._automationEvents.length===0)return this._defaultValue;const s=this._automationEvents.findIndex(_=>getEventTime$1(_)>e),a=this._automationEvents[s],c=(s===-1?this._automationEvents.length:s)-1,d=this._automationEvents[c];if(d!==void 0&&isSetTargetAutomationEvent$1(d)&&(a===void 0||!isAnyRampToValueAutomationEvent$1(a)||a.insertTime>e))return getTargetValueAtTime$1(e,getValueOfAutomationEventAtIndexAtTime$1(this._automationEvents,c-1,d.startTime,this._defaultValue),d);if(d!==void 0&&isSetValueAutomationEvent$1(d)&&(a===void 0||!isAnyRampToValueAutomationEvent$1(a)))return d.value;if(d!==void 0&&isSetValueCurveAutomationEvent$1(d)&&(a===void 0||!isAnyRampToValueAutomationEvent$1(a)||d.startTime+d.duration>e))return e({cancelTime:o,type:"cancelAndHold"}),createCancelScheduledValuesAutomationEvent$1=o=>({cancelTime:o,type:"cancelScheduledValues"}),createExponentialRampToValueAutomationEvent$1=(o,e)=>({endTime:e,type:"exponentialRampToValue",value:o}),createLinearRampToValueAutomationEvent$1=(o,e)=>({endTime:e,type:"linearRampToValue",value:o}),createSetTargetAutomationEvent$1=(o,e,s)=>({startTime:e,target:o,timeConstant:s,type:"setTarget"}),createAbortError$1=()=>new DOMException("","AbortError"),createAddActiveInputConnectionToAudioNode$1=o=>(e,s,[a,c,d],_)=>{o(e[c],[s,a,d],b=>b[0]===s&&b[1]===a,_)},createAddAudioNodeConnections$1=o=>(e,s,a)=>{const c=[];for(let d=0;d(e,s)=>{o.set(e,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:s})},ACTIVE_AUDIO_NODE_STORE$1=new WeakSet,AUDIO_NODE_CONNECTIONS_STORE$1=new WeakMap,AUDIO_NODE_STORE$1=new WeakMap,AUDIO_PARAM_CONNECTIONS_STORE$1=new WeakMap,AUDIO_PARAM_STORE$1=new WeakMap,CONTEXT_STORE$1=new WeakMap,EVENT_LISTENERS$1=new WeakMap,CYCLE_COUNTERS$1=new WeakMap,NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1=new WeakMap,NODE_TO_PROCESSOR_MAPS$1=new WeakMap,handler$1={construct(){return handler$1}},isConstructible$1=o=>{try{const e=new Proxy(o,handler$1);new e}catch{return!1}return!0},IMPORT_STATEMENT_REGEX$1=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,splitImportStatements$1=(o,e)=>{const s=[];let a=o.replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX$1);for(;c!==null;){const d=c[1].slice(1,-1),_=c[0].replace(/([\s]+)?;?$/,"").replace(d,new URL(d,e).toString());s.push(_),a=a.slice(c[0].length).replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX$1)}return[s.join(";"),a]},verifyParameterDescriptors$1=o=>{if(o!==void 0&&!Array.isArray(o))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},verifyProcessorCtor$1=o=>{if(!isConstructible$1(o))throw new TypeError("The given value for processorCtor should be a constructor.");if(o.prototype===null||typeof o.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},createAddAudioWorkletModule$1=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{let tt=0;return(nt,it,rt={credentials:"omit"})=>{const st=j.get(nt);if(st!==void 0&&st.has(it))return Promise.resolve();const at=$.get(nt);if(at!==void 0){const ct=at.get(it);if(ct!==void 0)return ct}const lt=d(nt),dt=lt.audioWorklet===void 0?c(it).then(([ct,ut])=>{const[ot,ht]=splitImportStatements$1(ct,ut),pt=`${ot};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${ht} -})})(window,'_AWGS')`;return s(pt)}).then(()=>{const ct=et._AWGS.pop();if(ct===void 0)throw new SyntaxError;a(lt.currentTime,lt.sampleRate,()=>ct(class{},void 0,(ut,ot)=>{if(ut.trim()==="")throw e();const ht=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1.get(lt);if(ht!==void 0){if(ht.has(ut))throw e();verifyProcessorCtor$1(ot),verifyParameterDescriptors$1(ot.parameterDescriptors),ht.set(ut,ot)}else verifyProcessorCtor$1(ot),verifyParameterDescriptors$1(ot.parameterDescriptors),NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1.set(lt,new Map([[ut,ot]]))},lt.sampleRate,void 0,void 0))}):Promise.all([c(it),Promise.resolve(o(_e,_e))]).then(([[ct,ut],ot])=>{const ht=tt+1;tt=ht;const[pt,Et]=splitImportStatements$1(ct,ut),yt=`${pt};((AudioWorkletProcessor,registerProcessor)=>{${Et} -})(${ot?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${ot?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${ot?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${ht}',class extends AudioWorkletProcessor{process(){return !1}})`,At=new Blob([yt],{type:"application/javascript; charset=utf-8"}),vt=URL.createObjectURL(At);return lt.audioWorklet.addModule(vt,rt).then(()=>{if(b(lt))return lt;const St=_(lt);return St.audioWorklet.addModule(vt,rt).then(()=>St)}).then(St=>{if(k===null)throw new SyntaxError;try{new k(St,`__sac${ht}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(vt))});return at===void 0?$.set(nt,new Map([[it,dt]])):at.set(it,dt),dt.then(()=>{const ct=j.get(nt);ct===void 0?j.set(nt,new Set([it])):ct.add(it)}).finally(()=>{const ct=$.get(nt);ct!==void 0&&ct.delete(it)}),dt}},getValueForKey$1=(o,e)=>{const s=o.get(e);if(s===void 0)throw new Error("A value with the given key could not be found.");return s},pickElementFromSet$1=(o,e)=>{const s=Array.from(o).filter(e);if(s.length>1)throw Error("More than one element was found.");if(s.length===0)throw Error("No element was found.");const[a]=s;return o.delete(a),a},deletePassiveInputConnectionToAudioNode$1=(o,e,s,a)=>{const c=getValueForKey$1(o,e),d=pickElementFromSet$1(c,_=>_[0]===s&&_[1]===a);return c.size===0&&o.delete(e),d},getEventListenersOfAudioNode$1=o=>getValueForKey$1(EVENT_LISTENERS$1,o),setInternalStateToActive$1=o=>{if(ACTIVE_AUDIO_NODE_STORE$1.has(o))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE$1.add(o),getEventListenersOfAudioNode$1(o).forEach(e=>e(!0))},isAudioWorkletNode$1=o=>"port"in o,setInternalStateToPassive$1=o=>{if(!ACTIVE_AUDIO_NODE_STORE$1.has(o))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE$1.delete(o),getEventListenersOfAudioNode$1(o).forEach(e=>e(!1))},setInternalStateToPassiveWhenNecessary$1=(o,e)=>{!isAudioWorkletNode$1(o)&&e.every(s=>s.size===0)&&setInternalStateToPassive$1(o)},createAddConnectionToAudioNode$1=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{const tt=new WeakMap;return(nt,it,rt,st,at)=>{const{activeInputs:lt,passiveInputs:dt}=d(it),{outputs:ct}=d(nt),ut=b(nt),ot=ht=>{const pt=k(it),Et=k(nt);if(ht){const gt=deletePassiveInputConnectionToAudioNode$1(dt,nt,rt,st);o(lt,nt,gt,!1),!at&&!_e(nt)&&s(Et,pt,rt,st),et(it)&&setInternalStateToActive$1(it)}else{const gt=a(lt,nt,rt,st);e(dt,st,gt,!1),!at&&!_e(nt)&&c(Et,pt,rt,st);const ft=_(it);if(ft===0)j(it)&&setInternalStateToPassiveWhenNecessary$1(it,lt);else{const mt=tt.get(it);mt!==void 0&&clearTimeout(mt),tt.set(it,setTimeout(()=>{j(it)&&setInternalStateToPassiveWhenNecessary$1(it,lt)},ft*1e3))}}};return $(ct,[it,rt,st],ht=>ht[0]===it&&ht[1]===rt&&ht[2]===st,!0)?(ut.add(ot),j(nt)?o(lt,nt,[rt,st,ot],!0):e(dt,st,[nt,rt,ot],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode$1=o=>(e,s,[a,c,d],_)=>{const b=e.get(a);b===void 0?e.set(a,new Set([[c,s,d]])):o(b,[c,s,d],k=>k[0]===c&&k[1]===s,_)},createAddSilentConnection$1=o=>(e,s)=>{const a=o(e,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});s.connect(a).connect(e.destination);const c=()=>{s.removeEventListener("ended",c),s.disconnect(a),a.disconnect()};s.addEventListener("ended",c)},createAddUnrenderedAudioWorkletNode$1=o=>(e,s)=>{o(e).add(s)},DEFAULT_OPTIONS$D={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor$1=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$D),k),_e=a($,j),et=d($)?e():null;super(b,!1,_e,et),this._nativeAnalyserNode=_e}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(b){this._nativeAnalyserNode.fftSize=b}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(b){const k=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=b,!(b>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=k,s()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(b){const k=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=b,!(this._nativeAnalyserNode.maxDecibels>b))throw this._nativeAnalyserNode.minDecibels=k,s()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(b){this._nativeAnalyserNode.smoothingTimeConstant=b}getByteFrequencyData(b){this._nativeAnalyserNode.getByteFrequencyData(b)}getByteTimeDomainData(b){this._nativeAnalyserNode.getByteTimeDomainData(b)}getFloatFrequencyData(b){this._nativeAnalyserNode.getFloatFrequencyData(b)}getFloatTimeDomainData(b){this._nativeAnalyserNode.getFloatTimeDomainData(b)}},isOwnedByContext$1=(o,e)=>o.context===e,createAnalyserNodeRendererFactory$1=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,fftSize:b.fftSize,maxDecibels:b.maxDecibels,minDecibels:b.minDecibels,smoothingTimeConstant:b.smoothingTimeConstant};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1=o=>{try{o.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError$1=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod$1=o=>{o.getChannelData=(e=>s=>{try{return e.call(o,s)}catch(a){throw a.code===12?createIndexSizeError$1():a}})(o.getChannelData)},DEFAULT_OPTIONS$C={numberOfChannels:1},createAudioBufferConstructor$1=(o,e,s,a,c,d,_,b)=>{let k=null;return class fr{constructor(j){if(c===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:_e,numberOfChannels:et,sampleRate:tt}=_t(_t({},DEFAULT_OPTIONS$C),j);k===null&&(k=new c(1,1,44100));const nt=a!==null&&e(d,d)?new a({length:_e,numberOfChannels:et,sampleRate:tt}):k.createBuffer(et,_e,tt);if(nt.numberOfChannels===0)throw s();return typeof nt.copyFromChannel!="function"?(_(nt),wrapAudioBufferGetChannelDataMethod$1(nt)):e(testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1(nt))||b(nt),o.add(nt),nt}static[Symbol.hasInstance](j){return j!==null&&typeof j=="object"&&Object.getPrototypeOf(j)===fr.prototype||o.has(j)}}},MOST_NEGATIVE_SINGLE_FLOAT$1=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT$1=-MOST_NEGATIVE_SINGLE_FLOAT$1,isActiveAudioNode$1=o=>ACTIVE_AUDIO_NODE_STORE$1.has(o),DEFAULT_OPTIONS$B={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor$1=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$B),j),tt=c(_e,et),nt=_(_e),it=nt?e():null;super($,!1,tt,it),this._audioBufferSourceNodeRenderer=it,this._isBufferNullified=!1,this._isBufferSet=et.buffer!==null,this._nativeAudioBufferSourceNode=tt,this._onended=null,this._playbackRate=s(this,nt,tt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer($){if(this._nativeAudioBufferSourceNode.buffer=$,$!==null){if(this._isBufferSet)throw a();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop($){this._nativeAudioBufferSourceNode.loop=$}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd($){this._nativeAudioBufferSourceNode.loopEnd=$}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart($){this._nativeAudioBufferSourceNode.loopStart=$}get onended(){return this._onended}set onended($){const j=typeof $=="function"?b(this,$):null;this._nativeAudioBufferSourceNode.onended=j;const _e=this._nativeAudioBufferSourceNode.onended;this._onended=_e!==null&&_e===j?$:_e}get playbackRate(){return this._playbackRate}start($=0,j=0,_e){if(this._nativeAudioBufferSourceNode.start($,j,_e),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=_e===void 0?[$,j]:[$,j,_e]),this.context.state!=="closed"){setInternalStateToActive$1(this);const et=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",et),isActiveAudioNode$1(this)&&setInternalStateToPassive$1(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",et)}}stop($=0){this._nativeAudioBufferSourceNode.stop($),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=$)}},createAudioBufferSourceNodeRendererFactory$1=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext$1(_e,j);if(!et){const tt={buffer:_e.buffer,channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,loop:_e.loop,loopEnd:_e.loopEnd,loopStart:_e.loopStart,playbackRate:_e.playbackRate.value};_e=e(j,tt),_!==null&&_e.start(..._),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.playbackRate,_e.playbackRate):await a(j,$.playbackRate,_e.playbackRate),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},isAudioBufferSourceNode$1=o=>"playbackRate"in o,isBiquadFilterNode$1=o=>"frequency"in o&&"gain"in o,isConstantSourceNode$1=o=>"offset"in o,isGainNode$1=o=>!("frequency"in o)&&"gain"in o,isOscillatorNode$1=o=>"detune"in o&&"frequency"in o,isStereoPannerNode$1=o=>"pan"in o,getAudioNodeConnections$1=o=>getValueForKey$1(AUDIO_NODE_CONNECTIONS_STORE$1,o),getAudioParamConnections$1=o=>getValueForKey$1(AUDIO_PARAM_CONNECTIONS_STORE$1,o),deactivateActiveAudioNodeInputConnections$1=(o,e)=>{const{activeInputs:s}=getAudioNodeConnections$1(o);s.forEach(c=>c.forEach(([d])=>{e.includes(o)||deactivateActiveAudioNodeInputConnections$1(d,[...e,o])}));const a=isAudioBufferSourceNode$1(o)?[o.playbackRate]:isAudioWorkletNode$1(o)?Array.from(o.parameters.values()):isBiquadFilterNode$1(o)?[o.Q,o.detune,o.frequency,o.gain]:isConstantSourceNode$1(o)?[o.offset]:isGainNode$1(o)?[o.gain]:isOscillatorNode$1(o)?[o.detune,o.frequency]:isStereoPannerNode$1(o)?[o.pan]:[];for(const c of a){const d=getAudioParamConnections$1(c);d!==void 0&&d.activeInputs.forEach(([_])=>deactivateActiveAudioNodeInputConnections$1(_,e))}isActiveAudioNode$1(o)&&setInternalStateToPassive$1(o)},deactivateAudioGraph$1=o=>{deactivateActiveAudioNodeInputConnections$1(o.destination,[])},isValidLatencyHint$1=o=>o===void 0||typeof o=="number"||typeof o=="string"&&(o==="balanced"||o==="interactive"||o==="playback"),createAudioContextConstructor$1=(o,e,s,a,c,d,_,b,k)=>class extends o{constructor(j={}){if(k===null)throw new Error("Missing the native AudioContext constructor.");let _e;try{_e=new k(j)}catch(nt){throw nt.code===12&&nt.message==="sampleRate is not in range"?s():nt}if(_e===null)throw a();if(!isValidLatencyHint$1(j.latencyHint))throw new TypeError(`The provided value '${j.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(j.sampleRate!==void 0&&_e.sampleRate!==j.sampleRate)throw s();super(_e,2);const{latencyHint:et}=j,{sampleRate:tt}=_e;if(this._baseLatency=typeof _e.baseLatency=="number"?_e.baseLatency:et==="balanced"?512/tt:et==="interactive"||et===void 0?256/tt:et==="playback"?1024/tt:Math.max(2,Math.min(128,Math.round(et*tt/128)))*128/tt,this._nativeAudioContext=_e,k.name==="webkitAudioContext"?(this._nativeGainNode=_e.createGain(),this._nativeOscillatorNode=_e.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(_e.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,_e.state==="running"){this._state="suspended";const nt=()=>{this._state==="suspended"&&(this._state=null),_e.removeEventListener("statechange",nt)};_e.addEventListener("statechange",nt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw e()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph$1(this)}))}createMediaElementSource(j){return new c(this,{mediaElement:j})}createMediaStreamDestination(){return new d(this)}createMediaStreamSource(j){return new _(this,{mediaStream:j})}createMediaStreamTrackSource(j){return new b(this,{mediaStreamTrack:j})}resume(){return this._state==="suspended"?new Promise((j,_e)=>{const et=()=>{this._nativeAudioContext.removeEventListener("statechange",et),this._nativeAudioContext.state==="running"?j():this.resume().then(j,_e)};this._nativeAudioContext.addEventListener("statechange",et)}):this._nativeAudioContext.resume().catch(j=>{throw j===void 0||j.code===15?e():j})}suspend(){return this._nativeAudioContext.suspend().catch(j=>{throw j===void 0?e():j})}},createAudioDestinationNodeConstructor$1=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_(_e),tt=c(_e,j,et),nt=et?e(b):null;super($,!1,tt,nt),this._isNodeOfNativeOfflineAudioContext=et,this._nativeAudioDestinationNode=tt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount($){if(this._isNodeOfNativeOfflineAudioContext)throw a();if($>this._nativeAudioDestinationNode.maxChannelCount)throw s();this._nativeAudioDestinationNode.channelCount=$}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode($){if(this._isNodeOfNativeOfflineAudioContext)throw a();this._nativeAudioDestinationNode.channelCountMode=$}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer$1=o=>{const e=new WeakMap,s=async(a,c)=>{const d=c.destination;return e.set(c,d),await o(a,c,d),d};return{render(a,c){const d=e.get(c);return d!==void 0?Promise.resolve(d):s(a,c)}}},createAudioListenerFactory$1=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=$.listener,_e=()=>{const ct=new Float32Array(1),ut=e($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),ot=_($);let ht=!1,pt=[0,0,-1,0,1,0],Et=[0,0,0];const gt=()=>{if(ht)return;ht=!0;const At=a($,256,9,0);At.onaudioprocess=({inputBuffer:vt})=>{const St=[d(vt,ct,0),d(vt,ct,1),d(vt,ct,2),d(vt,ct,3),d(vt,ct,4),d(vt,ct,5)];St.some((Dt,xt)=>Dt!==pt[xt])&&(j.setOrientation(...St),pt=St);const Tt=[d(vt,ct,6),d(vt,ct,7),d(vt,ct,8)];Tt.some((Dt,xt)=>Dt!==Et[xt])&&(j.setPosition(...Tt),Et=Tt)},ut.connect(At)},ft=At=>vt=>{vt!==pt[At]&&(pt[At]=vt,j.setOrientation(...pt))},mt=At=>vt=>{vt!==Et[At]&&(Et[At]=vt,j.setPosition(...Et))},yt=(At,vt,St)=>{const Tt=s($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:vt});Tt.connect(ut,0,At),Tt.start(),Object.defineProperty(Tt.offset,"defaultValue",{get(){return vt}});const Dt=o({context:k},ot,Tt.offset,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1);return b(Dt,"value",xt=>()=>xt.call(Dt),xt=>Ct=>{try{xt.call(Dt,Ct)}catch(bt){if(bt.code!==9)throw bt}gt(),ot&&St(Ct)}),Dt.cancelAndHoldAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelAndHoldAtTime),Dt.cancelScheduledValues=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelScheduledValues),Dt.exponentialRampToValueAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.exponentialRampToValueAtTime),Dt.linearRampToValueAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.linearRampToValueAtTime),Dt.setTargetAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setTargetAtTime),Dt.setValueAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueAtTime),Dt.setValueCurveAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueCurveAtTime),Dt};return{forwardX:yt(0,0,ft(0)),forwardY:yt(1,0,ft(1)),forwardZ:yt(2,-1,ft(2)),positionX:yt(6,0,mt(0)),positionY:yt(7,0,mt(1)),positionZ:yt(8,0,mt(2)),upX:yt(3,0,ft(3)),upY:yt(4,1,ft(4)),upZ:yt(5,0,ft(5))}},{forwardX:et,forwardY:tt,forwardZ:nt,positionX:it,positionY:rt,positionZ:st,upX:at,upY:lt,upZ:dt}=j.forwardX===void 0?_e():j;return{get forwardX(){return et},get forwardY(){return tt},get forwardZ(){return nt},get positionX(){return it},get positionY(){return rt},get positionZ(){return st},get upX(){return at},get upY(){return lt},get upZ(){return dt}}},isAudioNode$3=o=>"context"in o,isAudioNodeOutputConnection$1=o=>isAudioNode$3(o[0]),insertElementInSet$1=(o,e,s,a)=>{for(const c of o)if(s(c)){if(a)return!1;throw Error("The set contains at least one similar element.")}return o.add(e),!0},addActiveInputConnectionToAudioParam$1=(o,e,[s,a],c)=>{insertElementInSet$1(o,[e,s,a],d=>d[0]===e&&d[1]===s,c)},addPassiveInputConnectionToAudioParam$1=(o,[e,s,a],c)=>{const d=o.get(e);d===void 0?o.set(e,new Set([[s,a]])):insertElementInSet$1(d,[s,a],_=>_[0]===s,c)},isNativeAudioNodeFaker$1=o=>"inputs"in o,connectNativeAudioNodeToNativeAudioNode$1=(o,e,s,a)=>{if(isNativeAudioNodeFaker$1(e)){const c=e.inputs[a];return o.connect(c,s,0),[c,s,0]}return o.connect(e,s,a),[e,s,a]},deleteActiveInputConnection$1=(o,e,s)=>{for(const a of o)if(a[0]===e&&a[1]===s)return o.delete(a),a;return null},deleteActiveInputConnectionToAudioParam$1=(o,e,s)=>pickElementFromSet$1(o,a=>a[0]===e&&a[1]===s),deleteEventListenerOfAudioNode$1=(o,e)=>{if(!getEventListenersOfAudioNode$1(o).delete(e))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam$1=(o,e,s)=>{const a=getValueForKey$1(o,e),c=pickElementFromSet$1(a,d=>d[0]===s);return a.size===0&&o.delete(e),c},disconnectNativeAudioNodeFromNativeAudioNode$1=(o,e,s,a)=>{isNativeAudioNodeFaker$1(e)?o.disconnect(e.inputs[a],s,0):o.disconnect(e,s,a)},getNativeAudioNode$1=o=>getValueForKey$1(AUDIO_NODE_STORE$1,o),getNativeAudioParam$1=o=>getValueForKey$1(AUDIO_PARAM_STORE$1,o),isPartOfACycle$1=o=>CYCLE_COUNTERS$1.has(o),isPassiveAudioNode$1=o=>!ACTIVE_AUDIO_NODE_STORE$1.has(o),testAudioNodeDisconnectMethodSupport$1=(o,e)=>new Promise(s=>{if(e!==null)s(!0);else{const a=o.createScriptProcessor(256,1,1),c=o.createGain(),d=o.createBuffer(1,2,44100),_=d.getChannelData(0);_[0]=1,_[1]=1;const b=o.createBufferSource();b.buffer=d,b.loop=!0,b.connect(a).connect(o.destination),b.connect(c),b.disconnect(c),a.onaudioprocess=k=>{const $=k.inputBuffer.getChannelData(0);Array.prototype.some.call($,j=>j===1)?s(!0):s(!1),b.stop(),a.onaudioprocess=null,b.disconnect(a),a.disconnect(o.destination)},b.start()}}),visitEachAudioNodeOnce$1=(o,e)=>{const s=new Map;for(const a of o)for(const c of a){const d=s.get(c);s.set(c,d===void 0?1:d+1)}s.forEach((a,c)=>e(c,a))},isNativeAudioNode$3=o=>"context"in o,wrapAudioNodeDisconnectMethod$1=o=>{const e=new Map;o.connect=(s=>(a,c=0,d=0)=>{const _=isNativeAudioNode$3(a)?s(a,c,d):s(a,c),b=e.get(a);return b===void 0?e.set(a,[{input:d,output:c}]):b.every(k=>k.input!==d||k.output!==c)&&b.push({input:d,output:c}),_})(o.connect.bind(o)),o.disconnect=(s=>(a,c,d)=>{if(s.apply(o),a===void 0)e.clear();else if(typeof a=="number")for(const[_,b]of e){const k=b.filter($=>$.output!==a);k.length===0?e.delete(_):e.set(_,k)}else if(e.has(a))if(c===void 0)e.delete(a);else{const _=e.get(a);if(_!==void 0){const b=_.filter(k=>k.output!==c&&(k.input!==d||d===void 0));b.length===0?e.delete(a):e.set(a,b)}}for(const[_,b]of e)b.forEach(k=>{isNativeAudioNode$3(_)?o.connect(_,k.output,k.input):o.connect(_,k.output)})})(o.disconnect)},addConnectionToAudioParamOfAudioContext$1=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioParamConnections$1(e),{outputs:_}=getAudioNodeConnections$1(o),b=getEventListenersOfAudioNode$1(o),k=$=>{const j=getNativeAudioNode$1(o),_e=getNativeAudioParam$1(e);if($){const et=deletePassiveInputConnectionToAudioParam$1(d,o,s);addActiveInputConnectionToAudioParam$1(c,o,et,!1),!a&&!isPartOfACycle$1(o)&&j.connect(_e,s)}else{const et=deleteActiveInputConnectionToAudioParam$1(c,o,s);addPassiveInputConnectionToAudioParam$1(d,et,!1),!a&&!isPartOfACycle$1(o)&&j.disconnect(_e,s)}};return insertElementInSet$1(_,[e,s],$=>$[0]===e&&$[1]===s,!0)?(b.add(k),isActiveAudioNode$1(o)?addActiveInputConnectionToAudioParam$1(c,o,[s,k],!0):addPassiveInputConnectionToAudioParam$1(d,[o,s,k],!0),!0):!1},deleteInputConnectionOfAudioNode$1=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioNodeConnections$1(e),_=deleteActiveInputConnection$1(c[a],o,s);return _===null?[deletePassiveInputConnectionToAudioNode$1(d,o,s,a)[2],!1]:[_[2],!0]},deleteInputConnectionOfAudioParam$1=(o,e,s)=>{const{activeInputs:a,passiveInputs:c}=getAudioParamConnections$1(e),d=deleteActiveInputConnection$1(a,o,s);return d===null?[deletePassiveInputConnectionToAudioParam$1(c,o,s)[1],!1]:[d[2],!0]},deleteInputsOfAudioNode$1=(o,e,s,a,c)=>{const[d,_]=deleteInputConnectionOfAudioNode$1(o,s,a,c);if(d!==null&&(deleteEventListenerOfAudioNode$1(o,d),_&&!e&&!isPartOfACycle$1(o)&&disconnectNativeAudioNodeFromNativeAudioNode$1(getNativeAudioNode$1(o),getNativeAudioNode$1(s),a,c)),isActiveAudioNode$1(s)){const{activeInputs:b}=getAudioNodeConnections$1(s);setInternalStateToPassiveWhenNecessary$1(s,b)}},deleteInputsOfAudioParam$1=(o,e,s,a)=>{const[c,d]=deleteInputConnectionOfAudioParam$1(o,s,a);c!==null&&(deleteEventListenerOfAudioNode$1(o,c),d&&!e&&!isPartOfACycle$1(o)&&getNativeAudioNode$1(o).disconnect(getNativeAudioParam$1(s),a))},deleteAnyConnection$1=(o,e)=>{const s=getAudioNodeConnections$1(o),a=[];for(const c of s.outputs)isAudioNodeOutputConnection$1(c)?deleteInputsOfAudioNode$1(o,e,...c):deleteInputsOfAudioParam$1(o,e,...c),a.push(c[0]);return s.outputs.clear(),a},deleteConnectionAtOutput$1=(o,e,s)=>{const a=getAudioNodeConnections$1(o),c=[];for(const d of a.outputs)d[1]===s&&(isAudioNodeOutputConnection$1(d)?deleteInputsOfAudioNode$1(o,e,...d):deleteInputsOfAudioParam$1(o,e,...d),c.push(d[0]),a.outputs.delete(d));return c},deleteConnectionToDestination$1=(o,e,s,a,c)=>{const d=getAudioNodeConnections$1(o);return Array.from(d.outputs).filter(_=>_[0]===s&&(a===void 0||_[1]===a)&&(c===void 0||_[2]===c)).map(_=>(isAudioNodeOutputConnection$1(_)?deleteInputsOfAudioNode$1(o,e,..._):deleteInputsOfAudioParam$1(o,e,..._),d.outputs.delete(_),_[0]))},createAudioNodeConstructor$1=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt,nt,it)=>class extends ${constructor(st,at,lt,dt){super(lt),this._context=st,this._nativeAudioNode=lt;const ct=j(st);_e(ct)&&s(testAudioNodeDisconnectMethodSupport$1,()=>testAudioNodeDisconnectMethodSupport$1(ct,it))!==!0&&wrapAudioNodeDisconnectMethod$1(lt),AUDIO_NODE_STORE$1.set(this,lt),EVENT_LISTENERS$1.set(this,new Set),st.state!=="closed"&&at&&setInternalStateToActive$1(this),o(this,dt,lt)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(st){this._nativeAudioNode.channelCount=st}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(st){this._nativeAudioNode.channelCountMode=st}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(st){this._nativeAudioNode.channelInterpretation=st}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(st,at=0,lt=0){if(at<0||at>=this._nativeAudioNode.numberOfOutputs)throw c();const dt=j(this._context),ct=nt(dt);if(et(st)||tt(st))throw d();if(isAudioNode$3(st)){const ht=getNativeAudioNode$1(st);try{const Et=connectNativeAudioNodeToNativeAudioNode$1(this._nativeAudioNode,ht,at,lt),gt=isPassiveAudioNode$1(this);(ct||gt)&&this._nativeAudioNode.disconnect(...Et),this.context.state!=="closed"&&!gt&&isPassiveAudioNode$1(st)&&setInternalStateToActive$1(st)}catch(Et){throw Et.code===12?d():Et}if(e(this,st,at,lt,ct)){const Et=k([this],st);visitEachAudioNodeOnce$1(Et,a(ct))}return st}const ut=getNativeAudioParam$1(st);if(ut.name==="playbackRate"&&ut.maxValue===1024)throw _();try{this._nativeAudioNode.connect(ut,at),(ct||isPassiveAudioNode$1(this))&&this._nativeAudioNode.disconnect(ut,at)}catch(ht){throw ht.code===12?d():ht}if(addConnectionToAudioParamOfAudioContext$1(this,st,at,ct)){const ht=k([this],st);visitEachAudioNodeOnce$1(ht,a(ct))}}disconnect(st,at,lt){let dt;const ct=j(this._context),ut=nt(ct);if(st===void 0)dt=deleteAnyConnection$1(this,ut);else if(typeof st=="number"){if(st<0||st>=this.numberOfOutputs)throw c();dt=deleteConnectionAtOutput$1(this,ut,st)}else{if(at!==void 0&&(at<0||at>=this.numberOfOutputs)||isAudioNode$3(st)&<!==void 0&&(lt<0||lt>=st.numberOfInputs))throw c();if(dt=deleteConnectionToDestination$1(this,ut,st,at,lt),dt.length===0)throw d()}for(const ot of dt){const ht=k([this],ot);visitEachAudioNodeOnce$1(ht,b)}}},createAudioParamFactory$1=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt=null,st=null)=>{const at=new AutomationEventList$1(it.defaultValue),lt=nt?a(at):null,dt={get defaultValue(){return it.defaultValue},get maxValue(){return rt===null?it.maxValue:rt},get minValue(){return st===null?it.minValue:st},get value(){return it.value},set value(ct){it.value=ct,dt.setValueAtTime(ct,tt.context.currentTime)},cancelAndHoldAtTime(ct){if(typeof it.cancelAndHoldAtTime=="function")lt===null&&at.flush(tt.context.currentTime),at.add(c(ct)),it.cancelAndHoldAtTime(ct);else{const ut=Array.from(at).pop();lt===null&&at.flush(tt.context.currentTime),at.add(c(ct));const ot=Array.from(at).pop();it.cancelScheduledValues(ct),ut!==ot&&ot!==void 0&&(ot.type==="exponentialRampToValue"?it.exponentialRampToValueAtTime(ot.value,ot.endTime):ot.type==="linearRampToValue"?it.linearRampToValueAtTime(ot.value,ot.endTime):ot.type==="setValue"?it.setValueAtTime(ot.value,ot.startTime):ot.type==="setValueCurve"&&it.setValueCurveAtTime(ot.values,ot.startTime,ot.duration))}return dt},cancelScheduledValues(ct){return lt===null&&at.flush(tt.context.currentTime),at.add(d(ct)),it.cancelScheduledValues(ct),dt},exponentialRampToValueAtTime(ct,ut){if(ct===0)throw new RangeError;if(!Number.isFinite(ut)||ut<0)throw new RangeError;return lt===null&&at.flush(tt.context.currentTime),at.add(_(ct,ut)),it.exponentialRampToValueAtTime(ct,ut),dt},linearRampToValueAtTime(ct,ut){return lt===null&&at.flush(tt.context.currentTime),at.add(b(ct,ut)),it.linearRampToValueAtTime(ct,ut),dt},setTargetAtTime(ct,ut,ot){return lt===null&&at.flush(tt.context.currentTime),at.add(k(ct,ut,ot)),it.setTargetAtTime(ct,ut,ot),dt},setValueAtTime(ct,ut){return lt===null&&at.flush(tt.context.currentTime),at.add($(ct,ut)),it.setValueAtTime(ct,ut),dt},setValueCurveAtTime(ct,ut,ot){const ht=ct instanceof Float32Array?ct:new Float32Array(ct);if(_e!==null&&_e.name==="webkitAudioContext"){const pt=ut+ot,Et=tt.context.sampleRate,gt=Math.ceil(ut*Et),ft=Math.floor(pt*Et),mt=ft-gt,yt=new Float32Array(mt);for(let vt=0;vt({replay(e){for(const s of o)if(s.type==="exponentialRampToValue"){const{endTime:a,value:c}=s;e.exponentialRampToValueAtTime(c,a)}else if(s.type==="linearRampToValue"){const{endTime:a,value:c}=s;e.linearRampToValueAtTime(c,a)}else if(s.type==="setTarget"){const{startTime:a,target:c,timeConstant:d}=s;e.setTargetAtTime(c,a,d)}else if(s.type==="setValue"){const{startTime:a,value:c}=s;e.setValueAtTime(c,a)}else if(s.type==="setValueCurve"){const{duration:a,startTime:c,values:d}=s;e.setValueCurveAtTime(d,c,a)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap$1{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,s=null){return this._map.forEach((a,c)=>e.call(s,a,c,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$A={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor$1=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt)=>class extends e{constructor(it,rt,st){var at;const lt=b(it),dt=k(lt),ct=j(_t(_t({},DEFAULT_OPTIONS$A),st));et(ct);const ut=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS$1.get(lt),ot=ut==null?void 0:ut.get(rt),ht=dt||lt.state!=="closed"?lt:(at=_(lt))!==null&&at!==void 0?at:lt,pt=c(ht,dt?null:it.baseLatency,$,rt,ot,ct),Et=dt?a(rt,ct,ot):null;super(it,!0,pt,Et);const gt=[];pt.parameters.forEach((mt,yt)=>{const At=s(this,dt,mt);gt.push([yt,At])}),this._nativeAudioWorkletNode=pt,this._onprocessorerror=null,this._parameters=new ReadOnlyMap$1(gt),dt&&o(lt,this);const{activeInputs:ft}=d(this);_e(pt,ft)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(it){const rt=typeof it=="function"?tt(this,it):null;this._nativeAudioWorkletNode.onprocessorerror=rt;const st=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=st!==null&&st===rt?it:st}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel$1(o,e,s,a,c){if(typeof o.copyFromChannel=="function")e[s].byteLength===0&&(e[s]=new Float32Array(128)),o.copyFromChannel(e[s],a,c);else{const d=o.getChannelData(a);if(e[s].byteLength===0)e[s]=d.slice(c,c+128);else{const _=new Float32Array(d.buffer,c*Float32Array.BYTES_PER_ELEMENT,128);e[s].set(_)}}}const copyToChannel$1=(o,e,s,a,c)=>{typeof o.copyToChannel=="function"?e[s].byteLength!==0&&o.copyToChannel(e[s],a,c):e[s].byteLength!==0&&o.getChannelData(a).set(e[s],c)},createNestedArrays$1=(o,e)=>{const s=[];for(let a=0;a{const s=getValueForKey$1(NODE_TO_PROCESSOR_MAPS$1,o),a=getNativeAudioNode$1(e);return getValueForKey$1(s,a)},processBuffer$1=async(o,e,s,a,c,d,_)=>{const b=e===null?Math.ceil(o.context.length/128)*128:e.length,k=a.channelCount*a.numberOfInputs,$=c.reduce((rt,st)=>rt+st,0),j=$===0?null:s.createBuffer($,b,s.sampleRate);if(d===void 0)throw new Error("Missing the processor constructor.");const _e=getAudioNodeConnections$1(o),et=await getAudioWorkletProcessor$1(s,o),tt=createNestedArrays$1(a.numberOfInputs,a.channelCount),nt=createNestedArrays$1(a.numberOfOutputs,c),it=Array.from(o.parameters.keys()).reduce((rt,st)=>wt(_t({},rt),{[st]:new Float32Array(128)}),{});for(let rt=0;rt0&&e!==null)for(let st=0;st{copyFromChannel$1(e,it,st,k+at,rt)});for(let st=0;st_e.activeInputs[dt].size===0?[]:lt),at=_(rt/s.sampleRate,s.sampleRate,()=>et.process(st,nt,it));if(j!==null)for(let lt=0,dt=0;lt(rt,st,at)=>{const lt=new WeakMap;let dt=null;const ct=async(ut,ot)=>{let ht=j(ut),pt=null;const Et=isOwnedByContext$1(ht,ot),gt=Array.isArray(st.outputChannelCount)?st.outputChannelCount:Array.from(st.outputChannelCount);if(_e===null){const ft=gt.reduce((vt,St)=>vt+St,0),mt=c(ot,{channelCount:Math.max(1,ft),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ft)}),yt=[];for(let vt=0;vt{const Ct=new et(Dt,Math.ceil(ut.context.length/128)*128,ot.sampleRate),bt=[],$t=[];for(let Pt=0;Pt{const Nt=d(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Pt.value});return await tt(Ct,Pt,Nt.offset),Nt})),Bt=a(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,St+Tt)});for(let Pt=0;Ptnt(ut,Ct,Pt))),it(Ct)})(),ot,st,gt,at,$)}const ft=await dt,mt=s(ot,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[yt,At,vt]=pt;ft!==null&&(mt.buffer=ft,mt.start(0)),mt.connect(yt);for(let St=0,Tt=0;Stclass extends nt{constructor(ct,ut){super(ct,ut),this._nativeContext=ct,this._audioWorklet=o===void 0?void 0:{addModule:(ot,ht)=>o(this,ot,ht)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new e(this)}createBiquadFilter(){return new c(this)}createBuffer(ct,ut,ot){return new s({length:ut,numberOfChannels:ct,sampleRate:ot})}createBufferSource(){return new a(this)}createChannelMerger(ct=6){return new d(this,{numberOfInputs:ct})}createChannelSplitter(ct=6){return new _(this,{numberOfOutputs:ct})}createConstantSource(){return new b(this)}createConvolver(){return new k(this)}createDelay(ct=1){return new j(this,{maxDelayTime:ct})}createDynamicsCompressor(){return new _e(this)}createGain(){return new et(this)}createIIRFilter(ct,ut){return new tt(this,{feedback:ut,feedforward:ct})}createOscillator(){return new it(this)}createPanner(){return new rt(this)}createPeriodicWave(ct,ut,ot={disableNormalization:!1}){return new st(this,wt(_t({},ot),{imag:ut,real:ct}))}createStereoPanner(){return new at(this)}createWaveShaper(){return new lt(this)}decodeAudioData(ct,ut,ot){return $(this._nativeContext,ct).then(ht=>(typeof ut=="function"&&ut(ht),ht),ht=>{throw typeof ot=="function"&&ot(ht),ht})}},DEFAULT_OPTIONS$z={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor$1=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$z),j),tt=c(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._Q=e(this,nt,tt.Q,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._detune=e(this,nt,tt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT$1),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT$1)),this._frequency=e(this,nt,tt.frequency,$.sampleRate/2,0),this._gain=e(this,nt,tt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT$1),MOST_NEGATIVE_SINGLE_FLOAT$1),this._nativeBiquadFilterNode=tt,b(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type($){this._nativeBiquadFilterNode.type=$}getFrequencyResponse($,j,_e){try{this._nativeBiquadFilterNode.getFrequencyResponse($,j,_e)}catch(et){throw et.code===11?a():et}if($.length!==j.length||j.length!==_e.length)throw a()}},createBiquadFilterNodeRendererFactory$1=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={Q:$.Q.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,detune:$.detune.value,frequency:$.frequency.value,gain:$.gain.value,type:$.type};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.Q,$.Q),await o(k,b.detune,$.detune),await o(k,b.frequency,$.frequency),await o(k,b.gain,$.gain)):(await a(k,b.Q,$.Q),await a(k,b.detune,$.detune),await a(k,b.frequency,$.frequency),await a(k,b.gain,$.gain)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createCacheTestResult$1=(o,e)=>(s,a)=>{const c=e.get(s);if(c!==void 0)return c;const d=o.get(s);if(d!==void 0)return d;try{const _=a();return _ instanceof Promise?(o.set(s,_),_.catch(()=>!1).then(b=>(o.delete(s),e.set(s,b),b))):(e.set(s,_),_)}catch{return e.set(s,!1),!1}},DEFAULT_OPTIONS$y={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor$1=(o,e,s,a,c)=>class extends o{constructor(_,b){const k=a(_),$=_t(_t({},DEFAULT_OPTIONS$y),b),j=s(k,$),_e=c(k)?e():null;super(_,!1,j,_e)}},createChannelMergerNodeRendererFactory$1=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfInputs:b.numberOfInputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},DEFAULT_OPTIONS$x={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor$1=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=d(_t(_t({},DEFAULT_OPTIONS$x),k)),_e=s($,j),et=c($)?e():null;super(b,!1,_e,et)}},createChannelSplitterNodeRendererFactory$1=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfOutputs:b.numberOfOutputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createConnectAudioParam$1=o=>(e,s,a)=>o(s,e,a),createConnectMultipleOutputs$1=o=>(e,s,a=0,c=0)=>{const d=e[a];if(d===void 0)throw o();return isNativeAudioNode$3(s)?d.connect(s,0,c):d.connect(s,0)},createConnectedNativeAudioBufferSourceNodeFactory$1=o=>(e,s)=>{const a=o(e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),c=e.createBuffer(1,2,44100);return a.buffer=c,a.loop=!0,a.connect(s),a.start(),()=>{a.stop(),a.disconnect(s)}},DEFAULT_OPTIONS$w={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor$1=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$w),$),et=a(j,_e),tt=d(j),nt=tt?s():null;super(k,!1,et,nt),this._constantSourceNodeRenderer=nt,this._nativeConstantSourceNode=et,this._offset=e(this,tt,et.offset,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeConstantSourceNode.onended=$;const j=this._nativeConstantSourceNode.onended;this._onended=j!==null&&j===$?k:j}start(k=0){if(this._nativeConstantSourceNode.start(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive$1(this);const $=()=>{this._nativeConstantSourceNode.removeEventListener("ended",$),isActiveAudioNode$1(this)&&setInternalStateToPassive$1(this)};this._nativeConstantSourceNode.addEventListener("ended",$)}}stop(k=0){this._nativeConstantSourceNode.stop(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=k)}},createConstantSourceNodeRendererFactory$1=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext$1(_e,j);if(!et){const tt={channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,offset:_e.offset.value};_e=e(j,tt),_!==null&&_e.start(_),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.offset,_e.offset):await a(j,$.offset,_e.offset),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},createConvertNumberToUnsignedLong$1=o=>e=>(o[0]=e,o[0]),DEFAULT_OPTIONS$v={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor$1=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=_t(_t({},DEFAULT_OPTIONS$v),k),_e=s($,j),tt=c($)?e():null;super(b,!1,_e,tt),this._isBufferNullified=!1,this._nativeConvolverNode=_e,j.buffer!==null&&d(this,j.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(b){if(this._nativeConvolverNode.buffer=b,b===null&&this._nativeConvolverNode.buffer!==null){const k=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=k.createBuffer(1,1,44100),this._isBufferNullified=!0,d(this,0)}else this._isBufferNullified=!1,d(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(b){this._nativeConvolverNode.normalize=b}},createConvolverNodeRendererFactory$1=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={buffer:b.buffer,channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,disableNormalization:!b.normalize};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker$1(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createCreateNativeOfflineAudioContext$1=(o,e)=>(s,a,c)=>{if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new e(s,a,c)}catch(d){throw d.name==="SyntaxError"?o():d}},createDataCloneError$1=()=>new DOMException("","DataCloneError"),detachArrayBuffer$1=o=>{const{port1:e,port2:s}=new MessageChannel;return new Promise(a=>{const c=()=>{s.onmessage=null,e.close(),s.close(),a()};s.onmessage=()=>c();try{e.postMessage(o,[o])}finally{c()}})},createDecodeAudioData$1=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_(_e)?_e:d(_e);if(c.has(et)){const nt=s();return Promise.reject(nt)}try{c.add(et)}catch{}return e(k,()=>k(tt))?tt.decodeAudioData(et).then(nt=>(detachArrayBuffer$1(et).catch(()=>{}),e(b,()=>b(nt))||j(nt),o.add(nt),nt)):new Promise((nt,it)=>{const rt=async()=>{try{await detachArrayBuffer$1(et)}catch{}},st=at=>{it(at),rt()};try{tt.decodeAudioData(et,at=>{typeof at.copyFromChannel!="function"&&($(at),wrapAudioBufferGetChannelDataMethod$1(at)),o.add(at),rt().then(()=>nt(at))},at=>{st(at===null?a():at)})}catch(at){st(at)}})},createDecrementCycleCounter$1=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=e.get(k);if(j===void 0)throw new Error("Missing the expected cycle count.");const _e=d(k.context),et=b(_e);if(j===$){if(e.delete(k),!et&&_(k)){const tt=a(k),{outputs:nt}=s(k);for(const it of nt)if(isAudioNodeOutputConnection$1(it)){const rt=a(it[0]);o(tt,rt,it[1],it[2])}else{const rt=c(it[0]);tt.connect(rt,it[1])}}}else e.set(k,j-$)},DEFAULT_OPTIONS$u={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor$1=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$u),$),et=a(j,_e),tt=d(j),nt=tt?s(_e.maxDelayTime):null;super(k,!1,et,nt),this._delayTime=e(this,tt,et.delayTime),_(this,_e.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory$1=(o,e,s,a,c)=>d=>{const _=new WeakMap,b=async(k,$)=>{let j=s(k);const _e=isOwnedByContext$1(j,$);if(!_e){const et={channelCount:j.channelCount,channelCountMode:j.channelCountMode,channelInterpretation:j.channelInterpretation,delayTime:j.delayTime.value,maxDelayTime:d};j=e($,et)}return _.set($,j),_e?await o($,k.delayTime,j.delayTime):await a($,k.delayTime,j.delayTime),await c(k,$,j),j};return{render(k,$){const j=_.get($);return j!==void 0?Promise.resolve(j):b(k,$)}}},createDeleteActiveInputConnectionToAudioNode$1=o=>(e,s,a,c)=>o(e[c],d=>d[0]===s&&d[1]===a),createDeleteUnrenderedAudioWorkletNode$1=o=>(e,s)=>{o(e).delete(s)},isDelayNode$1=o=>"delayTime"in o,createDetectCycles$1=(o,e,s)=>function a(c,d){const _=isAudioNode$3(d)?d:s(o,d);if(isDelayNode$1(_))return[];if(c[0]===_)return[c];if(c.includes(_))return[];const{outputs:b}=e(_);return Array.from(b).map(k=>a([...c,_],k[0])).reduce((k,$)=>k.concat($),[])},getOutputAudioNodeAtIndex$1=(o,e,s)=>{const a=e[s];if(a===void 0)throw o();return a},createDisconnectMultipleOutputs$1=o=>(e,s=void 0,a=void 0,c=0)=>s===void 0?e.forEach(d=>d.disconnect()):typeof s=="number"?getOutputAudioNodeAtIndex$1(o,e,s).disconnect():isNativeAudioNode$3(s)?a===void 0?e.forEach(d=>d.disconnect(s)):c===void 0?getOutputAudioNodeAtIndex$1(o,e,a).disconnect(s,0):getOutputAudioNodeAtIndex$1(o,e,a).disconnect(s,0,c):a===void 0?e.forEach(d=>d.disconnect(s)):getOutputAudioNodeAtIndex$1(o,e,a).disconnect(s,0),DEFAULT_OPTIONS$t={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor$1=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$t),j),tt=a(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._attack=e(this,nt,tt.attack),this._knee=e(this,nt,tt.knee),this._nativeDynamicsCompressorNode=tt,this._ratio=e(this,nt,tt.ratio),this._release=e(this,nt,tt.release),this._threshold=e(this,nt,tt.threshold),b(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount($){const j=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=$,$>2)throw this._nativeDynamicsCompressorNode.channelCount=j,c()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode($){const j=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=$,$==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=j,c()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory$1=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={attack:$.attack.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,knee:$.knee.value,ratio:$.ratio.value,release:$.release.value,threshold:$.threshold.value};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.attack,$.attack),await o(k,b.knee,$.knee),await o(k,b.ratio,$.ratio),await o(k,b.release,$.release),await o(k,b.threshold,$.threshold)):(await a(k,b.attack,$.attack),await a(k,b.knee,$.knee),await a(k,b.ratio,$.ratio),await a(k,b.release,$.release),await a(k,b.threshold,$.threshold)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createEncodingError$1=()=>new DOMException("","EncodingError"),createEvaluateSource$1=o=>e=>new Promise((s,a)=>{if(o===null){a(new SyntaxError);return}const c=o.document.head;if(c===null)a(new SyntaxError);else{const d=o.document.createElement("script"),_=new Blob([e],{type:"application/javascript"}),b=URL.createObjectURL(_),k=o.onerror,$=()=>{o.onerror=k,URL.revokeObjectURL(b)};o.onerror=(j,_e,et,tt,nt)=>{if(_e===b||_e===o.location.href&&et===1&&tt===1)return $(),a(nt),!1;if(k!==null)return k(j,_e,et,tt,nt)},d.onerror=()=>{$(),a(new SyntaxError)},d.onload=()=>{$(),s()},d.src=b,d.type="module",c.appendChild(d)}}),createEventTargetConstructor$1=o=>class{constructor(s){this._nativeEventTarget=s,this._listeners=new WeakMap}addEventListener(s,a,c){if(a!==null){let d=this._listeners.get(a);d===void 0&&(d=o(this,a),typeof a=="function"&&this._listeners.set(a,d)),this._nativeEventTarget.addEventListener(s,d,c)}}dispatchEvent(s){return this._nativeEventTarget.dispatchEvent(s)}removeEventListener(s,a,c){const d=a===null?void 0:this._listeners.get(a);this._nativeEventTarget.removeEventListener(s,d===void 0?null:d,c)}},createExposeCurrentFrameAndCurrentTime$1=o=>(e,s,a)=>{Object.defineProperties(o,{currentFrame:{configurable:!0,get(){return Math.round(e*s)}},currentTime:{configurable:!0,get(){return e}}});try{return a()}finally{o!==null&&(delete o.currentFrame,delete o.currentTime)}},createFetchSource$1=o=>async e=>{try{const s=await fetch(e);if(s.ok)return[await s.text(),s.url]}catch{}throw o()},DEFAULT_OPTIONS$s={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor$1=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$s),k),_e=a($,j),et=d($),tt=et?s():null;super(b,!1,_e,tt),this._gain=e(this,et,_e.gain,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1)}get gain(){return this._gain}},createGainNodeRendererFactory$1=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,gain:$.gain.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.gain,$.gain):await a(k,b.gain,$.gain),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createGetActiveAudioWorkletNodeInputs$1=(o,e)=>s=>e(o,s),createGetAudioNodeRenderer$1=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return s.renderer},createGetAudioNodeTailTime$1=o=>e=>{var s;return(s=o.get(e))!==null&&s!==void 0?s:0},createGetAudioParamRenderer$1=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return s.renderer},createGetBackupOfflineAudioContext$1=o=>e=>o.get(e),createInvalidStateError$1=()=>new DOMException("","InvalidStateError"),createGetNativeContext$1=o=>e=>{const s=o.get(e);if(s===void 0)throw createInvalidStateError$1();return s},createGetOrCreateBackupOfflineAudioContext$1=(o,e)=>s=>{let a=o.get(s);if(a!==void 0)return a;if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");return a=new e(1,1,44100),o.set(s,a),a},createGetUnrenderedAudioWorkletNodes$1=o=>e=>{const s=o.get(e);if(s===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return s},createInvalidAccessError$1=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod$1=o=>{o.getFrequencyResponse=(e=>(s,a,c)=>{if(s.length!==a.length||a.length!==c.length)throw createInvalidAccessError$1();return e.call(o,s,a,c)})(o.getFrequencyResponse)},DEFAULT_OPTIONS$r={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor$1=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=c($),_e=_t(_t({},DEFAULT_OPTIONS$r),k),et=e($,j?null:b.baseLatency,_e),tt=j?s(_e.feedback,_e.feedforward):null;super(b,!1,et,tt),wrapIIRFilterNodeGetFrequencyResponseMethod$1(et),this._nativeIIRFilterNode=et,d(this,1)}getFrequencyResponse(b,k,$){return this._nativeIIRFilterNode.getFrequencyResponse(b,k,$)}},filterBuffer$1=(o,e,s,a,c,d,_,b,k,$,j)=>{const _e=$.length;let et=b;for(let tt=0;tt<_e;tt+=1){let nt=s[0]*$[tt];for(let it=1;it{const c=s instanceof Float64Array?s:new Float64Array(s),d=a instanceof Float64Array?a:new Float64Array(a),_=c.length,b=d.length,k=Math.min(_,b);if(c[0]!==1){for(let nt=0;nt<_;nt+=1)d[nt]/=c[0];for(let nt=1;nt(d,_)=>{const b=new WeakMap;let k=null;const $=async(j,_e)=>{let et=null,tt=e(j);const nt=isOwnedByContext$1(tt,_e);if(_e.createIIRFilter===void 0?et=o(_e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):nt||(tt=_e.createIIRFilter(_,d)),b.set(_e,et===null?tt:et),et!==null){if(k===null){if(s===null)throw new Error("Missing the native OfflineAudioContext constructor.");const rt=new s(j.context.destination.channelCount,j.context.length,_e.sampleRate);k=(async()=>{await a(j,rt,rt.destination);const st=await c(rt);return filterFullBuffer$1(st,_e,d,_)})()}const it=await k;return et.buffer=it,et.start(0),et}return await a(j,_e,tt),tt};return{render(j,_e){const et=b.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},createIncrementCycleCounterFactory$1=(o,e,s,a,c,d)=>_=>(b,k)=>{const $=o.get(b);if($===void 0){if(!_&&d(b)){const j=a(b),{outputs:_e}=s(b);for(const et of _e)if(isAudioNodeOutputConnection$1(et)){const tt=a(et[0]);e(j,tt,et[1],et[2])}else{const tt=c(et[0]);j.disconnect(tt,et[1])}}o.set(b,k)}else o.set(b,$+k)},createIsAnyAudioContext$1=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsAnyAudioNode$1=(o,e)=>s=>o.has(s)||e(s),createIsAnyAudioParam$1=(o,e)=>s=>o.has(s)||e(s),createIsAnyOfflineAudioContext$1=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsNativeAudioContext$1=o=>e=>o!==null&&e instanceof o,createIsNativeAudioNode$1=o=>e=>o!==null&&typeof o.AudioNode=="function"&&e instanceof o.AudioNode,createIsNativeAudioParam$1=o=>e=>o!==null&&typeof o.AudioParam=="function"&&e instanceof o.AudioParam,createIsNativeContext$1=(o,e)=>s=>o(s)||e(s),createIsNativeOfflineAudioContext$1=o=>e=>o!==null&&e instanceof o,createIsSecureContext$1=o=>o!==null&&o.isSecureContext,createIsSupportedPromise=async(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt,nt,it)=>o(e,e)&&o(s,s)&&o(c,c)&&o(d,d)&&o(b,b)&&o(k,k)&&o($,$)&&o(j,j)&&o(_e,_e)&&o(et,et)&&o(tt,tt)?(await Promise.all([o(a,a),o(_,_),o(nt,nt),o(it,it)])).every(st=>st):!1,createMediaElementAudioSourceNodeConstructor$1=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw TypeError();super(d,!0,k,null),this._nativeMediaElementAudioSourceNode=k}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$q={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor$1=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d);if(a(b))throw new TypeError;const k=_t(_t({},DEFAULT_OPTIONS$q),_),$=e(b,k);super(d,!1,$,null),this._nativeMediaStreamAudioDestinationNode=$}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor$1=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw new TypeError;super(d,!0,k,null),this._nativeMediaStreamAudioSourceNode=k}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor$1=(o,e,s)=>class extends o{constructor(c,d){const _=s(c),b=e(_,d);super(c,!0,b,null)}},createMinimalBaseAudioContextConstructor$1=(o,e,s,a,c,d)=>class extends s{constructor(b,k){super(b),this._nativeContext=b,CONTEXT_STORE$1.set(this,b),a(b)&&c.set(b,new Set),this._destination=new o(this,k),this._listener=e(this,b),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(b){const k=typeof b=="function"?d(this,b):null;this._nativeContext.onstatechange=k;const $=this._nativeContext.onstatechange;this._onstatechange=$!==null&&$===k?b:$}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport$1=o=>{const e=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const s=o.decodeAudioData(e.buffer,()=>{});return s===void 0?!1:(s.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections$1=(o,e)=>(s,a,c)=>{const d=new Set;return s.connect=(_=>(b,k=0,$=0)=>{const j=d.size===0;if(e(b))return _.call(s,b,k,$),o(d,[b,k,$],_e=>_e[0]===b&&_e[1]===k&&_e[2]===$,!0),j&&a(),b;_.call(s,b,k),o(d,[b,k],_e=>_e[0]===b&&_e[1]===k,!0),j&&a()})(s.connect),s.disconnect=(_=>(b,k,$)=>{const j=d.size>0;if(b===void 0)_.apply(s),d.clear();else if(typeof b=="number"){_.call(s,b);for(const et of d)et[1]===b&&d.delete(et)}else{e(b)?_.call(s,b,k,$):_.call(s,b,k);for(const et of d)et[0]===b&&(k===void 0||et[1]===k)&&($===void 0||et[2]===$)&&d.delete(et)}const _e=d.size===0;j&&_e&&c()})(s.disconnect),s},assignNativeAudioNodeOption$1=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s]&&(o[s]=a)},assignNativeAudioNodeOptions$1=(o,e)=>{assignNativeAudioNodeOption$1(o,e,"channelCount"),assignNativeAudioNodeOption$1(o,e,"channelCountMode"),assignNativeAudioNodeOption$1(o,e,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport$1=o=>typeof o.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod$1=o=>{o.getFloatTimeDomainData=e=>{const s=new Uint8Array(e.length);o.getByteTimeDomainData(s);const a=Math.max(s.length,o.fftSize);for(let c=0;c(s,a)=>{const c=s.createAnalyser();if(assignNativeAudioNodeOptions$1(c,a),!(a.maxDecibels>a.minDecibels))throw e();return assignNativeAudioNodeOption$1(c,a,"fftSize"),assignNativeAudioNodeOption$1(c,a,"maxDecibels"),assignNativeAudioNodeOption$1(c,a,"minDecibels"),assignNativeAudioNodeOption$1(c,a,"smoothingTimeConstant"),o(testAnalyserNodeGetFloatTimeDomainDataMethodSupport$1,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport$1(c))||wrapAnalyserNodeGetFloatTimeDomainDataMethod$1(c),c},createNativeAudioBufferConstructor$1=o=>o===null?null:o.hasOwnProperty("AudioBuffer")?o.AudioBuffer:null,assignNativeAudioNodeAudioParamValue$1=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s].value&&(o[s].value=a)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls$1=o=>{o.start=(e=>{let s=!1;return(a=0,c=0,d)=>{if(s)throw createInvalidStateError$1();e.call(o,a,c,d),s=!0}})(o.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1=o=>{o.start=(e=>(s=0,a=0,c)=>{if(typeof c=="number"&&c<0||a<0||s<0)throw new RangeError("The parameters can't be negative.");e.call(o,s,a,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1=o=>{o.stop=(e=>(s=0)=>{if(s<0)throw new RangeError("The parameter can't be negative.");e.call(o,s)})(o.stop)},createNativeAudioBufferSourceNodeFactory$1=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_e.createBufferSource();return assignNativeAudioNodeOptions$1(tt,et),assignNativeAudioNodeAudioParamValue$1(tt,et,"playbackRate"),assignNativeAudioNodeOption$1(tt,et,"buffer"),assignNativeAudioNodeOption$1(tt,et,"loop"),assignNativeAudioNodeOption$1(tt,et,"loopEnd"),assignNativeAudioNodeOption$1(tt,et,"loopStart"),e(s,()=>s(_e))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls$1(tt),e(a,()=>a(_e))||k(tt),e(c,()=>c(_e))||$(tt,_e),e(d,()=>d(_e))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1(tt),e(_,()=>_(_e))||j(tt,_e),e(b,()=>b(_e))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1(tt),o(_e,tt),tt},createNativeAudioContextConstructor$1=o=>o===null?null:o.hasOwnProperty("AudioContext")?o.AudioContext:o.hasOwnProperty("webkitAudioContext")?o.webkitAudioContext:null,createNativeAudioDestinationNodeFactory$1=(o,e)=>(s,a,c)=>{const d=s.destination;if(d.channelCount!==a)try{d.channelCount=a}catch{}c&&d.channelCountMode!=="explicit"&&(d.channelCountMode="explicit"),d.maxChannelCount===0&&Object.defineProperty(d,"maxChannelCount",{value:a});const _=o(s,{channelCount:a,channelCountMode:d.channelCountMode,channelInterpretation:d.channelInterpretation,gain:1});return e(_,"channelCount",b=>()=>b.call(_),b=>k=>{b.call(_,k);try{d.channelCount=k}catch($){if(k>d.maxChannelCount)throw $}}),e(_,"channelCountMode",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelCountMode=k}),e(_,"channelInterpretation",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelInterpretation=k}),Object.defineProperty(_,"maxChannelCount",{get:()=>d.maxChannelCount}),_.connect(d),_},createNativeAudioWorkletNodeConstructor$1=o=>o===null?null:o.hasOwnProperty("AudioWorkletNode")?o.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions$1=o=>{const{port1:e}=new MessageChannel;try{e.postMessage(o)}finally{e.close()}},createNativeAudioWorkletNodeFactory$1=(o,e,s,a,c)=>(d,_,b,k,$,j)=>{if(b!==null)try{const _e=new b(d,k,j),et=new Map;let tt=null;if(Object.defineProperties(_e,{channelCount:{get:()=>j.channelCount,set:()=>{throw o()}},channelCountMode:{get:()=>"explicit",set:()=>{throw o()}},onprocessorerror:{get:()=>tt,set:nt=>{typeof tt=="function"&&_e.removeEventListener("processorerror",tt),tt=typeof nt=="function"?nt:null,typeof tt=="function"&&_e.addEventListener("processorerror",tt)}}}),_e.addEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=typeof it[1]=="function"?it[1]:typeof it[1]=="object"&&it[1]!==null&&typeof it[1].handleEvent=="function"?it[1].handleEvent:null;if(rt!==null){const st=et.get(it[1]);st!==void 0?it[1]=st:(it[1]=at=>{at.type==="error"?(Object.defineProperties(at,{type:{value:"processorerror"}}),rt(at)):rt(new ErrorEvent(it[0],_t({},at)))},et.set(rt,it[1]))}}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,...it)})(_e.addEventListener),_e.removeEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=et.get(it[1]);rt!==void 0&&(et.delete(it[1]),it[1]=rt)}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,it[0],it[1],it[2])})(_e.removeEventListener),j.numberOfOutputs!==0){const nt=s(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return _e.connect(nt).connect(d.destination),c(_e,()=>nt.disconnect(),()=>nt.connect(d.destination))}return _e}catch(_e){throw _e.code===11?a():_e}if($===void 0)throw a();return testClonabilityOfAudioWorkletNodeOptions$1(j),e(d,_,$,j)},computeBufferSize$1=(o,e)=>o===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(o*e))))),cloneAudioWorkletNodeOptions$1=o=>new Promise((e,s)=>{const{port1:a,port2:c}=new MessageChannel;a.onmessage=({data:d})=>{a.close(),c.close(),e(d)},a.onmessageerror=({data:d})=>{a.close(),c.close(),s(d)},c.postMessage(o)}),createAudioWorkletProcessorPromise$1=async(o,e)=>{const s=await cloneAudioWorkletNodeOptions$1(e);return new o(s)},createAudioWorkletProcessor$1=(o,e,s,a)=>{let c=NODE_TO_PROCESSOR_MAPS$1.get(o);c===void 0&&(c=new WeakMap,NODE_TO_PROCESSOR_MAPS$1.set(o,c));const d=createAudioWorkletProcessorPromise$1(s,a);return c.set(e,d),d},createNativeAudioWorkletNodeFakerFactory$1=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt)=>{if(rt.numberOfInputs===0&&rt.numberOfOutputs===0)throw k();const st=Array.isArray(rt.outputChannelCount)?rt.outputChannelCount:Array.from(rt.outputChannelCount);if(st.some(Ot=>Ot<1))throw k();if(st.length!==rt.numberOfOutputs)throw e();if(rt.channelCountMode!=="explicit")throw k();const at=rt.channelCount*rt.numberOfInputs,lt=st.reduce((Ot,Ft)=>Ot+Ft,0),dt=it.parameterDescriptors===void 0?0:it.parameterDescriptors.length;if(at+dt>6||lt>6)throw k();const ct=new MessageChannel,ut=[],ot=[];for(let Ot=0;OtOt===void 0?0:Ot},maxValue:{get:()=>Ft===void 0?MOST_POSITIVE_SINGLE_FLOAT$1:Ft},minValue:{get:()=>Vt===void 0?MOST_NEGATIVE_SINGLE_FLOAT$1:Vt}}),ht.push(Rt)}const pt=a(tt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,at+dt)}),Et=computeBufferSize$1(nt,tt.sampleRate),gt=b(tt,Et,at+dt,Math.max(1,lt)),ft=c(tt,{channelCount:Math.max(1,lt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,lt)}),mt=[];for(let Ot=0;Ot{const Vt=ht[Ft];return Vt.connect(pt,0,at+Ft),Vt.start(0),[Ot,Vt.offset]}));pt.connect(gt);let At=rt.channelInterpretation,vt=null;const St=rt.numberOfOutputs===0?[gt]:mt,Tt={get bufferSize(){return Et},get channelCount(){return rt.channelCount},set channelCount(Ot){throw s()},get channelCountMode(){return rt.channelCountMode},set channelCountMode(Ot){throw s()},get channelInterpretation(){return At},set channelInterpretation(Ot){for(const Ft of ut)Ft.channelInterpretation=Ot;At=Ot},get context(){return gt.context},get inputs(){return ut},get numberOfInputs(){return rt.numberOfInputs},get numberOfOutputs(){return rt.numberOfOutputs},get onprocessorerror(){return vt},set onprocessorerror(Ot){typeof vt=="function"&&Tt.removeEventListener("processorerror",vt),vt=typeof Ot=="function"?Ot:null,typeof vt=="function"&&Tt.addEventListener("processorerror",vt)},get parameters(){return yt},get port(){return ct.port2},addEventListener(...Ot){return gt.addEventListener(Ot[0],Ot[1],Ot[2])},connect:o.bind(null,St),disconnect:$.bind(null,St),dispatchEvent(...Ot){return gt.dispatchEvent(Ot[0])},removeEventListener(...Ot){return gt.removeEventListener(Ot[0],Ot[1],Ot[2])}},Dt=new Map;ct.port1.addEventListener=(Ot=>(...Ft)=>{if(Ft[0]==="message"){const Vt=typeof Ft[1]=="function"?Ft[1]:typeof Ft[1]=="object"&&Ft[1]!==null&&typeof Ft[1].handleEvent=="function"?Ft[1].handleEvent:null;if(Vt!==null){const Lt=Dt.get(Ft[1]);Lt!==void 0?Ft[1]=Lt:(Ft[1]=Rt=>{j(tt.currentTime,tt.sampleRate,()=>Vt(Rt))},Dt.set(Vt,Ft[1]))}}return Ot.call(ct.port1,Ft[0],Ft[1],Ft[2])})(ct.port1.addEventListener),ct.port1.removeEventListener=(Ot=>(...Ft)=>{if(Ft[0]==="message"){const Vt=Dt.get(Ft[1]);Vt!==void 0&&(Dt.delete(Ft[1]),Ft[1]=Vt)}return Ot.call(ct.port1,Ft[0],Ft[1],Ft[2])})(ct.port1.removeEventListener);let xt=null;Object.defineProperty(ct.port1,"onmessage",{get:()=>xt,set:Ot=>{typeof xt=="function"&&ct.port1.removeEventListener("message",xt),xt=typeof Ot=="function"?Ot:null,typeof xt=="function"&&(ct.port1.addEventListener("message",xt),ct.port1.start())}}),it.prototype.port=ct.port1;let Ct=null;createAudioWorkletProcessor$1(tt,Tt,it,rt).then(Ot=>Ct=Ot);const $t=createNestedArrays$1(rt.numberOfInputs,rt.channelCount),It=createNestedArrays$1(rt.numberOfOutputs,st),Bt=it.parameterDescriptors===void 0?[]:it.parameterDescriptors.reduce((Ot,{name:Ft})=>wt(_t({},Ot),{[Ft]:new Float32Array(128)}),{});let Pt=!0;const Nt=()=>{rt.numberOfOutputs>0&>.disconnect(ft);for(let Ot=0,Ft=0;Ot{if(Ct!==null){const Vt=_e(Tt);for(let Lt=0;Lt{copyFromChannel$1(Ot,Bt,Rt,at+Wt,Lt)});for(let Rt=0;Rt{if(Vt[Gt].size>0)return qt.set(Gt,Et/128),jt;const Kt=qt.get(Gt);return Kt===void 0?[]:(jt.every(Jt=>Jt.every(sn=>sn===0))&&(Kt===1?qt.delete(Gt):qt.set(Gt,Kt-1)),jt)});Pt=j(tt.currentTime+Lt/tt.sampleRate,tt.sampleRate,()=>Ct.process(Rt,It,Bt));for(let jt=0,Gt=0;jtgt.connect(kt).connect(tt.destination),zt=()=>{gt.disconnect(kt),kt.disconnect()},Yt=()=>{if(Pt){zt(),rt.numberOfOutputs>0&>.connect(ft);for(let Ot=0,Ft=0;Ot{Pt&&(Ut(),Nt()),Qt=!1};return Ut(),et(Tt,Yt,Xt)},createNativeBiquadFilterNode$1=(o,e)=>{const s=o.createBiquadFilter();return assignNativeAudioNodeOptions$1(s,e),assignNativeAudioNodeAudioParamValue$1(s,e,"Q"),assignNativeAudioNodeAudioParamValue$1(s,e,"detune"),assignNativeAudioNodeAudioParamValue$1(s,e,"frequency"),assignNativeAudioNodeAudioParamValue$1(s,e,"gain"),assignNativeAudioNodeOption$1(s,e,"type"),s},createNativeChannelMergerNodeFactory$1=(o,e)=>(s,a)=>{const c=s.createChannelMerger(a.numberOfInputs);return o!==null&&o.name==="webkitAudioContext"&&e(s,c),assignNativeAudioNodeOptions$1(c,a),c},wrapChannelSplitterNode$1=o=>{const e=o.numberOfOutputs;Object.defineProperty(o,"channelCount",{get:()=>e,set:s=>{if(s!==e)throw createInvalidStateError$1()}}),Object.defineProperty(o,"channelCountMode",{get:()=>"explicit",set:s=>{if(s!=="explicit")throw createInvalidStateError$1()}}),Object.defineProperty(o,"channelInterpretation",{get:()=>"discrete",set:s=>{if(s!=="discrete")throw createInvalidStateError$1()}})},createNativeChannelSplitterNode$1=(o,e)=>{const s=o.createChannelSplitter(e.numberOfOutputs);return assignNativeAudioNodeOptions$1(s,e),wrapChannelSplitterNode$1(s),s},createNativeConstantSourceNodeFactory$1=(o,e,s,a,c)=>(d,_)=>{if(d.createConstantSource===void 0)return s(d,_);const b=d.createConstantSource();return assignNativeAudioNodeOptions$1(b,_),assignNativeAudioNodeAudioParamValue$1(b,_,"offset"),e(a,()=>a(d))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1(b),e(c,()=>c(d))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1(b),o(d,b),b},interceptConnections$1=(o,e)=>(o.connect=e.connect.bind(e),o.disconnect=e.disconnect.bind(e),o),createNativeConstantSourceNodeFakerFactory$1=(o,e,s,a)=>(c,b)=>{var k=b,{offset:d}=k,_=rn(k,["offset"]);const $=c.createBuffer(1,2,44100),j=e(c,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),_e=s(c,wt(_t({},_),{gain:d})),et=$.getChannelData(0);et[0]=1,et[1]=1,j.buffer=$,j.loop=!0;const tt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(rt){_e.channelCount=rt},get channelCountMode(){return _e.channelCountMode},set channelCountMode(rt){_e.channelCountMode=rt},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(rt){_e.channelInterpretation=rt},get context(){return _e.context},get inputs(){return[]},get numberOfInputs(){return j.numberOfInputs},get numberOfOutputs(){return _e.numberOfOutputs},get offset(){return _e.gain},get onended(){return j.onended},set onended(rt){j.onended=rt},addEventListener(...rt){return j.addEventListener(rt[0],rt[1],rt[2])},dispatchEvent(...rt){return j.dispatchEvent(rt[0])},removeEventListener(...rt){return j.removeEventListener(rt[0],rt[1],rt[2])},start(rt=0){j.start.call(j,rt)},stop(rt=0){j.stop.call(j,rt)}},nt=()=>j.connect(_e),it=()=>j.disconnect(_e);return o(c,j),a(interceptConnections$1(tt,_e),nt,it)},createNativeConvolverNodeFactory$1=(o,e)=>(s,a)=>{const c=s.createConvolver();if(assignNativeAudioNodeOptions$1(c,a),a.disableNormalization===c.normalize&&(c.normalize=!a.disableNormalization),assignNativeAudioNodeOption$1(c,a,"buffer"),a.channelCount>2||(e(c,"channelCount",d=>()=>d.call(c),d=>_=>{if(_>2)throw o();return d.call(c,_)}),a.channelCountMode==="max"))throw o();return e(c,"channelCountMode",d=>()=>d.call(c),d=>_=>{if(_==="max")throw o();return d.call(c,_)}),c},createNativeDelayNode$1=(o,e)=>{const s=o.createDelay(e.maxDelayTime);return assignNativeAudioNodeOptions$1(s,e),assignNativeAudioNodeAudioParamValue$1(s,e,"delayTime"),s},createNativeDynamicsCompressorNodeFactory$1=o=>(e,s)=>{const a=e.createDynamicsCompressor();if(assignNativeAudioNodeOptions$1(a,s),s.channelCount>2||s.channelCountMode==="max")throw o();return assignNativeAudioNodeAudioParamValue$1(a,s,"attack"),assignNativeAudioNodeAudioParamValue$1(a,s,"knee"),assignNativeAudioNodeAudioParamValue$1(a,s,"ratio"),assignNativeAudioNodeAudioParamValue$1(a,s,"release"),assignNativeAudioNodeAudioParamValue$1(a,s,"threshold"),a},createNativeGainNode$1=(o,e)=>{const s=o.createGain();return assignNativeAudioNodeOptions$1(s,e),assignNativeAudioNodeAudioParamValue$1(s,e,"gain"),s},createNativeIIRFilterNodeFactory$1=o=>(e,s,a)=>{if(e.createIIRFilter===void 0)return o(e,s,a);const c=e.createIIRFilter(a.feedforward,a.feedback);return assignNativeAudioNodeOptions$1(c,a),c};function divide$1(o,e){const s=e[0]*e[0]+e[1]*e[1];return[(o[0]*e[0]+o[1]*e[1])/s,(o[1]*e[0]-o[0]*e[1])/s]}function multiply$1(o,e){return[o[0]*e[0]-o[1]*e[1],o[0]*e[1]+o[1]*e[0]]}function evaluatePolynomial$1(o,e){let s=[0,0];for(let a=o.length-1;a>=0;a-=1)s=multiply$1(s,e),s[0]+=o[a];return s}const createNativeIIRFilterNodeFakerFactory$1=(o,e,s,a)=>(c,d,{channelCount:_,channelCountMode:b,channelInterpretation:k,feedback:$,feedforward:j})=>{const _e=computeBufferSize$1(d,c.sampleRate),et=$ instanceof Float64Array?$:new Float64Array($),tt=j instanceof Float64Array?j:new Float64Array(j),nt=et.length,it=tt.length,rt=Math.min(nt,it);if(nt===0||nt>20)throw a();if(et[0]===0)throw e();if(it===0||it>20)throw a();if(tt[0]===0)throw e();if(et[0]!==1){for(let ht=0;ht{const pt=ht.inputBuffer,Et=ht.outputBuffer,gt=pt.numberOfChannels;for(let ft=0;fto.createMediaElementSource(e.mediaElement),createNativeMediaStreamAudioDestinationNode$1=(o,e)=>{const s=o.createMediaStreamDestination();return assignNativeAudioNodeOptions$1(s,e),s.numberOfOutputs===1&&Object.defineProperty(s,"numberOfOutputs",{get:()=>0}),s},createNativeMediaStreamAudioSourceNode$1=(o,{mediaStream:e})=>{const s=e.getAudioTracks();s.sort((d,_)=>d.id<_.id?-1:d.id>_.id?1:0);const a=s.slice(0,1),c=o.createMediaStreamSource(new MediaStream(a));return Object.defineProperty(c,"mediaStream",{value:e}),c},createNativeMediaStreamTrackAudioSourceNodeFactory$1=(o,e)=>(s,{mediaStreamTrack:a})=>{if(typeof s.createMediaStreamTrackSource=="function")return s.createMediaStreamTrackSource(a);const c=new MediaStream([a]),d=s.createMediaStreamSource(c);if(a.kind!=="audio")throw o();if(e(s))throw new TypeError;return d},createNativeOfflineAudioContextConstructor$1=o=>o===null?null:o.hasOwnProperty("OfflineAudioContext")?o.OfflineAudioContext:o.hasOwnProperty("webkitOfflineAudioContext")?o.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory$1=(o,e,s,a,c,d)=>(_,b)=>{const k=_.createOscillator();return assignNativeAudioNodeOptions$1(k,b),assignNativeAudioNodeAudioParamValue$1(k,b,"detune"),assignNativeAudioNodeAudioParamValue$1(k,b,"frequency"),b.periodicWave!==void 0?k.setPeriodicWave(b.periodicWave):assignNativeAudioNodeOption$1(k,b,"type"),e(s,()=>s(_))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters$1(k),e(a,()=>a(_))||d(k,_),e(c,()=>c(_))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters$1(k),o(_,k),k},createNativePannerNodeFactory$1=o=>(e,s)=>{const a=e.createPanner();return a.orientationX===void 0?o(e,s):(assignNativeAudioNodeOptions$1(a,s),assignNativeAudioNodeAudioParamValue$1(a,s,"orientationX"),assignNativeAudioNodeAudioParamValue$1(a,s,"orientationY"),assignNativeAudioNodeAudioParamValue$1(a,s,"orientationZ"),assignNativeAudioNodeAudioParamValue$1(a,s,"positionX"),assignNativeAudioNodeAudioParamValue$1(a,s,"positionY"),assignNativeAudioNodeAudioParamValue$1(a,s,"positionZ"),assignNativeAudioNodeOption$1(a,s,"coneInnerAngle"),assignNativeAudioNodeOption$1(a,s,"coneOuterAngle"),assignNativeAudioNodeOption$1(a,s,"coneOuterGain"),assignNativeAudioNodeOption$1(a,s,"distanceModel"),assignNativeAudioNodeOption$1(a,s,"maxDistance"),assignNativeAudioNodeOption$1(a,s,"panningModel"),assignNativeAudioNodeOption$1(a,s,"refDistance"),assignNativeAudioNodeOption$1(a,s,"rolloffFactor"),a)},createNativePannerNodeFakerFactory$1=(o,e,s,a,c,d,_,b,k,$)=>(j,Et)=>{var gt=Et,{coneInnerAngle:_e,coneOuterAngle:et,coneOuterGain:tt,distanceModel:nt,maxDistance:it,orientationX:rt,orientationY:st,orientationZ:at,panningModel:lt,positionX:dt,positionY:ct,positionZ:ut,refDistance:ot,rolloffFactor:ht}=gt,pt=rn(gt,["coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","orientationX","orientationY","orientationZ","panningModel","positionX","positionY","positionZ","refDistance","rolloffFactor"]);const ft=j.createPanner();if(pt.channelCount>2||pt.channelCountMode==="max")throw _();assignNativeAudioNodeOptions$1(ft,pt);const mt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},yt=s(j,wt(_t({},mt),{channelInterpretation:"speakers",numberOfInputs:6})),At=a(j,wt(_t({},pt),{gain:1})),vt=a(j,wt(_t({},mt),{gain:1})),St=a(j,wt(_t({},mt),{gain:0})),Tt=a(j,wt(_t({},mt),{gain:0})),Dt=a(j,wt(_t({},mt),{gain:0})),xt=a(j,wt(_t({},mt),{gain:0})),Ct=a(j,wt(_t({},mt),{gain:0})),bt=c(j,256,6,1),$t=d(j,wt(_t({},mt),{curve:new Float32Array([1,1]),oversample:"none"}));let It=[rt,st,at],Bt=[dt,ct,ut];const Pt=new Float32Array(1);bt.onaudioprocess=({inputBuffer:kt})=>{const Ut=[k(kt,Pt,0),k(kt,Pt,1),k(kt,Pt,2)];Ut.some((Yt,Xt)=>Yt!==It[Xt])&&(ft.setOrientation(...Ut),It=Ut);const zt=[k(kt,Pt,3),k(kt,Pt,4),k(kt,Pt,5)];zt.some((Yt,Xt)=>Yt!==Bt[Xt])&&(ft.setPosition(...zt),Bt=zt)},Object.defineProperty(St.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Tt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Dt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(xt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ct.gain,"defaultValue",{get:()=>0});const Nt={get bufferSize(){},get channelCount(){return ft.channelCount},set channelCount(kt){if(kt>2)throw _();At.channelCount=kt,ft.channelCount=kt},get channelCountMode(){return ft.channelCountMode},set channelCountMode(kt){if(kt==="max")throw _();At.channelCountMode=kt,ft.channelCountMode=kt},get channelInterpretation(){return ft.channelInterpretation},set channelInterpretation(kt){At.channelInterpretation=kt,ft.channelInterpretation=kt},get coneInnerAngle(){return ft.coneInnerAngle},set coneInnerAngle(kt){ft.coneInnerAngle=kt},get coneOuterAngle(){return ft.coneOuterAngle},set coneOuterAngle(kt){ft.coneOuterAngle=kt},get coneOuterGain(){return ft.coneOuterGain},set coneOuterGain(kt){if(kt<0||kt>1)throw e();ft.coneOuterGain=kt},get context(){return ft.context},get distanceModel(){return ft.distanceModel},set distanceModel(kt){ft.distanceModel=kt},get inputs(){return[At]},get maxDistance(){return ft.maxDistance},set maxDistance(kt){if(kt<0)throw new RangeError;ft.maxDistance=kt},get numberOfInputs(){return ft.numberOfInputs},get numberOfOutputs(){return ft.numberOfOutputs},get orientationX(){return vt.gain},get orientationY(){return St.gain},get orientationZ(){return Tt.gain},get panningModel(){return ft.panningModel},set panningModel(kt){ft.panningModel=kt},get positionX(){return Dt.gain},get positionY(){return xt.gain},get positionZ(){return Ct.gain},get refDistance(){return ft.refDistance},set refDistance(kt){if(kt<0)throw new RangeError;ft.refDistance=kt},get rolloffFactor(){return ft.rolloffFactor},set rolloffFactor(kt){if(kt<0)throw new RangeError;ft.rolloffFactor=kt},addEventListener(...kt){return At.addEventListener(kt[0],kt[1],kt[2])},dispatchEvent(...kt){return At.dispatchEvent(kt[0])},removeEventListener(...kt){return At.removeEventListener(kt[0],kt[1],kt[2])}};_e!==Nt.coneInnerAngle&&(Nt.coneInnerAngle=_e),et!==Nt.coneOuterAngle&&(Nt.coneOuterAngle=et),tt!==Nt.coneOuterGain&&(Nt.coneOuterGain=tt),nt!==Nt.distanceModel&&(Nt.distanceModel=nt),it!==Nt.maxDistance&&(Nt.maxDistance=it),rt!==Nt.orientationX.value&&(Nt.orientationX.value=rt),st!==Nt.orientationY.value&&(Nt.orientationY.value=st),at!==Nt.orientationZ.value&&(Nt.orientationZ.value=at),lt!==Nt.panningModel&&(Nt.panningModel=lt),dt!==Nt.positionX.value&&(Nt.positionX.value=dt),ct!==Nt.positionY.value&&(Nt.positionY.value=ct),ut!==Nt.positionZ.value&&(Nt.positionZ.value=ut),ot!==Nt.refDistance&&(Nt.refDistance=ot),ht!==Nt.rolloffFactor&&(Nt.rolloffFactor=ht),(It[0]!==1||It[1]!==0||It[2]!==0)&&ft.setOrientation(...It),(Bt[0]!==0||Bt[1]!==0||Bt[2]!==0)&&ft.setPosition(...Bt);const qt=()=>{At.connect(ft),o(At,$t,0,0),$t.connect(vt).connect(yt,0,0),$t.connect(St).connect(yt,0,1),$t.connect(Tt).connect(yt,0,2),$t.connect(Dt).connect(yt,0,3),$t.connect(xt).connect(yt,0,4),$t.connect(Ct).connect(yt,0,5),yt.connect(bt).connect(j.destination)},Qt=()=>{At.disconnect(ft),b(At,$t,0,0),$t.disconnect(vt),vt.disconnect(yt),$t.disconnect(St),St.disconnect(yt),$t.disconnect(Tt),Tt.disconnect(yt),$t.disconnect(Dt),Dt.disconnect(yt),$t.disconnect(xt),xt.disconnect(yt),$t.disconnect(Ct),Ct.disconnect(yt),yt.disconnect(bt),bt.disconnect(j.destination)};return $(interceptConnections$1(Nt,ft),qt,Qt)},createNativePeriodicWaveFactory$1=o=>(e,{disableNormalization:s,imag:a,real:c})=>{const d=a instanceof Float32Array?a:new Float32Array(a),_=c instanceof Float32Array?c:new Float32Array(c),b=e.createPeriodicWave(_,d,{disableNormalization:s});if(Array.from(a).length<2)throw o();return b},createNativeScriptProcessorNode$1=(o,e,s,a)=>o.createScriptProcessor(e,s,a),createNativeStereoPannerNodeFactory$1=(o,e)=>(s,a)=>{const c=a.channelCountMode;if(c==="clamped-max")throw e();if(s.createStereoPanner===void 0)return o(s,a);const d=s.createStereoPanner();return assignNativeAudioNodeOptions$1(d,a),assignNativeAudioNodeAudioParamValue$1(d,a,"pan"),Object.defineProperty(d,"channelCountMode",{get:()=>c,set:_=>{if(_!==c)throw e()}}),d},createNativeStereoPannerNodeFakerFactory$1=(o,e,s,a,c,d)=>{const b=new Float32Array([1,1]),k=Math.PI/2,$={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},j=wt(_t({},$),{oversample:"none"}),_e=(nt,it,rt,st)=>{const at=new Float32Array(16385),lt=new Float32Array(16385);for(let pt=0;pt<16385;pt+=1){const Et=pt/16384*k;at[pt]=Math.cos(Et),lt[pt]=Math.sin(Et)}const dt=s(nt,wt(_t({},$),{gain:0})),ct=a(nt,wt(_t({},j),{curve:at})),ut=a(nt,wt(_t({},j),{curve:b})),ot=s(nt,wt(_t({},$),{gain:0})),ht=a(nt,wt(_t({},j),{curve:lt}));return{connectGraph(){it.connect(dt),it.connect(ut.inputs===void 0?ut:ut.inputs[0]),it.connect(ot),ut.connect(rt),rt.connect(ct.inputs===void 0?ct:ct.inputs[0]),rt.connect(ht.inputs===void 0?ht:ht.inputs[0]),ct.connect(dt.gain),ht.connect(ot.gain),dt.connect(st,0,0),ot.connect(st,0,1)},disconnectGraph(){it.disconnect(dt),it.disconnect(ut.inputs===void 0?ut:ut.inputs[0]),it.disconnect(ot),ut.disconnect(rt),rt.disconnect(ct.inputs===void 0?ct:ct.inputs[0]),rt.disconnect(ht.inputs===void 0?ht:ht.inputs[0]),ct.disconnect(dt.gain),ht.disconnect(ot.gain),dt.disconnect(st,0,0),ot.disconnect(st,0,1)}}},et=(nt,it,rt,st)=>{const at=new Float32Array(16385),lt=new Float32Array(16385),dt=new Float32Array(16385),ct=new Float32Array(16385),ut=Math.floor(16385/2);for(let St=0;St<16385;St+=1)if(St>ut){const Tt=(St-ut)/(16384-ut)*k;at[St]=Math.cos(Tt),lt[St]=Math.sin(Tt),dt[St]=0,ct[St]=1}else{const Tt=St/(16384-ut)*k;at[St]=1,lt[St]=0,dt[St]=Math.cos(Tt),ct[St]=Math.sin(Tt)}const ot=e(nt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),ht=s(nt,wt(_t({},$),{gain:0})),pt=a(nt,wt(_t({},j),{curve:at})),Et=s(nt,wt(_t({},$),{gain:0})),gt=a(nt,wt(_t({},j),{curve:lt})),ft=a(nt,wt(_t({},j),{curve:b})),mt=s(nt,wt(_t({},$),{gain:0})),yt=a(nt,wt(_t({},j),{curve:dt})),At=s(nt,wt(_t({},$),{gain:0})),vt=a(nt,wt(_t({},j),{curve:ct}));return{connectGraph(){it.connect(ot),it.connect(ft.inputs===void 0?ft:ft.inputs[0]),ot.connect(ht,0),ot.connect(Et,0),ot.connect(mt,1),ot.connect(At,1),ft.connect(rt),rt.connect(pt.inputs===void 0?pt:pt.inputs[0]),rt.connect(gt.inputs===void 0?gt:gt.inputs[0]),rt.connect(yt.inputs===void 0?yt:yt.inputs[0]),rt.connect(vt.inputs===void 0?vt:vt.inputs[0]),pt.connect(ht.gain),gt.connect(Et.gain),yt.connect(mt.gain),vt.connect(At.gain),ht.connect(st,0,0),mt.connect(st,0,0),Et.connect(st,0,1),At.connect(st,0,1)},disconnectGraph(){it.disconnect(ot),it.disconnect(ft.inputs===void 0?ft:ft.inputs[0]),ot.disconnect(ht,0),ot.disconnect(Et,0),ot.disconnect(mt,1),ot.disconnect(At,1),ft.disconnect(rt),rt.disconnect(pt.inputs===void 0?pt:pt.inputs[0]),rt.disconnect(gt.inputs===void 0?gt:gt.inputs[0]),rt.disconnect(yt.inputs===void 0?yt:yt.inputs[0]),rt.disconnect(vt.inputs===void 0?vt:vt.inputs[0]),pt.disconnect(ht.gain),gt.disconnect(Et.gain),yt.disconnect(mt.gain),vt.disconnect(At.gain),ht.disconnect(st,0,0),mt.disconnect(st,0,0),Et.disconnect(st,0,1),At.disconnect(st,0,1)}}},tt=(nt,it,rt,st,at)=>{if(it===1)return _e(nt,rt,st,at);if(it===2)return et(nt,rt,st,at);throw c()};return(nt,lt)=>{var dt=lt,{channelCount:it,channelCountMode:rt,pan:st}=dt,at=rn(dt,["channelCount","channelCountMode","pan"]);if(rt==="max")throw c();const ct=o(nt,wt(_t({},at),{channelCount:1,channelCountMode:rt,numberOfInputs:2})),ut=s(nt,wt(_t({},at),{channelCount:it,channelCountMode:rt,gain:1})),ot=s(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:st});let{connectGraph:ht,disconnectGraph:pt}=tt(nt,it,ut,ot,ct);Object.defineProperty(ot.gain,"defaultValue",{get:()=>0}),Object.defineProperty(ot.gain,"maxValue",{get:()=>1}),Object.defineProperty(ot.gain,"minValue",{get:()=>-1});const Et={get bufferSize(){},get channelCount(){return ut.channelCount},set channelCount(yt){ut.channelCount!==yt&&(gt&&pt(),{connectGraph:ht,disconnectGraph:pt}=tt(nt,yt,ut,ot,ct),gt&&ht()),ut.channelCount=yt},get channelCountMode(){return ut.channelCountMode},set channelCountMode(yt){if(yt==="clamped-max"||yt==="max")throw c();ut.channelCountMode=yt},get channelInterpretation(){return ut.channelInterpretation},set channelInterpretation(yt){ut.channelInterpretation=yt},get context(){return ut.context},get inputs(){return[ut]},get numberOfInputs(){return ut.numberOfInputs},get numberOfOutputs(){return ut.numberOfOutputs},get pan(){return ot.gain},addEventListener(...yt){return ut.addEventListener(yt[0],yt[1],yt[2])},dispatchEvent(...yt){return ut.dispatchEvent(yt[0])},removeEventListener(...yt){return ut.removeEventListener(yt[0],yt[1],yt[2])}};let gt=!1;const ft=()=>{ht(),gt=!0},mt=()=>{pt(),gt=!1};return d(interceptConnections$1(Et,ct),ft,mt)}},createNativeWaveShaperNodeFactory$1=(o,e,s,a,c,d,_)=>(b,k)=>{const $=b.createWaveShaper();if(d!==null&&d.name==="webkitAudioContext"&&b.createGain().gain.automationRate===void 0)return s(b,k);assignNativeAudioNodeOptions$1($,k);const j=k.curve===null||k.curve instanceof Float32Array?k.curve:new Float32Array(k.curve);if(j!==null&&j.length<2)throw e();assignNativeAudioNodeOption$1($,{curve:j},"curve"),assignNativeAudioNodeOption$1($,k,"oversample");let _e=null,et=!1;return _($,"curve",it=>()=>it.call($),it=>rt=>(it.call($,rt),et&&(a(rt)&&_e===null?_e=o(b,$):!a(rt)&&_e!==null&&(_e(),_e=null)),rt)),c($,()=>{et=!0,a($.curve)&&(_e=o(b,$))},()=>{et=!1,_e!==null&&(_e(),_e=null)})},createNativeWaveShaperNodeFakerFactory$1=(o,e,s,a,c)=>(d,$)=>{var j=$,{curve:_,oversample:b}=j,k=rn(j,["curve","oversample"]);const _e=d.createWaveShaper(),et=d.createWaveShaper();assignNativeAudioNodeOptions$1(_e,k),assignNativeAudioNodeOptions$1(et,k);const tt=s(d,wt(_t({},k),{gain:1})),nt=s(d,wt(_t({},k),{gain:-1})),it=s(d,wt(_t({},k),{gain:1})),rt=s(d,wt(_t({},k),{gain:-1}));let st=null,at=!1,lt=null;const dt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(ot){tt.channelCount=ot,nt.channelCount=ot,_e.channelCount=ot,it.channelCount=ot,et.channelCount=ot,rt.channelCount=ot},get channelCountMode(){return _e.channelCountMode},set channelCountMode(ot){tt.channelCountMode=ot,nt.channelCountMode=ot,_e.channelCountMode=ot,it.channelCountMode=ot,et.channelCountMode=ot,rt.channelCountMode=ot},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(ot){tt.channelInterpretation=ot,nt.channelInterpretation=ot,_e.channelInterpretation=ot,it.channelInterpretation=ot,et.channelInterpretation=ot,rt.channelInterpretation=ot},get context(){return _e.context},get curve(){return lt},set curve(ot){if(ot!==null&&ot.length<2)throw e();if(ot===null)_e.curve=ot,et.curve=ot;else{const ht=ot.length,pt=new Float32Array(ht+2-ht%2),Et=new Float32Array(ht+2-ht%2);pt[0]=ot[0],Et[0]=-ot[ht-1];const gt=Math.ceil((ht+1)/2),ft=(ht+1)/2-1;for(let mt=1;mt{tt.connect(_e).connect(it),tt.connect(nt).connect(et).connect(rt).connect(it),at=!0,a(lt)&&(st=o(d,tt))},ut=()=>{tt.disconnect(_e),_e.disconnect(it),tt.disconnect(nt),nt.disconnect(et),et.disconnect(rt),rt.disconnect(it),at=!1,st!==null&&(st(),st=null)};return c(interceptConnections$1(dt,it),ct,ut)},createNotSupportedError$1=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$p={numberOfChannels:1},createOfflineAudioContextConstructor$1=(o,e,s,a,c)=>class extends o{constructor(_,b,k){let $;if(typeof _=="number"&&b!==void 0&&k!==void 0)$={length:b,numberOfChannels:_,sampleRate:k};else if(typeof _=="object")$=_;else throw new Error("The given parameters are not valid.");const{length:j,numberOfChannels:_e,sampleRate:et}=_t(_t({},DEFAULT_OPTIONS$p),$),tt=a(_e,j,et);e(testPromiseSupport$1,()=>testPromiseSupport$1(tt))||tt.addEventListener("statechange",(()=>{let nt=0;const it=rt=>{this._state==="running"&&(nt>0?(tt.removeEventListener("statechange",it),rt.stopImmediatePropagation(),this._waitForThePromiseToSettle(rt)):nt+=1)};return it})()),super(tt,_e),this._length=j,this._nativeOfflineAudioContext=tt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(s()):(this._state="running",c(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph$1(this)}))}_waitForThePromiseToSettle(_){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(_):setTimeout(()=>this._waitForThePromiseToSettle(_))}},DEFAULT_OPTIONS$o={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor$1=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$o),$),et=s(j,_e),tt=d(j),nt=tt?a():null,it=k.sampleRate/2;super(k,!1,et,nt),this._detune=e(this,tt,et.detune,153600,-153600),this._frequency=e(this,tt,et.frequency,it,-it),this._nativeOscillatorNode=et,this._onended=null,this._oscillatorNodeRenderer=nt,this._oscillatorNodeRenderer!==null&&_e.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=_e.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeOscillatorNode.onended=$;const j=this._nativeOscillatorNode.onended;this._onended=j!==null&&j===$?k:j}get type(){return this._nativeOscillatorNode.type}set type(k){this._nativeOscillatorNode.type=k,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(k){this._nativeOscillatorNode.setPeriodicWave(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=k)}start(k=0){if(this._nativeOscillatorNode.start(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive$1(this);const $=()=>{this._nativeOscillatorNode.removeEventListener("ended",$),isActiveAudioNode$1(this)&&setInternalStateToPassive$1(this)};this._nativeOscillatorNode.addEventListener("ended",$)}}stop(k=0){this._nativeOscillatorNode.stop(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=k)}},createOscillatorNodeRendererFactory$1=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null,k=null;const $=async(j,_e)=>{let et=s(j);const tt=isOwnedByContext$1(et,_e);if(!tt){const nt={channelCount:et.channelCount,channelCountMode:et.channelCountMode,channelInterpretation:et.channelInterpretation,detune:et.detune.value,frequency:et.frequency.value,periodicWave:_===null?void 0:_,type:et.type};et=e(_e,nt),b!==null&&et.start(b),k!==null&&et.stop(k)}return d.set(_e,et),tt?(await o(_e,j.detune,et.detune),await o(_e,j.frequency,et.frequency)):(await a(_e,j.detune,et.detune),await a(_e,j.frequency,et.frequency)),await c(j,_e,et),et};return{set periodicWave(j){_=j},set start(j){b=j},set stop(j){k=j},render(j,_e){const et=d.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},DEFAULT_OPTIONS$n={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor$1=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$n),$),et=s(j,_e),tt=d(j),nt=tt?a():null;super(k,!1,et,nt),this._nativePannerNode=et,this._orientationX=e(this,tt,et.orientationX,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._orientationY=e(this,tt,et.orientationY,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._orientationZ=e(this,tt,et.orientationZ,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._positionX=e(this,tt,et.positionX,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._positionY=e(this,tt,et.positionY,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),this._positionZ=e(this,tt,et.positionZ,MOST_POSITIVE_SINGLE_FLOAT$1,MOST_NEGATIVE_SINGLE_FLOAT$1),_(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(k){this._nativePannerNode.coneInnerAngle=k}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(k){this._nativePannerNode.coneOuterAngle=k}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(k){this._nativePannerNode.coneOuterGain=k}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(k){this._nativePannerNode.distanceModel=k}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(k){this._nativePannerNode.maxDistance=k}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(k){this._nativePannerNode.panningModel=k}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(k){this._nativePannerNode.refDistance=k}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(k){this._nativePannerNode.rolloffFactor=k}},createPannerNodeRendererFactory$1=(o,e,s,a,c,d,_,b,k,$)=>()=>{const j=new WeakMap;let _e=null;const et=async(tt,nt)=>{let it=null,rt=d(tt);const st={channelCount:rt.channelCount,channelCountMode:rt.channelCountMode,channelInterpretation:rt.channelInterpretation},at=wt(_t({},st),{coneInnerAngle:rt.coneInnerAngle,coneOuterAngle:rt.coneOuterAngle,coneOuterGain:rt.coneOuterGain,distanceModel:rt.distanceModel,maxDistance:rt.maxDistance,panningModel:rt.panningModel,refDistance:rt.refDistance,rolloffFactor:rt.rolloffFactor}),lt=isOwnedByContext$1(rt,nt);if("bufferSize"in rt)it=a(nt,wt(_t({},st),{gain:1}));else if(!lt){const dt=wt(_t({},at),{orientationX:rt.orientationX.value,orientationY:rt.orientationY.value,orientationZ:rt.orientationZ.value,positionX:rt.positionX.value,positionY:rt.positionY.value,positionZ:rt.positionZ.value});rt=c(nt,dt)}if(j.set(nt,it===null?rt:it),it!==null){if(_e===null){if(_===null)throw new Error("Missing the native OfflineAudioContext constructor.");const gt=new _(6,tt.context.length,nt.sampleRate),ft=e(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});ft.connect(gt.destination),_e=(async()=>{const mt=await Promise.all([tt.orientationX,tt.orientationY,tt.orientationZ,tt.positionX,tt.positionY,tt.positionZ].map(async(yt,At)=>{const vt=s(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:At===0?1:0});return await b(gt,yt,vt.offset),vt}));for(let yt=0;yt<6;yt+=1)mt[yt].connect(ft,0,yt),mt[yt].start(0);return $(gt)})()}const dt=await _e,ct=a(nt,wt(_t({},st),{gain:1}));await k(tt,nt,ct);const ut=[];for(let gt=0;gtyt!==ot[At])||mt.some((yt,At)=>yt!==ht[At])){ot=ft,ht=mt;const yt=gt/nt.sampleRate;pt.gain.setValueAtTime(0,yt),pt=a(nt,wt(_t({},st),{gain:0})),Et=c(nt,wt(_t({},at),{orientationX:ot[0],orientationY:ot[1],orientationZ:ot[2],positionX:ht[0],positionY:ht[1],positionZ:ht[2]})),pt.gain.setValueAtTime(1,yt),ct.connect(pt).connect(Et.inputs[0]),Et.connect(it)}}return it}return lt?(await o(nt,tt.orientationX,rt.orientationX),await o(nt,tt.orientationY,rt.orientationY),await o(nt,tt.orientationZ,rt.orientationZ),await o(nt,tt.positionX,rt.positionX),await o(nt,tt.positionY,rt.positionY),await o(nt,tt.positionZ,rt.positionZ)):(await b(nt,tt.orientationX,rt.orientationX),await b(nt,tt.orientationY,rt.orientationY),await b(nt,tt.orientationZ,rt.orientationZ),await b(nt,tt.positionX,rt.positionX),await b(nt,tt.positionY,rt.positionY),await b(nt,tt.positionZ,rt.positionZ)),isNativeAudioNodeFaker$1(rt)?await k(tt,nt,rt.inputs[0]):await k(tt,nt,rt),rt};return{render(tt,nt){const it=j.get(nt);return it!==void 0?Promise.resolve(it):et(tt,nt)}}},DEFAULT_OPTIONS$m={disableNormalization:!1},createPeriodicWaveConstructor$1=(o,e,s,a)=>class mr{constructor(d,_){const b=e(d),k=a(_t(_t({},DEFAULT_OPTIONS$m),_)),$=o(b,k);return s.add($),$}static[Symbol.hasInstance](d){return d!==null&&typeof d=="object"&&Object.getPrototypeOf(d)===mr.prototype||s.has(d)}},createRenderAutomation$1=(o,e)=>(s,a,c)=>(o(a).replay(c),e(a,s,c)),createRenderInputsOfAudioNode$1=(o,e,s)=>async(a,c,d)=>{const _=o(a);await Promise.all(_.activeInputs.map((b,k)=>Array.from(b).map(async([$,j])=>{const et=await e($).render($,c),tt=a.context.destination;!s($)&&(a!==tt||!s(a))&&et.connect(d,j,k)})).reduce((b,k)=>[...b,...k],[]))},createRenderInputsOfAudioParam$1=(o,e,s)=>async(a,c,d)=>{const _=e(a);await Promise.all(Array.from(_.activeInputs).map(async([b,k])=>{const j=await o(b).render(b,c);s(b)||j.connect(d,k)}))},createRenderNativeOfflineAudioContext$1=(o,e,s,a)=>c=>o(testPromiseSupport$1,()=>testPromiseSupport$1(c))?Promise.resolve(o(a,a)).then(d=>{if(!d){const _=s(c,512,0,1);c.oncomplete=()=>{_.onaudioprocess=null,_.disconnect()},_.onaudioprocess=()=>c.currentTime,_.connect(c.destination)}return c.startRendering()}):new Promise(d=>{const _=e(c,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});c.oncomplete=b=>{_.disconnect(),d(b.renderedBuffer)},_.connect(c.destination),c.startRendering()}),createSetActiveAudioWorkletNodeInputs$1=o=>(e,s)=>{o.set(e,s)},createSetAudioNodeTailTime$1=o=>(e,s)=>o.set(e,s),createStartRendering$1=(o,e,s,a,c,d,_,b)=>(k,$)=>s(k).render(k,$).then(()=>Promise.all(Array.from(a($)).map(j=>s(j).render(j,$)))).then(()=>c($)).then(j=>(typeof j.copyFromChannel!="function"?(_(j),wrapAudioBufferGetChannelDataMethod$1(j)):e(d,()=>d(j))||b(j),o.add(j),j)),DEFAULT_OPTIONS$l={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor$1=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$l),k),_e=s($,j),et=d($),tt=et?a():null;super(b,!1,_e,tt),this._pan=e(this,et,_e.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory$1=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext$1($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,pan:$.pan.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.pan,$.pan):await a(k,b.pan,$.pan),isNativeAudioNodeFaker$1($)?await c(b,k,$.inputs[0]):await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createTestAudioBufferConstructorSupport$1=o=>()=>{if(o===null)return!1;try{new o({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioBufferCopyChannelMethodsSubarraySupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createBuffer(1,1,44100);if(s.copyToChannel===void 0)return!0;const a=new Float32Array(2);try{s.copyFromChannel(a,0,0)}catch{return!1}return!0},createTestAudioContextCloseMethodSupport=o=>()=>{if(o===null)return!1;if(o.prototype!==void 0&&o.prototype.close!==void 0)return!0;const e=new o,s=e.close!==void 0;try{e.close()}catch{}return s},createTestAudioContextDecodeAudioDataMethodTypeErrorSupport=o=>()=>{if(o===null)return Promise.resolve(!1);const e=new o(1,1,44100);return new Promise(s=>{let a=!0;const c=_=>{a&&(a=!1,e.startRendering(),s(_ instanceof TypeError))};let d;try{d=e.decodeAudioData(null,()=>{},c)}catch(_){c(_)}d!==void 0&&d.catch(c)})},createTestAudioContextOptionsSupport=o=>()=>{if(o===null)return!1;let e;try{e=new o({latencyHint:"balanced"})}catch{return!1}return e.close(),!0},createTestAudioNodeConnectMethodSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createGain(),a=s.connect(s)===s;return s.disconnect(s),a},createTestAudioWorkletProcessorNoOutputsSupport=(o,e)=>async()=>{if(o===null)return!0;if(e===null)return!1;const s=new Blob(['let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),a=new MessageChannel,c=new e(1,128,44100),d=URL.createObjectURL(s);let _=!1;try{await c.audioWorklet.addModule(d);const b=new o(c,"a",{numberOfOutputs:0}),k=c.createOscillator();await new Promise($=>{b.port.onmessage=()=>$(),b.port.postMessage(a.port2,[a.port2])}),b.port.onmessage=()=>_=!0,k.connect(b),k.start(0),await c.startRendering(),_=await new Promise($=>{a.port1.onmessage=({data:j})=>$(j===1),a.port1.postMessage(0)})}catch{}finally{a.port1.close(),URL.revokeObjectURL(d)}return _},createTestAudioWorkletProcessorPostMessageSupport$1=(o,e)=>async()=>{if(o===null)return!0;if(e===null)return!1;const s=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),a=new e(1,128,44100),c=URL.createObjectURL(s);let d=!1,_=!1;try{await a.audioWorklet.addModule(c);const b=new o(a,"a",{numberOfOutputs:0}),k=a.createOscillator();b.port.onmessage=()=>d=!0,b.onprocessorerror=()=>_=!0,k.connect(b),k.start(0),await a.startRendering()}catch{}finally{URL.revokeObjectURL(c)}return d&&!_},createTestChannelMergerNodeChannelCountSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createChannelMerger();if(s.channelCountMode==="max")return!0;try{s.channelCount=2}catch{return!0}return!1},createTestConstantSourceNodeAccurateSchedulingSupport=o=>()=>{if(o===null)return!1;const e=new o(1,1,44100);return e.createConstantSource===void 0?!0:e.createConstantSource().offset.maxValue!==Number.POSITIVE_INFINITY},createTestConvolverNodeBufferReassignabilitySupport=o=>()=>{if(o===null)return!1;const e=new o(1,1,44100),s=e.createConvolver();s.buffer=e.createBuffer(1,1,e.sampleRate);try{s.buffer=e.createBuffer(1,1,e.sampleRate)}catch{return!1}return!0},createTestConvolverNodeChannelCountSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createConvolver();try{s.channelCount=1}catch{return!1}return!0},createTestIsSecureContextSupport=o=>()=>o!==null&&o.hasOwnProperty("isSecureContext"),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport=o=>()=>{if(o===null)return!1;const e=new o;try{return e.createMediaStreamSource(new MediaStream),!1}catch{return!0}finally{e.close()}},createTestOfflineAudioContextCurrentTimeSupport$1=(o,e)=>()=>{if(e===null)return Promise.resolve(!1);const s=new e(1,1,44100),a=o(s,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(c=>{s.oncomplete=()=>{a.disconnect(),c(s.currentTime!==0)},s.startRendering()})},createTestStereoPannerNodeDefaultValueSupport=o=>()=>{if(o===null)return Promise.resolve(!1);const e=new o(1,1,44100);if(e.createStereoPanner===void 0||e.createConstantSource===void 0)return Promise.resolve(!0);const s=e.createConstantSource(),a=e.createStereoPanner();return s.channelCount=1,s.offset.value=1,a.channelCount=1,s.start(),s.connect(a).connect(e.destination),e.startRendering().then(c=>c.getChannelData(0)[0]!==1)},createUnknownError$1=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS$k={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor$1=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$k),$),et=s(j,_e),nt=d(j)?a():null;super(k,!0,et,nt),this._isCurveNullified=!1,this._nativeWaveShaperNode=et,_(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(k){if(k===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(k.length<2)throw e();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=k}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(k){this._nativeWaveShaperNode.oversample=k}},createWaveShaperNodeRendererFactory$1=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext$1(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,curve:b.curve,oversample:b.oversample};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker$1(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createWindow$1=()=>typeof window=="undefined"?null:window,createWrapAudioBufferCopyChannelMethods$1=(o,e)=>s=>{s.copyFromChannel=(a,c,d=0)=>{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_e=>{e.copyFromChannel=(s=>(a,c,d=0)=>{const _=o(d),b=o(c);if(_(a,c,d=0)=>{const _=o(d),b=o(c);if(_(e,s)=>{const a=s.createBuffer(1,1,44100);e.buffer===null&&(e.buffer=a),o(e,"buffer",c=>()=>{const d=c.call(e);return d===a?null:d},c=>d=>c.call(e,d===null?a:d))},createWrapChannelMergerNode$1=(o,e)=>(s,a)=>{a.channelCount=1,a.channelCountMode="explicit",Object.defineProperty(a,"channelCount",{get:()=>1,set:()=>{throw o()}}),Object.defineProperty(a,"channelCountMode",{get:()=>"explicit",set:()=>{throw o()}});const c=s.createBufferSource();e(a,()=>{const b=a.numberOfInputs;for(let k=0;kc.disconnect(a))},getFirstSample$1=(o,e,s)=>o.copyFromChannel===void 0?o.getChannelData(s)[0]:(o.copyFromChannel(e,s),e[0]),isDCCurve$1=o=>{if(o===null)return!1;const e=o.length;return e%2!==0?o[Math.floor(e/2)]!==0:o[e/2-1]+o[e/2]!==0},overwriteAccessors$1=(o,e,s,a)=>{let c=o;for(;!c.hasOwnProperty(e);)c=Object.getPrototypeOf(c);const{get:d,set:_}=Object.getOwnPropertyDescriptor(c,e);Object.defineProperty(o,e,{get:s(d),set:a(_)})},sanitizeAudioWorkletNodeOptions$1=o=>wt(_t({},o),{outputChannelCount:o.outputChannelCount!==void 0?o.outputChannelCount:o.numberOfInputs===1&&o.numberOfOutputs===1?[o.channelCount]:Array.from({length:o.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions$1=o=>wt(_t({},o),{channelCount:o.numberOfOutputs}),sanitizePeriodicWaveOptions$1=o=>{const{imag:e,real:s}=o;return e===void 0?s===void 0?wt(_t({},o),{imag:[0,0],real:[0,0]}):wt(_t({},o),{imag:Array.from(s,()=>0),real:s}):s===void 0?wt(_t({},o),{imag:e,real:Array.from(e,()=>0)}):wt(_t({},o),{imag:e,real:s})},setValueAtTimeUntilPossible$1=(o,e,s)=>{try{o.setValueAtTime(e,s)}catch(a){if(a.code!==9)throw a;setValueAtTimeUntilPossible$1(o,e,s+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport$1=o=>{const e=o.createBufferSource();e.start();try{e.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport$1=o=>{const e=o.createBufferSource(),s=o.createBuffer(1,1,44100);e.buffer=s;try{e.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport$1=o=>{const e=o.createBufferSource();e.start();try{e.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1=o=>{const e=o.createOscillator();try{e.start(-1)}catch(s){return s instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport$1=o=>{const e=o.createBuffer(1,1,44100),s=o.createBufferSource();s.buffer=e,s.start(),s.stop();try{return s.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1=o=>{const e=o.createOscillator();try{e.stop(-1)}catch(s){return s instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability$1=o=>{const{port1:e,port2:s}=new MessageChannel;try{e.postMessage(o)}finally{e.close(),s.close()}},testDomExceptionConstructorSupport=()=>{try{new DOMException}catch{return!1}return!0},testTransferablesSupport=()=>new Promise(o=>{const e=new ArrayBuffer(0),{port1:s,port2:a}=new MessageChannel;s.onmessage=({data:c})=>o(c!==null),a.postMessage(e,[e])}),wrapAudioBufferSourceNodeStartMethodOffsetClamping$1=o=>{o.start=(e=>(s=0,a=0,c)=>{const d=o.buffer,_=d===null?a:Math.min(d.duration,a);d!==null&&_>d.duration-.5/o.context.sampleRate?e.call(o,s,0,0):e.call(o,s,_,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls$1=(o,e)=>{const s=e.createGain();o.connect(s);const a=(c=>()=>{c.call(o,s),o.removeEventListener("ended",a)})(o.disconnect);o.addEventListener("ended",a),interceptConnections$1(o,s),o.stop=(c=>{let d=!1;return(_=0)=>{if(d)try{c.call(o,_)}catch{s.gain.setValueAtTime(0,_)}else c.call(o,_),d=!0}})(o.stop)},wrapEventListener$1=(o,e)=>s=>{const a={value:o};return Object.defineProperties(s,{currentTarget:a,target:a}),typeof e=="function"?e.call(o,s):e.handleEvent.call(o,s)},addActiveInputConnectionToAudioNode$1=createAddActiveInputConnectionToAudioNode$1(insertElementInSet$1),addPassiveInputConnectionToAudioNode$1=createAddPassiveInputConnectionToAudioNode$1(insertElementInSet$1),deleteActiveInputConnectionToAudioNode$1=createDeleteActiveInputConnectionToAudioNode$1(pickElementFromSet$1),audioNodeTailTimeStore$1=new WeakMap,getAudioNodeTailTime$1=createGetAudioNodeTailTime$1(audioNodeTailTimeStore$1),cacheTestResult$1=createCacheTestResult$1(new Map,new WeakMap),window$2=createWindow$1(),createNativeAnalyserNode$1=createNativeAnalyserNodeFactory$1(cacheTestResult$1,createIndexSizeError$1),getAudioNodeRenderer$1=createGetAudioNodeRenderer$1(getAudioNodeConnections$1),renderInputsOfAudioNode$1=createRenderInputsOfAudioNode$1(getAudioNodeConnections$1,getAudioNodeRenderer$1,isPartOfACycle$1),createAnalyserNodeRenderer$1=createAnalyserNodeRendererFactory$1(createNativeAnalyserNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),getNativeContext$1=createGetNativeContext$1(CONTEXT_STORE$1),nativeOfflineAudioContextConstructor$1=createNativeOfflineAudioContextConstructor$1(window$2),isNativeOfflineAudioContext$1=createIsNativeOfflineAudioContext$1(nativeOfflineAudioContextConstructor$1),audioParamAudioNodeStore$1=new WeakMap,eventTargetConstructor$1=createEventTargetConstructor$1(wrapEventListener$1),nativeAudioContextConstructor$1=createNativeAudioContextConstructor$1(window$2),isNativeAudioContext$1=createIsNativeAudioContext$1(nativeAudioContextConstructor$1),isNativeAudioNode$2=createIsNativeAudioNode$1(window$2),isNativeAudioParam$1=createIsNativeAudioParam$1(window$2),nativeAudioWorkletNodeConstructor$1=createNativeAudioWorkletNodeConstructor$1(window$2),audioNodeConstructor$1=createAudioNodeConstructor$1(createAddAudioNodeConnections$1(AUDIO_NODE_CONNECTIONS_STORE$1),createAddConnectionToAudioNode$1(addActiveInputConnectionToAudioNode$1,addPassiveInputConnectionToAudioNode$1,connectNativeAudioNodeToNativeAudioNode$1,deleteActiveInputConnectionToAudioNode$1,disconnectNativeAudioNodeFromNativeAudioNode$1,getAudioNodeConnections$1,getAudioNodeTailTime$1,getEventListenersOfAudioNode$1,getNativeAudioNode$1,insertElementInSet$1,isActiveAudioNode$1,isPartOfACycle$1,isPassiveAudioNode$1),cacheTestResult$1,createIncrementCycleCounterFactory$1(CYCLE_COUNTERS$1,disconnectNativeAudioNodeFromNativeAudioNode$1,getAudioNodeConnections$1,getNativeAudioNode$1,getNativeAudioParam$1,isActiveAudioNode$1),createIndexSizeError$1,createInvalidAccessError$1,createNotSupportedError$1,createDecrementCycleCounter$1(connectNativeAudioNodeToNativeAudioNode$1,CYCLE_COUNTERS$1,getAudioNodeConnections$1,getNativeAudioNode$1,getNativeAudioParam$1,getNativeContext$1,isActiveAudioNode$1,isNativeOfflineAudioContext$1),createDetectCycles$1(audioParamAudioNodeStore$1,getAudioNodeConnections$1,getValueForKey$1),eventTargetConstructor$1,getNativeContext$1,isNativeAudioContext$1,isNativeAudioNode$2,isNativeAudioParam$1,isNativeOfflineAudioContext$1,nativeAudioWorkletNodeConstructor$1),analyserNodeConstructor$1=createAnalyserNodeConstructor$1(audioNodeConstructor$1,createAnalyserNodeRenderer$1,createIndexSizeError$1,createNativeAnalyserNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),audioBufferStore$1=new WeakSet,nativeAudioBufferConstructor$1=createNativeAudioBufferConstructor$1(window$2),convertNumberToUnsignedLong$1=createConvertNumberToUnsignedLong$1(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods$1=createWrapAudioBufferCopyChannelMethods$1(convertNumberToUnsignedLong$1,createIndexSizeError$1),wrapAudioBufferCopyChannelMethodsOutOfBounds$1=createWrapAudioBufferCopyChannelMethodsOutOfBounds$1(convertNumberToUnsignedLong$1),audioBufferConstructor$1=createAudioBufferConstructor$1(audioBufferStore$1,cacheTestResult$1,createNotSupportedError$1,nativeAudioBufferConstructor$1,nativeOfflineAudioContextConstructor$1,createTestAudioBufferConstructorSupport$1(nativeAudioBufferConstructor$1),wrapAudioBufferCopyChannelMethods$1,wrapAudioBufferCopyChannelMethodsOutOfBounds$1),addSilentConnection$1=createAddSilentConnection$1(createNativeGainNode$1),renderInputsOfAudioParam$1=createRenderInputsOfAudioParam$1(getAudioNodeRenderer$1,getAudioParamConnections$1,isPartOfACycle$1),connectAudioParam$1=createConnectAudioParam$1(renderInputsOfAudioParam$1),createNativeAudioBufferSourceNode$1=createNativeAudioBufferSourceNodeFactory$1(addSilentConnection$1,cacheTestResult$1,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport$1,testAudioBufferSourceNodeStartMethodOffsetClampingSupport$1,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport$1,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport$1,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1,wrapAudioBufferSourceNodeStartMethodOffsetClamping$1,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer$1(overwriteAccessors$1),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls$1),renderAutomation$1=createRenderAutomation$1(createGetAudioParamRenderer$1(getAudioParamConnections$1),renderInputsOfAudioParam$1),createAudioBufferSourceNodeRenderer$1=createAudioBufferSourceNodeRendererFactory$1(connectAudioParam$1,createNativeAudioBufferSourceNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),createAudioParam$1=createAudioParamFactory$1(createAddAudioParamConnections$1(AUDIO_PARAM_CONNECTIONS_STORE$1),audioParamAudioNodeStore$1,AUDIO_PARAM_STORE$1,createAudioParamRenderer$1,createCancelAndHoldAutomationEvent$1,createCancelScheduledValuesAutomationEvent$1,createExponentialRampToValueAutomationEvent$1,createLinearRampToValueAutomationEvent$1,createSetTargetAutomationEvent$1,createSetValueAutomationEvent$1,createSetValueCurveAutomationEvent$1,nativeAudioContextConstructor$1,setValueAtTimeUntilPossible$1),audioBufferSourceNodeConstructor$1=createAudioBufferSourceNodeConstructor$1(audioNodeConstructor$1,createAudioBufferSourceNodeRenderer$1,createAudioParam$1,createInvalidStateError$1,createNativeAudioBufferSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,wrapEventListener$1),audioDestinationNodeConstructor$1=createAudioDestinationNodeConstructor$1(audioNodeConstructor$1,createAudioDestinationNodeRenderer$1,createIndexSizeError$1,createInvalidStateError$1,createNativeAudioDestinationNodeFactory$1(createNativeGainNode$1,overwriteAccessors$1),getNativeContext$1,isNativeOfflineAudioContext$1,renderInputsOfAudioNode$1),createBiquadFilterNodeRenderer$1=createBiquadFilterNodeRendererFactory$1(connectAudioParam$1,createNativeBiquadFilterNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),setAudioNodeTailTime$1=createSetAudioNodeTailTime$1(audioNodeTailTimeStore$1),biquadFilterNodeConstructor$1=createBiquadFilterNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createBiquadFilterNodeRenderer$1,createInvalidAccessError$1,createNativeBiquadFilterNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),monitorConnections$1=createMonitorConnections$1(insertElementInSet$1,isNativeAudioNode$2),wrapChannelMergerNode$1=createWrapChannelMergerNode$1(createInvalidStateError$1,monitorConnections$1),createNativeChannelMergerNode$1=createNativeChannelMergerNodeFactory$1(nativeAudioContextConstructor$1,wrapChannelMergerNode$1),createChannelMergerNodeRenderer$1=createChannelMergerNodeRendererFactory$1(createNativeChannelMergerNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),channelMergerNodeConstructor$1=createChannelMergerNodeConstructor$1(audioNodeConstructor$1,createChannelMergerNodeRenderer$1,createNativeChannelMergerNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),createChannelSplitterNodeRenderer$1=createChannelSplitterNodeRendererFactory$1(createNativeChannelSplitterNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),channelSplitterNodeConstructor$1=createChannelSplitterNodeConstructor$1(audioNodeConstructor$1,createChannelSplitterNodeRenderer$1,createNativeChannelSplitterNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,sanitizeChannelSplitterOptions$1),createNativeConstantSourceNodeFaker$1=createNativeConstantSourceNodeFakerFactory$1(addSilentConnection$1,createNativeAudioBufferSourceNode$1,createNativeGainNode$1,monitorConnections$1),createNativeConstantSourceNode$1=createNativeConstantSourceNodeFactory$1(addSilentConnection$1,cacheTestResult$1,createNativeConstantSourceNodeFaker$1,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1),createConstantSourceNodeRenderer$1=createConstantSourceNodeRendererFactory$1(connectAudioParam$1,createNativeConstantSourceNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),constantSourceNodeConstructor$1=createConstantSourceNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createConstantSourceNodeRenderer$1,createNativeConstantSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,wrapEventListener$1),createNativeConvolverNode$1=createNativeConvolverNodeFactory$1(createNotSupportedError$1,overwriteAccessors$1),createConvolverNodeRenderer$1=createConvolverNodeRendererFactory$1(createNativeConvolverNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),convolverNodeConstructor$1=createConvolverNodeConstructor$1(audioNodeConstructor$1,createConvolverNodeRenderer$1,createNativeConvolverNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createDelayNodeRenderer$1=createDelayNodeRendererFactory$1(connectAudioParam$1,createNativeDelayNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),delayNodeConstructor$1=createDelayNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createDelayNodeRenderer$1,createNativeDelayNode$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createNativeDynamicsCompressorNode$1=createNativeDynamicsCompressorNodeFactory$1(createNotSupportedError$1),createDynamicsCompressorNodeRenderer$1=createDynamicsCompressorNodeRendererFactory$1(connectAudioParam$1,createNativeDynamicsCompressorNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),dynamicsCompressorNodeConstructor$1=createDynamicsCompressorNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createDynamicsCompressorNodeRenderer$1,createNativeDynamicsCompressorNode$1,createNotSupportedError$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createGainNodeRenderer$1=createGainNodeRendererFactory$1(connectAudioParam$1,createNativeGainNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),gainNodeConstructor$1=createGainNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createGainNodeRenderer$1,createNativeGainNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),createNativeIIRFilterNodeFaker$1=createNativeIIRFilterNodeFakerFactory$1(createInvalidAccessError$1,createInvalidStateError$1,createNativeScriptProcessorNode$1,createNotSupportedError$1),renderNativeOfflineAudioContext$1=createRenderNativeOfflineAudioContext$1(cacheTestResult$1,createNativeGainNode$1,createNativeScriptProcessorNode$1,createTestOfflineAudioContextCurrentTimeSupport$1(createNativeGainNode$1,nativeOfflineAudioContextConstructor$1)),createIIRFilterNodeRenderer$1=createIIRFilterNodeRendererFactory$1(createNativeAudioBufferSourceNode$1,getNativeAudioNode$1,nativeOfflineAudioContextConstructor$1,renderInputsOfAudioNode$1,renderNativeOfflineAudioContext$1),createNativeIIRFilterNode$1=createNativeIIRFilterNodeFactory$1(createNativeIIRFilterNodeFaker$1),iIRFilterNodeConstructor$1=createIIRFilterNodeConstructor$1(audioNodeConstructor$1,createNativeIIRFilterNode$1,createIIRFilterNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createAudioListener$1=createAudioListenerFactory$1(createAudioParam$1,createNativeChannelMergerNode$1,createNativeConstantSourceNode$1,createNativeScriptProcessorNode$1,createNotSupportedError$1,getFirstSample$1,isNativeOfflineAudioContext$1,overwriteAccessors$1),unrenderedAudioWorkletNodeStore$1=new WeakMap,minimalBaseAudioContextConstructor$1=createMinimalBaseAudioContextConstructor$1(audioDestinationNodeConstructor$1,createAudioListener$1,eventTargetConstructor$1,isNativeOfflineAudioContext$1,unrenderedAudioWorkletNodeStore$1,wrapEventListener$1),createNativeOscillatorNode$1=createNativeOscillatorNodeFactory$1(addSilentConnection$1,cacheTestResult$1,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport$1,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport$1,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport$1,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls$1),createOscillatorNodeRenderer$1=createOscillatorNodeRendererFactory$1(connectAudioParam$1,createNativeOscillatorNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),oscillatorNodeConstructor$1=createOscillatorNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createNativeOscillatorNode$1,createOscillatorNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,wrapEventListener$1),createConnectedNativeAudioBufferSourceNode$1=createConnectedNativeAudioBufferSourceNodeFactory$1(createNativeAudioBufferSourceNode$1),createNativeWaveShaperNodeFaker$1=createNativeWaveShaperNodeFakerFactory$1(createConnectedNativeAudioBufferSourceNode$1,createInvalidStateError$1,createNativeGainNode$1,isDCCurve$1,monitorConnections$1),createNativeWaveShaperNode$1=createNativeWaveShaperNodeFactory$1(createConnectedNativeAudioBufferSourceNode$1,createInvalidStateError$1,createNativeWaveShaperNodeFaker$1,isDCCurve$1,monitorConnections$1,nativeAudioContextConstructor$1,overwriteAccessors$1),createNativePannerNodeFaker$1=createNativePannerNodeFakerFactory$1(connectNativeAudioNodeToNativeAudioNode$1,createInvalidStateError$1,createNativeChannelMergerNode$1,createNativeGainNode$1,createNativeScriptProcessorNode$1,createNativeWaveShaperNode$1,createNotSupportedError$1,disconnectNativeAudioNodeFromNativeAudioNode$1,getFirstSample$1,monitorConnections$1),createNativePannerNode$1=createNativePannerNodeFactory$1(createNativePannerNodeFaker$1),createPannerNodeRenderer$1=createPannerNodeRendererFactory$1(connectAudioParam$1,createNativeChannelMergerNode$1,createNativeConstantSourceNode$1,createNativeGainNode$1,createNativePannerNode$1,getNativeAudioNode$1,nativeOfflineAudioContextConstructor$1,renderAutomation$1,renderInputsOfAudioNode$1,renderNativeOfflineAudioContext$1),pannerNodeConstructor$1=createPannerNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createNativePannerNode$1,createPannerNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),createNativePeriodicWave$1=createNativePeriodicWaveFactory$1(createIndexSizeError$1),periodicWaveConstructor$1=createPeriodicWaveConstructor$1(createNativePeriodicWave$1,getNativeContext$1,new WeakSet,sanitizePeriodicWaveOptions$1),nativeStereoPannerNodeFakerFactory$1=createNativeStereoPannerNodeFakerFactory$1(createNativeChannelMergerNode$1,createNativeChannelSplitterNode$1,createNativeGainNode$1,createNativeWaveShaperNode$1,createNotSupportedError$1,monitorConnections$1),createNativeStereoPannerNode$1=createNativeStereoPannerNodeFactory$1(nativeStereoPannerNodeFakerFactory$1,createNotSupportedError$1),createStereoPannerNodeRenderer$1=createStereoPannerNodeRendererFactory$1(connectAudioParam$1,createNativeStereoPannerNode$1,getNativeAudioNode$1,renderAutomation$1,renderInputsOfAudioNode$1),stereoPannerNodeConstructor$1=createStereoPannerNodeConstructor$1(audioNodeConstructor$1,createAudioParam$1,createNativeStereoPannerNode$1,createStereoPannerNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1),createWaveShaperNodeRenderer$1=createWaveShaperNodeRendererFactory$1(createNativeWaveShaperNode$1,getNativeAudioNode$1,renderInputsOfAudioNode$1),waveShaperNodeConstructor$1=createWaveShaperNodeConstructor$1(audioNodeConstructor$1,createInvalidStateError$1,createNativeWaveShaperNode$1,createWaveShaperNodeRenderer$1,getNativeContext$1,isNativeOfflineAudioContext$1,setAudioNodeTailTime$1),isSecureContext$1=createIsSecureContext$1(window$2),exposeCurrentFrameAndCurrentTime$1=createExposeCurrentFrameAndCurrentTime$1(window$2),backupOfflineAudioContextStore$1=new WeakMap,getOrCreateBackupOfflineAudioContext$1=createGetOrCreateBackupOfflineAudioContext$1(backupOfflineAudioContextStore$1,nativeOfflineAudioContextConstructor$1),addAudioWorkletModule$1=isSecureContext$1?createAddAudioWorkletModule$1(cacheTestResult$1,createNotSupportedError$1,createEvaluateSource$1(window$2),exposeCurrentFrameAndCurrentTime$1,createFetchSource$1(createAbortError$1),getNativeContext$1,getOrCreateBackupOfflineAudioContext$1,isNativeOfflineAudioContext$1,nativeAudioWorkletNodeConstructor$1,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport$1(nativeAudioWorkletNodeConstructor$1,nativeOfflineAudioContextConstructor$1),window$2):void 0,isNativeContext$1=createIsNativeContext$1(isNativeAudioContext$1,isNativeOfflineAudioContext$1),decodeAudioData$1=createDecodeAudioData$1(audioBufferStore$1,cacheTestResult$1,createDataCloneError$1,createEncodingError$1,new WeakSet,getNativeContext$1,isNativeContext$1,testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1,testPromiseSupport$1,wrapAudioBufferCopyChannelMethods$1,wrapAudioBufferCopyChannelMethodsOutOfBounds$1),baseAudioContextConstructor$1=createBaseAudioContextConstructor$1(addAudioWorkletModule$1,analyserNodeConstructor$1,audioBufferConstructor$1,audioBufferSourceNodeConstructor$1,biquadFilterNodeConstructor$1,channelMergerNodeConstructor$1,channelSplitterNodeConstructor$1,constantSourceNodeConstructor$1,convolverNodeConstructor$1,decodeAudioData$1,delayNodeConstructor$1,dynamicsCompressorNodeConstructor$1,gainNodeConstructor$1,iIRFilterNodeConstructor$1,minimalBaseAudioContextConstructor$1,oscillatorNodeConstructor$1,pannerNodeConstructor$1,periodicWaveConstructor$1,stereoPannerNodeConstructor$1,waveShaperNodeConstructor$1),mediaElementAudioSourceNodeConstructor$1=createMediaElementAudioSourceNodeConstructor$1(audioNodeConstructor$1,createNativeMediaElementAudioSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),mediaStreamAudioDestinationNodeConstructor$1=createMediaStreamAudioDestinationNodeConstructor$1(audioNodeConstructor$1,createNativeMediaStreamAudioDestinationNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),mediaStreamAudioSourceNodeConstructor$1=createMediaStreamAudioSourceNodeConstructor$1(audioNodeConstructor$1,createNativeMediaStreamAudioSourceNode$1,getNativeContext$1,isNativeOfflineAudioContext$1),createNativeMediaStreamTrackAudioSourceNode$1=createNativeMediaStreamTrackAudioSourceNodeFactory$1(createInvalidStateError$1,isNativeOfflineAudioContext$1),mediaStreamTrackAudioSourceNodeConstructor$1=createMediaStreamTrackAudioSourceNodeConstructor$1(audioNodeConstructor$1,createNativeMediaStreamTrackAudioSourceNode$1,getNativeContext$1),audioContextConstructor$1=createAudioContextConstructor$1(baseAudioContextConstructor$1,createInvalidStateError$1,createNotSupportedError$1,createUnknownError$1,mediaElementAudioSourceNodeConstructor$1,mediaStreamAudioDestinationNodeConstructor$1,mediaStreamAudioSourceNodeConstructor$1,mediaStreamTrackAudioSourceNodeConstructor$1,nativeAudioContextConstructor$1),getUnrenderedAudioWorkletNodes$1=createGetUnrenderedAudioWorkletNodes$1(unrenderedAudioWorkletNodeStore$1),addUnrenderedAudioWorkletNode$1=createAddUnrenderedAudioWorkletNode$1(getUnrenderedAudioWorkletNodes$1),connectMultipleOutputs$1=createConnectMultipleOutputs$1(createIndexSizeError$1),deleteUnrenderedAudioWorkletNode$1=createDeleteUnrenderedAudioWorkletNode$1(getUnrenderedAudioWorkletNodes$1),disconnectMultipleOutputs$1=createDisconnectMultipleOutputs$1(createIndexSizeError$1),activeAudioWorkletNodeInputsStore$1=new WeakMap,getActiveAudioWorkletNodeInputs$1=createGetActiveAudioWorkletNodeInputs$1(activeAudioWorkletNodeInputsStore$1,getValueForKey$1),createNativeAudioWorkletNodeFaker$1=createNativeAudioWorkletNodeFakerFactory$1(connectMultipleOutputs$1,createIndexSizeError$1,createInvalidStateError$1,createNativeChannelMergerNode$1,createNativeChannelSplitterNode$1,createNativeConstantSourceNode$1,createNativeGainNode$1,createNativeScriptProcessorNode$1,createNotSupportedError$1,disconnectMultipleOutputs$1,exposeCurrentFrameAndCurrentTime$1,getActiveAudioWorkletNodeInputs$1,monitorConnections$1),createNativeAudioWorkletNode$1=createNativeAudioWorkletNodeFactory$1(createInvalidStateError$1,createNativeAudioWorkletNodeFaker$1,createNativeGainNode$1,createNotSupportedError$1,monitorConnections$1),createAudioWorkletNodeRenderer$1=createAudioWorkletNodeRendererFactory$1(connectAudioParam$1,connectMultipleOutputs$1,createNativeAudioBufferSourceNode$1,createNativeChannelMergerNode$1,createNativeChannelSplitterNode$1,createNativeConstantSourceNode$1,createNativeGainNode$1,deleteUnrenderedAudioWorkletNode$1,disconnectMultipleOutputs$1,exposeCurrentFrameAndCurrentTime$1,getNativeAudioNode$1,nativeAudioWorkletNodeConstructor$1,nativeOfflineAudioContextConstructor$1,renderAutomation$1,renderInputsOfAudioNode$1,renderNativeOfflineAudioContext$1),getBackupOfflineAudioContext$1=createGetBackupOfflineAudioContext$1(backupOfflineAudioContextStore$1),setActiveAudioWorkletNodeInputs$1=createSetActiveAudioWorkletNodeInputs$1(activeAudioWorkletNodeInputsStore$1),audioWorkletNodeConstructor$1=isSecureContext$1?createAudioWorkletNodeConstructor$1(addUnrenderedAudioWorkletNode$1,audioNodeConstructor$1,createAudioParam$1,createAudioWorkletNodeRenderer$1,createNativeAudioWorkletNode$1,getAudioNodeConnections$1,getBackupOfflineAudioContext$1,getNativeContext$1,isNativeOfflineAudioContext$1,nativeAudioWorkletNodeConstructor$1,sanitizeAudioWorkletNodeOptions$1,setActiveAudioWorkletNodeInputs$1,testAudioWorkletNodeOptionsClonability$1,wrapEventListener$1):void 0,createNativeOfflineAudioContext$1=createCreateNativeOfflineAudioContext$1(createNotSupportedError$1,nativeOfflineAudioContextConstructor$1),startRendering$1=createStartRendering$1(audioBufferStore$1,cacheTestResult$1,getAudioNodeRenderer$1,getUnrenderedAudioWorkletNodes$1,renderNativeOfflineAudioContext$1,testAudioBufferCopyChannelMethodsOutOfBoundsSupport$1,wrapAudioBufferCopyChannelMethods$1,wrapAudioBufferCopyChannelMethodsOutOfBounds$1),offlineAudioContextConstructor$1=createOfflineAudioContextConstructor$1(baseAudioContextConstructor$1,cacheTestResult$1,createInvalidStateError$1,createNativeOfflineAudioContext$1,startRendering$1),isAnyAudioContext$1=createIsAnyAudioContext$1(CONTEXT_STORE$1,isNativeAudioContext$1),isAnyAudioNode$1=createIsAnyAudioNode$1(AUDIO_NODE_STORE$1,isNativeAudioNode$2),isAnyAudioParam$1=createIsAnyAudioParam$1(AUDIO_PARAM_STORE$1,isNativeAudioParam$1),isAnyOfflineAudioContext$1=createIsAnyOfflineAudioContext$1(CONTEXT_STORE$1,isNativeOfflineAudioContext$1),isSupported=()=>createIsSupportedPromise(cacheTestResult$1,createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor$1),createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor$1),createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor$1),createTestAudioContextOptionsSupport(nativeAudioContextConstructor$1),createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor$1),createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor$1,nativeOfflineAudioContextConstructor$1),createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor$1),createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor$1),createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor$1),createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor$1),testDomExceptionConstructorSupport,createTestIsSecureContextSupport(window$2),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor$1),createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor$1),testTransferablesSupport);function assert$1(o,e){if(!o)throw new Error(e)}function assertRange$1(o,e,s=1/0){if(!(e<=o&&o<=s))throw new RangeError(`Value must be within [${e}, ${s}], got: ${o}`)}function assertContextRunning$1(o){!o.isOffline&&o.state!=="running"&&warn$1('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let defaultLogger$1=console;function setLogger(o){defaultLogger$1=o}function log$1(...o){defaultLogger$1.log(...o)}function warn$1(...o){defaultLogger$1.warn(...o)}var Debug=Object.freeze(Object.defineProperty({__proto__:null,assert:assert$1,assertRange:assertRange$1,assertContextRunning:assertContextRunning$1,setLogger,log:log$1,warn:warn$1},Symbol.toStringTag,{value:"Module"}));function isUndef$1(o){return typeof o=="undefined"}function isDefined$1(o){return!isUndef$1(o)}function isFunction$1(o){return typeof o=="function"}function isNumber$1(o){return typeof o=="number"}function isObject$1(o){return Object.prototype.toString.call(o)==="[object Object]"&&o.constructor===Object}function isBoolean$1(o){return typeof o=="boolean"}function isArray$1(o){return Array.isArray(o)}function isString$1(o){return typeof o=="string"}function isNote$3(o){return isString$1(o)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(o)}function createAudioContext$1(o){return new audioContextConstructor$1(o)}function createOfflineAudioContext$1(o,e,s){return new offlineAudioContextConstructor$1(o,e,s)}const theWindow$1=typeof self=="object"?self:null,hasAudioContext$1=theWindow$1&&(theWindow$1.hasOwnProperty("AudioContext")||theWindow$1.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode$1(o,e,s){return assert$1(isDefined$1(audioWorkletNodeConstructor$1),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor$1(o,e,s)}/*! ***************************************************************************** + **/(function(o,e){(function(s){var a=2e3,c={s:1,n:0,d:1};function d(nt,st){if(isNaN(nt=parseInt(nt,10)))throw tt.InvalidParameter;return nt*st}function _(nt,st){if(st===0)throw tt.DivisionByZero;var rt=Object.create(tt.prototype);rt.s=nt<0?-1:1,nt=nt<0?-nt:nt;var it=et(nt,st);return rt.n=nt/it,rt.d=st/it,rt}function b(nt){for(var st={},rt=nt,it=2,at=4;at<=rt;){for(;rt%it===0;)rt/=it,st[it]=(st[it]||0)+1;at+=1+2*it++}return rt!==nt?rt>1&&(st[rt]=(st[rt]||0)+1):st[nt]=(st[nt]||0)+1,st}var k=function(nt,st){var rt=0,it=1,at=1,ot=0,ht=0,ct=0,lt=1,ut=1,pt=0,dt=1,gt=1,yt=1,ft=1e7,mt;if(nt!=null)if(st!==void 0){if(rt=nt,it=st,at=rt*it,rt%1!==0||it%1!==0)throw tt.NonIntegerParameter}else switch(typeof nt){case"object":{if("d"in nt&&"n"in nt)rt=nt.n,it=nt.d,"s"in nt&&(rt*=nt.s);else if(0 in nt)rt=nt[0],1 in nt&&(it=nt[1]);else throw tt.InvalidParameter;at=rt*it;break}case"number":{if(nt<0&&(at=nt,nt=-nt),nt%1===0)rt=nt;else if(nt>0){for(nt>=1&&(ut=Math.pow(10,Math.floor(1+Math.log(nt)/Math.LN10)),nt/=ut);dt<=ft&&yt<=ft;)if(mt=(pt+gt)/(dt+yt),nt===mt){dt+yt<=ft?(rt=pt+gt,it=dt+yt):yt>dt?(rt=gt,it=yt):(rt=pt,it=dt);break}else nt>mt?(pt+=gt,dt+=yt):(gt+=pt,yt+=dt),dt>ft?(rt=gt,it=yt):(rt=pt,it=dt);rt*=ut}else(isNaN(nt)||isNaN(st))&&(it=rt=NaN);break}case"string":{if(dt=nt.match(/\d+|./g),dt===null)throw tt.InvalidParameter;if(dt[pt]==="-"?(at=-1,pt++):dt[pt]==="+"&&pt++,dt.length===pt+1?ht=d(dt[pt++],at):dt[pt+1]==="."||dt[pt]==="."?(dt[pt]!=="."&&(ot=d(dt[pt++],at)),pt++,(pt+1===dt.length||dt[pt+1]==="("&&dt[pt+3]===")"||dt[pt+1]==="'"&&dt[pt+3]==="'")&&(ht=d(dt[pt],at),lt=Math.pow(10,dt[pt].length),pt++),(dt[pt]==="("&&dt[pt+2]===")"||dt[pt]==="'"&&dt[pt+2]==="'")&&(ct=d(dt[pt+1],at),ut=Math.pow(10,dt[pt+1].length)-1,pt+=3)):dt[pt+1]==="/"||dt[pt+1]===":"?(ht=d(dt[pt],at),lt=d(dt[pt+2],1),pt+=3):dt[pt+3]==="/"&&dt[pt+1]===" "&&(ot=d(dt[pt],at),ht=d(dt[pt+2],at),lt=d(dt[pt+4],1),pt+=5),dt.length<=pt){it=lt*ut,at=rt=ct+it*ot+ut*ht;break}}default:throw tt.InvalidParameter}if(it===0)throw tt.DivisionByZero;c.s=at<0?-1:1,c.n=Math.abs(rt),c.d=Math.abs(it)};function $(nt,st,rt){for(var it=1;st>0;nt=nt*nt%rt,st>>=1)st&1&&(it=it*nt%rt);return it}function j(nt,st){for(;st%2===0;st/=2);for(;st%5===0;st/=5);if(st===1)return 0;for(var rt=10%st,it=1;rt!==1;it++)if(rt=rt*10%st,it>a)return 0;return it}function _e(nt,st,rt){for(var it=1,at=$(10,rt,st),ot=0;ot<300;ot++){if(it===at)return ot;it=it*10%st,at=at*10%st}return 0}function et(nt,st){if(!nt)return st;if(!st)return nt;for(;;){if(nt%=st,!nt)return st;if(st%=nt,!st)return nt}}function tt(nt,st){if(k(nt,st),this instanceof tt)nt=et(c.d,c.n),this.s=c.s,this.n=c.n/nt,this.d=c.d/nt;else return _(c.s*c.n,c.d)}tt.DivisionByZero=new Error("Division by Zero"),tt.InvalidParameter=new Error("Invalid argument"),tt.NonIntegerParameter=new Error("Parameters must be integer"),tt.prototype={s:1,n:0,d:1,abs:function(){return _(this.n,this.d)},neg:function(){return _(-this.s*this.n,this.d)},add:function(nt,st){return k(nt,st),_(this.s*this.n*c.d+c.s*this.d*c.n,this.d*c.d)},sub:function(nt,st){return k(nt,st),_(this.s*this.n*c.d-c.s*this.d*c.n,this.d*c.d)},mul:function(nt,st){return k(nt,st),_(this.s*c.s*this.n*c.n,this.d*c.d)},div:function(nt,st){return k(nt,st),_(this.s*c.s*this.n*c.d,this.d*c.n)},clone:function(){return _(this.s*this.n,this.d)},mod:function(nt,st){if(isNaN(this.n)||isNaN(this.d))return new tt(NaN);if(nt===void 0)return _(this.s*this.n%this.d,1);if(k(nt,st),c.n===0&&this.d===0)throw tt.DivisionByZero;return _(this.s*(c.d*this.n)%(c.n*this.d),c.d*this.d)},gcd:function(nt,st){return k(nt,st),_(et(c.n,this.n)*et(c.d,this.d),c.d*this.d)},lcm:function(nt,st){return k(nt,st),c.n===0&&this.n===0?_(0,1):_(c.n*this.n,et(c.n,this.n)*et(c.d,this.d))},ceil:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.ceil(nt*this.s*this.n/this.d),nt)},floor:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.floor(nt*this.s*this.n/this.d),nt)},round:function(nt){return nt=Math.pow(10,nt||0),isNaN(this.n)||isNaN(this.d)?new tt(NaN):_(Math.round(nt*this.s*this.n/this.d),nt)},inverse:function(){return _(this.s*this.d,this.n)},pow:function(nt,st){if(k(nt,st),c.d===1)return c.s<0?_(Math.pow(this.s*this.d,c.n),Math.pow(this.n,c.n)):_(Math.pow(this.s*this.n,c.n),Math.pow(this.d,c.n));if(this.s<0)return null;var rt=b(this.n),it=b(this.d),at=1,ot=1;for(var ht in rt)if(ht!=="1"){if(ht==="0"){at=0;break}if(rt[ht]*=c.n,rt[ht]%c.d===0)rt[ht]/=c.d;else return null;at*=Math.pow(ht,rt[ht])}for(var ht in it)if(ht!=="1"){if(it[ht]*=c.n,it[ht]%c.d===0)it[ht]/=c.d;else return null;ot*=Math.pow(ht,it[ht])}return c.s<0?_(ot,at):_(at,ot)},equals:function(nt,st){return k(nt,st),this.s*this.n*c.d===c.s*c.n*this.d},compare:function(nt,st){k(nt,st);var rt=this.s*this.n*c.d-c.s*c.n*this.d;return(0=0;ot--)at=at.inverse().add(rt[ot]);if(at.sub(st).abs().valueOf()0&&(rt+=st,rt+=" ",it%=at),rt+=it,rt+="/",rt+=at),rt},toLatex:function(nt){var st,rt="",it=this.n,at=this.d;return this.s<0&&(rt+="-"),at===1?rt+=it:(nt&&(st=Math.floor(it/at))>0&&(rt+=st,it%=at),rt+="\\frac{",rt+=it,rt+="}{",rt+=at,rt+="}"),rt},toContinued:function(){var nt,st=this.n,rt=this.d,it=[];if(isNaN(st)||isNaN(rt))return it;do it.push(Math.floor(st/rt)),nt=st%rt,st=rt,rt=nt;while(st!==1);return it},toString:function(nt){var st=this.n,rt=this.d;if(isNaN(st)||isNaN(rt))return"NaN";nt=nt||15;var it=j(st,rt),at=_e(st,rt,it),ot=this.s<0?"-":"";if(ot+=st/rt|0,st%=rt,st*=10,st&&(ot+="."),it){for(var ht=at;ht--;)ot+=st/rt|0,st%=rt,st*=10;ot+="(";for(var ht=it;ht--;)ot+=st/rt|0,st%=rt,st*=10;ot+=")"}else for(var ht=nt;st&&ht--;)ot+=st/rt|0,st%=rt,st*=10;return ot}},Object.defineProperty(tt,"__esModule",{value:!0}),tt.default=tt,tt.Fraction=tt,o.exports=tt})()})(fraction$1);var Fraction=getDefaultExportFromCjs(fraction$1.exports);Fraction.prototype.sam=function(){return this.floor()};Fraction.prototype.nextSam=function(){return this.sam().add(1)};Fraction.prototype.wholeCycle=function(){return new TimeSpan$1(this.sam(),this.nextSam())};Fraction.prototype.cyclePos=function(){return this.sub(this.sam())};Fraction.prototype.lt=function(o){return this.compare(o)<0};Fraction.prototype.gt=function(o){return this.compare(o)>0};Fraction.prototype.lte=function(o){return this.compare(o)<=0};Fraction.prototype.gte=function(o){return this.compare(o)>=0};Fraction.prototype.eq=function(o){return this.compare(o)==0};Fraction.prototype.max=function(o){return this.gt(o)?this:o};Fraction.prototype.min=function(o){return this.lt(o)?this:o};Fraction.prototype.show=function(){return this.s*this.n+"/"+this.d};Fraction.prototype.or=function(o){return this.eq(0)?o:this};const fraction=o=>(typeof o=="number"&&(o=String(o)),Fraction(o)),gcd=(...o)=>o.reduce((e,s)=>e.gcd(s),fraction(1));fraction._original=Fraction;class TimeSpan$1{constructor(e,s){this.begin=fraction(e),this.end=fraction(s)}get spanCycles(){const e=[];var s=this.begin;const a=this.end,c=a.sam();for(;a.gt(s);){if(s.sam().equals(c)){e.push(new TimeSpan$1(s,this.end));break}const d=s.nextSam();e.push(new TimeSpan$1(s,d)),s=d}return e}get duration(){return this.end.sub(this.begin)}cycleArc(){const e=this.begin.cyclePos(),s=e.add(this.duration);return new TimeSpan$1(e,s)}withTime(e){return new TimeSpan$1(e(this.begin),e(this.end))}withEnd(e){return new TimeSpan$1(this.begin,e(this.end))}withCycle(e){const s=this.begin.sam(),a=s.add(e(this.begin.sub(s))),c=s.add(e(this.end.sub(s)));return new TimeSpan$1(a,c)}intersection(e){const s=this.begin.max(e.begin),a=this.end.min(e.end);if(!s.gt(a)&&!(s.equals(a)&&(s.equals(this.end)&&this.begin.lt(this.end)||s.equals(e.end)&&e.begin.lt(e.end))))return new TimeSpan$1(s,a)}intersection_e(e){const s=this.intersection(e);if(s==null)throw"TimeSpans do not intersect";return s}midpoint(){return this.begin.add(this.duration.div(fraction(2)))}equals(e){return this.begin.equals(e.begin)&&this.end.equals(e.end)}show(){return this.begin.show()+" -> "+this.end.show()}}class Hap{constructor(e,s,a,c={},d=!1){this.whole=e,this.part=s,this.value=a,this.context=c,this.stateful=d,d&&console.assert(typeof this.value=="function","Stateful values must be functions")}get duration(){return this.whole.end.sub(this.whole.begin)}wholeOrPart(){return this.whole?this.whole:this.part}withSpan(e){const s=this.whole?e(this.whole):void 0;return new Hap(s,e(this.part),this.value,this.context)}withValue(e){return new Hap(this.whole,this.part,e(this.value),this.context)}hasOnset(){return this.whole!=null&&this.whole.begin.equals(this.part.begin)}resolveState(e){if(this.stateful&&this.hasOnset()){console.log("stateful");const s=this.value,[a,c]=s(e);return[a,new Hap(this.whole,this.part,c,this.context,!1)]}return[e,this]}spanEquals(e){return this.whole==null&&e.whole==null||this.whole.equals(e.whole)}equals(e){return this.spanEquals(e)&&this.part.equals(e.part)&&this.value===e.value}show(){return"("+(this.whole==null?"~":this.whole.show())+", "+this.part.show()+", "+this.value+")"}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${this.value}`}combineContext(e){const s=this;return wt(Ot(Ot({},s.context),e.context),{locations:(s.context.locations||[]).concat(e.context.locations||[])})}setContext(e){return new Hap(this.whole,this.part,this.value,e)}}class State$1{constructor(e,s={}){this.span=e,this.controls=s}setSpan(e){return new State$1(e,this.controls)}withSpan(e){return this.setSpan(e(this.span))}setControls(e){return new State$1(this.span,e)}}const isNote$3=o=>/^[a-gA-G][#b]*[0-9]$/.test(o),tokenizeNote=o=>{var c;if(typeof o!="string")return[];const[e,s="",a]=((c=o.match(/^([a-gA-G])([#b]*)([0-9])?$/))==null?void 0:c.slice(1))||[];return e?[e,s,a?Number(a):void 0]:[]},toMidi=o=>{const[e,s,a]=tokenizeNote(o);if(!e)throw new Error('not a note: "'+o+'"');const c={c:0,d:2,e:4,f:5,g:7,a:9,b:11}[e.toLowerCase()],d=(s==null?void 0:s.split("").reduce((_,b)=>_+{"#":1,b:-1}[b],0))||0;return(Number(a)+1)*12+c+d},fromMidi=o=>Math.pow(2,(o-69)/12)*440,mod=(o,e)=>(o%e+e)%e,getPlayableNoteValue=o=>{let{value:e,context:s}=o;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="string"&&!isNote$3(e))throw new Error("not a note: "+e);return e},getFrequency=o=>{let{value:e,context:s}=o;if(typeof e=="object"&&e.freq)return e.freq;if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="string"&&isNote$3(e))e=fromMidi(toMidi(o.value));else if(typeof e!="number")throw new Error("not a note or frequency:"+e);return e},rotate=(o,e)=>o.slice(e).concat(o.slice(0,e)),pipe=(...o)=>o.reduce((e,s)=>(...a)=>e(s(...a)),e=>e),compose=(...o)=>pipe(...o.reverse()),removeUndefineds=o=>o.filter(e=>e!=null),flatten$1=o=>[].concat(...o),id$1=o=>o,constant=(o,e)=>o,listRange=(o,e)=>Array.from({length:e-o+1},(s,a)=>a+o);function curry(o,e){const s=function a(...c){if(c.length>=o.length)return o.apply(this,c);{const d=function(..._){return a.apply(this,c.concat(_))};return e&&e(d,c),d}};return e&&e(s,[]),s}function unionWithObj(o,e,s){const a=Object.keys(o).filter(c=>Object.keys(e).includes(c));return Object.assign({},o,e,Object.fromEntries(a.map(c=>[c,s(o[c],e[c])])))}curry((o,e)=>o*e);curry((o,e)=>e.map(o));function drawLine(o,e=60){let s=0,a=fraction(0),c=[""],d="";for(;c[0].lengthj.hasOnset()).map(j=>j.duration),k=gcd(...b),$=k.inverse();c=c.map(j=>j+"|"),d+="|";for(let j=0;j<$;j++){const[_e,et]=[a,a.add(k)],tt=_.filter(st=>st.whole.begin.lte(_e)&&st.whole.end.gte(et)),nt=tt.length-c.length;nt>0&&(c=c.concat(Array(nt).fill(d))),c=c.map((st,rt)=>{const it=tt[rt];if(it){const ot=it.whole.begin.eq(_e)?""+it.value:"-";return st+ot}return st+"."}),d+=".",a=a.add(k)}s++}return c.join(` +`)}class Pattern$4{constructor(e){this.query=e}queryArc(e,s){return this.query(new State$1(new TimeSpan$1(e,s)))}_splitQueries(){const e=this,s=a=>flatten$1(a.span.spanCycles.map(c=>e.query(a.setSpan(c))));return new Pattern$4(s)}withQuerySpan(e){return new Pattern$4(s=>this.query(s.withSpan(e)))}withQueryTime(e){return new Pattern$4(s=>this.query(s.withSpan(a=>a.withTime(e))))}withHapSpan(e){return new Pattern$4(s=>this.query(s).map(a=>a.withSpan(e)))}withHapTime(e){return this.withHapSpan(s=>s.withTime(e))}_withHaps(e){return new Pattern$4(s=>e(this.query(s)))}_withHap(e){return this._withHaps(s=>s.map(e))}_setContext(e){return this._withHap(s=>s.setContext(e))}_withContext(e){return this._withHap(s=>s.setContext(e(s.context)))}_stripContext(){return this._withHap(e=>e.setContext({}))}withLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{const d=(c.locations||[]).concat([a]);return wt(Ot({},c),{locations:d})})}withMiniLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{let d=c.locations||[];return d=d.map(({start:_,end:b})=>{const k=_.line===1?a.start.column:0;return{start:wt(Ot({},_),{line:_.line-1+(a.start.line-1)+1,column:_.column-1+k}),end:wt(Ot({},b),{line:b.line-1+(a.start.line-1)+1,column:b.column-1+k})}}),wt(Ot({},c),{locations:d})})}withValue(e){return new Pattern$4(s=>this.query(s).map(a=>a.withValue(e)))}fmap(e){return this.withValue(e)}_filterHaps(e){return new Pattern$4(s=>this.query(s).filter(e))}_filterValues(e){return new Pattern$4(s=>this.query(s).filter(a=>e(a.value)))}_removeUndefineds(){return this._filterValues(e=>e!=null)}onsetsOnly(){return this._filterHaps(e=>e.hasOnset())}discreteOnly(){return this._filterHaps(e=>e.whole)}_appWhole(e,s){const a=this,c=function(d){const _=a.query(d),b=s.query(d),k=function($,j){const _e=$.part.intersection(j.part);if(_e!=null)return new Hap(e($.whole,j.whole),_e,$.value(j.value),j.combineContext($))};return flatten$1(_.map($=>removeUndefineds(b.map(j=>k($,j)))))};return new Pattern$4(c)}appBoth(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._appWhole(s,e)}appLeft(e){const s=this,a=function(c){const d=[];for(const _ of s.query(c)){const b=e.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=_.part.intersection(k.part);if(j){const _e=_.value(k.value),et=k.combineContext(_),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(a)}appRight(e){const s=this,a=function(c){const d=[];for(const _ of e.query(c)){const b=s.query(c.setSpan(_.wholeOrPart()));for(const k of b){const $=_.whole,j=k.part.intersection(_.part);if(j){const _e=k.value(_.value),et=_.combineContext(k),tt=new Hap($,j,_e,et);d.push(tt)}}}return d};return new Pattern$4(a)}firstCycle(e=!1){var s=this;return e||(s=s._stripContext()),s.query(new State$1(new TimeSpan$1(fraction(0),fraction(1))))}get _firstCycleValues(){return this.firstCycle().map(e=>e.value)}get _showFirstCycle(){return this.firstCycle().map(e=>`${e.value}: ${e.whole.begin.toFraction()} - ${e.whole.end.toFraction()}`)}_sortHapsByPart(){return this._withHaps(e=>e.sort((s,a)=>s.part.begin.sub(a.part.begin).or(s.part.end.sub(a.part.end)).or(s.whole.begin.sub(a.whole.begin).or(s.whole.end.sub(a.whole.end)))))}_opIn(e,s){return this.fmap(s).appLeft(reify$1(e))}_opOut(e,s){return this.fmap(s).appRight(reify$1(e))}_opMix(e,s){return this.fmap(s).appBoth(reify$1(e))}_opSqueeze(e,s){const a=reify$1(e);return this.fmap(c=>a.fmap(d=>s(c)(d)))._squeezeJoin()}_opSqueezeOut(e,s){const a=this;return reify$1(e).fmap(d=>a.fmap(_=>s(_)(d)))._squeezeJoin()}_opTrig(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._trigJoin()}_opTrigzero(e,s){return reify$1(e).fmap(c=>this.fmap(d=>s(d)(c)))._TrigzeroJoin()}_asNumber(e=!1,s=!1){return this._withHap(a=>{const c=Number(a.value);if(!isNaN(c))return a.withValue(()=>c);const d={e:Math.E,pi:Math.PI}[a.value];if(typeof d!="undefined")return a.withValue(()=>d);if(isNote$3(a.value))return new Hap(a.whole,a.part,toMidi(a.value),wt(Ot({},a.context),{type:"midi"}));if(!e){if(s)return a;throw new Error('cannot parse as number: "'+a.value+'"')}})}round(){return this._asNumber().fmap(e=>Math.round(e))}floor(){return this._asNumber().fmap(e=>Math.floor(e))}ceil(){return this._asNumber().fmap(e=>Math.ceil(e))}_toBipolar(){return this.fmap(e=>e*2-1)}_fromBipolar(){return this.fmap(e=>(e+1)/2)}range(e,s){return this.mul(s-e).add(e)}rangex(e,s){return this.range(Math.log(e),Math.log(s)).fmap(Math.exp)}range2(e,s){return this._fromBipolar().range(e,s)}_bindWhole(e,s){const a=this,c=function(d){const _=function(k,$){return new Hap(e(k.whole,$.whole),$.part,$.value,Object.assign({},k.context,$.context,{locations:(k.context.locations||[]).concat($.context.locations||[])}))},b=function(k){return s(k.value).query(d.setSpan(k.part)).map($=>_(k,$))};return flatten$1(a.query(d).map(k=>b(k)))};return new Pattern$4(c)}bind(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._bindWhole(s,e)}join(){return this.bind(id$1)}outerBind(e){return this._bindWhole((s,a)=>s,e)}outerJoin(){return this.outerBind(id$1)}innerBind(e){return this._bindWhole((s,a)=>a,e)}innerJoin(){return this.innerBind(id$1)}_trigJoin(e=!1){const s=this;return new Pattern$4(a=>s.discreteOnly().query(a).map(c=>c.value.late(e?c.whole.begin:c.whole.begin.cyclePos()).query(a).map(d=>new Hap(d.whole?d.whole.intersection(c.whole):void 0,d.part.intersection(c.part),d.value).setContext(c.combineContext(d))).filter(d=>d.part)).flat())}_TrigzeroJoin(){return this._trigJoin(!0)}_squeezeJoin(){const e=this;function s(a){const c=e.discreteOnly().query(a);function d(b){const $=b.value._compressSpan(b.wholeOrPart().cycleArc()).query(a.setSpan(b.part));function j(_e,et){let tt;if(et.whole&&_e.whole&&(tt=et.whole.intersection(_e.whole),!tt))return;const nt=et.part.intersection(_e.part);if(!nt)return;const st=et.combineContext(_e);return new Hap(tt,nt,et.value,st)}return $.map(_e=>j(b,_e))}return flatten$1(c.map(d)).filter(b=>b)}return new Pattern$4(s)}_squeezeBind(e){return this.fmap(e)._squeezeJoin()}_apply(e){return e(this)}layer(...e){return stack(...e.map(s=>s(this)))}_patternify(e){const s=this;return function(...c){return c=c.map(_=>isPattern$1(_)?_.fmap(b=>b.value||b):_),sequence(...c).fmap(_=>e.call(s,_)).innerJoin()}}_fastGap(e){const s=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).mul(e).min(1)),b=d.add(c.end.sub(d).mul(e).min(1));return new TimeSpan$1(_,b)},a=function(c){const d=c.begin.sam(),_=d.add(c.begin.sub(d).div(e).min(1)),b=d.add(c.end.sub(d).div(e).min(1));return new TimeSpan$1(_,b)};return this.withQuerySpan(s).withHapSpan(a)._splitQueries()}_compress(e,s){return e.gt(s)||e.gt(1)||s.gt(1)||e.lt(0)||s.lt(0)?silence:this._fastGap(fraction(1).div(s.sub(e)))._late(e)}_compressSpan(e){return this._compress(e.begin,e.end)}_fast(e){return this.withQueryTime(a=>a.mul(e)).withHapTime(a=>a.div(e))}_slow(e){return this._fast(fraction(1).div(e))}_inside(e,s){return s(this._slow(e))._fast(e)}_outside(e,s){return s(this._fast(e))._slow(e)}_ply(e){return this.fmap(s=>pure(s)._fast(e))._squeezeJoin()}_chop(e){const a=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=function(d){return sequence(a.map(_=>Object.assign({},d,_)))};return this._squeezeBind(c)}_striate(e){const a=Array.from({length:e},(d,_)=>_).map(d=>({begin:d/e,end:(d+1)/e})),c=slowcat(...a);return this.set(c)._fast(e)}_cpm(e){return this._fast(e/60)}_early(e){return e=fraction(e),this.withQueryTime(s=>s.add(e)).withHapTime(s=>s.sub(e))}_late(e){return e=fraction(e),this._early(fraction(0).sub(e))}_zoom(e,s){s=fraction(s),e=fraction(e);const a=s.sub(e);return this.withQuerySpan(c=>c.withCycle(d=>d.mul(a).add(e))).withHapSpan(c=>c.withCycle(d=>d.sub(e).div(a)))._splitQueries()}_zoomArc(e){return this.zoom(e.begin,e.end)}_linger(e){return e==0?silence:e<0?this._zoom(e.add(1),1)._slow(e):this._zoom(0,e)._slow(e)}_color(e){return this._withContext(s=>wt(Ot({},s),{color:e}))}log(){return this._withHap(e=>{var s;return e.setContext(wt(Ot({},e.context),{logs:(((s=e.context)==null?void 0:s.logs)||[]).concat([e.show()])}))})}drawLine(){return console.log(drawLine(this)),this}_segment(e){return this.struct(pure(!0)._fast(e))}invert(){return this.fmap(e=>!e)}inv(){return this.invert()}when(e,s){const a=e._filterValues(id$1),c=e._filterValues(b=>!b),d=a.fmap(b=>k=>k).appRight(s(this)),_=c.fmap(b=>k=>k).appRight(this);return stack(d,_)}off(e,s){return stack(this,s(this.late(e)))}every(e,s){const a=this,c=Array(e-1).fill(a);return c.unshift(s(a)),slowcatPrime(...c)}brak(){return this.when(slowcat(!1,!0),e=>fastcat(e,silence)._late(.25))}rev(){const e=this,s=function(a){const c=a.span,d=c.begin.sam(),_=c.begin.nextSam(),b=function($){const j=$.withTime(et=>d.add(_.sub(et))),_e=j.begin;return j.begin=j.end,j.end=_e,j};return e.query(a.setSpan(b(c))).map($=>$.withSpan(b))};return new Pattern$4(s)._splitQueries()}palindrome(){return this.every(2,rev)}juxBy(e,s){e/=2;const a=function(_,b,k){return b in _?_[b]:k},c=this.withValue(_=>Object.assign({},_,{pan:a(_,"pan",.5)-e})),d=this.withValue(_=>Object.assign({},_,{pan:a(_,"pan",.5)+e}));return stack(c,s(d))}_jux(e){return this.juxBy(1,e)}stack(...e){return stack(this,...e)}sequence(...e){return sequence(this,...e)}seq(...e){return sequence(this,...e)}cat(...e){return cat(this,...e)}fastcat(...e){return fastcat(this,...e)}slowcat(...e){return slowcat(this,...e)}superimpose(...e){return this.stack(...e.map(s=>s(this)))}stutWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}stut(e,s,a){return this.stutWith(e,a,(c,d)=>c.velocity(Math.pow(s,d)))}_echoWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}_echo(e,s,a){return this._echoWith(e,s,(c,d)=>c.velocity(Math.pow(a,d)))}iter(e,s=!1){return slowcat(...listRange(0,e-1).map(a=>s?this.late(a/e):this.early(a/e)))}iterBack(e){return this.iter(e,!0)}_chunk(e,s,a=!1){const c=Array(e-1).fill(!1);c.unshift(!0);const d=sequence(...c).iter(e,a);return this.when(d,s)}_chunkBack(e,s){return this._chunk(e,s,!0)}edit(...e){return stack(...e.map(s=>s(this)))}pipe(e){return e(this)}_bypass(e){return e=Boolean(parseInt(e)),e?silence:this}hush(){return silence}_duration(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(e)))}_legato(e){return this.withHapSpan(s=>new TimeSpan$1(s.begin,s.begin.add(s.end.sub(s.begin).mul(e))))}_velocity(e){return this._withContext(s=>wt(Ot({},s),{velocity:(s.velocity||1)*e}))}_loopAt(e,s=1){return this.speed(1/e*s).unit("c").slow(e)}onTrigger(e){return this._withHap(s=>s.setContext(wt(Ot({},s.context),{onTrigger:e})))}}function _composeOp(o,e,s){function a(c){return c instanceof Object&&!(c instanceof Function)}return a(o)||a(e)?(a(o)||(o={value:o}),a(e)||(e={value:e}),unionWithObj(o,e,s)):s(o,e)}(function(){const o=a=>a._asNumber(),s={set:[(a,c)=>c],keep:[(a,c)=>a],keepif:[(a,c)=>c?a:void 0],add:[(a,c)=>a+c,a=>a._asNumber(!1,!0)],sub:[(a,c)=>a-c,o],mul:[(a,c)=>a*c,o],div:[(a,c)=>a/c,o],mod:[mod,o],pow:[Math.pow,o],_and:[(a,c)=>a&c,o],_or:[(a,c)=>a|c,o],_xor:[(a,c)=>a^c,o],_lshift:[(a,c)=>a<a>>c,o],lt:[(a,c)=>aa>c],lte:[(a,c)=>a<=c],gte:[(a,c)=>a>=c],eq:[(a,c)=>a==c],eqt:[(a,c)=>a===c],ne:[(a,c)=>a!=c],net:[(a,c)=>a!==c],and:[(a,c)=>a&&c],or:[(a,c)=>a||c],func:[(a,c)=>c(a)]};for(const[a,[c,d]]of Object.entries(s))for(const _ of["In","Out","Mix","Squeeze","SqueezeOut","Trig","Trigzero"])Pattern$4.prototype[a+_]=function(...b){var k=this;b=sequence(b),d&&(k=d(k),b=d(b));var $=k["_op"+_](b,j=>_e=>_composeOp(j,_e,c));return a==="keepif"&&($=$._removeUndefineds()),$},_==="Squeeze"&&(Pattern$4.prototype[a+"SqueezeIn"]=Pattern$4.prototype[a+_]),_==="In"?Pattern$4.prototype[a]=Pattern$4.prototype[a+_]:a==="set"&&(Pattern$4.prototype[_.toLowerCase()]=Pattern$4.prototype[a+_]);Pattern$4.prototype.struct=Pattern$4.prototype.keepifOut,Pattern$4.prototype.structAll=Pattern$4.prototype.keepOut,Pattern$4.prototype.mask=Pattern$4.prototype.keepifIn,Pattern$4.prototype.maskAll=Pattern$4.prototype.keepIn,Pattern$4.prototype.reset=Pattern$4.prototype.keepifTrig,Pattern$4.prototype.resetAll=Pattern$4.prototype.keepTrig,Pattern$4.prototype.restart=Pattern$4.prototype.keepifTrigzero,Pattern$4.prototype.restartAll=Pattern$4.prototype.keepTrigzero})();Pattern$4.prototype.patternified=["apply","chop","color","cpm","duration","early","fast","jux","late","legato","linger","ply","segment","striate","slow","velocity"];Pattern$4.prototype.factories={pure,stack,slowcat,fastcat,cat,timeCat,sequence,seq:seq$2,polymeter,pm,polyrhythm,pr};const silence=new Pattern$4(o=>[]);function pure(o){function e(s){return s.span.spanCycles.map(a=>new Hap(fraction(a.begin).wholeCycle(),a,o))}return new Pattern$4(e)}function isPattern$1(o){return o instanceof Pattern$4}function reify$1(o){return isPattern$1(o)?o:pure(o)}function stack(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=s=>flatten$1(o.map(a=>a.query(s)));return new Pattern$4(e)}function slowcat(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=function(s){const a=s.span,c=mod(a.begin.sam(),o.length),d=o[c];if(!d)return[];const _=a.begin.floor().sub(a.begin.div(o.length).floor());return d.withHapTime(b=>b.add(_)).query(s.setSpan(a.withTime(b=>b.sub(_))))};return new Pattern$4(e)._splitQueries()}function slowcatPrime(...o){o=o.map(reify$1);const e=function(s){const a=Math.floor(s.span.begin)%o.length;return o[a].query(s)};return new Pattern$4(e)._splitQueries()}function fastcat(...o){return slowcat(...o)._fast(o.length)}function cat(...o){return slowcat(...o)}function timeCat(...o){const e=o.map(c=>c[0]).reduce((c,d)=>c.add(d),fraction(0));let s=fraction(0);const a=[];for(const[c,d]of o){const _=s.add(c);a.push(reify$1(d)._compress(s.div(e),_.div(e))),s=_}return stack(...a)}function sequence(...o){return fastcat(...o)}function seq$2(...o){return fastcat(...o)}function _sequenceCount(o){return Array.isArray(o)?o.length==0?[silence,0]:o.length==1?_sequenceCount(o[0]):[fastcat(...o.map(e=>_sequenceCount(e)[0])),o.length]:[reify$1(o),1]}function polymeterSteps(o,...e){const s=e.map(c=>_sequenceCount(c));if(s.length==0)return silence;o==0&&(o=s[0][1]);const a=[];for(const c of s)c[1]==0&&next,o==c[1]?a.push(c[0]):a.push(c[0]._fast(fraction(o).div(fraction(c[1]))));return stack(...a)}function polymeter(...o){return polymeterSteps(0,...o)}function pm(...o){polymeter(...o)}function polyrhythm(...o){const e=o.map(s=>sequence(s));return e.length==0?silence:stack(...e)}function pr(o){polyrhythm(o)}const add$1=curry((o,e)=>e.add(o)),chunk=curry((o,e)=>e.chunk(o)),chunkBack=curry((o,e)=>e.chunkBack(o)),div=curry((o,e)=>e.div(o)),early=curry((o,e)=>e.early(o)),echo=curry((o,e,s,a)=>a.echo(o,e,s)),every=curry((o,e,s)=>s.every(o,e)),fast=curry((o,e)=>e.fast(o)),inv=o=>o.inv(),invert=o=>o.invert(),iter=curry((o,e)=>e.iter(o)),iterBack=curry((o,e)=>e.iter(o)),jux=curry((o,e)=>e.jux(o)),juxBy=curry((o,e,s)=>s.juxBy(o,e)),late=curry((o,e)=>e.late(o)),linger=curry((o,e)=>e.linger(o)),mask=curry((o,e)=>e.mask(o)),mul=curry((o,e)=>e.mul(o)),off=curry((o,e,s)=>s.off(o,e)),ply=curry((o,e)=>e.ply(o)),range$1=curry((o,e,s)=>s.range(o,e)),range2=curry((o,e,s)=>s.range2(o,e)),rev=o=>o.rev(),slow=curry((o,e)=>e.slow(o)),struct=curry((o,e)=>e.struct(o)),sub=curry((o,e)=>e.sub(o)),superimpose=curry((o,e)=>e.superimpose(...o)),set=curry((o,e)=>e.set(o)),when=curry((o,e,s)=>s.when(o,e));Pattern$4.prototype.composable={fast,slow,early,late,superimpose};function makeComposable(o){return Object.entries(Pattern$4.prototype.composable).forEach(([e,s])=>{o[e]=(...a)=>{const c=compose(o,s(...a));return makeComposable(c)}}),o}const patternify2=o=>(e,s,a)=>e.fmap(c=>d=>o.call(a,c,d)).appLeft(s).innerJoin(),patternify3=o=>(e,s,a,c)=>e.fmap(d=>_=>b=>o.call(c,d,_,b)).appLeft(s).appLeft(a).innerJoin(),patternify4=o=>(e,s,a,c,d)=>e.fmap(_=>b=>k=>$=>o.call(d,_,b,k,$)).appLeft(s).appLeft(a).appLeft(c).innerJoin();Pattern$4.prototype.echo=function(...o){return o=o.map(reify$1),patternify3(Pattern$4.prototype._echo)(...o,this)};Pattern$4.prototype.echoWith=function(...o){return o=o.map(reify$1),patternify3(Pattern$4.prototype._echoWith)(...o,this)};Pattern$4.prototype.chunk=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._chunk)(...o,this)};Pattern$4.prototype.chunkBack=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._chunkBack)(...o,this)};Pattern$4.prototype.loopAt=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._loopAt)(...o,this)};Pattern$4.prototype.zoom=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._zoom)(...o,this)};Pattern$4.prototype.compress=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._compress)(...o,this)};Pattern$4.prototype.outside=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._outside)(...o,this)};Pattern$4.prototype.inside=function(...o){return o=o.map(reify$1),patternify2(Pattern$4.prototype._inside)(...o,this)};Pattern$4.prototype.bootstrap=function(){const o=Object.fromEntries(Object.entries(Pattern$4.prototype.composable).map(([e,s])=>(Pattern$4.prototype[e]&&(Pattern$4.prototype[e]=makeComposable(Pattern$4.prototype[e])),[e,curry(s,makeComposable)])));return this.patternified.forEach(e=>{Pattern$4.prototype[e]=function(...s){return this._patternify(Pattern$4.prototype["_"+e])(...s)}}),o};Pattern$4.prototype.define=(o,e,s={})=>{s.composable&&(Pattern$4.prototype.composable[o]=e),s.patternified&&(Pattern$4.prototype.patternified=Pattern$4.prototype.patternified.concat([o])),Pattern$4.prototype.bootstrap()};Pattern$4.prototype.define("hush",o=>o.hush(),{patternified:!1,composable:!0});Pattern$4.prototype.define("bypass",o=>o.bypass(on),{patternified:!0,composable:!0});const controls={},generic_params=[["s","s","sound"],["f","n","The note or sample number to choose for a synth or sampleset"],["f","note","The note or pitch to play a sound or synth with"],["f","accelerate","a pattern of numbers that speed up (or slow down) samples while they play."],["f","gain","a pattern of numbers that specify volume. Values less than 1 make the sound quieter. Values greater than 1 make the sound louder. For the linear equivalent, see @amp@."],["f","amp","like @gain@, but linear."],["f","attack","a pattern of numbers to specify the attack time (in seconds) of an envelope applied to each sample."],["f","decay",""],["f","sustain",""],["f","release","a pattern of numbers to specify the release time (in seconds) of an envelope applied to each sample."],["f","hold","a pattern of numbers to specify the hold time (in seconds) of an envelope applied to each sample. Only takes effect if `attack` and `release` are also specified."],["f","bandf","A pattern of numbers from 0 to 1. Sets the center frequency of the band-pass filter."],["f","bandq","a pattern of anumbers from 0 to 1. Sets the q-factor of the band-pass filter."],["f","begin","a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. `0.25` to cut off the first quarter from each sample."],["f","end","the same as `begin`, but cuts the end off samples, shortening them; e.g. `0.75` to cut off the last quarter of each sample."],["f","loop","loops the sample (from `begin` to `end`) the specified number of times."],["f","legato","controls the amount of overlap between two adjacent sounds"],["f","crush","bit crushing, a pattern of numbers from 1 (for drastic reduction in bit-depth) to 16 (for barely no reduction)."],["f","coarse","fake-resampling, a pattern of numbers for lowering the sample rate, i.e. 1 for original 2 for half, 3 for a third and so on."],["i","channel","choose the channel the pattern is sent to in superdirt"],["i","cut","In the style of classic drum-machines, `cut` will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open."],["f","cutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the low-pass filter."],["f","hcutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the high-pass filter. Also has alias @hpf@"],["f","hresonance","a pattern of numbers from 0 to 1. Applies the resonance of the high-pass filter. Has alias @hpq@"],["f","resonance","a pattern of numbers from 0 to 1. Specifies the resonance of the low-pass filter."],["f","djf","DJ filter, below 0.5 is low pass filter, above is high pass filter."],["f","delay","a pattern of numbers from 0 to 1. Sets the level of the delay signal."],["f","delayfeedback","a pattern of numbers from 0 to 1. Sets the amount of delay feedback."],["f","delaytime","a pattern of numbers from 0 to 1. Sets the length of the delay."],["f","lock","A pattern of numbers. Specifies whether delaytime is calculated relative to cps. When set to 1, delaytime is a direct multiple of a cycle."],["f","detune",""],["f","dry","when set to `1` will disable all reverb for this pattern. See `room` and `size` for more information about reverb."],["f","fadeTime","Used when using begin/end or chop/striate and friends, to change the fade out time of the 'grain' envelope."],["f","fadeInTime","As with fadeTime, but controls the fade in time of the grain envelope. Not used if the grain begins at position 0 in the sample."],["f","freq",""],["f","gate",""],["f","leslie",""],["f","lrate",""],["f","lsize",""],["f","degree",""],["f","mtranspose",""],["f","ctranspose",""],["f","harmonic",""],["f","stepsPerOctave",""],["f","octaveR",""],["f","nudge","Nudges events into the future by the specified number of seconds. Negative numbers work up to a point as well (due to internal latency)"],["i","octave",""],["f","offset",""],["i","orbit","a pattern of numbers. An `orbit` is a global parameter context for patterns. Patterns with the same orbit will share hardware output bus offset and global effects, e.g. reverb and delay. The maximum number of orbits is specified in the superdirt startup, numbers higher than maximum will wrap around."],["f","overgain",""],["f","overshape",""],["f","pan","a pattern of numbers between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel)"],["f","panspan","a pattern of numbers between -inf and inf, which controls how much multichannel output is fanned out (negative is backwards ordering)"],["f","pansplay","a pattern of numbers between 0.0 and 1.0, which controls the multichannel spread range (multichannel only)"],["f","panwidth","a pattern of numbers between 0.0 and inf, which controls how much each channel is distributed over neighbours (multichannel only)"],["f","panorient","a pattern of numbers between -1.0 and 1.0, which controls the relative position of the centre pan in a pair of adjacent speakers (multichannel only)"],["f","rate","used in SuperDirt softsynths as a control rate or 'speed'"],["f","slide",""],["f","semitone",""],["f","velocity",""],["f","voice",""],["f","room","a pattern of numbers from 0 to 1. Sets the level of reverb."],["f","size","a pattern of numbers from 0 to 1. Sets the perceptual size (reverb time) of the `room` to be used in reverb."],["f","shape","wave shaping distortion, a pattern of numbers from 0 for no distortion up to 1 for loads of distortion."],["f","speed","a pattern of numbers which changes the speed of sample playback, i.e. a cheap way of changing pitch. Negative values will play the sample backwards!"],["s","unit",'used in conjunction with `speed`, accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using `unit "c"` means `speed` will be interpreted in units of cycles, e.g. `speed "1"` means samples will be stretched to fill a cycle. Using `unit "s"` means the playback speed will be adjusted so that the duration is the number of seconds specified by `speed`.'],["f","squiz",""],["f","stutterdepth",""],["f","stuttertime",""],["f","timescale",""],["f","timescalewin",""],["s","vowel","formant filter to make things sound like vowels, a pattern of either `a`, `e`, `i`, `o` or `u`. Use a rest (`~`) for no effect."],["f","waveloss",""],["f","dur",""],["f","expression",""],["f","sustainpedal",""],["f","tremolodepth","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","tremolorate","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","phaserdepth","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","phaserrate","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","fshift","frequency shifter"],["f","fshiftnote","frequency shifter"],["f","fshiftphase","frequency shifter"],["f","triode","tube distortion"],["f","krush","shape/bass enhancer"],["f","kcutoff",""],["f","octer","octaver effect"],["f","octersub","octaver effect"],["f","octersubsub","octaver effect"],["f","ring","ring modulation"],["f","ringf","ring modulation"],["f","ringdf","ring modulation"],["f","distort","noisy fuzzy distortion"],["f","freeze","Spectral freeze"],["f","xsdelay",""],["f","tsdelay",""],["f","real","Spectral conform"],["f","imag",""],["f","enhance","Spectral enhance"],["f","partials",""],["f","comb","Spectral comb"],["f","smear","Spectral smear"],["f","scram","Spectral scramble"],["f","binshift","Spectral binshift"],["f","hbrick","High pass sort of spectral filter"],["f","lbrick","Low pass sort of spectral filter"],["f","midichan",""],["f","control",""],["f","ccn",""],["f","ccv",""],["f","polyTouch",""],["f","midibend",""],["f","miditouch",""],["f","ctlNum",""],["f","frameRate",""],["f","frames",""],["f","hours",""],["s","midicmd",""],["f","minutes",""],["f","progNum",""],["f","seconds",""],["f","songPtr",""],["f","uid",""],["f","val",""],["f","cps",""]],_name=(o,...e)=>sequence(...e).withValue(s=>({[o]:s})),_setter=o=>function(...e){return this.set(o(...e))};generic_params.forEach(([o,e,s])=>{controls[e]=(...a)=>_name(e,...a),Pattern$4.prototype[e]=_setter(controls[e])});controls.createParam=o=>(Pattern$4.prototype[o]=_setter(controls[o]),(...e)=>_name(o,...e));controls.createParams=(...o)=>o.reduce((e,s)=>Object.assign(e,{[s]:createParam(s)}),{});function bjorklund(o,e){for(var s=[],a=[],c=[e],d=o-e,_=0,b=function(k){if(k==-1)s.push(0);else if(k==-2)s.push(1);else{for(var $=0;$1;)a.push(Math.floor(d/c[_])),c.push(d%c[_]),d=c[_],_++;return a.push(d),b(_),s.reverse()}var bjork=function(o,e){return o>e?bjorklund(o,e):bjorklund(e,o)};const euclid=(o,e,s=0)=>{const a=bjork(e,o);return s?rotate(a,-s):a};Pattern$4.prototype.euclid=function(o,e,s=0){return this.struct(euclid(o,e,s))};Pattern$4.prototype.euclidLegato=function(o,e,s=0){const a=euclid(o,e,s),c=a.indexOf(1),d=rotate(a,c).join("").split("1").slice(1).map(_=>[_.length+1,!0]);return this.struct(timeCat(...d)).late(fraction(c).div(e))};function steady(o){return new Pattern$4(e=>[new Hap(void 0,e.span,o)])}const signal=o=>{const e=s=>[new Hap(void 0,s.span,o(s.span.midpoint()))];return new Pattern$4(e)},isaw=signal(o=>1-o%1),isaw2=isaw._toBipolar(),saw=signal(o=>o%1),saw2=saw._toBipolar(),sine2=signal(o=>Math.sin(Math.PI*2*o)),sine=sine2._fromBipolar(),cosine=sine._early(fraction(1).div(4)),cosine2=sine2._early(fraction(1).div(4)),square=signal(o=>Math.floor(o*2%2)),square2=square._toBipolar(),tri=fastcat(isaw,saw),tri2=fastcat(isaw2,saw2),time=signal(id$1),xorwise=o=>{const e=o<<13^o,s=e>>17^e;return s<<5^s},_frac=o=>o-Math.trunc(o),timeToIntSeed=o=>xorwise(Math.trunc(_frac(o/300)*536870912)),intSeedToRand=o=>o%536870912/536870912,timeToRand=o=>Math.abs(intSeedToRand(timeToIntSeed(o))),rand=signal(timeToRand),_brandBy=o=>rand.fmap(e=>ereify$1(o).fmap(_brandBy).innerJoin(),brand=_brandBy(.5),_irand=o=>rand.fmap(e=>Math.trunc(e*o)),irand=o=>reify$1(o).fmap(_irand).innerJoin(),chooseWith=(o,e)=>(e=e.map(reify$1),e.length==0?silence:o.range(0,e.length).fmap(s=>e[Math.floor(s)]).outerJoin()),choose=(...o)=>chooseWith(rand,o),_wchooseWith=function(o,...e){const s=e.map(b=>reify$1(b[0])),a=[];let c=0;for(const b of e)c+=b[1],a.push(c);const d=c,_=function(b){const k=b*d;return s[a.findIndex($=>$>k,a)]};return o.fmap(_)},wchooseWith=(...o)=>_wchooseWith(...o).outerJoin(),wchoose=(...o)=>wchooseWith(rand,...o),wchooseCycles=(...o)=>_wchooseWith(rand,...o).innerJoin(),perlinWith=o=>{const e=o.fmap(Math.floor),s=o.fmap(d=>Math.floor(d)+1),a=d=>6*d**5-15*d**4+10*d**3,c=d=>_=>b=>_+a(d)*(b-_);return o.sub(e).fmap(c).appBoth(e.fmap(timeToRand)).appBoth(s.fmap(timeToRand))},perlin=perlinWith(time);Pattern$4.prototype._degradeByWith=function(o,e){return this.fmap(s=>a=>s).appLeft(o._filterValues(s=>s>e))};Pattern$4.prototype._degradeBy=function(o){return this._degradeByWith(rand,o)};Pattern$4.prototype.degrade=function(){return this._degradeBy(.5)};Pattern$4.prototype._undegradeBy=function(o){return this._degradeByWith(rand.fmap(e=>1-e),o)};Pattern$4.prototype.undegrade=function(){return this._undegradeBy(.5)};Pattern$4.prototype._sometimesBy=function(o,e){return stack(this._degradeBy(o),e(this._undegradeBy(1-o)))};Pattern$4.prototype.sometimesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesBy(a,e)).innerJoin()};Pattern$4.prototype._sometimesByPre=function(o,e){return stack(this._degradeBy(o),e(this).undegradeBy(1-o))};Pattern$4.prototype.sometimesByPre=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesByPre(a,e)).innerJoin()};Pattern$4.prototype.sometimes=function(o){return this._sometimesBy(.5,o)};Pattern$4.prototype.sometimesPre=function(o){return this._sometimesByPre(.5,o)};Pattern$4.prototype._someCyclesBy=function(o,e){return stack(this._degradeByWith(rand._segment(1),o),e(this._degradeByWith(rand.fmap(s=>1-s)._segment(1),1-o)))};Pattern$4.prototype.someCyclesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._someCyclesBy(a,e)).innerJoin()};Pattern$4.prototype.someCycles=function(o){return this._someCyclesBy(.5,o)};Pattern$4.prototype.often=function(o){return this.sometimesBy(.75,o)};Pattern$4.prototype.rarely=function(o){return this.sometimesBy(.25,o)};Pattern$4.prototype.almostNever=function(o){return this.sometimesBy(.1,o)};Pattern$4.prototype.almostAlways=function(o){return this.sometimesBy(.9,o)};Pattern$4.prototype.never=function(o){return this};Pattern$4.prototype.always=function(o){return o(this)};Pattern$4.prototype.patternified.push("degradeBy","undegradeBy");let synth$1;try{synth$1=window==null?void 0:window.speechSynthesis}catch{console.warn("cannot use window: not in browser?")}let allVoices=synth$1==null?void 0:synth$1.getVoices();function speak(o,e,s){synth$1.cancel();const a=new SpeechSynthesisUtterance(o);a.lang=e,allVoices=synth$1.getVoices();const c=allVoices.filter(d=>d.lang.includes(e));typeof s=="number"?a.voice=c[s%c.length]:typeof s=="string"&&(a.voice=c.find(d=>d.name===d)),speechSynthesis.speak(a)}Pattern$4.prototype._speak=function(o,e){return this._withHap(s=>{const a=(c,d)=>{speak(d.value,o,e)};return s.setContext(wt(Ot({},s.context),{onTrigger:a}))})};Pattern$4.prototype.speak=function(o,e){return patternify2(Pattern$4.prototype._speak)(reify(o),reify(e),this)};var gist=route=>fetch(`https://gist.githubusercontent.com/${route}?cachebust=${Date.now()}`).then(o=>o.text()).then(code=>eval(code)),gist$1=Object.freeze(Object.defineProperty({__proto__:null,default:gist},Symbol.toStringTag,{value:"Module"})),strudel=Object.freeze(Object.defineProperty({__proto__:null,Fraction:fraction,gist:gist$1,Hap,Pattern:Pattern$4,silence,pure,isPattern:isPattern$1,reify:reify$1,stack,slowcat,slowcatPrime,fastcat,cat,timeCat,sequence,seq:seq$2,polymeterSteps,polymeter,pm,polyrhythm,pr,add:add$1,chunk,chunkBack,div,early,echo,every,fast,inv,invert,iter,iterBack,jux,juxBy,late,linger,mask,mul,off,ply,range:range$1,range2,rev,slow,struct,sub,superimpose,set,when,makeComposable,patternify2,patternify3,patternify4,steady,signal,isaw,isaw2,saw,saw2,sine2,sine,cosine,cosine2,square,square2,tri,tri2,time,rand,_brandBy,brandBy,brand,_irand,irand,chooseWith,choose,wchoose,wchooseCycles,perlinWith,perlin,State:State$1,TimeSpan:TimeSpan$1,isNote:isNote$3,tokenizeNote,toMidi,fromMidi,mod,getPlayableNoteValue,getFrequency,rotate,pipe,compose,removeUndefineds,flatten:flatten$1,id:id$1,constant,listRange,curry},Symbol.toStringTag,{value:"Module"}));const scale=(o,e,s)=>o*(s-e)+e;Pattern$4.prototype.pianoroll=function({cycles:o=4,playhead:e=.5,overscan:s=1,flipTime:a=0,flipValues:c=0,hideNegative:d=!1,inactive:_="#C9E597",active:b="#FFCA28",background:k="transparent",minMidi:$=10,maxMidi:j=90,autorange:_e=0,timeframe:et,fold:tt=0,vertical:nt=0}={}){const st=getDrawContext(),rt=st.canvas.width,it=st.canvas.height;let at=-o*e,ot=o*(1-e);et&&(console.warn("timeframe is deprecated! use from/to instead"),at=0,ot=et),!_e&&tt&&console.warn("disabling autorange has no effect when fold is enabled");const ht=nt?it:rt,ct=nt?rt:it;let lt=nt?[ht,0]:[0,ht];const ut=ot-at,pt=nt?[0,ct]:[ct,0];let dt=j-$+1,gt=ct/dt,yt=[];a&<.reverse(),c&&pt.reverse();const ft=scale(-at/ut,...lt);return this.draw((mt,Et,vt)=>{mt.fillStyle=k,mt.clearRect(0,0,rt,it),mt.fillRect(0,0,rt,it);const At=_t=>(!d||_t.whole.begin>=0)&&_t.whole.begin<=vt+ot&&_t.whole.end>=vt+at;Et.filter(At).forEach(_t=>{var Mt,It,Ft;const Dt=_t.whole.begin<=vt&&_t.whole.end>vt;mt.fillStyle=((Mt=_t.context)==null?void 0:Mt.color)||_,mt.strokeStyle=((It=_t.context)==null?void 0:It.color)||b,mt.globalAlpha=(Ft=_t.context.velocity)!=null?Ft:1,mt.beginPath(),nt?(mt.moveTo(0,ft),mt.lineTo(ct,ft)):(mt.moveTo(ft,0),mt.lineTo(ft,ct)),mt.stroke();const bt=scale((_t.whole.begin-(a?ot:at))/ut,...lt);let Tt=scale(_t.duration/ut,0,ht);const St=scale(tt?yt.indexOf(_t.value)/yt.length:(Number(_t.value)-$)/dt,...pt);let Ct=0;const xt=scale(vt/ut,...lt);let Rt;nt?Rt=[St+1-(c?gt:0),ht-xt+bt+Ct+1-(a?0:Tt),gt-2,Tt-2]:Rt=[bt-xt+Ct+1-(a?Tt:0),St+1-(c?0:gt),Tt-2,gt-2],Dt?mt.strokeRect(...Rt):mt.fillRect(...Rt)})},{from:at-s,to:ot+s,onQuery:mt=>{const Et=Dt=>Number(Dt.value),{min:vt,max:At,values:_t}=mt.reduce(({min:Dt,max:bt,values:Tt},St)=>{const Ct=Et(St);return{min:Ctbt?Ct:bt,values:Tt.includes(Ct)?Tt:[...Tt,Ct]}},{min:1/0,max:-1/0,values:[]});_e&&($=vt,j=At,dt=j-$+1),yt=_t.sort((Dt,bt)=>Dt-bt),gt=tt?ct/yt.length:ct/dt}}),this};const version="14.7.77",createExtendedExponentialRampToValueAutomationEvent=(o,e,s)=>({endTime:e,insertTime:s,type:"exponentialRampToValue",value:o}),createExtendedLinearRampToValueAutomationEvent=(o,e,s)=>({endTime:e,insertTime:s,type:"linearRampToValue",value:o}),createSetValueAutomationEvent=(o,e)=>({startTime:e,type:"setValue",value:o}),createSetValueCurveAutomationEvent=(o,e,s)=>({duration:s,startTime:e,type:"setValueCurve",values:o}),getTargetValueAtTime=(o,e,{startTime:s,target:a,timeConstant:c})=>a+(e-a)*Math.exp((s-o)/c),isExponentialRampToValueAutomationEvent=o=>o.type==="exponentialRampToValue",isLinearRampToValueAutomationEvent=o=>o.type==="linearRampToValue",isAnyRampToValueAutomationEvent=o=>isExponentialRampToValueAutomationEvent(o)||isLinearRampToValueAutomationEvent(o),isSetValueAutomationEvent=o=>o.type==="setValue",isSetValueCurveAutomationEvent=o=>o.type==="setValueCurve",getValueOfAutomationEventAtIndexAtTime=(o,e,s,a)=>{const c=o[e];return c===void 0?a:isAnyRampToValueAutomationEvent(c)||isSetValueAutomationEvent(c)?c.value:isSetValueCurveAutomationEvent(c)?c.values[c.values.length-1]:getTargetValueAtTime(s,getValueOfAutomationEventAtIndexAtTime(o,e-1,c.startTime,a),c)},getEndTimeAndValueOfPreviousAutomationEvent=(o,e,s,a,c)=>s===void 0?[a.insertTime,c]:isAnyRampToValueAutomationEvent(s)?[s.endTime,s.value]:isSetValueAutomationEvent(s)?[s.startTime,s.value]:isSetValueCurveAutomationEvent(s)?[s.startTime+s.duration,s.values[s.values.length-1]]:[s.startTime,getValueOfAutomationEventAtIndexAtTime(o,e-1,s.startTime,c)],isCancelAndHoldAutomationEvent=o=>o.type==="cancelAndHold",isCancelScheduledValuesAutomationEvent=o=>o.type==="cancelScheduledValues",getEventTime=o=>isCancelAndHoldAutomationEvent(o)||isCancelScheduledValuesAutomationEvent(o)?o.cancelTime:isExponentialRampToValueAutomationEvent(o)||isLinearRampToValueAutomationEvent(o)?o.endTime:o.startTime,getExponentialRampValueAtTime=(o,e,s,{endTime:a,value:c})=>s===c?c:0s+(o-e)/(a-e)*(c-s),interpolateValue=(o,e)=>{const s=Math.floor(e),a=Math.ceil(e);return s===a?o[s]:(1-(e-s))*o[s]+(1-(a-e))*o[a]},getValueCurveValueAtTime=(o,{duration:e,startTime:s,values:a})=>{const c=(o-s)/e*(a.length-1);return interpolateValue(a,c)},isSetTargetAutomationEvent=o=>o.type==="setTarget";class AutomationEventList{constructor(e){this._automationEvents=[],this._currenTime=0,this._defaultValue=e}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(e){const s=getEventTime(e);if(isCancelAndHoldAutomationEvent(e)||isCancelScheduledValuesAutomationEvent(e)){const a=this._automationEvents.findIndex(d=>isCancelScheduledValuesAutomationEvent(e)&&isSetValueCurveAutomationEvent(d)?d.startTime+d.duration>=s:getEventTime(d)>=s),c=this._automationEvents[a];if(a!==-1&&(this._automationEvents=this._automationEvents.slice(0,a)),isCancelAndHoldAutomationEvent(e)){const d=this._automationEvents[this._automationEvents.length-1];if(c!==void 0&&isAnyRampToValueAutomationEvent(c)){if(isSetTargetAutomationEvent(d))throw new Error("The internal list is malformed.");const _=isSetValueCurveAutomationEvent(d)?d.startTime+d.duration:getEventTime(d),b=isSetValueCurveAutomationEvent(d)?d.values[d.values.length-1]:d.value,k=isExponentialRampToValueAutomationEvent(c)?getExponentialRampValueAtTime(s,_,b,c):getLinearRampValueAtTime(s,_,b,c),$=isExponentialRampToValueAutomationEvent(c)?createExtendedExponentialRampToValueAutomationEvent(k,s,this._currenTime):createExtendedLinearRampToValueAutomationEvent(k,s,this._currenTime);this._automationEvents.push($)}d!==void 0&&isSetTargetAutomationEvent(d)&&this._automationEvents.push(createSetValueAutomationEvent(this.getValue(s),s)),d!==void 0&&isSetValueCurveAutomationEvent(d)&&d.startTime+d.duration>s&&(this._automationEvents[this._automationEvents.length-1]=createSetValueCurveAutomationEvent(new Float32Array([6,7]),d.startTime,s-d.startTime))}}else{const a=this._automationEvents.findIndex(_=>getEventTime(_)>s),c=a===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[a-1];if(c!==void 0&&isSetValueCurveAutomationEvent(c)&&getEventTime(c)+c.duration>s)return!1;const d=isExponentialRampToValueAutomationEvent(e)?createExtendedExponentialRampToValueAutomationEvent(e.value,e.endTime,this._currenTime):isLinearRampToValueAutomationEvent(e)?createExtendedLinearRampToValueAutomationEvent(e.value,s,this._currenTime):e;if(a===-1)this._automationEvents.push(d);else{if(isSetValueCurveAutomationEvent(e)&&s+e.duration>getEventTime(this._automationEvents[a]))return!1;this._automationEvents.splice(a,0,d)}}return!0}flush(e){const s=this._automationEvents.findIndex(a=>getEventTime(a)>e);if(s>1){const a=this._automationEvents.slice(s-1),c=a[0];isSetTargetAutomationEvent(c)&&a.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents,s-2,c.startTime,this._defaultValue),c.startTime)),this._automationEvents=a}}getValue(e){if(this._automationEvents.length===0)return this._defaultValue;const s=this._automationEvents.findIndex(_=>getEventTime(_)>e),a=this._automationEvents[s],c=(s===-1?this._automationEvents.length:s)-1,d=this._automationEvents[c];if(d!==void 0&&isSetTargetAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)||a.insertTime>e))return getTargetValueAtTime(e,getValueOfAutomationEventAtIndexAtTime(this._automationEvents,c-1,d.startTime,this._defaultValue),d);if(d!==void 0&&isSetValueAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)))return d.value;if(d!==void 0&&isSetValueCurveAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)||d.startTime+d.duration>e))return e({cancelTime:o,type:"cancelAndHold"}),createCancelScheduledValuesAutomationEvent=o=>({cancelTime:o,type:"cancelScheduledValues"}),createExponentialRampToValueAutomationEvent=(o,e)=>({endTime:e,type:"exponentialRampToValue",value:o}),createLinearRampToValueAutomationEvent=(o,e)=>({endTime:e,type:"linearRampToValue",value:o}),createSetTargetAutomationEvent=(o,e,s)=>({startTime:e,target:o,timeConstant:s,type:"setTarget"}),createAbortError=()=>new DOMException("","AbortError"),createAddActiveInputConnectionToAudioNode=o=>(e,s,[a,c,d],_)=>{o(e[c],[s,a,d],b=>b[0]===s&&b[1]===a,_)},createAddAudioNodeConnections=o=>(e,s,a)=>{const c=[];for(let d=0;d(e,s)=>{o.set(e,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:s})},ACTIVE_AUDIO_NODE_STORE=new WeakSet,AUDIO_NODE_CONNECTIONS_STORE=new WeakMap,AUDIO_NODE_STORE=new WeakMap,AUDIO_PARAM_CONNECTIONS_STORE=new WeakMap,AUDIO_PARAM_STORE=new WeakMap,CONTEXT_STORE=new WeakMap,EVENT_LISTENERS=new WeakMap,CYCLE_COUNTERS=new WeakMap,NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS=new WeakMap,NODE_TO_PROCESSOR_MAPS=new WeakMap,handler={construct(){return handler}},isConstructible=o=>{try{const e=new Proxy(o,handler);new e}catch{return!1}return!0},IMPORT_STATEMENT_REGEX=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,splitImportStatements=(o,e)=>{const s=[];let a=o.replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX);for(;c!==null;){const d=c[1].slice(1,-1),_=c[0].replace(/([\s]+)?;?$/,"").replace(d,new URL(d,e).toString());s.push(_),a=a.slice(c[0].length).replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX)}return[s.join(";"),a]},verifyParameterDescriptors=o=>{if(o!==void 0&&!Array.isArray(o))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},verifyProcessorCtor=o=>{if(!isConstructible(o))throw new TypeError("The given value for processorCtor should be a constructor.");if(o.prototype===null||typeof o.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},createAddAudioWorkletModule=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{let tt=0;return(nt,st,rt={credentials:"omit"})=>{const it=j.get(nt);if(it!==void 0&&it.has(st))return Promise.resolve();const at=$.get(nt);if(at!==void 0){const ct=at.get(st);if(ct!==void 0)return ct}const ot=d(nt),ht=ot.audioWorklet===void 0?c(st).then(([ct,lt])=>{const[ut,pt]=splitImportStatements(ct,lt),dt=`${ut};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${pt} +})})(window,'_AWGS')`;return s(dt)}).then(()=>{const ct=et._AWGS.pop();if(ct===void 0)throw new SyntaxError;a(ot.currentTime,ot.sampleRate,()=>ct(class{},void 0,(lt,ut)=>{if(lt.trim()==="")throw e();const pt=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(ot);if(pt!==void 0){if(pt.has(lt))throw e();verifyProcessorCtor(ut),verifyParameterDescriptors(ut.parameterDescriptors),pt.set(lt,ut)}else verifyProcessorCtor(ut),verifyParameterDescriptors(ut.parameterDescriptors),NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(ot,new Map([[lt,ut]]))},ot.sampleRate,void 0,void 0))}):Promise.all([c(st),Promise.resolve(o(_e,_e))]).then(([[ct,lt],ut])=>{const pt=tt+1;tt=pt;const[dt,gt]=splitImportStatements(ct,lt),Et=`${dt};((AudioWorkletProcessor,registerProcessor)=>{${gt} +})(${ut?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${ut?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${ut?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${pt}',class extends AudioWorkletProcessor{process(){return !1}})`,vt=new Blob([Et],{type:"application/javascript; charset=utf-8"}),At=URL.createObjectURL(vt);return ot.audioWorklet.addModule(At,rt).then(()=>{if(b(ot))return ot;const _t=_(ot);return _t.audioWorklet.addModule(At,rt).then(()=>_t)}).then(_t=>{if(k===null)throw new SyntaxError;try{new k(_t,`__sac${pt}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(At))});return at===void 0?$.set(nt,new Map([[st,ht]])):at.set(st,ht),ht.then(()=>{const ct=j.get(nt);ct===void 0?j.set(nt,new Set([st])):ct.add(st)}).finally(()=>{const ct=$.get(nt);ct!==void 0&&ct.delete(st)}),ht}},getValueForKey=(o,e)=>{const s=o.get(e);if(s===void 0)throw new Error("A value with the given key could not be found.");return s},pickElementFromSet=(o,e)=>{const s=Array.from(o).filter(e);if(s.length>1)throw Error("More than one element was found.");if(s.length===0)throw Error("No element was found.");const[a]=s;return o.delete(a),a},deletePassiveInputConnectionToAudioNode=(o,e,s,a)=>{const c=getValueForKey(o,e),d=pickElementFromSet(c,_=>_[0]===s&&_[1]===a);return c.size===0&&o.delete(e),d},getEventListenersOfAudioNode=o=>getValueForKey(EVENT_LISTENERS,o),setInternalStateToActive=o=>{if(ACTIVE_AUDIO_NODE_STORE.has(o))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE.add(o),getEventListenersOfAudioNode(o).forEach(e=>e(!0))},isAudioWorkletNode=o=>"port"in o,setInternalStateToPassive=o=>{if(!ACTIVE_AUDIO_NODE_STORE.has(o))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE.delete(o),getEventListenersOfAudioNode(o).forEach(e=>e(!1))},setInternalStateToPassiveWhenNecessary=(o,e)=>{!isAudioWorkletNode(o)&&e.every(s=>s.size===0)&&setInternalStateToPassive(o)},createAddConnectionToAudioNode=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{const tt=new WeakMap;return(nt,st,rt,it,at)=>{const{activeInputs:ot,passiveInputs:ht}=d(st),{outputs:ct}=d(nt),lt=b(nt),ut=pt=>{const dt=k(st),gt=k(nt);if(pt){const yt=deletePassiveInputConnectionToAudioNode(ht,nt,rt,it);o(ot,nt,yt,!1),!at&&!_e(nt)&&s(gt,dt,rt,it),et(st)&&setInternalStateToActive(st)}else{const yt=a(ot,nt,rt,it);e(ht,it,yt,!1),!at&&!_e(nt)&&c(gt,dt,rt,it);const ft=_(st);if(ft===0)j(st)&&setInternalStateToPassiveWhenNecessary(st,ot);else{const mt=tt.get(st);mt!==void 0&&clearTimeout(mt),tt.set(st,setTimeout(()=>{j(st)&&setInternalStateToPassiveWhenNecessary(st,ot)},ft*1e3))}}};return $(ct,[st,rt,it],pt=>pt[0]===st&&pt[1]===rt&&pt[2]===it,!0)?(lt.add(ut),j(nt)?o(ot,nt,[rt,it,ut],!0):e(ht,it,[nt,rt,ut],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode=o=>(e,s,[a,c,d],_)=>{const b=e.get(a);b===void 0?e.set(a,new Set([[c,s,d]])):o(b,[c,s,d],k=>k[0]===c&&k[1]===s,_)},createAddSilentConnection=o=>(e,s)=>{const a=o(e,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});s.connect(a).connect(e.destination);const c=()=>{s.removeEventListener("ended",c),s.disconnect(a),a.disconnect()};s.addEventListener("ended",c)},createAddUnrenderedAudioWorkletNode=o=>(e,s)=>{o(e).add(s)},DEFAULT_OPTIONS$j={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=Ot(Ot({},DEFAULT_OPTIONS$j),k),_e=a($,j),et=d($)?e():null;super(b,!1,_e,et),this._nativeAnalyserNode=_e}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(b){this._nativeAnalyserNode.fftSize=b}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(b){const k=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=b,!(b>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=k,s()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(b){const k=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=b,!(this._nativeAnalyserNode.maxDecibels>b))throw this._nativeAnalyserNode.minDecibels=k,s()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(b){this._nativeAnalyserNode.smoothingTimeConstant=b}getByteFrequencyData(b){this._nativeAnalyserNode.getByteFrequencyData(b)}getByteTimeDomainData(b){this._nativeAnalyserNode.getByteTimeDomainData(b)}getFloatFrequencyData(b){this._nativeAnalyserNode.getFloatFrequencyData(b)}getFloatTimeDomainData(b){this._nativeAnalyserNode.getFloatTimeDomainData(b)}},isOwnedByContext=(o,e)=>o.context===e,createAnalyserNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,fftSize:b.fftSize,maxDecibels:b.maxDecibels,minDecibels:b.minDecibels,smoothingTimeConstant:b.smoothingTimeConstant};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport=o=>{try{o.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod=o=>{o.getChannelData=(e=>s=>{try{return e.call(o,s)}catch(a){throw a.code===12?createIndexSizeError():a}})(o.getChannelData)},DEFAULT_OPTIONS$i={numberOfChannels:1},createAudioBufferConstructor=(o,e,s,a,c,d,_,b)=>{let k=null;return class fr{constructor(j){if(c===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:_e,numberOfChannels:et,sampleRate:tt}=Ot(Ot({},DEFAULT_OPTIONS$i),j);k===null&&(k=new c(1,1,44100));const nt=a!==null&&e(d,d)?new a({length:_e,numberOfChannels:et,sampleRate:tt}):k.createBuffer(et,_e,tt);if(nt.numberOfChannels===0)throw s();return typeof nt.copyFromChannel!="function"?(_(nt),wrapAudioBufferGetChannelDataMethod(nt)):e(testAudioBufferCopyChannelMethodsOutOfBoundsSupport,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport(nt))||b(nt),o.add(nt),nt}static[Symbol.hasInstance](j){return j!==null&&typeof j=="object"&&Object.getPrototypeOf(j)===fr.prototype||o.has(j)}}},MOST_NEGATIVE_SINGLE_FLOAT=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT=-MOST_NEGATIVE_SINGLE_FLOAT,isActiveAudioNode=o=>ACTIVE_AUDIO_NODE_STORE.has(o),DEFAULT_OPTIONS$h={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=Ot(Ot({},DEFAULT_OPTIONS$h),j),tt=c(_e,et),nt=_(_e),st=nt?e():null;super($,!1,tt,st),this._audioBufferSourceNodeRenderer=st,this._isBufferNullified=!1,this._isBufferSet=et.buffer!==null,this._nativeAudioBufferSourceNode=tt,this._onended=null,this._playbackRate=s(this,nt,tt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer($){if(this._nativeAudioBufferSourceNode.buffer=$,$!==null){if(this._isBufferSet)throw a();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop($){this._nativeAudioBufferSourceNode.loop=$}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd($){this._nativeAudioBufferSourceNode.loopEnd=$}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart($){this._nativeAudioBufferSourceNode.loopStart=$}get onended(){return this._onended}set onended($){const j=typeof $=="function"?b(this,$):null;this._nativeAudioBufferSourceNode.onended=j;const _e=this._nativeAudioBufferSourceNode.onended;this._onended=_e!==null&&_e===j?$:_e}get playbackRate(){return this._playbackRate}start($=0,j=0,_e){if(this._nativeAudioBufferSourceNode.start($,j,_e),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=_e===void 0?[$,j]:[$,j,_e]),this.context.state!=="closed"){setInternalStateToActive(this);const et=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",et),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",et)}}stop($=0){this._nativeAudioBufferSourceNode.stop($),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=$)}},createAudioBufferSourceNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={buffer:_e.buffer,channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,loop:_e.loop,loopEnd:_e.loopEnd,loopStart:_e.loopStart,playbackRate:_e.playbackRate.value};_e=e(j,tt),_!==null&&_e.start(..._),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.playbackRate,_e.playbackRate):await a(j,$.playbackRate,_e.playbackRate),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},isAudioBufferSourceNode=o=>"playbackRate"in o,isBiquadFilterNode=o=>"frequency"in o&&"gain"in o,isConstantSourceNode=o=>"offset"in o,isGainNode=o=>!("frequency"in o)&&"gain"in o,isOscillatorNode=o=>"detune"in o&&"frequency"in o,isStereoPannerNode=o=>"pan"in o,getAudioNodeConnections=o=>getValueForKey(AUDIO_NODE_CONNECTIONS_STORE,o),getAudioParamConnections=o=>getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE,o),deactivateActiveAudioNodeInputConnections=(o,e)=>{const{activeInputs:s}=getAudioNodeConnections(o);s.forEach(c=>c.forEach(([d])=>{e.includes(o)||deactivateActiveAudioNodeInputConnections(d,[...e,o])}));const a=isAudioBufferSourceNode(o)?[o.playbackRate]:isAudioWorkletNode(o)?Array.from(o.parameters.values()):isBiquadFilterNode(o)?[o.Q,o.detune,o.frequency,o.gain]:isConstantSourceNode(o)?[o.offset]:isGainNode(o)?[o.gain]:isOscillatorNode(o)?[o.detune,o.frequency]:isStereoPannerNode(o)?[o.pan]:[];for(const c of a){const d=getAudioParamConnections(c);d!==void 0&&d.activeInputs.forEach(([_])=>deactivateActiveAudioNodeInputConnections(_,e))}isActiveAudioNode(o)&&setInternalStateToPassive(o)},deactivateAudioGraph=o=>{deactivateActiveAudioNodeInputConnections(o.destination,[])},isValidLatencyHint=o=>o===void 0||typeof o=="number"||typeof o=="string"&&(o==="balanced"||o==="interactive"||o==="playback"),createAudioContextConstructor=(o,e,s,a,c,d,_,b,k)=>class extends o{constructor(j={}){if(k===null)throw new Error("Missing the native AudioContext constructor.");let _e;try{_e=new k(j)}catch(nt){throw nt.code===12&&nt.message==="sampleRate is not in range"?s():nt}if(_e===null)throw a();if(!isValidLatencyHint(j.latencyHint))throw new TypeError(`The provided value '${j.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(j.sampleRate!==void 0&&_e.sampleRate!==j.sampleRate)throw s();super(_e,2);const{latencyHint:et}=j,{sampleRate:tt}=_e;if(this._baseLatency=typeof _e.baseLatency=="number"?_e.baseLatency:et==="balanced"?512/tt:et==="interactive"||et===void 0?256/tt:et==="playback"?1024/tt:Math.max(2,Math.min(128,Math.round(et*tt/128)))*128/tt,this._nativeAudioContext=_e,k.name==="webkitAudioContext"?(this._nativeGainNode=_e.createGain(),this._nativeOscillatorNode=_e.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(_e.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,_e.state==="running"){this._state="suspended";const nt=()=>{this._state==="suspended"&&(this._state=null),_e.removeEventListener("statechange",nt)};_e.addEventListener("statechange",nt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw e()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph(this)}))}createMediaElementSource(j){return new c(this,{mediaElement:j})}createMediaStreamDestination(){return new d(this)}createMediaStreamSource(j){return new _(this,{mediaStream:j})}createMediaStreamTrackSource(j){return new b(this,{mediaStreamTrack:j})}resume(){return this._state==="suspended"?new Promise((j,_e)=>{const et=()=>{this._nativeAudioContext.removeEventListener("statechange",et),this._nativeAudioContext.state==="running"?j():this.resume().then(j,_e)};this._nativeAudioContext.addEventListener("statechange",et)}):this._nativeAudioContext.resume().catch(j=>{throw j===void 0||j.code===15?e():j})}suspend(){return this._nativeAudioContext.suspend().catch(j=>{throw j===void 0?e():j})}},createAudioDestinationNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_(_e),tt=c(_e,j,et),nt=et?e(b):null;super($,!1,tt,nt),this._isNodeOfNativeOfflineAudioContext=et,this._nativeAudioDestinationNode=tt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount($){if(this._isNodeOfNativeOfflineAudioContext)throw a();if($>this._nativeAudioDestinationNode.maxChannelCount)throw s();this._nativeAudioDestinationNode.channelCount=$}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode($){if(this._isNodeOfNativeOfflineAudioContext)throw a();this._nativeAudioDestinationNode.channelCountMode=$}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer=o=>{const e=new WeakMap,s=async(a,c)=>{const d=c.destination;return e.set(c,d),await o(a,c,d),d};return{render(a,c){const d=e.get(c);return d!==void 0?Promise.resolve(d):s(a,c)}}},createAudioListenerFactory=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=$.listener,_e=()=>{const ct=new Float32Array(1),lt=e($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),ut=_($);let pt=!1,dt=[0,0,-1,0,1,0],gt=[0,0,0];const yt=()=>{if(pt)return;pt=!0;const vt=a($,256,9,0);vt.onaudioprocess=({inputBuffer:At})=>{const _t=[d(At,ct,0),d(At,ct,1),d(At,ct,2),d(At,ct,3),d(At,ct,4),d(At,ct,5)];_t.some((bt,Tt)=>bt!==dt[Tt])&&(j.setOrientation(..._t),dt=_t);const Dt=[d(At,ct,6),d(At,ct,7),d(At,ct,8)];Dt.some((bt,Tt)=>bt!==gt[Tt])&&(j.setPosition(...Dt),gt=Dt)},lt.connect(vt)},ft=vt=>At=>{At!==dt[vt]&&(dt[vt]=At,j.setOrientation(...dt))},mt=vt=>At=>{At!==gt[vt]&&(gt[vt]=At,j.setPosition(...gt))},Et=(vt,At,_t)=>{const Dt=s($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:At});Dt.connect(lt,0,vt),Dt.start(),Object.defineProperty(Dt.offset,"defaultValue",{get(){return At}});const bt=o({context:k},ut,Dt.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT);return b(bt,"value",Tt=>()=>Tt.call(bt),Tt=>St=>{try{Tt.call(bt,St)}catch(Ct){if(Ct.code!==9)throw Ct}yt(),ut&&_t(St)}),bt.cancelAndHoldAtTime=(Tt=>ut?()=>{throw c()}:(...St)=>{const Ct=Tt.apply(bt,St);return yt(),Ct})(bt.cancelAndHoldAtTime),bt.cancelScheduledValues=(Tt=>ut?()=>{throw c()}:(...St)=>{const Ct=Tt.apply(bt,St);return yt(),Ct})(bt.cancelScheduledValues),bt.exponentialRampToValueAtTime=(Tt=>ut?()=>{throw c()}:(...St)=>{const Ct=Tt.apply(bt,St);return yt(),Ct})(bt.exponentialRampToValueAtTime),bt.linearRampToValueAtTime=(Tt=>ut?()=>{throw c()}:(...St)=>{const Ct=Tt.apply(bt,St);return yt(),Ct})(bt.linearRampToValueAtTime),bt.setTargetAtTime=(Tt=>ut?()=>{throw c()}:(...St)=>{const Ct=Tt.apply(bt,St);return yt(),Ct})(bt.setTargetAtTime),bt.setValueAtTime=(Tt=>ut?()=>{throw c()}:(...St)=>{const Ct=Tt.apply(bt,St);return yt(),Ct})(bt.setValueAtTime),bt.setValueCurveAtTime=(Tt=>ut?()=>{throw c()}:(...St)=>{const Ct=Tt.apply(bt,St);return yt(),Ct})(bt.setValueCurveAtTime),bt};return{forwardX:Et(0,0,ft(0)),forwardY:Et(1,0,ft(1)),forwardZ:Et(2,-1,ft(2)),positionX:Et(6,0,mt(0)),positionY:Et(7,0,mt(1)),positionZ:Et(8,0,mt(2)),upX:Et(3,0,ft(3)),upY:Et(4,1,ft(4)),upZ:Et(5,0,ft(5))}},{forwardX:et,forwardY:tt,forwardZ:nt,positionX:st,positionY:rt,positionZ:it,upX:at,upY:ot,upZ:ht}=j.forwardX===void 0?_e():j;return{get forwardX(){return et},get forwardY(){return tt},get forwardZ(){return nt},get positionX(){return st},get positionY(){return rt},get positionZ(){return it},get upX(){return at},get upY(){return ot},get upZ(){return ht}}},isAudioNode$1=o=>"context"in o,isAudioNodeOutputConnection=o=>isAudioNode$1(o[0]),insertElementInSet=(o,e,s,a)=>{for(const c of o)if(s(c)){if(a)return!1;throw Error("The set contains at least one similar element.")}return o.add(e),!0},addActiveInputConnectionToAudioParam=(o,e,[s,a],c)=>{insertElementInSet(o,[e,s,a],d=>d[0]===e&&d[1]===s,c)},addPassiveInputConnectionToAudioParam=(o,[e,s,a],c)=>{const d=o.get(e);d===void 0?o.set(e,new Set([[s,a]])):insertElementInSet(d,[s,a],_=>_[0]===s,c)},isNativeAudioNodeFaker=o=>"inputs"in o,connectNativeAudioNodeToNativeAudioNode=(o,e,s,a)=>{if(isNativeAudioNodeFaker(e)){const c=e.inputs[a];return o.connect(c,s,0),[c,s,0]}return o.connect(e,s,a),[e,s,a]},deleteActiveInputConnection=(o,e,s)=>{for(const a of o)if(a[0]===e&&a[1]===s)return o.delete(a),a;return null},deleteActiveInputConnectionToAudioParam=(o,e,s)=>pickElementFromSet(o,a=>a[0]===e&&a[1]===s),deleteEventListenerOfAudioNode=(o,e)=>{if(!getEventListenersOfAudioNode(o).delete(e))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam=(o,e,s)=>{const a=getValueForKey(o,e),c=pickElementFromSet(a,d=>d[0]===s);return a.size===0&&o.delete(e),c},disconnectNativeAudioNodeFromNativeAudioNode=(o,e,s,a)=>{isNativeAudioNodeFaker(e)?o.disconnect(e.inputs[a],s,0):o.disconnect(e,s,a)},getNativeAudioNode=o=>getValueForKey(AUDIO_NODE_STORE,o),getNativeAudioParam=o=>getValueForKey(AUDIO_PARAM_STORE,o),isPartOfACycle=o=>CYCLE_COUNTERS.has(o),isPassiveAudioNode=o=>!ACTIVE_AUDIO_NODE_STORE.has(o),testAudioNodeDisconnectMethodSupport=(o,e)=>new Promise(s=>{if(e!==null)s(!0);else{const a=o.createScriptProcessor(256,1,1),c=o.createGain(),d=o.createBuffer(1,2,44100),_=d.getChannelData(0);_[0]=1,_[1]=1;const b=o.createBufferSource();b.buffer=d,b.loop=!0,b.connect(a).connect(o.destination),b.connect(c),b.disconnect(c),a.onaudioprocess=k=>{const $=k.inputBuffer.getChannelData(0);Array.prototype.some.call($,j=>j===1)?s(!0):s(!1),b.stop(),a.onaudioprocess=null,b.disconnect(a),a.disconnect(o.destination)},b.start()}}),visitEachAudioNodeOnce=(o,e)=>{const s=new Map;for(const a of o)for(const c of a){const d=s.get(c);s.set(c,d===void 0?1:d+1)}s.forEach((a,c)=>e(c,a))},isNativeAudioNode$1=o=>"context"in o,wrapAudioNodeDisconnectMethod=o=>{const e=new Map;o.connect=(s=>(a,c=0,d=0)=>{const _=isNativeAudioNode$1(a)?s(a,c,d):s(a,c),b=e.get(a);return b===void 0?e.set(a,[{input:d,output:c}]):b.every(k=>k.input!==d||k.output!==c)&&b.push({input:d,output:c}),_})(o.connect.bind(o)),o.disconnect=(s=>(a,c,d)=>{if(s.apply(o),a===void 0)e.clear();else if(typeof a=="number")for(const[_,b]of e){const k=b.filter($=>$.output!==a);k.length===0?e.delete(_):e.set(_,k)}else if(e.has(a))if(c===void 0)e.delete(a);else{const _=e.get(a);if(_!==void 0){const b=_.filter(k=>k.output!==c&&(k.input!==d||d===void 0));b.length===0?e.delete(a):e.set(a,b)}}for(const[_,b]of e)b.forEach(k=>{isNativeAudioNode$1(_)?o.connect(_,k.output,k.input):o.connect(_,k.output)})})(o.disconnect)},addConnectionToAudioParamOfAudioContext=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioParamConnections(e),{outputs:_}=getAudioNodeConnections(o),b=getEventListenersOfAudioNode(o),k=$=>{const j=getNativeAudioNode(o),_e=getNativeAudioParam(e);if($){const et=deletePassiveInputConnectionToAudioParam(d,o,s);addActiveInputConnectionToAudioParam(c,o,et,!1),!a&&!isPartOfACycle(o)&&j.connect(_e,s)}else{const et=deleteActiveInputConnectionToAudioParam(c,o,s);addPassiveInputConnectionToAudioParam(d,et,!1),!a&&!isPartOfACycle(o)&&j.disconnect(_e,s)}};return insertElementInSet(_,[e,s],$=>$[0]===e&&$[1]===s,!0)?(b.add(k),isActiveAudioNode(o)?addActiveInputConnectionToAudioParam(c,o,[s,k],!0):addPassiveInputConnectionToAudioParam(d,[o,s,k],!0),!0):!1},deleteInputConnectionOfAudioNode=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioNodeConnections(e),_=deleteActiveInputConnection(c[a],o,s);return _===null?[deletePassiveInputConnectionToAudioNode(d,o,s,a)[2],!1]:[_[2],!0]},deleteInputConnectionOfAudioParam=(o,e,s)=>{const{activeInputs:a,passiveInputs:c}=getAudioParamConnections(e),d=deleteActiveInputConnection(a,o,s);return d===null?[deletePassiveInputConnectionToAudioParam(c,o,s)[1],!1]:[d[2],!0]},deleteInputsOfAudioNode=(o,e,s,a,c)=>{const[d,_]=deleteInputConnectionOfAudioNode(o,s,a,c);if(d!==null&&(deleteEventListenerOfAudioNode(o,d),_&&!e&&!isPartOfACycle(o)&&disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(o),getNativeAudioNode(s),a,c)),isActiveAudioNode(s)){const{activeInputs:b}=getAudioNodeConnections(s);setInternalStateToPassiveWhenNecessary(s,b)}},deleteInputsOfAudioParam=(o,e,s,a)=>{const[c,d]=deleteInputConnectionOfAudioParam(o,s,a);c!==null&&(deleteEventListenerOfAudioNode(o,c),d&&!e&&!isPartOfACycle(o)&&getNativeAudioNode(o).disconnect(getNativeAudioParam(s),a))},deleteAnyConnection=(o,e)=>{const s=getAudioNodeConnections(o),a=[];for(const c of s.outputs)isAudioNodeOutputConnection(c)?deleteInputsOfAudioNode(o,e,...c):deleteInputsOfAudioParam(o,e,...c),a.push(c[0]);return s.outputs.clear(),a},deleteConnectionAtOutput=(o,e,s)=>{const a=getAudioNodeConnections(o),c=[];for(const d of a.outputs)d[1]===s&&(isAudioNodeOutputConnection(d)?deleteInputsOfAudioNode(o,e,...d):deleteInputsOfAudioParam(o,e,...d),c.push(d[0]),a.outputs.delete(d));return c},deleteConnectionToDestination=(o,e,s,a,c)=>{const d=getAudioNodeConnections(o);return Array.from(d.outputs).filter(_=>_[0]===s&&(a===void 0||_[1]===a)&&(c===void 0||_[2]===c)).map(_=>(isAudioNodeOutputConnection(_)?deleteInputsOfAudioNode(o,e,..._):deleteInputsOfAudioParam(o,e,..._),d.outputs.delete(_),_[0]))},createAudioNodeConstructor=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt,nt,st)=>class extends ${constructor(it,at,ot,ht){super(ot),this._context=it,this._nativeAudioNode=ot;const ct=j(it);_e(ct)&&s(testAudioNodeDisconnectMethodSupport,()=>testAudioNodeDisconnectMethodSupport(ct,st))!==!0&&wrapAudioNodeDisconnectMethod(ot),AUDIO_NODE_STORE.set(this,ot),EVENT_LISTENERS.set(this,new Set),it.state!=="closed"&&at&&setInternalStateToActive(this),o(this,ht,ot)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(it){this._nativeAudioNode.channelCount=it}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(it){this._nativeAudioNode.channelCountMode=it}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(it){this._nativeAudioNode.channelInterpretation=it}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(it,at=0,ot=0){if(at<0||at>=this._nativeAudioNode.numberOfOutputs)throw c();const ht=j(this._context),ct=nt(ht);if(et(it)||tt(it))throw d();if(isAudioNode$1(it)){const pt=getNativeAudioNode(it);try{const gt=connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode,pt,at,ot),yt=isPassiveAudioNode(this);(ct||yt)&&this._nativeAudioNode.disconnect(...gt),this.context.state!=="closed"&&!yt&&isPassiveAudioNode(it)&&setInternalStateToActive(it)}catch(gt){throw gt.code===12?d():gt}if(e(this,it,at,ot,ct)){const gt=k([this],it);visitEachAudioNodeOnce(gt,a(ct))}return it}const lt=getNativeAudioParam(it);if(lt.name==="playbackRate"&<.maxValue===1024)throw _();try{this._nativeAudioNode.connect(lt,at),(ct||isPassiveAudioNode(this))&&this._nativeAudioNode.disconnect(lt,at)}catch(pt){throw pt.code===12?d():pt}if(addConnectionToAudioParamOfAudioContext(this,it,at,ct)){const pt=k([this],it);visitEachAudioNodeOnce(pt,a(ct))}}disconnect(it,at,ot){let ht;const ct=j(this._context),lt=nt(ct);if(it===void 0)ht=deleteAnyConnection(this,lt);else if(typeof it=="number"){if(it<0||it>=this.numberOfOutputs)throw c();ht=deleteConnectionAtOutput(this,lt,it)}else{if(at!==void 0&&(at<0||at>=this.numberOfOutputs)||isAudioNode$1(it)&&ot!==void 0&&(ot<0||ot>=it.numberOfInputs))throw c();if(ht=deleteConnectionToDestination(this,lt,it,at,ot),ht.length===0)throw d()}for(const ut of ht){const pt=k([this],ut);visitEachAudioNodeOnce(pt,b)}}},createAudioParamFactory=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,st,rt=null,it=null)=>{const at=new AutomationEventList(st.defaultValue),ot=nt?a(at):null,ht={get defaultValue(){return st.defaultValue},get maxValue(){return rt===null?st.maxValue:rt},get minValue(){return it===null?st.minValue:it},get value(){return st.value},set value(ct){st.value=ct,ht.setValueAtTime(ct,tt.context.currentTime)},cancelAndHoldAtTime(ct){if(typeof st.cancelAndHoldAtTime=="function")ot===null&&at.flush(tt.context.currentTime),at.add(c(ct)),st.cancelAndHoldAtTime(ct);else{const lt=Array.from(at).pop();ot===null&&at.flush(tt.context.currentTime),at.add(c(ct));const ut=Array.from(at).pop();st.cancelScheduledValues(ct),lt!==ut&&ut!==void 0&&(ut.type==="exponentialRampToValue"?st.exponentialRampToValueAtTime(ut.value,ut.endTime):ut.type==="linearRampToValue"?st.linearRampToValueAtTime(ut.value,ut.endTime):ut.type==="setValue"?st.setValueAtTime(ut.value,ut.startTime):ut.type==="setValueCurve"&&st.setValueCurveAtTime(ut.values,ut.startTime,ut.duration))}return ht},cancelScheduledValues(ct){return ot===null&&at.flush(tt.context.currentTime),at.add(d(ct)),st.cancelScheduledValues(ct),ht},exponentialRampToValueAtTime(ct,lt){if(ct===0)throw new RangeError;if(!Number.isFinite(lt)||lt<0)throw new RangeError;return ot===null&&at.flush(tt.context.currentTime),at.add(_(ct,lt)),st.exponentialRampToValueAtTime(ct,lt),ht},linearRampToValueAtTime(ct,lt){return ot===null&&at.flush(tt.context.currentTime),at.add(b(ct,lt)),st.linearRampToValueAtTime(ct,lt),ht},setTargetAtTime(ct,lt,ut){return ot===null&&at.flush(tt.context.currentTime),at.add(k(ct,lt,ut)),st.setTargetAtTime(ct,lt,ut),ht},setValueAtTime(ct,lt){return ot===null&&at.flush(tt.context.currentTime),at.add($(ct,lt)),st.setValueAtTime(ct,lt),ht},setValueCurveAtTime(ct,lt,ut){const pt=ct instanceof Float32Array?ct:new Float32Array(ct);if(_e!==null&&_e.name==="webkitAudioContext"){const dt=lt+ut,gt=tt.context.sampleRate,yt=Math.ceil(lt*gt),ft=Math.floor(dt*gt),mt=ft-yt,Et=new Float32Array(mt);for(let At=0;At({replay(e){for(const s of o)if(s.type==="exponentialRampToValue"){const{endTime:a,value:c}=s;e.exponentialRampToValueAtTime(c,a)}else if(s.type==="linearRampToValue"){const{endTime:a,value:c}=s;e.linearRampToValueAtTime(c,a)}else if(s.type==="setTarget"){const{startTime:a,target:c,timeConstant:d}=s;e.setTargetAtTime(c,a,d)}else if(s.type==="setValue"){const{startTime:a,value:c}=s;e.setValueAtTime(c,a)}else if(s.type==="setValueCurve"){const{duration:a,startTime:c,values:d}=s;e.setValueCurveAtTime(d,c,a)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,s=null){return this._map.forEach((a,c)=>e.call(s,a,c,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$g={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt)=>class extends e{constructor(st,rt,it){var at;const ot=b(st),ht=k(ot),ct=j(Ot(Ot({},DEFAULT_OPTIONS$g),it));et(ct);const lt=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(ot),ut=lt==null?void 0:lt.get(rt),pt=ht||ot.state!=="closed"?ot:(at=_(ot))!==null&&at!==void 0?at:ot,dt=c(pt,ht?null:st.baseLatency,$,rt,ut,ct),gt=ht?a(rt,ct,ut):null;super(st,!0,dt,gt);const yt=[];dt.parameters.forEach((mt,Et)=>{const vt=s(this,ht,mt);yt.push([Et,vt])}),this._nativeAudioWorkletNode=dt,this._onprocessorerror=null,this._parameters=new ReadOnlyMap(yt),ht&&o(ot,this);const{activeInputs:ft}=d(this);_e(dt,ft)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(st){const rt=typeof st=="function"?tt(this,st):null;this._nativeAudioWorkletNode.onprocessorerror=rt;const it=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=it!==null&&it===rt?st:it}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel(o,e,s,a,c){if(typeof o.copyFromChannel=="function")e[s].byteLength===0&&(e[s]=new Float32Array(128)),o.copyFromChannel(e[s],a,c);else{const d=o.getChannelData(a);if(e[s].byteLength===0)e[s]=d.slice(c,c+128);else{const _=new Float32Array(d.buffer,c*Float32Array.BYTES_PER_ELEMENT,128);e[s].set(_)}}}const copyToChannel=(o,e,s,a,c)=>{typeof o.copyToChannel=="function"?e[s].byteLength!==0&&o.copyToChannel(e[s],a,c):e[s].byteLength!==0&&o.getChannelData(a).set(e[s],c)},createNestedArrays=(o,e)=>{const s=[];for(let a=0;a{const s=getValueForKey(NODE_TO_PROCESSOR_MAPS,o),a=getNativeAudioNode(e);return getValueForKey(s,a)},processBuffer=async(o,e,s,a,c,d,_)=>{const b=e===null?Math.ceil(o.context.length/128)*128:e.length,k=a.channelCount*a.numberOfInputs,$=c.reduce((rt,it)=>rt+it,0),j=$===0?null:s.createBuffer($,b,s.sampleRate);if(d===void 0)throw new Error("Missing the processor constructor.");const _e=getAudioNodeConnections(o),et=await getAudioWorkletProcessor(s,o),tt=createNestedArrays(a.numberOfInputs,a.channelCount),nt=createNestedArrays(a.numberOfOutputs,c),st=Array.from(o.parameters.keys()).reduce((rt,it)=>wt(Ot({},rt),{[it]:new Float32Array(128)}),{});for(let rt=0;rt0&&e!==null)for(let it=0;it{copyFromChannel(e,st,it,k+at,rt)});for(let it=0;it_e.activeInputs[ht].size===0?[]:ot),at=_(rt/s.sampleRate,s.sampleRate,()=>et.process(it,nt,st));if(j!==null)for(let ot=0,ht=0;ot(rt,it,at)=>{const ot=new WeakMap;let ht=null;const ct=async(lt,ut)=>{let pt=j(lt),dt=null;const gt=isOwnedByContext(pt,ut),yt=Array.isArray(it.outputChannelCount)?it.outputChannelCount:Array.from(it.outputChannelCount);if(_e===null){const ft=yt.reduce((At,_t)=>At+_t,0),mt=c(ut,{channelCount:Math.max(1,ft),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ft)}),Et=[];for(let At=0;At{const St=new et(bt,Math.ceil(lt.context.length/128)*128,ut.sampleRate),Ct=[],xt=[];for(let It=0;It{const Ft=d(St,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:It.value});return await tt(St,It,Ft.offset),Ft})),Mt=a(St,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,_t+Dt)});for(let It=0;Itnt(lt,St,It))),st(St)})(),ut,it,yt,at,$)}const ft=await ht,mt=s(ut,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[Et,vt,At]=dt;ft!==null&&(mt.buffer=ft,mt.start(0)),mt.connect(Et);for(let _t=0,Dt=0;_tclass extends nt{constructor(ct,lt){super(ct,lt),this._nativeContext=ct,this._audioWorklet=o===void 0?void 0:{addModule:(ut,pt)=>o(this,ut,pt)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new e(this)}createBiquadFilter(){return new c(this)}createBuffer(ct,lt,ut){return new s({length:lt,numberOfChannels:ct,sampleRate:ut})}createBufferSource(){return new a(this)}createChannelMerger(ct=6){return new d(this,{numberOfInputs:ct})}createChannelSplitter(ct=6){return new _(this,{numberOfOutputs:ct})}createConstantSource(){return new b(this)}createConvolver(){return new k(this)}createDelay(ct=1){return new j(this,{maxDelayTime:ct})}createDynamicsCompressor(){return new _e(this)}createGain(){return new et(this)}createIIRFilter(ct,lt){return new tt(this,{feedback:lt,feedforward:ct})}createOscillator(){return new st(this)}createPanner(){return new rt(this)}createPeriodicWave(ct,lt,ut={disableNormalization:!1}){return new it(this,wt(Ot({},ut),{imag:lt,real:ct}))}createStereoPanner(){return new at(this)}createWaveShaper(){return new ot(this)}decodeAudioData(ct,lt,ut){return $(this._nativeContext,ct).then(pt=>(typeof lt=="function"&<(pt),pt),pt=>{throw typeof ut=="function"&&ut(pt),pt})}},DEFAULT_OPTIONS$f={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=Ot(Ot({},DEFAULT_OPTIONS$f),j),tt=c(_e,et),nt=_(_e),st=nt?s():null;super($,!1,tt,st),this._Q=e(this,nt,tt.Q,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._detune=e(this,nt,tt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT)),this._frequency=e(this,nt,tt.frequency,$.sampleRate/2,0),this._gain=e(this,nt,tt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT),MOST_NEGATIVE_SINGLE_FLOAT),this._nativeBiquadFilterNode=tt,b(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type($){this._nativeBiquadFilterNode.type=$}getFrequencyResponse($,j,_e){try{this._nativeBiquadFilterNode.getFrequencyResponse($,j,_e)}catch(et){throw et.code===11?a():et}if($.length!==j.length||j.length!==_e.length)throw a()}},createBiquadFilterNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={Q:$.Q.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,detune:$.detune.value,frequency:$.frequency.value,gain:$.gain.value,type:$.type};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.Q,$.Q),await o(k,b.detune,$.detune),await o(k,b.frequency,$.frequency),await o(k,b.gain,$.gain)):(await a(k,b.Q,$.Q),await a(k,b.detune,$.detune),await a(k,b.frequency,$.frequency),await a(k,b.gain,$.gain)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createCacheTestResult=(o,e)=>(s,a)=>{const c=e.get(s);if(c!==void 0)return c;const d=o.get(s);if(d!==void 0)return d;try{const _=a();return _ instanceof Promise?(o.set(s,_),_.catch(()=>!1).then(b=>(o.delete(s),e.set(s,b),b))):(e.set(s,_),_)}catch{return e.set(s,!1),!1}},DEFAULT_OPTIONS$e={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor=(o,e,s,a,c)=>class extends o{constructor(_,b){const k=a(_),$=Ot(Ot({},DEFAULT_OPTIONS$e),b),j=s(k,$),_e=c(k)?e():null;super(_,!1,j,_e)}},createChannelMergerNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfInputs:b.numberOfInputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},DEFAULT_OPTIONS$d={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=d(Ot(Ot({},DEFAULT_OPTIONS$d),k)),_e=s($,j),et=c($)?e():null;super(b,!1,_e,et)}},createChannelSplitterNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfOutputs:b.numberOfOutputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createConnectAudioParam=o=>(e,s,a)=>o(s,e,a),createConnectMultipleOutputs=o=>(e,s,a=0,c=0)=>{const d=e[a];if(d===void 0)throw o();return isNativeAudioNode$1(s)?d.connect(s,0,c):d.connect(s,0)},createConnectedNativeAudioBufferSourceNodeFactory=o=>(e,s)=>{const a=o(e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),c=e.createBuffer(1,2,44100);return a.buffer=c,a.loop=!0,a.connect(s),a.start(),()=>{a.stop(),a.disconnect(s)}},DEFAULT_OPTIONS$c={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Ot(Ot({},DEFAULT_OPTIONS$c),$),et=a(j,_e),tt=d(j),nt=tt?s():null;super(k,!1,et,nt),this._constantSourceNodeRenderer=nt,this._nativeConstantSourceNode=et,this._offset=e(this,tt,et.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeConstantSourceNode.onended=$;const j=this._nativeConstantSourceNode.onended;this._onended=j!==null&&j===$?k:j}start(k=0){if(this._nativeConstantSourceNode.start(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeConstantSourceNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeConstantSourceNode.addEventListener("ended",$)}}stop(k=0){this._nativeConstantSourceNode.stop(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=k)}},createConstantSourceNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,offset:_e.offset.value};_e=e(j,tt),_!==null&&_e.start(_),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.offset,_e.offset):await a(j,$.offset,_e.offset),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},createConvertNumberToUnsignedLong=o=>e=>(o[0]=e,o[0]),DEFAULT_OPTIONS$b={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=Ot(Ot({},DEFAULT_OPTIONS$b),k),_e=s($,j),tt=c($)?e():null;super(b,!1,_e,tt),this._isBufferNullified=!1,this._nativeConvolverNode=_e,j.buffer!==null&&d(this,j.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(b){if(this._nativeConvolverNode.buffer=b,b===null&&this._nativeConvolverNode.buffer!==null){const k=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=k.createBuffer(1,1,44100),this._isBufferNullified=!0,d(this,0)}else this._isBufferNullified=!1,d(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(b){this._nativeConvolverNode.normalize=b}},createConvolverNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={buffer:b.buffer,channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,disableNormalization:!b.normalize};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createCreateNativeOfflineAudioContext=(o,e)=>(s,a,c)=>{if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new e(s,a,c)}catch(d){throw d.name==="SyntaxError"?o():d}},createDataCloneError=()=>new DOMException("","DataCloneError"),detachArrayBuffer=o=>{const{port1:e,port2:s}=new MessageChannel;return new Promise(a=>{const c=()=>{s.onmessage=null,e.close(),s.close(),a()};s.onmessage=()=>c();try{e.postMessage(o,[o])}finally{c()}})},createDecodeAudioData=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_(_e)?_e:d(_e);if(c.has(et)){const nt=s();return Promise.reject(nt)}try{c.add(et)}catch{}return e(k,()=>k(tt))?tt.decodeAudioData(et).then(nt=>(detachArrayBuffer(et).catch(()=>{}),e(b,()=>b(nt))||j(nt),o.add(nt),nt)):new Promise((nt,st)=>{const rt=async()=>{try{await detachArrayBuffer(et)}catch{}},it=at=>{st(at),rt()};try{tt.decodeAudioData(et,at=>{typeof at.copyFromChannel!="function"&&($(at),wrapAudioBufferGetChannelDataMethod(at)),o.add(at),rt().then(()=>nt(at))},at=>{it(at===null?a():at)})}catch(at){it(at)}})},createDecrementCycleCounter=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=e.get(k);if(j===void 0)throw new Error("Missing the expected cycle count.");const _e=d(k.context),et=b(_e);if(j===$){if(e.delete(k),!et&&_(k)){const tt=a(k),{outputs:nt}=s(k);for(const st of nt)if(isAudioNodeOutputConnection(st)){const rt=a(st[0]);o(tt,rt,st[1],st[2])}else{const rt=c(st[0]);tt.connect(rt,st[1])}}}else e.set(k,j-$)},DEFAULT_OPTIONS$a={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Ot(Ot({},DEFAULT_OPTIONS$a),$),et=a(j,_e),tt=d(j),nt=tt?s(_e.maxDelayTime):null;super(k,!1,et,nt),this._delayTime=e(this,tt,et.delayTime),_(this,_e.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory=(o,e,s,a,c)=>d=>{const _=new WeakMap,b=async(k,$)=>{let j=s(k);const _e=isOwnedByContext(j,$);if(!_e){const et={channelCount:j.channelCount,channelCountMode:j.channelCountMode,channelInterpretation:j.channelInterpretation,delayTime:j.delayTime.value,maxDelayTime:d};j=e($,et)}return _.set($,j),_e?await o($,k.delayTime,j.delayTime):await a($,k.delayTime,j.delayTime),await c(k,$,j),j};return{render(k,$){const j=_.get($);return j!==void 0?Promise.resolve(j):b(k,$)}}},createDeleteActiveInputConnectionToAudioNode=o=>(e,s,a,c)=>o(e[c],d=>d[0]===s&&d[1]===a),createDeleteUnrenderedAudioWorkletNode=o=>(e,s)=>{o(e).delete(s)},isDelayNode=o=>"delayTime"in o,createDetectCycles=(o,e,s)=>function a(c,d){const _=isAudioNode$1(d)?d:s(o,d);if(isDelayNode(_))return[];if(c[0]===_)return[c];if(c.includes(_))return[];const{outputs:b}=e(_);return Array.from(b).map(k=>a([...c,_],k[0])).reduce((k,$)=>k.concat($),[])},getOutputAudioNodeAtIndex=(o,e,s)=>{const a=e[s];if(a===void 0)throw o();return a},createDisconnectMultipleOutputs=o=>(e,s=void 0,a=void 0,c=0)=>s===void 0?e.forEach(d=>d.disconnect()):typeof s=="number"?getOutputAudioNodeAtIndex(o,e,s).disconnect():isNativeAudioNode$1(s)?a===void 0?e.forEach(d=>d.disconnect(s)):c===void 0?getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0):getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0,c):a===void 0?e.forEach(d=>d.disconnect(s)):getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0),DEFAULT_OPTIONS$9={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=Ot(Ot({},DEFAULT_OPTIONS$9),j),tt=a(_e,et),nt=_(_e),st=nt?s():null;super($,!1,tt,st),this._attack=e(this,nt,tt.attack),this._knee=e(this,nt,tt.knee),this._nativeDynamicsCompressorNode=tt,this._ratio=e(this,nt,tt.ratio),this._release=e(this,nt,tt.release),this._threshold=e(this,nt,tt.threshold),b(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount($){const j=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=$,$>2)throw this._nativeDynamicsCompressorNode.channelCount=j,c()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode($){const j=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=$,$==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=j,c()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={attack:$.attack.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,knee:$.knee.value,ratio:$.ratio.value,release:$.release.value,threshold:$.threshold.value};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.attack,$.attack),await o(k,b.knee,$.knee),await o(k,b.ratio,$.ratio),await o(k,b.release,$.release),await o(k,b.threshold,$.threshold)):(await a(k,b.attack,$.attack),await a(k,b.knee,$.knee),await a(k,b.ratio,$.ratio),await a(k,b.release,$.release),await a(k,b.threshold,$.threshold)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createEncodingError=()=>new DOMException("","EncodingError"),createEvaluateSource=o=>e=>new Promise((s,a)=>{if(o===null){a(new SyntaxError);return}const c=o.document.head;if(c===null)a(new SyntaxError);else{const d=o.document.createElement("script"),_=new Blob([e],{type:"application/javascript"}),b=URL.createObjectURL(_),k=o.onerror,$=()=>{o.onerror=k,URL.revokeObjectURL(b)};o.onerror=(j,_e,et,tt,nt)=>{if(_e===b||_e===o.location.href&&et===1&&tt===1)return $(),a(nt),!1;if(k!==null)return k(j,_e,et,tt,nt)},d.onerror=()=>{$(),a(new SyntaxError)},d.onload=()=>{$(),s()},d.src=b,d.type="module",c.appendChild(d)}}),createEventTargetConstructor=o=>class{constructor(s){this._nativeEventTarget=s,this._listeners=new WeakMap}addEventListener(s,a,c){if(a!==null){let d=this._listeners.get(a);d===void 0&&(d=o(this,a),typeof a=="function"&&this._listeners.set(a,d)),this._nativeEventTarget.addEventListener(s,d,c)}}dispatchEvent(s){return this._nativeEventTarget.dispatchEvent(s)}removeEventListener(s,a,c){const d=a===null?void 0:this._listeners.get(a);this._nativeEventTarget.removeEventListener(s,d===void 0?null:d,c)}},createExposeCurrentFrameAndCurrentTime=o=>(e,s,a)=>{Object.defineProperties(o,{currentFrame:{configurable:!0,get(){return Math.round(e*s)}},currentTime:{configurable:!0,get(){return e}}});try{return a()}finally{o!==null&&(delete o.currentFrame,delete o.currentTime)}},createFetchSource=o=>async e=>{try{const s=await fetch(e);if(s.ok)return[await s.text(),s.url]}catch{}throw o()},DEFAULT_OPTIONS$8={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=Ot(Ot({},DEFAULT_OPTIONS$8),k),_e=a($,j),et=d($),tt=et?s():null;super(b,!1,_e,tt),this._gain=e(this,et,_e.gain,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get gain(){return this._gain}},createGainNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,gain:$.gain.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.gain,$.gain):await a(k,b.gain,$.gain),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createGetActiveAudioWorkletNodeInputs=(o,e)=>s=>e(o,s),createGetAudioNodeRenderer=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return s.renderer},createGetAudioNodeTailTime=o=>e=>{var s;return(s=o.get(e))!==null&&s!==void 0?s:0},createGetAudioParamRenderer=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return s.renderer},createGetBackupOfflineAudioContext=o=>e=>o.get(e),createInvalidStateError=()=>new DOMException("","InvalidStateError"),createGetNativeContext=o=>e=>{const s=o.get(e);if(s===void 0)throw createInvalidStateError();return s},createGetOrCreateBackupOfflineAudioContext=(o,e)=>s=>{let a=o.get(s);if(a!==void 0)return a;if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");return a=new e(1,1,44100),o.set(s,a),a},createGetUnrenderedAudioWorkletNodes=o=>e=>{const s=o.get(e);if(s===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return s},createInvalidAccessError=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod=o=>{o.getFrequencyResponse=(e=>(s,a,c)=>{if(s.length!==a.length||a.length!==c.length)throw createInvalidAccessError();return e.call(o,s,a,c)})(o.getFrequencyResponse)},DEFAULT_OPTIONS$7={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=c($),_e=Ot(Ot({},DEFAULT_OPTIONS$7),k),et=e($,j?null:b.baseLatency,_e),tt=j?s(_e.feedback,_e.feedforward):null;super(b,!1,et,tt),wrapIIRFilterNodeGetFrequencyResponseMethod(et),this._nativeIIRFilterNode=et,d(this,1)}getFrequencyResponse(b,k,$){return this._nativeIIRFilterNode.getFrequencyResponse(b,k,$)}},filterBuffer=(o,e,s,a,c,d,_,b,k,$,j)=>{const _e=$.length;let et=b;for(let tt=0;tt<_e;tt+=1){let nt=s[0]*$[tt];for(let st=1;st{const c=s instanceof Float64Array?s:new Float64Array(s),d=a instanceof Float64Array?a:new Float64Array(a),_=c.length,b=d.length,k=Math.min(_,b);if(c[0]!==1){for(let nt=0;nt<_;nt+=1)d[nt]/=c[0];for(let nt=1;nt(d,_)=>{const b=new WeakMap;let k=null;const $=async(j,_e)=>{let et=null,tt=e(j);const nt=isOwnedByContext(tt,_e);if(_e.createIIRFilter===void 0?et=o(_e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):nt||(tt=_e.createIIRFilter(_,d)),b.set(_e,et===null?tt:et),et!==null){if(k===null){if(s===null)throw new Error("Missing the native OfflineAudioContext constructor.");const rt=new s(j.context.destination.channelCount,j.context.length,_e.sampleRate);k=(async()=>{await a(j,rt,rt.destination);const it=await c(rt);return filterFullBuffer(it,_e,d,_)})()}const st=await k;return et.buffer=st,et.start(0),et}return await a(j,_e,tt),tt};return{render(j,_e){const et=b.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},createIncrementCycleCounterFactory=(o,e,s,a,c,d)=>_=>(b,k)=>{const $=o.get(b);if($===void 0){if(!_&&d(b)){const j=a(b),{outputs:_e}=s(b);for(const et of _e)if(isAudioNodeOutputConnection(et)){const tt=a(et[0]);e(j,tt,et[1],et[2])}else{const tt=c(et[0]);j.disconnect(tt,et[1])}}o.set(b,k)}else o.set(b,$+k)},createIsAnyAudioContext=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsAnyAudioNode=(o,e)=>s=>o.has(s)||e(s),createIsAnyAudioParam=(o,e)=>s=>o.has(s)||e(s),createIsAnyOfflineAudioContext=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsNativeAudioContext=o=>e=>o!==null&&e instanceof o,createIsNativeAudioNode=o=>e=>o!==null&&typeof o.AudioNode=="function"&&e instanceof o.AudioNode,createIsNativeAudioParam=o=>e=>o!==null&&typeof o.AudioParam=="function"&&e instanceof o.AudioParam,createIsNativeContext=(o,e)=>s=>o(s)||e(s),createIsNativeOfflineAudioContext=o=>e=>o!==null&&e instanceof o,createIsSecureContext=o=>o!==null&&o.isSecureContext,createIsSupportedPromise=async(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt,nt,st)=>o(e,e)&&o(s,s)&&o(c,c)&&o(d,d)&&o(b,b)&&o(k,k)&&o($,$)&&o(j,j)&&o(_e,_e)&&o(et,et)&&o(tt,tt)?(await Promise.all([o(a,a),o(_,_),o(nt,nt),o(st,st)])).every(it=>it):!1,createMediaElementAudioSourceNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw TypeError();super(d,!0,k,null),this._nativeMediaElementAudioSourceNode=k}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$6={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d);if(a(b))throw new TypeError;const k=Ot(Ot({},DEFAULT_OPTIONS$6),_),$=e(b,k);super(d,!1,$,null),this._nativeMediaStreamAudioDestinationNode=$}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw new TypeError;super(d,!0,k,null),this._nativeMediaStreamAudioSourceNode=k}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor=(o,e,s)=>class extends o{constructor(c,d){const _=s(c),b=e(_,d);super(c,!0,b,null)}},createMinimalBaseAudioContextConstructor=(o,e,s,a,c,d)=>class extends s{constructor(b,k){super(b),this._nativeContext=b,CONTEXT_STORE.set(this,b),a(b)&&c.set(b,new Set),this._destination=new o(this,k),this._listener=e(this,b),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(b){const k=typeof b=="function"?d(this,b):null;this._nativeContext.onstatechange=k;const $=this._nativeContext.onstatechange;this._onstatechange=$!==null&&$===k?b:$}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport=o=>{const e=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const s=o.decodeAudioData(e.buffer,()=>{});return s===void 0?!1:(s.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections=(o,e)=>(s,a,c)=>{const d=new Set;return s.connect=(_=>(b,k=0,$=0)=>{const j=d.size===0;if(e(b))return _.call(s,b,k,$),o(d,[b,k,$],_e=>_e[0]===b&&_e[1]===k&&_e[2]===$,!0),j&&a(),b;_.call(s,b,k),o(d,[b,k],_e=>_e[0]===b&&_e[1]===k,!0),j&&a()})(s.connect),s.disconnect=(_=>(b,k,$)=>{const j=d.size>0;if(b===void 0)_.apply(s),d.clear();else if(typeof b=="number"){_.call(s,b);for(const et of d)et[1]===b&&d.delete(et)}else{e(b)?_.call(s,b,k,$):_.call(s,b,k);for(const et of d)et[0]===b&&(k===void 0||et[1]===k)&&($===void 0||et[2]===$)&&d.delete(et)}const _e=d.size===0;j&&_e&&c()})(s.disconnect),s},assignNativeAudioNodeOption=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s]&&(o[s]=a)},assignNativeAudioNodeOptions=(o,e)=>{assignNativeAudioNodeOption(o,e,"channelCount"),assignNativeAudioNodeOption(o,e,"channelCountMode"),assignNativeAudioNodeOption(o,e,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport=o=>typeof o.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod=o=>{o.getFloatTimeDomainData=e=>{const s=new Uint8Array(e.length);o.getByteTimeDomainData(s);const a=Math.max(s.length,o.fftSize);for(let c=0;c(s,a)=>{const c=s.createAnalyser();if(assignNativeAudioNodeOptions(c,a),!(a.maxDecibels>a.minDecibels))throw e();return assignNativeAudioNodeOption(c,a,"fftSize"),assignNativeAudioNodeOption(c,a,"maxDecibels"),assignNativeAudioNodeOption(c,a,"minDecibels"),assignNativeAudioNodeOption(c,a,"smoothingTimeConstant"),o(testAnalyserNodeGetFloatTimeDomainDataMethodSupport,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport(c))||wrapAnalyserNodeGetFloatTimeDomainDataMethod(c),c},createNativeAudioBufferConstructor=o=>o===null?null:o.hasOwnProperty("AudioBuffer")?o.AudioBuffer:null,assignNativeAudioNodeAudioParamValue=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s].value&&(o[s].value=a)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls=o=>{o.start=(e=>{let s=!1;return(a=0,c=0,d)=>{if(s)throw createInvalidStateError();e.call(o,a,c,d),s=!0}})(o.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters=o=>{o.start=(e=>(s=0,a=0,c)=>{if(typeof c=="number"&&c<0||a<0||s<0)throw new RangeError("The parameters can't be negative.");e.call(o,s,a,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters=o=>{o.stop=(e=>(s=0)=>{if(s<0)throw new RangeError("The parameter can't be negative.");e.call(o,s)})(o.stop)},createNativeAudioBufferSourceNodeFactory=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_e.createBufferSource();return assignNativeAudioNodeOptions(tt,et),assignNativeAudioNodeAudioParamValue(tt,et,"playbackRate"),assignNativeAudioNodeOption(tt,et,"buffer"),assignNativeAudioNodeOption(tt,et,"loop"),assignNativeAudioNodeOption(tt,et,"loopEnd"),assignNativeAudioNodeOption(tt,et,"loopStart"),e(s,()=>s(_e))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(tt),e(a,()=>a(_e))||k(tt),e(c,()=>c(_e))||$(tt,_e),e(d,()=>d(_e))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(tt),e(_,()=>_(_e))||j(tt,_e),e(b,()=>b(_e))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(tt),o(_e,tt),tt},createNativeAudioContextConstructor=o=>o===null?null:o.hasOwnProperty("AudioContext")?o.AudioContext:o.hasOwnProperty("webkitAudioContext")?o.webkitAudioContext:null,createNativeAudioDestinationNodeFactory=(o,e)=>(s,a,c)=>{const d=s.destination;if(d.channelCount!==a)try{d.channelCount=a}catch{}c&&d.channelCountMode!=="explicit"&&(d.channelCountMode="explicit"),d.maxChannelCount===0&&Object.defineProperty(d,"maxChannelCount",{value:a});const _=o(s,{channelCount:a,channelCountMode:d.channelCountMode,channelInterpretation:d.channelInterpretation,gain:1});return e(_,"channelCount",b=>()=>b.call(_),b=>k=>{b.call(_,k);try{d.channelCount=k}catch($){if(k>d.maxChannelCount)throw $}}),e(_,"channelCountMode",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelCountMode=k}),e(_,"channelInterpretation",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelInterpretation=k}),Object.defineProperty(_,"maxChannelCount",{get:()=>d.maxChannelCount}),_.connect(d),_},createNativeAudioWorkletNodeConstructor=o=>o===null?null:o.hasOwnProperty("AudioWorkletNode")?o.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions=o=>{const{port1:e}=new MessageChannel;try{e.postMessage(o)}finally{e.close()}},createNativeAudioWorkletNodeFactory=(o,e,s,a,c)=>(d,_,b,k,$,j)=>{if(b!==null)try{const _e=new b(d,k,j),et=new Map;let tt=null;if(Object.defineProperties(_e,{channelCount:{get:()=>j.channelCount,set:()=>{throw o()}},channelCountMode:{get:()=>"explicit",set:()=>{throw o()}},onprocessorerror:{get:()=>tt,set:nt=>{typeof tt=="function"&&_e.removeEventListener("processorerror",tt),tt=typeof nt=="function"?nt:null,typeof tt=="function"&&_e.addEventListener("processorerror",tt)}}}),_e.addEventListener=(nt=>(...st)=>{if(st[0]==="processorerror"){const rt=typeof st[1]=="function"?st[1]:typeof st[1]=="object"&&st[1]!==null&&typeof st[1].handleEvent=="function"?st[1].handleEvent:null;if(rt!==null){const it=et.get(st[1]);it!==void 0?st[1]=it:(st[1]=at=>{at.type==="error"?(Object.defineProperties(at,{type:{value:"processorerror"}}),rt(at)):rt(new ErrorEvent(st[0],Ot({},at)))},et.set(rt,st[1]))}}return nt.call(_e,"error",st[1],st[2]),nt.call(_e,...st)})(_e.addEventListener),_e.removeEventListener=(nt=>(...st)=>{if(st[0]==="processorerror"){const rt=et.get(st[1]);rt!==void 0&&(et.delete(st[1]),st[1]=rt)}return nt.call(_e,"error",st[1],st[2]),nt.call(_e,st[0],st[1],st[2])})(_e.removeEventListener),j.numberOfOutputs!==0){const nt=s(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return _e.connect(nt).connect(d.destination),c(_e,()=>nt.disconnect(),()=>nt.connect(d.destination))}return _e}catch(_e){throw _e.code===11?a():_e}if($===void 0)throw a();return testClonabilityOfAudioWorkletNodeOptions(j),e(d,_,$,j)},computeBufferSize=(o,e)=>o===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(o*e))))),cloneAudioWorkletNodeOptions=o=>new Promise((e,s)=>{const{port1:a,port2:c}=new MessageChannel;a.onmessage=({data:d})=>{a.close(),c.close(),e(d)},a.onmessageerror=({data:d})=>{a.close(),c.close(),s(d)},c.postMessage(o)}),createAudioWorkletProcessorPromise=async(o,e)=>{const s=await cloneAudioWorkletNodeOptions(e);return new o(s)},createAudioWorkletProcessor=(o,e,s,a)=>{let c=NODE_TO_PROCESSOR_MAPS.get(o);c===void 0&&(c=new WeakMap,NODE_TO_PROCESSOR_MAPS.set(o,c));const d=createAudioWorkletProcessorPromise(s,a);return c.set(e,d),d},createNativeAudioWorkletNodeFakerFactory=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,st,rt)=>{if(rt.numberOfInputs===0&&rt.numberOfOutputs===0)throw k();const it=Array.isArray(rt.outputChannelCount)?rt.outputChannelCount:Array.from(rt.outputChannelCount);if(it.some(kt=>kt<1))throw k();if(it.length!==rt.numberOfOutputs)throw e();if(rt.channelCountMode!=="explicit")throw k();const at=rt.channelCount*rt.numberOfInputs,ot=it.reduce((kt,Bt)=>kt+Bt,0),ht=st.parameterDescriptors===void 0?0:st.parameterDescriptors.length;if(at+ht>6||ot>6)throw k();const ct=new MessageChannel,lt=[],ut=[];for(let kt=0;ktkt===void 0?0:kt},maxValue:{get:()=>Bt===void 0?MOST_POSITIVE_SINGLE_FLOAT:Bt},minValue:{get:()=>Qt===void 0?MOST_NEGATIVE_SINGLE_FLOAT:Qt}}),pt.push($t)}const dt=a(tt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,at+ht)}),gt=computeBufferSize(nt,tt.sampleRate),yt=b(tt,gt,at+ht,Math.max(1,ot)),ft=c(tt,{channelCount:Math.max(1,ot),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ot)}),mt=[];for(let kt=0;kt{const Qt=pt[Bt];return Qt.connect(dt,0,at+Bt),Qt.start(0),[kt,Qt.offset]}));dt.connect(yt);let vt=rt.channelInterpretation,At=null;const _t=rt.numberOfOutputs===0?[yt]:mt,Dt={get bufferSize(){return gt},get channelCount(){return rt.channelCount},set channelCount(kt){throw s()},get channelCountMode(){return rt.channelCountMode},set channelCountMode(kt){throw s()},get channelInterpretation(){return vt},set channelInterpretation(kt){for(const Bt of lt)Bt.channelInterpretation=kt;vt=kt},get context(){return yt.context},get inputs(){return lt},get numberOfInputs(){return rt.numberOfInputs},get numberOfOutputs(){return rt.numberOfOutputs},get onprocessorerror(){return At},set onprocessorerror(kt){typeof At=="function"&&Dt.removeEventListener("processorerror",At),At=typeof kt=="function"?kt:null,typeof At=="function"&&Dt.addEventListener("processorerror",At)},get parameters(){return Et},get port(){return ct.port2},addEventListener(...kt){return yt.addEventListener(kt[0],kt[1],kt[2])},connect:o.bind(null,_t),disconnect:$.bind(null,_t),dispatchEvent(...kt){return yt.dispatchEvent(kt[0])},removeEventListener(...kt){return yt.removeEventListener(kt[0],kt[1],kt[2])}},bt=new Map;ct.port1.addEventListener=(kt=>(...Bt)=>{if(Bt[0]==="message"){const Qt=typeof Bt[1]=="function"?Bt[1]:typeof Bt[1]=="object"&&Bt[1]!==null&&typeof Bt[1].handleEvent=="function"?Bt[1].handleEvent:null;if(Qt!==null){const Lt=bt.get(Bt[1]);Lt!==void 0?Bt[1]=Lt:(Bt[1]=$t=>{j(tt.currentTime,tt.sampleRate,()=>Qt($t))},bt.set(Qt,Bt[1]))}}return kt.call(ct.port1,Bt[0],Bt[1],Bt[2])})(ct.port1.addEventListener),ct.port1.removeEventListener=(kt=>(...Bt)=>{if(Bt[0]==="message"){const Qt=bt.get(Bt[1]);Qt!==void 0&&(bt.delete(Bt[1]),Bt[1]=Qt)}return kt.call(ct.port1,Bt[0],Bt[1],Bt[2])})(ct.port1.removeEventListener);let Tt=null;Object.defineProperty(ct.port1,"onmessage",{get:()=>Tt,set:kt=>{typeof Tt=="function"&&ct.port1.removeEventListener("message",Tt),Tt=typeof kt=="function"?kt:null,typeof Tt=="function"&&(ct.port1.addEventListener("message",Tt),ct.port1.start())}}),st.prototype.port=ct.port1;let St=null;createAudioWorkletProcessor(tt,Dt,st,rt).then(kt=>St=kt);const xt=createNestedArrays(rt.numberOfInputs,rt.channelCount),Rt=createNestedArrays(rt.numberOfOutputs,it),Mt=st.parameterDescriptors===void 0?[]:st.parameterDescriptors.reduce((kt,{name:Bt})=>wt(Ot({},kt),{[Bt]:new Float32Array(128)}),{});let It=!0;const Ft=()=>{rt.numberOfOutputs>0&&yt.disconnect(ft);for(let kt=0,Bt=0;kt{if(St!==null){const Qt=_e(Dt);for(let Lt=0;Lt{copyFromChannel(kt,Mt,$t,at+Wt,Lt)});for(let $t=0;$t{if(Qt[zt].size>0)return Vt.set(zt,gt/128),Gt;const Xt=Vt.get(zt);return Xt===void 0?[]:(Gt.every(Zt=>Zt.every(sn=>sn===0))&&(Xt===1?Vt.delete(zt):Vt.set(zt,Xt-1)),Gt)});It=j(tt.currentTime+Lt/tt.sampleRate,tt.sampleRate,()=>St.process($t,Rt,Mt));for(let Gt=0,zt=0;Gtyt.connect(Nt).connect(tt.destination),Jt=()=>{yt.disconnect(Nt),Nt.disconnect()},en=()=>{if(It){Jt(),rt.numberOfOutputs>0&&yt.connect(ft);for(let kt=0,Bt=0;kt{It&&(Kt(),Ft()),jt=!1};return Kt(),et(Dt,en,tn)},createNativeBiquadFilterNode=(o,e)=>{const s=o.createBiquadFilter();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"Q"),assignNativeAudioNodeAudioParamValue(s,e,"detune"),assignNativeAudioNodeAudioParamValue(s,e,"frequency"),assignNativeAudioNodeAudioParamValue(s,e,"gain"),assignNativeAudioNodeOption(s,e,"type"),s},createNativeChannelMergerNodeFactory=(o,e)=>(s,a)=>{const c=s.createChannelMerger(a.numberOfInputs);return o!==null&&o.name==="webkitAudioContext"&&e(s,c),assignNativeAudioNodeOptions(c,a),c},wrapChannelSplitterNode=o=>{const e=o.numberOfOutputs;Object.defineProperty(o,"channelCount",{get:()=>e,set:s=>{if(s!==e)throw createInvalidStateError()}}),Object.defineProperty(o,"channelCountMode",{get:()=>"explicit",set:s=>{if(s!=="explicit")throw createInvalidStateError()}}),Object.defineProperty(o,"channelInterpretation",{get:()=>"discrete",set:s=>{if(s!=="discrete")throw createInvalidStateError()}})},createNativeChannelSplitterNode=(o,e)=>{const s=o.createChannelSplitter(e.numberOfOutputs);return assignNativeAudioNodeOptions(s,e),wrapChannelSplitterNode(s),s},createNativeConstantSourceNodeFactory=(o,e,s,a,c)=>(d,_)=>{if(d.createConstantSource===void 0)return s(d,_);const b=d.createConstantSource();return assignNativeAudioNodeOptions(b,_),assignNativeAudioNodeAudioParamValue(b,_,"offset"),e(a,()=>a(d))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(b),e(c,()=>c(d))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(b),o(d,b),b},interceptConnections=(o,e)=>(o.connect=e.connect.bind(e),o.disconnect=e.disconnect.bind(e),o),createNativeConstantSourceNodeFakerFactory=(o,e,s,a)=>(c,b)=>{var k=b,{offset:d}=k,_=ln(k,["offset"]);const $=c.createBuffer(1,2,44100),j=e(c,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),_e=s(c,wt(Ot({},_),{gain:d})),et=$.getChannelData(0);et[0]=1,et[1]=1,j.buffer=$,j.loop=!0;const tt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(rt){_e.channelCount=rt},get channelCountMode(){return _e.channelCountMode},set channelCountMode(rt){_e.channelCountMode=rt},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(rt){_e.channelInterpretation=rt},get context(){return _e.context},get inputs(){return[]},get numberOfInputs(){return j.numberOfInputs},get numberOfOutputs(){return _e.numberOfOutputs},get offset(){return _e.gain},get onended(){return j.onended},set onended(rt){j.onended=rt},addEventListener(...rt){return j.addEventListener(rt[0],rt[1],rt[2])},dispatchEvent(...rt){return j.dispatchEvent(rt[0])},removeEventListener(...rt){return j.removeEventListener(rt[0],rt[1],rt[2])},start(rt=0){j.start.call(j,rt)},stop(rt=0){j.stop.call(j,rt)}},nt=()=>j.connect(_e),st=()=>j.disconnect(_e);return o(c,j),a(interceptConnections(tt,_e),nt,st)},createNativeConvolverNodeFactory=(o,e)=>(s,a)=>{const c=s.createConvolver();if(assignNativeAudioNodeOptions(c,a),a.disableNormalization===c.normalize&&(c.normalize=!a.disableNormalization),assignNativeAudioNodeOption(c,a,"buffer"),a.channelCount>2||(e(c,"channelCount",d=>()=>d.call(c),d=>_=>{if(_>2)throw o();return d.call(c,_)}),a.channelCountMode==="max"))throw o();return e(c,"channelCountMode",d=>()=>d.call(c),d=>_=>{if(_==="max")throw o();return d.call(c,_)}),c},createNativeDelayNode=(o,e)=>{const s=o.createDelay(e.maxDelayTime);return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"delayTime"),s},createNativeDynamicsCompressorNodeFactory=o=>(e,s)=>{const a=e.createDynamicsCompressor();if(assignNativeAudioNodeOptions(a,s),s.channelCount>2||s.channelCountMode==="max")throw o();return assignNativeAudioNodeAudioParamValue(a,s,"attack"),assignNativeAudioNodeAudioParamValue(a,s,"knee"),assignNativeAudioNodeAudioParamValue(a,s,"ratio"),assignNativeAudioNodeAudioParamValue(a,s,"release"),assignNativeAudioNodeAudioParamValue(a,s,"threshold"),a},createNativeGainNode=(o,e)=>{const s=o.createGain();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"gain"),s},createNativeIIRFilterNodeFactory=o=>(e,s,a)=>{if(e.createIIRFilter===void 0)return o(e,s,a);const c=e.createIIRFilter(a.feedforward,a.feedback);return assignNativeAudioNodeOptions(c,a),c};function divide(o,e){const s=e[0]*e[0]+e[1]*e[1];return[(o[0]*e[0]+o[1]*e[1])/s,(o[1]*e[0]-o[0]*e[1])/s]}function multiply(o,e){return[o[0]*e[0]-o[1]*e[1],o[0]*e[1]+o[1]*e[0]]}function evaluatePolynomial(o,e){let s=[0,0];for(let a=o.length-1;a>=0;a-=1)s=multiply(s,e),s[0]+=o[a];return s}const createNativeIIRFilterNodeFakerFactory=(o,e,s,a)=>(c,d,{channelCount:_,channelCountMode:b,channelInterpretation:k,feedback:$,feedforward:j})=>{const _e=computeBufferSize(d,c.sampleRate),et=$ instanceof Float64Array?$:new Float64Array($),tt=j instanceof Float64Array?j:new Float64Array(j),nt=et.length,st=tt.length,rt=Math.min(nt,st);if(nt===0||nt>20)throw a();if(et[0]===0)throw e();if(st===0||st>20)throw a();if(tt[0]===0)throw e();if(et[0]!==1){for(let pt=0;pt{const dt=pt.inputBuffer,gt=pt.outputBuffer,yt=dt.numberOfChannels;for(let ft=0;fto.createMediaElementSource(e.mediaElement),createNativeMediaStreamAudioDestinationNode=(o,e)=>{const s=o.createMediaStreamDestination();return assignNativeAudioNodeOptions(s,e),s.numberOfOutputs===1&&Object.defineProperty(s,"numberOfOutputs",{get:()=>0}),s},createNativeMediaStreamAudioSourceNode=(o,{mediaStream:e})=>{const s=e.getAudioTracks();s.sort((d,_)=>d.id<_.id?-1:d.id>_.id?1:0);const a=s.slice(0,1),c=o.createMediaStreamSource(new MediaStream(a));return Object.defineProperty(c,"mediaStream",{value:e}),c},createNativeMediaStreamTrackAudioSourceNodeFactory=(o,e)=>(s,{mediaStreamTrack:a})=>{if(typeof s.createMediaStreamTrackSource=="function")return s.createMediaStreamTrackSource(a);const c=new MediaStream([a]),d=s.createMediaStreamSource(c);if(a.kind!=="audio")throw o();if(e(s))throw new TypeError;return d},createNativeOfflineAudioContextConstructor=o=>o===null?null:o.hasOwnProperty("OfflineAudioContext")?o.OfflineAudioContext:o.hasOwnProperty("webkitOfflineAudioContext")?o.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory=(o,e,s,a,c,d)=>(_,b)=>{const k=_.createOscillator();return assignNativeAudioNodeOptions(k,b),assignNativeAudioNodeAudioParamValue(k,b,"detune"),assignNativeAudioNodeAudioParamValue(k,b,"frequency"),b.periodicWave!==void 0?k.setPeriodicWave(b.periodicWave):assignNativeAudioNodeOption(k,b,"type"),e(s,()=>s(_))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(k),e(a,()=>a(_))||d(k,_),e(c,()=>c(_))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(k),o(_,k),k},createNativePannerNodeFactory=o=>(e,s)=>{const a=e.createPanner();return a.orientationX===void 0?o(e,s):(assignNativeAudioNodeOptions(a,s),assignNativeAudioNodeAudioParamValue(a,s,"orientationX"),assignNativeAudioNodeAudioParamValue(a,s,"orientationY"),assignNativeAudioNodeAudioParamValue(a,s,"orientationZ"),assignNativeAudioNodeAudioParamValue(a,s,"positionX"),assignNativeAudioNodeAudioParamValue(a,s,"positionY"),assignNativeAudioNodeAudioParamValue(a,s,"positionZ"),assignNativeAudioNodeOption(a,s,"coneInnerAngle"),assignNativeAudioNodeOption(a,s,"coneOuterAngle"),assignNativeAudioNodeOption(a,s,"coneOuterGain"),assignNativeAudioNodeOption(a,s,"distanceModel"),assignNativeAudioNodeOption(a,s,"maxDistance"),assignNativeAudioNodeOption(a,s,"panningModel"),assignNativeAudioNodeOption(a,s,"refDistance"),assignNativeAudioNodeOption(a,s,"rolloffFactor"),a)},createNativePannerNodeFakerFactory=(o,e,s,a,c,d,_,b,k,$)=>(j,gt)=>{var yt=gt,{coneInnerAngle:_e,coneOuterAngle:et,coneOuterGain:tt,distanceModel:nt,maxDistance:st,orientationX:rt,orientationY:it,orientationZ:at,panningModel:ot,positionX:ht,positionY:ct,positionZ:lt,refDistance:ut,rolloffFactor:pt}=yt,dt=ln(yt,["coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","orientationX","orientationY","orientationZ","panningModel","positionX","positionY","positionZ","refDistance","rolloffFactor"]);const ft=j.createPanner();if(dt.channelCount>2||dt.channelCountMode==="max")throw _();assignNativeAudioNodeOptions(ft,dt);const mt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},Et=s(j,wt(Ot({},mt),{channelInterpretation:"speakers",numberOfInputs:6})),vt=a(j,wt(Ot({},dt),{gain:1})),At=a(j,wt(Ot({},mt),{gain:1})),_t=a(j,wt(Ot({},mt),{gain:0})),Dt=a(j,wt(Ot({},mt),{gain:0})),bt=a(j,wt(Ot({},mt),{gain:0})),Tt=a(j,wt(Ot({},mt),{gain:0})),St=a(j,wt(Ot({},mt),{gain:0})),Ct=c(j,256,6,1),xt=d(j,wt(Ot({},mt),{curve:new Float32Array([1,1]),oversample:"none"}));let Rt=[rt,it,at],Mt=[ht,ct,lt];const It=new Float32Array(1);Ct.onaudioprocess=({inputBuffer:Nt})=>{const Kt=[k(Nt,It,0),k(Nt,It,1),k(Nt,It,2)];Kt.some((en,tn)=>en!==Rt[tn])&&(ft.setOrientation(...Kt),Rt=Kt);const Jt=[k(Nt,It,3),k(Nt,It,4),k(Nt,It,5)];Jt.some((en,tn)=>en!==Mt[tn])&&(ft.setPosition(...Jt),Mt=Jt)},Object.defineProperty(_t.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Dt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(bt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Tt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(St.gain,"defaultValue",{get:()=>0});const Ft={get bufferSize(){},get channelCount(){return ft.channelCount},set channelCount(Nt){if(Nt>2)throw _();vt.channelCount=Nt,ft.channelCount=Nt},get channelCountMode(){return ft.channelCountMode},set channelCountMode(Nt){if(Nt==="max")throw _();vt.channelCountMode=Nt,ft.channelCountMode=Nt},get channelInterpretation(){return ft.channelInterpretation},set channelInterpretation(Nt){vt.channelInterpretation=Nt,ft.channelInterpretation=Nt},get coneInnerAngle(){return ft.coneInnerAngle},set coneInnerAngle(Nt){ft.coneInnerAngle=Nt},get coneOuterAngle(){return ft.coneOuterAngle},set coneOuterAngle(Nt){ft.coneOuterAngle=Nt},get coneOuterGain(){return ft.coneOuterGain},set coneOuterGain(Nt){if(Nt<0||Nt>1)throw e();ft.coneOuterGain=Nt},get context(){return ft.context},get distanceModel(){return ft.distanceModel},set distanceModel(Nt){ft.distanceModel=Nt},get inputs(){return[vt]},get maxDistance(){return ft.maxDistance},set maxDistance(Nt){if(Nt<0)throw new RangeError;ft.maxDistance=Nt},get numberOfInputs(){return ft.numberOfInputs},get numberOfOutputs(){return ft.numberOfOutputs},get orientationX(){return At.gain},get orientationY(){return _t.gain},get orientationZ(){return Dt.gain},get panningModel(){return ft.panningModel},set panningModel(Nt){ft.panningModel=Nt},get positionX(){return bt.gain},get positionY(){return Tt.gain},get positionZ(){return St.gain},get refDistance(){return ft.refDistance},set refDistance(Nt){if(Nt<0)throw new RangeError;ft.refDistance=Nt},get rolloffFactor(){return ft.rolloffFactor},set rolloffFactor(Nt){if(Nt<0)throw new RangeError;ft.rolloffFactor=Nt},addEventListener(...Nt){return vt.addEventListener(Nt[0],Nt[1],Nt[2])},dispatchEvent(...Nt){return vt.dispatchEvent(Nt[0])},removeEventListener(...Nt){return vt.removeEventListener(Nt[0],Nt[1],Nt[2])}};_e!==Ft.coneInnerAngle&&(Ft.coneInnerAngle=_e),et!==Ft.coneOuterAngle&&(Ft.coneOuterAngle=et),tt!==Ft.coneOuterGain&&(Ft.coneOuterGain=tt),nt!==Ft.distanceModel&&(Ft.distanceModel=nt),st!==Ft.maxDistance&&(Ft.maxDistance=st),rt!==Ft.orientationX.value&&(Ft.orientationX.value=rt),it!==Ft.orientationY.value&&(Ft.orientationY.value=it),at!==Ft.orientationZ.value&&(Ft.orientationZ.value=at),ot!==Ft.panningModel&&(Ft.panningModel=ot),ht!==Ft.positionX.value&&(Ft.positionX.value=ht),ct!==Ft.positionY.value&&(Ft.positionY.value=ct),lt!==Ft.positionZ.value&&(Ft.positionZ.value=lt),ut!==Ft.refDistance&&(Ft.refDistance=ut),pt!==Ft.rolloffFactor&&(Ft.rolloffFactor=pt),(Rt[0]!==1||Rt[1]!==0||Rt[2]!==0)&&ft.setOrientation(...Rt),(Mt[0]!==0||Mt[1]!==0||Mt[2]!==0)&&ft.setPosition(...Mt);const Vt=()=>{vt.connect(ft),o(vt,xt,0,0),xt.connect(At).connect(Et,0,0),xt.connect(_t).connect(Et,0,1),xt.connect(Dt).connect(Et,0,2),xt.connect(bt).connect(Et,0,3),xt.connect(Tt).connect(Et,0,4),xt.connect(St).connect(Et,0,5),Et.connect(Ct).connect(j.destination)},jt=()=>{vt.disconnect(ft),b(vt,xt,0,0),xt.disconnect(At),At.disconnect(Et),xt.disconnect(_t),_t.disconnect(Et),xt.disconnect(Dt),Dt.disconnect(Et),xt.disconnect(bt),bt.disconnect(Et),xt.disconnect(Tt),Tt.disconnect(Et),xt.disconnect(St),St.disconnect(Et),Et.disconnect(Ct),Ct.disconnect(j.destination)};return $(interceptConnections(Ft,ft),Vt,jt)},createNativePeriodicWaveFactory=o=>(e,{disableNormalization:s,imag:a,real:c})=>{const d=a instanceof Float32Array?a:new Float32Array(a),_=c instanceof Float32Array?c:new Float32Array(c),b=e.createPeriodicWave(_,d,{disableNormalization:s});if(Array.from(a).length<2)throw o();return b},createNativeScriptProcessorNode=(o,e,s,a)=>o.createScriptProcessor(e,s,a),createNativeStereoPannerNodeFactory=(o,e)=>(s,a)=>{const c=a.channelCountMode;if(c==="clamped-max")throw e();if(s.createStereoPanner===void 0)return o(s,a);const d=s.createStereoPanner();return assignNativeAudioNodeOptions(d,a),assignNativeAudioNodeAudioParamValue(d,a,"pan"),Object.defineProperty(d,"channelCountMode",{get:()=>c,set:_=>{if(_!==c)throw e()}}),d},createNativeStereoPannerNodeFakerFactory=(o,e,s,a,c,d)=>{const b=new Float32Array([1,1]),k=Math.PI/2,$={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},j=wt(Ot({},$),{oversample:"none"}),_e=(nt,st,rt,it)=>{const at=new Float32Array(16385),ot=new Float32Array(16385);for(let dt=0;dt<16385;dt+=1){const gt=dt/16384*k;at[dt]=Math.cos(gt),ot[dt]=Math.sin(gt)}const ht=s(nt,wt(Ot({},$),{gain:0})),ct=a(nt,wt(Ot({},j),{curve:at})),lt=a(nt,wt(Ot({},j),{curve:b})),ut=s(nt,wt(Ot({},$),{gain:0})),pt=a(nt,wt(Ot({},j),{curve:ot}));return{connectGraph(){st.connect(ht),st.connect(lt.inputs===void 0?lt:lt.inputs[0]),st.connect(ut),lt.connect(rt),rt.connect(ct.inputs===void 0?ct:ct.inputs[0]),rt.connect(pt.inputs===void 0?pt:pt.inputs[0]),ct.connect(ht.gain),pt.connect(ut.gain),ht.connect(it,0,0),ut.connect(it,0,1)},disconnectGraph(){st.disconnect(ht),st.disconnect(lt.inputs===void 0?lt:lt.inputs[0]),st.disconnect(ut),lt.disconnect(rt),rt.disconnect(ct.inputs===void 0?ct:ct.inputs[0]),rt.disconnect(pt.inputs===void 0?pt:pt.inputs[0]),ct.disconnect(ht.gain),pt.disconnect(ut.gain),ht.disconnect(it,0,0),ut.disconnect(it,0,1)}}},et=(nt,st,rt,it)=>{const at=new Float32Array(16385),ot=new Float32Array(16385),ht=new Float32Array(16385),ct=new Float32Array(16385),lt=Math.floor(16385/2);for(let _t=0;_t<16385;_t+=1)if(_t>lt){const Dt=(_t-lt)/(16384-lt)*k;at[_t]=Math.cos(Dt),ot[_t]=Math.sin(Dt),ht[_t]=0,ct[_t]=1}else{const Dt=_t/(16384-lt)*k;at[_t]=1,ot[_t]=0,ht[_t]=Math.cos(Dt),ct[_t]=Math.sin(Dt)}const ut=e(nt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),pt=s(nt,wt(Ot({},$),{gain:0})),dt=a(nt,wt(Ot({},j),{curve:at})),gt=s(nt,wt(Ot({},$),{gain:0})),yt=a(nt,wt(Ot({},j),{curve:ot})),ft=a(nt,wt(Ot({},j),{curve:b})),mt=s(nt,wt(Ot({},$),{gain:0})),Et=a(nt,wt(Ot({},j),{curve:ht})),vt=s(nt,wt(Ot({},$),{gain:0})),At=a(nt,wt(Ot({},j),{curve:ct}));return{connectGraph(){st.connect(ut),st.connect(ft.inputs===void 0?ft:ft.inputs[0]),ut.connect(pt,0),ut.connect(gt,0),ut.connect(mt,1),ut.connect(vt,1),ft.connect(rt),rt.connect(dt.inputs===void 0?dt:dt.inputs[0]),rt.connect(yt.inputs===void 0?yt:yt.inputs[0]),rt.connect(Et.inputs===void 0?Et:Et.inputs[0]),rt.connect(At.inputs===void 0?At:At.inputs[0]),dt.connect(pt.gain),yt.connect(gt.gain),Et.connect(mt.gain),At.connect(vt.gain),pt.connect(it,0,0),mt.connect(it,0,0),gt.connect(it,0,1),vt.connect(it,0,1)},disconnectGraph(){st.disconnect(ut),st.disconnect(ft.inputs===void 0?ft:ft.inputs[0]),ut.disconnect(pt,0),ut.disconnect(gt,0),ut.disconnect(mt,1),ut.disconnect(vt,1),ft.disconnect(rt),rt.disconnect(dt.inputs===void 0?dt:dt.inputs[0]),rt.disconnect(yt.inputs===void 0?yt:yt.inputs[0]),rt.disconnect(Et.inputs===void 0?Et:Et.inputs[0]),rt.disconnect(At.inputs===void 0?At:At.inputs[0]),dt.disconnect(pt.gain),yt.disconnect(gt.gain),Et.disconnect(mt.gain),At.disconnect(vt.gain),pt.disconnect(it,0,0),mt.disconnect(it,0,0),gt.disconnect(it,0,1),vt.disconnect(it,0,1)}}},tt=(nt,st,rt,it,at)=>{if(st===1)return _e(nt,rt,it,at);if(st===2)return et(nt,rt,it,at);throw c()};return(nt,ot)=>{var ht=ot,{channelCount:st,channelCountMode:rt,pan:it}=ht,at=ln(ht,["channelCount","channelCountMode","pan"]);if(rt==="max")throw c();const ct=o(nt,wt(Ot({},at),{channelCount:1,channelCountMode:rt,numberOfInputs:2})),lt=s(nt,wt(Ot({},at),{channelCount:st,channelCountMode:rt,gain:1})),ut=s(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:it});let{connectGraph:pt,disconnectGraph:dt}=tt(nt,st,lt,ut,ct);Object.defineProperty(ut.gain,"defaultValue",{get:()=>0}),Object.defineProperty(ut.gain,"maxValue",{get:()=>1}),Object.defineProperty(ut.gain,"minValue",{get:()=>-1});const gt={get bufferSize(){},get channelCount(){return lt.channelCount},set channelCount(Et){lt.channelCount!==Et&&(yt&&dt(),{connectGraph:pt,disconnectGraph:dt}=tt(nt,Et,lt,ut,ct),yt&&pt()),lt.channelCount=Et},get channelCountMode(){return lt.channelCountMode},set channelCountMode(Et){if(Et==="clamped-max"||Et==="max")throw c();lt.channelCountMode=Et},get channelInterpretation(){return lt.channelInterpretation},set channelInterpretation(Et){lt.channelInterpretation=Et},get context(){return lt.context},get inputs(){return[lt]},get numberOfInputs(){return lt.numberOfInputs},get numberOfOutputs(){return lt.numberOfOutputs},get pan(){return ut.gain},addEventListener(...Et){return lt.addEventListener(Et[0],Et[1],Et[2])},dispatchEvent(...Et){return lt.dispatchEvent(Et[0])},removeEventListener(...Et){return lt.removeEventListener(Et[0],Et[1],Et[2])}};let yt=!1;const ft=()=>{pt(),yt=!0},mt=()=>{dt(),yt=!1};return d(interceptConnections(gt,ct),ft,mt)}},createNativeWaveShaperNodeFactory=(o,e,s,a,c,d,_)=>(b,k)=>{const $=b.createWaveShaper();if(d!==null&&d.name==="webkitAudioContext"&&b.createGain().gain.automationRate===void 0)return s(b,k);assignNativeAudioNodeOptions($,k);const j=k.curve===null||k.curve instanceof Float32Array?k.curve:new Float32Array(k.curve);if(j!==null&&j.length<2)throw e();assignNativeAudioNodeOption($,{curve:j},"curve"),assignNativeAudioNodeOption($,k,"oversample");let _e=null,et=!1;return _($,"curve",st=>()=>st.call($),st=>rt=>(st.call($,rt),et&&(a(rt)&&_e===null?_e=o(b,$):!a(rt)&&_e!==null&&(_e(),_e=null)),rt)),c($,()=>{et=!0,a($.curve)&&(_e=o(b,$))},()=>{et=!1,_e!==null&&(_e(),_e=null)})},createNativeWaveShaperNodeFakerFactory=(o,e,s,a,c)=>(d,$)=>{var j=$,{curve:_,oversample:b}=j,k=ln(j,["curve","oversample"]);const _e=d.createWaveShaper(),et=d.createWaveShaper();assignNativeAudioNodeOptions(_e,k),assignNativeAudioNodeOptions(et,k);const tt=s(d,wt(Ot({},k),{gain:1})),nt=s(d,wt(Ot({},k),{gain:-1})),st=s(d,wt(Ot({},k),{gain:1})),rt=s(d,wt(Ot({},k),{gain:-1}));let it=null,at=!1,ot=null;const ht={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(ut){tt.channelCount=ut,nt.channelCount=ut,_e.channelCount=ut,st.channelCount=ut,et.channelCount=ut,rt.channelCount=ut},get channelCountMode(){return _e.channelCountMode},set channelCountMode(ut){tt.channelCountMode=ut,nt.channelCountMode=ut,_e.channelCountMode=ut,st.channelCountMode=ut,et.channelCountMode=ut,rt.channelCountMode=ut},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(ut){tt.channelInterpretation=ut,nt.channelInterpretation=ut,_e.channelInterpretation=ut,st.channelInterpretation=ut,et.channelInterpretation=ut,rt.channelInterpretation=ut},get context(){return _e.context},get curve(){return ot},set curve(ut){if(ut!==null&&ut.length<2)throw e();if(ut===null)_e.curve=ut,et.curve=ut;else{const pt=ut.length,dt=new Float32Array(pt+2-pt%2),gt=new Float32Array(pt+2-pt%2);dt[0]=ut[0],gt[0]=-ut[pt-1];const yt=Math.ceil((pt+1)/2),ft=(pt+1)/2-1;for(let mt=1;mt{tt.connect(_e).connect(st),tt.connect(nt).connect(et).connect(rt).connect(st),at=!0,a(ot)&&(it=o(d,tt))},lt=()=>{tt.disconnect(_e),_e.disconnect(st),tt.disconnect(nt),nt.disconnect(et),et.disconnect(rt),rt.disconnect(st),at=!1,it!==null&&(it(),it=null)};return c(interceptConnections(ht,st),ct,lt)},createNotSupportedError=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$5={numberOfChannels:1},createOfflineAudioContextConstructor=(o,e,s,a,c)=>class extends o{constructor(_,b,k){let $;if(typeof _=="number"&&b!==void 0&&k!==void 0)$={length:b,numberOfChannels:_,sampleRate:k};else if(typeof _=="object")$=_;else throw new Error("The given parameters are not valid.");const{length:j,numberOfChannels:_e,sampleRate:et}=Ot(Ot({},DEFAULT_OPTIONS$5),$),tt=a(_e,j,et);e(testPromiseSupport,()=>testPromiseSupport(tt))||tt.addEventListener("statechange",(()=>{let nt=0;const st=rt=>{this._state==="running"&&(nt>0?(tt.removeEventListener("statechange",st),rt.stopImmediatePropagation(),this._waitForThePromiseToSettle(rt)):nt+=1)};return st})()),super(tt,_e),this._length=j,this._nativeOfflineAudioContext=tt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(s()):(this._state="running",c(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph(this)}))}_waitForThePromiseToSettle(_){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(_):setTimeout(()=>this._waitForThePromiseToSettle(_))}},DEFAULT_OPTIONS$4={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Ot(Ot({},DEFAULT_OPTIONS$4),$),et=s(j,_e),tt=d(j),nt=tt?a():null,st=k.sampleRate/2;super(k,!1,et,nt),this._detune=e(this,tt,et.detune,153600,-153600),this._frequency=e(this,tt,et.frequency,st,-st),this._nativeOscillatorNode=et,this._onended=null,this._oscillatorNodeRenderer=nt,this._oscillatorNodeRenderer!==null&&_e.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=_e.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeOscillatorNode.onended=$;const j=this._nativeOscillatorNode.onended;this._onended=j!==null&&j===$?k:j}get type(){return this._nativeOscillatorNode.type}set type(k){this._nativeOscillatorNode.type=k,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(k){this._nativeOscillatorNode.setPeriodicWave(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=k)}start(k=0){if(this._nativeOscillatorNode.start(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeOscillatorNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeOscillatorNode.addEventListener("ended",$)}}stop(k=0){this._nativeOscillatorNode.stop(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=k)}},createOscillatorNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null,k=null;const $=async(j,_e)=>{let et=s(j);const tt=isOwnedByContext(et,_e);if(!tt){const nt={channelCount:et.channelCount,channelCountMode:et.channelCountMode,channelInterpretation:et.channelInterpretation,detune:et.detune.value,frequency:et.frequency.value,periodicWave:_===null?void 0:_,type:et.type};et=e(_e,nt),b!==null&&et.start(b),k!==null&&et.stop(k)}return d.set(_e,et),tt?(await o(_e,j.detune,et.detune),await o(_e,j.frequency,et.frequency)):(await a(_e,j.detune,et.detune),await a(_e,j.frequency,et.frequency)),await c(j,_e,et),et};return{set periodicWave(j){_=j},set start(j){b=j},set stop(j){k=j},render(j,_e){const et=d.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},DEFAULT_OPTIONS$3={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Ot(Ot({},DEFAULT_OPTIONS$3),$),et=s(j,_e),tt=d(j),nt=tt?a():null;super(k,!1,et,nt),this._nativePannerNode=et,this._orientationX=e(this,tt,et.orientationX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationY=e(this,tt,et.orientationY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationZ=e(this,tt,et.orientationZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionX=e(this,tt,et.positionX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionY=e(this,tt,et.positionY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionZ=e(this,tt,et.positionZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),_(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(k){this._nativePannerNode.coneInnerAngle=k}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(k){this._nativePannerNode.coneOuterAngle=k}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(k){this._nativePannerNode.coneOuterGain=k}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(k){this._nativePannerNode.distanceModel=k}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(k){this._nativePannerNode.maxDistance=k}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(k){this._nativePannerNode.panningModel=k}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(k){this._nativePannerNode.refDistance=k}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(k){this._nativePannerNode.rolloffFactor=k}},createPannerNodeRendererFactory=(o,e,s,a,c,d,_,b,k,$)=>()=>{const j=new WeakMap;let _e=null;const et=async(tt,nt)=>{let st=null,rt=d(tt);const it={channelCount:rt.channelCount,channelCountMode:rt.channelCountMode,channelInterpretation:rt.channelInterpretation},at=wt(Ot({},it),{coneInnerAngle:rt.coneInnerAngle,coneOuterAngle:rt.coneOuterAngle,coneOuterGain:rt.coneOuterGain,distanceModel:rt.distanceModel,maxDistance:rt.maxDistance,panningModel:rt.panningModel,refDistance:rt.refDistance,rolloffFactor:rt.rolloffFactor}),ot=isOwnedByContext(rt,nt);if("bufferSize"in rt)st=a(nt,wt(Ot({},it),{gain:1}));else if(!ot){const ht=wt(Ot({},at),{orientationX:rt.orientationX.value,orientationY:rt.orientationY.value,orientationZ:rt.orientationZ.value,positionX:rt.positionX.value,positionY:rt.positionY.value,positionZ:rt.positionZ.value});rt=c(nt,ht)}if(j.set(nt,st===null?rt:st),st!==null){if(_e===null){if(_===null)throw new Error("Missing the native OfflineAudioContext constructor.");const yt=new _(6,tt.context.length,nt.sampleRate),ft=e(yt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});ft.connect(yt.destination),_e=(async()=>{const mt=await Promise.all([tt.orientationX,tt.orientationY,tt.orientationZ,tt.positionX,tt.positionY,tt.positionZ].map(async(Et,vt)=>{const At=s(yt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:vt===0?1:0});return await b(yt,Et,At.offset),At}));for(let Et=0;Et<6;Et+=1)mt[Et].connect(ft,0,Et),mt[Et].start(0);return $(yt)})()}const ht=await _e,ct=a(nt,wt(Ot({},it),{gain:1}));await k(tt,nt,ct);const lt=[];for(let yt=0;ytEt!==ut[vt])||mt.some((Et,vt)=>Et!==pt[vt])){ut=ft,pt=mt;const Et=yt/nt.sampleRate;dt.gain.setValueAtTime(0,Et),dt=a(nt,wt(Ot({},it),{gain:0})),gt=c(nt,wt(Ot({},at),{orientationX:ut[0],orientationY:ut[1],orientationZ:ut[2],positionX:pt[0],positionY:pt[1],positionZ:pt[2]})),dt.gain.setValueAtTime(1,Et),ct.connect(dt).connect(gt.inputs[0]),gt.connect(st)}}return st}return ot?(await o(nt,tt.orientationX,rt.orientationX),await o(nt,tt.orientationY,rt.orientationY),await o(nt,tt.orientationZ,rt.orientationZ),await o(nt,tt.positionX,rt.positionX),await o(nt,tt.positionY,rt.positionY),await o(nt,tt.positionZ,rt.positionZ)):(await b(nt,tt.orientationX,rt.orientationX),await b(nt,tt.orientationY,rt.orientationY),await b(nt,tt.orientationZ,rt.orientationZ),await b(nt,tt.positionX,rt.positionX),await b(nt,tt.positionY,rt.positionY),await b(nt,tt.positionZ,rt.positionZ)),isNativeAudioNodeFaker(rt)?await k(tt,nt,rt.inputs[0]):await k(tt,nt,rt),rt};return{render(tt,nt){const st=j.get(nt);return st!==void 0?Promise.resolve(st):et(tt,nt)}}},DEFAULT_OPTIONS$2={disableNormalization:!1},createPeriodicWaveConstructor=(o,e,s,a)=>class mr{constructor(d,_){const b=e(d),k=a(Ot(Ot({},DEFAULT_OPTIONS$2),_)),$=o(b,k);return s.add($),$}static[Symbol.hasInstance](d){return d!==null&&typeof d=="object"&&Object.getPrototypeOf(d)===mr.prototype||s.has(d)}},createRenderAutomation=(o,e)=>(s,a,c)=>(o(a).replay(c),e(a,s,c)),createRenderInputsOfAudioNode=(o,e,s)=>async(a,c,d)=>{const _=o(a);await Promise.all(_.activeInputs.map((b,k)=>Array.from(b).map(async([$,j])=>{const et=await e($).render($,c),tt=a.context.destination;!s($)&&(a!==tt||!s(a))&&et.connect(d,j,k)})).reduce((b,k)=>[...b,...k],[]))},createRenderInputsOfAudioParam=(o,e,s)=>async(a,c,d)=>{const _=e(a);await Promise.all(Array.from(_.activeInputs).map(async([b,k])=>{const j=await o(b).render(b,c);s(b)||j.connect(d,k)}))},createRenderNativeOfflineAudioContext=(o,e,s,a)=>c=>o(testPromiseSupport,()=>testPromiseSupport(c))?Promise.resolve(o(a,a)).then(d=>{if(!d){const _=s(c,512,0,1);c.oncomplete=()=>{_.onaudioprocess=null,_.disconnect()},_.onaudioprocess=()=>c.currentTime,_.connect(c.destination)}return c.startRendering()}):new Promise(d=>{const _=e(c,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});c.oncomplete=b=>{_.disconnect(),d(b.renderedBuffer)},_.connect(c.destination),c.startRendering()}),createSetActiveAudioWorkletNodeInputs=o=>(e,s)=>{o.set(e,s)},createSetAudioNodeTailTime=o=>(e,s)=>o.set(e,s),createStartRendering=(o,e,s,a,c,d,_,b)=>(k,$)=>s(k).render(k,$).then(()=>Promise.all(Array.from(a($)).map(j=>s(j).render(j,$)))).then(()=>c($)).then(j=>(typeof j.copyFromChannel!="function"?(_(j),wrapAudioBufferGetChannelDataMethod(j)):e(d,()=>d(j))||b(j),o.add(j),j)),DEFAULT_OPTIONS$1={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=Ot(Ot({},DEFAULT_OPTIONS$1),k),_e=s($,j),et=d($),tt=et?a():null;super(b,!1,_e,tt),this._pan=e(this,et,_e.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,pan:$.pan.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.pan,$.pan):await a(k,b.pan,$.pan),isNativeAudioNodeFaker($)?await c(b,k,$.inputs[0]):await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createTestAudioBufferConstructorSupport=o=>()=>{if(o===null)return!1;try{new o({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioBufferCopyChannelMethodsSubarraySupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createBuffer(1,1,44100);if(s.copyToChannel===void 0)return!0;const a=new Float32Array(2);try{s.copyFromChannel(a,0,0)}catch{return!1}return!0},createTestAudioContextCloseMethodSupport=o=>()=>{if(o===null)return!1;if(o.prototype!==void 0&&o.prototype.close!==void 0)return!0;const e=new o,s=e.close!==void 0;try{e.close()}catch{}return s},createTestAudioContextDecodeAudioDataMethodTypeErrorSupport=o=>()=>{if(o===null)return Promise.resolve(!1);const e=new o(1,1,44100);return new Promise(s=>{let a=!0;const c=_=>{a&&(a=!1,e.startRendering(),s(_ instanceof TypeError))};let d;try{d=e.decodeAudioData(null,()=>{},c)}catch(_){c(_)}d!==void 0&&d.catch(c)})},createTestAudioContextOptionsSupport=o=>()=>{if(o===null)return!1;let e;try{e=new o({latencyHint:"balanced"})}catch{return!1}return e.close(),!0},createTestAudioNodeConnectMethodSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createGain(),a=s.connect(s)===s;return s.disconnect(s),a},createTestAudioWorkletProcessorNoOutputsSupport=(o,e)=>async()=>{if(o===null)return!0;if(e===null)return!1;const s=new Blob(['let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),a=new MessageChannel,c=new e(1,128,44100),d=URL.createObjectURL(s);let _=!1;try{await c.audioWorklet.addModule(d);const b=new o(c,"a",{numberOfOutputs:0}),k=c.createOscillator();await new Promise($=>{b.port.onmessage=()=>$(),b.port.postMessage(a.port2,[a.port2])}),b.port.onmessage=()=>_=!0,k.connect(b),k.start(0),await c.startRendering(),_=await new Promise($=>{a.port1.onmessage=({data:j})=>$(j===1),a.port1.postMessage(0)})}catch{}finally{a.port1.close(),URL.revokeObjectURL(d)}return _},createTestAudioWorkletProcessorPostMessageSupport=(o,e)=>async()=>{if(o===null)return!0;if(e===null)return!1;const s=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),a=new e(1,128,44100),c=URL.createObjectURL(s);let d=!1,_=!1;try{await a.audioWorklet.addModule(c);const b=new o(a,"a",{numberOfOutputs:0}),k=a.createOscillator();b.port.onmessage=()=>d=!0,b.onprocessorerror=()=>_=!0,k.connect(b),k.start(0),await a.startRendering()}catch{}finally{URL.revokeObjectURL(c)}return d&&!_},createTestChannelMergerNodeChannelCountSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createChannelMerger();if(s.channelCountMode==="max")return!0;try{s.channelCount=2}catch{return!0}return!1},createTestConstantSourceNodeAccurateSchedulingSupport=o=>()=>{if(o===null)return!1;const e=new o(1,1,44100);return e.createConstantSource===void 0?!0:e.createConstantSource().offset.maxValue!==Number.POSITIVE_INFINITY},createTestConvolverNodeBufferReassignabilitySupport=o=>()=>{if(o===null)return!1;const e=new o(1,1,44100),s=e.createConvolver();s.buffer=e.createBuffer(1,1,e.sampleRate);try{s.buffer=e.createBuffer(1,1,e.sampleRate)}catch{return!1}return!0},createTestConvolverNodeChannelCountSupport=o=>()=>{if(o===null)return!1;const s=new o(1,1,44100).createConvolver();try{s.channelCount=1}catch{return!1}return!0},createTestIsSecureContextSupport=o=>()=>o!==null&&o.hasOwnProperty("isSecureContext"),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport=o=>()=>{if(o===null)return!1;const e=new o;try{return e.createMediaStreamSource(new MediaStream),!1}catch{return!0}finally{e.close()}},createTestOfflineAudioContextCurrentTimeSupport=(o,e)=>()=>{if(e===null)return Promise.resolve(!1);const s=new e(1,1,44100),a=o(s,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(c=>{s.oncomplete=()=>{a.disconnect(),c(s.currentTime!==0)},s.startRendering()})},createTestStereoPannerNodeDefaultValueSupport=o=>()=>{if(o===null)return Promise.resolve(!1);const e=new o(1,1,44100);if(e.createStereoPanner===void 0||e.createConstantSource===void 0)return Promise.resolve(!0);const s=e.createConstantSource(),a=e.createStereoPanner();return s.channelCount=1,s.offset.value=1,a.channelCount=1,s.start(),s.connect(a).connect(e.destination),e.startRendering().then(c=>c.getChannelData(0)[0]!==1)},createUnknownError=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=Ot(Ot({},DEFAULT_OPTIONS),$),et=s(j,_e),nt=d(j)?a():null;super(k,!0,et,nt),this._isCurveNullified=!1,this._nativeWaveShaperNode=et,_(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(k){if(k===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(k.length<2)throw e();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=k}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(k){this._nativeWaveShaperNode.oversample=k}},createWaveShaperNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,curve:b.curve,oversample:b.oversample};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createWindow=()=>typeof window=="undefined"?null:window,createWrapAudioBufferCopyChannelMethods=(o,e)=>s=>{s.copyFromChannel=(a,c,d=0)=>{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_e=>{e.copyFromChannel=(s=>(a,c,d=0)=>{const _=o(d),b=o(c);if(_(a,c,d=0)=>{const _=o(d),b=o(c);if(_(e,s)=>{const a=s.createBuffer(1,1,44100);e.buffer===null&&(e.buffer=a),o(e,"buffer",c=>()=>{const d=c.call(e);return d===a?null:d},c=>d=>c.call(e,d===null?a:d))},createWrapChannelMergerNode=(o,e)=>(s,a)=>{a.channelCount=1,a.channelCountMode="explicit",Object.defineProperty(a,"channelCount",{get:()=>1,set:()=>{throw o()}}),Object.defineProperty(a,"channelCountMode",{get:()=>"explicit",set:()=>{throw o()}});const c=s.createBufferSource();e(a,()=>{const b=a.numberOfInputs;for(let k=0;kc.disconnect(a))},getFirstSample=(o,e,s)=>o.copyFromChannel===void 0?o.getChannelData(s)[0]:(o.copyFromChannel(e,s),e[0]),isDCCurve=o=>{if(o===null)return!1;const e=o.length;return e%2!==0?o[Math.floor(e/2)]!==0:o[e/2-1]+o[e/2]!==0},overwriteAccessors=(o,e,s,a)=>{let c=o;for(;!c.hasOwnProperty(e);)c=Object.getPrototypeOf(c);const{get:d,set:_}=Object.getOwnPropertyDescriptor(c,e);Object.defineProperty(o,e,{get:s(d),set:a(_)})},sanitizeAudioWorkletNodeOptions=o=>wt(Ot({},o),{outputChannelCount:o.outputChannelCount!==void 0?o.outputChannelCount:o.numberOfInputs===1&&o.numberOfOutputs===1?[o.channelCount]:Array.from({length:o.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions=o=>wt(Ot({},o),{channelCount:o.numberOfOutputs}),sanitizePeriodicWaveOptions=o=>{const{imag:e,real:s}=o;return e===void 0?s===void 0?wt(Ot({},o),{imag:[0,0],real:[0,0]}):wt(Ot({},o),{imag:Array.from(s,()=>0),real:s}):s===void 0?wt(Ot({},o),{imag:e,real:Array.from(e,()=>0)}):wt(Ot({},o),{imag:e,real:s})},setValueAtTimeUntilPossible=(o,e,s)=>{try{o.setValueAtTime(e,s)}catch(a){if(a.code!==9)throw a;setValueAtTimeUntilPossible(o,e,s+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport=o=>{const e=o.createBufferSource();e.start();try{e.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport=o=>{const e=o.createBufferSource(),s=o.createBuffer(1,1,44100);e.buffer=s;try{e.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport=o=>{const e=o.createBufferSource();e.start();try{e.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport=o=>{const e=o.createOscillator();try{e.start(-1)}catch(s){return s instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport=o=>{const e=o.createBuffer(1,1,44100),s=o.createBufferSource();s.buffer=e,s.start(),s.stop();try{return s.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport=o=>{const e=o.createOscillator();try{e.stop(-1)}catch(s){return s instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability=o=>{const{port1:e,port2:s}=new MessageChannel;try{e.postMessage(o)}finally{e.close(),s.close()}},testDomExceptionConstructorSupport=()=>{try{new DOMException}catch{return!1}return!0},testTransferablesSupport=()=>new Promise(o=>{const e=new ArrayBuffer(0),{port1:s,port2:a}=new MessageChannel;s.onmessage=({data:c})=>o(c!==null),a.postMessage(e,[e])}),wrapAudioBufferSourceNodeStartMethodOffsetClamping=o=>{o.start=(e=>(s=0,a=0,c)=>{const d=o.buffer,_=d===null?a:Math.min(d.duration,a);d!==null&&_>d.duration-.5/o.context.sampleRate?e.call(o,s,0,0):e.call(o,s,_,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls=(o,e)=>{const s=e.createGain();o.connect(s);const a=(c=>()=>{c.call(o,s),o.removeEventListener("ended",a)})(o.disconnect);o.addEventListener("ended",a),interceptConnections(o,s),o.stop=(c=>{let d=!1;return(_=0)=>{if(d)try{c.call(o,_)}catch{s.gain.setValueAtTime(0,_)}else c.call(o,_),d=!0}})(o.stop)},wrapEventListener=(o,e)=>s=>{const a={value:o};return Object.defineProperties(s,{currentTarget:a,target:a}),typeof e=="function"?e.call(o,s):e.handleEvent.call(o,s)},addActiveInputConnectionToAudioNode=createAddActiveInputConnectionToAudioNode(insertElementInSet),addPassiveInputConnectionToAudioNode=createAddPassiveInputConnectionToAudioNode(insertElementInSet),deleteActiveInputConnectionToAudioNode=createDeleteActiveInputConnectionToAudioNode(pickElementFromSet),audioNodeTailTimeStore=new WeakMap,getAudioNodeTailTime=createGetAudioNodeTailTime(audioNodeTailTimeStore),cacheTestResult=createCacheTestResult(new Map,new WeakMap),window$1=createWindow(),createNativeAnalyserNode=createNativeAnalyserNodeFactory(cacheTestResult,createIndexSizeError),getAudioNodeRenderer=createGetAudioNodeRenderer(getAudioNodeConnections),renderInputsOfAudioNode=createRenderInputsOfAudioNode(getAudioNodeConnections,getAudioNodeRenderer,isPartOfACycle),createAnalyserNodeRenderer=createAnalyserNodeRendererFactory(createNativeAnalyserNode,getNativeAudioNode,renderInputsOfAudioNode),getNativeContext=createGetNativeContext(CONTEXT_STORE),nativeOfflineAudioContextConstructor=createNativeOfflineAudioContextConstructor(window$1),isNativeOfflineAudioContext=createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor),audioParamAudioNodeStore=new WeakMap,eventTargetConstructor=createEventTargetConstructor(wrapEventListener),nativeAudioContextConstructor=createNativeAudioContextConstructor(window$1),isNativeAudioContext=createIsNativeAudioContext(nativeAudioContextConstructor),isNativeAudioNode=createIsNativeAudioNode(window$1),isNativeAudioParam=createIsNativeAudioParam(window$1),nativeAudioWorkletNodeConstructor=createNativeAudioWorkletNodeConstructor(window$1),audioNodeConstructor=createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode,addPassiveInputConnectionToAudioNode,connectNativeAudioNodeToNativeAudioNode,deleteActiveInputConnectionToAudioNode,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getAudioNodeTailTime,getEventListenersOfAudioNode,getNativeAudioNode,insertElementInSet,isActiveAudioNode,isPartOfACycle,isPassiveAudioNode),cacheTestResult,createIncrementCycleCounterFactory(CYCLE_COUNTERS,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,isActiveAudioNode),createIndexSizeError,createInvalidAccessError,createNotSupportedError,createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode,CYCLE_COUNTERS,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,getNativeContext,isActiveAudioNode,isNativeOfflineAudioContext),createDetectCycles(audioParamAudioNodeStore,getAudioNodeConnections,getValueForKey),eventTargetConstructor,getNativeContext,isNativeAudioContext,isNativeAudioNode,isNativeAudioParam,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor),analyserNodeConstructor=createAnalyserNodeConstructor(audioNodeConstructor,createAnalyserNodeRenderer,createIndexSizeError,createNativeAnalyserNode,getNativeContext,isNativeOfflineAudioContext),audioBufferStore=new WeakSet,nativeAudioBufferConstructor=createNativeAudioBufferConstructor(window$1),convertNumberToUnsignedLong=createConvertNumberToUnsignedLong(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods=createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong,createIndexSizeError),wrapAudioBufferCopyChannelMethodsOutOfBounds=createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong),audioBufferConstructor=createAudioBufferConstructor(audioBufferStore,cacheTestResult,createNotSupportedError,nativeAudioBufferConstructor,nativeOfflineAudioContextConstructor,createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),addSilentConnection=createAddSilentConnection(createNativeGainNode),renderInputsOfAudioParam=createRenderInputsOfAudioParam(getAudioNodeRenderer,getAudioParamConnections,isPartOfACycle),connectAudioParam=createConnectAudioParam(renderInputsOfAudioParam),createNativeAudioBufferSourceNode=createNativeAudioBufferSourceNodeFactory(addSilentConnection,cacheTestResult,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,testAudioBufferSourceNodeStartMethodOffsetClampingSupport,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioBufferSourceNodeStartMethodOffsetClamping,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),renderAutomation=createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections),renderInputsOfAudioParam),createAudioBufferSourceNodeRenderer=createAudioBufferSourceNodeRendererFactory(connectAudioParam,createNativeAudioBufferSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),createAudioParam=createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),audioParamAudioNodeStore,AUDIO_PARAM_STORE,createAudioParamRenderer,createCancelAndHoldAutomationEvent,createCancelScheduledValuesAutomationEvent,createExponentialRampToValueAutomationEvent,createLinearRampToValueAutomationEvent,createSetTargetAutomationEvent,createSetValueAutomationEvent,createSetValueCurveAutomationEvent,nativeAudioContextConstructor,setValueAtTimeUntilPossible),audioBufferSourceNodeConstructor=createAudioBufferSourceNodeConstructor(audioNodeConstructor,createAudioBufferSourceNodeRenderer,createAudioParam,createInvalidStateError,createNativeAudioBufferSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),audioDestinationNodeConstructor=createAudioDestinationNodeConstructor(audioNodeConstructor,createAudioDestinationNodeRenderer,createIndexSizeError,createInvalidStateError,createNativeAudioDestinationNodeFactory(createNativeGainNode,overwriteAccessors),getNativeContext,isNativeOfflineAudioContext,renderInputsOfAudioNode),createBiquadFilterNodeRenderer=createBiquadFilterNodeRendererFactory(connectAudioParam,createNativeBiquadFilterNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),setAudioNodeTailTime=createSetAudioNodeTailTime(audioNodeTailTimeStore),biquadFilterNodeConstructor=createBiquadFilterNodeConstructor(audioNodeConstructor,createAudioParam,createBiquadFilterNodeRenderer,createInvalidAccessError,createNativeBiquadFilterNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),monitorConnections=createMonitorConnections(insertElementInSet,isNativeAudioNode),wrapChannelMergerNode=createWrapChannelMergerNode(createInvalidStateError,monitorConnections),createNativeChannelMergerNode=createNativeChannelMergerNodeFactory(nativeAudioContextConstructor,wrapChannelMergerNode),createChannelMergerNodeRenderer=createChannelMergerNodeRendererFactory(createNativeChannelMergerNode,getNativeAudioNode,renderInputsOfAudioNode),channelMergerNodeConstructor=createChannelMergerNodeConstructor(audioNodeConstructor,createChannelMergerNodeRenderer,createNativeChannelMergerNode,getNativeContext,isNativeOfflineAudioContext),createChannelSplitterNodeRenderer=createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode,getNativeAudioNode,renderInputsOfAudioNode),channelSplitterNodeConstructor=createChannelSplitterNodeConstructor(audioNodeConstructor,createChannelSplitterNodeRenderer,createNativeChannelSplitterNode,getNativeContext,isNativeOfflineAudioContext,sanitizeChannelSplitterOptions),createNativeConstantSourceNodeFaker=createNativeConstantSourceNodeFakerFactory(addSilentConnection,createNativeAudioBufferSourceNode,createNativeGainNode,monitorConnections),createNativeConstantSourceNode=createNativeConstantSourceNodeFactory(addSilentConnection,cacheTestResult,createNativeConstantSourceNodeFaker,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport),createConstantSourceNodeRenderer=createConstantSourceNodeRendererFactory(connectAudioParam,createNativeConstantSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),constantSourceNodeConstructor=createConstantSourceNodeConstructor(audioNodeConstructor,createAudioParam,createConstantSourceNodeRenderer,createNativeConstantSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createNativeConvolverNode=createNativeConvolverNodeFactory(createNotSupportedError,overwriteAccessors),createConvolverNodeRenderer=createConvolverNodeRendererFactory(createNativeConvolverNode,getNativeAudioNode,renderInputsOfAudioNode),convolverNodeConstructor=createConvolverNodeConstructor(audioNodeConstructor,createConvolverNodeRenderer,createNativeConvolverNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createDelayNodeRenderer=createDelayNodeRendererFactory(connectAudioParam,createNativeDelayNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),delayNodeConstructor=createDelayNodeConstructor(audioNodeConstructor,createAudioParam,createDelayNodeRenderer,createNativeDelayNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativeDynamicsCompressorNode=createNativeDynamicsCompressorNodeFactory(createNotSupportedError),createDynamicsCompressorNodeRenderer=createDynamicsCompressorNodeRendererFactory(connectAudioParam,createNativeDynamicsCompressorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),dynamicsCompressorNodeConstructor=createDynamicsCompressorNodeConstructor(audioNodeConstructor,createAudioParam,createDynamicsCompressorNodeRenderer,createNativeDynamicsCompressorNode,createNotSupportedError,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createGainNodeRenderer=createGainNodeRendererFactory(connectAudioParam,createNativeGainNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),gainNodeConstructor=createGainNodeConstructor(audioNodeConstructor,createAudioParam,createGainNodeRenderer,createNativeGainNode,getNativeContext,isNativeOfflineAudioContext),createNativeIIRFilterNodeFaker=createNativeIIRFilterNodeFakerFactory(createInvalidAccessError,createInvalidStateError,createNativeScriptProcessorNode,createNotSupportedError),renderNativeOfflineAudioContext=createRenderNativeOfflineAudioContext(cacheTestResult,createNativeGainNode,createNativeScriptProcessorNode,createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode,nativeOfflineAudioContextConstructor)),createIIRFilterNodeRenderer=createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderInputsOfAudioNode,renderNativeOfflineAudioContext),createNativeIIRFilterNode=createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker),iIRFilterNodeConstructor=createIIRFilterNodeConstructor(audioNodeConstructor,createNativeIIRFilterNode,createIIRFilterNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createAudioListener=createAudioListenerFactory(createAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeScriptProcessorNode,createNotSupportedError,getFirstSample,isNativeOfflineAudioContext,overwriteAccessors),unrenderedAudioWorkletNodeStore=new WeakMap,minimalBaseAudioContextConstructor=createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor,createAudioListener,eventTargetConstructor,isNativeOfflineAudioContext,unrenderedAudioWorkletNodeStore,wrapEventListener),createNativeOscillatorNode=createNativeOscillatorNodeFactory(addSilentConnection,cacheTestResult,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),createOscillatorNodeRenderer=createOscillatorNodeRendererFactory(connectAudioParam,createNativeOscillatorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),oscillatorNodeConstructor=createOscillatorNodeConstructor(audioNodeConstructor,createAudioParam,createNativeOscillatorNode,createOscillatorNodeRenderer,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createConnectedNativeAudioBufferSourceNode=createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode),createNativeWaveShaperNodeFaker=createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeGainNode,isDCCurve,monitorConnections),createNativeWaveShaperNode=createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeWaveShaperNodeFaker,isDCCurve,monitorConnections,nativeAudioContextConstructor,overwriteAccessors),createNativePannerNodeFaker=createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode,createInvalidStateError,createNativeChannelMergerNode,createNativeGainNode,createNativeScriptProcessorNode,createNativeWaveShaperNode,createNotSupportedError,disconnectNativeAudioNodeFromNativeAudioNode,getFirstSample,monitorConnections),createNativePannerNode=createNativePannerNodeFactory(createNativePannerNodeFaker),createPannerNodeRenderer=createPannerNodeRendererFactory(connectAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeGainNode,createNativePannerNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),pannerNodeConstructor=createPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativePannerNode,createPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativePeriodicWave=createNativePeriodicWaveFactory(createIndexSizeError),periodicWaveConstructor=createPeriodicWaveConstructor(createNativePeriodicWave,getNativeContext,new WeakSet,sanitizePeriodicWaveOptions),nativeStereoPannerNodeFakerFactory=createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeGainNode,createNativeWaveShaperNode,createNotSupportedError,monitorConnections),createNativeStereoPannerNode=createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory,createNotSupportedError),createStereoPannerNodeRenderer=createStereoPannerNodeRendererFactory(connectAudioParam,createNativeStereoPannerNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),stereoPannerNodeConstructor=createStereoPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativeStereoPannerNode,createStereoPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext),createWaveShaperNodeRenderer=createWaveShaperNodeRendererFactory(createNativeWaveShaperNode,getNativeAudioNode,renderInputsOfAudioNode),waveShaperNodeConstructor=createWaveShaperNodeConstructor(audioNodeConstructor,createInvalidStateError,createNativeWaveShaperNode,createWaveShaperNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),isSecureContext=createIsSecureContext(window$1),exposeCurrentFrameAndCurrentTime=createExposeCurrentFrameAndCurrentTime(window$1),backupOfflineAudioContextStore=new WeakMap,getOrCreateBackupOfflineAudioContext=createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore,nativeOfflineAudioContextConstructor),addAudioWorkletModule=isSecureContext?createAddAudioWorkletModule(cacheTestResult,createNotSupportedError,createEvaluateSource(window$1),exposeCurrentFrameAndCurrentTime,createFetchSource(createAbortError),getNativeContext,getOrCreateBackupOfflineAudioContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),window$1):void 0,isNativeContext=createIsNativeContext(isNativeAudioContext,isNativeOfflineAudioContext),decodeAudioData=createDecodeAudioData(audioBufferStore,cacheTestResult,createDataCloneError,createEncodingError,new WeakSet,getNativeContext,isNativeContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,testPromiseSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),baseAudioContextConstructor=createBaseAudioContextConstructor(addAudioWorkletModule,analyserNodeConstructor,audioBufferConstructor,audioBufferSourceNodeConstructor,biquadFilterNodeConstructor,channelMergerNodeConstructor,channelSplitterNodeConstructor,constantSourceNodeConstructor,convolverNodeConstructor,decodeAudioData,delayNodeConstructor,dynamicsCompressorNodeConstructor,gainNodeConstructor,iIRFilterNodeConstructor,minimalBaseAudioContextConstructor,oscillatorNodeConstructor,pannerNodeConstructor,periodicWaveConstructor,stereoPannerNodeConstructor,waveShaperNodeConstructor),mediaElementAudioSourceNodeConstructor=createMediaElementAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaElementAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioDestinationNodeConstructor=createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioDestinationNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioSourceNodeConstructor=createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),createNativeMediaStreamTrackAudioSourceNode=createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError,isNativeOfflineAudioContext),mediaStreamTrackAudioSourceNodeConstructor=createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamTrackAudioSourceNode,getNativeContext),audioContextConstructor=createAudioContextConstructor(baseAudioContextConstructor,createInvalidStateError,createNotSupportedError,createUnknownError,mediaElementAudioSourceNodeConstructor,mediaStreamAudioDestinationNodeConstructor,mediaStreamAudioSourceNodeConstructor,mediaStreamTrackAudioSourceNodeConstructor,nativeAudioContextConstructor),getUnrenderedAudioWorkletNodes=createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore),addUnrenderedAudioWorkletNode=createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),connectMultipleOutputs=createConnectMultipleOutputs(createIndexSizeError),deleteUnrenderedAudioWorkletNode=createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),disconnectMultipleOutputs=createDisconnectMultipleOutputs(createIndexSizeError),activeAudioWorkletNodeInputsStore=new WeakMap,getActiveAudioWorkletNodeInputs=createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore,getValueForKey),createNativeAudioWorkletNodeFaker=createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs,createIndexSizeError,createInvalidStateError,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,createNativeScriptProcessorNode,createNotSupportedError,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getActiveAudioWorkletNodeInputs,monitorConnections),createNativeAudioWorkletNode=createNativeAudioWorkletNodeFactory(createInvalidStateError,createNativeAudioWorkletNodeFaker,createNativeGainNode,createNotSupportedError,monitorConnections),createAudioWorkletNodeRenderer=createAudioWorkletNodeRendererFactory(connectAudioParam,connectMultipleOutputs,createNativeAudioBufferSourceNode,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,deleteUnrenderedAudioWorkletNode,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getNativeAudioNode,nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),getBackupOfflineAudioContext=createGetBackupOfflineAudioContext(backupOfflineAudioContextStore),setActiveAudioWorkletNodeInputs=createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore),audioWorkletNodeConstructor=isSecureContext?createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode,audioNodeConstructor,createAudioParam,createAudioWorkletNodeRenderer,createNativeAudioWorkletNode,getAudioNodeConnections,getBackupOfflineAudioContext,getNativeContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,sanitizeAudioWorkletNodeOptions,setActiveAudioWorkletNodeInputs,testAudioWorkletNodeOptionsClonability,wrapEventListener):void 0,createNativeOfflineAudioContext=createCreateNativeOfflineAudioContext(createNotSupportedError,nativeOfflineAudioContextConstructor),startRendering=createStartRendering(audioBufferStore,cacheTestResult,getAudioNodeRenderer,getUnrenderedAudioWorkletNodes,renderNativeOfflineAudioContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),offlineAudioContextConstructor=createOfflineAudioContextConstructor(baseAudioContextConstructor,cacheTestResult,createInvalidStateError,createNativeOfflineAudioContext,startRendering),isAnyAudioContext=createIsAnyAudioContext(CONTEXT_STORE,isNativeAudioContext),isAnyAudioNode=createIsAnyAudioNode(AUDIO_NODE_STORE,isNativeAudioNode),isAnyAudioParam=createIsAnyAudioParam(AUDIO_PARAM_STORE,isNativeAudioParam),isAnyOfflineAudioContext=createIsAnyOfflineAudioContext(CONTEXT_STORE,isNativeOfflineAudioContext),isSupported=()=>createIsSupportedPromise(cacheTestResult,createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor),createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor),createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor),createTestAudioContextOptionsSupport(nativeAudioContextConstructor),createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor),createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor),createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor),createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor),createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor),testDomExceptionConstructorSupport,createTestIsSecureContextSupport(window$1),createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor),createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor),testTransferablesSupport);function assert(o,e){if(!o)throw new Error(e)}function assertRange(o,e,s=1/0){if(!(e<=o&&o<=s))throw new RangeError(`Value must be within [${e}, ${s}], got: ${o}`)}function assertContextRunning(o){!o.isOffline&&o.state!=="running"&&warn('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let defaultLogger=console;function setLogger(o){defaultLogger=o}function log(...o){defaultLogger.log(...o)}function warn(...o){defaultLogger.warn(...o)}var Debug=Object.freeze(Object.defineProperty({__proto__:null,assert,assertRange,assertContextRunning,setLogger,log,warn},Symbol.toStringTag,{value:"Module"}));function isUndef(o){return typeof o=="undefined"}function isDefined(o){return!isUndef(o)}function isFunction(o){return typeof o=="function"}function isNumber(o){return typeof o=="number"}function isObject(o){return Object.prototype.toString.call(o)==="[object Object]"&&o.constructor===Object}function isBoolean(o){return typeof o=="boolean"}function isArray(o){return Array.isArray(o)}function isString(o){return typeof o=="string"}function isNote$2(o){return isString(o)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(o)}function createAudioContext(o){return new audioContextConstructor(o)}function createOfflineAudioContext(o,e,s){return new offlineAudioContextConstructor(o,e,s)}const theWindow=typeof self=="object"?self:null,hasAudioContext=theWindow&&(theWindow.hasOwnProperty("AudioContext")||theWindow.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode(o,e,s){return assert(isDefined(audioWorkletNodeConstructor),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor(o,e,s)}/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -53,271 +53,7 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */function __decorate$1(o,e,s,a){var c=arguments.length,d=c<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,s):a,_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(o,e,s,a);else for(var b=o.length-1;b>=0;b--)(_=o[b])&&(d=(c<3?_(d):c>3?_(e,s,d):_(e,s))||d);return c>3&&d&&Object.defineProperty(e,s,d),d}function __awaiter$5(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})}class Ticker$1{constructor(e,s,a){this._callback=e,this._type=s,this._updateInterval=a,this._createClock()}_createWorker(){const e=new Blob([` - // the initial timeout time - let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)}; - // onmessage callback - self.onmessage = function(msg){ - timeoutTime = parseInt(msg.data); - }; - // the tick function which posts a message - // and schedules a new tick - function tick(){ - setTimeout(tick, timeoutTime); - self.postMessage('tick'); - } - // call tick initially - tick(); - `],{type:"text/javascript"}),s=URL.createObjectURL(e),a=new Worker(s);a.onmessage=this._callback.bind(this),this._worker=a}_createTimeout(){this._timeout=setTimeout(()=>{this._createTimeout(),this._callback()},this._updateInterval*1e3)}_createClock(){if(this._type==="worker")try{this._createWorker()}catch{this._type="timeout",this._createClock()}else this._type==="timeout"&&this._createTimeout()}_disposeClock(){this._timeout&&(clearTimeout(this._timeout),this._timeout=0),this._worker&&(this._worker.terminate(),this._worker.onmessage=null)}get updateInterval(){return this._updateInterval}set updateInterval(e){this._updateInterval=Math.max(e,128/44100),this._type==="worker"&&this._worker.postMessage(Math.max(e*1e3,1))}get type(){return this._type}set type(e){this._disposeClock(),this._type=e,this._createClock()}dispose(){this._disposeClock()}}function isAudioParam$1(o){return isAnyAudioParam$1(o)}function isAudioNode$2(o){return isAnyAudioNode$1(o)}function isOfflineAudioContext$1(o){return isAnyOfflineAudioContext$1(o)}function isAudioContext$1(o){return isAnyAudioContext$1(o)}function isAudioBuffer$1(o){return o instanceof AudioBuffer}function noCopy$1(o,e){return o==="value"||isAudioParam$1(e)||isAudioNode$2(e)||isAudioBuffer$1(e)}function deepMerge$1(o,...e){if(!e.length)return o;const s=e.shift();if(isObject$1(o)&&isObject$1(s))for(const a in s)noCopy$1(a,s[a])?o[a]=s[a]:isObject$1(s[a])?(o[a]||Object.assign(o,{[a]:{}}),deepMerge$1(o[a],s[a])):Object.assign(o,{[a]:s[a]});return deepMerge$1(o,...e)}function deepEquals$1(o,e){return o.length===e.length&&o.every((s,a)=>e[a]===s)}function optionsFromArguments$1(o,e,s=[],a){const c={},d=Array.from(e);if(isObject$1(d[0])&&a&&!Reflect.has(d[0],a)&&(Object.keys(d[0]).some(b=>Reflect.has(o,b))||(deepMerge$1(c,{[a]:d[0]}),s.splice(s.indexOf(a),1),d.shift())),d.length===1&&isObject$1(d[0]))deepMerge$1(c,d[0]);else for(let _=0;_{Reflect.has(o,s)&&delete o[s]}),o}/** - * Tone.js - * @author Yotam Mann - * @license http://opensource.org/licenses/MIT MIT License - * @copyright 2014-2019 Yotam Mann - */class Tone$2{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||theWindow$1&&this.toString()===theWindow$1.TONE_DEBUG_CLASS)&&log$1(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone$2.version=version$1;const EPSILON$1=1e-6;function GT$1(o,e){return o>e+EPSILON$1}function GTE$1(o,e){return GT$1(o,e)||EQ$1(o,e)}function LT$1(o,e){return o+EPSILON$1this.memory){const s=this.length-this.memory;this._timeline.splice(0,s)}return this}remove(e){const s=this._timeline.indexOf(e);return s!==-1&&this._timeline.splice(s,1),this}get(e,s="time"){const a=this._search(e,s);return a!==-1?this._timeline[a]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,s="time"){const a=this._search(e,s);return a+10&&this._timeline[s-1].time=0?this._timeline[a-1]:null}cancel(e){if(this._timeline.length>1){let s=this._search(e);if(s>=0)if(EQ$1(this._timeline[s].time,e)){for(let a=s;a>=0&&EQ$1(this._timeline[a].time,e);a--)s=a;this._timeline=this._timeline.slice(0,s)}else this._timeline=this._timeline.slice(0,s+1);else this._timeline=[]}else this._timeline.length===1&>E$1(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){const s=this._search(e);return s>=0&&(this._timeline=this._timeline.slice(s+1)),this}previousEvent(e){const s=this._timeline.indexOf(e);return s>0?this._timeline[s-1]:null}_search(e,s="time"){if(this._timeline.length===0)return-1;let a=0;const c=this._timeline.length;let d=c;if(c>0&&this._timeline[c-1][s]<=e)return c-1;for(;a=0&&this._timeline[a].time>=e;)a--;return this._iterate(s,a+1),this}forEachAtTime(e,s){const a=this._search(e);if(a!==-1&&EQ$1(this._timeline[a].time,e)){let c=a;for(let d=a;d>=0&&EQ$1(this._timeline[d].time,e);d--)c=d;this._iterate(d=>{s(d)},c,a)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext$1=[];function onContextInit$1(o){notifyNewContext$1.push(o)}function initializeContext$1(o){notifyNewContext$1.forEach(e=>e(o))}const notifyCloseContext$1=[];function onContextClose$1(o){notifyCloseContext$1.push(o)}function closeContext$1(o){notifyCloseContext$1.forEach(e=>e(o))}class Emitter$1 extends Tone$2{constructor(){super(...arguments),this.name="Emitter"}on(e,s){return e.split(/\W+/).forEach(c=>{isUndef$1(this._events)&&(this._events={}),this._events.hasOwnProperty(c)||(this._events[c]=[]),this._events[c].push(s)}),this}once(e,s){const a=(...c)=>{s(...c),this.off(e,a)};return this.on(e,a),this}off(e,s){return e.split(/\W+/).forEach(c=>{if(isUndef$1(this._events)&&(this._events={}),this._events.hasOwnProperty(e))if(isUndef$1(s))this._events[e]=[];else{const d=this._events[e];for(let _=d.length-1;_>=0;_--)d[_]===s&&d.splice(_,1)}}),this}emit(e,...s){if(this._events&&this._events.hasOwnProperty(e)){const a=this._events[e].slice(0);for(let c=0,d=a.length;c{const a=Object.getOwnPropertyDescriptor(Emitter$1.prototype,s);Object.defineProperty(e.prototype,s,a)})}dispose(){return super.dispose(),this._events=void 0,this}}class BaseContext$1 extends Emitter$1{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context$1 extends BaseContext$1{constructor(){super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline$1,this._timeoutIds=0,this._initialized=!1,this.isOffline=!1,this._workletModules=new Map;const e=optionsFromArguments$1(Context$1.getDefaults(),arguments,["context"]);e.context?this._context=e.context:this._context=createAudioContext$1({latencyHint:e.latencyHint}),this._ticker=new Ticker$1(this.emit.bind(this,"tick"),e.clockSource,e.updateInterval),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this._setLatencyHint(e.latencyHint),this.lookAhead=e.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext$1(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,s,a){return this._context.createBuffer(e,s,a)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,s){return this._context.createIIRFilter(e,s)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,s,a){return this._context.createPeriodicWave(e,s,a)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return assert$1(isAudioContext$1(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return assert$1(isAudioContext$1(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return assert$1(isAudioContext$1(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){assert$1(!this._initialized,"The listener cannot be set after initialization."),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){assert$1(!this._initialized,"The transport cannot be set after initialization."),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){assert$1(!this._initialized,"Draw cannot be set after initialization."),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){assert$1(!this._initialized,"The destination cannot be set after initialization."),this._destination=e}createAudioWorkletNode(e,s){return createAudioWorkletNode$1(this.rawContext,e,s)}addAudioWorkletModule(e,s){return __awaiter$5(this,void 0,void 0,function*(){assert$1(isDefined$1(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletModules.has(s)||this._workletModules.set(s,this.rawContext.audioWorklet.addModule(e)),yield this._workletModules.get(s)})}workletsAreReady(){return __awaiter$5(this,void 0,void 0,function*(){const e=[];this._workletModules.forEach(s=>e.push(s)),yield Promise.all(e)})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get latencyHint(){return this._latencyHint}_setLatencyHint(e){let s=0;if(this._latencyHint=e,isString$1(e))switch(e){case"interactive":s=.1;break;case"playback":s=.5;break;case"balanced":s=.25;break}this.lookAhead=s,this.updateInterval=s/2}get rawContext(){return this._context}now(){return this._context.currentTime+this.lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext$1(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter$5(this,void 0,void 0,function*(){isAudioContext$1(this._context)&&(yield this._context.close()),this._initialized&&closeContext$1(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{const s=this._context.createBuffer(1,128,this._context.sampleRate),a=s.getChannelData(0);for(let d=0;dthis._constants[e].disconnect()),this}_timeoutLoop(){const e=this.now();let s=this._timeouts.peek();for(;this._timeouts.length&&s&&s.time<=e;)s.callback(),this._timeouts.shift(),s=this._timeouts.peek()}setTimeout(e,s){this._timeoutIds++;const a=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:a+s}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(s=>{s.id===e&&this._timeouts.remove(s)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,s){const a=++this._timeoutIds,c=()=>{const d=this.now();this._timeouts.add({callback:()=>{e(),c()},id:a,time:d+s})};return c(),a}}class DummyContext$1 extends BaseContext$1{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,s,a){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,s){return{}}createPanner(){return{}}createPeriodicWave(e,s,a){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,s){return{}}get rawContext(){return{}}addAudioWorkletModule(e,s){return __awaiter$5(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,s){return 0}clearTimeout(e){return this}setInterval(e,s){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}}function readOnly$2(o,e){isArray$1(e)?e.forEach(s=>readOnly$2(o,s)):Object.defineProperty(o,e,{enumerable:!0,writable:!1})}function writable$1(o,e){isArray$1(e)?e.forEach(s=>writable$1(o,s)):Object.defineProperty(o,e,{writable:!0})}const noOp$1=()=>{};class ToneAudioBuffer$1 extends Tone$2{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp$1;const e=optionsFromArguments$1(ToneAudioBuffer$1.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=e.reverse,this.onload=e.onload,e.url&&isAudioBuffer$1(e.url)||e.url instanceof ToneAudioBuffer$1?this.set(e.url):isString$1(e.url)&&this.load(e.url).catch(e.onerror)}static getDefaults(){return{onerror:noOp$1,onload:noOp$1,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext$1().sampleRate}set(e){return e instanceof ToneAudioBuffer$1?e.loaded?this._buffer=e.get():e.onload=()=>{this.set(e),this.onload(this)}:this._buffer=e,this._reversed&&this._reverse(),this}get(){return this._buffer}load(e){return __awaiter$5(this,void 0,void 0,function*(){const s=ToneAudioBuffer$1.load(e).then(a=>{this.set(a),this.onload(this)});ToneAudioBuffer$1.downloads.push(s);try{yield s}finally{const a=ToneAudioBuffer$1.downloads.indexOf(s);ToneAudioBuffer$1.downloads.splice(a,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){const s=isArray$1(e)&&e[0].length>0,a=s?e.length:1,c=s?e[0].length:e.length,d=getContext$1(),_=d.createBuffer(a,c,d.sampleRate),b=!s&&a===1?[e]:e;for(let k=0;kc/a),this.fromArray(s)}return this}toArray(e){if(isNumber$1(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{const s=[];for(let a=0;a0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(e){return new ToneAudioBuffer$1().fromArray(e)}static fromUrl(e){return __awaiter$5(this,void 0,void 0,function*(){return yield new ToneAudioBuffer$1().load(e)})}static load(e){return __awaiter$5(this,void 0,void 0,function*(){const s=e.match(/\[([^\]\[]+\|.+)\]$/);if(s){const b=s[1].split("|");let k=b[0];for(const $ of b)if(ToneAudioBuffer$1.supportsType($)){k=$;break}e=e.replace(s[0],k)}const a=ToneAudioBuffer$1.baseUrl===""||ToneAudioBuffer$1.baseUrl.endsWith("/")?ToneAudioBuffer$1.baseUrl:ToneAudioBuffer$1.baseUrl+"/",c=yield fetch(a+e);if(!c.ok)throw new Error(`could not load url: ${e}`);const d=yield c.arrayBuffer();return yield getContext$1().decodeAudioData(d)})}static supportsType(e){const s=e.split("."),a=s[s.length-1];return document.createElement("audio").canPlayType("audio/"+a)!==""}static loaded(){return __awaiter$5(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer$1.downloads.length;)yield ToneAudioBuffer$1.downloads[0]})}}ToneAudioBuffer$1.baseUrl="";ToneAudioBuffer$1.downloads=[];class OfflineContext$1 extends Context$1{constructor(){super({clockSource:"offline",context:isOfflineAudioContext$1(arguments[0])?arguments[0]:createOfflineAudioContext$1(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext$1(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext$1(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return __awaiter$5(this,void 0,void 0,function*(){let s=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,s++;const a=Math.floor(this.sampleRate/128);e&&s%a===0&&(yield new Promise(c=>setTimeout(c,1)))}})}render(e=!0){return __awaiter$5(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(e);const s=yield this._context.startRendering();return new ToneAudioBuffer$1(s)})}close(){return Promise.resolve()}}const dummyContext$1=new DummyContext$1;let globalContext$1=dummyContext$1;function getContext$1(){return globalContext$1===dummyContext$1&&hasAudioContext$1&&setContext$1(new Context$1),globalContext$1}function setContext$1(o){isAudioContext$1(o)?globalContext$1=new Context$1(o):isOfflineAudioContext$1(o)?globalContext$1=new OfflineContext$1(o):globalContext$1=o}function start(){return globalContext$1.resume()}if(theWindow$1&&!theWindow$1.TONE_SILENCE_LOGGING){const e=` * Tone.js v${version$1} * `;console.log(`%c${e}`,"background: #000; color: #fff")}function dbToGain$1(o){return Math.pow(10,o/20)}function gainToDb$1(o){return 20*(Math.log(o)/Math.LN10)}function intervalToFrequencyRatio$1(o){return Math.pow(2,o/12)}let A4$1=440;function getA4$1(){return A4$1}function setA4$1(o){A4$1=o}function ftom$1(o){return Math.round(ftomf$1(o))}function ftomf$1(o){return 69+12*Math.log2(o/A4$1)}function mtof$1(o){return A4$1*Math.pow(2,(o-69)/12)}class TimeBaseClass$1 extends Tone$2{constructor(e,s,a){super(),this.defaultUnits="s",this._val=s,this._units=a,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,s)=>{const a=parseInt(e,10),c=s==="."?1.5:1;return a===1?this._beatsToUnits(this._getTimeSignature())*c:this._beatsToUnits(4/a)*c},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{const s=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(s)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,s,a)=>{let c=0;return e&&e!=="0"&&(c+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c+=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c+=this._beatsToUnits(parseFloat(a)/4)),c},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass$1&&this.fromType(this._val),isUndef$1(this._val))return this._noArg();if(isString$1(this._val)&&isUndef$1(this._units)){for(const e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(isObject$1(this._val)){let e=0;for(const s in this._val)if(isDefined$1(this._val[s])){const a=this._val[s];e+=new this.constructor(this.context,s).valueOf()*a}return e}if(isDefined$1(this._units)){const e=this._expressions[this._units],s=this._val.toString().trim().match(e.regexp);return s?e.method.apply(this,s.slice(1)):e.method.call(this,this._val)}else return isString$1(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case"s":this._val=e.toSeconds();break;case"i":this._val=e.toTicks();break;case"hz":this._val=e.toFrequency();break;case"midi":this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass$1 extends TimeBaseClass$1{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:e=>{const s=new TimeClass$1(this.context,e).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(s))},regexp:/^@(.+)/}})}quantize(e,s=1){const a=new this.constructor(this.context,e).valueOf(),c=this.valueOf(),b=Math.round(c/a)*a-c;return c+b*s}toNotation(){const e=this.toSeconds(),s=["1m"];for(let d=1;d<9;d++){const _=Math.pow(2,d);s.push(_+"n."),s.push(_+"n"),s.push(_+"t")}s.push("0");let a=s[0],c=new TimeClass$1(this.context,s[0]).toSeconds();return s.forEach(d=>{const _=new TimeClass$1(this.context,d).toSeconds();Math.abs(_-e)3&&(c=parseFloat(parseFloat(d).toFixed(3))),[a,s,c].join(":")}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.round(s*this._getPPQ())}toSeconds(){return this.valueOf()}toMidi(){return ftom$1(this.toFrequency())}_now(){return this.context.now()}}function Time(o,e){return new TimeClass$1(getContext$1(),o,e)}class FrequencyClass$1 extends TimeClass$1{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4$1()}static set A4(e){setA4$1(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(e){return this.defaultUnits==="midi"?e:FrequencyClass$1.mtof(e)}},note:{regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method(e,s){const c=noteToScaleIndex$1[e.toLowerCase()]+(parseInt(s,10)+1)*12;return this.defaultUnits==="midi"?c:FrequencyClass$1.mtof(c)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,s,a){let c=1;return e&&e!=="0"&&(c*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c*=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c*=this._beatsToUnits(parseFloat(a)/4)),c}}})}transpose(e){return new FrequencyClass$1(this.context,this.valueOf()*intervalToFrequencyRatio$1(e))}harmonize(e){return e.map(s=>this.transpose(s))}toMidi(){return ftom$1(this.valueOf())}toNote(){const e=this.toFrequency(),s=Math.log2(e/FrequencyClass$1.A4);let a=Math.round(12*s)+57;const c=Math.floor(a/12);return c<0&&(a+=-12*c),scaleIndexToNote$1[a%12]+c.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.floor(s*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return mtof$1(e)}static ftom(e){return ftom$1(e)}}const noteToScaleIndex$1={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},scaleIndexToNote$1=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];function Frequency(o,e){return new FrequencyClass$1(getContext$1(),o,e)}class TransportTimeClass$1 extends TimeClass$1{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}function TransportTime(o,e){return new TransportTimeClass$1(getContext$1(),o,e)}class ToneWithContext$1 extends Tone$2{constructor(){super();const e=optionsFromArguments$1(ToneWithContext$1.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=e.context}static getDefaults(){return{context:getContext$1()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return new TimeClass$1(this.context,e).toSeconds()}toFrequency(e){return new FrequencyClass$1(this.context,e).toFrequency()}toTicks(e){return new TransportTimeClass$1(this.context,e).toTicks()}_getPartialProperties(e){const s=this.get();return Object.keys(s).forEach(a=>{isUndef$1(e[a])&&delete s[a]}),s}get(){const e=getDefaultsFromInstance$1(this);return Object.keys(e).forEach(s=>{if(Reflect.has(this,s)){const a=this[s];isDefined$1(a)&&isDefined$1(a.value)&&isDefined$1(a.setValueAtTime)?e[s]=a.value:a instanceof ToneWithContext$1?e[s]=a._getPartialProperties(e[s]):isArray$1(a)||isNumber$1(a)||isString$1(a)||isBoolean$1(a)?e[s]=a:delete e[s]}}),e}set(e){return Object.keys(e).forEach(s=>{Reflect.has(this,s)&&isDefined$1(this[s])&&(this[s]&&isDefined$1(this[s].value)&&isDefined$1(this[s].setValueAtTime)?this[s].value!==e[s]&&(this[s].value=e[s]):this[s]instanceof ToneWithContext$1?this[s].set(e[s]):this[s]=e[s])}),this}}class StateTimeline$1 extends Timeline$1{constructor(e="stopped"){super(),this.name="StateTimeline",this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){const s=this.get(e);return s!==null?s.state:this._initial}setStateAtTime(e,s,a){return assertRange$1(s,0),this.add(Object.assign({},a,{state:e,time:s})),this}getLastState(e,s){const a=this._search(s);for(let c=a;c>=0;c--){const d=this._timeline[c];if(d.state===e)return d}}getNextState(e,s){const a=this._search(s);if(a!==-1)for(let c=a;c0,"timeConstant must be a number greater than 0");const d=this.toSeconds(s);return this._assertRange(c),assert$1(isFinite(c)&&isFinite(d),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(s)}`),this._events.add({constant:a,time:d,type:"setTargetAtTime",value:c}),this.log(this.units,"setTargetAtTime",e,d,a),this._param.setTargetAtTime(c,d,a),this}setValueCurveAtTime(e,s,a,c=1){a=this.toSeconds(a),s=this.toSeconds(s);const d=this._fromType(e[0])*c;this.setValueAtTime(this._toType(d),s);const _=a/(e.length-1);for(let b=1;b{c.type==="cancelScheduledValues"?e.cancelScheduledValues(c.time):c.type==="setTargetAtTime"?e.setTargetAtTime(c.value,c.time,c.constant):e[c.type](c.value,c.time)}),this}setParam(e){assert$1(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const s=this.input;return s.disconnect(this._param),this.apply(e),this._param=e,s.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,s,a,c,d){return a+(s-a)*Math.exp(-(d-e)/c)}_linearInterpolate(e,s,a,c,d){return s+(c-s)*((d-e)/(a-e))}_exponentialInterpolate(e,s,a,c,d){return s*Math.pow(c/s,(d-e)/(a-e))}}class ToneAudioNode$1 extends ToneWithContext$1{constructor(){super(...arguments),this.name="ToneAudioNode",this._internalChannels=[]}get numberOfInputs(){return isDefined$1(this.input)?isAudioParam$1(this.input)||this.input instanceof Param$1?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined$1(this.output)?this.output.numberOfOutputs:0}_isAudioNode(e){return isDefined$1(e)&&(e instanceof ToneAudioNode$1||isAudioNode$2(e))}_getInternalNodes(){const e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(a=>{a.channelCount=e.channelCount,a.channelCountMode=e.channelCountMode,a.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){const e=this._getInternalNodes();assert$1(e.length>0,"ToneAudioNode does not have any internal nodes");const s=e[0];return{channelCount:s.channelCount,channelCountMode:s.channelCountMode,channelInterpretation:s.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelInterpretation:e}))}connect(e,s=0,a=0){return connect$1(this,e,s,a),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn$1("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(e,s=0,a=0){return disconnect$1(this,e,s,a),this}chain(...e){return connectSeries$1(this,...e),this}fan(...e){return e.forEach(s=>this.connect(s)),this}dispose(){return super.dispose(),isDefined$1(this.input)&&(this.input instanceof ToneAudioNode$1?this.input.dispose():isAudioNode$2(this.input)&&this.input.disconnect()),isDefined$1(this.output)&&(this.output instanceof ToneAudioNode$1?this.output.dispose():isAudioNode$2(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries$1(...o){const e=o.shift();o.reduce((s,a)=>(s instanceof ToneAudioNode$1?s.connect(a):isAudioNode$2(s)&&connect$1(s,a),a),e)}function connect$1(o,e,s=0,a=0){for(assert$1(isDefined$1(o),"Cannot connect from undefined node"),assert$1(isDefined$1(e),"Cannot connect to undefined node"),(e instanceof ToneAudioNode$1||isAudioNode$2(e))&&assert$1(e.numberOfInputs>0,"Cannot connect to node with no inputs"),assert$1(o.numberOfOutputs>0,"Cannot connect from node with no outputs");e instanceof ToneAudioNode$1||e instanceof Param$1;)isDefined$1(e.input)&&(e=e.input);for(;o instanceof ToneAudioNode$1;)isDefined$1(o.output)&&(o=o.output);isAudioParam$1(e)?o.connect(e,s):o.connect(e,s,a)}function disconnect$1(o,e,s=0,a=0){if(isDefined$1(e))for(;e instanceof ToneAudioNode$1;)e=e.input;for(;!isAudioNode$2(o);)isDefined$1(o.output)&&(o=o.output);isAudioParam$1(e)?o.disconnect(e,s):isAudioNode$2(e)?o.disconnect(e,s,a):o.disconnect()}class Gain$2 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Gain$2.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const e=optionsFromArguments$1(Gain$2.getDefaults(),arguments,["gain","units"]);this.gain=new Param$1({context:this.context,convert:e.convert,param:this._gainNode.gain,units:e.units,value:e.gain,minValue:e.minValue,maxValue:e.maxValue}),readOnly$2(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource$1 extends ToneAudioNode$1{constructor(e){super(e),this.onended=noOp$1,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain$2({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(s){const a=this.toSeconds(s);return this._startTime!==-1&&a>=this._startTime&&(this._stopTime===-1||a<=this._stopTime)?"started":"stopped"},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp$1})}_startGain(e,s=1){assert$1(this._startTime===-1,"Source cannot be started more than once");const a=this.toSeconds(this._fadeIn);return this._startTime=e+a,this._startTime=Math.max(this._startTime,this.context.currentTime),a>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(s,e+a):this._gainNode.gain.exponentialApproachValueAtTime(s,e,a)):this._gainNode.gain.setValueAtTime(s,e),this}stop(e){return this.log("stop",e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){assert$1(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const s=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+s,this._stopTime=Math.max(this._stopTime,this.context.currentTime),s>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,s,e):this._gainNode.gain.targetRampTo(0,s,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const a=this._curve==="exponential"?s*2:0;this._stopSource(this.now()+a),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp$1&&(this.onended(this),this.onended=noOp$1,!this.context.isOffline)){const e=()=>this.dispose();typeof window.requestIdleCallback!="undefined"?window.requestIdleCallback(e):setTimeout(e,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert$1(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.disconnect(),this}}class ToneConstantSource$1 extends OneShotSource$1{constructor(){super(optionsFromArguments$1(ToneConstantSource$1.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const e=optionsFromArguments$1(ToneConstantSource$1.getDefaults(),arguments,["offset"]);connect$1(this._source,this._gainNode),this.offset=new Param$1({context:this.context,convert:e.convert,param:this._source.offset,units:e.units,value:e.offset,minValue:e.minValue,maxValue:e.maxValue})}static getDefaults(){return Object.assign(OneShotSource$1.getDefaults(),{convert:!0,offset:1,units:"number"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._source.start(s),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const e=optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource$1({context:this.context,convert:e.convert,offset:e.value,units:e.units,minValue:e.minValue,maxValue:e.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{convert:!0,units:"number",value:0})}connect(e,s=0,a=0){return connectSignal$1(this,e,s,a),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,s){return this._param.setValueAtTime(e,s),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,s){return this._param.linearRampToValueAtTime(e,s),this}exponentialRampToValueAtTime(e,s){return this._param.exponentialRampToValueAtTime(e,s),this}exponentialRampTo(e,s,a){return this._param.exponentialRampTo(e,s,a),this}linearRampTo(e,s,a){return this._param.linearRampTo(e,s,a),this}targetRampTo(e,s,a){return this._param.targetRampTo(e,s,a),this}exponentialApproachValueAtTime(e,s,a){return this._param.exponentialApproachValueAtTime(e,s,a),this}setTargetAtTime(e,s,a){return this._param.setTargetAtTime(e,s,a),this}setValueCurveAtTime(e,s,a,c){return this._param.setValueCurveAtTime(e,s,a,c),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,s,a){return this._param.rampTo(e,s,a),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}}function connectSignal$1(o,e,s,a){(e instanceof Param$1||isAudioParam$1(e)||e instanceof Signal$1&&e.override)&&(e.cancelScheduledValues(0),e.setValueAtTime(0,0),e instanceof Signal$1&&(e.overridden=!0)),connect$1(o,e,s,a)}class TickParam$1 extends Param$1{constructor(){super(optionsFromArguments$1(TickParam$1.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline$1(1/0),this._multiplier=1;const e=optionsFromArguments$1(TickParam$1.getDefaults(),arguments,["value"]);this._multiplier=e.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(e.value)}),this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Param$1.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(e,s,a){s=this.toSeconds(s),this.setRampPoint(s);const c=this._fromType(e),d=this._events.get(s),_=Math.round(Math.max(1/a,1));for(let b=0;b<=_;b++){const k=a*b+s,$=this._exponentialApproach(d.time,d.value,c,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}setValueAtTime(e,s){const a=this.toSeconds(s);super.setValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}linearRampToValueAtTime(e,s){const a=this.toSeconds(s);super.linearRampToValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}exponentialRampToValueAtTime(e,s){s=this.toSeconds(s);const a=this._fromType(e),c=this._events.get(s),d=Math.round(Math.max((s-c.time)*10,1)),_=(s-c.time)/d;for(let b=0;b<=d;b++){const k=_*b+c.time,$=this._exponentialInterpolate(c.time,c.value,s,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}_getTicksUntilEvent(e,s){if(e===null)e={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef$1(e.ticks)){const _=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(_,e.time)}const a=this._fromType(this.getValueAtTime(e.time));let c=this._fromType(this.getValueAtTime(s));const d=this._events.get(s);return d&&d.time===s&&d.type==="setValueAtTime"&&(c=this._fromType(this.getValueAtTime(s-this.sampleTime))),.5*(s-e.time)*(a+c)+e.ticks}getTicksAtTime(e){const s=this.toSeconds(e),a=this._events.get(s);return Math.max(this._getTicksUntilEvent(a,s),0)}getDurationOfTicks(e,s){const a=this.toSeconds(s),c=this.getTicksAtTime(s);return this.getTimeOfTick(c+e)-a}getTimeOfTick(e){const s=this._events.get(e,"ticks"),a=this._events.getAfter(e,"ticks");if(s&&s.ticks===e)return s.time;if(s&&a&&a.type==="linearRampToValueAtTime"&&s.value!==a.value){const c=this._fromType(this.getValueAtTime(s.time)),_=(this._fromType(this.getValueAtTime(a.time))-c)/(a.time-s.time),b=Math.sqrt(Math.pow(c,2)-2*_*(s.ticks-e)),k=(-c+b)/_,$=(-c-b)/_;return(k>0?k:$)+s.time}else return s?s.value===0?1/0:s.time+(e-s.ticks)/s.value:e/this._initialValue}ticksToTime(e,s){return this.getDurationOfTicks(e,s)}timeToTicks(e,s){const a=this.toSeconds(s),c=this.toSeconds(e),d=this.getTicksAtTime(a);return this.getTicksAtTime(a+c)-d}_fromType(e){return this.units==="bpm"&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units==="bpm"&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){const s=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(s,0)}}class TickSignal$1 extends Signal$1{constructor(){super(optionsFromArguments$1(TickSignal$1.getDefaults(),arguments,["value"])),this.name="TickSignal";const e=optionsFromArguments$1(TickSignal$1.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam$1({context:this.context,convert:e.convert,multiplier:e.multiplier,param:this._constantSource.offset,units:e.units,value:e.value})}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(e,s){return this._param.ticksToTime(e,s)}timeToTicks(e,s){return this._param.timeToTicks(e,s)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,s){return this._param.getDurationOfTicks(e,s)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource$1 extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(TickSource$1.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline$1,this._tickOffset=new Timeline$1;const e=optionsFromArguments$1(TickSource$1.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal$1({context:this.context,units:e.units,value:e.frequency}),readOnly$2(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext$1.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,s){const a=this.toSeconds(e);return this._state.getValueAtTime(a)!=="started"&&(this._state.setStateAtTime("started",a),isDefined$1(s)&&this.setTicksAtTime(s,a)),this}stop(e){const s=this.toSeconds(e);if(this._state.getValueAtTime(s)==="stopped"){const a=this._state.get(s);a&&a.time>0&&(this._tickOffset.cancel(a.time),this._state.cancel(a.time))}return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this.setTicksAtTime(0,s),this}pause(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)==="started"&&this._state.setStateAtTime("paused",s),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this}getTicksAtTime(e){const s=this.toSeconds(e),a=this._state.getLastState("stopped",s),c={state:"paused",time:s};this._state.add(c);let d=a,_=0;return this._state.forEachBetween(a.time,s+this.sampleTime,b=>{let k=d.time;const $=this._tickOffset.get(b.time);$&&$.time>=d.time&&(_=$.ticks,k=$.time),d.state==="started"&&b.state!=="started"&&(_+=this.frequency.getTicksAtTime(b.time)-this.frequency.getTicksAtTime(k)),d=b}),this._state.remove(c),_}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){const s=this.now(),a=this.frequency.timeToTicks(e,s);this.setTicksAtTime(a,s)}getSecondsAtTime(e){e=this.toSeconds(e);const s=this._state.getLastState("stopped",e),a={state:"paused",time:e};this._state.add(a);let c=s,d=0;return this._state.forEachBetween(s.time,e+this.sampleTime,_=>{let b=c.time;const k=this._tickOffset.get(_.time);k&&k.time>=c.time&&(d=k.seconds,b=k.time),c.state==="started"&&_.state!=="started"&&(d+=_.time-b),c=_}),this._state.remove(a),d}setTicksAtTime(e,s){return s=this.toSeconds(s),this._tickOffset.cancel(s),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,s),ticks:e,time:s}),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,s=this.now()){const a=this._tickOffset.get(s),c=this._state.get(s),d=Math.max(a.time,c.time),_=this.frequency.getTicksAtTime(d)+e-a.ticks;return this.frequency.getTimeOfTick(_)}forEachTickBetween(e,s,a){let c=this._state.get(e);this._state.forEachBetween(e,s,_=>{c&&c.state==="started"&&_.state!=="started"&&this.forEachTickBetween(Math.max(c.time,e),_.time-this.sampleTime,a),c=_});let d=null;if(c&&c.state==="started"){const _=Math.max(c.time,e),b=this.frequency.getTicksAtTime(_),k=this.frequency.getTicksAtTime(c.time),$=b-k;let j=Math.ceil($)-$;j=EQ$1(j,1)?0:j;let _e=this.frequency.getTimeOfTick(b+j);for(;_e{switch(a.state){case"started":const c=this._tickSource.getTicksAtTime(a.time);this.emit("start",a.time,c);break;case"stopped":a.time!==0&&this.emit("stop",a.time);break;case"paused":this.emit("pause",a.time);break}}),this._tickSource.forEachTickBetween(e,s,(a,c)=>{this.callback(a,c)}))}getStateAtTime(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter$1.mixin(Clock$1);class Delay extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Delay.getDefaults(),arguments,["delayTime","maxDelay"])),this.name="Delay";const e=optionsFromArguments$1(Delay.getDefaults(),arguments,["delayTime","maxDelay"]),s=this.toSeconds(e.maxDelay);this._maxDelay=Math.max(s,this.toSeconds(e.delayTime)),this._delayNode=this.input=this.output=this.context.createDelay(s),this.delayTime=new Param$1({context:this.context,param:this._delayNode.delayTime,units:"time",value:e.delayTime,minValue:0,maxValue:this.maxDelay}),readOnly$2(this,"delayTime")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{delayTime:0,maxDelay:1})}get maxDelay(){return this._maxDelay}dispose(){return super.dispose(),this._delayNode.disconnect(),this.delayTime.dispose(),this}}function Offline(o,e,s=2,a=getContext$1().sampleRate){return __awaiter$5(this,void 0,void 0,function*(){const c=getContext$1(),d=new OfflineContext$1(s,e,a);setContext$1(d),yield o(d);const _=d.render();setContext$1(c);const b=yield _;return new ToneAudioBuffer$1(b)})}class ToneAudioBuffers$1 extends Tone$2{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const e=optionsFromArguments$1(ToneAudioBuffers$1.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=e.baseUrl,Object.keys(e.urls).forEach(s=>{this._loadingCount++;const a=e.urls[s];this.add(s,a,this._bufferLoaded.bind(this,e.onload),e.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp$1,onload:noOp$1,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return assert$1(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,s])=>s.loaded)}add(e,s,a=noOp$1,c=noOp$1){return isString$1(s)?this._buffers.set(e.toString(),new ToneAudioBuffer$1(this.baseUrl+s,a,c)):this._buffers.set(e.toString(),new ToneAudioBuffer$1(s,a,c)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}}class MidiClass extends FrequencyClass$1{constructor(){super(...arguments),this.name="MidiClass",this.defaultUnits="midi"}_frequencyToUnits(e){return ftom$1(super._frequencyToUnits(e))}_ticksToUnits(e){return ftom$1(super._ticksToUnits(e))}_beatsToUnits(e){return ftom$1(super._beatsToUnits(e))}_secondsToUnits(e){return ftom$1(super._secondsToUnits(e))}toMidi(){return this.valueOf()}toFrequency(){return mtof$1(this.toMidi())}transpose(e){return new MidiClass(this.context,this.toMidi()+e)}}function Midi(o,e){return new MidiClass(getContext$1(),o,e)}class TicksClass$1 extends TransportTimeClass$1{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}function Ticks(o,e){return new TicksClass$1(getContext$1(),o,e)}class Draw$2 extends ToneWithContext$1{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline$1,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,s){return this._events.add({callback:e,time:this.toSeconds(s)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){const e=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=e;){const s=this._events.shift();s&&e-s.time<=this.expiration&&s.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit$1(o=>{o.draw=new Draw$2({context:o})});onContextClose$1(o=>{o.draw.dispose()});class IntervalTimeline$1 extends Tone$2{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(e){assert$1(isDefined$1(e.time),"Events must have a time property"),assert$1(isDefined$1(e.duration),"Events must have a duration parameter"),e.time=e.time.valueOf();let s=new IntervalNode$1(e.time,e.time+e.duration,e);for(this._root===null?this._root=s:this._root.insert(s),this._length++;s!==null;)s.updateHeight(),s.updateMax(),this._rebalance(s),s=s.parent;return this}remove(e){if(this._root!==null){const s=[];this._root.search(e.time,s);for(const a of s)if(a.event===e){this._removeNode(a),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,s=>this.remove(s)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,s){e.parent!==null?(e.isLeftChild()?e.parent.left=s:e.parent.right=s,this._rebalance(e.parent)):this._setRoot(s)}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{const s=e.getBalance();let a,c=null;if(s>0)if(e.left.right===null)a=e.left,a.right=e.right,c=a;else{for(a=e.left.right;a.right!==null;)a=a.right;a.parent&&(a.parent.right=a.left,c=a.parent,a.left=e.left,a.right=e.right)}else if(e.right.left===null)a=e.right,a.left=e.left,c=a;else{for(a=e.right.left;a.left!==null;)a=a.left;a.parent&&(a.parent.left=a.right,c=a.parent,a.left=e.left,a.right=e.right)}e.parent!==null?e.isLeftChild()?e.parent.left=a:e.parent.right=a:this._setRoot(a),c&&this._rebalance(c)}e.dispose()}_rotateLeft(e){const s=e.parent,a=e.isLeftChild(),c=e.right;c&&(e.right=c.left,c.left=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rotateRight(e){const s=e.parent,a=e.isLeftChild(),c=e.left;c&&(e.left=c.right,c.right=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rebalance(e){const s=e.getBalance();s>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):s<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){const s=[];if(this._root.search(e,s),s.length>0){let a=s[0];for(let c=1;ca.low&&(a=s[c]);return a.event}}return null}forEach(e){if(this._root!==null){const s=[];this._root.traverse(a=>s.push(a)),s.forEach(a=>{a.event&&e(a.event)})}return this}forEachAtTime(e,s){if(this._root!==null){const a=[];this._root.search(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}forEachFrom(e,s){if(this._root!==null){const a=[];this._root.searchAfter(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}}class IntervalNode$1{constructor(e,s,a){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=a,this.low=e,this.high=s,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,s){e>this.max||(this.left!==null&&this.left.search(e,s),this.low<=e&&this.high>e&&s.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,s))}searchAfter(e,s){this.low>=e&&(s.push(this),this.left!==null&&this.left.searchAfter(e,s)),this.right!==null&&this.right.searchAfter(e,s)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left!==null?e=this.left.height+1:this.right!==null&&(e=-(this.right.height+1)),e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}var Units=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));class Volume$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Volume$1.getDefaults(),arguments,["volume"])),this.name="Volume";const e=optionsFromArguments$1(Volume$1.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain$2({context:this.context,gain:e.volume,units:"decibels"}),this.volume=this.output.gain,readOnly$2(this,"volume"),this._unmutedVolume=e.volume,this.mute=e.mute}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}class Destination$3 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Destination$3.getDefaults(),arguments)),this.name="Destination",this.input=new Volume$1({context:this.context}),this.output=new Gain$2({context:this.context}),this.volume=this.input.volume;const e=optionsFromArguments$1(Destination$3.getDefaults(),arguments);connectSeries$1(this.input,this.output,this.context.rawContext.destination),this.mute=e.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),connectSeries$1(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}}onContextInit$1(o=>{o.destination=new Destination$3({context:o})});onContextClose$1(o=>{o.destination.dispose()});class TimelineValue$1 extends Tone$2{constructor(e){super(),this.name="TimelineValue",this._timeline=new Timeline$1({memory:10}),this._initialValue=e}set(e,s){return this._timeline.add({value:e,time:s}),this}get(e){const s=this._timeline.get(e);return s?s.value:this._initialValue}}class TransportEvent$1{constructor(e,s){this.id=TransportEvent$1._eventId++;const a=Object.assign(TransportEvent$1.getDefaults(),s);this.transport=e,this.callback=a.callback,this._once=a.once,this.time=a.time}static getDefaults(){return{callback:noOp$1,once:!1,time:0}}invoke(e){this.callback&&(this.callback(e),this._once&&this.transport.clear(this.id))}dispose(){return this.callback=void 0,this}}TransportEvent$1._eventId=0;class TransportRepeatEvent$1 extends TransportEvent$1{constructor(e,s){super(e,s),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const a=Object.assign(TransportRepeatEvent$1.getDefaults(),s);this.duration=new TicksClass$1(e.context,a.duration).valueOf(),this._interval=new TicksClass$1(e.context,a.interval).valueOf(),this._nextTick=a.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent$1.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvents(e){const s=this.transport.getTicksAtTime(e);s>=this.time&&s>=this._nextTick&&this._nextTick+this._intervalthis.time&&(this._nextTick=this.time+Math.ceil((s-this.time)/this._interval)*this._interval),this._currentId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass$1(this.context,this._nextTick).toSeconds()),this._nextTick+=this._interval,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass$1(this.context,this._nextTick).toSeconds())}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this}}class Transport$2 extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(Transport$2.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue$1(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline$1,this._repeatedEvents=new IntervalTimeline$1,this._syncedSignals=[],this._swingAmount=0;const e=optionsFromArguments$1(Transport$2.getDefaults(),arguments);this._ppq=e.ppq,this._clock=new Clock$1({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=e.ppq,this.bpm.setValueAtTime(e.bpm,0),readOnly$2(this,"bpm"),this._timeSignature=e.timeSignature,this._swingTicks=e.ppq/2}static getDefaults(){return Object.assign(ToneWithContext$1.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(e,s){if(this._loop.get(e)&&s>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),s=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._swingAmount>0&&s%this._ppq!==0&&s%(this._swingTicks*2)!==0){const a=s%(this._swingTicks*2)/(this._swingTicks*2),c=Math.sin(a*Math.PI)*this._swingAmount;e+=new TicksClass$1(this.context,this._swingTicks*2/3).toSeconds()*c}this._timeline.forEachAtTime(s,a=>a.invoke(e))}schedule(e,s){const a=new TransportEvent$1(this,{callback:e,time:new TransportTimeClass$1(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}scheduleRepeat(e,s,a,c=1/0){const d=new TransportRepeatEvent$1(this,{callback:e,duration:new TimeClass$1(this.context,c).toTicks(),interval:new TimeClass$1(this.context,s).toTicks(),time:new TransportTimeClass$1(this.context,a).toTicks()});return this._addEvent(d,this._repeatedEvents)}scheduleOnce(e,s){const a=new TransportEvent$1(this,{callback:e,once:!0,time:new TransportTimeClass$1(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){const s=this._scheduledEvents[e.toString()];s.timeline.remove(s.event),s.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,s){return this._scheduledEvents[e.id.toString()]={event:e,timeline:s},s.add(e),e.id}cancel(e=0){const s=this.toTicks(e);return this._timeline.forEachFrom(s,a=>this.clear(a.id)),this._repeatedEvents.forEachFrom(s,a=>this.clear(a.id)),this}_bindClockEvents(){this._clock.on("start",(e,s)=>{s=new TicksClass$1(this.context,s).toSeconds(),this.emit("start",e,s)}),this._clock.on("stop",e=>{this.emit("stop",e)}),this._clock.on("pause",e=>{this.emit("pause",e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,s){let a;return isDefined$1(s)&&(a=this.toTicks(s)),this._clock.start(e,a),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!=="started"?this.start(e):this.stop(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){isArray$1(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new TimeClass$1(this.context,this._loopStart,"i").toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new TimeClass$1(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new TicksClass$1(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){const e=this.now(),s=this._clock.getTicksAtTime(e);return new TicksClass$1(this.context,s).toBarsBeatsSixteenths()}set position(e){const s=this.toTicks(e);this.ticks=s}get seconds(){return this._clock.seconds}set seconds(e){const s=this.now(),a=this._clock.frequency.timeToTicks(e,s);this.ticks=a}get progress(){if(this.loop){const e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){const s=this.now();if(this.state==="started"){const a=this._clock.getTicksAtTime(s),c=this._clock.frequency.getDurationOfTicks(Math.ceil(a)-a,s),d=s+c;this.emit("stop",d),this._clock.setTicksAtTime(e,d),this.emit("start",d,this._clock.getSecondsAtTime(d))}else this._clock.setTicksAtTime(e,s)}}getTicksAtTime(e){return Math.round(this._clock.getTicksAtTime(e))}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!=="started")return 0;{const s=this.now(),a=this.getTicksAtTime(s),c=e-a%e;return this._clock.nextTickTime(c,s)}}syncSignal(e,s){if(!s){const c=this.now();if(e.getValueAtTime(c)!==0){const d=this.bpm.getValueAtTime(c),_=1/(60/d/this.PPQ);s=e.getValueAtTime(c)/_}else s=0}const a=new Gain$2(s);return this.bpm.connect(a),a.connect(e._param),this._syncedSignals.push({initial:e.value,ratio:a,signal:e}),e.value=0,this}unsyncSignal(e){for(let s=this._syncedSignals.length-1;s>=0;s--){const a=this._syncedSignals[s];a.signal===e&&(a.ratio.dispose(),a.signal.value=a.initial,this._syncedSignals.splice(s,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable$1(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}}Emitter$1.mixin(Transport$2);onContextInit$1(o=>{o.transport=new Transport$2({context:o})});onContextClose$1(o=>{o.transport.dispose()});class Source$1 extends ToneAudioNode$1{constructor(e){super(e),this.input=void 0,this._state=new StateTimeline$1("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp$1,this._syncedStop=noOp$1,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume$1({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,readOnly$2(this,"volume"),this.onstop=e.onstop}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,onstop:noOp$1,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,s,a){let c=isUndef$1(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(c=this._clampToCurrentTime(c),!this._synced&&this._state.getValueAtTime(c)==="started")assert$1(GT$1(c,this._state.get(c).time),"Start time must be strictly greater than previous start time"),this._state.cancel(c),this._state.setStateAtTime("started",c),this.log("restart",c),this.restart(c,s,a);else if(this.log("start",c),this._state.setStateAtTime("started",c),this._synced){const d=this._state.get(c);d&&(d.offset=this.toSeconds(defaultArg$1(s,0)),d.duration=a?this.toSeconds(a):void 0);const _=this.context.transport.schedule(b=>{this._start(b,s,a)},c);this._scheduled.push(_),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>c&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning$1(this.context),this._start(c,s,a);return this}stop(e){let s=isUndef$1(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(s=this._clampToCurrentTime(s),this._state.getValueAtTime(s)==="started"||isDefined$1(this._state.getNextState("started",s))){if(this.log("stop",s),!this._synced)this._stop(s);else{const a=this.context.transport.schedule(this._stop.bind(this),s);this._scheduled.push(a)}this._state.cancel(s),this._state.setStateAtTime("stopped",s)}return this}restart(e,s,a){return e=this.toSeconds(e),this._state.getValueAtTime(e)==="started"&&(this._state.cancel(e),this._restart(e,s,a)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,s)=>{if(s>0){const a=this._state.get(s);if(a&&a.state==="started"&&a.time!==s){const c=s-this.toSeconds(a.time);let d;a.duration&&(d=this.toSeconds(a.duration)-c),this._start(e,this.toSeconds(a.offset)+c,d)}}},this._syncedStop=e=>{const s=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(s)==="started"&&this._stop(e)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp$1,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource$1 extends OneShotSource$1{constructor(){super(optionsFromArguments$1(ToneBufferSource$1.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const e=optionsFromArguments$1(ToneBufferSource$1.getDefaults(),arguments,["url","onload"]);connect$1(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param$1({context:this.context,param:this._source.playbackRate,units:"positive",value:e.playbackRate}),this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this._buffer=new ToneAudioBuffer$1(e.url,e.onload,e.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource$1.getDefaults(),{url:new ToneAudioBuffer$1,loop:!1,loopEnd:0,loopStart:0,onload:noOp$1,onerror:noOp$1,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,s,a,c=1){assert$1(this.buffer.loaded,"buffer is either not set or not loaded");const d=this.toSeconds(e);this._startGain(d,c),this.loop?s=defaultArg$1(s,this.loopStart):s=defaultArg$1(s,0);let _=Math.max(this.toSeconds(s),0);if(this.loop){const b=this.toSeconds(this.loopEnd)||this.buffer.duration,k=this.toSeconds(this.loopStart),$=b-k;GTE$1(_,b)&&(_=(_-k)%$+k),EQ$1(_,this.buffer.duration)&&(_=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT$1(_,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(d,_)),isDefined$1(a)){let b=this.toSeconds(a);b=Math.max(b,0),this.stop(d+b)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}class Noise extends Source$1{constructor(){super(optionsFromArguments$1(Noise.getDefaults(),arguments,["type"])),this.name="Noise",this._source=null;const e=optionsFromArguments$1(Noise.getDefaults(),arguments,["type"]);this._playbackRate=e.playbackRate,this.type=e.type,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source$1.getDefaults(),{fadeIn:0,fadeOut:0,playbackRate:1,type:"white"})}get type(){return this._type}set type(e){if(assert$1(e in _noiseBuffers,"Noise: invalid type: "+e),this._type!==e&&(this._type=e,this.state==="started")){const s=this.now();this._stop(s),this._start(s)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._source&&(this._source.playbackRate.value=e)}_start(e){const s=_noiseBuffers[this._type];this._source=new ToneBufferSource$1({url:s,context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,loop:!0,onended:()=>this.onstop(this),playbackRate:this._playbackRate}).connect(this.output),this._source.start(this.toSeconds(e),Math.random()*(s.duration-.001))}_stop(e){this._source&&(this._source.stop(this.toSeconds(e)),this._source=null)}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._source&&(this._source.fadeIn=this._fadeIn)}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._source&&(this._source.fadeOut=this._fadeOut)}_restart(e){this._stop(e),this._start(e)}dispose(){return super.dispose(),this._source&&this._source.disconnect(),this}}const BUFFER_LENGTH=44100*5,NUM_CHANNELS=2,_noiseCache={brown:null,pink:null,white:null},_noiseBuffers={get brown(){if(!_noiseCache.brown){const o=[];for(let e=0;ed.label===e||d.deviceId===e),!this._device&&s.length>0&&(this._device=s[0]),assert$1(isDefined$1(this._device),`No matching device ${e}`));const a={audio:{echoCancellation:!1,sampleRate:this.context.sampleRate,noiseSuppression:!1,mozNoiseSuppression:!1}};this._device&&(a.audio.deviceId=this._device.deviceId);const c=yield navigator.mediaDevices.getUserMedia(a);if(!this._stream){this._stream=c;const d=this.context.createMediaStreamSource(c);connect$1(d,this.output),this._mediaStream=d}return this})}close(){return this._stream&&this._mediaStream&&(this._stream.getAudioTracks().forEach(e=>{e.stop()}),this._stream=void 0,this._mediaStream.disconnect(),this._mediaStream=void 0),this._device=void 0,this}static enumerateDevices(){return __awaiter$5(this,void 0,void 0,function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter(s=>s.kind==="audioinput")})}get state(){return this._stream&&this._stream.active?"started":"stopped"}get deviceId(){if(this._device)return this._device.deviceId}get groupId(){if(this._device)return this._device.groupId}get label(){if(this._device)return this._device.label}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this.close(),this._volume.dispose(),this.volume.dispose(),this}static get supported(){return isDefined$1(navigator.mediaDevices)&&isDefined$1(navigator.mediaDevices.getUserMedia)}}function generateWaveform$1(o,e){return __awaiter$5(this,void 0,void 0,function*(){const s=e/o.context.sampleRate,a=new OfflineContext$1(1,s,o.context.sampleRate);return new o.constructor(Object.assign(o.get(),{frequency:2/s,detune:0,context:a})).toDestination().start(0),(yield a.render()).getChannelData(0)})}class ToneOscillatorNode$1 extends OneShotSource$1{constructor(){super(optionsFromArguments$1(ToneOscillatorNode$1.getDefaults(),arguments,["frequency","type"])),this.name="ToneOscillatorNode",this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator];const e=optionsFromArguments$1(ToneOscillatorNode$1.getDefaults(),arguments,["frequency","type"]);connect$1(this._oscillator,this._gainNode),this.type=e.type,this.frequency=new Param$1({context:this.context,param:this._oscillator.frequency,units:"frequency",value:e.frequency}),this.detune=new Param$1({context:this.context,param:this._oscillator.detune,units:"cents",value:e.detune}),readOnly$2(this,["frequency","detune"])}static getDefaults(){return Object.assign(OneShotSource$1.getDefaults(),{detune:0,frequency:440,type:"sine"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._oscillator.start(s),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}}class Oscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(Oscillator$1.getDefaults(),arguments,["frequency","type"])),this.name="Oscillator",this._oscillator=null;const e=optionsFromArguments$1(Oscillator$1.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),readOnly$2(this,"frequency"),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),readOnly$2(this,"detune"),this._partials=e.partials,this._partialCount=e.partialCount,this._type=e.type,e.partialCount&&e.type!=="custom"&&(this._type=this.baseType+e.partialCount.toString()),this.phase=e.phase}static getDefaults(){return Object.assign(Source$1.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:"sine"})}_start(e){const s=this.toSeconds(e),a=new ToneOscillatorNode$1({context:this.context,onended:()=>this.onstop(this)});this._oscillator=a,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(s)}_stop(e){const s=this.toSeconds(e);this._oscillator&&this._oscillator.stop(s)}_restart(e){const s=this.toSeconds(e);return this.log("restart",s),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(s),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator$1._periodicWaveCache.find(s=>s.phase===this._phase&&deepEquals$1(s.partials,this._partials));{const e=Oscillator$1._periodicWaveCache.find(s=>s.type===this._type&&s.phase===this._phase);return this._partialCount=e?e.partialCount:this._partialCount,e}}get type(){return this._type}set type(e){this._type=e;const s=["sine","square","sawtooth","triangle"].indexOf(e)!==-1;if(this._phase===0&&s)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=e);else{const a=this._getCachedPeriodicWave();if(isDefined$1(a)){const{partials:c,wave:d}=a;this._wave=d,this._partials=c,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[c,d]=this._getRealImaginary(e,this._phase),_=this.context.createPeriodicWave(c,d);this._wave=_,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator$1._periodicWaveCache.push({imag:d,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:c,type:this._type,wave:this._wave}),Oscillator$1._periodicWaveCache.length>100&&Oscillator$1._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(e){this.partialCount&&this._type!=="custom"&&e!=="custom"?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){assertRange$1(e,0);let s=this._type;const a=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(a&&(s=a[1]),this._type!=="custom")e===0?this.type=s:this.type=s+e.toString();else{const c=new Float32Array(e);this._partials.forEach((d,_)=>c[_]=d),this._partials=Array.from(c),this.type=this._type}}_getRealImaginary(e,s){let c=2048;const d=new Float32Array(c),_=new Float32Array(c);let b=1;if(e==="custom"){if(b=this._partials.length+1,this._partialCount=this._partials.length,c=b,this._partials.length===0)return[d,_]}else{const k=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);k?(b=parseInt(k[2],10)+1,this._partialCount=parseInt(k[2],10),e=k[1],b=Math.max(b,2),c=b):this._partialCount=0,this._partials=[]}for(let k=1;k>1&1?-1:1):j=0,this._partials[k-1]=j;break;case"custom":j=this._partials[k-1];break;default:throw new TypeError("Oscillator: invalid type: "+e)}j!==0?(d[k]=-j*Math.sin(s*k),_[k]=j*Math.cos(s*k)):(d[k]=0,_[k]=0)}return[d,_]}_inverseFFT(e,s,a){let c=0;const d=e.length;for(let _=0;_a.includes(e));assert$1(s,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class AudioToGain$1 extends SignalOperator$1{constructor(){super(...arguments),this.name="AudioToGain",this._norm=new WaveShaper$1({context:this.context,mapping:e=>(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply$1 extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(Multiply$1.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const e=optionsFromArguments$1(Multiply$1.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain$2({context:this.context,minValue:e.minValue,maxValue:e.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(AMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain$1({context:this.context}),this._modulationNode=new Gain$2({context:this.context});const e=optionsFromArguments$1(AMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator$1({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator$1({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply$1({context:this.context,units:"positive",value:e.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly$2(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(FMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain$2({context:this.context,gain:0});const e=optionsFromArguments$1(FMOscillator$1.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator$1({context:this.context,detune:e.detune,frequency:0,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.detune=this._carrier.detune,this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),this._modulator=new Oscillator$1({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply$1({context:this.context,units:"positive",value:e.harmonicity}),this.modulationIndex=new Multiply$1({context:this.context,units:"positive",value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly$2(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(PulseOscillator$1.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain$2({context:this.context,gain:0}),this._thresh=new WaveShaper$1({context:this.context,mapping:s=>s<=0?-1:1});const e=optionsFromArguments$1(PulseOscillator$1.getDefaults(),arguments,["frequency","width"]);this.width=new Signal$1({context:this.context,units:"audioRange",value:e.width}),this._triangle=new Oscillator$1({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly$2(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source$1.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(FatOscillator$1.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const e=optionsFromArguments$1(FatOscillator$1.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),this._spread=e.spread,this._type=e.type,this._phase=e.phase,this._partials=e.partials,this._partialCount=e.partialCount,this.count=e.count,readOnly$2(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(e){e=this.toSeconds(e),this._forEach(s=>s.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(s=>s.stop(e))}_restart(e){this._forEach(s=>s.restart(e))}_forEach(e){for(let s=0;ss.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){const s=-e/2,a=e/(this._oscillators.length-1);this._forEach((c,d)=>c.detune.value=s+a*d)}}get count(){return this._oscillators.length}set count(e){if(assertRange$1(e,1),this._oscillators.length!==e){this._forEach(s=>s.dispose()),this._oscillators=[];for(let s=0;sthis.onstop(this):noOp$1});this.type==="custom"&&(a.partials=this._partials),this.frequency.connect(a.frequency),this.detune.connect(a.detune),a.detune.overridden=!1,a.connect(this.output),this._oscillators[s]=a}this.spread=this._spread,this.state==="started"&&this._forEach(s=>s.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((s,a)=>s.phase=this._phase+a/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(s=>s.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type="custom",this._forEach(s=>s.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(s=>s.partialCount=e),this._type=this._oscillators[0].type}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}}class PWMOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(PWMOscillator$1.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply$1({context:this.context,value:2});const e=optionsFromArguments$1(PWMOscillator$1.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator$1({context:this.context,frequency:e.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator$1({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly$2(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source$1.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap$1={am:AMOscillator$1,fat:FatOscillator$1,fm:FMOscillator$1,oscillator:Oscillator$1,pulse:PulseOscillator$1,pwm:PWMOscillator$1};class OmniOscillator$1 extends Source$1{constructor(){super(optionsFromArguments$1(OmniOscillator$1.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const e=optionsFromArguments$1(OmniOscillator$1.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),readOnly$2(this,["frequency","detune"]),this.set(e)}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),FMOscillator$1.getDefaults(),AMOscillator$1.getDefaults(),FatOscillator$1.getDefaults(),PulseOscillator$1.getDefaults(),PWMOscillator$1.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e="";return["am","fm","fat"].some(s=>this._sourceType===s)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):e==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,"type")&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;const s=OmniOscillatorSourceMap$1[e],a=this.now();if(this._oscillator){const c=this._oscillator;c.stop(a),this.context.setTimeout(()=>c.dispose(),this.blockTime)}this._oscillator=new s({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(a)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let s="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(s=this._oscillator.type),e==="fm"?this.type="fm"+s:e==="am"?this.type="am"+s:e==="fat"?this.type="fat"+s:e==="oscillator"?this.type=s:e==="pulse"?this.type="pulse":e==="pwm"&&(this.type="pwm")}_getOscType(e,s){return e instanceof OmniOscillatorSourceMap$1[s]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&e!=="pulse"&&e!=="pwm"&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,"fat")&&isNumber$1(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,"fat")&&isNumber$1(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString$1(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(e=1024){return __awaiter$5(this,void 0,void 0,function*(){return generateWaveform$1(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}class Add extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(Add.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Add",this._sum=new Gain$2({context:this.context}),this.input=this._sum,this.output=this._sum,this.addend=this._param,connectSeries$1(this._constantSource,this._sum)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._sum.dispose(),this}}class Scale extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(Scale.getDefaults(),arguments,["min","max"]))),this.name="Scale";const e=optionsFromArguments$1(Scale.getDefaults(),arguments,["min","max"]);this._mult=this.input=new Multiply$1({context:this.context,value:e.max-e.min}),this._add=this.output=new Add({context:this.context,value:e.min}),this._min=e.min,this._max=e.max,this.input.connect(this.output)}static getDefaults(){return Object.assign(SignalOperator$1.getDefaults(),{max:1,min:0})}get min(){return this._min}set min(e){this._min=e,this._setRange()}get max(){return this._max}set max(e){this._max=e,this._setRange()}_setRange(){this._add.value=this._min,this._mult.value=this._max-this._min}dispose(){return super.dispose(),this._add.dispose(),this._mult.dispose(),this}}class Zero extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(Zero.getDefaults(),arguments))),this.name="Zero",this._gain=new Gain$2({context:this.context}),this.output=this._gain,this.input=void 0,connect$1(this.context.getConstant(0),this._gain)}dispose(){return super.dispose(),disconnect$1(this.context.getConstant(0),this._gain),this}}class LFO extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(LFO.getDefaults(),arguments,["frequency","min","max"])),this.name="LFO",this._stoppedValue=0,this._units="number",this.convert=!0,this._fromType=Param$1.prototype._fromType,this._toType=Param$1.prototype._toType,this._is=Param$1.prototype._is,this._clampValue=Param$1.prototype._clampValue;const e=optionsFromArguments$1(LFO.getDefaults(),arguments,["frequency","min","max"]);this._oscillator=new Oscillator$1(e),this.frequency=this._oscillator.frequency,this._amplitudeGain=new Gain$2({context:this.context,gain:e.amplitude,units:"normalRange"}),this.amplitude=this._amplitudeGain.gain,this._stoppedSignal=new Signal$1({context:this.context,units:"audioRange",value:0}),this._zeros=new Zero({context:this.context}),this._a2g=new AudioToGain$1({context:this.context}),this._scaler=this.output=new Scale({context:this.context,max:e.max,min:e.min}),this.units=e.units,this.min=e.min,this.max=e.max,this._oscillator.chain(this._amplitudeGain,this._a2g,this._scaler),this._zeros.connect(this._a2g),this._stoppedSignal.connect(this._a2g),readOnly$2(this,["amplitude","frequency"]),this.phase=e.phase}static getDefaults(){return Object.assign(Oscillator$1.getDefaults(),{amplitude:1,frequency:"4n",max:1,min:0,type:"sine",units:"number"})}start(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(0,e),this._oscillator.start(e),this}stop(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(this._stoppedValue,e),this._oscillator.stop(e),this}sync(){return this._oscillator.sync(),this._oscillator.syncFrequency(),this}unsync(){return this._oscillator.unsync(),this._oscillator.unsyncFrequency(),this}_setStoppedValue(){this._stoppedValue=this._oscillator.getInitialValue(),this._stoppedSignal.value=this._stoppedValue}get min(){return this._toType(this._scaler.min)}set min(e){e=this._fromType(e),this._scaler.min=e}get max(){return this._toType(this._scaler.max)}set max(e){e=this._fromType(e),this._scaler.max=e}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e,this._setStoppedValue()}get partials(){return this._oscillator.partials}set partials(e){this._oscillator.partials=e,this._setStoppedValue()}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e,this._setStoppedValue()}get units(){return this._units}set units(e){const s=this.min,a=this.max;this._units=e,this.min=s,this.max=a}get state(){return this._oscillator.state}connect(e,s,a){return(e instanceof Param$1||e instanceof Signal$1)&&(this.convert=e.convert,this.units=e.units),connectSignal$1(this,e,s,a),this}dispose(){return super.dispose(),this._oscillator.dispose(),this._stoppedSignal.dispose(),this._zeros.dispose(),this._scaler.dispose(),this._a2g.dispose(),this._amplitudeGain.dispose(),this.amplitude.dispose(),this}}function range$1(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange$1(d,o,e),s.set(this,d)}})}}function timeRange$1(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange$1(this.toSeconds(d),o,e),s.set(this,d)}})}}class Player$1 extends Source$1{constructor(){super(optionsFromArguments$1(Player$1.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const e=optionsFromArguments$1(Player$1.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer$1({onload:this._onload.bind(this,e.onload),onerror:e.onerror,reverse:e.reverse,url:e.url}),this.autostart=e.autostart,this._loop=e.loop,this._loopStart=e.loopStart,this._loopEnd=e.loopEnd,this._playbackRate=e.playbackRate,this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source$1.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp$1,onerror:noOp$1,playbackRate:1,reverse:!1})}load(e){return __awaiter$5(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=noOp$1){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(e,s,a){return super.start(e,s,a),this}_start(e,s,a){this._loop?s=defaultArg$1(s,this._loopStart):s=defaultArg$1(s,0);const c=this.toSeconds(s),d=a;a=defaultArg$1(a,Math.max(this._buffer.duration-c,0));let _=this.toSeconds(a);_=_/this._playbackRate,e=this.toSeconds(e);const b=new ToneBufferSource$1({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+_),this._state.setStateAtTime("stopped",e+_,{implicitEnd:!0})),this._activeSources.add(b),this._loop&&isUndef$1(d)?b.start(e,c):b.start(e,c,_-this.toSeconds(this.fadeOut))}_stop(e){const s=this.toSeconds(e);this._activeSources.forEach(a=>a.stop(s))}restart(e,s,a){return super.restart(e,s,a),this}_restart(e,s,a){this._stop(e),this._start(e,s,a)}seek(e,s){const a=this.toSeconds(s);if(this._state.getValueAtTime(a)==="started"){const c=this.toSeconds(e);this._stop(a),this._start(a,c)}return this}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(s=>{s.loop=e}),e)){const s=this._state.getNextState("stopped",this.now());s&&this._state.cancel(s.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;const s=this.now(),a=this._state.getNextState("stopped",s);a&&a.implicitEnd&&(this._state.cancel(a.time),this._activeSources.forEach(c=>c.cancelStop())),this._activeSources.forEach(c=>{c.playbackRate.setValueAtTime(e,s)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}}__decorate$1([timeRange$1(0)],Player$1.prototype,"fadeIn",void 0);__decorate$1([timeRange$1(0)],Player$1.prototype,"fadeOut",void 0);class Players$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Players$1.getDefaults(),arguments,["urls","onload"],"urls")),this.name="Players",this.input=void 0,this._players=new Map;const e=optionsFromArguments$1(Players$1.getDefaults(),arguments,["urls","onload"],"urls");this._volume=this.output=new Volume$1({context:this.context,volume:e.volume}),this.volume=this._volume.volume,readOnly$2(this,"volume"),this._buffers=new ToneAudioBuffers$1({urls:e.urls,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.mute=e.mute,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source$1.getDefaults(),{baseUrl:"",fadeIn:0,fadeOut:0,mute:!1,onload:noOp$1,onerror:noOp$1,urls:{},volume:0})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._players.forEach(s=>{s.fadeIn=e})}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._players.forEach(s=>{s.fadeOut=e})}get state(){return Array.from(this._players).some(([s,a])=>a.state==="started")?"started":"stopped"}has(e){return this._buffers.has(e)}player(e){if(assert$1(this.has(e),`No Player with the name ${e} exists on this object`),!this._players.has(e)){const s=new Player$1({context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,url:this._buffers.get(e)}).connect(this.output);this._players.set(e,s)}return this._players.get(e)}get loaded(){return this._buffers.loaded}add(e,s,a){return assert$1(!this._buffers.has(e),"A buffer with that name already exists on this object"),this._buffers.add(e,s,a),this}stopAll(e){return this._players.forEach(s=>s.stop(e)),this}dispose(){return super.dispose(),this._volume.dispose(),this.volume.dispose(),this._players.forEach(e=>e.dispose()),this._buffers.dispose(),this}}class GrainPlayer extends Source$1{constructor(){super(optionsFromArguments$1(GrainPlayer.getDefaults(),arguments,["url","onload"])),this.name="GrainPlayer",this._loopStart=0,this._loopEnd=0,this._activeSources=[];const e=optionsFromArguments$1(GrainPlayer.getDefaults(),arguments,["url","onload"]);this.buffer=new ToneAudioBuffer$1({onload:e.onload,onerror:e.onerror,reverse:e.reverse,url:e.url}),this._clock=new Clock$1({context:this.context,callback:this._tick.bind(this),frequency:1/e.grainSize}),this._playbackRate=e.playbackRate,this._grainSize=e.grainSize,this._overlap=e.overlap,this.detune=e.detune,this.overlap=e.overlap,this.loop=e.loop,this.playbackRate=e.playbackRate,this.grainSize=e.grainSize,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.reverse=e.reverse,this._clock.on("stop",this._onstop.bind(this))}static getDefaults(){return Object.assign(Source$1.getDefaults(),{onload:noOp$1,onerror:noOp$1,overlap:.1,grainSize:.2,playbackRate:1,detune:0,loop:!1,loopStart:0,loopEnd:0,reverse:!1})}_start(e,s,a){s=defaultArg$1(s,0),s=this.toSeconds(s),e=this.toSeconds(e);const c=1/this._clock.frequency.getValueAtTime(e);this._clock.start(e,s/c),a&&this.stop(e+this.toSeconds(a))}restart(e,s,a){return super.restart(e,s,a),this}_restart(e,s,a){this._stop(e),this._start(e,s,a)}_stop(e){this._clock.stop(e)}_onstop(e){this._activeSources.forEach(s=>{s.fadeOut=0,s.stop(e)}),this.onstop(this)}_tick(e){const s=this._clock.getTicksAtTime(e),a=s*this._grainSize;if(this.log("offset",a),!this.loop&&a>this.buffer.duration){this.stop(e);return}const c=a{const _=this._activeSources.indexOf(d);_!==-1&&this._activeSources.splice(_,1)}}get playbackRate(){return this._playbackRate}set playbackRate(e){assertRange$1(e,.001),this._playbackRate=e,this.grainSize=this._grainSize}get loopStart(){return this._loopStart}set loopStart(e){this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._loopStart=this.toSeconds(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this.buffer.loaded&&assertRange$1(this.toSeconds(e),0,this.buffer.duration),this._loopEnd=this.toSeconds(e)}get reverse(){return this.buffer.reverse}set reverse(e){this.buffer.reverse=e}get grainSize(){return this._grainSize}set grainSize(e){this._grainSize=this.toSeconds(e),this._clock.frequency.setValueAtTime(this._playbackRate/this._grainSize,this.now())}get overlap(){return this._overlap}set overlap(e){const s=this.toSeconds(e);assertRange$1(s,0),this._overlap=s}get loaded(){return this.buffer.loaded}dispose(){return super.dispose(),this.buffer.dispose(),this._clock.dispose(),this._activeSources.forEach(e=>e.dispose()),this}}class Abs extends SignalOperator$1{constructor(){super(...arguments),this.name="Abs",this._abs=new WaveShaper$1({context:this.context,mapping:e=>Math.abs(e)<.001?0:Math.abs(e)}),this.input=this._abs,this.output=this._abs}dispose(){return super.dispose(),this._abs.dispose(),this}}class GainToAudio extends SignalOperator$1{constructor(){super(...arguments),this.name="GainToAudio",this._norm=new WaveShaper$1({context:this.context,mapping:e=>Math.abs(e)*2-1}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Negate extends SignalOperator$1{constructor(){super(...arguments),this.name="Negate",this._multiply=new Multiply$1({context:this.context,value:-1}),this.input=this._multiply,this.output=this._multiply}dispose(){return super.dispose(),this._multiply.dispose(),this}}class Subtract extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(Subtract.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Subtract",this._sum=new Gain$2({context:this.context}),this.input=this._sum,this.output=this._sum,this._neg=new Negate({context:this.context}),this.subtrahend=this._param,connectSeries$1(this._constantSource,this._neg,this._sum)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._neg.dispose(),this._sum.dispose(),this}}class GreaterThanZero extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(GreaterThanZero.getDefaults(),arguments))),this.name="GreaterThanZero",this._thresh=this.output=new WaveShaper$1({context:this.context,length:127,mapping:e=>e<=0?0:1}),this._scale=this.input=new Multiply$1({context:this.context,value:1e4}),this._scale.connect(this._thresh)}dispose(){return super.dispose(),this._scale.dispose(),this._thresh.dispose(),this}}class GreaterThan extends Signal$1{constructor(){super(Object.assign(optionsFromArguments$1(GreaterThan.getDefaults(),arguments,["value"]))),this.name="GreaterThan",this.override=!1;const e=optionsFromArguments$1(GreaterThan.getDefaults(),arguments,["value"]);this._subtract=this.input=new Subtract({context:this.context,value:e.value}),this._gtz=this.output=new GreaterThanZero({context:this.context}),this.comparator=this._param=this._subtract.subtrahend,readOnly$2(this,"comparator"),this._subtract.connect(this._gtz)}static getDefaults(){return Object.assign(Signal$1.getDefaults(),{value:0})}dispose(){return super.dispose(),this._gtz.dispose(),this._subtract.dispose(),this.comparator.dispose(),this}}class Pow extends SignalOperator$1{constructor(){super(Object.assign(optionsFromArguments$1(Pow.getDefaults(),arguments,["value"]))),this.name="Pow";const e=optionsFromArguments$1(Pow.getDefaults(),arguments,["value"]);this._exponentScaler=this.input=this.output=new WaveShaper$1({context:this.context,mapping:this._expFunc(e.value),length:8192}),this._exponent=e.value}static getDefaults(){return Object.assign(SignalOperator$1.getDefaults(),{value:1})}_expFunc(e){return s=>Math.pow(Math.abs(s),e)}get value(){return this._exponent}set value(e){this._exponent=e,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}}class ScaleExp extends Scale{constructor(){super(Object.assign(optionsFromArguments$1(ScaleExp.getDefaults(),arguments,["min","max","exponent"]))),this.name="ScaleExp";const e=optionsFromArguments$1(ScaleExp.getDefaults(),arguments,["min","max","exponent"]);this.input=this._exp=new Pow({context:this.context,value:e.exponent}),this._exp.connect(this._mult)}static getDefaults(){return Object.assign(Scale.getDefaults(),{exponent:1})}get exponent(){return this._exp.value}set exponent(e){this._exp.value=e}dispose(){return super.dispose(),this._exp.dispose(),this}}class SyncedSignal extends Signal$1{constructor(){super(optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"])),this.name="SyncedSignal",this.override=!1;const e=optionsFromArguments$1(Signal$1.getDefaults(),arguments,["value","units"]);this._lastVal=e.value,this._synced=this.context.transport.scheduleRepeat(this._onTick.bind(this),"1i"),this._syncedCallback=this._anchorValue.bind(this),this.context.transport.on("start",this._syncedCallback),this.context.transport.on("pause",this._syncedCallback),this.context.transport.on("stop",this._syncedCallback),this._constantSource.disconnect(),this._constantSource.stop(0),this._constantSource=this.output=new ToneConstantSource$1({context:this.context,offset:e.value,units:e.units}).start(0),this.setValueAtTime(e.value,0)}_onTick(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal!==s&&(this._lastVal=s,this._constantSource.offset.setValueAtTime(s,e))}_anchorValue(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal=s,this._constantSource.offset.cancelAndHoldAtTime(e),this._constantSource.offset.setValueAtTime(s,e)}getValueAtTime(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.getValueAtTime(s)}setValueAtTime(e,s){const a=new TransportTimeClass$1(this.context,s).toSeconds();return super.setValueAtTime(e,a),this}linearRampToValueAtTime(e,s){const a=new TransportTimeClass$1(this.context,s).toSeconds();return super.linearRampToValueAtTime(e,a),this}exponentialRampToValueAtTime(e,s){const a=new TransportTimeClass$1(this.context,s).toSeconds();return super.exponentialRampToValueAtTime(e,a),this}setTargetAtTime(e,s,a){const c=new TransportTimeClass$1(this.context,s).toSeconds();return super.setTargetAtTime(e,c,a),this}cancelScheduledValues(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.cancelScheduledValues(s),this}setValueCurveAtTime(e,s,a,c){const d=new TransportTimeClass$1(this.context,s).toSeconds();return a=this.toSeconds(a),super.setValueCurveAtTime(e,d,a,c),this}cancelAndHoldAtTime(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.cancelAndHoldAtTime(s),this}setRampPoint(e){const s=new TransportTimeClass$1(this.context,e).toSeconds();return super.setRampPoint(s),this}exponentialRampTo(e,s,a){const c=new TransportTimeClass$1(this.context,a).toSeconds();return super.exponentialRampTo(e,s,c),this}linearRampTo(e,s,a){const c=new TransportTimeClass$1(this.context,a).toSeconds();return super.linearRampTo(e,s,c),this}targetRampTo(e,s,a){const c=new TransportTimeClass$1(this.context,a).toSeconds();return super.targetRampTo(e,s,c),this}dispose(){return super.dispose(),this.context.transport.clear(this._synced),this.context.transport.off("start",this._syncedCallback),this.context.transport.off("pause",this._syncedCallback),this.context.transport.off("stop",this._syncedCallback),this._constantSource.dispose(),this}}class Envelope$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Envelope$1.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal$1({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const e=optionsFromArguments$1(Envelope$1.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve,this.decayCurve=e.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,s){if(isString$1(e))return e;{let a;for(a in EnvelopeCurves$1)if(EnvelopeCurves$1[a][s]===e)return a;return e}}_setCurve(e,s,a){if(isString$1(a)&&Reflect.has(EnvelopeCurves$1,a)){const c=EnvelopeCurves$1[a];isObject$1(c)?e!=="_decayCurve"&&(this[e]=c[s]):this[e]=c}else if(isArray$1(a)&&e!=="_decayCurve")this[e]=a;else throw new Error("Envelope: invalid curve: "+a)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(e){this._setCurve("_attackCurve","In",e)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(e){this._setCurve("_releaseCurve","Out",e)}get decayCurve(){return this._decayCurve}set decayCurve(e){assert$1(["linear","exponential"].some(s=>s===e),`Invalid envelope curve: ${e}`),this._decayCurve=e}triggerAttack(e,s=1){this.log("triggerAttack",e,s),e=this.toSeconds(e);let c=this.toSeconds(this.attack);const d=this.toSeconds(this.decay),_=this.getValueAtTime(e);if(_>0){const b=1/c;c=(1-_)/b}if(c0){const a=this.toSeconds(this.release);a{let e,s;const a=[];for(e=0;e<128;e++)a[e]=Math.sin(e/(128-1)*(Math.PI/2));const c=[],d=6.4;for(e=0;e<128-1;e++){s=e/(128-1);const et=Math.sin(s*(Math.PI*2)*d-Math.PI/2)+1;c[e]=et/10+s*.83}c[128-1]=1;const _=[],b=5;for(e=0;e<128;e++)_[e]=Math.ceil(e/(128-1)*b)/b;const k=[];for(e=0;e<128;e++)s=e/(128-1),k[e]=.5*(1-Math.cos(Math.PI*s));const $=[];for(e=0;e<128;e++){s=e/(128-1);const et=Math.pow(s,3)*4+.2,tt=Math.cos(et*Math.PI*2*s);$[e]=Math.abs(tt*(1-s))}function j(et){const tt=new Array(et.length);for(let nt=0;nt{const d=c[s],_=this.context.transport.schedule(b=>{c[s]=b,a.apply(this,c)},d);this._scheduledEvents.push(_)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease),this}triggerAttackRelease(e,s,a,c){const d=this.toSeconds(a),_=this.toSeconds(s);return this.triggerAttack(e,d,c),this.triggerRelease(d+_),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic$1 extends Instrument$1{constructor(){super(optionsFromArguments$1(Monophonic$1.getDefaults(),arguments));const e=optionsFromArguments$1(Monophonic$1.getDefaults(),arguments);this.portamento=e.portamento,this.onsilence=e.onsilence}static getDefaults(){return Object.assign(Instrument$1.getDefaults(),{detune:0,onsilence:noOp$1,portamento:0})}triggerAttack(e,s,a=1){this.log("triggerAttack",e,s,a);const c=this.toSeconds(s);return this._triggerEnvelopeAttack(c,a),this.setNote(e,c),this}triggerRelease(e){this.log("triggerRelease",e);const s=this.toSeconds(e);return this._triggerEnvelopeRelease(s),this}setNote(e,s){const a=this.toSeconds(s),c=e instanceof FrequencyClass$1?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(a)>.05){const d=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(c,d,a)}else this.frequency.setValueAtTime(c,a);return this}}__decorate$1([timeRange$1(0)],Monophonic$1.prototype,"portamento",void 0);class AmplitudeEnvelope$1 extends Envelope$1{constructor(){super(optionsFromArguments$1(AmplitudeEnvelope$1.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain$2({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth$2 extends Monophonic$1{constructor(){super(optionsFromArguments$1(Synth$2.getDefaults(),arguments)),this.name="Synth";const e=optionsFromArguments$1(Synth$2.getDefaults(),arguments);this.oscillator=new OmniOscillator$1(Object.assign({context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)},e.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope$1(Object.assign({context:this.context},e.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly$2(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),[...Object.keys(Source$1.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(e,s){if(this.envelope.triggerAttack(e,s),this.oscillator.start(e),this.envelope.sustain===0){const a=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+a+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class ModulationSynth extends Monophonic$1{constructor(){super(optionsFromArguments$1(ModulationSynth.getDefaults(),arguments)),this.name="ModulationSynth";const e=optionsFromArguments$1(ModulationSynth.getDefaults(),arguments);this._carrier=new Synth$2({context:this.context,oscillator:e.oscillator,envelope:e.envelope,onsilence:()=>this.onsilence(this),volume:-10}),this._modulator=new Synth$2({context:this.context,oscillator:e.modulation,envelope:e.modulationEnvelope,volume:-10}),this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope,this.modulation=this._modulator.oscillator,this.modulationEnvelope=this._modulator.envelope,this.frequency=new Signal$1({context:this.context,units:"frequency"}),this.detune=new Signal$1({context:this.context,value:e.detune,units:"cents"}),this.harmonicity=new Multiply$1({context:this.context,value:e.harmonicity,minValue:0}),this._modulationNode=new Gain$2({context:this.context,gain:0}),readOnly$2(this,["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"])}static getDefaults(){return Object.assign(Monophonic$1.getDefaults(),{harmonicity:3,oscillator:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),[...Object.keys(Source$1.getDefaults()),"frequency","detune"]),{type:"sine"}),envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.01,decay:.01,sustain:1,release:.5}),modulation:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),[...Object.keys(Source$1.getDefaults()),"frequency","detune"]),{type:"square"}),modulationEnvelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.5,decay:0,sustain:1,release:.5})})}_triggerEnvelopeAttack(e,s){this._carrier._triggerEnvelopeAttack(e,s),this._modulator._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this._carrier._triggerEnvelopeRelease(e),this._modulator._triggerEnvelopeRelease(e),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this._carrier.dispose(),this._modulator.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._modulationNode.dispose(),this}}class AMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments$1(AMSynth$1.getDefaults(),arguments)),this.name="AMSynth",this._modulationScale=new AudioToGain$1({context:this.context}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output)}dispose(){return super.dispose(),this._modulationScale.dispose(),this}}class BiquadFilter extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(BiquadFilter.getDefaults(),arguments,["frequency","type"])),this.name="BiquadFilter";const e=optionsFromArguments$1(BiquadFilter.getDefaults(),arguments,["frequency","type"]);this._filter=this.context.createBiquadFilter(),this.input=this.output=this._filter,this.Q=new Param$1({context:this.context,units:"number",value:e.Q,param:this._filter.Q}),this.frequency=new Param$1({context:this.context,units:"frequency",value:e.frequency,param:this._filter.frequency}),this.detune=new Param$1({context:this.context,units:"cents",value:e.detune,param:this._filter.detune}),this.gain=new Param$1({context:this.context,units:"decibels",convert:!1,value:e.gain,param:this._filter.gain}),this.type=e.type}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{Q:1,type:"lowpass",frequency:350,detune:0,gain:0})}get type(){return this._filter.type}set type(e){assert$1(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(e)!==-1,`Invalid filter type: ${e}`),this._filter.type=e}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let _=0;_a.type=e)}get rolloff(){return this._rolloff}set rolloff(e){const s=isNumber$1(e)?e:parseInt(e,10),a=[-12,-24,-48,-96];let c=a.indexOf(s);assert$1(c!==-1,`rolloff can only be ${a.join(", ")}`),c+=1,this._rolloff=s,this.input.disconnect(),this._filters.forEach(d=>d.disconnect()),this._filters=new Array(c);for(let d=0;d1);return this._filters.forEach(()=>{s.getFrequencyResponse(e).forEach((d,_)=>a[_]*=d)}),s.dispose(),a}dispose(){return super.dispose(),this._filters.forEach(e=>{e.dispose()}),writable$1(this,["detune","frequency","gain","Q"]),this.frequency.dispose(),this.Q.dispose(),this.detune.dispose(),this.gain.dispose(),this}}class FrequencyEnvelope extends Envelope$1{constructor(){super(optionsFromArguments$1(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="FrequencyEnvelope";const e=optionsFromArguments$1(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this._octaves=e.octaves,this._baseFrequency=this.toFrequency(e.baseFrequency),this._exponent=this.input=new Pow({context:this.context,value:e.exponent}),this._scale=this.output=new Scale({context:this.context,min:this._baseFrequency,max:this._baseFrequency*Math.pow(2,this._octaves)}),this._sig.chain(this._exponent,this._scale)}static getDefaults(){return Object.assign(Envelope$1.getDefaults(),{baseFrequency:200,exponent:1,octaves:4})}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){const s=this.toFrequency(e);assertRange$1(s,0),this._baseFrequency=s,this._scale.min=this._baseFrequency,this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._scale.max=this._baseFrequency*Math.pow(2,e)}get exponent(){return this._exponent.value}set exponent(e){this._exponent.value=e}dispose(){return super.dispose(),this._exponent.dispose(),this._scale.dispose(),this}}class MonoSynth$1 extends Monophonic$1{constructor(){super(optionsFromArguments$1(MonoSynth$1.getDefaults(),arguments)),this.name="MonoSynth";const e=optionsFromArguments$1(MonoSynth$1.getDefaults(),arguments);this.oscillator=new OmniOscillator$1(Object.assign(e.oscillator,{context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)})),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.filterEnvelope=new FrequencyEnvelope(Object.assign(e.filterEnvelope,{context:this.context})),this.envelope=new AmplitudeEnvelope$1(Object.assign(e.envelope,{context:this.context})),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),readOnly$2(this,["oscillator","frequency","detune","filter","filterEnvelope","envelope"])}static getDefaults(){return Object.assign(Monophonic$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.9}),filter:Object.assign(omitFromObject$1(Filter$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{Q:1,rolloff:-12,type:"lowpass"}),filterEnvelope:Object.assign(omitFromObject$1(FrequencyEnvelope.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.6,baseFrequency:200,decay:.2,exponent:2,octaves:3,release:2,sustain:.5}),oscillator:Object.assign(omitFromObject$1(OmniOscillator$1.getDefaults(),Object.keys(Source$1.getDefaults())),{type:"sawtooth"})})}_triggerEnvelopeAttack(e,s=1){if(this.envelope.triggerAttack(e,s),this.filterEnvelope.triggerAttack(e),this.oscillator.start(e),this.envelope.sustain===0){const a=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+a+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.filterEnvelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this.filterEnvelope.dispose(),this.filter.dispose(),this}}class DuoSynth$1 extends Monophonic$1{constructor(){super(optionsFromArguments$1(DuoSynth$1.getDefaults(),arguments)),this.name="DuoSynth";const e=optionsFromArguments$1(DuoSynth$1.getDefaults(),arguments);this.voice0=new MonoSynth$1(Object.assign(e.voice0,{context:this.context,onsilence:()=>this.onsilence(this)})),this.voice1=new MonoSynth$1(Object.assign(e.voice1,{context:this.context})),this.harmonicity=new Multiply$1({context:this.context,units:"positive",value:e.harmonicity}),this._vibrato=new LFO({frequency:e.vibratoRate,context:this.context,min:-50,max:50}),this._vibrato.start(),this.vibratoRate=this._vibrato.frequency,this._vibratoGain=new Gain$2({context:this.context,units:"normalRange",gain:e.vibratoAmount}),this.vibratoAmount=this._vibratoGain.gain,this.frequency=new Signal$1({context:this.context,units:"frequency",value:440}),this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),this.frequency.connect(this.voice0.frequency),this.frequency.chain(this.harmonicity,this.voice1.frequency),this._vibrato.connect(this._vibratoGain),this._vibratoGain.fan(this.voice0.detune,this.voice1.detune),this.detune.fan(this.voice0.detune,this.voice1.detune),this.voice0.connect(this.output),this.voice1.connect(this.output),readOnly$2(this,["voice0","voice1","frequency","vibratoAmount","vibratoRate"])}getLevelAtTime(e){return e=this.toSeconds(e),this.voice0.envelope.getValueAtTime(e)+this.voice1.envelope.getValueAtTime(e)}static getDefaults(){return deepMerge$1(Monophonic$1.getDefaults(),{vibratoAmount:.5,vibratoRate:5,harmonicity:1.5,voice0:deepMerge$1(omitFromObject$1(MonoSynth$1.getDefaults(),Object.keys(Monophonic$1.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}}),voice1:deepMerge$1(omitFromObject$1(MonoSynth$1.getDefaults(),Object.keys(Monophonic$1.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}})})}_triggerEnvelopeAttack(e,s){this.voice0._triggerEnvelopeAttack(e,s),this.voice1._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this.voice0._triggerEnvelopeRelease(e),this.voice1._triggerEnvelopeRelease(e),this}dispose(){return super.dispose(),this.voice0.dispose(),this.voice1.dispose(),this.frequency.dispose(),this.detune.dispose(),this._vibrato.dispose(),this.vibratoRate.dispose(),this._vibratoGain.dispose(),this.harmonicity.dispose(),this}}class FMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments$1(FMSynth$1.getDefaults(),arguments)),this.name="FMSynth";const e=optionsFromArguments$1(FMSynth$1.getDefaults(),arguments);this.modulationIndex=new Multiply$1({context:this.context,value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output)}static getDefaults(){return Object.assign(ModulationSynth.getDefaults(),{modulationIndex:10})}dispose(){return super.dispose(),this.modulationIndex.dispose(),this}}const inharmRatios=[1,1.483,1.932,2.546,2.63,3.897];class MetalSynth$1 extends Monophonic$1{constructor(){super(optionsFromArguments$1(MetalSynth$1.getDefaults(),arguments)),this.name="MetalSynth",this._oscillators=[],this._freqMultipliers=[];const e=optionsFromArguments$1(MetalSynth$1.getDefaults(),arguments);this.detune=new Signal$1({context:this.context,units:"cents",value:e.detune}),this.frequency=new Signal$1({context:this.context,units:"frequency"}),this._amplitude=new Gain$2({context:this.context,gain:0}).connect(this.output),this._highpass=new Filter$1({Q:0,context:this.context,type:"highpass"}).connect(this._amplitude);for(let s=0;sthis.onsilence(this):noOp$1,type:"square"});a.connect(this._highpass),this._oscillators[s]=a;const c=new Multiply$1({context:this.context,value:inharmRatios[s]});this._freqMultipliers[s]=c,this.frequency.chain(c,a.frequency),this.detune.connect(a.detune)}this._filterFreqScaler=new Scale({context:this.context,max:7e3,min:this.toFrequency(e.resonance)}),this.envelope=new Envelope$1({attack:e.envelope.attack,attackCurve:"linear",context:this.context,decay:e.envelope.decay,release:e.envelope.release,sustain:0}),this.envelope.chain(this._filterFreqScaler,this._highpass.frequency),this.envelope.connect(this._amplitude.gain),this._octaves=e.octaves,this.octaves=e.octaves}static getDefaults(){return deepMerge$1(Monophonic$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{attack:.001,decay:1.4,release:.2}),harmonicity:5.1,modulationIndex:32,octaves:1.5,resonance:4e3})}_triggerEnvelopeAttack(e,s=1){return this.envelope.triggerAttack(e,s),this._oscillators.forEach(a=>a.start(e)),this.envelope.sustain===0&&this._oscillators.forEach(a=>{a.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay))}),this}_triggerEnvelopeRelease(e){return this.envelope.triggerRelease(e),this._oscillators.forEach(s=>s.stop(e+this.toSeconds(this.envelope.release))),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}get modulationIndex(){return this._oscillators[0].modulationIndex.value}set modulationIndex(e){this._oscillators.forEach(s=>s.modulationIndex.value=e)}get harmonicity(){return this._oscillators[0].harmonicity.value}set harmonicity(e){this._oscillators.forEach(s=>s.harmonicity.value=e)}get resonance(){return this._filterFreqScaler.min}set resonance(e){this._filterFreqScaler.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._filterFreqScaler.max=this._filterFreqScaler.min*Math.pow(2,e)}dispose(){return super.dispose(),this._oscillators.forEach(e=>e.dispose()),this._freqMultipliers.forEach(e=>e.dispose()),this.frequency.dispose(),this.detune.dispose(),this._filterFreqScaler.dispose(),this._amplitude.dispose(),this.envelope.dispose(),this._highpass.dispose(),this}}class MembraneSynth$2 extends Synth$2{constructor(){super(optionsFromArguments$1(MembraneSynth$2.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const e=optionsFromArguments$1(MembraneSynth$2.getDefaults(),arguments);this.pitchDecay=e.pitchDecay,this.octaves=e.octaves,readOnly$2(this,["oscillator","envelope"])}static getDefaults(){return deepMerge$1(Monophonic$1.getDefaults(),Synth$2.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(e,s){const a=this.toSeconds(s),c=this.toFrequency(e instanceof FrequencyClass$1?e.toFrequency():e),d=c*this.octaves;return this.oscillator.frequency.setValueAtTime(d,a),this.oscillator.frequency.exponentialRampToValueAtTime(c,a+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate$1([range$1(0)],MembraneSynth$2.prototype,"octaves",void 0);__decorate$1([timeRange$1(0)],MembraneSynth$2.prototype,"pitchDecay",void 0);class NoiseSynth$1 extends Instrument$1{constructor(){super(optionsFromArguments$1(NoiseSynth$1.getDefaults(),arguments)),this.name="NoiseSynth";const e=optionsFromArguments$1(NoiseSynth$1.getDefaults(),arguments);this.noise=new Noise(Object.assign({context:this.context},e.noise)),this.envelope=new AmplitudeEnvelope$1(Object.assign({context:this.context},e.envelope)),this.noise.chain(this.envelope,this.output)}static getDefaults(){return Object.assign(Instrument$1.getDefaults(),{envelope:Object.assign(omitFromObject$1(Envelope$1.getDefaults(),Object.keys(ToneAudioNode$1.getDefaults())),{decay:.1,sustain:0}),noise:Object.assign(omitFromObject$1(Noise.getDefaults(),Object.keys(Source$1.getDefaults())),{type:"white"})})}triggerAttack(e,s=1){return e=this.toSeconds(e),this.envelope.triggerAttack(e,s),this.noise.start(e),this.envelope.sustain===0&&this.noise.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay)),this}triggerRelease(e){return e=this.toSeconds(e),this.envelope.triggerRelease(e),this.noise.stop(e+this.toSeconds(this.envelope.release)),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",0),this._syncMethod("triggerRelease",0)),this}triggerAttackRelease(e,s,a=1){return s=this.toSeconds(s),e=this.toSeconds(e),this.triggerAttack(s,a),this.triggerRelease(s+e),this}dispose(){return super.dispose(),this.noise.dispose(),this.envelope.dispose(),this}}const workletContext$1=new Set;function addToWorklet$1(o){workletContext$1.add(o)}function registerProcessor$1(o,e){const s=`registerProcessor("${o}", ${e})`;workletContext$1.add(s)}function getWorkletGlobalScope(){return Array.from(workletContext$1).join(` -`)}class ToneAudioWorklet extends ToneAudioNode$1{constructor(e){super(e),this.name="ToneAudioWorklet",this.workletOptions={},this.onprocessorerror=noOp$1;const s=URL.createObjectURL(new Blob([getWorkletGlobalScope()],{type:"text/javascript"})),a=this._audioWorkletName();this._dummyGain=this.context.createGain(),this._dummyParam=this._dummyGain.gain,this.context.addAudioWorkletModule(s,a).then(()=>{this.disposed||(this._worklet=this.context.createAudioWorkletNode(a,this.workletOptions),this._worklet.onprocessorerror=this.onprocessorerror.bind(this),this.onReady(this._worklet))})}dispose(){return super.dispose(),this._dummyGain.disconnect(),this._worklet&&(this._worklet.port.postMessage("dispose"),this._worklet.disconnect()),this}}const toneAudioWorkletProcessor$1=` - /** - * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. - */ - class ToneAudioWorkletProcessor extends AudioWorkletProcessor { - - constructor(options) { - - super(options); - /** - * If the processor was disposed or not. Keep alive until it's disposed. - */ - this.disposed = false; - /** - * The number of samples in the processing block - */ - this.blockSize = 128; - /** - * the sample rate - */ - this.sampleRate = sampleRate; - - this.port.onmessage = (event) => { - // when it receives a dispose - if (event.data === "dispose") { - this.disposed = true; - } - }; - } - } -`;addToWorklet$1(toneAudioWorkletProcessor$1);const singleIOProcess$1=` - /** - * Abstract class for a single input/output processor. - * has a 'generate' function which processes one sample at a time - */ - class SingleIOProcessor extends ToneAudioWorkletProcessor { - - constructor(options) { - super(Object.assign(options, { - numberOfInputs: 1, - numberOfOutputs: 1 - })); - /** - * Holds the name of the parameter and a single value of that - * parameter at the current sample - * @type { [name: string]: number } - */ - this.params = {} - } - - /** - * Generate an output sample from the input sample and parameters - * @abstract - * @param input number - * @param channel number - * @param parameters { [name: string]: number } - * @returns number - */ - generate(){} - - /** - * Update the private params object with the - * values of the parameters at the given index - * @param parameters { [name: string]: Float32Array }, - * @param index number - */ - updateParams(parameters, index) { - for (const paramName in parameters) { - const param = parameters[paramName]; - if (param.length > 1) { - this.params[paramName] = parameters[paramName][index]; - } else { - this.params[paramName] = parameters[paramName][0]; - } - } - } - - /** - * Process a single frame of the audio - * @param inputs Float32Array[][] - * @param outputs Float32Array[][] - */ - process(inputs, outputs, parameters) { - const input = inputs[0]; - const output = outputs[0]; - // get the parameter values - const channelCount = Math.max(input && input.length || 0, output.length); - for (let sample = 0; sample < this.blockSize; sample++) { - this.updateParams(parameters, sample); - for (let channel = 0; channel < channelCount; channel++) { - const inputSample = input && input.length ? input[channel][sample] : 0; - output[channel][sample] = this.generate(inputSample, channel, this.params); - } - } - return !this.disposed; - } - }; -`;addToWorklet$1(singleIOProcess$1);const delayLine$1=` - /** - * A multichannel buffer for use within an AudioWorkletProcessor as a delay line - */ - class DelayLine { - - constructor(size, channels) { - this.buffer = []; - this.writeHead = [] - this.size = size; - - // create the empty channels - for (let i = 0; i < channels; i++) { - this.buffer[i] = new Float32Array(this.size); - this.writeHead[i] = 0; - } - } - - /** - * Push a value onto the end - * @param channel number - * @param value number - */ - push(channel, value) { - this.writeHead[channel] += 1; - if (this.writeHead[channel] > this.size) { - this.writeHead[channel] = 0; - } - this.buffer[channel][this.writeHead[channel]] = value; - } - - /** - * Get the recorded value of the channel given the delay - * @param channel number - * @param delay number delay samples - */ - get(channel, delay) { - let readHead = this.writeHead[channel] - Math.floor(delay); - if (readHead < 0) { - readHead += this.size; - } - return this.buffer[channel][readHead]; - } - } -`;addToWorklet$1(delayLine$1);const workletName$3="feedback-comb-filter",feedbackCombFilter$1=` - class FeedbackCombFilterWorklet extends SingleIOProcessor { - - constructor(options) { - super(options); - this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2); - } - - static get parameterDescriptors() { - return [{ - name: "delayTime", - defaultValue: 0.1, - minValue: 0, - maxValue: 1, - automationRate: "k-rate" - }, { - name: "feedback", - defaultValue: 0.5, - minValue: 0, - maxValue: 0.9999, - automationRate: "k-rate" - }]; - } - - generate(input, channel, parameters) { - const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate); - this.delayLine.push(channel, input + delayedSample * parameters.feedback); - return delayedSample; - } - } -`;registerProcessor$1(workletName$3,feedbackCombFilter$1);class FeedbackCombFilter extends ToneAudioWorklet{constructor(){super(optionsFromArguments$1(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"])),this.name="FeedbackCombFilter";const e=optionsFromArguments$1(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"]);this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this.delayTime=new Param$1({context:this.context,value:e.delayTime,units:"time",minValue:0,maxValue:1,param:this._dummyParam,swappable:!0}),this.resonance=new Param$1({context:this.context,value:e.resonance,units:"normalRange",param:this._dummyParam,swappable:!0}),readOnly$2(this,["resonance","delayTime"])}_audioWorkletName(){return workletName$3}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{delayTime:.1,resonance:.5})}onReady(e){connectSeries$1(this.input,e,this.output);const s=e.parameters.get("delayTime");this.delayTime.setParam(s);const a=e.parameters.get("feedback");this.resonance.setParam(a)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.delayTime.dispose(),this.resonance.dispose(),this}}class OnePoleFilter extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(OnePoleFilter.getDefaults(),arguments,["frequency","type"])),this.name="OnePoleFilter";const e=optionsFromArguments$1(OnePoleFilter.getDefaults(),arguments,["frequency","type"]);this._frequency=e.frequency,this._type=e.type,this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this._createFilter()}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{frequency:880,type:"lowpass"})}_createFilter(){const e=this._filter,s=this.toFrequency(this._frequency),a=1/(2*Math.PI*s);if(this._type==="lowpass"){const c=1/(a*this.context.sampleRate),d=c-1;this._filter=this.context.createIIRFilter([c,0],[1,d])}else{const c=1/(a*this.context.sampleRate)-1;this._filter=this.context.createIIRFilter([1,-1],[1,c])}this.input.chain(this._filter,this.output),e&&this.context.setTimeout(()=>{this.disposed||(this.input.disconnect(e),e.disconnect())},this.blockTime)}get frequency(){return this._frequency}set frequency(e){this._frequency=e,this._createFilter()}get type(){return this._type}set type(e){this._type=e,this._createFilter()}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let d=0;da.voice===e);this._activeVoices.splice(s,1)}_getNextAvailableVoice(){if(this._availableVoices.length)return this._availableVoices.shift();if(this._voices.lengthMath.ceil(this._averageActiveVoices+1)){const e=this._availableVoices.shift(),s=this._voices.indexOf(e);this._voices.splice(s,1),this.context.isOffline||e.dispose()}}_triggerAttack(e,s,a){e.forEach(c=>{const d=new MidiClass(this.context,c).toMidi(),_=this._getNextAvailableVoice();_&&(_.triggerAttack(c,s,a),this._activeVoices.push({midi:d,voice:_,released:!1}),this.log("triggerAttack",c,s))})}_triggerRelease(e,s){e.forEach(a=>{const c=new MidiClass(this.context,a).toMidi(),d=this._activeVoices.find(({midi:_,released:b})=>_===c&&!b);d&&(d.voice.triggerRelease(s),d.released=!0,this.log("triggerRelease",a,s))})}_scheduleEvent(e,s,a,c){assert$1(!this.disposed,"Synth was already disposed"),a<=this.now()?e==="attack"?this._triggerAttack(s,a,c):this._triggerRelease(s,a):this.context.setTimeout(()=>{this._scheduleEvent(e,s,a,c)},a-this.now())}triggerAttack(e,s,a){Array.isArray(e)||(e=[e]);const c=this.toSeconds(s);return this._scheduleEvent("attack",e,c,a),this}triggerRelease(e,s){Array.isArray(e)||(e=[e]);const a=this.toSeconds(s);return this._scheduleEvent("release",e,a),this}triggerAttackRelease(e,s,a,c){const d=this.toSeconds(a);if(this.triggerAttack(e,d,c),isArray$1(s)){assert$1(isArray$1(e),"If the duration is an array, the notes must also be an array"),e=e;for(let _=0;_0,"The duration must be greater than 0"),this.triggerRelease(e[_],d+k)}}else{const _=this.toSeconds(s);assert$1(_>0,"The duration must be greater than 0"),this.triggerRelease(e,d+_)}return this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}set(e){const s=omitFromObject$1(e,["onsilence","context"]);return this.options=deepMerge$1(this.options,s),this._voices.forEach(a=>a.set(s)),this._dummyVoice.set(s),this}get(){return this._dummyVoice.get()}releaseAll(e){const s=this.toSeconds(e);return this._activeVoices.forEach(({voice:a})=>{a.triggerRelease(s)}),this}dispose(){return super.dispose(),this._dummyVoice.dispose(),this._voices.forEach(e=>e.dispose()),this._activeVoices=[],this._availableVoices=[],this.context.clearInterval(this._gcTimeout),this}}class Sampler$2 extends Instrument$1{constructor(){super(optionsFromArguments$1(Sampler$2.getDefaults(),arguments,["urls","onload","baseUrl"],"urls")),this.name="Sampler",this._activeSources=new Map;const e=optionsFromArguments$1(Sampler$2.getDefaults(),arguments,["urls","onload","baseUrl"],"urls"),s={};Object.keys(e.urls).forEach(a=>{const c=parseInt(a,10);if(assert$1(isNote$3(a)||isNumber$1(c)&&isFinite(c),`url key is neither a note or midi pitch: ${a}`),isNote$3(a)){const d=new FrequencyClass$1(this.context,a).toMidi();s[d]=e.urls[a]}else isNumber$1(c)&&isFinite(c)&&(s[c]=e.urls[c])}),this._buffers=new ToneAudioBuffers$1({urls:s,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.attack=e.attack,this.release=e.release,this.curve=e.curve,this._buffers.loaded&&Promise.resolve().then(e.onload)}static getDefaults(){return Object.assign(Instrument$1.getDefaults(),{attack:0,baseUrl:"",curve:"exponential",onload:noOp$1,onerror:noOp$1,release:.1,urls:{}})}_findClosest(e){let a=0;for(;a<96;){if(this._buffers.has(e+a))return-a;if(this._buffers.has(e-a))return a;a++}throw new Error(`No available buffers for note: ${e}`)}triggerAttack(e,s,a=1){return this.log("triggerAttack",e,s,a),Array.isArray(e)||(e=[e]),e.forEach(c=>{const d=ftomf$1(new FrequencyClass$1(this.context,c).toFrequency()),_=Math.round(d),b=d-_,k=this._findClosest(_),$=_-k,j=this._buffers.get($),_e=intervalToFrequencyRatio$1(k+b),et=new ToneBufferSource$1({url:j,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:_e}).connect(this.output);et.start(s,0,j.duration/_e,a),isArray$1(this._activeSources.get(_))||this._activeSources.set(_,[]),this._activeSources.get(_).push(et),et.onended=()=>{if(this._activeSources&&this._activeSources.has(_)){const tt=this._activeSources.get(_),nt=tt.indexOf(et);nt!==-1&&tt.splice(nt,1)}}}),this}triggerRelease(e,s){return this.log("triggerRelease",e,s),Array.isArray(e)||(e=[e]),e.forEach(a=>{const c=new FrequencyClass$1(this.context,a).toMidi();if(this._activeSources.has(c)&&this._activeSources.get(c).length){const d=this._activeSources.get(c);s=this.toSeconds(s),d.forEach(_=>{_.stop(s)}),this._activeSources.set(c,[])}}),this}releaseAll(e){const s=this.toSeconds(e);return this._activeSources.forEach(a=>{for(;a.length;)a.shift().stop(s)}),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}triggerAttackRelease(e,s,a,c=1){const d=this.toSeconds(a);return this.triggerAttack(e,d,c),isArray$1(s)?(assert$1(isArray$1(e),"notes must be an array when duration is array"),e.forEach((_,b)=>{const k=s[Math.min(b,s.length-1)];this.triggerRelease(_,d+this.toSeconds(k))})):this.triggerRelease(e,d+this.toSeconds(s)),this}add(e,s,a){if(assert$1(isNote$3(e)||isFinite(e),`note must be a pitch or midi: ${e}`),isNote$3(e)){const c=new FrequencyClass$1(this.context,e).toMidi();this._buffers.add(c,s,a)}else this._buffers.add(e,s,a);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(s=>s.dispose())}),this._activeSources.clear(),this}}__decorate$1([timeRange$1(0)],Sampler$2.prototype,"attack",void 0);__decorate$1([timeRange$1(0)],Sampler$2.prototype,"release",void 0);class ToneEvent extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(ToneEvent.getDefaults(),arguments,["callback","value"])),this.name="ToneEvent",this._state=new StateTimeline$1("stopped"),this._startOffset=0;const e=optionsFromArguments$1(ToneEvent.getDefaults(),arguments,["callback","value"]);this._loop=e.loop,this.callback=e.callback,this.value=e.value,this._loopStart=this.toTicks(e.loopStart),this._loopEnd=this.toTicks(e.loopEnd),this._playbackRate=e.playbackRate,this._probability=e.probability,this._humanize=e.humanize,this.mute=e.mute,this._playbackRate=e.playbackRate,this._state.increasing=!0,this._rescheduleEvents()}static getDefaults(){return Object.assign(ToneWithContext$1.getDefaults(),{callback:noOp$1,humanize:!1,loop:!1,loopEnd:"1m",loopStart:0,mute:!1,playbackRate:1,probability:1,value:null})}_rescheduleEvents(e=-1){this._state.forEachFrom(e,s=>{let a;if(s.state==="started"){s.id!==-1&&this.context.transport.clear(s.id);const c=s.time+Math.round(this.startOffset/this._playbackRate);if(this._loop===!0||isNumber$1(this._loop)&&this._loop>1){a=1/0,isNumber$1(this._loop)&&(a=this._loop*this._getLoopDuration());const d=this._state.getAfter(c);d!==null&&(a=Math.min(a,d.time-c)),a!==1/0&&(this._state.setStateAtTime("stopped",c+a+1,{id:-1}),a=new TicksClass$1(this.context,a));const _=new TicksClass$1(this.context,this._getLoopDuration());s.id=this.context.transport.scheduleRepeat(this._tick.bind(this),_,new TicksClass$1(this.context,c),a)}else s.id=this.context.transport.schedule(this._tick.bind(this),new TicksClass$1(this.context,c))}})}get state(){return this._state.getValueAtTime(this.context.transport.ticks)}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e}get probability(){return this._probability}set probability(e){this._probability=e}get humanize(){return this._humanize}set humanize(e){this._humanize=e}start(e){const s=this.toTicks(e);return this._state.getValueAtTime(s)==="stopped"&&(this._state.add({id:-1,state:"started",time:s}),this._rescheduleEvents(s)),this}stop(e){this.cancel(e);const s=this.toTicks(e);if(this._state.getValueAtTime(s)==="started"){this._state.setStateAtTime("stopped",s,{id:-1});const a=this._state.getBefore(s);let c=s;a!==null&&(c=a.time),this._rescheduleEvents(c)}return this}cancel(e){e=defaultArg$1(e,-1/0);const s=this.toTicks(e);return this._state.forEachFrom(s,a=>{this.context.transport.clear(a.id)}),this._state.cancel(s),this}_tick(e){const s=this.context.transport.getTicksAtTime(e);if(!this.mute&&this._state.getValueAtTime(s)==="started"){if(this.probability<1&&Math.random()>this.probability)return;if(this.humanize){let a=.02;isBoolean$1(this.humanize)||(a=this.toSeconds(this.humanize)),e+=(Math.random()*2-1)*a}this.callback(e,this.value)}}_getLoopDuration(){return Math.round((this._loopEnd-this._loopStart)/this._playbackRate)}get loop(){return this._loop}set loop(e){this._loop=e,this._rescheduleEvents()}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._rescheduleEvents()}get loopEnd(){return new TicksClass$1(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._rescheduleEvents()}get loopStart(){return new TicksClass$1(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._rescheduleEvents()}get progress(){if(this._loop){const e=this.context.transport.ticks,s=this._state.get(e);if(s!==null&&s.state==="started"){const a=this._getLoopDuration();return(e-s.time)%a/a}else return 0}else return 0}dispose(){return super.dispose(),this.cancel(),this._state.dispose(),this}}class Loop extends ToneWithContext$1{constructor(){super(optionsFromArguments$1(Loop.getDefaults(),arguments,["callback","interval"])),this.name="Loop";const e=optionsFromArguments$1(Loop.getDefaults(),arguments,["callback","interval"]);this._event=new ToneEvent({context:this.context,callback:this._tick.bind(this),loop:!0,loopEnd:e.interval,playbackRate:e.playbackRate,probability:e.probability}),this.callback=e.callback,this.iterations=e.iterations}static getDefaults(){return Object.assign(ToneWithContext$1.getDefaults(),{interval:"4n",callback:noOp$1,playbackRate:1,iterations:1/0,probability:1,mute:!1,humanize:!1})}start(e){return this._event.start(e),this}stop(e){return this._event.stop(e),this}cancel(e){return this._event.cancel(e),this}_tick(e){this.callback(e)}get state(){return this._event.state}get progress(){return this._event.progress}get interval(){return this._event.loopEnd}set interval(e){this._event.loopEnd=e}get playbackRate(){return this._event.playbackRate}set playbackRate(e){this._event.playbackRate=e}get humanize(){return this._event.humanize}set humanize(e){this._event.humanize=e}get probability(){return this._event.probability}set probability(e){this._event.probability=e}get mute(){return this._event.mute}set mute(e){this._event.mute=e}get iterations(){return this._event.loop===!0?1/0:this._event.loop}set iterations(e){e===1/0?this._event.loop=!0:this._event.loop=e}dispose(){return super.dispose(),this._event.dispose(),this}}class Part extends ToneEvent{constructor(){super(optionsFromArguments$1(Part.getDefaults(),arguments,["callback","events"])),this.name="Part",this._state=new StateTimeline$1("stopped"),this._events=new Set;const e=optionsFromArguments$1(Part.getDefaults(),arguments,["callback","events"]);this._state.increasing=!0,e.events.forEach(s=>{isArray$1(s)?this.add(s[0],s[1]):this.add(s)})}static getDefaults(){return Object.assign(ToneEvent.getDefaults(),{events:[]})}start(e,s){const a=this.toTicks(e);if(this._state.getValueAtTime(a)!=="started"){s=defaultArg$1(s,this._loop?this._loopStart:0),this._loop?s=defaultArg$1(s,this._loopStart):s=defaultArg$1(s,0);const c=this.toTicks(s);this._state.add({id:-1,offset:c,state:"started",time:a}),this._forEach(d=>{this._startNote(d,a,c)})}return this}_startNote(e,s,a){s-=a,this._loop?e.startOffset>=this._loopStart&&e.startOffset=a&&(e.loop=!1,e.start(new TicksClass$1(this.context,s))):e.startOffset>=a&&e.start(new TicksClass$1(this.context,s))}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e,this._forEach(s=>{s.startOffset+=this._startOffset})}stop(e){const s=this.toTicks(e);return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this._forEach(a=>{a.stop(e)}),this}at(e,s){const a=new TransportTimeClass$1(this.context,e).toTicks(),c=new TicksClass$1(this.context,1).toSeconds(),d=this._events.values();let _=d.next();for(;!_.done;){const b=_.value;if(Math.abs(a-b.startOffset){s.state==="started"?this._startNote(e,s.time,s.offset):e.stop(new TicksClass$1(this.context,s.time))})}remove(e,s){return isObject$1(e)&&e.hasOwnProperty("time")&&(s=e,e=s.time),e=this.toTicks(e),this._events.forEach(a=>{a.startOffset===e&&(isUndef$1(s)||isDefined$1(s)&&a.value===s)&&(this._events.delete(a),a.dispose())}),this}clear(){return this._forEach(e=>e.dispose()),this._events.clear(),this}cancel(e){return this._forEach(s=>s.cancel(e)),this._state.cancel(this.toTicks(e)),this}_forEach(e){return this._events&&this._events.forEach(s=>{s instanceof Part?s._forEach(e):e(s)}),this}_setAll(e,s){this._forEach(a=>{a[e]=s})}_tick(e,s){this.mute||this.callback(e,s)}_testLoopBoundries(e){this._loop&&(e.startOffset=this._loopEnd)?e.cancel(0):e.state==="stopped"&&this._restartEvent(e)}get probability(){return this._probability}set probability(e){this._probability=e,this._setAll("probability",e)}get humanize(){return this._humanize}set humanize(e){this._humanize=e,this._setAll("humanize",e)}get loop(){return this._loop}set loop(e){this._loop=e,this._forEach(s=>{s.loopStart=this.loopStart,s.loopEnd=this.loopEnd,s.loop=e,this._testLoopBoundries(s)})}get loopEnd(){return new TicksClass$1(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopEnd=e,this._testLoopBoundries(s)})}get loopStart(){return new TicksClass$1(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopStart=this.loopStart,this._testLoopBoundries(s)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._setAll("playbackRate",e)}get length(){return this._events.size}dispose(){return super.dispose(),this.clear(),this}}function*upPatternGen(o){let e=0;for(;e=0;)e=clampToArraySize(e,o),yield o[e],e--}function*infiniteGen(o,e){for(;;)yield*e(o)}function clampToArraySize(o,e){return clamp$1(o,0,e.length-1)}function*alternatingGenerator(o,e){let s=e?0:o.length-1;for(;;)s=clampToArraySize(s,o),yield o[s],e?(s++,s>=o.length-1&&(e=!1)):(s--,s<=0&&(e=!0))}function*jumpUp(o){let e=0,s=0;for(;e=0;)e=clampToArraySize(e,o),yield o[e],s++,e+=s%2?-2:1}function*randomGen(o){for(;;){const e=Math.floor(Math.random()*o.length);yield o[e]}}function*randomOnce(o){const e=[];for(let s=0;s0;){const s=e.splice(Math.floor(e.length*Math.random()),1),a=clampToArraySize(s[0],o);yield o[a]}}function*randomWalk(o){let e=Math.floor(Math.random()*o.length);for(;;)e===0?e++:e===o.length-1||Math.random()<.5?e--:e++,yield o[e]}function*PatternGenerator(o,e="up",s=0){switch(assert$1(o.length>0,"The array must have more than one value in it"),e){case"up":yield*infiniteGen(o,upPatternGen);case"down":yield*infiniteGen(o,downPatternGen);case"upDown":yield*alternatingGenerator(o,!0);case"downUp":yield*alternatingGenerator(o,!1);case"alternateUp":yield*infiniteGen(o,jumpUp);case"alternateDown":yield*infiniteGen(o,jumpDown);case"random":yield*randomGen(o);case"randomOnce":yield*infiniteGen(o,randomOnce);case"randomWalk":yield*randomWalk(o)}}class Pattern$3 extends Loop{constructor(){super(optionsFromArguments$1(Pattern$3.getDefaults(),arguments,["callback","values","pattern"])),this.name="Pattern";const e=optionsFromArguments$1(Pattern$3.getDefaults(),arguments,["callback","values","pattern"]);this.callback=e.callback,this._values=e.values,this._pattern=PatternGenerator(e.values,e.pattern),this._type=e.pattern}static getDefaults(){return Object.assign(Loop.getDefaults(),{pattern:"up",values:[],callback:noOp$1})}_tick(e){const s=this._pattern.next();this._value=s.value,this.callback(e,this._value)}get values(){return this._values}set values(e){this._values=e,this.pattern=this._type}get value(){return this._value}get pattern(){return this._type}set pattern(e){this._type=e,this._pattern=PatternGenerator(this._values,this._type)}}class Sequence extends ToneEvent{constructor(){super(optionsFromArguments$1(Sequence.getDefaults(),arguments,["callback","events","subdivision"])),this.name="Sequence",this._part=new Part({callback:this._seqCallback.bind(this),context:this.context}),this._events=[],this._eventsArray=[];const e=optionsFromArguments$1(Sequence.getDefaults(),arguments,["callback","events","subdivision"]);this._subdivision=this.toTicks(e.subdivision),this.events=e.events,this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.playbackRate=e.playbackRate,this.probability=e.probability,this.humanize=e.humanize,this.mute=e.mute,this.playbackRate=e.playbackRate}static getDefaults(){return Object.assign(omitFromObject$1(ToneEvent.getDefaults(),["value"]),{events:[],loop:!0,loopEnd:0,loopStart:0,subdivision:"8n"})}_seqCallback(e,s){s!==null&&this.callback(e,s)}get events(){return this._events}set events(e){this.clear(),this._eventsArray=e,this._events=this._createSequence(this._eventsArray),this._eventsUpdated()}start(e,s){return this._part.start(e,s&&this._indexTime(s)),this}stop(e){return this._part.stop(e),this}get subdivision(){return new TicksClass$1(this.context,this._subdivision).toSeconds()}_createSequence(e){return new Proxy(e,{get:(s,a)=>s[a],set:(s,a,c)=>(isString$1(a)&&isFinite(parseInt(a,10))&&isArray$1(c)?s[a]=this._createSequence(c):s[a]=c,this._eventsUpdated(),!0)})}_eventsUpdated(){this._part.clear(),this._rescheduleSequence(this._eventsArray,this._subdivision,this.startOffset),this.loopEnd=this.loopEnd}_rescheduleSequence(e,s,a){e.forEach((c,d)=>{const _=d*s+a;if(isArray$1(c))this._rescheduleSequence(c,s/c.length,_);else{const b=new TicksClass$1(this.context,_,"i").toSeconds();this._part.add(b,c)}})}_indexTime(e){return new TicksClass$1(this.context,e*this._subdivision+this.startOffset).toSeconds()}clear(){return this._part.clear(),this}dispose(){return super.dispose(),this._part.dispose(),this}get loop(){return this._part.loop}set loop(e){this._part.loop=e}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this._part.loopStart=this._indexTime(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,e===0?this._part.loopEnd=this._indexTime(this._eventsArray.length):this._part.loopEnd=this._indexTime(e)}get startOffset(){return this._part.startOffset}set startOffset(e){this._part.startOffset=e}get playbackRate(){return this._part.playbackRate}set playbackRate(e){this._part.playbackRate=e}get probability(){return this._part.probability}set probability(e){this._part.probability=e}get progress(){return this._part.progress}get humanize(){return this._part.humanize}set humanize(e){this._part.humanize=e}get length(){return this._part.length}}class CrossFade extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(CrossFade.getDefaults(),arguments,["fade"]))),this.name="CrossFade",this._panner=this.context.createStereoPanner(),this._split=this.context.createChannelSplitter(2),this._g2a=new GainToAudio({context:this.context}),this.a=new Gain$2({context:this.context,gain:0}),this.b=new Gain$2({context:this.context,gain:0}),this.output=new Gain$2({context:this.context}),this._internalChannels=[this.a,this.b];const e=optionsFromArguments$1(CrossFade.getDefaults(),arguments,["fade"]);this.fade=new Signal$1({context:this.context,units:"normalRange",value:e.fade}),readOnly$2(this,"fade"),this.context.getConstant(1).connect(this._panner),this._panner.connect(this._split),this._panner.channelCount=1,this._panner.channelCountMode="explicit",connect$1(this._split,this.a.gain,0),connect$1(this._split,this.b.gain,1),this.fade.chain(this._g2a,this._panner.pan),this.a.connect(this.output),this.b.connect(this.output)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{fade:.5})}dispose(){return super.dispose(),this.a.dispose(),this.b.dispose(),this.output.dispose(),this.fade.dispose(),this._g2a.dispose(),this._panner.disconnect(),this._split.disconnect(),this}}class Effect extends ToneAudioNode$1{constructor(e){super(e),this.name="Effect",this._dryWet=new CrossFade({context:this.context}),this.wet=this._dryWet.fade,this.effectSend=new Gain$2({context:this.context}),this.effectReturn=new Gain$2({context:this.context}),this.input=new Gain$2({context:this.context}),this.output=this._dryWet,this.input.fan(this._dryWet.a,this.effectSend),this.effectReturn.connect(this._dryWet.b),this.wet.setValueAtTime(e.wet,0),this._internalChannels=[this.effectReturn,this.effectSend],readOnly$2(this,"wet")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{wet:1})}connectEffect(e){return this._internalChannels.push(e),this.effectSend.chain(e,this.effectReturn),this}dispose(){return super.dispose(),this._dryWet.dispose(),this.effectSend.dispose(),this.effectReturn.dispose(),this.wet.dispose(),this}}class LFOEffect extends Effect{constructor(e){super(e),this.name="LFOEffect",this._lfo=new LFO({context:this.context,frequency:e.frequency,amplitude:e.depth}),this.depth=this._lfo.amplitude,this.frequency=this._lfo.frequency,this.type=e.type,readOnly$2(this,["frequency","depth"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:1,type:"sine",depth:1})}start(e){return this._lfo.start(e),this}stop(e){return this._lfo.stop(e),this}sync(){return this._lfo.sync(),this}unsync(){return this._lfo.unsync(),this}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class AutoFilter$1 extends LFOEffect{constructor(){super(optionsFromArguments$1(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"])),this.name="AutoFilter";const e=optionsFromArguments$1(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"]);this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.connectEffect(this.filter),this._lfo.connect(this.filter.frequency),this.octaves=e.octaves,this.baseFrequency=e.baseFrequency}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{baseFrequency:200,octaves:2.6,filter:{type:"lowpass",rolloff:-12,Q:1}})}get baseFrequency(){return this._lfo.min}set baseFrequency(e){this._lfo.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._lfo.max=this._lfo.min*Math.pow(2,e)}dispose(){return super.dispose(),this.filter.dispose(),this}}class Panner$1 extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(Panner$1.getDefaults(),arguments,["pan"]))),this.name="Panner",this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner;const e=optionsFromArguments$1(Panner$1.getDefaults(),arguments,["pan"]);this.pan=new Param$1({context:this.context,param:this._panner.pan,value:e.pan,minValue:-1,maxValue:1}),this._panner.channelCount=e.channelCount,this._panner.channelCountMode="explicit",readOnly$2(this,"pan")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}}class AutoPanner extends LFOEffect{constructor(){super(optionsFromArguments$1(AutoPanner.getDefaults(),arguments,["frequency"])),this.name="AutoPanner";const e=optionsFromArguments$1(AutoPanner.getDefaults(),arguments,["frequency"]);this._panner=new Panner$1({context:this.context,channelCount:e.channelCount}),this.connectEffect(this._panner),this._lfo.connect(this._panner.pan),this._lfo.min=-1,this._lfo.max=1}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{channelCount:1})}dispose(){return super.dispose(),this._panner.dispose(),this}}class Follower extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Follower.getDefaults(),arguments,["smoothing"])),this.name="Follower";const e=optionsFromArguments$1(Follower.getDefaults(),arguments,["smoothing"]);this._abs=this.input=new Abs({context:this.context}),this._lowpass=this.output=new OnePoleFilter({context:this.context,frequency:1/this.toSeconds(e.smoothing),type:"lowpass"}),this._abs.connect(this._lowpass),this._smoothing=e.smoothing}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{smoothing:.05})}get smoothing(){return this._smoothing}set smoothing(e){this._smoothing=e,this._lowpass.frequency=1/this.toSeconds(this.smoothing)}dispose(){return super.dispose(),this._abs.dispose(),this._lowpass.dispose(),this}}class AutoWah extends Effect{constructor(){super(optionsFromArguments$1(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"])),this.name="AutoWah";const e=optionsFromArguments$1(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"]);this._follower=new Follower({context:this.context,smoothing:e.follower}),this._sweepRange=new ScaleExp({context:this.context,min:0,max:1,exponent:.5}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this._inputBoost=new Gain$2({context:this.context}),this._bandpass=new Filter$1({context:this.context,rolloff:-48,frequency:0,Q:e.Q}),this._peaking=new Filter$1({context:this.context,type:"peaking"}),this._peaking.gain.value=e.gain,this.gain=this._peaking.gain,this.Q=this._bandpass.Q,this.effectSend.chain(this._inputBoost,this._follower,this._sweepRange),this._sweepRange.connect(this._bandpass.frequency),this._sweepRange.connect(this._peaking.frequency),this.effectSend.chain(this._bandpass,this._peaking,this.effectReturn),this._setSweepRange(),this.sensitivity=e.sensitivity,readOnly$2(this,["gain","Q"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{baseFrequency:100,octaves:6,sensitivity:0,Q:2,gain:2,follower:.2})}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._setSweepRange()}get follower(){return this._follower.smoothing}set follower(e){this._follower.smoothing=e}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){this._baseFrequency=this.toFrequency(e),this._setSweepRange()}get sensitivity(){return gainToDb$1(1/this._inputBoost.gain.value)}set sensitivity(e){this._inputBoost.gain.value=1/dbToGain$1(e)}_setSweepRange(){this._sweepRange.min=this._baseFrequency,this._sweepRange.max=Math.min(this._baseFrequency*Math.pow(2,this._octaves),this.context.sampleRate/2)}dispose(){return super.dispose(),this._follower.dispose(),this._sweepRange.dispose(),this._bandpass.dispose(),this._peaking.dispose(),this._inputBoost.dispose(),this}}const workletName$2="bit-crusher",bitCrusherWorklet$1=` - class BitCrusherWorklet extends SingleIOProcessor { - - static get parameterDescriptors() { - return [{ - name: "bits", - defaultValue: 12, - minValue: 1, - maxValue: 16, - automationRate: 'k-rate' - }]; - } - - generate(input, _channel, parameters) { - const step = Math.pow(0.5, parameters.bits - 1); - const val = step * Math.floor(input / step + 0.5); - return val; - } - } -`;registerProcessor$1(workletName$2,bitCrusherWorklet$1);class BitCrusher extends Effect{constructor(){super(optionsFromArguments$1(BitCrusher.getDefaults(),arguments,["bits"])),this.name="BitCrusher";const e=optionsFromArguments$1(BitCrusher.getDefaults(),arguments,["bits"]);this._bitCrusherWorklet=new BitCrusherWorklet({context:this.context,bits:e.bits}),this.connectEffect(this._bitCrusherWorklet),this.bits=this._bitCrusherWorklet.bits}static getDefaults(){return Object.assign(Effect.getDefaults(),{bits:4})}dispose(){return super.dispose(),this._bitCrusherWorklet.dispose(),this}}class BitCrusherWorklet extends ToneAudioWorklet{constructor(){super(optionsFromArguments$1(BitCrusherWorklet.getDefaults(),arguments)),this.name="BitCrusherWorklet";const e=optionsFromArguments$1(BitCrusherWorklet.getDefaults(),arguments);this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this.bits=new Param$1({context:this.context,value:e.bits,units:"positive",minValue:1,maxValue:16,param:this._dummyParam,swappable:!0})}static getDefaults(){return Object.assign(ToneAudioWorklet.getDefaults(),{bits:12})}_audioWorkletName(){return workletName$2}onReady(e){connectSeries$1(this.input,e,this.output);const s=e.parameters.get("bits");this.bits.setParam(s)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.bits.dispose(),this}}class Chebyshev extends Effect{constructor(){super(optionsFromArguments$1(Chebyshev.getDefaults(),arguments,["order"])),this.name="Chebyshev";const e=optionsFromArguments$1(Chebyshev.getDefaults(),arguments,["order"]);this._shaper=new WaveShaper$1({context:this.context,length:4096}),this._order=e.order,this.connectEffect(this._shaper),this.order=e.order,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{order:1,oversample:"none"})}_getCoefficient(e,s,a){return a.has(s)||(s===0?a.set(s,0):s===1?a.set(s,e):a.set(s,2*e*this._getCoefficient(e,s-1,a)-this._getCoefficient(e,s-2,a))),a.get(s)}get order(){return this._order}set order(e){this._order=e,this._shaper.setMap(s=>this._getCoefficient(s,e,new Map))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class Split extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Split.getDefaults(),arguments,["channels"])),this.name="Split";const e=optionsFromArguments$1(Split.getDefaults(),arguments,["channels"]);this._splitter=this.input=this.output=this.context.createChannelSplitter(e.channels),this._internalChannels=[this._splitter]}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._splitter.disconnect(),this}}class Merge extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Merge.getDefaults(),arguments,["channels"])),this.name="Merge";const e=optionsFromArguments$1(Merge.getDefaults(),arguments,["channels"]);this._merger=this.output=this.input=this.context.createChannelMerger(e.channels)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._merger.disconnect(),this}}class StereoEffect extends ToneAudioNode$1{constructor(e){super(e),this.name="StereoEffect",this.input=new Gain$2({context:this.context}),this.input.channelCount=2,this.input.channelCountMode="explicit",this._dryWet=this.output=new CrossFade({context:this.context,fade:e.wet}),this.wet=this._dryWet.fade,this._split=new Split({context:this.context,channels:2}),this._merge=new Merge({context:this.context,channels:2}),this.input.connect(this._split),this.input.connect(this._dryWet.a),this._merge.connect(this._dryWet.b),readOnly$2(this,["wet"])}connectEffectLeft(...e){this._split.connect(e[0],0,0),connectSeries$1(...e),connect$1(e[e.length-1],this._merge,0,0)}connectEffectRight(...e){this._split.connect(e[0],1,0),connectSeries$1(...e),connect$1(e[e.length-1],this._merge,0,1)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{wet:1})}dispose(){return super.dispose(),this._dryWet.dispose(),this._split.dispose(),this._merge.dispose(),this}}class StereoFeedbackEffect extends StereoEffect{constructor(e){super(e),this.feedback=new Signal$1({context:this.context,value:e.feedback,units:"normalRange"}),this._feedbackL=new Gain$2({context:this.context}),this._feedbackR=new Gain$2({context:this.context}),this._feedbackSplit=new Split({context:this.context,channels:2}),this._feedbackMerge=new Merge({context:this.context,channels:2}),this._merge.connect(this._feedbackSplit),this._feedbackMerge.connect(this._split),this._feedbackSplit.connect(this._feedbackL,0,0),this._feedbackL.connect(this._feedbackMerge,0,0),this._feedbackSplit.connect(this._feedbackR,1,0),this._feedbackR.connect(this._feedbackMerge,0,1),this.feedback.fan(this._feedbackL.gain,this._feedbackR.gain),readOnly$2(this,["feedback"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{feedback:.5})}dispose(){return super.dispose(),this.feedback.dispose(),this._feedbackL.dispose(),this._feedbackR.dispose(),this._feedbackSplit.dispose(),this._feedbackMerge.dispose(),this}}class Chorus extends StereoFeedbackEffect{constructor(){super(optionsFromArguments$1(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"])),this.name="Chorus";const e=optionsFromArguments$1(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"]);this._depth=e.depth,this._delayTime=e.delayTime/1e3,this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._delayNodeL=new Delay({context:this.context}),this._delayNodeR=new Delay({context:this.context}),this.frequency=this._lfoL.frequency,readOnly$2(this,["frequency"]),this._lfoL.frequency.connect(this._lfoR.frequency),this.connectEffectLeft(this._delayNodeL),this.connectEffectRight(this._delayNodeR),this._lfoL.connect(this._delayNodeL.delayTime),this._lfoR.connect(this._delayNodeR.delayTime),this.depth=this._depth,this.type=e.type,this.spread=e.spread}static getDefaults(){return Object.assign(StereoFeedbackEffect.getDefaults(),{frequency:1.5,delayTime:3.5,depth:.7,type:"sine",spread:180,feedback:0,wet:.5})}get depth(){return this._depth}set depth(e){this._depth=e;const s=this._delayTime*e;this._lfoL.min=Math.max(this._delayTime-s,0),this._lfoL.max=this._delayTime+s,this._lfoR.min=Math.max(this._delayTime-s,0),this._lfoR.max=this._delayTime+s}get delayTime(){return this._delayTime*1e3}set delayTime(e){this._delayTime=e/1e3,this.depth=this._depth}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._delayNodeL.dispose(),this._delayNodeR.dispose(),this.frequency.dispose(),this}}class Distortion extends Effect{constructor(){super(optionsFromArguments$1(Distortion.getDefaults(),arguments,["distortion"])),this.name="Distortion";const e=optionsFromArguments$1(Distortion.getDefaults(),arguments,["distortion"]);this._shaper=new WaveShaper$1({context:this.context,length:4096}),this._distortion=e.distortion,this.connectEffect(this._shaper),this.distortion=e.distortion,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{distortion:.4,oversample:"none"})}get distortion(){return this._distortion}set distortion(e){this._distortion=e;const s=e*100,a=Math.PI/180;this._shaper.setMap(c=>Math.abs(c)<.001?0:(3+s)*c*20*a/(Math.PI+s*Math.abs(c)))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class FeedbackEffect extends Effect{constructor(e){super(e),this.name="FeedbackEffect",this._feedbackGain=new Gain$2({context:this.context,gain:e.feedback,units:"normalRange"}),this.feedback=this._feedbackGain.gain,readOnly$2(this,"feedback"),this.effectReturn.chain(this._feedbackGain,this.effectSend)}static getDefaults(){return Object.assign(Effect.getDefaults(),{feedback:.125})}dispose(){return super.dispose(),this._feedbackGain.dispose(),this.feedback.dispose(),this}}class FeedbackDelay extends FeedbackEffect{constructor(){super(optionsFromArguments$1(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="FeedbackDelay";const e=optionsFromArguments$1(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"]);this._delayNode=new Delay({context:this.context,delayTime:e.delayTime,maxDelay:e.maxDelay}),this.delayTime=this._delayNode.delayTime,this.connectEffect(this._delayNode),readOnly$2(this,"delayTime")}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._delayNode.dispose(),this.delayTime.dispose(),this}}class PhaseShiftAllpass extends ToneAudioNode$1{constructor(e){super(e),this.name="PhaseShiftAllpass",this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this.offset90=new Gain$2({context:this.context});const s=[.6923878,.9360654322959,.988229522686,.9987488452737],a=[.4021921162426,.856171088242,.9722909545651,.9952884791278];this._bank0=this._createAllPassFilterBank(s),this._bank1=this._createAllPassFilterBank(a),this._oneSampleDelay=this.context.createIIRFilter([0,1],[1,0]),connectSeries$1(this.input,...this._bank0,this._oneSampleDelay,this.output),connectSeries$1(this.input,...this._bank1,this.offset90)}_createAllPassFilterBank(e){return e.map(a=>{const c=[[a*a,0,-1],[1,0,-(a*a)]];return this.context.createIIRFilter(c[0],c[1])})}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.offset90.dispose(),this._bank0.forEach(e=>e.disconnect()),this._bank1.forEach(e=>e.disconnect()),this._oneSampleDelay.disconnect(),this}}class FrequencyShifter extends Effect{constructor(){super(optionsFromArguments$1(FrequencyShifter.getDefaults(),arguments,["frequency"])),this.name="FrequencyShifter";const e=optionsFromArguments$1(FrequencyShifter.getDefaults(),arguments,["frequency"]);this.frequency=new Signal$1({context:this.context,units:"frequency",value:e.frequency,minValue:-this.context.sampleRate/2,maxValue:this.context.sampleRate/2}),this._sine=new ToneOscillatorNode$1({context:this.context,type:"sine"}),this._cosine=new Oscillator$1({context:this.context,phase:-90,type:"sine"}),this._sineMultiply=new Multiply$1({context:this.context}),this._cosineMultiply=new Multiply$1({context:this.context}),this._negate=new Negate({context:this.context}),this._add=new Add({context:this.context}),this._phaseShifter=new PhaseShiftAllpass({context:this.context}),this.effectSend.connect(this._phaseShifter),this.frequency.fan(this._sine.frequency,this._cosine.frequency),this._phaseShifter.offset90.connect(this._cosineMultiply),this._cosine.connect(this._cosineMultiply.factor),this._phaseShifter.connect(this._sineMultiply),this._sine.connect(this._sineMultiply.factor),this._sineMultiply.connect(this._negate),this._cosineMultiply.connect(this._add),this._negate.connect(this._add.addend),this._add.connect(this.effectReturn);const s=this.immediate();this._sine.start(s),this._cosine.start(s)}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:0})}dispose(){return super.dispose(),this.frequency.dispose(),this._add.dispose(),this._cosine.dispose(),this._cosineMultiply.dispose(),this._negate.dispose(),this._phaseShifter.dispose(),this._sine.dispose(),this._sineMultiply.dispose(),this}}const combFilterTunings=[1557/44100,1617/44100,1491/44100,1422/44100,1277/44100,1356/44100,1188/44100,1116/44100],allpassFilterFrequencies=[225,556,441,341];class Freeverb extends StereoEffect{constructor(){super(optionsFromArguments$1(Freeverb.getDefaults(),arguments,["roomSize","dampening"])),this.name="Freeverb",this._combFilters=[],this._allpassFiltersL=[],this._allpassFiltersR=[];const e=optionsFromArguments$1(Freeverb.getDefaults(),arguments,["roomSize","dampening"]);this.roomSize=new Signal$1({context:this.context,value:e.roomSize,units:"normalRange"}),this._allpassFiltersL=allpassFilterFrequencies.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._allpassFiltersR=allpassFilterFrequencies.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._combFilters=combFilterTunings.map((s,a)=>{const c=new LowpassCombFilter({context:this.context,dampening:e.dampening,delayTime:s});return as.dampening=e)}dispose(){return super.dispose(),this._allpassFiltersL.forEach(e=>e.disconnect()),this._allpassFiltersR.forEach(e=>e.disconnect()),this._combFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this}}const combFilterDelayTimes=[1687/25e3,1601/25e3,2053/25e3,2251/25e3],combFilterResonances=[.773,.802,.753,.733],allpassFilterFreqs=[347,113,37];class JCReverb extends StereoEffect{constructor(){super(optionsFromArguments$1(JCReverb.getDefaults(),arguments,["roomSize"])),this.name="JCReverb",this._allpassFilters=[],this._feedbackCombFilters=[];const e=optionsFromArguments$1(JCReverb.getDefaults(),arguments,["roomSize"]);this.roomSize=new Signal$1({context:this.context,value:e.roomSize,units:"normalRange"}),this._scaleRoomSize=new Scale({context:this.context,min:-.733,max:.197}),this._allpassFilters=allpassFilterFreqs.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._feedbackCombFilters=combFilterDelayTimes.map((s,a)=>{const c=new FeedbackCombFilter({context:this.context,delayTime:s});return this._scaleRoomSize.connect(c.resonance),c.resonance.value=combFilterResonances[a],ae.disconnect()),this._feedbackCombFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this._scaleRoomSize.dispose(),this}}class StereoXFeedbackEffect extends StereoFeedbackEffect{constructor(e){super(e),this._feedbackL.disconnect(),this._feedbackL.connect(this._feedbackMerge,0,1),this._feedbackR.disconnect(),this._feedbackR.connect(this._feedbackMerge,0,0),readOnly$2(this,["feedback"])}}class PingPongDelay extends StereoXFeedbackEffect{constructor(){super(optionsFromArguments$1(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="PingPongDelay";const e=optionsFromArguments$1(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"]);this._leftDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightPreDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this.delayTime=new Signal$1({context:this.context,units:"time",value:e.delayTime}),this.connectEffectLeft(this._leftDelay),this.connectEffectRight(this._rightPreDelay,this._rightDelay),this.delayTime.fan(this._leftDelay.delayTime,this._rightDelay.delayTime,this._rightPreDelay.delayTime),this._feedbackL.disconnect(),this._feedbackL.connect(this._rightDelay),readOnly$2(this,["delayTime"])}static getDefaults(){return Object.assign(StereoXFeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._leftDelay.dispose(),this._rightDelay.dispose(),this._rightPreDelay.dispose(),this.delayTime.dispose(),this}}class PitchShift extends FeedbackEffect{constructor(){super(optionsFromArguments$1(PitchShift.getDefaults(),arguments,["pitch"])),this.name="PitchShift";const e=optionsFromArguments$1(PitchShift.getDefaults(),arguments,["pitch"]);this._frequency=new Signal$1({context:this.context}),this._delayA=new Delay({maxDelay:1,context:this.context}),this._lfoA=new LFO({context:this.context,min:0,max:.1,type:"sawtooth"}).connect(this._delayA.delayTime),this._delayB=new Delay({maxDelay:1,context:this.context}),this._lfoB=new LFO({context:this.context,min:0,max:.1,type:"sawtooth",phase:180}).connect(this._delayB.delayTime),this._crossFade=new CrossFade({context:this.context}),this._crossFadeLFO=new LFO({context:this.context,min:0,max:1,type:"triangle",phase:90}).connect(this._crossFade.fade),this._feedbackDelay=new Delay({delayTime:e.delayTime,context:this.context}),this.delayTime=this._feedbackDelay.delayTime,readOnly$2(this,"delayTime"),this._pitch=e.pitch,this._windowSize=e.windowSize,this._delayA.connect(this._crossFade.a),this._delayB.connect(this._crossFade.b),this._frequency.fan(this._lfoA.frequency,this._lfoB.frequency,this._crossFadeLFO.frequency),this.effectSend.fan(this._delayA,this._delayB),this._crossFade.chain(this._feedbackDelay,this.effectReturn);const s=this.now();this._lfoA.start(s),this._lfoB.start(s),this._crossFadeLFO.start(s),this.windowSize=this._windowSize}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{pitch:0,windowSize:.1,delayTime:0,feedback:0})}get pitch(){return this._pitch}set pitch(e){this._pitch=e;let s=0;e<0?(this._lfoA.min=0,this._lfoA.max=this._windowSize,this._lfoB.min=0,this._lfoB.max=this._windowSize,s=intervalToFrequencyRatio$1(e-1)+1):(this._lfoA.min=this._windowSize,this._lfoA.max=0,this._lfoB.min=this._windowSize,this._lfoB.max=0,s=intervalToFrequencyRatio$1(e)-1),this._frequency.value=s*(1.2/this._windowSize)}get windowSize(){return this._windowSize}set windowSize(e){this._windowSize=this.toSeconds(e),this.pitch=this._pitch}dispose(){return super.dispose(),this._frequency.dispose(),this._delayA.dispose(),this._delayB.dispose(),this._lfoA.dispose(),this._lfoB.dispose(),this._crossFade.dispose(),this._crossFadeLFO.dispose(),this._feedbackDelay.dispose(),this}}class Phaser extends StereoEffect{constructor(){super(optionsFromArguments$1(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"])),this.name="Phaser";const e=optionsFromArguments$1(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"]);this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this.Q=new Signal$1({context:this.context,value:e.Q,units:"positive"}),this._filtersL=this._makeFilters(e.stages,this._lfoL),this._filtersR=this._makeFilters(e.stages,this._lfoR),this.frequency=this._lfoL.frequency,this.frequency.value=e.frequency,this.connectEffectLeft(...this._filtersL),this.connectEffectRight(...this._filtersR),this._lfoL.frequency.connect(this._lfoR.frequency),this.baseFrequency=e.baseFrequency,this.octaves=e.octaves,this._lfoL.start(),this._lfoR.start(),readOnly$2(this,["frequency","Q"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:.5,octaves:3,stages:10,Q:10,baseFrequency:350})}_makeFilters(e,s){const a=[];for(let c=0;ce.disconnect()),this._filtersR.forEach(e=>e.disconnect()),this.frequency.dispose(),this}}class Reverb extends Effect{constructor(){super(optionsFromArguments$1(Reverb.getDefaults(),arguments,["decay"])),this.name="Reverb",this._convolver=this.context.createConvolver(),this.ready=Promise.resolve();const e=optionsFromArguments$1(Reverb.getDefaults(),arguments,["decay"]);this._decay=e.decay,this._preDelay=e.preDelay,this.generate(),this.connectEffect(this._convolver)}static getDefaults(){return Object.assign(Effect.getDefaults(),{decay:1.5,preDelay:.01})}get decay(){return this._decay}set decay(e){e=this.toSeconds(e),assertRange$1(e,.001),this._decay=e,this.generate()}get preDelay(){return this._preDelay}set preDelay(e){e=this.toSeconds(e),assertRange$1(e,0),this._preDelay=e,this.generate()}generate(){return __awaiter$5(this,void 0,void 0,function*(){const e=this.ready,s=new OfflineContext$1(2,this._decay+this._preDelay,this.context.sampleRate),a=new Noise({context:s}),c=new Noise({context:s}),d=new Merge({context:s});a.connect(d,0,0),c.connect(d,0,1);const _=new Gain$2({context:s}).toDestination();d.connect(_),a.start(0),c.start(0),_.gain.setValueAtTime(0,0),_.gain.setValueAtTime(1,this._preDelay),_.gain.exponentialApproachValueAtTime(0,this._preDelay,this.decay);const b=s.render();return this.ready=b.then(noOp$1),yield e,this._convolver.buffer=(yield b).get(),this})}dispose(){return super.dispose(),this._convolver.disconnect(),this}}class MidSideSplit extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MidSideSplit.getDefaults(),arguments)),this.name="MidSideSplit",this._split=this.input=new Split({channels:2,context:this.context}),this._midAdd=new Add({context:this.context}),this.mid=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._sideSubtract=new Subtract({context:this.context}),this.side=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._split.connect(this._midAdd,0),this._split.connect(this._midAdd.addend,1),this._split.connect(this._sideSubtract,0),this._split.connect(this._sideSubtract.subtrahend,1),this._midAdd.connect(this.mid),this._sideSubtract.connect(this.side)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midAdd.dispose(),this._sideSubtract.dispose(),this._split.dispose(),this}}class MidSideMerge extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MidSideMerge.getDefaults(),arguments)),this.name="MidSideMerge",this.mid=new Gain$2({context:this.context}),this.side=new Gain$2({context:this.context}),this._left=new Add({context:this.context}),this._leftMult=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._right=new Subtract({context:this.context}),this._rightMult=new Multiply$1({context:this.context,value:Math.SQRT1_2}),this._merge=this.output=new Merge({context:this.context}),this.mid.fan(this._left),this.side.connect(this._left.addend),this.mid.connect(this._right),this.side.connect(this._right.subtrahend),this._left.connect(this._leftMult),this._right.connect(this._rightMult),this._leftMult.connect(this._merge,0,0),this._rightMult.connect(this._merge,0,1)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._leftMult.dispose(),this._rightMult.dispose(),this._left.dispose(),this._right.dispose(),this}}class MidSideEffect extends Effect{constructor(e){super(e),this.name="MidSideEffect",this._midSideMerge=new MidSideMerge({context:this.context}),this._midSideSplit=new MidSideSplit({context:this.context}),this._midSend=this._midSideSplit.mid,this._sideSend=this._midSideSplit.side,this._midReturn=this._midSideMerge.mid,this._sideReturn=this._midSideMerge.side,this.effectSend.connect(this._midSideSplit),this._midSideMerge.connect(this.effectReturn)}connectEffectMid(...e){this._midSend.chain(...e,this._midReturn)}connectEffectSide(...e){this._sideSend.chain(...e,this._sideReturn)}dispose(){return super.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this._midSend.dispose(),this._sideSend.dispose(),this._midReturn.dispose(),this._sideReturn.dispose(),this}}class StereoWidener extends MidSideEffect{constructor(){super(optionsFromArguments$1(StereoWidener.getDefaults(),arguments,["width"])),this.name="StereoWidener";const e=optionsFromArguments$1(StereoWidener.getDefaults(),arguments,["width"]);this.width=new Signal$1({context:this.context,value:e.width,units:"normalRange"}),readOnly$2(this,["width"]),this._twoTimesWidthMid=new Multiply$1({context:this.context,value:2}),this._twoTimesWidthSide=new Multiply$1({context:this.context,value:2}),this._midMult=new Multiply$1({context:this.context}),this._twoTimesWidthMid.connect(this._midMult.factor),this.connectEffectMid(this._midMult),this._oneMinusWidth=new Subtract({context:this.context}),this._oneMinusWidth.connect(this._twoTimesWidthMid),connect$1(this.context.getConstant(1),this._oneMinusWidth),this.width.connect(this._oneMinusWidth.subtrahend),this._sideMult=new Multiply$1({context:this.context}),this.width.connect(this._twoTimesWidthSide),this._twoTimesWidthSide.connect(this._sideMult.factor),this.connectEffectSide(this._sideMult)}static getDefaults(){return Object.assign(MidSideEffect.getDefaults(),{width:.5})}dispose(){return super.dispose(),this.width.dispose(),this._midMult.dispose(),this._sideMult.dispose(),this._twoTimesWidthMid.dispose(),this._twoTimesWidthSide.dispose(),this._oneMinusWidth.dispose(),this}}class Tremolo extends StereoEffect{constructor(){super(optionsFromArguments$1(Tremolo.getDefaults(),arguments,["frequency","depth"])),this.name="Tremolo";const e=optionsFromArguments$1(Tremolo.getDefaults(),arguments,["frequency","depth"]);this._lfoL=new LFO({context:this.context,type:e.type,min:1,max:0}),this._lfoR=new LFO({context:this.context,type:e.type,min:1,max:0}),this._amplitudeL=new Gain$2({context:this.context}),this._amplitudeR=new Gain$2({context:this.context}),this.frequency=new Signal$1({context:this.context,value:e.frequency,units:"frequency"}),this.depth=new Signal$1({context:this.context,value:e.depth,units:"normalRange"}),readOnly$2(this,["frequency","depth"]),this.connectEffectLeft(this._amplitudeL),this.connectEffectRight(this._amplitudeR),this._lfoL.connect(this._amplitudeL.gain),this._lfoR.connect(this._amplitudeR.gain),this.frequency.fan(this._lfoL.frequency,this._lfoR.frequency),this.depth.fan(this._lfoR.amplitude,this._lfoL.amplitude),this.spread=e.spread}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:10,type:"sine",depth:.5,spread:180})}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this.context.transport.syncSignal(this.frequency),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this.context.transport.unsyncSignal(this.frequency),this}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._amplitudeL.dispose(),this._amplitudeR.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Vibrato extends Effect{constructor(){super(optionsFromArguments$1(Vibrato.getDefaults(),arguments,["frequency","depth"])),this.name="Vibrato";const e=optionsFromArguments$1(Vibrato.getDefaults(),arguments,["frequency","depth"]);this._delayNode=new Delay({context:this.context,delayTime:0,maxDelay:e.maxDelay}),this._lfo=new LFO({context:this.context,type:e.type,min:0,max:e.maxDelay,frequency:e.frequency,phase:-90}).start().connect(this._delayNode.delayTime),this.frequency=this._lfo.frequency,this.depth=this._lfo.amplitude,this.depth.value=e.depth,readOnly$2(this,["frequency","depth"]),this.effectSend.chain(this._delayNode,this.effectReturn)}static getDefaults(){return Object.assign(Effect.getDefaults(),{maxDelay:.005,frequency:5,depth:.1,type:"sine"})}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._delayNode.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Analyser extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Analyser.getDefaults(),arguments,["type","size"])),this.name="Analyser",this._analysers=[],this._buffers=[];const e=optionsFromArguments$1(Analyser.getDefaults(),arguments,["type","size"]);this.input=this.output=this._gain=new Gain$2({context:this.context}),this._split=new Split({context:this.context,channels:e.channels}),this.input.connect(this._split),assertRange$1(e.channels,1);for(let s=0;s{const a=this._buffers[s];this._type==="fft"?e.getFloatFrequencyData(a):this._type==="waveform"&&e.getFloatTimeDomainData(a)}),this.channels===1?this._buffers[0]:this._buffers}get size(){return this._analysers[0].frequencyBinCount}set size(e){this._analysers.forEach((s,a)=>{s.fftSize=e*2,this._buffers[a]=new Float32Array(e)})}get channels(){return this._analysers.length}get type(){return this._type}set type(e){assert$1(e==="waveform"||e==="fft",`Analyser: invalid type: ${e}`),this._type=e}get smoothing(){return this._analysers[0].smoothingTimeConstant}set smoothing(e){this._analysers.forEach(s=>s.smoothingTimeConstant=e)}dispose(){return super.dispose(),this._analysers.forEach(e=>e.disconnect()),this._split.dispose(),this._gain.dispose(),this}}class MeterBase extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MeterBase.getDefaults(),arguments)),this.name="MeterBase",this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform"})}dispose(){return super.dispose(),this._analyser.dispose(),this}}class Meter extends MeterBase{constructor(){super(optionsFromArguments$1(Meter.getDefaults(),arguments,["smoothing"])),this.name="Meter",this._rms=0;const e=optionsFromArguments$1(Meter.getDefaults(),arguments,["smoothing"]);this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform",channels:e.channels}),this.smoothing=e.smoothing,this.normalRange=e.normalRange}static getDefaults(){return Object.assign(MeterBase.getDefaults(),{smoothing:.8,normalRange:!1,channels:1})}getLevel(){return warn$1("'getLevel' has been changed to 'getValue'"),this.getValue()}getValue(){const e=this._analyser.getValue(),a=(this.channels===1?[e]:e).map(c=>{const d=c.reduce((b,k)=>b+k*k,0),_=Math.sqrt(d/c.length);return this._rms=Math.max(_,this._rms*this.smoothing),this.normalRange?this._rms:gainToDb$1(this._rms)});return this.channels===1?a[0]:a}get channels(){return this._analyser.channels}dispose(){return super.dispose(),this._analyser.dispose(),this}}class FFT extends MeterBase{constructor(){super(optionsFromArguments$1(FFT.getDefaults(),arguments,["size"])),this.name="FFT";const e=optionsFromArguments$1(FFT.getDefaults(),arguments,["size"]);this.normalRange=e.normalRange,this._analyser.type="fft",this.size=e.size}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{normalRange:!1,size:1024,smoothing:.8})}getValue(){return this._analyser.getValue().map(s=>this.normalRange?dbToGain$1(s):s)}get size(){return this._analyser.size}set size(e){this._analyser.size=e}get smoothing(){return this._analyser.smoothing}set smoothing(e){this._analyser.smoothing=e}getFrequencyOfIndex(e){return assert$1(0<=e&&es._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo$1._soloed.has(this.context)||Solo$1._soloed.set(this.context,new Set),Solo$1._soloed.get(this.context).add(this)}_removeSolo(){Solo$1._soloed.has(this.context)&&Solo$1._soloed.get(this.context).delete(this)}_isSoloed(){return Solo$1._soloed.has(this.context)&&Solo$1._soloed.get(this.context).has(this)}_noSolos(){return!Solo$1._soloed.has(this.context)||Solo$1._soloed.has(this.context)&&Solo$1._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo$1._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo$1._allSolos=new Map;Solo$1._soloed=new Map;class PanVol$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(PanVol$1.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const e=optionsFromArguments$1(PanVol$1.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner$1({context:this.context,pan:e.pan,channelCount:e.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume$1({context:this.context,volume:e.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=e.mute,readOnly$2(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Channel$1.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const e=optionsFromArguments$1(Channel$1.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo$1({solo:e.solo,context:this.context}),this._panVol=this.output=new PanVol$1({context:this.context,pan:e.pan,volume:e.volume,mute:e.mute,channelCount:e.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly$2(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(e){return Channel$1.buses.has(e)||Channel$1.buses.set(e,new Gain$2({context:this.context})),Channel$1.buses.get(e)}send(e,s=0){const a=this._getBus(e),c=new Gain$2({context:this.context,units:"decibels",gain:s});return this.connect(c),c.connect(a),c}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel$1.buses=new Map;class Mono extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Mono.getDefaults(),arguments)),this.name="Mono",this.input=new Gain$2({context:this.context}),this._merge=this.output=new Merge({channels:2,context:this.context}),this.input.connect(this._merge,0,0),this.input.connect(this._merge,0,1)}dispose(){return super.dispose(),this._merge.dispose(),this.input.dispose(),this}}class MultibandSplit extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"])),this.name="MultibandSplit",this.input=new Gain$2({context:this.context}),this.output=void 0,this.low=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this._lowMidFilter=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this.mid=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this.high=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this._internalChannels=[this.low,this.mid,this.high];const e=optionsFromArguments$1(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"]);this.lowFrequency=new Signal$1({context:this.context,units:"frequency",value:e.lowFrequency}),this.highFrequency=new Signal$1({context:this.context,units:"frequency",value:e.highFrequency}),this.Q=new Signal$1({context:this.context,units:"positive",value:e.Q}),this.input.fan(this.low,this.high),this.input.chain(this._lowMidFilter,this.mid),this.lowFrequency.fan(this.low.frequency,this._lowMidFilter.frequency),this.highFrequency.fan(this.mid.frequency,this.high.frequency),this.Q.connect(this.low.Q),this.Q.connect(this._lowMidFilter.Q),this.Q.connect(this.mid.Q),this.Q.connect(this.high.Q),readOnly$2(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{Q:1,highFrequency:2500,lowFrequency:400})}dispose(){return super.dispose(),writable$1(this,["high","mid","low","highFrequency","lowFrequency"]),this.low.dispose(),this._lowMidFilter.dispose(),this.mid.dispose(),this.high.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this.Q.dispose(),this}}class Listener$2 extends ToneAudioNode$1{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param$1({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param$1({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param$1({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param$1({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param$1({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param$1({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param$1({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param$1({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param$1({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit$1(o=>{o.listener=new Listener$2({context:o})});onContextClose$1(o=>{o.listener.dispose()});class Panner3D extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"])),this.name="Panner3D";const e=optionsFromArguments$1(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"]);this._panner=this.input=this.output=this.context.createPanner(),this.panningModel=e.panningModel,this.maxDistance=e.maxDistance,this.distanceModel=e.distanceModel,this.coneOuterGain=e.coneOuterGain,this.coneOuterAngle=e.coneOuterAngle,this.coneInnerAngle=e.coneInnerAngle,this.refDistance=e.refDistance,this.rolloffFactor=e.rolloffFactor,this.positionX=new Param$1({context:this.context,param:this._panner.positionX,value:e.positionX}),this.positionY=new Param$1({context:this.context,param:this._panner.positionY,value:e.positionY}),this.positionZ=new Param$1({context:this.context,param:this._panner.positionZ,value:e.positionZ}),this.orientationX=new Param$1({context:this.context,param:this._panner.orientationX,value:e.orientationX}),this.orientationY=new Param$1({context:this.context,param:this._panner.orientationY,value:e.orientationY}),this.orientationZ=new Param$1({context:this.context,param:this._panner.orientationZ,value:e.orientationZ})}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:0,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1})}setPosition(e,s,a){return this.positionX.value=e,this.positionY.value=s,this.positionZ.value=a,this}setOrientation(e,s,a){return this.orientationX.value=e,this.orientationY.value=s,this.orientationZ.value=a,this}get panningModel(){return this._panner.panningModel}set panningModel(e){this._panner.panningModel=e}get refDistance(){return this._panner.refDistance}set refDistance(e){this._panner.refDistance=e}get rolloffFactor(){return this._panner.rolloffFactor}set rolloffFactor(e){this._panner.rolloffFactor=e}get distanceModel(){return this._panner.distanceModel}set distanceModel(e){this._panner.distanceModel=e}get coneInnerAngle(){return this._panner.coneInnerAngle}set coneInnerAngle(e){this._panner.coneInnerAngle=e}get coneOuterAngle(){return this._panner.coneOuterAngle}set coneOuterAngle(e){this._panner.coneOuterAngle=e}get coneOuterGain(){return this._panner.coneOuterGain}set coneOuterGain(e){this._panner.coneOuterGain=e}get maxDistance(){return this._panner.maxDistance}set maxDistance(e){this._panner.maxDistance=e}dispose(){return super.dispose(),this._panner.disconnect(),this.orientationX.dispose(),this.orientationY.dispose(),this.orientationZ.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this}}class Recorder extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Recorder.getDefaults(),arguments)),this.name="Recorder";const e=optionsFromArguments$1(Recorder.getDefaults(),arguments);this.input=new Gain$2({context:this.context}),assert$1(Recorder.supported,"Media Recorder API is not available"),this._stream=this.context.createMediaStreamDestination(),this.input.connect(this._stream),this._recorder=new MediaRecorder(this._stream.stream,{mimeType:e.mimeType})}static getDefaults(){return ToneAudioNode$1.getDefaults()}get mimeType(){return this._recorder.mimeType}static get supported(){return theWindow$1!==null&&Reflect.has(theWindow$1,"MediaRecorder")}get state(){return this._recorder.state==="inactive"?"stopped":this._recorder.state==="paused"?"paused":"started"}start(){return __awaiter$5(this,void 0,void 0,function*(){assert$1(this.state!=="started","Recorder is already started");const e=new Promise(s=>{const a=()=>{this._recorder.removeEventListener("start",a,!1),s()};this._recorder.addEventListener("start",a,!1)});return this._recorder.start(),yield e})}stop(){return __awaiter$5(this,void 0,void 0,function*(){assert$1(this.state!=="stopped","Recorder is not started");const e=new Promise(s=>{const a=c=>{this._recorder.removeEventListener("dataavailable",a,!1),s(c.data)};this._recorder.addEventListener("dataavailable",a,!1)});return this._recorder.stop(),yield e})}pause(){return assert$1(this.state==="started","Recorder must be started"),this._recorder.pause(),this}dispose(){return super.dispose(),this.input.dispose(),this._stream.disconnect(),this}}class Compressor extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Compressor.getDefaults(),arguments,["threshold","ratio"])),this.name="Compressor",this._compressor=this.context.createDynamicsCompressor(),this.input=this._compressor,this.output=this._compressor;const e=optionsFromArguments$1(Compressor.getDefaults(),arguments,["threshold","ratio"]);this.threshold=new Param$1({minValue:this._compressor.threshold.minValue,maxValue:this._compressor.threshold.maxValue,context:this.context,convert:!1,param:this._compressor.threshold,units:"decibels",value:e.threshold}),this.attack=new Param$1({minValue:this._compressor.attack.minValue,maxValue:this._compressor.attack.maxValue,context:this.context,param:this._compressor.attack,units:"time",value:e.attack}),this.release=new Param$1({minValue:this._compressor.release.minValue,maxValue:this._compressor.release.maxValue,context:this.context,param:this._compressor.release,units:"time",value:e.release}),this.knee=new Param$1({minValue:this._compressor.knee.minValue,maxValue:this._compressor.knee.maxValue,context:this.context,convert:!1,param:this._compressor.knee,units:"decibels",value:e.knee}),this.ratio=new Param$1({minValue:this._compressor.ratio.minValue,maxValue:this._compressor.ratio.maxValue,context:this.context,convert:!1,param:this._compressor.ratio,units:"positive",value:e.ratio}),readOnly$2(this,["knee","release","attack","ratio","threshold"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{attack:.003,knee:30,ratio:12,release:.25,threshold:-24})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.disconnect(),this.attack.dispose(),this.release.dispose(),this.threshold.dispose(),this.ratio.dispose(),this.knee.dispose(),this}}class Gate extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(Gate.getDefaults(),arguments,["threshold","smoothing"]))),this.name="Gate";const e=optionsFromArguments$1(Gate.getDefaults(),arguments,["threshold","smoothing"]);this._follower=new Follower({context:this.context,smoothing:e.smoothing}),this._gt=new GreaterThan({context:this.context,value:dbToGain$1(e.threshold)}),this.input=new Gain$2({context:this.context}),this._gate=this.output=new Gain$2({context:this.context}),this.input.connect(this._gate),this.input.chain(this._follower,this._gt,this._gate.gain)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{smoothing:.1,threshold:-40})}get threshold(){return gainToDb$1(this._gt.value)}set threshold(e){this._gt.value=dbToGain$1(e)}get smoothing(){return this._follower.smoothing}set smoothing(e){this._follower.smoothing=e}dispose(){return super.dispose(),this.input.dispose(),this._follower.dispose(),this._gt.dispose(),this._gate.dispose(),this}}class Limiter extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(Limiter.getDefaults(),arguments,["threshold"]))),this.name="Limiter";const e=optionsFromArguments$1(Limiter.getDefaults(),arguments,["threshold"]);this._compressor=this.input=this.output=new Compressor({context:this.context,ratio:20,attack:.003,release:.01,threshold:e.threshold}),this.threshold=this._compressor.threshold,readOnly$2(this,"threshold")}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{threshold:-12})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.dispose(),this.threshold.dispose(),this}}class MidSideCompressor extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(MidSideCompressor.getDefaults(),arguments))),this.name="MidSideCompressor";const e=optionsFromArguments$1(MidSideCompressor.getDefaults(),arguments);this._midSideSplit=this.input=new MidSideSplit({context:this.context}),this._midSideMerge=this.output=new MidSideMerge({context:this.context}),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.side=new Compressor(Object.assign(e.side,{context:this.context})),this._midSideSplit.mid.chain(this.mid,this._midSideMerge.mid),this._midSideSplit.side.chain(this.side,this._midSideMerge.side),readOnly$2(this,["mid","side"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},side:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10}})}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this}}class MultibandCompressor extends ToneAudioNode$1{constructor(){super(Object.assign(optionsFromArguments$1(MultibandCompressor.getDefaults(),arguments))),this.name="MultibandCompressor";const e=optionsFromArguments$1(MultibandCompressor.getDefaults(),arguments);this._splitter=this.input=new MultibandSplit({context:this.context,lowFrequency:e.lowFrequency,highFrequency:e.highFrequency}),this.lowFrequency=this._splitter.lowFrequency,this.highFrequency=this._splitter.highFrequency,this.output=new Gain$2({context:this.context}),this.low=new Compressor(Object.assign(e.low,{context:this.context})),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.high=new Compressor(Object.assign(e.high,{context:this.context})),this._splitter.low.chain(this.low,this.output),this._splitter.mid.chain(this.mid,this.output),this._splitter.high.chain(this.high,this.output),readOnly$2(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{lowFrequency:250,highFrequency:2e3,low:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10},mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},high:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16}})}dispose(){return super.dispose(),this._splitter.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.output.dispose(),this}}class EQ3 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(EQ3.getDefaults(),arguments,["low","mid","high"])),this.name="EQ3",this.output=new Gain$2({context:this.context}),this._internalChannels=[];const e=optionsFromArguments$1(EQ3.getDefaults(),arguments,["low","mid","high"]);this.input=this._multibandSplit=new MultibandSplit({context:this.context,highFrequency:e.highFrequency,lowFrequency:e.lowFrequency}),this._lowGain=new Gain$2({context:this.context,gain:e.low,units:"decibels"}),this._midGain=new Gain$2({context:this.context,gain:e.mid,units:"decibels"}),this._highGain=new Gain$2({context:this.context,gain:e.high,units:"decibels"}),this.low=this._lowGain.gain,this.mid=this._midGain.gain,this.high=this._highGain.gain,this.Q=this._multibandSplit.Q,this.lowFrequency=this._multibandSplit.lowFrequency,this.highFrequency=this._multibandSplit.highFrequency,this._multibandSplit.low.chain(this._lowGain,this.output),this._multibandSplit.mid.chain(this._midGain,this.output),this._multibandSplit.high.chain(this._highGain,this.output),readOnly$2(this,["low","mid","high","lowFrequency","highFrequency"]),this._internalChannels=[this._multibandSplit]}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{high:0,highFrequency:2500,low:0,lowFrequency:400,mid:0})}dispose(){return super.dispose(),writable$1(this,["low","mid","high","lowFrequency","highFrequency"]),this._multibandSplit.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this._lowGain.dispose(),this._midGain.dispose(),this._highGain.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.Q.dispose(),this}}class Convolver extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Convolver.getDefaults(),arguments,["url","onload"])),this.name="Convolver",this._convolver=this.context.createConvolver();const e=optionsFromArguments$1(Convolver.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer$1(e.url,s=>{this.buffer=s,e.onload()}),this.input=new Gain$2({context:this.context}),this.output=new Gain$2({context:this.context}),this._buffer.loaded&&(this.buffer=this._buffer),this.normalize=e.normalize,this.input.chain(this._convolver,this.output)}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{normalize:!0,onload:noOp$1})}load(e){return __awaiter$5(this,void 0,void 0,function*(){this.buffer=yield this._buffer.load(e)})}get buffer(){return this._buffer.length?this._buffer:null}set buffer(e){e&&this._buffer.set(e),this._convolver.buffer&&(this.input.disconnect(),this._convolver.disconnect(),this._convolver=this.context.createConvolver(),this.input.chain(this._convolver,this.output));const s=this._buffer.get();this._convolver.buffer=s||null}get normalize(){return this._convolver.normalize}set normalize(e){this._convolver.normalize=e}dispose(){return super.dispose(),this._buffer.dispose(),this._convolver.disconnect(),this}}function now(){return getContext$1().now()}function immediate(){return getContext$1().immediate()}const Transport$1=getContext$1().transport;function getTransport(){return getContext$1().transport}const Destination$2=getContext$1().destination,Master=getContext$1().destination;function getDestination$1(){return getContext$1().destination}const Listener$1=getContext$1().listener;function getListener(){return getContext$1().listener}const Draw$1=getContext$1().draw;function getDraw(){return getContext$1().draw}const context=getContext$1();function loaded(){return ToneAudioBuffer$1.loaded()}const Buffer=ToneAudioBuffer$1,Buffers=ToneAudioBuffers$1,BufferSource=ToneBufferSource$1;var _Tone=Object.freeze(Object.defineProperty({__proto__:null,now,immediate,Transport:Transport$1,getTransport,Destination:Destination$2,Master,getDestination:getDestination$1,Listener:Listener$1,getListener,Draw:Draw$1,getDraw,context,loaded,Buffer,Buffers,BufferSource,getContext:getContext$1,setContext:setContext$1,start,supported:isSupported,dbToGain:dbToGain$1,gainToDb:gainToDb$1,intervalToFrequencyRatio:intervalToFrequencyRatio$1,ftom:ftom$1,mtof:mtof$1,optionsFromArguments:optionsFromArguments$1,defaultArg:defaultArg$1,Clock:Clock$1,Context:Context$1,BaseContext:BaseContext$1,Delay,Gain:Gain$2,Offline,OfflineContext:OfflineContext$1,Param:Param$1,ToneAudioBuffer:ToneAudioBuffer$1,ToneAudioBuffers:ToneAudioBuffers$1,ToneAudioNode:ToneAudioNode$1,connectSeries:connectSeries$1,connect:connect$1,disconnect:disconnect$1,FrequencyClass:FrequencyClass$1,Frequency,MidiClass,Midi,TimeClass:TimeClass$1,Time,TicksClass:TicksClass$1,Ticks,TransportTimeClass:TransportTimeClass$1,TransportTime,Emitter:Emitter$1,IntervalTimeline:IntervalTimeline$1,StateTimeline:StateTimeline$1,Timeline:Timeline$1,isUndef:isUndef$1,isDefined:isDefined$1,isFunction:isFunction$1,isNumber:isNumber$1,isObject:isObject$1,isBoolean:isBoolean$1,isArray:isArray$1,isString:isString$1,isNote:isNote$3,Unit:Units,debug:Debug,Noise,UserMedia,Oscillator:Oscillator$1,AMOscillator:AMOscillator$1,FMOscillator:FMOscillator$1,PulseOscillator:PulseOscillator$1,FatOscillator:FatOscillator$1,PWMOscillator:PWMOscillator$1,OmniOscillator:OmniOscillator$1,ToneOscillatorNode:ToneOscillatorNode$1,LFO,ToneBufferSource:ToneBufferSource$1,Player:Player$1,Players:Players$1,GrainPlayer,Add,Abs,AudioToGain:AudioToGain$1,GainToAudio,GreaterThan,GreaterThanZero,Multiply:Multiply$1,Negate,Pow,Signal:Signal$1,connectSignal:connectSignal$1,Scale,ScaleExp,Subtract,SyncedSignal,WaveShaper:WaveShaper$1,Zero,AMSynth:AMSynth$1,DuoSynth:DuoSynth$1,FMSynth:FMSynth$1,MetalSynth:MetalSynth$1,MembraneSynth:MembraneSynth$2,MonoSynth:MonoSynth$1,NoiseSynth:NoiseSynth$1,PluckSynth:PluckSynth$1,PolySynth:PolySynth$1,Sampler:Sampler$2,Synth:Synth$2,Loop,Part,Pattern:Pattern$3,Sequence,ToneEvent,AutoFilter:AutoFilter$1,AutoPanner,AutoWah,BitCrusher,Chebyshev,Chorus,Distortion,FeedbackDelay,FrequencyShifter,Freeverb,JCReverb,PingPongDelay,PitchShift,Phaser,Reverb,StereoWidener,Tremolo,Vibrato,Analyser,Meter,FFT,DCMeter,Waveform,Follower,Channel:Channel$1,CrossFade,Merge,MidSideMerge,MidSideSplit,Mono,MultibandSplit,Panner:Panner$1,Panner3D,PanVol:PanVol$1,Recorder,Solo:Solo$1,Split,Volume:Volume$1,Compressor,Gate,Limiter,MidSideCompressor,MultibandCompressor,AmplitudeEnvelope:AmplitudeEnvelope$1,Envelope:Envelope$1,FrequencyEnvelope,EQ3,Filter:Filter$1,OnePoleFilter,FeedbackCombFilter,LowpassCombFilter,Convolver,BiquadFilter,version:version$1},Symbol.toStringTag,{value:"Module"})),__awaiter$4=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class PianoComponent extends ToneAudioNode$1{constructor(e){super(e),this.name="PianoComponent",this.input=void 0,this.output=new Volume$1({context:this.context}),this._enabled=!1,this.volume=this.output.volume,this._loaded=!1,this.volume.value=e.volume,this._enabled=e.enabled,this.samples=e.samples}get loaded(){return this._loaded}load(){return __awaiter$4(this,void 0,void 0,function*(){if(this._enabled)yield this._internalLoad(),this._loaded=!0;else return Promise.resolve()})}}function midiToNote(o){return Frequency(o,"midi").toNote()}function randomBetween(o,e){return Math.random()*(e-o)+o}function getReleasesUrl(o){return`rel${o-20}.[mp3|ogg]`}function getHarmonicsUrl(o){return`harmS${midiToNote(o).replace("#","s")}.[mp3|ogg]`}function getNotesUrl(o,e){return`${midiToNote(o).replace("#","s")}v${e}.[mp3|ogg]`}const velocitiesMap={1:[8],2:[6,12],3:[1,7,15],4:[1,5,10,15],5:[1,4,8,12,16],6:[1,3,7,10,13,16],7:[1,3,6,9,11,13,16],8:[1,3,5,7,9,11,13,16],9:[1,3,5,7,9,11,13,15,16],10:[1,2,3,5,7,9,11,13,15,16],11:[1,2,3,5,7,9,11,13,14,15,16],12:[1,2,3,4,5,7,9,11,13,14,15,16],13:[1,2,3,4,5,7,9,11,12,13,14,15,16],14:[1,2,3,4,5,6,7,9,11,12,13,14,15,16],15:[1,2,3,4,5,6,7,9,10,11,12,13,14,15,16],16:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]},allNotes=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108];function getNotesInRange(o,e){return allNotes.filter(s=>o<=s&&s<=e)}const harmonics=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87];function getHarmonicsInRange(o,e){return harmonics.filter(s=>o<=s&&s<=e)}function inHarmonicsRange(o){return harmonics[0]<=o&&o<=harmonics[harmonics.length-1]}class Harmonics extends PianoComponent{constructor(e){super(e),this._urls={};const s=getHarmonicsInRange(e.minNote,e.maxNote);for(const a of s)this._urls[a]=getHarmonicsUrl(a)}triggerAttack(e,s,a){this._enabled&&inHarmonicsRange(e)&&this._sampler.triggerAttack(Midi(e).toNote(),s,a*randomBetween(.5,1))}_internalLoad(){return new Promise(e=>{this._sampler=new Sampler$2({baseUrl:this.samples,onload:e,urls:this._urls}).connect(this.output)})}}class Keybed extends PianoComponent{constructor(e){super(e),this._urls={};for(let s=e.minNote;s<=e.maxNote;s++)this._urls[s]=getReleasesUrl(s)}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers$1(this._urls,e,this.samples)})}start(e,s,a){this._enabled&&this._buffers.has(e)&&new ToneBufferSource$1({url:this._buffers.get(e),context:this.context}).connect(this.output).start(s,0,void 0,.015*a*randomBetween(.5,1))}}class Pedal extends PianoComponent{constructor(e){super(e),this._downTime=1/0,this._currentSound=null,this._downTime=1/0}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers$1({down1:"pedalD1.mp3",down2:"pedalD2.mp3",up1:"pedalU1.mp3",up2:"pedalU2.mp3"},e,this.samples)})}_squash(e){this._currentSound&&this._currentSound.state!=="stopped"&&this._currentSound.stop(e),this._currentSound=null}_playSample(e,s){this._enabled&&(this._currentSound=new ToneBufferSource$1({url:this._buffers.get(`${s}${Math.random()>.5?1:2}`),context:this.context,curve:"exponential",fadeIn:.05,fadeOut:.1}).connect(this.output),this._currentSound.start(e,randomBetween(0,.01),void 0,.1*randomBetween(.5,1)))}down(e){this._squash(e),this._downTime=e,this._playSample(e,"down")}up(e){this._squash(e),this._downTime=1/0,this._playSample(e,"up")}isDown(e){return e>this._downTime}}class PianoString extends ToneAudioNode$1{constructor(e){super(e),this.name="PianoString",this._urls={},e.notes.forEach(s=>this._urls[s]=getNotesUrl(s,e.velocity)),this.samples=e.samples}load(){return new Promise(e=>{this._sampler=this.output=new Sampler$2({attack:0,baseUrl:this.samples,curve:"exponential",onload:e,release:.4,urls:this._urls,volume:3})})}triggerAttack(e,s,a){this._sampler.triggerAttack(e,s,a)}triggerRelease(e,s){this._sampler.triggerRelease(e,s)}}var __awaiter$3=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class PianoStrings extends PianoComponent{constructor(e){super(e);const s=getNotesInRange(e.minNote,e.maxNote),a=velocitiesMap[e.velocities].slice();this._strings=a.map(c=>new PianoString(Object.assign(e,{notes:s,velocity:c}))),this._activeNotes=new Map}scale(e,s,a,c,d){return(e-s)/(a-s)*(d-c)+c}triggerAttack(e,s,a){const c=this.scale(a,0,1,-.5,this._strings.length-.51),d=Math.max(Math.round(c),0);let _=1+c-d;this._strings.length===1&&(_=a);const b=this._strings[d];this._activeNotes.has(e)&&this.triggerRelease(e,s),this._activeNotes.set(e,b),b.triggerAttack(Midi(e).toNote(),s,_)}triggerRelease(e,s){this._activeNotes.has(e)&&(this._activeNotes.get(e).triggerRelease(Midi(e).toNote(),s),this._activeNotes.delete(e))}_internalLoad(){return __awaiter$3(this,void 0,void 0,function*(){yield Promise.all(this._strings.map(e=>__awaiter$3(this,void 0,void 0,function*(){yield e.load(),e.connect(this.output)})))})}}var __awaiter$2=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class Piano$1 extends ToneAudioNode$1{constructor(){super(optionsFromArguments$1(Piano$1.getDefaults(),arguments)),this.name="Piano",this.input=void 0,this.output=new Gain$2({context:this.context}),this._heldNotes=new Map,this._loaded=!1;const e=optionsFromArguments$1(Piano$1.getDefaults(),arguments);e.url.endsWith("/")||(e.url+="/"),this.maxPolyphony=e.maxPolyphony,this._heldNotes=new Map,this._sustainedNotes=new Map,this._strings=new PianoStrings(Object.assign({},e,{enabled:!0,samples:e.url,volume:e.volume.strings})).connect(this.output),this.strings=this._strings.volume,this._pedal=new Pedal(Object.assign({},e,{enabled:e.pedal,samples:e.url,volume:e.volume.pedal})).connect(this.output),this.pedal=this._pedal.volume,this._keybed=new Keybed(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.keybed})).connect(this.output),this.keybed=this._keybed.volume,this._harmonics=new Harmonics(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.harmonics})).connect(this.output),this.harmonics=this._harmonics.volume}static getDefaults(){return Object.assign(ToneAudioNode$1.getDefaults(),{maxNote:108,minNote:21,pedal:!0,release:!1,url:"https://tambien.github.io/Piano/audio/",velocities:1,maxPolyphony:32,volume:{harmonics:0,keybed:0,pedal:0,strings:0}})}load(){return __awaiter$2(this,void 0,void 0,function*(){yield Promise.all([this._strings.load(),this._pedal.load(),this._keybed.load(),this._harmonics.load()]),this._loaded=!0})}get loaded(){return this._loaded}pedalDown({time:e=this.immediate()}={}){return this.loaded&&(e=this.toSeconds(e),this._pedal.isDown(e)||this._pedal.down(e)),this}pedalUp({time:e=this.immediate()}={}){if(this.loaded){const s=this.toSeconds(e);this._pedal.isDown(s)&&(this._pedal.up(s),this._sustainedNotes.forEach((a,c)=>{this._heldNotes.has(c)||this._strings.triggerRelease(c,s)}),this._sustainedNotes.clear())}return this}keyDown({note:e,midi:s,time:a=this.immediate(),velocity:c=.8}){return this.loaded&&this.maxPolyphony>this._heldNotes.size+this._sustainedNotes.size?(a=this.toSeconds(a),isString$1(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s)||(this._heldNotes.set(s,{time:a,velocity:c}),this._strings.triggerAttack(s,a,c))):console.warn("samples not loaded"),this}keyUp({note:e,midi:s,time:a=this.immediate(),velocity:c=.8}){if(this.loaded&&(a=this.toSeconds(a),isString$1(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s))){const d=this._heldNotes.get(s);this._heldNotes.delete(s);const _=Math.pow(Math.max(a-d.time,.1),.7),b=d.velocity;let k=3/_*b*c;k=Math.max(k,.4),k=Math.min(k,4),this._pedal.isDown(a)?this._sustainedNotes.has(s)||this._sustainedNotes.set(s,a):(this._strings.triggerRelease(s,a),this._harmonics.triggerAttack(s,a,k)),this._keybed.start(s,a,c)}return this}stopAll(){return this.pedalUp(),this._heldNotes.forEach((e,s)=>{this.keyUp({midi:s})}),this}}var events={exports:{}},R=typeof Reflect=="object"?Reflect:null,ReflectApply=R&&typeof R.apply=="function"?R.apply:function o(e,s,a){return Function.prototype.apply.call(e,s,a)},ReflectOwnKeys;R&&typeof R.ownKeys=="function"?ReflectOwnKeys=R.ownKeys:Object.getOwnPropertySymbols?ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e)};function ProcessEmitWarning(o){console&&console.warn&&console.warn(o)}var NumberIsNaN=Number.isNaN||function o(e){return e!==e};function EventEmitter(){EventEmitter.init.call(this)}events.exports=EventEmitter;events.exports.once=once;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=void 0;EventEmitter.prototype._eventsCount=0;EventEmitter.prototype._maxListeners=void 0;var defaultMaxListeners=10;function checkListener(o){if(typeof o!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof o)}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:!0,get:function(){return defaultMaxListeners},set:function(o){if(typeof o!="number"||o<0||NumberIsNaN(o))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+o+".");defaultMaxListeners=o}});EventEmitter.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};EventEmitter.prototype.setMaxListeners=function o(e){if(typeof e!="number"||e<0||NumberIsNaN(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function _getMaxListeners(o){return o._maxListeners===void 0?EventEmitter.defaultMaxListeners:o._maxListeners}EventEmitter.prototype.getMaxListeners=function o(){return _getMaxListeners(this)};EventEmitter.prototype.emit=function o(e){for(var s=[],a=1;a0&&(_=s[0]),_ instanceof Error)throw _;var b=new Error("Unhandled error."+(_?" ("+_.message+")":""));throw b.context=_,b}var k=d[e];if(k===void 0)return!1;if(typeof k=="function")ReflectApply(k,this,s);else for(var $=k.length,j=arrayClone(k,$),a=0;a<$;++a)ReflectApply(j[a],this,s);return!0};function _addListener(o,e,s,a){var c,d,_;if(checkListener(s),d=o._events,d===void 0?(d=o._events=Object.create(null),o._eventsCount=0):(d.newListener!==void 0&&(o.emit("newListener",e,s.listener?s.listener:s),d=o._events),_=d[e]),_===void 0)_=d[e]=s,++o._eventsCount;else if(typeof _=="function"?_=d[e]=a?[s,_]:[_,s]:a?_.unshift(s):_.push(s),c=_getMaxListeners(o),c>0&&_.length>c&&!_.warned){_.warned=!0;var b=new Error("Possible EventEmitter memory leak detected. "+_.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");b.name="MaxListenersExceededWarning",b.emitter=o,b.type=e,b.count=_.length,ProcessEmitWarning(b)}return o}EventEmitter.prototype.addListener=function o(e,s){return _addListener(this,e,s,!1)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function o(e,s){return _addListener(this,e,s,!0)};function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(o,e,s){var a={fired:!1,wrapFn:void 0,target:o,type:e,listener:s},c=onceWrapper.bind(a);return c.listener=s,a.wrapFn=c,c}EventEmitter.prototype.once=function o(e,s){return checkListener(s),this.on(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.prependOnceListener=function o(e,s){return checkListener(s),this.prependListener(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.removeListener=function o(e,s){var a,c,d,_,b;if(checkListener(s),c=this._events,c===void 0)return this;if(a=c[e],a===void 0)return this;if(a===s||a.listener===s)--this._eventsCount===0?this._events=Object.create(null):(delete c[e],c.removeListener&&this.emit("removeListener",e,a.listener||s));else if(typeof a!="function"){for(d=-1,_=a.length-1;_>=0;_--)if(a[_]===s||a[_].listener===s){b=a[_].listener,d=_;break}if(d<0)return this;d===0?a.shift():spliceOne(a,d),a.length===1&&(c[e]=a[0]),c.removeListener!==void 0&&this.emit("removeListener",e,b||s)}return this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.removeAllListeners=function o(e){var s,a,c;if(a=this._events,a===void 0)return this;if(a.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):a[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete a[e]),this;if(arguments.length===0){var d=Object.keys(a),_;for(c=0;c=0;c--)this.removeListener(e,s[c]);return this};function _listeners(o,e,s){var a=o._events;if(a===void 0)return[];var c=a[e];return c===void 0?[]:typeof c=="function"?s?[c.listener||c]:[c]:s?unwrapListeners(c):arrayClone(c,c.length)}EventEmitter.prototype.listeners=function o(e){return _listeners(this,e,!0)};EventEmitter.prototype.rawListeners=function o(e){return _listeners(this,e,!1)};EventEmitter.listenerCount=function(o,e){return typeof o.listenerCount=="function"?o.listenerCount(e):listenerCount.call(o,e)};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(o){var e=this._events;if(e!==void 0){var s=e[o];if(typeof s=="function")return 1;if(s!==void 0)return s.length}return 0}EventEmitter.prototype.eventNames=function o(){return this._eventsCount>0?ReflectOwnKeys(this._events):[]};function arrayClone(o,e){for(var s=new Array(e),a=0;a>4,j=15&_.data[0],_e=1+j;if(1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0),a.nrpnEventsEnabled&&$===a.MIDI_CHANNEL_MESSAGES.controlchange&&(b>=a.MIDI_NRPN_MESSAGES.increment&&b<=a.MIDI_NRPN_MESSAGES.parammsb||b===a.MIDI_NRPN_MESSAGES.entrymsb||b===a.MIDI_NRPN_MESSAGES.entrylsb)){var et={target:this,type:"controlchange",data:_.data,timestamp:_.timeStamp,channel:_e,controller:{number:b,name:this.getCcNameByNumber(b)},value:k};if(et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value!=a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j]=[],a._nrpnBuffer[j][0]=et;else if(a._nrpnBuffer[j].length===1&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb)a._nrpnBuffer[j].push(et);else if(a._nrpnBuffer[j].length!==2||et.controller.number!==a.MIDI_NRPN_MESSAGES.increment&&et.controller.number!==a.MIDI_NRPN_MESSAGES.decrement&&et.controller.number!==a.MIDI_NRPN_MESSAGES.entrymsb)if(a._nrpnBuffer[j].length===3&&a._nrpnBuffer[j][2].number===a.MIDI_NRPN_MESSAGES.entrymsb&&et.controller.number===a.MIDI_NRPN_MESSAGES.entrylsb)a._nrpnBuffer[j].push(et);else if(3<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=4&&et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j].push(et);else if(4<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=5&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter){a._nrpnBuffer[j].push(et);var tt=[];a._nrpnBuffer[j].forEach(function(at){tt.push(at.data)});var nt=a._nrpnBuffer[j][0].value<<7|a._nrpnBuffer[j][1].value,it=a._nrpnBuffer[j][2].value;a._nrpnBuffer[j].length===6&&(it=a._nrpnBuffer[j][2].value<<7|a._nrpnBuffer[j][3].value);var rt="";switch(a._nrpnBuffer[j][2].controller.number){case a.MIDI_NRPN_MESSAGES.entrymsb:rt=a._nrpnTypes[0];break;case a.MIDI_NRPN_MESSAGES.increment:rt=a._nrpnTypes[1];break;case a.MIDI_NRPN_MESSAGES.decrement:rt=a._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var st={timestamp:et.timestamp,channel:et.channel,type:"nrpn",data:tt,controller:{number:nt,type:rt,name:"Non-Registered Parameter "+nt},value:it};a._nrpnBuffer[j]=[],this._userHandlers.channel[st.type]&&this._userHandlers.channel[st.type][st.channel]&&this._userHandlers.channel[st.type][st.channel].forEach(function(at){at(st)})}else a._nrpnBuffer[j]=[];else a._nrpnBuffer[j].push(et)}},c.prototype._parseChannelEvent=function(_){var b,k,$=_.data[0]>>4,j=1+(15&_.data[0]);1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0);var _e={target:this,data:_.data,timestamp:_.timeStamp,channel:j};$===a.MIDI_CHANNEL_MESSAGES.noteoff||$===a.MIDI_CHANNEL_MESSAGES.noteon&&k===0?(_e.type="noteoff",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.noteon?(_e.type="noteon",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.keyaftertouch?(_e.type="keyaftertouch",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.value=k/127):$===a.MIDI_CHANNEL_MESSAGES.controlchange&&0<=b&&b<=119?(_e.type="controlchange",_e.controller={number:b,name:this.getCcNameByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.channelmode&&120<=b&&b<=127?(_e.type="channelmode",_e.controller={number:b,name:this.getChannelModeByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.programchange?(_e.type="programchange",_e.value=b):$===a.MIDI_CHANNEL_MESSAGES.channelaftertouch?(_e.type="channelaftertouch",_e.value=b/127):$===a.MIDI_CHANNEL_MESSAGES.pitchbend?(_e.type="pitchbend",_e.value=((k<<7)+b-8192)/8192):_e.type="unknownchannelmessage",this._userHandlers.channel[_e.type]&&this._userHandlers.channel[_e.type][j]&&this._userHandlers.channel[_e.type][j].forEach(function(et){et(_e)})},c.prototype.getCcNameByNumber=function(_){if(!(0<=(_=Math.floor(_))&&_<=119))throw new RangeError("The control change number must be between 0 and 119.");for(var b in a.MIDI_CONTROL_CHANGE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CONTROL_CHANGE_MESSAGES,b)&&_===a.MIDI_CONTROL_CHANGE_MESSAGES[b])return b},c.prototype.getChannelModeByNumber=function(_){if(!(120<=(_=Math.floor(_))&&status<=127))throw new RangeError("The control change number must be between 120 and 127.");for(var b in a.MIDI_CHANNEL_MODE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CHANNEL_MODE_MESSAGES,b)&&_===a.MIDI_CHANNEL_MODE_MESSAGES[b])return b},c.prototype._parseSystemEvent=function(_){var b=_.data[0],k={target:this,data:_.data,timestamp:_.timeStamp};b===a.MIDI_SYSTEM_MESSAGES.sysex?k.type="sysex":b===a.MIDI_SYSTEM_MESSAGES.timecode?k.type="timecode":b===a.MIDI_SYSTEM_MESSAGES.songposition?k.type="songposition":b===a.MIDI_SYSTEM_MESSAGES.songselect?(k.type="songselect",k.song=_.data[1]):b===a.MIDI_SYSTEM_MESSAGES.tuningrequest?k.type="tuningrequest":b===a.MIDI_SYSTEM_MESSAGES.clock?k.type="clock":b===a.MIDI_SYSTEM_MESSAGES.start?k.type="start":b===a.MIDI_SYSTEM_MESSAGES.continue?k.type="continue":b===a.MIDI_SYSTEM_MESSAGES.stop?k.type="stop":b===a.MIDI_SYSTEM_MESSAGES.activesensing?k.type="activesensing":b===a.MIDI_SYSTEM_MESSAGES.reset?k.type="reset":k.type="unknownsystemmessage",this._userHandlers.system[k.type]&&this._userHandlers.system[k.type].forEach(function($){$(k)})},d.prototype.send=function(_,b,k){if(!(128<=_&&_<=255))throw new RangeError("The status byte must be an integer between 128 (0x80) and 255 (0xFF).");b===void 0&&(b=[]),Array.isArray(b)||(b=[b]);var $=[];return b.forEach(function(j){var _e=Math.floor(j);if(!(0<=_e&&_e<=255))throw new RangeError("Data bytes must be integers between 0 (0x00) and 255 (0xFF).");$.push(_e)}),this._midiOutput.send([_].concat($),parseFloat(k)||0),this},d.prototype.sendSysex=function(_,b,k){if(!a.sysexEnabled)throw new Error("Sysex message support must first be activated.");return k=k||{},_=[].concat(_),b.forEach(function($){if($<0||127<$)throw new RangeError("The data bytes of a sysex message must be integers between 0 (0x00) and 127 (0x7F).")}),b=_.concat(b,a.MIDI_SYSTEM_MESSAGES.sysexend),this.send(a.MIDI_SYSTEM_MESSAGES.sysex,b,this._parseTimeParameter(k.time)),this},d.prototype.sendTimecodeQuarterFrame=function(_,b){return b=b||{},this.send(a.MIDI_SYSTEM_MESSAGES.timecode,_,this._parseTimeParameter(b.time)),this},d.prototype.sendSongPosition=function(_,b){b=b||{};var k=(_=Math.floor(_)||0)>>7&127,$=127&_;return this.send(a.MIDI_SYSTEM_MESSAGES.songposition,[k,$],this._parseTimeParameter(b.time)),this},d.prototype.sendSongSelect=function(_,b){if(b=b||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(a.MIDI_SYSTEM_MESSAGES.songselect,[_],this._parseTimeParameter(b.time)),this},d.prototype.sendTuningRequest=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendClock=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStart=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendContinue=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStop=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendActiveSensing=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(_.time)),this},d.prototype.sendReset=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(_.time)),this},d.prototype.stopNote=function(_,b,k){if(_==="all")return this.sendChannelMode("allnotesoff",0,b,k);var $=64;return(k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&($=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&($=127*k.velocity),this._convertNoteToArray(_).forEach(function(j){a.toMIDIChannels(b).forEach(function(_e){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(_e-1),[j,Math.round($)],this._parseTimeParameter(k.time))}.bind(this))}.bind(this)),this},d.prototype.playNote=function(_,b,k){var $,j=64;if((k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&(j=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&(j=127*k.velocity),$=this._parseTimeParameter(k.time),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteon<<4)+(tt-1),[et,Math.round(j)],$)}.bind(this))}.bind(this)),!isNaN(k.duration)){k.duration<=0&&(k.duration=0);var _e=64;k.rawVelocity?!isNaN(k.release)&&0<=k.release&&k.release<=127&&(_e=k.release):!isNaN(k.release)&&0<=k.release&&k.release<=1&&(_e=127*k.release),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(tt-1),[et,Math.round(_e)],($||a.time)+k.duration)}.bind(this))}.bind(this))}return this},d.prototype.sendKeyAftertouch=function(_,b,k,$){var j=this;if($=$||{},b<1||16>7&127,tt=127&_e;return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("channelcoarsetuning",j,b,{time:k.time}),$.setRegisteredParameter("channelfinetuning",[et,tt],b,{time:k.time})}),this},d.prototype.setTuningProgram=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The program value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningprogram",_,b,{time:k.time})}),this},d.prototype.setTuningBank=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_)||0)&&_<=127))throw new RangeError("The bank value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningbank",_,b,{time:k.time})}),this},d.prototype.sendChannelMode=function(_,b,k,$){if($=$||{},typeof _=="string"){if(!(_=a.MIDI_CHANNEL_MODE_MESSAGES[_]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(_=Math.floor(_))&&_<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((b=Math.floor(b)||0)<0||127>7&127,et=127&j;return a.toMIDIChannels(b).forEach(function(tt){$.send((a.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(tt-1),[et,_e],$._parseTimeParameter(k.time))}),this},d.prototype._parseTimeParameter=function(_){var b,k=parseFloat(_);return typeof _=="string"&&_.substring(0,1)==="+"?k&&0a.time&&(b=k),b},d.prototype._convertNoteToArray=function(_){var b=[];return Array.isArray(_)||(_=[_]),_.forEach(function(k){b.push(a.guessNoteNumber(k))}),b},o.exports?o.exports=a:e.WebMidi||(e.WebMidi=a)})(commonjsGlobal)})(webmidi_min$1);var WebMidi$1=webmidi_min$1.exports,__awaiter$1=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class MidiInput extends events.exports.EventEmitter{constructor(e="all"){super(),this.deviceId=e,MidiInput.enabled().then(()=>{WebMidi$1.addListener("connected",s=>{s.port.type==="input"&&this._addListeners(s.port)}),WebMidi$1.addListener("disconnected",s=>{this._removeListeners(s.port)}),WebMidi$1.inputs.forEach(s=>this._addListeners(s))})}_addListeners(e){MidiInput.connectedDevices.has(e.id)||(MidiInput.connectedDevices.set(e.id,e),this.emit("connect",this._inputToDevice(e)),e.addListener("noteon","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyDown",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("noteoff","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyUp",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("controlchange","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&s.controller.name==="holdpedal"&&this.emit(s.value?"pedalDown":"pedalUp",{device:this._inputToDevice(e)})}))}_inputToDevice(e){return{name:e.name,id:e.id,manufacturer:e.manufacturer}}_removeListeners(e){if(MidiInput.connectedDevices.has(e.id)){const s=MidiInput.connectedDevices.get(e.id);this.emit("disconnect",this._inputToDevice(s)),MidiInput.connectedDevices.delete(e.id),s.removeListener("noteon"),s.removeListener("noteoff"),s.removeListener("controlchange")}}emit(e,s){return super.emit(e,s)}on(e,s){return super.on(e,s),this}once(e,s){return super.once(e,s),this}off(e,s){return super.off(e,s),this}static enabled(){return __awaiter$1(this,void 0,void 0,function*(){MidiInput._isEnabled||(yield new Promise((e,s)=>{WebMidi$1.enable(a=>{a?s(a):(MidiInput._isEnabled=!0,e())})}))})}static getDevices(){return __awaiter$1(this,void 0,void 0,function*(){return yield MidiInput.enabled(),WebMidi$1.inputs})}}MidiInput.connectedDevices=new Map;MidiInput._isEnabled=!1;var tonePiano=Object.freeze(Object.defineProperty({__proto__:null,Piano:Piano$1,MidiInput},Symbol.toStringTag,{value:"Module"}));const Tone$1=_Tone,{AutoFilter,Destination:Destination$1,Filter,Gain:Gain$1,isNote:isNote$2,Synth:Synth$1,PolySynth,MembraneSynth:MembraneSynth$1,MetalSynth,MonoSynth,AMSynth,DuoSynth,FMSynth,NoiseSynth,PluckSynth,Sampler:Sampler$1,getDestination,Players}=Tone$1,{Piano}=tonePiano,getDefaultSynth=()=>{const o=new PolySynth().chain(new Gain$1(.5),getDestination());return o.set({oscillator:{type:"triangle"},envelope:{release:.01}}),o};Pattern$4.prototype.tone=function(o){return this._withHap(e=>{const s=(a,c)=>{var b,k;let d,_=(k=(b=c.context)==null?void 0:b.velocity)!=null?k:.75;if(o instanceof PluckSynth)d=getPlayableNoteValue(c),o.triggerAttack(d,a);else if(o instanceof NoiseSynth)o.triggerAttackRelease(c.duration.valueOf(),a);else if(o instanceof Piano)d=getPlayableNoteValue(c),o.keyDown({note:d,time:a,velocity:_}),o.keyUp({note:d,time:a+c.duration.valueOf(),velocity:_});else if(o instanceof Sampler$1)d=getPlayableNoteValue(c),o.triggerAttackRelease(d,c.duration.valueOf(),a,_);else if(o instanceof Players){if(!o.has(c.value))throw new Error(`name "${c.value}" not defined for players`);const $=o.player(c.value);$.start(a),$.stop(a+c.duration.valueOf())}else d=getPlayableNoteValue(c),o.triggerAttackRelease(d,c.duration.valueOf(),a,_)};return e.setContext(wt(_t({},e.context),{instrument:o,onTrigger:s}))})};Pattern$4.prototype.define("tone",(o,e)=>e.tone(o),{composable:!0,patternified:!1});const amsynth=o=>new AMSynth(o),duosynth=o=>new DuoSynth(o),fmsynth=o=>new FMSynth(o),membrane=o=>new MembraneSynth$1(o),metal=o=>new MetalSynth(o),monosynth=o=>new MonoSynth(o),noise=o=>new NoiseSynth(o),pluck=o=>new PluckSynth(o),polysynth=o=>new PolySynth(o),sampler=(o,e)=>new Promise(s=>{const a=new Sampler$1(o,()=>s(a),e)}),players=(o,e="")=>(o=e?Object.fromEntries(Object.entries(o).map(([s,a])=>[s,e+a])):o,new Promise(s=>{const a=new Players(o,()=>s(a))})),synth=o=>new Synth$1(o),piano=async(o={velocities:1})=>{const e=new Piano(o);return await e.load(),e},vol=o=>new Gain$1(o),lowpass=o=>new Filter(o,"lowpass"),highpass=o=>new Filter(o,"highpass"),adsr=(o,e=.1,s=.4,a=.01)=>({envelope:{attack:o,decay:e,sustain:s,release:a}}),osc=o=>({oscillator:{type:o}}),out=()=>getDestination(),getDrawContext$1=(o="test-canvas")=>{let e=document.querySelector("#"+o);return e||(e=document.createElement("canvas"),e.id=o,e.width=window.innerWidth,e.height=window.innerHeight,e.style="pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0;z-index:5",document.body.prepend(e)),e.getContext("2d")};Pattern$4.prototype.draw=function(o,{from:e,to:s,onQuery:a}){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const c=getDrawContext$1();let d,_=[];const b=k=>{const $=Tone$1.getTransport().seconds;if(e!==void 0&&s!==void 0){const j=Math.floor($);if(d!==j){d=j;const _e=j+e,et=j+s;setTimeout(()=>{_=this._asNumber(!0).query(new State(new TimeSpan(_e,et))).filter(Boolean).filter(tt=>tt.part.begin.equals(tt.whole.begin)),a==null||a(_)},0)}}o(c,_,$,k),window.strudelAnimation=requestAnimationFrame(b)};return requestAnimationFrame(b),this};const cleanupDraw=()=>{getDrawContext$1().clearRect(0,0,window.innerWidth,window.innerHeight),window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation),window.strudelScheduler&&clearInterval(window.strudelScheduler)};var dist$7={},tokenizer={},utils$1={},unicode$2={};Object.defineProperty(unicode$2,"__esModule",{value:!0});unicode$2.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$2.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$2.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$2.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$2.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$2.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(utils$1,"__esModule",{value:!0});utils$1.isStrictModeReservedWord=isStrictModeReservedWord;utils$1.isWhiteSpace=isWhiteSpace;utils$1.isLineTerminator=isLineTerminator;utils$1.isIdentifierStart=isIdentifierStart$1;utils$1.isIdentifierPart=isIdentifierPart$1;utils$1.isDecimalDigit=isDecimalDigit;utils$1.getHexValue=getHexValue;var _unicode$2=unicode$2,strictReservedWords=["null","true","false","implements","interface","package","private","protected","public","static","let","if","in","do","var","for","new","try","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];function isStrictModeReservedWord(o){return strictReservedWords.indexOf(o)!==-1}function isWhiteSpace(o){return o<128?_unicode$2.whitespaceBool[o]:o===160||o>5759&&_unicode$2.whitespaceArray.indexOf(o)!==-1}function isLineTerminator(o){return o===10||o===13||o===8232||o===8233}function isIdentifierStart$1(o){return o<128?_unicode$2.idStartBool[o]:_unicode$2.idStartLargeRegex.test(String.fromCodePoint(o))}function isIdentifierPart$1(o){return o<128?_unicode$2.idContinueBool[o]:_unicode$2.idContinueLargeRegex.test(String.fromCodePoint(o))}function isDecimalDigit(o){return o>=48&&o<=57}function getHexValue(o){return o>="0"&&o<="9"?o.charCodeAt(0)-48:o>="a"&&o<="f"?o.charCodeAt(0)-87:o>="A"&&o<="F"?o.charCodeAt(0)-55:-1}var errors={};Object.defineProperty(errors,"__esModule",{value:!0});errors.ErrorMessages={UNEXPECTED_TOKEN:function o(e){return"Unexpected token "+JSON.stringify(e)},UNEXPECTED_ILLEGAL_TOKEN:function o(e){return"Unexpected "+JSON.stringify(e)},UNEXPECTED_ESCAPED_KEYWORD:"Unexpected escaped keyword",UNEXPECTED_NUMBER:"Unexpected number",UNEXPECTED_STRING:"Unexpected string",UNEXPECTED_IDENTIFIER:"Unexpected identifier",UNEXPECTED_RESERVED_WORD:"Unexpected reserved word",UNEXPECTED_TEMPLATE:"Unexpected template",UNEXPECTED_EOS:"Unexpected end of input",UNEXPECTED_LINE_TERMINATOR:"Unexpected line terminator",UNEXPECTED_COMMA_AFTER_REST:"Unexpected comma after rest",UNEXPECTED_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",NEWLINE_AFTER_THROW:"Illegal newline after throw",UNTERMINATED_REGEXP:"Invalid regular expression: missing /",INVALID_LAST_REST_PARAMETER:"Rest parameter must be last formal parameter",INVALID_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",INVALID_REGEXP_FLAGS:"Invalid regular expression flags",INVALID_REGEX:"Invalid regular expression",INVALID_LHS_IN_ASSIGNMENT:"Invalid left-hand side in assignment",INVALID_LHS_IN_BINDING:"Invalid left-hand side in binding",INVALID_LHS_IN_FOR_IN:"Invalid left-hand side in for-in",INVALID_LHS_IN_FOR_OF:"Invalid left-hand side in for-of",INVALID_LHS_IN_FOR_AWAIT:"Invalid left-hand side in for-await",INVALID_UPDATE_OPERAND:"Increment/decrement target must be an identifier or member expression",INVALID_EXPONENTIATION_LHS:"Unary expressions as the left operand of an exponentation expression must be disambiguated with parentheses",MULTIPLE_DEFAULTS_IN_SWITCH:"More than one default clause in switch statement",NO_CATCH_OR_FINALLY:"Missing catch or finally after try",ILLEGAL_RETURN:"Illegal return statement",ILLEGAL_ARROW_FUNCTION_PARAMS:"Illegal arrow function parameter list",INVALID_ASYNC_PARAMS:"Async function parameters must not contain await expressions",INVALID_VAR_INIT_FOR_IN:"Invalid variable declaration in for-in statement",INVALID_VAR_INIT_FOR_OF:"Invalid variable declaration in for-of statement",INVALID_VAR_INIT_FOR_AWAIT:"Invalid variable declaration in for-await statement",UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT:"Binding pattern appears without initializer in for statement init",ILLEGAL_PROPERTY:"Illegal property initializer",INVALID_ID_BINDING_STRICT_MODE:function o(e){return"The identifier "+JSON.stringify(e)+" must not be in binding position in strict mode"},INVALID_ID_IN_LABEL_STRICT_MODE:function o(e){return"The identifier "+JSON.stringify(e)+" must not be in label position in strict mode"},INVALID_ID_IN_EXPRESSION_STRICT_MODE:function o(e){return"The identifier "+JSON.stringify(e)+" must not be in expression position in strict mode"},INVALID_CALL_TO_SUPER:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',INVALID_DELETE_STRICT_MODE:"Identifier expressions must not be deleted in strict mode",DUPLICATE_BINDING:function o(e){return"Duplicate binding "+JSON.stringify(e)},ILLEGAL_ID_IN_LEXICAL_DECLARATION:function o(e){return"Lexical declarations must not have a binding named "+JSON.stringify(e)},UNITIALIZED_CONST:"Constant lexical declarations must have an initialiser",ILLEGAL_LABEL_IN_BODY:function o(e){return"The body of a "+e+" statement must not be a labeled function declaration"},ILLEGEAL_LABEL_IN_IF:"The consequent of an if statement must not be a labeled function declaration",ILLEGAL_LABEL_IN_ELSE:"The alternate of an if statement must not be a labeled function declaration",ILLEGAL_CONTINUE_WITHOUT_ITERATION_WITH_ID:function o(e){return"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e)},ILLEGAL_CONTINUE_WITHOUT_ITERATION:"Continue statement must be nested within an iteration statement",ILLEGAL_BREAK_WITHOUT_ITERATION_OR_SWITCH:"Break statement must be nested within an iteration statement or a switch statement",ILLEGAL_WITH_STRICT_MODE:"Strict mode code must not include a with statement",ILLEGAL_ACCESS_SUPER_MEMBER:"Member access on super must be in a method",ILLEGAL_SUPER_CALL:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',DUPLICATE_LABEL_DECLARATION:function o(e){return"Label "+JSON.stringify(e)+" has already been declared"},ILLEGAL_BREAK_WITHIN_LABEL:function o(e){return"Break statement must be nested within a statement with label "+JSON.stringify(e)},ILLEGAL_YIELD_EXPRESSIONS:function o(e){return e+" parameters must not contain yield expressions"},ILLEGAL_YIELD_IDENTIFIER:'"yield" may not be used as an identifier in this context',ILLEGAL_AWAIT_IDENTIFIER:'"await" may not be used as an identifier in this context',DUPLICATE_CONSTRUCTOR:"Duplicate constructor method in class",ILLEGAL_CONSTRUCTORS:"Constructors cannot be async, generators, getters or setters",ILLEGAL_STATIC_CLASS_NAME:'Static class methods cannot be named "prototype"',NEW_TARGET_ERROR:"new.target must be within function (but not arrow expression) code",DUPLICATE_EXPORT:function o(e){return"Duplicate export "+JSON.stringify(e)},UNDECLARED_BINDING:function o(e){return"Exported binding "+JSON.stringify(e)+" is not declared"},DUPLICATE_PROPTO_PROP:"Duplicate __proto__ property in object literal not allowed",ILLEGAL_LABEL_FUNC_DECLARATION:"Labeled FunctionDeclarations are disallowed in strict mode",ILLEGAL_FUNC_DECL_IF:"FunctionDeclarations in IfStatements are disallowed in strict mode",ILLEGAL_USE_STRICT:'Functions with non-simple parameter lists may not contain a "use strict" directive',ILLEGAL_EXPORTED_NAME:"Names of variables used in an export specifier from the current module must be identifiers",NO_OCTALS_IN_TEMPLATES:"Template literals may not contain octal escape sequences",NO_AWAIT_IN_ASYNC_PARAMS:'Async arrow parameters may not contain "await"'};Object.defineProperty(tokenizer,"__esModule",{value:!0});tokenizer.JsError=tokenizer.TokenType=tokenizer.TokenClass=void 0;var _slicedToArray=function(){function o(e,s){var a=[],c=!0,d=!1,_=void 0;try{for(var b=e[Symbol.iterator](),k;!(c=(k=b.next()).done)&&(a.push(k.value),!(s&&a.length===s));c=!0);}catch($){d=!0,_=$}finally{try{!c&&b.return&&b.return()}finally{if(d)throw _}}return a}return function(e,s){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return o(e,s);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass$e=function(){function o(e,s){for(var a=0;a"},Ident:{name:"Identifier",isIdentifierName:!0},Keyword:{name:"Keyword",isIdentifierName:!0},NumericLiteral:{name:"Numeric"},TemplateElement:{name:"Template"},Punctuator:{name:"Punctuator"},StringLiteral:{name:"String"},RegularExpression:{name:"RegularExpression"},Illegal:{name:"Illegal"}},TokenType=tokenizer.TokenType={EOS:{klass:TokenClass.Eof,name:"EOS"},LPAREN:{klass:TokenClass.Punctuator,name:"("},RPAREN:{klass:TokenClass.Punctuator,name:")"},LBRACK:{klass:TokenClass.Punctuator,name:"["},RBRACK:{klass:TokenClass.Punctuator,name:"]"},LBRACE:{klass:TokenClass.Punctuator,name:"{"},RBRACE:{klass:TokenClass.Punctuator,name:"}"},COLON:{klass:TokenClass.Punctuator,name:":"},SEMICOLON:{klass:TokenClass.Punctuator,name:";"},PERIOD:{klass:TokenClass.Punctuator,name:"."},ELLIPSIS:{klass:TokenClass.Punctuator,name:"..."},ARROW:{klass:TokenClass.Punctuator,name:"=>"},CONDITIONAL:{klass:TokenClass.Punctuator,name:"?"},INC:{klass:TokenClass.Punctuator,name:"++"},DEC:{klass:TokenClass.Punctuator,name:"--"},ASSIGN:{klass:TokenClass.Punctuator,name:"="},ASSIGN_BIT_OR:{klass:TokenClass.Punctuator,name:"|="},ASSIGN_BIT_XOR:{klass:TokenClass.Punctuator,name:"^="},ASSIGN_BIT_AND:{klass:TokenClass.Punctuator,name:"&="},ASSIGN_SHL:{klass:TokenClass.Punctuator,name:"<<="},ASSIGN_SHR:{klass:TokenClass.Punctuator,name:">>="},ASSIGN_SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>="},ASSIGN_ADD:{klass:TokenClass.Punctuator,name:"+="},ASSIGN_SUB:{klass:TokenClass.Punctuator,name:"-="},ASSIGN_MUL:{klass:TokenClass.Punctuator,name:"*="},ASSIGN_DIV:{klass:TokenClass.Punctuator,name:"/="},ASSIGN_MOD:{klass:TokenClass.Punctuator,name:"%="},ASSIGN_EXP:{klass:TokenClass.Punctuator,name:"**="},COMMA:{klass:TokenClass.Punctuator,name:","},OR:{klass:TokenClass.Punctuator,name:"||"},AND:{klass:TokenClass.Punctuator,name:"&&"},BIT_OR:{klass:TokenClass.Punctuator,name:"|"},BIT_XOR:{klass:TokenClass.Punctuator,name:"^"},BIT_AND:{klass:TokenClass.Punctuator,name:"&"},SHL:{klass:TokenClass.Punctuator,name:"<<"},SHR:{klass:TokenClass.Punctuator,name:">>"},SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>"},ADD:{klass:TokenClass.Punctuator,name:"+"},SUB:{klass:TokenClass.Punctuator,name:"-"},MUL:{klass:TokenClass.Punctuator,name:"*"},DIV:{klass:TokenClass.Punctuator,name:"/"},MOD:{klass:TokenClass.Punctuator,name:"%"},EXP:{klass:TokenClass.Punctuator,name:"**"},EQ:{klass:TokenClass.Punctuator,name:"=="},NE:{klass:TokenClass.Punctuator,name:"!="},EQ_STRICT:{klass:TokenClass.Punctuator,name:"==="},NE_STRICT:{klass:TokenClass.Punctuator,name:"!=="},LT:{klass:TokenClass.Punctuator,name:"<"},GT:{klass:TokenClass.Punctuator,name:">"},LTE:{klass:TokenClass.Punctuator,name:"<="},GTE:{klass:TokenClass.Punctuator,name:">="},INSTANCEOF:{klass:TokenClass.Keyword,name:"instanceof"},IN:{klass:TokenClass.Keyword,name:"in"},NOT:{klass:TokenClass.Punctuator,name:"!"},BIT_NOT:{klass:TokenClass.Punctuator,name:"~"},ASYNC:{klass:TokenClass.Keyword,name:"async"},AWAIT:{klass:TokenClass.Keyword,name:"await"},ENUM:{klass:TokenClass.Keyword,name:"enum"},DELETE:{klass:TokenClass.Keyword,name:"delete"},TYPEOF:{klass:TokenClass.Keyword,name:"typeof"},VOID:{klass:TokenClass.Keyword,name:"void"},BREAK:{klass:TokenClass.Keyword,name:"break"},CASE:{klass:TokenClass.Keyword,name:"case"},CATCH:{klass:TokenClass.Keyword,name:"catch"},CLASS:{klass:TokenClass.Keyword,name:"class"},CONTINUE:{klass:TokenClass.Keyword,name:"continue"},DEBUGGER:{klass:TokenClass.Keyword,name:"debugger"},DEFAULT:{klass:TokenClass.Keyword,name:"default"},DO:{klass:TokenClass.Keyword,name:"do"},ELSE:{klass:TokenClass.Keyword,name:"else"},EXPORT:{klass:TokenClass.Keyword,name:"export"},EXTENDS:{klass:TokenClass.Keyword,name:"extends"},FINALLY:{klass:TokenClass.Keyword,name:"finally"},FOR:{klass:TokenClass.Keyword,name:"for"},FUNCTION:{klass:TokenClass.Keyword,name:"function"},IF:{klass:TokenClass.Keyword,name:"if"},IMPORT:{klass:TokenClass.Keyword,name:"import"},LET:{klass:TokenClass.Keyword,name:"let"},NEW:{klass:TokenClass.Keyword,name:"new"},RETURN:{klass:TokenClass.Keyword,name:"return"},SUPER:{klass:TokenClass.Keyword,name:"super"},SWITCH:{klass:TokenClass.Keyword,name:"switch"},THIS:{klass:TokenClass.Keyword,name:"this"},THROW:{klass:TokenClass.Keyword,name:"throw"},TRY:{klass:TokenClass.Keyword,name:"try"},VAR:{klass:TokenClass.Keyword,name:"var"},WHILE:{klass:TokenClass.Keyword,name:"while"},WITH:{klass:TokenClass.Keyword,name:"with"},NULL:{klass:TokenClass.Keyword,name:"null"},TRUE:{klass:TokenClass.Keyword,name:"true"},FALSE:{klass:TokenClass.Keyword,name:"false"},YIELD:{klass:TokenClass.Keyword,name:"yield"},NUMBER:{klass:TokenClass.NumericLiteral,name:""},STRING:{klass:TokenClass.StringLiteral,name:""},REGEXP:{klass:TokenClass.RegularExpression,name:""},IDENTIFIER:{klass:TokenClass.Ident,name:""},CONST:{klass:TokenClass.Keyword,name:"const"},TEMPLATE:{klass:TokenClass.TemplateElement,name:""},ESCAPED_KEYWORD:{klass:TokenClass.Keyword,name:""},ILLEGAL:{klass:TokenClass.Illegal,name:""}},TT=TokenType,I=TT.ILLEGAL,F=!1,T=!0,ONE_CHAR_PUNCTUATOR=[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.NOT,I,I,I,TT.MOD,TT.BIT_AND,I,TT.LPAREN,TT.RPAREN,TT.MUL,TT.ADD,TT.COMMA,TT.SUB,TT.PERIOD,TT.DIV,I,I,I,I,I,I,I,I,I,I,TT.COLON,TT.SEMICOLON,TT.LT,TT.ASSIGN,TT.GT,TT.CONDITIONAL,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACK,I,TT.RBRACK,TT.BIT_XOR,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACE,TT.BIT_OR,TT.RBRACE,TT.BIT_NOT],PUNCTUATOR_START=[F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,F,F,T,T,F,T,T,T,T,T,T,F,T,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,F],JsError=tokenizer.JsError=function(o){_inherits$8(e,o);function e(s,a,c,d){_classCallCheck$i(this,e);var _=_possibleConstructorReturn$8(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,d));_.index=s;try{_.line=a,_.column=c}catch{}return _.parseErrorLine=a,_.parseErrorColumn=c,_.description=d,_.message="["+a+":"+c+"]: "+d,_}return e}(Error);function fromCodePoint$1(o){if(o<=65535)return String.fromCharCode(o);var e=String.fromCharCode(Math.floor((o-65536)/1024)+55296),s=String.fromCharCode((o-65536)%1024+56320);return e+s}function decodeUtf16(o,e){return(o-55296)*1024+(e-56320)+65536}var Tokenizer=function(){function o(e){_classCallCheck$i(this,o),this.source=e,this.index=0,this.line=0,this.lineStart=0,this.startIndex=0,this.startLine=0,this.startLineStart=0,this.lastIndex=0,this.lastLine=0,this.lastLineStart=0,this.hasLineTerminatorBeforeNext=!1,this.tokenIndex=0}return _createClass$e(o,[{key:"saveLexerState",value:function(){return{source:this.source,index:this.index,line:this.line,lineStart:this.lineStart,startIndex:this.startIndex,startLine:this.startLine,startLineStart:this.startLineStart,lastIndex:this.lastIndex,lastLine:this.lastLine,lastLineStart:this.lastLineStart,lookahead:this.lookahead,hasLineTerminatorBeforeNext:this.hasLineTerminatorBeforeNext,tokenIndex:this.tokenIndex}}},{key:"restoreLexerState",value:function(s){this.source=s.source,this.index=s.index,this.line=s.line,this.lineStart=s.lineStart,this.startIndex=s.startIndex,this.startLine=s.startLine,this.startLineStart=s.startLineStart,this.lastIndex=s.lastIndex,this.lastLine=s.lastLine,this.lastLineStart=s.lastLineStart,this.lookahead=s.lookahead,this.hasLineTerminatorBeforeNext=s.hasLineTerminatorBeforeNext,this.tokenIndex=s.tokenIndex}},{key:"createILLEGAL",value:function(){return this.startIndex=this.index,this.startLine=this.line,this.startLineStart=this.lineStart,this.index1?c-1:0),_=1;_10)return TokenType.IDENTIFIER;switch(s.length){case 2:switch(s.charAt(0)){case"i":switch(s.charAt(1)){case"f":return TokenType.IF;case"n":return TokenType.IN}break;case"d":if(s.charAt(1)==="o")return TokenType.DO;break}break;case 3:switch(s.charAt(0)){case"v":if(o.cse2(s,"a","r"))return TokenType.VAR;break;case"f":if(o.cse2(s,"o","r"))return TokenType.FOR;break;case"n":if(o.cse2(s,"e","w"))return TokenType.NEW;break;case"t":if(o.cse2(s,"r","y"))return TokenType.TRY;break;case"l":if(o.cse2(s,"e","t"))return TokenType.LET;break}break;case 4:switch(s.charAt(0)){case"t":if(o.cse3(s,"h","i","s"))return TokenType.THIS;if(o.cse3(s,"r","u","e"))return TokenType.TRUE;break;case"n":if(o.cse3(s,"u","l","l"))return TokenType.NULL;break;case"e":if(o.cse3(s,"l","s","e"))return TokenType.ELSE;if(o.cse3(s,"n","u","m"))return TokenType.ENUM;break;case"c":if(o.cse3(s,"a","s","e"))return TokenType.CASE;break;case"v":if(o.cse3(s,"o","i","d"))return TokenType.VOID;break;case"w":if(o.cse3(s,"i","t","h"))return TokenType.WITH;break}break;case 5:switch(s.charAt(0)){case"a":if(o.cse4(s,"s","y","n","c"))return TokenType.ASYNC;if(o.cse4(s,"w","a","i","t"))return TokenType.AWAIT;break;case"w":if(o.cse4(s,"h","i","l","e"))return TokenType.WHILE;break;case"b":if(o.cse4(s,"r","e","a","k"))return TokenType.BREAK;break;case"f":if(o.cse4(s,"a","l","s","e"))return TokenType.FALSE;break;case"c":if(o.cse4(s,"a","t","c","h"))return TokenType.CATCH;if(o.cse4(s,"o","n","s","t"))return TokenType.CONST;if(o.cse4(s,"l","a","s","s"))return TokenType.CLASS;break;case"t":if(o.cse4(s,"h","r","o","w"))return TokenType.THROW;break;case"y":if(o.cse4(s,"i","e","l","d"))return TokenType.YIELD;break;case"s":if(o.cse4(s,"u","p","e","r"))return TokenType.SUPER;break}break;case 6:switch(s.charAt(0)){case"r":if(o.cse5(s,"e","t","u","r","n"))return TokenType.RETURN;break;case"t":if(o.cse5(s,"y","p","e","o","f"))return TokenType.TYPEOF;break;case"d":if(o.cse5(s,"e","l","e","t","e"))return TokenType.DELETE;break;case"s":if(o.cse5(s,"w","i","t","c","h"))return TokenType.SWITCH;break;case"e":if(o.cse5(s,"x","p","o","r","t"))return TokenType.EXPORT;break;case"i":if(o.cse5(s,"m","p","o","r","t"))return TokenType.IMPORT;break}break;case 7:switch(s.charAt(0)){case"d":if(o.cse6(s,"e","f","a","u","l","t"))return TokenType.DEFAULT;break;case"f":if(o.cse6(s,"i","n","a","l","l","y"))return TokenType.FINALLY;break;case"e":if(o.cse6(s,"x","t","e","n","d","s"))return TokenType.EXTENDS;break}break;case 8:switch(s.charAt(0)){case"f":if(o.cse7(s,"u","n","c","t","i","o","n"))return TokenType.FUNCTION;break;case"c":if(o.cse7(s,"o","n","t","i","n","u","e"))return TokenType.CONTINUE;break;case"d":if(o.cse7(s,"e","b","u","g","g","e","r"))return TokenType.DEBUGGER;break}break;case 10:if(s==="instanceof")return TokenType.INSTANCEOF;break}return TokenType.IDENTIFIER}},{key:"skipSingleLineComment",value:function(s){for(this.index+=s;this.index=a)break;if(c=this.source.charCodeAt(this.index+1),c===47)this.skipSingleLineComment(2),s=!0;else if(c===42)s=this.skipMultiLineComment()||s;else break}else if(!this.moduleIsTheGoalSymbol&&s&&c===45){if(this.index+2>=a)break;if(this.source.charAt(this.index+1)==="-"&&this.source.charAt(this.index+2)===">")this.skipSingleLineComment(3);else break}else if(!this.moduleIsTheGoalSymbol&&c===60)if(this.source.slice(this.index+1,this.index+4)==="!--")this.skipSingleLineComment(4),s=!0;else break;else break}}},{key:"scanHexEscape2",value:function(){if(this.index+2>this.source.length)return-1;var s=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(s===-1)return-1;var a=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));return a===-1?-1:(this.index+=2,s<<4|a)}},{key:"scanUnicode",value:function(){if(this.source.charAt(this.index)==="{"){for(var s=this.index+1,a=0,c=void 0;s1114111)throw this.createILLEGAL();s++}if(c!=="}")throw this.createILLEGAL();if(s===this.index+1)throw++this.index,this.createILLEGAL();return this.index=s+1,a}if(this.index+4>this.source.length)return-1;var _=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(_===-1)return-1;var b=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));if(b===-1)return-1;var k=(0,_utils$1.getHexValue)(this.source.charAt(this.index+2));if(k===-1)return-1;var $=(0,_utils$1.getHexValue)(this.source.charAt(this.index+3));return $===-1?-1:(this.index+=4,_<<12|b<<8|k<<4|$)}},{key:"getEscapedIdentifier",value:function(){for(var s="",a=_utils$1.isIdentifierStart;this.index=this.source.length)throw this.createILLEGAL();if(this.source.charAt(this.index)!=="u")throw this.createILLEGAL();if(++this.index,d=this.scanUnicode(),d<0)throw this.createILLEGAL();c=fromCodePoint$1(d)}else if(d>=55296&&d<=56319){if(this.index>=this.source.length)throw this.createILLEGAL();var b=this.source.charCodeAt(this.index);if(++this.index,!(b>=56320&&b<=57343))throw this.createILLEGAL();d=decodeUtf16(d,b),c=fromCodePoint$1(d)}if(!a(d)){if(s.length<1)throw this.createILLEGAL();return this.index=_,s}a=_utils$1.isIdentifierPart,s+=c}return s}},{key:"getIdentifier",value:function(){for(var s=this.index,a=this.source.length,c=this.index,d=_utils$1.isIdentifierStart;c=55296&&b<=56319)return this.index=s,this.getEscapedIdentifier();if(!d(b))return this.index=c,this.source.slice(s,c);++c,d=_utils$1.isIdentifierPart}return this.index=c,this.source.slice(s,c)}},{key:"scanIdentifier",value:function(){var s=this.getLocation(),a=this.index,c=this.source.charAt(this.index)==="\\"?this.getEscapedIdentifier():this.getIdentifier(),d=this.getSlice(a,s);d.text=c;var _=this.index-a!==c.length,b=this.getKeyword(c);return _&&b!==TokenType.IDENTIFIER&&(b=TokenType.ESCAPED_KEYWORD),{type:b,value:c,slice:d,escaped:_}}},{key:"getLocation",value:function(){return{line:this.startLine+1,column:this.startIndex-this.startLineStart,offset:this.startIndex}}},{key:"getLastTokenEndLocation",value:function(){return{line:this.lastLine+1,column:this.lastIndex-this.lastLineStart,offset:this.lastIndex}}},{key:"getSlice",value:function(s,a){return{text:this.source.slice(s,this.index),start:s,startLocation:a,end:this.index}}},{key:"scanPunctuatorHelper",value:function(){var s=this.source.charAt(this.index);switch(s){case".":{var a=this.source.charAt(this.index+1);if(a!==".")return TokenType.PERIOD;var c=this.source.charAt(this.index+2);return c!=="."?TokenType.PERIOD:TokenType.ELLIPSIS}case"(":return TokenType.LPAREN;case")":case";":case",":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];case"{":return TokenType.LBRACE;case"}":case"[":case"]":case":":case"?":case"~":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];default:if(this.index+1":return TokenType.GTE;case"/":return TokenType.ASSIGN_DIV;case"%":return TokenType.ASSIGN_MOD;case"^":return TokenType.ASSIGN_BIT_XOR;case"&":return TokenType.ASSIGN_BIT_AND}}if(this.index+1"&&_===">")return this.index+3"&&_==="=")return TokenType.ASSIGN_SHR;if(s==="*"&&_==="=")return TokenType.ASSIGN_EXP}switch(s){case"*":return TokenType.EXP;case"+":return TokenType.INC;case"-":return TokenType.DEC;case"<":return TokenType.SHL;case">":return TokenType.SHR;case"&":return TokenType.AND;case"|":return TokenType.OR}}else if(s==="="&&d===">")return TokenType.ARROW}return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)]}},{key:"scanPunctuator",value:function(){var s=this.getLocation(),a=this.index,c=this.scanPunctuatorHelper();return this.index+=c.name.length,{type:c,value:c.name,slice:this.getSlice(a,s)}}},{key:"scanHexLiteral",value:function(s,a){for(var c=this.index;c="0"&&c<="7")this.index++;else{if((0,_utils$1.isIdentifierPart)(c.charCodeAt(0)))throw this.createILLEGAL();break}}if(this.index-s===2)throw this.createILLEGAL();return{type:TokenType.NUMBER,value:parseInt(this.getSlice(s,a).text.substr(2),8),slice:this.getSlice(s,a),octal:!1,noctal:!1}}},{key:"scanLegacyOctalLiteral",value:function(s,a){for(var c=!0;this.index="0"&&d<="7")this.index++;else if(d==="8"||d==="9")c=!1,this.index++;else{if((0,_utils$1.isIdentifierPart)(d.charCodeAt(0)))throw this.createILLEGAL();break}}var _=this.getSlice(s,a);return c?{type:TokenType.NUMBER,slice:_,value:parseInt(_.text.substr(1),8),octal:!0,noctal:!c}:(this.eatDecimalLiteralSuffix(),{type:TokenType.NUMBER,slice:_,value:+_.text,octal:!0,noctal:!c})}},{key:"scanNumericLiteral",value:function(){var s=this.source.charAt(this.index),a=this.getLocation(),c=this.index;if(s==="0")if(this.index++,this.index="0"&&s<="9")return this.scanLegacyOctalLiteral(c,a)}else{var d=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+d.text,slice:d,octal:!1,noctal:!1}}else if(s!==".")for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length){var _=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+_.text,slice:_,octal:!1,noctal:!1}}s=this.source.charAt(this.index)}if(this.eatDecimalLiteralSuffix(),this.index!==this.source.length&&(0,_utils$1.isIdentifierStart)(this.source.charCodeAt(this.index)))throw this.createILLEGAL();var b=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+b.text,slice:b,octal:!1,noctal:!1}}},{key:"eatDecimalLiteralSuffix",value:function(){var s=this.source.charAt(this.index);if(s==="."){if(this.index++,this.index===this.source.length)return;for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length)return;s=this.source.charAt(this.index)}}if(s==="e"||s==="E"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();if(s=this.source.charAt(this.index),s==="+"||s==="-"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();s=this.source.charAt(this.index)}if(s>="0"&&s<="9")for(;s>="0"&&s<="9"&&(this.index++,this.index!==this.source.length);)s=this.source.charAt(this.index);else throw this.createILLEGAL()}}},{key:"scanStringEscape",value:function(s,a){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();var c=this.source.charAt(this.index);if((0,_utils$1.isLineTerminator)(c.charCodeAt(0)))this.index++,c==="\r"&&this.source.charAt(this.index)===` -`&&this.index++,this.lineStart=this.index,this.line++;else switch(c){case"n":s+=` -`,this.index++;break;case"r":s+="\r",this.index++;break;case"t":s+=" ",this.index++;break;case"u":case"x":{var d=void 0;if(this.index++,this.index>=this.source.length)throw this.createILLEGAL();if(d=c==="u"?this.scanUnicode():this.scanHexEscape2(),d<0)throw this.createILLEGAL();s+=fromCodePoint$1(d);break}case"b":s+="\b",this.index++;break;case"f":s+="\f",this.index++;break;case"v":s+="\v",this.index++;break;default:if(c>="0"&&c<="7"){var _=this.index,b=1;c>="0"&&c<="3"&&(b=0);for(var k=0;b<3&&c>="0"&&c<="7";){if(this.index++,(b>0||c!=="0")&&(a=this.source.slice(_,this.index)),k*=8,k+=c-"0",b++,this.index===this.source.length)throw this.createILLEGAL();c=this.source.charAt(this.index)}k===0&&b===1&&(c==="8"||c==="9")&&(a=this.source.slice(_,this.index+1)),s+=String.fromCharCode(k)}else{if(c==="8"||c==="9")throw this.createILLEGAL();s+=c,this.index++}}return[s,a]}},{key:"scanStringLiteral",value:function(){var s="",a=this.source.charAt(this.index),c=this.getLocation(),d=this.index;this.index++;for(var _=null;this.index=this.source.length)return{type:TokenType.EOS,slice:this.getSlice(this.index,s)};var a=this.source.charCodeAt(this.index);if(a<128){if(PUNCTUATOR_START[a])return this.scanPunctuator();if((0,_utils$1.isIdentifierStart)(a)||a===92)return this.scanIdentifier();if(a===46)return this.index+1=48&&a<=57)return this.scanNumericLiteral();throw this.createILLEGAL()}else{if((0,_utils$1.isIdentifierStart)(a)||a>=55296&&a<=56319)return this.scanIdentifier();throw this.createILLEGAL()}}},{key:"eof",value:function(){return this.lookahead.type===TokenType.EOS}},{key:"lex",value:function(){var s=this.lookahead;return this.lookahead=this.advance(),this.tokenIndex++,s}}],[{key:"cse2",value:function(s,a,c){return s.charAt(1)===a&&s.charAt(2)===c}},{key:"cse3",value:function(s,a,c,d){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d}},{key:"cse4",value:function(s,a,c,d,_){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_}},{key:"cse5",value:function(s,a,c,d,_,b){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b}},{key:"cse6",value:function(s,a,c,d,_,b,k){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k}},{key:"cse7",value:function(s,a,c,d,_,b,k,$){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k&&s.charAt(7)===$}}]),o}();tokenizer.default=Tokenizer;var parser$1={},dist$6={},mappings=new Map([["General_Category",new Map([["C","Other"],["Cc","Control"],["cntrl","Control"],["Cf","Format"],["Cn","Unassigned"],["Co","Private_Use"],["Cs","Surrogate"],["L","Letter"],["LC","Cased_Letter"],["Ll","Lowercase_Letter"],["Lm","Modifier_Letter"],["Lo","Other_Letter"],["Lt","Titlecase_Letter"],["Lu","Uppercase_Letter"],["M","Mark"],["Combining_Mark","Mark"],["Mc","Spacing_Mark"],["Me","Enclosing_Mark"],["Mn","Nonspacing_Mark"],["N","Number"],["Nd","Decimal_Number"],["digit","Decimal_Number"],["Nl","Letter_Number"],["No","Other_Number"],["P","Punctuation"],["punct","Punctuation"],["Pc","Connector_Punctuation"],["Pd","Dash_Punctuation"],["Pe","Close_Punctuation"],["Pf","Final_Punctuation"],["Pi","Initial_Punctuation"],["Po","Other_Punctuation"],["Ps","Open_Punctuation"],["S","Symbol"],["Sc","Currency_Symbol"],["Sk","Modifier_Symbol"],["Sm","Math_Symbol"],["So","Other_Symbol"],["Z","Separator"],["Zl","Line_Separator"],["Zp","Paragraph_Separator"],["Zs","Space_Separator"],["Other","Other"],["Control","Control"],["Format","Format"],["Unassigned","Unassigned"],["Private_Use","Private_Use"],["Surrogate","Surrogate"],["Letter","Letter"],["Cased_Letter","Cased_Letter"],["Lowercase_Letter","Lowercase_Letter"],["Modifier_Letter","Modifier_Letter"],["Other_Letter","Other_Letter"],["Titlecase_Letter","Titlecase_Letter"],["Uppercase_Letter","Uppercase_Letter"],["Mark","Mark"],["Spacing_Mark","Spacing_Mark"],["Enclosing_Mark","Enclosing_Mark"],["Nonspacing_Mark","Nonspacing_Mark"],["Number","Number"],["Decimal_Number","Decimal_Number"],["Letter_Number","Letter_Number"],["Other_Number","Other_Number"],["Punctuation","Punctuation"],["Connector_Punctuation","Connector_Punctuation"],["Dash_Punctuation","Dash_Punctuation"],["Close_Punctuation","Close_Punctuation"],["Final_Punctuation","Final_Punctuation"],["Initial_Punctuation","Initial_Punctuation"],["Other_Punctuation","Other_Punctuation"],["Open_Punctuation","Open_Punctuation"],["Symbol","Symbol"],["Currency_Symbol","Currency_Symbol"],["Modifier_Symbol","Modifier_Symbol"],["Math_Symbol","Math_Symbol"],["Other_Symbol","Other_Symbol"],["Separator","Separator"],["Line_Separator","Line_Separator"],["Paragraph_Separator","Paragraph_Separator"],["Space_Separator","Space_Separator"]])],["Script",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])],["Script_Extensions",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])]]);const propertyToValueAliases=mappings,matchPropertyValue=function(o,e){const s=propertyToValueAliases.get(o);if(!s)throw new Error(`Unknown property \`${o}\`.`);const a=s.get(e);if(a)return a;throw new Error(`Unknown value \`${e}\` for property \`${o}\`.`)};var unicodeMatchPropertyValueEcmascript=matchPropertyValue,unicodeCanonicalPropertyNamesEcmascript=new Set(["General_Category","Script","Script_Extensions","Alphabetic","Any","ASCII","ASCII_Hex_Digit","Assigned","Bidi_Control","Bidi_Mirrored","Case_Ignorable","Cased","Changes_When_Casefolded","Changes_When_Casemapped","Changes_When_Lowercased","Changes_When_NFKC_Casefolded","Changes_When_Titlecased","Changes_When_Uppercased","Dash","Default_Ignorable_Code_Point","Deprecated","Diacritic","Emoji","Emoji_Component","Emoji_Modifier","Emoji_Modifier_Base","Emoji_Presentation","Extended_Pictographic","Extender","Grapheme_Base","Grapheme_Extend","Hex_Digit","ID_Continue","ID_Start","Ideographic","IDS_Binary_Operator","IDS_Trinary_Operator","Join_Control","Logical_Order_Exception","Lowercase","Math","Noncharacter_Code_Point","Pattern_Syntax","Pattern_White_Space","Quotation_Mark","Radical","Regional_Indicator","Sentence_Terminal","Soft_Dotted","Terminal_Punctuation","Unified_Ideograph","Uppercase","Variation_Selector","White_Space","XID_Continue","XID_Start"]),unicodePropertyAliasesEcmascript=new Map([["scx","Script_Extensions"],["sc","Script"],["gc","General_Category"],["AHex","ASCII_Hex_Digit"],["Alpha","Alphabetic"],["Bidi_C","Bidi_Control"],["Bidi_M","Bidi_Mirrored"],["Cased","Cased"],["CI","Case_Ignorable"],["CWCF","Changes_When_Casefolded"],["CWCM","Changes_When_Casemapped"],["CWKCF","Changes_When_NFKC_Casefolded"],["CWL","Changes_When_Lowercased"],["CWT","Changes_When_Titlecased"],["CWU","Changes_When_Uppercased"],["Dash","Dash"],["Dep","Deprecated"],["DI","Default_Ignorable_Code_Point"],["Dia","Diacritic"],["Ext","Extender"],["Gr_Base","Grapheme_Base"],["Gr_Ext","Grapheme_Extend"],["Hex","Hex_Digit"],["IDC","ID_Continue"],["Ideo","Ideographic"],["IDS","ID_Start"],["IDSB","IDS_Binary_Operator"],["IDST","IDS_Trinary_Operator"],["Join_C","Join_Control"],["LOE","Logical_Order_Exception"],["Lower","Lowercase"],["Math","Math"],["NChar","Noncharacter_Code_Point"],["Pat_Syn","Pattern_Syntax"],["Pat_WS","Pattern_White_Space"],["QMark","Quotation_Mark"],["Radical","Radical"],["RI","Regional_Indicator"],["SD","Soft_Dotted"],["STerm","Sentence_Terminal"],["Term","Terminal_Punctuation"],["UIdeo","Unified_Ideograph"],["Upper","Uppercase"],["VS","Variation_Selector"],["WSpace","White_Space"],["space","White_Space"],["XIDC","XID_Continue"],["XIDS","XID_Start"]]);const canonicalProperties=unicodeCanonicalPropertyNamesEcmascript,propertyAliases=unicodePropertyAliasesEcmascript,matchProperty=function(o){if(canonicalProperties.has(o))return o;if(propertyAliases.has(o))return propertyAliases.get(o);throw new Error(`Unknown property: ${o}`)};var unicodeMatchPropertyEcmascript=matchProperty,unicode$1={};Object.defineProperty(unicode$1,"__esModule",{value:!0});unicode$1.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$1.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$1.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$1.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$1.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$1.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(dist$6,"__esModule",{value:!0});var _createClass$d=function(){function o(e,s){for(var a=0;a=this.pattern.length}},{key:"backreference",value:function(s){s>this.largestBackreference&&(this.largestBackreference=s)}},{key:"nextCodePoint",value:function(){return this.empty()?null:this.unicode?String.fromCodePoint(this.pattern.codePointAt(this.index)):this.pattern.charAt(this.index)}},{key:"skipCodePoint",value:function(){this.index+=this.nextCodePoint().length}},{key:"eat",value:function(s){return this.index+s.length>this.pattern.length||this.pattern.slice(this.index,this.index+s.length)!==s?!1:(this.index+=s.length,!0)}},{key:"eatIdentifierCodePoint",value:function(){var s=void 0,a=this.index,c=void 0;if(this.match("\\u")){if(this.skipCodePoint(),s=acceptUnicodeEscape(this),!s.matched)return this.index=a,null;s=s.value,c=String.fromCodePoint(s)}else{if(c=this.nextCodePoint(),c==null)return this.index=a,null;this.index+=c.length,s=c.codePointAt(0)}return{character:c,characterValue:s}}},{key:"eatIdentifierStart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="_"||a.character==="$"||isIdentifierStart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatIdentifierPart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="\u200C"||a.character==="\u200D"||a.character==="$"||isIdentifierPart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatAny",value:function(){for(var s=arguments.length,a=Array(s),c=0;c1&&arguments[1]!==void 0?arguments[1]:{},s=e.unicode,a=s===void 0?!1:s,c=new PatternAcceptorState(o,a),d=acceptDisjunction(c);if(d.matched){if(c.unicode&&c.largestBackreference>c.capturingGroups)return!1;if(c.groupingNames.length>0||c.unicode){var _=!0,b=!1,k=void 0;try{for(var $=c.backreferenceNames[Symbol.iterator](),j;!(_=(j=$.next()).done);_=!0){var _e=j.value;if(c.groupingNames.indexOf(_e)===-1)return!1}}catch(et){b=!0,k=et}finally{try{!_&&$.return&&$.return()}finally{if(b)throw k}}}}return d.matched};var backtrackOnFailure=function o(e){return function(s){var a=s.index,c=s.largestBackreference,d=s.capturingGroups,_=e(s);return _.matched||(s.index=a,s.largestBackreference=c,s.capturingGroups=d),_}},acceptUnicodeEscape=backtrackOnFailure(function(o){if(!o.eat("u"))return{matched:!1};if(o.unicode&&o.eat("{")){for(var e=[];!o.eat("}");){var s=o.eatAny.apply(o,_toConsumableArray$6(hexDigits));if(s===null)return{matched:!1};e.push(s)}var a=parseInt(e.join(""),16);return a>1114111?{matched:!1}:{matched:!0,value:a}}var c=[0,0,0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});if(c.some(function(b){return b===null}))return{matched:!1};var d=parseInt(c.join(""),16);if(o.unicode&&d>=55296&&d<=56319){var _=backtrackOnFailure(function(b){if(!b.eat("\\u"))return{matched:!1};var k=[0,0,0,0].map(function(){return b.eatAny.apply(b,_toConsumableArray$6(hexDigits))});if(k.some(function(j){return j===null}))return{matched:!1};var $=parseInt(k.join(""),16);return $<56320||$>=57344?{matched:!1}:{matched:!0,value:65536+((d&1023)<<10)+($&1023)}})(o);if(_.matched)return _}return{matched:!0,value:d}}),acceptDisjunction=function o(e,s){do{if(s!==void 0&&e.eat(s))return{matched:!0};if(e.match("|"))continue;if(!acceptAlternative(e,s).matched)return{matched:!1}}while(e.eat("|"));return{matched:s===void 0||!!e.eat(s)}},acceptAlternative=function o(e,s){for(;!e.match("|")&&!e.empty()&&(s===void 0||!e.match(s));)if(!acceptTerm(e).matched)return{matched:!1};return{matched:!0}},anyOf=function o(){for(var e=arguments.length,s=Array(e),a=0;aparseInt(_))return{matched:!1}}return c.eat("}")?(c.eat("?"),{matched:!0}):{matched:!1}})(s);return a.matched?a:{matched:!s.unicode}}else s.eatAny("*","+","?")&&s.eat("?");return{matched:!0}})},acceptCharacterExcept=function o(e){return function(s){var a=s.nextCodePoint();return a===null||e.indexOf(a)!==-1?{matched:!1}:(s.skipCodePoint(),{matched:!0})}},acceptPatternCharacter=acceptCharacterExcept(syntaxCharacters),acceptExtendedPatternCharacter=acceptCharacterExcept(extendedSyntaxCharacters),acceptInvalidBracedQuantifier=function o(e){return backtrackOnFailure(function(s){return{matched:!!(s.eat("{")&&acceptDecimal(s).matched&&(!s.eat(",")||s.match("}")||acceptDecimal(s).matched)&&s.eat("}"))}})(e)},acceptAtom=function o(e){if(e.unicode)return anyOf(acceptPatternCharacter,function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);var s=anyOf(function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),backtrackOnFailure(function(a){return{matched:a.eat("\\")&&a.match("c")}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);return!s.matched&&acceptInvalidBracedQuantifier(e).matched?{matched:!1}:s.matched?s:acceptExtendedPatternCharacter(e)},acceptGrouping=backtrackOnFailure(function(o){if(!o.eat("("))return{matched:!1};var e=backtrackOnFailure(function(s){return o.eat("?")?acceptGroupName(s):{matched:!1}})(o);if(!acceptDisjunction(o,")").matched)return{matched:!1};if(e.matched){if(o.groupingNames.indexOf(e.data)!==-1)return{matched:!1};o.groupingNames.push(e.data)}return o.capturingGroups++,{matched:!0}}),acceptDecimalEscape=backtrackOnFailure(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(decimalDigits));return e===null?{matched:!1}:e==="0"?{matched:!0}:(o.backreference(parseInt(e+(o.eatNaturalNumber()||""))),{matched:!0})}),acceptCharacterClassEscape=function o(e){return e.eatAny("d","D","s","S","w","W")?{matched:!0}:e.unicode?backtrackOnFailure(function(s){return!s.eat("p{")&&!s.eat("P{")?{matched:!1}:acceptUnicodePropertyValueExpression(s).matched?{matched:!!s.eat("}")}:{matched:!1}})(e):{matched:!1}},acceptUnicodePropertyName=function o(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},acceptUnicodePropertyValue=function o(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(_toConsumableArray$6(decimalDigits),["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},illegalLoneUnicodePropertyNames=["General_Category","Script","Script_Extensions","scx","sc","gc"],generalCategoryValues=_mappings2.default.get("General_Category"),acceptLoneUnicodePropertyNameOrValue=function o(e){var s=acceptUnicodePropertyValue(e);return!s.matched||illegalLoneUnicodePropertyNames.includes(s.data)?{matched:!1}:{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyEcmascript2.default)(s.data)})||generalCategoryValues.get(s.data)!=null}},acceptUnicodePropertyValueExpression=function o(e){return anyOf(backtrackOnFailure(function(s){var a=acceptUnicodePropertyName(s);if(!a.matched||!s.eat("="))return{matched:!1};var c=acceptUnicodePropertyValue(s);return c.matched?{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyValueEcmascript2.default)(_unicodePropertyAliasesEcmascript2.default.get(a.data)||a.data,c.data)})}:{matched:!1}}),backtrackOnFailure(acceptLoneUnicodePropertyNameOrValue))(e)},acceptCharacterEscape=anyOf(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(controlEscapeCharacters));return e===null?{matched:!1}:{matched:!0,value:controlEscapeCharacterValues[e]}},backtrackOnFailure(function(o){if(!o.eat("c"))return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(controlCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)%32}}),backtrackOnFailure(function(o){return!o.eat("0")||o.eatAny.apply(o,_toConsumableArray$6(decimalDigits))?{matched:!1}:{matched:!0,value:0}}),backtrackOnFailure(function(o){if(!o.eat("x"))return{matched:!1};var e=[0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});return e.some(function(s){return s===null})?{matched:!1}:{matched:!0,value:parseInt(e.join(""),16)}}),acceptUnicodeEscape,backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(octalDigits));if(e===null)return{matched:!1};var s=parseInt(e,8);if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s};var a=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),c=parseInt(a,8);if(s<4){if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s<<3|c};var d=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),_=parseInt(d,8);return{matched:!0,value:s<<6|c<<3|_}}return{matched:!0,value:s<<3|c}}),backtrackOnFailure(function(o){if(!o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(syntaxCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)}}),function(o){return!o.unicode||!o.eat("/")?{matched:!1}:{matched:!0,value:"/".charCodeAt(0)}},backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.nextCodePoint();return e!==null&&e!=="c"&&e!=="k"?(o.skipCodePoint(),{matched:!0,value:e.codePointAt(0)}):{matched:!1}})),acceptGroupNameBackreference=backtrackOnFailure(function(o){if(!o.eat("k"))return{matched:!1};var e=acceptGroupName(o);return e.matched?(o.backreferenceNames.push(e.data),{matched:!0}):(o.backreferenceNames.push(INVALID_NAMED_BACKREFERENCE_SENTINEL),{matched:!0})}),acceptGroupName=backtrackOnFailure(function(o){if(!o.eat("<"))return{matched:!1};var e=[],s=o.eatIdentifierStart();if(!s)return{matched:!1};e.push(s);for(var a=void 0;a=o.eatIdentifierPart();)e.push(a);return o.eat(">")?{matched:e.length>0,data:e.join("")}:{matched:!1}}),acceptAtomEscape=anyOf(acceptDecimalEscape,acceptCharacterClassEscape,acceptCharacterEscape,acceptGroupNameBackreference),acceptCharacterClass=backtrackOnFailure(function(o){if(!o.eat("["))return{matched:!1};o.eat("^");var e=anyOf(function(k){return{matched:!!k.eat("b"),value:8}},function(k){return{matched:k.unicode&&!!k.eat("-"),value:"-".charCodeAt(0)}},backtrackOnFailure(function(k){if(k.unicode||!k.eat("c"))return{matched:!1};var $=k.eatAny.apply(k,_toConsumableArray$6(decimalDigits).concat(["_"]));return $===null?{matched:!1}:{matched:!0,value:$.charCodeAt(0)%32}}),acceptCharacterClassEscape,acceptCharacterEscape,function(k){return{matched:!k.unicode&&!!k.eat("k"),value:107}}),s=function($){var j=$.nextCodePoint();if(j==="]"||j==="-"||j===null)return{matched:!1};if(j!=="\\")return $.skipCodePoint(),{matched:!0,value:j.codePointAt(0)};$.eat("\\");var _e=e($);return!_e.matched&&$.nextCodePoint()==="c"&&!$.unicode?{matched:!0,value:"\\".charCodeAt(0)}:_e},a=function($){return $.eat("-")?{matched:!0,value:"-".charCodeAt(0)}:s($)},c=function($,j){var _e=function(nt){return nt.value===void 0&&nt.matched};if($.eat("-")){if($.match("]"))return{matched:!0};var et=a($);return et.matched?$.unicode&&(_e(j)||_e(et))?{matched:!1}:!(!$.unicode&&(_e(j)||_e(et)))&&j.value>et.value?{matched:!1}:$.match("]")?{matched:!0}:d($):{matched:!1}}return $.match("]")?{matched:!0}:_($)},d=function($){var j=a($);return j.matched?c($,j):{matched:!1}},_=function($){var j=s($);return j.matched?c($,j):{matched:!1}};if(o.eat("]"))return{matched:!0};var b=d(o);return b.matched&&o.eat("]"),b}),dist$5={};Object.defineProperty(dist$5,"__esModule",{value:!0});function _classCallCheck$g(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$5.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$5.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};dist$5.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$g(this,o),this.type="ArrayExpression",this.elements=s};dist$5.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$g(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$5.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$g(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$5.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$5.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$5.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$5.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$5.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="AwaitExpression",this.expression=s};dist$5.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$g(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$5.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="BindingIdentifier",this.name=s};dist$5.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$5.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$5.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$5.Block=function o(e){var s=e.statements;_classCallCheck$g(this,o),this.type="Block",this.statements=s};dist$5.BlockStatement=function o(e){var s=e.block;_classCallCheck$g(this,o),this.type="BlockStatement",this.block=s};dist$5.BreakStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="BreakStatement",this.label=s};dist$5.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$5.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$g(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$5.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$5.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$g(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$5.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$5.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$g(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$5.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$5.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$5.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ComputedPropertyName",this.expression=s};dist$5.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$5.ContinueStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="ContinueStatement",this.label=s};dist$5.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$g(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$5.DebuggerStatement=function o(){_classCallCheck$g(this,o),this.type="DebuggerStatement"};dist$5.Directive=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="Directive",this.rawValue=s};dist$5.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$g(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$5.EmptyStatement=function o(){_classCallCheck$g(this,o),this.type="EmptyStatement"};dist$5.Export=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="Export",this.declaration=s};dist$5.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$5.ExportDefault=function o(e){var s=e.body;_classCallCheck$g(this,o),this.type="ExportDefault",this.body=s};dist$5.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$5.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$g(this,o),this.type="ExportLocals",this.namedExports=s};dist$5.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ExpressionStatement",this.expression=s};dist$5.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$5.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$5.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$5.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,d=e.body;_classCallCheck$g(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=d};dist$5.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$g(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$5.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$5.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$g(this,o),this.type="Getter",this.name=s,this.body=a};dist$5.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="IdentifierExpression",this.name=s};dist$5.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$5.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$5.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$5.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$5.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$g(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$5.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$5.LiteralInfinityExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralInfinityExpression"};dist$5.LiteralNullExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralNullExpression"};dist$5.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralNumericExpression",this.value=s};dist$5.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$g(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};dist$5.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralStringExpression",this.value=s};dist$5.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$g(this,o),this.type="Module",this.directives=s,this.items=a};dist$5.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$5.NewTargetExpression=function o(){_classCallCheck$g(this,o),this.type="NewTargetExpression"};dist$5.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$5.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$5.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$g(this,o),this.type="ObjectExpression",this.properties=s};dist$5.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ReturnStatement",this.expression=s};dist$5.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="Script",this.directives=s,this.statements=a};dist$5.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$g(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$5.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="ShorthandProperty",this.name=s};dist$5.SpreadElement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadElement",this.expression=s};dist$5.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadProperty",this.expression=s};dist$5.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};dist$5.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$5.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="StaticPropertyName",this.value=s};dist$5.Super=function o(){_classCallCheck$g(this,o),this.type="Super"};dist$5.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$g(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$5.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$g(this,o),this.type="SwitchDefault",this.consequent=s};dist$5.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$g(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$5.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$g(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=d};dist$5.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="TemplateElement",this.rawValue=s};dist$5.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$g(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$5.ThisExpression=function o(){_classCallCheck$g(this,o),this.type="ThisExpression"};dist$5.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ThrowStatement",this.expression=s};dist$5.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$g(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$5.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$g(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$5.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$g(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$5.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$g(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$5.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$g(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$5.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$5.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$5.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$g(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$5.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$g(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$5.YieldExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldExpression",this.expression=s};dist$5.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldGeneratorExpression",this.expression=s};Object.defineProperty(parser$1,"__esModule",{value:!0});parser$1.GenericParser=void 0;var _createClass$c=function(){function o(e,s){for(var a=0;a":Precedence$1.Relational,"<=":Precedence$1.Relational,">=":Precedence$1.Relational,in:Precedence$1.Relational,instanceof:Precedence$1.Relational,"<<":Precedence$1.BitwiseSHIFT,">>":Precedence$1.BitwiseSHIFT,">>>":Precedence$1.BitwiseSHIFT,"+":Precedence$1.Additive,"-":Precedence$1.Additive,"*":Precedence$1.Multiplicative,"%":Precedence$1.Multiplicative,"/":Precedence$1.Multiplicative};function isValidSimpleAssignmentTarget(o){if(o==null)return!1;switch(o.type){case"IdentifierExpression":case"ComputedMemberExpression":case"StaticMemberExpression":return!0}return!1}function isPrefixOperator(o){switch(o.type){case _tokenizer.TokenType.INC:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TYPEOF:return!0}return!1}function isUpdateOperator(o){return o.type===_tokenizer.TokenType.INC||o.type===_tokenizer.TokenType.DEC}parser$1.GenericParser=function(o){_inherits$7(e,o);function e(s){_classCallCheck$f(this,e);var a=_possibleConstructorReturn$7(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,s));return a.allowIn=!0,a.inFunctionBody=!1,a.inParameter=!1,a.allowYieldExpression=!1,a.allowAwaitExpression=!1,a.firstAwaitLocation=null,a.module=!1,a.moduleIsTheGoalSymbol=!1,a.strict=!1,a.isBindingElement=!0,a.isAssignmentTarget=!0,a.firstExprError=null,a}return _createClass$c(e,[{key:"match",value:function(a){return this.lookahead.type===a}},{key:"matchIdentifier",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IDENTIFIER:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.YIELD:case _tokenizer.TokenType.ASYNC:return!0;case _tokenizer.TokenType.AWAIT:return this.moduleIsTheGoalSymbol?!1:(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0);case _tokenizer.TokenType.ESCAPED_KEYWORD:return this.lookahead.value==="await"&&!this.moduleIsTheGoalSymbol?(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0):this.lookahead.value==="let"||this.lookahead.value==="yield"||this.lookahead.value==="async"}return!1}},{key:"eat",value:function(a){return this.lookahead.type===a?this.lex():null}},{key:"expect",value:function(a){if(this.lookahead.type===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"matchContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a}},{key:"expectContextualKeyword",value:function(a){if(this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"eatContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a?this.lex():null}},{key:"consumeSemicolon",value:function(){if(!this.eat(_tokenizer.TokenType.SEMICOLON)&&!this.hasLineTerminatorBeforeNext&&!this.eof()&&!this.match(_tokenizer.TokenType.RBRACE))throw this.createUnexpected(this.lookahead)}},{key:"startNode",value:function(a){return a}},{key:"copyNode",value:function(a,c){return c}},{key:"finishNode",value:function(a){return a}},{key:"parseModule",value:function(){this.moduleIsTheGoalSymbol=this.module=this.strict=!0,this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Module({directives:d,items:_}),a)}},{key:"parseScript",value:function(){this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Script({directives:d,statements:_}),a)}},{key:"parseFunctionBody",value:function(){var a=this.inFunctionBody,c=this.module,d=this.strict;this.inFunctionBody=!0,this.module=!1;var _=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);var b=new AST.FunctionBody(this.parseBody());return this.expect(_tokenizer.TokenType.RBRACE),b=this.finishNode(b,_),this.inFunctionBody=a,this.module=c,this.strict=d,b}},{key:"parseBody",value:function(){for(var a=[],c=[],d=!0,_=null;!(this.eof()||this.match(_tokenizer.TokenType.RBRACE));){var b=this.lookahead,k=b.slice.text,$=b.type===_tokenizer.TokenType.STRING,j=this.module,_e=this.getLocation(),et=this.startNode(),tt=j?this.parseModuleItem():this.parseStatementListItem();if(d)if($&&tt.type==="ExpressionStatement"&&tt.expression.type==="LiteralStringExpression"){!_&&b.octal&&(_=this.createErrorWithLocation(_e,"Unexpected legacy octal escape sequence: \\"+b.octal));var nt=k.slice(1,-1);nt==="use strict"&&(this.strict=!0),a.push(this.finishNode(new AST.Directive({rawValue:nt}),et))}else{if(d=!1,_&&this.strict)throw _;c.push(tt)}else c.push(tt)}if(_&&this.strict)throw _;return{directives:a,statements:c}}},{key:"parseImportSpecifier",value:function(){var a=this.startNode(),c=void 0;if(this.matchIdentifier()){if(c=this.parseIdentifier(),!this.eatContextualKeyword("as"))return this.finishNode(new AST.ImportSpecifier({name:null,binding:this.finishNode(new AST.BindingIdentifier({name:c}),a)}),a)}else this.lookahead.type.klass.isIdentifierName&&(c=this.parseIdentifierName(),this.expectContextualKeyword("as"));return this.finishNode(new AST.ImportSpecifier({name:c,binding:this.parseBindingIdentifier()}),a)}},{key:"parseNameSpaceBinding",value:function(){return this.expect(_tokenizer.TokenType.MUL),this.expectContextualKeyword("as"),this.parseBindingIdentifier()}},{key:"parseNamedImports",value:function(){var a=[];for(this.expect(_tokenizer.TokenType.LBRACE);!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseImportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseFromClause",value:function(){this.expectContextualKeyword("from");var a=this.expect(_tokenizer.TokenType.STRING).str;return a}},{key:"parseImportDeclaration",value:function(){var a=this.startNode(),c=null,d=void 0;if(this.expect(_tokenizer.TokenType.IMPORT),this.match(_tokenizer.TokenType.STRING))return d=this.lex().str,this.consumeSemicolon(),this.finishNode(new AST.Import({defaultBinding:null,namedImports:[],moduleSpecifier:d}),a);if(this.matchIdentifier()&&(c=this.parseBindingIdentifier(),!this.eat(_tokenizer.TokenType.COMMA))){var _=new AST.Import({defaultBinding:c,namedImports:[],moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(_,a)}if(this.match(_tokenizer.TokenType.MUL)){var b=new AST.ImportNamespace({defaultBinding:c,namespaceBinding:this.parseNameSpaceBinding(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(b,a)}else if(this.match(_tokenizer.TokenType.LBRACE)){var k=new AST.Import({defaultBinding:c,namedImports:this.parseNamedImports(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(k,a)}throw this.createUnexpected(this.lookahead)}},{key:"parseExportSpecifier",value:function(){var a=this.startNode(),c=this.finishNode({type:EXPORT_UNKNOWN_SPECIFIER,isIdentifier:this.matchIdentifier(),value:this.parseIdentifierName()},a);if(this.eatContextualKeyword("as")){var d=this.parseIdentifierName();return this.finishNode({name:c,exportedName:d},a)}return this.finishNode({name:c,exportedName:null},a)}},{key:"parseExportClause",value:function(){this.expect(_tokenizer.TokenType.LBRACE);for(var a=[];!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseExportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseExportDeclaration",value:function(){var a=this,c=this.startNode(),d=void 0;switch(this.expect(_tokenizer.TokenType.EXPORT),this.lookahead.type){case _tokenizer.TokenType.MUL:this.lex(),d=new AST.ExportAllFrom({moduleSpecifier:this.parseFromClause()}),this.consumeSemicolon();break;case _tokenizer.TokenType.LBRACE:{var _=this.parseExportClause(),b=null;this.matchContextualKeyword("from")?(b=this.parseFromClause(),d=new AST.ExportFrom({namedExports:_.map(function(_e){return a.copyNode(_e,new AST.ExportFromSpecifier({name:_e.name.value,exportedName:_e.exportedName}))}),moduleSpecifier:b})):(_.forEach(function(_e){var et=_e.name;if(!et.isIdentifier)throw a.createError(_errors$1.ErrorMessages.ILLEGAL_EXPORTED_NAME)}),d=new AST.ExportLocals({namedExports:_.map(function(_e){return a.copyNode(_e,new AST.ExportLocalSpecifier({name:a.copyNode(_e.name,new AST.IdentifierExpression({name:_e.name.value})),exportedName:_e.exportedName}))})})),this.consumeSemicolon();break}case _tokenizer.TokenType.CLASS:d=new AST.Export({declaration:this.parseClass({isExpr:!1,inDefault:!1})});break;case _tokenizer.TokenType.FUNCTION:d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.ASYNC:{var k=this.startNode();this.lex(),d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:k})});break}case _tokenizer.TokenType.DEFAULT:switch(this.lex(),this.lookahead.type){case _tokenizer.TokenType.FUNCTION:d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.CLASS:d=new AST.ExportDefault({body:this.parseClass({isExpr:!1,inDefault:!0})});break;case _tokenizer.TokenType.ASYNC:{var $=this.startNode(),j=this.saveLexerState();if(this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)){d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!1,isAsync:!0,startState:$})});break}this.restoreLexerState(j)}default:d=new AST.ExportDefault({body:this.parseAssignmentExpression()}),this.consumeSemicolon();break}break;case _tokenizer.TokenType.VAR:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.CONST:d=new AST.Export({declaration:this.parseVariableDeclaration(!0)}),this.consumeSemicolon();break;default:throw this.createUnexpected(this.lookahead)}return this.finishNode(d,c)}},{key:"parseModuleItem",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IMPORT:return this.parseImportDeclaration();case _tokenizer.TokenType.EXPORT:return this.parseExportDeclaration();default:return this.parseStatementListItem()}}},{key:"lookaheadLexicalDeclaration",value:function(){if(this.match(_tokenizer.TokenType.LET)||this.match(_tokenizer.TokenType.CONST)){var a=this.saveLexerState();if(this.lex(),this.matchIdentifier()||this.match(_tokenizer.TokenType.LBRACE)||this.match(_tokenizer.TokenType.LBRACK))return this.restoreLexerState(a),!0;this.restoreLexerState(a)}return!1}},{key:"parseStatementListItem",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.FUNCTION:return this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1});case _tokenizer.TokenType.CLASS:return this.parseClass({isExpr:!1,inDefault:!1});case _tokenizer.TokenType.ASYNC:{var a=this.getLocation(),c=this.saveLexerState();return this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:a}):(this.restoreLexerState(c),this.parseStatement())}default:if(this.lookaheadLexicalDeclaration()){var d=this.startNode();return this.finishNode(this.parseVariableDeclarationStatement(),d)}return this.parseStatement()}}},{key:"parseStatement",value:function(){var a=this.startNode(),c=this.isolateCoverGrammar(this.parseStatementHelper);return this.finishNode(c,a)}},{key:"parseStatementHelper",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.SEMICOLON:return this.parseEmptyStatement();case _tokenizer.TokenType.LBRACE:return this.parseBlockStatement();case _tokenizer.TokenType.LPAREN:return this.parseExpressionStatement();case _tokenizer.TokenType.BREAK:return this.parseBreakStatement();case _tokenizer.TokenType.CONTINUE:return this.parseContinueStatement();case _tokenizer.TokenType.DEBUGGER:return this.parseDebuggerStatement();case _tokenizer.TokenType.DO:return this.parseDoWhileStatement();case _tokenizer.TokenType.FOR:return this.parseForStatement();case _tokenizer.TokenType.IF:return this.parseIfStatement();case _tokenizer.TokenType.RETURN:return this.parseReturnStatement();case _tokenizer.TokenType.SWITCH:return this.parseSwitchStatement();case _tokenizer.TokenType.THROW:return this.parseThrowStatement();case _tokenizer.TokenType.TRY:return this.parseTryStatement();case _tokenizer.TokenType.VAR:return this.parseVariableDeclarationStatement();case _tokenizer.TokenType.WHILE:return this.parseWhileStatement();case _tokenizer.TokenType.WITH:return this.parseWithStatement();case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.CLASS:throw this.createUnexpected(this.lookahead);default:{var a=this.saveLexerState();if(this.eat(_tokenizer.TokenType.LET)){if(this.match(_tokenizer.TokenType.LBRACK))throw this.restoreLexerState(a),this.createUnexpected(this.lookahead);this.restoreLexerState(a)}else if(this.eat(_tokenizer.TokenType.ASYNC)){if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION))throw this.createUnexpected(this.lookahead);this.restoreLexerState(a)}var c=this.parseExpression();if(c.type==="IdentifierExpression"&&this.eat(_tokenizer.TokenType.COLON)){var d=this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement();return new AST.LabeledStatement({label:c.name,body:d})}return this.consumeSemicolon(),new AST.ExpressionStatement({expression:c})}}}},{key:"parseEmptyStatement",value:function(){return this.lex(),new AST.EmptyStatement}},{key:"parseBlockStatement",value:function(){return new AST.BlockStatement({block:this.parseBlock()})}},{key:"parseExpressionStatement",value:function(){var a=this.parseExpression();return this.consumeSemicolon(),new AST.ExpressionStatement({expression:a})}},{key:"parseBreakStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.BreakStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.BreakStatement({label:a})}},{key:"parseContinueStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ContinueStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.ContinueStatement({label:a})}},{key:"parseDebuggerStatement",value:function(){return this.lex(),this.consumeSemicolon(),new AST.DebuggerStatement}},{key:"parseDoWhileStatement",value:function(){this.lex();var a=this.parseStatement();this.expect(_tokenizer.TokenType.WHILE),this.expect(_tokenizer.TokenType.LPAREN);var c=this.parseExpression();return this.expect(_tokenizer.TokenType.RPAREN),this.eat(_tokenizer.TokenType.SEMICOLON),new AST.DoWhileStatement({body:a,test:c})}},{key:"parseForStatement",value:function(){this.lex();var a=this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT);this.expect(_tokenizer.TokenType.LPAREN);var c=null,d=null;if(a&&this.match(_tokenizer.TokenType.SEMICOLON))throw this.createUnexpected(this.lookahead);if(this.eat(_tokenizer.TokenType.SEMICOLON))return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:null,test:c,update:d,body:this.getIteratorStatementEpilogue()});var _=this.match(_tokenizer.TokenType.LET),b=this.lookaheadLexicalDeclaration(),k=this.startNode();if(this.match(_tokenizer.TokenType.VAR)||b){var $=this.allowIn;this.allowIn=!1;var j=this.parseVariableDeclaration(!1);if(this.allowIn=$,j.declarators.length===1&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){var _e=void 0,et=j.declarators[0];if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);if(et.init!==null&&(this.strict||j.kind!=="var"||et.binding.type!=="BindingIdentifier"))throw this.createError(_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_IN);_e=AST.ForInStatement,this.lex(),d=this.parseExpression()}else{if(et.init!==null)throw this.createError(a?_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_OF);a?_e=AST.ForAwaitStatement:_e=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression()}var tt=this.getIteratorStatementEpilogue();return new _e({left:j,right:d,body:tt})}else if(a)throw this.createUnexpected(this.lookahead);if(this.expect(_tokenizer.TokenType.SEMICOLON),j.declarators.some(function(at){return at.binding.type!=="BindingIdentifier"&&at.init===null}))throw this.createError(_errors$1.ErrorMessages.UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT);return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:j,test:c,update:d,body:this.getIteratorStatementEpilogue()})}var nt=this.allowIn;this.allowIn=!1;var it=this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget);if(this.allowIn=nt,this.isAssignmentTarget&&it.type!=="AssignmentExpression"&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){if((it.type==="ObjectAssignmentTarget"||it.type==="ArrayAssignmentTarget")&&(this.firstExprError=null),_&&this.matchContextualKeyword("of"))throw this.createError(a?_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);var rt=void 0;if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);rt=AST.ForInStatement,this.lex(),d=this.parseExpression()}else a?rt=AST.ForAwaitStatement:rt=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression();return new rt({left:this.transformDestructuring(it),right:d,body:this.getIteratorStatementEpilogue()})}else if(a)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT);if(this.firstExprError)throw this.firstExprError;for(;this.eat(_tokenizer.TokenType.COMMA);){var st=this.parseAssignmentExpression();it=this.finishNode(new AST.BinaryExpression({left:it,operator:",",right:st}),k)}if(this.match(_tokenizer.TokenType.IN))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_IN);if(this.matchContextualKeyword("of"))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);return this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:it,test:c,update:d,body:this.getIteratorStatementEpilogue()})}},{key:"getIteratorStatementEpilogue",value:function(){this.expect(_tokenizer.TokenType.RPAREN);var a=this.parseStatement();return a}},{key:"parseIfStatementChild",value:function(){return this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement()}},{key:"parseIfStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseIfStatementChild(),d=null;return this.eat(_tokenizer.TokenType.ELSE)&&(d=this.parseIfStatementChild()),new AST.IfStatement({test:a,consequent:c,alternate:d})}},{key:"parseReturnStatement",value:function(){if(!this.inFunctionBody)throw this.createError(_errors$1.ErrorMessages.ILLEGAL_RETURN);if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ReturnStatement({expression:null});var a=null;return!this.match(_tokenizer.TokenType.RBRACE)&&!this.eof()&&(a=this.parseExpression()),this.consumeSemicolon(),new AST.ReturnStatement({expression:a})}},{key:"parseSwitchStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();if(this.expect(_tokenizer.TokenType.RPAREN),this.expect(_tokenizer.TokenType.LBRACE),this.eat(_tokenizer.TokenType.RBRACE))return new AST.SwitchStatement({discriminant:a,cases:[]});var c=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT)){var d=this.parseSwitchDefault(),_=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT))throw this.createError(_errors$1.ErrorMessages.MULTIPLE_DEFAULTS_IN_SWITCH);return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatementWithDefault({discriminant:a,preDefaultCases:c,defaultCase:d,postDefaultCases:_})}return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatement({discriminant:a,cases:c})}},{key:"parseSwitchCases",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT));)a.push(this.parseSwitchCase());return a}},{key:"parseSwitchCase",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.CASE),this.finishNode(new AST.SwitchCase({test:this.parseExpression(),consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchDefault",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.DEFAULT),this.finishNode(new AST.SwitchDefault({consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchCaseBody",value:function(){return this.expect(_tokenizer.TokenType.COLON),this.parseStatementListInSwitchCaseBody()}},{key:"parseStatementListInSwitchCaseBody",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT)||this.match(_tokenizer.TokenType.CASE));)a.push(this.parseStatementListItem());return a}},{key:"parseThrowStatement",value:function(){var a=this.lex();if(this.hasLineTerminatorBeforeNext)throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.NEWLINE_AFTER_THROW);var c=this.parseExpression();return this.consumeSemicolon(),new AST.ThrowStatement({expression:c})}},{key:"parseTryStatement",value:function(){this.lex();var a=this.parseBlock();if(this.match(_tokenizer.TokenType.CATCH)){var c=this.parseCatchClause();if(this.eat(_tokenizer.TokenType.FINALLY)){var d=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:c,finalizer:d})}return new AST.TryCatchStatement({body:a,catchClause:c})}if(this.eat(_tokenizer.TokenType.FINALLY)){var _=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:null,finalizer:_})}throw this.createError(_errors$1.ErrorMessages.NO_CATCH_OR_FINALLY)}},{key:"parseVariableDeclarationStatement",value:function(){var a=this.parseVariableDeclaration(!0);return this.consumeSemicolon(),new AST.VariableDeclarationStatement({declaration:a})}},{key:"parseWhileStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression(),c=this.getIteratorStatementEpilogue();return new AST.WhileStatement({test:a,body:c})}},{key:"parseWithStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseStatement();return new AST.WithStatement({object:a,body:c})}},{key:"parseCatchClause",value:function(){var a=this.startNode();if(this.lex(),this.expect(_tokenizer.TokenType.LPAREN),this.match(_tokenizer.TokenType.RPAREN)||this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var c=this.parseBindingTarget();this.expect(_tokenizer.TokenType.RPAREN);var d=this.parseBlock();return this.finishNode(new AST.CatchClause({binding:c,body:d}),a)}},{key:"parseBlock",value:function(){var a=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);for(var c=[];!this.match(_tokenizer.TokenType.RBRACE);)c.push(this.parseStatementListItem());return this.expect(_tokenizer.TokenType.RBRACE),this.finishNode(new AST.Block({statements:c}),a)}},{key:"parseVariableDeclaration",value:function(a){var c=this.startNode(),d=this.lex(),_=d.type===_tokenizer.TokenType.VAR?"var":d.type===_tokenizer.TokenType.CONST?"const":"let",b=this.parseVariableDeclaratorList(a);return this.finishNode(new AST.VariableDeclaration({kind:_,declarators:b}),c)}},{key:"parseVariableDeclaratorList",value:function(a){var c=[];do c.push(this.parseVariableDeclarator(a));while(this.eat(_tokenizer.TokenType.COMMA));return c}},{key:"parseVariableDeclarator",value:function(a){var c=this.startNode();if(this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var d=this.allowIn;this.allowIn=!0;var _=this.parseBindingTarget();this.allowIn=d,a&&_.type!=="BindingIdentifier"&&!this.match(_tokenizer.TokenType.ASSIGN)&&this.expect(_tokenizer.TokenType.ASSIGN);var b=null;return this.eat(_tokenizer.TokenType.ASSIGN)&&(b=this.parseAssignmentExpression()),this.finishNode(new AST.VariableDeclarator({binding:_,init:b}),c)}},{key:"isolateCoverGrammar",value:function(a){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;if(this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=a.call(this),this.firstExprError!==null)throw this.firstExprError;return this.isBindingElement=c,this.isAssignmentTarget=d,this.firstExprError=_,b}},{key:"inheritCoverGrammar",value:function(a){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;return this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=a.call(this),this.isBindingElement=this.isBindingElement&&c,this.isAssignmentTarget=this.isAssignmentTarget&&d,this.firstExprError=_||this.firstExprError,b}},{key:"parseExpression",value:function(){var a=this.startNode(),c=this.parseAssignmentExpression();if(this.match(_tokenizer.TokenType.COMMA))for(;!this.eof()&&this.match(_tokenizer.TokenType.COMMA);){this.lex();var d=this.parseAssignmentExpression();c=this.finishNode(new AST.BinaryExpression({left:c,operator:",",right:d}),a)}return c}},{key:"finishArrowParams",value:function(a){var c=a.params,d=c===void 0?null:c,_=a.rest,b=_===void 0?null:_;if(a.type!==ARROW_EXPRESSION_PARAMS)if(a.type==="IdentifierExpression")d=[this.targetToBinding(this.transformDestructuring(a))];else throw this.createUnexpected(this.lookahead);return this.copyNode(a,new AST.FormalParameters({items:d,rest:b}))}},{key:"parseArrowExpressionTail",value:function(a,c,d){this.expect(_tokenizer.TokenType.ARROW);var _=this.allowYieldExpression,b=this.allowAwaitExpression,k=this.firstAwaitLocation;this.allowYieldExpression=!1,this.allowAwaitExpression=c,this.firstAwaitLocation=null;var $=void 0;if(this.match(_tokenizer.TokenType.LBRACE)){var j=this.allowIn;this.allowIn=!0,$=this.parseFunctionBody(),this.allowIn=j}else $=this.parseAssignmentExpression();return this.allowYieldExpression=_,this.allowAwaitExpression=b,this.firstAwaitLocation=k,this.finishNode(new AST.ArrowExpression({isAsync:c,params:a,body:$}),d)}},{key:"parseAssignmentExpression",value:function(){return this.isolateCoverGrammar(this.parseAssignmentExpressionOrTarget)}},{key:"parseAssignmentExpressionOrTarget",value:function(){var a=this.startNode();if(this.allowYieldExpression&&this.match(_tokenizer.TokenType.YIELD))return this.isBindingElement=this.isAssignmentTarget=!1,this.parseYieldExpression();var c=this.parseConditionalExpression();if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){this.isBindingElement=this.isAssignmentTarget=!1,this.firstExprError=null;var d=c.type===ARROW_EXPRESSION_PARAMS&&c.isAsync;return this.parseArrowExpressionTail(this.finishArrowParams(c),d,a)}var _=!1,b=this.lookahead;switch(b.type){case _tokenizer.TokenType.ASSIGN_BIT_OR:case _tokenizer.TokenType.ASSIGN_BIT_XOR:case _tokenizer.TokenType.ASSIGN_BIT_AND:case _tokenizer.TokenType.ASSIGN_SHL:case _tokenizer.TokenType.ASSIGN_SHR:case _tokenizer.TokenType.ASSIGN_SHR_UNSIGNED:case _tokenizer.TokenType.ASSIGN_ADD:case _tokenizer.TokenType.ASSIGN_SUB:case _tokenizer.TokenType.ASSIGN_MUL:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.ASSIGN_MOD:case _tokenizer.TokenType.ASSIGN_EXP:_=!0;break}if(_){if(!this.isAssignmentTarget||!isValidSimpleAssignmentTarget(c))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else if(b.type===_tokenizer.TokenType.ASSIGN){if(!this.isAssignmentTarget)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else return c;this.lex();var k=this.parseAssignmentExpression();this.firstExprError=null;var $=void 0;return b.type===_tokenizer.TokenType.ASSIGN?$=new AST.AssignmentExpression({binding:c,expression:k}):($=new AST.CompoundAssignmentExpression({binding:c,operator:b.type.name,expression:k}),this.isBindingElement=this.isAssignmentTarget=!1),this.finishNode($,a)}},{key:"targetToBinding",value:function(a){var c=this;if(a===null)return null;switch(a.type){case"AssignmentTargetIdentifier":return this.copyNode(a,new AST.BindingIdentifier({name:a.name}));case"ArrayAssignmentTarget":return this.copyNode(a,new AST.ArrayBinding({elements:a.elements.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(a.rest)}));case"ObjectAssignmentTarget":return this.copyNode(a,new AST.ObjectBinding({properties:a.properties.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(a.rest)}));case"AssignmentTargetPropertyIdentifier":return this.copyNode(a,new AST.BindingPropertyIdentifier({binding:this.targetToBinding(a.binding),init:a.init}));case"AssignmentTargetPropertyProperty":return this.copyNode(a,new AST.BindingPropertyProperty({name:a.name,binding:this.targetToBinding(a.binding)}));case"AssignmentTargetWithDefault":return this.copyNode(a,new AST.BindingWithDefault({binding:this.targetToBinding(a.binding),init:a.init}))}throw new Error("Not reached")}},{key:"transformDestructuring",value:function(a){var c=this;switch(a.type){case"DataProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyProperty({name:a.name,binding:this.transformDestructuringWithDefault(a.expression)}));case"ShorthandProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyIdentifier({binding:this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name.name})),init:null}));case"ObjectExpression":{var d=a.properties.length>0?a.properties[a.properties.length-1]:void 0;return d!=null&&d.type==="SpreadProperty"?this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.transformDestructuring(d.expression)})):this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"ArrayExpression":{var _=a.elements[a.elements.length-1];return _!=null&&_.type==="SpreadElement"?this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.copyNode(_.expression,this.transformDestructuring(_.expression))})):this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"IdentifierExpression":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name}));case"StaticPropertyName":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.value}));case"ComputedMemberExpression":return this.copyNode(a,new AST.ComputedMemberAssignmentTarget({object:a.object,expression:a.expression}));case"StaticMemberExpression":return this.copyNode(a,new AST.StaticMemberAssignmentTarget({object:a.object,property:a.property}));case"ArrayAssignmentTarget":case"ObjectAssignmentTarget":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":case"AssignmentTargetIdentifier":case"AssignmentTargetPropertyIdentifier":case"AssignmentTargetPropertyProperty":case"AssignmentTargetWithDefault":return a}throw new Error("Not reached")}},{key:"transformDestructuringWithDefault",value:function(a){switch(a.type){case"AssignmentExpression":return this.copyNode(a,new AST.AssignmentTargetWithDefault({binding:this.transformDestructuring(a.binding),init:a.expression}))}return this.transformDestructuring(a)}},{key:"lookaheadAssignmentExpression",value:function(){if(this.matchIdentifier())return!0;switch(this.lookahead.type){case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.CLASS:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.FALSE:case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.INC:case _tokenizer.TokenType.LBRACE:case _tokenizer.TokenType.LBRACK:case _tokenizer.TokenType.LPAREN:case _tokenizer.TokenType.NEW:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.NULL:case _tokenizer.TokenType.NUMBER:case _tokenizer.TokenType.STRING:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.SUPER:case _tokenizer.TokenType.THIS:case _tokenizer.TokenType.TRUE:case _tokenizer.TokenType.TYPEOF:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TEMPLATE:return!0}return!1}},{key:"parseYieldExpression",value:function(){var a=this.startNode();if(this.lex(),this.hasLineTerminatorBeforeNext)return this.finishNode(new AST.YieldExpression({expression:null}),a);var c=!!this.eat(_tokenizer.TokenType.MUL),d=null;(c||this.lookaheadAssignmentExpression())&&(d=this.parseAssignmentExpression());var _=c?AST.YieldGeneratorExpression:AST.YieldExpression;return this.finishNode(new _({expression:d}),a)}},{key:"parseConditionalExpression",value:function(){var a=this.startNode(),c=this.parseBinaryExpression();if(this.firstExprError)return c;if(this.eat(_tokenizer.TokenType.CONDITIONAL)){this.isBindingElement=this.isAssignmentTarget=!1;var d=this.allowIn;this.allowIn=!0;var _=this.isolateCoverGrammar(this.parseAssignmentExpression);this.allowIn=d,this.expect(_tokenizer.TokenType.COLON);var b=this.isolateCoverGrammar(this.parseAssignmentExpression);return this.finishNode(new AST.ConditionalExpression({test:c,consequent:_,alternate:b}),a)}return c}},{key:"isBinaryOperator",value:function(a){switch(a){case _tokenizer.TokenType.OR:case _tokenizer.TokenType.AND:case _tokenizer.TokenType.BIT_OR:case _tokenizer.TokenType.BIT_XOR:case _tokenizer.TokenType.BIT_AND:case _tokenizer.TokenType.EQ:case _tokenizer.TokenType.NE:case _tokenizer.TokenType.EQ_STRICT:case _tokenizer.TokenType.NE_STRICT:case _tokenizer.TokenType.LT:case _tokenizer.TokenType.GT:case _tokenizer.TokenType.LTE:case _tokenizer.TokenType.GTE:case _tokenizer.TokenType.INSTANCEOF:case _tokenizer.TokenType.SHL:case _tokenizer.TokenType.SHR:case _tokenizer.TokenType.SHR_UNSIGNED:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.MUL:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.MOD:return!0;case _tokenizer.TokenType.IN:return this.allowIn;default:return!1}}},{key:"parseBinaryExpression",value:function(){var a=this,c=this.startNode(),d=this.parseExponentiationExpression();if(this.firstExprError)return d;var _=this.lookahead.type;if(!this.isBinaryOperator(_))return d;this.isBindingElement=this.isAssignmentTarget=!1,this.lex();var b=[];b.push({startState:c,left:d,operator:_,precedence:BinaryPrecedence$1[_.name]}),c=this.startNode();var k=this.isolateCoverGrammar(this.parseExponentiationExpression);for(_=this.lookahead.type;this.isBinaryOperator(_);){for(var $=BinaryPrecedence$1[_.name];b.length&&$<=b[b.length-1].precedence;){var j=b[b.length-1],_e=j.operator;d=j.left,b.pop(),c=j.startState,k=this.finishNode(new AST.BinaryExpression({left:d,operator:_e.name,right:k}),c)}this.lex(),b.push({startState:c,left:k,operator:_,precedence:$}),c=this.startNode(),k=this.isolateCoverGrammar(this.parseExponentiationExpression),_=this.lookahead.type}return b.reduceRight(function(et,tt){return a.finishNode(new AST.BinaryExpression({left:tt.left,operator:tt.operator.name,right:et}),tt.startState)},k)}},{key:"parseExponentiationExpression",value:function(){var a=this.startNode(),c=this.lookahead.type===_tokenizer.TokenType.LPAREN,d=this.parseUnaryExpression();if(this.lookahead.type!==_tokenizer.TokenType.EXP)return d;if(d.type==="UnaryExpression"&&!c)throw this.createError(_errors$1.ErrorMessages.INVALID_EXPONENTIATION_LHS);this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=this.isolateCoverGrammar(this.parseExponentiationExpression);return this.finishNode(new AST.BinaryExpression({left:d,operator:"**",right:_}),a)}},{key:"parseUnaryExpression",value:function(){if(this.lookahead.type.klass!==_tokenizer.TokenClass.Punctuator&&this.lookahead.type.klass!==_tokenizer.TokenClass.Keyword)return this.parseUpdateExpression();var a=this.startNode();if(this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT)){this.isBindingElement=this.isAssignmentTarget=!1;var c=this.isolateCoverGrammar(this.parseUnaryExpression);return this.finishNode(new AST.AwaitExpression({expression:c}),a)}var d=this.lookahead;if(!isPrefixOperator(d))return this.parseUpdateExpression();this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=void 0;if(isUpdateOperator(d)){var b=this.getLocation(),k=this.isolateCoverGrammar(this.parseUnaryExpression);if(!isValidSimpleAssignmentTarget(k))throw this.createErrorWithLocation(b,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);k=this.transformDestructuring(k),_=new AST.UpdateExpression({isPrefix:!0,operator:d.value,operand:k})}else{var $=this.isolateCoverGrammar(this.parseUnaryExpression);_=new AST.UnaryExpression({operator:d.value,operand:$})}return this.finishNode(_,a)}},{key:"parseUpdateExpression",value:function(){var a=this.getLocation(),c=this.startNode(),d=this.parseLeftHandSideExpression({allowCall:!0});if(this.firstExprError||this.hasLineTerminatorBeforeNext)return d;var _=this.lookahead;if(!isUpdateOperator(_))return d;if(this.lex(),this.isBindingElement=this.isAssignmentTarget=!1,!isValidSimpleAssignmentTarget(d))throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);return d=this.transformDestructuring(d),this.finishNode(new AST.UpdateExpression({isPrefix:!1,operator:_.value,operand:d}),c)}},{key:"parseLeftHandSideExpression",value:function(a){var c=this,d=a.allowCall,_=this.startNode(),b=this.allowIn;this.allowIn=!0;var k=void 0,$=this.lookahead;if(this.eat(_tokenizer.TokenType.SUPER))if(this.isBindingElement=!1,this.isAssignmentTarget=!1,k=this.finishNode(new AST.Super,_),this.match(_tokenizer.TokenType.LPAREN))if(d)k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.LBRACK))k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_),this.isAssignmentTarget=!0;else if(this.match(_tokenizer.TokenType.PERIOD))k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_),this.isAssignmentTarget=!0;else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.NEW))this.isBindingElement=this.isAssignmentTarget=!1,k=this.parseNewExpression();else if(this.match(_tokenizer.TokenType.ASYNC)){if(k=this.parsePrimaryExpression(),k.type==="IdentifierExpression"&&d&&!this.hasLineTerminatorBeforeNext){if(this.matchIdentifier()){var j=this.startNode(),_e=this.allowAwaitExpression;this.allowAwaitExpression=!0;var et=this.parseBindingIdentifier();return this.allowAwaitExpression=_e,this.ensureArrow(),this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:[et],rest:null,isAsync:!0},j)}if(this.match(_tokenizer.TokenType.LPAREN)){var tt=this.startNode(),nt=this.firstAwaitLocation;this.firstAwaitLocation=null;var it=this.parseArgumentList(),rt=it.args,st=it.locationFollowingFirstSpread;if(this.isBindingElement&&!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){if(st!==null)throw this.createErrorWithLocation(st,_errors$1.ErrorMessages.UNEXPECTED_TOKEN(","));if(this.firstAwaitLocation!==null)throw this.createErrorWithLocation(this.firstAwaitLocation,_errors$1.ErrorMessages.NO_AWAIT_IN_ASYNC_PARAMS);var at=null;if(rt.length>0&&rt[rt.length-1].type==="SpreadElement"){if(at=this.targetToBinding(this.transformDestructuringWithDefault(rt[rt.length-1].expression)),at.init!=null)throw this.createError(_errors$1.ErrorMessages.UNEXPECTED_REST_PARAMETERS_INITIALIZATION);rt=rt.slice(0,-1)}var lt=rt.map(function(dt){return c.targetToBinding(c.transformDestructuringWithDefault(dt))});return this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:lt,rest:at,isAsync:!0},tt)}this.firstAwaitLocation=nt||this.firstAwaitLocation,this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:rt}),_)}}}else if(k=this.parsePrimaryExpression(),this.firstExprError)return k;for(;;)if(d&&this.match(_tokenizer.TokenType.LPAREN))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else if(this.match(_tokenizer.TokenType.LBRACK))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_);else if(this.match(_tokenizer.TokenType.PERIOD))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_);else if(this.match(_tokenizer.TokenType.TEMPLATE))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.TemplateExpression({tag:k,elements:this.parseTemplateElements()}),_);else break;return this.allowIn=b,k}},{key:"parseTemplateElements",value:function(){var a=this.startNode(),c=this.lookahead;if(c.tail)return this.lex(),[this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)];for(var d=[this.finishNode(new AST.TemplateElement({rawValue:this.lex().slice.text.slice(1,-2)}),a)];;){if(d.push(this.parseExpression()),!this.match(_tokenizer.TokenType.RBRACE))throw this.createILLEGAL();if(this.index=this.startIndex,this.line=this.startLine,this.lineStart=this.startLineStart,this.lookahead=this.scanTemplateElement(),a=this.startNode(),c=this.lex(),c.tail)return d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)),d;d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-2)}),a))}}},{key:"parseStaticMember",value:function(){if(this.lex(),this.lookahead.type.klass.isIdentifierName)return this.lex().value;throw this.createUnexpected(this.lookahead)}},{key:"parseComputedMember",value:function(){this.lex();var a=this.parseExpression();return this.expect(_tokenizer.TokenType.RBRACK),a}},{key:"parseNewExpression",value:function(){var a=this,c=this.startNode();if(this.lex(),this.eat(_tokenizer.TokenType.PERIOD))return this.expectContextualKeyword("target"),this.finishNode(new AST.NewTargetExpression,c);var d=this.isolateCoverGrammar(function(){return a.parseLeftHandSideExpression({allowCall:!1})});return this.finishNode(new AST.NewExpression({callee:d,arguments:this.match(_tokenizer.TokenType.LPAREN)?this.parseArgumentList().args:[]}),c)}},{key:"parseRegexFlags",value:function(a){for(var c=!1,d=!1,_=!1,b=!1,k=!1,$=!1,j=0;j1?e-1:0),a=1;a1&&c.slice(1).forEach(function(d){a.addError(s(d))})}),this}},{key:"enforceConflictingLexicallyDeclaredNames",value:function(s,a){var c=this;return this.lexicallyDeclaredNames.forEachEntry(function(d,_){s.has(_)&&d.forEach(function(b){c.addError(a(b))})}),this}},{key:"observeFunctionDeclaration",value:function(){return this.observeVarBoundary(),addEach(this.functionDeclarationNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"functionDeclarationNamesAreLexical",value:function(){return addEach(this.lexicallyDeclaredNames,this.functionDeclarationNames),this.functionDeclarationNames=new _multimap2.default,this}},{key:"observeVarDeclaration",value:function(){return addEach(this.varDeclaredNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"recordForOfVars",value:function(){var s=this;return this.varDeclaredNames.forEach(function(a){s.forOfVarDeclaredNames.push(a)}),this}},{key:"observeVarBoundary",value:function(){return this.lexicallyDeclaredNames=new _multimap2.default,this.functionDeclarationNames=new _multimap2.default,this.varDeclaredNames=new _multimap2.default,this.forOfVarDeclaredNames=[],this}},{key:"exportName",value:function(s,a){return this.exportedNames.set(s,a),this}},{key:"exportDeclaredNames",value:function(){return addEach(this.exportedNames,this.lexicallyDeclaredNames,this.varDeclaredNames),addEach(this.exportedBindings,this.lexicallyDeclaredNames,this.varDeclaredNames),this}},{key:"exportBinding",value:function(s,a){return this.exportedBindings.set(s,a),this}},{key:"clearExportedBindings",value:function(){return this.exportedBindings=new _multimap2.default,this}},{key:"observeYieldExpression",value:function(s){return this.yieldExpressions.push(s),this}},{key:"clearYieldExpressions",value:function(){return this.yieldExpressions=[],this}},{key:"observeAwaitExpression",value:function(s){return this.awaitExpressions.push(s),this}},{key:"clearAwaitExpressions",value:function(){return this.awaitExpressions=[],this}},{key:"addError",value:function(s){return this.errors.push(s),this}},{key:"addStrictError",value:function(s){return this.strictErrors.push(s),this}},{key:"enforceStrictErrors",value:function(){return[].push.apply(this.errors,this.strictErrors),this.strictErrors=[],this}},{key:"concat",value:function(s){return this===identity?s:s===identity?this:([].push.apply(this.errors,s.errors),[].push.apply(this.strictErrors,s.strictErrors),[].push.apply(this.usedLabelNames,s.usedLabelNames),[].push.apply(this.freeBreakStatements,s.freeBreakStatements),[].push.apply(this.freeContinueStatements,s.freeContinueStatements),[].push.apply(this.freeLabeledBreakStatements,s.freeLabeledBreakStatements),[].push.apply(this.freeLabeledContinueStatements,s.freeLabeledContinueStatements),[].push.apply(this.newTargetExpressions,s.newTargetExpressions),addEach(this.boundNames,s.boundNames),addEach(this.lexicallyDeclaredNames,s.lexicallyDeclaredNames),addEach(this.functionDeclarationNames,s.functionDeclarationNames),addEach(this.varDeclaredNames,s.varDeclaredNames),[].push.apply(this.forOfVarDeclaredNames,s.forOfVarDeclaredNames),addEach(this.exportedNames,s.exportedNames),addEach(this.exportedBindings,s.exportedBindings),[].push.apply(this.superCallExpressions,s.superCallExpressions),[].push.apply(this.superCallExpressionsInConstructorMethod,s.superCallExpressionsInConstructorMethod),[].push.apply(this.superPropertyExpressions,s.superPropertyExpressions),[].push.apply(this.yieldExpressions,s.yieldExpressions),[].push.apply(this.awaitExpressions,s.awaitExpressions),this)}}],[{key:"empty",value:function(){return identity}}]),o}();identity=new EarlyErrorState;Object.getOwnPropertyNames(EarlyErrorState.prototype).forEach(function(o){o!=="constructor"&&Object.defineProperty(identity,o,{value:function(){return EarlyErrorState.prototype[o].apply(new EarlyErrorState,arguments)},enumerable:!1,writable:!0,configurable:!0})});earlyErrorState.EarlyError=function(o){_inherits$4(e,o);function e(s,a){_classCallCheck$7(this,e);var c=_possibleConstructorReturn$4(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,a));return c.node=s,c.message=a,c}return e}(Error);Object.defineProperty(earlyErrors,"__esModule",{value:!0});earlyErrors.EarlyErrorChecker=void 0;var _createClass$5=function(){function o(e,s){for(var a=0;a1&&s.slice(1).forEach(function(a){e=e.addError(new _earlyErrorState.EarlyError(a,"Duplicate constructor method in class"))}),e}var SUPERCALL_ERROR=function o(e){return new _earlyErrorState.EarlyError(e,_errors.ErrorMessages.ILLEGAL_SUPER_CALL)},SUPERPROPERTY_ERROR=function o(e){return new _earlyErrorState.EarlyError(e,"Member access on super must be in a method")},DUPLICATE_BINDING=function o(e){return new _earlyErrorState.EarlyError(e,"Duplicate binding "+JSON.stringify(e.name))},FREE_CONTINUE=function o(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement")},UNBOUND_CONTINUE=function o(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e.label))},FREE_BREAK=function o(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within an iteration statement or a switch statement")},UNBOUND_BREAK=function o(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within a statement with label "+JSON.stringify(e.label))};earlyErrors.EarlyErrorChecker=function(o){_inherits$3(e,o);function e(){return _classCallCheck$6(this,e),_possibleConstructorReturn$3(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,_earlyErrorState.EarlyErrorState))}return _createClass$5(e,[{key:"reduceAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceAssignmentTargetIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c}},{key:"reduceArrowExpression",value:function(a,c){var d=c.params,_=c.body,b=a.params.rest==null&&a.params.items.every(function($){return $.type==="BindingIdentifier"});d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a.body.type==="FunctionBody"&&(_=_.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors(),_=_.enforceStrictErrors())),d.yieldExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain yield expressions"))}),d.awaitExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain await expressions"))});var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceArrowExpression",this).call(this,a,{params:d,body:_});return!b&&a.body.type==="FunctionBody"&&isStrictFunctionBody(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),k=k.clearYieldExpressions(),k=k.clearAwaitExpressions(),k=k.observeVarBoundary(),k}},{key:"reduceAwaitExpression",value:function(a,c){var d=c.expression;return d.observeAwaitExpression(a)}},{key:"reduceBindingIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c=c.bindName(a.name,a),c}},{key:"reduceBlock",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBlock",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a=a.observeLexicalBoundary(),a}},{key:"reduceBreakStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBreakStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeBreakStatement(a):c.addFreeLabeledBreakStatement(a),c}},{key:"reduceCallExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCallExpression",this).apply(this,arguments);return a.callee.type==="Super"&&(c=c.observeSuperCallExpression(a)),c}},{key:"reduceCatchClause",value:function(a,c){var d=c.binding,_=c.body;d=d.observeLexicalDeclaration(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(_.previousLexicallyDeclaredNames,DUPLICATE_BINDING),d.lexicallyDeclaredNames.forEachEntry(function(k,$){_.varDeclaredNames.has($)&&_.varDeclaredNames.get($).forEach(function(j){_.forOfVarDeclaredNames.indexOf(j)>=0&&(d=d.addError(DUPLICATE_BINDING(j)))})});var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCatchClause",this).call(this,a,{binding:d,body:_});return b=b.observeLexicalBoundary(),b}},{key:"reduceClassDeclaration",value:function(a,c){var d=c.name,_=c.super,b=c.elements,k=d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),a.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(a,k),k=k.observeLexicalDeclaration(),k}},{key:"reduceClassElement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceClassElement",this).apply(this,arguments);return!a.isStatic&&isSpecialMethod(a.method)&&(c=c.addError(new _earlyErrorState.EarlyError(a,_errors.ErrorMessages.ILLEGAL_CONSTRUCTORS))),a.isStatic&&a.method.name.type==="StaticPropertyName"&&a.method.name.value==="prototype"&&(c=c.addError(new _earlyErrorState.EarlyError(a,'Static class methods cannot be named "prototype"'))),c}},{key:"reduceClassExpression",value:function(a,c){var d=c.name,_=c.super,b=c.elements,k=a.name==null?this.identity:d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),a.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(a,k),k=k.clearBoundNames(),k}},{key:"reduceCompoundAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCompoundAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceComputedMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceComputedMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceContinueStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceContinueStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeContinueStatement(a):c.addFreeLabeledContinueStatement(a),c}},{key:"reduceDoWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceDoWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a do-while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements(),c=c.clearFreeBreakStatements(),c}},{key:"reduceExport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExport",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.exportDeclaredNames(),a}},{key:"reduceExportFrom",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFrom",this).apply(this,arguments);return a=a.clearExportedBindings(),a}},{key:"reduceExportFromSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFromSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name,a),c=c.exportBinding(a.name,a),c}},{key:"reduceExportLocalSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportLocalSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name.name,a),c=c.exportBinding(a.name.name,a),c}},{key:"reduceExportDefault",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportDefault",this).apply(this,arguments);return c=c.functionDeclarationNamesAreLexical(),c=c.exportName("default",a),c}},{key:"reduceFormalParameters",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFormalParameters",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceForStatement",value:function(a,c){var d=c.init,_=c.test,b=c.update,k=c.body;d!=null&&(d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(k.varDeclaredNames,DUPLICATE_BINDING));var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForStatement",this).call(this,a,{init:d,test:_,update:b,body:k});return a.init!=null&&a.init.type==="VariableDeclaration"&&a.init.kind==="const"&&a.init.declarators.forEach(function(j){j.init==null&&($=$.addError(new _earlyErrorState.EarlyError(j,"Constant lexical declarations must have an initialiser")))}),isLabelledFunction(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for statement must not be a labeled function declaration"))),$=$.clearFreeContinueStatements(),$=$.clearFreeBreakStatements(),$=$.observeLexicalBoundary(),$}},{key:"reduceForInStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForInStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-in statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForOfStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-of statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForAwaitStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-await statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceFunctionBody",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionBody",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.clearUsedLabelNames(),c=c.clearYieldExpressions(),c=c.clearAwaitExpressions(),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceFunctionDeclaration",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||a.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e){_e.length>1&&_e.slice(1).forEach(function(et){_=_[$](DUPLICATE_BINDING(et))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionDeclaration",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&(j=j.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeFunctionDeclaration(),j}},{key:"reduceFunctionExpression",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||a.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e,et){_e.length>1&&_e.slice(1).forEach(function(tt){_=_[$](new _earlyErrorState.EarlyError(tt,"Duplicate binding "+JSON.stringify(et)))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionExpression",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&(j=j.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearBoundNames(),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeVarBoundary(),j}},{key:"reduceGetter",value:function(a,c){var d=c.name,_=c.body;_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors());var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceGetter",this).call(this,a,{name:d,body:_});return b=b.observeVarBoundary(),b}},{key:"reduceIdentifierExpression",value:function(a){var c=this.identity;return(0,_utils.isStrictModeReservedWord)(a.name)&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in expression position in strict mode"))),c}},{key:"reduceIfStatement",value:function(a,c){var d=c.test,_=c.consequent,b=c.alternate;return isLabelledFunction(a.consequent)&&(_=_.addError(new _earlyErrorState.EarlyError(a.consequent,"The consequent of an if statement must not be a labeled function declaration"))),a.alternate!=null&&isLabelledFunction(a.alternate)&&(b=b.addError(new _earlyErrorState.EarlyError(a.alternate,"The alternate of an if statement must not be a labeled function declaration"))),a.consequent.type==="FunctionDeclaration"&&(_=_.addStrictError(new _earlyErrorState.EarlyError(a.consequent,"FunctionDeclarations in IfStatements are disallowed in strict mode")),_=_.observeLexicalBoundary()),a.alternate!=null&&a.alternate.type==="FunctionDeclaration"&&(b=b.addStrictError(new _earlyErrorState.EarlyError(a.alternate,"FunctionDeclarations in IfStatements are disallowed in strict mode")),b=b.observeLexicalBoundary()),_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceIfStatement",this).call(this,a,{test:d,consequent:_,alternate:b})}},{key:"reduceImport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImport",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceImportNamespace",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImportNamespace",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceLabeledStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceLabeledStatement",this).apply(this,arguments);return(a.label==="yield"||(0,_utils.isStrictModeReservedWord)(a.label))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.label)+" must not be in label position in strict mode"))),c.usedLabelNames.indexOf(a.label)>=0&&(c=c.addError(new _earlyErrorState.EarlyError(a,"Label "+JSON.stringify(a.label)+" has already been declared"))),a.body.type==="FunctionDeclaration"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Labeled FunctionDeclarations are disallowed in strict mode"))),c=isIterationStatement(a.body)?c.observeIterationLabel(a.label):c.observeNonIterationLabel(a.label),c}},{key:"reduceLiteralRegExpExpression",value:function(){var a=this.identity;return a}},{key:"reduceMethod",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(j){return j.type==="BindingIdentifier"});_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),a.name.type==="StaticPropertyName"&&a.name.value==="constructor"?(b=b.observeConstructorMethod(),_=_.observeConstructorMethod()):(b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR)),a.isGenerator&&_.yieldExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Async function parameters must not contain await expressions"))}),b=b.clearSuperPropertyExpressions(),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceMethod",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.clearYieldExpressions(),$=$.clearAwaitExpressions(),$=$.observeVarBoundary(),$}},{key:"reduceModule",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceModule",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a.exportedNames.forEachEntry(function(c,d){c.length>1&&c.slice(1).forEach(function(_){a=a.addError(new _earlyErrorState.EarlyError(_,"Duplicate export "+JSON.stringify(d)))})}),a.exportedBindings.forEachEntry(function(c,d){!a.lexicallyDeclaredNames.has(d)&&!a.varDeclaredNames.has(d)&&c.forEach(function(_){a=a.addError(new _earlyErrorState.EarlyError(_,"Exported binding "+JSON.stringify(d)+" is not declared"))})}),a.newTargetExpressions.forEach(function(c){a=a.addError(new _earlyErrorState.EarlyError(c,"new.target must be within function (but not arrow expression) code"))}),a=a.enforceFreeContinueStatementErrors(FREE_CONTINUE),a=a.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),a=a.enforceFreeBreakStatementErrors(FREE_BREAK),a=a.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),a=a.enforceSuperCallExpressions(SUPERCALL_ERROR),a=a.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a=a.enforceStrictErrors(),a}},{key:"reduceNewTargetExpression",value:function(a){return this.identity.observeNewTargetExpression(a)}},{key:"reduceObjectExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceObjectExpression",this).apply(this,arguments);c=c.enforceSuperCallExpressionsInConstructorMethod(SUPERCALL_ERROR);var d=a.properties.filter(function(_){return _.type==="DataProperty"&&_.name.type==="StaticPropertyName"&&_.name.value==="__proto__"});return d.slice(1).forEach(function(_){c=c.addError(new _earlyErrorState.EarlyError(_,"Duplicate __proto__ property in object literal not allowed"))}),c}},{key:"reduceUpdateExpression",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUpdateExpression",this).apply(this,arguments);return a=a.clearBoundNames(),a}},{key:"reduceUnaryExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUnaryExpression",this).apply(this,arguments);return a.operator==="delete"&&a.operand.type==="IdentifierExpression"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Identifier expressions must not be deleted in strict mode"))),c}},{key:"reduceScript",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceScript",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c.newTargetExpressions.forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,"new.target must be within function (but not arrow expression) code"))}),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.enforceSuperCallExpressions(SUPERCALL_ERROR),c=c.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceSetter",value:function(a,c){var d=c.name,_=c.param,b=c.body,k=a.param.type==="BindingIdentifier";_=_.observeLexicalDeclaration(),_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),b=b.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceSetter",this).call(this,a,{name:d,param:_,body:b});return!k&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.observeVarBoundary(),$}},{key:"reduceStaticMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceStaticMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceSwitchStatement",value:function(a,c){var d=c.discriminant,_=c.cases,b=this.append.apply(this,_toConsumableArray$3(_));b=b.functionDeclarationNamesAreLexical(),b=b.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING),b=b.observeLexicalBoundary();var k=this.append(d,b);return k=k.clearFreeBreakStatements(),k}},{key:"reduceSwitchStatementWithDefault",value:function(a,c){var d=c.discriminant,_=c.preDefaultCases,b=c.defaultCase,k=c.postDefaultCases,$=this.append.apply(this,[b].concat(_toConsumableArray$3(_),_toConsumableArray$3(k)));$=$.functionDeclarationNamesAreLexical(),$=$.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),$=$.enforceConflictingLexicallyDeclaredNames($.varDeclaredNames,DUPLICATE_BINDING),$=$.observeLexicalBoundary();var j=this.append(d,$);return j=j.clearFreeBreakStatements(),j}},{key:"reduceVariableDeclaration",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclaration",this).apply(this,arguments);switch(a.kind){case"const":case"let":{c=c.observeLexicalDeclaration(),c.lexicallyDeclaredNames.has("let")&&c.lexicallyDeclaredNames.get("let").forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,'Lexical declarations must not have a binding named "let"'))});break}case"var":c=c.observeVarDeclaration();break}return c}},{key:"reduceVariableDeclarationStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclarationStatement",this).apply(this,arguments);return a.declaration.kind==="const"&&a.declaration.declarators.forEach(function(d){d.init==null&&(c=c.addError(new _earlyErrorState.EarlyError(d,"Constant lexical declarations must have an initialiser")))}),c}},{key:"reduceWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements().clearFreeBreakStatements(),c}},{key:"reduceWithStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWithStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a with statement must not be a labeled function declaration"))),c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Strict mode code must not include a with statement")),c}},{key:"reduceYieldExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}},{key:"reduceYieldGeneratorExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldGeneratorExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}}],[{key:"check",value:function(a){return(0,_shiftReducer2.default)(new e,a).errors}}]),e}(_shiftReducer$1.MonoidalReducer);(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.TokenType=o.TokenClass=o.Tokenizer=o.ParserWithLocation=o.GenericParser=o.EarlyErrorChecker=o.parseScriptWithLocation=o.parseModuleWithLocation=o.parseScript=o.parseModule=void 0;var e=function(){function it(rt,st){for(var at=0;at1&&arguments[1]!==void 0?arguments[1]:{},lt=at.earlyErrors,dt=lt===void 0?!0:lt,ct=new c.GenericParser(st),ut=ct[it]();if(dt){var ot=d.EarlyErrorChecker.check(ut);if(ot.length>0)throw new a.JsError(0,1,0,ot[0].message)}return ut}}function tt(it){return function(st){var at=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},lt=at.earlyErrors,dt=lt===void 0?!0:lt,ct=new _e(st),ut=ct[it]();if(dt){var ot=d.EarlyErrorChecker.check(ut);if(ot.length>0){var ht=ot[0],pt=ht.node,Et=ht.message,gt=ct.locations.get(pt).start,ft=gt.offset,mt=gt.line,yt=gt.column;throw new a.JsError(ft,mt,yt,Et)}}return{tree:ut,locations:ct.locations,comments:ct.comments}}}o.parseModule=et("parseModule");var nt=o.parseScript=et("parseScript");o.parseModuleWithLocation=tt("parseModule"),o.parseScriptWithLocation=tt("parseScript"),o.default=nt,o.EarlyErrorChecker=d.EarlyErrorChecker,o.GenericParser=c.GenericParser,o.ParserWithLocation=_e})(dist$7);var dist$2={};Object.defineProperty(dist$2,"__esModule",{value:!0});var _default=dist$2.default=function(){var o={},e={typeName:"Boolean"},s={typeName:"Number"},a={typeName:"String"};function c(pn){return{typeName:"Maybe",argument:pn}}function d(pn){return{typeName:"List",argument:pn}}function _(pn){return{typeName:"Const",argument:pn}}function b(){return{typeName:"Union",arguments:[].slice.call(arguments,0)}}var k={typeName:"Enum",values:["ArrayAssignmentTarget","ArrayBinding","ArrayExpression","ArrowExpression","AssignmentExpression","AssignmentTargetIdentifier","AssignmentTargetPropertyIdentifier","AssignmentTargetPropertyProperty","AssignmentTargetWithDefault","AwaitExpression","BinaryExpression","BindingIdentifier","BindingPropertyIdentifier","BindingPropertyProperty","BindingWithDefault","Block","BlockStatement","BreakStatement","CallExpression","CatchClause","ClassDeclaration","ClassElement","ClassExpression","CompoundAssignmentExpression","ComputedMemberAssignmentTarget","ComputedMemberExpression","ComputedPropertyName","ConditionalExpression","ContinueStatement","DataProperty","DebuggerStatement","Directive","DoWhileStatement","EmptyStatement","Export","ExportAllFrom","ExportDefault","ExportFrom","ExportFromSpecifier","ExportLocalSpecifier","ExportLocals","ExpressionStatement","ForAwaitStatement","ForInStatement","ForOfStatement","ForStatement","FormalParameters","FunctionBody","FunctionDeclaration","FunctionExpression","Getter","IdentifierExpression","IfStatement","Import","ImportNamespace","ImportSpecifier","LabeledStatement","LiteralBooleanExpression","LiteralInfinityExpression","LiteralNullExpression","LiteralNumericExpression","LiteralRegExpExpression","LiteralStringExpression","Method","Module","NewExpression","NewTargetExpression","ObjectAssignmentTarget","ObjectBinding","ObjectExpression","ReturnStatement","Script","Setter","ShorthandProperty","SpreadElement","SpreadProperty","StaticMemberAssignmentTarget","StaticMemberExpression","StaticPropertyName","Super","SwitchCase","SwitchDefault","SwitchStatement","SwitchStatementWithDefault","TemplateElement","TemplateExpression","ThisExpression","ThrowStatement","TryCatchStatement","TryFinallyStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarationStatement","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","YieldGeneratorExpression"]},$={typeName:"Enum",values:["==","!=","===","!==","<","<=",">",">=","in","instanceof","<<",">>",">>>","+","-","*","/","%","**",",","||","&&","|","^","&"]},j={typeName:"Enum",values:["+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","|=","^=","&="]},_e={typeName:"Enum",values:["+","-","!","~","typeof","void","delete"]},et={typeName:"Enum",values:["++","--"]},tt={typeName:"Enum",values:["var","let","const"]},nt=o.ArrayAssignmentTarget={},it=o.ArrayBinding={},rt=o.ArrayExpression={},st=o.ArrowExpression={},at=o.AssignmentExpression={},lt=o.AssignmentTargetIdentifier={},dt=o.AssignmentTargetPropertyIdentifier={},ct=o.AssignmentTargetPropertyProperty={},ut=o.AssignmentTargetWithDefault={},ot=o.AwaitExpression={},ht=o.BinaryExpression={},pt=o.BindingIdentifier={},Et=o.BindingPropertyIdentifier={},gt=o.BindingPropertyProperty={},ft=o.BindingWithDefault={},mt=o.Block={},yt=o.BlockStatement={},At=o.BreakStatement={},vt=o.CallExpression={},St=o.CatchClause={},Tt=o.ClassDeclaration={},Dt=o.ClassElement={},xt=o.ClassExpression={},Ct=o.CompoundAssignmentExpression={},bt=o.ComputedMemberAssignmentTarget={},$t=o.ComputedMemberExpression={},It=o.ComputedPropertyName={},Bt=o.ConditionalExpression={},Pt=o.ContinueStatement={},Nt=o.DataProperty={},qt=o.DebuggerStatement={},Qt=o.Directive={},kt=o.DoWhileStatement={},Ut=o.EmptyStatement={},zt=o.Export={},Yt=o.ExportAllFrom={},Xt=o.ExportDefault={},Ot=o.ExportFrom={},Ft=o.ExportFromSpecifier={},Vt=o.ExportLocalSpecifier={},Lt=o.ExportLocals={},Rt=o.ExpressionStatement={},Wt=o.ForAwaitStatement={},jt=o.ForInStatement={},Gt=o.ForOfStatement={},Zt=o.ForStatement={},Kt=o.FormalParameters={},Jt=o.FunctionBody={},sn=o.FunctionDeclaration={},fn=o.FunctionExpression={},vn=o.Getter={},cn=o.IdentifierExpression={},An=o.IfStatement={},Sn=o.Import={},Cn=o.ImportNamespace={},mn=o.ImportSpecifier={},On=o.LabeledStatement={},Dn=o.LiteralBooleanExpression={},Tn=o.LiteralInfinityExpression={},bn=o.LiteralNullExpression={},xn=o.LiteralNumericExpression={},wn=o.LiteralRegExpExpression={},kn=o.LiteralStringExpression={},Nn=o.Method={},Fn=o.Module={},$n=o.NewExpression={},Pn=o.NewTargetExpression={},tn=o.ObjectAssignmentTarget={},en=o.ObjectBinding={},Rn=o.ObjectExpression={},In=o.ReturnStatement={},Bn=o.Script={},Mn=o.Setter={},Ln=o.ShorthandProperty={},hn=o.SpreadElement={},Wn=o.SpreadProperty={},Vn=o.StaticMemberAssignmentTarget={},jn=o.StaticMemberExpression={},Qn=o.StaticPropertyName={},un=o.Super={},dn=o.SwitchCase={},gn=o.SwitchDefault={},qn=o.SwitchStatement={},Gn=o.SwitchStatementWithDefault={},yn=o.TemplateElement={},Un=o.TemplateExpression={},zn=o.ThisExpression={},Hn=o.ThrowStatement={},Yn=o.TryCatchStatement={},Xn=o.TryFinallyStatement={},Zn=o.UnaryExpression={},Kn=o.UpdateExpression={},an=o.VariableDeclaration={},Jn=o.VariableDeclarationStatement={},En=o.VariableDeclarator={},er=o.WhileStatement={},tr=o.WithStatement={},nr=o.YieldExpression={},rr=o.YieldGeneratorExpression={},Er=b($t,jn),ir=b(dt,ct);b(Tt,xt);var sr=b(zt,Yt,Xt,Ot,Lt),ln=b(It,Qn);b(sn,fn);var ar=b(Sn,Cn),_r=b(kt,Wt,jt,Gt,Zt,er),nn=b(bt,Vn),or=b(Et,gt),ur=b(vn,Nn,Mn),vr=b(Fn,Bn),Ar=b(lt,pt,cn),Sr=b(Nt,ur),Mt=b(rt,st,at,ot,ht,vt,xt,Ct,Bt,fn,cn,Dn,Tn,bn,xn,wn,kn,Er,$n,Pn,Rn,Un,zn,Zn,Kn,nr,rr),Ht=b(yt,At,Tt,Pt,qt,Ut,Rt,sn,An,_r,On,In,qn,Gn,Hn,Yn,Xn,Jn,tr),lr=b(Sr,Ln,Wn);return b(nt,it,ir,ut,or,ft,mt,St,Dt,Qt,sr,Ft,Vt,Mt,Kt,Jt,ar,mn,nn,tn,en,lr,vr,ln,hn,Ht,un,dn,gn,yn,an,En,Ar),nt.typeName="ArrayAssignmentTarget",nt.fields=[{name:"type",type:_(k),value:"ArrayAssignmentTarget"},{name:"elements",type:d(c(b(ut,b(b(nt,tn),b(lt,nn)))))},{name:"rest",type:c(b(b(nt,tn),b(lt,nn)))}],it.typeName="ArrayBinding",it.fields=[{name:"type",type:_(k),value:"ArrayBinding"},{name:"elements",type:d(c(b(ft,b(pt,b(it,en)))))},{name:"rest",type:c(b(pt,b(it,en)))}],rt.typeName="ArrayExpression",rt.fields=[{name:"type",type:_(k),value:"ArrayExpression"},{name:"elements",type:d(c(b(Mt,hn)))}],st.typeName="ArrowExpression",st.fields=[{name:"type",type:_(k),value:"ArrowExpression"},{name:"isAsync",type:e},{name:"params",type:Kt},{name:"body",type:b(Mt,Jt)}],at.typeName="AssignmentExpression",at.fields=[{name:"type",type:_(k),value:"AssignmentExpression"},{name:"binding",type:b(b(nt,tn),b(lt,nn))},{name:"expression",type:Mt}],lt.typeName="AssignmentTargetIdentifier",lt.fields=[{name:"type",type:_(k),value:"AssignmentTargetIdentifier"},{name:"name",type:a}],dt.typeName="AssignmentTargetPropertyIdentifier",dt.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyIdentifier"},{name:"binding",type:lt},{name:"init",type:c(Mt)}],ct.typeName="AssignmentTargetPropertyProperty",ct.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyProperty"},{name:"name",type:ln},{name:"binding",type:b(ut,b(b(nt,tn),b(lt,nn)))}],ut.typeName="AssignmentTargetWithDefault",ut.fields=[{name:"type",type:_(k),value:"AssignmentTargetWithDefault"},{name:"binding",type:b(b(nt,tn),b(lt,nn))},{name:"init",type:Mt}],ot.typeName="AwaitExpression",ot.fields=[{name:"type",type:_(k),value:"AwaitExpression"},{name:"expression",type:Mt}],ht.typeName="BinaryExpression",ht.fields=[{name:"type",type:_(k),value:"BinaryExpression"},{name:"left",type:Mt},{name:"operator",type:$},{name:"right",type:Mt}],pt.typeName="BindingIdentifier",pt.fields=[{name:"type",type:_(k),value:"BindingIdentifier"},{name:"name",type:a}],Et.typeName="BindingPropertyIdentifier",Et.fields=[{name:"type",type:_(k),value:"BindingPropertyIdentifier"},{name:"binding",type:pt},{name:"init",type:c(Mt)}],gt.typeName="BindingPropertyProperty",gt.fields=[{name:"type",type:_(k),value:"BindingPropertyProperty"},{name:"name",type:ln},{name:"binding",type:b(ft,b(pt,b(it,en)))}],ft.typeName="BindingWithDefault",ft.fields=[{name:"type",type:_(k),value:"BindingWithDefault"},{name:"binding",type:b(pt,b(it,en))},{name:"init",type:Mt}],mt.typeName="Block",mt.fields=[{name:"type",type:_(k),value:"Block"},{name:"statements",type:d(Ht)}],yt.typeName="BlockStatement",yt.fields=[{name:"type",type:_(k),value:"BlockStatement"},{name:"block",type:mt}],At.typeName="BreakStatement",At.fields=[{name:"type",type:_(k),value:"BreakStatement"},{name:"label",type:c(a)}],vt.typeName="CallExpression",vt.fields=[{name:"type",type:_(k),value:"CallExpression"},{name:"callee",type:b(Mt,un)},{name:"arguments",type:d(b(Mt,hn))}],St.typeName="CatchClause",St.fields=[{name:"type",type:_(k),value:"CatchClause"},{name:"binding",type:b(pt,b(it,en))},{name:"body",type:mt}],Tt.typeName="ClassDeclaration",Tt.fields=[{name:"type",type:_(k),value:"ClassDeclaration"},{name:"name",type:pt},{name:"super",type:c(Mt)},{name:"elements",type:d(Dt)}],Dt.typeName="ClassElement",Dt.fields=[{name:"type",type:_(k),value:"ClassElement"},{name:"isStatic",type:e},{name:"method",type:ur}],xt.typeName="ClassExpression",xt.fields=[{name:"type",type:_(k),value:"ClassExpression"},{name:"name",type:c(pt)},{name:"super",type:c(Mt)},{name:"elements",type:d(Dt)}],Ct.typeName="CompoundAssignmentExpression",Ct.fields=[{name:"type",type:_(k),value:"CompoundAssignmentExpression"},{name:"binding",type:b(lt,nn)},{name:"operator",type:j},{name:"expression",type:Mt}],bt.typeName="ComputedMemberAssignmentTarget",bt.fields=[{name:"type",type:_(k),value:"ComputedMemberAssignmentTarget"},{name:"object",type:b(Mt,un)},{name:"expression",type:Mt}],$t.typeName="ComputedMemberExpression",$t.fields=[{name:"type",type:_(k),value:"ComputedMemberExpression"},{name:"object",type:b(Mt,un)},{name:"expression",type:Mt}],It.typeName="ComputedPropertyName",It.fields=[{name:"type",type:_(k),value:"ComputedPropertyName"},{name:"expression",type:Mt}],Bt.typeName="ConditionalExpression",Bt.fields=[{name:"type",type:_(k),value:"ConditionalExpression"},{name:"test",type:Mt},{name:"consequent",type:Mt},{name:"alternate",type:Mt}],Pt.typeName="ContinueStatement",Pt.fields=[{name:"type",type:_(k),value:"ContinueStatement"},{name:"label",type:c(a)}],Nt.typeName="DataProperty",Nt.fields=[{name:"type",type:_(k),value:"DataProperty"},{name:"name",type:ln},{name:"expression",type:Mt}],qt.typeName="DebuggerStatement",qt.fields=[{name:"type",type:_(k),value:"DebuggerStatement"}],Qt.typeName="Directive",Qt.fields=[{name:"type",type:_(k),value:"Directive"},{name:"rawValue",type:a}],kt.typeName="DoWhileStatement",kt.fields=[{name:"type",type:_(k),value:"DoWhileStatement"},{name:"body",type:Ht},{name:"test",type:Mt}],Ut.typeName="EmptyStatement",Ut.fields=[{name:"type",type:_(k),value:"EmptyStatement"}],zt.typeName="Export",zt.fields=[{name:"type",type:_(k),value:"Export"},{name:"declaration",type:b(Tt,sn,an)}],Yt.typeName="ExportAllFrom",Yt.fields=[{name:"type",type:_(k),value:"ExportAllFrom"},{name:"moduleSpecifier",type:a}],Xt.typeName="ExportDefault",Xt.fields=[{name:"type",type:_(k),value:"ExportDefault"},{name:"body",type:b(Tt,Mt,sn)}],Ot.typeName="ExportFrom",Ot.fields=[{name:"type",type:_(k),value:"ExportFrom"},{name:"namedExports",type:d(Ft)},{name:"moduleSpecifier",type:a}],Ft.typeName="ExportFromSpecifier",Ft.fields=[{name:"type",type:_(k),value:"ExportFromSpecifier"},{name:"name",type:a},{name:"exportedName",type:c(a)}],Vt.typeName="ExportLocalSpecifier",Vt.fields=[{name:"type",type:_(k),value:"ExportLocalSpecifier"},{name:"name",type:cn},{name:"exportedName",type:c(a)}],Lt.typeName="ExportLocals",Lt.fields=[{name:"type",type:_(k),value:"ExportLocals"},{name:"namedExports",type:d(Vt)}],Rt.typeName="ExpressionStatement",Rt.fields=[{name:"type",type:_(k),value:"ExpressionStatement"},{name:"expression",type:Mt}],Wt.typeName="ForAwaitStatement",Wt.fields=[{name:"type",type:_(k),value:"ForAwaitStatement"},{name:"left",type:b(b(b(nt,tn),b(lt,nn)),an)},{name:"right",type:Mt},{name:"body",type:Ht}],jt.typeName="ForInStatement",jt.fields=[{name:"type",type:_(k),value:"ForInStatement"},{name:"left",type:b(b(b(nt,tn),b(lt,nn)),an)},{name:"right",type:Mt},{name:"body",type:Ht}],Gt.typeName="ForOfStatement",Gt.fields=[{name:"type",type:_(k),value:"ForOfStatement"},{name:"left",type:b(b(b(nt,tn),b(lt,nn)),an)},{name:"right",type:Mt},{name:"body",type:Ht}],Zt.typeName="ForStatement",Zt.fields=[{name:"type",type:_(k),value:"ForStatement"},{name:"init",type:c(b(Mt,an))},{name:"test",type:c(Mt)},{name:"update",type:c(Mt)},{name:"body",type:Ht}],Kt.typeName="FormalParameters",Kt.fields=[{name:"type",type:_(k),value:"FormalParameters"},{name:"items",type:d(b(ft,b(pt,b(it,en))))},{name:"rest",type:c(b(pt,b(it,en)))}],Jt.typeName="FunctionBody",Jt.fields=[{name:"type",type:_(k),value:"FunctionBody"},{name:"directives",type:d(Qt)},{name:"statements",type:d(Ht)}],sn.typeName="FunctionDeclaration",sn.fields=[{name:"type",type:_(k),value:"FunctionDeclaration"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:pt},{name:"params",type:Kt},{name:"body",type:Jt}],fn.typeName="FunctionExpression",fn.fields=[{name:"type",type:_(k),value:"FunctionExpression"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:c(pt)},{name:"params",type:Kt},{name:"body",type:Jt}],vn.typeName="Getter",vn.fields=[{name:"type",type:_(k),value:"Getter"},{name:"name",type:ln},{name:"body",type:Jt}],cn.typeName="IdentifierExpression",cn.fields=[{name:"type",type:_(k),value:"IdentifierExpression"},{name:"name",type:a}],An.typeName="IfStatement",An.fields=[{name:"type",type:_(k),value:"IfStatement"},{name:"test",type:Mt},{name:"consequent",type:Ht},{name:"alternate",type:c(Ht)}],Sn.typeName="Import",Sn.fields=[{name:"type",type:_(k),value:"Import"},{name:"defaultBinding",type:c(pt)},{name:"namedImports",type:d(mn)},{name:"moduleSpecifier",type:a}],Cn.typeName="ImportNamespace",Cn.fields=[{name:"type",type:_(k),value:"ImportNamespace"},{name:"defaultBinding",type:c(pt)},{name:"namespaceBinding",type:pt},{name:"moduleSpecifier",type:a}],mn.typeName="ImportSpecifier",mn.fields=[{name:"type",type:_(k),value:"ImportSpecifier"},{name:"name",type:c(a)},{name:"binding",type:pt}],On.typeName="LabeledStatement",On.fields=[{name:"type",type:_(k),value:"LabeledStatement"},{name:"label",type:a},{name:"body",type:Ht}],Dn.typeName="LiteralBooleanExpression",Dn.fields=[{name:"type",type:_(k),value:"LiteralBooleanExpression"},{name:"value",type:e}],Tn.typeName="LiteralInfinityExpression",Tn.fields=[{name:"type",type:_(k),value:"LiteralInfinityExpression"}],bn.typeName="LiteralNullExpression",bn.fields=[{name:"type",type:_(k),value:"LiteralNullExpression"}],xn.typeName="LiteralNumericExpression",xn.fields=[{name:"type",type:_(k),value:"LiteralNumericExpression"},{name:"value",type:s}],wn.typeName="LiteralRegExpExpression",wn.fields=[{name:"type",type:_(k),value:"LiteralRegExpExpression"},{name:"pattern",type:a},{name:"global",type:e},{name:"ignoreCase",type:e},{name:"multiLine",type:e},{name:"dotAll",type:e},{name:"unicode",type:e},{name:"sticky",type:e}],kn.typeName="LiteralStringExpression",kn.fields=[{name:"type",type:_(k),value:"LiteralStringExpression"},{name:"value",type:a}],Nn.typeName="Method",Nn.fields=[{name:"type",type:_(k),value:"Method"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:ln},{name:"params",type:Kt},{name:"body",type:Jt}],Fn.typeName="Module",Fn.fields=[{name:"type",type:_(k),value:"Module"},{name:"directives",type:d(Qt)},{name:"items",type:d(b(sr,ar,Ht))}],$n.typeName="NewExpression",$n.fields=[{name:"type",type:_(k),value:"NewExpression"},{name:"callee",type:Mt},{name:"arguments",type:d(b(Mt,hn))}],Pn.typeName="NewTargetExpression",Pn.fields=[{name:"type",type:_(k),value:"NewTargetExpression"}],tn.typeName="ObjectAssignmentTarget",tn.fields=[{name:"type",type:_(k),value:"ObjectAssignmentTarget"},{name:"properties",type:d(ir)},{name:"rest",type:c(b(b(nt,tn),b(lt,nn)))}],en.typeName="ObjectBinding",en.fields=[{name:"type",type:_(k),value:"ObjectBinding"},{name:"properties",type:d(or)},{name:"rest",type:c(b(pt,b(it,en)))}],Rn.typeName="ObjectExpression",Rn.fields=[{name:"type",type:_(k),value:"ObjectExpression"},{name:"properties",type:d(lr)}],In.typeName="ReturnStatement",In.fields=[{name:"type",type:_(k),value:"ReturnStatement"},{name:"expression",type:c(Mt)}],Bn.typeName="Script",Bn.fields=[{name:"type",type:_(k),value:"Script"},{name:"directives",type:d(Qt)},{name:"statements",type:d(Ht)}],Mn.typeName="Setter",Mn.fields=[{name:"type",type:_(k),value:"Setter"},{name:"name",type:ln},{name:"param",type:b(ft,b(pt,b(it,en)))},{name:"body",type:Jt}],Ln.typeName="ShorthandProperty",Ln.fields=[{name:"type",type:_(k),value:"ShorthandProperty"},{name:"name",type:cn}],hn.typeName="SpreadElement",hn.fields=[{name:"type",type:_(k),value:"SpreadElement"},{name:"expression",type:Mt}],Wn.typeName="SpreadProperty",Wn.fields=[{name:"type",type:_(k),value:"SpreadProperty"},{name:"expression",type:Mt}],Vn.typeName="StaticMemberAssignmentTarget",Vn.fields=[{name:"type",type:_(k),value:"StaticMemberAssignmentTarget"},{name:"object",type:b(Mt,un)},{name:"property",type:a}],jn.typeName="StaticMemberExpression",jn.fields=[{name:"type",type:_(k),value:"StaticMemberExpression"},{name:"object",type:b(Mt,un)},{name:"property",type:a}],Qn.typeName="StaticPropertyName",Qn.fields=[{name:"type",type:_(k),value:"StaticPropertyName"},{name:"value",type:a}],un.typeName="Super",un.fields=[{name:"type",type:_(k),value:"Super"}],dn.typeName="SwitchCase",dn.fields=[{name:"type",type:_(k),value:"SwitchCase"},{name:"test",type:Mt},{name:"consequent",type:d(Ht)}],gn.typeName="SwitchDefault",gn.fields=[{name:"type",type:_(k),value:"SwitchDefault"},{name:"consequent",type:d(Ht)}],qn.typeName="SwitchStatement",qn.fields=[{name:"type",type:_(k),value:"SwitchStatement"},{name:"discriminant",type:Mt},{name:"cases",type:d(dn)}],Gn.typeName="SwitchStatementWithDefault",Gn.fields=[{name:"type",type:_(k),value:"SwitchStatementWithDefault"},{name:"discriminant",type:Mt},{name:"preDefaultCases",type:d(dn)},{name:"defaultCase",type:gn},{name:"postDefaultCases",type:d(dn)}],yn.typeName="TemplateElement",yn.fields=[{name:"type",type:_(k),value:"TemplateElement"},{name:"rawValue",type:a}],Un.typeName="TemplateExpression",Un.fields=[{name:"type",type:_(k),value:"TemplateExpression"},{name:"tag",type:c(Mt)},{name:"elements",type:d(b(Mt,yn))}],zn.typeName="ThisExpression",zn.fields=[{name:"type",type:_(k),value:"ThisExpression"}],Hn.typeName="ThrowStatement",Hn.fields=[{name:"type",type:_(k),value:"ThrowStatement"},{name:"expression",type:Mt}],Yn.typeName="TryCatchStatement",Yn.fields=[{name:"type",type:_(k),value:"TryCatchStatement"},{name:"body",type:mt},{name:"catchClause",type:St}],Xn.typeName="TryFinallyStatement",Xn.fields=[{name:"type",type:_(k),value:"TryFinallyStatement"},{name:"body",type:mt},{name:"catchClause",type:c(St)},{name:"finalizer",type:mt}],Zn.typeName="UnaryExpression",Zn.fields=[{name:"type",type:_(k),value:"UnaryExpression"},{name:"operator",type:_e},{name:"operand",type:Mt}],Kn.typeName="UpdateExpression",Kn.fields=[{name:"type",type:_(k),value:"UpdateExpression"},{name:"isPrefix",type:e},{name:"operator",type:et},{name:"operand",type:b(lt,nn)}],an.typeName="VariableDeclaration",an.fields=[{name:"type",type:_(k),value:"VariableDeclaration"},{name:"kind",type:tt},{name:"declarators",type:d(En)}],Jn.typeName="VariableDeclarationStatement",Jn.fields=[{name:"type",type:_(k),value:"VariableDeclarationStatement"},{name:"declaration",type:an}],En.typeName="VariableDeclarator",En.fields=[{name:"type",type:_(k),value:"VariableDeclarator"},{name:"binding",type:b(pt,b(it,en))},{name:"init",type:c(Mt)}],er.typeName="WhileStatement",er.fields=[{name:"type",type:_(k),value:"WhileStatement"},{name:"test",type:Mt},{name:"body",type:Ht}],tr.typeName="WithStatement",tr.fields=[{name:"type",type:_(k),value:"WithStatement"},{name:"object",type:Mt},{name:"body",type:Ht}],nr.typeName="YieldExpression",nr.fields=[{name:"type",type:_(k),value:"YieldExpression"},{name:"expression",type:c(Mt)}],rr.typeName="YieldGeneratorExpression",rr.fields=[{name:"type",type:_(k),value:"YieldGeneratorExpression"},{name:"expression",type:Mt}],o}(),estraverse$1={};(function(o){(function e(s){var a,c,d,_,b,k;function $(ct){var ut={},ot,ht;for(ot in ct)ct.hasOwnProperty(ot)&&(ht=ct[ot],typeof ht=="object"&&ht!==null?ut[ot]=$(ht):ut[ot]=ht);return ut}function j(ct,ut){var ot,ht,pt,Et;for(ht=ct.length,pt=0;ht;)ot=ht>>>1,Et=pt+ot,ut(ct[Et])?ht=ot:(pt=Et+1,ht-=ot+1);return pt}a={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ChainExpression:"ChainExpression",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",PrivateIdentifier:"PrivateIdentifier",Program:"Program",Property:"Property",PropertyDefinition:"PropertyDefinition",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},d={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},_={},b={},k={},c={Break:_,Skip:b,Remove:k};function _e(ct,ut){this.parent=ct,this.key=ut}_e.prototype.replace=function(ut){this.parent[this.key]=ut},_e.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)};function et(ct,ut,ot,ht){this.node=ct,this.path=ut,this.wrap=ot,this.ref=ht}function tt(){}tt.prototype.path=function(){var ut,ot,ht,pt,Et,gt;function ft(mt,yt){if(Array.isArray(yt))for(ht=0,pt=yt.length;ht=0;--ot)if(ct[ot].node===ut)return!0;return!1}tt.prototype.traverse=function(ut,ot){var ht,pt,Et,gt,ft,mt,yt,At,vt,St,Tt,Dt;for(this.__initialize(ut,ot),Dt={},ht=this.__worklist,pt=this.__leavelist,ht.push(new et(ut,null,null,null)),pt.push(new et(null,null,null,null));ht.length;){if(Et=ht.pop(),Et===Dt){if(Et=pt.pop(),mt=this.__execute(ot.leave,Et),this.__state===_||mt===_)return;continue}if(Et.node){if(mt=this.__execute(ot.enter,Et),this.__state===_||mt===_)return;if(ht.push(Dt),pt.push(Et),this.__state===b||mt===b)continue;if(gt=Et.node,ft=gt.type||Et.wrap,St=this.__keys[ft],!St)if(this.__fallback)St=this.__fallback(gt);else throw new Error("Unknown node type "+ft+".");for(At=St.length;(At-=1)>=0;)if(yt=St[At],Tt=gt[yt],!!Tt){if(Array.isArray(Tt)){for(vt=Tt.length;(vt-=1)>=0;)if(!!Tt[vt]&&!rt(pt,Tt[vt])){if(it(ft,St[At]))Et=new et(Tt[vt],[yt,vt],"Property",null);else if(nt(Tt[vt]))Et=new et(Tt[vt],[yt,vt],null,null);else continue;ht.push(Et)}}else if(nt(Tt)){if(rt(pt,Tt))continue;ht.push(new et(Tt,yt,null,null))}}}}},tt.prototype.replace=function(ut,ot){var ht,pt,Et,gt,ft,mt,yt,At,vt,St,Tt,Dt,xt;function Ct(bt){var $t,It,Bt,Pt;if(bt.ref.remove()){for(It=bt.ref.key,Pt=bt.ref.parent,$t=ht.length;$t--;)if(Bt=ht[$t],Bt.ref&&Bt.ref.parent===Pt){if(Bt.ref.key=0;)if(xt=vt[yt],St=Et[xt],!!St)if(Array.isArray(St)){for(At=St.length;(At-=1)>=0;)if(!!St[At]){if(it(gt,vt[yt]))mt=new et(St[At],[xt,At],"Property",new _e(St,At));else if(nt(St[At]))mt=new et(St[At],[xt,At],null,new _e(St,At));else continue;ht.push(mt)}}else nt(St)&&ht.push(new et(St,xt,null,new _e(Et,xt)))}}return Dt.root};function st(ct,ut){var ot=new tt;return ot.traverse(ct,ut)}function at(ct,ut){var ot=new tt;return ot.replace(ct,ut)}function lt(ct,ut){var ot;return ot=j(ut,function(pt){return pt.range[0]>ct.range[0]}),ct.extendedRange=[ct.range[0],ct.range[1]],ot!==ut.length&&(ct.extendedRange[1]=ut[ot].range[0]),ot-=1,ot>=0&&(ct.extendedRange[0]=ut[ot].range[1]),ct}function dt(ct,ut,ot){var ht=[],pt,Et,gt,ft;if(!ct.range)throw new Error("attachComments needs range information");if(!ot.length){if(ut.length){for(gt=0,Et=ut.length;gtmt.range[0]));)yt.extendedRange[1]===mt.range[0]?(mt.leadingComments||(mt.leadingComments=[]),mt.leadingComments.push(yt),ht.splice(ft,1)):ft+=1;if(ft===ht.length)return c.Break;if(ht[ft].extendedRange[0]>mt.range[1])return c.Skip}}),ft=0,st(ct,{leave:function(mt){for(var yt;ftmt.range[1])return c.Skip}}),ct}return s.Syntax=a,s.traverse=st,s.replace=at,s.attachComments=dt,s.VisitorKeys=d,s.VisitorOption=c,s.Controller=tt,s.cloneEnvironment=function(){return e({})},s})(o)})(estraverse$1);const Spec=_default.default||_default,estraverse=estraverse$1.cloneEnvironment();Object.keys(estraverse.Syntax).filter(o=>o!=="Property").forEach(o=>{delete estraverse.Syntax[o],delete estraverse.VisitorKeys[o]});Object.assign(estraverse.Syntax,Object.keys(Spec).reduce((o,e)=>(o[e]=e,o),{}));Object.assign(estraverse.VisitorKeys,Object.keys(Spec).reduce((o,e)=>(o[e]=Spec[e].fields.map(s=>s.name),o),{}));var dist$1={},StaticMemberExpression_1,ReturnStatement_1,LiteralStringExpression_1,LiteralNumericExpression_1,IdentifierExpression_1,CallExpression_1,ArrayExpression_1;Object.defineProperty(dist$1,"__esModule",{value:!0});function _classCallCheck$5(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$1.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$1.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};ArrayExpression_1=dist$1.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$5(this,o),this.type="ArrayExpression",this.elements=s};dist$1.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$5(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$1.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$5(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$1.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$1.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$1.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$1.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$1.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="AwaitExpression",this.expression=s};dist$1.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$5(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$1.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="BindingIdentifier",this.name=s};dist$1.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$1.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$1.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$1.Block=function o(e){var s=e.statements;_classCallCheck$5(this,o),this.type="Block",this.statements=s};dist$1.BlockStatement=function o(e){var s=e.block;_classCallCheck$5(this,o),this.type="BlockStatement",this.block=s};dist$1.BreakStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="BreakStatement",this.label=s};CallExpression_1=dist$1.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$1.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$5(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$1.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$1.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$5(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$1.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$1.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$5(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$1.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$1.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$1.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ComputedPropertyName",this.expression=s};dist$1.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$1.ContinueStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="ContinueStatement",this.label=s};dist$1.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$5(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$1.DebuggerStatement=function o(){_classCallCheck$5(this,o),this.type="DebuggerStatement"};dist$1.Directive=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="Directive",this.rawValue=s};dist$1.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$5(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$1.EmptyStatement=function o(){_classCallCheck$5(this,o),this.type="EmptyStatement"};dist$1.Export=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="Export",this.declaration=s};dist$1.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$1.ExportDefault=function o(e){var s=e.body;_classCallCheck$5(this,o),this.type="ExportDefault",this.body=s};dist$1.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$1.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$5(this,o),this.type="ExportLocals",this.namedExports=s};dist$1.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ExpressionStatement",this.expression=s};dist$1.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$1.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$1.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$1.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,d=e.body;_classCallCheck$5(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=d};dist$1.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$5(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$1.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$1.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$5(this,o),this.type="Getter",this.name=s,this.body=a};IdentifierExpression_1=dist$1.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="IdentifierExpression",this.name=s};dist$1.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$1.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$1.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$1.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$1.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$5(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$1.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$1.LiteralInfinityExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralInfinityExpression"};dist$1.LiteralNullExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralNullExpression"};LiteralNumericExpression_1=dist$1.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralNumericExpression",this.value=s};dist$1.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$5(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};LiteralStringExpression_1=dist$1.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralStringExpression",this.value=s};dist$1.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$5(this,o),this.type="Module",this.directives=s,this.items=a};dist$1.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$1.NewTargetExpression=function o(){_classCallCheck$5(this,o),this.type="NewTargetExpression"};dist$1.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$1.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$1.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$5(this,o),this.type="ObjectExpression",this.properties=s};ReturnStatement_1=dist$1.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ReturnStatement",this.expression=s};dist$1.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="Script",this.directives=s,this.statements=a};dist$1.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$5(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$1.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="ShorthandProperty",this.name=s};dist$1.SpreadElement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadElement",this.expression=s};dist$1.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadProperty",this.expression=s};dist$1.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};StaticMemberExpression_1=dist$1.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$1.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="StaticPropertyName",this.value=s};dist$1.Super=function o(){_classCallCheck$5(this,o),this.type="Super"};dist$1.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$5(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$1.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$5(this,o),this.type="SwitchDefault",this.consequent=s};dist$1.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$5(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$1.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$5(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=d};dist$1.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="TemplateElement",this.rawValue=s};dist$1.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$5(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$1.ThisExpression=function o(){_classCallCheck$5(this,o),this.type="ThisExpression"};dist$1.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ThrowStatement",this.expression=s};dist$1.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$5(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$1.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$5(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$1.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$5(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$1.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$5(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$1.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$5(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$1.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$1.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$1.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$5(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$1.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$5(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$1.YieldExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldExpression",this.expression=s};dist$1.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldGeneratorExpression",this.expression=s};var dist={},minimalCodegen={};/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty$1=Object.prototype.hasOwnProperty,propIsEnumerable=Object.prototype.propertyIsEnumerable;function toObject(o){if(o==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(o)}function shouldUseNative(){try{if(!Object.assign)return!1;var o=new String("abc");if(o[5]="de",Object.getOwnPropertyNames(o)[0]==="5")return!1;for(var e={},s=0;s<10;s++)e["_"+String.fromCharCode(s)]=s;var a=Object.getOwnPropertyNames(e).map(function(d){return e[d]});if(a.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var objectAssign=shouldUseNative()?Object.assign:function(o,e){for(var s,a=toObject(o),c,d=1;d=48&&rt<=55}s=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function $(rt){return rt===32||rt===9||rt===11||rt===12||rt===160||rt>=5760&&s.indexOf(rt)>=0}function j(rt){return rt===10||rt===13||rt===8232||rt===8233}function _e(rt){if(rt<=65535)return String.fromCharCode(rt);var st=String.fromCharCode(Math.floor((rt-65536)/1024)+55296),at=String.fromCharCode((rt-65536)%1024+56320);return st+at}for(a=new Array(128),d=0;d<128;++d)a[d]=d>=97&&d<=122||d>=65&&d<=90||d===36||d===95;for(c=new Array(128),d=0;d<128;++d)c[d]=d>=97&&d<=122||d>=65&&d<=90||d>=48&&d<=57||d===36||d===95;function et(rt){return rt<128?a[rt]:e.NonAsciiIdentifierStart.test(_e(rt))}function tt(rt){return rt<128?c[rt]:e.NonAsciiIdentifierPart.test(_e(rt))}function nt(rt){return rt<128?a[rt]:o.NonAsciiIdentifierStart.test(_e(rt))}function it(rt){return rt<128?c[rt]:o.NonAsciiIdentifierPart.test(_e(rt))}code$1.exports={isDecimalDigit:_,isHexDigit:b,isOctalDigit:k,isWhiteSpace:$,isLineTerminator:j,isIdentifierStartES5:et,isIdentifierPartES5:tt,isIdentifierStartES6:nt,isIdentifierPartES6:it}})();var keyword$1={exports:{}};(function(){var o=code$1.exports;function e(et){switch(et){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function s(et,tt){return!tt&&et==="yield"?!1:a(et,tt)}function a(et,tt){if(tt&&e(et))return!0;switch(et.length){case 2:return et==="if"||et==="in"||et==="do";case 3:return et==="var"||et==="for"||et==="new"||et==="try";case 4:return et==="this"||et==="else"||et==="case"||et==="void"||et==="with"||et==="enum";case 5:return et==="while"||et==="break"||et==="catch"||et==="throw"||et==="const"||et==="yield"||et==="class"||et==="super";case 6:return et==="return"||et==="typeof"||et==="delete"||et==="switch"||et==="export"||et==="import";case 7:return et==="default"||et==="finally"||et==="extends";case 8:return et==="function"||et==="continue"||et==="debugger";case 10:return et==="instanceof";default:return!1}}function c(et,tt){return et==="null"||et==="true"||et==="false"||s(et,tt)}function d(et,tt){return et==="null"||et==="true"||et==="false"||a(et,tt)}function _(et){return et==="eval"||et==="arguments"}function b(et){var tt,nt,it;if(et.length===0||(it=et.charCodeAt(0),!o.isIdentifierStartES5(it)))return!1;for(tt=1,nt=et.length;tt=nt||(rt=et.charCodeAt(tt),!(56320<=rt&&rt<=57343)))return!1;it=k(it,rt)}if(!st(it))return!1;st=o.isIdentifierPartES6}return!0}function j(et,tt){return b(et)&&!c(et,tt)}function _e(et,tt){return $(et)&&!d(et,tt)}keyword$1.exports={isKeywordES5:s,isKeywordES6:a,isReservedWordES5:c,isReservedWordES6:d,isRestrictedWord:_,isIdentifierNameES5:b,isIdentifierNameES6:$,isIdentifierES5:j,isIdentifierES6:_e}})();(function(){utils.ast=ast.exports,utils.code=code$1.exports,utils.keyword=keyword$1.exports})();var coderep={};Object.defineProperty(coderep,"__esModule",{value:!0});var _createClass$4=function(){function o(e,s){for(var a=0;a":Precedence.Relational,"<=":Precedence.Relational,">=":Precedence.Relational,in:Precedence.Relational,instanceof:Precedence.Relational,"<<":Precedence.BitwiseSHIFT,">>":Precedence.BitwiseSHIFT,">>>":Precedence.BitwiseSHIFT,"+":Precedence.Additive,"-":Precedence.Additive,"*":Precedence.Multiplicative,"%":Precedence.Multiplicative,"/":Precedence.Multiplicative,"**":Precedence.Exponential};function getPrecedence(o){switch(o.type){case"ArrayExpression":case"FunctionExpression":case"ClassExpression":case"IdentifierExpression":case"AssignmentTargetIdentifier":case"NewTargetExpression":case"Super":case"LiteralBooleanExpression":case"LiteralNullExpression":case"LiteralNumericExpression":case"LiteralInfinityExpression":case"LiteralRegExpExpression":case"LiteralStringExpression":case"ObjectExpression":case"ThisExpression":case"SpreadElement":case"FunctionBody":return Precedence.Primary;case"ArrowExpression":case"AssignmentExpression":case"CompoundAssignmentExpression":case"YieldExpression":case"YieldGeneratorExpression":return Precedence.Assignment;case"ConditionalExpression":return Precedence.Conditional;case"ComputedMemberExpression":case"StaticMemberExpression":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":switch(o.object.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.object);default:return Precedence.Member}case"TemplateExpression":if(o.tag==null)return Precedence.Member;switch(o.tag.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.tag);default:return Precedence.Member}case"BinaryExpression":return BinaryPrecedence[o.operator];case"CallExpression":return Precedence.Call;case"NewExpression":return o.arguments.length===0?Precedence.New:Precedence.Member;case"UpdateExpression":return o.isPrefix?Precedence.Prefix:Precedence.Postfix;case"AwaitExpression":case"UnaryExpression":return Precedence.Prefix;default:throw new Error("unreachable: "+o.type)}}function escapeStringLiteral(o){for(var e="",s=0,a=0,c=0,d=o.length;cs?"'":'"';e+=b;for(var k=0;k1&&arguments[1]!==void 0?arguments[1]:!1;_classCallCheck$4(this,e);var c=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return c.token=s,c.isRegExp=a,c}return _createClass$4(e,[{key:"emit",value:function(a){a.put(this.token,this.isRegExp)}}]),e}(CodeRep);coderep.RawToken=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.token=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putRaw(this.token)}}]),e}(CodeRep);coderep.NumberCodeRep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.number=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putNumber(this.number)}}]),e}(CodeRep);coderep.Paren=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("("),this.expr.emit(a,!1),a.put(")")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Bracket=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("["),this.expr.emit(a,!1),a.put("]")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Brace=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("{"),this.expr.emit(a,!1),a.put("}")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.NoIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){this.expr.emit(a,!0)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.ContainsIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){c?(a.put("("),this.expr.emit(a,!1),a.put(")")):this.expr.emit(a,!1)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Seq=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){this.children.forEach(function(d){return d.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.Semi=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,";"))}return e}(Token);coderep.CommaSep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){var d=!0;this.children.forEach(function(_){d?d=!1:a.put(","),_.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.SemiOp=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this))}return _createClass$4(e,[{key:"emit",value:function(a){a.putOptionalSemi()}}]),e}(CodeRep);Object.defineProperty(minimalCodegen,"__esModule",{value:!0});var _createClass$3=function(){function o(e,s){for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep$1.Token(o,e)}function paren(o){return new _coderep$1.Paren(o)}function brace(o){return new _coderep$1.Brace(o)}function bracket$1(o){return new _coderep$1.Bracket(o)}function noIn$1(o){return new _coderep$1.NoIn(o)}function markContainsIn$1(o){return o.containsIn?new _coderep$1.ContainsIn(o):o}function seq$1(){for(var o=arguments.length,e=Array(o),s=0;s0&&c[c.length-1]==null&&(d=seq$1(d,t$1(","))),bracket$1(d)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq$1(t$1("await"),p$1(s.expression,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1("="),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,d=a.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep$1.getPrecedence)(s.left)<(0,_coderep$1.getPrecedence)(s)||_e&&((0,_coderep$1.getPrecedence)(s.left)===(0,_coderep$1.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=paren(_),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep$1.getPrecedence)(s.right)<(0,_coderep$1.getPrecedence)(s)||!_e&&(0,_coderep$1.getPrecedence)(s.right)===(0,_coderep$1.getPrecedence)(s))&&(et=paren(et),tt=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=a.elements,d=a.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceArrayBinding",value:function(s,a){var c=a.elements,d=a.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,d=a.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,d=a.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return brace(seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return c}},{key:"reduceBreakStatement",value:function(s){return seq$1(t$1("break"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceCallExpression",value:function(s,a){var c=a.callee,d=a.arguments,_=d.map(function(b,k){return p$1(s.arguments[k],_coderep$1.Precedence.Assignment,b)});return(0,_objectAssign2$1.default)(seq$1(p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c),paren(commaSep(_))),{startsWithCurly:c.startsWithCurly,startsWithLet:c.startsWithLet,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,d=a.body;return seq$1(t$1("catch"),paren(c),d)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=seq$1(t$1("class"),s.name.name==="*default*"?empty$2():c);return d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=t$1("class");return c!=null&&(b=seq$1(b,c)),d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return s.isStatic?seq$1(t$1("static"),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return bracket$1(p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2$1.default)(seq$1(p$1(s.test,_coderep$1.Precedence.LogicalOR,c),t$1("?"),p$1(s.consequent,_coderep$1.Precedence.Assignment,d),t$1(":"),p$1(s.alternate,_coderep$1.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq$1(t$1("continue"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,d=a.expression;return seq$1(c,t$1(":"),getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(){return seq$1(t$1("debugger"),semiOp())}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,d=a.test;return seq$1(t$1("do"),c,t$1("while"),paren(d),semiOp())}},{key:"reduceEmptyStatement",value:function(){return semi()}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq$1(d?paren(c):c,semiOp())}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("in"),d)),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,d=a.test,_=a.update,b=a.body;return c&&(c.startsWithLetSquareBracket&&(c=paren(c)),c=noIn$1(markContainsIn$1(c))),(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c||empty$2(),semi(),d||empty$2(),semi(),_||empty$2())),b),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),t$1("await"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),brace(seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d))))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),s.name.name==="*default*"?empty$2():c,d,_)}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,d=a.params,_=a.body,b=seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),c||empty$2(),d,_);return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,d=a.rest;return paren(commaSep(c.concat(d==null?[]:[seq$1(t$1("..."),d)])))}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,d=a.body;c=this.regenerateArrowParams(s.params,c);var _=!1;return s.body.type!=="FunctionBody"&&(d.startsWithCurly?d=paren(d):d.containsIn&&(_=!0)),(0,_objectAssign2$1.default)(seq$1(s.isAsync?t$1("async"):empty$2(),c,t$1("=>"),p$1(s.body,_coderep$1.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,a){var c=a.name,d=a.body;return seq$1(t$1("get"),c,paren(empty$2()),d)}},{key:"reduceIdentifierExpression",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate;return _&&d.endsWithMissingElse&&(d=brace(d)),(0,_objectAssign2$1.default)(seq$1(t$1("if"),paren(c),d,_?seq$1(t$1("else"),_):empty$2()),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,d=a.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(brace(commaSep(d))),_.length===0?seq$1(t$1("import"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp()):seq$1(t$1("import"),commaSep(_),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,d=a.namespaceBinding;return seq$1(t$1("import"),c==null?empty$2():seq$1(c,t$1(",")),t$1("*"),t$1("as"),d,t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq$1(t$1(s.name),t$1("as"),c)}},{key:"reduceExportAllFrom",value:function(s){return seq$1(t$1("export"),t$1("*"),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),semiOp())}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq$1(c,semiOp())}return seq$1(t$1("export"),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?paren(c):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq$1(t$1("export default"),c);default:return seq$1(t$1("export default"),p$1(s.body,_coderep$1.Precedence.Assignment,c),semiOp())}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?t$1(s.name):seq$1(t$1(s.name),t$1("as"),t$1(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq$1(c,t$1("as"),t$1(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2$1.default)(seq$1(t$1(s.label+":"),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return t$1(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return t$1("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return t$1("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep$1.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return t$1("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),s.isGenerator?t$1("*"):empty$2(),c,d,_)}},{key:"reduceModule",value:function(s,a){var c=a.directives,d=a.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceNewExpression",value:function(s,a){var c=a.callee,d=a.arguments,_=d.map(function(k,$){return p$1(s.arguments[$],_coderep$1.Precedence.Assignment,k)}),b=(0,_coderep$1.getPrecedence)(s.callee)===_coderep$1.Precedence.Call?paren(c):p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c);return seq$1(t$1("new"),b,d.length===0?empty$2():paren(commaSep(_)))}},{key:"reduceNewTargetExpression",value:function(){return t$1("new.target")}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,d=brace(commaSep(c));return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2$1.default)(seq$1(p$1(s.operand,_coderep$1.Precedence.New,c),t$1(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq$1(t$1(s.operator),p$1(s.operand,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq$1(t$1("return"),c||empty$2(),semiOp())}},{key:"reduceScript",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,d=a.param,_=a.body;return seq$1(t$1("set"),c,paren(d),_)}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils$1.keyword.isIdentifierNameES6(s.value))return t$1(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep$1.NumberCodeRep(a):t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return t$1("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,d=a.consequent;return seq$1(t$1("case"),c,t$1(":"),seq$1.apply(void 0,_toConsumableArray$2(d)))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq$1(t$1("default:"),seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,d=a.cases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d))))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,d=a.preDefaultCases,_=a.defaultCase,b=a.postDefaultCases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d).concat([_],_toConsumableArray$2(b)))))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,d=a.elements,_=s.tag==null?empty$2():p$1(s.tag,(0,_coderep$1.getPrecedence)(s),c);_=seq$1(_,t$1("`"));for(var b=0,k=s.elements.length;b0?t$1("}"):empty$2(),d[b],b1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep.Token(s,a)}},{key:"p",value:function(s,a,c){return(0,_coderep.getPrecedence)(s)0&&d[d.length-1]==null&&(_=seq(_,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA))),this.bracket(_,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq(this.t("await"),this.sep(Sep.AWAIT),this.p(s.expression,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.p(s.expression,_coderep.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP("=")),this.t("="),this.sep(Sep.AFTER_ASSIGN_OP("=")),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_ASSIGN_OP(s.operator)),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,d=a.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep.getPrecedence)(s.left)<(0,_coderep.getPrecedence)(s)||_e&&((0,_coderep.getPrecedence)(s.left)===(0,_coderep.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=this.paren(_,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep.getPrecedence)(s.right)<(0,_coderep.getPrecedence)(s)||!_e&&(0,_coderep.getPrecedence)(s.right)===(0,_coderep.getPrecedence)(s))&&(et=this.paren(et,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),tt=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_BINOP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_BINOP(s.operator)),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=this,d=a.elements,_=a.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceArrayBinding",value:function(s,a){var c=this,d=a.elements,_=a.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,d=a.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,d=a.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return this.brace(seq.apply(void 0,_toConsumableArray$1(c)),s,Sep.BLOCK_BRACE_INITIAL,Sep.BLOCK_BRACE_FINAL,Sep.BLOCK_EMPTY)}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return seq(c,this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceBreakStatement",value:function(s){return seq(this.t("break"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceCallExpression",value:function(s,a){var c=this,d=a.callee,_=a.arguments,b=_.map(function(k,$){return c.p(s.arguments[$],_coderep.Precedence.Assignment,k)});return(0,_objectAssign2.default)(seq(this.p(s.callee,(0,_coderep.getPrecedence)(s),d),this.sep(Sep.CALL),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.CALL_PAREN_BEFORE,Sep.CALL_PAREN_AFTER,Sep.CALL_PAREN_EMPTY)),{startsWithCurly:d.startsWithCurly,startsWithLet:d.startsWithLet,startsWithLetSquareBracket:d.startsWithLetSquareBracket,startsWithFunctionOrClass:d.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,d=a.body;return seq(this.t("catch"),this.sep(Sep.BEFORE_CATCH_BINDING),this.paren(c,Sep.CATCH_PAREN_BEFORE,Sep.CATCH_PAREN_AFTER),this.sep(Sep.AFTER_CATCH_BINDING),d)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=seq(this.t("class"),s.name.name==="*default*"?empty$1():seq(this.sep(Sep.BEFORE_CLASS_NAME),c));return d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_DECLARATION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_BRACE_INITIAL,Sep.CLASS_BRACE_FINAL,Sep.CLASS_EMPTY),this.sep(Sep.AFTER_STATEMENT(s))),b}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=this.t("class");return c!=null&&(b=seq(b,this.sep(Sep.BEFORE_CLASS_NAME),c)),d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_EXPRESSION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_EXPRESSION_BRACE_INITIAL,Sep.CLASS_EXPRESSION_BRACE_FINAL,Sep.CLASS_EXPRESSION_BRACE_EMPTY)),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return c=seq(this.sep(Sep.BEFORE_CLASS_ELEMENT),c,this.sep(Sep.AFTER_CLASS_ELEMENT)),s.isStatic?seq(this.t("static"),this.sep(Sep.AFTER_STATIC),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET),this.bracket(d,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_EXPRESSION),this.bracket(d,Sep.COMPUTED_MEMBER_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return this.bracket(this.p(s.expression,_coderep.Precedence.Assignment,c),Sep.COMPUTED_PROPERTY_BRACKET_INTIAL,Sep.COMPUTED_PROPERTY_BRACKET_FINAL)}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2.default)(seq(this.p(s.test,_coderep.Precedence.LogicalOR,c),this.sep(Sep.BEFORE_TERNARY_QUESTION),this.t("?"),this.sep(Sep.AFTER_TERNARY_QUESTION),this.p(s.consequent,_coderep.Precedence.Assignment,d),this.sep(Sep.BEFORE_TERNARY_COLON),this.t(":"),this.sep(Sep.AFTER_TERNARY_COLON),this.p(s.alternate,_coderep.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq(this.t("continue"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,d=a.expression;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),this.getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(s){return seq(this.t("debugger"),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,d=a.test;return seq(this.t("do"),this.sep(Sep.AFTER_DO),c,this.sep(Sep.BEFORE_DOWHILE_WHILE),this.t("while"),this.sep(Sep.AFTER_DOWHILE_WHILE),this.paren(d,Sep.DO_WHILE_TEST_PAREN_BEFORE,Sep.DO_WHILE_TEST_PAREN_AFTER),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceEmptyStatement",value:function(s){return seq(this.t(";"),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq(d?this.paren(c,Sep.EXPRESSION_STATEMENT_PAREN_BEFORE,Sep.EXPRESSION_STATEMENT_PAREN_AFTER):c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FORIN_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_IN_LET_PAREN_BEFORE,Sep.FOR_IN_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FORIN_IN),this.t("in"),this.sep(Sep.AFTER_FORIN_FOR),d),Sep.FOR_IN_PAREN_BEFORE,Sep.FOR_IN_PAREN_AFTER),this.sep(Sep.BEFORE_FORIN_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,d=a.test,_=a.update,b=a.body;return c&&(c.startsWithLetSquareBracket&&(c=this.paren(c,Sep.FOR_LET_PAREN_BEFORE,Sep.FOR_LET_PAREN_AFTER)),c=noIn(markContainsIn(c))),(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOR_FOR),this.paren(seq(c?seq(this.sep(Sep.BEFORE_FOR_INIT),c,this.sep(Sep.AFTER_FOR_INIT)):this.sep(Sep.EMPTY_FOR_INIT),this.t(";"),d?seq(this.sep(Sep.BEFORE_FOR_TEST),d,this.sep(Sep.AFTER_FOR_TEST)):this.sep(Sep.EMPTY_FOR_TEST),this.t(";"),_?seq(this.sep(Sep.BEFORE_FOR_UPDATE),_,this.sep(Sep.AFTER_FOR_UPDATE)):this.sep(Sep.EMPTY_FOR_UPDATE))),this.sep(Sep.BEFORE_FOR_BODY),b,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.t("await"),this.sep(Sep.AFTER_FORAWAIT_AWAIT),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_FUNCTION_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),s.name.name==="*default*"?empty$1():c,this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_DECLARATION_BODY),this.brace(_,s,Sep.FUNCTION_BRACE_INITIAL,Sep.FUNCTION_BRACE_FINAL,Sep.FUNCTION_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,d=a.params,_=a.body,b=seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),c||empty$1(),this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_EXPRESSION_BODY),this.brace(_,s,Sep.FUNCTION_EXPRESSION_BRACE_INITIAL,Sep.FUNCTION_EXPRESSION_BRACE_FINAL,Sep.FUNCTION_EXPRESSION_EMPTY));return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,d=a.rest;return this.commaSep(c.concat(d==null?[]:[seq(this.t("..."),this.sep(Sep.REST),d)]),Sep.PARAMETER_BEFORE_COMMA,Sep.PARAMETER_AFTER_COMMA)}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,d=a.body;(s.params.rest!=null||s.params.items.length!==1||s.params.items[0].type!=="BindingIdentifier")&&(c=this.paren(c,Sep.ARROW_PARAMETERS_PAREN_BEFORE,Sep.ARROW_PARAMETERS_PAREN_AFTER,Sep.ARROW_PARAMETERS_PAREN_EMPTY));var _=!1;return s.body.type==="FunctionBody"?d=this.brace(d,s,Sep.ARROW_BRACE_INITIAL,Sep.ARROW_BRACE_FINAL,Sep.ARROW_BRACE_EMPTY):d.startsWithCurly?d=this.paren(d,Sep.ARROW_BODY_PAREN_BEFORE,Sep.ARROW_BODY_PAREN_AFTER):d.containsIn&&(_=!0),(0,_objectAssign2.default)(seq(s.isAsync?seq(this.t("async"),this.sep(Sep.BEFORE_ARROW_ASYNC_PARAMS)):empty$1(),c,this.sep(Sep.BEFORE_ARROW),this.t("=>"),this.sep(Sep.AFTER_ARROW),this.p(s.body,_coderep.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,a){var c=a.name,d=a.body;return seq(this.t("get"),this.sep(Sep.AFTER_GET),c,this.sep(Sep.BEFORE_GET_PARAMS),this.paren(empty$1(),null,null,Sep.GETTER_PARAMS),this.sep(Sep.BEFORE_GET_BODY),this.brace(d,s,Sep.GET_BRACE_INTIAL,Sep.GET_BRACE_FINAL,Sep.GET_BRACE_EMPTY))}},{key:"reduceIdentifierExpression",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate;return _&&d.endsWithMissingElse&&(d=this.brace(d,s,Sep.MISSING_ELSE_INTIIAL,Sep.MISSING_ELSE_FINAL,Sep.MISSING_ELSE_EMPTY)),(0,_objectAssign2.default)(seq(this.t("if"),this.sep(Sep.AFTER_IF),this.paren(c,Sep.IF_PAREN_BEFORE,Sep.IF_PAREN_AFTER),this.sep(Sep.AFTER_IF_TEST),d,_?seq(this.sep(Sep.BEFORE_ELSE),this.t("else"),this.sep(Sep.AFTER_ELSE),_):empty$1(),this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,d=a.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(this.brace(this.commaSep(d,Sep.NAMED_IMPORT_BEFORE_COMMA,Sep.NAMED_IMPORT_AFTER_COMMA),s,Sep.IMPORT_BRACE_INTIAL,Sep.IMPORT_BRACE_FINAL,Sep.IMPORT_BRACE_EMPTY)),_.length===0?seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_MODULE),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s))):seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_BINDINGS),this.commaSep(_,Sep.IMPORT_BEFORE_COMMA,Sep.IMPORT_AFTER_COMMA),this.sep(Sep.AFTER_IMPORT_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,d=a.namespaceBinding;return seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_NAMESPACE),c==null?empty$1():seq(c,this.sep(Sep.IMPORT_BEFORE_COMMA),this.t(","),this.sep(Sep.IMPORT_AFTER_COMMA)),this.sep(Sep.BEFORE_IMPORT_STAR),this.t("*"),this.sep(Sep.AFTER_IMPORT_STAR),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),d,this.sep(Sep.AFTER_NAMESPACE_BINDING),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq(this.t(s.name),this.sep(Sep.BEFORE_IMPORT_AS),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),c)}},{key:"reduceExportAllFrom",value:function(s){return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_STAR),this.t("*"),this.sep(Sep.AFTER_EXPORT_STAR),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_FROM_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_LOCAL_BINDINGS),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq(c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}return seq(this.t("export"),this.sep(Sep.AFTER_EXPORT),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?this.paren(c,Sep.EXPORT_PAREN_BEFORE,Sep.EXPORT_PAREN_AFTER):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),c);default:return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),this.p(s.body,_coderep.Precedence.Assignment,c),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?this.t(s.name):seq(this.t(s.name),this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq(c,this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2.default)(seq(this.t(s.label),this.sep(Sep.BEFORE_LABEL_COLON),this.t(":"),this.sep(Sep.AFTER_LABEL_COLON),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return this.t(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return this.t("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return this.t("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return this.t("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq(s.isAsync?seq(this.t("async"),this.sep(Sep.AFTER_METHOD_ASYNC)):empty$1(),s.isGenerator?seq(this.t("*"),this.sep(Sep.AFTER_METHOD_GENERATOR_STAR)):empty$1(),c,this.sep(Sep.AFTER_METHOD_NAME),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_METHOD_BODY),this.brace(_,s,Sep.METHOD_BRACE_INTIAL,Sep.METHOD_BRACE_FINAL,Sep.METHOD_BRACE_EMPTY))}},{key:"reduceModule",value:function(s,a){var c=a.directives,d=a.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_MODULE_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceNewExpression",value:function(s,a){var c=this,d=a.callee,_=a.arguments,b=_.map(function($,j){return c.p(s.arguments[j],_coderep.Precedence.Assignment,$)}),k=(0,_coderep.getPrecedence)(s.callee)===_coderep.Precedence.Call?this.paren(d,Sep.NEW_CALLEE_PAREN_BEFORE,Sep.NEW_CALLEE_PAREN_AFTER):this.p(s.callee,(0,_coderep.getPrecedence)(s),d);return seq(this.t("new"),this.sep(Sep.AFTER_NEW),k,_.length===0?this.sep(Sep.EMPTY_NEW_CALL):seq(this.sep(Sep.BEFORE_NEW_ARGS),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.NEW_PAREN_BEFORE,Sep.NEW_PAREN_AFTER,Sep.NEW_PAREN_EMPTY)))}},{key:"reduceNewTargetExpression",value:function(){return seq(this.t("new"),this.sep(Sep.NEW_TARGET_BEFORE_DOT),this.t("."),this.sep(Sep.NEW_TARGET_AFTER_DOT),this.t("target"))}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,d=this.brace(this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2.default)(seq(this.p(s.operand,_coderep.Precedence.New,c),this.sep(Sep.BEFORE_POSTFIX(s.operator)),this.t(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq(this.t(s.operator),this.sep(Sep.UNARY(s.operator)),this.p(s.operand,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq(this.t("return"),c?seq(this.sep(Sep.RETURN),c):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceScript",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_SCRIPT_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,d=a.param,_=a.body;return seq(this.t("set"),this.sep(Sep.AFTER_SET),c,this.sep(Sep.BEFORE_SET_PARAMS),this.paren(d,Sep.SETTER_PARAM_BEFORE,Sep.SETTER_PARAM_AFTER),this.sep(Sep.BEFORE_SET_BODY),this.brace(_,s,Sep.SET_BRACE_INTIIAL,Sep.SET_BRACE_FINAL,Sep.SET_BRACE_EMPTY))}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils.keyword.isIdentifierNameES6(s.value))return this.t(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep.NumberCodeRep(a):this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return this.t("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,d=a.consequent;return seq(this.t("case"),this.sep(Sep.BEFORE_CASE_TEST),c,this.sep(Sep.AFTER_CASE_TEST),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(d)),this.sep(Sep.AFTER_CASE_BODY))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq(this.t("default"),this.sep(Sep.DEFAULT),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(c)),this.sep(Sep.AFTER_DEFAULT_BODY))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,d=a.cases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d)),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,d=a.preDefaultCases,_=a.defaultCase,b=a.postDefaultCases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d).concat([_],_toConsumableArray$1(b))),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,d=a.elements,_=s.tag==null?empty$1():seq(this.p(s.tag,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.TEMPLATE_TAG));_=seq(_,this.t("`"));for(var b=0,k=s.elements.length;b0&&($+="}"),$+=s.elements[b].rawValue,b=1e3&&o%10===0?(e=o.toString(10),/[eE]/.test(e)?e.replace(/[eE]\+/,"e"):o.toString(10).replace(/0{3,}$/,function(s){return"e"+s.length})):o%1===0?o>1e15&&o<1e20?"0x"+o.toString(16).toUpperCase():o.toString(10).replace(/[eE]\+/,"e"):o.toString(10).replace(/^0\./,".").replace(/[eE]\+/,"e")}tokenStream.TokenStream=function(){function o(){_classCallCheck$1(this,o),this.result="",this.lastNumber=null,this.lastCodePoint=null,this.lastTokenStr="",this.optionalSemi=!1,this.previousWasRegExp=!1,this.partialHtmlComment=!1}return _createClass$1(o,[{key:"putNumber",value:function(s){var a=renderNumber(s);this.put(a),this.lastNumber=a}},{key:"putOptionalSemi",value:function(){this.optionalSemi=!0}},{key:"putRaw",value:function(s){this.result+=s,this.lastTokenStr=s}},{key:"put",value:function(s,a){if(this.optionalSemi&&(this.optionalSemi=!1,s!=="}"&&(this.result+=";",this.lastCodePoint=";",this.previousWasRegExp=!1)),this.lastNumber!==null&&s.length===1&&s==="."){this.result+=needsDoubleDot(this.lastNumber)?"..":".",this.lastNumber=null,this.lastCodePoint=".";return}var c=[].concat(_toConsumableArray(s)).length;if(c>0){this.lastNumber=null;var d=String.fromCodePoint(s.codePointAt(0)),_=this.lastCodePoint;this.lastCodePoint=String.fromCodePoint(s.codePointAt(c-1));var b=this.previousWasRegExp;this.previousWasRegExp=a,_&&((_==="+"||_==="-")&&_===d||isIdentifierPartES6(_)&&isIdentifierPartES6(d)||_==="/"&&d==="/"||b&&d==="i"||this.partialHtmlComment&&s.startsWith("--"))&&(this.result+=" ")}this.partialHtmlComment=this.lastTokenStr.endsWith("<")&&s==="!",this.result+=s,this.lastTokenStr=s}}]),o}();Object.defineProperty(withLocation,"__esModule",{value:!0});var _createClass=function(){function o(e,s){for(var a=0;a1?c-1:0),_=1;_1?c-1:0),_=1;_1?c-1:0),_=1;_1&&arguments[1]!==void 0?arguments[1]:new _minimalCodegen2.default,s=new TokenStreamWithLocation,a=(0,_shiftReducer.reduce)(addLocationToReducer(e),o);return a.emit(s),{source:s.result,locations:s.locations}}(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.codeGenWithLocation=o.SemiOp=o.CommaSep=o.Semi=o.Seq=o.ContainsIn=o.NoIn=o.Brace=o.Bracket=o.Paren=o.NumberCodeRep=o.Token=o.Empty=o.CodeRep=o.escapeStringLiteral=o.getPrecedence=o.Precedence=o.Sep=o.FormattedCodeGen=o.ExtensibleCodeGen=o.MinimalCodeGen=void 0,o.default=j;var e=minimalCodegen;Object.defineProperty(o,"MinimalCodeGen",{enumerable:!0,get:function(){return $(e).default}});var s=formattedCodegen;Object.defineProperty(o,"ExtensibleCodeGen",{enumerable:!0,get:function(){return s.ExtensibleCodeGen}}),Object.defineProperty(o,"FormattedCodeGen",{enumerable:!0,get:function(){return s.FormattedCodeGen}}),Object.defineProperty(o,"Sep",{enumerable:!0,get:function(){return s.Sep}});var a=coderep;Object.defineProperty(o,"Precedence",{enumerable:!0,get:function(){return a.Precedence}}),Object.defineProperty(o,"getPrecedence",{enumerable:!0,get:function(){return a.getPrecedence}}),Object.defineProperty(o,"escapeStringLiteral",{enumerable:!0,get:function(){return a.escapeStringLiteral}}),Object.defineProperty(o,"CodeRep",{enumerable:!0,get:function(){return a.CodeRep}}),Object.defineProperty(o,"Empty",{enumerable:!0,get:function(){return a.Empty}}),Object.defineProperty(o,"Token",{enumerable:!0,get:function(){return a.Token}}),Object.defineProperty(o,"NumberCodeRep",{enumerable:!0,get:function(){return a.NumberCodeRep}}),Object.defineProperty(o,"Paren",{enumerable:!0,get:function(){return a.Paren}}),Object.defineProperty(o,"Bracket",{enumerable:!0,get:function(){return a.Bracket}}),Object.defineProperty(o,"Brace",{enumerable:!0,get:function(){return a.Brace}}),Object.defineProperty(o,"NoIn",{enumerable:!0,get:function(){return a.NoIn}}),Object.defineProperty(o,"ContainsIn",{enumerable:!0,get:function(){return a.ContainsIn}}),Object.defineProperty(o,"Seq",{enumerable:!0,get:function(){return a.Seq}}),Object.defineProperty(o,"Semi",{enumerable:!0,get:function(){return a.Semi}}),Object.defineProperty(o,"CommaSep",{enumerable:!0,get:function(){return a.CommaSep}}),Object.defineProperty(o,"SemiOp",{enumerable:!0,get:function(){return a.SemiOp}});var c=withLocation;Object.defineProperty(o,"codeGenWithLocation",{enumerable:!0,get:function(){return $(c).default}});var d=dist$4,_=$(d),b=tokenStream,k=$(e);function $(_e){return _e&&_e.__esModule?_e:{default:_e}}function j(_e){var et=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new k.default,tt=new b.TokenStream,nt=(0,_.default)(et,_e);return nt.emit(tt),tt.result}})(dist);var shiftCodegen=getDefaultExportFromCjs(dist);const{replace}=estraverse,codegen=shiftCodegen.default||shiftCodegen,{Pattern:Pattern$2}=strudel,isNote$1=o=>/^[a-gC-G][bs]?[0-9]$/.test(o);var shapeshifter=o=>{const{code:e,addReturn:s}=wrapAsync(o),a=dist$7.parseScriptWithLocation(e),c=[],d=[],_=replace(a.tree,{enter(k,$){var tt,nt,it;if(d.push($),d.some(rt=>c.includes(rt)))return k;if(isBackTickString(k))return minifyWithLocation(k,k,a.locations,c);if(((tt=k.directives)==null?void 0:tt.length)===1&&!((nt=k.statements)!=null&&nt.length)){const rt=new LiteralStringExpression_1({value:k.directives[0].rawValue}),st=minifyWithLocation(rt,k.directives[0],a.locations,c);return wt(_t({},k),{directives:[],statements:[st]})}if(isStringWithDoubleQuotes(k,a.locations,e))return minifyWithLocation(k,k,a.locations,c);const _e={"*":"fast","/":"slow","&":"stack","&&":"append"};if(k.type==="BinaryExpression"&&_e[k.operator]&&["LiteralNumericExpression","LiteralStringExpression","IdentifierExpression"].includes((it=k.right)==null?void 0:it.type)&&canBeOverloaded(k.left)){let rt=k.left;return k.left.type==="IdentifierExpression"&&(rt=wrapFunction("reify",k.left)),new CallExpression_1({callee:new StaticMemberExpression_1({property:_e[k.operator],object:wrapFunction("reify",rt)}),arguments:[k.right]})}const et=isPatternArg(d)||hasModifierCall($);if(k.type==="CallExpression"&&k.callee.name==="pure"){const rt=k.arguments[0];return reifyWithLocation(rt,k.arguments[0],a.locations,c)}if(k.type==="IdentifierExpression"){if(isNote$1(k.name)){const rt=k.name[1]==="s"?k.name.replace("s","#"):k.name;return et?reifyWithLocation(new LiteralStringExpression_1({value:rt}),k,a.locations,c):new LiteralStringExpression_1({value:rt})}if(k.name==="r")return new IdentifierExpression_1({name:"silence"})}return["LiteralStringExpression"].includes(k.type)&&et?reifyWithLocation(k,k,a.locations,c):addMiniNotationLocations(k,a.locations,c)},leave(){d.pop()}});return s(_),codegen(_)};function wrapAsync(o){return o=`(async () => { -${o} -})()`,{code:o,addReturn:s=>{const a=s.statements[0].expression.callee.body;a.statements=a.statements.slice(0,-1).concat([new ReturnStatement_1({expression:a.statements.slice(-1)[0]})])}}}function addMiniNotationLocations(o,e,s){const a=["mini","m"];if(o.type==="CallExpression"&&a.includes(o.callee.name)){if(o.arguments.length>1)return console.warn("multi arg mini locations not supported yet..."),o;const c=o.arguments[0];return minifyWithLocation(c,c,e,s)}return o.type==="StaticMemberExpression"&&a.includes(o.property)?minifyWithLocation(o.object,o,e,s):o}function wrapFunction(o,...e){return new CallExpression_1({callee:new IdentifierExpression_1({name:o}),arguments:e})}function isBackTickString(o){return o.type==="TemplateExpression"&&o.elements.length===1}function isStringWithDoubleQuotes(o,e,s){if(o.type!=="LiteralStringExpression")return!1;const a=e.get(o);return s.slice(a.start.offset,a.end.offset)[0]==='"'}function isPatternArg(o){if(!o.length)return!1;const e=o.slice(0,-1),s=o[o.length-1];return isPatternFactory(s)?!0:(s==null?void 0:s.type)==="ArrayExpression"?isPatternArg(e):!1}function hasModifierCall(o){return(o==null?void 0:o.type)==="StaticMemberExpression"&&Object.keys(Pattern$2.prototype.composable).includes(o.property)}const factories=Object.keys(Pattern$2.prototype.factories).concat(["mini"]);function isPatternFactory(o){return(o==null?void 0:o.type)==="CallExpression"&&factories.includes(o.callee.name)}function canBeOverloaded(o){return o.type==="IdentifierExpression"&&isNote$1(o.name)||isPatternFactory(o)}function reifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),d=new CallExpression_1({callee:new StaticMemberExpression_1({object:wrapFunction("reify",o),property:"withLocation"}),arguments:c});return a.push(d),d}function minifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),d=wrapFunction("mini",o),_=new CallExpression_1({callee:new StaticMemberExpression_1({object:d,property:"withMiniLocation"}),arguments:c});return a.push(_),_}function getLocationArguments(o,e){const s=e.get(o),a=-1;return[new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.start.line+a}),new LiteralNumericExpression_1({value:s.start.column}),new LiteralNumericExpression_1({value:s.start.offset})]}),new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.end.line+a}),new LiteralNumericExpression_1({value:s.end.column}),new LiteralNumericExpression_1({value:s.end.offset})]})]}const{isPattern,Pattern:Pattern$1}=strudel;let scoped=!1;const evalScope=async(...o)=>{scoped&&console.warn("@strudel.cycles/eval evalScope was called more than once."),scoped=!0;const e=await Promise.allSettled(o),s=e.filter(a=>a.status==="fulfilled").map(a=>a.value);e.forEach((a,c)=>{a.status==="rejected"&&console.warn(`evalScope: module with index ${c} could not be loaded:`,a.reason)}),Object.assign(globalThis,...s,Pattern$1.prototype.bootstrap())};function safeEval(o){return Function('"use strict";return ('+o+")")()}const evaluate=async o=>{scoped||await evalScope();const e=shapeshifter(o);let s=await safeEval(e);if(!isPattern(s)){console.log("evaluated",s);const a=`got "${typeof s}" instead of pattern`;throw new Error(a+(typeof s=="function"?", did you forget to call a function?":"."))}return{mode:"javascript",pattern:s}};let extend="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(o=>o?parseInt(o,36):1);for(let o=1;oo)return extend[e-1]<=o;return!1}function isRegionalIndicator(o){return o>=127462&&o<=127487}const ZWJ=8205;function findClusterBreak(o,e,s=!0,a=!0){return(s?nextClusterBreak:prevClusterBreak)(o,e,a)}function nextClusterBreak(o,e,s){if(e==o.length)return e;e&&surrogateLow(o.charCodeAt(e))&&surrogateHigh(o.charCodeAt(e-1))&&e--;let a=codePointAt(o,e);for(e+=codePointSize(a);e=0&&isRegionalIndicator(codePointAt(o,_));)d++,_-=2;if(d%2==0)break;e+=2}else break}return e}function prevClusterBreak(o,e,s){for(;e>0;){let a=nextClusterBreak(o,e-2,s);if(a=56320&&o<57344}function surrogateHigh(o){return o>=55296&&o<56320}function codePointAt(o,e){let s=o.charCodeAt(e);if(!surrogateHigh(s)||e+1==o.length)return s;let a=o.charCodeAt(e+1);return surrogateLow(a)?(s-55296<<10)+(a-56320)+65536:s}function fromCodePoint(o){return o<=65535?String.fromCharCode(o):(o-=65536,String.fromCharCode((o>>10)+55296,(o&1023)+56320))}function codePointSize(o){return o<65536?1:2}function countColumn(o,e,s=o.length){let a=0;for(let c=0;c=e)return c;if(c==o.length)break;d+=o.charCodeAt(c)==9?s-d%s:1,c=findClusterBreak(o,c)}return a===!0?-1:o.length}class Text{constructor(){}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,s,a){let c=[];return this.decompose(0,e,c,2),a.length&&a.decompose(0,a.length,c,3),this.decompose(s,this.length,c,1),TextNode.from(c,this.length-(s-e)+a.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,s=this.length){let a=[];return this.decompose(e,s,a,0),TextNode.from(a,s-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let s=this.scanIdentical(e,1),a=this.length-this.scanIdentical(e,-1),c=new RawTextCursor(this),d=new RawTextCursor(e);for(let _=s,b=s;;){if(c.next(_),d.next(_),_=0,c.lineBreak!=d.lineBreak||c.done!=d.done||c.value!=d.value)return!1;if(b+=c.value.length,c.done||b>=a)return!0}}iter(e=1){return new RawTextCursor(this,e)}iterRange(e,s=this.length){return new PartialTextCursor(this,e,s)}iterLines(e,s){let a;if(e==null)a=this.iter();else{s==null&&(s=this.lines+1);let c=this.line(e).from;a=this.iterRange(c,Math.max(c,s==this.lines+1?this.length:s<=1?0:this.line(s-1).to))}return new LineCursor(a)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?Text.empty:e.length<=32?new TextLeaf(e):TextNode.from(TextLeaf.split(e,[]))}}class TextLeaf extends Text{constructor(e,s=textLength(e)){super(),this.text=e,this.length=s}get lines(){return this.text.length}get children(){return null}lineInner(e,s,a,c){for(let d=0;;d++){let _=this.text[d],b=c+_.length;if((s?a:b)>=e)return new Line(c,b,a,_);c=b+1,a++}}decompose(e,s,a,c){let d=e<=0&&s>=this.length?this:new TextLeaf(sliceText(this.text,e,s),Math.min(s,this.length)-Math.max(0,e));if(c&1){let _=a.pop(),b=appendText(d.text,_.text.slice(),0,d.length);if(b.length<=32)a.push(new TextLeaf(b,_.length+d.length));else{let k=b.length>>1;a.push(new TextLeaf(b.slice(0,k)),new TextLeaf(b.slice(k)))}}else a.push(d)}replace(e,s,a){if(!(a instanceof TextLeaf))return super.replace(e,s,a);let c=appendText(this.text,appendText(a.text,sliceText(this.text,0,e)),s),d=this.length+a.length-(s-e);return c.length<=32?new TextLeaf(c,d):TextNode.from(TextLeaf.split(c,[]),d)}sliceString(e,s=this.length,a=` -`){let c="";for(let d=0,_=0;d<=s&&_e&&_&&(c+=a),ed&&(c+=b.slice(Math.max(0,e-d),s-d)),d=k+1}return c}flatten(e){for(let s of this.text)e.push(s)}scanIdentical(){return 0}static split(e,s){let a=[],c=-1;for(let d of e)a.push(d),c+=d.length+1,a.length==32&&(s.push(new TextLeaf(a,c)),a=[],c=-1);return c>-1&&s.push(new TextLeaf(a,c)),s}}class TextNode extends Text{constructor(e,s){super(),this.children=e,this.length=s,this.lines=0;for(let a of e)this.lines+=a.lines}lineInner(e,s,a,c){for(let d=0;;d++){let _=this.children[d],b=c+_.length,k=a+_.lines-1;if((s?k:b)>=e)return _.lineInner(e,s,a,c);c=b+1,a=k+1}}decompose(e,s,a,c){for(let d=0,_=0;_<=s&&d=_){let $=c&((_<=e?1:0)|(k>=s?2:0));_>=e&&k<=s&&!$?a.push(b):b.decompose(e-_,s-_,a,$)}_=k+1}}replace(e,s,a){if(a.lines=d&&s<=b){let k=_.replace(e-d,s-d,a),$=this.lines-_.lines+k.lines;if(k.lines<$>>5-1&&k.lines>$>>5+1){let j=this.children.slice();return j[c]=k,new TextNode(j,this.length-(s-e)+a.length)}return super.replace(d,b,k)}d=b+1}return super.replace(e,s,a)}sliceString(e,s=this.length,a=` -`){let c="";for(let d=0,_=0;de&&d&&(c+=a),e_&&(c+=b.sliceString(e-_,s-_,a)),_=k+1}return c}flatten(e){for(let s of this.children)s.flatten(e)}scanIdentical(e,s){if(!(e instanceof TextNode))return 0;let a=0,[c,d,_,b]=s>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;c+=s,d+=s){if(c==_||d==b)return a;let k=this.children[c],$=e.children[d];if(k!=$)return a+k.scanIdentical($,s);a+=k.length+1}}static from(e,s=e.reduce((a,c)=>a+c.length+1,-1)){let a=0;for(let tt of e)a+=tt.lines;if(a<32){let tt=[];for(let nt of e)nt.flatten(tt);return new TextLeaf(tt,s)}let c=Math.max(32,a>>5),d=c<<1,_=c>>1,b=[],k=0,$=-1,j=[];function _e(tt){let nt;if(tt.lines>d&&tt instanceof TextNode)for(let it of tt.children)_e(it);else tt.lines>_&&(k>_||!k)?(et(),b.push(tt)):tt instanceof TextLeaf&&k&&(nt=j[j.length-1])instanceof TextLeaf&&tt.lines+nt.lines<=32?(k+=tt.lines,$+=tt.length+1,j[j.length-1]=new TextLeaf(nt.text.concat(tt.text),nt.length+1+tt.length)):(k+tt.lines>c&&et(),k+=tt.lines,$+=tt.length+1,j.push(tt))}function et(){k!=0&&(b.push(j.length==1?j[0]:TextNode.from(j,$)),$=-1,k=j.length=0)}for(let tt of e)_e(tt);return et(),b.length==1?b[0]:new TextNode(b,s)}}Text.empty=new TextLeaf([""],0);function textLength(o){let e=-1;for(let s of o)e+=s.length+1;return e}function appendText(o,e,s=0,a=1e9){for(let c=0,d=0,_=!0;d=s&&(k>a&&(b=b.slice(0,a-c)),c0?1:(e instanceof TextLeaf?e.text.length:e.children.length)<<1]}nextInner(e,s){for(this.done=this.lineBreak=!1;;){let a=this.nodes.length-1,c=this.nodes[a],d=this.offsets[a],_=d>>1,b=c instanceof TextLeaf?c.text.length:c.children.length;if(_==(s>0?b:0)){if(a==0)return this.done=!0,this.value="",this;s>0&&this.offsets[a-1]++,this.nodes.pop(),this.offsets.pop()}else if((d&1)==(s>0?0:1)){if(this.offsets[a]+=s,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(c instanceof TextLeaf){let k=c.text[_+(s<0?-1:0)];if(this.offsets[a]+=s,k.length>Math.max(0,e))return this.value=e==0?k:s>0?k.slice(e):k.slice(0,k.length-e),this;e-=k.length}else{let k=c.children[_+(s<0?-1:0)];e>k.length?(e-=k.length,this.offsets[a]+=s):(s<0&&this.offsets[a]--,this.nodes.push(k),this.offsets.push(s>0?1:(k instanceof TextLeaf?k.text.length:k.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class PartialTextCursor{constructor(e,s,a){this.value="",this.done=!1,this.cursor=new RawTextCursor(e,s>a?-1:1),this.pos=s>a?e.length:0,this.from=Math.min(s,a),this.to=Math.max(s,a)}nextInner(e,s){if(s<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,s<0?this.pos-this.to:this.from-this.pos);let a=s<0?this.pos-this.from:this.to-this.pos;e>a&&(e=a),a-=e;let{value:c}=this.cursor.next(e);return this.pos+=(c.length+e)*s,this.value=c.length<=a?c:s<0?c.slice(c.length-a):c.slice(0,a),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class LineCursor{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:s,lineBreak:a,value:c}=this.inner.next(e);return s?(this.done=!0,this.value=""):a?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=c,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol!="undefined"&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this});class Line{constructor(e,s,a,c){this.from=e,this.to=s,this.number=a,this.text=c}get length(){return this.to-this.from}}const DefaultSplit=/\r\n?|\n/;var MapMode=function(o){return o[o.Simple=0]="Simple",o[o.TrackDel=1]="TrackDel",o[o.TrackBefore=2]="TrackBefore",o[o.TrackAfter=3]="TrackAfter",o}(MapMode||(MapMode={}));class ChangeDesc{constructor(e){this.sections=e}get length(){let e=0;for(let s=0;se)return d+(e-c);d+=b}else{if(a!=MapMode.Simple&&$>=e&&(a==MapMode.TrackDel&&ce||a==MapMode.TrackBefore&&ce))return null;if($>e||$==e&&s<0&&!b)return e==c||s<0?d:d+k;d+=k}c=$}if(e>c)throw new RangeError(`Position ${e} is out of range for changeset of length ${c}`);return d}touchesRange(e,s=e){for(let a=0,c=0;a=0&&c<=s&&b>=e)return cs?"cover":!0;c=b}return!1}toString(){let e="";for(let s=0;s=0?":"+c:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(s=>typeof s!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(e)}}class ChangeSet extends ChangeDesc{constructor(e,s){super(e),this.inserted=s}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return iterChanges(this,(s,a,c,d,_)=>e=e.replace(c,c+(a-s),_),!1),e}mapDesc(e,s=!1){return mapSet(this,e,s,!0)}invert(e){let s=this.sections.slice(),a=[];for(let c=0,d=0;c=0){s[c]=b,s[c+1]=_;let k=c>>1;for(;a.length0&&addInsert(a,s,d.text),d.forward(j),b+=j}let $=e[_++];for(;b<$;){if(d.done)break e;let j=Math.min(d.len,$-b);addSection(s,j,-1),addSection(c,j,d.ins==-1?-1:d.off==0?d.ins:0),d.forward(j),b+=j}}return{changes:new ChangeSet(s,a),filtered:new ChangeDesc(c)}}toJSON(){let e=[];for(let s=0;s>1].toJSON()))}return e}static of(e,s,a){let c=[],d=[],_=0,b=null;function k(j=!1){if(!j&&!c.length)return;_et||_e<0||et>s)throw new RangeError(`Invalid change range ${_e} to ${et} (in doc of length ${s})`);let nt=tt?typeof tt=="string"?Text.of(tt.split(a||DefaultSplit)):tt:Text.empty,it=nt.length;if(_e==et&&it==0)return;_e<_&&k(),_e>_&&addSection(c,_e-_,-1),addSection(c,et-_e,it),addInsert(d,c,nt),_=et}}return $(e),k(!b),b}static empty(e){return new ChangeSet(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let s=[],a=[];for(let c=0;cb&&typeof _!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(d.length==1)s.push(d[0],0);else{for(;a.length=0&&s<=0&&s==o[c+1]?o[c]+=e:e==0&&o[c]==0?o[c+1]+=s:a?(o[c]+=e,o[c+1]+=s):o.push(e,s)}function addInsert(o,e,s){if(s.length==0)return;let a=e.length-2>>1;if(a>1])),!(s||_==o.sections.length||o.sections[_+1]<0);)b=o.sections[_++],k=o.sections[_++];e(c,$,d,j,_e),c=$,d=j}}}function mapSet(o,e,s,a=!1){let c=[],d=a?[]:null,_=new SectionIter(o),b=new SectionIter(e);for(let k=0,$=0;;)if(_.ins==-1)k+=_.len,_.next();else if(b.ins==-1&&$=0&&(_.done||$$&&!_.done&&k+_.len<$+b.len;)k+=_.len,_.next();$+=b.len,b.next()}else if(_.ins>=0){let j=0,_e=k+_.len;for(;;)if(b.ins>=0&&$>k&&$+b.len<_e)j+=b.ins,$+=b.len,b.next();else if(b.ins==-1&&$<_e){let et=Math.min(b.len,_e-$);j+=et,b.forward(et),$+=et}else break;addSection(c,j,_.ins),d&&addInsert(d,c,_.text),k=_e,_.next()}else{if(_.done&&b.done)return d?new ChangeSet(c,d):new ChangeDesc(c);throw new Error("Mismatched change set lengths")}}function composeSets(o,e,s=!1){let a=[],c=s?[]:null,d=new SectionIter(o),_=new SectionIter(e);for(let b=!1;;){if(d.done&&_.done)return c?new ChangeSet(a,c):new ChangeDesc(a);if(d.ins==0)addSection(a,d.len,0,b),d.next();else if(_.len==0&&!_.done)addSection(a,0,_.ins,b),c&&addInsert(c,a,_.text),_.next();else{if(d.done||_.done)throw new Error("Mismatched change set lengths");{let k=Math.min(d.len2,_.len),$=a.length;if(d.ins==-1){let j=_.ins==-1?-1:_.off?0:_.ins;addSection(a,k,j,b),c&&j&&addInsert(c,a,_.text)}else _.ins==-1?(addSection(a,d.off?0:d.len,k,b),c&&addInsert(c,a,d.textBit(k))):(addSection(a,d.off?0:d.len,_.off?0:_.ins,b),c&&!_.off&&addInsert(c,a,_.text));b=(d.ins>k||_.ins>=0&&_.len>k)&&(b||a.length>$),d.forward2(k),_.forward(k)}}}}class SectionIter{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return s>=e.length?Text.empty:e[s]}textBit(e){let{inserted:s}=this.set,a=this.i-2>>1;return a>=s.length&&!e?Text.empty:s[a].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class SelectionRange{constructor(e,s,a){this.from=e,this.to=s,this.flags=a}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,s=-1){let a,c;return this.empty?a=c=e.mapPos(this.from,s):(a=e.mapPos(this.from,1),c=e.mapPos(this.to,-1)),a==this.from&&c==this.to?this:new SelectionRange(a,c,this.flags)}extend(e,s=e){if(e<=this.anchor&&s>=this.anchor)return EditorSelection.range(e,s);let a=Math.abs(e-this.anchor)>Math.abs(s-this.anchor)?e:s;return EditorSelection.range(this.anchor,a)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(e.anchor,e.head)}}class EditorSelection{constructor(e,s=0){this.ranges=e,this.mainIndex=s}map(e,s=-1){return e.empty?this:EditorSelection.create(this.ranges.map(a=>a.map(e,s)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let s=0;se.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(e.ranges.map(s=>SelectionRange.fromJSON(s)),e.main)}static single(e,s=e){return new EditorSelection([EditorSelection.range(e,s)],0)}static create(e,s=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let a=0,c=0;ce?4:0))}}function normalized(o,e=0){let s=o[e];o.sort((a,c)=>a.from-c.from),e=o.indexOf(s);for(let a=1;ac.head?EditorSelection.range(b,_):EditorSelection.range(_,b))}}return new EditorSelection(o,e)}function checkSelection(o,e){for(let s of o.ranges)if(s.to>e)throw new RangeError("Selection points outside of document")}let nextID=0;class Facet{constructor(e,s,a,c,d){this.combine=e,this.compareInput=s,this.compare=a,this.isStatic=c,this.extensions=d,this.id=nextID++,this.default=e([])}static define(e={}){return new Facet(e.combine||(s=>s),e.compareInput||((s,a)=>s===a),e.compare||(e.combine?(s,a)=>s===a:sameArray$1),!!e.static,e.enables)}of(e){return new FacetProvider([],this,0,e)}compute(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,1,s)}computeN(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,2,s)}from(e,s){return s||(s=a=>a),this.compute([e],a=>s(a.field(e)))}}function sameArray$1(o,e){return o==e||o.length==e.length&&o.every((s,a)=>s===e[a])}class FacetProvider{constructor(e,s,a,c){this.dependencies=e,this.facet=s,this.type=a,this.value=c,this.id=nextID++}dynamicSlot(e){var s;let a=this.value,c=this.facet.compareInput,d=this.id,_=e[d]>>1,b=this.type==2,k=!1,$=!1,j=[];for(let _e of this.dependencies)_e=="doc"?k=!0:_e=="selection"?$=!0:(((s=e[_e.id])!==null&&s!==void 0?s:1)&1)==0&&j.push(e[_e.id]);return{create(_e){return _e.values[_]=a(_e),1},update(_e,et){if(k&&et.docChanged||$&&(et.docChanged||et.selection)||j.some(tt=>(ensureAddr(_e,tt)&1)>0)){let tt=a(_e);if(b?!compareArray(tt,_e.values[_],c):!c(tt,_e.values[_]))return _e.values[_]=tt,1}return 0},reconfigure(_e,et){let tt=a(_e),nt=et.config.address[d];if(nt!=null){let it=getAddr(et,nt);if(b?compareArray(tt,it,c):c(tt,it))return _e.values[_]=it,0}return _e.values[_]=tt,1}}}}function compareArray(o,e,s){if(o.length!=e.length)return!1;for(let a=0;ao[k.id]),c=s.map(k=>k.type),d=a.filter(k=>!(k&1)),_=o[e.id]>>1;function b(k){let $=[];for(let j=0;jensureAddr(k,_e)&1))return 0;let j=b(k);return e.compare(j,k.values[_])?0:(k.values[_]=j,1)},reconfigure(k,$){let j=a.some(nt=>ensureAddr(k,nt)&1),_e=$.config.facets[e.id],et=$.facet(e);if(_e&&!j&&sameArray$1(s,_e))return k.values[_]=et,0;let tt=b(k);return e.compare(tt,et)?(k.values[_]=et,0):(k.values[_]=tt,1)}}}const initField=Facet.define({static:!0});class StateField{constructor(e,s,a,c,d){this.id=e,this.createF=s,this.updateF=a,this.compareF=c,this.spec=d,this.provides=void 0}static define(e){let s=new StateField(nextID++,e.create,e.update,e.compare||((a,c)=>a===c),e);return e.provide&&(s.provides=e.provide(s)),s}create(e){let s=e.facet(initField).find(a=>a.field==this);return((s==null?void 0:s.create)||this.createF)(e)}slot(e){let s=e[this.id]>>1;return{create:a=>(a.values[s]=this.create(a),1),update:(a,c)=>{let d=a.values[s],_=this.updateF(d,c);return this.compareF(d,_)?0:(a.values[s]=_,1)},reconfigure:(a,c)=>c.config.address[this.id]!=null?(a.values[s]=c.field(this),0):(a.values[s]=this.create(a),1)}}init(e){return[this,initField.of({field:this,create:e})]}get extension(){return this}}const Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(o){return e=>new PrecExtension(e,o)}const Prec={lowest:prec(Prec_.lowest),low:prec(Prec_.low),default:prec(Prec_.default),high:prec(Prec_.high),highest:prec(Prec_.highest),fallback:prec(Prec_.lowest),extend:prec(Prec_.high),override:prec(Prec_.highest)};class PrecExtension{constructor(e,s){this.inner=e,this.prec=s}}class Compartment{of(e){return new CompartmentInstance(this,e)}reconfigure(e){return Compartment.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class CompartmentInstance{constructor(e,s){this.compartment=e,this.inner=s}}class Configuration{constructor(e,s,a,c,d,_){for(this.base=e,this.compartments=s,this.dynamicSlots=a,this.address=c,this.staticValues=d,this.facets=_,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,s,a){let c=[],d=Object.create(null),_=new Map;for(let et of flatten(e,s,_))et instanceof StateField?c.push(et):(d[et.facet.id]||(d[et.facet.id]=[])).push(et);let b=Object.create(null),k=[],$=[];for(let et of c)b[et.id]=$.length<<1,$.push(tt=>et.slot(tt));let j=a==null?void 0:a.config.facets;for(let et in d){let tt=d[et],nt=tt[0].facet,it=j&&j[et]||[];if(tt.every(rt=>rt.type==0))if(b[nt.id]=k.length<<1|1,sameArray$1(it,tt))k.push(a.facet(nt));else{let rt=nt.combine(tt.map(st=>st.value));k.push(a&&nt.compare(rt,a.facet(nt))?a.facet(nt):rt)}else{for(let rt of tt)rt.type==0?(b[rt.id]=k.length<<1|1,k.push(rt.value)):(b[rt.id]=$.length<<1,$.push(st=>rt.dynamicSlot(st)));b[nt.id]=$.length<<1,$.push(rt=>dynamicFacetSlot(rt,nt,tt))}}let _e=$.map(et=>et(b));return new Configuration(e,_,_e,b,k,d)}}function flatten(o,e,s){let a=[[],[],[],[],[]],c=new Map;function d(_,b){let k=c.get(_);if(k!=null){if(k>=b)return;let $=a[k].indexOf(_);$>-1&&a[k].splice($,1),_ instanceof CompartmentInstance&&s.delete(_.compartment)}if(c.set(_,b),Array.isArray(_))for(let $ of _)d($,b);else if(_ instanceof CompartmentInstance){if(s.has(_.compartment))throw new RangeError("Duplicate use of compartment in extensions");let $=e.get(_.compartment)||_.inner;s.set(_.compartment,$),d($,b)}else if(_ instanceof PrecExtension)d(_.inner,_.prec);else if(_ instanceof StateField)a[b].push(_),_.provides&&d(_.provides,b);else if(_ instanceof FacetProvider)a[b].push(_),_.facet.extensions&&d(_.facet.extensions,b);else{let $=_.extension;if(!$)throw new Error(`Unrecognized extension value in extension set (${_}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);d($,b)}}return d(o,Prec_.default),a.reduce((_,b)=>_.concat(b))}function ensureAddr(o,e){if(e&1)return 2;let s=e>>1,a=o.status[s];if(a==4)throw new Error("Cyclic dependency between fields and/or facets");if(a&2)return a;o.status[s]=4;let c=o.computeSlot(o,o.config.dynamicSlots[s]);return o.status[s]=2|c}function getAddr(o,e){return e&1?o.config.staticValues[e>>1]:o.values[e>>1]}const languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:o=>o.some(e=>e),static:!0}),lineSeparator=Facet.define({combine:o=>o.length?o[0]:void 0,static:!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly$1=Facet.define({combine:o=>o.length?o[0]:!1});class Annotation{constructor(e,s){this.type=e,this.value=s}static define(){return new AnnotationType}}class AnnotationType{of(e){return new Annotation(this,e)}}class StateEffectType{constructor(e){this.map=e}of(e){return new StateEffect(this,e)}}class StateEffect{constructor(e,s){this.type=e,this.value=s}map(e){let s=this.type.map(this.value,e);return s===void 0?void 0:s==this.value?this:new StateEffect(this.type,s)}is(e){return this.type==e}static define(e={}){return new StateEffectType(e.map||(s=>s))}static mapEffects(e,s){if(!e.length)return e;let a=[];for(let c of e){let d=c.map(s);d&&a.push(d)}return a}}StateEffect.reconfigure=StateEffect.define();StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(e,s,a,c,d,_){this.startState=e,this.changes=s,this.selection=a,this.effects=c,this.annotations=d,this.scrollIntoView=_,this._doc=null,this._state=null,a&&checkSelection(a,s.newLength),d.some(b=>b.type==Transaction.time)||(this.annotations=d.concat(Transaction.time.of(Date.now())))}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let s of this.annotations)if(s.type==e)return s.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let s=this.annotation(Transaction.userEvent);return!!(s&&(s==e||s.length>e.length&&s.slice(0,e.length)==e&&s[e.length]=="."))}}Transaction.time=Annotation.define();Transaction.userEvent=Annotation.define();Transaction.addToHistory=Annotation.define();Transaction.remote=Annotation.define();function joinRanges(o,e){let s=[];for(let a=0,c=0;;){let d,_;if(a=o[a]))d=o[a++],_=o[a++];else if(c=0;c--){let d=a[c](o);d instanceof Transaction?o=d:Array.isArray(d)&&d.length==1&&d[0]instanceof Transaction?o=d[0]:o=resolveTransaction(e,asArray$1(d),!1)}return o}function extendTransaction(o){let e=o.startState,s=e.facet(transactionExtender),a=o;for(let c=s.length-1;c>=0;c--){let d=s[c](o);d&&Object.keys(d).length&&(a=mergeTransaction(o,resolveTransactionInner(e,d,o.changes.newLength),!0))}return a==o?o:new Transaction(e,o.changes,o.selection,a.effects,a.annotations,a.scrollIntoView)}const none$3=[];function asArray$1(o){return o==null?none$3:Array.isArray(o)?o:[o]}var CharCategory=function(o){return o[o.Word=0]="Word",o[o.Space=1]="Space",o[o.Other=2]="Other",o}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wordChar;try{wordChar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(o){}function hasWordChar(o){if(wordChar)return wordChar.test(o);for(let e=0;e"\x80"&&(s.toUpperCase()!=s.toLowerCase()||nonASCIISingleCaseWordChar.test(s)))return!0}return!1}function makeCategorizer(o){return e=>{if(!/\S/.test(e))return CharCategory.Space;if(hasWordChar(e))return CharCategory.Word;for(let s=0;s-1)return CharCategory.Word;return CharCategory.Other}}class EditorState{constructor(e,s,a,c,d,_){this.config=e,this.doc=s,this.selection=a,this.values=c,this.status=e.statusTemplate.slice(),this.computeSlot=d,_&&(_._state=this);for(let b=0;bc.set(k,b)),s=null),c.set(_.value.compartment,_.value.extension)):_.is(StateEffect.reconfigure)?(s=null,a=_.value):_.is(StateEffect.appendConfig)&&(s=null,a=asArray$1(a).concat(_.value));let d;s?d=e.startState.values.slice():(s=Configuration.resolve(a,c,this),d=new EditorState(s,this.doc,this.selection,s.dynamicSlots.map(()=>null),(b,k)=>k.reconfigure(b,this),null).values),new EditorState(s,e.newDoc,e.newSelection,d,(_,b)=>b.update(_,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(s=>({changes:{from:s.from,to:s.to,insert:e},range:EditorSelection.cursor(s.from+e.length)}))}changeByRange(e){let s=this.selection,a=e(s.ranges[0]),c=this.changes(a.changes),d=[a.range],_=asArray$1(a.effects);for(let b=1;b_.spec.fromJSON(b,k)))}return EditorState.create({doc:e.doc,selection:EditorSelection.fromJSON(e.selection),extensions:s.extensions?c.concat([s.extensions]):c})}static create(e={}){let s=Configuration.resolve(e.extensions||[],new Map),a=e.doc instanceof Text?e.doc:Text.of((e.doc||"").split(s.staticFacet(EditorState.lineSeparator)||DefaultSplit)),c=e.selection?e.selection instanceof EditorSelection?e.selection:EditorSelection.single(e.selection.anchor,e.selection.head):EditorSelection.single(0);return checkSelection(c,a.length),s.staticFacet(allowMultipleSelections)||(c=c.asSingle()),new EditorState(s,a,c,s.dynamicSlots.map(()=>null),(d,_)=>_.create(d),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||` -`}get readOnly(){return this.facet(readOnly$1)}phrase(e){for(let s of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(s,e))return s[e];return e}languageDataAt(e,s,a=-1){let c=[];for(let d of this.facet(languageData))for(let _ of d(this,s,a))Object.prototype.hasOwnProperty.call(_,e)&&c.push(_[e]);return c}charCategorizer(e){return makeCategorizer(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:s,from:a,length:c}=this.doc.lineAt(e),d=this.charCategorizer(e),_=e-a,b=e-a;for(;_>0;){let k=findClusterBreak(s,_,!1);if(d(s.slice(k,_))!=CharCategory.Word)break;_=k}for(;bo.length?o[0]:4});EditorState.lineSeparator=lineSeparator;EditorState.readOnly=readOnly$1;EditorState.phrases=Facet.define();EditorState.languageData=languageData;EditorState.changeFilter=changeFilter;EditorState.transactionFilter=transactionFilter;EditorState.transactionExtender=transactionExtender;Compartment.reconfigure=StateEffect.define();function combineConfig(o,e,s={}){let a={};for(let c of o)for(let d of Object.keys(c)){let _=c[d],b=a[d];if(b===void 0)a[d]=_;else if(!(b===_||_===void 0))if(Object.hasOwnProperty.call(s,d))a[d]=s[d](b,_);else throw new Error("Config merge conflict for field "+d)}for(let c in e)a[c]===void 0&&(a[c]=e[c]);return a}const C="\u037C",COUNT=typeof Symbol=="undefined"?"__"+C:Symbol.for(C),SET=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),top=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{};class StyleModule{constructor(e,s){this.rules=[];let{finish:a}=s||{};function c(_){return/^@/.test(_)?[_]:_.split(/,\s*/)}function d(_,b,k,$){let j=[],_e=/^@(\w+)\b/.exec(_[0]),et=_e&&_e[1]=="keyframes";if(_e&&b==null)return k.push(_[0]+";");for(let tt in b){let nt=b[tt];if(/&/.test(tt))d(tt.split(/,\s*/).map(it=>_.map(rt=>it.replace(/&/,rt))).reduce((it,rt)=>it.concat(rt)),nt,k);else if(nt&&typeof nt=="object"){if(!_e)throw new RangeError("The value of a property ("+tt+") should be a primitive value.");d(c(tt),nt,j,et)}else nt!=null&&j.push(tt.replace(/_.*/,"").replace(/[A-Z]/g,it=>"-"+it.toLowerCase())+": "+nt+";")}(j.length||et)&&k.push((a&&!_e&&!$?_.map(a):_).join(", ")+" {"+j.join(" ")+"}")}for(let _ in e)d(c(_),e[_],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=top[COUNT]||1;return top[COUNT]=e+1,C+e.toString(36)}static mount(e,s){(e[SET]||new StyleSet(e)).mount(Array.isArray(s)?s:[s])}}let adoptedSet=null;class StyleSet{constructor(e){if(!e.head&&e.adoptedStyleSheets&&typeof CSSStyleSheet!="undefined"){if(adoptedSet)return e.adoptedStyleSheets=[adoptedSet.sheet].concat(e.adoptedStyleSheets),e[SET]=adoptedSet;this.sheet=new CSSStyleSheet,e.adoptedStyleSheets=[this.sheet].concat(e.adoptedStyleSheets),adoptedSet=this}else{this.styleTag=(e.ownerDocument||e).createElement("style");let s=e.head||e;s.insertBefore(this.styleTag,s.firstChild)}this.modules=[],e[SET]=this}mount(e){let s=this.sheet,a=0,c=0;for(let d=0;d-1&&(this.modules.splice(b,1),c--,b=-1),b==-1){if(this.modules.splice(c++,0,_),s)for(let k=0;k<_.rules.length;k++)s.insertRule(_.rules[k],a++)}else{for(;c>1,$=d[k]-e||(a?this.value[k].endSide:this.value[k].startSide)-s;if(k==_)return $>=0?_:b;$>=0?b=k:_=k+1}}between(e,s,a,c){for(let d=this.findIndex(s,-1e9,!0),_=this.findIndex(a,1e9,!1,d);d<_;d++)if(c(this.from[d]+e,this.to[d]+e,this.value[d])===!1)return!1}map(e,s){let a=[],c=[],d=[],_=-1,b=-1;for(let k=0;ktt||et==tt&&$.startSide>0&&$.endSide<=0)continue;(tt-et||$.endSide-$.startSide)<0||(_<0&&(_=et),$.point&&(b=Math.max(b,tt-et)),a.push($),c.push(et-_),d.push(tt-_))}return{mapped:a.length?new Chunk(c,d,a,b):null,pos:_}}}class RangeSet{constructor(e,s,a=RangeSet.empty,c){this.chunkPos=e,this.chunk=s,this.nextLayer=a,this.maxPoint=c}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let s of this.chunk)e+=s.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:s=[],sort:a=!1,filterFrom:c=0,filterTo:d=this.length}=e,_=e.filter;if(s.length==0&&!_)return this;if(a&&(s=s.slice().sort(cmpRange)),this.isEmpty)return s.length?RangeSet.of(s):this;let b=new LayerCursor(this,null,-1).goto(0),k=0,$=[],j=new RangeSetBuilder;for(;b.value||k=0){let _e=s[k++];j.addInner(_e.from,_e.to,_e.value)||$.push(_e)}else b.rangeIndex==1&&b.chunkIndexthis.chunkEnd(b.chunkIndex)||db.to||d=d&&e<=d+_.length&&_.between(d,e-d,s-d,a)===!1)return}this.nextLayer.between(e,s,a)}}iter(e=0){return HeapCursor.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,s=0){return HeapCursor.from(e).goto(s)}static compare(e,s,a,c,d=-1){let _=e.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),b=s.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),k=findSharedChunks(_,b,a),$=new SpanCursor(_,k,d),j=new SpanCursor(b,k,d);a.iterGaps((_e,et,tt)=>compare($,_e,j,et,tt,c)),a.empty&&a.length==0&&compare($,0,j,0,0,c)}static eq(e,s,a=0,c){c==null&&(c=1e9);let d=e.filter(j=>!j.isEmpty&&s.indexOf(j)<0),_=s.filter(j=>!j.isEmpty&&e.indexOf(j)<0);if(d.length!=_.length)return!1;if(!d.length)return!0;let b=findSharedChunks(d,_),k=new SpanCursor(d,b,0).goto(a),$=new SpanCursor(_,b,0).goto(a);for(;;){if(k.to!=$.to||!sameValues(k.active,$.active)||k.point&&(!$.point||!k.point.eq($.point)))return!1;if(k.to>c)return!0;k.next(),$.next()}}static spans(e,s,a,c,d=-1){var _;let b=new SpanCursor(e,null,d,(_=c.filterPoint)===null||_===void 0?void 0:_.bind(c)).goto(s),k=s,$=b.openStart;for(;;){let j=Math.min(b.to,a);if(b.point?(c.point(k,j,b.point,b.activeForPoint(b.to),$),$=b.openEnd(j)+(b.to>j?1:0)):j>k&&(c.span(k,j,b.active,$),$=b.openEnd(j)),b.to>a)break;k=b.to,b.next()}return $}static of(e,s=!1){let a=new RangeSetBuilder;for(let c of e instanceof Range$1?[e]:s?lazySort(e):e)a.add(c.from,c.to,c.value);return a.finish()}}RangeSet.empty=new RangeSet([],[],null,-1);function lazySort(o){if(o.length>1)for(let e=o[0],s=1;s0)return o.slice().sort(cmpRange);e=a}return o}RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}finishChunk(e){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}add(e,s,a){this.addInner(e,s,a)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(e,s,a)}addInner(e,s,a){let c=e-this.lastTo||a.startSide-this.last.endSide;if(c<=0&&(e-this.lastFrom||a.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return c<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(s-this.chunkStart),this.last=a,this.lastFrom=e,this.lastTo=s,this.value.push(a),a.point&&(this.maxPoint=Math.max(this.maxPoint,s-e)),!0)}addChunk(e,s){if((e-this.lastTo||s.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,s.maxPoint),this.chunks.push(s),this.chunkPos.push(e);let a=s.value.length-1;return this.last=s.value[a],this.lastFrom=s.from[a]+e,this.lastTo=s.to[a]+e,!0}finish(){return this.finishInner(RangeSet.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let s=new RangeSet(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,s}}function findSharedChunks(o,e,s){let a=new Map;for(let d of o)for(let _=0;_=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=a&&c.push(new LayerCursor(_,s,a,d));return c.length==1?c[0]:new HeapCursor(c)}get startSide(){return this.value?this.value.startSide:0}goto(e,s=-1e9){for(let a of this.heap)a.goto(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);return this.next(),this}forward(e,s){for(let a of this.heap)a.forward(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);(this.to-e||this.value.endSide-s)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),heapBubble(this.heap,0)}}}function heapBubble(o,e){for(let s=o[e];;){let a=(e<<1)+1;if(a>=o.length)break;let c=o[a];if(a+1=0&&(c=o[a+1],a++),s.compare(c)<0)break;o[a]=s,o[e]=c,e=a}}class SpanCursor{constructor(e,s,a,c=()=>!0){this.minPoint=a,this.filterPoint=c,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=HeapCursor.from(e,s,a)}goto(e,s=-1e9){return this.cursor.goto(e,s),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=s,this.openStart=-1,this.next(),this}forward(e,s){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-s)<0;)this.removeActive(this.minActive);this.cursor.forward(e,s)}removeActive(e){remove(this.active,e),remove(this.activeTo,e),remove(this.activeRank,e),this.minActive=findMinIndex(this.active,this.activeTo)}addActive(e){let s=0,{value:a,to:c,rank:d}=this.cursor;for(;s-1&&(this.activeTo[d]-this.cursor.from||this.active[d].endSide-this.cursor.startSide)<0){if(this.activeTo[d]>e){this.to=this.activeTo[d],this.endSide=this.active[d].endSide;break}this.removeActive(d),a&&remove(a,d)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let _=this.cursor.value;if(!_.point)this.addActive(a),this.cursor.next();else if(s&&this.cursor.to==this.to&&this.cursor.from=0&&!(this.activeRank[a]e||this.activeTo[a]==e&&this.active[a].endSide>=this.point.endSide)&&s.push(this.active[a]);return s.reverse()}openEnd(e){let s=0;for(let a=this.activeTo.length-1;a>=0&&this.activeTo[a]>e;a--)s++;return s}}function compare(o,e,s,a,c,d){o.goto(e),s.goto(a);let _=a+c,b=a,k=a-e;for(;;){let $=o.to+k-s.to||o.endSide-s.endSide,j=$<0?o.to+k:s.to,_e=Math.min(j,_);if(o.point||s.point?o.point&&s.point&&(o.point==s.point||o.point.eq(s.point))&&sameValues(o.activeForPoint(o.to+k),s.activeForPoint(s.to))||d.comparePoint(b,_e,o.point,s.point):_e>b&&!sameValues(o.active,s.active)&&d.compareRange(b,_e,o.active,s.active),j>_)break;b=j,$<=0&&o.next(),$>=0&&s.next()}}function sameValues(o,e){if(o.length!=e.length)return!1;for(let s=0;s=e;a--)o[a+1]=o[a];o[e]=s}function findMinIndex(o,e){let s=-1,a=1e9;for(let c=0;c",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"',229:"Q"},chrome$1=typeof navigator!="undefined"&&/Chrome\/(\d+)/.exec(navigator.userAgent),safari$1=typeof navigator!="undefined"&&/Apple Computer/.test(navigator.vendor),gecko$1=typeof navigator!="undefined"&&/Gecko\/\d+/.test(navigator.userAgent),mac=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),ie$1=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),brokenModifierNames=chrome$1&&(mac||+chrome$1[1]<57)||gecko$1&&mac;for(var i=0;i<10;i++)base[48+i]=base[96+i]=String(i);for(var i=1;i<=24;i++)base[i+111]="F"+i;for(var i=65;i<=90;i++)base[i]=String.fromCharCode(i+32),shift[i]=String.fromCharCode(i);for(var code in base)shift.hasOwnProperty(code)||(shift[code]=base[code]);function keyName(o){var e=brokenModifierNames&&(o.ctrlKey||o.altKey||o.metaKey)||(safari$1||ie$1)&&o.shiftKey&&o.key&&o.key.length==1,s=!e&&o.key||(o.shiftKey?shift:base)[o.keyCode]||o.key||"Unidentified";return s=="Esc"&&(s="Escape"),s=="Del"&&(s="Delete"),s=="Left"&&(s="ArrowLeft"),s=="Up"&&(s="ArrowUp"),s=="Right"&&(s="ArrowRight"),s=="Down"&&(s="ArrowDown"),s}function getSelection(o){let e;return o.nodeType==11?e=o.getSelection?o:o.ownerDocument:e=o,e.getSelection()}function contains(o,e){return e?o==e||o.contains(e.nodeType!=1?e.parentNode:e):!1}function deepActiveElement(){let o=document.activeElement;for(;o&&o.shadowRoot;)o=o.shadowRoot.activeElement;return o}function hasSelection(o,e){if(!e.anchorNode)return!1;try{return contains(o,e.anchorNode)}catch{return!1}}function clientRectsFor(o){return o.nodeType==3?textRange(o,0,o.nodeValue.length).getClientRects():o.nodeType==1?o.getClientRects():[]}function isEquivalentPosition(o,e,s,a){return s?scanFor(o,e,s,a,-1)||scanFor(o,e,s,a,1):!1}function domIndex(o){for(var e=0;;e++)if(o=o.previousSibling,!o)return e}function scanFor(o,e,s,a,c){for(;;){if(o==s&&e==a)return!0;if(e==(c<0?0:maxOffset(o))){if(o.nodeName=="DIV")return!1;let d=o.parentNode;if(!d||d.nodeType!=1)return!1;e=domIndex(o)+(c<0?0:1),o=d}else if(o.nodeType==1){if(o=o.childNodes[e+(c<0?-1:0)],o.nodeType==1&&o.contentEditable=="false")return!1;e=c<0?maxOffset(o):0}else return!1}}function maxOffset(o){return o.nodeType==3?o.nodeValue.length:o.childNodes.length}const Rect0={left:0,right:0,top:0,bottom:0};function flattenRect(o,e){let s=e?o.left:o.right;return{left:s,right:s,top:o.top,bottom:o.bottom}}function windowRect(o){return{left:0,right:o.innerWidth,top:0,bottom:o.innerHeight}}function scrollRectIntoView(o,e,s,a,c,d,_,b){let k=o.ownerDocument,$=k.defaultView;for(let j=o;j;)if(j.nodeType==1){let _e,et=j==k.body;if(et)_e=windowRect($);else{if(j.scrollHeight<=j.clientHeight&&j.scrollWidth<=j.clientWidth){j=j.parentNode;continue}let it=j.getBoundingClientRect();_e={left:it.left,right:it.left+j.clientWidth,top:it.top,bottom:it.top+j.clientHeight}}let tt=0,nt=0;if(c=="nearest")e.top<_e.top?(nt=-(_e.top-e.top+_),s>0&&e.bottom>_e.bottom+nt&&(nt=e.bottom-_e.bottom+nt+_)):e.bottom>_e.bottom&&(nt=e.bottom-_e.bottom+_,s<0&&e.top-nt<_e.top&&(nt=-(_e.top+nt-e.top+_)));else{let it=e.bottom-e.top,rt=_e.bottom-_e.top;nt=(c=="center"&&it<=rt?e.top+it/2-rt/2:c=="start"||c=="center"&&s<0?e.top-_:e.bottom-rt+_)-_e.top}if(a=="nearest"?e.left<_e.left?(tt=-(_e.left-e.left+d),s>0&&e.right>_e.right+tt&&(tt=e.right-_e.right+tt+d)):e.right>_e.right&&(tt=e.right-_e.right+d,s<0&&e.left<_e.left+tt&&(tt=-(_e.left+tt-e.left+d))):tt=(a=="center"?e.left+(e.right-e.left)/2-(_e.right-_e.left)/2:a=="start"==b?e.left-d:e.right-(_e.right-_e.left)+d)-_e.left,tt||nt)if(et)$.scrollBy(tt,nt);else{if(nt){let it=j.scrollTop;j.scrollTop+=nt,nt=j.scrollTop-it}if(tt){let it=j.scrollLeft;j.scrollLeft+=tt,tt=j.scrollLeft-it}e={left:e.left-tt,top:e.top-nt,right:e.right-tt,bottom:e.bottom-nt}}if(et)break;j=j.assignedSlot||j.parentNode,a=c="nearest"}else if(j.nodeType==11)j=j.host;else break}class DOMSelectionState{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){this.set(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset)}set(e,s,a,c){this.anchorNode=e,this.anchorOffset=s,this.focusNode=a,this.focusOffset=c}}let preventScrollSupported=null;function focusPreventScroll(o){if(o.setActive)return o.setActive();if(preventScrollSupported)return o.focus(preventScrollSupported);let e=[];for(let s=o;s&&(e.push(s,s.scrollTop,s.scrollLeft),s!=s.ownerDocument);s=s.parentNode);if(o.focus(preventScrollSupported==null?{get preventScroll(){return preventScrollSupported={preventScroll:!0},!0}}:void 0),!preventScrollSupported){preventScrollSupported=!1;for(let s=0;ss)return _e.domBoundsAround(e,s,$);if(et>=e&&c==-1&&(c=k,d=$),$>s&&_e.dom.parentNode==this.dom){_=k,b=j;break}j=et,$=et+_e.breakAfter}return{from:d,to:b<0?a+this.length:b,startDOM:(c?this.children[c-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:_=0?this.children[_].dom:null}}markDirty(e=!1){this.dirty|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let s=this.parent;s;s=s.parent){if(e&&(s.dirty|=2),s.dirty&1)return;s.dirty|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.dirty&&this.markParentsDirty(!0))}setDOM(e){this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this}get rootView(){for(let e=this;;){let s=e.parent;if(!s)return e;e=s}}replaceChildren(e,s,a=noChildren){this.markDirty();for(let c=e;cthis.pos||e==this.pos&&(s>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let a=this.children[--this.i];this.pos-=a.length+a.breakAfter}}}function replaceRange(o,e,s,a,c,d,_,b,k){let{children:$}=o,j=$.length?$[e]:null,_e=d.length?d[d.length-1]:null,et=_e?_e.breakAfter:_;if(!(e==a&&j&&!_&&!et&&d.length<2&&j.merge(s,c,d.length?_e:null,s==0,b,k))){if(a<$.length){let tt=$[a];tt&&c0&&(!_&&d.length&&j.merge(s,j.length,d[0],!1,b,0)?j.breakAfter=d.shift().breakAfter:(s2);var browser={mac:ios$1||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios:ios$1,android:/Android\b/.test(nav.userAgent),webkit,safari,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:doc.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const MaxJoinLen=256;class TextView extends ContentView{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,s,a){return a&&(!(a instanceof TextView)||this.length-(s-e)+a.length>MaxJoinLen)?!1:(this.text=this.text.slice(0,e)+(a?a.text:"")+this.text.slice(s),this.markDirty(),!0)}split(e){let s=new TextView(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),s}localPosFromDOM(e,s){return e==this.dom?s:s?this.text.length:0}domAtPos(e){return new DOMPos(this.dom,e)}domBoundsAround(e,s,a){return{from:a,to:a+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,s){return textCoords(this.dom,e,s)}}class MarkView extends ContentView{constructor(e,s=[],a=0){super(),this.mark=e,this.children=s,this.length=a;for(let c of s)c.setParent(this)}setAttrs(e){if(clearAttributes(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let s in this.mark.attrs)e.setAttribute(s,this.mark.attrs[s]);return e}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.dirty|=6)}sync(e){this.dom?this.dirty&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e)}merge(e,s,a,c,d,_){return a&&(!(a instanceof MarkView&&a.mark.eq(this.mark))||e&&d<=0||se&&s.push(a=e&&(c=d),a=k,d++}let _=this.length-e;return this.length=e,c>-1&&(this.children.length=c,this.markDirty()),new MarkView(this.mark,s,_)}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}coordsAt(e,s){return coordsInChildren(this,e,s)}}function textCoords(o,e,s){let a=o.nodeValue.length;e>a&&(e=a);let c=e,d=e,_=0;e==0&&s<0||e==a&&s>=0?browser.chrome||browser.gecko||(e?(c--,_=1):(d++,_=-1)):s<0?c--:d++;let b=textRange(o,c,d).getClientRects();if(!b.length)return Rect0;let k=b[(_?_<0:s>=0)?0:b.length-1];return browser.safari&&!_&&k.width==0&&(k=Array.prototype.find.call(b,$=>$.width)||k),_?flattenRect(k,_<0):k||null}class WidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.side=a,this.prevWidget=null}static create(e,s,a){return new(e.customView||WidgetView)(e,s,a)}split(e){let s=WidgetView.create(this.widget,this.length-e,this.side);return this.length-=e,s}sync(){(!this.dom||!this.widget.updateDOM(this.dom))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}getSide(){return this.side}merge(e,s,a,c,d,_){return a&&(!(a instanceof WidgetView)||!this.widget.compare(a.widget)||e>0&&d<=0||s0?a.length-1:0;c=a[d],!(e>0?d==0:d==a.length-1||c.top0?-1:1);return e==0&&s>0||e==this.length&&s<=0?c:flattenRect(c,e==0)}get isEditable(){return!1}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class CompositionView extends WidgetView{domAtPos(e){let{topView:s,text:a}=this.widget;return s?scanCompositionTree(e,0,s,a,(c,d)=>c.domAtPos(d),c=>new DOMPos(a,Math.min(c,a.nodeValue.length))):new DOMPos(a,Math.min(e,a.nodeValue.length))}sync(){this.setDOM(this.widget.toDOM())}localPosFromDOM(e,s){let{topView:a,text:c}=this.widget;return a?posFromDOMInCompositionTree(e,s,a,c):Math.min(s,this.length)}ignoreMutation(){return!1}get overrideDOMText(){return null}coordsAt(e,s){let{topView:a,text:c}=this.widget;return a?scanCompositionTree(e,s,a,c,(d,_,b)=>d.coordsAt(_,b),(d,_)=>textCoords(c,d,_)):textCoords(c,e,s)}destroy(){var e;super.destroy(),(e=this.widget.topView)===null||e===void 0||e.destroy()}get isEditable(){return!0}}function scanCompositionTree(o,e,s,a,c,d){if(s instanceof MarkView){for(let _ of s.children){let b=contains(_.dom,a),k=b?a.nodeValue.length:_.length;if(o0?-1:1);return a&&a.tops.top?{left:s.left,right:s.right,top:a.top,bottom:a.bottom}:s}get overrideDOMText(){return Text.empty}}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=noChildren;function inlineSiblingRect(o,e){let s=o.parent,a=s?s.children.indexOf(o):-1;for(;s&&a>=0;)if(e<0?a>0:ac&&s<_&&d.dom.parentNode==o)return d.domAtPos(s-c);if(s<=c)break;c=_}}for(;a>0;a--){let c=e[a-1].dom;if(c.parentNode==o)return DOMPos.after(c)}return new DOMPos(o,0)}function joinInlineInto(o,e,s){let a,{children:c}=o;s>0&&e instanceof MarkView&&c.length&&(a=c[c.length-1])instanceof MarkView&&a.mark.eq(e.mark)?joinInlineInto(a,e.children[0],s-1):(c.push(e),e.setParent(o)),o.length+=e.length}function coordsInChildren(o,e,s){for(let d=0,_=0;_0?k>=e:k>e)&&(e0)){let j=0;if(k==d){if(b.getSide()<=0)continue;j=s=-b.getSide()}let _e=b.coordsAt(Math.max(0,e-d),s);return j&&_e?flattenRect(_e,s<0):_e}d=k}let a=o.dom.lastChild;if(!a)return o.dom.getBoundingClientRect();let c=clientRectsFor(a);return c[c.length-1]||null}function combineAttrs(o,e){for(let s in o)s=="class"&&e.class?e.class+=" "+o.class:s=="style"&&e.style?e.style+=";"+o.style:e[s]=o[s];return e}function attrsEq(o,e){if(o==e)return!0;if(!o||!e)return!1;let s=Object.keys(o),a=Object.keys(e);if(s.length!=a.length)return!1;for(let c of s)if(a.indexOf(c)==-1||o[c]!==e[c])return!1;return!0}function updateAttrs(o,e,s){if(e)for(let a in e)s&&a in s||o.removeAttribute(a);if(s)for(let a in s)e&&e[a]==s[a]||o.setAttribute(a,s[a])}class WidgetType{eq(e){return!1}updateDOM(e){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}ignoreEvent(e){return!0}get customView(){return null}destroy(e){}}var BlockType=function(o){return o[o.Text=0]="Text",o[o.WidgetBefore=1]="WidgetBefore",o[o.WidgetAfter=2]="WidgetAfter",o[o.WidgetRange=3]="WidgetRange",o}(BlockType||(BlockType={}));class Decoration extends RangeValue{constructor(e,s,a,c){super(),this.startSide=e,this.endSide=s,this.widget=a,this.spec=c}get heightRelevant(){return!1}static mark(e){return new MarkDecoration(e)}static widget(e){let s=e.side||0,a=!!e.block;return s+=a?s>0?3e8:-4e8:s>0?1e8:-1e8,new PointDecoration(e,s,s,a,e.widget||null,!1)}static replace(e){let s=!!e.block,a,c;if(e.isBlockGap)a=-5e8,c=4e8;else{let{start:d,end:_}=getInclusive(e,s);a=(d?s?-3e8:-1:5e8)-1,c=(_?s?2e8:1:-6e8)+1}return new PointDecoration(e,a,c,s,e.widget||null,!0)}static line(e){return new LineDecoration(e)}static set(e,s=!1){return RangeSet.of(e,s)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Decoration.none=RangeSet.empty;class MarkDecoration extends Decoration{constructor(e){let{start:s,end:a}=getInclusive(e);super(s?-1:5e8,a?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){return this==e||e instanceof MarkDecoration&&this.tagName==e.tagName&&this.class==e.class&&attrsEq(this.attrs,e.attrs)}range(e,s=e){if(e>=s)throw new RangeError("Mark decorations may not be empty");return super.range(e,s)}}MarkDecoration.prototype.point=!1;class LineDecoration extends Decoration{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof LineDecoration&&attrsEq(this.spec.attributes,e.spec.attributes)}range(e,s=e){if(s!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,s)}}LineDecoration.prototype.mapMode=MapMode.TrackBefore;LineDecoration.prototype.point=!0;class PointDecoration extends Decoration{constructor(e,s,a,c,d,_){super(s,a,d,e),this.block=c,this.isReplace=_,this.mapMode=c?s<=0?MapMode.TrackBefore:MapMode.TrackAfter:MapMode.TrackDel}get type(){return this.startSide=5}eq(e){return e instanceof PointDecoration&&widgetsEq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,s=e){if(this.isReplace&&(e>s||e==s&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&s!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,s)}}PointDecoration.prototype.point=!0;function getInclusive(o,e=!1){let{inclusiveStart:s,inclusiveEnd:a}=o;return s==null&&(s=o.inclusive),a==null&&(a=o.inclusive),{start:s!=null?s:e,end:a!=null?a:e}}function widgetsEq(o,e){return o==e||!!(o&&e&&o.compare(e))}function addRange(o,e,s,a=0){let c=s.length-1;c>=0&&s[c]+a>=o?s[c]=Math.max(s[c],e):s.push(o,e)}class LineView extends ContentView{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,s,a,c,d,_){if(a){if(!(a instanceof LineView))return!1;this.dom||a.transferDOM(this)}return c&&this.setDeco(a?a.attrs:null),mergeChildrenInto(this,e,s,a?a.children:[],d,_),!0}split(e){let s=new LineView;if(s.breakAfter=this.breakAfter,this.length==0)return s;let{i:a,off:c}=this.childPos(e);c&&(s.append(this.children[a].split(c),0),this.children[a].merge(c,this.children[a].length,null,!1,0,0),a++);for(let d=a;d0&&this.children[a-1].length==0;)this.children[--a].destroy();return this.children.length=a,this.markDirty(),this.length=e,s}transferDOM(e){!this.dom||(e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){attrsEq(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,s){joinInlineInto(this,e,s)}addLineDeco(e){let s=e.spec.attributes,a=e.spec.class;s&&(this.attrs=combineAttrs(s,this.attrs||{})),a&&(this.attrs=combineAttrs({class:a},this.attrs||{}))}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.dirty|=6)}sync(e){var s;this.dom?this.dirty&4&&(clearAttributes(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e);let a=this.dom.lastChild;for(;a&&ContentView.get(a)instanceof MarkView;)a=a.lastChild;if(!a||!this.length||a.nodeName!="BR"&&((s=ContentView.get(a))===null||s===void 0?void 0:s.isEditable)==!1&&(!browser.ios||!this.children.some(c=>c instanceof TextView))){let c=document.createElement("BR");c.cmIgnore=!0,this.dom.appendChild(c)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0;for(let s of this.children){if(!(s instanceof TextView))return null;let a=clientRectsFor(s.dom);if(a.length!=1)return null;e+=a[0].width}return{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length}}coordsAt(e,s){return coordsInChildren(this,e,s)}become(e){return!1}get type(){return BlockType.Text}static find(e,s){for(let a=0,c=0;a=s){if(d instanceof LineView)return d;if(_>s)break}c=_+d.breakAfter}return null}}class BlockWidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.type=a,this.breakAfter=0,this.prevWidget=null}merge(e,s,a,c,d,_){return a&&(!(a instanceof BlockWidgetView)||!this.widget.compare(a.widget)||e>0&&d<=0||s0;){if(this.textOff==this.text.length){let{value:d,lineBreak:_,done:b}=this.cursor.next(this.skip);if(this.skip=0,b)throw new Error("Ran out of text content when drawing inline views");if(_){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer([]),this.curLine=null,e--;continue}else this.text=d,this.textOff=0}let c=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(s.slice(0,a)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+c)),s),a),this.atCursorPos=!0,this.textOff+=c,e-=c,a=0}}span(e,s,a,c){this.buildText(s-e,a,c),this.pos=s,this.openStart<0&&(this.openStart=c)}point(e,s,a,c,d){let _=s-e;if(a instanceof PointDecoration)if(a.block){let{type:b}=a;b==BlockType.WidgetAfter&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(a.widget||new NullWidget("div"),_,b))}else{let b=WidgetView.create(a.widget||new NullWidget("span"),_,a.startSide),k=this.atCursorPos&&!b.isEditable&&d<=c.length&&(e0),$=!b.isEditable&&(ethis.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}return!0}static build(e,s,a,c,d){let _=new ContentBuilder(e,s,a,d);return _.openEnd=RangeSet.spans(c,s,a,_),_.openStart<0&&(_.openStart=_.openEnd),_.finish(_.openEnd),_}}function wrapMarks(o,e){for(let s of e)o=new MarkView(s,[o],o.length);return o}class NullWidget extends WidgetType{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}}const none$2=[],clickAddsSelectionRange=Facet.define(),dragMovesSelection$1=Facet.define(),mouseSelectionStyle=Facet.define(),exceptionSink=Facet.define(),updateListener=Facet.define(),inputHandler$1=Facet.define(),scrollTo=StateEffect.define({map:(o,e)=>o.map(e)}),centerOn=StateEffect.define({map:(o,e)=>o.map(e)});class ScrollTarget{constructor(e,s="nearest",a="nearest",c=5,d=5){this.range=e,this.y=s,this.x=a,this.yMargin=c,this.xMargin=d}map(e){return e.empty?this:new ScrollTarget(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin)}}const scrollIntoView$1=StateEffect.define({map:(o,e)=>o.map(e)});function logException(o,e,s){let a=o.facet(exceptionSink);a.length?a[0](e):window.onerror?window.onerror(String(e),s,void 0,void 0,e):s?console.error(s+":",e):console.error(e)}const editable=Facet.define({combine:o=>o.length?o[0]:!0});class PluginFieldProvider{constructor(e,s){this.field=e,this.get=s}}class PluginField{from(e){return new PluginFieldProvider(this,e)}static define(){return new PluginField}}PluginField.decorations=PluginField.define();PluginField.atomicRanges=PluginField.define();PluginField.scrollMargins=PluginField.define();let nextPluginID=0;const viewPlugin=Facet.define();class ViewPlugin{constructor(e,s,a){this.id=e,this.create=s,this.fields=a,this.extension=viewPlugin.of(this)}static define(e,s){let{eventHandlers:a,provide:c,decorations:d}=s||{},_=[];if(c)for(let b of Array.isArray(c)?c:[c])_.push(b);return a&&_.push(domEventHandlers.from(b=>({plugin:b,handlers:a}))),d&&_.push(PluginField.decorations.from(d)),new ViewPlugin(nextPluginID++,e,_)}static fromClass(e,s){return ViewPlugin.define(a=>new e(a),s)}}const domEventHandlers=PluginField.define();class PluginInstance{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}takeField(e,s){if(this.spec)for(let{field:a,get:c}of this.spec.fields)a==e&&s.push(c(this.value))}update(e){if(this.value){if(this.mustUpdate){let s=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(s)}catch(a){if(logException(s.state,a,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(s){logException(e.state,s,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var s;if(!((s=this.value)===null||s===void 0)&&s.destroy)try{this.value.destroy()}catch(a){logException(e.state,a,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const editorAttributes=Facet.define(),contentAttributes=Facet.define(),decorations=Facet.define(),styleModule=Facet.define();class ChangedRange{constructor(e,s,a,c){this.fromA=e,this.toA=s,this.fromB=a,this.toB=c}join(e){return new ChangedRange(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let s=e.length,a=this;for(;s>0;s--){let c=e[s-1];if(!(c.fromA>a.toA)){if(c.toAj)break;d+=2}if(!k)return a;new ChangedRange(k.fromA,k.toA,k.fromB,k.toB).addToSet(a),_=k.toA,b=k.toB}}}class ViewUpdate{constructor(e,s,a=none$2){this.view=e,this.state=s,this.transactions=a,this.flags=0,this.startState=e.state,this.changes=ChangeSet.empty(this.startState.doc.length);for(let _ of a)this.changes=this.changes.compose(_.changes);let c=[];this.changes.iterChangedRanges((_,b,k,$)=>c.push(new ChangedRange(_,b,k,$))),this.changedRanges=c;let d=e.hasFocus;d!=e.inputState.notifiedFocused&&(e.inputState.notifiedFocused=d,this.flags|=1)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}var Direction=function(o){return o[o.LTR=0]="LTR",o[o.RTL=1]="RTL",o}(Direction||(Direction={}));const LTR=Direction.LTR,RTL=Direction.RTL;function dec(o){let e=[];for(let s=0;s=s){if(b.level==a)return _;(d<0||(c!=0?c<0?b.froms:e[d].level>b.level))&&(d=_)}}if(d<0)throw new RangeError("Index out of range");return d}}const types=[];function computeOrder(o,e){let s=o.length,a=e==LTR?1:2,c=e==LTR?2:1;if(!o||a==1&&!BidiRE.test(o))return trivialOrder(s);for(let _=0,b=a,k=a;_=0;et-=3)if(BracketStack[et+1]==-j){let tt=BracketStack[et+2],nt=tt&2?a:tt&4?tt&1?c:a:0;nt&&(types[_]=types[BracketStack[et]]=nt),b=et;break}}else{if(BracketStack.length==189)break;BracketStack[b++]=_,BracketStack[b++]=$,BracketStack[b++]=k}else if((_e=types[_])==2||_e==1){let et=_e==a;k=et?0:1;for(let tt=b-3;tt>=0;tt-=3){let nt=BracketStack[tt+2];if(nt&2)break;if(et)BracketStack[tt+2]|=2;else{if(nt&4)break;BracketStack[tt+2]|=4}}}for(let _=0;_b;){let j=$,_e=types[--$]!=2;for(;$>b&&_e==(types[$-1]!=2);)$--;d.push(new BidiSpan($,j,_e?2:1))}else d.push(new BidiSpan(b,_,0))}else for(let _=0;_1)for(let k of this.points)k.node==e&&k.pos>this.text.length&&(k.pos-=_-1);a=d+_}}readNode(e){if(e.cmIgnore)return;let s=ContentView.get(e),a=s&&s.overrideDOMText;if(a!=null){this.findPointInside(e,a.length);for(let c=a.iter();!c.next().done;)c.lineBreak?this.lineBreak():this.append(c.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,s){for(let a of this.points)a.node==e&&e.childNodes[a.offset]==s&&(a.pos=this.text.length)}findPointInside(e,s){for(let a of this.points)(e.nodeType==3?a.node==e:e.contains(a.node))&&(a.pos=this.text.length+Math.min(s,a.offset))}}function isBlockElement(o){return o.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(o.nodeName)}class DOMPoint{constructor(e,s){this.node=e,this.offset=s,this.pos=-1}}class DocView extends ContentView{constructor(e){super(),this.view=e,this.compositionDeco=Decoration.none,this.decorations=[],this.pluginDecorationLength=0,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,e.state.doc.length)],0)}get root(){return this.view.root}get editorView(){return this.view}get length(){return this.view.state.doc.length}update(e){let s=e.changedRanges;this.minWidth>0&&s.length&&(s.every(({fromA:_,toA:b})=>bthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.view.inputState.composing<0?this.compositionDeco=Decoration.none:(e.transactions.length||this.dirty)&&(this.compositionDeco=computeCompositionDeco(this.view,e.changes)),(browser.ie||browser.chrome)&&!this.compositionDeco.size&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,c=this.updateDeco(),d=findChangedDeco(a,c,e.changes);return s=ChangedRange.extendWithRanges(s,d),this.dirty==0&&s.length==0?!1:(this.updateInner(s,e.startState.doc.length),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,s){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,s);let{observer:a}=this.view;a.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.minWidth=this.minWidth?this.minWidth+"px":"";let d=browser.chrome||browser.ios?{node:a.selectionRange.focusNode,written:!1}:void 0;this.sync(d),this.dirty=0,d&&(d.written||a.selectionRange.focusNode!=d.node)&&(this.forceSelection=!0),this.dom.style.height=""});let c=[];if(this.view.viewport.from||this.view.viewport.to=0?e[c]:null;if(!d)break;let{fromA:_,toA:b,fromB:k,toB:$}=d,{content:j,breakAtStart:_e,openStart:et,openEnd:tt}=ContentBuilder.build(this.view.state.doc,k,$,this.decorations,this.pluginDecorationLength),{i:nt,off:it}=a.findPos(b,1),{i:rt,off:st}=a.findPos(_,-1);replaceRange(this,rt,st,nt,it,j,_e,et,tt)}}updateSelection(e=!1,s=!1){if(e&&this.view.observer.readSelectionRange(),!(s||this.mayControlSelection())||browser.ios&&this.view.inputState.rapidCompositionStart)return;let a=this.forceSelection;this.forceSelection=!1;let c=this.view.state.selection.main,d=this.domAtPos(c.anchor),_=c.empty?d:this.domAtPos(c.head);if(browser.gecko&&c.empty&&betweenUneditable(d)){let k=document.createTextNode("");this.view.observer.ignore(()=>d.node.insertBefore(k,d.node.childNodes[d.offset]||null)),d=_=new DOMPos(k,0),a=!0}let b=this.view.observer.selectionRange;(a||!b.focusNode||!isEquivalentPosition(d.node,d.offset,b.anchorNode,b.anchorOffset)||!isEquivalentPosition(_.node,_.offset,b.focusNode,b.focusOffset))&&(this.view.observer.ignore(()=>{browser.android&&browser.chrome&&this.dom.contains(b.focusNode)&&inUneditable(b.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let k=getSelection(this.root);if(c.empty){if(browser.gecko){let $=nextToUneditable(d.node,d.offset);if($&&$!=3){let j=nearbyTextNode(d.node,d.offset,$==1?1:-1);j&&(d=new DOMPos(j,$==1?0:j.nodeValue.length))}}k.collapse(d.node,d.offset),c.bidiLevel!=null&&b.cursorBidiLevel!=null&&(b.cursorBidiLevel=c.bidiLevel)}else if(k.extend)k.collapse(d.node,d.offset),k.extend(_.node,_.offset);else{let $=document.createRange();c.anchor>c.head&&([d,_]=[_,d]),$.setEnd(_.node,_.offset),$.setStart(d.node,d.offset),k.removeAllRanges(),k.addRange($)}}),this.view.observer.setSelectionRange(d,_)),this.impreciseAnchor=d.precise?null:new DOMPos(b.anchorNode,b.anchorOffset),this.impreciseHead=_.precise?null:new DOMPos(b.focusNode,b.focusOffset)}enforceCursorAssoc(){if(this.compositionDeco.size)return;let e=this.view.state.selection.main,s=getSelection(this.root);if(!e.empty||!e.assoc||!s.modify)return;let a=LineView.find(this,e.head);if(!a)return;let c=a.posAtStart;if(e.head==c||e.head==c+a.length)return;let d=this.coordsAt(e.head,-1),_=this.coordsAt(e.head,1);if(!d||!_||d.bottom>_.top)return;let b=this.domAtPos(e.head+e.assoc);s.collapse(b.node,b.offset),s.modify("move",e.assoc<0?"forward":"backward","lineboundary")}mayControlSelection(){return this.view.state.facet(editable)?this.root.activeElement==this.dom:hasSelection(this.dom,this.view.observer.selectionRange)}nearest(e){for(let s=e;s;){let a=ContentView.get(s);if(a&&a.rootView==this)return a;s=s.parentNode}return null}posFromDOM(e,s){let a=this.nearest(e);if(!a)throw new RangeError("Trying to find position for a DOM position outside of the document");return a.localPosFromDOM(e,s)+a.posAtStart}domAtPos(e){let{i:s,off:a}=this.childCursor().findPos(e,-1);for(;s_||e==_&&d.type!=BlockType.WidgetBefore&&d.type!=BlockType.WidgetAfter&&(!c||s==2||this.children[c-1].breakAfter||this.children[c-1].type==BlockType.WidgetBefore&&s>-2))return d.coordsAt(e-_,s);a=_}}measureVisibleLineHeights(){let e=[],{from:s,to:a}=this.view.viewState.viewport,c=this.view.contentDOM.clientWidth,d=c>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,_=-1;for(let b=0,k=0;ka)break;if(b>=s){let _e=$.dom.getBoundingClientRect();if(e.push(_e.height),d){let et=$.dom.lastChild,tt=et?clientRectsFor(et):[];if(tt.length){let nt=tt[tt.length-1],it=this.view.textDirection==Direction.LTR?nt.right-_e.left:_e.right-nt.left;it>_&&(_=it,this.minWidth=c,this.minWidthFrom=b,this.minWidthTo=j)}}}b=j+$.breakAfter}return e}measureTextSize(){for(let c of this.children)if(c instanceof LineView){let d=c.measureTextSize();if(d)return d}let e=document.createElement("div"),s,a;return e.className="cm-line",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let c=clientRectsFor(e.firstChild)[0];s=e.getBoundingClientRect().height,a=c?c.width/27:7,e.remove()}),{lineHeight:s,charWidth:a}}childCursor(e=this.length){let s=this.children.length;return s&&(e-=this.children[--s].length),new ChildCursor(this.children,e,s)}computeBlockGapDeco(){let e=[],s=this.view.viewState;for(let a=0,c=0;;c++){let d=c==s.viewports.length?null:s.viewports[c],_=d?d.from-1:this.length;if(_>a){let b=s.lineBlockAt(_).bottom-s.lineBlockAt(a).top;e.push(Decoration.replace({widget:new BlockGapWidget(b),block:!0,inclusive:!0,isBlockGap:!0}).range(a,_))}if(!d)break;a=d.to+1}return Decoration.set(e)}updateDeco(){let e=this.view.pluginField(PluginField.decorations);return this.pluginDecorationLength=e.length,this.decorations=[...e,...this.view.state.facet(decorations),this.compositionDeco,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(e){let{range:s}=e,a=this.coordsAt(s.head,s.empty?s.assoc:s.head>s.anchor?-1:1),c;if(!a)return;!s.empty&&(c=this.coordsAt(s.anchor,s.anchor>s.head?-1:1))&&(a={left:Math.min(a.left,c.left),top:Math.min(a.top,c.top),right:Math.max(a.right,c.right),bottom:Math.max(a.bottom,c.bottom)});let d=0,_=0,b=0,k=0;for(let j of this.view.pluginField(PluginField.scrollMargins))if(j){let{left:_e,right:et,top:tt,bottom:nt}=j;_e!=null&&(d=Math.max(d,_e)),et!=null&&(_=Math.max(_,et)),tt!=null&&(b=Math.max(b,tt)),nt!=null&&(k=Math.max(k,nt))}let $={left:a.left-d,top:a.top-b,right:a.right+_,bottom:a.bottom+k};scrollRectIntoView(this.view.scrollDOM,$,s.head0&&s<=0)o=o.childNodes[e-1],e=maxOffset(o);else if(o.nodeType==1&&e=0)o=o.childNodes[e],e=0;else return null}}function nextToUneditable(o,e){return o.nodeType!=1?0:(e&&o.childNodes[e-1].contentEditable=="false"?1:0)|(e0;){let $=findClusterBreak(c.text,_,!1);if(a(c.text.slice($,_))!=k)break;_=$}for(;bo?e.left-o:Math.max(0,o-e.right)}function getdy(o,e){return e.top>o?e.top-o:Math.max(0,o-e.bottom)}function yOverlap(o,e){return o.tope.top+1}function upTop(o,e){return eo.bottom?{top:o.top,left:o.left,right:o.right,bottom:e}:o}function domPosAtCoords(o,e,s){let a,c,d,_,b,k,$,j;for(let tt=o.firstChild;tt;tt=tt.nextSibling){let nt=clientRectsFor(tt);for(let it=0;itat||_==at&&d>st)&&(a=tt,c=rt,d=st,_=at),st==0?s>rt.bottom&&(!$||$.bottomrt.top)&&(k=tt,j=rt):$&&yOverlap($,rt)?$=upBot($,rt.bottom):j&&yOverlap(j,rt)&&(j=upTop(j,rt.top))}}if($&&$.bottom>=s?(a=b,c=$):j&&j.top<=s&&(a=k,c=j),!a)return{node:o,offset:0};let _e=Math.max(c.left,Math.min(c.right,e));if(a.nodeType==3)return domPosInText(a,_e,s);if(!d&&a.contentEditable=="true")return domPosAtCoords(a,_e,s);let et=Array.prototype.indexOf.call(o.childNodes,a)+(e>=(c.left+c.right)/2?1:0);return{node:o,offset:et}}function domPosInText(o,e,s){let a=o.nodeValue.length,c=-1,d=1e9,_=0;for(let b=0;bs?j.top-s:s-j.bottom)-1;if(j.left-1<=e&&j.right+1>=e&&_e=(j.left+j.right)/2,tt=et;if((browser.chrome||browser.gecko)&&textRange(o,b).getBoundingClientRect().left==j.right&&(tt=!et),_e<=0)return{node:o,offset:b+(tt?1:0)};c=b+(tt?1:0),d=_e}}}return{node:o,offset:c>-1?c:_>0?o.nodeValue.length:0}}function posAtCoords(o,{x:e,y:s},a,c=-1){var d;let _=o.contentDOM.getBoundingClientRect(),b=_.top+o.viewState.paddingTop,k,{docHeight:$}=o.viewState,j=s-b;if(j<0)return 0;if(j>$)return o.state.doc.length;for(let st=o.defaultLineHeight/2,at=!1;k=o.elementAtHeight(j),k.type!=BlockType.Text;)for(;j=c>0?k.bottom+st:k.top-st,!(j>=0&&j<=$);){if(at)return a?null:0;at=!0,c=-c}s=b+j;let _e=k.from;if(_eo.viewport.to)return o.viewport.to==o.state.doc.length?o.state.doc.length:a?null:posAtCoordsImprecise(o,_,k,e,s);let et=o.dom.ownerDocument,tt=o.root.elementFromPoint?o.root:et,nt=tt.elementFromPoint(e,s);nt&&!o.contentDOM.contains(nt)&&(nt=null),nt||(e=Math.max(_.left+1,Math.min(_.right-1,e)),nt=tt.elementFromPoint(e,s),nt&&!o.contentDOM.contains(nt)&&(nt=null));let it,rt=-1;if(nt&&((d=o.docView.nearest(nt))===null||d===void 0?void 0:d.isEditable)!=!1){if(et.caretPositionFromPoint){let st=et.caretPositionFromPoint(e,s);st&&({offsetNode:it,offset:rt}=st)}else if(et.caretRangeFromPoint){let st=et.caretRangeFromPoint(e,s);st&&({startContainer:it,startOffset:rt}=st,browser.safari&&isSuspiciousCaretResult(it,rt,e)&&(it=void 0))}}if(!it||!o.docView.dom.contains(it)){let st=LineView.find(o.docView,_e);if(!st)return j>k.top+k.height/2?k.to:k.from;({node:it,offset:rt}=domPosAtCoords(st.dom,e,s))}return o.docView.posFromDOM(it,rt)}function posAtCoordsImprecise(o,e,s,a,c){let d=Math.round((a-e.left)*o.defaultCharacterWidth);o.lineWrapping&&s.height>o.defaultLineHeight*1.5&&(d+=Math.floor((c-s.top)/o.defaultLineHeight)*o.viewState.heightOracle.lineLength);let _=o.state.sliceDoc(s.from,s.to);return s.from+findColumn(_,d,o.state.tabSize)}function isSuspiciousCaretResult(o,e,s){let a;if(o.nodeType!=3||e!=(a=o.nodeValue.length))return!1;for(let c=o.nextSibling;c;c=c.nextSibling)if(c.nodeType!=1||c.nodeName!="BR")return!1;return textRange(o,a-1,a).getBoundingClientRect().left>s}function moveToLineBoundary(o,e,s,a){let c=o.state.doc.lineAt(e.head),d=!a||!o.lineWrapping?null:o.coordsAtPos(e.assoc<0&&e.head>c.from?e.head-1:e.head);if(d){let k=o.dom.getBoundingClientRect(),$=o.posAtCoords({x:s==(o.textDirection==Direction.LTR)?k.right-1:k.left+1,y:(d.top+d.bottom)/2});if($!=null)return EditorSelection.cursor($,s?-1:1)}let _=LineView.find(o.docView,e.head),b=_?s?_.posAtEnd:_.posAtStart:s?c.to:c.from;return EditorSelection.cursor(b,s?-1:1)}function moveByChar(o,e,s,a){let c=o.state.doc.lineAt(e.head),d=o.bidiSpans(c);for(let _=e,b=null;;){let k=moveVisually(c,d,o.textDirection,_,s),$=movedOver;if(!k){if(c.number==(s?o.state.doc.lines:1))return _;$=` -`,c=o.state.doc.line(c.number+(s?1:-1)),d=o.bidiSpans(c),k=EditorSelection.cursor(s?c.from:c.to)}if(b){if(!b($))return _}else{if(!a)return k;b=a($)}_=k}}function byGroup(o,e,s){let a=o.state.charCategorizer(e),c=a(s);return d=>{let _=a(d);return c==CharCategory.Space&&(c=_),c==_}}function moveVertically(o,e,s,a){let c=e.head,d=s?1:-1;if(c==(s?o.state.doc.length:0))return EditorSelection.cursor(c,e.assoc);let _=e.goalColumn,b,k=o.contentDOM.getBoundingClientRect(),$=o.coordsAtPos(c),j=o.documentTop;if($)_==null&&(_=$.left-k.left),b=d<0?$.top:$.bottom;else{let tt=o.viewState.lineBlockAt(c-j);_==null&&(_=Math.min(k.right-k.left,o.defaultCharacterWidth*(c-tt.from))),b=(d<0?tt.top:tt.bottom)+j}let _e=k.left+_,et=a!=null?a:o.defaultLineHeight>>1;for(let tt=0;;tt+=10){let nt=b+(et+tt)*d,it=posAtCoords(o,{x:_e,y:nt},!1,d);if(ntk.bottom||(d<0?itc))return EditorSelection.cursor(it,e.assoc,void 0,_)}}function skipAtoms(o,e,s){let a=o.pluginField(PluginField.atomicRanges);for(;;){let c=!1;for(let d of a)d.between(s.from-1,s.from+1,(_,b,k)=>{s.from>_&&s.froms.from?EditorSelection.cursor(_,1):EditorSelection.cursor(b,-1),c=!0)});if(!c)return s}}class InputState{constructor(e){this.lastKeyCode=0,this.lastKeyTime=0,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.rapidCompositionStart=!1,this.mouseSelection=null;for(let s in handlers){let a=handlers[s];e.contentDOM.addEventListener(s,c=>{!eventBelongsToEditor(e,c)||this.ignoreDuringComposition(c)||s=="keydown"&&this.keydown(e,c)||(this.mustFlushObserver(c)&&e.observer.forceFlush(),this.runCustomHandlers(s,e,c)?c.preventDefault():a(e,c))}),this.registeredEvents.push(s)}this.notifiedFocused=e.hasFocus,this.ensureHandlers(e),browser.safari&&e.contentDOM.addEventListener("input",()=>null)}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}ensureHandlers(e){let s=this.customHandlers=e.pluginField(domEventHandlers);for(let a of s)for(let c in a.handlers)this.registeredEvents.indexOf(c)<0&&c!="scroll"&&(this.registeredEvents.push(c),e.contentDOM.addEventListener(c,d=>{!eventBelongsToEditor(e,d)||this.runCustomHandlers(c,e,d)&&d.preventDefault()}))}runCustomHandlers(e,s,a){for(let c of this.customHandlers){let d=c.handlers[e];if(d)try{if(d.call(c.plugin,a,s)||a.defaultPrevented)return!0}catch(_){logException(s.state,_)}}return!1}runScrollHandlers(e,s){for(let a of this.customHandlers){let c=a.handlers.scroll;if(c)try{c.call(a.plugin,s,e)}catch(d){logException(e.state,d)}}}keydown(e,s){if(this.lastKeyCode=s.keyCode,this.lastKeyTime=Date.now(),s.keyCode==9&&Date.now()c.keyCode==s.keyCode))&&!(s.ctrlKey||s.altKey||s.metaKey)&&!s.synthetic?(this.pendingIOSKey=a,setTimeout(()=>this.flushIOSKey(e),250),!0):!1}flushIOSKey(e){let s=this.pendingIOSKey;return s?(this.pendingIOSKey=void 0,dispatchKey(e.contentDOM,s.key,s.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:browser.safari&&Date.now()-this.compositionEndedAt<500?(this.compositionEndedAt=0,!0):!1:!1}mustFlushObserver(e){return e.type=="keydown"&&e.keyCode!=229||e.type=="compositionend"&&!browser.ios}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const PendingKeys=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],modifierCodes=[16,17,18,20,91,92,224,225];class MouseSelection{constructor(e,s,a,c){this.view=e,this.style=a,this.mustSelect=c,this.lastEvent=s;let d=e.contentDOM.ownerDocument;d.addEventListener("mousemove",this.move=this.move.bind(this)),d.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=s.shiftKey,this.multiple=e.state.facet(EditorState.allowMultipleSelections)&&addsSelectionRange(e,s),this.dragMove=dragMovesSelection(e,s),this.dragging=isInPrimarySelection(e,s)&&getClickType(s)==1?null:!1,this.dragging===!1&&(s.preventDefault(),this.select(s))}move(e){if(e.buttons==0)return this.destroy();this.dragging===!1&&this.select(this.lastEvent=e)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}select(e){let s=this.style.get(e,this.extend,this.multiple);(this.mustSelect||!s.eq(this.view.state.selection)||s.main.assoc!=this.view.state.selection.main.assoc)&&this.view.dispatch({selection:s,userEvent:"select.pointer",scrollIntoView:!0}),this.mustSelect=!1}update(e){e.docChanged&&this.dragging&&(this.dragging=this.dragging.map(e.changes)),this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function addsSelectionRange(o,e){let s=o.state.facet(clickAddsSelectionRange);return s.length?s[0](e):browser.mac?e.metaKey:e.ctrlKey}function dragMovesSelection(o,e){let s=o.state.facet(dragMovesSelection$1);return s.length?s[0](e):browser.mac?!e.altKey:!e.ctrlKey}function isInPrimarySelection(o,e){let{main:s}=o.state.selection;if(s.empty)return!1;let a=getSelection(o.root);if(a.rangeCount==0)return!0;let c=a.getRangeAt(0).getClientRects();for(let d=0;d=e.clientX&&_.top<=e.clientY&&_.bottom>=e.clientY)return!0}return!1}function eventBelongsToEditor(o,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let s=e.target,a;s!=o.contentDOM;s=s.parentNode)if(!s||s.nodeType==11||(a=ContentView.get(s))&&a.ignoreEvent(e))return!1;return!0}const handlers=Object.create(null),brokenClipboardAPI=browser.ie&&browser.ie_version<15||browser.ios&&browser.webkit_version<604;function capturePaste(o){let e=o.dom.parentNode;if(!e)return;let s=e.appendChild(document.createElement("textarea"));s.style.cssText="position: fixed; left: -10000px; top: 10px",s.focus(),setTimeout(()=>{o.focus(),s.remove(),doPaste(o,s.value)},50)}function doPaste(o,e){let{state:s}=o,a,c=1,d=s.toText(e),_=d.lines==s.selection.ranges.length;if(lastLinewiseCopy!=null&&s.selection.ranges.every(k=>k.empty)&&lastLinewiseCopy==d.toString()){let k=-1;a=s.changeByRange($=>{let j=s.doc.lineAt($.from);if(j.from==k)return{range:$};k=j.from;let _e=s.toText((_?d.line(c++).text:e)+s.lineBreak);return{changes:{from:j.from,insert:_e},range:EditorSelection.cursor($.from+_e.length)}})}else _?a=s.changeByRange(k=>{let $=d.line(c++);return{changes:{from:k.from,to:k.to,insert:$.text},range:EditorSelection.cursor(k.from+$.length)}}):a=s.replaceSelection(d);o.dispatch(a,{userEvent:"input.paste",scrollIntoView:!0})}handlers.keydown=(o,e)=>{o.inputState.setSelectionOrigin("select"),e.keyCode==27?o.inputState.lastEscPress=Date.now():modifierCodes.indexOf(e.keyCode)<0&&(o.inputState.lastEscPress=0)};let lastTouch=0;handlers.touchstart=(o,e)=>{lastTouch=Date.now(),o.inputState.setSelectionOrigin("select.pointer")};handlers.touchmove=o=>{o.inputState.setSelectionOrigin("select.pointer")};handlers.mousedown=(o,e)=>{if(o.observer.flush(),lastTouch>Date.now()-2e3&&getClickType(e)==1)return;let s=null;for(let a of o.state.facet(mouseSelectionStyle))if(s=a(o,e),s)break;if(!s&&e.button==0&&(s=basicMouseSelection(o,e)),s){let a=o.root.activeElement!=o.contentDOM;a&&o.observer.ignore(()=>focusPreventScroll(o.contentDOM)),o.inputState.startMouseSelection(new MouseSelection(o,e,s,a))}};function rangeForClick(o,e,s,a){if(a==1)return EditorSelection.cursor(e,s);if(a==2)return groupAt(o.state,e,s);{let c=LineView.find(o.docView,e),d=o.state.doc.lineAt(c?c.posAtEnd:e),_=c?c.posAtStart:d.from,b=c?c.posAtEnd:d.to;return bo>=e.top&&o<=e.bottom,inside=(o,e,s)=>insideY(e,s)&&o>=s.left&&o<=s.right;function findPositionSide(o,e,s,a){let c=LineView.find(o.docView,e);if(!c)return 1;let d=e-c.posAtStart;if(d==0)return 1;if(d==c.length)return-1;let _=c.coordsAt(d,-1);if(_&&inside(s,a,_))return-1;let b=c.coordsAt(d,1);return b&&inside(s,a,b)?1:_&&insideY(a,_)?-1:1}function queryPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:s,bias:findPositionSide(o,s,e.clientX,e.clientY)}}const BadMouseDetail=browser.ie&&browser.ie_version<=11;let lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(o){if(!BadMouseDetail)return o.detail;let e=lastMouseDown,s=lastMouseDownTime;return lastMouseDown=o,lastMouseDownTime=Date.now(),lastMouseDownCount=!e||s>Date.now()-400&&Math.abs(e.clientX-o.clientX)<2&&Math.abs(e.clientY-o.clientY)<2?(lastMouseDownCount+1)%3:1}function basicMouseSelection(o,e){let s=queryPos(o,e),a=getClickType(e),c=o.state.selection,d=s,_=e;return{update(b){b.docChanged&&(s&&(s.pos=b.changes.mapPos(s.pos)),c=c.map(b.changes),_=null)},get(b,k,$){let j;if(_&&b.clientX==_.clientX&&b.clientY==_.clientY?j=d:(j=d=queryPos(o,b),_=b),!j||!s)return c;let _e=rangeForClick(o,j.pos,j.bias,a);if(s.pos!=j.pos&&!k){let et=rangeForClick(o,s.pos,s.bias,a),tt=Math.min(et.from,_e.from),nt=Math.max(et.to,_e.to);_e=tt<_e.from?EditorSelection.range(tt,nt):EditorSelection.range(nt,tt)}return k?c.replaceRange(c.main.extend(_e.from,_e.to)):$?c.addRange(_e):EditorSelection.create([_e])}}}handlers.dragstart=(o,e)=>{let{selection:{main:s}}=o.state,{mouseSelection:a}=o.inputState;a&&(a.dragging=s),e.dataTransfer&&(e.dataTransfer.setData("Text",o.state.sliceDoc(s.from,s.to)),e.dataTransfer.effectAllowed="copyMove")};function dropText(o,e,s,a){if(!s)return;let c=o.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:d}=o.inputState,_=a&&d&&d.dragging&&d.dragMove?{from:d.dragging.from,to:d.dragging.to}:null,b={from:c,insert:s},k=o.state.changes(_?[_,b]:b);o.focus(),o.dispatch({changes:k,selection:{anchor:k.mapPos(c,-1),head:k.mapPos(c,1)},userEvent:_?"move.drop":"input.drop"})}handlers.drop=(o,e)=>{if(!e.dataTransfer)return;if(o.state.readOnly)return e.preventDefault();let s=e.dataTransfer.files;if(s&&s.length){e.preventDefault();let a=Array(s.length),c=0,d=()=>{++c==s.length&&dropText(o,e,a.filter(_=>_!=null).join(o.state.lineBreak),!1)};for(let _=0;_{/[\x00-\x08\x0e-\x1f]{2}/.test(b.result)||(a[_]=b.result),d()},b.readAsText(s[_])}}else dropText(o,e,e.dataTransfer.getData("Text"),!0)};handlers.paste=(o,e)=>{if(o.state.readOnly)return e.preventDefault();o.observer.flush();let s=brokenClipboardAPI?null:e.clipboardData;s?(doPaste(o,s.getData("text/plain")),e.preventDefault()):capturePaste(o)};function captureCopy(o,e){let s=o.dom.parentNode;if(!s)return;let a=s.appendChild(document.createElement("textarea"));a.style.cssText="position: fixed; left: -10000px; top: 10px",a.value=e,a.focus(),a.selectionEnd=e.length,a.selectionStart=0,setTimeout(()=>{a.remove(),o.focus()},50)}function copiedRange(o){let e=[],s=[],a=!1;for(let c of o.selection.ranges)c.empty||(e.push(o.sliceDoc(c.from,c.to)),s.push(c));if(!e.length){let c=-1;for(let{from:d}of o.selection.ranges){let _=o.doc.lineAt(d);_.number>c&&(e.push(_.text),s.push({from:_.from,to:Math.min(o.doc.length,_.to+1)})),c=_.number}a=!0}return{text:e.join(o.lineBreak),ranges:s,linewise:a}}let lastLinewiseCopy=null;handlers.copy=handlers.cut=(o,e)=>{let{text:s,ranges:a,linewise:c}=copiedRange(o.state);if(!s&&!c)return;lastLinewiseCopy=c?s:null;let d=brokenClipboardAPI?null:e.clipboardData;d?(e.preventDefault(),d.clearData(),d.setData("text/plain",s)):captureCopy(o,s),e.type=="cut"&&!o.state.readOnly&&o.dispatch({changes:a,scrollIntoView:!0,userEvent:"delete.cut"})};handlers.focus=handlers.blur=o=>{setTimeout(()=>{o.hasFocus!=o.inputState.notifiedFocused&&o.update([])},10)};function forceClearComposition(o,e){if(o.docView.compositionDeco.size){o.inputState.rapidCompositionStart=e;try{o.update([])}finally{o.inputState.rapidCompositionStart=!1}}}handlers.compositionstart=handlers.compositionupdate=o=>{o.inputState.compositionFirstChange==null&&(o.inputState.compositionFirstChange=!0),o.inputState.composing<0&&(o.inputState.composing=0,o.docView.compositionDeco.size&&(o.observer.flush(),forceClearComposition(o,!0)))};handlers.compositionend=o=>{o.inputState.composing=-1,o.inputState.compositionEndedAt=Date.now(),o.inputState.compositionFirstChange=null,setTimeout(()=>{o.inputState.composing<0&&forceClearComposition(o,!1)},50)};handlers.contextmenu=o=>{o.inputState.lastContextMenu=Date.now()};handlers.beforeinput=(o,e)=>{var s;let a;if(browser.chrome&&browser.android&&(a=PendingKeys.find(c=>c.inputType==e.inputType))&&(o.observer.delayAndroidKey(a.key,a.keyCode),a.key=="Backspace"||a.key=="Delete")){let c=((s=window.visualViewport)===null||s===void 0?void 0:s.height)||0;setTimeout(()=>{var d;(((d=window.visualViewport)===null||d===void 0?void 0:d.height)||0)>c+10&&o.hasFocus&&(o.contentDOM.blur(),o.focus())},100)}};const wrappingWhiteSpace=["pre-wrap","normal","pre-line","break-spaces"];class HeightOracle{constructor(){this.doc=Text.empty,this.lineWrapping=!1,this.direction=Direction.LTR,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.lineLength=30,this.heightChanged=!1}heightForGap(e,s){let a=this.doc.lineAt(s).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(a+=Math.ceil((s-e-a*this.lineLength*.5)/this.lineLength)),this.lineHeight*a}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForStyle(e,s){return wrappingWhiteSpace.indexOf(e)>-1!=this.lineWrapping||this.direction!=s}mustRefreshForHeights(e){let s=!1;for(let a=0;a-1,k=Math.round(a)!=Math.round(this.lineHeight)||this.lineWrapping!=b||this.direction!=s;if(this.lineWrapping=b,this.direction=s,this.lineHeight=a,this.charWidth=c,this.lineLength=d,k){this.heightSamples={};for(let $=0;$<_.length;$++){let j=_[$];j<0?$++:this.heightSamples[Math.floor(j*10)]=!0}}return k}}class MeasuredHeights{constructor(e,s){this.from=e,this.heights=s,this.index=0}get more(){return this.indexs.moveY(e)):this.type):this}}var QueryType$1=function(o){return o[o.ByPos=0]="ByPos",o[o.ByHeight=1]="ByHeight",o[o.ByPosNoHeight=2]="ByPosNoHeight",o}(QueryType$1||(QueryType$1={}));const Epsilon=.001;class HeightMap{constructor(e,s,a=2){this.length=e,this.height=s,this.flags=a}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,s){this.height!=s&&(Math.abs(this.height-s)>Epsilon&&(e.heightChanged=!0),this.height=s)}replace(e,s,a){return HeightMap.of(a)}decomposeLeft(e,s){s.push(this)}decomposeRight(e,s){s.push(this)}applyChanges(e,s,a,c){let d=this;for(let _=c.length-1;_>=0;_--){let{fromA:b,toA:k,fromB:$,toB:j}=c[_],_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0),et=_e.to>=k?_e:d.lineAt(k,QueryType$1.ByPosNoHeight,s,0,0);for(j+=et.to-k,k=et.to;_>0&&_e.from<=c[_-1].toA;)b=c[_-1].fromA,$=c[_-1].fromB,_--,b<_e.from&&(_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0));$+=_e.from-b,b=_e.from;let tt=NodeBuilder.build(a,e,$,j);d=d.replace(b,k,tt)}return d.updateHeight(a,0)}static empty(){return new HeightMapText(0,0)}static of(e){if(e.length==1)return e[0];let s=0,a=e.length,c=0,d=0;for(;;)if(s==a)if(c>d*2){let b=e[s-1];b.break?e.splice(--s,1,b.left,null,b.right):e.splice(--s,1,b.left,b.right),a+=1+b.break,c-=b.size}else if(d>c*2){let b=e[a];b.break?e.splice(a,1,b.left,null,b.right):e.splice(a,1,b.left,b.right),a+=2+b.break,d-=b.size}else break;else if(c0){let d=a[a.length-1];d instanceof HeightMapGap?a[a.length-1]=new HeightMapGap(d.length+c):a.push(null,new HeightMapGap(c-1))}if(e>0){let d=a[0];d instanceof HeightMapGap?a[0]=new HeightMapGap(e+d.length):a.unshift(new HeightMapGap(e-1),null)}return HeightMap.of(a)}decomposeLeft(e,s){s.push(new HeightMapGap(e-1),null)}decomposeRight(e,s){s.push(null,new HeightMapGap(this.length-e-1))}updateHeight(e,s=0,a=!1,c){let d=s+this.length;if(c&&c.from<=s+this.length&&c.more){let _=[],b=Math.max(s,c.from),k=-1,$=e.heightChanged;for(c.from>s&&_.push(new HeightMapGap(c.from-s-1).updateHeight(e,s));b<=d&&c.more;){let _e=e.doc.lineAt(b).length;_.length&&_.push(null);let et=c.heights[c.index++];k==-1?k=et:Math.abs(et-k)>=Epsilon&&(k=-2);let tt=new HeightMapText(_e,et);tt.outdated=!1,_.push(tt),b+=_e+1}b<=d&&_.push(null,new HeightMapGap(d-b).updateHeight(e,b));let j=HeightMap.of(_);return e.heightChanged=$||k<0||Math.abs(j.height-this.height)>=Epsilon||Math.abs(k-this.lines(e.doc,s).lineHeight)>=Epsilon,j}else(a||this.outdated)&&(this.setHeight(e,e.heightForGap(s,s+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class HeightMapBranch extends HeightMap{constructor(e,s,a){super(e.length+s+a.length,e.height+a.height,s|(e.outdated||a.outdated?2:0)),this.left=e,this.right=a,this.size=e.size+a.size}get break(){return this.flags&1}blockAt(e,s,a,c){let d=a+this.left.height;return eb))return $;let j=s==QueryType$1.ByPosNoHeight?QueryType$1.ByPosNoHeight:QueryType$1.ByPos;return k?$.join(this.right.lineAt(b,j,a,_,b)):this.left.lineAt(b,j,a,c,d).join($)}forEachLine(e,s,a,c,d,_){let b=c+this.left.height,k=d+this.left.length+this.break;if(this.break)e=k&&this.right.forEachLine(e,s,a,b,k,_);else{let $=this.lineAt(k,QueryType$1.ByPos,a,c,d);e<$.from&&this.left.forEachLine(e,$.from-1,a,c,d,_),$.to>=e&&$.from<=s&&_($),s>$.to&&this.right.forEachLine($.to+1,s,a,b,k,_)}}replace(e,s,a){let c=this.left.length+this.break;if(sthis.left.length)return this.balanced(this.left,this.right.replace(e-c,s-c,a));let d=[];e>0&&this.decomposeLeft(e,d);let _=d.length;for(let b of a)d.push(b);if(e>0&&mergeGaps(d,_-1),s=a&&s.push(null)),e>a&&this.right.decomposeLeft(e-a,s)}decomposeRight(e,s){let a=this.left.length,c=a+this.break;if(e>=c)return this.right.decomposeRight(e-c,s);e2*s.size||s.size>2*e.size?HeightMap.of(this.break?[e,null,s]:[e,s]):(this.left=e,this.right=s,this.height=e.height+s.height,this.outdated=e.outdated||s.outdated,this.size=e.size+s.size,this.length=e.length+this.break+s.length,this)}updateHeight(e,s=0,a=!1,c){let{left:d,right:_}=this,b=s+d.length+this.break,k=null;return c&&c.from<=s+d.length&&c.more?k=d=d.updateHeight(e,s,a,c):d.updateHeight(e,s,a),c&&c.from<=b+_.length&&c.more?k=_=_.updateHeight(e,b,a,c):_.updateHeight(e,b,a),k?this.balanced(d,_):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function mergeGaps(o,e){let s,a;o[e]==null&&(s=o[e-1])instanceof HeightMapGap&&(a=o[e+1])instanceof HeightMapGap&&o.splice(e-1,3,new HeightMapGap(s.length+1+a.length))}const relevantWidgetHeight=5;class NodeBuilder{constructor(e,s){this.pos=e,this.oracle=s,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,s){if(this.lineStart>-1){let a=Math.min(s,this.lineEnd),c=this.nodes[this.nodes.length-1];c instanceof HeightMapText?c.length+=a-this.pos:(a>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(a-this.pos,-1)),this.writtenTo=a,s>a&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=s}point(e,s,a){if(e=relevantWidgetHeight)&&this.addLineDeco(c,d)}else s>e&&this.span(e,s);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:s}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=s,this.writtenToe&&this.nodes.push(new HeightMapText(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,s){let a=new HeightMapGap(s-e);return this.oracle.doc.lineAt(e).to==s&&(a.flags|=4),a}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof HeightMapText)return e;let s=new HeightMapText(0,-1);return this.nodes.push(s),s}addBlock(e){this.enterLine(),e.type==BlockType.WidgetAfter&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,e.type!=BlockType.WidgetBefore&&(this.covering=e)}addLineDeco(e,s){let a=this.ensureLine();a.length+=s,a.collapsed+=s,a.widgetHeight=Math.max(a.widgetHeight,e),this.writtenTo=this.pos=this.pos+s}finish(e){let s=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(s instanceof HeightMapText)&&!this.isCovered?this.nodes.push(new HeightMapText(0,-1)):(this.writtenTo$.clientHeight||$.scrollWidth>$.clientWidth)&&j.overflow!="visible"){let _e=$.getBoundingClientRect();a=Math.max(a,_e.left),c=Math.min(c,_e.right),d=Math.max(d,_e.top),_=Math.min(_,_e.bottom)}k=j.position=="absolute"||j.position=="fixed"?$.offsetParent:$.parentNode}else if(k.nodeType==11)k=k.host;else break;return{left:a-s.left,right:Math.max(a,c)-s.left,top:d-(s.top+e),bottom:Math.max(d,_)-(s.top+e)}}function fullPixelRange(o,e){let s=o.getBoundingClientRect();return{left:0,right:s.right-s.left,top:e,bottom:s.bottom-(s.top+e)}}class LineGap{constructor(e,s,a){this.from=e,this.to=s,this.size=a}static same(e,s){if(e.length!=s.length)return!1;for(let a=0;as.draw(!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:s}=this.state.selection;for(let a=0;a<=1;a++){let c=a?s.head:s.anchor;if(!e.some(({from:d,to:_})=>c>=d&&c<=_)){let{from:d,to:_}=this.lineBlockAt(c);e.push(new Viewport(d,_))}}this.viewports=e.sort((a,c)=>a.from-c.from),this.scaler=this.heightMap.height<=7e6?IdScaler:new BigScaler(this.heightOracle.doc,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.state.doc,0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:scaleBlock(e,this.scaler))})}update(e,s=null){let a=this.state;this.state=e.state;let c=this.state.facet(decorations),d=e.changedRanges,_=ChangedRange.extendWithRanges(d,heightRelevantDecoChanges(e.startState.facet(decorations),c,e?e.changes:ChangeSet.empty(this.state.doc.length))),b=this.heightMap.height;this.heightMap=this.heightMap.applyChanges(c,a.doc,this.heightOracle.setDoc(this.state.doc),_),this.heightMap.height!=b&&(e.flags|=2);let k=_.length?this.mapViewport(this.viewport,e.changes):this.viewport;(s&&(s.range.headk.to)||!this.viewportIsAppropriate(k))&&(k=this.getViewport(0,s));let $=!e.changes.empty||e.flags&2||k.from!=this.viewport.from||k.to!=this.viewport.to;this.viewport=k,this.updateForViewport(),$&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),s&&(this.scrollTarget=s),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&(this.mustEnforceCursorAssoc=!0)}measure(e){let s=e.contentDOM,a=window.getComputedStyle(s),c=this.heightOracle,d=a.whiteSpace,_=a.direction=="rtl"?Direction.RTL:Direction.LTR,b=this.heightOracle.mustRefreshForStyle(d,_),k=b||this.mustMeasureContent||this.contentDOMHeight!=s.clientHeight,$=0,j=0;if(this.editorWidth!=e.scrollDOM.clientWidth&&(c.lineWrapping&&(k=!0),this.editorWidth=e.scrollDOM.clientWidth,$|=8),k){this.mustMeasureContent=!1,this.contentDOMHeight=s.clientHeight;let st=parseInt(a.paddingTop)||0,at=parseInt(a.paddingBottom)||0;(this.paddingTop!=st||this.paddingBottom!=at)&&($|=8,this.paddingTop=st,this.paddingBottom=at)}let _e=(this.printing?fullPixelRange:visiblePixelRange)(s,this.paddingTop),et=_e.top-this.pixelViewport.top,tt=_e.bottom-this.pixelViewport.bottom;this.pixelViewport=_e;let nt=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(nt!=this.inView&&(this.inView=nt,nt&&(k=!0)),!this.inView)return 0;let it=s.clientWidth;if((this.contentDOMWidth!=it||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=it,this.editorHeight=e.scrollDOM.clientHeight,$|=8),k){let st=e.docView.measureVisibleLineHeights();if(c.mustRefreshForHeights(st)&&(b=!0),b||c.lineWrapping&&Math.abs(it-this.contentDOMWidth)>c.charWidth){let{lineHeight:at,charWidth:lt}=e.docView.measureTextSize();b=c.refresh(d,_,at,lt,it/lt,st),b&&(e.docView.minWidth=0,$|=8)}et>0&&tt>0?j=Math.max(et,tt):et<0&&tt<0&&(j=Math.min(et,tt)),c.heightChanged=!1,this.heightMap=this.heightMap.updateHeight(c,0,b,new MeasuredHeights(this.viewport.from,st)),c.heightChanged&&($|=2)}let rt=!this.viewportIsAppropriate(this.viewport,j)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return rt&&(this.viewport=this.getViewport(j,this.scrollTarget)),this.updateForViewport(),($&2||rt)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(b?[]:this.lineGaps)),$|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),$}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,s){let a=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),c=this.heightMap,d=this.state.doc,{visibleTop:_,visibleBottom:b}=this,k=new Viewport(c.lineAt(_-a*1e3,QueryType$1.ByHeight,d,0,0).from,c.lineAt(b+(1-a)*1e3,QueryType$1.ByHeight,d,0,0).to);if(s){let{head:$}=s.range;if($k.to){let j=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),_e=c.lineAt($,QueryType$1.ByPos,d,0,0),et;s.y=="center"?et=(_e.top+_e.bottom)/2-j/2:s.y=="start"||s.y=="nearest"&&$=b+Math.max(10,Math.min(a,250)))&&c>_-2*1e3&&da.from&&b.push({from:a.from,to:d}),_=a.from&&k.from<=a.to&&cutRange(b,k.from-10,k.from+10),!k.empty&&k.to>=a.from&&k.to<=a.to&&cutRange(b,k.to-10,k.to+10);for(let{from:$,to:j}of b)j-$>1e3&&s.push(find(e,_e=>_e.from>=a.from&&_e.to<=a.to&&Math.abs(_e.from-$)<1e3&&Math.abs(_e.to-j)<1e3)||new LineGap($,j,this.gapSize(a,$,j,c)))}return s}gapSize(e,s,a,c){let d=findFraction(c,a)-findFraction(c,s);return this.heightOracle.lineWrapping?e.height*d:c.total*this.heightOracle.charWidth*d}updateLineGaps(e){LineGap.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Decoration.set(e.map(s=>s.draw(this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.state.facet(decorations);this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let s=[];RangeSet.spans(e,this.viewport.from,this.viewport.to,{span(c,d){s.push({from:c,to:d})},point(){}},20);let a=s.length!=this.visibleRanges.length||this.visibleRanges.some((c,d)=>c.from!=s[d].from||c.to!=s[d].to);return this.visibleRanges=s,a?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(s=>s.from<=e&&s.to>=e)||scaleBlock(this.heightMap.lineAt(e,QueryType$1.ByPos,this.state.doc,0,0),this.scaler)}lineBlockAtHeight(e){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(e),QueryType$1.ByHeight,this.state.doc,0,0),this.scaler)}elementAtHeight(e){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(e),this.state.doc,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Viewport{constructor(e,s){this.from=e,this.to=s}}function lineStructure(o,e,s){let a=[],c=o,d=0;return RangeSet.spans(s.facet(decorations),o,e,{span(){},point(_,b){_>c&&(a.push({from:c,to:_}),d+=_-c),c=b}},20),c=1)return e[e.length-1].to;let a=Math.floor(o*s);for(let c=0;;c++){let{from:d,to:_}=e[c],b=_-d;if(a<=b)return d+a;a-=b}}function findFraction(o,e){let s=0;for(let{from:a,to:c}of o.ranges){if(e<=c){s+=e-a;break}s+=c-a}return s/o.total}function cutRange(o,e,s){for(let a=0;ae){let d=[];c.froms&&d.push({from:s,to:c.to}),o.splice(a,1,...d),a+=d.length-1}}}function find(o,e){for(let s of o)if(e(s))return s}const IdScaler={toDOM(o){return o},fromDOM(o){return o},scale:1};class BigScaler{constructor(e,s,a){let c=0,d=0,_=0;this.viewports=a.map(({from:b,to:k})=>{let $=s.lineAt(b,QueryType$1.ByPos,e,0,0).top,j=s.lineAt(k,QueryType$1.ByPos,e,0,0).bottom;return c+=j-$,{from:b,to:k,top:$,bottom:j,domTop:0,domBottom:0}}),this.scale=(7e6-c)/(s.height-c);for(let b of this.viewports)b.domTop=_+(b.top-d)*this.scale,_=b.domBottom=b.domTop+(b.bottom-b.top),d=b.bottom}toDOM(e){for(let s=0,a=0,c=0;;s++){let d=sscaleBlock(c,e)):o.type)}const theme=Facet.define({combine:o=>o.join(" ")}),darkTheme=Facet.define({combine:o=>o.indexOf(!0)>-1}),baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName(),lightDarkIDs={"&light":"."+baseLightID,"&dark":"."+baseDarkID};function buildTheme(o,e,s){return new StyleModule(e,{finish(a){return/&/.test(a)?a.replace(/&\w*/,c=>{if(c=="&")return o;if(!s||!s[c])throw new RangeError(`Unsupported selector: ${c}`);return s[c]}):o+" "+a}})}const baseTheme$8=buildTheme("."+baseThemeID,{"&.cm-editor":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,minHeight:"100%",display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere"},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 4px"},".cm-selectionLayer":{zIndex:-1,contain:"size style"},".cm-selectionBackground":{position:"absolute"},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{zIndex:100,contain:"size style",pointerEvents:"none"},"&.cm-focused .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},".cm-cursor, .cm-dropCursor":{position:"absolute",borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},"&.cm-focused .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#f3f9ff"},"&dark .cm-activeLine":{backgroundColor:"#223039"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},lightDarkIDs),observeOptions={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},useCharData=browser.ie&&browser.ie_version<=11;class DOMObserver{constructor(e,s,a){this.view=e,this.onChange=s,this.onScrollChanged=a,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.scrollTargets=[],this.intersection=null,this.resize=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(c=>{for(let d of c)this.queue.push(d);(browser.ie&&browser.ie_version<=11||browser.ios&&e.composing)&&c.some(d=>d.type=="childList"&&d.removedNodes.length||d.type=="characterData"&&d.oldValue.length>d.target.nodeValue.length)?this.flushSoon():this.flush()}),useCharData&&(this.onCharData=c=>{this.queue.push({target:c.target,type:"characterData",oldValue:c.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),window.addEventListener("resize",this.onResize=this.onResize.bind(this)),typeof ResizeObserver=="function"&&(this.resize=new ResizeObserver(()=>{this.view.docView.lastUpdate{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),c.length>0&&c[c.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(c=>{c.length>0&&c[c.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange(),this.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((s,a)=>s!=e[a]))){this.gapIntersection.disconnect();for(let s of e)this.gapIntersection.observe(s);this.gaps=e}}onSelectionChange(e){if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:s}=this,a=this.selectionRange;if(s.state.facet(editable)?s.root.activeElement!=this.dom:!hasSelection(s.dom,a))return;let c=a.anchorNode&&s.docView.nearest(a.anchorNode);c&&c.ignoreEvent(e)||((browser.ie&&browser.ie_version<=11||browser.android&&browser.chrome)&&!s.state.selection.main.empty&&a.focusNode&&isEquivalentPosition(a.focusNode,a.focusOffset,a.anchorNode,a.anchorOffset)?this.flushSoon():this.flush(!1))}readSelectionRange(){let{root:e}=this.view,s=getSelection(e),a=browser.safari&&e.nodeType==11&&deepActiveElement()==this.view.contentDOM&&safariSelectionRangeHack(this.view)||s;return this.selectionRange.eq(a)?!1:(this.selectionRange.setRange(a),this.selectionChanged=!0)}setSelectionRange(e,s){this.selectionRange.set(e.node,e.offset,s.node,s.offset),this.selectionChanged=!1}listenForScroll(){this.parentCheck=-1;let e=0,s=null;for(let a=this.dom;a;)if(a.nodeType==1)!s&&e{let a=this.delayedAndroidKey;this.delayedAndroidKey=null;let c=this.view.state;dispatchKey(this.view.contentDOM,a.key,a.keyCode)?this.processRecords():this.flush(),this.view.state==c&&this.view.update([])}),(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:s})}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=window.setTimeout(()=>{this.delayedFlush=-1,this.flush()},20))}forceFlush(){this.delayedFlush>=0&&(window.clearTimeout(this.delayedFlush),this.delayedFlush=-1,this.flush())}processRecords(){let e=this.queue;for(let d of this.observer.takeRecords())e.push(d);e.length&&(this.queue=[]);let s=-1,a=-1,c=!1;for(let d of e){let _=this.readMutation(d);!_||(_.typeOver&&(c=!0),s==-1?{from:s,to:a}=_:(s=Math.min(_.from,s),a=Math.max(_.to,a)))}return{from:s,to:a,typeOver:c}}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return;e&&this.readSelectionRange();let{from:s,to:a,typeOver:c}=this.processRecords(),d=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(s<0&&!d)return;this.selectionChanged=!1;let _=this.view.state;this.onChange(s,a,c),this.view.state==_&&this.view.update([])}readMutation(e){let s=this.view.docView.nearest(e.target);if(!s||s.ignoreMutation(e))return null;if(s.markDirty(e.type=="attributes"),e.type=="attributes"&&(s.dirty|=4),e.type=="childList"){let a=findChild(s,e.previousSibling||e.target.previousSibling,-1),c=findChild(s,e.nextSibling||e.target.nextSibling,1);return{from:a?s.posAfter(a):s.posAtStart,to:c?s.posBefore(c):s.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:s.posAtStart,to:s.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}destroy(){var e,s,a;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(s=this.gapIntersection)===null||s===void 0||s.disconnect(),(a=this.resize)===null||a===void 0||a.disconnect();for(let c of this.scrollTargets)c.removeEventListener("scroll",this.onScroll);window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.onResize),window.removeEventListener("beforeprint",this.onPrint),this.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout)}}function findChild(o,e,s){for(;e;){let a=ContentView.get(e);if(a&&a.parent==o)return a;let c=e.parentNode;e=c!=o.dom?c:s>0?e.nextSibling:e.previousSibling}return null}function safariSelectionRangeHack(o){let e=null;function s(k){k.preventDefault(),k.stopImmediatePropagation(),e=k.getTargetRanges()[0]}if(o.contentDOM.addEventListener("beforeinput",s,!0),document.execCommand("indent"),o.contentDOM.removeEventListener("beforeinput",s,!0),!e)return null;let a=e.startContainer,c=e.startOffset,d=e.endContainer,_=e.endOffset,b=o.docView.domAtPos(o.state.selection.main.anchor);return isEquivalentPosition(b.node,b.offset,d,_)&&([a,c,d,_]=[d,_,a,c]),{anchorNode:a,anchorOffset:c,focusNode:d,focusOffset:_}}function applyDOMChange(o,e,s,a){let c,d,_=o.state.selection.main;if(e>-1){let b=o.docView.domBoundsAround(e,s,0);if(!b||o.state.readOnly)return;let{from:k,to:$}=b,j=o.docView.impreciseHead||o.docView.impreciseAnchor?[]:selectionPoints(o),_e=new DOMReader(j,o.state);_e.readRange(b.startDOM,b.endDOM);let et=_.from,tt=null;(o.inputState.lastKeyCode===8&&o.inputState.lastKeyTime>Date.now()-100||browser.android&&_e.text.length<$-k)&&(et=_.to,tt="end");let nt=findDiff(o.state.doc.sliceString(k,$,LineBreakPlaceholder),_e.text,et-k,tt);nt&&(browser.chrome&&o.inputState.lastKeyCode==13&&nt.toB==nt.from+2&&_e.text.slice(nt.from,nt.toB)==LineBreakPlaceholder+LineBreakPlaceholder&&nt.toB--,c={from:k+nt.from,to:k+nt.toA,insert:Text.of(_e.text.slice(nt.from,nt.toB).split(LineBreakPlaceholder))}),d=selectionFromPoints(j,k)}else if(o.hasFocus||!o.state.facet(editable)){let b=o.observer.selectionRange,{impreciseHead:k,impreciseAnchor:$}=o.docView,j=k&&k.node==b.focusNode&&k.offset==b.focusOffset||!contains(o.contentDOM,b.focusNode)?o.state.selection.main.head:o.docView.posFromDOM(b.focusNode,b.focusOffset),_e=$&&$.node==b.anchorNode&&$.offset==b.anchorOffset||!contains(o.contentDOM,b.anchorNode)?o.state.selection.main.anchor:o.docView.posFromDOM(b.anchorNode,b.anchorOffset);(j!=_.head||_e!=_.anchor)&&(d=EditorSelection.single(_e,j))}if(!(!c&&!d)){if(!c&&a&&!_.empty&&d&&d.main.empty?c={from:_.from,to:_.to,insert:o.state.doc.slice(_.from,_.to)}:c&&c.from>=_.from&&c.to<=_.to&&(c.from!=_.from||c.to!=_.to)&&_.to-_.from-(c.to-c.from)<=4&&(c={from:_.from,to:_.to,insert:o.state.doc.slice(_.from,c.from).append(c.insert).append(o.state.doc.slice(c.to,_.to))}),c){let b=o.state;if(browser.ios&&o.inputState.flushIOSKey(o)||browser.android&&(c.from==_.from&&c.to==_.to&&c.insert.length==1&&c.insert.lines==2&&dispatchKey(o.contentDOM,"Enter",13)||c.from==_.from-1&&c.to==_.to&&c.insert.length==0&&dispatchKey(o.contentDOM,"Backspace",8)||c.from==_.from&&c.to==_.to+1&&c.insert.length==0&&dispatchKey(o.contentDOM,"Delete",46)))return;let k=c.insert.toString();if(o.state.facet(inputHandler$1).some(_e=>_e(o,c.from,c.to,k)))return;o.inputState.composing>=0&&o.inputState.composing++;let $;if(c.from>=_.from&&c.to<=_.to&&c.to-c.from>=(_.to-_.from)/3&&(!d||d.main.empty&&d.main.from==c.from+c.insert.length)&&o.inputState.composing<0){let _e=_.fromc.to?b.sliceDoc(c.to,_.to):"";$=b.replaceSelection(o.state.toText(_e+c.insert.sliceString(0,void 0,o.state.lineBreak)+et))}else{let _e=b.changes(c),et=d&&!b.selection.main.eq(d.main)&&d.main.to<=_e.newLength?d.main:void 0;if(b.selection.ranges.length>1&&o.inputState.composing>=0&&c.to<=_.to&&c.to>=_.to-10){let tt=o.state.sliceDoc(c.from,c.to),nt=compositionSurroundingNode(o)||o.state.doc.lineAt(_.head),it=_.to-c.to,rt=_.to-_.from;$=b.changeByRange(st=>{if(st.from==_.from&&st.to==_.to)return{changes:_e,range:et||st.map(_e)};let at=st.to-it,lt=at-tt.length;if(st.to-st.from!=rt||o.state.sliceDoc(lt,at)!=tt||nt&&st.to>=nt.from&&st.from<=nt.to)return{range:st};let dt=b.changes({from:lt,to:at,insert:c.insert}),ct=st.to-_.to;return{changes:dt,range:et?EditorSelection.range(Math.max(0,et.anchor+ct),Math.max(0,et.head+ct)):st.map(dt)}})}else $={changes:_e,selection:et&&b.selection.replaceRange(et)}}let j="input.type";o.composing&&(j+=".compose",o.inputState.compositionFirstChange&&(j+=".start",o.inputState.compositionFirstChange=!1)),o.dispatch($,{scrollIntoView:!0,userEvent:j})}else if(d&&!d.main.eq(_)){let b=!1,k="select";o.inputState.lastSelectionTime>Date.now()-50&&(o.inputState.lastSelectionOrigin=="select"&&(b=!0),k=o.inputState.lastSelectionOrigin),o.dispatch({selection:d,scrollIntoView:b,userEvent:k})}}}function findDiff(o,e,s,a){let c=Math.min(o.length,e.length),d=0;for(;d0&&b>0&&o.charCodeAt(_-1)==e.charCodeAt(b-1);)_--,b--;if(a=="end"){let k=Math.max(0,d-Math.min(_,b));s-=_+k-d}return _=_?d-s:0,b=d+(b-_),_=d):b=b?d-s:0,_=d+(_-b),b=d),{from:d,toA:_,toB:b}}function selectionPoints(o){let e=[];if(o.root.activeElement!=o.contentDOM)return e;let{anchorNode:s,anchorOffset:a,focusNode:c,focusOffset:d}=o.observer.selectionRange;return s&&(e.push(new DOMPoint(s,a)),(c!=s||d!=a)&&e.push(new DOMPoint(c,d))),e}function selectionFromPoints(o,e){if(o.length==0)return null;let s=o[0].pos,a=o.length==2?o[1].pos:s;return s>-1&&a>-1?EditorSelection.single(s+e,a+e):null}class EditorView{constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: absolute; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=e.dispatch||(s=>this.update([s])),this.dispatch=this.dispatch.bind(this),this.root=e.root||getRoot(e.parent)||document,this.viewState=new ViewState(e.state||EditorState.create()),this.plugins=this.state.facet(viewPlugin).map(s=>new PluginInstance(s));for(let s of this.plugins)s.update(this);this.observer=new DOMObserver(this,(s,a,c)=>{applyDOMChange(this,s,a,c)},s=>{this.inputState.runScrollHandlers(this,s),this.observer.intersecting&&this.measure()}),this.inputState=new InputState(this),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),e.parent&&e.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}dispatch(...e){this._dispatch(e.length==1&&e[0]instanceof Transaction?e[0]:this.state.update(...e))}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let s=!1,a,c=this.state;for(let _ of e){if(_.startState!=c)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");c=_.state}if(this.destroyed){this.viewState.state=c;return}if(c.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(c);a=new ViewUpdate(this,c,e);let d=this.viewState.scrollTarget;try{this.updateState=2;for(let _ of e){if(d&&(d=d.map(_.changes)),_.scrollIntoView){let{main:b}=_.state.selection;d=new ScrollTarget(b.empty?b:EditorSelection.cursor(b.head,b.head>b.anchor?-1:1))}for(let b of _.effects)b.is(scrollTo)?d=new ScrollTarget(b.value):b.is(centerOn)?d=new ScrollTarget(b.value,"center"):b.is(scrollIntoView$1)&&(d=b.value)}this.viewState.update(a,d),this.bidiCache=CachedOrder.update(this.bidiCache,a.changes),a.empty||(this.updatePlugins(a),this.inputState.update(a)),s=this.docView.update(a),this.state.facet(styleModule)!=this.styleModules&&this.mountStyles(),this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(s,e.some(_=>_.isUserEvent("select.pointer")))}finally{this.updateState=0}if(a.startState.facet(theme)!=a.state.facet(theme)&&(this.viewState.mustMeasureContent=!0),(s||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!a.empty)for(let _ of this.state.facet(updateListener))_(a)}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let s=this.hasFocus;try{for(let a of this.plugins)a.destroy(this);this.viewState=new ViewState(e),this.plugins=e.facet(viewPlugin).map(a=>new PluginInstance(a)),this.pluginMap.clear();for(let a of this.plugins)a.update(this);this.docView=new DocView(this),this.inputState.ensureHandlers(this),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}s&&this.focus(),this.requestMeasure()}updatePlugins(e){let s=e.startState.facet(viewPlugin),a=e.state.facet(viewPlugin);if(s!=a){let c=[];for(let d of a){let _=s.indexOf(d);if(_<0)c.push(new PluginInstance(d));else{let b=this.plugins[_];b.mustUpdate=e,c.push(b)}}for(let d of this.plugins)d.mustUpdate!=e&&d.destroy(this);this.plugins=c,this.pluginMap.clear(),this.inputState.ensureHandlers(this)}else for(let c of this.plugins)c.mustUpdate=e;for(let c=0;c-1&&cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,e&&this.observer.flush();let s=null;try{for(let a=0;;a++){this.updateState=1;let c=this.viewport,d=this.viewState.measure(this);if(!d&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(a>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let _=[];d&4||([this.measureRequests,_]=[_,this.measureRequests]);let b=_.map(_e=>{try{return _e.read(this)}catch(et){return logException(this.state,et),BadMeasure}}),k=new ViewUpdate(this,this.state),$=!1,j=!1;k.flags|=d,s?s.flags|=d:s=k,this.updateState=2,k.empty||(this.updatePlugins(k),this.inputState.update(k),this.updateAttrs(),$=this.docView.update(k));for(let _e=0;_e<_.length;_e++)if(b[_e]!=BadMeasure)try{let et=_[_e];et.write&&et.write(b[_e],this)}catch(et){logException(this.state,et)}if(this.viewState.scrollTarget&&(this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,j=!0),$&&this.docView.updateSelection(!0),this.viewport.from==c.from&&this.viewport.to==c.to&&!j&&this.measureRequests.length==0)break}}finally{this.updateState=0,this.measureScheduled=-1}if(s&&!s.empty)for(let a of this.state.facet(updateListener))a(s)}get themeClasses(){return baseThemeID+" "+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+" "+this.state.facet(theme)}updateAttrs(){let e=attrsFromFacet(this,editorAttributes,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),s={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(editable)?"true":"false",class:"cm-content",style:`${browser.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(s["aria-readonly"]="true"),attrsFromFacet(this,contentAttributes,s),this.observer.ignore(()=>{updateAttrs(this.contentDOM,this.contentAttrs,s),updateAttrs(this.dom,this.editorAttrs,e)}),this.editorAttrs=e,this.contentAttrs=s}showAnnouncements(e){let s=!0;for(let a of e)for(let c of a.effects)if(c.is(EditorView.announce)){s&&(this.announceDOM.textContent=""),s=!1;let d=this.announceDOM.appendChild(document.createElement("div"));d.textContent=c.value}}mountStyles(){this.styleModules=this.state.facet(styleModule),StyleModule.mount(this.root,this.styleModules.concat(baseTheme$8).reverse())}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=requestAnimationFrame(()=>this.measure())),e){if(e.key!=null){for(let s=0;sa.spec==e)||null),s&&s.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}blockAtHeight(e,s){let a=ensureTop(s,this);return this.elementAtHeight(e-a).moveY(a)}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}visualLineAtHeight(e,s){let a=ensureTop(s,this);return this.lineBlockAtHeight(e-a).moveY(a)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}viewportLines(e,s){let a=ensureTop(s,this);for(let c of this.viewportLineBlocks)e(c.moveY(a))}get viewportLineBlocks(){return this.viewState.viewportLines}visualLineAt(e,s=0){return this.lineBlockAt(e).moveY(s+this.viewState.paddingTop)}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,s,a){return skipAtoms(this,e,moveByChar(this,e,s,a))}moveByGroup(e,s){return skipAtoms(this,e,moveByChar(this,e,s,a=>byGroup(this,e.head,a)))}moveToLineBoundary(e,s,a=!0){return moveToLineBoundary(this,e,s,a)}moveVertically(e,s,a){return skipAtoms(this,e,moveVertically(this,e,s,a))}scrollPosIntoView(e){this.dispatch({effects:scrollTo.of(EditorSelection.cursor(e))})}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,s=0){return this.docView.posFromDOM(e,s)}posAtCoords(e,s=!0){return this.readMeasured(),posAtCoords(this,e,s)}coordsAtPos(e,s=1){this.readMeasured();let a=this.docView.coordsAt(e,s);if(!a||a.left==a.right)return a;let c=this.state.doc.lineAt(e),d=this.bidiSpans(c),_=d[BidiSpan.find(d,e-c.from,-1,s)];return flattenRect(a,_.dir==Direction.LTR==s>0)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.heightOracle.direction}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>MaxBidiLine)return trivialOrder(e.length);let s=this.textDirection;for(let c of this.bidiCache)if(c.from==e.from&&c.dir==s)return c.order;let a=computeOrder(e.text,this.textDirection);return this.bidiCache.push(new CachedOrder(e.from,e.to,s,a)),a}get hasFocus(){var e;return(document.hasFocus()||browser.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()})}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,s={}){return scrollIntoView$1.of(new ScrollTarget(typeof e=="number"?EditorSelection.cursor(e):e,s.y,s.x,s.yMargin,s.xMargin))}static domEventHandlers(e){return ViewPlugin.define(()=>({}),{eventHandlers:e})}static theme(e,s){let a=StyleModule.newName(),c=[theme.of(a),styleModule.of(buildTheme(`.${a}`,e))];return s&&s.dark&&c.push(darkTheme.of(!0)),c}static baseTheme(e){return Prec.lowest(styleModule.of(buildTheme("."+baseThemeID,e,lightDarkIDs)))}}EditorView.scrollTo=scrollTo;EditorView.centerOn=centerOn;EditorView.styleModule=styleModule;EditorView.inputHandler=inputHandler$1;EditorView.exceptionSink=exceptionSink;EditorView.updateListener=updateListener;EditorView.editable=editable;EditorView.mouseSelectionStyle=mouseSelectionStyle;EditorView.dragMovesSelection=dragMovesSelection$1;EditorView.clickAddsSelectionRange=clickAddsSelectionRange;EditorView.decorations=decorations;EditorView.darkTheme=darkTheme;EditorView.contentAttributes=contentAttributes;EditorView.editorAttributes=editorAttributes;EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"});EditorView.announce=StateEffect.define();const MaxBidiLine=4096;function ensureTop(o,e){return(o==null?e.contentDOM.getBoundingClientRect().top:o)+e.viewState.paddingTop}const BadMeasure={};class CachedOrder{constructor(e,s,a,c){this.from=e,this.to=s,this.dir=a,this.order=c}static update(e,s){if(s.empty)return e;let a=[],c=e.length?e[e.length-1].dir:Direction.LTR;for(let d=Math.max(0,e.length-10);d=0;c--){let d=a[c],_=typeof d=="function"?d(o):d;_&&combineAttrs(_,s)}return s}const currentPlatform=browser.mac?"mac":browser.windows?"win":browser.linux?"linux":"key";function normalizeKeyName(o,e){const s=o.split(/-(?!$)/);let a=s[s.length-1];a=="Space"&&(a=" ");let c,d,_,b;for(let k=0;ka.concat(c),[]))),s}function runScopeHandlers(o,e,s){return runHandlers(getKeymap(o.state),e,o,s)}let storedPrefix=null;const PrefixTimeout=4e3;function buildKeymap(o,e=currentPlatform){let s=Object.create(null),a=Object.create(null),c=(_,b)=>{let k=a[_];if(k==null)a[_]=b;else if(k!=b)throw new Error("Key binding "+_+" is used both as a regular binding and as a multi-stroke prefix")},d=(_,b,k,$)=>{let j=s[_]||(s[_]=Object.create(null)),_e=b.split(/ (?!$)/).map(nt=>normalizeKeyName(nt,e));for(let nt=1;nt<_e.length;nt++){let it=_e.slice(0,nt).join(" ");c(it,!0),j[it]||(j[it]={preventDefault:!0,commands:[rt=>{let st=storedPrefix={view:rt,prefix:it,scope:_};return setTimeout(()=>{storedPrefix==st&&(storedPrefix=null)},PrefixTimeout),!0}]})}let et=_e.join(" ");c(et,!1);let tt=j[et]||(j[et]={preventDefault:!1,commands:[]});tt.commands.push(k),$&&(tt.preventDefault=!0)};for(let _ of o){let b=_[e]||_.key;if(!!b)for(let k of _.scope?_.scope.split(" "):["editor"])d(k,b,_.run,_.preventDefault),_.shift&&d(k,"Shift-"+b,_.shift,_.preventDefault)}return s}function runHandlers(o,e,s,a){let c=keyName(e),d=c.length==1&&c!=" ",_="",b=!1;storedPrefix&&storedPrefix.view==s&&storedPrefix.scope==a&&(_=storedPrefix.prefix+" ",(b=modifierCodes.indexOf(e.keyCode)<0)&&(storedPrefix=null));let k=_e=>{if(_e){for(let et of _e.commands)if(et(s))return!0;_e.preventDefault&&(b=!0)}return!1},$=o[a],j;if($){if(k($[_+modifiers(c,e,!d)]))return!0;if(d&&(e.shiftKey||e.altKey||e.metaKey)&&(j=base[e.keyCode])&&j!=c){if(k($[_+modifiers(j,e,!0)]))return!0}else if(d&&e.shiftKey&&k($[_+modifiers(c,e,!0)]))return!0}return b}const CanHidePrimary=!browser.ios,selectionConfig=Facet.define({combine(o){return combineConfig(o,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,s)=>Math.min(e,s),drawRangeCursor:(e,s)=>e||s})}});function drawSelection(o={}){return[selectionConfig.of(o),drawSelectionPlugin,hideNativeSelection]}class Piece{constructor(e,s,a,c,d){this.left=e,this.top=s,this.width=a,this.height=c,this.className=d}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width>=0&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}}const drawSelectionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.rangePieces=[],this.cursors=[],this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.selectionLayer=o.scrollDOM.appendChild(document.createElement("div")),this.selectionLayer.className="cm-selectionLayer",this.selectionLayer.setAttribute("aria-hidden","true"),this.cursorLayer=o.scrollDOM.appendChild(document.createElement("div")),this.cursorLayer.className="cm-cursorLayer",this.cursorLayer.setAttribute("aria-hidden","true"),o.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){this.cursorLayer.style.animationDuration=this.view.state.facet(selectionConfig).cursorBlinkRate+"ms"}update(o){let e=o.startState.facet(selectionConfig)!=o.state.facet(selectionConfig);(e||o.selectionSet||o.geometryChanged||o.viewportChanged)&&this.view.requestMeasure(this.measureReq),o.transactions.some(s=>s.scrollIntoView)&&(this.cursorLayer.style.animationName=this.cursorLayer.style.animationName=="cm-blink"?"cm-blink2":"cm-blink"),e&&this.setBlinkRate()}readPos(){let{state:o}=this.view,e=o.facet(selectionConfig),s=o.selection.ranges.map(c=>c.empty?[]:measureRange(this.view,c)).reduce((c,d)=>c.concat(d)),a=[];for(let c of o.selection.ranges){let d=c==o.selection.main;if(c.empty?!d||CanHidePrimary:e.drawRangeCursor){let _=measureCursor(this.view,c,d);_&&a.push(_)}}return{rangePieces:s,cursors:a}}drawSel({rangePieces:o,cursors:e}){if(o.length!=this.rangePieces.length||o.some((s,a)=>!s.eq(this.rangePieces[a]))){this.selectionLayer.textContent="";for(let s of o)this.selectionLayer.appendChild(s.draw());this.rangePieces=o}if(e.length!=this.cursors.length||e.some((s,a)=>!s.eq(this.cursors[a]))){let s=this.cursorLayer.children;if(s.length!==e.length){this.cursorLayer.textContent="";for(const a of e)this.cursorLayer.appendChild(a.draw())}else e.forEach((a,c)=>a.adjust(s[c]));this.cursors=e}}destroy(){this.selectionLayer.remove(),this.cursorLayer.remove()}}),themeSpec={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};CanHidePrimary&&(themeSpec[".cm-line"].caretColor="transparent !important");const hideNativeSelection=Prec.highest(EditorView.theme(themeSpec));function getBase(o){let e=o.scrollDOM.getBoundingClientRect();return{left:(o.textDirection==Direction.LTR?e.left:e.right-o.scrollDOM.clientWidth)-o.scrollDOM.scrollLeft,top:e.top-o.scrollDOM.scrollTop}}function wrappedLine(o,e,s){let a=EditorSelection.cursor(e);return{from:Math.max(s.from,o.moveToLineBoundary(a,!1,!0).from),to:Math.min(s.to,o.moveToLineBoundary(a,!0,!0).from),type:BlockType.Text}}function blockAt(o,e){let s=o.lineBlockAt(e);if(Array.isArray(s.type)){for(let a of s.type)if(a.to>e||a.to==e&&(a.to==s.to||a.type==BlockType.Text))return a}return s}function measureRange(o,e){if(e.to<=o.viewport.from||e.from>=o.viewport.to)return[];let s=Math.max(e.from,o.viewport.from),a=Math.min(e.to,o.viewport.to),c=o.textDirection==Direction.LTR,d=o.contentDOM,_=d.getBoundingClientRect(),b=getBase(o),k=window.getComputedStyle(d.firstChild),$=_.left+parseInt(k.paddingLeft)+Math.min(0,parseInt(k.textIndent)),j=_.right-parseInt(k.paddingRight),_e=blockAt(o,s),et=blockAt(o,a),tt=_e.type==BlockType.Text?_e:null,nt=et.type==BlockType.Text?et:null;if(o.lineWrapping&&(tt&&(tt=wrappedLine(o,s,tt)),nt&&(nt=wrappedLine(o,a,nt))),tt&&nt&&tt.from==nt.from)return rt(st(e.from,e.to,tt));{let lt=tt?st(e.from,null,tt):at(_e,!1),dt=nt?st(null,e.to,nt):at(et,!0),ct=[];return(tt||_e).to<(nt||et).from-1?ct.push(it($,lt.bottom,j,dt.top)):lt.bottomEt&&ft.from=yt)break;Tt>mt&&pt(Math.max(St,mt),lt==null&&St<=Et,Math.min(Tt,yt),dt==null&&Tt>=gt,vt.dir)}if(mt=At.to+1,mt>=yt)break}return ht.length==0&&pt(Et,lt==null,gt,dt==null,o.textDirection),{top:ut,bottom:ot,horizontal:ht}}function at(lt,dt){let ct=_.top+(dt?lt.top:lt.bottom);return{top:ct,bottom:ct,horizontal:[]}}}function measureCursor(o,e,s){let a=o.coordsAtPos(e.head,e.assoc||1);if(!a)return null;let c=getBase(o);return new Piece(a.left-c.left,a.top-c.top,-1,a.bottom-a.top,s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary")}function iterMatches(o,e,s,a,c){e.lastIndex=0;for(let d=o.iterRange(s,a),_=s,b;!d.next().done;_+=d.value.length)if(!d.lineBreak)for(;b=e.exec(d.value);)c(_+b.index,_+b.index+b[0].length,b)}function matchRanges(o,e){let s=o.visibleRanges;if(s.length==1&&s[0].from==o.viewport.from&&s[0].to==o.viewport.to)return s;let a=[];for(let{from:c,to:d}of s)c=Math.max(o.state.doc.lineAt(c).from,c-e),d=Math.min(o.state.doc.lineAt(d).to,d+e),a.length&&a[a.length-1].to>=c?a[a.length-1].to=d:a.push({from:c,to:d});return a}class MatchDecorator{constructor(e){let{regexp:s,decoration:a,boundary:c,maxLength:d=1e3}=e;if(!s.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");this.regexp=s,this.getDeco=typeof a=="function"?a:()=>a,this.boundary=c,this.maxLength=d}createDeco(e){let s=new RangeSetBuilder;for(let{from:a,to:c}of matchRanges(e,this.maxLength))iterMatches(e.state.doc,this.regexp,a,c,(d,_,b)=>s.add(d,_,this.getDeco(b,e,d)));return s.finish()}updateDeco(e,s){let a=1e9,c=-1;return e.docChanged&&e.changes.iterChanges((d,_,b,k)=>{k>e.view.viewport.from&&b1e3?this.createDeco(e.view):c>-1?this.updateRange(e.view,s.map(e.changes),a,c):s}updateRange(e,s,a,c){for(let d of e.visibleRanges){let _=Math.max(d.from,a),b=Math.min(d.to,c);if(b>_){let k=e.state.doc.lineAt(_),$=k.tok.from;_--)if(this.boundary.test(k.text[_-1-k.from])){j=_;break}for(;b<$.to;b++)if(this.boundary.test($.text[b-$.from])){_e=b;break}}let et=[],tt;if(k==$)for(this.regexp.lastIndex=j-k.from;(tt=this.regexp.exec(k.text))&&tt.index<_e-k.from;){let nt=tt.index+k.from;et.push(this.getDeco(tt,e,nt).range(nt,nt+tt[0].length))}else iterMatches(e.state.doc,this.regexp,j,_e,(nt,it,rt)=>et.push(this.getDeco(rt,e,nt).range(nt,it)));s=s.update({filterFrom:j,filterTo:_e,filter:(nt,it)=>nt_e,add:et})}}return s}}const UnicodeRegexpSupport=/x/.unicode!=null?"gu":"g",Specials=new RegExp(`[\0-\b --\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\uFEFF\uFFF9-\uFFFC]`,UnicodeRegexpSupport),Names={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let _supportsTabSize=null;function supportsTabSize(){var o;if(_supportsTabSize==null&&typeof document!="undefined"&&document.body){let e=document.body.style;_supportsTabSize=((o=e.tabSize)!==null&&o!==void 0?o:e.MozTabSize)!=null}return _supportsTabSize||!1}const specialCharConfig=Facet.define({combine(o){let e=combineConfig(o,{render:null,specialChars:Specials,addSpecialChars:null});return(e.replaceTabs=!supportsTabSize())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,UnicodeRegexpSupport)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,UnicodeRegexpSupport)),e}});function highlightSpecialChars(o={}){return[specialCharConfig.of(o),specialCharPlugin()]}let _plugin=null;function specialCharPlugin(){return _plugin||(_plugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=Decoration.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(o.state.facet(specialCharConfig)),this.decorations=this.decorator.createDeco(o)}makeDecorator(o){return new MatchDecorator({regexp:o.specialChars,decoration:(e,s,a)=>{let{doc:c}=s.state,d=codePointAt(e[0],0);if(d==9){let _=c.lineAt(a),b=s.state.tabSize,k=countColumn(_.text,b,a-_.from);return Decoration.replace({widget:new TabWidget((b-k%b)*this.view.defaultCharacterWidth)})}return this.decorationCache[d]||(this.decorationCache[d]=Decoration.replace({widget:new SpecialCharWidget(o,d)}))},boundary:o.replaceTabs?void 0:/[^]/})}update(o){let e=o.state.facet(specialCharConfig);o.startState.facet(specialCharConfig)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(o.view)):this.decorations=this.decorator.updateDeco(o,this.decorations)}},{decorations:o=>o.decorations}))}const DefaultPlaceholder="\u2022";function placeholder$1(o){return o>=32?DefaultPlaceholder:o==10?"\u2424":String.fromCharCode(9216+o)}class SpecialCharWidget extends WidgetType{constructor(e,s){super(),this.options=e,this.code=s}eq(e){return e.code==this.code}toDOM(e){let s=placeholder$1(this.code),a=e.state.phrase("Control character")+" "+(Names[this.code]||"0x"+this.code.toString(16)),c=this.options.render&&this.options.render(this.code,a,s);if(c)return c;let d=document.createElement("span");return d.textContent=s,d.title=a,d.setAttribute("aria-label",a),d.className="cm-specialChar",d}ignoreEvent(){return!1}}class TabWidget extends WidgetType{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function highlightActiveLine(){return activeLineHighlighter}const lineDeco=Decoration.line({class:"cm-activeLine"}),activeLineHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.docChanged||o.selectionSet)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=-1,s=[];for(let a of o.state.selection.ranges){if(!a.empty)return Decoration.none;let c=o.lineBlockAt(a.head);c.from>e&&(s.push(lineDeco.range(c.from)),e=c.from)}return Decoration.set(s)}},{decorations:o=>o.decorations}),fromHistory=Annotation.define(),isolateHistory=Annotation.define(),invertedEffects=Facet.define(),historyConfig=Facet.define({combine(o){return combineConfig(o,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})}});function changeEnd(o){let e=0;return o.iterChangedRanges((s,a)=>e=a),e}const historyField_=StateField.define({create(){return HistoryState.empty},update(o,e){let s=e.state.facet(historyConfig),a=e.annotation(fromHistory);if(a){let k=e.docChanged?EditorSelection.single(changeEnd(e.changes)):void 0,$=HistEvent.fromTransaction(e,k),j=a.side,_e=j==0?o.undone:o.done;return $?_e=updateBranch(_e,_e.length,s.minDepth,$):_e=addSelection(_e,e.startState.selection),new HistoryState(j==0?a.rest:_e,j==0?_e:a.rest)}let c=e.annotation(isolateHistory);if((c=="full"||c=="before")&&(o=o.isolate()),e.annotation(Transaction.addToHistory)===!1)return e.changes.empty?o:o.addMapping(e.changes.desc);let d=HistEvent.fromTransaction(e),_=e.annotation(Transaction.time),b=e.annotation(Transaction.userEvent);return d?o=o.addChanges(d,_,b,s.newGroupDelay,s.minDepth):e.selection&&(o=o.addSelection(e.startState.selection,_,b,s.newGroupDelay)),(c=="full"||c=="after")&&(o=o.isolate()),o},toJSON(o){return{done:o.done.map(e=>e.toJSON()),undone:o.undone.map(e=>e.toJSON())}},fromJSON(o){return new HistoryState(o.done.map(HistEvent.fromJSON),o.undone.map(HistEvent.fromJSON))}});function history(o={}){return[historyField_,historyConfig.of(o),EditorView.domEventHandlers({beforeinput(e,s){let a=e.inputType=="historyUndo"?undo:e.inputType=="historyRedo"?redo:null;return a?(e.preventDefault(),a(s)):!1}})]}function cmd(o,e){return function({state:s,dispatch:a}){if(!e&&s.readOnly)return!1;let c=s.field(historyField_,!1);if(!c)return!1;let d=c.pop(o,s,e);return d?(a(d),!0):!1}}const undo=cmd(0,!1),redo=cmd(1,!1),undoSelection=cmd(0,!0),redoSelection=cmd(1,!0);class HistEvent{constructor(e,s,a,c,d){this.changes=e,this.effects=s,this.mapped=a,this.startSelection=c,this.selectionsAfter=d}setSelAfter(e){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,s,a;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(s=this.mapped)===null||s===void 0?void 0:s.toJSON(),startSelection:(a=this.startSelection)===null||a===void 0?void 0:a.toJSON(),selectionsAfter:this.selectionsAfter.map(c=>c.toJSON())}}static fromJSON(e){return new HistEvent(e.changes&&ChangeSet.fromJSON(e.changes),[],e.mapped&&ChangeDesc.fromJSON(e.mapped),e.startSelection&&EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(EditorSelection.fromJSON))}static fromTransaction(e,s){let a=none$1;for(let c of e.startState.facet(invertedEffects)){let d=c(e);d.length&&(a=a.concat(d))}return!a.length&&e.changes.empty?null:new HistEvent(e.changes.invert(e.startState.doc),a,void 0,s||e.startState.selection,none$1)}static selection(e){return new HistEvent(void 0,none$1,void 0,void 0,e)}}function updateBranch(o,e,s,a){let c=e+1>s+20?e-s-1:0,d=o.slice(c,e);return d.push(a),d}function isAdjacent(o,e){let s=[],a=!1;return o.iterChangedRanges((c,d)=>s.push(c,d)),e.iterChangedRanges((c,d,_,b)=>{for(let k=0;k=$&&_<=j&&(a=!0)}}),a}function eqSelectionShape(o,e){return o.ranges.length==e.ranges.length&&o.ranges.filter((s,a)=>s.empty!=e.ranges[a].empty).length===0}function conc(o,e){return o.length?e.length?o.concat(e):o:e}const none$1=[],MaxSelectionsPerEvent=200;function addSelection(o,e){if(o.length){let s=o[o.length-1],a=s.selectionsAfter.slice(Math.max(0,s.selectionsAfter.length-MaxSelectionsPerEvent));return a.length&&a[a.length-1].eq(e)?o:(a.push(e),updateBranch(o,o.length-1,1e9,s.setSelAfter(a)))}else return[HistEvent.selection([e])]}function popSelection(o){let e=o[o.length-1],s=o.slice();return s[o.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),s}function addMappingToBranch(o,e){if(!o.length)return o;let s=o.length,a=none$1;for(;s;){let c=mapEvent(o[s-1],e,a);if(c.changes&&!c.changes.empty||c.effects.length){let d=o.slice(0,s);return d[s-1]=c,d}else e=c.mapped,s--,a=c.selectionsAfter}return a.length?[HistEvent.selection(a)]:none$1}function mapEvent(o,e,s){let a=conc(o.selectionsAfter.length?o.selectionsAfter.map(b=>b.map(e)):none$1,s);if(!o.changes)return HistEvent.selection(a);let c=o.changes.map(e),d=e.mapDesc(o.changes,!0),_=o.mapped?o.mapped.composeDesc(d):d;return new HistEvent(c,StateEffect.mapEffects(o.effects,e),_,o.startSelection.map(d),a)}const joinableUserEvent=/^(input\.type|delete)($|\.)/;class HistoryState{constructor(e,s,a=0,c=void 0){this.done=e,this.undone=s,this.prevTime=a,this.prevUserEvent=c}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this}addChanges(e,s,a,c,d){let _=this.done,b=_[_.length-1];return b&&b.changes&&!b.changes.empty&&e.changes&&(!a||joinableUserEvent.test(a))&&(!b.selectionsAfter.length&&s-this.prevTime0&&s-this.prevTime{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=NodeType.match(e)),s=>{let a=e(s);return a===void 0?null:[this,a]}}}NodeProp.closedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.openedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.group=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.contextHash=new NodeProp({perNode:!0});NodeProp.lookAhead=new NodeProp({perNode:!0});NodeProp.mounted=new NodeProp({perNode:!0});const noProps=Object.create(null);class NodeType{constructor(e,s,a,c=0){this.name=e,this.props=s,this.id=a,this.flags=c}static define(e){let s=e.props&&e.props.length?Object.create(null):noProps,a=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),c=new NodeType(e.name||"",s,e.id,a);if(e.props){for(let d of e.props)if(Array.isArray(d)||(d=d(c)),d){if(d[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");s[d[0].id]=d[1]}}return c}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let s=this.prop(NodeProp.group);return s?s.indexOf(e)>-1:!1}return this.id==e}static match(e){let s=Object.create(null);for(let a in e)for(let c of a.split(" "))s[c]=e[a];return a=>{for(let c=a.prop(NodeProp.group),d=-1;d<(c?c.length:0);d++){let _=s[d<0?a.name:c[d]];if(_)return _}}}}NodeType.none=new NodeType("",Object.create(null),0,8);class NodeSet{constructor(e){this.types=e;for(let s=0;s_.node;;){let k=!1;if(_.from<=d&&_.to>=c&&(_.type.isAnonymous||s(_.type,_.from,_.to,b)!==!1)){if(_.firstChild())continue;_.type.isAnonymous||(k=!0)}for(;k&&a&&a(_.type,_.from,_.to,b),k=_.type.isAnonymous,!_.nextSibling();){if(!_.parent())return;k=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let s in this.props)e.push([+s,this.props[s]]);return e}balance(e={}){return this.children.length<=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(s,a,c)=>new Tree(this.type,s,a,c,this.propValues),e.makeTree||((s,a,c)=>new Tree(NodeType.none,s,a,c)))}static build(e){return buildTree(e)}}Tree.empty=new Tree(NodeType.none,[],[],0);class FlatBufferCursor{constructor(e,s){this.buffer=e,this.index=s}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}}class TreeBuffer{constructor(e,s,a){this.buffer=e,this.length=s,this.set=a}get type(){return NodeType.none}toString(){let e=[];for(let s=0;s0));k=_[k+3]);return b}slice(e,s,a,c){let d=this.buffer,_=new Uint16Array(s-e);for(let b=e,k=0;b=e&&se;case 1:return s<=e&&a>e;case 2:return a>e;case 4:return!0}}function enterUnfinishedNodesBefore(o,e){let s=o.childBefore(e);for(;s;){let a=s.lastChild;if(!a||a.to!=s.to)break;a.type.isError&&a.from==a.to?(o=s,s=a.prevSibling):s=a}return o}function resolveNode(o,e,s,a){for(var c;o.from==o.to||(s<1?o.from>=e:o.from>e)||(s>-1?o.to<=e:o.to0?b.length:-1;e!=$;e+=s){let j=b[e],_e=k[e]+_._from;if(!!checkSide(c,a,_e,_e+j.length)){if(j instanceof TreeBuffer){if(d&2)continue;let et=j.findChild(0,j.buffer.length,s,a-_e,c);if(et>-1)return new BufferNode(new BufferContext(_,j,e,_e),null,et)}else if(d&1||!j.type.isAnonymous||hasChild(j)){let et;if(!(d&1)&&j.props&&(et=j.prop(NodeProp.mounted))&&!et.overlay)return new TreeNode(et.tree,_e,e,_);let tt=new TreeNode(j,_e,e,_);return d&1||!tt.type.isAnonymous?tt:tt.nextChild(s<0?j.children.length-1:0,s,a,c)}}}if(d&1||!_.type.isAnonymous||(_.index>=0?e=_.index+s:e=s<0?-1:_._parent.node.children.length,_=_._parent,!_))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this.node.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this.node.children.length-1,-1,e,-2)}enter(e,s,a=!0,c=!0){let d;if(a&&(d=this.node.prop(NodeProp.mounted))&&d.overlay){let _=e-this.from;for(let{from:b,to:k}of d.overlay)if((s>0?b<=_:b<_)&&(s<0?k>=_:k>_))return new TreeNode(d.tree,d.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,s,c?0:2)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get cursor(){return new TreeCursor(this)}get tree(){return this.node}toTree(){return this.node}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}toString(){return this.node.toString()}}function getChildren(o,e,s,a){let c=o.cursor,d=[];if(!c.firstChild())return d;if(s!=null){for(;!c.type.is(s);)if(!c.nextSibling())return d}for(;;){if(a!=null&&c.type.is(a))return d;if(c.type.is(e)&&d.push(c.node),!c.nextSibling())return a==null?d:[]}}class BufferContext{constructor(e,s,a,c){this.parent=e,this.buffer=s,this.index=a,this.start=c}}class BufferNode{constructor(e,s,a){this.context=e,this._parent=s,this.index=a,this.type=e.buffer.set.types[e.buffer.buffer[a]]}get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}child(e,s,a){let{buffer:c}=this.context,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.context.start,a);return d<0?null:new BufferNode(this.context,this,d)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,s,a,c=!0){if(!c)return null;let{buffer:d}=this.context,_=d.findChild(this.index+4,d.buffer[this.index+3],s>0?1:-1,e-this.context.start,s);return _<0?null:new BufferNode(this.context,this,_)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,s=e.buffer[this.index+3];return s<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new BufferNode(this.context,this._parent,s):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,s=this._parent?this._parent.index+4:0;return this.index==s?this.externalSibling(-1):new BufferNode(this.context,this._parent,e.findChild(s,this.index,-1,0,4))}get cursor(){return new TreeCursor(this)}get tree(){return null}toTree(){let e=[],s=[],{buffer:a}=this.context,c=this.index+4,d=a.buffer[this.index+3];if(d>c){let _=a.buffer[this.index+1],b=a.buffer[this.index+2];e.push(a.slice(c,d,_,b)),s.push(0)}return new Tree(this.type,e,s,this.to-this.from)}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}}class TreeCursor{constructor(e,s=0){if(this.mode=s,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof TreeNode)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let a=e._parent;a;a=a._parent)this.stack.unshift(a.index);this.bufferNode=e,this.yieldBuf(e.index)}}get name(){return this.type.name}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,s){this.index=e;let{start:a,buffer:c}=this.buffer;return this.type=s||c.set.types[c.buffer[e]],this.from=a+c.buffer[e+1],this.to=a+c.buffer[e+2],!0}yield(e){return e?e instanceof TreeNode?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,s,a){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree.node.children.length-1:0,e,s,a,this.mode));let{buffer:c}=this.buffer,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.buffer.start,a);return d<0?!1:(this.stack.push(this.index),this.yieldBuf(d))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,s,a=!0,c=!0){return this.buffer?c?this.enterChild(1,e,s):!1:this.yield(this._tree.enter(e,s,a&&!(this.mode&1),c))}parent(){if(!this.buffer)return this.yieldNode(this.mode&1?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&1?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:s}=this.buffer,a=this.stack.length-1;if(e<0){let c=a<0?0:this.stack[a]+4;if(this.index!=c)return this.yieldBuf(s.findChild(c,this.index,-1,0,4))}else{let c=s.buffer[this.index+3];if(c<(a<0?s.buffer.length:s.buffer[this.stack[a]+3]))return this.yieldBuf(c)}return a<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let s,a,{buffer:c}=this;if(c){if(e>0){if(this.index-1)for(let d=s+e,_=e<0?-1:a.node.children.length;d!=_;d+=e){let b=a.node.children[d];if(this.mode&1||b instanceof TreeBuffer||!b.type.isAnonymous||hasChild(b))return!1}return!0}move(e,s){if(s&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,s=0){for(;(this.from==this.to||(s<1?this.from>=e:this.from>e)||(s>-1?this.to<=e:this.to=0;){for(let _=e;_;_=_._parent)if(_.index==c){if(c==this.index)return _;s=_,a=d+1;break e}c=this.stack[--d]}}for(let c=a;ce instanceof TreeBuffer||!e.type.isAnonymous||hasChild(e))}function buildTree(o){var e;let{buffer:s,nodeSet:a,maxBufferLength:c=DefaultBufferLength,reused:d=[],minRepeatType:_=a.types.length}=o,b=Array.isArray(s)?new FlatBufferCursor(s,s.length):s,k=a.types,$=0,j=0;function _e(dt,ct,ut,ot,ht){let{id:pt,start:Et,end:gt,size:ft}=b,mt=j;for(;ft<0;)if(b.next(),ft==-1){let Tt=d[pt];ut.push(Tt),ot.push(Et-dt);return}else if(ft==-3){$=pt;return}else if(ft==-4){j=pt;return}else throw new RangeError(`Unrecognized record size: ${ft}`);let yt=k[pt],At,vt,St=Et-dt;if(gt-Et<=c&&(vt=it(b.pos-ct,ht))){let Tt=new Uint16Array(vt.size-vt.skip),Dt=b.pos-vt.size,xt=Tt.length;for(;b.pos>Dt;)xt=rt(vt.start,Tt,xt);At=new TreeBuffer(Tt,gt-vt.start,a),St=vt.start-dt}else{let Tt=b.pos-ft;b.next();let Dt=[],xt=[],Ct=pt>=_?pt:-1,bt=0,$t=gt;for(;b.pos>Tt;)Ct>=0&&b.id==Ct&&b.size>=0?(b.end<=$t-c&&(tt(Dt,xt,Et,bt,b.end,$t,Ct,mt),bt=Dt.length,$t=b.end),b.next()):_e(Et,Tt,Dt,xt,Ct);if(Ct>=0&&bt>0&&bt-1&&bt>0){let It=et(yt);At=balanceRange(yt,Dt,xt,0,Dt.length,0,gt-Et,It,It)}else At=nt(yt,Dt,xt,gt-Et,mt-gt)}ut.push(At),ot.push(St)}function et(dt){return(ct,ut,ot)=>{let ht=0,pt=ct.length-1,Et,gt;if(pt>=0&&(Et=ct[pt])instanceof Tree){if(!pt&&Et.type==dt&&Et.length==ot)return Et;(gt=Et.prop(NodeProp.lookAhead))&&(ht=ut[pt]+Et.length+gt)}return nt(dt,ct,ut,ot,ht)}}function tt(dt,ct,ut,ot,ht,pt,Et,gt){let ft=[],mt=[];for(;dt.length>ot;)ft.push(dt.pop()),mt.push(ct.pop()+ut-ht);dt.push(nt(a.types[Et],ft,mt,pt-ht,gt-pt)),ct.push(ht-ut)}function nt(dt,ct,ut,ot,ht=0,pt){if($){let Et=[NodeProp.contextHash,$];pt=pt?[Et].concat(pt):[Et]}if(ht>25){let Et=[NodeProp.lookAhead,ht];pt=pt?[Et].concat(pt):[Et]}return new Tree(dt,ct,ut,ot,pt)}function it(dt,ct){let ut=b.fork(),ot=0,ht=0,pt=0,Et=ut.end-c,gt={size:0,start:0,skip:0};e:for(let ft=ut.pos-dt;ut.pos>ft;){let mt=ut.size;if(ut.id==ct&&mt>=0){gt.size=ot,gt.start=ht,gt.skip=pt,pt+=4,ot+=4,ut.next();continue}let yt=ut.pos-mt;if(mt<0||yt=_?4:0,vt=ut.start;for(ut.next();ut.pos>yt;){if(ut.size<0)if(ut.size==-3)At+=4;else break e;else ut.id>=_&&(At+=4);ut.next()}ht=vt,ot+=mt,pt+=At}return(ct<0||ot==dt)&&(gt.size=ot,gt.start=ht,gt.skip=pt),gt.size>4?gt:void 0}function rt(dt,ct,ut){let{id:ot,start:ht,end:pt,size:Et}=b;if(b.next(),Et>=0&&ot<_){let gt=ut;if(Et>4){let ft=b.pos-(Et-4);for(;b.pos>ft;)ut=rt(dt,ct,ut)}ct[--ut]=gt,ct[--ut]=pt-dt,ct[--ut]=ht-dt,ct[--ut]=ot}else Et==-3?$=ot:Et==-4&&(j=ot);return ut}let st=[],at=[];for(;b.pos>0;)_e(o.start||0,o.bufferStart||0,st,at,-1);let lt=(e=o.length)!==null&&e!==void 0?e:st.length?at[0]+st[0].length:0;return new Tree(k[o.topID],st.reverse(),at.reverse(),lt)}const nodeSizeCache=new WeakMap;function nodeSize(o,e){if(!o.isAnonymous||e instanceof TreeBuffer||e.type!=o)return 1;let s=nodeSizeCache.get(e);if(s==null){s=1;for(let a of e.children){if(a.type!=o||!(a instanceof Tree)){s=1;break}s+=nodeSize(o,a)}nodeSizeCache.set(e,s)}return s}function balanceRange(o,e,s,a,c,d,_,b,k){let $=0;for(let nt=a;nt=j)break;ut+=ot}if(lt==dt+1){if(ut>j){let ot=nt[dt];tt(ot.children,ot.positions,0,ot.children.length,it[dt]+at);continue}_e.push(nt[dt])}else{let ot=it[lt-1]+nt[lt-1].length-ct;_e.push(balanceRange(o,nt,it,dt,lt,ct,ot,null,k))}et.push(ct+at-d)}}return tt(e,s,a,c,0),(b||k)(_e,et,_)}class TreeFragment{constructor(e,s,a,c,d=!1,_=!1){this.from=e,this.to=s,this.tree=a,this.offset=c,this.open=(d?1:0)|(_?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,s=[],a=!1){let c=[new TreeFragment(0,e.length,e,0,!1,a)];for(let d of s)d.to>e.length&&c.push(d);return c}static applyChanges(e,s,a=128){if(!s.length)return e;let c=[],d=1,_=e.length?e[0]:null;for(let b=0,k=0,$=0;;b++){let j=b=a)for(;_&&_.from<_e;){let et=_;if(k>=et.from||_e<=et.to||$){let tt=Math.max(et.from,k)-$,nt=Math.min(et.to,_e)-$;et=tt>=nt?null:new TreeFragment(tt,nt,et.tree,et.offset+$,b>0,!!j)}if(et&&c.push(et),_.to>_e)break;_=dnew Range(c.from,c.to)):[new Range(0,0)]:[new Range(0,e.length)],this.createParse(e,s||[],a)}parse(e,s,a){let c=this.startParse(e,s,a);for(;;){let d=c.advance();if(d)return d}}}class StringInput{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,s){return this.string.slice(e,s)}}new NodeProp({perNode:!0});var _a;const languageDataProp=new NodeProp;function defineLanguageFacet(o){return Facet.define({combine:o?e=>e.concat(o):void 0})}class Language{constructor(e,s,a,c=[]){this.data=e,this.topNode=a,EditorState.prototype.hasOwnProperty("tree")||Object.defineProperty(EditorState.prototype,"tree",{get(){return syntaxTree(this)}}),this.parser=s,this.extension=[language.of(this),EditorState.languageData.of((d,_,b)=>d.facet(languageDataFacetAt(d,_,b)))].concat(c)}isActiveAt(e,s,a=-1){return languageDataFacetAt(e,s,a)==this.data}findRegions(e){let s=e.facet(language);if((s==null?void 0:s.data)==this.data)return[{from:0,to:e.doc.length}];if(!s||!s.allowsNesting)return[];let a=[],c=(d,_)=>{if(d.prop(languageDataProp)==this.data){a.push({from:_,to:_+d.length});return}let b=d.prop(NodeProp.mounted);if(b){if(b.tree.prop(languageDataProp)==this.data){if(b.overlay)for(let k of b.overlay)a.push({from:k.from+_,to:k.to+_});else a.push({from:_,to:_+d.length});return}else if(b.overlay){let k=a.length;if(c(b.tree,b.overlay[0].from+_),a.length>k)return}}for(let k=0;ka.isTop?s:void 0)]}))}configure(e){return new LRLanguage(this.data,this.parser.configure(e))}get allowsNesting(){return this.parser.wrappers.length>0}}function syntaxTree(o){let e=o.field(Language.state,!1);return e?e.tree:Tree.empty}class DocInput{constructor(e,s=e.length){this.doc=e,this.length=s,this.cursorPos=0,this.string="",this.cursor=e.iter()}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,s){let a=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,s):this.string.slice(e-a,s-a)}}let currentContext=null;class ParseContext{constructor(e,s,a=[],c,d,_,b,k){this.parser=e,this.state=s,this.fragments=a,this.tree=c,this.treeLen=d,this.viewport=_,this.skipped=b,this.scheduleOn=k,this.parse=null,this.tempSkipped=[]}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(e,s){return s!=null&&s>=this.state.doc.length&&(s=void 0),this.tree!=Tree.empty&&this.isDone(s!=null?s:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var a;if(typeof e=="number"){let c=Date.now()+e;e=()=>Date.now()>c}for(this.parse||(this.parse=this.startParse()),s!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>s)&&s=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(s=this.parse.advance()););}),this.treeLen=e,this.tree=s,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let s=currentContext;currentContext=this;try{return e()}finally{currentContext=s}}withoutTempSkipped(e){for(let s;s=this.tempSkipped.pop();)e=cutFragments(e,s.from,s.to);return e}changes(e,s){let{fragments:a,tree:c,treeLen:d,viewport:_,skipped:b}=this;if(this.takeTree(),!e.empty){let k=[];if(e.iterChangedRanges(($,j,_e,et)=>k.push({fromA:$,toA:j,fromB:_e,toB:et})),a=TreeFragment.applyChanges(a,k),c=Tree.empty,d=0,_={from:e.mapPos(_.from,-1),to:e.mapPos(_.to,1)},this.skipped.length){b=[];for(let $ of this.skipped){let j=e.mapPos($.from,1),_e=e.mapPos($.to,-1);j<_e&&b.push({from:j,to:_e})}}}return new ParseContext(this.parser,s,a,c,d,_,b,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let s=this.skipped.length;for(let a=0;ae.from&&(this.fragments=cutFragments(this.fragments,c,d),this.skipped.splice(a--,1))}return this.skipped.length>=s?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,s){this.skipped.push({from:e,to:s})}static getSkippingParser(e){return new class extends Parser{createParse(s,a,c){let d=c[0].from,_=c[c.length-1].to;return{parsedPos:d,advance(){let k=currentContext;if(k){for(let $ of c)k.tempSkipped.push($);e&&(k.scheduleOn=k.scheduleOn?Promise.all([k.scheduleOn,e]):e)}return this.parsedPos=_,new Tree(NodeType.none,[],[],_-d)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let s=this.fragments;return this.treeLen>=e&&s.length&&s[0].from==0&&s[0].to>=e}static get(){return currentContext}}function cutFragments(o,e,s){return TreeFragment.applyChanges(o,[{fromA:e,toA:s,fromB:e,toB:s}])}class LanguageState{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let s=this.context.changes(e.changes,e.state),a=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),s.viewport.to);return s.work(20,a)||s.takeTree(),new LanguageState(s)}static init(e){let s=Math.min(3e3,e.doc.length),a=new ParseContext(e.facet(language).parser,e,[],Tree.empty,0,{from:0,to:s},[],null);return a.work(20,s)||a.takeTree(),new LanguageState(a)}}Language.state=StateField.define({create:LanguageState.init,update(o,e){for(let s of e.effects)if(s.is(Language.setState))return s.value;return e.startState.facet(language)!=e.state.facet(language)?LanguageState.init(e.state):o.apply(e)}});let requestIdle=o=>{let e=setTimeout(()=>o(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(requestIdle=o=>{let e=-1,s=setTimeout(()=>{e=requestIdleCallback(o,{timeout:500-100})},100);return()=>e<0?clearTimeout(s):cancelIdleCallback(e)});const isInputPending=typeof navigator!="undefined"&&((_a=navigator.scheduling)===null||_a===void 0?void 0:_a.isInputPending)?()=>navigator.scheduling.isInputPending():null,parseWorker=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let s=this.view.state.field(Language.state).context;(s.updateViewport(e.view.viewport)||this.view.viewport.to>s.treeLen)&&this.scheduleWork(),e.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(s)}scheduleWork(){if(this.working)return;let{state:e}=this.view,s=e.field(Language.state);(s.tree!=s.context.tree||!s.context.isDone(e.doc.length))&&(this.working=requestIdle(this.work))}work(e){this.working=null;let s=Date.now();if(this.chunkEndc+1e3,k=d.context.work(()=>isInputPending&&isInputPending()||Date.now()>_,c+(b?0:1e5));this.chunkBudget-=Date.now()-s,(k||this.chunkBudget<=0)&&(d.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(d.context))})),this.chunkBudget>0&&!(k&&!b)&&this.scheduleWork(),this.checkAsyncSchedule(d.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(s=>logException(this.view.state,s)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(o){return o.length?o[0]:null},enables:[Language.state,parseWorker]});class LanguageSupport{constructor(e,s=[]){this.language=e,this.support=s,this.extension=[e,s]}}const indentService=Facet.define(),indentUnit=Facet.define({combine:o=>{if(!o.length)return" ";if(!/^(?: +|\t+)$/.test(o[0]))throw new Error("Invalid indent unit: "+JSON.stringify(o[0]));return o[0]}});function getIndentUnit(o){let e=o.facet(indentUnit);return e.charCodeAt(0)==9?o.tabSize*e.length:e.length}function indentString(o,e){let s="",a=o.tabSize;if(o.facet(indentUnit).charCodeAt(0)==9)for(;e>=a;)s+=" ",e-=a;for(let c=0;c=a.from&&c<=a.to?d&&c==e?{text:"",from:e}:(s<0?c-1&&(d+=_-this.countColumn(a,a.search(/\S|$/))),d}countColumn(e,s=e.length){return countColumn(e,this.state.tabSize,s)}lineIndent(e,s=1){let{text:a,from:c}=this.lineAt(e,s),d=this.options.overrideIndentation;if(d){let _=d(c);if(_>-1)return _}return this.countColumn(a,a.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const indentNodeProp=new NodeProp;function syntaxIndentation(o,e,s){return indentFrom(e.resolveInner(s).enterUnfinishedNodesBefore(s),s,o)}function ignoreClosed(o){return o.pos==o.options.simulateBreak&&o.options.simulateDoubleBreak}function indentStrategy(o){let e=o.type.prop(indentNodeProp);if(e)return e;let s=o.firstChild,a;if(s&&(a=s.type.prop(NodeProp.closedBy))){let c=o.lastChild,d=c&&a.indexOf(c.name)>-1;return _=>delimitedStrategy(_,!0,1,void 0,d&&!ignoreClosed(_)?c.from:void 0)}return o.parent==null?topIndent:null}function indentFrom(o,e,s){for(;o;o=o.parent){let a=indentStrategy(o);if(a)return a(new TreeIndentContext(s,e,o))}return null}function topIndent(){return 0}class TreeIndentContext extends IndentContext{constructor(e,s,a){super(e.state,e.options),this.base=e,this.pos=s,this.node=a}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){let e=this.state.doc.lineAt(this.node.from);for(;;){let s=this.node.resolve(e.from);for(;s.parent&&s.parent.from==s.from;)s=s.parent;if(isParent(s,this.node))break;e=this.state.doc.lineAt(s.from)}return this.lineIndent(e.from)}continue(){let e=this.node.parent;return e?indentFrom(e,this.pos,this.base):0}}function isParent(o,e){for(let s=e;s;s=s.parent)if(o==s)return!0;return!1}function bracketedAligned(o){let e=o.node,s=e.childAfter(e.from),a=e.lastChild;if(!s)return null;let c=o.options.simulateBreak,d=o.state.doc.lineAt(s.from),_=c==null||c<=d.from?d.to:Math.min(d.to,c);for(let b=s.to;;){let k=e.childAfter(b);if(!k||k==a)return null;if(!k.type.isSkipped)return k.from<_?s:null;b=k.to}}function delimitedIndent({closing:o,align:e=!0,units:s=1}){return a=>delimitedStrategy(a,e,s,o)}function delimitedStrategy(o,e,s,a,c){let d=o.textAfter,_=d.match(/^\s*/)[0].length,b=a&&d.slice(_,_+a.length)==a||c==o.pos+_,k=e?bracketedAligned(o):null;return k?b?o.column(k.from):o.column(k.to):o.baseIndent+(b?0:o.unit*s)}const flatIndent=o=>o.baseIndent;function continuedIndent({except:o,units:e=1}={}){return s=>{let a=o&&o.test(s.textAfter);return s.baseIndent+(a?0:e*s.unit)}}const DontIndentBeyond=200;function indentOnInput(){return EditorState.transactionFilter.of(o=>{if(!o.docChanged||!o.isUserEvent("input.type")&&!o.isUserEvent("input.complete"))return o;let e=o.startState.languageDataAt("indentOnInput",o.startState.selection.main.head);if(!e.length)return o;let s=o.newDoc,{head:a}=o.newSelection.main,c=s.lineAt(a);if(a>c.from+DontIndentBeyond)return o;let d=s.sliceString(c.from,a);if(!e.some($=>$.test(d)))return o;let{state:_}=o,b=-1,k=[];for(let{head:$}of _.selection.ranges){let j=_.doc.lineAt($);if(j.from==b)continue;b=j.from;let _e=getIndentation(_,j.from);if(_e==null)continue;let et=/^\s*/.exec(j.text)[0],tt=indentString(_,_e);et!=tt&&k.push({from:j.from,to:j.from+et.length,insert:tt})}return k.length?[o,{changes:k,sequential:!0}]:o})}const foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside$1(o){let e=o.firstChild,s=o.lastChild;return e&&e.tos)continue;if(d&&_.from=e&&k.to>s&&(d=k)}}return d}function isUnfinished(o){let e=o.lastChild;return e&&e.to==o.to&&e.type.isError}function foldable(o,e,s){for(let a of o.facet(foldService)){let c=a(o,e,s);if(c)return c}return syntaxFolding(o,e,s)}class GutterMarker extends RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}GutterMarker.prototype.elementClass="";GutterMarker.prototype.toDOM=void 0;GutterMarker.prototype.mapMode=MapMode.TrackBefore;GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1;GutterMarker.prototype.point=!0;const gutterLineClass=Facet.define(),defaults$1={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>RangeSet.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},activeGutters=Facet.define();function gutter(o){return[gutters(),activeGutters.of(Object.assign(Object.assign({},defaults$1),o))]}const baseTheme$7=EditorView.baseTheme({".cm-gutters":{display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#999",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"}}),unfixGutters=Facet.define({combine:o=>o.some(e=>e)});function gutters(o){let e=[gutterView,baseTheme$7];return o&&o.fixed===!1&&e.push(unfixGutters.of(!0)),e}const gutterView=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.prevViewport=o.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=o.state.facet(activeGutters).map(e=>new SingleGutterView(o,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!o.state.facet(unfixGutters),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),o.scrollDOM.insertBefore(this.dom,o.contentDOM)}update(o){if(this.updateGutters(o)){let e=this.prevViewport,s=o.view.viewport,a=Math.min(e.to,s.to)-Math.max(e.from,s.from);this.syncGutters(a<(s.to-s.from)*.8)}o.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(unfixGutters)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=o.view.viewport}syncGutters(o){let e=this.dom.nextSibling;o&&this.dom.remove();let s=RangeSet.iter(this.view.state.facet(gutterLineClass),this.view.viewport.from),a=[],c=this.gutters.map(d=>new UpdateContext(d,this.view.viewport,-this.view.documentPadding.top));for(let d of this.view.viewportLineBlocks){let _;if(Array.isArray(d.type)){for(let b of d.type)if(b.type==BlockType.Text){_=b;break}}else _=d.type==BlockType.Text?d:void 0;if(!!_){a.length&&(a=[]),advanceCursor(s,a,d.from);for(let b of c)b.line(this.view,_,a)}}for(let d of c)d.finish();o&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(o){let e=o.startState.facet(activeGutters),s=o.state.facet(activeGutters),a=o.docChanged||o.heightChanged||o.viewportChanged||!RangeSet.eq(o.startState.facet(gutterLineClass),o.state.facet(gutterLineClass),o.view.viewport.from,o.view.viewport.to);if(e==s)for(let c of this.gutters)c.update(o)&&(a=!0);else{a=!0;let c=[];for(let d of s){let _=e.indexOf(d);_<0?c.push(new SingleGutterView(this.view,d)):(this.gutters[_].update(o),c.push(this.gutters[_]))}for(let d of this.gutters)d.dom.remove(),c.indexOf(d)<0&&d.destroy();for(let d of c)this.dom.appendChild(d.dom);this.gutters=c}return a}destroy(){for(let o of this.gutters)o.destroy();this.dom.remove()}},{provide:PluginField.scrollMargins.from(o=>o.gutters.length==0||!o.fixed?null:o.view.textDirection==Direction.LTR?{left:o.dom.offsetWidth}:{right:o.dom.offsetWidth})});function asArray(o){return Array.isArray(o)?o:[o]}function advanceCursor(o,e,s){for(;o.value&&o.from<=s;)o.from==s&&e.push(o.value),o.next()}class UpdateContext{constructor(e,s,a){this.gutter=e,this.height=a,this.localMarkers=[],this.i=0,this.cursor=RangeSet.iter(e.markers,s.from)}line(e,s,a){this.localMarkers.length&&(this.localMarkers=[]),advanceCursor(this.cursor,this.localMarkers,s.from);let c=a.length?this.localMarkers.concat(a):this.localMarkers,d=this.gutter.config.lineMarker(e,s,c);d&&c.unshift(d);let _=this.gutter;if(c.length==0&&!_.config.renderEmptyElements)return;let b=s.top-this.height;if(this.i==_.elements.length){let k=new GutterElement(e,s.height,b,c);_.elements.push(k),_.dom.appendChild(k.dom)}else _.elements[this.i].update(e,s.height,b,c);this.height=s.bottom,this.i++}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let s=e.elements.pop();e.dom.removeChild(s.dom),s.destroy()}}}class SingleGutterView{constructor(e,s){this.view=e,this.config=s,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let a in s.domEventHandlers)this.dom.addEventListener(a,c=>{let d=e.lineBlockAtHeight(c.clientY-e.documentTop);s.domEventHandlers[a](e,d,c)&&c.preventDefault()});this.markers=asArray(s.markers(e)),s.initialSpacer&&(this.spacer=new GutterElement(e,0,0,[s.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let s=this.markers;if(this.markers=asArray(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let c=this.config.updateSpacer(this.spacer.markers[0],e);c!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[c])}let a=e.view.viewport;return!RangeSet.eq(this.markers,s,a.from,a.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class GutterElement{constructor(e,s,a,c){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.update(e,s,a,c)}update(e,s,a,c){this.height!=s&&(this.dom.style.height=(this.height=s)+"px"),this.above!=a&&(this.dom.style.marginTop=(this.above=a)?a+"px":""),sameMarkers(this.markers,c)||this.setMarkers(e,c)}setMarkers(e,s){let a="cm-gutterElement",c=this.dom.firstChild;for(let d=0,_=0;;){let b=_,k=dd(b,k,$)||_(b,k,$):_}return a}})}});class NumberMarker extends GutterMarker{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function formatNumber(o,e){return o.state.facet(lineNumberConfig).formatNumber(e,o.state)}const lineNumberGutter=activeGutters.compute([lineNumberConfig],o=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(lineNumberMarkers)},lineMarker(e,s,a){return a.some(c=>c.toDOM)?null:new NumberMarker(formatNumber(e,e.state.doc.lineAt(s.from).number))},lineMarkerChange:e=>e.startState.facet(lineNumberConfig)!=e.state.facet(lineNumberConfig),initialSpacer(e){return new NumberMarker(formatNumber(e,maxLineNumber(e.state.doc.lines)))},updateSpacer(e,s){let a=formatNumber(s.view,maxLineNumber(s.view.state.doc.lines));return a==e.number?e:new NumberMarker(a)},domEventHandlers:o.facet(lineNumberConfig).domEventHandlers}));function lineNumbers(o={}){return[lineNumberConfig.of(o),gutters(),lineNumberGutter]}function maxLineNumber(o){let e=9;for(;e{let e=[],s=-1;for(let a of o.selection.ranges)if(a.empty){let c=o.doc.lineAt(a.head).from;c>s&&(s=c,e.push(activeLineGutterMarker.range(c)))}return RangeSet.of(e)});function highlightActiveLineGutter(){return activeLineGutterHighlighter}function mapRange(o,e){let s=e.mapPos(o.from,1),a=e.mapPos(o.to,-1);return s>=a?void 0:{from:s,to:a}}const foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(o){let e=[];for(let{head:s}of o.state.selection.ranges)e.some(a=>a.from<=s&&a.to>=s)||e.push(o.lineBlockAt(s));return e}const foldState=StateField.define({create(){return Decoration.none},update(o,e){o=o.map(e.changes);for(let s of e.effects)s.is(foldEffect)&&!foldExists(o,s.value.from,s.value.to)?o=o.update({add:[foldWidget.range(s.value.from,s.value.to)]}):s.is(unfoldEffect)&&(o=o.update({filter:(a,c)=>s.value.from!=a||s.value.to!=c,filterFrom:s.value.from,filterTo:s.value.to}));if(e.selection){let s=!1,{head:a}=e.selection.main;o.between(a,a,(c,d)=>{ca&&(s=!0)}),s&&(o=o.update({filterFrom:a,filterTo:a,filter:(c,d)=>d<=a||c>=a}))}return o},provide:o=>EditorView.decorations.from(o)});function foldInside(o,e,s){var a;let c=null;return(a=o.field(foldState,!1))===null||a===void 0||a.between(e,s,(d,_)=>{(!c||c.from>d)&&(c={from:d,to:_})}),c}function foldExists(o,e,s){let a=!1;return o.between(e,e,(c,d)=>{c==e&&d==s&&(a=!0)}),a}function maybeEnable(o,e){return o.field(foldState,!1)?e:e.concat(StateEffect.appendConfig.of(codeFolding()))}const foldCode=o=>{for(let e of selectedLines(o)){let s=foldable(o.state,e.from,e.to);if(s)return o.dispatch({effects:maybeEnable(o.state,[foldEffect.of(s),announceFold(o,s)])}),!0}return!1},unfoldCode=o=>{if(!o.state.field(foldState,!1))return!1;let e=[];for(let s of selectedLines(o)){let a=foldInside(o.state,s.from,s.to);a&&e.push(unfoldEffect.of(a),announceFold(o,a,!1))}return e.length&&o.dispatch({effects:e}),e.length>0};function announceFold(o,e,s=!0){let a=o.state.doc.lineAt(e.from).number,c=o.state.doc.lineAt(e.to).number;return EditorView.announce.of(`${o.state.phrase(s?"Folded lines":"Unfolded lines")} ${a} ${o.state.phrase("to")} ${c}.`)}const foldAll=o=>{let{state:e}=o,s=[];for(let a=0;a{let e=o.state.field(foldState,!1);if(!e||!e.size)return!1;let s=[];return e.between(0,o.state.doc.length,(a,c)=>{s.push(unfoldEffect.of({from:a,to:c}))}),o.dispatch({effects:s}),!0},foldKeymap=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:foldCode},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:unfoldCode},{key:"Ctrl-Alt-[",run:foldAll},{key:"Ctrl-Alt-]",run:unfoldAll}],defaultConfig={placeholderDOM:null,placeholderText:"\u2026"},foldConfig=Facet.define({combine(o){return combineConfig(o,defaultConfig)}});function codeFolding(o){let e=[foldState,baseTheme$6];return o&&e.push(foldConfig.of(o)),e}const foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(o){let{state:e}=o,s=e.facet(foldConfig),a=d=>{let _=o.lineBlockAt(o.posAtDOM(d.target)),b=foldInside(o.state,_.from,_.to);b&&o.dispatch({effects:unfoldEffect.of(b)}),d.preventDefault()};if(s.placeholderDOM)return s.placeholderDOM(o,a);let c=document.createElement("span");return c.textContent=s.placeholderText,c.setAttribute("aria-label",e.phrase("folded code")),c.title=e.phrase("unfold"),c.className="cm-foldPlaceholder",c.onclick=a,c}}}),foldGutterDefaults={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{}};class FoldMarker extends GutterMarker{constructor(e,s){super(),this.config=e,this.open=s}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let s=document.createElement("span");return s.textContent=this.open?this.config.openText:this.config.closedText,s.title=e.state.phrase(this.open?"Fold line":"Unfold line"),s}}function foldGutter(o={}){let e=Object.assign(Object.assign({},foldGutterDefaults),o),s=new FoldMarker(e,!0),a=new FoldMarker(e,!1),c=ViewPlugin.fromClass(class{constructor(_){this.from=_.viewport.from,this.markers=this.buildMarkers(_)}update(_){(_.docChanged||_.viewportChanged||_.startState.facet(language)!=_.state.facet(language)||_.startState.field(foldState,!1)!=_.state.field(foldState,!1)||syntaxTree(_.startState)!=syntaxTree(_.state))&&(this.markers=this.buildMarkers(_.view))}buildMarkers(_){let b=new RangeSetBuilder;for(let k of _.viewportLineBlocks){let $=foldInside(_.state,k.from,k.to)?a:foldable(_.state,k.from,k.to)?s:null;$&&b.add(k.from,k.from,$)}return b.finish()}}),{domEventHandlers:d}=e;return[c,gutter({class:"cm-foldGutter",markers(_){var b;return((b=_.plugin(c))===null||b===void 0?void 0:b.markers)||RangeSet.empty},initialSpacer(){return new FoldMarker(e,!1)},domEventHandlers:Object.assign(Object.assign({},d),{click:(_,b,k)=>{if(d.click&&d.click(_,b,k))return!0;let $=foldInside(_.state,b.from,b.to);if($)return _.dispatch({effects:unfoldEffect.of($)}),!0;let j=foldable(_.state,b.from,b.to);return j?(_.dispatch({effects:foldEffect.of(j)}),!0):!1}})}),codeFolding()]}const baseTheme$6=EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),baseTheme$5=EditorView.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),DefaultScanDist=1e4,DefaultBrackets="()[]{}",bracketMatchingConfig=Facet.define({combine(o){return combineConfig(o,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist})}}),matchingMark=Decoration.mark({class:"cm-matchingBracket"}),nonmatchingMark=Decoration.mark({class:"cm-nonmatchingBracket"}),bracketMatchingState=StateField.define({create(){return Decoration.none},update(o,e){if(!e.docChanged&&!e.selection)return o;let s=[],a=e.state.facet(bracketMatchingConfig);for(let c of e.state.selection.ranges){if(!c.empty)continue;let d=matchBrackets(e.state,c.head,-1,a)||c.head>0&&matchBrackets(e.state,c.head-1,1,a)||a.afterCursor&&(matchBrackets(e.state,c.head,1,a)||c.headEditorView.decorations.from(o)}),bracketMatchingUnique=[bracketMatchingState,baseTheme$5];function bracketMatching(o={}){return[bracketMatchingConfig.of(o),bracketMatchingUnique]}function matchingNodes(o,e,s){let a=o.prop(e<0?NodeProp.openedBy:NodeProp.closedBy);if(a)return a;if(o.name.length==1){let c=s.indexOf(o.name);if(c>-1&&c%2==(e<0?1:0))return[s[c+e]]}return null}function matchBrackets(o,e,s,a={}){let c=a.maxScanDistance||DefaultScanDist,d=a.brackets||DefaultBrackets,_=syntaxTree(o),b=_.resolveInner(e,s);for(let k=b;k;k=k.parent){let $=matchingNodes(k.type,s,d);if($&&k.from=a.to){if(k==0&&c.indexOf($.type.name)>-1&&$.from<$.to)return{start:b,end:{from:$.from,to:$.to},matched:!0};if(matchingNodes($.type,s,d))k++;else if(matchingNodes($.type,-s,d)&&(k--,k==0))return{start:b,end:$.from==$.to?void 0:{from:$.from,to:$.to},matched:!1}}while(s<0?$.prevSibling():$.nextSibling());return{start:b,matched:!1}}function matchPlainBrackets(o,e,s,a,c,d,_){let b=s<0?o.sliceDoc(e-1,e):o.sliceDoc(e,e+1),k=_.indexOf(b);if(k<0||k%2==0!=s>0)return null;let $={from:s<0?e-1:e,to:s>0?e+1:e},j=o.doc.iterRange(e,s>0?o.doc.length:0),_e=0;for(let et=0;!j.next().done&&et<=d;){let tt=j.value;s<0&&(et+=tt.length);let nt=e+et*s;for(let it=s>0?0:tt.length-1,rt=s>0?tt.length:-1;it!=rt;it+=s){let st=_.indexOf(tt[it]);if(!(st<0||a.resolve(nt+it,1).type!=c))if(st%2==0==s>0)_e++;else{if(_e==1)return{start:$,end:{from:nt+it,to:nt+it+1},matched:st>>1==k>>1};_e--}}s>0&&(et+=tt.length)}return j.done?{start:$,matched:!1}:null}function updateSel(o,e){return EditorSelection.create(o.ranges.map(e),o.mainIndex)}function setSel(o,e){return o.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function moveSel({state:o,dispatch:e},s){let a=updateSel(o.selection,s);return a.eq(o.selection)?!1:(e(setSel(o,a)),!0)}function rangeEnd(o,e){return EditorSelection.cursor(e?o.to:o.from)}function cursorByChar(o,e){return moveSel(o,s=>s.empty?o.moveByChar(s,e):rangeEnd(s,e))}const cursorCharLeft=o=>cursorByChar(o,o.textDirection!=Direction.LTR),cursorCharRight=o=>cursorByChar(o,o.textDirection==Direction.LTR);function cursorByGroup(o,e){return moveSel(o,s=>s.empty?o.moveByGroup(s,e):rangeEnd(s,e))}const cursorGroupLeft=o=>cursorByGroup(o,o.textDirection!=Direction.LTR),cursorGroupRight=o=>cursorByGroup(o,o.textDirection==Direction.LTR);function interestingNode(o,e,s){if(e.type.prop(s))return!0;let a=e.to-e.from;return a&&(a>2||/[^\s,.;:]/.test(o.sliceDoc(e.from,e.to)))||e.firstChild}function moveBySyntax(o,e,s){let a=syntaxTree(o).resolveInner(e.head),c=s?NodeProp.closedBy:NodeProp.openedBy;for(let k=e.head;;){let $=s?a.childAfter(k):a.childBefore(k);if(!$)break;interestingNode(o,$,c)?a=$:k=s?$.to:$.from}let d=a.type.prop(c),_,b;return d&&(_=s?matchBrackets(o,a.from,1):matchBrackets(o,a.to,-1))&&_.matched?b=s?_.end.to:_.end.from:b=s?a.to:a.from,EditorSelection.cursor(b,s?-1:1)}const cursorSyntaxLeft=o=>moveSel(o,e=>moveBySyntax(o.state,e,o.textDirection!=Direction.LTR)),cursorSyntaxRight=o=>moveSel(o,e=>moveBySyntax(o.state,e,o.textDirection==Direction.LTR));function cursorByLine(o,e){return moveSel(o,s=>{if(!s.empty)return rangeEnd(s,e);let a=o.moveVertically(s,e);return a.head!=s.head?a:o.moveToLineBoundary(s,e)})}const cursorLineUp=o=>cursorByLine(o,!1),cursorLineDown=o=>cursorByLine(o,!0);function cursorByPage(o,e){let{state:s}=o,a=updateSel(s.selection,_=>_.empty?o.moveVertically(_,e,o.dom.clientHeight):rangeEnd(_,e));if(a.eq(s.selection))return!1;let c=o.coordsAtPos(s.selection.main.head),d=o.scrollDOM.getBoundingClientRect();return o.dispatch(setSel(s,a),{effects:c&&c.top>d.top&&c.bottomcursorByPage(o,!1),cursorPageDown=o=>cursorByPage(o,!0);function moveByLineBoundary(o,e,s){let a=o.lineBlockAt(e.head),c=o.moveToLineBoundary(e,s);if(c.head==e.head&&c.head!=(s?a.to:a.from)&&(c=o.moveToLineBoundary(e,s,!1)),!s&&c.head==a.from&&a.length){let d=/^\s*/.exec(o.state.sliceDoc(a.from,Math.min(a.from+100,a.to)))[0].length;d&&e.head!=a.from+d&&(c=EditorSelection.cursor(a.from+d))}return c}const cursorLineBoundaryForward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!0)),cursorLineBoundaryBackward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!1)),cursorLineStart=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from,1)),cursorLineEnd=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to,-1));function toMatchingBracket(o,e,s){let a=!1,c=updateSel(o.selection,d=>{let _=matchBrackets(o,d.head,-1)||matchBrackets(o,d.head,1)||d.head>0&&matchBrackets(o,d.head-1,1)||d.headtoMatchingBracket(o,e,!1);function extendSel(o,e){let s=updateSel(o.state.selection,a=>{let c=e(a);return EditorSelection.range(a.anchor,c.head,c.goalColumn)});return s.eq(o.state.selection)?!1:(o.dispatch(setSel(o.state,s)),!0)}function selectByChar(o,e){return extendSel(o,s=>o.moveByChar(s,e))}const selectCharLeft=o=>selectByChar(o,o.textDirection!=Direction.LTR),selectCharRight=o=>selectByChar(o,o.textDirection==Direction.LTR);function selectByGroup(o,e){return extendSel(o,s=>o.moveByGroup(s,e))}const selectGroupLeft=o=>selectByGroup(o,o.textDirection!=Direction.LTR),selectGroupRight=o=>selectByGroup(o,o.textDirection==Direction.LTR),selectSyntaxLeft=o=>extendSel(o,e=>moveBySyntax(o.state,e,o.textDirection!=Direction.LTR)),selectSyntaxRight=o=>extendSel(o,e=>moveBySyntax(o.state,e,o.textDirection==Direction.LTR));function selectByLine(o,e){return extendSel(o,s=>o.moveVertically(s,e))}const selectLineUp=o=>selectByLine(o,!1),selectLineDown=o=>selectByLine(o,!0);function selectByPage(o,e){return extendSel(o,s=>o.moveVertically(s,e,o.dom.clientHeight))}const selectPageUp=o=>selectByPage(o,!1),selectPageDown=o=>selectByPage(o,!0),selectLineBoundaryForward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!0)),selectLineBoundaryBackward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!1)),selectLineStart=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from)),selectLineEnd=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to)),cursorDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:0})),!0),cursorDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.doc.length})),!0),selectDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:0})),!0),selectDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:o.doc.length})),!0),selectAll=({state:o,dispatch:e})=>(e(o.update({selection:{anchor:0,head:o.doc.length},userEvent:"select"})),!0),selectLine=({state:o,dispatch:e})=>{let s=selectedLineBlocks(o).map(({from:a,to:c})=>EditorSelection.range(a,Math.min(c+1,o.doc.length)));return e(o.update({selection:EditorSelection.create(s),userEvent:"select"})),!0},selectParentSyntax=({state:o,dispatch:e})=>{let s=updateSel(o.selection,a=>{var c;let d=syntaxTree(o).resolveInner(a.head,1);for(;!(d.from=a.to||d.to>a.to&&d.from<=a.from||!(!((c=d.parent)===null||c===void 0)&&c.parent));)d=d.parent;return EditorSelection.range(d.to,d.from)});return e(setSel(o,s)),!0},simplifySelection=({state:o,dispatch:e})=>{let s=o.selection,a=null;return s.ranges.length>1?a=EditorSelection.create([s.main]):s.main.empty||(a=EditorSelection.create([EditorSelection.cursor(s.main.head)])),a?(e(setSel(o,a)),!0):!1};function deleteBy({state:o,dispatch:e},s){if(o.readOnly)return!1;let a="delete.selection",c=o.changeByRange(d=>{let{from:_,to:b}=d;if(_==b){let k=s(_);k<_?a="delete.backward":k>_&&(a="delete.forward"),_=Math.min(_,k),b=Math.max(b,k)}return _==b?{range:d}:{changes:{from:_,to:b},range:EditorSelection.cursor(_)}});return c.changes.empty?!1:(e(o.update(c,{scrollIntoView:!0,userEvent:a})),!0)}function skipAtomic(o,e,s){if(o instanceof EditorView)for(let a of o.pluginField(PluginField.atomicRanges))a.between(e,e,(c,d)=>{ce&&(e=s?d:c)});return e}const deleteByChar=(o,e)=>deleteBy(o,s=>{let{state:a}=o,c=a.doc.lineAt(s),d,_;if(!e&&s>c.from&&sdeleteByChar(o,!1),deleteCharForward=o=>deleteByChar(o,!0),deleteByGroup=(o,e)=>deleteBy(o,s=>{let a=s,{state:c}=o,d=c.doc.lineAt(a),_=c.charCategorizer(a);for(let b=null;;){if(a==(e?d.to:d.from)){a==s&&d.number!=(e?c.doc.lines:1)&&(a+=e?1:-1);break}let k=findClusterBreak(d.text,a-d.from,e)+d.from,$=d.text.slice(Math.min(a,k)-d.from,Math.max(a,k)-d.from),j=_($);if(b!=null&&j!=b)break;($!=" "||a!=s)&&(b=j),a=k}return skipAtomic(o,a,e)}),deleteGroupBackward=o=>deleteByGroup(o,!1),deleteGroupForward=o=>deleteByGroup(o,!0),deleteToLineEnd=o=>deleteBy(o,e=>{let s=o.lineBlockAt(e).to;return skipAtomic(o,edeleteBy(o,e=>{let s=o.lineBlockAt(e).from;return skipAtomic(o,e>s?s:Math.max(0,e-1),!1)}),splitLine=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>({changes:{from:a.from,to:a.to,insert:Text.of(["",""])},range:EditorSelection.cursor(a.from)}));return e(o.update(s,{scrollIntoView:!0,userEvent:"input"})),!0},transposeChars=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>{if(!a.empty||a.from==0||a.from==o.doc.length)return{range:a};let c=a.from,d=o.doc.lineAt(c),_=c==d.from?c-1:findClusterBreak(d.text,c-d.from,!1)+d.from,b=c==d.to?c+1:findClusterBreak(d.text,c-d.from,!0)+d.from;return{changes:{from:_,to:b,insert:o.doc.slice(c,b).append(o.doc.slice(_,c))},range:EditorSelection.cursor(b)}});return s.changes.empty?!1:(e(o.update(s,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function selectedLineBlocks(o){let e=[],s=-1;for(let a of o.selection.ranges){let c=o.doc.lineAt(a.from),d=o.doc.lineAt(a.to);if(!a.empty&&a.to==d.from&&(d=o.doc.lineAt(a.to-1)),s>=c.number){let _=e[e.length-1];_.to=d.to,_.ranges.push(a)}else e.push({from:c.from,to:d.to,ranges:[a]});s=d.number+1}return e}function moveLine(o,e,s){if(o.readOnly)return!1;let a=[],c=[];for(let d of selectedLineBlocks(o)){if(s?d.to==o.doc.length:d.from==0)continue;let _=o.doc.lineAt(s?d.to+1:d.from-1),b=_.length+1;if(s){a.push({from:d.to,to:_.to},{from:d.from,insert:_.text+o.lineBreak});for(let k of d.ranges)c.push(EditorSelection.range(Math.min(o.doc.length,k.anchor+b),Math.min(o.doc.length,k.head+b)))}else{a.push({from:_.from,to:d.from},{from:d.to,insert:o.lineBreak+_.text});for(let k of d.ranges)c.push(EditorSelection.range(k.anchor-b,k.head-b))}}return a.length?(e(o.update({changes:a,scrollIntoView:!0,selection:EditorSelection.create(c,o.selection.mainIndex),userEvent:"move.line"})),!0):!1}const moveLineUp=({state:o,dispatch:e})=>moveLine(o,e,!1),moveLineDown=({state:o,dispatch:e})=>moveLine(o,e,!0);function copyLine(o,e,s){if(o.readOnly)return!1;let a=[];for(let c of selectedLineBlocks(o))s?a.push({from:c.from,insert:o.doc.slice(c.from,c.to)+o.lineBreak}):a.push({from:c.to,insert:o.lineBreak+o.doc.slice(c.from,c.to)});return e(o.update({changes:a,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const copyLineUp=({state:o,dispatch:e})=>copyLine(o,e,!1),copyLineDown=({state:o,dispatch:e})=>copyLine(o,e,!0),deleteLine=o=>{if(o.state.readOnly)return!1;let{state:e}=o,s=e.changes(selectedLineBlocks(e).map(({from:c,to:d})=>(c>0?c--:do.moveVertically(c,!0)).map(s);return o.dispatch({changes:s,selection:a,scrollIntoView:!0,userEvent:"delete.line"}),!0};function isBetweenBrackets(o,e){if(/\(\)|\[\]|\{\}/.test(o.sliceDoc(e-1,e+1)))return{from:e,to:e};let s=syntaxTree(o).resolveInner(e),a=s.childBefore(e),c=s.childAfter(e),d;return a&&c&&a.to<=e&&c.from>=e&&(d=a.type.prop(NodeProp.closedBy))&&d.indexOf(c.name)>-1&&o.doc.lineAt(a.to).from==o.doc.lineAt(c.from).from?{from:a.to,to:c.from}:null}const insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0);function newlineAndIndent(o){return({state:e,dispatch:s})=>{if(e.readOnly)return!1;let a=e.changeByRange(c=>{let{from:d,to:_}=c,b=e.doc.lineAt(d),k=!o&&d==_&&isBetweenBrackets(e,d);o&&(d=_=(_<=b.to?b:e.doc.lineAt(_)).to);let $=new IndentContext(e,{simulateBreak:d,simulateDoubleBreak:!!k}),j=getIndentation($,d);for(j==null&&(j=/^\s*/.exec(e.doc.lineAt(d).text)[0].length);_b.from&&d{let c=[];for(let _=a.from;_<=a.to;){let b=o.doc.lineAt(_);b.number>s&&(a.empty||a.to>b.from)&&(e(b,c,a),s=b.number),_=b.to+1}let d=o.changes(c);return{changes:c,range:EditorSelection.range(d.mapPos(a.anchor,1),d.mapPos(a.head,1))}})}const indentSelection=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=Object.create(null),a=new IndentContext(o,{overrideIndentation:d=>{let _=s[d];return _==null?-1:_}}),c=changeBySelectedLine(o,(d,_,b)=>{let k=getIndentation(a,d.from);if(k==null)return;/\S/.test(d.text)||(k=0);let $=/^\s*/.exec(d.text)[0],j=indentString(o,k);($!=j||b.fromo.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{a.push({from:s.from,insert:o.facet(indentUnit)})}),{userEvent:"input.indent"})),!0),indentLess=({state:o,dispatch:e})=>o.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{let c=/^\s*/.exec(s.text)[0];if(!c)return;let d=countColumn(c,o.tabSize),_=0,b=indentString(o,Math.max(0,d-getIndentUnit(o)));for(;_({mac:o.key,run:o.run,shift:o.shift}))),defaultKeymap=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:"Alt-ArrowUp",run:moveLineUp},{key:"Shift-Alt-ArrowUp",run:copyLineUp},{key:"Alt-ArrowDown",run:moveLineDown},{key:"Shift-Alt-ArrowDown",run:copyLineDown},{key:"Escape",run:simplifySelection},{key:"Mod-Enter",run:insertBlankLine},{key:"Alt-l",mac:"Ctrl-l",run:selectLine},{key:"Mod-i",run:selectParentSyntax,preventDefault:!0},{key:"Mod-[",run:indentLess},{key:"Mod-]",run:indentMore},{key:"Mod-Alt-\\",run:indentSelection},{key:"Shift-Mod-k",run:deleteLine},{key:"Shift-Mod-\\",run:cursorMatchingBracket}].concat(standardKeymap),defaults={brackets:["(","[","{","'",'"'],before:")]}:;>"},closeBracketEffect=StateEffect.define({map(o,e){let s=e.mapPos(o,-1,MapMode.TrackAfter);return s==null?void 0:s}}),skipBracketEffect=StateEffect.define({map(o,e){return e.mapPos(o)}}),closedBracket=new class extends RangeValue{};closedBracket.startSide=1;closedBracket.endSide=-1;const bracketState=StateField.define({create(){return RangeSet.empty},update(o,e){if(e.selection){let s=e.state.doc.lineAt(e.selection.main.head).from,a=e.startState.doc.lineAt(e.startState.selection.main.head).from;s!=e.changes.mapPos(a,-1)&&(o=RangeSet.empty)}o=o.map(e.changes);for(let s of e.effects)s.is(closeBracketEffect)?o=o.update({add:[closedBracket.range(s.value,s.value+1)]}):s.is(skipBracketEffect)&&(o=o.update({filter:a=>a!=s.value}));return o}});function closeBrackets(){return[inputHandler,bracketState]}const definedClosing="()[]{}<>";function closing(o){for(let e=0;e{if((android?o.composing:o.compositionStarted)||o.state.readOnly)return!1;let c=o.state.selection.main;if(a.length>2||a.length==2&&codePointSize(codePointAt(a,0))==1||e!=c.from||s!=c.to)return!1;let d=insertBracket(o.state,a);return d?(o.dispatch(d),!0):!1}),deleteBracketPair=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let a=config(o,o.selection.main.head).brackets||defaults.brackets,c=null,d=o.changeByRange(_=>{if(_.empty){let b=prevChar(o.doc,_.head);for(let k of a)if(k==b&&nextChar(o.doc,_.head)==closing(codePointAt(k,0)))return{changes:{from:_.head-k.length,to:_.head+k.length},range:EditorSelection.cursor(_.head-k.length),userEvent:"delete.backward"}}return{range:c=_}});return c||e(o.update(d,{scrollIntoView:!0})),!c},closeBracketsKeymap=[{key:"Backspace",run:deleteBracketPair}];function insertBracket(o,e){let s=config(o,o.selection.main.head),a=s.brackets||defaults.brackets;for(let c of a){let d=closing(codePointAt(c,0));if(e==c)return d==c?handleSame(o,c,a.indexOf(c+c+c)>-1):handleOpen(o,c,d,s.before||defaults.before);if(e==d&&closedBracketAt(o,o.selection.main.from))return handleClose(o,c,d)}return null}function closedBracketAt(o,e){let s=!1;return o.field(bracketState).between(0,o.doc.length,a=>{a==e&&(s=!0)}),s}function nextChar(o,e){let s=o.sliceString(e,e+2);return s.slice(0,codePointSize(codePointAt(s,0)))}function prevChar(o,e){let s=o.sliceString(e-2,e);return codePointSize(codePointAt(s,0))==s.length?s:s.slice(1)}function handleOpen(o,e,s,a){let c=null,d=o.changeByRange(_=>{if(!_.empty)return{changes:[{insert:e,from:_.from},{insert:s,from:_.to}],effects:closeBracketEffect.of(_.to+e.length),range:EditorSelection.range(_.anchor+e.length,_.head+e.length)};let b=nextChar(o.doc,_.head);return!b||/\s/.test(b)||a.indexOf(b)>-1?{changes:{insert:e+s,from:_.head},effects:closeBracketEffect.of(_.head+e.length),range:EditorSelection.cursor(_.head+e.length)}:{range:c=_}});return c?null:o.update(d,{scrollIntoView:!0,userEvent:"input.type"})}function handleClose(o,e,s){let a=null,c=o.selection.ranges.map(d=>d.empty&&nextChar(o.doc,d.head)==s?EditorSelection.cursor(d.head+s.length):a=d);return a?null:o.update({selection:EditorSelection.create(c,o.selection.mainIndex),scrollIntoView:!0,effects:o.selection.ranges.map(({from:d})=>skipBracketEffect.of(d))})}function handleSame(o,e,s){let a=null,c=o.changeByRange(d=>{if(!d.empty)return{changes:[{insert:e,from:d.from},{insert:e,from:d.to}],effects:closeBracketEffect.of(d.to+e.length),range:EditorSelection.range(d.anchor+e.length,d.head+e.length)};let _=d.head,b=nextChar(o.doc,_);if(b==e){if(nodeStart(o,_))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(closedBracketAt(o,_)){let k=s&&o.sliceDoc(_,_+e.length*3)==e+e+e;return{range:EditorSelection.cursor(_+e.length*(k?3:1)),effects:skipBracketEffect.of(_)}}}else{if(s&&o.sliceDoc(_-2*e.length,_)==e+e&&nodeStart(o,_-2*e.length))return{changes:{insert:e+e+e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(o.charCategorizer(_)(b)!=CharCategory.Word){let k=o.sliceDoc(_-1,_);if(k!=e&&o.charCategorizer(_)(k)!=CharCategory.Word&&!probablyInString(o,_,e))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)}}}return{range:a=d}});return a?null:o.update(c,{scrollIntoView:!0,userEvent:"input.type"})}function nodeStart(o,e){let s=syntaxTree(o).resolveInner(e+1);return s.parent&&s.from==e}function probablyInString(o,e,s){let a=syntaxTree(o).resolveInner(e,-1);for(let c=0;c<5;c++){if(o.sliceDoc(a.from,a.from+s.length)==s)return!0;let d=a.to==e&&a.parent;if(!d)break;a=d}return!1}const panelConfig=Facet.define({combine(o){let e,s;for(let a of o)e=e||a.topContainer,s=s||a.bottomContainer;return{topContainer:e,bottomContainer:s}}});function getPanel(o,e){let s=o.plugin(panelPlugin),a=s?s.specs.indexOf(e):-1;return a>-1?s.panels[a]:null}const panelPlugin=ViewPlugin.fromClass(class{constructor(o){this.input=o.state.facet(showPanel),this.specs=this.input.filter(s=>s),this.panels=this.specs.map(s=>s(o));let e=o.state.facet(panelConfig);this.top=new PanelGroup(o,!0,e.topContainer),this.bottom=new PanelGroup(o,!1,e.bottomContainer),this.top.sync(this.panels.filter(s=>s.top)),this.bottom.sync(this.panels.filter(s=>!s.top));for(let s of this.panels)s.dom.classList.add("cm-panel"),s.mount&&s.mount()}update(o){let e=o.state.facet(panelConfig);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new PanelGroup(o.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new PanelGroup(o.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let s=o.state.facet(showPanel);if(s!=this.input){let a=s.filter(k=>k),c=[],d=[],_=[],b=[];for(let k of a){let $=this.specs.indexOf(k),j;$<0?(j=k(o.view),b.push(j)):(j=this.panels[$],j.update&&j.update(o)),c.push(j),(j.top?d:_).push(j)}this.specs=a,this.panels=c,this.top.sync(d),this.bottom.sync(_);for(let k of b)k.dom.classList.add("cm-panel"),k.mount&&k.mount()}else for(let a of this.panels)a.update&&a.update(o)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:PluginField.scrollMargins.from(o=>({top:o.top.scrollMargin(),bottom:o.bottom.scrollMargin()}))});class PanelGroup{constructor(e,s,a){this.view=e,this.top=s,this.container=a,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let s of this.panels)s.destroy&&e.indexOf(s)<0&&s.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let s=this.container||this.view.dom;s.insertBefore(this.dom,this.top?s.firstChild:null)}let e=this.dom.firstChild;for(let s of this.panels)if(s.dom.parentNode==this.dom){for(;e!=s.dom;)e=rm(e);e=e.nextSibling}else this.dom.insertBefore(s.dom,e);for(;e;)e=rm(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function rm(o){let e=o.nextSibling;return o.remove(),e}const baseTheme$4=EditorView.baseTheme({".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"}}),showPanel=Facet.define({enables:[panelPlugin,baseTheme$4]});function crelt(){var o=arguments[0];typeof o=="string"&&(o=document.createElement(o));var e=1,s=arguments[1];if(s&&typeof s=="object"&&s.nodeType==null&&!Array.isArray(s)){for(var a in s)if(Object.prototype.hasOwnProperty.call(s,a)){var c=s[a];typeof c=="string"?o.setAttribute(a,c):c!=null&&(o[a]=c)}e++}for(;eo.normalize("NFKD"):o=>o;class SearchCursor{constructor(e,s,a=0,c=e.length,d){this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(a,c),this.bufferStart=a,this.normalize=d?_=>d(basicNormalize(_)):basicNormalize,this.query=this.normalize(s)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let s=fromCodePoint(e),a=this.bufferStart+this.bufferPos;this.bufferPos+=codePointSize(e);let c=this.normalize(s);for(let d=0,_=a;;d++){let b=c.charCodeAt(d),k=this.match(b,_);if(k)return this.value=k,this;if(d==c.length-1)break;_==a&&dthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let s=this.matchPos<=this.to&&this.re.exec(this.curLine);if(s){let a=this.curLineStart+s.index,c=a+s[0].length;if(this.matchPos=c+(a==c?1:0),a==this.curLine.length&&this.nextLine(),athis.value.to)return this.value={from:a,to:c,match:s},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=a||c.to<=s){let b=new FlattenedDoc(s,e.sliceString(s,a));return flattened.set(e,b),b}if(c.from==s&&c.to==a)return c;let{text:d,from:_}=c;return _>s&&(d=e.sliceString(s,_)+d,_=s),c.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,s=this.re.exec(this.flat.text);if(s&&!s[0]&&s.index==e&&(this.re.lastIndex=e+1,s=this.re.exec(this.flat.text)),s&&this.flat.tothis.flat.text.length-10&&(s=null),s){let a=this.flat.from+s.index,c=a+s[0].length;return this.value={from:a,to:c,match:s},this.matchPos=c+(a==c?1:0),this}else{if(this.flat.to==this.to)return this.done=!0,this;this.flat=FlattenedDoc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}}typeof Symbol!="undefined"&&(RegExpCursor.prototype[Symbol.iterator]=MultilineRegExpCursor.prototype[Symbol.iterator]=function(){return this});function validRegExp(o){try{return new RegExp(o,baseFlags),!0}catch{return!1}}function createLineDialog(o){let e=crelt("input",{class:"cm-textfield",name:"line"}),s=crelt("form",{class:"cm-gotoLine",onkeydown:c=>{c.keyCode==27?(c.preventDefault(),o.dispatch({effects:dialogEffect.of(!1)}),o.focus()):c.keyCode==13&&(c.preventDefault(),a())},onsubmit:c=>{c.preventDefault(),a()}},crelt("label",o.state.phrase("Go to line"),": ",e)," ",crelt("button",{class:"cm-button",type:"submit"},o.state.phrase("go")));function a(){let c=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!c)return;let{state:d}=o,_=d.doc.lineAt(d.selection.main.head),[,b,k,$,j]=c,_e=$?+$.slice(1):0,et=k?+k:_.number;if(k&&j){let nt=et/100;b&&(nt=nt*(b=="-"?-1:1)+_.number/d.doc.lines),et=Math.round(d.doc.lines*nt)}else k&&b&&(et=et*(b=="-"?-1:1)+_.number);let tt=d.doc.line(Math.max(1,Math.min(d.doc.lines,et)));o.dispatch({effects:dialogEffect.of(!1),selection:EditorSelection.cursor(tt.from+Math.max(0,Math.min(_e,tt.length))),scrollIntoView:!0}),o.focus()}return{dom:s,pos:-10}}const dialogEffect=StateEffect.define(),dialogField=StateField.define({create(){return!0},update(o,e){for(let s of e.effects)s.is(dialogEffect)&&(o=s.value);return o},provide:o=>showPanel.from(o,e=>e?createLineDialog:null)}),gotoLine=o=>{let e=getPanel(o,createLineDialog);if(!e){let s=[dialogEffect.of(!0)];o.state.field(dialogField,!1)==null&&s.push(StateEffect.appendConfig.of([dialogField,baseTheme$1$1])),o.dispatch({effects:s}),e=getPanel(o,createLineDialog)}return e&&e.dom.querySelector("input").focus(),!0},baseTheme$1$1=EditorView.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),defaultHighlightOptions={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!0},highlightConfig=Facet.define({combine(o){return combineConfig(o,defaultHighlightOptions,{highlightWordAroundCursor:(e,s)=>e||s,minSelectionLength:Math.min,maxMatches:Math.min})}});function highlightSelectionMatches(o){let e=[defaultTheme,matchHighlighter];return o&&e.push(highlightConfig.of(o)),e}const matchDeco=Decoration.mark({class:"cm-selectionMatch"}),mainMatchDeco=Decoration.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function insideWordBoundaries(o,e,s,a){return(s==0||o(e.sliceDoc(s-1,s))!=CharCategory.Word)&&(a==e.doc.length||o(e.sliceDoc(a,a+1))!=CharCategory.Word)}function insideWord(o,e,s,a){return o(e.sliceDoc(s,s+1))==CharCategory.Word&&o(e.sliceDoc(a-1,a))==CharCategory.Word}const matchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.selectionSet||o.docChanged||o.viewportChanged)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=o.state.facet(highlightConfig),{state:s}=o,a=s.selection;if(a.ranges.length>1)return Decoration.none;let c=a.main,d,_=null;if(c.empty){if(!e.highlightWordAroundCursor)return Decoration.none;let k=s.wordAt(c.head);if(!k)return Decoration.none;_=s.charCategorizer(c.head),d=s.sliceDoc(k.from,k.to)}else{let k=c.to-c.from;if(k200)return Decoration.none;if(e.wholeWords){if(d=s.sliceDoc(c.from,c.to),_=s.charCategorizer(c.head),!(insideWordBoundaries(_,s,c.from,c.to)&&insideWord(_,s,c.from,c.to)))return Decoration.none}else if(d=s.sliceDoc(c.from,c.to).trim(),!d)return Decoration.none}let b=[];for(let k of o.visibleRanges){let $=new SearchCursor(s.doc,d,k.from,k.to);for(;!$.next().done;){let{from:j,to:_e}=$.value;if((!_||insideWordBoundaries(_,s,j,_e))&&(c.empty&&j<=c.from&&_e>=c.to?b.push(mainMatchDeco.range(j,_e)):(j>=c.to||_e<=c.from)&&b.push(matchDeco.range(j,_e)),b.length>e.maxMatches))return Decoration.none}}return Decoration.set(b)}},{decorations:o=>o.decorations}),defaultTheme=EditorView.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),selectWord=({state:o,dispatch:e})=>{let{selection:s}=o,a=EditorSelection.create(s.ranges.map(c=>o.wordAt(c.head)||EditorSelection.cursor(c.head)),s.mainIndex);return a.eq(s)?!1:(e(o.update({selection:a})),!0)};function findNextOccurrence(o,e){let{main:s,ranges:a}=o.selection,c=o.wordAt(s.head),d=c&&c.from==s.from&&c.to==s.to;for(let _=!1,b=new SearchCursor(o.doc,e,a[a.length-1].to);;)if(b.next(),b.done){if(_)return null;b=new SearchCursor(o.doc,e,0,Math.max(0,a[a.length-1].from-1)),_=!0}else{if(_&&a.some(k=>k.from==b.value.from))continue;if(d){let k=o.wordAt(b.value.from);if(!k||k.from!=b.value.from||k.to!=b.value.to)continue}return b.value}}const selectNextOccurrence=({state:o,dispatch:e})=>{let{ranges:s}=o.selection;if(s.some(d=>d.from===d.to))return selectWord({state:o,dispatch:e});let a=o.sliceDoc(s[0].from,s[0].to);if(o.selection.ranges.some(d=>o.sliceDoc(d.from,d.to)!=a))return!1;let c=findNextOccurrence(o,a);return c?(e(o.update({selection:o.selection.addRange(EditorSelection.range(c.from,c.to),!1),effects:EditorView.scrollIntoView(c.to)})),!0):!1},searchConfigFacet=Facet.define({combine(o){var e;return{top:o.reduce((s,a)=>s!=null?s:a.top,void 0)||!1,caseSensitive:o.reduce((s,a)=>s!=null?s:a.caseSensitive||a.matchCase,void 0)||!1,createPanel:((e=o.find(s=>s.createPanel))===null||e===void 0?void 0:e.createPanel)||(s=>new SearchPanel(s))}}});class SearchQuery{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||validRegExp(this.search)),this.unquoted=this.search.replace(/\\([nrt\\])/g,(s,a)=>a=="n"?` -`:a=="r"?"\r":a=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp}create(){return this.regexp?new RegExpQuery(this):new StringQuery(this)}getCursor(e,s=0,a=e.length){return this.regexp?regexpCursor(this,e,s,a):stringCursor(this,e,s,a)}}class QueryType{constructor(e){this.spec=e}}function stringCursor(o,e,s,a){return new SearchCursor(e,o.unquoted,s,a,o.caseSensitive?void 0:c=>c.toLowerCase())}class StringQuery extends QueryType{constructor(e){super(e)}nextMatch(e,s,a){let c=stringCursor(this.spec,e,a,e.length).nextOverlapping();return c.done&&(c=stringCursor(this.spec,e,0,s).nextOverlapping()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=a;;){let d=Math.max(s,c-1e4-this.spec.unquoted.length),_=stringCursor(this.spec,e,d,c),b=null;for(;!_.nextOverlapping().done;)b=_.value;if(b)return b;if(d==s)return null;c-=1e4}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace}matchAll(e,s){let a=stringCursor(this.spec,e,0,e.length),c=[];for(;!a.next().done;){if(c.length>=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let d=stringCursor(this.spec,e,Math.max(0,s-this.spec.unquoted.length),Math.min(a+this.spec.unquoted.length,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}function regexpCursor(o,e,s,a){return new RegExpCursor(e,o.search,o.caseSensitive?void 0:{ignoreCase:!0},s,a)}class RegExpQuery extends QueryType{nextMatch(e,s,a){let c=regexpCursor(this.spec,e,a,e.length).next();return c.done&&(c=regexpCursor(this.spec,e,0,s).next()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=1;;c++){let d=Math.max(s,a-c*1e4),_=regexpCursor(this.spec,e,d,a),b=null;for(;!_.next().done;)b=_.value;if(b&&(d==s||b.from>d+10))return b;if(d==s)return null}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace.replace(/\$([$&\d+])/g,(s,a)=>a=="$"?"$":a=="&"?e.match[0]:a!="0"&&+a=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let d=regexpCursor(this.spec,e,Math.max(0,s-250),Math.min(a+250,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}const setSearchQuery=StateEffect.define(),togglePanel$1=StateEffect.define(),searchState=StateField.define({create(o){return new SearchState(defaultQuery(o).create(),null)},update(o,e){for(let s of e.effects)s.is(setSearchQuery)?o=new SearchState(s.value.create(),o.panel):s.is(togglePanel$1)&&(o=new SearchState(o.query,s.value?createSearchPanel:null));return o},provide:o=>showPanel.from(o,e=>e.panel)});class SearchState{constructor(e,s){this.query=e,this.panel=s}}const matchMark=Decoration.mark({class:"cm-searchMatch"}),selectedMatchMark=Decoration.mark({class:"cm-searchMatch cm-searchMatch-selected"}),searchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=this.highlight(o.state.field(searchState))}update(o){let e=o.state.field(searchState);(e!=o.startState.field(searchState)||o.docChanged||o.selectionSet||o.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:o,panel:e}){if(!e||!o.spec.valid)return Decoration.none;let{view:s}=this,a=new RangeSetBuilder;for(let c=0,d=s.visibleRanges,_=d.length;c<_;c++){let{from:b,to:k}=d[c];for(;c<_-1&&k>d[c+1].from-2*250;)k=d[++c].to;o.highlight(s.state.doc,b,k,($,j)=>{let _e=s.state.selection.ranges.some(et=>et.from==$&&et.to==j);a.add($,j,_e?selectedMatchMark:matchMark)})}return a.finish()}},{decorations:o=>o.decorations});function searchCommand(o){return e=>{let s=e.state.field(searchState,!1);return s&&s.query.spec.valid?o(e,s):openSearchPanel(e)}}const findNext=searchCommand((o,{query:e})=>{let{from:s,to:a}=o.state.selection.main,c=e.nextMatch(o.state.doc,s,a);return!c||c.from==s&&c.to==a?!1:(o.dispatch({selection:{anchor:c.from,head:c.to},scrollIntoView:!0,effects:announceMatch(o,c),userEvent:"select.search"}),!0)}),findPrevious=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a,to:c}=s.selection.main,d=e.prevMatch(s.doc,a,c);return d?(o.dispatch({selection:{anchor:d.from,head:d.to},scrollIntoView:!0,effects:announceMatch(o,d),userEvent:"select.search"}),!0):!1}),selectMatches=searchCommand((o,{query:e})=>{let s=e.matchAll(o.state.doc,1e3);return!s||!s.length?!1:(o.dispatch({selection:EditorSelection.create(s.map(a=>EditorSelection.range(a.from,a.to))),userEvent:"select.search.matches"}),!0)}),selectSelectionMatches=({state:o,dispatch:e})=>{let s=o.selection;if(s.ranges.length>1||s.main.empty)return!1;let{from:a,to:c}=s.main,d=[],_=0;for(let b=new SearchCursor(o.doc,o.sliceDoc(a,c));!b.next().done;){if(d.length>1e3)return!1;b.value.from==a&&(_=d.length),d.push(EditorSelection.range(b.value.from,b.value.to))}return e(o.update({selection:EditorSelection.create(d,_),userEvent:"select.search.matches"})),!0},replaceNext=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a,to:c}=s.selection.main;if(s.readOnly)return!1;let d=e.nextMatch(s.doc,a,a);if(!d)return!1;let _=[],b,k;if(d.from==a&&d.to==c&&(k=s.toText(e.getReplacement(d)),_.push({from:d.from,to:d.to,insert:k}),d=e.nextMatch(s.doc,d.from,d.to)),d){let $=_.length==0||_[0].from>=d.to?0:d.to-d.from-k.length;b={anchor:d.from-$,head:d.to-$}}return o.dispatch({changes:_,selection:b,scrollIntoView:!!b,effects:d?announceMatch(o,d):void 0,userEvent:"input.replace"}),!0}),replaceAll=searchCommand((o,{query:e})=>{if(o.state.readOnly)return!1;let s=e.matchAll(o.state.doc,1e9).map(a=>{let{from:c,to:d}=a;return{from:c,to:d,insert:e.getReplacement(a)}});return s.length?(o.dispatch({changes:s,userEvent:"input.replace.all"}),!0):!1});function createSearchPanel(o){return o.state.facet(searchConfigFacet).createPanel(o)}function defaultQuery(o,e){var s;let a=o.selection.main,c=a.empty||a.to>a.from+100?"":o.sliceDoc(a.from,a.to),d=(s=e==null?void 0:e.caseSensitive)!==null&&s!==void 0?s:o.facet(searchConfigFacet).caseSensitive;return e&&!c?e:new SearchQuery({search:c.replace(/\n/g,"\\n"),caseSensitive:d})}const openSearchPanel=o=>{let e=o.state.field(searchState,!1);if(e&&e.panel){let s=getPanel(o,createSearchPanel);if(!s)return!1;let a=s.dom.querySelector("[name=search]");if(a!=o.root.activeElement){let c=defaultQuery(o.state,e.query.spec);c.valid&&o.dispatch({effects:setSearchQuery.of(c)}),a.focus(),a.select()}}else o.dispatch({effects:[togglePanel$1.of(!0),e?setSearchQuery.of(defaultQuery(o.state,e.query.spec)):StateEffect.appendConfig.of(searchExtensions)]});return!0},closeSearchPanel=o=>{let e=o.state.field(searchState,!1);if(!e||!e.panel)return!1;let s=getPanel(o,createSearchPanel);return s&&s.dom.contains(o.root.activeElement)&&o.focus(),o.dispatch({effects:togglePanel$1.of(!1)}),!0},searchKeymap=[{key:"Mod-f",run:openSearchPanel,scope:"editor search-panel"},{key:"F3",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:closeSearchPanel,scope:"editor search-panel"},{key:"Mod-Shift-l",run:selectSelectionMatches},{key:"Alt-g",run:gotoLine},{key:"Mod-d",run:selectNextOccurrence,preventDefault:!0}];class SearchPanel{constructor(e){this.view=e;let s=this.query=e.state.field(searchState).query.spec;this.commit=this.commit.bind(this),this.searchField=crelt("input",{value:s.search,placeholder:phrase(e,"Find"),"aria-label":phrase(e,"Find"),class:"cm-textfield",name:"search",onchange:this.commit,onkeyup:this.commit}),this.replaceField=crelt("input",{value:s.replace,placeholder:phrase(e,"Replace"),"aria-label":phrase(e,"Replace"),class:"cm-textfield",name:"replace",onchange:this.commit,onkeyup:this.commit}),this.caseField=crelt("input",{type:"checkbox",name:"case",checked:s.caseSensitive,onchange:this.commit}),this.reField=crelt("input",{type:"checkbox",name:"re",checked:s.regexp,onchange:this.commit});function a(c,d,_){return crelt("button",{class:"cm-button",name:c,onclick:d,type:"button"},_)}this.dom=crelt("div",{onkeydown:c=>this.keydown(c),class:"cm-search"},[this.searchField,a("next",()=>findNext(e),[phrase(e,"next")]),a("prev",()=>findPrevious(e),[phrase(e,"previous")]),a("select",()=>selectMatches(e),[phrase(e,"all")]),crelt("label",null,[this.caseField,phrase(e,"match case")]),crelt("label",null,[this.reField,phrase(e,"regexp")]),...e.state.readOnly?[]:[crelt("br"),this.replaceField,a("replace",()=>replaceNext(e),[phrase(e,"replace")]),a("replaceAll",()=>replaceAll(e),[phrase(e,"replace all")]),crelt("button",{name:"close",onclick:()=>closeSearchPanel(e),"aria-label":phrase(e,"close"),type:"button"},["\xD7"])]])}commit(){let e=new SearchQuery({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:setSearchQuery.of(e)}))}keydown(e){runScopeHandlers(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?findPrevious:findNext)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),replaceNext(this.view))}update(e){for(let s of e.transactions)for(let a of s.effects)a.is(setSearchQuery)&&!a.value.eq(this.query)&&this.setQuery(a.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(searchConfigFacet).top}}function phrase(o,e){return o.state.phrase(e)}const AnnounceMargin=30,Break=/[\s\.,:;?!]/;function announceMatch(o,{from:e,to:s}){let a=o.state.doc.lineAt(e).from,c=o.state.doc.lineAt(s).to,d=Math.max(a,e-AnnounceMargin),_=Math.min(c,s+AnnounceMargin),b=o.state.sliceDoc(d,_);if(d!=a){for(let k=0;kb.length-AnnounceMargin;k--)if(!Break.test(b[k-1])&&Break.test(b[k])){b=b.slice(0,k);break}}return EditorView.announce.of(`${o.state.phrase("current match")}. ${b} ${o.state.phrase("on line")} ${o.state.doc.lineAt(e).number}`)}const baseTheme$3=EditorView.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),searchExtensions=[searchState,Prec.lowest(searchHighlighter),baseTheme$3],ios=typeof navigator!="undefined"&&!/Edge\/(\d+)/.exec(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor)&&(/Mobile\/\w+/.test(navigator.userAgent)||navigator.maxTouchPoints>2),Outside="-10000px";class TooltipViewManager{constructor(e,s,a){this.facet=s,this.createTooltipView=a,this.input=e.state.facet(s),this.tooltips=this.input.filter(c=>c),this.tooltipViews=this.tooltips.map(a)}update(e){let s=e.state.facet(this.facet),a=s.filter(d=>d);if(s===this.input){for(let d of this.tooltipViews)d.update&&d.update(e);return!1}let c=[];for(let d=0;d{var e,s,a;return{position:ios?"absolute":((e=o.find(c=>c.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((s=o.find(c=>c.parent))===null||s===void 0?void 0:s.parent)||null,tooltipSpace:((a=o.find(c=>c.tooltipSpace))===null||a===void 0?void 0:a.tooltipSpace)||windowSpace}}}),tooltipPlugin=ViewPlugin.fromClass(class{constructor(o){var e;this.view=o,this.inView=!0,this.lastTransaction=0,this.measureTimeout=-1;let s=o.state.facet(tooltipConfig);this.position=s.position,this.parent=s.parent,this.classes=o.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new TooltipViewManager(o,showTooltip,a=>this.createTooltip(a)),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(a=>{Date.now()>this.lastTransaction-50&&a.length>0&&a[a.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),(e=o.dom.ownerDocument.defaultView)===null||e===void 0||e.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let o of this.manager.tooltipViews)this.intersectionObserver.observe(o.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(o){o.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(o);e&&this.observeIntersection();let s=e||o.geometryChanged,a=o.state.facet(tooltipConfig);if(a.position!=this.position){this.position=a.position;for(let c of this.manager.tooltipViews)c.dom.style.position=this.position;s=!0}if(a.parent!=this.parent){this.parent&&this.container.remove(),this.parent=a.parent,this.createContainer();for(let c of this.manager.tooltipViews)this.container.appendChild(c.dom);s=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);s&&this.maybeMeasure()}createTooltip(o){let e=o.create(this.view);if(e.dom.classList.add("cm-tooltip"),o.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",e.dom.appendChild(s)}return e.dom.style.position=this.position,e.dom.style.top=Outside,this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var o,e;(o=this.view.dom.ownerDocument.defaultView)===null||o===void 0||o.removeEventListener("resize",this.measureSoon);for(let{dom:s}of this.manager.tooltipViews)s.remove();(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let o=this.view.dom.getBoundingClientRect();return{editor:o,parent:this.parent?this.container.getBoundingClientRect():o,pos:this.manager.tooltips.map((e,s)=>{let a=this.manager.tooltipViews[s];return a.getCoords?a.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(tooltipConfig).tooltipSpace(this.view)}}writeMeasure(o){let{editor:e,space:s}=o,a=[];for(let c=0;c=Math.min(e.bottom,s.bottom)||k.rightMath.min(e.right,s.right)+.1){b.style.top=Outside;continue}let j=d.arrow?_.dom.querySelector(".cm-tooltip-arrow"):null,_e=j?7:0,et=$.right-$.left,tt=$.bottom-$.top,nt=_.offset||noOffset,it=this.view.textDirection==Direction.LTR,rt=$.width>s.right-s.left?it?s.left:s.right-$.width:it?Math.min(k.left-(j?14:0)+nt.x,s.right-et):Math.max(s.left,k.left-et+(j?14:0)-nt.x),st=!!d.above;!d.strictSide&&(st?k.top-($.bottom-$.top)-nt.ys.bottom)&&st==s.bottom-k.bottom>k.top-s.top&&(st=!st);let at=st?k.top-tt-_e-nt.y:k.bottom+_e+nt.y,lt=rt+et;if(_.overlap!==!0)for(let dt of a)dt.leftrt&&dt.topat&&(at=st?dt.top-tt-2-_e:dt.bottom+_e+2);this.position=="absolute"?(b.style.top=at-o.parent.top+"px",b.style.left=rt-o.parent.left+"px"):(b.style.top=at+"px",b.style.left=rt+"px"),j&&(j.style.left=`${k.left+(it?nt.x:-nt.x)-(rt+14-7)}px`),_.overlap!==!0&&a.push({left:rt,top:at,right:lt,bottom:at+tt}),b.classList.toggle("cm-tooltip-above",st),b.classList.toggle("cm-tooltip-below",!st),_.positioned&&_.positioned()}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let o of this.manager.tooltipViews)o.dom.style.top=Outside}},{eventHandlers:{scroll(){this.maybeMeasure()}}}),baseTheme$2=EditorView.baseTheme({".cm-tooltip":{zIndex:100},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:`${7}px`,width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:`${7}px solid transparent`,borderRight:`${7}px solid transparent`},".cm-tooltip-above &":{bottom:`-${7}px`,"&:before":{borderTop:`${7}px solid #bbb`},"&:after":{borderTop:`${7}px solid #f5f5f5`,bottom:"1px"}},".cm-tooltip-below &":{top:`-${7}px`,"&:before":{borderBottom:`${7}px solid #bbb`},"&:after":{borderBottom:`${7}px solid #f5f5f5`,top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),noOffset={x:0,y:0},showTooltip=Facet.define({enables:[tooltipPlugin,baseTheme$2]}),showHoverTooltip=Facet.define();class HoverTooltipHost{constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new TooltipViewManager(e,showHoverTooltip,s=>this.createHostedView(s))}static create(e){return new HoverTooltipHost(e)}createHostedView(e){let s=e.create(this.view);return s.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(s.dom),this.mounted&&s.mount&&s.mount(this.view),s}mount(e){for(let s of this.manager.tooltipViews)s.mount&&s.mount(e);this.mounted=!0}positioned(){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned()}update(e){this.manager.update(e)}}const showHoverTooltipHost=showTooltip.compute([showHoverTooltip],o=>{let e=o.facet(showHoverTooltip).filter(s=>s);return e.length===0?null:{pos:Math.min(...e.map(s=>s.pos)),end:Math.max(...e.filter(s=>s.end!=null).map(s=>s.end)),create:HoverTooltipHost.create,above:e[0].above,arrow:e.some(s=>s.arrow)}});class HoverPlugin{constructor(e,s,a,c,d){this.view=e,this.source=s,this.field=a,this.setHover=c,this.hoverTime=d,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let e=Date.now()-this.lastMove.time;ec.bottom||s.xc.right+this.view.defaultCharacterWidth)return;let d=this.view.bidiSpans(this.view.state.doc.lineAt(a)).find(k=>k.from<=a&&k.to>=a),_=d&&d.dir==Direction.RTL?-1:1,b=this.source(this.view,a,s.x{this.pending==k&&(this.pending=null,$&&this.view.dispatch({effects:this.setHover.of($)}))},$=>logException(this.view.state,$,"hover tooltip"))}else b&&this.view.dispatch({effects:this.setHover.of(b)})}mousemove(e){var s;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let a=this.active;if(a&&!isInTooltip(this.lastMove.target)||this.pending){let{pos:c}=a||this.pending,d=(s=a==null?void 0:a.end)!==null&&s!==void 0?s:c;(c==d?this.view.posAtCoords(this.lastMove)!=c:!isOverRange(this.view,c,d,e.clientX,e.clientY,6))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1,this.active&&this.view.dispatch({effects:this.setHover.of(null)})}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}function isInTooltip(o){for(let e=o;e;e=e.parentNode)if(e.nodeType==1&&e.classList.contains("cm-tooltip"))return!0;return!1}function isOverRange(o,e,s,a,c,d){let _=document.createRange(),b=o.domAtPos(e),k=o.domAtPos(s);_.setEnd(k.node,k.offset),_.setStart(b.node,b.offset);let $=_.getClientRects();_.detach();for(let j=0;j<$.length;j++){let _e=$[j];if(Math.max(_e.top-c,c-_e.bottom,_e.left-a,a-_e.right)<=d)return!0}return!1}function hoverTooltip(o,e={}){let s=StateEffect.define(),a=StateField.define({create(){return null},update(c,d){if(c&&e.hideOnChange&&(d.docChanged||d.selection))return null;for(let _ of d.effects){if(_.is(s))return _.value;if(_.is(closeHoverTooltipEffect))return null}if(c&&d.docChanged){let _=d.changes.mapPos(c.pos,-1,MapMode.TrackDel);if(_==null)return null;let b=Object.assign(Object.create(null),c);return b.pos=_,c.end!=null&&(b.end=d.changes.mapPos(c.end)),b}return c},provide:c=>showHoverTooltip.from(c)});return[a,ViewPlugin.define(c=>new HoverPlugin(c,o,a,s,e.hoverTime||300)),showHoverTooltipHost]}function getTooltip(o,e){let s=o.plugin(tooltipPlugin);if(!s)return null;let a=s.manager.tooltips.indexOf(e);return a<0?null:s.manager.tooltipViews[a]}const closeHoverTooltipEffect=StateEffect.define();class CompletionContext{constructor(e,s,a){this.state=e,this.pos=s,this.explicit=a,this.abortListeners=[]}tokenBefore(e){let s=syntaxTree(this.state).resolveInner(this.pos,-1);for(;s&&e.indexOf(s.name)<0;)s=s.parent;return s?{from:s.from,to:this.pos,text:this.state.sliceDoc(s.from,this.pos),type:s.type}:null}matchBefore(e){let s=this.state.doc.lineAt(this.pos),a=Math.max(s.from,this.pos-250),c=s.text.slice(a-s.from,this.pos-s.from),d=c.search(ensureAnchor(e,!1));return d<0?null:{from:a+d,to:this.pos,text:c.slice(d)}}get aborted(){return this.abortListeners==null}addEventListener(e,s){e=="abort"&&this.abortListeners&&this.abortListeners.push(s)}}function toSet(o){let e=Object.keys(o).join(""),s=/\w/.test(e);return s&&(e=e.replace(/\w/g,"")),`[${s?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function prefixMatch(o){let e=Object.create(null),s=Object.create(null);for(let{label:c}of o){e[c[0]]=!0;for(let d=1;dtypeof c=="string"?{label:c}:c),[s,a]=e.every(c=>/^\w+$/.test(c.label))?[/\w*$/,/\w+$/]:prefixMatch(e);return c=>{let d=c.matchBefore(a);return d||c.explicit?{from:d?d.from:c.pos,options:e,span:s}:null}}function ifNotIn(o,e){return s=>{for(let a=syntaxTree(s.state).resolveInner(s.pos,-1);a;a=a.parent)if(o.indexOf(a.name)>-1)return null;return e(s)}}class Option{constructor(e,s,a){this.completion=e,this.source=s,this.match=a}}function cur(o){return o.selection.main.head}function ensureAnchor(o,e){var s;let{source:a}=o,c=e&&a[0]!="^",d=a[a.length-1]!="$";return!c&&!d?o:new RegExp(`${c?"^":""}(?:${a})${d?"$":""}`,(s=o.flags)!==null&&s!==void 0?s:o.ignoreCase?"i":"")}const pickedCompletion=Annotation.define();function applyCompletion(o,e){let s=e.completion.apply||e.completion.label,a=e.source;typeof s=="string"?o.dispatch({changes:{from:a.from,to:a.to,insert:s},selection:{anchor:a.from+s.length},userEvent:"input.complete",annotations:pickedCompletion.of(e.completion)}):s(o,e.completion,a.from,a.to)}const SourceCache=new WeakMap;function asSource(o){if(!Array.isArray(o))return o;let e=SourceCache.get(o);return e||SourceCache.set(o,e=completeFromList(o)),e}class FuzzyMatcher{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[];for(let s=0;s=48&&ct<=57||ct>=97&&ct<=122?2:ct>=65&&ct<=90?1:0:(ut=fromCodePoint(ct))!=ut.toLowerCase()?1:ut!=ut.toUpperCase()?2:0;(!at||ot==1&&rt||dt==0&&ot!=0)&&(s[_e]==ct||a[_e]==ct&&(et=!0)?_[_e++]=at:_.length&&(st=!1)),dt=ot,at+=codePointSize(ct)}return _e==k&&_[0]==0&&st?this.result(-100+(et?-200:0),_,e):tt==k&&nt==0?[-200-e.length,0,it]:b>-1?[-700-e.length,b,b+this.pattern.length]:tt==k?[-200+-700-e.length,nt,it]:_e==k?this.result(-100+(et?-200:0)+-700+(st?0:-1100),_,e):s.length==2?null:this.result((c[0]?-700:0)+-200+-1100,c,e)}result(e,s,a){let c=[e-a.length],d=1;for(let _ of s){let b=_+(this.astral?codePointSize(codePointAt(a,_)):1);d>1&&c[d-1]==_?c[d-1]=b:(c[d++]=_,c[d++]=b)}return c}}const completionConfig=Facet.define({combine(o){return combineConfig(o,{activateOnTyping:!0,override:null,maxRenderedOptions:100,defaultKeymap:!0,optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[]},{defaultKeymap:(e,s)=>e&&s,icons:(e,s)=>e&&s,optionClass:(e,s)=>a=>joinClass(e(a),s(a)),addToOptions:(e,s)=>e.concat(s)})}});function joinClass(o,e){return o?e?o+" "+e:o:e}function optionContent(o){let e=o.addToOptions.slice();return o.icons&&e.push({render(s){let a=document.createElement("div");return a.classList.add("cm-completionIcon"),s.type&&a.classList.add(...s.type.split(/\s+/g).map(c=>"cm-completionIcon-"+c)),a.setAttribute("aria-hidden","true"),a},position:20}),e.push({render(s,a,c){let d=document.createElement("span");d.className="cm-completionLabel";let{label:_}=s,b=0;for(let k=1;kb&&d.appendChild(document.createTextNode(_.slice(b,$)));let _e=d.appendChild(document.createElement("span"));_e.appendChild(document.createTextNode(_.slice($,j))),_e.className="cm-completionMatchedText",b=j}return b<_.length&&d.appendChild(document.createTextNode(_.slice(b))),d},position:50},{render(s){if(!s.detail)return null;let a=document.createElement("span");return a.className="cm-completionDetail",a.textContent=s.detail,a},position:80}),e.sort((s,a)=>s.position-a.position).map(s=>s.render)}function rangeAroundSelected(o,e,s){if(o<=s)return{from:0,to:o};if(e<=o>>1){let c=Math.floor(e/s);return{from:c*s,to:(c+1)*s}}let a=Math.floor((o-e)/s);return{from:o-(a+1)*s,to:o-a*s}}class CompletionTooltip{constructor(e,s){this.view=e,this.stateField=s,this.info=null,this.placeInfo={read:()=>this.measureInfo(),write:b=>this.positionInfo(b),key:this};let a=e.state.field(s),{options:c,selected:d}=a.open,_=e.state.facet(completionConfig);this.optionContent=optionContent(_),this.optionClass=_.optionClass,this.range=rangeAroundSelected(c.length,d,_.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.dom.addEventListener("mousedown",b=>{for(let k=b.target,$;k&&k!=this.dom;k=k.parentNode)if(k.nodeName=="LI"&&($=/-(\d+)$/.exec(k.id))&&+$[1]{this.info&&this.view.requestMeasure(this.placeInfo)})}mount(){this.updateSel()}update(e){e.state.field(this.stateField)!=e.startState.field(this.stateField)&&this.updateSel()}positioned(){this.info&&this.view.requestMeasure(this.placeInfo)}updateSel(){let e=this.view.state.field(this.stateField),s=e.open;if((s.selected=this.range.to)&&(this.range=rangeAroundSelected(s.options.length,s.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.list.remove(),this.list=this.dom.appendChild(this.createListBox(s.options,e.id,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfo)})),this.updateSelectedOption(s.selected)){this.info&&(this.info.remove(),this.info=null);let{completion:a}=s.options[s.selected],{info:c}=a;if(!c)return;let d=typeof c=="string"?document.createTextNode(c):c(a);if(!d)return;"then"in d?d.then(_=>{_&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(_)}).catch(_=>logException(this.view.state,_,"completion info")):this.addInfoPane(d)}}addInfoPane(e){let s=this.info=document.createElement("div");s.className="cm-tooltip cm-completionInfo",s.appendChild(e),this.dom.appendChild(s),this.view.requestMeasure(this.placeInfo)}updateSelectedOption(e){let s=null;for(let a=this.list.firstChild,c=this.range.from;a;a=a.nextSibling,c++)c==e?a.hasAttribute("aria-selected")||(a.setAttribute("aria-selected","true"),s=a):a.hasAttribute("aria-selected")&&a.removeAttribute("aria-selected");return s&&scrollIntoView(this.list,s),s}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let s=this.dom.getBoundingClientRect(),a=this.info.getBoundingClientRect(),c=e.getBoundingClientRect();if(c.top>Math.min(innerHeight,s.bottom)-10||c.bottomnew CompletionTooltip(e,o)}function scrollIntoView(o,e){let s=o.getBoundingClientRect(),a=e.getBoundingClientRect();a.tops.bottom&&(o.scrollTop+=a.bottom-s.bottom)}const MaxOptions=300;function score(o){return(o.boost||0)*100+(o.apply?10:0)+(o.info?5:0)+(o.type?1:0)}function sortOptions(o,e){let s=[],a=0;for(let _ of o)if(_.hasResult())if(_.result.filter===!1)for(let b of _.result.options)s.push(new Option(b,_,[1e9-a++]));else{let b=new FuzzyMatcher(e.sliceDoc(_.from,_.to)),k;for(let $ of _.result.options)(k=b.match($.label))&&($.boost!=null&&(k[0]+=$.boost),s.push(new Option($,_,k)))}let c=[],d=null;for(let _ of s.sort(cmpOption)){if(c.length==MaxOptions)break;!d||d.label!=_.completion.label||d.detail!=_.completion.detail||d.type!=_.completion.type||d.apply!=_.completion.apply?c.push(_):score(_.completion)>score(d)&&(c[c.length-1]=_),d=_.completion}return c}class CompletionDialog{constructor(e,s,a,c,d){this.options=e,this.attrs=s,this.tooltip=a,this.timestamp=c,this.selected=d}setSelected(e,s){return e==this.selected||e>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(s,e),this.tooltip,this.timestamp,e)}static build(e,s,a,c,d){let _=sortOptions(e,s);if(!_.length)return null;let b=0;if(c&&c.selected){let k=c.options[c.selected].completion;for(let $=0;$<_.length;$++)if(_[$].completion==k){b=$;break}}return new CompletionDialog(_,makeAttrs(a,b),{pos:e.reduce((k,$)=>$.hasResult()?Math.min(k,$.from):k,1e8),create:completionTooltip(completionState),above:d.aboveCursor},c?c.timestamp:Date.now(),b)}map(e){return new CompletionDialog(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected)}}class CompletionState{constructor(e,s,a){this.active=e,this.id=s,this.open=a}static start(){return new CompletionState(none,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:s}=e,a=s.facet(completionConfig),d=(a.override||s.languageDataAt("autocomplete",cur(s)).map(asSource)).map(b=>(this.active.find($=>$.source==b)||new ActiveSource(b,this.active.some($=>$.state!=0)?1:0)).update(e,a));d.length==this.active.length&&d.every((b,k)=>b==this.active[k])&&(d=this.active);let _=e.selection||d.some(b=>b.hasResult()&&e.changes.touchesRange(b.from,b.to))||!sameResults(d,this.active)?CompletionDialog.build(d,s,this.id,this.open,a):this.open&&e.docChanged?this.open.map(e.changes):this.open;!_&&d.every(b=>b.state!=1)&&d.some(b=>b.hasResult())&&(d=d.map(b=>b.hasResult()?new ActiveSource(b.source,0):b));for(let b of e.effects)b.is(setSelectedEffect)&&(_=_&&_.setSelected(b.value,this.id));return d==this.active&&_==this.open?this:new CompletionState(d,this.id,_)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:baseAttrs}}function sameResults(o,e){if(o==e)return!0;for(let s=0,a=0;;){for(;sd||s=="delete"&&cur(e.startState)==this.from)return new ActiveSource(this.source,s=="input"&&a.activateOnTyping?1:0);let b=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos);return this.span&&(c==d||this.span.test(e.state.sliceDoc(c,d)))?new ActiveResult(this.source,b,this.result,c,d,this.span):new ActiveSource(this.source,1,b)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty?this:new ActiveResult(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1),this.span)}}const startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),setActiveEffect=StateEffect.define({map(o,e){return o.map(s=>s.map(e))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(o,e){return o.update(e)},provide:o=>[showTooltip.from(o,e=>e.tooltip),EditorView.contentAttributes.from(o,e=>e.attrs)]}),CompletionInteractMargin=75;function moveCompletionSelection(o,e="option"){return s=>{let a=s.state.field(completionState,!1);if(!a||!a.open||Date.now()-a.open.timestamp=b&&(_=e=="page"?b-1:0),s.dispatch({effects:setSelectedEffect.of(_)}),!0}}const acceptCompletion=o=>{let e=o.state.field(completionState,!1);return o.state.readOnly||!e||!e.open||Date.now()-e.open.timestampo.state.field(completionState,!1)?(o.dispatch({effects:startCompletionEffect.of(!0)}),!0):!1,closeCompletion=o=>{let e=o.state.field(completionState,!1);return!e||!e.active.some(s=>s.state!=0)?!1:(o.dispatch({effects:closeCompletionEffect.of(null)}),!0)};class RunningQuery{constructor(e,s){this.active=e,this.context=s,this.time=Date.now(),this.updates=[],this.done=void 0}}const DebounceTime=50,MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.composing=0;for(let e of o.state.field(completionState).active)e.state==1&&this.startQuery(e)}update(o){let e=o.state.field(completionState);if(!o.selectionSet&&!o.docChanged&&o.startState.field(completionState)==e)return;let s=o.transactions.some(a=>(a.selection||a.docChanged)&&!getUserEvent(a));for(let a=0;aMaxUpdateCount&&Date.now()-c.time>MinAbortTime){for(let d of c.context.abortListeners)try{d()}catch(_){logException(this.view.state,_)}c.context.abortListeners=null,this.running.splice(a--,1)}else c.updates.push(...o.transactions)}if(this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),this.debounceUpdate=e.active.some(a=>a.state==1&&!this.running.some(c=>c.active.source==a.source))?setTimeout(()=>this.startUpdate(),DebounceTime):-1,this.composing!=0)for(let a of o.transactions)getUserEvent(a)=="input"?this.composing=2:this.composing==2&&a.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1;let{state:o}=this.view,e=o.field(completionState);for(let s of e.active)s.state==1&&!this.running.some(a=>a.active.source==s.source)&&this.startQuery(s)}startQuery(o){let{state:e}=this.view,s=cur(e),a=new CompletionContext(e,s,o.explicitPos==s),c=new RunningQuery(o,a);this.running.push(c),Promise.resolve(o.source(a)).then(d=>{c.context.aborted||(c.done=d||null,this.scheduleAccept())},d=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,d)})}scheduleAccept(){this.running.every(o=>o.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),DebounceTime))}accept(){var o;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],s=this.view.state.facet(completionConfig);for(let a=0;a_.source==c.active.source);if(d&&d.state==1)if(c.done==null){let _=new ActiveSource(c.active.source,0);for(let b of c.updates)_=_.update(b,s);_.state!=1&&e.push(_)}else this.startQuery(d)}e.length&&this.view.dispatch({effects:setActiveEffect.of(e)})}},{eventHandlers:{compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),baseTheme$1=EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",listStyle:"none",margin:0,padding:0,"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer",padding:"1px 3px",lineHeight:1.2}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"300px"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class FieldPos{constructor(e,s,a,c){this.field=e,this.line=s,this.from=a,this.to=c}}class FieldRange{constructor(e,s,a){this.field=e,this.from=s,this.to=a}map(e){let s=e.mapPos(this.from,-1,MapMode.TrackDel),a=e.mapPos(this.to,1,MapMode.TrackDel);return s==null||a==null?null:new FieldRange(this.field,s,a)}}class Snippet{constructor(e,s){this.lines=e,this.fieldPositions=s}instantiate(e,s){let a=[],c=[s],d=e.doc.lineAt(s),_=/^\s*/.exec(d.text)[0];for(let k of this.lines){if(a.length){let $=_,j=/^\t*/.exec(k)[0].length;for(let _e=0;_enew FieldRange(k.field,c[k.line]+k.from,c[k.line]+k.to));return{text:a,ranges:b}}static parse(e){let s=[],a=[],c=[],d;for(let _ of e.split(/\r\n?|\n/)){for(;d=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(_);){let b=d[1]?+d[1]:null,k=d[2]||d[3]||"",$=-1;for(let j=0;j=$&&_e.field++}c.push(new FieldPos($,a.length,d.index,d.index+k.length)),_=_.slice(0,d.index)+k+_.slice(d.index+d[0].length)}a.push(_)}return new Snippet(a,c)}}let fieldMarker=Decoration.widget({widget:new class extends WidgetType{toDOM(){let o=document.createElement("span");return o.className="cm-snippetFieldPosition",o}ignoreEvent(){return!1}}}),fieldRange=Decoration.mark({class:"cm-snippetField"});class ActiveSnippet{constructor(e,s){this.ranges=e,this.active=s,this.deco=Decoration.set(e.map(a=>(a.from==a.to?fieldMarker:fieldRange).range(a.from,a.to)))}map(e){let s=[];for(let a of this.ranges){let c=a.map(e);if(!c)return null;s.push(c)}return new ActiveSnippet(s,this.active)}selectionInsideField(e){return e.ranges.every(s=>this.ranges.some(a=>a.field==this.active&&a.from<=s.from&&a.to>=s.to))}}const setActive=StateEffect.define({map(o,e){return o&&o.map(e)}}),moveToField=StateEffect.define(),snippetState=StateField.define({create(){return null},update(o,e){for(let s of e.effects){if(s.is(setActive))return s.value;if(s.is(moveToField)&&o)return new ActiveSnippet(o.ranges,s.value)}return o&&e.docChanged&&(o=o.map(e.changes)),o&&e.selection&&!o.selectionInsideField(e.selection)&&(o=null),o},provide:o=>EditorView.decorations.from(o,e=>e?e.deco:Decoration.none)});function fieldSelection(o,e){return EditorSelection.create(o.filter(s=>s.field==e).map(s=>EditorSelection.range(s.from,s.to)))}function snippet(o){let e=Snippet.parse(o);return(s,a,c,d)=>{let{text:_,ranges:b}=e.instantiate(s.state,c),k={changes:{from:c,to:d,insert:Text.of(_)}};if(b.length&&(k.selection=fieldSelection(b,0)),b.length>1){let $=new ActiveSnippet(b,0),j=k.effects=[setActive.of($)];s.state.field(snippetState,!1)===void 0&&j.push(StateEffect.appendConfig.of([snippetState,addSnippetKeymap,snippetPointerHandler,baseTheme$1]))}s.dispatch(s.state.update(k))}}function moveField(o){return({state:e,dispatch:s})=>{let a=e.field(snippetState,!1);if(!a||o<0&&a.active==0)return!1;let c=a.active+o,d=o>0&&!a.ranges.some(_=>_.field==c+o);return s(e.update({selection:fieldSelection(a.ranges,c),effects:setActive.of(d?null:new ActiveSnippet(a.ranges,c))})),!0}}const clearSnippet=({state:o,dispatch:e})=>o.field(snippetState,!1)?(e(o.update({effects:setActive.of(null)})),!0):!1,nextSnippetField=moveField(1),prevSnippetField=moveField(-1),defaultSnippetKeymap=[{key:"Tab",run:nextSnippetField,shift:prevSnippetField},{key:"Escape",run:clearSnippet}],snippetKeymap=Facet.define({combine(o){return o.length?o[0]:defaultSnippetKeymap}}),addSnippetKeymap=Prec.highest(keymap.compute([snippetKeymap],o=>o.facet(snippetKeymap)));function snippetCompletion(o,e){return Object.assign(Object.assign({},e),{apply:snippet(o)})}const snippetPointerHandler=EditorView.domEventHandlers({mousedown(o,e){let s=e.state.field(snippetState,!1),a;if(!s||(a=e.posAtCoords({x:o.clientX,y:o.clientY}))==null)return!1;let c=s.ranges.find(d=>d.from<=a&&d.to>=a);return!c||c.field==s.active?!1:(e.dispatch({selection:fieldSelection(s.ranges,c.field),effects:setActive.of(s.ranges.some(d=>d.field>c.field)?new ActiveSnippet(s.ranges,c.field):null)}),!0)}});function autocompletion(o={}){return[completionState,completionConfig.of(o),completionPlugin,completionKeymapExt,baseTheme$1]}const completionKeymap=[{key:"Ctrl-Space",run:startCompletion},{key:"Escape",run:closeCompletion},{key:"ArrowDown",run:moveCompletionSelection(!0)},{key:"ArrowUp",run:moveCompletionSelection(!1)},{key:"PageDown",run:moveCompletionSelection(!0,"page")},{key:"PageUp",run:moveCompletionSelection(!1,"page")},{key:"Enter",run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],o=>o.facet(completionConfig).defaultKeymap?[completionKeymap]:[])),toggleComment=o=>{let e=getConfig(o.state);return e.line?toggleLineComment(o):e.block?toggleBlockCommentByLine(o):!1};function command(o,e){return({state:s,dispatch:a})=>{if(s.readOnly)return!1;let c=o(e,s);return c?(a(s.update(c)),!0):!1}}const toggleLineComment=command(changeLineComment,0),toggleBlockComment=command(changeBlockComment,0),toggleBlockCommentByLine=command((o,e)=>changeBlockComment(o,e,selectedLineRanges(e)),0),commentKeymap=[{key:"Mod-/",run:toggleComment},{key:"Alt-A",run:toggleBlockComment}];function getConfig(o,e=o.selection.main.head){let s=o.languageDataAt("commentTokens",e);return s.length?s[0]:{}}const SearchMargin=50;function findBlockComment(o,{open:e,close:s},a,c){let d=o.sliceDoc(a-SearchMargin,a),_=o.sliceDoc(c,c+SearchMargin),b=/\s*$/.exec(d)[0].length,k=/^\s*/.exec(_)[0].length,$=d.length-b;if(d.slice($-e.length,$)==e&&_.slice(k,k+s.length)==s)return{open:{pos:a-b,margin:b&&1},close:{pos:c+k,margin:k&&1}};let j,_e;c-a<=2*SearchMargin?j=_e=o.sliceDoc(a,c):(j=o.sliceDoc(a,a+SearchMargin),_e=o.sliceDoc(c-SearchMargin,c));let et=/^\s*/.exec(j)[0].length,tt=/\s*$/.exec(_e)[0].length,nt=_e.length-tt-s.length;return j.slice(et,et+e.length)==e&&_e.slice(nt,nt+s.length)==s?{open:{pos:a+et+e.length,margin:/\s/.test(j.charAt(et+e.length))?1:0},close:{pos:c-tt-s.length,margin:/\s/.test(_e.charAt(nt-1))?1:0}}:null}function selectedLineRanges(o){let e=[];for(let s of o.selection.ranges){let a=o.doc.lineAt(s.from),c=s.to<=a.to?a:o.doc.lineAt(s.to),d=e.length-1;d>=0&&e[d].to>a.from?e[d].to=c.to:e.push({from:a.from,to:c.to})}return e}function changeBlockComment(o,e,s=e.selection.ranges){let a=s.map(d=>getConfig(e,d.from).block);if(!a.every(d=>d))return null;let c=s.map((d,_)=>findBlockComment(e,a[_],d.from,d.to));if(o!=2&&!c.every(d=>d))return{changes:e.changes(s.map((d,_)=>c[_]?[]:[{from:d.from,insert:a[_].open+" "},{from:d.to,insert:" "+a[_].close}]))};if(o!=1&&c.some(d=>d)){let d=[];for(let _=0,b;_c&&(d==_||_>j.from)){c=j.from;let _e=getConfig(e,$).line;if(!_e)continue;let et=/^\s*/.exec(j.text)[0].length,tt=et==j.length,nt=j.text.slice(et,et+_e.length)==_e?et:-1;etd.comment<0&&(!d.empty||d.single))){let d=[];for(let{line:b,token:k,indent:$,empty:j,single:_e}of a)(_e||!j)&&d.push({from:b.from+$,insert:k+" "});let _=e.changes(d);return{changes:_,selection:e.selection.map(_,1)}}else if(o!=1&&a.some(d=>d.comment>=0)){let d=[];for(let{line:_,comment:b,token:k}of a)if(b>=0){let $=_.from+b,j=$+k.length;_.text[j-_.from]==" "&&j++,d.push({from:$,to:j})}return{changes:d}}return null}const MaxOff=2e3;function rectangleFor(o,e,s){let a=Math.min(e.line,s.line),c=Math.max(e.line,s.line),d=[];if(e.off>MaxOff||s.off>MaxOff||e.col<0||s.col<0){let _=Math.min(e.off,s.off),b=Math.max(e.off,s.off);for(let k=a;k<=c;k++){let $=o.doc.line(k);$.length<=b&&d.push(EditorSelection.range($.from+_,$.to+b))}}else{let _=Math.min(e.col,s.col),b=Math.max(e.col,s.col);for(let k=a;k<=c;k++){let $=o.doc.line(k),j=findColumn($.text,_,o.tabSize,!0);if(j>-1){let _e=findColumn($.text,b,o.tabSize);d.push(EditorSelection.range($.from+j,$.from+_e))}}}return d}function absoluteColumn(o,e){let s=o.coordsAtPos(o.viewport.from);return s?Math.round(Math.abs((s.left-e)/o.defaultCharacterWidth)):-1}function getPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1),a=o.state.doc.lineAt(s),c=s-a.from,d=c>MaxOff?-1:c==a.length?absoluteColumn(o,e.clientX):countColumn(a.text,o.state.tabSize,s-a.from);return{line:a.number,col:d,off:c}}function rectangleSelectionStyle(o,e){let s=getPos(o,e),a=o.state.selection;return s?{update(c){if(c.docChanged){let d=c.changes.mapPos(c.startState.doc.line(s.line).from),_=c.state.doc.lineAt(d);s={line:_.number,col:s.col,off:Math.min(s.off,_.length)},a=a.map(c.changes)}},get(c,d,_){let b=getPos(o,c);if(!b)return a;let k=rectangleFor(o.state,s,b);return k.length?_?EditorSelection.create(k.concat(a.ranges)):EditorSelection.create(k):a}}:null}function rectangularSelection(o){let e=(o==null?void 0:o.eventFilter)||(s=>s.altKey&&s.button==0);return EditorView.mouseSelectionStyle.of((s,a)=>e(a)?rectangleSelectionStyle(s,a):null)}let nextTagID=0;class Tag{constructor(e,s,a){this.set=e,this.base=s,this.modified=a,this.id=nextTagID++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let s=new Tag([],null,[]);if(s.set.push(s),e)for(let a of e.set)s.set.push(a);return s}static defineModifier(){let e=new Modifier;return s=>s.modified.indexOf(e)>-1?s:Modifier.get(s.base||s,s.modified.concat(e).sort((a,c)=>a.id-c.id))}}let nextModifierID=0;class Modifier{constructor(){this.instances=[],this.id=nextModifierID++}static get(e,s){if(!s.length)return e;let a=s[0].instances.find(b=>b.base==e&&sameArray(s,b.modified));if(a)return a;let c=[],d=new Tag(c,e,s);for(let b of s)b.instances.push(d);let _=permute(s);for(let b of e.set)for(let k of _)c.push(Modifier.get(b,k));return d}}function sameArray(o,e){return o.length==e.length&&o.every((s,a)=>s==e[a])}function permute(o){let e=[o];for(let s=0;s0&&_e+3==c.length){_=1;break}let et=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(b);if(!et)throw new RangeError("Invalid path: "+c);if(d.push(et[0]=="*"?null:et[0][0]=='"'?JSON.parse(et[0]):et[0]),_e+=et[0].length,_e==c.length)break;let tt=c[_e++];if(_e==c.length&&tt=="!"){_=0;break}if(tt!="/")throw new RangeError("Invalid path: "+c);b=c.slice(_e)}let k=d.length-1,$=d[k];if(!$)throw new RangeError("Invalid path: "+c);let j=new Rule(a,_,k>0?d.slice(0,k):null);e[$]=j.sort(e[$])}}return ruleNodeProp.add(e)}const ruleNodeProp=new NodeProp,highlightStyle=Facet.define({combine(o){return o.length?HighlightStyle.combinedMatch(o):null}}),fallbackHighlightStyle=Facet.define({combine(o){return o.length?o[0].match:null}});function getHighlightStyle(o){return o.facet(highlightStyle)||o.facet(fallbackHighlightStyle)}class Rule{constructor(e,s,a,c){this.tags=e,this.mode=s,this.context=a,this.next=c}sort(e){return!e||e.depth_.facet(EditorView.darkTheme)==(s.themeType=="dark")?[this]:[])),this.fallback=d.concat(fallbackHighlightStyle.of(this))}match(e,s){if(this.scope&&s!=this.scope)return null;for(let a of e.set){let c=this.map[a.id];if(c!==void 0)return a!=e&&(this.map[e.id]=c),c}return this.map[e.id]=this.all}static combinedMatch(e){if(e.length==1)return e[0].match;let s=e.some(a=>a.scope)?void 0:Object.create(null);return(a,c)=>{let d=s&&s[a.id];if(d!==void 0)return d;let _=null;for(let b of e){let k=b.match(a,c);k&&(_=_?_+" "+k:k)}return s&&(s[a.id]=_),_}}static define(e,s){return new HighlightStyle(e,s||{})}static get(e,s,a){let c=getHighlightStyle(e);return c&&c(s,a||NodeType.none)}}class TreeHighlighter{constructor(e){this.markCache=Object.create(null),this.tree=syntaxTree(e.state),this.decorations=this.buildDeco(e,getHighlightStyle(e.state))}update(e){let s=syntaxTree(e.state),a=getHighlightStyle(e.state),c=a!=e.startState.facet(highlightStyle);s.length{a.add(_,b,this.markCache[k]||(this.markCache[k]=Decoration.mark({class:k})))});return a.finish()}}const treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:o=>o.decorations})),nodeStack=[""];class HighlightBuilder{constructor(e,s,a){this.at=e,this.style=s,this.span=a,this.class=""}startSpan(e,s){s!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=s)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,s,a,c,d,_){let{type:b,from:k,to:$}=e;if(k>=a||$<=s)return;nodeStack[d]=b.name,b.isTop&&(_=b);let j=c,_e=b.prop(ruleNodeProp),et=!1;for(;_e;){if(!_e.context||matchContext(_e.context,nodeStack,d)){for(let nt of _e.tags){let it=this.style(nt,_);it&&(j&&(j+=" "),j+=it,_e.mode==1?c+=(c?" ":"")+it:_e.mode==0&&(et=!0))}break}_e=_e.next}if(this.startSpan(e.from,j),et)return;let tt=e.tree&&e.tree.prop(NodeProp.mounted);if(tt&&tt.overlay){let nt=e.node.enter(tt.overlay[0].from+k,1),it=e.firstChild();for(let rt=0,st=k;;rt++){let at=rt=lt||!e.nextSibling())););if(!at||lt>a)break;st=at.to+k,st>s&&(this.highlightRange(nt.cursor,Math.max(s,at.from+k),Math.min(a,st),c,d,tt.tree.type),this.startSpan(st,j))}it&&e.parent()}else if(e.firstChild()){do if(!(e.to<=s)){if(e.from>=a)break;this.highlightRange(e,s,a,c,d+1,_),this.startSpan(Math.min(a,e.to),j)}while(e.nextSibling());e.parent()}}}function highlightTreeRange(o,e,s,a,c){let d=new HighlightBuilder(e,a,c);d.highlightRange(o.cursor(),e,s,"",0,o.type),d.flush(s)}function matchContext(o,e,s){if(o.length>s-1)return!1;for(let a=s-1,c=o.length-1;c>=0;c--,a--){let d=o[c];if(d&&d!=e[a])return!1}return!0}const t=Tag.define,comment=t(),name=t(),typeName=t(name),propertyName=t(name),literal=t(),string=t(literal),number=t(literal),content=t(),heading=t(content),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment,lineComment:t(comment),blockComment:t(comment),docComment:t(comment),name,variableName:t(name),typeName,tagName:t(typeName),propertyName,attributeName:t(propertyName),className:t(name),labelName:t(name),namespace:t(name),macroName:t(name),literal,string,docString:t(string),character:t(string),attributeValue:t(string),number,integer:t(number),float:t(number),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content,heading,heading1:t(heading),heading2:t(heading),heading3:t(heading),heading4:t(heading),heading5:t(heading),heading6:t(heading),contentSeparator:t(content),list:t(content),quote:t(content),emphasis:t(content),strong:t(content),link:t(content),monospace:t(content),strikethrough:t(content),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(),constant:Tag.defineModifier(),function:Tag.defineModifier(),standard:Tag.defineModifier(),local:Tag.defineModifier(),special:Tag.defineModifier()},defaultHighlightStyle=HighlightStyle.define([{tag:tags.link,textDecoration:"underline"},{tag:tags.heading,textDecoration:"underline",fontWeight:"bold"},{tag:tags.emphasis,fontStyle:"italic"},{tag:tags.strong,fontWeight:"bold"},{tag:tags.strikethrough,textDecoration:"line-through"},{tag:tags.keyword,color:"#708"},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:"#219"},{tag:[tags.literal,tags.inserted],color:"#164"},{tag:[tags.string,tags.deleted],color:"#a11"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:"#e40"},{tag:tags.definition(tags.variableName),color:"#00f"},{tag:tags.local(tags.variableName),color:"#30a"},{tag:[tags.typeName,tags.namespace],color:"#085"},{tag:tags.className,color:"#167"},{tag:[tags.special(tags.variableName),tags.macroName],color:"#256"},{tag:tags.definition(tags.propertyName),color:"#00c"},{tag:tags.comment,color:"#940"},{tag:tags.meta,color:"#7a757a"},{tag:tags.invalid,color:"#f00"}]);tags.link,tags.heading,tags.emphasis,tags.strong,tags.keyword,tags.atom,tags.bool,tags.url,tags.labelName,tags.inserted,tags.deleted,tags.literal,tags.string,tags.number,tags.regexp,tags.escape,tags.string,tags.variableName,tags.variableName,tags.variableName,tags.variableName,tags.propertyName,tags.typeName,tags.namespace,tags.className,tags.macroName,tags.propertyName,tags.operator,tags.comment,tags.meta,tags.invalid,tags.punctuation;class SelectedDiagnostic{constructor(e,s,a){this.from=e,this.to=s,this.diagnostic=a}}class LintState{constructor(e,s,a){this.diagnostics=e,this.panel=s,this.selected=a}static init(e,s,a){let c=Decoration.set(e.map(d=>d.from==d.to||d.from==d.to-1&&a.doc.lineAt(d.from).to==d.from?Decoration.widget({widget:new DiagnosticWidget(d),diagnostic:d}).range(d.from):Decoration.mark({attributes:{class:"cm-lintRange cm-lintRange-"+d.severity},diagnostic:d}).range(d.from,d.to)),!0);return new LintState(c,s,findDiagnostic(c))}}function findDiagnostic(o,e=null,s=0){let a=null;return o.between(s,1e9,(c,d,{spec:_})=>{if(!(e&&_.diagnostic!=e))return a=new SelectedDiagnostic(c,d,_.diagnostic),!1}),a}function maybeEnableLint(o,e){return o.field(lintState,!1)?e:e.concat(StateEffect.appendConfig.of([lintState,EditorView.decorations.compute([lintState],s=>{let{selected:a,panel:c}=s.field(lintState);return!a||!c||a.from==a.to?Decoration.none:Decoration.set([activeMark.range(a.from,a.to)])}),hoverTooltip(lintTooltip),baseTheme]))}const setDiagnosticsEffect=StateEffect.define(),togglePanel=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(o,e){if(e.docChanged){let s=o.diagnostics.map(e.changes),a=null;if(o.selected){let c=e.changes.mapPos(o.selected.from,1);a=findDiagnostic(s,o.selected.diagnostic,c)||findDiagnostic(s,null,c)}o=new LintState(s,o.panel,a)}for(let s of e.effects)s.is(setDiagnosticsEffect)?o=LintState.init(s.value,o.panel,e.state):s.is(togglePanel)?o=new LintState(o.diagnostics,s.value?LintPanel.open:null,o.selected):s.is(movePanelSelection)&&(o=new LintState(o.diagnostics,o.panel,s.value));return o},provide:o=>[showPanel.from(o,e=>e.panel),EditorView.decorations.from(o,e=>e.diagnostics)]}),activeMark=Decoration.mark({class:"cm-lintRange cm-lintRange-active"});function lintTooltip(o,e,s){let{diagnostics:a}=o.state.field(lintState),c=[],d=2e8,_=0;return a.between(e-(s<0?1:0),e+(s>0?1:0),(b,k,{spec:$})=>{e>=b&&e<=k&&(b==k||(e>b||s>0)&&(erenderDiagnostic(o,s,!1)))}const openLintPanel=o=>{let e=o.state.field(lintState,!1);(!e||!e.panel)&&o.dispatch({effects:maybeEnableLint(o.state,[togglePanel.of(!0)])});let s=getPanel(o,LintPanel.open);return s&&s.dom.querySelector(".cm-panel-lint ul").focus(),!0},closeLintPanel=o=>{let e=o.state.field(lintState,!1);return!e||!e.panel?!1:(o.dispatch({effects:togglePanel.of(!1)}),!0)},nextDiagnostic=o=>{let e=o.state.field(lintState,!1);if(!e)return!1;let s=o.state.selection.main,a=e.diagnostics.iter(s.to+1);return!a.value&&(a=e.diagnostics.iter(0),!a.value||a.from==s.from&&a.to==s.to)?!1:(o.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0}),!0)},lintKeymap=[{key:"Mod-Shift-m",run:openLintPanel},{key:"F8",run:nextDiagnostic}];function assignKeys(o){let e=[];if(o)e:for(let{name:s}of o){for(let a=0;ad.toLowerCase()==c.toLowerCase())){e.push(c);continue e}}e.push("")}return e}function renderDiagnostic(o,e,s){var a;let c=s?assignKeys(e.actions):[];return crelt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},crelt("span",{class:"cm-diagnosticText"},e.message),(a=e.actions)===null||a===void 0?void 0:a.map((d,_)=>{let b=_e=>{_e.preventDefault();let et=findDiagnostic(o.state.field(lintState).diagnostics,e);et&&d.apply(o,et.from,et.to)},{name:k}=d,$=c[_]?k.indexOf(c[_]):-1,j=$<0?k:[k.slice(0,$),crelt("u",k.slice($,$+1)),k.slice($+1)];return crelt("button",{type:"button",class:"cm-diagnosticAction",onclick:b,onmousedown:b,"aria-label":` Action: ${k}${$<0?"":` (access key "${c[_]})"`}.`},j)}),e.source&&crelt("div",{class:"cm-diagnosticSource"},e.source))}class DiagnosticWidget extends WidgetType{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return crelt("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class PanelItem{constructor(e,s){this.diagnostic=s,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=renderDiagnostic(e,s,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class LintPanel{constructor(e){this.view=e,this.items=[];let s=c=>{if(c.keyCode==27)closeLintPanel(this.view),this.view.focus();else if(c.keyCode==38||c.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(c.keyCode==40||c.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(c.keyCode==36)this.moveSelection(0);else if(c.keyCode==35)this.moveSelection(this.items.length-1);else if(c.keyCode==13)this.view.focus();else if(c.keyCode>=65&&c.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:d}=this.items[this.selectedIndex],_=assignKeys(d.actions);for(let b=0;b<_.length;b++)if(_[b].toUpperCase().charCodeAt(0)==c.keyCode){let k=findDiagnostic(this.view.state.field(lintState).diagnostics,d);k&&d.actions[b].apply(e,k.from,k.to)}}else return;c.preventDefault()},a=c=>{for(let d=0;dcloseLintPanel(this.view)},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(lintState).selected;if(!e)return-1;for(let s=0;s{let $=-1,j;for(let _e=a;_ea&&(this.items.splice(a,$-a),c=!0)),s&&j.diagnostic==s.diagnostic?j.dom.hasAttribute("aria-selected")||(j.dom.setAttribute("aria-selected","true"),d=j):j.dom.hasAttribute("aria-selected")&&j.dom.removeAttribute("aria-selected"),a++});a({sel:d.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:_,panel:b})=>{_.topb.bottom&&(this.list.scrollTop+=_.bottom-b.bottom)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),c&&this.sync()}sync(){let e=this.list.firstChild;function s(){let a=e;e=a.nextSibling,a.remove()}for(let a of this.items)if(a.dom.parentNode==this.list){for(;e!=a.dom;)s();e=a.dom.nextSibling}else this.list.insertBefore(a.dom,e);for(;e;)s()}moveSelection(e){if(this.selectedIndex<0)return;let s=this.view.state.field(lintState),a=findDiagnostic(s.diagnostics,this.items[e].diagnostic);!a||this.view.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0,effects:movePanelSelection.of(a)})}static open(e){return new LintPanel(e)}}function svg(o,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(o)}')`}function underline(o){return svg(``,'width="6" height="3"')}const baseTheme=EditorView.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:underline("#d11")},".cm-lintRange-warning":{backgroundImage:underline("orange")},".cm-lintRange-info":{backgroundImage:underline("#999")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/** @license React v17.0.2 - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var f=react.exports,g=60103;reactJsxRuntime_production_min.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var h=Symbol.for;g=h("react.element"),reactJsxRuntime_production_min.Fragment=h("react.fragment")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};function q(o,e,s){var a,c={},d=null,_=null;s!==void 0&&(d=""+s),e.key!==void 0&&(d=""+e.key),e.ref!==void 0&&(_=e.ref);for(a in e)n.call(e,a)&&!p.hasOwnProperty(a)&&(c[a]=e[a]);if(o&&o.defaultProps)for(a in e=o.defaultProps,e)c[a]===void 0&&(c[a]=e[a]);return{$$typeof:g,type:o,key:d,ref:_,props:c,_owner:m.current}}reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;jsxRuntime.exports=reactJsxRuntime_production_min;const jsx=jsxRuntime.exports.jsx,jsxs=jsxRuntime.exports.jsxs,Fragment=jsxRuntime.exports.Fragment;/*! @license ReactCodeMirror - MIT License - Tom Golden (8162045+tbjgolden@users.noreply.github.com) */var __assign=function(){return __assign=Object.assign||function(e){for(var s,a=1,c=arguments.length;a0)&&!(c=a.next()).done;)d.push(c.value)}catch(b){_={error:b}}finally{try{c&&!c.done&&(s=a.return)&&s.call(a)}finally{if(_)throw _.error}}return d}function __spreadArray(o,e,s){if(s||arguments.length===2)for(var a=0,c=e.length,d;as%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,s,a=0){let c=e.parser.context;return new Stack(e,[],s,a,a,0,[],0,c?new StackContext(c,c.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,s){this.stack.push(this.state,s,this.bufferBase+this.buffer.length),this.state=e}reduce(e){let s=e>>19,a=e&65535,{parser:c}=this.p,d=c.dynamicPrecedence(a);if(d&&(this.score+=d),s==0){this.pushState(c.getGoto(this.state,a,!0),this.reducePos),a_;)this.stack.pop();this.reduceContext(a,b)}storeNode(e,s,a,c=4,d=!1){if(e==0){let _=this,b=this.buffer.length;if(b==0&&_.parent&&(b=_.bufferBase-_.parent.bufferBase,_=_.parent),b>0&&_.buffer[b-4]==0&&_.buffer[b-1]>-1){if(s==a)return;if(_.buffer[b-2]>=s){_.buffer[b-2]=a;return}}}if(!d||this.pos==a)this.buffer.push(e,s,a,c);else{let _=this.buffer.length;if(_>0&&this.buffer[_-4]!=0)for(;_>0&&this.buffer[_-2]>a;)this.buffer[_]=this.buffer[_-4],this.buffer[_+1]=this.buffer[_-3],this.buffer[_+2]=this.buffer[_-2],this.buffer[_+3]=this.buffer[_-1],_-=4,c>4&&(c-=4);this.buffer[_]=e,this.buffer[_+1]=s,this.buffer[_+2]=a,this.buffer[_+3]=c}}shift(e,s,a){let c=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let d=e,{parser:_}=this.p;(a>this.pos||s<=_.maxNode)&&(this.pos=a,_.stateFlag(d,1)||(this.reducePos=a)),this.pushState(d,c),this.shiftContext(s,c),s<=_.maxNode&&this.buffer.push(s,c,a,4)}else this.pos=a,this.shiftContext(s,c),s<=this.p.parser.maxNode&&this.buffer.push(s,c,a,4)}apply(e,s,a){e&65536?this.reduce(e):this.shift(e,s,a)}useNode(e,s){let a=this.p.reused.length-1;(a<0||this.p.reused[a]!=e)&&(this.p.reused.push(e),a++);let c=this.pos;this.reducePos=this.pos=c+e.length,this.pushState(s,c),this.buffer.push(a,c,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,s=e.buffer.length;for(;s>0&&e.buffer[s-2]>e.reducePos;)s-=4;let a=e.buffer.slice(s),c=e.bufferBase+s;for(;e&&c==e.bufferBase;)e=e.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,a,c,this.curContext,this.lookAhead,e)}recoverByDelete(e,s){let a=e<=this.p.parser.maxNode;a&&this.storeNode(e,this.pos,s,4),this.storeNode(0,this.pos,s,a?8:4),this.pos=this.reducePos=s,this.score-=190}canShift(e){for(let s=new SimulatedStack(this);;){let a=this.p.parser.stateSlot(s.state,4)||this.p.parser.hasAction(s.state,e);if((a&65536)==0)return!0;if(a==0)return!1;s.reduce(a)}}recoverByInsert(e){if(this.stack.length>=300)return[];let s=this.p.parser.nextStates(this.state);if(s.length>4<<1||this.stack.length>=120){let c=[];for(let d=0,_;dk&1&&b==_)||c.push(s[d],_)}s=c}let a=[];for(let c=0;c>19,c=e&65535,d=this.stack.length-a*3;if(d<0||s.getGoto(this.stack[d],c,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reduce(e),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let s=0;sthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class StackContext{constructor(e,s){this.tracker=e,this.context=s,this.hash=e.strict?e.hash(s):0}}var Recover;(function(o){o[o.Insert=200]="Insert",o[o.Delete=190]="Delete",o[o.Reduce=100]="Reduce",o[o.MaxNext=4]="MaxNext",o[o.MaxInsertStackDepth=300]="MaxInsertStackDepth",o[o.DampenInsertStackDepth=120]="DampenInsertStackDepth"})(Recover||(Recover={}));class SimulatedStack{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let s=e&65535,a=e>>19;a==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(a-1)*3;let c=this.start.p.parser.getGoto(this.stack[this.base-3],s,!0);this.state=c}}class StackBufferCursor{constructor(e,s,a){this.stack=e,this.pos=s,this.index=a,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,s=e.bufferBase+e.buffer.length){return new StackBufferCursor(e,s,s-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new StackBufferCursor(this.stack,this.pos,this.index)}}class CachedToken{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const nullToken=new CachedToken;class InputStream{constructor(e,s){this.input=e,this.ranges=s,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=nullToken,this.rangeIndex=0,this.pos=this.chunkPos=s[0].from,this.range=s[0],this.end=s[s.length-1].to,this.readNext()}resolveOffset(e,s){let a=this.range,c=this.rangeIndex,d=this.pos+e;for(;da.to:d>=a.to;){if(c==this.ranges.length-1)return null;let _=this.ranges[++c];d+=_.from-a.to,a=_}return d}peek(e){let s=this.chunkOff+e,a,c;if(s>=0&&s=this.chunk2Pos&&ab.to&&(this.chunk2=this.chunk2.slice(0,b.to-a)),c=this.chunk2.charCodeAt(0)}}return a>=this.token.lookAhead&&(this.token.lookAhead=a+1),c}acceptToken(e,s=0){let a=s?this.resolveOffset(s,-1):this.pos;if(a==null||a=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,s){if(s?(this.token=s,s.start=e,s.lookAhead=e+1,s.value=s.extended=-1):this.token=nullToken,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&s<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,s-this.chunkPos);if(e>=this.chunk2Pos&&s<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,s-this.chunk2Pos);if(e>=this.range.from&&s<=this.range.to)return this.input.read(e,s);let a="";for(let c of this.ranges){if(c.from>=s)break;c.to>e&&(a+=this.input.read(Math.max(c.from,e),Math.min(c.to,s)))}return a}}class TokenGroup{constructor(e,s){this.data=e,this.id=s}token(e,s){readToken(this.data,e,s,this.id)}}TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1;class ExternalTokenizer{constructor(e,s={}){this.token=e,this.contextual=!!s.contextual,this.fallback=!!s.fallback,this.extend=!!s.extend}}function readToken(o,e,s,a){let c=0,d=1<0){let j=o[$];if(b.allows(j)&&(e.token.value==-1||e.token.value==j||_.overrides(j,e.token.value))){e.acceptToken(j);break}}for(let $=e.next,j=0,_e=o[c+2];j<_e;){let et=j+_e>>1,tt=k+et+(et<<1),nt=o[tt],it=o[tt+1];if($=it)j=et+1;else{c=o[tt+2],e.advance();continue e}}break}}function decodeArray(o,e=Uint16Array){if(typeof o!="string")return o;let s=null;for(let a=0,c=0;a=92&&_--,_>=34&&_--;let k=_-32;if(k>=46&&(k-=46,b=!0),d+=k,b)break;d*=46}s?s[c++]=d:s=new e(d)}return s}const verbose=typeof process!="undefined"&&/\bparse\b/.test({}.LOG);let stackIDs=null;var Safety;(function(o){o[o.Margin=25]="Margin"})(Safety||(Safety={}));function cutAt(o,e,s){let a=o.fullCursor();for(a.moveTo(e);;)if(!(s<0?a.childBefore(e):a.childAfter(e)))for(;;){if((s<0?a.toe)&&!a.type.isError)return s<0?Math.max(0,Math.min(a.to-1,e-25)):Math.min(o.length,Math.max(a.from+1,e+25));if(s<0?a.prevSibling():a.nextSibling())break;if(!a.parent())return s<0?0:o.length}}class FragmentCursor{constructor(e,s){this.fragments=e,this.nodeSet=s,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?cutAt(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?cutAt(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=_,null;if(d instanceof Tree){if(_==e){if(_=Math.max(this.safeFrom,e)&&(this.trees.push(d),this.start.push(_),this.index.push(0))}else this.index[s]++,this.nextStart=_+d.length}}}class TokenCache{constructor(e,s){this.stream=s,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(a=>new CachedToken)}getActions(e){let s=0,a=null,{parser:c}=e.p,{tokenizers:d}=c,_=c.stateSlot(e.state,3),b=e.curContext?e.curContext.hash:0,k=0;for(let $=0;$_e.end+25&&(k=Math.max(_e.lookAhead,k)),_e.value!=0)){let et=s;if(_e.extended>-1&&(s=this.addActions(e,_e.extended,_e.end,s)),s=this.addActions(e,_e.value,_e.end,s),!j.extend&&(a=_e,s>et))break}}for(;this.actions.length>s;)this.actions.pop();return k&&e.setLookAhead(k),!a&&e.pos==this.stream.end&&(a=new CachedToken,a.value=e.p.parser.eofTerm,a.start=a.end=e.pos,s=this.addActions(e,a.value,a.end,s)),this.mainToken=a,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let s=new CachedToken,{pos:a,p:c}=e;return s.start=a,s.end=Math.min(a+1,c.stream.end),s.value=a==c.stream.end?c.parser.eofTerm:0,s}updateCachedToken(e,s,a){if(s.token(this.stream.reset(a.pos,e),a),e.value>-1){let{parser:c}=a.p;for(let d=0;d=0&&a.p.parser.dialect.allows(_>>1)){(_&1)==0?e.value=_>>1:e.extended=_>>1;break}}}else e.value=0,e.end=Math.min(a.p.stream.end,a.pos+1)}putAction(e,s,a,c){for(let d=0;de.bufferLength*4?new FragmentCursor(a,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,s=this.minStackPos,a=this.stacks=[],c,d;for(let _=0;_s)a.push(b);else{if(this.advanceStack(b,a,e))continue;{c||(c=[],d=[]),c.push(b);let k=this.tokens.getMainToken(b);d.push(k.value,k.end)}}break}}if(!a.length){let _=c&&findFinished(c);if(_)return this.stackToTree(_);if(this.parser.strict)throw verbose&&c&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+s);this.recovering||(this.recovering=5)}if(this.recovering&&c){let _=this.stoppedAt!=null&&c[0].pos>this.stoppedAt?c[0]:this.runRecovery(c,d,a);if(_)return this.stackToTree(_.forceAll())}if(this.recovering){let _=this.recovering==1?1:this.recovering*3;if(a.length>_)for(a.sort((b,k)=>k.score-b.score);a.length>_;)a.pop();a.some(b=>b.reducePos>s)&&this.recovering--}else if(a.length>1){e:for(let _=0;_500&&$.buffer.length>500)if((b.score-$.score||b.buffer.length-$.buffer.length)>0)a.splice(k--,1);else{a.splice(_--,1);continue e}}}}this.minStackPos=a[0].pos;for(let _=1;_ ":"";if(this.stoppedAt!=null&&c>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let $=e.curContext&&e.curContext.tracker.strict,j=$?e.curContext.hash:0;for(let _e=this.fragments.nodeAt(c);_e;){let et=this.parser.nodeSet.types[_e.type.id]==_e.type?d.getGoto(e.state,_e.type.id):-1;if(et>-1&&_e.length&&(!$||(_e.prop(NodeProp.contextHash)||0)==j))return e.useNode(_e,et),verbose&&console.log(_+this.stackID(e)+` (via reuse of ${d.getName(_e.type.id)})`),!0;if(!(_e instanceof Tree)||_e.children.length==0||_e.positions[0]>0)break;let tt=_e.children[0];if(tt instanceof Tree&&_e.positions[0]==0)_e=tt;else break}}let b=d.stateSlot(e.state,4);if(b>0)return e.reduce(b),verbose&&console.log(_+this.stackID(e)+` (via always-reduce ${d.getName(b&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let k=this.tokens.getActions(e);for(let $=0;$c?s.push(nt):a.push(nt)}return!1}advanceFully(e,s){let a=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>a)return pushStackDedup(e,s),!0}}runRecovery(e,s,a){let c=null,d=!1;for(let _=0;_ ":"";if(b.deadEnd&&(d||(d=!0,b.restart(),verbose&&console.log(j+this.stackID(b)+" (restarted)"),this.advanceFully(b,a))))continue;let _e=b.split(),et=j;for(let tt=0;_e.forceReduce()&&tt<10&&(verbose&&console.log(et+this.stackID(_e)+" (via force-reduce)"),!this.advanceFully(_e,a));tt++)verbose&&(et=this.stackID(_e)+" -> ");for(let tt of b.recoverByInsert(k))verbose&&console.log(j+this.stackID(tt)+" (via recover-insert)"),this.advanceFully(tt,a);this.stream.end>b.pos?($==b.pos&&($++,k=0),b.recoverByDelete(k,$),verbose&&console.log(j+this.stackID(b)+` (via recover-delete ${this.parser.getName(k)})`),pushStackDedup(b,a)):(!c||c.scoreo;class ContextTracker{constructor(e){this.start=e.start,this.shift=e.shift||id,this.reduce=e.reduce||id,this.reuse=e.reuse||id,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class LRParser extends Parser{constructor(e){if(super(),this.wrappers=[],e.version!=13)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (${13})`);let s=e.nodeNames.split(" ");this.minRepeatTerm=s.length;for(let b=0;be.topRules[b][1]),c=[];for(let b=0;b=0)d(j,k,b[$++]);else{let _e=b[$+-j];for(let et=-j;et>0;et--)d(b[$++],k,_e);$++}}}this.nodeSet=new NodeSet(s.map((b,k)=>NodeType.define({name:k>=this.minRepeatTerm?void 0:b,id:k,props:c[k],top:a.indexOf(k)>-1,error:k==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(k)>-1}))),this.strict=!1,this.bufferLength=DefaultBufferLength;let _=decodeArray(e.tokenData);if(this.context=e.context,this.specialized=new Uint16Array(e.specialized?e.specialized.length:0),this.specializers=[],e.specialized)for(let b=0;btypeof b=="number"?new TokenGroup(_,b):b),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,s,a){let c=new Parse(this,e,s,a);for(let d of this.wrappers)c=d(c,e,s,a);return c}getGoto(e,s,a=!1){let c=this.goto;if(s>=c[0])return-1;for(let d=c[s+1];;){let _=c[d++],b=_&1,k=c[d++];if(b&&a)return k;for(let $=d+(_>>1);d<$;d++)if(c[d]==e)return k;if(b)return-1}}hasAction(e,s){let a=this.data;for(let c=0;c<2;c++)for(let d=this.stateSlot(e,c?2:1),_;;d+=3){if((_=a[d])==65535)if(a[d+1]==1)_=a[d=pair(a,d+2)];else{if(a[d+1]==2)return pair(a,d+2);break}if(_==s||_==0)return pair(a,d+1)}return 0}stateSlot(e,s){return this.states[e*6+s]}stateFlag(e,s){return(this.stateSlot(e,0)&s)>0}validAction(e,s){if(s==this.stateSlot(e,4))return!0;for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else return!1;if(s==pair(this.data,a+1))return!0}}nextStates(e){let s=[];for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else break;if((this.data[a+2]&1)==0){let c=this.data[a+1];s.some((d,_)=>_&1&&d==c)||s.push(this.data[a],c)}}return s}overrides(e,s){let a=findOffset(this.data,this.tokenPrecTable,s);return a<0||findOffset(this.data,this.tokenPrecTable,e){let c=e.tokenizers.find(d=>d.from==a);return c?c.to:a})),e.contextTracker&&(s.context=e.contextTracker),e.dialect&&(s.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(s.strict=e.strict),e.wrap&&(s.wrappers=s.wrappers.concat(e.wrap)),e.bufferLength!=null&&(s.bufferLength=e.bufferLength),s}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let s=this.dynamicPrecedences;return s==null?0:s[e]||0}parseDialect(e){let s=Object.keys(this.dialects),a=s.map(()=>!1);if(e)for(let d of e.split(" ")){let _=s.indexOf(d);_>=0&&(a[_]=!0)}let c=null;for(let d=0;da)&&s.p.parser.stateFlag(s.state,2)&&(!e||e.score{let{next:s}=o;(s==braceR||s==-1||e.context)&&e.canShift(insertSemi)&&o.acceptToken(insertSemi)},{contextual:!0,fallback:!0}),noSemicolon=new ExternalTokenizer((o,e)=>{let{next:s}=o,a;space.indexOf(s)>-1||s==slash&&((a=o.peek(1))==slash||a==star)||s!=braceR&&s!=semicolon&&s!=-1&&!e.context&&e.canShift(noSemi)&&o.acceptToken(noSemi)},{contextual:!0}),incdecToken=new ExternalTokenizer((o,e)=>{let{next:s}=o;if((s==plus||s==minus)&&(o.advance(),s==o.next)){o.advance();let a=!e.context&&e.canShift(incdec);o.acceptToken(a?incdec:incdecPrefix)}},{contextual:!0}),template=new ExternalTokenizer(o=>{for(let e=!1,s=0;;s++){let{next:a}=o;if(a<0){s&&o.acceptToken(templateContent);break}else if(a==backtick){s?o.acceptToken(templateContent):o.acceptToken(templateEnd,1);break}else if(a==braceL&&e){s==1?o.acceptToken(InterpolationStart,1):o.acceptToken(templateContent,-1);break}else if(a==10&&s){o.advance(),o.acceptToken(templateContent);break}else a==backslash&&o.advance();e=a==dollar,o.advance()}});function tsExtends(o,e){return o=="extends"&&e.dialectEnabled(Dialect_ts)?TSExtends:-1}const spec_identifier={__proto__:null,export:18,as:23,from:29,default:32,async:37,function:38,this:48,true:56,false:56,void:66,typeof:70,null:86,super:88,new:122,await:139,yield:141,delete:142,class:152,extends:154,public:197,private:197,protected:197,readonly:199,instanceof:220,in:222,const:224,import:256,keyof:307,unique:311,infer:317,is:351,abstract:371,implements:373,type:375,let:378,var:380,interface:387,enum:391,namespace:397,module:399,declare:403,global:407,for:428,of:437,while:440,with:444,do:448,if:452,else:454,switch:458,case:464,try:470,catch:472,finally:474,return:478,throw:482,break:486,continue:490,debugger:494},spec_word={__proto__:null,async:109,get:111,set:113,public:161,private:161,protected:161,static:163,abstract:165,override:167,readonly:173,new:355},spec_LessThan={__proto__:null,"<":129},parser=LRParser.deserialize({version:13,states:"$1jO`QYOOO'QQ!LdO'#ChO'XOSO'#DVO)dQYO'#D]O)tQYO'#DhO){QYO'#DrO-xQYO'#DxOOQO'#E]'#E]O.]QWO'#E[O.bQWO'#E[OOQ!LS'#Ef'#EfO0aQ!LdO'#IrO2wQ!LdO'#IsO3eQWO'#EzO3jQpO'#FaOOQ!LS'#FS'#FSO3rO!bO'#FSO4QQWO'#FhO5_QWO'#FgOOQ!LS'#Is'#IsOOQ!LQ'#Ir'#IrOOQQ'#J['#J[O5dQWO'#HnO5iQ!LYO'#HoOOQQ'#If'#IfOOQQ'#Hp'#HpQ`QYOOO){QYO'#DjO5qQWO'#G[O5vQ#tO'#CmO6UQWO'#EZO6aQWO'#EgO6fQ#tO'#FRO7QQWO'#G[O7VQWO'#G`O7bQWO'#G`O7pQWO'#GcO7pQWO'#GdO7pQWO'#GfO5qQWO'#GiO8aQWO'#GlO9oQWO'#CdO:PQWO'#GyO:XQWO'#HPO:XQWO'#HRO`QYO'#HTO:XQWO'#HVO:XQWO'#HYO:^QWO'#H`O:cQ!LZO'#HdO){QYO'#HfO:nQ!LZO'#HhO:yQ!LZO'#HjO5iQ!LYO'#HlO){QYO'#DWOOOS'#Hr'#HrO;UOSO,59qOOQ!LS,59q,59qO=gQbO'#ChO=qQYO'#HsO>UQWO'#ItO@TQbO'#ItO'dQYO'#ItO@[QWO,59wO@rQ&jO'#DbOAkQWO'#E]OAxQWO'#JPOBTQWO'#JOOBTQWO'#JOOB]QWO,5:yOBbQWO'#I}OBiQWO'#DyO5vQ#tO'#EZOBwQWO'#EZOCSQ`O'#FROOQ!LS,5:S,5:SOC[QYO,5:SOEYQ!LdO,5:^OEvQWO,5:dOFaQ!LYO'#I|O7VQWO'#I{OFhQWO'#I{OFpQWO,5:xOFuQWO'#I{OGTQYO,5:vOITQWO'#EWOJ_QWO,5:vOKnQWO'#DlOKuQYO'#DqOLPQ&jO,5;PO){QYO,5;POOQQ'#Er'#ErOOQQ'#Et'#EtO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;ROOQQ'#Ex'#ExOLXQYO,5;cOOQ!LS,5;h,5;hOOQ!LS,5;i,5;iONXQWO,5;iOOQ!LS,5;j,5;jO){QYO'#H}ON^Q!LYO,5YOOQQ'#Ii'#IiOOQQ,5>Z,5>ZOOQQ-E;n-E;nO!+YQ!LdO,5:UOOQ!LQ'#Cp'#CpO!+yQ#tO,5O,5>OO){QYO,5>OO5iQ!LYO,5>QOOQQ,5>S,5>SO!8VQWO,5>SOOQQ,5>U,5>UO!8VQWO,5>UOOQQ,5>W,5>WO!8[Q`O,59rOOOS-E;p-E;pOOQ!LS1G/]1G/]O!8aQbO,5>_O'dQYO,5>_OOQO,5>d,5>dO!8kQYO'#HsOOQO-E;q-E;qO!8xQWO,5?`O!9QQbO,5?`O!9XQWO,5?jOOQ!LS1G/c1G/cO!9aQpO'#DTOOQO'#Iv'#IvO){QYO'#IvO!:OQpO'#IvO!:mQpO'#DcO!;OQ&jO'#DcO!=ZQYO'#DcO!=bQWO'#IuO!=jQWO,59|O!=oQWO'#EaO!=}QWO'#JQO!>VQWO,5:zO!>mQ&jO'#DcO){QYO,5?kO!>wQWO'#HxOOQO-E;v-E;vO!9XQWO,5?jOOQ!LQ1G0e1G0eO!@TQ&jO'#D|OOQ!LS,5:e,5:eO){QYO,5:eOITQWO,5:eO!@[QWO,5:eO:^QWO,5:uO!,rQpO,5:uO!,zQ#tO,5:uO5vQ#tO,5:uOOQ!LS1G/n1G/nOOQ!LS1G0O1G0OOOQ!LQ'#EV'#EVO){QYO,5?hO!@gQ!LYO,5?hO!@xQ!LYO,5?hO!APQWO,5?gO!AXQWO'#HzO!APQWO,5?gOOQ!LQ1G0d1G0dO7VQWO,5?gOOQ!LS1G0b1G0bO!AsQ!LdO1G0bO!BdQ!LbO,5:rOOQ!LS'#Fq'#FqO!CQQ!LdO'#IoOGTQYO1G0bO!EPQ#tO'#IwO!EZQWO,5:WO!E`QbO'#IxO){QYO'#IxO!EjQWO,5:]OOQ!LS'#DT'#DTOOQ!LS1G0k1G0kO!EoQWO1G0kO!HQQ!LdO1G0mO!HXQ!LdO1G0mO!JlQ!LdO1G0mO!JsQ!LdO1G0mO!LzQ!LdO1G0mO!M_Q!LdO1G0mO#!OQ!LdO1G0mO#!VQ!LdO1G0mO#$jQ!LdO1G0mO#$qQ!LdO1G0mO#&fQ!LdO1G0mO#)`Q7^O'#ChO#+ZQ7^O1G0}O#-UQ7^O'#IsOOQ!LS1G1T1G1TO#-iQ!LdO,5>iOOQ!LQ-E;{-E;{O#.YQ!LdO1G0mOOQ!LS1G0m1G0mO#0[Q!LdO1G1QO#0{QpO,5;sO#1QQpO,5;tO#1VQpO'#F[O#1kQWO'#FZOOQO'#JU'#JUOOQO'#H{'#H{O#1pQpO1G1]OOQ!LS1G1]1G1]OOOO1G1f1G1fO#2OQ7^O'#IrO#2YQWO,5;}OLXQYO,5;}OOOO-E;z-E;zOOQ!LS1G1Y1G1YOOQ!LS,5VQ&jO'#GhOOQQ1G2l1G2lO!&wQ&jO'#IWO!0OQ`O1G2oOOQQ1G2o1G2oOOQQ,5=Y,5=YO#>_Q#tO,5=[O5qQWO,5=[O#5YQWO,5=_O5_QWO,5=_O!,rQpO,5=_O!,zQ#tO,5=_O5vQ#tO,5=_O#>pQWO'#J_O#>{QWO,5=`OOQQ1G.j1G.jO#?QQ!LYO1G.jO#?]QWO1G.jO#?bQWO1G.jO5iQ!LYO1G.jO#?jQbO,5?|O#?tQWO,5?|O#@PQYO,5=gO#@WQWO,5=gO7VQWO,5?|OOQQ1G3P1G3PO`QYO1G3POOQQ1G3V1G3VOOQQ1G3X1G3XO:XQWO1G3ZO#@]QYO1G3]O#DWQYO'#H[OOQQ1G3`1G3`O:^QWO1G3fO#DeQWO1G3fO5iQ!LYO1G3jOOQQ1G3l1G3lOOQ!LQ'#Fx'#FxO5iQ!LYO1G3nO5iQ!LYO1G3pOOOS1G/^1G/^O#DmQ`O,5_O#EPQWO1G4zO#EXQWO1G5UO#EaQWO,5?bOLXQYO,5:{O7VQWO,5:{O:^QWO,59}OLXQYO,59}O!,rQpO,59}O#EfQ7^O,59}OOQO,5:{,5:{O#EpQ&jO'#HtO#FWQWO,5?aOOQ!LS1G/h1G/hO#F`Q&jO'#HyO#FtQWO,5?lOOQ!LQ1G0f1G0fO!;OQ&jO,59}O#F|QbO1G5VO7VQWO,5>dOOQ!LQ'#ES'#ESO#GWQ!LrO'#ETO!?{Q&jO'#D}OOQO'#Hw'#HwO#GrQ&jO,5:hOOQ!LS,5:h,5:hO#GyQ&jO'#D}O#H[Q&jO'#D}O#HcQ&jO'#EYO#HfQ&jO'#ETO#HsQ&jO'#ETO!?{Q&jO'#ETO#IWQWO1G0PO#I]Q`O1G0POOQ!LS1G0P1G0PO){QYO1G0POITQWO1G0POOQ!LS1G0a1G0aO:^QWO1G0aO!,rQpO1G0aO!,zQ#tO1G0aO#IdQ!LdO1G5SO){QYO1G5SO#ItQ!LYO1G5SO#JVQWO1G5RO7VQWO,5>fOOQO,5>f,5>fO#J_QWO,5>fOOQO-E;x-E;xO#JVQWO1G5RO#JmQ!LdO,59jO#LlQ!LdO,5k,5>kO$(]QWO,5>kOOQ!LS1G2P1G2PP$(bQWO'#IPPOQ!LS-E;}-E;}O$)RQ#tO1G2[O$)tQ#tO1G2^O$*OQ#tO1G2`OOQ!LS1G1x1G1xO$*VQWO'#IOO$*eQWO,5?sO$*eQWO,5?sO$*mQWO,5?sO$*xQWO,5?sOOQO1G1z1G1zO$+WQ#tO1G1yO$+hQWO'#IQO$+xQWO,5?tOITQWO,5?tO$,QQ`O,5?tOOQ!LS1G1}1G1}O5iQ!LYO,5n,5>nOOQO-Ev,5>vOOQO-Ep,5>pOOQ!LQ-Er,5>rOOQO-E`,5>`OOQO-E;r-E;rOOQO,5>e,5>eOOQO-E;w-E;wO!,rQpO1G/iO:^QWO,5:iOOQO,5:o,5:oO){QYO,5:oO$9pQ!LYO,5:oO$9{Q!LYO,5:oO!,rQpO,5:iOOQO-E;u-E;uOOQ!LS1G0S1G0SO!?{Q&jO,5:iO$:ZQ&jO,5:iO$:lQ!LrO,5:oO$;WQ&jO,5:iO!?{Q&jO,5:oOOQO,5:t,5:tO$;_Q&jO,5:oO$;lQ!LYO,5:oOOQ!LS7+%k7+%kO#IWQWO7+%kO#I]Q`O7+%kOOQ!LS7+%{7+%{O:^QWO7+%{O!,rQpO7+%{O$lQ!LdO1G2^O$@nQ!LdO1G1yO$BvQ#tO,5>aOOQO-E;s-E;sO$CQQbO,5>bO){QYO,5>bOOQO-E;t-E;tO$C[QWO1G5OO$CdQ7^O1G0bO$EkQ7^O1G0mO$ErQ7^O1G0mO$GsQ7^O1G0mO$GzQ7^O1G0mO$IoQ7^O1G0mO$JSQ7^O1G0mO$LaQ7^O1G0mO$LhQ7^O1G0mO$NiQ7^O1G0mO$NpQ7^O1G0mO%!eQ7^O1G0mO%!xQ!LdO<iOOOO7+'T7+'TOOOS1G/R1G/ROOQ!LS1G4V1G4VOJdQWO7+'zO%'rQWO,5>jO5qQWO,5>jOOQO-E;|-E;|O%(QQWO1G5_O%(QQWO1G5_O%(YQWO1G5_O%(eQ`O,5>lO%(oQWO,5>lOITQWO,5>lOOQO-Eu,5>uO%,RQWO,5>uO%,WQWO,5>uOOQO-EtOOQO-ERQ#tO<cQWO1G4UO%>nQWO1G4UO%>|QWO7+*yO%>|QWO7+*yOITQWO1G4WO%?UQ`O1G4WO%?`QWO7+*zOOQO7+'o7+'oO5iQ!LYO7+'oOOQO7+'n7+'nO$,[QWO7+'pO%?hQ`O7+'pOOQO7+'t7+'tO5iQ!LYO7+'nO$,[QWO7+'oO%?oQWO7+'pOITQWO7+'pO#5TQWO7+'oO%?tQ#tO<oOOQO-EqOOQO-E{AN>{OOQOAN>uAN>uO%0}Q!LdOAN>{O:^QWOAN>uO){QYOAN>{O!,rQpOAN>uO&(PQ!LYOAN>{O&([Q7^O<^O!O&OO~Ox&RO!W&]O!X&UO!Y&UO'[$bO~O]&SOk&SO!Q&VO'e&PO!S'iP!S'tP~P@aO!O'qX!R'qX!]'qX!c'qX'n'qX~O!{'qX#W#PX!S'qX~PAYO!{&^O!O'sX!R'sX~O!R&_O!O'rX~O!O&bO~O!{#eO~PAYOS&fO!T&cO!o&eO'Z$`O~Oc&kO!d$XO'Z$`O~Ou$nO!d$mO~O!S&lO~P`Ou!{Ov!{Ox!|O!b!yO!d!zO'dQOP!faZ!faj!fa!R!fa!a!fa!j!fa#[!fa#]!fa#^!fa#_!fa#`!fa#a!fa#b!fa#c!fa#e!fa#g!fa#i!fa#j!fa'n!fa'u!fa'v!fa~O_!fa'U!fa!O!fa!c!fan!fa!T!fa%Q!fa!]!fa~PCcO!c&mO~O!]!wO!{&oO'n&nO!R'pX_'pX'U'pX~O!c'pX~PE{O!R&sO!c'oX~O!c&uO~Ox$tO!T$uO#V&vO'Z$`O~OPTOQTO]cOb!kOc!jOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!TSO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!n!iO#t!lO#x^O'Z9YO'dQO'mYO'zaO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'Z&zO'd#sO~O#W&|O~O]#qOh$OOj#rOk#qOl#qOq$POs$QOx#xO!T#yO!_$VO!d#vO#V$WO#t$TO$_$RO$a$SO$d$UO'Z&zO'd#sO~O'_'kP~PJdO!Q'QO!c'lP~P){O'e'SO'mYO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!d!zO~O!R#bO_$]a'U$]a!c$]a!O$]a!T$]a%Q$]a!]$]a~O#d'iO~PITO!]'kO!T'wX#w'wX#z'wX$R'wX~Ou'lO~P! POu'lO!T'wX#w'wX#z'wX$R'wX~O!T'nO#w'rO#z'mO$R'sO~O!Q'vO~PLXO#z#fO$R'yO~Ou$eXx$eX!b$eX'n$eX'u$eX'v$eX~OSfX!RfX!{fX'_fX'_$eX~P!!iOk'{O~OR'|O'S'}O'T(PO~Ou(ROx(SO'n#[O'u(UO'v(WO~O'_(QO~P!#rO'_(ZO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~O!Q(_O'Z([O!c'{P~P!$aO#W(aO~O!Q(eO'Z(bO!O'|P~P!$aO_(nOj(sOx(kO!W(qO!X(jO!Y(jO!d(hO!x(rO$w(mO'[$bO'e(gO~O!S(pO~P!&XO!b!yOu'cXx'cX'n'cX'u'cX'v'cX!R'cX!{'cX~O'_'cX#m'cX~P!'TOS(vO!{(uO!R'bX'_'bX~O!R(wO'_'aX~O'Z(yO~O!d)OO~O'Z&zO~O!d(hO~Ox$tO!Q!rO!T$uO#U!uO#V!rO'Z$`O!c'oP~O!]!wO#W)SO~OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO#j#ZO'dQO'n#[O'u!}O'v#OO~O_!^a!R!^a'U!^a!O!^a!c!^an!^a!T!^a%Q!^a!]!^a~P!)fOS)[O!T&cO!o)ZO%Q)YO'`$cO~O'Z$zO'_'aP~O!])_O!T'^X_'^X'U'^X~O!d$XO'`$cO~O!d$XO'Z$`O'`$cO~O!]!wO#W&|O~O])jO%R)kO'Z)gO!S(TP~O!R)lO^(SX~O'e'SO~OZ)pO~O^)qO~O!T$kO'Z$`O'[$bO^(SP~Ox$tO!Q)vO!R&_O!T$uO'Z$`O!O'rP~O]&YOk&YO!Q)wO'e'SO!S'tP~O!R)xO_(PX'U(PX~O!{)|O'`$cO~OS*PO!T#yO'`$cO~O!T*RO~Ou*TO!TSO~O!n*YO~Oc*_O~O'Z(yO!S(RP~Oc$iO~O%RtO'Z$zO~P8tOZ*eO^*dO~OPTOQTO]cObnOcmOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!nlO#x^O%PqO'dQO'mYO'zaO~O!T!bO#t!lO'Z9YO~P!1RO^*dO_$[O'U$[O~O_*iO#d*kO%T*kO%U*kO~P){O!d%_O~O%t*pO~O!T*rO~O&U*uO&V*tOP&SaQ&SaX&Sa]&Sa_&Sab&Sac&Sah&Saj&Sak&Sal&Saq&Sas&Sax&Sa{&Sa|&Sa}&Sa!T&Sa!_&Sa!d&Sa!g&Sa!h&Sa!i&Sa!j&Sa!k&Sa!n&Sa#d&Sa#t&Sa#x&Sa%P&Sa%R&Sa%T&Sa%U&Sa%X&Sa%Z&Sa%^&Sa%_&Sa%a&Sa%n&Sa%t&Sa%v&Sa%x&Sa%z&Sa%}&Sa&T&Sa&X&Sa&Z&Sa&]&Sa&_&Sa&a&Sa'Q&Sa'Z&Sa'd&Sa'm&Sa'z&Sa!S&Sa%{&Sa`&Sa&Q&Sa~O'Z*xO~On*{O~O!O&ga!R&ga~P!)fO!Q+PO!O&gX!R&gX~P){O!R%yO!O'ha~O!O'ha~P>^O!R&_O!O'ra~O!RwX!R!ZX!SwX!S!ZX!]wX!]!ZX!d!ZX!{wX'`!ZX~O!]+UO!{+TO!R#TX!R'jX!S#TX!S'jX!]'jX!d'jX'`'jX~O!]+WO!d$XO'`$cO!R!VX!S!VX~O]&QOk&QOx&RO'e(gO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'dQO'mYO'z:kO~O'Z9vO~P!;^O!R+[O!S'iX~O!S+^O~O!]+UO!{+TO!R#TX!S#TX~O!R+_O!S'tX~O!S+aO~O]&QOk&QOx&RO'[$bO'e(gO~O!X+bO!Y+bO~P!>[Ox$tO!Q+dO!T$uO'Z$`O!O&lX!R&lX~O_+hO!W+kO!X+gO!Y+gO!r+oO!s+mO!t+nO!u+lO!x+pO'[$bO'e(gO'm+eO~O!S+jO~P!?]OS+uO!T&cO!o+tO~O!{+{O!R'pa!c'pa_'pa'U'pa~O!]!wO~P!@gO!R&sO!c'oa~Ox$tO!Q,OO!T$uO#U,QO#V,OO'Z$`O!R&nX!c&nX~O_#Oi!R#Oi'U#Oi!O#Oi!c#Oin#Oi!T#Oi%Q#Oi!]#Oi~P!)fO#W!za!R!za!c!za!{!za!T!za_!za'U!za!O!za~P!#rO#W'cXP'cXZ'cX_'cXj'cXv'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX'U'cX'd'cX!c'cX!O'cX!T'cXn'cX%Q'cX!]'cX~P!'TO!R,ZO'_'kX~P!#rO'_,]O~O!R,^O!c'lX~P!)fO!c,aO~O!O,bO~OP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zi_#Zij#Zi!R#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O#[#Zi~P!EtO#[#PO~P!EtOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO'dQOZ#Zi_#Zi!R#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~Oj#Zi~P!H`Oj#RO~P!H`OP#^Oj#ROu!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO'dQO_#Zi!R#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P!JzOZ#dO!a#TO#a#TO#b#TO#c#TO~P!JzOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO'dQO_#Zi!R#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'u#Zi~P!MrO'u!}O~P!MrOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO'dQO'u!}O_#Zi!R#Zi#i#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'v#Zi~P#!^O'v#OO~P#!^OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO'dQO'u!}O'v#OO~O_#Zi!R#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P#$xOP[XZ[Xj[Xu[Xv[Xx[X!a[X!b[X!d[X!j[X!{[X#WdX#[[X#][X#^[X#_[X#`[X#a[X#b[X#c[X#e[X#g[X#i[X#j[X#o[X'd[X'n[X'u[X'v[X!R[X!S[X~O#m[X~P#']OP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO#j9gO'dQO'n#[O'u!}O'v#OO~O#m,dO~P#)gOP'gXZ'gXj'gXu'gXv'gXx'gX!a'gX!b'gX!d'gX!j'gX#['gX#]'gX#^'gX#_'gX#`'gX#a'gX#b'gX#e'gX#g'gX#i'gX#j'gX'd'gX'n'gX'u'gX'v'gX!R'gX~O!{9kO#o9kO#c'gX#m'gX!S'gX~P#+bO_&qa!R&qa'U&qa!c&qan&qa!O&qa!T&qa%Q&qa!]&qa~P!)fOP#ZiZ#Zi_#Zij#Ziv#Zi!R#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'd#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P!#rO_#ni!R#ni'U#ni!O#ni!c#nin#ni!T#ni%Q#ni!]#ni~P!)fO#z,fO~O#z,gO~O!]'kO!{,hO!T$OX#w$OX#z$OX$R$OX~O!Q,iO~O!T'nO#w,kO#z'mO$R,lO~O!R9hO!S'fX~P#)gO!S,mO~O$R,oO~OR'|O'S'}O'T,rO~O],uOk,uO!O,vO~O!RdX!]dX!cdX!c$eX'ndX~P!!iO!c,|O~P!#rO!R,}O!]!wO'n&nO!c'{X~O!c-SO~O!O$eX!R$eX!]$lX~P!!iO!R-UO!O'|X~P!#rO!]-WO~O!O-YO~O!Q(_O'Z$`O!c'{P~Oj-^O!]!wO!d$XO'`$cO'n&nO~O!])_O~O!S-dO~P!&XO!X-eO!Y-eO'[$bO'e(gO~Ox-gO'e(gO~O!x-hO~O'Z$zO!R&vX'_&vX~O!R(wO'_'aa~Ou-mOv-mOx-nO'nra'ura'vra!Rra!{ra~O'_ra#mra~P#6fOu(ROx(SO'n$^a'u$^a'v$^a!R$^a!{$^a~O'_$^a#m$^a~P#7[Ou(ROx(SO'n$`a'u$`a'v$`a!R$`a!{$`a~O'_$`a#m$`a~P#7}O]-oO~O#W-pO~O'_$na!R$na#m$na!{$na~P!#rO#W-sO~OS-|O!T&cO!o-{O%Q-zO~O'_-}O~O]#qOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~Oh.PO'Z.OO~P#9tO!])_O!T'^a_'^a'U'^a~O#W.VO~OZ[X!RdX!SdX~O!R.WO!S(TX~O!S.YO~OZ.ZO~O].]O'Z)gO~O!T$kO'Z$`O^'OX!R'OX~O!R)lO^(Sa~O!c.`O~P!)fO].bO~OZ.cO~O^.dO~OS-|O!T&cO!o-{O%Q-zO'`$cO~O!R)xO_(Pa'U(Pa~O!{.jO~OS.mO!T#yO~O'e'SO!S(QP~OS.wO!T.sO!o.vO%Q.uO'`$cO~OZ/RO!R/PO!S(RX~O!S/SO~O^/UO_$[O'U$[O~O]/VO~O]/WO'Z(yO~O#c/XO%r/YO~P0zO!{#eO#c/XO%r/YO~O_/ZO~P){O_/]O~O%{/aOP%yiQ%yiX%yi]%yi_%yib%yic%yih%yij%yik%yil%yiq%yis%yix%yi{%yi|%yi}%yi!T%yi!_%yi!d%yi!g%yi!h%yi!i%yi!j%yi!k%yi!n%yi#d%yi#t%yi#x%yi%P%yi%R%yi%T%yi%U%yi%X%yi%Z%yi%^%yi%_%yi%a%yi%n%yi%t%yi%v%yi%x%yi%z%yi%}%yi&T%yi&X%yi&Z%yi&]%yi&_%yi&a%yi'Q%yi'Z%yi'd%yi'm%yi'z%yi!S%yi`%yi&Q%yi~O`/gO!S/eO&Q/fO~P`O!TSO!d/jO~O!R#bOn$]a~O!O&gi!R&gi~P!)fO!R%yO!O'hi~O!R&_O!O'ri~O!O/nO~O!R!Va!S!Va~P#)gO]&QOk&QO!Q/tO'e(gO!R&hX!S&hX~P@aO!R+[O!S'ia~O]&YOk&YO!Q)wO'e'SO!R&mX!S&mX~O!R+_O!S'ta~O!O'si!R'si~P!)fO_$[O!]!wO!d$XO!j0OO!{/|O'U$[O'`$cO'n&nO~O!S0RO~P!?]O!X0SO!Y0SO'[$bO'e(gO'm+eO~O!W0TO~P#GyO!TSO!W0TO!u0VO!x0WO~P#GyO!W0TO!s0YO!t0YO!u0VO!x0WO~P#GyO!T&cO~O!T&cO~P!#rO!R'pi!c'pi_'pi'U'pi~P!)fO!{0cO!R'pi!c'pi_'pi'U'pi~O!R&sO!c'oi~Ox$tO!T$uO#V0eO'Z$`O~O#WraPraZra_rajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra'Ura'dra!cra!Ora!Tranra%Qra!]ra~P#6fO#W$^aP$^aZ$^a_$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a'U$^a'd$^a!c$^a!O$^a!T$^an$^a%Q$^a!]$^a~P#7[O#W$`aP$`aZ$`a_$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a'U$`a'd$`a!c$`a!O$`a!T$`an$`a%Q$`a!]$`a~P#7}O#W$naP$naZ$na_$naj$nav$na!R$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na'U$na'd$na!c$na!O$na!T$na!{$nan$na%Q$na!]$na~P!#rO_#Oq!R#Oq'U#Oq!O#Oq!c#Oqn#Oq!T#Oq%Q#Oq!]#Oq~P!)fO!R&iX'_&iX~PJdO!R,ZO'_'ka~O!Q0mO!R&jX!c&jX~P){O!R,^O!c'la~O!R,^O!c'la~P!)fO#m!fa!S!fa~PCcO#m!^a!R!^a!S!^a~P#)gO!T1QO#x^O$P1RO~O!S1VO~On1WO~P!#rO_$Yq!R$Yq'U$Yq!O$Yq!c$Yqn$Yq!T$Yq%Q$Yq!]$Yq~P!)fO!O1XO~O],uOk,uO~Ou(ROx(SO'v(WO'n$xi'u$xi!R$xi!{$xi~O'_$xi#m$xi~P$(jOu(ROx(SO'n$zi'u$zi'v$zi!R$zi!{$zi~O'_$zi#m$zi~P$)]O#m1YO~P!#rO!Q1[O'Z$`O!R&rX!c&rX~O!R,}O!c'{a~O!R,}O!]!wO!c'{a~O!R,}O!]!wO'n&nO!c'{a~O'_$gi!R$gi#m$gi!{$gi~P!#rO!Q1cO'Z(bO!O&tX!R&tX~P!$aO!R-UO!O'|a~O!R-UO!O'|a~P!#rO!]!wO~O!]!wO#c1mO~Oj1qO!]!wO'n&nO~O!R'bi'_'bi~P!#rO!{1tO!R'bi'_'bi~P!#rO!c1wO~O_$Zq!R$Zq'U$Zq!O$Zq!c$Zqn$Zq!T$Zq%Q$Zq!]$Zq~P!)fO!R1{O!T'}X~P!#rO!T&cO%Q2OO~O!T&cO%Q2OO~P!#rO!T$eX$u[X_$eX'U$eX~P!!iO$u2SOugXxgX!TgX'ngX'ugX'vgX_gX'UgX~O$u2SO~O]2YO%R2ZO'Z)gO!R&}X!S&}X~O!R.WO!S(Ta~OZ2_O~O^2`O~O]2cO~OS2eO!T&cO!o2dO%Q2OO~O_$[O'U$[O~P!#rO!T#yO~P!#rO!R2jO!{2lO!S(QX~O!S2mO~Ox(kO!W2vO!X2oO!Y2oO!r2uO!s2tO!t2tO!x2sO'[$bO'e(gO'm+eO~O!S2rO~P$1nOS2}O!T.sO!o2|O%Q2{O~OS2}O!T.sO!o2|O%Q2{O'`$cO~O'Z(yO!R&|X!S&|X~O!R/PO!S(Ra~O]3XO'e3WO~O]3YO~O^3[O~O!c3_O~P){O_3aO~O_3aO~P){O#c3cO%r3dO~PE{O`/gO!S3hO&Q/fO~P`O!]3jO~O&V3kOP&SqQ&SqX&Sq]&Sq_&Sqb&Sqc&Sqh&Sqj&Sqk&Sql&Sqq&Sqs&Sqx&Sq{&Sq|&Sq}&Sq!T&Sq!_&Sq!d&Sq!g&Sq!h&Sq!i&Sq!j&Sq!k&Sq!n&Sq#d&Sq#t&Sq#x&Sq%P&Sq%R&Sq%T&Sq%U&Sq%X&Sq%Z&Sq%^&Sq%_&Sq%a&Sq%n&Sq%t&Sq%v&Sq%x&Sq%z&Sq%}&Sq&T&Sq&X&Sq&Z&Sq&]&Sq&_&Sq&a&Sq'Q&Sq'Z&Sq'd&Sq'm&Sq'z&Sq!S&Sq%{&Sq`&Sq&Q&Sq~O!R#Ti!S#Ti~P#)gO!{3mO!R#Ti!S#Ti~O!R!Vi!S!Vi~P#)gO_$[O!{3tO'U$[O~O_$[O!]!wO!{3tO'U$[O~O!X3xO!Y3xO'[$bO'e(gO'm+eO~O_$[O!]!wO!d$XO!j3yO!{3tO'U$[O'`$cO'n&nO~O!W3zO~P$:ZO!W3zO!u3}O!x4OO~P$:ZO_$[O!]!wO!j3yO!{3tO'U$[O'n&nO~O!R'pq!c'pq_'pq'U'pq~P!)fO!R&sO!c'oq~O#W$xiP$xiZ$xi_$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi'U$xi'd$xi!c$xi!O$xi!T$xin$xi%Q$xi!]$xi~P$(jO#W$ziP$ziZ$zi_$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi'U$zi'd$zi!c$zi!O$zi!T$zin$zi%Q$zi!]$zi~P$)]O#W$giP$giZ$gi_$gij$giv$gi!R$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi'U$gi'd$gi!c$gi!O$gi!T$gi!{$gin$gi%Q$gi!]$gi~P!#rO!R&ia'_&ia~P!#rO!R&ja!c&ja~P!)fO!R,^O!c'li~O#m#Oi!R#Oi!S#Oi~P#)gOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zij#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~O#[#Zi~P$CqO#[9]O~P$CqOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O'dQOZ#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~Oj#Zi~P$EyOj9_O~P$EyOP#^Oj9_Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O'dQO#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P$HROZ9jO!a9aO#a9aO#b9aO#c9aO~P$HROP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO'dQO#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'v#Zi!R#Zi!S#Zi~O'u#Zi~P$JgO'u!}O~P$JgOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO'dQO'u!}O#i#Zi#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~O'v#Zi~P$LoO'v#OO~P$LoOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO'dQO'u!}O'v#OO~O#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~P$NwO_#ky!R#ky'U#ky!O#ky!c#kyn#ky!T#ky%Q#ky!]#ky~P!)fOP#ZiZ#Zij#Ziv#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'd#Zi!R#Zi!S#Zi~P!#rO!b!yOP'cXZ'cXj'cXu'cXv'cXx'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX#m'cX'd'cX'n'cX'u'cX'v'cX!R'cX!S'cX~O#m#ni!R#ni!S#ni~P#)gO!S4`O~O!R&qa!S&qa~P#)gO!]!wO'n&nO!R&ra!c&ra~O!R,}O!c'{i~O!R,}O!]!wO!c'{i~O!O&ta!R&ta~P!#rO!]4gO~O!R-UO!O'|i~P!#rO!R-UO!O'|i~O!O4mO~O!]!wO#c4sO~Oj4tO!]!wO'n&nO~O!O4vO~O'_$iq!R$iq#m$iq!{$iq~P!#rO_$Zy!R$Zy'U$Zy!O$Zy!c$Zyn$Zy!T$Zy%Q$Zy!]$Zy~P!)fO!R1{O!T'}a~O!T&cO%Q4{O~O!T&cO%Q4{O~P!#rO_#Oy!R#Oy'U#Oy!O#Oy!c#Oyn#Oy!T#Oy%Q#Oy!]#Oy~P!)fOZ5OO~O]5QO'Z)gO~O!R.WO!S(Ti~O]5TO~O^5UO~O'e'SO!R&yX!S&yX~O!R2jO!S(Qa~O!S5cO~P$1nOx-gO'e(gO'm+eO~O!W5fO!X5eO!Y5eO!x0WO'[$bO'e(gO'm+eO~O!s5gO!t5gO~P%-iO!X5eO!Y5eO'[$bO'e(gO'm+eO~O!T.sO~O!T.sO%Q5iO~O!T.sO%Q5iO~P!#rOS5nO!T.sO!o5mO%Q5iO~OZ5sO!R&|a!S&|a~O!R/PO!S(Ri~O]5vO~O!c5wO~O!c5xO~O!c5yO~O!c5yO~P){O_5{O~O!]6OO~O!c6QO~O!R'si!S'si~P#)gO_$[O'U$[O~P!)fO_$[O!{6VO'U$[O~O_$[O!]!wO!{6VO'U$[O~O!X6[O!Y6[O'[$bO'e(gO'm+eO~O_$[O!]!wO!j6]O!{6VO'U$[O'n&nO~O!d$XO'`$cO~P%2TO!W6^O~P%1rO!R'py!c'py_'py'U'py~P!)fO#W$iqP$iqZ$iq_$iqj$iqv$iq!R$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq'U$iq'd$iq!c$iq!O$iq!T$iq!{$iqn$iq%Q$iq!]$iq~P!#rO!R&ji!c&ji~P!)fO#m#Oq!R#Oq!S#Oq~P#)gOu-mOv-mOx-nOPraZrajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra#mra'dra'nra'ura'vra!Rra!Sra~Ou(ROx(SOP$^aZ$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a#m$^a'd$^a'n$^a'u$^a'v$^a!R$^a!S$^a~Ou(ROx(SOP$`aZ$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a#m$`a'd$`a'n$`a'u$`a'v$`a!R$`a!S$`a~OP$naZ$naj$nav$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na#m$na'd$na!R$na!S$na~P!#rO#m$Yq!R$Yq!S$Yq~P#)gO#m$Zq!R$Zq!S$Zq~P#)gO!S6hO~O'_$|y!R$|y#m$|y!{$|y~P!#rO!]!wO!R&ri!c&ri~O!]!wO'n&nO!R&ri!c&ri~O!R,}O!c'{q~O!O&ti!R&ti~P!#rO!R-UO!O'|q~O!O6oO~P!#rO!O6oO~O!R'by'_'by~P!#rO!R&wa!T&wa~P!#rO!T$tq_$tq'U$tq~P!#rOZ6wO~O!R.WO!S(Tq~O]6zO~O!T&cO%Q6{O~O!T&cO%Q6{O~P!#rO!{6|O!R&ya!S&ya~O!R2jO!S(Qi~P#)gO!X7SO!Y7SO'[$bO'e(gO'm+eO~O!W7UO!x4OO~P%ArO!T.sO%Q7XO~O!T.sO%Q7XO~P!#rO]7`O'e7_O~O!R/PO!S(Rq~O!c7bO~O!c7bO~P){O!c7dO~O!c7eO~O!R#Ty!S#Ty~P#)gO_$[O!{7kO'U$[O~O_$[O!]!wO!{7kO'U$[O~O!X7nO!Y7nO'[$bO'e(gO'm+eO~O_$[O!]!wO!j7oO!{7kO'U$[O'n&nO~O#W$|yP$|yZ$|y_$|yj$|yv$|y!R$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y'U$|y'd$|y!c$|y!O$|y!T$|y!{$|yn$|y%Q$|y!]$|y~P!#rO#m#ky!R#ky!S#ky~P#)gOP$giZ$gij$giv$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi#m$gi'd$gi!R$gi!S$gi~P!#rOu(ROx(SO'v(WOP$xiZ$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi#m$xi'd$xi'n$xi'u$xi!R$xi!S$xi~Ou(ROx(SOP$ziZ$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi#m$zi'd$zi'n$zi'u$zi'v$zi!R$zi!S$zi~O#m$Zy!R$Zy!S$Zy~P#)gO#m#Oy!R#Oy!S#Oy~P#)gO!]!wO!R&rq!c&rq~O!R,}O!c'{y~O!O&tq!R&tq~P!#rO!O7uO~P!#rO!R.WO!S(Ty~O!R2jO!S(Qq~O!X8RO!Y8RO'[$bO'e(gO'm+eO~O!T.sO%Q8UO~O!T.sO%Q8UO~P!#rO!c8XO~O&V8YOP&S!ZQ&S!ZX&S!Z]&S!Z_&S!Zb&S!Zc&S!Zh&S!Zj&S!Zk&S!Zl&S!Zq&S!Zs&S!Zx&S!Z{&S!Z|&S!Z}&S!Z!T&S!Z!_&S!Z!d&S!Z!g&S!Z!h&S!Z!i&S!Z!j&S!Z!k&S!Z!n&S!Z#d&S!Z#t&S!Z#x&S!Z%P&S!Z%R&S!Z%T&S!Z%U&S!Z%X&S!Z%Z&S!Z%^&S!Z%_&S!Z%a&S!Z%n&S!Z%t&S!Z%v&S!Z%x&S!Z%z&S!Z%}&S!Z&T&S!Z&X&S!Z&Z&S!Z&]&S!Z&_&S!Z&a&S!Z'Q&S!Z'Z&S!Z'd&S!Z'm&S!Z'z&S!Z!S&S!Z%{&S!Z`&S!Z&Q&S!Z~O_$[O!{8_O'U$[O~O_$[O!]!wO!{8_O'U$[O~OP$iqZ$iqj$iqv$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq#m$iq'd$iq!R$iq!S$iq~P!#rO!R&yq!S&yq~P#)gO_$[O!{8tO'U$[O~OP$|yZ$|yj$|yv$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y#m$|y'd$|y!R$|y!S$|y~P!#rOn'fX~P.jOn[X!O[X!c[X%r[X!T[X%Q[X!][X~P$zO!]dX!c[X!cdX'ndX~P;aOP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!TSO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!R9hO!S$]a~O]#qOh$OOj#rOk#qOl#qOq$POs9mOx#xO!T#yO!_:pO!d#vO#V9sO#t$TO$_9oO$a9qO$d$UO'Z&zO'd#sO~O#d'iO~P&-UO!S[X!SdX~P;aO#W9[O~O!]!wO#W9[O~O!{9kO~O#c9aO~O!{9tO!R'sX!S'sX~O!{9kO!R'qX!S'qX~O#W9uO~O'_9wO~P!#rO#W9|O~O#W9}O~O!]!wO#W:OO~O!]!wO#W9uO~O#m:PO~P#)gO#W:QO~O#W:RO~O#W:SO~O#W:TO~O#m:UO~P!#rO#m:VO~P!#rO#x~!b!r!t!u#U#V'z$_$a$d$u%P%Q%R%X%Z%^%_%a%c~UT#x'z#]}'W'X#z'W'Z'e~",goto:"#Ed(XPPPPPPPP(YP(jP*^PPPP-uPP.[3n5b5uP5uPPP5uP7c5uP5uP7gPP7lP8Qk|}?O}!O>k!O!P?`!P!QCl!Q!R!0[!R![!1q![!]!7s!]!^!8V!^!_!8g!_!`!9d!`!a!:[!a!b!U#R#S2`#S#T!>i#T#o2`#o#p!>y#p#q!?O#q#r!?f#r#s!?x#s$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$I|2`$I|$I}!Bq$I}$JO!Bq$JO$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`W%YR$UWO!^%T!_#o%T#p~%T,T%jg$UW'W+{OX%TXY%cYZ%TZ[%c[p%Tpq%cq!^%T!_#o%T#p$f%T$f$g%c$g#BY%T#BY#BZ%c#BZ$IS%T$IS$I_%c$I_$JT%T$JT$JU%c$JU$KV%T$KV$KW%c$KW&FU%T&FU&FV%c&FV?HT%T?HT?HU%c?HU~%T,T'YR$UW'X+{O!^%T!_#o%T#p~%T$T'jS$UW!j#{O!^%T!_!`'v!`#o%T#p~%T$O'}S#e#v$UWO!^%T!_!`(Z!`#o%T#p~%T$O(bR#e#v$UWO!^%T!_#o%T#p~%T'u(rZ$UW]!ROY(kYZ)eZr(krs*rs!^(k!^!_+U!_#O(k#O#P-b#P#o(k#o#p+U#p~(k&r)jV$UWOr)ers*Ps!^)e!^!_*a!_#o)e#o#p*a#p~)e&r*WR$P&j$UWO!^%T!_#o%T#p~%T&j*dROr*ars*ms~*a&j*rO$P&j'u*{R$P&j$UW]!RO!^%T!_#o%T#p~%T'm+ZV]!ROY+UYZ*aZr+Urs+ps#O+U#O#P+w#P~+U'm+wO$P&j]!R'm+zROr+Urs,Ts~+U'm,[U$P&j]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R,sU]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R-[O]!R!R-_PO~,n'u-gV$UWOr(krs-|s!^(k!^!_+U!_#o(k#o#p+U#p~(k'u.VZ$P&j$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/PZ$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/yR$UW]!RO!^%T!_#o%T#p~%T!Z0XT$UWO!^.x!^!_,n!_#o.x#o#p,n#p~.xy0mZ$UWOt%Ttu1`u!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`y1g]$UW'mqOt%Ttu1`u!Q%T!Q![1`![!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`&i2k_$UW#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`[3q_$UW#zSOt%Ttu3ju}%T}!O3j!O!Q%T!Q![3j![!^%T!_!c%T!c!}3j!}#R%T#R#S3j#S#T%T#T#o3j#p$g%T$g~3j$O4wS#^#v$UWO!^%T!_!`5T!`#o%T#p~%T$O5[R$UW#o#vO!^%T!_#o%T#p~%T%r5lU'v%j$UWOv%Tvw6Ow!^%T!_!`5T!`#o%T#p~%T$O6VS$UW#i#vO!^%T!_!`5T!`#o%T#p~%T'u6jZ$UW]!ROY6cYZ7]Zw6cwx*rx!^6c!^!_8T!_#O6c#O#P:T#P#o6c#o#p8T#p~6c&r7bV$UWOw7]wx*Px!^7]!^!_7w!_#o7]#o#p7w#p~7]&j7zROw7wwx*mx~7w'm8YV]!ROY8TYZ7wZw8Twx+px#O8T#O#P8o#P~8T'm8rROw8Twx8{x~8T'm9SU$P&j]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R9kU]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R:QPO~9f'u:YV$UWOw6cwx:ox!^6c!^!_8T!_#o6c#o#p8T#p~6c'u:xZ$P&j$UW]!ROY;kYZ%TZw;kwx/rx!^;k!^!_9f!_#O;k#O#PW{!^%T!_!`5T!`#o%T#p~%T$O>_S#[#v$UWO!^%T!_!`5T!`#o%T#p~%T$u>rSj$m$UWO!^%T!_!`5T!`#o%T#p~%T&i?VR!R&a$UWO!^%T!_#o%T#p~%T&i?gVu%n$UWO!O%T!O!P?|!P!Q%T!Q![@r![!^%T!_#o%T#p~%Ty@RT$UWO!O%T!O!P@b!P!^%T!_#o%T#p~%Ty@iR!Qq$UWO!^%T!_#o%T#p~%Ty@yZ$UWkqO!Q%T!Q![@r![!^%T!_!g%T!g!hAl!h#R%T#R#S@r#S#X%T#X#YAl#Y#o%T#p~%TyAqZ$UWO{%T{|Bd|}%T}!OBd!O!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyBiV$UWO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyCVV$UWkqO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%T,TCs`$UW#]#vOYDuYZ%TZzDuz{Jl{!PDu!P!Q!-e!Q!^Du!^!_Fx!_!`!.^!`!a!/]!a!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXD|[$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXEy_$UW}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%TPF}V}POYFxZ!PFx!P!QGd!Q!}Fx!}#OG{#O#PHh#P~FxPGiU}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGdPHOTOYG{Z#OG{#O#PH_#P#QFx#Q~G{PHbQOYG{Z~G{PHkQOYFxZ~FxXHvY$UWOYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~HqXIkV$UWOYHqYZ%TZ!^Hq!^!_G{!_#oHq#o#pG{#p~HqXJVV$UWOYDuYZ%TZ!^Du!^!_Fx!_#oDu#o#pFx#p~Du,TJs^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q!,R!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,TKtV$UWOzKoz{LZ{!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TL`X$UWOzKoz{LZ{!PKo!P!QL{!Q!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TMSR$UWU+{O!^%T!_#o%T#p~%T+{M`ROzM]z{Mi{~M]+{MlTOzM]z{Mi{!PM]!P!QM{!Q~M]+{NQOU+{,TNX^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q! T!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,T! ^_$UWU+{}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%T+{!!bY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!&x!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#VY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!#u!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#|UU+{}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGd+{!$cWOY!$`YZM]Zz!$`z{!${{#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%OYOY!$`YZM]Zz!$`z{!${{!P!$`!P!Q!%n!Q#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%sTU+{OYG{Z#OG{#O#PH_#P#QFx#Q~G{+{!&VTOY!$`YZM]Zz!$`z{!${{~!$`+{!&iTOY!!]YZM]Zz!!]z{!#Q{~!!]+{!&}_}POzM]z{Mi{#ZM]#Z#[!&x#[#]M]#]#^!&x#^#aM]#a#b!&x#b#gM]#g#h!&x#h#iM]#i#j!&x#j#mM]#m#n!&x#n~M],T!(R[$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!(|^$UWOY!'|YZKoZz!'|z{!(w{!P!'|!P!Q!)x!Q!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!*PY$UWU+{OYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~Hq,T!*tX$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#o!'|#o#p!$`#p~!'|,T!+fX$UWOYJlYZKoZzJlz{NQ{!^Jl!^!_!!]!_#oJl#o#p!!]#p~Jl,T!,Yc$UW}POzKoz{LZ{!^Ko!^!_M]!_#ZKo#Z#[!,R#[#]Ko#]#^!,R#^#aKo#a#b!,R#b#gKo#g#h!,R#h#iKo#i#j!,R#j#mKo#m#n!,R#n#oKo#o#pM]#p~Ko,T!-lV$UWT+{OY!-eYZ%TZ!^!-e!^!_!.R!_#o!-e#o#p!.R#p~!-e+{!.WQT+{OY!.RZ~!.R$P!.g[$UW#o#v}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Du]!/f[#wS$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Duy!0cd$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#U%T#U#V!3X#V#X%T#X#YAl#Y#b%T#b#c!2w#c#d!4m#d#l%T#l#m!5{#m#o%T#p~%Ty!1x_$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#X%T#X#YAl#Y#b%T#b#c!2w#c#o%T#p~%Ty!3OR$UWkqO!^%T!_#o%T#p~%Ty!3^W$UWO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#o%T#p~%Ty!3}Y$UWkqO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#b%T#b#c!2w#c#o%T#p~%Ty!4rV$UWO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#o%T#p~%Ty!5`X$UWkqO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#b%T#b#c!2w#c#o%T#p~%Ty!6QZ$UWO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#o%T#p~%Ty!6z]$UWkqO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#b%T#b#c!2w#c#o%T#p~%T%w!7|R!]V$UW#m%hO!^%T!_#o%T#p~%T!P!8^R_w$UWO!^%T!_#o%T#p~%T+c!8rR'`d!a%Y#x&s'zP!P!Q!8{!^!_!9Q!_!`!9_W!9QO$WW#v!9VP#`#v!_!`!9Y#v!9_O#o#v#v!9dO#a#v%w!9kT!{%o$UWO!^%T!_!`'v!`!a!9z!a#o%T#p~%T$P!:RR#W#w$UWO!^%T!_#o%T#p~%T%w!:gT'_!s#a#v$RS$UWO!^%T!_!`!:v!`!a!;W!a#o%T#p~%T$O!:}R#a#v$UWO!^%T!_#o%T#p~%T$O!;_T#`#v$UWO!^%T!_!`5T!`!a!;n!a#o%T#p~%T$O!;uS#`#v$UWO!^%T!_!`5T!`#o%T#p~%T%w!]S#g#v$UWO!^%T!_!`5T!`#o%T#p~%T$P!>pR$UW'd#wO!^%T!_#o%T#p~%T~!?OO!T~%r!?VT'u%j$UWO!^%T!_!`5T!`#o%T#p#q!=P#q~%T$u!?oR!S$knQ$UWO!^%T!_#o%T#p~%TX!@PR!kP$UWO!^%T!_#o%T#p~%T,T!@gr$UW'W+{#zS'Z%k'epOX%TXY%cYZ%TZ[%c[p%Tpq%cqt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`,T!CO_$UW'X+{#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`",tokenizers:[noSemicolon,incdecToken,template,0,1,2,3,4,5,6,7,8,insertSemicolon],topRules:{Script:[0,7]},dialects:{jsx:11335,ts:11337},dynamicPrecedences:{"149":1,"176":1},specialized:[{term:287,get:(o,e)=>tsExtends(o,e)<<1},{term:287,get:o=>spec_identifier[o]||-1},{term:297,get:o=>spec_word[o]||-1},{term:63,get:o=>spec_LessThan[o]||-1}],tokenPrec:11358}),snippets=[snippetCompletion("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),snippetCompletion("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),snippetCompletion("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),snippetCompletion(`try { - \${} -} catch (\${error}) { - \${} -}`,{label:"try",detail:"block",type:"keyword"}),snippetCompletion(`class \${name} { - constructor(\${params}) { - \${} - } -}`,{label:"class",detail:"definition",type:"keyword"}),snippetCompletion('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),snippetCompletion('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],javascriptLanguage=LRLanguage.define({parser:parser.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\s*({|else\b)/}),TryStatement:continuedIndent({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:flatIndent,SwitchBody:o=>{let e=o.textAfter,s=/^\s*\}/.test(e),a=/^\s*(case|default)\b/.test(e);return o.baseIndent+(s?0:a?1:2)*o.unit},Block:delimitedIndent({closing:"}"}),ArrowFunction:o=>o.baseIndent+o.unit,"TemplateString BlockComment":()=>-1,"Statement Property":continuedIndent({except:/^{/}),JSXElement(o){let e=/^\s*<\//.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},JSXEscape(o){let e=/\s*\}/.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},"JSXOpenTag JSXSelfClosingTag"(o){return o.column(o.node.from)+o.unit}}),foldNodeProp.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression":foldInside$1,BlockComment(o){return{from:o.from+2,to:o.to-2}}}),styleTags({"get set async static":tags.modifier,"for while do if else switch try catch finally return throw break continue default case":tags.controlKeyword,"in of await yield void typeof delete instanceof":tags.operatorKeyword,"let var const function class extends":tags.definitionKeyword,"import export from":tags.moduleKeyword,"with debugger as new":tags.keyword,TemplateString:tags.special(tags.string),Super:tags.atom,BooleanLiteral:tags.bool,this:tags.self,null:tags.null,Star:tags.modifier,VariableName:tags.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":tags.function(tags.variableName),VariableDefinition:tags.definition(tags.variableName),Label:tags.labelName,PropertyName:tags.propertyName,PrivatePropertyName:tags.special(tags.propertyName),"CallExpression/MemberExpression/PropertyName":tags.function(tags.propertyName),"FunctionDeclaration/VariableDefinition":tags.function(tags.definition(tags.variableName)),"ClassDeclaration/VariableDefinition":tags.definition(tags.className),PropertyDefinition:tags.definition(tags.propertyName),PrivatePropertyDefinition:tags.definition(tags.special(tags.propertyName)),UpdateOp:tags.updateOperator,LineComment:tags.lineComment,BlockComment:tags.blockComment,Number:tags.number,String:tags.string,ArithOp:tags.arithmeticOperator,LogicOp:tags.logicOperator,BitOp:tags.bitwiseOperator,CompareOp:tags.compareOperator,RegExp:tags.regexp,Equals:tags.definitionOperator,"Arrow : Spread":tags.punctuation,"( )":tags.paren,"[ ]":tags.squareBracket,"{ }":tags.brace,"InterpolationStart InterpolationEnd":tags.special(tags.brace),".":tags.derefOperator,", ;":tags.separator,TypeName:tags.typeName,TypeDefinition:tags.definition(tags.typeName),"type enum interface implements namespace module declare":tags.definitionKeyword,"abstract global Privacy readonly override":tags.modifier,"is keyof unique infer":tags.operatorKeyword,JSXAttributeValue:tags.attributeValue,JSXText:tags.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":tags.angleBracket,"JSXIdentifier JSXNameSpacedName":tags.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":tags.attributeName})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),typescriptLanguage=javascriptLanguage.configure({dialect:"ts"}),jsxLanguage=javascriptLanguage.configure({dialect:"jsx"}),tsxLanguage=javascriptLanguage.configure({dialect:"jsx ts"});function javascript(o={}){let e=o.jsx?o.typescript?tsxLanguage:jsxLanguage:o.typescript?typescriptLanguage:javascriptLanguage;return new LanguageSupport(e,javascriptLanguage.data.of({autocomplete:ifNotIn(["LineComment","BlockComment","String"],completeFromList(snippets))}))}const useObserver=(o,{root:e,rootMargin:s,threshold:a}={},c=[])=>{const d=react.exports.useRef(null),_=react.exports.useRef(null);return react.exports.useCallback(k=>{d.current&&_.current&&(_.current.unobserve(d.current),_.current.disconnect(),_.current=null),k&&(_.current=new IntersectionObserver(o,{root:e,rootMargin:s,threshold:a}),_.current.observe(k),d.current=k)},[d,e,s,JSON.stringify(a),...c])},useInView=({root:o,rootMargin:e,threshold:s,unobserveOnEnter:a,target:c,onEnter:d,onLeave:_,defaultInView:b}={},k=[])=>{const[$,j]=react.exports.useState({inView:b||!1,entry:null,observer:null}),_e=react.exports.useCallback(([tt],nt)=>{const rt=nt.thresholds.some(st=>tt.intersectionRatio>=st)&&tt.isIntersecting;j({inView:rt,entry:tt,observer:nt}),rt&&a&&(nt.unobserve(tt.target),nt.disconnect()),rt?d==null||d(tt,nt):_==null||_(tt,nt)},[d,_,a]),et=useObserver(_e,{root:o,rootMargin:e,threshold:s},[a,...k]);return react.exports.useEffect(()=>{c!=null&&c.current&&et(c.current)},[c,et]),[et,$.inView,$.entry,$.observer]},version="14.7.77",createExtendedExponentialRampToValueAutomationEvent=(o,e,s)=>({endTime:e,insertTime:s,type:"exponentialRampToValue",value:o}),createExtendedLinearRampToValueAutomationEvent=(o,e,s)=>({endTime:e,insertTime:s,type:"linearRampToValue",value:o}),createSetValueAutomationEvent=(o,e)=>({startTime:e,type:"setValue",value:o}),createSetValueCurveAutomationEvent=(o,e,s)=>({duration:s,startTime:e,type:"setValueCurve",values:o}),getTargetValueAtTime=(o,e,{startTime:s,target:a,timeConstant:c})=>a+(e-a)*Math.exp((s-o)/c),isExponentialRampToValueAutomationEvent=o=>o.type==="exponentialRampToValue",isLinearRampToValueAutomationEvent=o=>o.type==="linearRampToValue",isAnyRampToValueAutomationEvent=o=>isExponentialRampToValueAutomationEvent(o)||isLinearRampToValueAutomationEvent(o),isSetValueAutomationEvent=o=>o.type==="setValue",isSetValueCurveAutomationEvent=o=>o.type==="setValueCurve",getValueOfAutomationEventAtIndexAtTime=(o,e,s,a)=>{const c=o[e];return c===void 0?a:isAnyRampToValueAutomationEvent(c)||isSetValueAutomationEvent(c)?c.value:isSetValueCurveAutomationEvent(c)?c.values[c.values.length-1]:getTargetValueAtTime(s,getValueOfAutomationEventAtIndexAtTime(o,e-1,c.startTime,a),c)},getEndTimeAndValueOfPreviousAutomationEvent=(o,e,s,a,c)=>s===void 0?[a.insertTime,c]:isAnyRampToValueAutomationEvent(s)?[s.endTime,s.value]:isSetValueAutomationEvent(s)?[s.startTime,s.value]:isSetValueCurveAutomationEvent(s)?[s.startTime+s.duration,s.values[s.values.length-1]]:[s.startTime,getValueOfAutomationEventAtIndexAtTime(o,e-1,s.startTime,c)],isCancelAndHoldAutomationEvent=o=>o.type==="cancelAndHold",isCancelScheduledValuesAutomationEvent=o=>o.type==="cancelScheduledValues",getEventTime=o=>isCancelAndHoldAutomationEvent(o)||isCancelScheduledValuesAutomationEvent(o)?o.cancelTime:isExponentialRampToValueAutomationEvent(o)||isLinearRampToValueAutomationEvent(o)?o.endTime:o.startTime,getExponentialRampValueAtTime=(o,e,s,{endTime:a,value:c})=>s===c?c:0s+(o-e)/(a-e)*(c-s),interpolateValue=(o,e)=>{const s=Math.floor(e),a=Math.ceil(e);return s===a?o[s]:(1-(e-s))*o[s]+(1-(a-e))*o[a]},getValueCurveValueAtTime=(o,{duration:e,startTime:s,values:a})=>{const c=(o-s)/e*(a.length-1);return interpolateValue(a,c)},isSetTargetAutomationEvent=o=>o.type==="setTarget";class AutomationEventList{constructor(e){this._automationEvents=[],this._currenTime=0,this._defaultValue=e}[Symbol.iterator](){return this._automationEvents[Symbol.iterator]()}add(e){const s=getEventTime(e);if(isCancelAndHoldAutomationEvent(e)||isCancelScheduledValuesAutomationEvent(e)){const a=this._automationEvents.findIndex(d=>isCancelScheduledValuesAutomationEvent(e)&&isSetValueCurveAutomationEvent(d)?d.startTime+d.duration>=s:getEventTime(d)>=s),c=this._automationEvents[a];if(a!==-1&&(this._automationEvents=this._automationEvents.slice(0,a)),isCancelAndHoldAutomationEvent(e)){const d=this._automationEvents[this._automationEvents.length-1];if(c!==void 0&&isAnyRampToValueAutomationEvent(c)){if(isSetTargetAutomationEvent(d))throw new Error("The internal list is malformed.");const _=isSetValueCurveAutomationEvent(d)?d.startTime+d.duration:getEventTime(d),b=isSetValueCurveAutomationEvent(d)?d.values[d.values.length-1]:d.value,k=isExponentialRampToValueAutomationEvent(c)?getExponentialRampValueAtTime(s,_,b,c):getLinearRampValueAtTime(s,_,b,c),$=isExponentialRampToValueAutomationEvent(c)?createExtendedExponentialRampToValueAutomationEvent(k,s,this._currenTime):createExtendedLinearRampToValueAutomationEvent(k,s,this._currenTime);this._automationEvents.push($)}d!==void 0&&isSetTargetAutomationEvent(d)&&this._automationEvents.push(createSetValueAutomationEvent(this.getValue(s),s)),d!==void 0&&isSetValueCurveAutomationEvent(d)&&d.startTime+d.duration>s&&(this._automationEvents[this._automationEvents.length-1]=createSetValueCurveAutomationEvent(new Float32Array([6,7]),d.startTime,s-d.startTime))}}else{const a=this._automationEvents.findIndex(_=>getEventTime(_)>s),c=a===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[a-1];if(c!==void 0&&isSetValueCurveAutomationEvent(c)&&getEventTime(c)+c.duration>s)return!1;const d=isExponentialRampToValueAutomationEvent(e)?createExtendedExponentialRampToValueAutomationEvent(e.value,e.endTime,this._currenTime):isLinearRampToValueAutomationEvent(e)?createExtendedLinearRampToValueAutomationEvent(e.value,s,this._currenTime):e;if(a===-1)this._automationEvents.push(d);else{if(isSetValueCurveAutomationEvent(e)&&s+e.duration>getEventTime(this._automationEvents[a]))return!1;this._automationEvents.splice(a,0,d)}}return!0}flush(e){const s=this._automationEvents.findIndex(a=>getEventTime(a)>e);if(s>1){const a=this._automationEvents.slice(s-1),c=a[0];isSetTargetAutomationEvent(c)&&a.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents,s-2,c.startTime,this._defaultValue),c.startTime)),this._automationEvents=a}}getValue(e){if(this._automationEvents.length===0)return this._defaultValue;const s=this._automationEvents.findIndex(_=>getEventTime(_)>e),a=this._automationEvents[s],c=(s===-1?this._automationEvents.length:s)-1,d=this._automationEvents[c];if(d!==void 0&&isSetTargetAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)||a.insertTime>e))return getTargetValueAtTime(e,getValueOfAutomationEventAtIndexAtTime(this._automationEvents,c-1,d.startTime,this._defaultValue),d);if(d!==void 0&&isSetValueAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)))return d.value;if(d!==void 0&&isSetValueCurveAutomationEvent(d)&&(a===void 0||!isAnyRampToValueAutomationEvent(a)||d.startTime+d.duration>e))return e({cancelTime:o,type:"cancelAndHold"}),createCancelScheduledValuesAutomationEvent=o=>({cancelTime:o,type:"cancelScheduledValues"}),createExponentialRampToValueAutomationEvent=(o,e)=>({endTime:e,type:"exponentialRampToValue",value:o}),createLinearRampToValueAutomationEvent=(o,e)=>({endTime:e,type:"linearRampToValue",value:o}),createSetTargetAutomationEvent=(o,e,s)=>({startTime:e,target:o,timeConstant:s,type:"setTarget"}),createAbortError=()=>new DOMException("","AbortError"),createAddActiveInputConnectionToAudioNode=o=>(e,s,[a,c,d],_)=>{o(e[c],[s,a,d],b=>b[0]===s&&b[1]===a,_)},createAddAudioNodeConnections=o=>(e,s,a)=>{const c=[];for(let d=0;d(e,s)=>{o.set(e,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:s})},ACTIVE_AUDIO_NODE_STORE=new WeakSet,AUDIO_NODE_CONNECTIONS_STORE=new WeakMap,AUDIO_NODE_STORE=new WeakMap,AUDIO_PARAM_CONNECTIONS_STORE=new WeakMap,AUDIO_PARAM_STORE=new WeakMap,CONTEXT_STORE=new WeakMap,EVENT_LISTENERS=new WeakMap,CYCLE_COUNTERS=new WeakMap,NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS=new WeakMap,NODE_TO_PROCESSOR_MAPS=new WeakMap,handler={construct(){return handler}},isConstructible=o=>{try{const e=new Proxy(o,handler);new e}catch{return!1}return!0},IMPORT_STATEMENT_REGEX=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,splitImportStatements=(o,e)=>{const s=[];let a=o.replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX);for(;c!==null;){const d=c[1].slice(1,-1),_=c[0].replace(/([\s]+)?;?$/,"").replace(d,new URL(d,e).toString());s.push(_),a=a.slice(c[0].length).replace(/^[\s]+/,""),c=a.match(IMPORT_STATEMENT_REGEX)}return[s.join(";"),a]},verifyParameterDescriptors=o=>{if(o!==void 0&&!Array.isArray(o))throw new TypeError("The parameterDescriptors property of given value for processorCtor is not an array.")},verifyProcessorCtor=o=>{if(!isConstructible(o))throw new TypeError("The given value for processorCtor should be a constructor.");if(o.prototype===null||typeof o.prototype!="object")throw new TypeError("The given value for processorCtor should have a prototype.")},createAddAudioWorkletModule=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{let tt=0;return(nt,it,rt={credentials:"omit"})=>{const st=j.get(nt);if(st!==void 0&&st.has(it))return Promise.resolve();const at=$.get(nt);if(at!==void 0){const ct=at.get(it);if(ct!==void 0)return ct}const lt=d(nt),dt=lt.audioWorklet===void 0?c(it).then(([ct,ut])=>{const[ot,ht]=splitImportStatements(ct,ut),pt=`${ot};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${ht} -})})(window,'_AWGS')`;return s(pt)}).then(()=>{const ct=et._AWGS.pop();if(ct===void 0)throw new SyntaxError;a(lt.currentTime,lt.sampleRate,()=>ct(class{},void 0,(ut,ot)=>{if(ut.trim()==="")throw e();const ht=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(lt);if(ht!==void 0){if(ht.has(ut))throw e();verifyProcessorCtor(ot),verifyParameterDescriptors(ot.parameterDescriptors),ht.set(ut,ot)}else verifyProcessorCtor(ot),verifyParameterDescriptors(ot.parameterDescriptors),NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(lt,new Map([[ut,ot]]))},lt.sampleRate,void 0,void 0))}):Promise.all([c(it),Promise.resolve(o(_e,_e))]).then(([[ct,ut],ot])=>{const ht=tt+1;tt=ht;const[pt,Et]=splitImportStatements(ct,ut),yt=`${pt};((AudioWorkletProcessor,registerProcessor)=>{${Et} -})(${ot?"AudioWorkletProcessor":"class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}"},(n,p)=>registerProcessor(n,class extends p{${ot?"":"__c = (a) => a.forEach(e=>this.__b.add(e.buffer));"}process(i,o,p){${ot?"":"i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));"}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${ht}',class extends AudioWorkletProcessor{process(){return !1}})`,At=new Blob([yt],{type:"application/javascript; charset=utf-8"}),vt=URL.createObjectURL(At);return lt.audioWorklet.addModule(vt,rt).then(()=>{if(b(lt))return lt;const St=_(lt);return St.audioWorklet.addModule(vt,rt).then(()=>St)}).then(St=>{if(k===null)throw new SyntaxError;try{new k(St,`__sac${ht}`)}catch{throw new SyntaxError}}).finally(()=>URL.revokeObjectURL(vt))});return at===void 0?$.set(nt,new Map([[it,dt]])):at.set(it,dt),dt.then(()=>{const ct=j.get(nt);ct===void 0?j.set(nt,new Set([it])):ct.add(it)}).finally(()=>{const ct=$.get(nt);ct!==void 0&&ct.delete(it)}),dt}},getValueForKey=(o,e)=>{const s=o.get(e);if(s===void 0)throw new Error("A value with the given key could not be found.");return s},pickElementFromSet=(o,e)=>{const s=Array.from(o).filter(e);if(s.length>1)throw Error("More than one element was found.");if(s.length===0)throw Error("No element was found.");const[a]=s;return o.delete(a),a},deletePassiveInputConnectionToAudioNode=(o,e,s,a)=>{const c=getValueForKey(o,e),d=pickElementFromSet(c,_=>_[0]===s&&_[1]===a);return c.size===0&&o.delete(e),d},getEventListenersOfAudioNode=o=>getValueForKey(EVENT_LISTENERS,o),setInternalStateToActive=o=>{if(ACTIVE_AUDIO_NODE_STORE.has(o))throw new Error("The AudioNode is already stored.");ACTIVE_AUDIO_NODE_STORE.add(o),getEventListenersOfAudioNode(o).forEach(e=>e(!0))},isAudioWorkletNode=o=>"port"in o,setInternalStateToPassive=o=>{if(!ACTIVE_AUDIO_NODE_STORE.has(o))throw new Error("The AudioNode is not stored.");ACTIVE_AUDIO_NODE_STORE.delete(o),getEventListenersOfAudioNode(o).forEach(e=>e(!1))},setInternalStateToPassiveWhenNecessary=(o,e)=>{!isAudioWorkletNode(o)&&e.every(s=>s.size===0)&&setInternalStateToPassive(o)},createAddConnectionToAudioNode=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>{const tt=new WeakMap;return(nt,it,rt,st,at)=>{const{activeInputs:lt,passiveInputs:dt}=d(it),{outputs:ct}=d(nt),ut=b(nt),ot=ht=>{const pt=k(it),Et=k(nt);if(ht){const gt=deletePassiveInputConnectionToAudioNode(dt,nt,rt,st);o(lt,nt,gt,!1),!at&&!_e(nt)&&s(Et,pt,rt,st),et(it)&&setInternalStateToActive(it)}else{const gt=a(lt,nt,rt,st);e(dt,st,gt,!1),!at&&!_e(nt)&&c(Et,pt,rt,st);const ft=_(it);if(ft===0)j(it)&&setInternalStateToPassiveWhenNecessary(it,lt);else{const mt=tt.get(it);mt!==void 0&&clearTimeout(mt),tt.set(it,setTimeout(()=>{j(it)&&setInternalStateToPassiveWhenNecessary(it,lt)},ft*1e3))}}};return $(ct,[it,rt,st],ht=>ht[0]===it&&ht[1]===rt&&ht[2]===st,!0)?(ut.add(ot),j(nt)?o(lt,nt,[rt,st,ot],!0):e(dt,st,[nt,rt,ot],!0),!0):!1}},createAddPassiveInputConnectionToAudioNode=o=>(e,s,[a,c,d],_)=>{const b=e.get(a);b===void 0?e.set(a,new Set([[c,s,d]])):o(b,[c,s,d],k=>k[0]===c&&k[1]===s,_)},createAddSilentConnection=o=>(e,s)=>{const a=o(e,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});s.connect(a).connect(e.destination);const c=()=>{s.removeEventListener("ended",c),s.disconnect(a),a.disconnect()};s.addEventListener("ended",c)},createAddUnrenderedAudioWorkletNode=o=>(e,s)=>{o(e).add(s)},DEFAULT_OPTIONS$j={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},createAnalyserNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$j),k),_e=a($,j),et=d($)?e():null;super(b,!1,_e,et),this._nativeAnalyserNode=_e}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(b){this._nativeAnalyserNode.fftSize=b}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(b){const k=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=b,!(b>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=k,s()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(b){const k=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=b,!(this._nativeAnalyserNode.maxDecibels>b))throw this._nativeAnalyserNode.minDecibels=k,s()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(b){this._nativeAnalyserNode.smoothingTimeConstant=b}getByteFrequencyData(b){this._nativeAnalyserNode.getByteFrequencyData(b)}getByteTimeDomainData(b){this._nativeAnalyserNode.getByteTimeDomainData(b)}getFloatFrequencyData(b){this._nativeAnalyserNode.getFloatFrequencyData(b)}getFloatTimeDomainData(b){this._nativeAnalyserNode.getFloatTimeDomainData(b)}},isOwnedByContext=(o,e)=>o.context===e,createAnalyserNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,fftSize:b.fftSize,maxDecibels:b.maxDecibels,minDecibels:b.minDecibels,smoothingTimeConstant:b.smoothingTimeConstant};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},testAudioBufferCopyChannelMethodsOutOfBoundsSupport=o=>{try{o.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},createIndexSizeError=()=>new DOMException("","IndexSizeError"),wrapAudioBufferGetChannelDataMethod=o=>{o.getChannelData=(e=>s=>{try{return e.call(o,s)}catch(a){throw a.code===12?createIndexSizeError():a}})(o.getChannelData)},DEFAULT_OPTIONS$i={numberOfChannels:1},createAudioBufferConstructor=(o,e,s,a,c,d,_,b)=>{let k=null;return class gr{constructor(j){if(c===null)throw new Error("Missing the native OfflineAudioContext constructor.");const{length:_e,numberOfChannels:et,sampleRate:tt}=_t(_t({},DEFAULT_OPTIONS$i),j);k===null&&(k=new c(1,1,44100));const nt=a!==null&&e(d,d)?new a({length:_e,numberOfChannels:et,sampleRate:tt}):k.createBuffer(et,_e,tt);if(nt.numberOfChannels===0)throw s();return typeof nt.copyFromChannel!="function"?(_(nt),wrapAudioBufferGetChannelDataMethod(nt)):e(testAudioBufferCopyChannelMethodsOutOfBoundsSupport,()=>testAudioBufferCopyChannelMethodsOutOfBoundsSupport(nt))||b(nt),o.add(nt),nt}static[Symbol.hasInstance](j){return j!==null&&typeof j=="object"&&Object.getPrototypeOf(j)===gr.prototype||o.has(j)}}},MOST_NEGATIVE_SINGLE_FLOAT=-34028234663852886e22,MOST_POSITIVE_SINGLE_FLOAT=-MOST_NEGATIVE_SINGLE_FLOAT,isActiveAudioNode=o=>ACTIVE_AUDIO_NODE_STORE.has(o),DEFAULT_OPTIONS$h={buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1},createAudioBufferSourceNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$h),j),tt=c(_e,et),nt=_(_e),it=nt?e():null;super($,!1,tt,it),this._audioBufferSourceNodeRenderer=it,this._isBufferNullified=!1,this._isBufferSet=et.buffer!==null,this._nativeAudioBufferSourceNode=tt,this._onended=null,this._playbackRate=s(this,nt,tt.playbackRate,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer($){if(this._nativeAudioBufferSourceNode.buffer=$,$!==null){if(this._isBufferSet)throw a();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop($){this._nativeAudioBufferSourceNode.loop=$}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd($){this._nativeAudioBufferSourceNode.loopEnd=$}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart($){this._nativeAudioBufferSourceNode.loopStart=$}get onended(){return this._onended}set onended($){const j=typeof $=="function"?b(this,$):null;this._nativeAudioBufferSourceNode.onended=j;const _e=this._nativeAudioBufferSourceNode.onended;this._onended=_e!==null&&_e===j?$:_e}get playbackRate(){return this._playbackRate}start($=0,j=0,_e){if(this._nativeAudioBufferSourceNode.start($,j,_e),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=_e===void 0?[$,j]:[$,j,_e]),this.context.state!=="closed"){setInternalStateToActive(this);const et=()=>{this._nativeAudioBufferSourceNode.removeEventListener("ended",et),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeAudioBufferSourceNode.addEventListener("ended",et)}}stop($=0){this._nativeAudioBufferSourceNode.stop($),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=$)}},createAudioBufferSourceNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={buffer:_e.buffer,channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,loop:_e.loop,loopEnd:_e.loopEnd,loopStart:_e.loopStart,playbackRate:_e.playbackRate.value};_e=e(j,tt),_!==null&&_e.start(..._),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.playbackRate,_e.playbackRate):await a(j,$.playbackRate,_e.playbackRate),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},isAudioBufferSourceNode=o=>"playbackRate"in o,isBiquadFilterNode=o=>"frequency"in o&&"gain"in o,isConstantSourceNode=o=>"offset"in o,isGainNode=o=>!("frequency"in o)&&"gain"in o,isOscillatorNode=o=>"detune"in o&&"frequency"in o,isStereoPannerNode=o=>"pan"in o,getAudioNodeConnections=o=>getValueForKey(AUDIO_NODE_CONNECTIONS_STORE,o),getAudioParamConnections=o=>getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE,o),deactivateActiveAudioNodeInputConnections=(o,e)=>{const{activeInputs:s}=getAudioNodeConnections(o);s.forEach(c=>c.forEach(([d])=>{e.includes(o)||deactivateActiveAudioNodeInputConnections(d,[...e,o])}));const a=isAudioBufferSourceNode(o)?[o.playbackRate]:isAudioWorkletNode(o)?Array.from(o.parameters.values()):isBiquadFilterNode(o)?[o.Q,o.detune,o.frequency,o.gain]:isConstantSourceNode(o)?[o.offset]:isGainNode(o)?[o.gain]:isOscillatorNode(o)?[o.detune,o.frequency]:isStereoPannerNode(o)?[o.pan]:[];for(const c of a){const d=getAudioParamConnections(c);d!==void 0&&d.activeInputs.forEach(([_])=>deactivateActiveAudioNodeInputConnections(_,e))}isActiveAudioNode(o)&&setInternalStateToPassive(o)},deactivateAudioGraph=o=>{deactivateActiveAudioNodeInputConnections(o.destination,[])},isValidLatencyHint=o=>o===void 0||typeof o=="number"||typeof o=="string"&&(o==="balanced"||o==="interactive"||o==="playback"),createAudioContextConstructor=(o,e,s,a,c,d,_,b,k)=>class extends o{constructor(j={}){if(k===null)throw new Error("Missing the native AudioContext constructor.");let _e;try{_e=new k(j)}catch(nt){throw nt.code===12&&nt.message==="sampleRate is not in range"?s():nt}if(_e===null)throw a();if(!isValidLatencyHint(j.latencyHint))throw new TypeError(`The provided value '${j.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(j.sampleRate!==void 0&&_e.sampleRate!==j.sampleRate)throw s();super(_e,2);const{latencyHint:et}=j,{sampleRate:tt}=_e;if(this._baseLatency=typeof _e.baseLatency=="number"?_e.baseLatency:et==="balanced"?512/tt:et==="interactive"||et===void 0?256/tt:et==="playback"?1024/tt:Math.max(2,Math.min(128,Math.round(et*tt/128)))*128/tt,this._nativeAudioContext=_e,k.name==="webkitAudioContext"?(this._nativeGainNode=_e.createGain(),this._nativeOscillatorNode=_e.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(_e.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,_e.state==="running"){this._state="suspended";const nt=()=>{this._state==="suspended"&&(this._state=null),_e.removeEventListener("statechange",nt)};_e.addEventListener("statechange",nt)}}get baseLatency(){return this._baseLatency}get state(){return this._state!==null?this._state:this._nativeAudioContext.state}close(){return this.state==="closed"?this._nativeAudioContext.close().then(()=>{throw e()}):(this._state==="suspended"&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),deactivateAudioGraph(this)}))}createMediaElementSource(j){return new c(this,{mediaElement:j})}createMediaStreamDestination(){return new d(this)}createMediaStreamSource(j){return new _(this,{mediaStream:j})}createMediaStreamTrackSource(j){return new b(this,{mediaStreamTrack:j})}resume(){return this._state==="suspended"?new Promise((j,_e)=>{const et=()=>{this._nativeAudioContext.removeEventListener("statechange",et),this._nativeAudioContext.state==="running"?j():this.resume().then(j,_e)};this._nativeAudioContext.addEventListener("statechange",et)}):this._nativeAudioContext.resume().catch(j=>{throw j===void 0||j.code===15?e():j})}suspend(){return this._nativeAudioContext.suspend().catch(j=>{throw j===void 0?e():j})}},createAudioDestinationNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_(_e),tt=c(_e,j,et),nt=et?e(b):null;super($,!1,tt,nt),this._isNodeOfNativeOfflineAudioContext=et,this._nativeAudioDestinationNode=tt}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount($){if(this._isNodeOfNativeOfflineAudioContext)throw a();if($>this._nativeAudioDestinationNode.maxChannelCount)throw s();this._nativeAudioDestinationNode.channelCount=$}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode($){if(this._isNodeOfNativeOfflineAudioContext)throw a();this._nativeAudioDestinationNode.channelCountMode=$}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},createAudioDestinationNodeRenderer=o=>{const e=new WeakMap,s=async(a,c)=>{const d=c.destination;return e.set(c,d),await o(a,c,d),d};return{render(a,c){const d=e.get(c);return d!==void 0?Promise.resolve(d):s(a,c)}}},createAudioListenerFactory=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=$.listener,_e=()=>{const ct=new Float32Array(1),ut=e($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:9}),ot=_($);let ht=!1,pt=[0,0,-1,0,1,0],Et=[0,0,0];const gt=()=>{if(ht)return;ht=!0;const At=a($,256,9,0);At.onaudioprocess=({inputBuffer:vt})=>{const St=[d(vt,ct,0),d(vt,ct,1),d(vt,ct,2),d(vt,ct,3),d(vt,ct,4),d(vt,ct,5)];St.some((Dt,xt)=>Dt!==pt[xt])&&(j.setOrientation(...St),pt=St);const Tt=[d(vt,ct,6),d(vt,ct,7),d(vt,ct,8)];Tt.some((Dt,xt)=>Dt!==Et[xt])&&(j.setPosition(...Tt),Et=Tt)},ut.connect(At)},ft=At=>vt=>{vt!==pt[At]&&(pt[At]=vt,j.setOrientation(...pt))},mt=At=>vt=>{vt!==Et[At]&&(Et[At]=vt,j.setPosition(...Et))},yt=(At,vt,St)=>{const Tt=s($,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:vt});Tt.connect(ut,0,At),Tt.start(),Object.defineProperty(Tt.offset,"defaultValue",{get(){return vt}});const Dt=o({context:k},ot,Tt.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT);return b(Dt,"value",xt=>()=>xt.call(Dt),xt=>Ct=>{try{xt.call(Dt,Ct)}catch(bt){if(bt.code!==9)throw bt}gt(),ot&&St(Ct)}),Dt.cancelAndHoldAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelAndHoldAtTime),Dt.cancelScheduledValues=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.cancelScheduledValues),Dt.exponentialRampToValueAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.exponentialRampToValueAtTime),Dt.linearRampToValueAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.linearRampToValueAtTime),Dt.setTargetAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setTargetAtTime),Dt.setValueAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueAtTime),Dt.setValueCurveAtTime=(xt=>ot?()=>{throw c()}:(...Ct)=>{const bt=xt.apply(Dt,Ct);return gt(),bt})(Dt.setValueCurveAtTime),Dt};return{forwardX:yt(0,0,ft(0)),forwardY:yt(1,0,ft(1)),forwardZ:yt(2,-1,ft(2)),positionX:yt(6,0,mt(0)),positionY:yt(7,0,mt(1)),positionZ:yt(8,0,mt(2)),upX:yt(3,0,ft(3)),upY:yt(4,1,ft(4)),upZ:yt(5,0,ft(5))}},{forwardX:et,forwardY:tt,forwardZ:nt,positionX:it,positionY:rt,positionZ:st,upX:at,upY:lt,upZ:dt}=j.forwardX===void 0?_e():j;return{get forwardX(){return et},get forwardY(){return tt},get forwardZ(){return nt},get positionX(){return it},get positionY(){return rt},get positionZ(){return st},get upX(){return at},get upY(){return lt},get upZ(){return dt}}},isAudioNode$1=o=>"context"in o,isAudioNodeOutputConnection=o=>isAudioNode$1(o[0]),insertElementInSet=(o,e,s,a)=>{for(const c of o)if(s(c)){if(a)return!1;throw Error("The set contains at least one similar element.")}return o.add(e),!0},addActiveInputConnectionToAudioParam=(o,e,[s,a],c)=>{insertElementInSet(o,[e,s,a],d=>d[0]===e&&d[1]===s,c)},addPassiveInputConnectionToAudioParam=(o,[e,s,a],c)=>{const d=o.get(e);d===void 0?o.set(e,new Set([[s,a]])):insertElementInSet(d,[s,a],_=>_[0]===s,c)},isNativeAudioNodeFaker=o=>"inputs"in o,connectNativeAudioNodeToNativeAudioNode=(o,e,s,a)=>{if(isNativeAudioNodeFaker(e)){const c=e.inputs[a];return o.connect(c,s,0),[c,s,0]}return o.connect(e,s,a),[e,s,a]},deleteActiveInputConnection=(o,e,s)=>{for(const a of o)if(a[0]===e&&a[1]===s)return o.delete(a),a;return null},deleteActiveInputConnectionToAudioParam=(o,e,s)=>pickElementFromSet(o,a=>a[0]===e&&a[1]===s),deleteEventListenerOfAudioNode=(o,e)=>{if(!getEventListenersOfAudioNode(o).delete(e))throw new Error("Missing the expected event listener.")},deletePassiveInputConnectionToAudioParam=(o,e,s)=>{const a=getValueForKey(o,e),c=pickElementFromSet(a,d=>d[0]===s);return a.size===0&&o.delete(e),c},disconnectNativeAudioNodeFromNativeAudioNode=(o,e,s,a)=>{isNativeAudioNodeFaker(e)?o.disconnect(e.inputs[a],s,0):o.disconnect(e,s,a)},getNativeAudioNode=o=>getValueForKey(AUDIO_NODE_STORE,o),getNativeAudioParam=o=>getValueForKey(AUDIO_PARAM_STORE,o),isPartOfACycle=o=>CYCLE_COUNTERS.has(o),isPassiveAudioNode=o=>!ACTIVE_AUDIO_NODE_STORE.has(o),testAudioNodeDisconnectMethodSupport=(o,e)=>new Promise(s=>{if(e!==null)s(!0);else{const a=o.createScriptProcessor(256,1,1),c=o.createGain(),d=o.createBuffer(1,2,44100),_=d.getChannelData(0);_[0]=1,_[1]=1;const b=o.createBufferSource();b.buffer=d,b.loop=!0,b.connect(a).connect(o.destination),b.connect(c),b.disconnect(c),a.onaudioprocess=k=>{const $=k.inputBuffer.getChannelData(0);Array.prototype.some.call($,j=>j===1)?s(!0):s(!1),b.stop(),a.onaudioprocess=null,b.disconnect(a),a.disconnect(o.destination)},b.start()}}),visitEachAudioNodeOnce=(o,e)=>{const s=new Map;for(const a of o)for(const c of a){const d=s.get(c);s.set(c,d===void 0?1:d+1)}s.forEach((a,c)=>e(c,a))},isNativeAudioNode$1=o=>"context"in o,wrapAudioNodeDisconnectMethod=o=>{const e=new Map;o.connect=(s=>(a,c=0,d=0)=>{const _=isNativeAudioNode$1(a)?s(a,c,d):s(a,c),b=e.get(a);return b===void 0?e.set(a,[{input:d,output:c}]):b.every(k=>k.input!==d||k.output!==c)&&b.push({input:d,output:c}),_})(o.connect.bind(o)),o.disconnect=(s=>(a,c,d)=>{if(s.apply(o),a===void 0)e.clear();else if(typeof a=="number")for(const[_,b]of e){const k=b.filter($=>$.output!==a);k.length===0?e.delete(_):e.set(_,k)}else if(e.has(a))if(c===void 0)e.delete(a);else{const _=e.get(a);if(_!==void 0){const b=_.filter(k=>k.output!==c&&(k.input!==d||d===void 0));b.length===0?e.delete(a):e.set(a,b)}}for(const[_,b]of e)b.forEach(k=>{isNativeAudioNode$1(_)?o.connect(_,k.output,k.input):o.connect(_,k.output)})})(o.disconnect)},addConnectionToAudioParamOfAudioContext=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioParamConnections(e),{outputs:_}=getAudioNodeConnections(o),b=getEventListenersOfAudioNode(o),k=$=>{const j=getNativeAudioNode(o),_e=getNativeAudioParam(e);if($){const et=deletePassiveInputConnectionToAudioParam(d,o,s);addActiveInputConnectionToAudioParam(c,o,et,!1),!a&&!isPartOfACycle(o)&&j.connect(_e,s)}else{const et=deleteActiveInputConnectionToAudioParam(c,o,s);addPassiveInputConnectionToAudioParam(d,et,!1),!a&&!isPartOfACycle(o)&&j.disconnect(_e,s)}};return insertElementInSet(_,[e,s],$=>$[0]===e&&$[1]===s,!0)?(b.add(k),isActiveAudioNode(o)?addActiveInputConnectionToAudioParam(c,o,[s,k],!0):addPassiveInputConnectionToAudioParam(d,[o,s,k],!0),!0):!1},deleteInputConnectionOfAudioNode=(o,e,s,a)=>{const{activeInputs:c,passiveInputs:d}=getAudioNodeConnections(e),_=deleteActiveInputConnection(c[a],o,s);return _===null?[deletePassiveInputConnectionToAudioNode(d,o,s,a)[2],!1]:[_[2],!0]},deleteInputConnectionOfAudioParam=(o,e,s)=>{const{activeInputs:a,passiveInputs:c}=getAudioParamConnections(e),d=deleteActiveInputConnection(a,o,s);return d===null?[deletePassiveInputConnectionToAudioParam(c,o,s)[1],!1]:[d[2],!0]},deleteInputsOfAudioNode=(o,e,s,a,c)=>{const[d,_]=deleteInputConnectionOfAudioNode(o,s,a,c);if(d!==null&&(deleteEventListenerOfAudioNode(o,d),_&&!e&&!isPartOfACycle(o)&&disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(o),getNativeAudioNode(s),a,c)),isActiveAudioNode(s)){const{activeInputs:b}=getAudioNodeConnections(s);setInternalStateToPassiveWhenNecessary(s,b)}},deleteInputsOfAudioParam=(o,e,s,a)=>{const[c,d]=deleteInputConnectionOfAudioParam(o,s,a);c!==null&&(deleteEventListenerOfAudioNode(o,c),d&&!e&&!isPartOfACycle(o)&&getNativeAudioNode(o).disconnect(getNativeAudioParam(s),a))},deleteAnyConnection=(o,e)=>{const s=getAudioNodeConnections(o),a=[];for(const c of s.outputs)isAudioNodeOutputConnection(c)?deleteInputsOfAudioNode(o,e,...c):deleteInputsOfAudioParam(o,e,...c),a.push(c[0]);return s.outputs.clear(),a},deleteConnectionAtOutput=(o,e,s)=>{const a=getAudioNodeConnections(o),c=[];for(const d of a.outputs)d[1]===s&&(isAudioNodeOutputConnection(d)?deleteInputsOfAudioNode(o,e,...d):deleteInputsOfAudioParam(o,e,...d),c.push(d[0]),a.outputs.delete(d));return c},deleteConnectionToDestination=(o,e,s,a,c)=>{const d=getAudioNodeConnections(o);return Array.from(d.outputs).filter(_=>_[0]===s&&(a===void 0||_[1]===a)&&(c===void 0||_[2]===c)).map(_=>(isAudioNodeOutputConnection(_)?deleteInputsOfAudioNode(o,e,..._):deleteInputsOfAudioParam(o,e,..._),d.outputs.delete(_),_[0]))},createAudioNodeConstructor=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt,nt,it)=>class extends ${constructor(st,at,lt,dt){super(lt),this._context=st,this._nativeAudioNode=lt;const ct=j(st);_e(ct)&&s(testAudioNodeDisconnectMethodSupport,()=>testAudioNodeDisconnectMethodSupport(ct,it))!==!0&&wrapAudioNodeDisconnectMethod(lt),AUDIO_NODE_STORE.set(this,lt),EVENT_LISTENERS.set(this,new Set),st.state!=="closed"&&at&&setInternalStateToActive(this),o(this,dt,lt)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(st){this._nativeAudioNode.channelCount=st}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(st){this._nativeAudioNode.channelCountMode=st}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(st){this._nativeAudioNode.channelInterpretation=st}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(st,at=0,lt=0){if(at<0||at>=this._nativeAudioNode.numberOfOutputs)throw c();const dt=j(this._context),ct=nt(dt);if(et(st)||tt(st))throw d();if(isAudioNode$1(st)){const ht=getNativeAudioNode(st);try{const Et=connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode,ht,at,lt),gt=isPassiveAudioNode(this);(ct||gt)&&this._nativeAudioNode.disconnect(...Et),this.context.state!=="closed"&&!gt&&isPassiveAudioNode(st)&&setInternalStateToActive(st)}catch(Et){throw Et.code===12?d():Et}if(e(this,st,at,lt,ct)){const Et=k([this],st);visitEachAudioNodeOnce(Et,a(ct))}return st}const ut=getNativeAudioParam(st);if(ut.name==="playbackRate"&&ut.maxValue===1024)throw _();try{this._nativeAudioNode.connect(ut,at),(ct||isPassiveAudioNode(this))&&this._nativeAudioNode.disconnect(ut,at)}catch(ht){throw ht.code===12?d():ht}if(addConnectionToAudioParamOfAudioContext(this,st,at,ct)){const ht=k([this],st);visitEachAudioNodeOnce(ht,a(ct))}}disconnect(st,at,lt){let dt;const ct=j(this._context),ut=nt(ct);if(st===void 0)dt=deleteAnyConnection(this,ut);else if(typeof st=="number"){if(st<0||st>=this.numberOfOutputs)throw c();dt=deleteConnectionAtOutput(this,ut,st)}else{if(at!==void 0&&(at<0||at>=this.numberOfOutputs)||isAudioNode$1(st)&<!==void 0&&(lt<0||lt>=st.numberOfInputs))throw c();if(dt=deleteConnectionToDestination(this,ut,st,at,lt),dt.length===0)throw d()}for(const ot of dt){const ht=k([this],ot);visitEachAudioNodeOnce(ht,b)}}},createAudioParamFactory=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt=null,st=null)=>{const at=new AutomationEventList(it.defaultValue),lt=nt?a(at):null,dt={get defaultValue(){return it.defaultValue},get maxValue(){return rt===null?it.maxValue:rt},get minValue(){return st===null?it.minValue:st},get value(){return it.value},set value(ct){it.value=ct,dt.setValueAtTime(ct,tt.context.currentTime)},cancelAndHoldAtTime(ct){if(typeof it.cancelAndHoldAtTime=="function")lt===null&&at.flush(tt.context.currentTime),at.add(c(ct)),it.cancelAndHoldAtTime(ct);else{const ut=Array.from(at).pop();lt===null&&at.flush(tt.context.currentTime),at.add(c(ct));const ot=Array.from(at).pop();it.cancelScheduledValues(ct),ut!==ot&&ot!==void 0&&(ot.type==="exponentialRampToValue"?it.exponentialRampToValueAtTime(ot.value,ot.endTime):ot.type==="linearRampToValue"?it.linearRampToValueAtTime(ot.value,ot.endTime):ot.type==="setValue"?it.setValueAtTime(ot.value,ot.startTime):ot.type==="setValueCurve"&&it.setValueCurveAtTime(ot.values,ot.startTime,ot.duration))}return dt},cancelScheduledValues(ct){return lt===null&&at.flush(tt.context.currentTime),at.add(d(ct)),it.cancelScheduledValues(ct),dt},exponentialRampToValueAtTime(ct,ut){if(ct===0)throw new RangeError;if(!Number.isFinite(ut)||ut<0)throw new RangeError;return lt===null&&at.flush(tt.context.currentTime),at.add(_(ct,ut)),it.exponentialRampToValueAtTime(ct,ut),dt},linearRampToValueAtTime(ct,ut){return lt===null&&at.flush(tt.context.currentTime),at.add(b(ct,ut)),it.linearRampToValueAtTime(ct,ut),dt},setTargetAtTime(ct,ut,ot){return lt===null&&at.flush(tt.context.currentTime),at.add(k(ct,ut,ot)),it.setTargetAtTime(ct,ut,ot),dt},setValueAtTime(ct,ut){return lt===null&&at.flush(tt.context.currentTime),at.add($(ct,ut)),it.setValueAtTime(ct,ut),dt},setValueCurveAtTime(ct,ut,ot){const ht=ct instanceof Float32Array?ct:new Float32Array(ct);if(_e!==null&&_e.name==="webkitAudioContext"){const pt=ut+ot,Et=tt.context.sampleRate,gt=Math.ceil(ut*Et),ft=Math.floor(pt*Et),mt=ft-gt,yt=new Float32Array(mt);for(let vt=0;vt({replay(e){for(const s of o)if(s.type==="exponentialRampToValue"){const{endTime:a,value:c}=s;e.exponentialRampToValueAtTime(c,a)}else if(s.type==="linearRampToValue"){const{endTime:a,value:c}=s;e.linearRampToValueAtTime(c,a)}else if(s.type==="setTarget"){const{startTime:a,target:c,timeConstant:d}=s;e.setTargetAtTime(c,a,d)}else if(s.type==="setValue"){const{startTime:a,value:c}=s;e.setValueAtTime(c,a)}else if(s.type==="setValueCurve"){const{duration:a,startTime:c,values:d}=s;e.setValueCurveAtTime(d,c,a)}else throw new Error("Can't apply an unknown automation.")}});class ReadOnlyMap{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,s=null){return this._map.forEach((a,c)=>e.call(s,a,c,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}}const DEFAULT_OPTIONS$g={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},createAudioWorkletNodeConstructor=(o,e,s,a,c,d,_,b,k,$,j,_e,et,tt)=>class extends e{constructor(it,rt,st){var at;const lt=b(it),dt=k(lt),ct=j(_t(_t({},DEFAULT_OPTIONS$g),st));et(ct);const ut=NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(lt),ot=ut==null?void 0:ut.get(rt),ht=dt||lt.state!=="closed"?lt:(at=_(lt))!==null&&at!==void 0?at:lt,pt=c(ht,dt?null:it.baseLatency,$,rt,ot,ct),Et=dt?a(rt,ct,ot):null;super(it,!0,pt,Et);const gt=[];pt.parameters.forEach((mt,yt)=>{const At=s(this,dt,mt);gt.push([yt,At])}),this._nativeAudioWorkletNode=pt,this._onprocessorerror=null,this._parameters=new ReadOnlyMap(gt),dt&&o(lt,this);const{activeInputs:ft}=d(this);_e(pt,ft)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(it){const rt=typeof it=="function"?tt(this,it):null;this._nativeAudioWorkletNode.onprocessorerror=rt;const st=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=st!==null&&st===rt?it:st}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function copyFromChannel(o,e,s,a,c){if(typeof o.copyFromChannel=="function")e[s].byteLength===0&&(e[s]=new Float32Array(128)),o.copyFromChannel(e[s],a,c);else{const d=o.getChannelData(a);if(e[s].byteLength===0)e[s]=d.slice(c,c+128);else{const _=new Float32Array(d.buffer,c*Float32Array.BYTES_PER_ELEMENT,128);e[s].set(_)}}}const copyToChannel=(o,e,s,a,c)=>{typeof o.copyToChannel=="function"?e[s].byteLength!==0&&o.copyToChannel(e[s],a,c):e[s].byteLength!==0&&o.getChannelData(a).set(e[s],c)},createNestedArrays=(o,e)=>{const s=[];for(let a=0;a{const s=getValueForKey(NODE_TO_PROCESSOR_MAPS,o),a=getNativeAudioNode(e);return getValueForKey(s,a)},processBuffer=async(o,e,s,a,c,d,_)=>{const b=e===null?Math.ceil(o.context.length/128)*128:e.length,k=a.channelCount*a.numberOfInputs,$=c.reduce((rt,st)=>rt+st,0),j=$===0?null:s.createBuffer($,b,s.sampleRate);if(d===void 0)throw new Error("Missing the processor constructor.");const _e=getAudioNodeConnections(o),et=await getAudioWorkletProcessor(s,o),tt=createNestedArrays(a.numberOfInputs,a.channelCount),nt=createNestedArrays(a.numberOfOutputs,c),it=Array.from(o.parameters.keys()).reduce((rt,st)=>wt(_t({},rt),{[st]:new Float32Array(128)}),{});for(let rt=0;rt0&&e!==null)for(let st=0;st{copyFromChannel(e,it,st,k+at,rt)});for(let st=0;st_e.activeInputs[dt].size===0?[]:lt),at=_(rt/s.sampleRate,s.sampleRate,()=>et.process(st,nt,it));if(j!==null)for(let lt=0,dt=0;lt(rt,st,at)=>{const lt=new WeakMap;let dt=null;const ct=async(ut,ot)=>{let ht=j(ut),pt=null;const Et=isOwnedByContext(ht,ot),gt=Array.isArray(st.outputChannelCount)?st.outputChannelCount:Array.from(st.outputChannelCount);if(_e===null){const ft=gt.reduce((vt,St)=>vt+St,0),mt=c(ot,{channelCount:Math.max(1,ft),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,ft)}),yt=[];for(let vt=0;vt{const Ct=new et(Dt,Math.ceil(ut.context.length/128)*128,ot.sampleRate),bt=[],$t=[];for(let Pt=0;Pt{const Nt=d(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:Pt.value});return await tt(Ct,Pt,Nt.offset),Nt})),Bt=a(Ct,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,St+Tt)});for(let Pt=0;Ptnt(ut,Ct,Pt))),it(Ct)})(),ot,st,gt,at,$)}const ft=await dt,mt=s(ot,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[yt,At,vt]=pt;ft!==null&&(mt.buffer=ft,mt.start(0)),mt.connect(yt);for(let St=0,Tt=0;Stclass extends nt{constructor(ct,ut){super(ct,ut),this._nativeContext=ct,this._audioWorklet=o===void 0?void 0:{addModule:(ot,ht)=>o(this,ot,ht)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new e(this)}createBiquadFilter(){return new c(this)}createBuffer(ct,ut,ot){return new s({length:ut,numberOfChannels:ct,sampleRate:ot})}createBufferSource(){return new a(this)}createChannelMerger(ct=6){return new d(this,{numberOfInputs:ct})}createChannelSplitter(ct=6){return new _(this,{numberOfOutputs:ct})}createConstantSource(){return new b(this)}createConvolver(){return new k(this)}createDelay(ct=1){return new j(this,{maxDelayTime:ct})}createDynamicsCompressor(){return new _e(this)}createGain(){return new et(this)}createIIRFilter(ct,ut){return new tt(this,{feedback:ut,feedforward:ct})}createOscillator(){return new it(this)}createPanner(){return new rt(this)}createPeriodicWave(ct,ut,ot={disableNormalization:!1}){return new st(this,wt(_t({},ot),{imag:ut,real:ct}))}createStereoPanner(){return new at(this)}createWaveShaper(){return new lt(this)}decodeAudioData(ct,ut,ot){return $(this._nativeContext,ct).then(ht=>(typeof ut=="function"&&ut(ht),ht),ht=>{throw typeof ot=="function"&&ot(ht),ht})}},DEFAULT_OPTIONS$f={Q:1,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:350,gain:0,type:"lowpass"},createBiquadFilterNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$f),j),tt=c(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._Q=e(this,nt,tt.Q,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._detune=e(this,nt,tt.detune,1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT),-1200*Math.log2(MOST_POSITIVE_SINGLE_FLOAT)),this._frequency=e(this,nt,tt.frequency,$.sampleRate/2,0),this._gain=e(this,nt,tt.gain,40*Math.log10(MOST_POSITIVE_SINGLE_FLOAT),MOST_NEGATIVE_SINGLE_FLOAT),this._nativeBiquadFilterNode=tt,b(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type($){this._nativeBiquadFilterNode.type=$}getFrequencyResponse($,j,_e){try{this._nativeBiquadFilterNode.getFrequencyResponse($,j,_e)}catch(et){throw et.code===11?a():et}if($.length!==j.length||j.length!==_e.length)throw a()}},createBiquadFilterNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={Q:$.Q.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,detune:$.detune.value,frequency:$.frequency.value,gain:$.gain.value,type:$.type};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.Q,$.Q),await o(k,b.detune,$.detune),await o(k,b.frequency,$.frequency),await o(k,b.gain,$.gain)):(await a(k,b.Q,$.Q),await a(k,b.detune,$.detune),await a(k,b.frequency,$.frequency),await a(k,b.gain,$.gain)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createCacheTestResult=(o,e)=>(s,a)=>{const c=e.get(s);if(c!==void 0)return c;const d=o.get(s);if(d!==void 0)return d;try{const _=a();return _ instanceof Promise?(o.set(s,_),_.catch(()=>!1).then(b=>(o.delete(s),e.set(s,b),b))):(e.set(s,_),_)}catch{return e.set(s,!1),!1}},DEFAULT_OPTIONS$e={channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6},createChannelMergerNodeConstructor=(o,e,s,a,c)=>class extends o{constructor(_,b){const k=a(_),$=_t(_t({},DEFAULT_OPTIONS$e),b),j=s(k,$),_e=c(k)?e():null;super(_,!1,j,_e)}},createChannelMergerNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfInputs:b.numberOfInputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},DEFAULT_OPTIONS$d={channelCount:6,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:6},createChannelSplitterNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=d(_t(_t({},DEFAULT_OPTIONS$d),k)),_e=s($,j),et=c($)?e():null;super(b,!1,_e,et)}},createChannelSplitterNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,numberOfOutputs:b.numberOfOutputs};b=o(_,$)}return a.set(_,b),await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createConnectAudioParam=o=>(e,s,a)=>o(s,e,a),createConnectMultipleOutputs=o=>(e,s,a=0,c=0)=>{const d=e[a];if(d===void 0)throw o();return isNativeAudioNode$1(s)?d.connect(s,0,c):d.connect(s,0)},createConnectedNativeAudioBufferSourceNodeFactory=o=>(e,s)=>{const a=o(e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),c=e.createBuffer(1,2,44100);return a.buffer=c,a.loop=!0,a.connect(s),a.start(),()=>{a.stop(),a.disconnect(s)}},DEFAULT_OPTIONS$c={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",offset:1},createConstantSourceNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$c),$),et=a(j,_e),tt=d(j),nt=tt?s():null;super(k,!1,et,nt),this._constantSourceNodeRenderer=nt,this._nativeConstantSourceNode=et,this._offset=e(this,tt,et.offset,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeConstantSourceNode.onended=$;const j=this._nativeConstantSourceNode.onended;this._onended=j!==null&&j===$?k:j}start(k=0){if(this._nativeConstantSourceNode.start(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeConstantSourceNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeConstantSourceNode.addEventListener("ended",$)}}stop(k=0){this._nativeConstantSourceNode.stop(k),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=k)}},createConstantSourceNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null;const k=async($,j)=>{let _e=s($);const et=isOwnedByContext(_e,j);if(!et){const tt={channelCount:_e.channelCount,channelCountMode:_e.channelCountMode,channelInterpretation:_e.channelInterpretation,offset:_e.offset.value};_e=e(j,tt),_!==null&&_e.start(_),b!==null&&_e.stop(b)}return d.set(j,_e),et?await o(j,$.offset,_e.offset):await a(j,$.offset,_e.offset),await c($,j,_e),_e};return{set start($){_=$},set stop($){b=$},render($,j){const _e=d.get(j);return _e!==void 0?Promise.resolve(_e):k($,j)}}},createConvertNumberToUnsignedLong=o=>e=>(o[0]=e,o[0]),DEFAULT_OPTIONS$b={buffer:null,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",disableNormalization:!1},createConvolverNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=_t(_t({},DEFAULT_OPTIONS$b),k),_e=s($,j),tt=c($)?e():null;super(b,!1,_e,tt),this._isBufferNullified=!1,this._nativeConvolverNode=_e,j.buffer!==null&&d(this,j.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(b){if(this._nativeConvolverNode.buffer=b,b===null&&this._nativeConvolverNode.buffer!==null){const k=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=k.createBuffer(1,1,44100),this._isBufferNullified=!0,d(this,0)}else this._isBufferNullified=!1,d(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(b){this._nativeConvolverNode.normalize=b}},createConvolverNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={buffer:b.buffer,channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,disableNormalization:!b.normalize};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createCreateNativeOfflineAudioContext=(o,e)=>(s,a,c)=>{if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");try{return new e(s,a,c)}catch(d){throw d.name==="SyntaxError"?o():d}},createDataCloneError=()=>new DOMException("","DataCloneError"),detachArrayBuffer=o=>{const{port1:e,port2:s}=new MessageChannel;return new Promise(a=>{const c=()=>{s.onmessage=null,e.close(),s.close(),a()};s.onmessage=()=>c();try{e.postMessage(o,[o])}finally{c()}})},createDecodeAudioData=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_(_e)?_e:d(_e);if(c.has(et)){const nt=s();return Promise.reject(nt)}try{c.add(et)}catch{}return e(k,()=>k(tt))?tt.decodeAudioData(et).then(nt=>(detachArrayBuffer(et).catch(()=>{}),e(b,()=>b(nt))||j(nt),o.add(nt),nt)):new Promise((nt,it)=>{const rt=async()=>{try{await detachArrayBuffer(et)}catch{}},st=at=>{it(at),rt()};try{tt.decodeAudioData(et,at=>{typeof at.copyFromChannel!="function"&&($(at),wrapAudioBufferGetChannelDataMethod(at)),o.add(at),rt().then(()=>nt(at))},at=>{st(at===null?a():at)})}catch(at){st(at)}})},createDecrementCycleCounter=(o,e,s,a,c,d,_,b)=>(k,$)=>{const j=e.get(k);if(j===void 0)throw new Error("Missing the expected cycle count.");const _e=d(k.context),et=b(_e);if(j===$){if(e.delete(k),!et&&_(k)){const tt=a(k),{outputs:nt}=s(k);for(const it of nt)if(isAudioNodeOutputConnection(it)){const rt=a(it[0]);o(tt,rt,it[1],it[2])}else{const rt=c(it[0]);tt.connect(rt,it[1])}}}else e.set(k,j-$)},DEFAULT_OPTIONS$a={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",delayTime:0,maxDelayTime:1},createDelayNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$a),$),et=a(j,_e),tt=d(j),nt=tt?s(_e.maxDelayTime):null;super(k,!1,et,nt),this._delayTime=e(this,tt,et.delayTime),_(this,_e.maxDelayTime)}get delayTime(){return this._delayTime}},createDelayNodeRendererFactory=(o,e,s,a,c)=>d=>{const _=new WeakMap,b=async(k,$)=>{let j=s(k);const _e=isOwnedByContext(j,$);if(!_e){const et={channelCount:j.channelCount,channelCountMode:j.channelCountMode,channelInterpretation:j.channelInterpretation,delayTime:j.delayTime.value,maxDelayTime:d};j=e($,et)}return _.set($,j),_e?await o($,k.delayTime,j.delayTime):await a($,k.delayTime,j.delayTime),await c(k,$,j),j};return{render(k,$){const j=_.get($);return j!==void 0?Promise.resolve(j):b(k,$)}}},createDeleteActiveInputConnectionToAudioNode=o=>(e,s,a,c)=>o(e[c],d=>d[0]===s&&d[1]===a),createDeleteUnrenderedAudioWorkletNode=o=>(e,s)=>{o(e).delete(s)},isDelayNode=o=>"delayTime"in o,createDetectCycles=(o,e,s)=>function a(c,d){const _=isAudioNode$1(d)?d:s(o,d);if(isDelayNode(_))return[];if(c[0]===_)return[c];if(c.includes(_))return[];const{outputs:b}=e(_);return Array.from(b).map(k=>a([...c,_],k[0])).reduce((k,$)=>k.concat($),[])},getOutputAudioNodeAtIndex=(o,e,s)=>{const a=e[s];if(a===void 0)throw o();return a},createDisconnectMultipleOutputs=o=>(e,s=void 0,a=void 0,c=0)=>s===void 0?e.forEach(d=>d.disconnect()):typeof s=="number"?getOutputAudioNodeAtIndex(o,e,s).disconnect():isNativeAudioNode$1(s)?a===void 0?e.forEach(d=>d.disconnect(s)):c===void 0?getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0):getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0,c):a===void 0?e.forEach(d=>d.disconnect(s)):getOutputAudioNodeAtIndex(o,e,a).disconnect(s,0),DEFAULT_OPTIONS$9={attack:.003,channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",knee:30,ratio:12,release:.25,threshold:-24},createDynamicsCompressorNodeConstructor=(o,e,s,a,c,d,_,b)=>class extends o{constructor($,j){const _e=d($),et=_t(_t({},DEFAULT_OPTIONS$9),j),tt=a(_e,et),nt=_(_e),it=nt?s():null;super($,!1,tt,it),this._attack=e(this,nt,tt.attack),this._knee=e(this,nt,tt.knee),this._nativeDynamicsCompressorNode=tt,this._ratio=e(this,nt,tt.ratio),this._release=e(this,nt,tt.release),this._threshold=e(this,nt,tt.threshold),b(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount($){const j=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=$,$>2)throw this._nativeDynamicsCompressorNode.channelCount=j,c()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode($){const j=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=$,$==="max")throw this._nativeDynamicsCompressorNode.channelCountMode=j,c()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value=="number"?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},createDynamicsCompressorNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={attack:$.attack.value,channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,knee:$.knee.value,ratio:$.ratio.value,release:$.release.value,threshold:$.threshold.value};$=e(k,_e)}return d.set(k,$),j?(await o(k,b.attack,$.attack),await o(k,b.knee,$.knee),await o(k,b.ratio,$.ratio),await o(k,b.release,$.release),await o(k,b.threshold,$.threshold)):(await a(k,b.attack,$.attack),await a(k,b.knee,$.knee),await a(k,b.ratio,$.ratio),await a(k,b.release,$.release),await a(k,b.threshold,$.threshold)),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createEncodingError=()=>new DOMException("","EncodingError"),createEvaluateSource=o=>e=>new Promise((s,a)=>{if(o===null){a(new SyntaxError);return}const c=o.document.head;if(c===null)a(new SyntaxError);else{const d=o.document.createElement("script"),_=new Blob([e],{type:"application/javascript"}),b=URL.createObjectURL(_),k=o.onerror,$=()=>{o.onerror=k,URL.revokeObjectURL(b)};o.onerror=(j,_e,et,tt,nt)=>{if(_e===b||_e===o.location.href&&et===1&&tt===1)return $(),a(nt),!1;if(k!==null)return k(j,_e,et,tt,nt)},d.onerror=()=>{$(),a(new SyntaxError)},d.onload=()=>{$(),s()},d.src=b,d.type="module",c.appendChild(d)}}),createEventTargetConstructor=o=>class{constructor(s){this._nativeEventTarget=s,this._listeners=new WeakMap}addEventListener(s,a,c){if(a!==null){let d=this._listeners.get(a);d===void 0&&(d=o(this,a),typeof a=="function"&&this._listeners.set(a,d)),this._nativeEventTarget.addEventListener(s,d,c)}}dispatchEvent(s){return this._nativeEventTarget.dispatchEvent(s)}removeEventListener(s,a,c){const d=a===null?void 0:this._listeners.get(a);this._nativeEventTarget.removeEventListener(s,d===void 0?null:d,c)}},createExposeCurrentFrameAndCurrentTime=o=>(e,s,a)=>{Object.defineProperties(o,{currentFrame:{configurable:!0,get(){return Math.round(e*s)}},currentTime:{configurable:!0,get(){return e}}});try{return a()}finally{o!==null&&(delete o.currentFrame,delete o.currentTime)}},createFetchSource=o=>async e=>{try{const s=await fetch(e);if(s.ok)return[await s.text(),s.url]}catch{}throw o()},DEFAULT_OPTIONS$8={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",gain:1},createGainNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$8),k),_e=a($,j),et=d($),tt=et?s():null;super(b,!1,_e,tt),this._gain=e(this,et,_e.gain,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT)}get gain(){return this._gain}},createGainNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,gain:$.gain.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.gain,$.gain):await a(k,b.gain,$.gain),await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createGetActiveAudioWorkletNodeInputs=(o,e)=>s=>e(o,s),createGetAudioNodeRenderer=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioNode in the audio graph.");return s.renderer},createGetAudioNodeTailTime=o=>e=>{var s;return(s=o.get(e))!==null&&s!==void 0?s:0},createGetAudioParamRenderer=o=>e=>{const s=o(e);if(s.renderer===null)throw new Error("Missing the renderer of the given AudioParam in the audio graph.");return s.renderer},createGetBackupOfflineAudioContext=o=>e=>o.get(e),createInvalidStateError=()=>new DOMException("","InvalidStateError"),createGetNativeContext=o=>e=>{const s=o.get(e);if(s===void 0)throw createInvalidStateError();return s},createGetOrCreateBackupOfflineAudioContext=(o,e)=>s=>{let a=o.get(s);if(a!==void 0)return a;if(e===null)throw new Error("Missing the native OfflineAudioContext constructor.");return a=new e(1,1,44100),o.set(s,a),a},createGetUnrenderedAudioWorkletNodes=o=>e=>{const s=o.get(e);if(s===void 0)throw new Error("The context has no set of AudioWorkletNodes.");return s},createInvalidAccessError=()=>new DOMException("","InvalidAccessError"),wrapIIRFilterNodeGetFrequencyResponseMethod=o=>{o.getFrequencyResponse=(e=>(s,a,c)=>{if(s.length!==a.length||a.length!==c.length)throw createInvalidAccessError();return e.call(o,s,a,c)})(o.getFrequencyResponse)},DEFAULT_OPTIONS$7={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers"},createIIRFilterNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=a(b),j=c($),_e=_t(_t({},DEFAULT_OPTIONS$7),k),et=e($,j?null:b.baseLatency,_e),tt=j?s(_e.feedback,_e.feedforward):null;super(b,!1,et,tt),wrapIIRFilterNodeGetFrequencyResponseMethod(et),this._nativeIIRFilterNode=et,d(this,1)}getFrequencyResponse(b,k,$){return this._nativeIIRFilterNode.getFrequencyResponse(b,k,$)}},filterBuffer=(o,e,s,a,c,d,_,b,k,$,j)=>{const _e=$.length;let et=b;for(let tt=0;tt<_e;tt+=1){let nt=s[0]*$[tt];for(let it=1;it{const c=s instanceof Float64Array?s:new Float64Array(s),d=a instanceof Float64Array?a:new Float64Array(a),_=c.length,b=d.length,k=Math.min(_,b);if(c[0]!==1){for(let nt=0;nt<_;nt+=1)d[nt]/=c[0];for(let nt=1;nt(d,_)=>{const b=new WeakMap;let k=null;const $=async(j,_e)=>{let et=null,tt=e(j);const nt=isOwnedByContext(tt,_e);if(_e.createIIRFilter===void 0?et=o(_e,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):nt||(tt=_e.createIIRFilter(_,d)),b.set(_e,et===null?tt:et),et!==null){if(k===null){if(s===null)throw new Error("Missing the native OfflineAudioContext constructor.");const rt=new s(j.context.destination.channelCount,j.context.length,_e.sampleRate);k=(async()=>{await a(j,rt,rt.destination);const st=await c(rt);return filterFullBuffer(st,_e,d,_)})()}const it=await k;return et.buffer=it,et.start(0),et}return await a(j,_e,tt),tt};return{render(j,_e){const et=b.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},createIncrementCycleCounterFactory=(o,e,s,a,c,d)=>_=>(b,k)=>{const $=o.get(b);if($===void 0){if(!_&&d(b)){const j=a(b),{outputs:_e}=s(b);for(const et of _e)if(isAudioNodeOutputConnection(et)){const tt=a(et[0]);e(j,tt,et[1],et[2])}else{const tt=c(et[0]);j.disconnect(tt,et[1])}}o.set(b,k)}else o.set(b,$+k)},createIsAnyAudioContext=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsAnyAudioNode=(o,e)=>s=>o.has(s)||e(s),createIsAnyAudioParam=(o,e)=>s=>o.has(s)||e(s),createIsAnyOfflineAudioContext=(o,e)=>s=>{const a=o.get(s);return e(a)||e(s)},createIsNativeAudioContext=o=>e=>o!==null&&e instanceof o,createIsNativeAudioNode=o=>e=>o!==null&&typeof o.AudioNode=="function"&&e instanceof o.AudioNode,createIsNativeAudioParam=o=>e=>o!==null&&typeof o.AudioParam=="function"&&e instanceof o.AudioParam,createIsNativeContext=(o,e)=>s=>o(s)||e(s),createIsNativeOfflineAudioContext=o=>e=>o!==null&&e instanceof o,createIsSecureContext=o=>o!==null&&o.isSecureContext,createMediaElementAudioSourceNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw TypeError();super(d,!0,k,null),this._nativeMediaElementAudioSourceNode=k}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},DEFAULT_OPTIONS$6={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers"},createMediaStreamAudioDestinationNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d);if(a(b))throw new TypeError;const k=_t(_t({},DEFAULT_OPTIONS$6),_),$=e(b,k);super(d,!1,$,null),this._nativeMediaStreamAudioDestinationNode=$}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},createMediaStreamAudioSourceNodeConstructor=(o,e,s,a)=>class extends o{constructor(d,_){const b=s(d),k=e(b,_);if(a(b))throw new TypeError;super(d,!0,k,null),this._nativeMediaStreamAudioSourceNode=k}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},createMediaStreamTrackAudioSourceNodeConstructor=(o,e,s)=>class extends o{constructor(c,d){const _=s(c),b=e(_,d);super(c,!0,b,null)}},createMinimalBaseAudioContextConstructor=(o,e,s,a,c,d)=>class extends s{constructor(b,k){super(b),this._nativeContext=b,CONTEXT_STORE.set(this,b),a(b)&&c.set(b,new Set),this._destination=new o(this,k),this._listener=e(this,b),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(b){const k=typeof b=="function"?d(this,b):null;this._nativeContext.onstatechange=k;const $=this._nativeContext.onstatechange;this._onstatechange=$!==null&&$===k?b:$}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},testPromiseSupport=o=>{const e=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{const s=o.decodeAudioData(e.buffer,()=>{});return s===void 0?!1:(s.catch(()=>{}),!0)}catch{}return!1},createMonitorConnections=(o,e)=>(s,a,c)=>{const d=new Set;return s.connect=(_=>(b,k=0,$=0)=>{const j=d.size===0;if(e(b))return _.call(s,b,k,$),o(d,[b,k,$],_e=>_e[0]===b&&_e[1]===k&&_e[2]===$,!0),j&&a(),b;_.call(s,b,k),o(d,[b,k],_e=>_e[0]===b&&_e[1]===k,!0),j&&a()})(s.connect),s.disconnect=(_=>(b,k,$)=>{const j=d.size>0;if(b===void 0)_.apply(s),d.clear();else if(typeof b=="number"){_.call(s,b);for(const et of d)et[1]===b&&d.delete(et)}else{e(b)?_.call(s,b,k,$):_.call(s,b,k);for(const et of d)et[0]===b&&(k===void 0||et[1]===k)&&($===void 0||et[2]===$)&&d.delete(et)}const _e=d.size===0;j&&_e&&c()})(s.disconnect),s},assignNativeAudioNodeOption=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s]&&(o[s]=a)},assignNativeAudioNodeOptions=(o,e)=>{assignNativeAudioNodeOption(o,e,"channelCount"),assignNativeAudioNodeOption(o,e,"channelCountMode"),assignNativeAudioNodeOption(o,e,"channelInterpretation")},testAnalyserNodeGetFloatTimeDomainDataMethodSupport=o=>typeof o.getFloatTimeDomainData=="function",wrapAnalyserNodeGetFloatTimeDomainDataMethod=o=>{o.getFloatTimeDomainData=e=>{const s=new Uint8Array(e.length);o.getByteTimeDomainData(s);const a=Math.max(s.length,o.fftSize);for(let c=0;c(s,a)=>{const c=s.createAnalyser();if(assignNativeAudioNodeOptions(c,a),!(a.maxDecibels>a.minDecibels))throw e();return assignNativeAudioNodeOption(c,a,"fftSize"),assignNativeAudioNodeOption(c,a,"maxDecibels"),assignNativeAudioNodeOption(c,a,"minDecibels"),assignNativeAudioNodeOption(c,a,"smoothingTimeConstant"),o(testAnalyserNodeGetFloatTimeDomainDataMethodSupport,()=>testAnalyserNodeGetFloatTimeDomainDataMethodSupport(c))||wrapAnalyserNodeGetFloatTimeDomainDataMethod(c),c},createNativeAudioBufferConstructor=o=>o===null?null:o.hasOwnProperty("AudioBuffer")?o.AudioBuffer:null,assignNativeAudioNodeAudioParamValue=(o,e,s)=>{const a=e[s];a!==void 0&&a!==o[s].value&&(o[s].value=a)},wrapAudioBufferSourceNodeStartMethodConsecutiveCalls=o=>{o.start=(e=>{let s=!1;return(a=0,c=0,d)=>{if(s)throw createInvalidStateError();e.call(o,a,c,d),s=!0}})(o.start)},wrapAudioScheduledSourceNodeStartMethodNegativeParameters=o=>{o.start=(e=>(s=0,a=0,c)=>{if(typeof c=="number"&&c<0||a<0||s<0)throw new RangeError("The parameters can't be negative.");e.call(o,s,a,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodNegativeParameters=o=>{o.stop=(e=>(s=0)=>{if(s<0)throw new RangeError("The parameter can't be negative.");e.call(o,s)})(o.stop)},createNativeAudioBufferSourceNodeFactory=(o,e,s,a,c,d,_,b,k,$,j)=>(_e,et)=>{const tt=_e.createBufferSource();return assignNativeAudioNodeOptions(tt,et),assignNativeAudioNodeAudioParamValue(tt,et,"playbackRate"),assignNativeAudioNodeOption(tt,et,"buffer"),assignNativeAudioNodeOption(tt,et,"loop"),assignNativeAudioNodeOption(tt,et,"loopEnd"),assignNativeAudioNodeOption(tt,et,"loopStart"),e(s,()=>s(_e))||wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(tt),e(a,()=>a(_e))||k(tt),e(c,()=>c(_e))||$(tt,_e),e(d,()=>d(_e))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(tt),e(_,()=>_(_e))||j(tt,_e),e(b,()=>b(_e))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(tt),o(_e,tt),tt},createNativeAudioContextConstructor=o=>o===null?null:o.hasOwnProperty("AudioContext")?o.AudioContext:o.hasOwnProperty("webkitAudioContext")?o.webkitAudioContext:null,createNativeAudioDestinationNodeFactory=(o,e)=>(s,a,c)=>{const d=s.destination;if(d.channelCount!==a)try{d.channelCount=a}catch{}c&&d.channelCountMode!=="explicit"&&(d.channelCountMode="explicit"),d.maxChannelCount===0&&Object.defineProperty(d,"maxChannelCount",{value:a});const _=o(s,{channelCount:a,channelCountMode:d.channelCountMode,channelInterpretation:d.channelInterpretation,gain:1});return e(_,"channelCount",b=>()=>b.call(_),b=>k=>{b.call(_,k);try{d.channelCount=k}catch($){if(k>d.maxChannelCount)throw $}}),e(_,"channelCountMode",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelCountMode=k}),e(_,"channelInterpretation",b=>()=>b.call(_),b=>k=>{b.call(_,k),d.channelInterpretation=k}),Object.defineProperty(_,"maxChannelCount",{get:()=>d.maxChannelCount}),_.connect(d),_},createNativeAudioWorkletNodeConstructor=o=>o===null?null:o.hasOwnProperty("AudioWorkletNode")?o.AudioWorkletNode:null,testClonabilityOfAudioWorkletNodeOptions=o=>{const{port1:e}=new MessageChannel;try{e.postMessage(o)}finally{e.close()}},createNativeAudioWorkletNodeFactory=(o,e,s,a,c)=>(d,_,b,k,$,j)=>{if(b!==null)try{const _e=new b(d,k,j),et=new Map;let tt=null;if(Object.defineProperties(_e,{channelCount:{get:()=>j.channelCount,set:()=>{throw o()}},channelCountMode:{get:()=>"explicit",set:()=>{throw o()}},onprocessorerror:{get:()=>tt,set:nt=>{typeof tt=="function"&&_e.removeEventListener("processorerror",tt),tt=typeof nt=="function"?nt:null,typeof tt=="function"&&_e.addEventListener("processorerror",tt)}}}),_e.addEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=typeof it[1]=="function"?it[1]:typeof it[1]=="object"&&it[1]!==null&&typeof it[1].handleEvent=="function"?it[1].handleEvent:null;if(rt!==null){const st=et.get(it[1]);st!==void 0?it[1]=st:(it[1]=at=>{at.type==="error"?(Object.defineProperties(at,{type:{value:"processorerror"}}),rt(at)):rt(new ErrorEvent(it[0],_t({},at)))},et.set(rt,it[1]))}}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,...it)})(_e.addEventListener),_e.removeEventListener=(nt=>(...it)=>{if(it[0]==="processorerror"){const rt=et.get(it[1]);rt!==void 0&&(et.delete(it[1]),it[1]=rt)}return nt.call(_e,"error",it[1],it[2]),nt.call(_e,it[0],it[1],it[2])})(_e.removeEventListener),j.numberOfOutputs!==0){const nt=s(d,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return _e.connect(nt).connect(d.destination),c(_e,()=>nt.disconnect(),()=>nt.connect(d.destination))}return _e}catch(_e){throw _e.code===11?a():_e}if($===void 0)throw a();return testClonabilityOfAudioWorkletNodeOptions(j),e(d,_,$,j)},computeBufferSize=(o,e)=>o===null?512:Math.max(512,Math.min(16384,Math.pow(2,Math.round(Math.log2(o*e))))),cloneAudioWorkletNodeOptions=o=>new Promise((e,s)=>{const{port1:a,port2:c}=new MessageChannel;a.onmessage=({data:d})=>{a.close(),c.close(),e(d)},a.onmessageerror=({data:d})=>{a.close(),c.close(),s(d)},c.postMessage(o)}),createAudioWorkletProcessorPromise=async(o,e)=>{const s=await cloneAudioWorkletNodeOptions(e);return new o(s)},createAudioWorkletProcessor=(o,e,s,a)=>{let c=NODE_TO_PROCESSOR_MAPS.get(o);c===void 0&&(c=new WeakMap,NODE_TO_PROCESSOR_MAPS.set(o,c));const d=createAudioWorkletProcessorPromise(s,a);return c.set(e,d),d},createNativeAudioWorkletNodeFakerFactory=(o,e,s,a,c,d,_,b,k,$,j,_e,et)=>(tt,nt,it,rt)=>{if(rt.numberOfInputs===0&&rt.numberOfOutputs===0)throw k();const st=Array.isArray(rt.outputChannelCount)?rt.outputChannelCount:Array.from(rt.outputChannelCount);if(st.some(Ot=>Ot<1))throw k();if(st.length!==rt.numberOfOutputs)throw e();if(rt.channelCountMode!=="explicit")throw k();const at=rt.channelCount*rt.numberOfInputs,lt=st.reduce((Ot,Ft)=>Ot+Ft,0),dt=it.parameterDescriptors===void 0?0:it.parameterDescriptors.length;if(at+dt>6||lt>6)throw k();const ct=new MessageChannel,ut=[],ot=[];for(let Ot=0;OtOt===void 0?0:Ot},maxValue:{get:()=>Ft===void 0?MOST_POSITIVE_SINGLE_FLOAT:Ft},minValue:{get:()=>Vt===void 0?MOST_NEGATIVE_SINGLE_FLOAT:Vt}}),ht.push(Rt)}const pt=a(tt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:Math.max(1,at+dt)}),Et=computeBufferSize(nt,tt.sampleRate),gt=b(tt,Et,at+dt,Math.max(1,lt)),ft=c(tt,{channelCount:Math.max(1,lt),channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:Math.max(1,lt)}),mt=[];for(let Ot=0;Ot{const Vt=ht[Ft];return Vt.connect(pt,0,at+Ft),Vt.start(0),[Ot,Vt.offset]}));pt.connect(gt);let At=rt.channelInterpretation,vt=null;const St=rt.numberOfOutputs===0?[gt]:mt,Tt={get bufferSize(){return Et},get channelCount(){return rt.channelCount},set channelCount(Ot){throw s()},get channelCountMode(){return rt.channelCountMode},set channelCountMode(Ot){throw s()},get channelInterpretation(){return At},set channelInterpretation(Ot){for(const Ft of ut)Ft.channelInterpretation=Ot;At=Ot},get context(){return gt.context},get inputs(){return ut},get numberOfInputs(){return rt.numberOfInputs},get numberOfOutputs(){return rt.numberOfOutputs},get onprocessorerror(){return vt},set onprocessorerror(Ot){typeof vt=="function"&&Tt.removeEventListener("processorerror",vt),vt=typeof Ot=="function"?Ot:null,typeof vt=="function"&&Tt.addEventListener("processorerror",vt)},get parameters(){return yt},get port(){return ct.port2},addEventListener(...Ot){return gt.addEventListener(Ot[0],Ot[1],Ot[2])},connect:o.bind(null,St),disconnect:$.bind(null,St),dispatchEvent(...Ot){return gt.dispatchEvent(Ot[0])},removeEventListener(...Ot){return gt.removeEventListener(Ot[0],Ot[1],Ot[2])}},Dt=new Map;ct.port1.addEventListener=(Ot=>(...Ft)=>{if(Ft[0]==="message"){const Vt=typeof Ft[1]=="function"?Ft[1]:typeof Ft[1]=="object"&&Ft[1]!==null&&typeof Ft[1].handleEvent=="function"?Ft[1].handleEvent:null;if(Vt!==null){const Lt=Dt.get(Ft[1]);Lt!==void 0?Ft[1]=Lt:(Ft[1]=Rt=>{j(tt.currentTime,tt.sampleRate,()=>Vt(Rt))},Dt.set(Vt,Ft[1]))}}return Ot.call(ct.port1,Ft[0],Ft[1],Ft[2])})(ct.port1.addEventListener),ct.port1.removeEventListener=(Ot=>(...Ft)=>{if(Ft[0]==="message"){const Vt=Dt.get(Ft[1]);Vt!==void 0&&(Dt.delete(Ft[1]),Ft[1]=Vt)}return Ot.call(ct.port1,Ft[0],Ft[1],Ft[2])})(ct.port1.removeEventListener);let xt=null;Object.defineProperty(ct.port1,"onmessage",{get:()=>xt,set:Ot=>{typeof xt=="function"&&ct.port1.removeEventListener("message",xt),xt=typeof Ot=="function"?Ot:null,typeof xt=="function"&&(ct.port1.addEventListener("message",xt),ct.port1.start())}}),it.prototype.port=ct.port1;let Ct=null;createAudioWorkletProcessor(tt,Tt,it,rt).then(Ot=>Ct=Ot);const $t=createNestedArrays(rt.numberOfInputs,rt.channelCount),It=createNestedArrays(rt.numberOfOutputs,st),Bt=it.parameterDescriptors===void 0?[]:it.parameterDescriptors.reduce((Ot,{name:Ft})=>wt(_t({},Ot),{[Ft]:new Float32Array(128)}),{});let Pt=!0;const Nt=()=>{rt.numberOfOutputs>0&>.disconnect(ft);for(let Ot=0,Ft=0;Ot{if(Ct!==null){const Vt=_e(Tt);for(let Lt=0;Lt{copyFromChannel(Ot,Bt,Rt,at+Wt,Lt)});for(let Rt=0;Rt{if(Vt[Gt].size>0)return qt.set(Gt,Et/128),jt;const Kt=qt.get(Gt);return Kt===void 0?[]:(jt.every(Jt=>Jt.every(sn=>sn===0))&&(Kt===1?qt.delete(Gt):qt.set(Gt,Kt-1)),jt)});Pt=j(tt.currentTime+Lt/tt.sampleRate,tt.sampleRate,()=>Ct.process(Rt,It,Bt));for(let jt=0,Gt=0;jtgt.connect(kt).connect(tt.destination),zt=()=>{gt.disconnect(kt),kt.disconnect()},Yt=()=>{if(Pt){zt(),rt.numberOfOutputs>0&>.connect(ft);for(let Ot=0,Ft=0;Ot{Pt&&(Ut(),Nt()),Qt=!1};return Ut(),et(Tt,Yt,Xt)},createNativeBiquadFilterNode=(o,e)=>{const s=o.createBiquadFilter();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"Q"),assignNativeAudioNodeAudioParamValue(s,e,"detune"),assignNativeAudioNodeAudioParamValue(s,e,"frequency"),assignNativeAudioNodeAudioParamValue(s,e,"gain"),assignNativeAudioNodeOption(s,e,"type"),s},createNativeChannelMergerNodeFactory=(o,e)=>(s,a)=>{const c=s.createChannelMerger(a.numberOfInputs);return o!==null&&o.name==="webkitAudioContext"&&e(s,c),assignNativeAudioNodeOptions(c,a),c},wrapChannelSplitterNode=o=>{const e=o.numberOfOutputs;Object.defineProperty(o,"channelCount",{get:()=>e,set:s=>{if(s!==e)throw createInvalidStateError()}}),Object.defineProperty(o,"channelCountMode",{get:()=>"explicit",set:s=>{if(s!=="explicit")throw createInvalidStateError()}}),Object.defineProperty(o,"channelInterpretation",{get:()=>"discrete",set:s=>{if(s!=="discrete")throw createInvalidStateError()}})},createNativeChannelSplitterNode=(o,e)=>{const s=o.createChannelSplitter(e.numberOfOutputs);return assignNativeAudioNodeOptions(s,e),wrapChannelSplitterNode(s),s},createNativeConstantSourceNodeFactory=(o,e,s,a,c)=>(d,_)=>{if(d.createConstantSource===void 0)return s(d,_);const b=d.createConstantSource();return assignNativeAudioNodeOptions(b,_),assignNativeAudioNodeAudioParamValue(b,_,"offset"),e(a,()=>a(d))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(b),e(c,()=>c(d))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(b),o(d,b),b},interceptConnections=(o,e)=>(o.connect=e.connect.bind(e),o.disconnect=e.disconnect.bind(e),o),createNativeConstantSourceNodeFakerFactory=(o,e,s,a)=>(c,b)=>{var k=b,{offset:d}=k,_=rn(k,["offset"]);const $=c.createBuffer(1,2,44100),j=e(c,{buffer:null,channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),_e=s(c,wt(_t({},_),{gain:d})),et=$.getChannelData(0);et[0]=1,et[1]=1,j.buffer=$,j.loop=!0;const tt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(rt){_e.channelCount=rt},get channelCountMode(){return _e.channelCountMode},set channelCountMode(rt){_e.channelCountMode=rt},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(rt){_e.channelInterpretation=rt},get context(){return _e.context},get inputs(){return[]},get numberOfInputs(){return j.numberOfInputs},get numberOfOutputs(){return _e.numberOfOutputs},get offset(){return _e.gain},get onended(){return j.onended},set onended(rt){j.onended=rt},addEventListener(...rt){return j.addEventListener(rt[0],rt[1],rt[2])},dispatchEvent(...rt){return j.dispatchEvent(rt[0])},removeEventListener(...rt){return j.removeEventListener(rt[0],rt[1],rt[2])},start(rt=0){j.start.call(j,rt)},stop(rt=0){j.stop.call(j,rt)}},nt=()=>j.connect(_e),it=()=>j.disconnect(_e);return o(c,j),a(interceptConnections(tt,_e),nt,it)},createNativeConvolverNodeFactory=(o,e)=>(s,a)=>{const c=s.createConvolver();if(assignNativeAudioNodeOptions(c,a),a.disableNormalization===c.normalize&&(c.normalize=!a.disableNormalization),assignNativeAudioNodeOption(c,a,"buffer"),a.channelCount>2||(e(c,"channelCount",d=>()=>d.call(c),d=>_=>{if(_>2)throw o();return d.call(c,_)}),a.channelCountMode==="max"))throw o();return e(c,"channelCountMode",d=>()=>d.call(c),d=>_=>{if(_==="max")throw o();return d.call(c,_)}),c},createNativeDelayNode=(o,e)=>{const s=o.createDelay(e.maxDelayTime);return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"delayTime"),s},createNativeDynamicsCompressorNodeFactory=o=>(e,s)=>{const a=e.createDynamicsCompressor();if(assignNativeAudioNodeOptions(a,s),s.channelCount>2||s.channelCountMode==="max")throw o();return assignNativeAudioNodeAudioParamValue(a,s,"attack"),assignNativeAudioNodeAudioParamValue(a,s,"knee"),assignNativeAudioNodeAudioParamValue(a,s,"ratio"),assignNativeAudioNodeAudioParamValue(a,s,"release"),assignNativeAudioNodeAudioParamValue(a,s,"threshold"),a},createNativeGainNode=(o,e)=>{const s=o.createGain();return assignNativeAudioNodeOptions(s,e),assignNativeAudioNodeAudioParamValue(s,e,"gain"),s},createNativeIIRFilterNodeFactory=o=>(e,s,a)=>{if(e.createIIRFilter===void 0)return o(e,s,a);const c=e.createIIRFilter(a.feedforward,a.feedback);return assignNativeAudioNodeOptions(c,a),c};function divide(o,e){const s=e[0]*e[0]+e[1]*e[1];return[(o[0]*e[0]+o[1]*e[1])/s,(o[1]*e[0]-o[0]*e[1])/s]}function multiply(o,e){return[o[0]*e[0]-o[1]*e[1],o[0]*e[1]+o[1]*e[0]]}function evaluatePolynomial(o,e){let s=[0,0];for(let a=o.length-1;a>=0;a-=1)s=multiply(s,e),s[0]+=o[a];return s}const createNativeIIRFilterNodeFakerFactory=(o,e,s,a)=>(c,d,{channelCount:_,channelCountMode:b,channelInterpretation:k,feedback:$,feedforward:j})=>{const _e=computeBufferSize(d,c.sampleRate),et=$ instanceof Float64Array?$:new Float64Array($),tt=j instanceof Float64Array?j:new Float64Array(j),nt=et.length,it=tt.length,rt=Math.min(nt,it);if(nt===0||nt>20)throw a();if(et[0]===0)throw e();if(it===0||it>20)throw a();if(tt[0]===0)throw e();if(et[0]!==1){for(let ht=0;ht{const pt=ht.inputBuffer,Et=ht.outputBuffer,gt=pt.numberOfChannels;for(let ft=0;fto.createMediaElementSource(e.mediaElement),createNativeMediaStreamAudioDestinationNode=(o,e)=>{const s=o.createMediaStreamDestination();return assignNativeAudioNodeOptions(s,e),s.numberOfOutputs===1&&Object.defineProperty(s,"numberOfOutputs",{get:()=>0}),s},createNativeMediaStreamAudioSourceNode=(o,{mediaStream:e})=>{const s=e.getAudioTracks();s.sort((d,_)=>d.id<_.id?-1:d.id>_.id?1:0);const a=s.slice(0,1),c=o.createMediaStreamSource(new MediaStream(a));return Object.defineProperty(c,"mediaStream",{value:e}),c},createNativeMediaStreamTrackAudioSourceNodeFactory=(o,e)=>(s,{mediaStreamTrack:a})=>{if(typeof s.createMediaStreamTrackSource=="function")return s.createMediaStreamTrackSource(a);const c=new MediaStream([a]),d=s.createMediaStreamSource(c);if(a.kind!=="audio")throw o();if(e(s))throw new TypeError;return d},createNativeOfflineAudioContextConstructor=o=>o===null?null:o.hasOwnProperty("OfflineAudioContext")?o.OfflineAudioContext:o.hasOwnProperty("webkitOfflineAudioContext")?o.webkitOfflineAudioContext:null,createNativeOscillatorNodeFactory=(o,e,s,a,c,d)=>(_,b)=>{const k=_.createOscillator();return assignNativeAudioNodeOptions(k,b),assignNativeAudioNodeAudioParamValue(k,b,"detune"),assignNativeAudioNodeAudioParamValue(k,b,"frequency"),b.periodicWave!==void 0?k.setPeriodicWave(b.periodicWave):assignNativeAudioNodeOption(k,b,"type"),e(s,()=>s(_))||wrapAudioScheduledSourceNodeStartMethodNegativeParameters(k),e(a,()=>a(_))||d(k,_),e(c,()=>c(_))||wrapAudioScheduledSourceNodeStopMethodNegativeParameters(k),o(_,k),k},createNativePannerNodeFactory=o=>(e,s)=>{const a=e.createPanner();return a.orientationX===void 0?o(e,s):(assignNativeAudioNodeOptions(a,s),assignNativeAudioNodeAudioParamValue(a,s,"orientationX"),assignNativeAudioNodeAudioParamValue(a,s,"orientationY"),assignNativeAudioNodeAudioParamValue(a,s,"orientationZ"),assignNativeAudioNodeAudioParamValue(a,s,"positionX"),assignNativeAudioNodeAudioParamValue(a,s,"positionY"),assignNativeAudioNodeAudioParamValue(a,s,"positionZ"),assignNativeAudioNodeOption(a,s,"coneInnerAngle"),assignNativeAudioNodeOption(a,s,"coneOuterAngle"),assignNativeAudioNodeOption(a,s,"coneOuterGain"),assignNativeAudioNodeOption(a,s,"distanceModel"),assignNativeAudioNodeOption(a,s,"maxDistance"),assignNativeAudioNodeOption(a,s,"panningModel"),assignNativeAudioNodeOption(a,s,"refDistance"),assignNativeAudioNodeOption(a,s,"rolloffFactor"),a)},createNativePannerNodeFakerFactory=(o,e,s,a,c,d,_,b,k,$)=>(j,Et)=>{var gt=Et,{coneInnerAngle:_e,coneOuterAngle:et,coneOuterGain:tt,distanceModel:nt,maxDistance:it,orientationX:rt,orientationY:st,orientationZ:at,panningModel:lt,positionX:dt,positionY:ct,positionZ:ut,refDistance:ot,rolloffFactor:ht}=gt,pt=rn(gt,["coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","orientationX","orientationY","orientationZ","panningModel","positionX","positionY","positionZ","refDistance","rolloffFactor"]);const ft=j.createPanner();if(pt.channelCount>2||pt.channelCountMode==="max")throw _();assignNativeAudioNodeOptions(ft,pt);const mt={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},yt=s(j,wt(_t({},mt),{channelInterpretation:"speakers",numberOfInputs:6})),At=a(j,wt(_t({},pt),{gain:1})),vt=a(j,wt(_t({},mt),{gain:1})),St=a(j,wt(_t({},mt),{gain:0})),Tt=a(j,wt(_t({},mt),{gain:0})),Dt=a(j,wt(_t({},mt),{gain:0})),xt=a(j,wt(_t({},mt),{gain:0})),Ct=a(j,wt(_t({},mt),{gain:0})),bt=c(j,256,6,1),$t=d(j,wt(_t({},mt),{curve:new Float32Array([1,1]),oversample:"none"}));let It=[rt,st,at],Bt=[dt,ct,ut];const Pt=new Float32Array(1);bt.onaudioprocess=({inputBuffer:kt})=>{const Ut=[k(kt,Pt,0),k(kt,Pt,1),k(kt,Pt,2)];Ut.some((Yt,Xt)=>Yt!==It[Xt])&&(ft.setOrientation(...Ut),It=Ut);const zt=[k(kt,Pt,3),k(kt,Pt,4),k(kt,Pt,5)];zt.some((Yt,Xt)=>Yt!==Bt[Xt])&&(ft.setPosition(...zt),Bt=zt)},Object.defineProperty(St.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Tt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Dt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(xt.gain,"defaultValue",{get:()=>0}),Object.defineProperty(Ct.gain,"defaultValue",{get:()=>0});const Nt={get bufferSize(){},get channelCount(){return ft.channelCount},set channelCount(kt){if(kt>2)throw _();At.channelCount=kt,ft.channelCount=kt},get channelCountMode(){return ft.channelCountMode},set channelCountMode(kt){if(kt==="max")throw _();At.channelCountMode=kt,ft.channelCountMode=kt},get channelInterpretation(){return ft.channelInterpretation},set channelInterpretation(kt){At.channelInterpretation=kt,ft.channelInterpretation=kt},get coneInnerAngle(){return ft.coneInnerAngle},set coneInnerAngle(kt){ft.coneInnerAngle=kt},get coneOuterAngle(){return ft.coneOuterAngle},set coneOuterAngle(kt){ft.coneOuterAngle=kt},get coneOuterGain(){return ft.coneOuterGain},set coneOuterGain(kt){if(kt<0||kt>1)throw e();ft.coneOuterGain=kt},get context(){return ft.context},get distanceModel(){return ft.distanceModel},set distanceModel(kt){ft.distanceModel=kt},get inputs(){return[At]},get maxDistance(){return ft.maxDistance},set maxDistance(kt){if(kt<0)throw new RangeError;ft.maxDistance=kt},get numberOfInputs(){return ft.numberOfInputs},get numberOfOutputs(){return ft.numberOfOutputs},get orientationX(){return vt.gain},get orientationY(){return St.gain},get orientationZ(){return Tt.gain},get panningModel(){return ft.panningModel},set panningModel(kt){ft.panningModel=kt},get positionX(){return Dt.gain},get positionY(){return xt.gain},get positionZ(){return Ct.gain},get refDistance(){return ft.refDistance},set refDistance(kt){if(kt<0)throw new RangeError;ft.refDistance=kt},get rolloffFactor(){return ft.rolloffFactor},set rolloffFactor(kt){if(kt<0)throw new RangeError;ft.rolloffFactor=kt},addEventListener(...kt){return At.addEventListener(kt[0],kt[1],kt[2])},dispatchEvent(...kt){return At.dispatchEvent(kt[0])},removeEventListener(...kt){return At.removeEventListener(kt[0],kt[1],kt[2])}};_e!==Nt.coneInnerAngle&&(Nt.coneInnerAngle=_e),et!==Nt.coneOuterAngle&&(Nt.coneOuterAngle=et),tt!==Nt.coneOuterGain&&(Nt.coneOuterGain=tt),nt!==Nt.distanceModel&&(Nt.distanceModel=nt),it!==Nt.maxDistance&&(Nt.maxDistance=it),rt!==Nt.orientationX.value&&(Nt.orientationX.value=rt),st!==Nt.orientationY.value&&(Nt.orientationY.value=st),at!==Nt.orientationZ.value&&(Nt.orientationZ.value=at),lt!==Nt.panningModel&&(Nt.panningModel=lt),dt!==Nt.positionX.value&&(Nt.positionX.value=dt),ct!==Nt.positionY.value&&(Nt.positionY.value=ct),ut!==Nt.positionZ.value&&(Nt.positionZ.value=ut),ot!==Nt.refDistance&&(Nt.refDistance=ot),ht!==Nt.rolloffFactor&&(Nt.rolloffFactor=ht),(It[0]!==1||It[1]!==0||It[2]!==0)&&ft.setOrientation(...It),(Bt[0]!==0||Bt[1]!==0||Bt[2]!==0)&&ft.setPosition(...Bt);const qt=()=>{At.connect(ft),o(At,$t,0,0),$t.connect(vt).connect(yt,0,0),$t.connect(St).connect(yt,0,1),$t.connect(Tt).connect(yt,0,2),$t.connect(Dt).connect(yt,0,3),$t.connect(xt).connect(yt,0,4),$t.connect(Ct).connect(yt,0,5),yt.connect(bt).connect(j.destination)},Qt=()=>{At.disconnect(ft),b(At,$t,0,0),$t.disconnect(vt),vt.disconnect(yt),$t.disconnect(St),St.disconnect(yt),$t.disconnect(Tt),Tt.disconnect(yt),$t.disconnect(Dt),Dt.disconnect(yt),$t.disconnect(xt),xt.disconnect(yt),$t.disconnect(Ct),Ct.disconnect(yt),yt.disconnect(bt),bt.disconnect(j.destination)};return $(interceptConnections(Nt,ft),qt,Qt)},createNativePeriodicWaveFactory=o=>(e,{disableNormalization:s,imag:a,real:c})=>{const d=a instanceof Float32Array?a:new Float32Array(a),_=c instanceof Float32Array?c:new Float32Array(c),b=e.createPeriodicWave(_,d,{disableNormalization:s});if(Array.from(a).length<2)throw o();return b},createNativeScriptProcessorNode=(o,e,s,a)=>o.createScriptProcessor(e,s,a),createNativeStereoPannerNodeFactory=(o,e)=>(s,a)=>{const c=a.channelCountMode;if(c==="clamped-max")throw e();if(s.createStereoPanner===void 0)return o(s,a);const d=s.createStereoPanner();return assignNativeAudioNodeOptions(d,a),assignNativeAudioNodeAudioParamValue(d,a,"pan"),Object.defineProperty(d,"channelCountMode",{get:()=>c,set:_=>{if(_!==c)throw e()}}),d},createNativeStereoPannerNodeFakerFactory=(o,e,s,a,c,d)=>{const b=new Float32Array([1,1]),k=Math.PI/2,$={channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete"},j=wt(_t({},$),{oversample:"none"}),_e=(nt,it,rt,st)=>{const at=new Float32Array(16385),lt=new Float32Array(16385);for(let pt=0;pt<16385;pt+=1){const Et=pt/16384*k;at[pt]=Math.cos(Et),lt[pt]=Math.sin(Et)}const dt=s(nt,wt(_t({},$),{gain:0})),ct=a(nt,wt(_t({},j),{curve:at})),ut=a(nt,wt(_t({},j),{curve:b})),ot=s(nt,wt(_t({},$),{gain:0})),ht=a(nt,wt(_t({},j),{curve:lt}));return{connectGraph(){it.connect(dt),it.connect(ut.inputs===void 0?ut:ut.inputs[0]),it.connect(ot),ut.connect(rt),rt.connect(ct.inputs===void 0?ct:ct.inputs[0]),rt.connect(ht.inputs===void 0?ht:ht.inputs[0]),ct.connect(dt.gain),ht.connect(ot.gain),dt.connect(st,0,0),ot.connect(st,0,1)},disconnectGraph(){it.disconnect(dt),it.disconnect(ut.inputs===void 0?ut:ut.inputs[0]),it.disconnect(ot),ut.disconnect(rt),rt.disconnect(ct.inputs===void 0?ct:ct.inputs[0]),rt.disconnect(ht.inputs===void 0?ht:ht.inputs[0]),ct.disconnect(dt.gain),ht.disconnect(ot.gain),dt.disconnect(st,0,0),ot.disconnect(st,0,1)}}},et=(nt,it,rt,st)=>{const at=new Float32Array(16385),lt=new Float32Array(16385),dt=new Float32Array(16385),ct=new Float32Array(16385),ut=Math.floor(16385/2);for(let St=0;St<16385;St+=1)if(St>ut){const Tt=(St-ut)/(16384-ut)*k;at[St]=Math.cos(Tt),lt[St]=Math.sin(Tt),dt[St]=0,ct[St]=1}else{const Tt=St/(16384-ut)*k;at[St]=1,lt[St]=0,dt[St]=Math.cos(Tt),ct[St]=Math.sin(Tt)}const ot=e(nt,{channelCount:2,channelCountMode:"explicit",channelInterpretation:"discrete",numberOfOutputs:2}),ht=s(nt,wt(_t({},$),{gain:0})),pt=a(nt,wt(_t({},j),{curve:at})),Et=s(nt,wt(_t({},$),{gain:0})),gt=a(nt,wt(_t({},j),{curve:lt})),ft=a(nt,wt(_t({},j),{curve:b})),mt=s(nt,wt(_t({},$),{gain:0})),yt=a(nt,wt(_t({},j),{curve:dt})),At=s(nt,wt(_t({},$),{gain:0})),vt=a(nt,wt(_t({},j),{curve:ct}));return{connectGraph(){it.connect(ot),it.connect(ft.inputs===void 0?ft:ft.inputs[0]),ot.connect(ht,0),ot.connect(Et,0),ot.connect(mt,1),ot.connect(At,1),ft.connect(rt),rt.connect(pt.inputs===void 0?pt:pt.inputs[0]),rt.connect(gt.inputs===void 0?gt:gt.inputs[0]),rt.connect(yt.inputs===void 0?yt:yt.inputs[0]),rt.connect(vt.inputs===void 0?vt:vt.inputs[0]),pt.connect(ht.gain),gt.connect(Et.gain),yt.connect(mt.gain),vt.connect(At.gain),ht.connect(st,0,0),mt.connect(st,0,0),Et.connect(st,0,1),At.connect(st,0,1)},disconnectGraph(){it.disconnect(ot),it.disconnect(ft.inputs===void 0?ft:ft.inputs[0]),ot.disconnect(ht,0),ot.disconnect(Et,0),ot.disconnect(mt,1),ot.disconnect(At,1),ft.disconnect(rt),rt.disconnect(pt.inputs===void 0?pt:pt.inputs[0]),rt.disconnect(gt.inputs===void 0?gt:gt.inputs[0]),rt.disconnect(yt.inputs===void 0?yt:yt.inputs[0]),rt.disconnect(vt.inputs===void 0?vt:vt.inputs[0]),pt.disconnect(ht.gain),gt.disconnect(Et.gain),yt.disconnect(mt.gain),vt.disconnect(At.gain),ht.disconnect(st,0,0),mt.disconnect(st,0,0),Et.disconnect(st,0,1),At.disconnect(st,0,1)}}},tt=(nt,it,rt,st,at)=>{if(it===1)return _e(nt,rt,st,at);if(it===2)return et(nt,rt,st,at);throw c()};return(nt,lt)=>{var dt=lt,{channelCount:it,channelCountMode:rt,pan:st}=dt,at=rn(dt,["channelCount","channelCountMode","pan"]);if(rt==="max")throw c();const ct=o(nt,wt(_t({},at),{channelCount:1,channelCountMode:rt,numberOfInputs:2})),ut=s(nt,wt(_t({},at),{channelCount:it,channelCountMode:rt,gain:1})),ot=s(nt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:st});let{connectGraph:ht,disconnectGraph:pt}=tt(nt,it,ut,ot,ct);Object.defineProperty(ot.gain,"defaultValue",{get:()=>0}),Object.defineProperty(ot.gain,"maxValue",{get:()=>1}),Object.defineProperty(ot.gain,"minValue",{get:()=>-1});const Et={get bufferSize(){},get channelCount(){return ut.channelCount},set channelCount(yt){ut.channelCount!==yt&&(gt&&pt(),{connectGraph:ht,disconnectGraph:pt}=tt(nt,yt,ut,ot,ct),gt&&ht()),ut.channelCount=yt},get channelCountMode(){return ut.channelCountMode},set channelCountMode(yt){if(yt==="clamped-max"||yt==="max")throw c();ut.channelCountMode=yt},get channelInterpretation(){return ut.channelInterpretation},set channelInterpretation(yt){ut.channelInterpretation=yt},get context(){return ut.context},get inputs(){return[ut]},get numberOfInputs(){return ut.numberOfInputs},get numberOfOutputs(){return ut.numberOfOutputs},get pan(){return ot.gain},addEventListener(...yt){return ut.addEventListener(yt[0],yt[1],yt[2])},dispatchEvent(...yt){return ut.dispatchEvent(yt[0])},removeEventListener(...yt){return ut.removeEventListener(yt[0],yt[1],yt[2])}};let gt=!1;const ft=()=>{ht(),gt=!0},mt=()=>{pt(),gt=!1};return d(interceptConnections(Et,ct),ft,mt)}},createNativeWaveShaperNodeFactory=(o,e,s,a,c,d,_)=>(b,k)=>{const $=b.createWaveShaper();if(d!==null&&d.name==="webkitAudioContext"&&b.createGain().gain.automationRate===void 0)return s(b,k);assignNativeAudioNodeOptions($,k);const j=k.curve===null||k.curve instanceof Float32Array?k.curve:new Float32Array(k.curve);if(j!==null&&j.length<2)throw e();assignNativeAudioNodeOption($,{curve:j},"curve"),assignNativeAudioNodeOption($,k,"oversample");let _e=null,et=!1;return _($,"curve",it=>()=>it.call($),it=>rt=>(it.call($,rt),et&&(a(rt)&&_e===null?_e=o(b,$):!a(rt)&&_e!==null&&(_e(),_e=null)),rt)),c($,()=>{et=!0,a($.curve)&&(_e=o(b,$))},()=>{et=!1,_e!==null&&(_e(),_e=null)})},createNativeWaveShaperNodeFakerFactory=(o,e,s,a,c)=>(d,$)=>{var j=$,{curve:_,oversample:b}=j,k=rn(j,["curve","oversample"]);const _e=d.createWaveShaper(),et=d.createWaveShaper();assignNativeAudioNodeOptions(_e,k),assignNativeAudioNodeOptions(et,k);const tt=s(d,wt(_t({},k),{gain:1})),nt=s(d,wt(_t({},k),{gain:-1})),it=s(d,wt(_t({},k),{gain:1})),rt=s(d,wt(_t({},k),{gain:-1}));let st=null,at=!1,lt=null;const dt={get bufferSize(){},get channelCount(){return _e.channelCount},set channelCount(ot){tt.channelCount=ot,nt.channelCount=ot,_e.channelCount=ot,it.channelCount=ot,et.channelCount=ot,rt.channelCount=ot},get channelCountMode(){return _e.channelCountMode},set channelCountMode(ot){tt.channelCountMode=ot,nt.channelCountMode=ot,_e.channelCountMode=ot,it.channelCountMode=ot,et.channelCountMode=ot,rt.channelCountMode=ot},get channelInterpretation(){return _e.channelInterpretation},set channelInterpretation(ot){tt.channelInterpretation=ot,nt.channelInterpretation=ot,_e.channelInterpretation=ot,it.channelInterpretation=ot,et.channelInterpretation=ot,rt.channelInterpretation=ot},get context(){return _e.context},get curve(){return lt},set curve(ot){if(ot!==null&&ot.length<2)throw e();if(ot===null)_e.curve=ot,et.curve=ot;else{const ht=ot.length,pt=new Float32Array(ht+2-ht%2),Et=new Float32Array(ht+2-ht%2);pt[0]=ot[0],Et[0]=-ot[ht-1];const gt=Math.ceil((ht+1)/2),ft=(ht+1)/2-1;for(let mt=1;mt{tt.connect(_e).connect(it),tt.connect(nt).connect(et).connect(rt).connect(it),at=!0,a(lt)&&(st=o(d,tt))},ut=()=>{tt.disconnect(_e),_e.disconnect(it),tt.disconnect(nt),nt.disconnect(et),et.disconnect(rt),rt.disconnect(it),at=!1,st!==null&&(st(),st=null)};return c(interceptConnections(dt,it),ct,ut)},createNotSupportedError=()=>new DOMException("","NotSupportedError"),DEFAULT_OPTIONS$5={numberOfChannels:1},createOfflineAudioContextConstructor=(o,e,s,a,c)=>class extends o{constructor(_,b,k){let $;if(typeof _=="number"&&b!==void 0&&k!==void 0)$={length:b,numberOfChannels:_,sampleRate:k};else if(typeof _=="object")$=_;else throw new Error("The given parameters are not valid.");const{length:j,numberOfChannels:_e,sampleRate:et}=_t(_t({},DEFAULT_OPTIONS$5),$),tt=a(_e,j,et);e(testPromiseSupport,()=>testPromiseSupport(tt))||tt.addEventListener("statechange",(()=>{let nt=0;const it=rt=>{this._state==="running"&&(nt>0?(tt.removeEventListener("statechange",it),rt.stopImmediatePropagation(),this._waitForThePromiseToSettle(rt)):nt+=1)};return it})()),super(tt,_e),this._length=j,this._nativeOfflineAudioContext=tt,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state==="running"?Promise.reject(s()):(this._state="running",c(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,deactivateAudioGraph(this)}))}_waitForThePromiseToSettle(_){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(_):setTimeout(()=>this._waitForThePromiseToSettle(_))}},DEFAULT_OPTIONS$4={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",detune:0,frequency:440,periodicWave:void 0,type:"sine"},createOscillatorNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$4),$),et=s(j,_e),tt=d(j),nt=tt?a():null,it=k.sampleRate/2;super(k,!1,et,nt),this._detune=e(this,tt,et.detune,153600,-153600),this._frequency=e(this,tt,et.frequency,it,-it),this._nativeOscillatorNode=et,this._onended=null,this._oscillatorNodeRenderer=nt,this._oscillatorNodeRenderer!==null&&_e.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=_e.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(k){const $=typeof k=="function"?_(this,k):null;this._nativeOscillatorNode.onended=$;const j=this._nativeOscillatorNode.onended;this._onended=j!==null&&j===$?k:j}get type(){return this._nativeOscillatorNode.type}set type(k){this._nativeOscillatorNode.type=k,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(k){this._nativeOscillatorNode.setPeriodicWave(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=k)}start(k=0){if(this._nativeOscillatorNode.start(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=k),this.context.state!=="closed"){setInternalStateToActive(this);const $=()=>{this._nativeOscillatorNode.removeEventListener("ended",$),isActiveAudioNode(this)&&setInternalStateToPassive(this)};this._nativeOscillatorNode.addEventListener("ended",$)}}stop(k=0){this._nativeOscillatorNode.stop(k),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=k)}},createOscillatorNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap;let _=null,b=null,k=null;const $=async(j,_e)=>{let et=s(j);const tt=isOwnedByContext(et,_e);if(!tt){const nt={channelCount:et.channelCount,channelCountMode:et.channelCountMode,channelInterpretation:et.channelInterpretation,detune:et.detune.value,frequency:et.frequency.value,periodicWave:_===null?void 0:_,type:et.type};et=e(_e,nt),b!==null&&et.start(b),k!==null&&et.stop(k)}return d.set(_e,et),tt?(await o(_e,j.detune,et.detune),await o(_e,j.frequency,et.frequency)):(await a(_e,j.detune,et.detune),await a(_e,j.frequency,et.frequency)),await c(j,_e,et),et};return{set periodicWave(j){_=j},set start(j){b=j},set stop(j){k=j},render(j,_e){const et=d.get(_e);return et!==void 0?Promise.resolve(et):$(j,_e)}}},DEFAULT_OPTIONS$3={channelCount:2,channelCountMode:"clamped-max",channelInterpretation:"speakers",coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},createPannerNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS$3),$),et=s(j,_e),tt=d(j),nt=tt?a():null;super(k,!1,et,nt),this._nativePannerNode=et,this._orientationX=e(this,tt,et.orientationX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationY=e(this,tt,et.orientationY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._orientationZ=e(this,tt,et.orientationZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionX=e(this,tt,et.positionX,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionY=e(this,tt,et.positionY,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),this._positionZ=e(this,tt,et.positionZ,MOST_POSITIVE_SINGLE_FLOAT,MOST_NEGATIVE_SINGLE_FLOAT),_(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(k){this._nativePannerNode.coneInnerAngle=k}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(k){this._nativePannerNode.coneOuterAngle=k}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(k){this._nativePannerNode.coneOuterGain=k}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(k){this._nativePannerNode.distanceModel=k}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(k){this._nativePannerNode.maxDistance=k}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(k){this._nativePannerNode.panningModel=k}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(k){this._nativePannerNode.refDistance=k}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(k){this._nativePannerNode.rolloffFactor=k}},createPannerNodeRendererFactory=(o,e,s,a,c,d,_,b,k,$)=>()=>{const j=new WeakMap;let _e=null;const et=async(tt,nt)=>{let it=null,rt=d(tt);const st={channelCount:rt.channelCount,channelCountMode:rt.channelCountMode,channelInterpretation:rt.channelInterpretation},at=wt(_t({},st),{coneInnerAngle:rt.coneInnerAngle,coneOuterAngle:rt.coneOuterAngle,coneOuterGain:rt.coneOuterGain,distanceModel:rt.distanceModel,maxDistance:rt.maxDistance,panningModel:rt.panningModel,refDistance:rt.refDistance,rolloffFactor:rt.rolloffFactor}),lt=isOwnedByContext(rt,nt);if("bufferSize"in rt)it=a(nt,wt(_t({},st),{gain:1}));else if(!lt){const dt=wt(_t({},at),{orientationX:rt.orientationX.value,orientationY:rt.orientationY.value,orientationZ:rt.orientationZ.value,positionX:rt.positionX.value,positionY:rt.positionY.value,positionZ:rt.positionZ.value});rt=c(nt,dt)}if(j.set(nt,it===null?rt:it),it!==null){if(_e===null){if(_===null)throw new Error("Missing the native OfflineAudioContext constructor.");const gt=new _(6,tt.context.length,nt.sampleRate),ft=e(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"speakers",numberOfInputs:6});ft.connect(gt.destination),_e=(async()=>{const mt=await Promise.all([tt.orientationX,tt.orientationY,tt.orientationZ,tt.positionX,tt.positionY,tt.positionZ].map(async(yt,At)=>{const vt=s(gt,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",offset:At===0?1:0});return await b(gt,yt,vt.offset),vt}));for(let yt=0;yt<6;yt+=1)mt[yt].connect(ft,0,yt),mt[yt].start(0);return $(gt)})()}const dt=await _e,ct=a(nt,wt(_t({},st),{gain:1}));await k(tt,nt,ct);const ut=[];for(let gt=0;gtyt!==ot[At])||mt.some((yt,At)=>yt!==ht[At])){ot=ft,ht=mt;const yt=gt/nt.sampleRate;pt.gain.setValueAtTime(0,yt),pt=a(nt,wt(_t({},st),{gain:0})),Et=c(nt,wt(_t({},at),{orientationX:ot[0],orientationY:ot[1],orientationZ:ot[2],positionX:ht[0],positionY:ht[1],positionZ:ht[2]})),pt.gain.setValueAtTime(1,yt),ct.connect(pt).connect(Et.inputs[0]),Et.connect(it)}}return it}return lt?(await o(nt,tt.orientationX,rt.orientationX),await o(nt,tt.orientationY,rt.orientationY),await o(nt,tt.orientationZ,rt.orientationZ),await o(nt,tt.positionX,rt.positionX),await o(nt,tt.positionY,rt.positionY),await o(nt,tt.positionZ,rt.positionZ)):(await b(nt,tt.orientationX,rt.orientationX),await b(nt,tt.orientationY,rt.orientationY),await b(nt,tt.orientationZ,rt.orientationZ),await b(nt,tt.positionX,rt.positionX),await b(nt,tt.positionY,rt.positionY),await b(nt,tt.positionZ,rt.positionZ)),isNativeAudioNodeFaker(rt)?await k(tt,nt,rt.inputs[0]):await k(tt,nt,rt),rt};return{render(tt,nt){const it=j.get(nt);return it!==void 0?Promise.resolve(it):et(tt,nt)}}},DEFAULT_OPTIONS$2={disableNormalization:!1},createPeriodicWaveConstructor=(o,e,s,a)=>class yr{constructor(d,_){const b=e(d),k=a(_t(_t({},DEFAULT_OPTIONS$2),_)),$=o(b,k);return s.add($),$}static[Symbol.hasInstance](d){return d!==null&&typeof d=="object"&&Object.getPrototypeOf(d)===yr.prototype||s.has(d)}},createRenderAutomation=(o,e)=>(s,a,c)=>(o(a).replay(c),e(a,s,c)),createRenderInputsOfAudioNode=(o,e,s)=>async(a,c,d)=>{const _=o(a);await Promise.all(_.activeInputs.map((b,k)=>Array.from(b).map(async([$,j])=>{const et=await e($).render($,c),tt=a.context.destination;!s($)&&(a!==tt||!s(a))&&et.connect(d,j,k)})).reduce((b,k)=>[...b,...k],[]))},createRenderInputsOfAudioParam=(o,e,s)=>async(a,c,d)=>{const _=e(a);await Promise.all(Array.from(_.activeInputs).map(async([b,k])=>{const j=await o(b).render(b,c);s(b)||j.connect(d,k)}))},createRenderNativeOfflineAudioContext=(o,e,s,a)=>c=>o(testPromiseSupport,()=>testPromiseSupport(c))?Promise.resolve(o(a,a)).then(d=>{if(!d){const _=s(c,512,0,1);c.oncomplete=()=>{_.onaudioprocess=null,_.disconnect()},_.onaudioprocess=()=>c.currentTime,_.connect(c.destination)}return c.startRendering()}):new Promise(d=>{const _=e(c,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});c.oncomplete=b=>{_.disconnect(),d(b.renderedBuffer)},_.connect(c.destination),c.startRendering()}),createSetActiveAudioWorkletNodeInputs=o=>(e,s)=>{o.set(e,s)},createSetAudioNodeTailTime=o=>(e,s)=>o.set(e,s),createStartRendering=(o,e,s,a,c,d,_,b)=>(k,$)=>s(k).render(k,$).then(()=>Promise.all(Array.from(a($)).map(j=>s(j).render(j,$)))).then(()=>c($)).then(j=>(typeof j.copyFromChannel!="function"?(_(j),wrapAudioBufferGetChannelDataMethod(j)):e(d,()=>d(j))||b(j),o.add(j),j)),DEFAULT_OPTIONS$1={channelCount:2,channelCountMode:"explicit",channelInterpretation:"speakers",pan:0},createStereoPannerNodeConstructor=(o,e,s,a,c,d)=>class extends o{constructor(b,k){const $=c(b),j=_t(_t({},DEFAULT_OPTIONS$1),k),_e=s($,j),et=d($),tt=et?a():null;super(b,!1,_e,tt),this._pan=e(this,et,_e.pan)}get pan(){return this._pan}},createStereoPannerNodeRendererFactory=(o,e,s,a,c)=>()=>{const d=new WeakMap,_=async(b,k)=>{let $=s(b);const j=isOwnedByContext($,k);if(!j){const _e={channelCount:$.channelCount,channelCountMode:$.channelCountMode,channelInterpretation:$.channelInterpretation,pan:$.pan.value};$=e(k,_e)}return d.set(k,$),j?await o(k,b.pan,$.pan):await a(k,b.pan,$.pan),isNativeAudioNodeFaker($)?await c(b,k,$.inputs[0]):await c(b,k,$),$};return{render(b,k){const $=d.get(k);return $!==void 0?Promise.resolve($):_(b,k)}}},createTestAudioBufferConstructorSupport=o=>()=>{if(o===null)return!1;try{new o({length:1,sampleRate:44100})}catch{return!1}return!0},createTestAudioWorkletProcessorPostMessageSupport=(o,e)=>async()=>{if(o===null)return!0;if(e===null)return!1;const s=new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'],{type:"application/javascript; charset=utf-8"}),a=new e(1,128,44100),c=URL.createObjectURL(s);let d=!1,_=!1;try{await a.audioWorklet.addModule(c);const b=new o(a,"a",{numberOfOutputs:0}),k=a.createOscillator();b.port.onmessage=()=>d=!0,b.onprocessorerror=()=>_=!0,k.connect(b),k.start(0),await a.startRendering()}catch{}finally{URL.revokeObjectURL(c)}return d&&!_},createTestOfflineAudioContextCurrentTimeSupport=(o,e)=>()=>{if(e===null)return Promise.resolve(!1);const s=new e(1,1,44100),a=o(s,{channelCount:1,channelCountMode:"explicit",channelInterpretation:"discrete",gain:0});return new Promise(c=>{s.oncomplete=()=>{a.disconnect(),c(s.currentTime!==0)},s.startRendering()})},createUnknownError=()=>new DOMException("","UnknownError"),DEFAULT_OPTIONS={channelCount:2,channelCountMode:"max",channelInterpretation:"speakers",curve:null,oversample:"none"},createWaveShaperNodeConstructor=(o,e,s,a,c,d,_)=>class extends o{constructor(k,$){const j=c(k),_e=_t(_t({},DEFAULT_OPTIONS),$),et=s(j,_e),nt=d(j)?a():null;super(k,!0,et,nt),this._isCurveNullified=!1,this._nativeWaveShaperNode=et,_(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(k){if(k===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(k.length<2)throw e();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=k}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(k){this._nativeWaveShaperNode.oversample=k}},createWaveShaperNodeRendererFactory=(o,e,s)=>()=>{const a=new WeakMap,c=async(d,_)=>{let b=e(d);if(!isOwnedByContext(b,_)){const $={channelCount:b.channelCount,channelCountMode:b.channelCountMode,channelInterpretation:b.channelInterpretation,curve:b.curve,oversample:b.oversample};b=o(_,$)}return a.set(_,b),isNativeAudioNodeFaker(b)?await s(d,_,b.inputs[0]):await s(d,_,b),b};return{render(d,_){const b=a.get(_);return b!==void 0?Promise.resolve(b):c(d,_)}}},createWindow=()=>typeof window=="undefined"?null:window,createWrapAudioBufferCopyChannelMethods=(o,e)=>s=>{s.copyFromChannel=(a,c,d=0)=>{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_{const _=o(d),b=o(c);if(b>=s.numberOfChannels)throw e();const k=s.length,$=s.getChannelData(b),j=a.length;for(let _e=_<0?-_:0;_e+_e=>{e.copyFromChannel=(s=>(a,c,d=0)=>{const _=o(d),b=o(c);if(_(a,c,d=0)=>{const _=o(d),b=o(c);if(_(e,s)=>{const a=s.createBuffer(1,1,44100);e.buffer===null&&(e.buffer=a),o(e,"buffer",c=>()=>{const d=c.call(e);return d===a?null:d},c=>d=>c.call(e,d===null?a:d))},createWrapChannelMergerNode=(o,e)=>(s,a)=>{a.channelCount=1,a.channelCountMode="explicit",Object.defineProperty(a,"channelCount",{get:()=>1,set:()=>{throw o()}}),Object.defineProperty(a,"channelCountMode",{get:()=>"explicit",set:()=>{throw o()}});const c=s.createBufferSource();e(a,()=>{const b=a.numberOfInputs;for(let k=0;kc.disconnect(a))},getFirstSample=(o,e,s)=>o.copyFromChannel===void 0?o.getChannelData(s)[0]:(o.copyFromChannel(e,s),e[0]),isDCCurve=o=>{if(o===null)return!1;const e=o.length;return e%2!==0?o[Math.floor(e/2)]!==0:o[e/2-1]+o[e/2]!==0},overwriteAccessors=(o,e,s,a)=>{let c=o;for(;!c.hasOwnProperty(e);)c=Object.getPrototypeOf(c);const{get:d,set:_}=Object.getOwnPropertyDescriptor(c,e);Object.defineProperty(o,e,{get:s(d),set:a(_)})},sanitizeAudioWorkletNodeOptions=o=>wt(_t({},o),{outputChannelCount:o.outputChannelCount!==void 0?o.outputChannelCount:o.numberOfInputs===1&&o.numberOfOutputs===1?[o.channelCount]:Array.from({length:o.numberOfOutputs},()=>1)}),sanitizeChannelSplitterOptions=o=>wt(_t({},o),{channelCount:o.numberOfOutputs}),sanitizePeriodicWaveOptions=o=>{const{imag:e,real:s}=o;return e===void 0?s===void 0?wt(_t({},o),{imag:[0,0],real:[0,0]}):wt(_t({},o),{imag:Array.from(s,()=>0),real:s}):s===void 0?wt(_t({},o),{imag:e,real:Array.from(e,()=>0)}):wt(_t({},o),{imag:e,real:s})},setValueAtTimeUntilPossible=(o,e,s)=>{try{o.setValueAtTime(e,s)}catch(a){if(a.code!==9)throw a;setValueAtTimeUntilPossible(o,e,s+1e-7)}},testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport=o=>{const e=o.createBufferSource();e.start();try{e.start()}catch{return!0}return!1},testAudioBufferSourceNodeStartMethodOffsetClampingSupport=o=>{const e=o.createBufferSource(),s=o.createBuffer(1,1,44100);e.buffer=s;try{e.start(0,1)}catch{return!1}return!0},testAudioBufferSourceNodeStopMethodNullifiedBufferSupport=o=>{const e=o.createBufferSource();e.start();try{e.stop()}catch{return!1}return!0},testAudioScheduledSourceNodeStartMethodNegativeParametersSupport=o=>{const e=o.createOscillator();try{e.start(-1)}catch(s){return s instanceof RangeError}return!1},testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport=o=>{const e=o.createBuffer(1,1,44100),s=o.createBufferSource();s.buffer=e,s.start(),s.stop();try{return s.stop(),!0}catch{return!1}},testAudioScheduledSourceNodeStopMethodNegativeParametersSupport=o=>{const e=o.createOscillator();try{e.stop(-1)}catch(s){return s instanceof RangeError}return!1},testAudioWorkletNodeOptionsClonability=o=>{const{port1:e,port2:s}=new MessageChannel;try{e.postMessage(o)}finally{e.close(),s.close()}},wrapAudioBufferSourceNodeStartMethodOffsetClamping=o=>{o.start=(e=>(s=0,a=0,c)=>{const d=o.buffer,_=d===null?a:Math.min(d.duration,a);d!==null&&_>d.duration-.5/o.context.sampleRate?e.call(o,s,0,0):e.call(o,s,_,c)})(o.start)},wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls=(o,e)=>{const s=e.createGain();o.connect(s);const a=(c=>()=>{c.call(o,s),o.removeEventListener("ended",a)})(o.disconnect);o.addEventListener("ended",a),interceptConnections(o,s),o.stop=(c=>{let d=!1;return(_=0)=>{if(d)try{c.call(o,_)}catch{s.gain.setValueAtTime(0,_)}else c.call(o,_),d=!0}})(o.stop)},wrapEventListener=(o,e)=>s=>{const a={value:o};return Object.defineProperties(s,{currentTarget:a,target:a}),typeof e=="function"?e.call(o,s):e.handleEvent.call(o,s)},addActiveInputConnectionToAudioNode=createAddActiveInputConnectionToAudioNode(insertElementInSet),addPassiveInputConnectionToAudioNode=createAddPassiveInputConnectionToAudioNode(insertElementInSet),deleteActiveInputConnectionToAudioNode=createDeleteActiveInputConnectionToAudioNode(pickElementFromSet),audioNodeTailTimeStore=new WeakMap,getAudioNodeTailTime=createGetAudioNodeTailTime(audioNodeTailTimeStore),cacheTestResult=createCacheTestResult(new Map,new WeakMap),window$1=createWindow(),createNativeAnalyserNode=createNativeAnalyserNodeFactory(cacheTestResult,createIndexSizeError),getAudioNodeRenderer=createGetAudioNodeRenderer(getAudioNodeConnections),renderInputsOfAudioNode=createRenderInputsOfAudioNode(getAudioNodeConnections,getAudioNodeRenderer,isPartOfACycle),createAnalyserNodeRenderer=createAnalyserNodeRendererFactory(createNativeAnalyserNode,getNativeAudioNode,renderInputsOfAudioNode),getNativeContext=createGetNativeContext(CONTEXT_STORE),nativeOfflineAudioContextConstructor=createNativeOfflineAudioContextConstructor(window$1),isNativeOfflineAudioContext=createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor),audioParamAudioNodeStore=new WeakMap,eventTargetConstructor=createEventTargetConstructor(wrapEventListener),nativeAudioContextConstructor=createNativeAudioContextConstructor(window$1),isNativeAudioContext=createIsNativeAudioContext(nativeAudioContextConstructor),isNativeAudioNode=createIsNativeAudioNode(window$1),isNativeAudioParam=createIsNativeAudioParam(window$1),nativeAudioWorkletNodeConstructor=createNativeAudioWorkletNodeConstructor(window$1),audioNodeConstructor=createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode,addPassiveInputConnectionToAudioNode,connectNativeAudioNodeToNativeAudioNode,deleteActiveInputConnectionToAudioNode,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getAudioNodeTailTime,getEventListenersOfAudioNode,getNativeAudioNode,insertElementInSet,isActiveAudioNode,isPartOfACycle,isPassiveAudioNode),cacheTestResult,createIncrementCycleCounterFactory(CYCLE_COUNTERS,disconnectNativeAudioNodeFromNativeAudioNode,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,isActiveAudioNode),createIndexSizeError,createInvalidAccessError,createNotSupportedError,createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode,CYCLE_COUNTERS,getAudioNodeConnections,getNativeAudioNode,getNativeAudioParam,getNativeContext,isActiveAudioNode,isNativeOfflineAudioContext),createDetectCycles(audioParamAudioNodeStore,getAudioNodeConnections,getValueForKey),eventTargetConstructor,getNativeContext,isNativeAudioContext,isNativeAudioNode,isNativeAudioParam,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor),analyserNodeConstructor=createAnalyserNodeConstructor(audioNodeConstructor,createAnalyserNodeRenderer,createIndexSizeError,createNativeAnalyserNode,getNativeContext,isNativeOfflineAudioContext),audioBufferStore=new WeakSet,nativeAudioBufferConstructor=createNativeAudioBufferConstructor(window$1),convertNumberToUnsignedLong=createConvertNumberToUnsignedLong(new Uint32Array(1)),wrapAudioBufferCopyChannelMethods=createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong,createIndexSizeError),wrapAudioBufferCopyChannelMethodsOutOfBounds=createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong),audioBufferConstructor=createAudioBufferConstructor(audioBufferStore,cacheTestResult,createNotSupportedError,nativeAudioBufferConstructor,nativeOfflineAudioContextConstructor,createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),addSilentConnection=createAddSilentConnection(createNativeGainNode),renderInputsOfAudioParam=createRenderInputsOfAudioParam(getAudioNodeRenderer,getAudioParamConnections,isPartOfACycle),connectAudioParam=createConnectAudioParam(renderInputsOfAudioParam),createNativeAudioBufferSourceNode=createNativeAudioBufferSourceNodeFactory(addSilentConnection,cacheTestResult,testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,testAudioBufferSourceNodeStartMethodOffsetClampingSupport,testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioBufferSourceNodeStartMethodOffsetClamping,createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),renderAutomation=createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections),renderInputsOfAudioParam),createAudioBufferSourceNodeRenderer=createAudioBufferSourceNodeRendererFactory(connectAudioParam,createNativeAudioBufferSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),createAudioParam=createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),audioParamAudioNodeStore,AUDIO_PARAM_STORE,createAudioParamRenderer,createCancelAndHoldAutomationEvent,createCancelScheduledValuesAutomationEvent,createExponentialRampToValueAutomationEvent,createLinearRampToValueAutomationEvent,createSetTargetAutomationEvent,createSetValueAutomationEvent,createSetValueCurveAutomationEvent,nativeAudioContextConstructor,setValueAtTimeUntilPossible),audioBufferSourceNodeConstructor=createAudioBufferSourceNodeConstructor(audioNodeConstructor,createAudioBufferSourceNodeRenderer,createAudioParam,createInvalidStateError,createNativeAudioBufferSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),audioDestinationNodeConstructor=createAudioDestinationNodeConstructor(audioNodeConstructor,createAudioDestinationNodeRenderer,createIndexSizeError,createInvalidStateError,createNativeAudioDestinationNodeFactory(createNativeGainNode,overwriteAccessors),getNativeContext,isNativeOfflineAudioContext,renderInputsOfAudioNode),createBiquadFilterNodeRenderer=createBiquadFilterNodeRendererFactory(connectAudioParam,createNativeBiquadFilterNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),setAudioNodeTailTime=createSetAudioNodeTailTime(audioNodeTailTimeStore),biquadFilterNodeConstructor=createBiquadFilterNodeConstructor(audioNodeConstructor,createAudioParam,createBiquadFilterNodeRenderer,createInvalidAccessError,createNativeBiquadFilterNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),monitorConnections=createMonitorConnections(insertElementInSet,isNativeAudioNode),wrapChannelMergerNode=createWrapChannelMergerNode(createInvalidStateError,monitorConnections),createNativeChannelMergerNode=createNativeChannelMergerNodeFactory(nativeAudioContextConstructor,wrapChannelMergerNode),createChannelMergerNodeRenderer=createChannelMergerNodeRendererFactory(createNativeChannelMergerNode,getNativeAudioNode,renderInputsOfAudioNode),channelMergerNodeConstructor=createChannelMergerNodeConstructor(audioNodeConstructor,createChannelMergerNodeRenderer,createNativeChannelMergerNode,getNativeContext,isNativeOfflineAudioContext),createChannelSplitterNodeRenderer=createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode,getNativeAudioNode,renderInputsOfAudioNode),channelSplitterNodeConstructor=createChannelSplitterNodeConstructor(audioNodeConstructor,createChannelSplitterNodeRenderer,createNativeChannelSplitterNode,getNativeContext,isNativeOfflineAudioContext,sanitizeChannelSplitterOptions),createNativeConstantSourceNodeFaker=createNativeConstantSourceNodeFakerFactory(addSilentConnection,createNativeAudioBufferSourceNode,createNativeGainNode,monitorConnections),createNativeConstantSourceNode=createNativeConstantSourceNodeFactory(addSilentConnection,cacheTestResult,createNativeConstantSourceNodeFaker,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport),createConstantSourceNodeRenderer=createConstantSourceNodeRendererFactory(connectAudioParam,createNativeConstantSourceNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),constantSourceNodeConstructor=createConstantSourceNodeConstructor(audioNodeConstructor,createAudioParam,createConstantSourceNodeRenderer,createNativeConstantSourceNode,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createNativeConvolverNode=createNativeConvolverNodeFactory(createNotSupportedError,overwriteAccessors),createConvolverNodeRenderer=createConvolverNodeRendererFactory(createNativeConvolverNode,getNativeAudioNode,renderInputsOfAudioNode),convolverNodeConstructor=createConvolverNodeConstructor(audioNodeConstructor,createConvolverNodeRenderer,createNativeConvolverNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createDelayNodeRenderer=createDelayNodeRendererFactory(connectAudioParam,createNativeDelayNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),delayNodeConstructor=createDelayNodeConstructor(audioNodeConstructor,createAudioParam,createDelayNodeRenderer,createNativeDelayNode,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativeDynamicsCompressorNode=createNativeDynamicsCompressorNodeFactory(createNotSupportedError),createDynamicsCompressorNodeRenderer=createDynamicsCompressorNodeRendererFactory(connectAudioParam,createNativeDynamicsCompressorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),dynamicsCompressorNodeConstructor=createDynamicsCompressorNodeConstructor(audioNodeConstructor,createAudioParam,createDynamicsCompressorNodeRenderer,createNativeDynamicsCompressorNode,createNotSupportedError,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createGainNodeRenderer=createGainNodeRendererFactory(connectAudioParam,createNativeGainNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),gainNodeConstructor=createGainNodeConstructor(audioNodeConstructor,createAudioParam,createGainNodeRenderer,createNativeGainNode,getNativeContext,isNativeOfflineAudioContext),createNativeIIRFilterNodeFaker=createNativeIIRFilterNodeFakerFactory(createInvalidAccessError,createInvalidStateError,createNativeScriptProcessorNode,createNotSupportedError),renderNativeOfflineAudioContext=createRenderNativeOfflineAudioContext(cacheTestResult,createNativeGainNode,createNativeScriptProcessorNode,createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode,nativeOfflineAudioContextConstructor)),createIIRFilterNodeRenderer=createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderInputsOfAudioNode,renderNativeOfflineAudioContext),createNativeIIRFilterNode=createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker),iIRFilterNodeConstructor=createIIRFilterNodeConstructor(audioNodeConstructor,createNativeIIRFilterNode,createIIRFilterNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createAudioListener=createAudioListenerFactory(createAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeScriptProcessorNode,createNotSupportedError,getFirstSample,isNativeOfflineAudioContext,overwriteAccessors),unrenderedAudioWorkletNodeStore=new WeakMap,minimalBaseAudioContextConstructor=createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor,createAudioListener,eventTargetConstructor,isNativeOfflineAudioContext,unrenderedAudioWorkletNodeStore,wrapEventListener),createNativeOscillatorNode=createNativeOscillatorNodeFactory(addSilentConnection,cacheTestResult,testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls),createOscillatorNodeRenderer=createOscillatorNodeRendererFactory(connectAudioParam,createNativeOscillatorNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),oscillatorNodeConstructor=createOscillatorNodeConstructor(audioNodeConstructor,createAudioParam,createNativeOscillatorNode,createOscillatorNodeRenderer,getNativeContext,isNativeOfflineAudioContext,wrapEventListener),createConnectedNativeAudioBufferSourceNode=createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode),createNativeWaveShaperNodeFaker=createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeGainNode,isDCCurve,monitorConnections),createNativeWaveShaperNode=createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode,createInvalidStateError,createNativeWaveShaperNodeFaker,isDCCurve,monitorConnections,nativeAudioContextConstructor,overwriteAccessors),createNativePannerNodeFaker=createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode,createInvalidStateError,createNativeChannelMergerNode,createNativeGainNode,createNativeScriptProcessorNode,createNativeWaveShaperNode,createNotSupportedError,disconnectNativeAudioNodeFromNativeAudioNode,getFirstSample,monitorConnections),createNativePannerNode=createNativePannerNodeFactory(createNativePannerNodeFaker),createPannerNodeRenderer=createPannerNodeRendererFactory(connectAudioParam,createNativeChannelMergerNode,createNativeConstantSourceNode,createNativeGainNode,createNativePannerNode,getNativeAudioNode,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),pannerNodeConstructor=createPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativePannerNode,createPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),createNativePeriodicWave=createNativePeriodicWaveFactory(createIndexSizeError),periodicWaveConstructor=createPeriodicWaveConstructor(createNativePeriodicWave,getNativeContext,new WeakSet,sanitizePeriodicWaveOptions),nativeStereoPannerNodeFakerFactory=createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeGainNode,createNativeWaveShaperNode,createNotSupportedError,monitorConnections),createNativeStereoPannerNode=createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory,createNotSupportedError),createStereoPannerNodeRenderer=createStereoPannerNodeRendererFactory(connectAudioParam,createNativeStereoPannerNode,getNativeAudioNode,renderAutomation,renderInputsOfAudioNode),stereoPannerNodeConstructor=createStereoPannerNodeConstructor(audioNodeConstructor,createAudioParam,createNativeStereoPannerNode,createStereoPannerNodeRenderer,getNativeContext,isNativeOfflineAudioContext),createWaveShaperNodeRenderer=createWaveShaperNodeRendererFactory(createNativeWaveShaperNode,getNativeAudioNode,renderInputsOfAudioNode),waveShaperNodeConstructor=createWaveShaperNodeConstructor(audioNodeConstructor,createInvalidStateError,createNativeWaveShaperNode,createWaveShaperNodeRenderer,getNativeContext,isNativeOfflineAudioContext,setAudioNodeTailTime),isSecureContext=createIsSecureContext(window$1),exposeCurrentFrameAndCurrentTime=createExposeCurrentFrameAndCurrentTime(window$1),backupOfflineAudioContextStore=new WeakMap,getOrCreateBackupOfflineAudioContext=createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore,nativeOfflineAudioContextConstructor),addAudioWorkletModule=isSecureContext?createAddAudioWorkletModule(cacheTestResult,createNotSupportedError,createEvaluateSource(window$1),exposeCurrentFrameAndCurrentTime,createFetchSource(createAbortError),getNativeContext,getOrCreateBackupOfflineAudioContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,new WeakMap,new WeakMap,createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor),window$1):void 0,isNativeContext=createIsNativeContext(isNativeAudioContext,isNativeOfflineAudioContext),decodeAudioData=createDecodeAudioData(audioBufferStore,cacheTestResult,createDataCloneError,createEncodingError,new WeakSet,getNativeContext,isNativeContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,testPromiseSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),baseAudioContextConstructor=createBaseAudioContextConstructor(addAudioWorkletModule,analyserNodeConstructor,audioBufferConstructor,audioBufferSourceNodeConstructor,biquadFilterNodeConstructor,channelMergerNodeConstructor,channelSplitterNodeConstructor,constantSourceNodeConstructor,convolverNodeConstructor,decodeAudioData,delayNodeConstructor,dynamicsCompressorNodeConstructor,gainNodeConstructor,iIRFilterNodeConstructor,minimalBaseAudioContextConstructor,oscillatorNodeConstructor,pannerNodeConstructor,periodicWaveConstructor,stereoPannerNodeConstructor,waveShaperNodeConstructor),mediaElementAudioSourceNodeConstructor=createMediaElementAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaElementAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioDestinationNodeConstructor=createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioDestinationNode,getNativeContext,isNativeOfflineAudioContext),mediaStreamAudioSourceNodeConstructor=createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamAudioSourceNode,getNativeContext,isNativeOfflineAudioContext),createNativeMediaStreamTrackAudioSourceNode=createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError,isNativeOfflineAudioContext),mediaStreamTrackAudioSourceNodeConstructor=createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor,createNativeMediaStreamTrackAudioSourceNode,getNativeContext),audioContextConstructor=createAudioContextConstructor(baseAudioContextConstructor,createInvalidStateError,createNotSupportedError,createUnknownError,mediaElementAudioSourceNodeConstructor,mediaStreamAudioDestinationNodeConstructor,mediaStreamAudioSourceNodeConstructor,mediaStreamTrackAudioSourceNodeConstructor,nativeAudioContextConstructor),getUnrenderedAudioWorkletNodes=createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore),addUnrenderedAudioWorkletNode=createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),connectMultipleOutputs=createConnectMultipleOutputs(createIndexSizeError),deleteUnrenderedAudioWorkletNode=createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes),disconnectMultipleOutputs=createDisconnectMultipleOutputs(createIndexSizeError),activeAudioWorkletNodeInputsStore=new WeakMap,getActiveAudioWorkletNodeInputs=createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore,getValueForKey),createNativeAudioWorkletNodeFaker=createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs,createIndexSizeError,createInvalidStateError,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,createNativeScriptProcessorNode,createNotSupportedError,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getActiveAudioWorkletNodeInputs,monitorConnections),createNativeAudioWorkletNode=createNativeAudioWorkletNodeFactory(createInvalidStateError,createNativeAudioWorkletNodeFaker,createNativeGainNode,createNotSupportedError,monitorConnections),createAudioWorkletNodeRenderer=createAudioWorkletNodeRendererFactory(connectAudioParam,connectMultipleOutputs,createNativeAudioBufferSourceNode,createNativeChannelMergerNode,createNativeChannelSplitterNode,createNativeConstantSourceNode,createNativeGainNode,deleteUnrenderedAudioWorkletNode,disconnectMultipleOutputs,exposeCurrentFrameAndCurrentTime,getNativeAudioNode,nativeAudioWorkletNodeConstructor,nativeOfflineAudioContextConstructor,renderAutomation,renderInputsOfAudioNode,renderNativeOfflineAudioContext),getBackupOfflineAudioContext=createGetBackupOfflineAudioContext(backupOfflineAudioContextStore),setActiveAudioWorkletNodeInputs=createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore),audioWorkletNodeConstructor=isSecureContext?createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode,audioNodeConstructor,createAudioParam,createAudioWorkletNodeRenderer,createNativeAudioWorkletNode,getAudioNodeConnections,getBackupOfflineAudioContext,getNativeContext,isNativeOfflineAudioContext,nativeAudioWorkletNodeConstructor,sanitizeAudioWorkletNodeOptions,setActiveAudioWorkletNodeInputs,testAudioWorkletNodeOptionsClonability,wrapEventListener):void 0,createNativeOfflineAudioContext=createCreateNativeOfflineAudioContext(createNotSupportedError,nativeOfflineAudioContextConstructor),startRendering=createStartRendering(audioBufferStore,cacheTestResult,getAudioNodeRenderer,getUnrenderedAudioWorkletNodes,renderNativeOfflineAudioContext,testAudioBufferCopyChannelMethodsOutOfBoundsSupport,wrapAudioBufferCopyChannelMethods,wrapAudioBufferCopyChannelMethodsOutOfBounds),offlineAudioContextConstructor=createOfflineAudioContextConstructor(baseAudioContextConstructor,cacheTestResult,createInvalidStateError,createNativeOfflineAudioContext,startRendering),isAnyAudioContext=createIsAnyAudioContext(CONTEXT_STORE,isNativeAudioContext),isAnyAudioNode=createIsAnyAudioNode(AUDIO_NODE_STORE,isNativeAudioNode),isAnyAudioParam=createIsAnyAudioParam(AUDIO_PARAM_STORE,isNativeAudioParam),isAnyOfflineAudioContext=createIsAnyOfflineAudioContext(CONTEXT_STORE,isNativeOfflineAudioContext);function assert(o,e){if(!o)throw new Error(e)}function assertRange(o,e,s=1/0){if(!(e<=o&&o<=s))throw new RangeError(`Value must be within [${e}, ${s}], got: ${o}`)}function assertContextRunning(o){!o.isOffline&&o.state!=="running"&&warn('The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.')}let defaultLogger=console;function log(...o){defaultLogger.log(...o)}function warn(...o){defaultLogger.warn(...o)}function isUndef(o){return typeof o=="undefined"}function isDefined(o){return!isUndef(o)}function isFunction(o){return typeof o=="function"}function isNumber(o){return typeof o=="number"}function isObject(o){return Object.prototype.toString.call(o)==="[object Object]"&&o.constructor===Object}function isBoolean(o){return typeof o=="boolean"}function isArray(o){return Array.isArray(o)}function isString(o){return typeof o=="string"}function isNote(o){return isString(o)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(o)}function createAudioContext(o){return new audioContextConstructor(o)}function createOfflineAudioContext(o,e,s){return new offlineAudioContextConstructor(o,e,s)}const theWindow=typeof self=="object"?self:null,hasAudioContext=theWindow&&(theWindow.hasOwnProperty("AudioContext")||theWindow.hasOwnProperty("webkitAudioContext"));function createAudioWorkletNode(o,e,s){return assert(isDefined(audioWorkletNodeConstructor),"This node only works in a secure context (https or localhost)"),new audioWorkletNodeConstructor(o,e,s)}/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */function __decorate(o,e,s,a){var c=arguments.length,d=c<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,s):a,_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(o,e,s,a);else for(var b=o.length-1;b>=0;b--)(_=o[b])&&(d=(c<3?_(d):c>3?_(e,s,d):_(e,s))||d);return c>3&&d&&Object.defineProperty(e,s,d),d}function __awaiter(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})}class Ticker{constructor(e,s,a){this._callback=e,this._type=s,this._updateInterval=a,this._createClock()}_createWorker(){const e=new Blob([` +***************************************************************************** */function __decorate(o,e,s,a){var c=arguments.length,d=c<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,s):a,_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")d=Reflect.decorate(o,e,s,a);else for(var b=o.length-1;b>=0;b--)(_=o[b])&&(d=(c<3?_(d):c>3?_(e,s,d):_(e,s))||d);return c>3&&d&&Object.defineProperty(e,s,d),d}function __awaiter$4(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})}class Ticker{constructor(e,s,a){this._callback=e,this._type=s,this._updateInterval=a,this._createClock()}_createWorker(){const e=new Blob([` // the initial timeout time let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)}; // onmessage callback @@ -337,7 +73,8 @@ PERFORMANCE OF THIS SOFTWARE. * @author Yotam Mann * @license http://opensource.org/licenses/MIT MIT License * @copyright 2014-2019 Yotam Mann - */class Tone{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||theWindow&&this.toString()===theWindow.TONE_DEBUG_CLASS)&&log(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone.version=version;const EPSILON=1e-6;function GT(o,e){return o>e+EPSILON}function GTE(o,e){return GT(o,e)||EQ(o,e)}function LT(o,e){return o+EPSILONthis.memory){const s=this.length-this.memory;this._timeline.splice(0,s)}return this}remove(e){const s=this._timeline.indexOf(e);return s!==-1&&this._timeline.splice(s,1),this}get(e,s="time"){const a=this._search(e,s);return a!==-1?this._timeline[a]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,s="time"){const a=this._search(e,s);return a+10&&this._timeline[s-1].time=0?this._timeline[a-1]:null}cancel(e){if(this._timeline.length>1){let s=this._search(e);if(s>=0)if(EQ(this._timeline[s].time,e)){for(let a=s;a>=0&&EQ(this._timeline[a].time,e);a--)s=a;this._timeline=this._timeline.slice(0,s)}else this._timeline=this._timeline.slice(0,s+1);else this._timeline=[]}else this._timeline.length===1&>E(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){const s=this._search(e);return s>=0&&(this._timeline=this._timeline.slice(s+1)),this}previousEvent(e){const s=this._timeline.indexOf(e);return s>0?this._timeline[s-1]:null}_search(e,s="time"){if(this._timeline.length===0)return-1;let a=0;const c=this._timeline.length;let d=c;if(c>0&&this._timeline[c-1][s]<=e)return c-1;for(;a=0&&this._timeline[a].time>=e;)a--;return this._iterate(s,a+1),this}forEachAtTime(e,s){const a=this._search(e);if(a!==-1&&EQ(this._timeline[a].time,e)){let c=a;for(let d=a;d>=0&&EQ(this._timeline[d].time,e);d--)c=d;this._iterate(d=>{s(d)},c,a)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext=[];function onContextInit(o){notifyNewContext.push(o)}function initializeContext(o){notifyNewContext.forEach(e=>e(o))}const notifyCloseContext=[];function onContextClose(o){notifyCloseContext.push(o)}function closeContext(o){notifyCloseContext.forEach(e=>e(o))}class Emitter extends Tone{constructor(){super(...arguments),this.name="Emitter"}on(e,s){return e.split(/\W+/).forEach(c=>{isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(c)||(this._events[c]=[]),this._events[c].push(s)}),this}once(e,s){const a=(...c)=>{s(...c),this.off(e,a)};return this.on(e,a),this}off(e,s){return e.split(/\W+/).forEach(c=>{if(isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(e))if(isUndef(s))this._events[e]=[];else{const d=this._events[e];for(let _=d.length-1;_>=0;_--)d[_]===s&&d.splice(_,1)}}),this}emit(e,...s){if(this._events&&this._events.hasOwnProperty(e)){const a=this._events[e].slice(0);for(let c=0,d=a.length;c{const a=Object.getOwnPropertyDescriptor(Emitter.prototype,s);Object.defineProperty(e.prototype,s,a)})}dispose(){return super.dispose(),this._events=void 0,this}}class BaseContext extends Emitter{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context extends BaseContext{constructor(){super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline,this._timeoutIds=0,this._initialized=!1,this.isOffline=!1,this._workletModules=new Map;const e=optionsFromArguments(Context.getDefaults(),arguments,["context"]);e.context?this._context=e.context:this._context=createAudioContext({latencyHint:e.latencyHint}),this._ticker=new Ticker(this.emit.bind(this,"tick"),e.clockSource,e.updateInterval),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this._setLatencyHint(e.latencyHint),this.lookAhead=e.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,s,a){return this._context.createBuffer(e,s,a)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,s){return this._context.createIIRFilter(e,s)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,s,a){return this._context.createPeriodicWave(e,s,a)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){assert(!this._initialized,"The listener cannot be set after initialization."),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){assert(!this._initialized,"The transport cannot be set after initialization."),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){assert(!this._initialized,"Draw cannot be set after initialization."),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){assert(!this._initialized,"The destination cannot be set after initialization."),this._destination=e}createAudioWorkletNode(e,s){return createAudioWorkletNode(this.rawContext,e,s)}addAudioWorkletModule(e,s){return __awaiter(this,void 0,void 0,function*(){assert(isDefined(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletModules.has(s)||this._workletModules.set(s,this.rawContext.audioWorklet.addModule(e)),yield this._workletModules.get(s)})}workletsAreReady(){return __awaiter(this,void 0,void 0,function*(){const e=[];this._workletModules.forEach(s=>e.push(s)),yield Promise.all(e)})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get latencyHint(){return this._latencyHint}_setLatencyHint(e){let s=0;if(this._latencyHint=e,isString(e))switch(e){case"interactive":s=.1;break;case"playback":s=.5;break;case"balanced":s=.25;break}this.lookAhead=s,this.updateInterval=s/2}get rawContext(){return this._context}now(){return this._context.currentTime+this.lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter(this,void 0,void 0,function*(){isAudioContext(this._context)&&(yield this._context.close()),this._initialized&&closeContext(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{const s=this._context.createBuffer(1,128,this._context.sampleRate),a=s.getChannelData(0);for(let d=0;dthis._constants[e].disconnect()),this}_timeoutLoop(){const e=this.now();let s=this._timeouts.peek();for(;this._timeouts.length&&s&&s.time<=e;)s.callback(),this._timeouts.shift(),s=this._timeouts.peek()}setTimeout(e,s){this._timeoutIds++;const a=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:a+s}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(s=>{s.id===e&&this._timeouts.remove(s)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,s){const a=++this._timeoutIds,c=()=>{const d=this.now();this._timeouts.add({callback:()=>{e(),c()},id:a,time:d+s})};return c(),a}}class DummyContext extends BaseContext{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,s,a){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,s){return{}}createPanner(){return{}}createPeriodicWave(e,s,a){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,s){return{}}get rawContext(){return{}}addAudioWorkletModule(e,s){return __awaiter(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,s){return 0}clearTimeout(e){return this}setInterval(e,s){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}}function readOnly(o,e){isArray(e)?e.forEach(s=>readOnly(o,s)):Object.defineProperty(o,e,{enumerable:!0,writable:!1})}function writable(o,e){isArray(e)?e.forEach(s=>writable(o,s)):Object.defineProperty(o,e,{writable:!0})}const noOp=()=>{};class ToneAudioBuffer extends Tone{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp;const e=optionsFromArguments(ToneAudioBuffer.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=e.reverse,this.onload=e.onload,e.url&&isAudioBuffer(e.url)||e.url instanceof ToneAudioBuffer?this.set(e.url):isString(e.url)&&this.load(e.url).catch(e.onerror)}static getDefaults(){return{onerror:noOp,onload:noOp,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext().sampleRate}set(e){return e instanceof ToneAudioBuffer?e.loaded?this._buffer=e.get():e.onload=()=>{this.set(e),this.onload(this)}:this._buffer=e,this._reversed&&this._reverse(),this}get(){return this._buffer}load(e){return __awaiter(this,void 0,void 0,function*(){const s=ToneAudioBuffer.load(e).then(a=>{this.set(a),this.onload(this)});ToneAudioBuffer.downloads.push(s);try{yield s}finally{const a=ToneAudioBuffer.downloads.indexOf(s);ToneAudioBuffer.downloads.splice(a,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){const s=isArray(e)&&e[0].length>0,a=s?e.length:1,c=s?e[0].length:e.length,d=getContext(),_=d.createBuffer(a,c,d.sampleRate),b=!s&&a===1?[e]:e;for(let k=0;kc/a),this.fromArray(s)}return this}toArray(e){if(isNumber(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{const s=[];for(let a=0;a0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(e){return new ToneAudioBuffer().fromArray(e)}static fromUrl(e){return __awaiter(this,void 0,void 0,function*(){return yield new ToneAudioBuffer().load(e)})}static load(e){return __awaiter(this,void 0,void 0,function*(){const s=e.match(/\[([^\]\[]+\|.+)\]$/);if(s){const b=s[1].split("|");let k=b[0];for(const $ of b)if(ToneAudioBuffer.supportsType($)){k=$;break}e=e.replace(s[0],k)}const a=ToneAudioBuffer.baseUrl===""||ToneAudioBuffer.baseUrl.endsWith("/")?ToneAudioBuffer.baseUrl:ToneAudioBuffer.baseUrl+"/",c=yield fetch(a+e);if(!c.ok)throw new Error(`could not load url: ${e}`);const d=yield c.arrayBuffer();return yield getContext().decodeAudioData(d)})}static supportsType(e){const s=e.split("."),a=s[s.length-1];return document.createElement("audio").canPlayType("audio/"+a)!==""}static loaded(){return __awaiter(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer.downloads.length;)yield ToneAudioBuffer.downloads[0]})}}ToneAudioBuffer.baseUrl="";ToneAudioBuffer.downloads=[];class OfflineContext extends Context{constructor(){super({clockSource:"offline",context:isOfflineAudioContext(arguments[0])?arguments[0]:createOfflineAudioContext(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return __awaiter(this,void 0,void 0,function*(){let s=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,s++;const a=Math.floor(this.sampleRate/128);e&&s%a===0&&(yield new Promise(c=>setTimeout(c,1)))}})}render(e=!0){return __awaiter(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(e);const s=yield this._context.startRendering();return new ToneAudioBuffer(s)})}close(){return Promise.resolve()}}const dummyContext=new DummyContext;let globalContext=dummyContext;function getContext(){return globalContext===dummyContext&&hasAudioContext&&setContext(new Context),globalContext}function setContext(o){isAudioContext(o)?globalContext=new Context(o):isOfflineAudioContext(o)?globalContext=new OfflineContext(o):globalContext=o}if(theWindow&&!theWindow.TONE_SILENCE_LOGGING){const e=` * Tone.js v${version} * `;console.log(`%c${e}`,"background: #000; color: #fff")}function dbToGain(o){return Math.pow(10,o/20)}function gainToDb(o){return 20*(Math.log(o)/Math.LN10)}function intervalToFrequencyRatio(o){return Math.pow(2,o/12)}let A4=440;function getA4(){return A4}function setA4(o){A4=o}function ftom(o){return Math.round(ftomf(o))}function ftomf(o){return 69+12*Math.log2(o/A4)}function mtof(o){return A4*Math.pow(2,(o-69)/12)}class TimeBaseClass extends Tone{constructor(e,s,a){super(),this.defaultUnits="s",this._val=s,this._units=a,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,s)=>{const a=parseInt(e,10),c=s==="."?1.5:1;return a===1?this._beatsToUnits(this._getTimeSignature())*c:this._beatsToUnits(4/a)*c},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{const s=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(s)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,s,a)=>{let c=0;return e&&e!=="0"&&(c+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c+=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c+=this._beatsToUnits(parseFloat(a)/4)),c},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass&&this.fromType(this._val),isUndef(this._val))return this._noArg();if(isString(this._val)&&isUndef(this._units)){for(const e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(isObject(this._val)){let e=0;for(const s in this._val)if(isDefined(this._val[s])){const a=this._val[s];e+=new this.constructor(this.context,s).valueOf()*a}return e}if(isDefined(this._units)){const e=this._expressions[this._units],s=this._val.toString().trim().match(e.regexp);return s?e.method.apply(this,s.slice(1)):e.method.call(this,this._val)}else return isString(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case"s":this._val=e.toSeconds();break;case"i":this._val=e.toTicks();break;case"hz":this._val=e.toFrequency();break;case"midi":this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass extends TimeBaseClass{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:e=>{const s=new TimeClass(this.context,e).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(s))},regexp:/^@(.+)/}})}quantize(e,s=1){const a=new this.constructor(this.context,e).valueOf(),c=this.valueOf(),b=Math.round(c/a)*a-c;return c+b*s}toNotation(){const e=this.toSeconds(),s=["1m"];for(let d=1;d<9;d++){const _=Math.pow(2,d);s.push(_+"n."),s.push(_+"n"),s.push(_+"t")}s.push("0");let a=s[0],c=new TimeClass(this.context,s[0]).toSeconds();return s.forEach(d=>{const _=new TimeClass(this.context,d).toSeconds();Math.abs(_-e)3&&(c=parseFloat(parseFloat(d).toFixed(3))),[a,s,c].join(":")}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.round(s*this._getPPQ())}toSeconds(){return this.valueOf()}toMidi(){return ftom(this.toFrequency())}_now(){return this.context.now()}}class FrequencyClass extends TimeClass{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4()}static set A4(e){setA4(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(e){return this.defaultUnits==="midi"?e:FrequencyClass.mtof(e)}},note:{regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method(e,s){const c=noteToScaleIndex[e.toLowerCase()]+(parseInt(s,10)+1)*12;return this.defaultUnits==="midi"?c:FrequencyClass.mtof(c)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,s,a){let c=1;return e&&e!=="0"&&(c*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c*=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c*=this._beatsToUnits(parseFloat(a)/4)),c}}})}transpose(e){return new FrequencyClass(this.context,this.valueOf()*intervalToFrequencyRatio(e))}harmonize(e){return e.map(s=>this.transpose(s))}toMidi(){return ftom(this.valueOf())}toNote(){const e=this.toFrequency(),s=Math.log2(e/FrequencyClass.A4);let a=Math.round(12*s)+57;const c=Math.floor(a/12);return c<0&&(a+=-12*c),scaleIndexToNote[a%12]+c.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.floor(s*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return mtof(e)}static ftom(e){return ftom(e)}}const noteToScaleIndex={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},scaleIndexToNote=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];class TransportTimeClass extends TimeClass{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}class ToneWithContext extends Tone{constructor(){super();const e=optionsFromArguments(ToneWithContext.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=e.context}static getDefaults(){return{context:getContext()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return new TimeClass(this.context,e).toSeconds()}toFrequency(e){return new FrequencyClass(this.context,e).toFrequency()}toTicks(e){return new TransportTimeClass(this.context,e).toTicks()}_getPartialProperties(e){const s=this.get();return Object.keys(s).forEach(a=>{isUndef(e[a])&&delete s[a]}),s}get(){const e=getDefaultsFromInstance(this);return Object.keys(e).forEach(s=>{if(Reflect.has(this,s)){const a=this[s];isDefined(a)&&isDefined(a.value)&&isDefined(a.setValueAtTime)?e[s]=a.value:a instanceof ToneWithContext?e[s]=a._getPartialProperties(e[s]):isArray(a)||isNumber(a)||isString(a)||isBoolean(a)?e[s]=a:delete e[s]}}),e}set(e){return Object.keys(e).forEach(s=>{Reflect.has(this,s)&&isDefined(this[s])&&(this[s]&&isDefined(this[s].value)&&isDefined(this[s].setValueAtTime)?this[s].value!==e[s]&&(this[s].value=e[s]):this[s]instanceof ToneWithContext?this[s].set(e[s]):this[s]=e[s])}),this}}class StateTimeline extends Timeline{constructor(e="stopped"){super(),this.name="StateTimeline",this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){const s=this.get(e);return s!==null?s.state:this._initial}setStateAtTime(e,s,a){return assertRange(s,0),this.add(Object.assign({},a,{state:e,time:s})),this}getLastState(e,s){const a=this._search(s);for(let c=a;c>=0;c--){const d=this._timeline[c];if(d.state===e)return d}}getNextState(e,s){const a=this._search(s);if(a!==-1)for(let c=a;c0,"timeConstant must be a number greater than 0");const d=this.toSeconds(s);return this._assertRange(c),assert(isFinite(c)&&isFinite(d),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(s)}`),this._events.add({constant:a,time:d,type:"setTargetAtTime",value:c}),this.log(this.units,"setTargetAtTime",e,d,a),this._param.setTargetAtTime(c,d,a),this}setValueCurveAtTime(e,s,a,c=1){a=this.toSeconds(a),s=this.toSeconds(s);const d=this._fromType(e[0])*c;this.setValueAtTime(this._toType(d),s);const _=a/(e.length-1);for(let b=1;b{c.type==="cancelScheduledValues"?e.cancelScheduledValues(c.time):c.type==="setTargetAtTime"?e.setTargetAtTime(c.value,c.time,c.constant):e[c.type](c.value,c.time)}),this}setParam(e){assert(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const s=this.input;return s.disconnect(this._param),this.apply(e),this._param=e,s.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,s,a,c,d){return a+(s-a)*Math.exp(-(d-e)/c)}_linearInterpolate(e,s,a,c,d){return s+(c-s)*((d-e)/(a-e))}_exponentialInterpolate(e,s,a,c,d){return s*Math.pow(c/s,(d-e)/(a-e))}}class ToneAudioNode extends ToneWithContext{constructor(){super(...arguments),this.name="ToneAudioNode",this._internalChannels=[]}get numberOfInputs(){return isDefined(this.input)?isAudioParam(this.input)||this.input instanceof Param?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined(this.output)?this.output.numberOfOutputs:0}_isAudioNode(e){return isDefined(e)&&(e instanceof ToneAudioNode||isAudioNode(e))}_getInternalNodes(){const e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(a=>{a.channelCount=e.channelCount,a.channelCountMode=e.channelCountMode,a.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){const e=this._getInternalNodes();assert(e.length>0,"ToneAudioNode does not have any internal nodes");const s=e[0];return{channelCount:s.channelCount,channelCountMode:s.channelCountMode,channelInterpretation:s.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelInterpretation:e}))}connect(e,s=0,a=0){return connect(this,e,s,a),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(e,s=0,a=0){return disconnect(this,e,s,a),this}chain(...e){return connectSeries(this,...e),this}fan(...e){return e.forEach(s=>this.connect(s)),this}dispose(){return super.dispose(),isDefined(this.input)&&(this.input instanceof ToneAudioNode?this.input.dispose():isAudioNode(this.input)&&this.input.disconnect()),isDefined(this.output)&&(this.output instanceof ToneAudioNode?this.output.dispose():isAudioNode(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries(...o){const e=o.shift();o.reduce((s,a)=>(s instanceof ToneAudioNode?s.connect(a):isAudioNode(s)&&connect(s,a),a),e)}function connect(o,e,s=0,a=0){for(assert(isDefined(o),"Cannot connect from undefined node"),assert(isDefined(e),"Cannot connect to undefined node"),(e instanceof ToneAudioNode||isAudioNode(e))&&assert(e.numberOfInputs>0,"Cannot connect to node with no inputs"),assert(o.numberOfOutputs>0,"Cannot connect from node with no outputs");e instanceof ToneAudioNode||e instanceof Param;)isDefined(e.input)&&(e=e.input);for(;o instanceof ToneAudioNode;)isDefined(o.output)&&(o=o.output);isAudioParam(e)?o.connect(e,s):o.connect(e,s,a)}function disconnect(o,e,s=0,a=0){if(isDefined(e))for(;e instanceof ToneAudioNode;)e=e.input;for(;!isAudioNode(o);)isDefined(o.output)&&(o=o.output);isAudioParam(e)?o.disconnect(e,s):isAudioNode(e)?o.disconnect(e,s,a):o.disconnect()}class Gain extends ToneAudioNode{constructor(){super(optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const e=optionsFromArguments(Gain.getDefaults(),arguments,["gain","units"]);this.gain=new Param({context:this.context,convert:e.convert,param:this._gainNode.gain,units:e.units,value:e.gain,minValue:e.minValue,maxValue:e.maxValue}),readOnly(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource extends ToneAudioNode{constructor(e){super(e),this.onended=noOp,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(s){const a=this.toSeconds(s);return this._startTime!==-1&&a>=this._startTime&&(this._stopTime===-1||a<=this._stopTime)?"started":"stopped"},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp})}_startGain(e,s=1){assert(this._startTime===-1,"Source cannot be started more than once");const a=this.toSeconds(this._fadeIn);return this._startTime=e+a,this._startTime=Math.max(this._startTime,this.context.currentTime),a>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(s,e+a):this._gainNode.gain.exponentialApproachValueAtTime(s,e,a)):this._gainNode.gain.setValueAtTime(s,e),this}stop(e){return this.log("stop",e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){assert(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const s=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+s,this._stopTime=Math.max(this._stopTime,this.context.currentTime),s>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,s,e):this._gainNode.gain.targetRampTo(0,s,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const a=this._curve==="exponential"?s*2:0;this._stopSource(this.now()+a),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp&&(this.onended(this),this.onended=noOp,!this.context.isOffline)){const e=()=>this.dispose();typeof window.requestIdleCallback!="undefined"?window.requestIdleCallback(e):setTimeout(e,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.disconnect(),this}}class ToneConstantSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const e=optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"]);connect(this._source,this._gainNode),this.offset=new Param({context:this.context,convert:e.convert,param:this._source.offset,units:e.units,value:e.offset,minValue:e.minValue,maxValue:e.maxValue})}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{convert:!0,offset:1,units:"number"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._source.start(s),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal extends ToneAudioNode{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const e=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource({context:this.context,convert:e.convert,offset:e.value,units:e.units,minValue:e.minValue,maxValue:e.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,units:"number",value:0})}connect(e,s=0,a=0){return connectSignal(this,e,s,a),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,s){return this._param.setValueAtTime(e,s),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,s){return this._param.linearRampToValueAtTime(e,s),this}exponentialRampToValueAtTime(e,s){return this._param.exponentialRampToValueAtTime(e,s),this}exponentialRampTo(e,s,a){return this._param.exponentialRampTo(e,s,a),this}linearRampTo(e,s,a){return this._param.linearRampTo(e,s,a),this}targetRampTo(e,s,a){return this._param.targetRampTo(e,s,a),this}exponentialApproachValueAtTime(e,s,a){return this._param.exponentialApproachValueAtTime(e,s,a),this}setTargetAtTime(e,s,a){return this._param.setTargetAtTime(e,s,a),this}setValueCurveAtTime(e,s,a,c){return this._param.setValueCurveAtTime(e,s,a,c),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,s,a){return this._param.rampTo(e,s,a),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}}function connectSignal(o,e,s,a){(e instanceof Param||isAudioParam(e)||e instanceof Signal&&e.override)&&(e.cancelScheduledValues(0),e.setValueAtTime(0,0),e instanceof Signal&&(e.overridden=!0)),connect(o,e,s,a)}class TickParam extends Param{constructor(){super(optionsFromArguments(TickParam.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline(1/0),this._multiplier=1;const e=optionsFromArguments(TickParam.getDefaults(),arguments,["value"]);this._multiplier=e.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(e.value)}),this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Param.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(e,s,a){s=this.toSeconds(s),this.setRampPoint(s);const c=this._fromType(e),d=this._events.get(s),_=Math.round(Math.max(1/a,1));for(let b=0;b<=_;b++){const k=a*b+s,$=this._exponentialApproach(d.time,d.value,c,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}setValueAtTime(e,s){const a=this.toSeconds(s);super.setValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}linearRampToValueAtTime(e,s){const a=this.toSeconds(s);super.linearRampToValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}exponentialRampToValueAtTime(e,s){s=this.toSeconds(s);const a=this._fromType(e),c=this._events.get(s),d=Math.round(Math.max((s-c.time)*10,1)),_=(s-c.time)/d;for(let b=0;b<=d;b++){const k=_*b+c.time,$=this._exponentialInterpolate(c.time,c.value,s,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}_getTicksUntilEvent(e,s){if(e===null)e={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef(e.ticks)){const _=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(_,e.time)}const a=this._fromType(this.getValueAtTime(e.time));let c=this._fromType(this.getValueAtTime(s));const d=this._events.get(s);return d&&d.time===s&&d.type==="setValueAtTime"&&(c=this._fromType(this.getValueAtTime(s-this.sampleTime))),.5*(s-e.time)*(a+c)+e.ticks}getTicksAtTime(e){const s=this.toSeconds(e),a=this._events.get(s);return Math.max(this._getTicksUntilEvent(a,s),0)}getDurationOfTicks(e,s){const a=this.toSeconds(s),c=this.getTicksAtTime(s);return this.getTimeOfTick(c+e)-a}getTimeOfTick(e){const s=this._events.get(e,"ticks"),a=this._events.getAfter(e,"ticks");if(s&&s.ticks===e)return s.time;if(s&&a&&a.type==="linearRampToValueAtTime"&&s.value!==a.value){const c=this._fromType(this.getValueAtTime(s.time)),_=(this._fromType(this.getValueAtTime(a.time))-c)/(a.time-s.time),b=Math.sqrt(Math.pow(c,2)-2*_*(s.ticks-e)),k=(-c+b)/_,$=(-c-b)/_;return(k>0?k:$)+s.time}else return s?s.value===0?1/0:s.time+(e-s.ticks)/s.value:e/this._initialValue}ticksToTime(e,s){return this.getDurationOfTicks(e,s)}timeToTicks(e,s){const a=this.toSeconds(s),c=this.toSeconds(e),d=this.getTicksAtTime(a);return this.getTicksAtTime(a+c)-d}_fromType(e){return this.units==="bpm"&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units==="bpm"&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){const s=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(s,0)}}class TickSignal extends Signal{constructor(){super(optionsFromArguments(TickSignal.getDefaults(),arguments,["value"])),this.name="TickSignal";const e=optionsFromArguments(TickSignal.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam({context:this.context,convert:e.convert,multiplier:e.multiplier,param:this._constantSource.offset,units:e.units,value:e.value})}static getDefaults(){return Object.assign(Signal.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(e,s){return this._param.ticksToTime(e,s)}timeToTicks(e,s){return this._param.timeToTicks(e,s)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,s){return this._param.getDurationOfTicks(e,s)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource extends ToneWithContext{constructor(){super(optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline,this._tickOffset=new Timeline;const e=optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal({context:this.context,units:e.units,value:e.frequency}),readOnly(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,s){const a=this.toSeconds(e);return this._state.getValueAtTime(a)!=="started"&&(this._state.setStateAtTime("started",a),isDefined(s)&&this.setTicksAtTime(s,a)),this}stop(e){const s=this.toSeconds(e);if(this._state.getValueAtTime(s)==="stopped"){const a=this._state.get(s);a&&a.time>0&&(this._tickOffset.cancel(a.time),this._state.cancel(a.time))}return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this.setTicksAtTime(0,s),this}pause(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)==="started"&&this._state.setStateAtTime("paused",s),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this}getTicksAtTime(e){const s=this.toSeconds(e),a=this._state.getLastState("stopped",s),c={state:"paused",time:s};this._state.add(c);let d=a,_=0;return this._state.forEachBetween(a.time,s+this.sampleTime,b=>{let k=d.time;const $=this._tickOffset.get(b.time);$&&$.time>=d.time&&(_=$.ticks,k=$.time),d.state==="started"&&b.state!=="started"&&(_+=this.frequency.getTicksAtTime(b.time)-this.frequency.getTicksAtTime(k)),d=b}),this._state.remove(c),_}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){const s=this.now(),a=this.frequency.timeToTicks(e,s);this.setTicksAtTime(a,s)}getSecondsAtTime(e){e=this.toSeconds(e);const s=this._state.getLastState("stopped",e),a={state:"paused",time:e};this._state.add(a);let c=s,d=0;return this._state.forEachBetween(s.time,e+this.sampleTime,_=>{let b=c.time;const k=this._tickOffset.get(_.time);k&&k.time>=c.time&&(d=k.seconds,b=k.time),c.state==="started"&&_.state!=="started"&&(d+=_.time-b),c=_}),this._state.remove(a),d}setTicksAtTime(e,s){return s=this.toSeconds(s),this._tickOffset.cancel(s),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,s),ticks:e,time:s}),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,s=this.now()){const a=this._tickOffset.get(s),c=this._state.get(s),d=Math.max(a.time,c.time),_=this.frequency.getTicksAtTime(d)+e-a.ticks;return this.frequency.getTimeOfTick(_)}forEachTickBetween(e,s,a){let c=this._state.get(e);this._state.forEachBetween(e,s,_=>{c&&c.state==="started"&&_.state!=="started"&&this.forEachTickBetween(Math.max(c.time,e),_.time-this.sampleTime,a),c=_});let d=null;if(c&&c.state==="started"){const _=Math.max(c.time,e),b=this.frequency.getTicksAtTime(_),k=this.frequency.getTicksAtTime(c.time),$=b-k;let j=Math.ceil($)-$;j=EQ(j,1)?0:j;let _e=this.frequency.getTimeOfTick(b+j);for(;_e{switch(a.state){case"started":const c=this._tickSource.getTicksAtTime(a.time);this.emit("start",a.time,c);break;case"stopped":a.time!==0&&this.emit("stop",a.time);break;case"paused":this.emit("pause",a.time);break}}),this._tickSource.forEachTickBetween(e,s,(a,c)=>{this.callback(a,c)}))}getStateAtTime(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter.mixin(Clock);class ToneAudioBuffers extends Tone{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const e=optionsFromArguments(ToneAudioBuffers.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=e.baseUrl,Object.keys(e.urls).forEach(s=>{this._loadingCount++;const a=e.urls[s];this.add(s,a,this._bufferLoaded.bind(this,e.onload),e.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp,onload:noOp,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return assert(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,s])=>s.loaded)}add(e,s,a=noOp,c=noOp){return isString(s)?this._buffers.set(e.toString(),new ToneAudioBuffer(this.baseUrl+s,a,c)):this._buffers.set(e.toString(),new ToneAudioBuffer(s,a,c)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}}class TicksClass extends TransportTimeClass{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}class Draw extends ToneWithContext{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,s){return this._events.add({callback:e,time:this.toSeconds(s)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){const e=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=e;){const s=this._events.shift();s&&e-s.time<=this.expiration&&s.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit(o=>{o.draw=new Draw({context:o})});onContextClose(o=>{o.draw.dispose()});class IntervalTimeline extends Tone{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(e){assert(isDefined(e.time),"Events must have a time property"),assert(isDefined(e.duration),"Events must have a duration parameter"),e.time=e.time.valueOf();let s=new IntervalNode(e.time,e.time+e.duration,e);for(this._root===null?this._root=s:this._root.insert(s),this._length++;s!==null;)s.updateHeight(),s.updateMax(),this._rebalance(s),s=s.parent;return this}remove(e){if(this._root!==null){const s=[];this._root.search(e.time,s);for(const a of s)if(a.event===e){this._removeNode(a),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,s=>this.remove(s)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,s){e.parent!==null?(e.isLeftChild()?e.parent.left=s:e.parent.right=s,this._rebalance(e.parent)):this._setRoot(s)}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{const s=e.getBalance();let a,c=null;if(s>0)if(e.left.right===null)a=e.left,a.right=e.right,c=a;else{for(a=e.left.right;a.right!==null;)a=a.right;a.parent&&(a.parent.right=a.left,c=a.parent,a.left=e.left,a.right=e.right)}else if(e.right.left===null)a=e.right,a.left=e.left,c=a;else{for(a=e.right.left;a.left!==null;)a=a.left;a.parent&&(a.parent.left=a.right,c=a.parent,a.left=e.left,a.right=e.right)}e.parent!==null?e.isLeftChild()?e.parent.left=a:e.parent.right=a:this._setRoot(a),c&&this._rebalance(c)}e.dispose()}_rotateLeft(e){const s=e.parent,a=e.isLeftChild(),c=e.right;c&&(e.right=c.left,c.left=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rotateRight(e){const s=e.parent,a=e.isLeftChild(),c=e.left;c&&(e.left=c.right,c.right=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rebalance(e){const s=e.getBalance();s>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):s<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){const s=[];if(this._root.search(e,s),s.length>0){let a=s[0];for(let c=1;ca.low&&(a=s[c]);return a.event}}return null}forEach(e){if(this._root!==null){const s=[];this._root.traverse(a=>s.push(a)),s.forEach(a=>{a.event&&e(a.event)})}return this}forEachAtTime(e,s){if(this._root!==null){const a=[];this._root.search(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}forEachFrom(e,s){if(this._root!==null){const a=[];this._root.searchAfter(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}}class IntervalNode{constructor(e,s,a){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=a,this.low=e,this.high=s,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,s){e>this.max||(this.left!==null&&this.left.search(e,s),this.low<=e&&this.high>e&&s.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,s))}searchAfter(e,s){this.low>=e&&(s.push(this),this.left!==null&&this.left.searchAfter(e,s)),this.right!==null&&this.right.searchAfter(e,s)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left!==null?e=this.left.height+1:this.right!==null&&(e=-(this.right.height+1)),e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}class Volume extends ToneAudioNode{constructor(){super(optionsFromArguments(Volume.getDefaults(),arguments,["volume"])),this.name="Volume";const e=optionsFromArguments(Volume.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain({context:this.context,gain:e.volume,units:"decibels"}),this.volume=this.output.gain,readOnly(this,"volume"),this._unmutedVolume=e.volume,this.mute=e.mute}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}class Destination extends ToneAudioNode{constructor(){super(optionsFromArguments(Destination.getDefaults(),arguments)),this.name="Destination",this.input=new Volume({context:this.context}),this.output=new Gain({context:this.context}),this.volume=this.input.volume;const e=optionsFromArguments(Destination.getDefaults(),arguments);connectSeries(this.input,this.output,this.context.rawContext.destination),this.mute=e.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),connectSeries(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}}onContextInit(o=>{o.destination=new Destination({context:o})});onContextClose(o=>{o.destination.dispose()});class TimelineValue extends Tone{constructor(e){super(),this.name="TimelineValue",this._timeline=new Timeline({memory:10}),this._initialValue=e}set(e,s){return this._timeline.add({value:e,time:s}),this}get(e){const s=this._timeline.get(e);return s?s.value:this._initialValue}}class TransportEvent{constructor(e,s){this.id=TransportEvent._eventId++;const a=Object.assign(TransportEvent.getDefaults(),s);this.transport=e,this.callback=a.callback,this._once=a.once,this.time=a.time}static getDefaults(){return{callback:noOp,once:!1,time:0}}invoke(e){this.callback&&(this.callback(e),this._once&&this.transport.clear(this.id))}dispose(){return this.callback=void 0,this}}TransportEvent._eventId=0;class TransportRepeatEvent extends TransportEvent{constructor(e,s){super(e,s),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const a=Object.assign(TransportRepeatEvent.getDefaults(),s);this.duration=new TicksClass(e.context,a.duration).valueOf(),this._interval=new TicksClass(e.context,a.interval).valueOf(),this._nextTick=a.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvents(e){const s=this.transport.getTicksAtTime(e);s>=this.time&&s>=this._nextTick&&this._nextTick+this._intervalthis.time&&(this._nextTick=this.time+Math.ceil((s-this.time)/this._interval)*this._interval),this._currentId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()),this._nextTick+=this._interval,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds())}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this}}class Transport extends ToneWithContext{constructor(){super(optionsFromArguments(Transport.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline,this._repeatedEvents=new IntervalTimeline,this._syncedSignals=[],this._swingAmount=0;const e=optionsFromArguments(Transport.getDefaults(),arguments);this._ppq=e.ppq,this._clock=new Clock({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=e.ppq,this.bpm.setValueAtTime(e.bpm,0),readOnly(this,"bpm"),this._timeSignature=e.timeSignature,this._swingTicks=e.ppq/2}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(e,s){if(this._loop.get(e)&&s>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),s=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._swingAmount>0&&s%this._ppq!==0&&s%(this._swingTicks*2)!==0){const a=s%(this._swingTicks*2)/(this._swingTicks*2),c=Math.sin(a*Math.PI)*this._swingAmount;e+=new TicksClass(this.context,this._swingTicks*2/3).toSeconds()*c}this._timeline.forEachAtTime(s,a=>a.invoke(e))}schedule(e,s){const a=new TransportEvent(this,{callback:e,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}scheduleRepeat(e,s,a,c=1/0){const d=new TransportRepeatEvent(this,{callback:e,duration:new TimeClass(this.context,c).toTicks(),interval:new TimeClass(this.context,s).toTicks(),time:new TransportTimeClass(this.context,a).toTicks()});return this._addEvent(d,this._repeatedEvents)}scheduleOnce(e,s){const a=new TransportEvent(this,{callback:e,once:!0,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){const s=this._scheduledEvents[e.toString()];s.timeline.remove(s.event),s.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,s){return this._scheduledEvents[e.id.toString()]={event:e,timeline:s},s.add(e),e.id}cancel(e=0){const s=this.toTicks(e);return this._timeline.forEachFrom(s,a=>this.clear(a.id)),this._repeatedEvents.forEachFrom(s,a=>this.clear(a.id)),this}_bindClockEvents(){this._clock.on("start",(e,s)=>{s=new TicksClass(this.context,s).toSeconds(),this.emit("start",e,s)}),this._clock.on("stop",e=>{this.emit("stop",e)}),this._clock.on("pause",e=>{this.emit("pause",e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,s){let a;return isDefined(s)&&(a=this.toTicks(s)),this._clock.start(e,a),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!=="started"?this.start(e):this.stop(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){isArray(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new TimeClass(this.context,this._loopStart,"i").toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new TimeClass(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new TicksClass(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){const e=this.now(),s=this._clock.getTicksAtTime(e);return new TicksClass(this.context,s).toBarsBeatsSixteenths()}set position(e){const s=this.toTicks(e);this.ticks=s}get seconds(){return this._clock.seconds}set seconds(e){const s=this.now(),a=this._clock.frequency.timeToTicks(e,s);this.ticks=a}get progress(){if(this.loop){const e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){const s=this.now();if(this.state==="started"){const a=this._clock.getTicksAtTime(s),c=this._clock.frequency.getDurationOfTicks(Math.ceil(a)-a,s),d=s+c;this.emit("stop",d),this._clock.setTicksAtTime(e,d),this.emit("start",d,this._clock.getSecondsAtTime(d))}else this._clock.setTicksAtTime(e,s)}}getTicksAtTime(e){return Math.round(this._clock.getTicksAtTime(e))}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!=="started")return 0;{const s=this.now(),a=this.getTicksAtTime(s),c=e-a%e;return this._clock.nextTickTime(c,s)}}syncSignal(e,s){if(!s){const c=this.now();if(e.getValueAtTime(c)!==0){const d=this.bpm.getValueAtTime(c),_=1/(60/d/this.PPQ);s=e.getValueAtTime(c)/_}else s=0}const a=new Gain(s);return this.bpm.connect(a),a.connect(e._param),this._syncedSignals.push({initial:e.value,ratio:a,signal:e}),e.value=0,this}unsyncSignal(e){for(let s=this._syncedSignals.length-1;s>=0;s--){const a=this._syncedSignals[s];a.signal===e&&(a.ratio.dispose(),a.signal.value=a.initial,this._syncedSignals.splice(s,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}}Emitter.mixin(Transport);onContextInit(o=>{o.transport=new Transport({context:o})});onContextClose(o=>{o.transport.dispose()});class Source extends ToneAudioNode{constructor(e){super(e),this.input=void 0,this._state=new StateTimeline("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp,this._syncedStop=noOp,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,readOnly(this,"volume"),this.onstop=e.onstop}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,onstop:noOp,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,s,a){let c=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(c=this._clampToCurrentTime(c),!this._synced&&this._state.getValueAtTime(c)==="started")assert(GT(c,this._state.get(c).time),"Start time must be strictly greater than previous start time"),this._state.cancel(c),this._state.setStateAtTime("started",c),this.log("restart",c),this.restart(c,s,a);else if(this.log("start",c),this._state.setStateAtTime("started",c),this._synced){const d=this._state.get(c);d&&(d.offset=this.toSeconds(defaultArg(s,0)),d.duration=a?this.toSeconds(a):void 0);const _=this.context.transport.schedule(b=>{this._start(b,s,a)},c);this._scheduled.push(_),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>c&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning(this.context),this._start(c,s,a);return this}stop(e){let s=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(s=this._clampToCurrentTime(s),this._state.getValueAtTime(s)==="started"||isDefined(this._state.getNextState("started",s))){if(this.log("stop",s),!this._synced)this._stop(s);else{const a=this.context.transport.schedule(this._stop.bind(this),s);this._scheduled.push(a)}this._state.cancel(s),this._state.setStateAtTime("stopped",s)}return this}restart(e,s,a){return e=this.toSeconds(e),this._state.getValueAtTime(e)==="started"&&(this._state.cancel(e),this._restart(e,s,a)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,s)=>{if(s>0){const a=this._state.get(s);if(a&&a.state==="started"&&a.time!==s){const c=s-this.toSeconds(a.time);let d;a.duration&&(d=this.toSeconds(a.duration)-c),this._start(e,this.toSeconds(a.offset)+c,d)}}},this._syncedStop=e=>{const s=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(s)==="started"&&this._stop(e)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const e=optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"]);connect(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param({context:this.context,param:this._source.playbackRate,units:"positive",value:e.playbackRate}),this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this._buffer=new ToneAudioBuffer(e.url,e.onload,e.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{url:new ToneAudioBuffer,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,s,a,c=1){assert(this.buffer.loaded,"buffer is either not set or not loaded");const d=this.toSeconds(e);this._startGain(d,c),this.loop?s=defaultArg(s,this.loopStart):s=defaultArg(s,0);let _=Math.max(this.toSeconds(s),0);if(this.loop){const b=this.toSeconds(this.loopEnd)||this.buffer.duration,k=this.toSeconds(this.loopStart),$=b-k;GTE(_,b)&&(_=(_-k)%$+k),EQ(_,this.buffer.duration)&&(_=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT(_,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(d,_)),isDefined(a)){let b=this.toSeconds(a);b=Math.max(b,0),this.stop(d+b)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}function generateWaveform(o,e){return __awaiter(this,void 0,void 0,function*(){const s=e/o.context.sampleRate,a=new OfflineContext(1,s,o.context.sampleRate);return new o.constructor(Object.assign(o.get(),{frequency:2/s,detune:0,context:a})).toDestination().start(0),(yield a.render()).getChannelData(0)})}class ToneOscillatorNode extends OneShotSource{constructor(){super(optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"])),this.name="ToneOscillatorNode",this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator];const e=optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"]);connect(this._oscillator,this._gainNode),this.type=e.type,this.frequency=new Param({context:this.context,param:this._oscillator.frequency,units:"frequency",value:e.frequency}),this.detune=new Param({context:this.context,param:this._oscillator.detune,units:"cents",value:e.detune}),readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{detune:0,frequency:440,type:"sine"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._oscillator.start(s),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}}class Oscillator extends Source{constructor(){super(optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"])),this.name="Oscillator",this._oscillator=null;const e=optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),readOnly(this,"frequency"),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly(this,"detune"),this._partials=e.partials,this._partialCount=e.partialCount,this._type=e.type,e.partialCount&&e.type!=="custom"&&(this._type=this.baseType+e.partialCount.toString()),this.phase=e.phase}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:"sine"})}_start(e){const s=this.toSeconds(e),a=new ToneOscillatorNode({context:this.context,onended:()=>this.onstop(this)});this._oscillator=a,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(s)}_stop(e){const s=this.toSeconds(e);this._oscillator&&this._oscillator.stop(s)}_restart(e){const s=this.toSeconds(e);return this.log("restart",s),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(s),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator._periodicWaveCache.find(s=>s.phase===this._phase&&deepEquals(s.partials,this._partials));{const e=Oscillator._periodicWaveCache.find(s=>s.type===this._type&&s.phase===this._phase);return this._partialCount=e?e.partialCount:this._partialCount,e}}get type(){return this._type}set type(e){this._type=e;const s=["sine","square","sawtooth","triangle"].indexOf(e)!==-1;if(this._phase===0&&s)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=e);else{const a=this._getCachedPeriodicWave();if(isDefined(a)){const{partials:c,wave:d}=a;this._wave=d,this._partials=c,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[c,d]=this._getRealImaginary(e,this._phase),_=this.context.createPeriodicWave(c,d);this._wave=_,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator._periodicWaveCache.push({imag:d,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:c,type:this._type,wave:this._wave}),Oscillator._periodicWaveCache.length>100&&Oscillator._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(e){this.partialCount&&this._type!=="custom"&&e!=="custom"?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){assertRange(e,0);let s=this._type;const a=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(a&&(s=a[1]),this._type!=="custom")e===0?this.type=s:this.type=s+e.toString();else{const c=new Float32Array(e);this._partials.forEach((d,_)=>c[_]=d),this._partials=Array.from(c),this.type=this._type}}_getRealImaginary(e,s){let c=2048;const d=new Float32Array(c),_=new Float32Array(c);let b=1;if(e==="custom"){if(b=this._partials.length+1,this._partialCount=this._partials.length,c=b,this._partials.length===0)return[d,_]}else{const k=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);k?(b=parseInt(k[2],10)+1,this._partialCount=parseInt(k[2],10),e=k[1],b=Math.max(b,2),c=b):this._partialCount=0,this._partials=[]}for(let k=1;k>1&1?-1:1):j=0,this._partials[k-1]=j;break;case"custom":j=this._partials[k-1];break;default:throw new TypeError("Oscillator: invalid type: "+e)}j!==0?(d[k]=-j*Math.sin(s*k),_[k]=j*Math.cos(s*k)):(d[k]=0,_[k]=0)}return[d,_]}_inverseFFT(e,s,a){let c=0;const d=e.length;for(let _=0;_a.includes(e));assert(s,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class AudioToGain extends SignalOperator{constructor(){super(...arguments),this.name="AudioToGain",this._norm=new WaveShaper({context:this.context,mapping:e=>(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply extends Signal{constructor(){super(Object.assign(optionsFromArguments(Multiply.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const e=optionsFromArguments(Multiply.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain({context:this.context,minValue:e.minValue,maxValue:e.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator extends Source{constructor(){super(optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain({context:this.context}),this._modulationNode=new Gain({context:this.context});const e=optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator extends Source{constructor(){super(optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain({context:this.context,gain:0});const e=optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:0,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.detune=this._carrier.detune,this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.modulationIndex=new Multiply({context:this.context,units:"positive",value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator extends Source{constructor(){super(optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain({context:this.context,gain:0}),this._thresh=new WaveShaper({context:this.context,mapping:s=>s<=0?-1:1});const e=optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"]);this.width=new Signal({context:this.context,units:"audioRange",value:e.width}),this._triangle=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator extends Source{constructor(){super(optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const e=optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this._spread=e.spread,this._type=e.type,this._phase=e.phase,this._partials=e.partials,this._partialCount=e.partialCount,this.count=e.count,readOnly(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(e){e=this.toSeconds(e),this._forEach(s=>s.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(s=>s.stop(e))}_restart(e){this._forEach(s=>s.restart(e))}_forEach(e){for(let s=0;ss.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){const s=-e/2,a=e/(this._oscillators.length-1);this._forEach((c,d)=>c.detune.value=s+a*d)}}get count(){return this._oscillators.length}set count(e){if(assertRange(e,1),this._oscillators.length!==e){this._forEach(s=>s.dispose()),this._oscillators=[];for(let s=0;sthis.onstop(this):noOp});this.type==="custom"&&(a.partials=this._partials),this.frequency.connect(a.frequency),this.detune.connect(a.detune),a.detune.overridden=!1,a.connect(this.output),this._oscillators[s]=a}this.spread=this._spread,this.state==="started"&&this._forEach(s=>s.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((s,a)=>s.phase=this._phase+a/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(s=>s.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type="custom",this._forEach(s=>s.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(s=>s.partialCount=e),this._type=this._oscillators[0].type}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}}class PWMOscillator extends Source{constructor(){super(optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply({context:this.context,value:2});const e=optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator({context:this.context,frequency:e.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap={am:AMOscillator,fat:FatOscillator,fm:FMOscillator,oscillator:Oscillator,pulse:PulseOscillator,pwm:PWMOscillator};class OmniOscillator extends Source{constructor(){super(optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const e=optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly(this,["frequency","detune"]),this.set(e)}static getDefaults(){return Object.assign(Oscillator.getDefaults(),FMOscillator.getDefaults(),AMOscillator.getDefaults(),FatOscillator.getDefaults(),PulseOscillator.getDefaults(),PWMOscillator.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e="";return["am","fm","fat"].some(s=>this._sourceType===s)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):e==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,"type")&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;const s=OmniOscillatorSourceMap[e],a=this.now();if(this._oscillator){const c=this._oscillator;c.stop(a),this.context.setTimeout(()=>c.dispose(),this.blockTime)}this._oscillator=new s({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(a)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let s="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(s=this._oscillator.type),e==="fm"?this.type="fm"+s:e==="am"?this.type="am"+s:e==="fat"?this.type="fat"+s:e==="oscillator"?this.type=s:e==="pulse"?this.type="pulse":e==="pwm"&&(this.type="pwm")}_getOscType(e,s){return e instanceof OmniOscillatorSourceMap[s]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&e!=="pulse"&&e!=="pwm"&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(e=1024){return __awaiter(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}function range(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(d,o,e),s.set(this,d)}})}}function timeRange(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(this.toSeconds(d),o,e),s.set(this,d)}})}}class Player extends Source{constructor(){super(optionsFromArguments(Player.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const e=optionsFromArguments(Player.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer({onload:this._onload.bind(this,e.onload),onerror:e.onerror,reverse:e.reverse,url:e.url}),this.autostart=e.autostart,this._loop=e.loop,this._loopStart=e.loopStart,this._loopEnd=e.loopEnd,this._playbackRate=e.playbackRate,this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1,reverse:!1})}load(e){return __awaiter(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=noOp){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(e,s,a){return super.start(e,s,a),this}_start(e,s,a){this._loop?s=defaultArg(s,this._loopStart):s=defaultArg(s,0);const c=this.toSeconds(s),d=a;a=defaultArg(a,Math.max(this._buffer.duration-c,0));let _=this.toSeconds(a);_=_/this._playbackRate,e=this.toSeconds(e);const b=new ToneBufferSource({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+_),this._state.setStateAtTime("stopped",e+_,{implicitEnd:!0})),this._activeSources.add(b),this._loop&&isUndef(d)?b.start(e,c):b.start(e,c,_-this.toSeconds(this.fadeOut))}_stop(e){const s=this.toSeconds(e);this._activeSources.forEach(a=>a.stop(s))}restart(e,s,a){return super.restart(e,s,a),this}_restart(e,s,a){this._stop(e),this._start(e,s,a)}seek(e,s){const a=this.toSeconds(s);if(this._state.getValueAtTime(a)==="started"){const c=this.toSeconds(e);this._stop(a),this._start(a,c)}return this}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(s=>{s.loop=e}),e)){const s=this._state.getNextState("stopped",this.now());s&&this._state.cancel(s.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;const s=this.now(),a=this._state.getNextState("stopped",s);a&&a.implicitEnd&&(this._state.cancel(a.time),this._activeSources.forEach(c=>c.cancelStop())),this._activeSources.forEach(c=>{c.playbackRate.setValueAtTime(e,s)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}}__decorate([timeRange(0)],Player.prototype,"fadeIn",void 0);__decorate([timeRange(0)],Player.prototype,"fadeOut",void 0);class Envelope extends ToneAudioNode{constructor(){super(optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const e=optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve,this.decayCurve=e.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,s){if(isString(e))return e;{let a;for(a in EnvelopeCurves)if(EnvelopeCurves[a][s]===e)return a;return e}}_setCurve(e,s,a){if(isString(a)&&Reflect.has(EnvelopeCurves,a)){const c=EnvelopeCurves[a];isObject(c)?e!=="_decayCurve"&&(this[e]=c[s]):this[e]=c}else if(isArray(a)&&e!=="_decayCurve")this[e]=a;else throw new Error("Envelope: invalid curve: "+a)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(e){this._setCurve("_attackCurve","In",e)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(e){this._setCurve("_releaseCurve","Out",e)}get decayCurve(){return this._decayCurve}set decayCurve(e){assert(["linear","exponential"].some(s=>s===e),`Invalid envelope curve: ${e}`),this._decayCurve=e}triggerAttack(e,s=1){this.log("triggerAttack",e,s),e=this.toSeconds(e);let c=this.toSeconds(this.attack);const d=this.toSeconds(this.decay),_=this.getValueAtTime(e);if(_>0){const b=1/c;c=(1-_)/b}if(c0){const a=this.toSeconds(this.release);a{let e,s;const a=[];for(e=0;e<128;e++)a[e]=Math.sin(e/(128-1)*(Math.PI/2));const c=[],d=6.4;for(e=0;e<128-1;e++){s=e/(128-1);const et=Math.sin(s*(Math.PI*2)*d-Math.PI/2)+1;c[e]=et/10+s*.83}c[128-1]=1;const _=[],b=5;for(e=0;e<128;e++)_[e]=Math.ceil(e/(128-1)*b)/b;const k=[];for(e=0;e<128;e++)s=e/(128-1),k[e]=.5*(1-Math.cos(Math.PI*s));const $=[];for(e=0;e<128;e++){s=e/(128-1);const et=Math.pow(s,3)*4+.2,tt=Math.cos(et*Math.PI*2*s);$[e]=Math.abs(tt*(1-s))}function j(et){const tt=new Array(et.length);for(let nt=0;nt{const d=c[s],_=this.context.transport.schedule(b=>{c[s]=b,a.apply(this,c)},d);this._scheduledEvents.push(_)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease),this}triggerAttackRelease(e,s,a,c){const d=this.toSeconds(a),_=this.toSeconds(s);return this.triggerAttack(e,d,c),this.triggerRelease(d+_),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic extends Instrument{constructor(){super(optionsFromArguments(Monophonic.getDefaults(),arguments));const e=optionsFromArguments(Monophonic.getDefaults(),arguments);this.portamento=e.portamento,this.onsilence=e.onsilence}static getDefaults(){return Object.assign(Instrument.getDefaults(),{detune:0,onsilence:noOp,portamento:0})}triggerAttack(e,s,a=1){this.log("triggerAttack",e,s,a);const c=this.toSeconds(s);return this._triggerEnvelopeAttack(c,a),this.setNote(e,c),this}triggerRelease(e){this.log("triggerRelease",e);const s=this.toSeconds(e);return this._triggerEnvelopeRelease(s),this}setNote(e,s){const a=this.toSeconds(s),c=e instanceof FrequencyClass?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(a)>.05){const d=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(c,d,a)}else this.frequency.setValueAtTime(c,a);return this}}__decorate([timeRange(0)],Monophonic.prototype,"portamento",void 0);class AmplitudeEnvelope extends Envelope{constructor(){super(optionsFromArguments(AmplitudeEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth extends Monophonic{constructor(){super(optionsFromArguments(Synth.getDefaults(),arguments)),this.name="Synth";const e=optionsFromArguments(Synth.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign({context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)},e.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},e.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(e,s){if(this.envelope.triggerAttack(e,s),this.oscillator.start(e),this.envelope.sustain===0){const a=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+a+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class MembraneSynth extends Synth{constructor(){super(optionsFromArguments(MembraneSynth.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const e=optionsFromArguments(MembraneSynth.getDefaults(),arguments);this.pitchDecay=e.pitchDecay,this.octaves=e.octaves,readOnly(this,["oscillator","envelope"])}static getDefaults(){return deepMerge(Monophonic.getDefaults(),Synth.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(e,s){const a=this.toSeconds(s),c=this.toFrequency(e instanceof FrequencyClass?e.toFrequency():e),d=c*this.octaves;return this.oscillator.frequency.setValueAtTime(d,a),this.oscillator.frequency.exponentialRampToValueAtTime(c,a+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate([range(0)],MembraneSynth.prototype,"octaves",void 0);__decorate([timeRange(0)],MembraneSynth.prototype,"pitchDecay",void 0);const workletContext=new Set;function addToWorklet(o){workletContext.add(o)}function registerProcessor(o,e){const s=`registerProcessor("${o}", ${e})`;workletContext.add(s)}const toneAudioWorkletProcessor=` + */class Tone$1{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||theWindow&&this.toString()===theWindow.TONE_DEBUG_CLASS)&&log(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}}Tone$1.version=version;const EPSILON=1e-6;function GT(o,e){return o>e+EPSILON}function GTE(o,e){return GT(o,e)||EQ(o,e)}function LT(o,e){return o+EPSILONthis.memory){const s=this.length-this.memory;this._timeline.splice(0,s)}return this}remove(e){const s=this._timeline.indexOf(e);return s!==-1&&this._timeline.splice(s,1),this}get(e,s="time"){const a=this._search(e,s);return a!==-1?this._timeline[a]:null}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,s="time"){const a=this._search(e,s);return a+10&&this._timeline[s-1].time=0?this._timeline[a-1]:null}cancel(e){if(this._timeline.length>1){let s=this._search(e);if(s>=0)if(EQ(this._timeline[s].time,e)){for(let a=s;a>=0&&EQ(this._timeline[a].time,e);a--)s=a;this._timeline=this._timeline.slice(0,s)}else this._timeline=this._timeline.slice(0,s+1);else this._timeline=[]}else this._timeline.length===1&>E(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){const s=this._search(e);return s>=0&&(this._timeline=this._timeline.slice(s+1)),this}previousEvent(e){const s=this._timeline.indexOf(e);return s>0?this._timeline[s-1]:null}_search(e,s="time"){if(this._timeline.length===0)return-1;let a=0;const c=this._timeline.length;let d=c;if(c>0&&this._timeline[c-1][s]<=e)return c-1;for(;a=0&&this._timeline[a].time>=e;)a--;return this._iterate(s,a+1),this}forEachAtTime(e,s){const a=this._search(e);if(a!==-1&&EQ(this._timeline[a].time,e)){let c=a;for(let d=a;d>=0&&EQ(this._timeline[d].time,e);d--)c=d;this._iterate(d=>{s(d)},c,a)}return this}dispose(){return super.dispose(),this._timeline=[],this}}const notifyNewContext=[];function onContextInit(o){notifyNewContext.push(o)}function initializeContext(o){notifyNewContext.forEach(e=>e(o))}const notifyCloseContext=[];function onContextClose(o){notifyCloseContext.push(o)}function closeContext(o){notifyCloseContext.forEach(e=>e(o))}class Emitter extends Tone$1{constructor(){super(...arguments),this.name="Emitter"}on(e,s){return e.split(/\W+/).forEach(c=>{isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(c)||(this._events[c]=[]),this._events[c].push(s)}),this}once(e,s){const a=(...c)=>{s(...c),this.off(e,a)};return this.on(e,a),this}off(e,s){return e.split(/\W+/).forEach(c=>{if(isUndef(this._events)&&(this._events={}),this._events.hasOwnProperty(e))if(isUndef(s))this._events[e]=[];else{const d=this._events[e];for(let _=d.length-1;_>=0;_--)d[_]===s&&d.splice(_,1)}}),this}emit(e,...s){if(this._events&&this._events.hasOwnProperty(e)){const a=this._events[e].slice(0);for(let c=0,d=a.length;c{const a=Object.getOwnPropertyDescriptor(Emitter.prototype,s);Object.defineProperty(e.prototype,s,a)})}dispose(){return super.dispose(),this._events=void 0,this}}class BaseContext extends Emitter{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}}class Context extends BaseContext{constructor(){super(),this.name="Context",this._constants=new Map,this._timeouts=new Timeline,this._timeoutIds=0,this._initialized=!1,this.isOffline=!1,this._workletModules=new Map;const e=optionsFromArguments(Context.getDefaults(),arguments,["context"]);e.context?this._context=e.context:this._context=createAudioContext({latencyHint:e.latencyHint}),this._ticker=new Ticker(this.emit.bind(this,"tick"),e.clockSource,e.updateInterval),this.on("tick",this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit("statechange",this.state)},this._setLatencyHint(e.latencyHint),this.lookAhead=e.lookAhead}static getDefaults(){return{clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||(initializeContext(this),this._initialized=!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,s,a){return this._context.createBuffer(e,s,a)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,s){return this._context.createIIRFilter(e,s)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,s,a){return this._context.createPeriodicWave(e,s,a)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return assert(isAudioContext(this._context),"Not available if OfflineAudioContext"),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){assert(!this._initialized,"The listener cannot be set after initialization."),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){assert(!this._initialized,"The transport cannot be set after initialization."),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){assert(!this._initialized,"Draw cannot be set after initialization."),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){assert(!this._initialized,"The destination cannot be set after initialization."),this._destination=e}createAudioWorkletNode(e,s){return createAudioWorkletNode(this.rawContext,e,s)}addAudioWorkletModule(e,s){return __awaiter$4(this,void 0,void 0,function*(){assert(isDefined(this.rawContext.audioWorklet),"AudioWorkletNode is only available in a secure context (https or localhost)"),this._workletModules.has(s)||this._workletModules.set(s,this.rawContext.audioWorklet.addModule(e)),yield this._workletModules.get(s)})}workletsAreReady(){return __awaiter$4(this,void 0,void 0,function*(){const e=[];this._workletModules.forEach(s=>e.push(s)),yield Promise.all(e)})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get latencyHint(){return this._latencyHint}_setLatencyHint(e){let s=0;if(this._latencyHint=e,isString(e))switch(e){case"interactive":s=.1;break;case"playback":s=.5;break;case"balanced":s=.25;break}this.lookAhead=s,this.updateInterval=s/2}get rawContext(){return this._context}now(){return this._context.currentTime+this.lookAhead}immediate(){return this._context.currentTime}resume(){return isAudioContext(this._context)?this._context.resume():Promise.resolve()}close(){return __awaiter$4(this,void 0,void 0,function*(){isAudioContext(this._context)&&(yield this._context.close()),this._initialized&&closeContext(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{const s=this._context.createBuffer(1,128,this._context.sampleRate),a=s.getChannelData(0);for(let d=0;dthis._constants[e].disconnect()),this}_timeoutLoop(){const e=this.now();let s=this._timeouts.peek();for(;this._timeouts.length&&s&&s.time<=e;)s.callback(),this._timeouts.shift(),s=this._timeouts.peek()}setTimeout(e,s){this._timeoutIds++;const a=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:a+s}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(s=>{s.id===e&&this._timeouts.remove(s)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,s){const a=++this._timeoutIds,c=()=>{const d=this.now();this._timeouts.add({callback:()=>{e(),c()},id:a,time:d+s})};return c(),a}}class DummyContext extends BaseContext{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,s,a){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,s){return{}}createPanner(){return{}}createPeriodicWave(e,s,a){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,s){return{}}get rawContext(){return{}}addAudioWorkletModule(e,s){return __awaiter$4(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,s){return 0}clearTimeout(e){return this}setInterval(e,s){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}}function readOnly$1(o,e){isArray(e)?e.forEach(s=>readOnly$1(o,s)):Object.defineProperty(o,e,{enumerable:!0,writable:!1})}function writable(o,e){isArray(e)?e.forEach(s=>writable(o,s)):Object.defineProperty(o,e,{writable:!0})}const noOp=()=>{};class ToneAudioBuffer extends Tone$1{constructor(){super(),this.name="ToneAudioBuffer",this.onload=noOp;const e=optionsFromArguments(ToneAudioBuffer.getDefaults(),arguments,["url","onload","onerror"]);this.reverse=e.reverse,this.onload=e.onload,e.url&&isAudioBuffer(e.url)||e.url instanceof ToneAudioBuffer?this.set(e.url):isString(e.url)&&this.load(e.url).catch(e.onerror)}static getDefaults(){return{onerror:noOp,onload:noOp,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:getContext().sampleRate}set(e){return e instanceof ToneAudioBuffer?e.loaded?this._buffer=e.get():e.onload=()=>{this.set(e),this.onload(this)}:this._buffer=e,this._reversed&&this._reverse(),this}get(){return this._buffer}load(e){return __awaiter$4(this,void 0,void 0,function*(){const s=ToneAudioBuffer.load(e).then(a=>{this.set(a),this.onload(this)});ToneAudioBuffer.downloads.push(s);try{yield s}finally{const a=ToneAudioBuffer.downloads.indexOf(s);ToneAudioBuffer.downloads.splice(a,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){const s=isArray(e)&&e[0].length>0,a=s?e.length:1,c=s?e[0].length:e.length,d=getContext(),_=d.createBuffer(a,c,d.sampleRate),b=!s&&a===1?[e]:e;for(let k=0;kc/a),this.fromArray(s)}return this}toArray(e){if(isNumber(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{const s=[];for(let a=0;a0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(e){return new ToneAudioBuffer().fromArray(e)}static fromUrl(e){return __awaiter$4(this,void 0,void 0,function*(){return yield new ToneAudioBuffer().load(e)})}static load(e){return __awaiter$4(this,void 0,void 0,function*(){const s=e.match(/\[([^\]\[]+\|.+)\]$/);if(s){const b=s[1].split("|");let k=b[0];for(const $ of b)if(ToneAudioBuffer.supportsType($)){k=$;break}e=e.replace(s[0],k)}const a=ToneAudioBuffer.baseUrl===""||ToneAudioBuffer.baseUrl.endsWith("/")?ToneAudioBuffer.baseUrl:ToneAudioBuffer.baseUrl+"/",c=yield fetch(a+e);if(!c.ok)throw new Error(`could not load url: ${e}`);const d=yield c.arrayBuffer();return yield getContext().decodeAudioData(d)})}static supportsType(e){const s=e.split("."),a=s[s.length-1];return document.createElement("audio").canPlayType("audio/"+a)!==""}static loaded(){return __awaiter$4(this,void 0,void 0,function*(){for(yield Promise.resolve();ToneAudioBuffer.downloads.length;)yield ToneAudioBuffer.downloads[0]})}}ToneAudioBuffer.baseUrl="";ToneAudioBuffer.downloads=[];class OfflineContext extends Context{constructor(){super({clockSource:"offline",context:isOfflineAudioContext(arguments[0])?arguments[0]:createOfflineAudioContext(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:isOfflineAudioContext(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name="OfflineContext",this._currentTime=0,this.isOffline=!0,this._duration=isOfflineAudioContext(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return __awaiter$4(this,void 0,void 0,function*(){let s=0;for(;this._duration-this._currentTime>=0;){this.emit("tick"),this._currentTime+=128/this.sampleRate,s++;const a=Math.floor(this.sampleRate/128);e&&s%a===0&&(yield new Promise(c=>setTimeout(c,1)))}})}render(e=!0){return __awaiter$4(this,void 0,void 0,function*(){yield this.workletsAreReady(),yield this._renderClock(e);const s=yield this._context.startRendering();return new ToneAudioBuffer(s)})}close(){return Promise.resolve()}}const dummyContext=new DummyContext;let globalContext=dummyContext;function getContext(){return globalContext===dummyContext&&hasAudioContext&&setContext(new Context),globalContext}function setContext(o){isAudioContext(o)?globalContext=new Context(o):isOfflineAudioContext(o)?globalContext=new OfflineContext(o):globalContext=o}function start(){return globalContext.resume()}if(theWindow&&!theWindow.TONE_SILENCE_LOGGING){const e=` * Tone.js v${version} * `;console.log(`%c${e}`,"background: #000; color: #fff")}function dbToGain(o){return Math.pow(10,o/20)}function gainToDb(o){return 20*(Math.log(o)/Math.LN10)}function intervalToFrequencyRatio(o){return Math.pow(2,o/12)}let A4=440;function getA4(){return A4}function setA4(o){A4=o}function ftom(o){return Math.round(ftomf(o))}function ftomf(o){return 69+12*Math.log2(o/A4)}function mtof(o){return A4*Math.pow(2,(o-69)/12)}class TimeBaseClass extends Tone$1{constructor(e,s,a){super(),this.defaultUnits="s",this._val=s,this._units=a,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,s)=>{const a=parseInt(e,10),c=s==="."?1.5:1;return a===1?this._beatsToUnits(this._getTimeSignature())*c:this._beatsToUnits(4/a)*c},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{const s=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(s)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,s,a)=>{let c=0;return e&&e!=="0"&&(c+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c+=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c+=this._beatsToUnits(parseFloat(a)/4)),c},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof TimeBaseClass&&this.fromType(this._val),isUndef(this._val))return this._noArg();if(isString(this._val)&&isUndef(this._units)){for(const e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(isObject(this._val)){let e=0;for(const s in this._val)if(isDefined(this._val[s])){const a=this._val[s];e+=new this.constructor(this.context,s).valueOf()*a}return e}if(isDefined(this._units)){const e=this._expressions[this._units],s=this._val.toString().trim().match(e.regexp);return s?e.method.apply(this,s.slice(1)):e.method.call(this,this._val)}else return isString(this._val)?parseFloat(this._val):this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case"s":this._val=e.toSeconds();break;case"i":this._val=e.toTicks();break;case"hz":this._val=e.toFrequency();break;case"midi":this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}}class TimeClass extends TimeBaseClass{constructor(){super(...arguments),this.name="TimeClass"}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:e=>{const s=new TimeClass(this.context,e).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(s))},regexp:/^@(.+)/}})}quantize(e,s=1){const a=new this.constructor(this.context,e).valueOf(),c=this.valueOf(),b=Math.round(c/a)*a-c;return c+b*s}toNotation(){const e=this.toSeconds(),s=["1m"];for(let d=1;d<9;d++){const _=Math.pow(2,d);s.push(_+"n."),s.push(_+"n"),s.push(_+"t")}s.push("0");let a=s[0],c=new TimeClass(this.context,s[0]).toSeconds();return s.forEach(d=>{const _=new TimeClass(this.context,d).toSeconds();Math.abs(_-e)3&&(c=parseFloat(parseFloat(d).toFixed(3))),[a,s,c].join(":")}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.round(s*this._getPPQ())}toSeconds(){return this.valueOf()}toMidi(){return ftom(this.toFrequency())}_now(){return this.context.now()}}function Time(o,e){return new TimeClass(getContext(),o,e)}class FrequencyClass extends TimeClass{constructor(){super(...arguments),this.name="Frequency",this.defaultUnits="hz"}static get A4(){return getA4()}static set A4(e){setA4(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(e){return this.defaultUnits==="midi"?e:FrequencyClass.mtof(e)}},note:{regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method(e,s){const c=noteToScaleIndex[e.toLowerCase()]+(parseInt(s,10)+1)*12;return this.defaultUnits==="midi"?c:FrequencyClass.mtof(c)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,s,a){let c=1;return e&&e!=="0"&&(c*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),s&&s!=="0"&&(c*=this._beatsToUnits(parseFloat(s))),a&&a!=="0"&&(c*=this._beatsToUnits(parseFloat(a)/4)),c}}})}transpose(e){return new FrequencyClass(this.context,this.valueOf()*intervalToFrequencyRatio(e))}harmonize(e){return e.map(s=>this.transpose(s))}toMidi(){return ftom(this.valueOf())}toNote(){const e=this.toFrequency(),s=Math.log2(e/FrequencyClass.A4);let a=Math.round(12*s)+57;const c=Math.floor(a/12);return c<0&&(a+=-12*c),scaleIndexToNote[a%12]+c.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){const e=this._beatsToUnits(1),s=this.valueOf()/e;return Math.floor(s*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return mtof(e)}static ftom(e){return ftom(e)}}const noteToScaleIndex={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},scaleIndexToNote=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];function Frequency(o,e){return new FrequencyClass(getContext(),o,e)}class TransportTimeClass extends TimeClass{constructor(){super(...arguments),this.name="TransportTime"}_now(){return this.context.transport.seconds}}function TransportTime(o,e){return new TransportTimeClass(getContext(),o,e)}class ToneWithContext extends Tone$1{constructor(){super();const e=optionsFromArguments(ToneWithContext.getDefaults(),arguments,["context"]);this.defaultContext?this.context=this.defaultContext:this.context=e.context}static getDefaults(){return{context:getContext()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return new TimeClass(this.context,e).toSeconds()}toFrequency(e){return new FrequencyClass(this.context,e).toFrequency()}toTicks(e){return new TransportTimeClass(this.context,e).toTicks()}_getPartialProperties(e){const s=this.get();return Object.keys(s).forEach(a=>{isUndef(e[a])&&delete s[a]}),s}get(){const e=getDefaultsFromInstance(this);return Object.keys(e).forEach(s=>{if(Reflect.has(this,s)){const a=this[s];isDefined(a)&&isDefined(a.value)&&isDefined(a.setValueAtTime)?e[s]=a.value:a instanceof ToneWithContext?e[s]=a._getPartialProperties(e[s]):isArray(a)||isNumber(a)||isString(a)||isBoolean(a)?e[s]=a:delete e[s]}}),e}set(e){return Object.keys(e).forEach(s=>{Reflect.has(this,s)&&isDefined(this[s])&&(this[s]&&isDefined(this[s].value)&&isDefined(this[s].setValueAtTime)?this[s].value!==e[s]&&(this[s].value=e[s]):this[s]instanceof ToneWithContext?this[s].set(e[s]):this[s]=e[s])}),this}}class StateTimeline extends Timeline{constructor(e="stopped"){super(),this.name="StateTimeline",this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){const s=this.get(e);return s!==null?s.state:this._initial}setStateAtTime(e,s,a){return assertRange(s,0),this.add(Object.assign({},a,{state:e,time:s})),this}getLastState(e,s){const a=this._search(s);for(let c=a;c>=0;c--){const d=this._timeline[c];if(d.state===e)return d}}getNextState(e,s){const a=this._search(s);if(a!==-1)for(let c=a;c0,"timeConstant must be a number greater than 0");const d=this.toSeconds(s);return this._assertRange(c),assert(isFinite(c)&&isFinite(d),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(s)}`),this._events.add({constant:a,time:d,type:"setTargetAtTime",value:c}),this.log(this.units,"setTargetAtTime",e,d,a),this._param.setTargetAtTime(c,d,a),this}setValueCurveAtTime(e,s,a,c=1){a=this.toSeconds(a),s=this.toSeconds(s);const d=this._fromType(e[0])*c;this.setValueAtTime(this._toType(d),s);const _=a/(e.length-1);for(let b=1;b{c.type==="cancelScheduledValues"?e.cancelScheduledValues(c.time):c.type==="setTargetAtTime"?e.setTargetAtTime(c.value,c.time,c.constant):e[c.type](c.value,c.time)}),this}setParam(e){assert(this._swappable,"The Param must be assigned as 'swappable' in the constructor");const s=this.input;return s.disconnect(this._param),this.apply(e),this._param=e,s.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,s,a,c,d){return a+(s-a)*Math.exp(-(d-e)/c)}_linearInterpolate(e,s,a,c,d){return s+(c-s)*((d-e)/(a-e))}_exponentialInterpolate(e,s,a,c,d){return s*Math.pow(c/s,(d-e)/(a-e))}}class ToneAudioNode extends ToneWithContext{constructor(){super(...arguments),this.name="ToneAudioNode",this._internalChannels=[]}get numberOfInputs(){return isDefined(this.input)?isAudioParam(this.input)||this.input instanceof Param?1:this.input.numberOfInputs:0}get numberOfOutputs(){return isDefined(this.output)?this.output.numberOfOutputs:0}_isAudioNode(e){return isDefined(e)&&(e instanceof ToneAudioNode||isAudioNode(e))}_getInternalNodes(){const e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(a=>{a.channelCount=e.channelCount,a.channelCountMode=e.channelCountMode,a.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){const e=this._getInternalNodes();assert(e.length>0,"ToneAudioNode does not have any internal nodes");const s=e[0];return{channelCount:s.channelCount,channelCountMode:s.channelCountMode,channelInterpretation:s.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){const s=this._getChannelProperties();this._setChannelProperties(Object.assign(s,{channelInterpretation:e}))}connect(e,s=0,a=0){return connect(this,e,s,a),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return warn("toMaster() has been renamed toDestination()"),this.toDestination()}disconnect(e,s=0,a=0){return disconnect(this,e,s,a),this}chain(...e){return connectSeries(this,...e),this}fan(...e){return e.forEach(s=>this.connect(s)),this}dispose(){return super.dispose(),isDefined(this.input)&&(this.input instanceof ToneAudioNode?this.input.dispose():isAudioNode(this.input)&&this.input.disconnect()),isDefined(this.output)&&(this.output instanceof ToneAudioNode?this.output.dispose():isAudioNode(this.output)&&this.output.disconnect()),this._internalChannels=[],this}}function connectSeries(...o){const e=o.shift();o.reduce((s,a)=>(s instanceof ToneAudioNode?s.connect(a):isAudioNode(s)&&connect(s,a),a),e)}function connect(o,e,s=0,a=0){for(assert(isDefined(o),"Cannot connect from undefined node"),assert(isDefined(e),"Cannot connect to undefined node"),(e instanceof ToneAudioNode||isAudioNode(e))&&assert(e.numberOfInputs>0,"Cannot connect to node with no inputs"),assert(o.numberOfOutputs>0,"Cannot connect from node with no outputs");e instanceof ToneAudioNode||e instanceof Param;)isDefined(e.input)&&(e=e.input);for(;o instanceof ToneAudioNode;)isDefined(o.output)&&(o=o.output);isAudioParam(e)?o.connect(e,s):o.connect(e,s,a)}function disconnect(o,e,s=0,a=0){if(isDefined(e))for(;e instanceof ToneAudioNode;)e=e.input;for(;!isAudioNode(o);)isDefined(o.output)&&(o=o.output);isAudioParam(e)?o.disconnect(e,s):isAudioNode(e)?o.disconnect(e,s,a):o.disconnect()}class Gain$1 extends ToneAudioNode{constructor(){super(optionsFromArguments(Gain$1.getDefaults(),arguments,["gain","units"])),this.name="Gain",this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode;const e=optionsFromArguments(Gain$1.getDefaults(),arguments,["gain","units"]);this.gain=new Param({context:this.context,convert:e.convert,param:this._gainNode.gain,units:e.units,value:e.gain,minValue:e.minValue,maxValue:e.maxValue}),readOnly$1(this,"gain")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,gain:1,units:"gain"})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}}class OneShotSource extends ToneAudioNode{constructor(e){super(e),this.onended=noOp,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new Gain$1({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(s){const a=this.toSeconds(s);return this._startTime!==-1&&a>=this._startTime&&(this._stopTime===-1||a<=this._stopTime)?"started":"stopped"},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{curve:"linear",fadeIn:0,fadeOut:0,onended:noOp})}_startGain(e,s=1){assert(this._startTime===-1,"Source cannot be started more than once");const a=this.toSeconds(this._fadeIn);return this._startTime=e+a,this._startTime=Math.max(this._startTime,this.context.currentTime),a>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve==="linear"?this._gainNode.gain.linearRampToValueAtTime(s,e+a):this._gainNode.gain.exponentialApproachValueAtTime(s,e,a)):this._gainNode.gain.setValueAtTime(s,e),this}stop(e){return this.log("stop",e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){assert(this._startTime!==-1,"'start' must be called before 'stop'"),this.cancelStop();const s=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+s,this._stopTime=Math.max(this._stopTime,this.context.currentTime),s>0?this._curve==="linear"?this._gainNode.gain.linearRampTo(0,s,e):this._gainNode.gain.targetRampTo(0,s,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{const a=this._curve==="exponential"?s*2:0;this._stopSource(this.now()+a),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==noOp&&(this.onended(this),this.onended=noOp,!this.context.isOffline)){const e=()=>this.dispose();typeof window.requestIdleCallback!="undefined"?window.requestIdleCallback(e):setTimeout(e,1e3)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log("cancelStop"),assert(this._startTime!==-1,"Source is not started"),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.disconnect(),this}}class ToneConstantSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"])),this.name="ToneConstantSource",this._source=this.context.createConstantSource();const e=optionsFromArguments(ToneConstantSource.getDefaults(),arguments,["offset"]);connect(this._source,this._gainNode),this.offset=new Param({context:this.context,convert:e.convert,param:this._source.offset,units:e.units,value:e.offset,minValue:e.minValue,maxValue:e.maxValue})}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{convert:!0,offset:1,units:"number"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._source.start(s),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}}class Signal extends ToneAudioNode{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="Signal",this.override=!0;const e=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this.output=this._constantSource=new ToneConstantSource({context:this.context,convert:e.convert,offset:e.value,units:e.units,minValue:e.minValue,maxValue:e.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{convert:!0,units:"number",value:0})}connect(e,s=0,a=0){return connectSignal(this,e,s,a),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,s){return this._param.setValueAtTime(e,s),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,s){return this._param.linearRampToValueAtTime(e,s),this}exponentialRampToValueAtTime(e,s){return this._param.exponentialRampToValueAtTime(e,s),this}exponentialRampTo(e,s,a){return this._param.exponentialRampTo(e,s,a),this}linearRampTo(e,s,a){return this._param.linearRampTo(e,s,a),this}targetRampTo(e,s,a){return this._param.targetRampTo(e,s,a),this}exponentialApproachValueAtTime(e,s,a){return this._param.exponentialApproachValueAtTime(e,s,a),this}setTargetAtTime(e,s,a){return this._param.setTargetAtTime(e,s,a),this}setValueCurveAtTime(e,s,a,c){return this._param.setValueCurveAtTime(e,s,a,c),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,s,a){return this._param.rampTo(e,s,a),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}}function connectSignal(o,e,s,a){(e instanceof Param||isAudioParam(e)||e instanceof Signal&&e.override)&&(e.cancelScheduledValues(0),e.setValueAtTime(0,0),e instanceof Signal&&(e.overridden=!0)),connect(o,e,s,a)}class TickParam extends Param{constructor(){super(optionsFromArguments(TickParam.getDefaults(),arguments,["value"])),this.name="TickParam",this._events=new Timeline(1/0),this._multiplier=1;const e=optionsFromArguments(TickParam.getDefaults(),arguments,["value"]);this._multiplier=e.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:"setValueAtTime",value:this._fromType(e.value)}),this.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Param.getDefaults(),{multiplier:1,units:"hertz",value:1})}setTargetAtTime(e,s,a){s=this.toSeconds(s),this.setRampPoint(s);const c=this._fromType(e),d=this._events.get(s),_=Math.round(Math.max(1/a,1));for(let b=0;b<=_;b++){const k=a*b+s,$=this._exponentialApproach(d.time,d.value,c,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}setValueAtTime(e,s){const a=this.toSeconds(s);super.setValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}linearRampToValueAtTime(e,s){const a=this.toSeconds(s);super.linearRampToValueAtTime(e,s);const c=this._events.get(a),d=this._events.previousEvent(c),_=this._getTicksUntilEvent(d,a);return c.ticks=Math.max(_,0),this}exponentialRampToValueAtTime(e,s){s=this.toSeconds(s);const a=this._fromType(e),c=this._events.get(s),d=Math.round(Math.max((s-c.time)*10,1)),_=(s-c.time)/d;for(let b=0;b<=d;b++){const k=_*b+c.time,$=this._exponentialInterpolate(c.time,c.value,s,a,k);this.linearRampToValueAtTime(this._toType($),k)}return this}_getTicksUntilEvent(e,s){if(e===null)e={ticks:0,time:0,type:"setValueAtTime",value:0};else if(isUndef(e.ticks)){const _=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(_,e.time)}const a=this._fromType(this.getValueAtTime(e.time));let c=this._fromType(this.getValueAtTime(s));const d=this._events.get(s);return d&&d.time===s&&d.type==="setValueAtTime"&&(c=this._fromType(this.getValueAtTime(s-this.sampleTime))),.5*(s-e.time)*(a+c)+e.ticks}getTicksAtTime(e){const s=this.toSeconds(e),a=this._events.get(s);return Math.max(this._getTicksUntilEvent(a,s),0)}getDurationOfTicks(e,s){const a=this.toSeconds(s),c=this.getTicksAtTime(s);return this.getTimeOfTick(c+e)-a}getTimeOfTick(e){const s=this._events.get(e,"ticks"),a=this._events.getAfter(e,"ticks");if(s&&s.ticks===e)return s.time;if(s&&a&&a.type==="linearRampToValueAtTime"&&s.value!==a.value){const c=this._fromType(this.getValueAtTime(s.time)),_=(this._fromType(this.getValueAtTime(a.time))-c)/(a.time-s.time),b=Math.sqrt(Math.pow(c,2)-2*_*(s.ticks-e)),k=(-c+b)/_,$=(-c-b)/_;return(k>0?k:$)+s.time}else return s?s.value===0?1/0:s.time+(e-s.ticks)/s.value:e/this._initialValue}ticksToTime(e,s){return this.getDurationOfTicks(e,s)}timeToTicks(e,s){const a=this.toSeconds(s),c=this.toSeconds(e),d=this.getTicksAtTime(a);return this.getTicksAtTime(a+c)-d}_fromType(e){return this.units==="bpm"&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units==="bpm"&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){const s=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(s,0)}}class TickSignal extends Signal{constructor(){super(optionsFromArguments(TickSignal.getDefaults(),arguments,["value"])),this.name="TickSignal";const e=optionsFromArguments(TickSignal.getDefaults(),arguments,["value"]);this.input=this._param=new TickParam({context:this.context,convert:e.convert,multiplier:e.multiplier,param:this._constantSource.offset,units:e.units,value:e.value})}static getDefaults(){return Object.assign(Signal.getDefaults(),{multiplier:1,units:"hertz",value:1})}ticksToTime(e,s){return this._param.ticksToTime(e,s)}timeToTicks(e,s){return this._param.timeToTicks(e,s)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,s){return this._param.getDurationOfTicks(e,s)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}}class TickSource extends ToneWithContext{constructor(){super(optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"])),this.name="TickSource",this._state=new StateTimeline,this._tickOffset=new Timeline;const e=optionsFromArguments(TickSource.getDefaults(),arguments,["frequency"]);this.frequency=new TickSignal({context:this.context,units:e.units,value:e.frequency}),readOnly$1(this,"frequency"),this._state.setStateAtTime("stopped",0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:"hertz"},ToneWithContext.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,s){const a=this.toSeconds(e);return this._state.getValueAtTime(a)!=="started"&&(this._state.setStateAtTime("started",a),isDefined(s)&&this.setTicksAtTime(s,a)),this}stop(e){const s=this.toSeconds(e);if(this._state.getValueAtTime(s)==="stopped"){const a=this._state.get(s);a&&a.time>0&&(this._tickOffset.cancel(a.time),this._state.cancel(a.time))}return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this.setTicksAtTime(0,s),this}pause(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)==="started"&&this._state.setStateAtTime("paused",s),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this}getTicksAtTime(e){const s=this.toSeconds(e),a=this._state.getLastState("stopped",s),c={state:"paused",time:s};this._state.add(c);let d=a,_=0;return this._state.forEachBetween(a.time,s+this.sampleTime,b=>{let k=d.time;const $=this._tickOffset.get(b.time);$&&$.time>=d.time&&(_=$.ticks,k=$.time),d.state==="started"&&b.state!=="started"&&(_+=this.frequency.getTicksAtTime(b.time)-this.frequency.getTicksAtTime(k)),d=b}),this._state.remove(c),_}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){const s=this.now(),a=this.frequency.timeToTicks(e,s);this.setTicksAtTime(a,s)}getSecondsAtTime(e){e=this.toSeconds(e);const s=this._state.getLastState("stopped",e),a={state:"paused",time:e};this._state.add(a);let c=s,d=0;return this._state.forEachBetween(s.time,e+this.sampleTime,_=>{let b=c.time;const k=this._tickOffset.get(_.time);k&&k.time>=c.time&&(d=k.seconds,b=k.time),c.state==="started"&&_.state!=="started"&&(d+=_.time-b),c=_}),this._state.remove(a),d}setTicksAtTime(e,s){return s=this.toSeconds(s),this._tickOffset.cancel(s),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,s),ticks:e,time:s}),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,s=this.now()){const a=this._tickOffset.get(s),c=this._state.get(s),d=Math.max(a.time,c.time),_=this.frequency.getTicksAtTime(d)+e-a.ticks;return this.frequency.getTimeOfTick(_)}forEachTickBetween(e,s,a){let c=this._state.get(e);this._state.forEachBetween(e,s,_=>{c&&c.state==="started"&&_.state!=="started"&&this.forEachTickBetween(Math.max(c.time,e),_.time-this.sampleTime,a),c=_});let d=null;if(c&&c.state==="started"){const _=Math.max(c.time,e),b=this.frequency.getTicksAtTime(_),k=this.frequency.getTicksAtTime(c.time),$=b-k;let j=Math.ceil($)-$;j=EQ(j,1)?0:j;let _e=this.frequency.getTimeOfTick(b+j);for(;_e{switch(a.state){case"started":const c=this._tickSource.getTicksAtTime(a.time);this.emit("start",a.time,c);break;case"stopped":a.time!==0&&this.emit("stop",a.time);break;case"paused":this.emit("pause",a.time);break}}),this._tickSource.forEachTickBetween(e,s,(a,c)=>{this.callback(a,c)}))}getStateAtTime(e){const s=this.toSeconds(e);return this._state.getValueAtTime(s)}dispose(){return super.dispose(),this.context.off("tick",this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}}Emitter.mixin(Clock);class Delay extends ToneAudioNode{constructor(){super(optionsFromArguments(Delay.getDefaults(),arguments,["delayTime","maxDelay"])),this.name="Delay";const e=optionsFromArguments(Delay.getDefaults(),arguments,["delayTime","maxDelay"]),s=this.toSeconds(e.maxDelay);this._maxDelay=Math.max(s,this.toSeconds(e.delayTime)),this._delayNode=this.input=this.output=this.context.createDelay(s),this.delayTime=new Param({context:this.context,param:this._delayNode.delayTime,units:"time",value:e.delayTime,minValue:0,maxValue:this.maxDelay}),readOnly$1(this,"delayTime")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{delayTime:0,maxDelay:1})}get maxDelay(){return this._maxDelay}dispose(){return super.dispose(),this._delayNode.disconnect(),this.delayTime.dispose(),this}}function Offline(o,e,s=2,a=getContext().sampleRate){return __awaiter$4(this,void 0,void 0,function*(){const c=getContext(),d=new OfflineContext(s,e,a);setContext(d),yield o(d);const _=d.render();setContext(c);const b=yield _;return new ToneAudioBuffer(b)})}class ToneAudioBuffers extends Tone$1{constructor(){super(),this.name="ToneAudioBuffers",this._buffers=new Map,this._loadingCount=0;const e=optionsFromArguments(ToneAudioBuffers.getDefaults(),arguments,["urls","onload","baseUrl"],"urls");this.baseUrl=e.baseUrl,Object.keys(e.urls).forEach(s=>{this._loadingCount++;const a=e.urls[s];this.add(s,a,this._bufferLoaded.bind(this,e.onload),e.onerror)})}static getDefaults(){return{baseUrl:"",onerror:noOp,onload:noOp,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return assert(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,s])=>s.loaded)}add(e,s,a=noOp,c=noOp){return isString(s)?this._buffers.set(e.toString(),new ToneAudioBuffer(this.baseUrl+s,a,c)):this._buffers.set(e.toString(),new ToneAudioBuffer(s,a,c)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}}class MidiClass extends FrequencyClass{constructor(){super(...arguments),this.name="MidiClass",this.defaultUnits="midi"}_frequencyToUnits(e){return ftom(super._frequencyToUnits(e))}_ticksToUnits(e){return ftom(super._ticksToUnits(e))}_beatsToUnits(e){return ftom(super._beatsToUnits(e))}_secondsToUnits(e){return ftom(super._secondsToUnits(e))}toMidi(){return this.valueOf()}toFrequency(){return mtof(this.toMidi())}transpose(e){return new MidiClass(this.context,this.toMidi()+e)}}function Midi(o,e){return new MidiClass(getContext(),o,e)}class TicksClass extends TransportTimeClass{constructor(){super(...arguments),this.name="Ticks",this.defaultUnits="i"}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}}function Ticks(o,e){return new TicksClass(getContext(),o,e)}class Draw$1 extends ToneWithContext{constructor(){super(...arguments),this.name="Draw",this.expiration=.25,this.anticipation=.008,this._events=new Timeline,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,s){return this._events.add({callback:e,time:this.toSeconds(s)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){const e=this.context.currentTime;for(;this._events.length&&this._events.peek().time-this.anticipation<=e;){const s=this._events.shift();s&&e-s.time<=this.expiration&&s.callback()}this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}}onContextInit(o=>{o.draw=new Draw$1({context:o})});onContextClose(o=>{o.draw.dispose()});class IntervalTimeline extends Tone$1{constructor(){super(...arguments),this.name="IntervalTimeline",this._root=null,this._length=0}add(e){assert(isDefined(e.time),"Events must have a time property"),assert(isDefined(e.duration),"Events must have a duration parameter"),e.time=e.time.valueOf();let s=new IntervalNode(e.time,e.time+e.duration,e);for(this._root===null?this._root=s:this._root.insert(s),this._length++;s!==null;)s.updateHeight(),s.updateMax(),this._rebalance(s),s=s.parent;return this}remove(e){if(this._root!==null){const s=[];this._root.search(e.time,s);for(const a of s)if(a.event===e){this._removeNode(a),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,s=>this.remove(s)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,s){e.parent!==null?(e.isLeftChild()?e.parent.left=s:e.parent.right=s,this._rebalance(e.parent)):this._setRoot(s)}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{const s=e.getBalance();let a,c=null;if(s>0)if(e.left.right===null)a=e.left,a.right=e.right,c=a;else{for(a=e.left.right;a.right!==null;)a=a.right;a.parent&&(a.parent.right=a.left,c=a.parent,a.left=e.left,a.right=e.right)}else if(e.right.left===null)a=e.right,a.left=e.left,c=a;else{for(a=e.right.left;a.left!==null;)a=a.left;a.parent&&(a.parent.left=a.right,c=a.parent,a.left=e.left,a.right=e.right)}e.parent!==null?e.isLeftChild()?e.parent.left=a:e.parent.right=a:this._setRoot(a),c&&this._rebalance(c)}e.dispose()}_rotateLeft(e){const s=e.parent,a=e.isLeftChild(),c=e.right;c&&(e.right=c.left,c.left=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rotateRight(e){const s=e.parent,a=e.isLeftChild(),c=e.left;c&&(e.left=c.right,c.right=e),s!==null?a?s.left=c:s.right=c:this._setRoot(c)}_rebalance(e){const s=e.getBalance();s>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):s<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){const s=[];if(this._root.search(e,s),s.length>0){let a=s[0];for(let c=1;ca.low&&(a=s[c]);return a.event}}return null}forEach(e){if(this._root!==null){const s=[];this._root.traverse(a=>s.push(a)),s.forEach(a=>{a.event&&e(a.event)})}return this}forEachAtTime(e,s){if(this._root!==null){const a=[];this._root.search(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}forEachFrom(e,s){if(this._root!==null){const a=[];this._root.searchAfter(e,a),a.forEach(c=>{c.event&&s(c.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}}class IntervalNode{constructor(e,s,a){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=a,this.low=e,this.high=s,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,s){e>this.max||(this.left!==null&&this.left.search(e,s),this.low<=e&&this.high>e&&s.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,s))}searchAfter(e,s){this.low>=e&&(s.push(this),this.left!==null&&this.left.searchAfter(e,s)),this.right!==null&&this.right.searchAfter(e,s)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right!==null?this.height=this.right.height+1:this.left!==null?this.height=this.left.height+1:this.height=0}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left!==null?e=this.left.height+1:this.right!==null&&(e=-(this.right.height+1)),e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}}var Units=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));class Volume extends ToneAudioNode{constructor(){super(optionsFromArguments(Volume.getDefaults(),arguments,["volume"])),this.name="Volume";const e=optionsFromArguments(Volume.getDefaults(),arguments,["volume"]);this.input=this.output=new Gain$1({context:this.context,gain:e.volume,units:"decibels"}),this.volume=this.output.gain,readOnly$1(this,"volume"),this._unmutedVolume=e.volume,this.mute=e.mute}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}}class Destination$2 extends ToneAudioNode{constructor(){super(optionsFromArguments(Destination$2.getDefaults(),arguments)),this.name="Destination",this.input=new Volume({context:this.context}),this.output=new Gain$1({context:this.context}),this.volume=this.input.volume;const e=optionsFromArguments(Destination$2.getDefaults(),arguments);connectSeries(this.input,this.output,this.context.rawContext.destination),this.mute=e.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),connectSeries(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}}onContextInit(o=>{o.destination=new Destination$2({context:o})});onContextClose(o=>{o.destination.dispose()});class TimelineValue extends Tone$1{constructor(e){super(),this.name="TimelineValue",this._timeline=new Timeline({memory:10}),this._initialValue=e}set(e,s){return this._timeline.add({value:e,time:s}),this}get(e){const s=this._timeline.get(e);return s?s.value:this._initialValue}}class TransportEvent{constructor(e,s){this.id=TransportEvent._eventId++;const a=Object.assign(TransportEvent.getDefaults(),s);this.transport=e,this.callback=a.callback,this._once=a.once,this.time=a.time}static getDefaults(){return{callback:noOp,once:!1,time:0}}invoke(e){this.callback&&(this.callback(e),this._once&&this.transport.clear(this.id))}dispose(){return this.callback=void 0,this}}TransportEvent._eventId=0;class TransportRepeatEvent extends TransportEvent{constructor(e,s){super(e,s),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);const a=Object.assign(TransportRepeatEvent.getDefaults(),s);this.duration=new TicksClass(e.context,a.duration).valueOf(),this._interval=new TicksClass(e.context,a.interval).valueOf(),this._nextTick=a.time,this.transport.on("start",this._boundRestart),this.transport.on("loopStart",this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},TransportEvent.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvents(e){const s=this.transport.getTicksAtTime(e);s>=this.time&&s>=this._nextTick&&this._nextTick+this._intervalthis.time&&(this._nextTick=this.time+Math.ceil((s-this.time)/this._interval)*this._interval),this._currentId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds()),this._nextTick+=this._interval,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new TicksClass(this.context,this._nextTick).toSeconds())}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off("start",this._boundRestart),this.transport.off("loopStart",this._boundRestart),this}}class Transport$1 extends ToneWithContext{constructor(){super(optionsFromArguments(Transport$1.getDefaults(),arguments)),this.name="Transport",this._loop=new TimelineValue(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new Timeline,this._repeatedEvents=new IntervalTimeline,this._syncedSignals=[],this._swingAmount=0;const e=optionsFromArguments(Transport$1.getDefaults(),arguments);this._ppq=e.ppq,this._clock=new Clock({callback:this._processTick.bind(this),context:this.context,frequency:0,units:"bpm"}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=e.ppq,this.bpm.setValueAtTime(e.bpm,0),readOnly$1(this,"bpm"),this._timeSignature=e.timeSignature,this._swingTicks=e.ppq/2}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{bpm:120,loopEnd:"4m",loopStart:0,ppq:192,swing:0,swingSubdivision:"8n",timeSignature:4})}_processTick(e,s){if(this._loop.get(e)&&s>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),s=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._swingAmount>0&&s%this._ppq!==0&&s%(this._swingTicks*2)!==0){const a=s%(this._swingTicks*2)/(this._swingTicks*2),c=Math.sin(a*Math.PI)*this._swingAmount;e+=new TicksClass(this.context,this._swingTicks*2/3).toSeconds()*c}this._timeline.forEachAtTime(s,a=>a.invoke(e))}schedule(e,s){const a=new TransportEvent(this,{callback:e,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}scheduleRepeat(e,s,a,c=1/0){const d=new TransportRepeatEvent(this,{callback:e,duration:new TimeClass(this.context,c).toTicks(),interval:new TimeClass(this.context,s).toTicks(),time:new TransportTimeClass(this.context,a).toTicks()});return this._addEvent(d,this._repeatedEvents)}scheduleOnce(e,s){const a=new TransportEvent(this,{callback:e,once:!0,time:new TransportTimeClass(this.context,s).toTicks()});return this._addEvent(a,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){const s=this._scheduledEvents[e.toString()];s.timeline.remove(s.event),s.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,s){return this._scheduledEvents[e.id.toString()]={event:e,timeline:s},s.add(e),e.id}cancel(e=0){const s=this.toTicks(e);return this._timeline.forEachFrom(s,a=>this.clear(a.id)),this._repeatedEvents.forEachFrom(s,a=>this.clear(a.id)),this}_bindClockEvents(){this._clock.on("start",(e,s)=>{s=new TicksClass(this.context,s).toSeconds(),this.emit("start",e,s)}),this._clock.on("stop",e=>{this.emit("stop",e)}),this._clock.on("pause",e=>{this.emit("pause",e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,s){let a;return isDefined(s)&&(a=this.toTicks(s)),this._clock.start(e,a),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!=="started"?this.start(e):this.stop(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){isArray(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new TimeClass(this.context,this._loopStart,"i").toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new TimeClass(this.context,this._loopEnd,"i").toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new TicksClass(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){const e=this.now(),s=this._clock.getTicksAtTime(e);return new TicksClass(this.context,s).toBarsBeatsSixteenths()}set position(e){const s=this.toTicks(e);this.ticks=s}get seconds(){return this._clock.seconds}set seconds(e){const s=this.now(),a=this._clock.frequency.timeToTicks(e,s);this.ticks=a}get progress(){if(this.loop){const e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){const s=this.now();if(this.state==="started"){const a=this._clock.getTicksAtTime(s),c=this._clock.frequency.getDurationOfTicks(Math.ceil(a)-a,s),d=s+c;this.emit("stop",d),this._clock.setTicksAtTime(e,d),this.emit("start",d,this._clock.getSecondsAtTime(d))}else this._clock.setTicksAtTime(e,s)}}getTicksAtTime(e){return Math.round(this._clock.getTicksAtTime(e))}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!=="started")return 0;{const s=this.now(),a=this.getTicksAtTime(s),c=e-a%e;return this._clock.nextTickTime(c,s)}}syncSignal(e,s){if(!s){const c=this.now();if(e.getValueAtTime(c)!==0){const d=this.bpm.getValueAtTime(c),_=1/(60/d/this.PPQ);s=e.getValueAtTime(c)/_}else s=0}const a=new Gain$1(s);return this.bpm.connect(a),a.connect(e._param),this._syncedSignals.push({initial:e.value,ratio:a,signal:e}),e.value=0,this}unsyncSignal(e){for(let s=this._syncedSignals.length-1;s>=0;s--){const a=this._syncedSignals[s];a.signal===e&&(a.ratio.dispose(),a.signal.value=a.initial,this._syncedSignals.splice(s,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),writable(this,"bpm"),this._timeline.dispose(),this._repeatedEvents.dispose(),this}}Emitter.mixin(Transport$1);onContextInit(o=>{o.transport=new Transport$1({context:o})});onContextClose(o=>{o.transport.dispose()});class Source extends ToneAudioNode{constructor(e){super(e),this.input=void 0,this._state=new StateTimeline("stopped"),this._synced=!1,this._scheduled=[],this._syncedStart=noOp,this._syncedStop=noOp,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new Volume({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,readOnly$1(this,"volume"),this.onstop=e.onstop}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,onstop:noOp,volume:0})}get state(){return this._synced?this.context.transport.state==="started"?this._state.getValueAtTime(this.context.transport.seconds):"stopped":this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,s,a){let c=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(c=this._clampToCurrentTime(c),!this._synced&&this._state.getValueAtTime(c)==="started")assert(GT(c,this._state.get(c).time),"Start time must be strictly greater than previous start time"),this._state.cancel(c),this._state.setStateAtTime("started",c),this.log("restart",c),this.restart(c,s,a);else if(this.log("start",c),this._state.setStateAtTime("started",c),this._synced){const d=this._state.get(c);d&&(d.offset=this.toSeconds(defaultArg(s,0)),d.duration=a?this.toSeconds(a):void 0);const _=this.context.transport.schedule(b=>{this._start(b,s,a)},c);this._scheduled.push(_),this.context.transport.state==="started"&&this.context.transport.getSecondsAtTime(this.immediate())>c&&this._syncedStart(this.now(),this.context.transport.seconds)}else assertContextRunning(this.context),this._start(c,s,a);return this}stop(e){let s=isUndef(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(s=this._clampToCurrentTime(s),this._state.getValueAtTime(s)==="started"||isDefined(this._state.getNextState("started",s))){if(this.log("stop",s),!this._synced)this._stop(s);else{const a=this.context.transport.schedule(this._stop.bind(this),s);this._scheduled.push(a)}this._state.cancel(s),this._state.setStateAtTime("stopped",s)}return this}restart(e,s,a){return e=this.toSeconds(e),this._state.getValueAtTime(e)==="started"&&(this._state.cancel(e),this._restart(e,s,a)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,s)=>{if(s>0){const a=this._state.get(s);if(a&&a.state==="started"&&a.time!==s){const c=s-this.toSeconds(a.time);let d;a.duration&&(d=this.toSeconds(a.duration)-c),this._start(e,this.toSeconds(a.offset)+c,d)}}},this._syncedStop=e=>{const s=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(s)==="started"&&this._stop(e)},this.context.transport.on("start",this._syncedStart),this.context.transport.on("loopStart",this._syncedStart),this.context.transport.on("stop",this._syncedStop),this.context.transport.on("pause",this._syncedStop),this.context.transport.on("loopEnd",this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off("stop",this._syncedStop),this.context.transport.off("pause",this._syncedStop),this.context.transport.off("loopEnd",this._syncedStop),this.context.transport.off("start",this._syncedStart),this.context.transport.off("loopStart",this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=noOp,this.unsync(),this._volume.dispose(),this._state.dispose(),this}}class ToneBufferSource extends OneShotSource{constructor(){super(optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"])),this.name="ToneBufferSource",this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1;const e=optionsFromArguments(ToneBufferSource.getDefaults(),arguments,["url","onload"]);connect(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new Param({context:this.context,param:this._source.playbackRate,units:"positive",value:e.playbackRate}),this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this._buffer=new ToneAudioBuffer(e.url,e.onload,e.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{url:new ToneAudioBuffer,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,s,a,c=1){assert(this.buffer.loaded,"buffer is either not set or not loaded");const d=this.toSeconds(e);this._startGain(d,c),this.loop?s=defaultArg(s,this.loopStart):s=defaultArg(s,0);let _=Math.max(this.toSeconds(s),0);if(this.loop){const b=this.toSeconds(this.loopEnd)||this.buffer.duration,k=this.toSeconds(this.loopStart),$=b-k;GTE(_,b)&&(_=(_-k)%$+k),EQ(_,this.buffer.duration)&&(_=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,LT(_,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(d,_)),isDefined(a)){let b=this.toSeconds(a);b=Math.max(b,0),this.stop(d+b)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}}class Noise extends Source{constructor(){super(optionsFromArguments(Noise.getDefaults(),arguments,["type"])),this.name="Noise",this._source=null;const e=optionsFromArguments(Noise.getDefaults(),arguments,["type"]);this._playbackRate=e.playbackRate,this.type=e.type,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{fadeIn:0,fadeOut:0,playbackRate:1,type:"white"})}get type(){return this._type}set type(e){if(assert(e in _noiseBuffers,"Noise: invalid type: "+e),this._type!==e&&(this._type=e,this.state==="started")){const s=this.now();this._stop(s),this._start(s)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._source&&(this._source.playbackRate.value=e)}_start(e){const s=_noiseBuffers[this._type];this._source=new ToneBufferSource({url:s,context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,loop:!0,onended:()=>this.onstop(this),playbackRate:this._playbackRate}).connect(this.output),this._source.start(this.toSeconds(e),Math.random()*(s.duration-.001))}_stop(e){this._source&&(this._source.stop(this.toSeconds(e)),this._source=null)}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._source&&(this._source.fadeIn=this._fadeIn)}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._source&&(this._source.fadeOut=this._fadeOut)}_restart(e){this._stop(e),this._start(e)}dispose(){return super.dispose(),this._source&&this._source.disconnect(),this}}const BUFFER_LENGTH=44100*5,NUM_CHANNELS=2,_noiseCache={brown:null,pink:null,white:null},_noiseBuffers={get brown(){if(!_noiseCache.brown){const o=[];for(let e=0;ed.label===e||d.deviceId===e),!this._device&&s.length>0&&(this._device=s[0]),assert(isDefined(this._device),`No matching device ${e}`));const a={audio:{echoCancellation:!1,sampleRate:this.context.sampleRate,noiseSuppression:!1,mozNoiseSuppression:!1}};this._device&&(a.audio.deviceId=this._device.deviceId);const c=yield navigator.mediaDevices.getUserMedia(a);if(!this._stream){this._stream=c;const d=this.context.createMediaStreamSource(c);connect(d,this.output),this._mediaStream=d}return this})}close(){return this._stream&&this._mediaStream&&(this._stream.getAudioTracks().forEach(e=>{e.stop()}),this._stream=void 0,this._mediaStream.disconnect(),this._mediaStream=void 0),this._device=void 0,this}static enumerateDevices(){return __awaiter$4(this,void 0,void 0,function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter(s=>s.kind==="audioinput")})}get state(){return this._stream&&this._stream.active?"started":"stopped"}get deviceId(){if(this._device)return this._device.deviceId}get groupId(){if(this._device)return this._device.groupId}get label(){if(this._device)return this._device.label}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this.close(),this._volume.dispose(),this.volume.dispose(),this}static get supported(){return isDefined(navigator.mediaDevices)&&isDefined(navigator.mediaDevices.getUserMedia)}}function generateWaveform(o,e){return __awaiter$4(this,void 0,void 0,function*(){const s=e/o.context.sampleRate,a=new OfflineContext(1,s,o.context.sampleRate);return new o.constructor(Object.assign(o.get(),{frequency:2/s,detune:0,context:a})).toDestination().start(0),(yield a.render()).getChannelData(0)})}class ToneOscillatorNode extends OneShotSource{constructor(){super(optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"])),this.name="ToneOscillatorNode",this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator];const e=optionsFromArguments(ToneOscillatorNode.getDefaults(),arguments,["frequency","type"]);connect(this._oscillator,this._gainNode),this.type=e.type,this.frequency=new Param({context:this.context,param:this._oscillator.frequency,units:"frequency",value:e.frequency}),this.detune=new Param({context:this.context,param:this._oscillator.detune,units:"cents",value:e.detune}),readOnly$1(this,["frequency","detune"])}static getDefaults(){return Object.assign(OneShotSource.getDefaults(),{detune:0,frequency:440,type:"sine"})}start(e){const s=this.toSeconds(e);return this.log("start",s),this._startGain(s),this._oscillator.start(s),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state==="started"&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}}class Oscillator extends Source{constructor(){super(optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"])),this.name="Oscillator",this._oscillator=null;const e=optionsFromArguments(Oscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),readOnly$1(this,"frequency"),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly$1(this,"detune"),this._partials=e.partials,this._partialCount=e.partialCount,this._type=e.type,e.partialCount&&e.type!=="custom"&&(this._type=this.baseType+e.partialCount.toString()),this.phase=e.phase}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:"sine"})}_start(e){const s=this.toSeconds(e),a=new ToneOscillatorNode({context:this.context,onended:()=>this.onstop(this)});this._oscillator=a,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(s)}_stop(e){const s=this.toSeconds(e);this._oscillator&&this._oscillator.stop(s)}_restart(e){const s=this.toSeconds(e);return this.log("restart",s),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(s),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type==="custom")return Oscillator._periodicWaveCache.find(s=>s.phase===this._phase&&deepEquals(s.partials,this._partials));{const e=Oscillator._periodicWaveCache.find(s=>s.type===this._type&&s.phase===this._phase);return this._partialCount=e?e.partialCount:this._partialCount,e}}get type(){return this._type}set type(e){this._type=e;const s=["sine","square","sawtooth","triangle"].indexOf(e)!==-1;if(this._phase===0&&s)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=e);else{const a=this._getCachedPeriodicWave();if(isDefined(a)){const{partials:c,wave:d}=a;this._wave=d,this._partials=c,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{const[c,d]=this._getRealImaginary(e,this._phase),_=this.context.createPeriodicWave(c,d);this._wave=_,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),Oscillator._periodicWaveCache.push({imag:d,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:c,type:this._type,wave:this._wave}),Oscillator._periodicWaveCache.length>100&&Oscillator._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),"")}set baseType(e){this.partialCount&&this._type!=="custom"&&e!=="custom"?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){assertRange(e,0);let s=this._type;const a=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(a&&(s=a[1]),this._type!=="custom")e===0?this.type=s:this.type=s+e.toString();else{const c=new Float32Array(e);this._partials.forEach((d,_)=>c[_]=d),this._partials=Array.from(c),this.type=this._type}}_getRealImaginary(e,s){let c=2048;const d=new Float32Array(c),_=new Float32Array(c);let b=1;if(e==="custom"){if(b=this._partials.length+1,this._partialCount=this._partials.length,c=b,this._partials.length===0)return[d,_]}else{const k=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);k?(b=parseInt(k[2],10)+1,this._partialCount=parseInt(k[2],10),e=k[1],b=Math.max(b,2),c=b):this._partialCount=0,this._partials=[]}for(let k=1;k>1&1?-1:1):j=0,this._partials[k-1]=j;break;case"custom":j=this._partials[k-1];break;default:throw new TypeError("Oscillator: invalid type: "+e)}j!==0?(d[k]=-j*Math.sin(s*k),_[k]=j*Math.cos(s*k)):(d[k]=0,_[k]=0)}return[d,_]}_inverseFFT(e,s,a){let c=0;const d=e.length;for(let _=0;_a.includes(e));assert(s,"oversampling must be either 'none', '2x', or '4x'"),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}}class AudioToGain extends SignalOperator{constructor(){super(...arguments),this.name="AudioToGain",this._norm=new WaveShaper({context:this.context,mapping:e=>(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Multiply extends Signal{constructor(){super(Object.assign(optionsFromArguments(Multiply.getDefaults(),arguments,["value"]))),this.name="Multiply",this.override=!1;const e=optionsFromArguments(Multiply.getDefaults(),arguments,["value"]);this._mult=this.input=this.output=new Gain$1({context:this.context,minValue:e.minValue,maxValue:e.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(e.value,0)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}}class AMOscillator extends Source{constructor(){super(optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="AMOscillator",this._modulationScale=new AudioToGain({context:this.context}),this._modulationNode=new Gain$1({context:this.context});const e=optionsFromArguments(AMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),readOnly$1(this,["frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}}class FMOscillator extends Source{constructor(){super(optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"])),this.name="FMOscillator",this._modulationNode=new Gain$1({context:this.context,gain:0});const e=optionsFromArguments(FMOscillator.getDefaults(),arguments,["frequency","type","modulationType"]);this._carrier=new Oscillator({context:this.context,detune:e.detune,frequency:0,onstop:()=>this.onstop(this),phase:e.phase,type:e.type}),this.detune=this._carrier.detune,this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this._modulator=new Oscillator({context:this.context,phase:e.phase,type:e.modulationType}),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this.modulationIndex=new Multiply({context:this.context,units:"positive",value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),readOnly$1(this,["modulationIndex","frequency","detune","harmonicity"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:"square"})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}}class PulseOscillator extends Source{constructor(){super(optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"])),this.name="PulseOscillator",this._widthGate=new Gain$1({context:this.context,gain:0}),this._thresh=new WaveShaper({context:this.context,mapping:s=>s<=0?-1:1});const e=optionsFromArguments(PulseOscillator.getDefaults(),arguments,["frequency","width"]);this.width=new Signal({context:this.context,units:"audioRange",value:e.width}),this._triangle=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase,type:"triangle"}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),readOnly$1(this,["width","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,phase:0,type:"pulse",width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return"pulse"}get baseType(){return"pulse"}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}}class FatOscillator extends Source{constructor(){super(optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"])),this.name="FatOscillator",this._oscillators=[];const e=optionsFromArguments(FatOscillator.getDefaults(),arguments,["frequency","type","spread"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this._spread=e.spread,this._type=e.type,this._phase=e.phase,this._partials=e.partials,this._partialCount=e.partialCount,this.count=e.count,readOnly$1(this,["frequency","detune"])}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{count:3,spread:20,type:"sawtooth"})}_start(e){e=this.toSeconds(e),this._forEach(s=>s.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(s=>s.stop(e))}_restart(e){this._forEach(s=>s.restart(e))}_forEach(e){for(let s=0;ss.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){const s=-e/2,a=e/(this._oscillators.length-1);this._forEach((c,d)=>c.detune.value=s+a*d)}}get count(){return this._oscillators.length}set count(e){if(assertRange(e,1),this._oscillators.length!==e){this._forEach(s=>s.dispose()),this._oscillators=[];for(let s=0;sthis.onstop(this):noOp});this.type==="custom"&&(a.partials=this._partials),this.frequency.connect(a.frequency),this.detune.connect(a.detune),a.detune.overridden=!1,a.connect(this.output),this._oscillators[s]=a}this.spread=this._spread,this.state==="started"&&this._forEach(s=>s.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((s,a)=>s.phase=this._phase+a/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(s=>s.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type="custom",this._forEach(s=>s.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(s=>s.partialCount=e),this._type=this._oscillators[0].type}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}}class PWMOscillator extends Source{constructor(){super(optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"])),this.name="PWMOscillator",this.sourceType="pwm",this._scale=new Multiply({context:this.context,value:2});const e=optionsFromArguments(PWMOscillator.getDefaults(),arguments,["frequency","modulationFrequency"]);this._pulse=new PulseOscillator({context:this.context,frequency:e.modulationFrequency}),this._pulse.carrierType="sine",this.modulationFrequency=this._pulse.frequency,this._modulator=new Oscillator({context:this.context,detune:e.detune,frequency:e.frequency,onstop:()=>this.onstop(this),phase:e.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),readOnly$1(this,["modulationFrequency","frequency","detune"])}static getDefaults(){return Object.assign(Source.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:"pwm"})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return"pwm"}get baseType(){return"pwm"}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}}const OmniOscillatorSourceMap={am:AMOscillator,fat:FatOscillator,fm:FMOscillator,oscillator:Oscillator,pulse:PulseOscillator,pwm:PWMOscillator};class OmniOscillator extends Source{constructor(){super(optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"])),this.name="OmniOscillator";const e=optionsFromArguments(OmniOscillator.getDefaults(),arguments,["frequency","type"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),readOnly$1(this,["frequency","detune"]),this.set(e)}static getDefaults(){return Object.assign(Oscillator.getDefaults(),FMOscillator.getDefaults(),AMOscillator.getDefaults(),FatOscillator.getDefaults(),PulseOscillator.getDefaults(),PWMOscillator.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e="";return["am","fm","fat"].some(s=>this._sourceType===s)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)==="fm"?(this._createNewOscillator("fm"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)==="am"?(this._createNewOscillator("am"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)==="fat"?(this._createNewOscillator("fat"),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e==="pwm"?(this._createNewOscillator("pwm"),this._oscillator=this._oscillator):e==="pulse"?this._createNewOscillator("pulse"):(this._createNewOscillator("oscillator"),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,"type")&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;const s=OmniOscillatorSourceMap[e],a=this.now();if(this._oscillator){const c=this._oscillator;c.stop(a),this.context.setTimeout(()=>c.dispose(),this.blockTime)}this._oscillator=new s({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state==="started"&&this._oscillator.start(a)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let s="sine";this._oscillator.type!=="pwm"&&this._oscillator.type!=="pulse"&&(s=this._oscillator.type),e==="fm"?this.type="fm"+s:e==="am"?this.type="am"+s:e==="fat"?this.type="fat"+s:e==="oscillator"?this.type=s:e==="pulse"?this.type="pulse":e==="pwm"&&(this.type="pwm")}_getOscType(e,s){return e instanceof OmniOscillatorSourceMap[s]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,"pulse")&&!this._getOscType(this._oscillator,"pwm")&&e!=="pulse"&&e!=="pwm"&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,"pulse"))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,"fat"))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,"fat")&&isNumber(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))&&isString(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,"fm"))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,"fm")||this._getOscType(this._oscillator,"am"))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,"pwm"))return this._oscillator.modulationFrequency}asArray(e=1024){return __awaiter$4(this,void 0,void 0,function*(){return generateWaveform(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}}class Add extends Signal{constructor(){super(Object.assign(optionsFromArguments(Add.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Add",this._sum=new Gain$1({context:this.context}),this.input=this._sum,this.output=this._sum,this.addend=this._param,connectSeries(this._constantSource,this._sum)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._sum.dispose(),this}}class Scale extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]))),this.name="Scale";const e=optionsFromArguments(Scale.getDefaults(),arguments,["min","max"]);this._mult=this.input=new Multiply({context:this.context,value:e.max-e.min}),this._add=this.output=new Add({context:this.context,value:e.min}),this._min=e.min,this._max=e.max,this.input.connect(this.output)}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{max:1,min:0})}get min(){return this._min}set min(e){this._min=e,this._setRange()}get max(){return this._max}set max(e){this._max=e,this._setRange()}_setRange(){this._add.value=this._min,this._mult.value=this._max-this._min}dispose(){return super.dispose(),this._add.dispose(),this._mult.dispose(),this}}class Zero extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Zero.getDefaults(),arguments))),this.name="Zero",this._gain=new Gain$1({context:this.context}),this.output=this._gain,this.input=void 0,connect(this.context.getConstant(0),this._gain)}dispose(){return super.dispose(),disconnect(this.context.getConstant(0),this._gain),this}}class LFO extends ToneAudioNode{constructor(){super(optionsFromArguments(LFO.getDefaults(),arguments,["frequency","min","max"])),this.name="LFO",this._stoppedValue=0,this._units="number",this.convert=!0,this._fromType=Param.prototype._fromType,this._toType=Param.prototype._toType,this._is=Param.prototype._is,this._clampValue=Param.prototype._clampValue;const e=optionsFromArguments(LFO.getDefaults(),arguments,["frequency","min","max"]);this._oscillator=new Oscillator(e),this.frequency=this._oscillator.frequency,this._amplitudeGain=new Gain$1({context:this.context,gain:e.amplitude,units:"normalRange"}),this.amplitude=this._amplitudeGain.gain,this._stoppedSignal=new Signal({context:this.context,units:"audioRange",value:0}),this._zeros=new Zero({context:this.context}),this._a2g=new AudioToGain({context:this.context}),this._scaler=this.output=new Scale({context:this.context,max:e.max,min:e.min}),this.units=e.units,this.min=e.min,this.max=e.max,this._oscillator.chain(this._amplitudeGain,this._a2g,this._scaler),this._zeros.connect(this._a2g),this._stoppedSignal.connect(this._a2g),readOnly$1(this,["amplitude","frequency"]),this.phase=e.phase}static getDefaults(){return Object.assign(Oscillator.getDefaults(),{amplitude:1,frequency:"4n",max:1,min:0,type:"sine",units:"number"})}start(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(0,e),this._oscillator.start(e),this}stop(e){return e=this.toSeconds(e),this._stoppedSignal.setValueAtTime(this._stoppedValue,e),this._oscillator.stop(e),this}sync(){return this._oscillator.sync(),this._oscillator.syncFrequency(),this}unsync(){return this._oscillator.unsync(),this._oscillator.unsyncFrequency(),this}_setStoppedValue(){this._stoppedValue=this._oscillator.getInitialValue(),this._stoppedSignal.value=this._stoppedValue}get min(){return this._toType(this._scaler.min)}set min(e){e=this._fromType(e),this._scaler.min=e}get max(){return this._toType(this._scaler.max)}set max(e){e=this._fromType(e),this._scaler.max=e}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e,this._setStoppedValue()}get partials(){return this._oscillator.partials}set partials(e){this._oscillator.partials=e,this._setStoppedValue()}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e,this._setStoppedValue()}get units(){return this._units}set units(e){const s=this.min,a=this.max;this._units=e,this.min=s,this.max=a}get state(){return this._oscillator.state}connect(e,s,a){return(e instanceof Param||e instanceof Signal)&&(this.convert=e.convert,this.units=e.units),connectSignal(this,e,s,a),this}dispose(){return super.dispose(),this._oscillator.dispose(),this._stoppedSignal.dispose(),this._zeros.dispose(),this._scaler.dispose(),this._a2g.dispose(),this._amplitudeGain.dispose(),this.amplitude.dispose(),this}}function range(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(d,o,e),s.set(this,d)}})}}function timeRange(o,e=1/0){const s=new WeakMap;return function(a,c){Reflect.defineProperty(a,c,{configurable:!0,enumerable:!0,get:function(){return s.get(this)},set:function(d){assertRange(this.toSeconds(d),o,e),s.set(this,d)}})}}class Player extends Source{constructor(){super(optionsFromArguments(Player.getDefaults(),arguments,["url","onload"])),this.name="Player",this._activeSources=new Set;const e=optionsFromArguments(Player.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer({onload:this._onload.bind(this,e.onload),onerror:e.onerror,reverse:e.reverse,url:e.url}),this.autostart=e.autostart,this._loop=e.loop,this._loopStart=e.loopStart,this._loopEnd=e.loopEnd,this._playbackRate=e.playbackRate,this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:noOp,onerror:noOp,playbackRate:1,reverse:!1})}load(e){return __awaiter$4(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=noOp){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())==="started"&&(this._state.cancel(this.now()),this._state.setStateAtTime("stopped",this.now()))}start(e,s,a){return super.start(e,s,a),this}_start(e,s,a){this._loop?s=defaultArg(s,this._loopStart):s=defaultArg(s,0);const c=this.toSeconds(s),d=a;a=defaultArg(a,Math.max(this._buffer.duration-c,0));let _=this.toSeconds(a);_=_/this._playbackRate,e=this.toSeconds(e);const b=new ToneBufferSource({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+_),this._state.setStateAtTime("stopped",e+_,{implicitEnd:!0})),this._activeSources.add(b),this._loop&&isUndef(d)?b.start(e,c):b.start(e,c,_-this.toSeconds(this.fadeOut))}_stop(e){const s=this.toSeconds(e);this._activeSources.forEach(a=>a.stop(s))}restart(e,s,a){return super.restart(e,s,a),this}_restart(e,s,a){this._stop(e),this._start(e,s,a)}seek(e,s){const a=this.toSeconds(s);if(this._state.getValueAtTime(a)==="started"){const c=this.toSeconds(e);this._stop(a),this._start(a,c)}return this}setLoopPoints(e,s){return this.loopStart=e,this.loopEnd=s,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(s=>{s.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(s=>{s.loop=e}),e)){const s=this._state.getNextState("stopped",this.now());s&&this._state.cancel(s.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;const s=this.now(),a=this._state.getNextState("stopped",s);a&&a.implicitEnd&&(this._state.cancel(a.time),this._activeSources.forEach(c=>c.cancelStop())),this._activeSources.forEach(c=>{c.playbackRate.setValueAtTime(e,s)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}}__decorate([timeRange(0)],Player.prototype,"fadeIn",void 0);__decorate([timeRange(0)],Player.prototype,"fadeOut",void 0);class Players$1 extends ToneAudioNode{constructor(){super(optionsFromArguments(Players$1.getDefaults(),arguments,["urls","onload"],"urls")),this.name="Players",this.input=void 0,this._players=new Map;const e=optionsFromArguments(Players$1.getDefaults(),arguments,["urls","onload"],"urls");this._volume=this.output=new Volume({context:this.context,volume:e.volume}),this.volume=this._volume.volume,readOnly$1(this,"volume"),this._buffers=new ToneAudioBuffers({urls:e.urls,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.mute=e.mute,this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut}static getDefaults(){return Object.assign(Source.getDefaults(),{baseUrl:"",fadeIn:0,fadeOut:0,mute:!1,onload:noOp,onerror:noOp,urls:{},volume:0})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e,this._players.forEach(s=>{s.fadeIn=e})}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e,this._players.forEach(s=>{s.fadeOut=e})}get state(){return Array.from(this._players).some(([s,a])=>a.state==="started")?"started":"stopped"}has(e){return this._buffers.has(e)}player(e){if(assert(this.has(e),`No Player with the name ${e} exists on this object`),!this._players.has(e)){const s=new Player({context:this.context,fadeIn:this._fadeIn,fadeOut:this._fadeOut,url:this._buffers.get(e)}).connect(this.output);this._players.set(e,s)}return this._players.get(e)}get loaded(){return this._buffers.loaded}add(e,s,a){return assert(!this._buffers.has(e),"A buffer with that name already exists on this object"),this._buffers.add(e,s,a),this}stopAll(e){return this._players.forEach(s=>s.stop(e)),this}dispose(){return super.dispose(),this._volume.dispose(),this.volume.dispose(),this._players.forEach(e=>e.dispose()),this._buffers.dispose(),this}}class GrainPlayer extends Source{constructor(){super(optionsFromArguments(GrainPlayer.getDefaults(),arguments,["url","onload"])),this.name="GrainPlayer",this._loopStart=0,this._loopEnd=0,this._activeSources=[];const e=optionsFromArguments(GrainPlayer.getDefaults(),arguments,["url","onload"]);this.buffer=new ToneAudioBuffer({onload:e.onload,onerror:e.onerror,reverse:e.reverse,url:e.url}),this._clock=new Clock({context:this.context,callback:this._tick.bind(this),frequency:1/e.grainSize}),this._playbackRate=e.playbackRate,this._grainSize=e.grainSize,this._overlap=e.overlap,this.detune=e.detune,this.overlap=e.overlap,this.loop=e.loop,this.playbackRate=e.playbackRate,this.grainSize=e.grainSize,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.reverse=e.reverse,this._clock.on("stop",this._onstop.bind(this))}static getDefaults(){return Object.assign(Source.getDefaults(),{onload:noOp,onerror:noOp,overlap:.1,grainSize:.2,playbackRate:1,detune:0,loop:!1,loopStart:0,loopEnd:0,reverse:!1})}_start(e,s,a){s=defaultArg(s,0),s=this.toSeconds(s),e=this.toSeconds(e);const c=1/this._clock.frequency.getValueAtTime(e);this._clock.start(e,s/c),a&&this.stop(e+this.toSeconds(a))}restart(e,s,a){return super.restart(e,s,a),this}_restart(e,s,a){this._stop(e),this._start(e,s,a)}_stop(e){this._clock.stop(e)}_onstop(e){this._activeSources.forEach(s=>{s.fadeOut=0,s.stop(e)}),this.onstop(this)}_tick(e){const s=this._clock.getTicksAtTime(e),a=s*this._grainSize;if(this.log("offset",a),!this.loop&&a>this.buffer.duration){this.stop(e);return}const c=a{const _=this._activeSources.indexOf(d);_!==-1&&this._activeSources.splice(_,1)}}get playbackRate(){return this._playbackRate}set playbackRate(e){assertRange(e,.001),this._playbackRate=e,this.grainSize=this._grainSize}get loopStart(){return this._loopStart}set loopStart(e){this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._loopStart=this.toSeconds(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this.buffer.loaded&&assertRange(this.toSeconds(e),0,this.buffer.duration),this._loopEnd=this.toSeconds(e)}get reverse(){return this.buffer.reverse}set reverse(e){this.buffer.reverse=e}get grainSize(){return this._grainSize}set grainSize(e){this._grainSize=this.toSeconds(e),this._clock.frequency.setValueAtTime(this._playbackRate/this._grainSize,this.now())}get overlap(){return this._overlap}set overlap(e){const s=this.toSeconds(e);assertRange(s,0),this._overlap=s}get loaded(){return this.buffer.loaded}dispose(){return super.dispose(),this.buffer.dispose(),this._clock.dispose(),this._activeSources.forEach(e=>e.dispose()),this}}class Abs extends SignalOperator{constructor(){super(...arguments),this.name="Abs",this._abs=new WaveShaper({context:this.context,mapping:e=>Math.abs(e)<.001?0:Math.abs(e)}),this.input=this._abs,this.output=this._abs}dispose(){return super.dispose(),this._abs.dispose(),this}}class GainToAudio extends SignalOperator{constructor(){super(...arguments),this.name="GainToAudio",this._norm=new WaveShaper({context:this.context,mapping:e=>Math.abs(e)*2-1}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}}class Negate extends SignalOperator{constructor(){super(...arguments),this.name="Negate",this._multiply=new Multiply({context:this.context,value:-1}),this.input=this._multiply,this.output=this._multiply}dispose(){return super.dispose(),this._multiply.dispose(),this}}class Subtract extends Signal{constructor(){super(Object.assign(optionsFromArguments(Subtract.getDefaults(),arguments,["value"]))),this.override=!1,this.name="Subtract",this._sum=new Gain$1({context:this.context}),this.input=this._sum,this.output=this._sum,this._neg=new Negate({context:this.context}),this.subtrahend=this._param,connectSeries(this._constantSource,this._neg,this._sum)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._neg.dispose(),this._sum.dispose(),this}}class GreaterThanZero extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(GreaterThanZero.getDefaults(),arguments))),this.name="GreaterThanZero",this._thresh=this.output=new WaveShaper({context:this.context,length:127,mapping:e=>e<=0?0:1}),this._scale=this.input=new Multiply({context:this.context,value:1e4}),this._scale.connect(this._thresh)}dispose(){return super.dispose(),this._scale.dispose(),this._thresh.dispose(),this}}class GreaterThan extends Signal{constructor(){super(Object.assign(optionsFromArguments(GreaterThan.getDefaults(),arguments,["value"]))),this.name="GreaterThan",this.override=!1;const e=optionsFromArguments(GreaterThan.getDefaults(),arguments,["value"]);this._subtract=this.input=new Subtract({context:this.context,value:e.value}),this._gtz=this.output=new GreaterThanZero({context:this.context}),this.comparator=this._param=this._subtract.subtrahend,readOnly$1(this,"comparator"),this._subtract.connect(this._gtz)}static getDefaults(){return Object.assign(Signal.getDefaults(),{value:0})}dispose(){return super.dispose(),this._gtz.dispose(),this._subtract.dispose(),this.comparator.dispose(),this}}class Pow extends SignalOperator{constructor(){super(Object.assign(optionsFromArguments(Pow.getDefaults(),arguments,["value"]))),this.name="Pow";const e=optionsFromArguments(Pow.getDefaults(),arguments,["value"]);this._exponentScaler=this.input=this.output=new WaveShaper({context:this.context,mapping:this._expFunc(e.value),length:8192}),this._exponent=e.value}static getDefaults(){return Object.assign(SignalOperator.getDefaults(),{value:1})}_expFunc(e){return s=>Math.pow(Math.abs(s),e)}get value(){return this._exponent}set value(e){this._exponent=e,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}}class ScaleExp extends Scale{constructor(){super(Object.assign(optionsFromArguments(ScaleExp.getDefaults(),arguments,["min","max","exponent"]))),this.name="ScaleExp";const e=optionsFromArguments(ScaleExp.getDefaults(),arguments,["min","max","exponent"]);this.input=this._exp=new Pow({context:this.context,value:e.exponent}),this._exp.connect(this._mult)}static getDefaults(){return Object.assign(Scale.getDefaults(),{exponent:1})}get exponent(){return this._exp.value}set exponent(e){this._exp.value=e}dispose(){return super.dispose(),this._exp.dispose(),this}}class SyncedSignal extends Signal{constructor(){super(optionsFromArguments(Signal.getDefaults(),arguments,["value","units"])),this.name="SyncedSignal",this.override=!1;const e=optionsFromArguments(Signal.getDefaults(),arguments,["value","units"]);this._lastVal=e.value,this._synced=this.context.transport.scheduleRepeat(this._onTick.bind(this),"1i"),this._syncedCallback=this._anchorValue.bind(this),this.context.transport.on("start",this._syncedCallback),this.context.transport.on("pause",this._syncedCallback),this.context.transport.on("stop",this._syncedCallback),this._constantSource.disconnect(),this._constantSource.stop(0),this._constantSource=this.output=new ToneConstantSource({context:this.context,offset:e.value,units:e.units}).start(0),this.setValueAtTime(e.value,0)}_onTick(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal!==s&&(this._lastVal=s,this._constantSource.offset.setValueAtTime(s,e))}_anchorValue(e){const s=super.getValueAtTime(this.context.transport.seconds);this._lastVal=s,this._constantSource.offset.cancelAndHoldAtTime(e),this._constantSource.offset.setValueAtTime(s,e)}getValueAtTime(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.getValueAtTime(s)}setValueAtTime(e,s){const a=new TransportTimeClass(this.context,s).toSeconds();return super.setValueAtTime(e,a),this}linearRampToValueAtTime(e,s){const a=new TransportTimeClass(this.context,s).toSeconds();return super.linearRampToValueAtTime(e,a),this}exponentialRampToValueAtTime(e,s){const a=new TransportTimeClass(this.context,s).toSeconds();return super.exponentialRampToValueAtTime(e,a),this}setTargetAtTime(e,s,a){const c=new TransportTimeClass(this.context,s).toSeconds();return super.setTargetAtTime(e,c,a),this}cancelScheduledValues(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.cancelScheduledValues(s),this}setValueCurveAtTime(e,s,a,c){const d=new TransportTimeClass(this.context,s).toSeconds();return a=this.toSeconds(a),super.setValueCurveAtTime(e,d,a,c),this}cancelAndHoldAtTime(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.cancelAndHoldAtTime(s),this}setRampPoint(e){const s=new TransportTimeClass(this.context,e).toSeconds();return super.setRampPoint(s),this}exponentialRampTo(e,s,a){const c=new TransportTimeClass(this.context,a).toSeconds();return super.exponentialRampTo(e,s,c),this}linearRampTo(e,s,a){const c=new TransportTimeClass(this.context,a).toSeconds();return super.linearRampTo(e,s,c),this}targetRampTo(e,s,a){const c=new TransportTimeClass(this.context,a).toSeconds();return super.targetRampTo(e,s,c),this}dispose(){return super.dispose(),this.context.transport.clear(this._synced),this.context.transport.off("start",this._syncedCallback),this.context.transport.off("pause",this._syncedCallback),this.context.transport.off("stop",this._syncedCallback),this._constantSource.dispose(),this}}class Envelope extends ToneAudioNode{constructor(){super(optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="Envelope",this._sig=new Signal({context:this.context,value:0}),this.output=this._sig,this.input=void 0;const e=optionsFromArguments(Envelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve,this.decayCurve=e.decayCurve}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.01,attackCurve:"linear",decay:.1,decayCurve:"exponential",release:1,releaseCurve:"exponential",sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,s){if(isString(e))return e;{let a;for(a in EnvelopeCurves)if(EnvelopeCurves[a][s]===e)return a;return e}}_setCurve(e,s,a){if(isString(a)&&Reflect.has(EnvelopeCurves,a)){const c=EnvelopeCurves[a];isObject(c)?e!=="_decayCurve"&&(this[e]=c[s]):this[e]=c}else if(isArray(a)&&e!=="_decayCurve")this[e]=a;else throw new Error("Envelope: invalid curve: "+a)}get attackCurve(){return this._getCurve(this._attackCurve,"In")}set attackCurve(e){this._setCurve("_attackCurve","In",e)}get releaseCurve(){return this._getCurve(this._releaseCurve,"Out")}set releaseCurve(e){this._setCurve("_releaseCurve","Out",e)}get decayCurve(){return this._decayCurve}set decayCurve(e){assert(["linear","exponential"].some(s=>s===e),`Invalid envelope curve: ${e}`),this._decayCurve=e}triggerAttack(e,s=1){this.log("triggerAttack",e,s),e=this.toSeconds(e);let c=this.toSeconds(this.attack);const d=this.toSeconds(this.decay),_=this.getValueAtTime(e);if(_>0){const b=1/c;c=(1-_)/b}if(c0){const a=this.toSeconds(this.release);a{let e,s;const a=[];for(e=0;e<128;e++)a[e]=Math.sin(e/(128-1)*(Math.PI/2));const c=[],d=6.4;for(e=0;e<128-1;e++){s=e/(128-1);const et=Math.sin(s*(Math.PI*2)*d-Math.PI/2)+1;c[e]=et/10+s*.83}c[128-1]=1;const _=[],b=5;for(e=0;e<128;e++)_[e]=Math.ceil(e/(128-1)*b)/b;const k=[];for(e=0;e<128;e++)s=e/(128-1),k[e]=.5*(1-Math.cos(Math.PI*s));const $=[];for(e=0;e<128;e++){s=e/(128-1);const et=Math.pow(s,3)*4+.2,tt=Math.cos(et*Math.PI*2*s);$[e]=Math.abs(tt*(1-s))}function j(et){const tt=new Array(et.length);for(let nt=0;nt{const d=c[s],_=this.context.transport.schedule(b=>{c[s]=b,a.apply(this,c)},d);this._scheduledEvents.push(_)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease),this}triggerAttackRelease(e,s,a,c){const d=this.toSeconds(a),_=this.toSeconds(s);return this.triggerAttack(e,d,c),this.triggerRelease(d+_),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}}class Monophonic extends Instrument{constructor(){super(optionsFromArguments(Monophonic.getDefaults(),arguments));const e=optionsFromArguments(Monophonic.getDefaults(),arguments);this.portamento=e.portamento,this.onsilence=e.onsilence}static getDefaults(){return Object.assign(Instrument.getDefaults(),{detune:0,onsilence:noOp,portamento:0})}triggerAttack(e,s,a=1){this.log("triggerAttack",e,s,a);const c=this.toSeconds(s);return this._triggerEnvelopeAttack(c,a),this.setNote(e,c),this}triggerRelease(e){this.log("triggerRelease",e);const s=this.toSeconds(e);return this._triggerEnvelopeRelease(s),this}setNote(e,s){const a=this.toSeconds(s),c=e instanceof FrequencyClass?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(a)>.05){const d=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(c,d,a)}else this.frequency.setValueAtTime(c,a);return this}}__decorate([timeRange(0)],Monophonic.prototype,"portamento",void 0);class AmplitudeEnvelope extends Envelope{constructor(){super(optionsFromArguments(AmplitudeEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="AmplitudeEnvelope",this._gainNode=new Gain$1({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}}class Synth$1 extends Monophonic{constructor(){super(optionsFromArguments(Synth$1.getDefaults(),arguments)),this.name="Synth";const e=optionsFromArguments(Synth$1.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign({context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)},e.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},e.envelope)),this.oscillator.chain(this.envelope,this.output),readOnly$1(this,["oscillator","frequency","detune","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"triangle"})})}_triggerEnvelopeAttack(e,s){if(this.envelope.triggerAttack(e,s),this.oscillator.start(e),this.envelope.sustain===0){const a=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+a+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}}class ModulationSynth extends Monophonic{constructor(){super(optionsFromArguments(ModulationSynth.getDefaults(),arguments)),this.name="ModulationSynth";const e=optionsFromArguments(ModulationSynth.getDefaults(),arguments);this._carrier=new Synth$1({context:this.context,oscillator:e.oscillator,envelope:e.envelope,onsilence:()=>this.onsilence(this),volume:-10}),this._modulator=new Synth$1({context:this.context,oscillator:e.modulation,envelope:e.modulationEnvelope,volume:-10}),this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope,this.modulation=this._modulator.oscillator,this.modulationEnvelope=this._modulator.envelope,this.frequency=new Signal({context:this.context,units:"frequency"}),this.detune=new Signal({context:this.context,value:e.detune,units:"cents"}),this.harmonicity=new Multiply({context:this.context,value:e.harmonicity,minValue:0}),this._modulationNode=new Gain$1({context:this.context,gain:0}),readOnly$1(this,["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{harmonicity:3,oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"sine"}),envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.01,decay:.01,sustain:1,release:.5}),modulation:Object.assign(omitFromObject(OmniOscillator.getDefaults(),[...Object.keys(Source.getDefaults()),"frequency","detune"]),{type:"square"}),modulationEnvelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.5,decay:0,sustain:1,release:.5})})}_triggerEnvelopeAttack(e,s){this._carrier._triggerEnvelopeAttack(e,s),this._modulator._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this._carrier._triggerEnvelopeRelease(e),this._modulator._triggerEnvelopeRelease(e),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this._carrier.dispose(),this._modulator.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._modulationNode.dispose(),this}}class AMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments(AMSynth$1.getDefaults(),arguments)),this.name="AMSynth",this._modulationScale=new AudioToGain({context:this.context}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output)}dispose(){return super.dispose(),this._modulationScale.dispose(),this}}class BiquadFilter extends ToneAudioNode{constructor(){super(optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"])),this.name="BiquadFilter";const e=optionsFromArguments(BiquadFilter.getDefaults(),arguments,["frequency","type"]);this._filter=this.context.createBiquadFilter(),this.input=this.output=this._filter,this.Q=new Param({context:this.context,units:"number",value:e.Q,param:this._filter.Q}),this.frequency=new Param({context:this.context,units:"frequency",value:e.frequency,param:this._filter.frequency}),this.detune=new Param({context:this.context,units:"cents",value:e.detune,param:this._filter.detune}),this.gain=new Param({context:this.context,units:"decibels",convert:!1,value:e.gain,param:this._filter.gain}),this.type=e.type}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{Q:1,type:"lowpass",frequency:350,detune:0,gain:0})}get type(){return this._filter.type}set type(e){assert(["lowpass","highpass","bandpass","lowshelf","highshelf","notch","allpass","peaking"].indexOf(e)!==-1,`Invalid filter type: ${e}`),this._filter.type=e}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let _=0;_a.type=e)}get rolloff(){return this._rolloff}set rolloff(e){const s=isNumber(e)?e:parseInt(e,10),a=[-12,-24,-48,-96];let c=a.indexOf(s);assert(c!==-1,`rolloff can only be ${a.join(", ")}`),c+=1,this._rolloff=s,this.input.disconnect(),this._filters.forEach(d=>d.disconnect()),this._filters=new Array(c);for(let d=0;d1);return this._filters.forEach(()=>{s.getFrequencyResponse(e).forEach((d,_)=>a[_]*=d)}),s.dispose(),a}dispose(){return super.dispose(),this._filters.forEach(e=>{e.dispose()}),writable(this,["detune","frequency","gain","Q"]),this.frequency.dispose(),this.Q.dispose(),this.detune.dispose(),this.gain.dispose(),this}}class FrequencyEnvelope extends Envelope{constructor(){super(optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"])),this.name="FrequencyEnvelope";const e=optionsFromArguments(FrequencyEnvelope.getDefaults(),arguments,["attack","decay","sustain","release"]);this._octaves=e.octaves,this._baseFrequency=this.toFrequency(e.baseFrequency),this._exponent=this.input=new Pow({context:this.context,value:e.exponent}),this._scale=this.output=new Scale({context:this.context,min:this._baseFrequency,max:this._baseFrequency*Math.pow(2,this._octaves)}),this._sig.chain(this._exponent,this._scale)}static getDefaults(){return Object.assign(Envelope.getDefaults(),{baseFrequency:200,exponent:1,octaves:4})}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){const s=this.toFrequency(e);assertRange(s,0),this._baseFrequency=s,this._scale.min=this._baseFrequency,this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._scale.max=this._baseFrequency*Math.pow(2,e)}get exponent(){return this._exponent.value}set exponent(e){this._exponent.value=e}dispose(){return super.dispose(),this._exponent.dispose(),this._scale.dispose(),this}}class MonoSynth$1 extends Monophonic{constructor(){super(optionsFromArguments(MonoSynth$1.getDefaults(),arguments)),this.name="MonoSynth";const e=optionsFromArguments(MonoSynth$1.getDefaults(),arguments);this.oscillator=new OmniOscillator(Object.assign(e.oscillator,{context:this.context,detune:e.detune,onstop:()=>this.onsilence(this)})),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.filterEnvelope=new FrequencyEnvelope(Object.assign(e.filterEnvelope,{context:this.context})),this.envelope=new AmplitudeEnvelope(Object.assign(e.envelope,{context:this.context})),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),readOnly$1(this,["oscillator","frequency","detune","filter","filterEnvelope","envelope"])}static getDefaults(){return Object.assign(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.9}),filter:Object.assign(omitFromObject(Filter$1.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{Q:1,rolloff:-12,type:"lowpass"}),filterEnvelope:Object.assign(omitFromObject(FrequencyEnvelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.6,baseFrequency:200,decay:.2,exponent:2,octaves:3,release:2,sustain:.5}),oscillator:Object.assign(omitFromObject(OmniOscillator.getDefaults(),Object.keys(Source.getDefaults())),{type:"sawtooth"})})}_triggerEnvelopeAttack(e,s=1){if(this.envelope.triggerAttack(e,s),this.filterEnvelope.triggerAttack(e),this.oscillator.start(e),this.envelope.sustain===0){const a=this.toSeconds(this.envelope.attack),c=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+a+c)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.filterEnvelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this.filterEnvelope.dispose(),this.filter.dispose(),this}}class DuoSynth$1 extends Monophonic{constructor(){super(optionsFromArguments(DuoSynth$1.getDefaults(),arguments)),this.name="DuoSynth";const e=optionsFromArguments(DuoSynth$1.getDefaults(),arguments);this.voice0=new MonoSynth$1(Object.assign(e.voice0,{context:this.context,onsilence:()=>this.onsilence(this)})),this.voice1=new MonoSynth$1(Object.assign(e.voice1,{context:this.context})),this.harmonicity=new Multiply({context:this.context,units:"positive",value:e.harmonicity}),this._vibrato=new LFO({frequency:e.vibratoRate,context:this.context,min:-50,max:50}),this._vibrato.start(),this.vibratoRate=this._vibrato.frequency,this._vibratoGain=new Gain$1({context:this.context,units:"normalRange",gain:e.vibratoAmount}),this.vibratoAmount=this._vibratoGain.gain,this.frequency=new Signal({context:this.context,units:"frequency",value:440}),this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this.frequency.connect(this.voice0.frequency),this.frequency.chain(this.harmonicity,this.voice1.frequency),this._vibrato.connect(this._vibratoGain),this._vibratoGain.fan(this.voice0.detune,this.voice1.detune),this.detune.fan(this.voice0.detune,this.voice1.detune),this.voice0.connect(this.output),this.voice1.connect(this.output),readOnly$1(this,["voice0","voice1","frequency","vibratoAmount","vibratoRate"])}getLevelAtTime(e){return e=this.toSeconds(e),this.voice0.envelope.getValueAtTime(e)+this.voice1.envelope.getValueAtTime(e)}static getDefaults(){return deepMerge(Monophonic.getDefaults(),{vibratoAmount:.5,vibratoRate:5,harmonicity:1.5,voice0:deepMerge(omitFromObject(MonoSynth$1.getDefaults(),Object.keys(Monophonic.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}}),voice1:deepMerge(omitFromObject(MonoSynth$1.getDefaults(),Object.keys(Monophonic.getDefaults())),{filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}})})}_triggerEnvelopeAttack(e,s){this.voice0._triggerEnvelopeAttack(e,s),this.voice1._triggerEnvelopeAttack(e,s)}_triggerEnvelopeRelease(e){return this.voice0._triggerEnvelopeRelease(e),this.voice1._triggerEnvelopeRelease(e),this}dispose(){return super.dispose(),this.voice0.dispose(),this.voice1.dispose(),this.frequency.dispose(),this.detune.dispose(),this._vibrato.dispose(),this.vibratoRate.dispose(),this._vibratoGain.dispose(),this.harmonicity.dispose(),this}}class FMSynth$1 extends ModulationSynth{constructor(){super(optionsFromArguments(FMSynth$1.getDefaults(),arguments)),this.name="FMSynth";const e=optionsFromArguments(FMSynth$1.getDefaults(),arguments);this.modulationIndex=new Multiply({context:this.context,value:e.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output)}static getDefaults(){return Object.assign(ModulationSynth.getDefaults(),{modulationIndex:10})}dispose(){return super.dispose(),this.modulationIndex.dispose(),this}}const inharmRatios=[1,1.483,1.932,2.546,2.63,3.897];class MetalSynth$1 extends Monophonic{constructor(){super(optionsFromArguments(MetalSynth$1.getDefaults(),arguments)),this.name="MetalSynth",this._oscillators=[],this._freqMultipliers=[];const e=optionsFromArguments(MetalSynth$1.getDefaults(),arguments);this.detune=new Signal({context:this.context,units:"cents",value:e.detune}),this.frequency=new Signal({context:this.context,units:"frequency"}),this._amplitude=new Gain$1({context:this.context,gain:0}).connect(this.output),this._highpass=new Filter$1({Q:0,context:this.context,type:"highpass"}).connect(this._amplitude);for(let s=0;sthis.onsilence(this):noOp,type:"square"});a.connect(this._highpass),this._oscillators[s]=a;const c=new Multiply({context:this.context,value:inharmRatios[s]});this._freqMultipliers[s]=c,this.frequency.chain(c,a.frequency),this.detune.connect(a.detune)}this._filterFreqScaler=new Scale({context:this.context,max:7e3,min:this.toFrequency(e.resonance)}),this.envelope=new Envelope({attack:e.envelope.attack,attackCurve:"linear",context:this.context,decay:e.envelope.decay,release:e.envelope.release,sustain:0}),this.envelope.chain(this._filterFreqScaler,this._highpass.frequency),this.envelope.connect(this._amplitude.gain),this._octaves=e.octaves,this.octaves=e.octaves}static getDefaults(){return deepMerge(Monophonic.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{attack:.001,decay:1.4,release:.2}),harmonicity:5.1,modulationIndex:32,octaves:1.5,resonance:4e3})}_triggerEnvelopeAttack(e,s=1){return this.envelope.triggerAttack(e,s),this._oscillators.forEach(a=>a.start(e)),this.envelope.sustain===0&&this._oscillators.forEach(a=>{a.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay))}),this}_triggerEnvelopeRelease(e){return this.envelope.triggerRelease(e),this._oscillators.forEach(s=>s.stop(e+this.toSeconds(this.envelope.release))),this}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}get modulationIndex(){return this._oscillators[0].modulationIndex.value}set modulationIndex(e){this._oscillators.forEach(s=>s.modulationIndex.value=e)}get harmonicity(){return this._oscillators[0].harmonicity.value}set harmonicity(e){this._oscillators.forEach(s=>s.harmonicity.value=e)}get resonance(){return this._filterFreqScaler.min}set resonance(e){this._filterFreqScaler.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._filterFreqScaler.max=this._filterFreqScaler.min*Math.pow(2,e)}dispose(){return super.dispose(),this._oscillators.forEach(e=>e.dispose()),this._freqMultipliers.forEach(e=>e.dispose()),this.frequency.dispose(),this.detune.dispose(),this._filterFreqScaler.dispose(),this._amplitude.dispose(),this.envelope.dispose(),this._highpass.dispose(),this}}class MembraneSynth$1 extends Synth$1{constructor(){super(optionsFromArguments(MembraneSynth$1.getDefaults(),arguments)),this.name="MembraneSynth",this.portamento=0;const e=optionsFromArguments(MembraneSynth$1.getDefaults(),arguments);this.pitchDecay=e.pitchDecay,this.octaves=e.octaves,readOnly$1(this,["oscillator","envelope"])}static getDefaults(){return deepMerge(Monophonic.getDefaults(),Synth$1.getDefaults(),{envelope:{attack:.001,attackCurve:"exponential",decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:"sine"},pitchDecay:.05})}setNote(e,s){const a=this.toSeconds(s),c=this.toFrequency(e instanceof FrequencyClass?e.toFrequency():e),d=c*this.octaves;return this.oscillator.frequency.setValueAtTime(d,a),this.oscillator.frequency.exponentialRampToValueAtTime(c,a+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}}__decorate([range(0)],MembraneSynth$1.prototype,"octaves",void 0);__decorate([timeRange(0)],MembraneSynth$1.prototype,"pitchDecay",void 0);class NoiseSynth$1 extends Instrument{constructor(){super(optionsFromArguments(NoiseSynth$1.getDefaults(),arguments)),this.name="NoiseSynth";const e=optionsFromArguments(NoiseSynth$1.getDefaults(),arguments);this.noise=new Noise(Object.assign({context:this.context},e.noise)),this.envelope=new AmplitudeEnvelope(Object.assign({context:this.context},e.envelope)),this.noise.chain(this.envelope,this.output)}static getDefaults(){return Object.assign(Instrument.getDefaults(),{envelope:Object.assign(omitFromObject(Envelope.getDefaults(),Object.keys(ToneAudioNode.getDefaults())),{decay:.1,sustain:0}),noise:Object.assign(omitFromObject(Noise.getDefaults(),Object.keys(Source.getDefaults())),{type:"white"})})}triggerAttack(e,s=1){return e=this.toSeconds(e),this.envelope.triggerAttack(e,s),this.noise.start(e),this.envelope.sustain===0&&this.noise.stop(e+this.toSeconds(this.envelope.attack)+this.toSeconds(this.envelope.decay)),this}triggerRelease(e){return e=this.toSeconds(e),this.envelope.triggerRelease(e),this.noise.stop(e+this.toSeconds(this.envelope.release)),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",0),this._syncMethod("triggerRelease",0)),this}triggerAttackRelease(e,s,a=1){return s=this.toSeconds(s),e=this.toSeconds(e),this.triggerAttack(s,a),this.triggerRelease(s+e),this}dispose(){return super.dispose(),this.noise.dispose(),this.envelope.dispose(),this}}const workletContext=new Set;function addToWorklet(o){workletContext.add(o)}function registerProcessor(o,e){const s=`registerProcessor("${o}", ${e})`;workletContext.add(s)}function getWorkletGlobalScope(){return Array.from(workletContext).join(` +`)}class ToneAudioWorklet extends ToneAudioNode{constructor(e){super(e),this.name="ToneAudioWorklet",this.workletOptions={},this.onprocessorerror=noOp;const s=URL.createObjectURL(new Blob([getWorkletGlobalScope()],{type:"text/javascript"})),a=this._audioWorkletName();this._dummyGain=this.context.createGain(),this._dummyParam=this._dummyGain.gain,this.context.addAudioWorkletModule(s,a).then(()=>{this.disposed||(this._worklet=this.context.createAudioWorkletNode(a,this.workletOptions),this._worklet.onprocessorerror=this.onprocessorerror.bind(this),this.onReady(this._worklet))})}dispose(){return super.dispose(),this._dummyGain.disconnect(),this._worklet&&(this._worklet.port.postMessage("dispose"),this._worklet.disconnect()),this}}const toneAudioWorkletProcessor=` /** * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. */ @@ -508,7 +245,7 @@ PERFORMANCE OF THIS SOFTWARE. return delayedSample; } } -`;registerProcessor(workletName$1,feedbackCombFilter);class Sampler extends Instrument{constructor(){super(optionsFromArguments(Sampler.getDefaults(),arguments,["urls","onload","baseUrl"],"urls")),this.name="Sampler",this._activeSources=new Map;const e=optionsFromArguments(Sampler.getDefaults(),arguments,["urls","onload","baseUrl"],"urls"),s={};Object.keys(e.urls).forEach(a=>{const c=parseInt(a,10);if(assert(isNote(a)||isNumber(c)&&isFinite(c),`url key is neither a note or midi pitch: ${a}`),isNote(a)){const d=new FrequencyClass(this.context,a).toMidi();s[d]=e.urls[a]}else isNumber(c)&&isFinite(c)&&(s[c]=e.urls[c])}),this._buffers=new ToneAudioBuffers({urls:s,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.attack=e.attack,this.release=e.release,this.curve=e.curve,this._buffers.loaded&&Promise.resolve().then(e.onload)}static getDefaults(){return Object.assign(Instrument.getDefaults(),{attack:0,baseUrl:"",curve:"exponential",onload:noOp,onerror:noOp,release:.1,urls:{}})}_findClosest(e){let a=0;for(;a<96;){if(this._buffers.has(e+a))return-a;if(this._buffers.has(e-a))return a;a++}throw new Error(`No available buffers for note: ${e}`)}triggerAttack(e,s,a=1){return this.log("triggerAttack",e,s,a),Array.isArray(e)||(e=[e]),e.forEach(c=>{const d=ftomf(new FrequencyClass(this.context,c).toFrequency()),_=Math.round(d),b=d-_,k=this._findClosest(_),$=_-k,j=this._buffers.get($),_e=intervalToFrequencyRatio(k+b),et=new ToneBufferSource({url:j,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:_e}).connect(this.output);et.start(s,0,j.duration/_e,a),isArray(this._activeSources.get(_))||this._activeSources.set(_,[]),this._activeSources.get(_).push(et),et.onended=()=>{if(this._activeSources&&this._activeSources.has(_)){const tt=this._activeSources.get(_),nt=tt.indexOf(et);nt!==-1&&tt.splice(nt,1)}}}),this}triggerRelease(e,s){return this.log("triggerRelease",e,s),Array.isArray(e)||(e=[e]),e.forEach(a=>{const c=new FrequencyClass(this.context,a).toMidi();if(this._activeSources.has(c)&&this._activeSources.get(c).length){const d=this._activeSources.get(c);s=this.toSeconds(s),d.forEach(_=>{_.stop(s)}),this._activeSources.set(c,[])}}),this}releaseAll(e){const s=this.toSeconds(e);return this._activeSources.forEach(a=>{for(;a.length;)a.shift().stop(s)}),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}triggerAttackRelease(e,s,a,c=1){const d=this.toSeconds(a);return this.triggerAttack(e,d,c),isArray(s)?(assert(isArray(e),"notes must be an array when duration is array"),e.forEach((_,b)=>{const k=s[Math.min(b,s.length-1)];this.triggerRelease(_,d+this.toSeconds(k))})):this.triggerRelease(e,d+this.toSeconds(s)),this}add(e,s,a){if(assert(isNote(e)||isFinite(e),`note must be a pitch or midi: ${e}`),isNote(e)){const c=new FrequencyClass(this.context,e).toMidi();this._buffers.add(c,s,a)}else this._buffers.add(e,s,a);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(s=>s.dispose())}),this._activeSources.clear(),this}}__decorate([timeRange(0)],Sampler.prototype,"attack",void 0);__decorate([timeRange(0)],Sampler.prototype,"release",void 0);class Panner extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Panner.getDefaults(),arguments,["pan"]))),this.name="Panner",this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner;const e=optionsFromArguments(Panner.getDefaults(),arguments,["pan"]);this.pan=new Param({context:this.context,param:this._panner.pan,value:e.pan,minValue:-1,maxValue:1}),this._panner.channelCount=e.channelCount,this._panner.channelCountMode="explicit",readOnly(this,"pan")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}}const workletName="bit-crusher",bitCrusherWorklet=` +`;registerProcessor(workletName$1,feedbackCombFilter);class FeedbackCombFilter extends ToneAudioWorklet{constructor(){super(optionsFromArguments(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"])),this.name="FeedbackCombFilter";const e=optionsFromArguments(FeedbackCombFilter.getDefaults(),arguments,["delayTime","resonance"]);this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this.delayTime=new Param({context:this.context,value:e.delayTime,units:"time",minValue:0,maxValue:1,param:this._dummyParam,swappable:!0}),this.resonance=new Param({context:this.context,value:e.resonance,units:"normalRange",param:this._dummyParam,swappable:!0}),readOnly$1(this,["resonance","delayTime"])}_audioWorkletName(){return workletName$1}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{delayTime:.1,resonance:.5})}onReady(e){connectSeries(this.input,e,this.output);const s=e.parameters.get("delayTime");this.delayTime.setParam(s);const a=e.parameters.get("feedback");this.resonance.setParam(a)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.delayTime.dispose(),this.resonance.dispose(),this}}class OnePoleFilter extends ToneAudioNode{constructor(){super(optionsFromArguments(OnePoleFilter.getDefaults(),arguments,["frequency","type"])),this.name="OnePoleFilter";const e=optionsFromArguments(OnePoleFilter.getDefaults(),arguments,["frequency","type"]);this._frequency=e.frequency,this._type=e.type,this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this._createFilter()}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{frequency:880,type:"lowpass"})}_createFilter(){const e=this._filter,s=this.toFrequency(this._frequency),a=1/(2*Math.PI*s);if(this._type==="lowpass"){const c=1/(a*this.context.sampleRate),d=c-1;this._filter=this.context.createIIRFilter([c,0],[1,d])}else{const c=1/(a*this.context.sampleRate)-1;this._filter=this.context.createIIRFilter([1,-1],[1,c])}this.input.chain(this._filter,this.output),e&&this.context.setTimeout(()=>{this.disposed||(this.input.disconnect(e),e.disconnect())},this.blockTime)}get frequency(){return this._frequency}set frequency(e){this._frequency=e,this._createFilter()}get type(){return this._type}set type(e){this._type=e,this._createFilter()}getFrequencyResponse(e=128){const s=new Float32Array(e);for(let d=0;da.voice===e);this._activeVoices.splice(s,1)}_getNextAvailableVoice(){if(this._availableVoices.length)return this._availableVoices.shift();if(this._voices.lengthMath.ceil(this._averageActiveVoices+1)){const e=this._availableVoices.shift(),s=this._voices.indexOf(e);this._voices.splice(s,1),this.context.isOffline||e.dispose()}}_triggerAttack(e,s,a){e.forEach(c=>{const d=new MidiClass(this.context,c).toMidi(),_=this._getNextAvailableVoice();_&&(_.triggerAttack(c,s,a),this._activeVoices.push({midi:d,voice:_,released:!1}),this.log("triggerAttack",c,s))})}_triggerRelease(e,s){e.forEach(a=>{const c=new MidiClass(this.context,a).toMidi(),d=this._activeVoices.find(({midi:_,released:b})=>_===c&&!b);d&&(d.voice.triggerRelease(s),d.released=!0,this.log("triggerRelease",a,s))})}_scheduleEvent(e,s,a,c){assert(!this.disposed,"Synth was already disposed"),a<=this.now()?e==="attack"?this._triggerAttack(s,a,c):this._triggerRelease(s,a):this.context.setTimeout(()=>{this._scheduleEvent(e,s,a,c)},a-this.now())}triggerAttack(e,s,a){Array.isArray(e)||(e=[e]);const c=this.toSeconds(s);return this._scheduleEvent("attack",e,c,a),this}triggerRelease(e,s){Array.isArray(e)||(e=[e]);const a=this.toSeconds(s);return this._scheduleEvent("release",e,a),this}triggerAttackRelease(e,s,a,c){const d=this.toSeconds(a);if(this.triggerAttack(e,d,c),isArray(s)){assert(isArray(e),"If the duration is an array, the notes must also be an array"),e=e;for(let _=0;_0,"The duration must be greater than 0"),this.triggerRelease(e[_],d+k)}}else{const _=this.toSeconds(s);assert(_>0,"The duration must be greater than 0"),this.triggerRelease(e,d+_)}return this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}set(e){const s=omitFromObject(e,["onsilence","context"]);return this.options=deepMerge(this.options,s),this._voices.forEach(a=>a.set(s)),this._dummyVoice.set(s),this}get(){return this._dummyVoice.get()}releaseAll(e){const s=this.toSeconds(e);return this._activeVoices.forEach(({voice:a})=>{a.triggerRelease(s)}),this}dispose(){return super.dispose(),this._dummyVoice.dispose(),this._voices.forEach(e=>e.dispose()),this._activeVoices=[],this._availableVoices=[],this.context.clearInterval(this._gcTimeout),this}}class Sampler$1 extends Instrument{constructor(){super(optionsFromArguments(Sampler$1.getDefaults(),arguments,["urls","onload","baseUrl"],"urls")),this.name="Sampler",this._activeSources=new Map;const e=optionsFromArguments(Sampler$1.getDefaults(),arguments,["urls","onload","baseUrl"],"urls"),s={};Object.keys(e.urls).forEach(a=>{const c=parseInt(a,10);if(assert(isNote$2(a)||isNumber(c)&&isFinite(c),`url key is neither a note or midi pitch: ${a}`),isNote$2(a)){const d=new FrequencyClass(this.context,a).toMidi();s[d]=e.urls[a]}else isNumber(c)&&isFinite(c)&&(s[c]=e.urls[c])}),this._buffers=new ToneAudioBuffers({urls:s,onload:e.onload,baseUrl:e.baseUrl,onerror:e.onerror}),this.attack=e.attack,this.release=e.release,this.curve=e.curve,this._buffers.loaded&&Promise.resolve().then(e.onload)}static getDefaults(){return Object.assign(Instrument.getDefaults(),{attack:0,baseUrl:"",curve:"exponential",onload:noOp,onerror:noOp,release:.1,urls:{}})}_findClosest(e){let a=0;for(;a<96;){if(this._buffers.has(e+a))return-a;if(this._buffers.has(e-a))return a;a++}throw new Error(`No available buffers for note: ${e}`)}triggerAttack(e,s,a=1){return this.log("triggerAttack",e,s,a),Array.isArray(e)||(e=[e]),e.forEach(c=>{const d=ftomf(new FrequencyClass(this.context,c).toFrequency()),_=Math.round(d),b=d-_,k=this._findClosest(_),$=_-k,j=this._buffers.get($),_e=intervalToFrequencyRatio(k+b),et=new ToneBufferSource({url:j,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:_e}).connect(this.output);et.start(s,0,j.duration/_e,a),isArray(this._activeSources.get(_))||this._activeSources.set(_,[]),this._activeSources.get(_).push(et),et.onended=()=>{if(this._activeSources&&this._activeSources.has(_)){const tt=this._activeSources.get(_),nt=tt.indexOf(et);nt!==-1&&tt.splice(nt,1)}}}),this}triggerRelease(e,s){return this.log("triggerRelease",e,s),Array.isArray(e)||(e=[e]),e.forEach(a=>{const c=new FrequencyClass(this.context,a).toMidi();if(this._activeSources.has(c)&&this._activeSources.get(c).length){const d=this._activeSources.get(c);s=this.toSeconds(s),d.forEach(_=>{_.stop(s)}),this._activeSources.set(c,[])}}),this}releaseAll(e){const s=this.toSeconds(e);return this._activeSources.forEach(a=>{for(;a.length;)a.shift().stop(s)}),this}sync(){return this._syncState()&&(this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1)),this}triggerAttackRelease(e,s,a,c=1){const d=this.toSeconds(a);return this.triggerAttack(e,d,c),isArray(s)?(assert(isArray(e),"notes must be an array when duration is array"),e.forEach((_,b)=>{const k=s[Math.min(b,s.length-1)];this.triggerRelease(_,d+this.toSeconds(k))})):this.triggerRelease(e,d+this.toSeconds(s)),this}add(e,s,a){if(assert(isNote$2(e)||isFinite(e),`note must be a pitch or midi: ${e}`),isNote$2(e)){const c=new FrequencyClass(this.context,e).toMidi();this._buffers.add(c,s,a)}else this._buffers.add(e,s,a);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(s=>s.dispose())}),this._activeSources.clear(),this}}__decorate([timeRange(0)],Sampler$1.prototype,"attack",void 0);__decorate([timeRange(0)],Sampler$1.prototype,"release",void 0);class ToneEvent extends ToneWithContext{constructor(){super(optionsFromArguments(ToneEvent.getDefaults(),arguments,["callback","value"])),this.name="ToneEvent",this._state=new StateTimeline("stopped"),this._startOffset=0;const e=optionsFromArguments(ToneEvent.getDefaults(),arguments,["callback","value"]);this._loop=e.loop,this.callback=e.callback,this.value=e.value,this._loopStart=this.toTicks(e.loopStart),this._loopEnd=this.toTicks(e.loopEnd),this._playbackRate=e.playbackRate,this._probability=e.probability,this._humanize=e.humanize,this.mute=e.mute,this._playbackRate=e.playbackRate,this._state.increasing=!0,this._rescheduleEvents()}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{callback:noOp,humanize:!1,loop:!1,loopEnd:"1m",loopStart:0,mute:!1,playbackRate:1,probability:1,value:null})}_rescheduleEvents(e=-1){this._state.forEachFrom(e,s=>{let a;if(s.state==="started"){s.id!==-1&&this.context.transport.clear(s.id);const c=s.time+Math.round(this.startOffset/this._playbackRate);if(this._loop===!0||isNumber(this._loop)&&this._loop>1){a=1/0,isNumber(this._loop)&&(a=this._loop*this._getLoopDuration());const d=this._state.getAfter(c);d!==null&&(a=Math.min(a,d.time-c)),a!==1/0&&(this._state.setStateAtTime("stopped",c+a+1,{id:-1}),a=new TicksClass(this.context,a));const _=new TicksClass(this.context,this._getLoopDuration());s.id=this.context.transport.scheduleRepeat(this._tick.bind(this),_,new TicksClass(this.context,c),a)}else s.id=this.context.transport.schedule(this._tick.bind(this),new TicksClass(this.context,c))}})}get state(){return this._state.getValueAtTime(this.context.transport.ticks)}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e}get probability(){return this._probability}set probability(e){this._probability=e}get humanize(){return this._humanize}set humanize(e){this._humanize=e}start(e){const s=this.toTicks(e);return this._state.getValueAtTime(s)==="stopped"&&(this._state.add({id:-1,state:"started",time:s}),this._rescheduleEvents(s)),this}stop(e){this.cancel(e);const s=this.toTicks(e);if(this._state.getValueAtTime(s)==="started"){this._state.setStateAtTime("stopped",s,{id:-1});const a=this._state.getBefore(s);let c=s;a!==null&&(c=a.time),this._rescheduleEvents(c)}return this}cancel(e){e=defaultArg(e,-1/0);const s=this.toTicks(e);return this._state.forEachFrom(s,a=>{this.context.transport.clear(a.id)}),this._state.cancel(s),this}_tick(e){const s=this.context.transport.getTicksAtTime(e);if(!this.mute&&this._state.getValueAtTime(s)==="started"){if(this.probability<1&&Math.random()>this.probability)return;if(this.humanize){let a=.02;isBoolean(this.humanize)||(a=this.toSeconds(this.humanize)),e+=(Math.random()*2-1)*a}this.callback(e,this.value)}}_getLoopDuration(){return Math.round((this._loopEnd-this._loopStart)/this._playbackRate)}get loop(){return this._loop}set loop(e){this._loop=e,this._rescheduleEvents()}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._rescheduleEvents()}get loopEnd(){return new TicksClass(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._rescheduleEvents()}get loopStart(){return new TicksClass(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._rescheduleEvents()}get progress(){if(this._loop){const e=this.context.transport.ticks,s=this._state.get(e);if(s!==null&&s.state==="started"){const a=this._getLoopDuration();return(e-s.time)%a/a}else return 0}else return 0}dispose(){return super.dispose(),this.cancel(),this._state.dispose(),this}}class Loop extends ToneWithContext{constructor(){super(optionsFromArguments(Loop.getDefaults(),arguments,["callback","interval"])),this.name="Loop";const e=optionsFromArguments(Loop.getDefaults(),arguments,["callback","interval"]);this._event=new ToneEvent({context:this.context,callback:this._tick.bind(this),loop:!0,loopEnd:e.interval,playbackRate:e.playbackRate,probability:e.probability}),this.callback=e.callback,this.iterations=e.iterations}static getDefaults(){return Object.assign(ToneWithContext.getDefaults(),{interval:"4n",callback:noOp,playbackRate:1,iterations:1/0,probability:1,mute:!1,humanize:!1})}start(e){return this._event.start(e),this}stop(e){return this._event.stop(e),this}cancel(e){return this._event.cancel(e),this}_tick(e){this.callback(e)}get state(){return this._event.state}get progress(){return this._event.progress}get interval(){return this._event.loopEnd}set interval(e){this._event.loopEnd=e}get playbackRate(){return this._event.playbackRate}set playbackRate(e){this._event.playbackRate=e}get humanize(){return this._event.humanize}set humanize(e){this._event.humanize=e}get probability(){return this._event.probability}set probability(e){this._event.probability=e}get mute(){return this._event.mute}set mute(e){this._event.mute=e}get iterations(){return this._event.loop===!0?1/0:this._event.loop}set iterations(e){e===1/0?this._event.loop=!0:this._event.loop=e}dispose(){return super.dispose(),this._event.dispose(),this}}class Part extends ToneEvent{constructor(){super(optionsFromArguments(Part.getDefaults(),arguments,["callback","events"])),this.name="Part",this._state=new StateTimeline("stopped"),this._events=new Set;const e=optionsFromArguments(Part.getDefaults(),arguments,["callback","events"]);this._state.increasing=!0,e.events.forEach(s=>{isArray(s)?this.add(s[0],s[1]):this.add(s)})}static getDefaults(){return Object.assign(ToneEvent.getDefaults(),{events:[]})}start(e,s){const a=this.toTicks(e);if(this._state.getValueAtTime(a)!=="started"){s=defaultArg(s,this._loop?this._loopStart:0),this._loop?s=defaultArg(s,this._loopStart):s=defaultArg(s,0);const c=this.toTicks(s);this._state.add({id:-1,offset:c,state:"started",time:a}),this._forEach(d=>{this._startNote(d,a,c)})}return this}_startNote(e,s,a){s-=a,this._loop?e.startOffset>=this._loopStart&&e.startOffset=a&&(e.loop=!1,e.start(new TicksClass(this.context,s))):e.startOffset>=a&&e.start(new TicksClass(this.context,s))}get startOffset(){return this._startOffset}set startOffset(e){this._startOffset=e,this._forEach(s=>{s.startOffset+=this._startOffset})}stop(e){const s=this.toTicks(e);return this._state.cancel(s),this._state.setStateAtTime("stopped",s),this._forEach(a=>{a.stop(e)}),this}at(e,s){const a=new TransportTimeClass(this.context,e).toTicks(),c=new TicksClass(this.context,1).toSeconds(),d=this._events.values();let _=d.next();for(;!_.done;){const b=_.value;if(Math.abs(a-b.startOffset){s.state==="started"?this._startNote(e,s.time,s.offset):e.stop(new TicksClass(this.context,s.time))})}remove(e,s){return isObject(e)&&e.hasOwnProperty("time")&&(s=e,e=s.time),e=this.toTicks(e),this._events.forEach(a=>{a.startOffset===e&&(isUndef(s)||isDefined(s)&&a.value===s)&&(this._events.delete(a),a.dispose())}),this}clear(){return this._forEach(e=>e.dispose()),this._events.clear(),this}cancel(e){return this._forEach(s=>s.cancel(e)),this._state.cancel(this.toTicks(e)),this}_forEach(e){return this._events&&this._events.forEach(s=>{s instanceof Part?s._forEach(e):e(s)}),this}_setAll(e,s){this._forEach(a=>{a[e]=s})}_tick(e,s){this.mute||this.callback(e,s)}_testLoopBoundries(e){this._loop&&(e.startOffset=this._loopEnd)?e.cancel(0):e.state==="stopped"&&this._restartEvent(e)}get probability(){return this._probability}set probability(e){this._probability=e,this._setAll("probability",e)}get humanize(){return this._humanize}set humanize(e){this._humanize=e,this._setAll("humanize",e)}get loop(){return this._loop}set loop(e){this._loop=e,this._forEach(s=>{s.loopStart=this.loopStart,s.loopEnd=this.loopEnd,s.loop=e,this._testLoopBoundries(s)})}get loopEnd(){return new TicksClass(this.context,this._loopEnd).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopEnd=e,this._testLoopBoundries(s)})}get loopStart(){return new TicksClass(this.context,this._loopStart).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e),this._loop&&this._forEach(s=>{s.loopStart=this.loopStart,this._testLoopBoundries(s)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this._setAll("playbackRate",e)}get length(){return this._events.size}dispose(){return super.dispose(),this.clear(),this}}function*upPatternGen(o){let e=0;for(;e=0;)e=clampToArraySize(e,o),yield o[e],e--}function*infiniteGen(o,e){for(;;)yield*e(o)}function clampToArraySize(o,e){return clamp(o,0,e.length-1)}function*alternatingGenerator(o,e){let s=e?0:o.length-1;for(;;)s=clampToArraySize(s,o),yield o[s],e?(s++,s>=o.length-1&&(e=!1)):(s--,s<=0&&(e=!0))}function*jumpUp(o){let e=0,s=0;for(;e=0;)e=clampToArraySize(e,o),yield o[e],s++,e+=s%2?-2:1}function*randomGen(o){for(;;){const e=Math.floor(Math.random()*o.length);yield o[e]}}function*randomOnce(o){const e=[];for(let s=0;s0;){const s=e.splice(Math.floor(e.length*Math.random()),1),a=clampToArraySize(s[0],o);yield o[a]}}function*randomWalk(o){let e=Math.floor(Math.random()*o.length);for(;;)e===0?e++:e===o.length-1||Math.random()<.5?e--:e++,yield o[e]}function*PatternGenerator(o,e="up",s=0){switch(assert(o.length>0,"The array must have more than one value in it"),e){case"up":yield*infiniteGen(o,upPatternGen);case"down":yield*infiniteGen(o,downPatternGen);case"upDown":yield*alternatingGenerator(o,!0);case"downUp":yield*alternatingGenerator(o,!1);case"alternateUp":yield*infiniteGen(o,jumpUp);case"alternateDown":yield*infiniteGen(o,jumpDown);case"random":yield*randomGen(o);case"randomOnce":yield*infiniteGen(o,randomOnce);case"randomWalk":yield*randomWalk(o)}}class Pattern$3 extends Loop{constructor(){super(optionsFromArguments(Pattern$3.getDefaults(),arguments,["callback","values","pattern"])),this.name="Pattern";const e=optionsFromArguments(Pattern$3.getDefaults(),arguments,["callback","values","pattern"]);this.callback=e.callback,this._values=e.values,this._pattern=PatternGenerator(e.values,e.pattern),this._type=e.pattern}static getDefaults(){return Object.assign(Loop.getDefaults(),{pattern:"up",values:[],callback:noOp})}_tick(e){const s=this._pattern.next();this._value=s.value,this.callback(e,this._value)}get values(){return this._values}set values(e){this._values=e,this.pattern=this._type}get value(){return this._value}get pattern(){return this._type}set pattern(e){this._type=e,this._pattern=PatternGenerator(this._values,this._type)}}class Sequence extends ToneEvent{constructor(){super(optionsFromArguments(Sequence.getDefaults(),arguments,["callback","events","subdivision"])),this.name="Sequence",this._part=new Part({callback:this._seqCallback.bind(this),context:this.context}),this._events=[],this._eventsArray=[];const e=optionsFromArguments(Sequence.getDefaults(),arguments,["callback","events","subdivision"]);this._subdivision=this.toTicks(e.subdivision),this.events=e.events,this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.playbackRate=e.playbackRate,this.probability=e.probability,this.humanize=e.humanize,this.mute=e.mute,this.playbackRate=e.playbackRate}static getDefaults(){return Object.assign(omitFromObject(ToneEvent.getDefaults(),["value"]),{events:[],loop:!0,loopEnd:0,loopStart:0,subdivision:"8n"})}_seqCallback(e,s){s!==null&&this.callback(e,s)}get events(){return this._events}set events(e){this.clear(),this._eventsArray=e,this._events=this._createSequence(this._eventsArray),this._eventsUpdated()}start(e,s){return this._part.start(e,s&&this._indexTime(s)),this}stop(e){return this._part.stop(e),this}get subdivision(){return new TicksClass(this.context,this._subdivision).toSeconds()}_createSequence(e){return new Proxy(e,{get:(s,a)=>s[a],set:(s,a,c)=>(isString(a)&&isFinite(parseInt(a,10))&&isArray(c)?s[a]=this._createSequence(c):s[a]=c,this._eventsUpdated(),!0)})}_eventsUpdated(){this._part.clear(),this._rescheduleSequence(this._eventsArray,this._subdivision,this.startOffset),this.loopEnd=this.loopEnd}_rescheduleSequence(e,s,a){e.forEach((c,d)=>{const _=d*s+a;if(isArray(c))this._rescheduleSequence(c,s/c.length,_);else{const b=new TicksClass(this.context,_,"i").toSeconds();this._part.add(b,c)}})}_indexTime(e){return new TicksClass(this.context,e*this._subdivision+this.startOffset).toSeconds()}clear(){return this._part.clear(),this}dispose(){return super.dispose(),this._part.dispose(),this}get loop(){return this._part.loop}set loop(e){this._part.loop=e}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this._part.loopStart=this._indexTime(e)}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,e===0?this._part.loopEnd=this._indexTime(this._eventsArray.length):this._part.loopEnd=this._indexTime(e)}get startOffset(){return this._part.startOffset}set startOffset(e){this._part.startOffset=e}get playbackRate(){return this._part.playbackRate}set playbackRate(e){this._part.playbackRate=e}get probability(){return this._part.probability}set probability(e){this._part.probability=e}get progress(){return this._part.progress}get humanize(){return this._part.humanize}set humanize(e){this._part.humanize=e}get length(){return this._part.length}}class CrossFade extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(CrossFade.getDefaults(),arguments,["fade"]))),this.name="CrossFade",this._panner=this.context.createStereoPanner(),this._split=this.context.createChannelSplitter(2),this._g2a=new GainToAudio({context:this.context}),this.a=new Gain$1({context:this.context,gain:0}),this.b=new Gain$1({context:this.context,gain:0}),this.output=new Gain$1({context:this.context}),this._internalChannels=[this.a,this.b];const e=optionsFromArguments(CrossFade.getDefaults(),arguments,["fade"]);this.fade=new Signal({context:this.context,units:"normalRange",value:e.fade}),readOnly$1(this,"fade"),this.context.getConstant(1).connect(this._panner),this._panner.connect(this._split),this._panner.channelCount=1,this._panner.channelCountMode="explicit",connect(this._split,this.a.gain,0),connect(this._split,this.b.gain,1),this.fade.chain(this._g2a,this._panner.pan),this.a.connect(this.output),this.b.connect(this.output)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{fade:.5})}dispose(){return super.dispose(),this.a.dispose(),this.b.dispose(),this.output.dispose(),this.fade.dispose(),this._g2a.dispose(),this._panner.disconnect(),this._split.disconnect(),this}}class Effect extends ToneAudioNode{constructor(e){super(e),this.name="Effect",this._dryWet=new CrossFade({context:this.context}),this.wet=this._dryWet.fade,this.effectSend=new Gain$1({context:this.context}),this.effectReturn=new Gain$1({context:this.context}),this.input=new Gain$1({context:this.context}),this.output=this._dryWet,this.input.fan(this._dryWet.a,this.effectSend),this.effectReturn.connect(this._dryWet.b),this.wet.setValueAtTime(e.wet,0),this._internalChannels=[this.effectReturn,this.effectSend],readOnly$1(this,"wet")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{wet:1})}connectEffect(e){return this._internalChannels.push(e),this.effectSend.chain(e,this.effectReturn),this}dispose(){return super.dispose(),this._dryWet.dispose(),this.effectSend.dispose(),this.effectReturn.dispose(),this.wet.dispose(),this}}class LFOEffect extends Effect{constructor(e){super(e),this.name="LFOEffect",this._lfo=new LFO({context:this.context,frequency:e.frequency,amplitude:e.depth}),this.depth=this._lfo.amplitude,this.frequency=this._lfo.frequency,this.type=e.type,readOnly$1(this,["frequency","depth"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:1,type:"sine",depth:1})}start(e){return this._lfo.start(e),this}stop(e){return this._lfo.stop(e),this}sync(){return this._lfo.sync(),this}unsync(){return this._lfo.unsync(),this}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class AutoFilter$1 extends LFOEffect{constructor(){super(optionsFromArguments(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"])),this.name="AutoFilter";const e=optionsFromArguments(AutoFilter$1.getDefaults(),arguments,["frequency","baseFrequency","octaves"]);this.filter=new Filter$1(Object.assign(e.filter,{context:this.context})),this.connectEffect(this.filter),this._lfo.connect(this.filter.frequency),this.octaves=e.octaves,this.baseFrequency=e.baseFrequency}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{baseFrequency:200,octaves:2.6,filter:{type:"lowpass",rolloff:-12,Q:1}})}get baseFrequency(){return this._lfo.min}set baseFrequency(e){this._lfo.min=this.toFrequency(e),this.octaves=this._octaves}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._lfo.max=this._lfo.min*Math.pow(2,e)}dispose(){return super.dispose(),this.filter.dispose(),this}}class Panner extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Panner.getDefaults(),arguments,["pan"]))),this.name="Panner",this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner;const e=optionsFromArguments(Panner.getDefaults(),arguments,["pan"]);this.pan=new Param({context:this.context,param:this._panner.pan,value:e.pan,minValue:-1,maxValue:1}),this._panner.channelCount=e.channelCount,this._panner.channelCountMode="explicit",readOnly$1(this,"pan")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}}class AutoPanner extends LFOEffect{constructor(){super(optionsFromArguments(AutoPanner.getDefaults(),arguments,["frequency"])),this.name="AutoPanner";const e=optionsFromArguments(AutoPanner.getDefaults(),arguments,["frequency"]);this._panner=new Panner({context:this.context,channelCount:e.channelCount}),this.connectEffect(this._panner),this._lfo.connect(this._panner.pan),this._lfo.min=-1,this._lfo.max=1}static getDefaults(){return Object.assign(LFOEffect.getDefaults(),{channelCount:1})}dispose(){return super.dispose(),this._panner.dispose(),this}}class Follower extends ToneAudioNode{constructor(){super(optionsFromArguments(Follower.getDefaults(),arguments,["smoothing"])),this.name="Follower";const e=optionsFromArguments(Follower.getDefaults(),arguments,["smoothing"]);this._abs=this.input=new Abs({context:this.context}),this._lowpass=this.output=new OnePoleFilter({context:this.context,frequency:1/this.toSeconds(e.smoothing),type:"lowpass"}),this._abs.connect(this._lowpass),this._smoothing=e.smoothing}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{smoothing:.05})}get smoothing(){return this._smoothing}set smoothing(e){this._smoothing=e,this._lowpass.frequency=1/this.toSeconds(this.smoothing)}dispose(){return super.dispose(),this._abs.dispose(),this._lowpass.dispose(),this}}class AutoWah extends Effect{constructor(){super(optionsFromArguments(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"])),this.name="AutoWah";const e=optionsFromArguments(AutoWah.getDefaults(),arguments,["baseFrequency","octaves","sensitivity"]);this._follower=new Follower({context:this.context,smoothing:e.follower}),this._sweepRange=new ScaleExp({context:this.context,min:0,max:1,exponent:.5}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this._inputBoost=new Gain$1({context:this.context}),this._bandpass=new Filter$1({context:this.context,rolloff:-48,frequency:0,Q:e.Q}),this._peaking=new Filter$1({context:this.context,type:"peaking"}),this._peaking.gain.value=e.gain,this.gain=this._peaking.gain,this.Q=this._bandpass.Q,this.effectSend.chain(this._inputBoost,this._follower,this._sweepRange),this._sweepRange.connect(this._bandpass.frequency),this._sweepRange.connect(this._peaking.frequency),this.effectSend.chain(this._bandpass,this._peaking,this.effectReturn),this._setSweepRange(),this.sensitivity=e.sensitivity,readOnly$1(this,["gain","Q"])}static getDefaults(){return Object.assign(Effect.getDefaults(),{baseFrequency:100,octaves:6,sensitivity:0,Q:2,gain:2,follower:.2})}get octaves(){return this._octaves}set octaves(e){this._octaves=e,this._setSweepRange()}get follower(){return this._follower.smoothing}set follower(e){this._follower.smoothing=e}get baseFrequency(){return this._baseFrequency}set baseFrequency(e){this._baseFrequency=this.toFrequency(e),this._setSweepRange()}get sensitivity(){return gainToDb(1/this._inputBoost.gain.value)}set sensitivity(e){this._inputBoost.gain.value=1/dbToGain(e)}_setSweepRange(){this._sweepRange.min=this._baseFrequency,this._sweepRange.max=Math.min(this._baseFrequency*Math.pow(2,this._octaves),this.context.sampleRate/2)}dispose(){return super.dispose(),this._follower.dispose(),this._sweepRange.dispose(),this._bandpass.dispose(),this._peaking.dispose(),this._inputBoost.dispose(),this}}const workletName="bit-crusher",bitCrusherWorklet=` class BitCrusherWorklet extends SingleIOProcessor { static get parameterDescriptors() { @@ -527,9 +264,47 @@ PERFORMANCE OF THIS SOFTWARE. return val; } } -`;registerProcessor(workletName,bitCrusherWorklet);class Solo extends ToneAudioNode{constructor(){super(optionsFromArguments(Solo.getDefaults(),arguments,["solo"])),this.name="Solo";const e=optionsFromArguments(Solo.getDefaults(),arguments,["solo"]);this.input=this.output=new Gain({context:this.context}),Solo._allSolos.has(this.context)||Solo._allSolos.set(this.context,new Set),Solo._allSolos.get(this.context).add(this),this.solo=e.solo}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{solo:!1})}get solo(){return this._isSoloed()}set solo(e){e?this._addSolo():this._removeSolo(),Solo._allSolos.get(this.context).forEach(s=>s._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo._soloed.has(this.context)||Solo._soloed.set(this.context,new Set),Solo._soloed.get(this.context).add(this)}_removeSolo(){Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).delete(this)}_isSoloed(){return Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).has(this)}_noSolos(){return!Solo._soloed.has(this.context)||Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo._allSolos=new Map;Solo._soloed=new Map;class PanVol extends ToneAudioNode{constructor(){super(optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const e=optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner({context:this.context,pan:e.pan,channelCount:e.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume({context:this.context,volume:e.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=e.mute,readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel extends ToneAudioNode{constructor(){super(optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const e=optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo({solo:e.solo,context:this.context}),this._panVol=this.output=new PanVol({context:this.context,pan:e.pan,volume:e.volume,mute:e.mute,channelCount:e.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(e){return Channel.buses.has(e)||Channel.buses.set(e,new Gain({context:this.context})),Channel.buses.get(e)}send(e,s=0){const a=this._getBus(e),c=new Gain({context:this.context,units:"decibels",gain:s});return this.connect(c),c.connect(a),c}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel.buses=new Map;class Listener extends ToneAudioNode{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit(o=>{o.listener=new Listener({context:o})});onContextClose(o=>{o.listener.dispose()});getContext().transport;getContext().destination;getContext().destination;getContext().listener;getContext().draw;getContext();var webmidi_min={exports:{}};(function(o){(function(e){function s(){if(s.prototype._singleton)throw new Error("WebMidi is a singleton, it cannot be instantiated directly.");(s.prototype._singleton=this)._inputs=[],this._outputs=[],this._userHandlers={},this._stateChangeQueue=[],this._processingStateChange=!1,this._midiInterfaceEvents=["connected","disconnected"],this._nrpnBuffer=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],this._nrpnEventsEnabled=!0,this._nrpnTypes=["entry","increment","decrement"],this._notes=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],this._semitones={C:0,D:2,E:4,F:5,G:7,A:9,B:11},Object.defineProperties(this,{MIDI_SYSTEM_MESSAGES:{value:{sysex:240,timecode:241,songposition:242,songselect:243,tuningrequest:246,sysexend:247,clock:248,start:250,continue:251,stop:252,activesensing:254,reset:255,midimessage:0,unknownsystemmessage:-1},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MESSAGES:{value:{noteoff:8,noteon:9,keyaftertouch:10,controlchange:11,channelmode:11,nrpn:11,programchange:12,channelaftertouch:13,pitchbend:14},writable:!1,enumerable:!0,configurable:!1},MIDI_REGISTERED_PARAMETER:{value:{pitchbendrange:[0,0],channelfinetuning:[0,1],channelcoarsetuning:[0,2],tuningprogram:[0,3],tuningbank:[0,4],modulationrange:[0,5],azimuthangle:[61,0],elevationangle:[61,1],gain:[61,2],distanceratio:[61,3],maximumdistance:[61,4],maximumdistancegain:[61,5],referencedistanceratio:[61,6],panspreadangle:[61,7],rollangle:[61,8]},writable:!1,enumerable:!0,configurable:!1},MIDI_CONTROL_CHANGE_MESSAGES:{value:{bankselectcoarse:0,modulationwheelcoarse:1,breathcontrollercoarse:2,footcontrollercoarse:4,portamentotimecoarse:5,dataentrycoarse:6,volumecoarse:7,balancecoarse:8,pancoarse:10,expressioncoarse:11,effectcontrol1coarse:12,effectcontrol2coarse:13,generalpurposeslider1:16,generalpurposeslider2:17,generalpurposeslider3:18,generalpurposeslider4:19,bankselectfine:32,modulationwheelfine:33,breathcontrollerfine:34,footcontrollerfine:36,portamentotimefine:37,dataentryfine:38,volumefine:39,balancefine:40,panfine:42,expressionfine:43,effectcontrol1fine:44,effectcontrol2fine:45,holdpedal:64,portamento:65,sustenutopedal:66,softpedal:67,legatopedal:68,hold2pedal:69,soundvariation:70,resonance:71,soundreleasetime:72,soundattacktime:73,brightness:74,soundcontrol6:75,soundcontrol7:76,soundcontrol8:77,soundcontrol9:78,soundcontrol10:79,generalpurposebutton1:80,generalpurposebutton2:81,generalpurposebutton3:82,generalpurposebutton4:83,reverblevel:91,tremololevel:92,choruslevel:93,celestelevel:94,phaserlevel:95,databuttonincrement:96,databuttondecrement:97,nonregisteredparametercoarse:98,nonregisteredparameterfine:99,registeredparametercoarse:100,registeredparameterfine:101},writable:!1,enumerable:!0,configurable:!1},MIDI_NRPN_MESSAGES:{value:{entrymsb:6,entrylsb:38,increment:96,decrement:97,paramlsb:98,parammsb:99,nullactiveparameter:127},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MODE_MESSAGES:{value:{allsoundoff:120,resetallcontrollers:121,localcontrol:122,allnotesoff:123,omnimodeoff:124,omnimodeon:125,monomodeon:126,polymodeon:127},writable:!1,enumerable:!0,configurable:!1},octaveOffset:{value:0,writable:!0,enumerable:!0,configurable:!1}}),Object.defineProperties(this,{supported:{enumerable:!0,get:function(){return"requestMIDIAccess"in navigator}},enabled:{enumerable:!0,get:function(){return this.interface!==void 0}.bind(this)},inputs:{enumerable:!0,get:function(){return this._inputs}.bind(this)},outputs:{enumerable:!0,get:function(){return this._outputs}.bind(this)},sysexEnabled:{enumerable:!0,get:function(){return!(!this.interface||!this.interface.sysexEnabled)}.bind(this)},nrpnEventsEnabled:{enumerable:!0,get:function(){return!!this._nrpnEventsEnabled}.bind(this),set:function(_){return this._nrpnEventsEnabled=_,this._nrpnEventsEnabled}},nrpnTypes:{enumerable:!0,get:function(){return this._nrpnTypes}.bind(this)},time:{enumerable:!0,get:function(){return performance.now()}}})}var a=new s;function c(_){var b=this;this._userHandlers={channel:{},system:{}},this._midiInput=_,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return b._midiInput.connection}},id:{enumerable:!0,get:function(){return b._midiInput.id}},manufacturer:{enumerable:!0,get:function(){return b._midiInput.manufacturer}},name:{enumerable:!0,get:function(){return b._midiInput.name}},state:{enumerable:!0,get:function(){return b._midiInput.state}},type:{enumerable:!0,get:function(){return b._midiInput.type}}}),this._initializeUserHandlers(),this._midiInput.onmidimessage=this._onMidiMessage.bind(this)}function d(_){var b=this;this._midiOutput=_,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return b._midiOutput.connection}},id:{enumerable:!0,get:function(){return b._midiOutput.id}},manufacturer:{enumerable:!0,get:function(){return b._midiOutput.manufacturer}},name:{enumerable:!0,get:function(){return b._midiOutput.name}},state:{enumerable:!0,get:function(){return b._midiOutput.state}},type:{enumerable:!0,get:function(){return b._midiOutput.type}}})}s.prototype.enable=function(_,b){this.enabled||(this.supported?navigator.requestMIDIAccess({sysex:b}).then(function(k){var $,j=[],_e=[];this.interface=k,this._resetInterfaceUserHandlers(),this.interface.onstatechange=function(st){j.push(st)};for(var et=k.inputs.values(),tt=et.next();tt&&!tt.done;tt=et.next())_e.push(tt.value.open());for(var nt=k.outputs.values(),it=nt.next();it&&!it.done;it=nt.next())_e.push(it.value.open());function rt(){clearTimeout($),this._updateInputsAndOutputs(),this.interface.onstatechange=this._onInterfaceStateChange.bind(this),typeof _=="function"&&_.call(this),j.forEach(function(st){this._onInterfaceStateChange(st)}.bind(this))}$=setTimeout(rt.bind(this),200),Promise&&Promise.all(_e).catch(function(st){}).then(rt.bind(this))}.bind(this),function(k){typeof _=="function"&&_.call(this,k)}.bind(this)):typeof _=="function"&&_(new Error("The Web MIDI API is not supported by your browser.")))},s.prototype.disable=function(){if(!this.supported)throw new Error("The Web MIDI API is not supported by your browser.");this.enabled&&(this.removeListener(),this.inputs.forEach(function(_){_.removeListener()})),this.interface&&(this.interface.onstatechange=void 0),this.interface=void 0,this._inputs=[],this._outputs=[],this._nrpnEventsEnabled=!0,this._resetInterfaceUserHandlers()},s.prototype.addListener=function(_,b){if(!this.enabled)throw new Error("WebMidi must be enabled before adding event listeners.");if(typeof b!="function")throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(_)))throw new TypeError("The specified event type is not supported.");return this._userHandlers[_].push(b),this},s.prototype.hasListener=function(_,b){if(!this.enabled)throw new Error("WebMidi must be enabled before checking event listeners.");if(typeof b!="function")throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(_)))throw new TypeError("The specified event type is not supported.");for(var k=0;k>4,j=15&_.data[0],_e=1+j;if(1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0),a.nrpnEventsEnabled&&$===a.MIDI_CHANNEL_MESSAGES.controlchange&&(b>=a.MIDI_NRPN_MESSAGES.increment&&b<=a.MIDI_NRPN_MESSAGES.parammsb||b===a.MIDI_NRPN_MESSAGES.entrymsb||b===a.MIDI_NRPN_MESSAGES.entrylsb)){var et={target:this,type:"controlchange",data:_.data,timestamp:_.timeStamp,channel:_e,controller:{number:b,name:this.getCcNameByNumber(b)},value:k};if(et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value!=a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j]=[],a._nrpnBuffer[j][0]=et;else if(a._nrpnBuffer[j].length===1&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb)a._nrpnBuffer[j].push(et);else if(a._nrpnBuffer[j].length!==2||et.controller.number!==a.MIDI_NRPN_MESSAGES.increment&&et.controller.number!==a.MIDI_NRPN_MESSAGES.decrement&&et.controller.number!==a.MIDI_NRPN_MESSAGES.entrymsb)if(a._nrpnBuffer[j].length===3&&a._nrpnBuffer[j][2].number===a.MIDI_NRPN_MESSAGES.entrymsb&&et.controller.number===a.MIDI_NRPN_MESSAGES.entrylsb)a._nrpnBuffer[j].push(et);else if(3<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=4&&et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j].push(et);else if(4<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=5&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter){a._nrpnBuffer[j].push(et);var tt=[];a._nrpnBuffer[j].forEach(function(at){tt.push(at.data)});var nt=a._nrpnBuffer[j][0].value<<7|a._nrpnBuffer[j][1].value,it=a._nrpnBuffer[j][2].value;a._nrpnBuffer[j].length===6&&(it=a._nrpnBuffer[j][2].value<<7|a._nrpnBuffer[j][3].value);var rt="";switch(a._nrpnBuffer[j][2].controller.number){case a.MIDI_NRPN_MESSAGES.entrymsb:rt=a._nrpnTypes[0];break;case a.MIDI_NRPN_MESSAGES.increment:rt=a._nrpnTypes[1];break;case a.MIDI_NRPN_MESSAGES.decrement:rt=a._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var st={timestamp:et.timestamp,channel:et.channel,type:"nrpn",data:tt,controller:{number:nt,type:rt,name:"Non-Registered Parameter "+nt},value:it};a._nrpnBuffer[j]=[],this._userHandlers.channel[st.type]&&this._userHandlers.channel[st.type][st.channel]&&this._userHandlers.channel[st.type][st.channel].forEach(function(at){at(st)})}else a._nrpnBuffer[j]=[];else a._nrpnBuffer[j].push(et)}},c.prototype._parseChannelEvent=function(_){var b,k,$=_.data[0]>>4,j=1+(15&_.data[0]);1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0);var _e={target:this,data:_.data,timestamp:_.timeStamp,channel:j};$===a.MIDI_CHANNEL_MESSAGES.noteoff||$===a.MIDI_CHANNEL_MESSAGES.noteon&&k===0?(_e.type="noteoff",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.noteon?(_e.type="noteon",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.keyaftertouch?(_e.type="keyaftertouch",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.value=k/127):$===a.MIDI_CHANNEL_MESSAGES.controlchange&&0<=b&&b<=119?(_e.type="controlchange",_e.controller={number:b,name:this.getCcNameByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.channelmode&&120<=b&&b<=127?(_e.type="channelmode",_e.controller={number:b,name:this.getChannelModeByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.programchange?(_e.type="programchange",_e.value=b):$===a.MIDI_CHANNEL_MESSAGES.channelaftertouch?(_e.type="channelaftertouch",_e.value=b/127):$===a.MIDI_CHANNEL_MESSAGES.pitchbend?(_e.type="pitchbend",_e.value=((k<<7)+b-8192)/8192):_e.type="unknownchannelmessage",this._userHandlers.channel[_e.type]&&this._userHandlers.channel[_e.type][j]&&this._userHandlers.channel[_e.type][j].forEach(function(et){et(_e)})},c.prototype.getCcNameByNumber=function(_){if(!(0<=(_=Math.floor(_))&&_<=119))throw new RangeError("The control change number must be between 0 and 119.");for(var b in a.MIDI_CONTROL_CHANGE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CONTROL_CHANGE_MESSAGES,b)&&_===a.MIDI_CONTROL_CHANGE_MESSAGES[b])return b},c.prototype.getChannelModeByNumber=function(_){if(!(120<=(_=Math.floor(_))&&status<=127))throw new RangeError("The control change number must be between 120 and 127.");for(var b in a.MIDI_CHANNEL_MODE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CHANNEL_MODE_MESSAGES,b)&&_===a.MIDI_CHANNEL_MODE_MESSAGES[b])return b},c.prototype._parseSystemEvent=function(_){var b=_.data[0],k={target:this,data:_.data,timestamp:_.timeStamp};b===a.MIDI_SYSTEM_MESSAGES.sysex?k.type="sysex":b===a.MIDI_SYSTEM_MESSAGES.timecode?k.type="timecode":b===a.MIDI_SYSTEM_MESSAGES.songposition?k.type="songposition":b===a.MIDI_SYSTEM_MESSAGES.songselect?(k.type="songselect",k.song=_.data[1]):b===a.MIDI_SYSTEM_MESSAGES.tuningrequest?k.type="tuningrequest":b===a.MIDI_SYSTEM_MESSAGES.clock?k.type="clock":b===a.MIDI_SYSTEM_MESSAGES.start?k.type="start":b===a.MIDI_SYSTEM_MESSAGES.continue?k.type="continue":b===a.MIDI_SYSTEM_MESSAGES.stop?k.type="stop":b===a.MIDI_SYSTEM_MESSAGES.activesensing?k.type="activesensing":b===a.MIDI_SYSTEM_MESSAGES.reset?k.type="reset":k.type="unknownsystemmessage",this._userHandlers.system[k.type]&&this._userHandlers.system[k.type].forEach(function($){$(k)})},d.prototype.send=function(_,b,k){if(!(128<=_&&_<=255))throw new RangeError("The status byte must be an integer between 128 (0x80) and 255 (0xFF).");b===void 0&&(b=[]),Array.isArray(b)||(b=[b]);var $=[];return b.forEach(function(j){var _e=Math.floor(j);if(!(0<=_e&&_e<=255))throw new RangeError("Data bytes must be integers between 0 (0x00) and 255 (0xFF).");$.push(_e)}),this._midiOutput.send([_].concat($),parseFloat(k)||0),this},d.prototype.sendSysex=function(_,b,k){if(!a.sysexEnabled)throw new Error("Sysex message support must first be activated.");return k=k||{},_=[].concat(_),b.forEach(function($){if($<0||127<$)throw new RangeError("The data bytes of a sysex message must be integers between 0 (0x00) and 127 (0x7F).")}),b=_.concat(b,a.MIDI_SYSTEM_MESSAGES.sysexend),this.send(a.MIDI_SYSTEM_MESSAGES.sysex,b,this._parseTimeParameter(k.time)),this},d.prototype.sendTimecodeQuarterFrame=function(_,b){return b=b||{},this.send(a.MIDI_SYSTEM_MESSAGES.timecode,_,this._parseTimeParameter(b.time)),this},d.prototype.sendSongPosition=function(_,b){b=b||{};var k=(_=Math.floor(_)||0)>>7&127,$=127&_;return this.send(a.MIDI_SYSTEM_MESSAGES.songposition,[k,$],this._parseTimeParameter(b.time)),this},d.prototype.sendSongSelect=function(_,b){if(b=b||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(a.MIDI_SYSTEM_MESSAGES.songselect,[_],this._parseTimeParameter(b.time)),this},d.prototype.sendTuningRequest=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendClock=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStart=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendContinue=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStop=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendActiveSensing=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(_.time)),this},d.prototype.sendReset=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(_.time)),this},d.prototype.stopNote=function(_,b,k){if(_==="all")return this.sendChannelMode("allnotesoff",0,b,k);var $=64;return(k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&($=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&($=127*k.velocity),this._convertNoteToArray(_).forEach(function(j){a.toMIDIChannels(b).forEach(function(_e){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(_e-1),[j,Math.round($)],this._parseTimeParameter(k.time))}.bind(this))}.bind(this)),this},d.prototype.playNote=function(_,b,k){var $,j=64;if((k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&(j=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&(j=127*k.velocity),$=this._parseTimeParameter(k.time),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteon<<4)+(tt-1),[et,Math.round(j)],$)}.bind(this))}.bind(this)),!isNaN(k.duration)){k.duration<=0&&(k.duration=0);var _e=64;k.rawVelocity?!isNaN(k.release)&&0<=k.release&&k.release<=127&&(_e=k.release):!isNaN(k.release)&&0<=k.release&&k.release<=1&&(_e=127*k.release),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(tt-1),[et,Math.round(_e)],($||a.time)+k.duration)}.bind(this))}.bind(this))}return this},d.prototype.sendKeyAftertouch=function(_,b,k,$){var j=this;if($=$||{},b<1||16>7&127,tt=127&_e;return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("channelcoarsetuning",j,b,{time:k.time}),$.setRegisteredParameter("channelfinetuning",[et,tt],b,{time:k.time})}),this},d.prototype.setTuningProgram=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The program value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningprogram",_,b,{time:k.time})}),this},d.prototype.setTuningBank=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_)||0)&&_<=127))throw new RangeError("The bank value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningbank",_,b,{time:k.time})}),this},d.prototype.sendChannelMode=function(_,b,k,$){if($=$||{},typeof _=="string"){if(!(_=a.MIDI_CHANNEL_MODE_MESSAGES[_]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(_=Math.floor(_))&&_<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((b=Math.floor(b)||0)<0||127>7&127,et=127&j;return a.toMIDIChannels(b).forEach(function(tt){$.send((a.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(tt-1),[et,_e],$._parseTimeParameter(k.time))}),this},d.prototype._parseTimeParameter=function(_){var b,k=parseFloat(_);return typeof _=="string"&&_.substring(0,1)==="+"?k&&0a.time&&(b=k),b},d.prototype._convertNoteToArray=function(_){var b=[];return Array.isArray(_)||(_=[_]),_.forEach(function(k){b.push(a.guessNoteNumber(k))}),b},o.exports?o.exports=a:e.WebMidi||(e.WebMidi=a)})(commonjsGlobal)})(webmidi_min);var _WebMidi=webmidi_min.exports;const WebMidi=_WebMidi;function enableWebMidi(){return new Promise((o,e)=>{if(WebMidi.enabled){o(WebMidi);return}WebMidi.enable(s=>{s&&e(s),o(WebMidi)})})}const outputByName=o=>WebMidi.getOutputByName(o);Pattern$4.prototype.midi=function(o,e=1){var s,a,c;if(isPattern$1((s=o==null?void 0:o.constructor)==null?void 0:s.name))throw new Error(`.midi does not accept Pattern input. Make sure to pass device name with single quotes. Example: .midi('${((c=(a=WebMidi.outputs)==null?void 0:a[0])==null?void 0:c.name)||"IAC Driver Bus 1"}')`);return this._withHap(d=>{const _=(b,k)=>{var tt,nt;let $=k.value;const j=(nt=(tt=k.context)==null?void 0:tt.velocity)!=null?nt:.9;if(!isNote($))throw new Error("not a note: "+$);if(!WebMidi.enabled)throw new Error("\u{1F3B9} WebMidi is not enabled. Supported Browsers: https://caniuse.com/?search=webmidi");if(!WebMidi.outputs.length)throw new Error("\u{1F50C} No MIDI devices found. Connect a device or enable IAC Driver.");let _e;if(typeof o=="number"?_e=WebMidi.outputs[o]:typeof o=="string"?_e=outputByName(o):_e=WebMidi.outputs[0],!_e)throw new Error(`\u{1F50C} MIDI device '${o||""}' not found. Use one of ${WebMidi.outputs.map(it=>`'${it.name}'`).join(" | ")}`);const et=WebMidi.time-Tone$1.getContext().currentTime*1e3;b=b*1e3+et,_e.playNote($,e,{time:b,duration:k.duration.valueOf()*1e3-5,velocity:j})};return d.setContext(wt(_t({},d.context),{onTrigger:_}))})};const ivory="#abb2bf",stone="#7d8799",invalid="#ffffff",darkBackground="#21252b",highlightBackground="rgba(0, 0, 0, 0.5)",background="transparent",tooltipBackground="#353a42",selection="rgba(128, 203, 196, 0.5)",cursor="#ffcc00",materialPalenightTheme=EditorView.theme({"&":{color:"#ffffff",backgroundColor:background,fontSize:"15px","z-index":11},".cm-content":{caretColor:cursor,lineHeight:"22px"},".cm-line":{background:"#2C323699"},"&.cm-focused .cm-cursor":{backgroundColor:cursor,width:"3px"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:selection},".cm-panels":{backgroundColor:darkBackground,color:"#ffffff"},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:highlightBackground},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{background:"transparent",color:"#676e95",border:"none"},".cm-activeLineGutter":{backgroundColor:highlightBackground},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:tooltipBackground},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:highlightBackground,color:ivory}}},{dark:!0}),materialPalenightHighlightStyle=HighlightStyle.define([{tag:tags.keyword,color:"#c792ea"},{tag:tags.operator,color:"#89ddff"},{tag:tags.special(tags.variableName),color:"#eeffff"},{tag:tags.typeName,color:"#f07178"},{tag:tags.atom,color:"#f78c6c"},{tag:tags.number,color:"#ff5370"},{tag:tags.definition(tags.variableName),color:"#82aaff"},{tag:tags.string,color:"#c3e88d"},{tag:tags.special(tags.string),color:"#f07178"},{tag:tags.comment,color:stone},{tag:tags.variableName,color:"#f07178"},{tag:tags.tagName,color:"#ff5370"},{tag:tags.bracket,color:"#a2a1a4"},{tag:tags.meta,color:"#ffcb6b"},{tag:tags.attributeName,color:"#c792ea"},{tag:tags.propertyName,color:"#c792ea"},{tag:tags.className,color:"#decb6b"},{tag:tags.invalid,color:invalid}]),materialPalenight=[materialPalenightTheme,materialPalenightHighlightStyle],setHighlights=StateEffect.define(),highlightField=StateField.define({create(){return Decoration.none},update(o,e){try{for(let s of e.effects)s.is(setHighlights)&&(o=Decoration.set(s.value.flatMap(a=>(a.context.locations||[]).map(({start:c,end:d})=>{const _=a.context.color||"#FFCA28";let b=e.newDoc.line(c.line).from+c.column,k=e.newDoc.line(d.line).from+d.column;const $=e.newDoc.length;return b>$||k>$?void 0:Decoration.mark({attributes:{style:`outline: 1px solid ${_}`}}).range(b,k)})).filter(Boolean),!0));return o}catch{return o}},provide:o=>EditorView.decorations.from(o)});function CodeMirror({value:o,onChange:e,onViewChanged:s,onCursor:a,options:c,editorDidMount:d}){return jsx(Fragment,{children:jsx(CodeMirror$1,{onViewChange:s,style:{display:"flex",flexDirection:"column",flex:"1 0 auto"},value:o,onChange:e,extensions:[javascript(),materialPalenight,highlightField]})})}function useCycle(o){const{onEvent:e,onQuery:s,onSchedule:a,ready:c=!0,onDraw:d}=o,[_,b]=react.exports.useState(!1),k=1,$=()=>Math.floor(Tone$1.getTransport().seconds/k),j=(nt=$())=>{const it=new TimeSpan$1(nt,nt+1),rt=(s==null?void 0:s(new State$1(it)))||[];a==null||a(rt,nt);const st=it.begin.valueOf();Tone$1.getTransport().cancel(st);const at=(nt+1)*k-.5,lt=Math.max(Tone$1.getTransport().seconds,at)+.1;Tone$1.getTransport().schedule(()=>{j(nt+1)},lt),rt==null||rt.filter(dt=>{var ct;return dt.part.begin.equals((ct=dt.whole)==null?void 0:ct.begin)}).forEach(dt=>{Tone$1.getTransport().schedule(ct=>{e(ct,dt,Tone$1.getContext().currentTime),Tone$1.Draw.schedule(()=>{d==null||d(ct,dt)},ct)},dt.part.begin.valueOf())})};react.exports.useEffect(()=>{c&&j()},[e,a,s,d,c]);const _e=async()=>{b(!0),await Tone$1.start(),Tone$1.getTransport().start("+0.1")},et=()=>{Tone$1.getTransport().pause(),b(!1)};return{start:_e,stop:et,onEvent:e,started:_,setStarted:b,toggle:()=>_?et():_e(),query:j,activeCycle:$}}function usePostMessage(o){return react.exports.useEffect(()=>(window.addEventListener("message",o),()=>window.removeEventListener("message",o)),[o]),react.exports.useCallback(e=>window.postMessage(e,"*"),[])}let s4=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);const generateHash=o=>encodeURIComponent(btoa(o));function useRepl({tune:o,defaultSynth:e,autolink:s=!0,onEvent:a,onDraw:c}){const d=react.exports.useMemo(()=>s4(),[]),[_,b]=react.exports.useState(o),[k,$]=react.exports.useState(),[j,_e]=react.exports.useState(""),[et,tt]=react.exports.useState(),[nt,it]=react.exports.useState(!1),[rt,st]=react.exports.useState(""),[at,lt]=react.exports.useState(),dt=react.exports.useMemo(()=>_!==k||et,[_,k,et]),ct=react.exports.useCallback(ft=>_e(mt=>mt+`${mt?` +`;registerProcessor(workletName,bitCrusherWorklet);class BitCrusher extends Effect{constructor(){super(optionsFromArguments(BitCrusher.getDefaults(),arguments,["bits"])),this.name="BitCrusher";const e=optionsFromArguments(BitCrusher.getDefaults(),arguments,["bits"]);this._bitCrusherWorklet=new BitCrusherWorklet({context:this.context,bits:e.bits}),this.connectEffect(this._bitCrusherWorklet),this.bits=this._bitCrusherWorklet.bits}static getDefaults(){return Object.assign(Effect.getDefaults(),{bits:4})}dispose(){return super.dispose(),this._bitCrusherWorklet.dispose(),this}}class BitCrusherWorklet extends ToneAudioWorklet{constructor(){super(optionsFromArguments(BitCrusherWorklet.getDefaults(),arguments)),this.name="BitCrusherWorklet";const e=optionsFromArguments(BitCrusherWorklet.getDefaults(),arguments);this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this.bits=new Param({context:this.context,value:e.bits,units:"positive",minValue:1,maxValue:16,param:this._dummyParam,swappable:!0})}static getDefaults(){return Object.assign(ToneAudioWorklet.getDefaults(),{bits:12})}_audioWorkletName(){return workletName}onReady(e){connectSeries(this.input,e,this.output);const s=e.parameters.get("bits");this.bits.setParam(s)}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.bits.dispose(),this}}class Chebyshev extends Effect{constructor(){super(optionsFromArguments(Chebyshev.getDefaults(),arguments,["order"])),this.name="Chebyshev";const e=optionsFromArguments(Chebyshev.getDefaults(),arguments,["order"]);this._shaper=new WaveShaper({context:this.context,length:4096}),this._order=e.order,this.connectEffect(this._shaper),this.order=e.order,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{order:1,oversample:"none"})}_getCoefficient(e,s,a){return a.has(s)||(s===0?a.set(s,0):s===1?a.set(s,e):a.set(s,2*e*this._getCoefficient(e,s-1,a)-this._getCoefficient(e,s-2,a))),a.get(s)}get order(){return this._order}set order(e){this._order=e,this._shaper.setMap(s=>this._getCoefficient(s,e,new Map))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class Split extends ToneAudioNode{constructor(){super(optionsFromArguments(Split.getDefaults(),arguments,["channels"])),this.name="Split";const e=optionsFromArguments(Split.getDefaults(),arguments,["channels"]);this._splitter=this.input=this.output=this.context.createChannelSplitter(e.channels),this._internalChannels=[this._splitter]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._splitter.disconnect(),this}}class Merge extends ToneAudioNode{constructor(){super(optionsFromArguments(Merge.getDefaults(),arguments,["channels"])),this.name="Merge";const e=optionsFromArguments(Merge.getDefaults(),arguments,["channels"]);this._merger=this.output=this.input=this.context.createChannelMerger(e.channels)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{channels:2})}dispose(){return super.dispose(),this._merger.disconnect(),this}}class StereoEffect extends ToneAudioNode{constructor(e){super(e),this.name="StereoEffect",this.input=new Gain$1({context:this.context}),this.input.channelCount=2,this.input.channelCountMode="explicit",this._dryWet=this.output=new CrossFade({context:this.context,fade:e.wet}),this.wet=this._dryWet.fade,this._split=new Split({context:this.context,channels:2}),this._merge=new Merge({context:this.context,channels:2}),this.input.connect(this._split),this.input.connect(this._dryWet.a),this._merge.connect(this._dryWet.b),readOnly$1(this,["wet"])}connectEffectLeft(...e){this._split.connect(e[0],0,0),connectSeries(...e),connect(e[e.length-1],this._merge,0,0)}connectEffectRight(...e){this._split.connect(e[0],1,0),connectSeries(...e),connect(e[e.length-1],this._merge,0,1)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{wet:1})}dispose(){return super.dispose(),this._dryWet.dispose(),this._split.dispose(),this._merge.dispose(),this}}class StereoFeedbackEffect extends StereoEffect{constructor(e){super(e),this.feedback=new Signal({context:this.context,value:e.feedback,units:"normalRange"}),this._feedbackL=new Gain$1({context:this.context}),this._feedbackR=new Gain$1({context:this.context}),this._feedbackSplit=new Split({context:this.context,channels:2}),this._feedbackMerge=new Merge({context:this.context,channels:2}),this._merge.connect(this._feedbackSplit),this._feedbackMerge.connect(this._split),this._feedbackSplit.connect(this._feedbackL,0,0),this._feedbackL.connect(this._feedbackMerge,0,0),this._feedbackSplit.connect(this._feedbackR,1,0),this._feedbackR.connect(this._feedbackMerge,0,1),this.feedback.fan(this._feedbackL.gain,this._feedbackR.gain),readOnly$1(this,["feedback"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{feedback:.5})}dispose(){return super.dispose(),this.feedback.dispose(),this._feedbackL.dispose(),this._feedbackR.dispose(),this._feedbackSplit.dispose(),this._feedbackMerge.dispose(),this}}class Chorus extends StereoFeedbackEffect{constructor(){super(optionsFromArguments(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"])),this.name="Chorus";const e=optionsFromArguments(Chorus.getDefaults(),arguments,["frequency","delayTime","depth"]);this._depth=e.depth,this._delayTime=e.delayTime/1e3,this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._delayNodeL=new Delay({context:this.context}),this._delayNodeR=new Delay({context:this.context}),this.frequency=this._lfoL.frequency,readOnly$1(this,["frequency"]),this._lfoL.frequency.connect(this._lfoR.frequency),this.connectEffectLeft(this._delayNodeL),this.connectEffectRight(this._delayNodeR),this._lfoL.connect(this._delayNodeL.delayTime),this._lfoR.connect(this._delayNodeR.delayTime),this.depth=this._depth,this.type=e.type,this.spread=e.spread}static getDefaults(){return Object.assign(StereoFeedbackEffect.getDefaults(),{frequency:1.5,delayTime:3.5,depth:.7,type:"sine",spread:180,feedback:0,wet:.5})}get depth(){return this._depth}set depth(e){this._depth=e;const s=this._delayTime*e;this._lfoL.min=Math.max(this._delayTime-s,0),this._lfoL.max=this._delayTime+s,this._lfoR.min=Math.max(this._delayTime-s,0),this._lfoR.max=this._delayTime+s}get delayTime(){return this._delayTime*1e3}set delayTime(e){this._delayTime=e/1e3,this.depth=this._depth}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._delayNodeL.dispose(),this._delayNodeR.dispose(),this.frequency.dispose(),this}}class Distortion extends Effect{constructor(){super(optionsFromArguments(Distortion.getDefaults(),arguments,["distortion"])),this.name="Distortion";const e=optionsFromArguments(Distortion.getDefaults(),arguments,["distortion"]);this._shaper=new WaveShaper({context:this.context,length:4096}),this._distortion=e.distortion,this.connectEffect(this._shaper),this.distortion=e.distortion,this.oversample=e.oversample}static getDefaults(){return Object.assign(Effect.getDefaults(),{distortion:.4,oversample:"none"})}get distortion(){return this._distortion}set distortion(e){this._distortion=e;const s=e*100,a=Math.PI/180;this._shaper.setMap(c=>Math.abs(c)<.001?0:(3+s)*c*20*a/(Math.PI+s*Math.abs(c)))}get oversample(){return this._shaper.oversample}set oversample(e){this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.dispose(),this}}class FeedbackEffect extends Effect{constructor(e){super(e),this.name="FeedbackEffect",this._feedbackGain=new Gain$1({context:this.context,gain:e.feedback,units:"normalRange"}),this.feedback=this._feedbackGain.gain,readOnly$1(this,"feedback"),this.effectReturn.chain(this._feedbackGain,this.effectSend)}static getDefaults(){return Object.assign(Effect.getDefaults(),{feedback:.125})}dispose(){return super.dispose(),this._feedbackGain.dispose(),this.feedback.dispose(),this}}class FeedbackDelay extends FeedbackEffect{constructor(){super(optionsFromArguments(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="FeedbackDelay";const e=optionsFromArguments(FeedbackDelay.getDefaults(),arguments,["delayTime","feedback"]);this._delayNode=new Delay({context:this.context,delayTime:e.delayTime,maxDelay:e.maxDelay}),this.delayTime=this._delayNode.delayTime,this.connectEffect(this._delayNode),readOnly$1(this,"delayTime")}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._delayNode.dispose(),this.delayTime.dispose(),this}}class PhaseShiftAllpass extends ToneAudioNode{constructor(e){super(e),this.name="PhaseShiftAllpass",this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this.offset90=new Gain$1({context:this.context});const s=[.6923878,.9360654322959,.988229522686,.9987488452737],a=[.4021921162426,.856171088242,.9722909545651,.9952884791278];this._bank0=this._createAllPassFilterBank(s),this._bank1=this._createAllPassFilterBank(a),this._oneSampleDelay=this.context.createIIRFilter([0,1],[1,0]),connectSeries(this.input,...this._bank0,this._oneSampleDelay,this.output),connectSeries(this.input,...this._bank1,this.offset90)}_createAllPassFilterBank(e){return e.map(a=>{const c=[[a*a,0,-1],[1,0,-(a*a)]];return this.context.createIIRFilter(c[0],c[1])})}dispose(){return super.dispose(),this.input.dispose(),this.output.dispose(),this.offset90.dispose(),this._bank0.forEach(e=>e.disconnect()),this._bank1.forEach(e=>e.disconnect()),this._oneSampleDelay.disconnect(),this}}class FrequencyShifter extends Effect{constructor(){super(optionsFromArguments(FrequencyShifter.getDefaults(),arguments,["frequency"])),this.name="FrequencyShifter";const e=optionsFromArguments(FrequencyShifter.getDefaults(),arguments,["frequency"]);this.frequency=new Signal({context:this.context,units:"frequency",value:e.frequency,minValue:-this.context.sampleRate/2,maxValue:this.context.sampleRate/2}),this._sine=new ToneOscillatorNode({context:this.context,type:"sine"}),this._cosine=new Oscillator({context:this.context,phase:-90,type:"sine"}),this._sineMultiply=new Multiply({context:this.context}),this._cosineMultiply=new Multiply({context:this.context}),this._negate=new Negate({context:this.context}),this._add=new Add({context:this.context}),this._phaseShifter=new PhaseShiftAllpass({context:this.context}),this.effectSend.connect(this._phaseShifter),this.frequency.fan(this._sine.frequency,this._cosine.frequency),this._phaseShifter.offset90.connect(this._cosineMultiply),this._cosine.connect(this._cosineMultiply.factor),this._phaseShifter.connect(this._sineMultiply),this._sine.connect(this._sineMultiply.factor),this._sineMultiply.connect(this._negate),this._cosineMultiply.connect(this._add),this._negate.connect(this._add.addend),this._add.connect(this.effectReturn);const s=this.immediate();this._sine.start(s),this._cosine.start(s)}static getDefaults(){return Object.assign(Effect.getDefaults(),{frequency:0})}dispose(){return super.dispose(),this.frequency.dispose(),this._add.dispose(),this._cosine.dispose(),this._cosineMultiply.dispose(),this._negate.dispose(),this._phaseShifter.dispose(),this._sine.dispose(),this._sineMultiply.dispose(),this}}const combFilterTunings=[1557/44100,1617/44100,1491/44100,1422/44100,1277/44100,1356/44100,1188/44100,1116/44100],allpassFilterFrequencies=[225,556,441,341];class Freeverb extends StereoEffect{constructor(){super(optionsFromArguments(Freeverb.getDefaults(),arguments,["roomSize","dampening"])),this.name="Freeverb",this._combFilters=[],this._allpassFiltersL=[],this._allpassFiltersR=[];const e=optionsFromArguments(Freeverb.getDefaults(),arguments,["roomSize","dampening"]);this.roomSize=new Signal({context:this.context,value:e.roomSize,units:"normalRange"}),this._allpassFiltersL=allpassFilterFrequencies.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._allpassFiltersR=allpassFilterFrequencies.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._combFilters=combFilterTunings.map((s,a)=>{const c=new LowpassCombFilter({context:this.context,dampening:e.dampening,delayTime:s});return as.dampening=e)}dispose(){return super.dispose(),this._allpassFiltersL.forEach(e=>e.disconnect()),this._allpassFiltersR.forEach(e=>e.disconnect()),this._combFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this}}const combFilterDelayTimes=[1687/25e3,1601/25e3,2053/25e3,2251/25e3],combFilterResonances=[.773,.802,.753,.733],allpassFilterFreqs=[347,113,37];class JCReverb extends StereoEffect{constructor(){super(optionsFromArguments(JCReverb.getDefaults(),arguments,["roomSize"])),this.name="JCReverb",this._allpassFilters=[],this._feedbackCombFilters=[];const e=optionsFromArguments(JCReverb.getDefaults(),arguments,["roomSize"]);this.roomSize=new Signal({context:this.context,value:e.roomSize,units:"normalRange"}),this._scaleRoomSize=new Scale({context:this.context,min:-.733,max:.197}),this._allpassFilters=allpassFilterFreqs.map(s=>{const a=this.context.createBiquadFilter();return a.type="allpass",a.frequency.value=s,a}),this._feedbackCombFilters=combFilterDelayTimes.map((s,a)=>{const c=new FeedbackCombFilter({context:this.context,delayTime:s});return this._scaleRoomSize.connect(c.resonance),c.resonance.value=combFilterResonances[a],ae.disconnect()),this._feedbackCombFilters.forEach(e=>e.dispose()),this.roomSize.dispose(),this._scaleRoomSize.dispose(),this}}class StereoXFeedbackEffect extends StereoFeedbackEffect{constructor(e){super(e),this._feedbackL.disconnect(),this._feedbackL.connect(this._feedbackMerge,0,1),this._feedbackR.disconnect(),this._feedbackR.connect(this._feedbackMerge,0,0),readOnly$1(this,["feedback"])}}class PingPongDelay extends StereoXFeedbackEffect{constructor(){super(optionsFromArguments(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"])),this.name="PingPongDelay";const e=optionsFromArguments(PingPongDelay.getDefaults(),arguments,["delayTime","feedback"]);this._leftDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this._rightPreDelay=new Delay({context:this.context,maxDelay:e.maxDelay}),this.delayTime=new Signal({context:this.context,units:"time",value:e.delayTime}),this.connectEffectLeft(this._leftDelay),this.connectEffectRight(this._rightPreDelay,this._rightDelay),this.delayTime.fan(this._leftDelay.delayTime,this._rightDelay.delayTime,this._rightPreDelay.delayTime),this._feedbackL.disconnect(),this._feedbackL.connect(this._rightDelay),readOnly$1(this,["delayTime"])}static getDefaults(){return Object.assign(StereoXFeedbackEffect.getDefaults(),{delayTime:.25,maxDelay:1})}dispose(){return super.dispose(),this._leftDelay.dispose(),this._rightDelay.dispose(),this._rightPreDelay.dispose(),this.delayTime.dispose(),this}}class PitchShift extends FeedbackEffect{constructor(){super(optionsFromArguments(PitchShift.getDefaults(),arguments,["pitch"])),this.name="PitchShift";const e=optionsFromArguments(PitchShift.getDefaults(),arguments,["pitch"]);this._frequency=new Signal({context:this.context}),this._delayA=new Delay({maxDelay:1,context:this.context}),this._lfoA=new LFO({context:this.context,min:0,max:.1,type:"sawtooth"}).connect(this._delayA.delayTime),this._delayB=new Delay({maxDelay:1,context:this.context}),this._lfoB=new LFO({context:this.context,min:0,max:.1,type:"sawtooth",phase:180}).connect(this._delayB.delayTime),this._crossFade=new CrossFade({context:this.context}),this._crossFadeLFO=new LFO({context:this.context,min:0,max:1,type:"triangle",phase:90}).connect(this._crossFade.fade),this._feedbackDelay=new Delay({delayTime:e.delayTime,context:this.context}),this.delayTime=this._feedbackDelay.delayTime,readOnly$1(this,"delayTime"),this._pitch=e.pitch,this._windowSize=e.windowSize,this._delayA.connect(this._crossFade.a),this._delayB.connect(this._crossFade.b),this._frequency.fan(this._lfoA.frequency,this._lfoB.frequency,this._crossFadeLFO.frequency),this.effectSend.fan(this._delayA,this._delayB),this._crossFade.chain(this._feedbackDelay,this.effectReturn);const s=this.now();this._lfoA.start(s),this._lfoB.start(s),this._crossFadeLFO.start(s),this.windowSize=this._windowSize}static getDefaults(){return Object.assign(FeedbackEffect.getDefaults(),{pitch:0,windowSize:.1,delayTime:0,feedback:0})}get pitch(){return this._pitch}set pitch(e){this._pitch=e;let s=0;e<0?(this._lfoA.min=0,this._lfoA.max=this._windowSize,this._lfoB.min=0,this._lfoB.max=this._windowSize,s=intervalToFrequencyRatio(e-1)+1):(this._lfoA.min=this._windowSize,this._lfoA.max=0,this._lfoB.min=this._windowSize,this._lfoB.max=0,s=intervalToFrequencyRatio(e)-1),this._frequency.value=s*(1.2/this._windowSize)}get windowSize(){return this._windowSize}set windowSize(e){this._windowSize=this.toSeconds(e),this.pitch=this._pitch}dispose(){return super.dispose(),this._frequency.dispose(),this._delayA.dispose(),this._delayB.dispose(),this._lfoA.dispose(),this._lfoB.dispose(),this._crossFade.dispose(),this._crossFadeLFO.dispose(),this._feedbackDelay.dispose(),this}}class Phaser extends StereoEffect{constructor(){super(optionsFromArguments(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"])),this.name="Phaser";const e=optionsFromArguments(Phaser.getDefaults(),arguments,["frequency","octaves","baseFrequency"]);this._lfoL=new LFO({context:this.context,frequency:e.frequency,min:0,max:1}),this._lfoR=new LFO({context:this.context,frequency:e.frequency,min:0,max:1,phase:180}),this._baseFrequency=this.toFrequency(e.baseFrequency),this._octaves=e.octaves,this.Q=new Signal({context:this.context,value:e.Q,units:"positive"}),this._filtersL=this._makeFilters(e.stages,this._lfoL),this._filtersR=this._makeFilters(e.stages,this._lfoR),this.frequency=this._lfoL.frequency,this.frequency.value=e.frequency,this.connectEffectLeft(...this._filtersL),this.connectEffectRight(...this._filtersR),this._lfoL.frequency.connect(this._lfoR.frequency),this.baseFrequency=e.baseFrequency,this.octaves=e.octaves,this._lfoL.start(),this._lfoR.start(),readOnly$1(this,["frequency","Q"])}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:.5,octaves:3,stages:10,Q:10,baseFrequency:350})}_makeFilters(e,s){const a=[];for(let c=0;ce.disconnect()),this._filtersR.forEach(e=>e.disconnect()),this.frequency.dispose(),this}}class Reverb extends Effect{constructor(){super(optionsFromArguments(Reverb.getDefaults(),arguments,["decay"])),this.name="Reverb",this._convolver=this.context.createConvolver(),this.ready=Promise.resolve();const e=optionsFromArguments(Reverb.getDefaults(),arguments,["decay"]);this._decay=e.decay,this._preDelay=e.preDelay,this.generate(),this.connectEffect(this._convolver)}static getDefaults(){return Object.assign(Effect.getDefaults(),{decay:1.5,preDelay:.01})}get decay(){return this._decay}set decay(e){e=this.toSeconds(e),assertRange(e,.001),this._decay=e,this.generate()}get preDelay(){return this._preDelay}set preDelay(e){e=this.toSeconds(e),assertRange(e,0),this._preDelay=e,this.generate()}generate(){return __awaiter$4(this,void 0,void 0,function*(){const e=this.ready,s=new OfflineContext(2,this._decay+this._preDelay,this.context.sampleRate),a=new Noise({context:s}),c=new Noise({context:s}),d=new Merge({context:s});a.connect(d,0,0),c.connect(d,0,1);const _=new Gain$1({context:s}).toDestination();d.connect(_),a.start(0),c.start(0),_.gain.setValueAtTime(0,0),_.gain.setValueAtTime(1,this._preDelay),_.gain.exponentialApproachValueAtTime(0,this._preDelay,this.decay);const b=s.render();return this.ready=b.then(noOp),yield e,this._convolver.buffer=(yield b).get(),this})}dispose(){return super.dispose(),this._convolver.disconnect(),this}}class MidSideSplit extends ToneAudioNode{constructor(){super(optionsFromArguments(MidSideSplit.getDefaults(),arguments)),this.name="MidSideSplit",this._split=this.input=new Split({channels:2,context:this.context}),this._midAdd=new Add({context:this.context}),this.mid=new Multiply({context:this.context,value:Math.SQRT1_2}),this._sideSubtract=new Subtract({context:this.context}),this.side=new Multiply({context:this.context,value:Math.SQRT1_2}),this._split.connect(this._midAdd,0),this._split.connect(this._midAdd.addend,1),this._split.connect(this._sideSubtract,0),this._split.connect(this._sideSubtract.subtrahend,1),this._midAdd.connect(this.mid),this._sideSubtract.connect(this.side)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midAdd.dispose(),this._sideSubtract.dispose(),this._split.dispose(),this}}class MidSideMerge extends ToneAudioNode{constructor(){super(optionsFromArguments(MidSideMerge.getDefaults(),arguments)),this.name="MidSideMerge",this.mid=new Gain$1({context:this.context}),this.side=new Gain$1({context:this.context}),this._left=new Add({context:this.context}),this._leftMult=new Multiply({context:this.context,value:Math.SQRT1_2}),this._right=new Subtract({context:this.context}),this._rightMult=new Multiply({context:this.context,value:Math.SQRT1_2}),this._merge=this.output=new Merge({context:this.context}),this.mid.fan(this._left),this.side.connect(this._left.addend),this.mid.connect(this._right),this.side.connect(this._right.subtrahend),this._left.connect(this._leftMult),this._right.connect(this._rightMult),this._leftMult.connect(this._merge,0,0),this._rightMult.connect(this._merge,0,1)}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._leftMult.dispose(),this._rightMult.dispose(),this._left.dispose(),this._right.dispose(),this}}class MidSideEffect extends Effect{constructor(e){super(e),this.name="MidSideEffect",this._midSideMerge=new MidSideMerge({context:this.context}),this._midSideSplit=new MidSideSplit({context:this.context}),this._midSend=this._midSideSplit.mid,this._sideSend=this._midSideSplit.side,this._midReturn=this._midSideMerge.mid,this._sideReturn=this._midSideMerge.side,this.effectSend.connect(this._midSideSplit),this._midSideMerge.connect(this.effectReturn)}connectEffectMid(...e){this._midSend.chain(...e,this._midReturn)}connectEffectSide(...e){this._sideSend.chain(...e,this._sideReturn)}dispose(){return super.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this._midSend.dispose(),this._sideSend.dispose(),this._midReturn.dispose(),this._sideReturn.dispose(),this}}class StereoWidener extends MidSideEffect{constructor(){super(optionsFromArguments(StereoWidener.getDefaults(),arguments,["width"])),this.name="StereoWidener";const e=optionsFromArguments(StereoWidener.getDefaults(),arguments,["width"]);this.width=new Signal({context:this.context,value:e.width,units:"normalRange"}),readOnly$1(this,["width"]),this._twoTimesWidthMid=new Multiply({context:this.context,value:2}),this._twoTimesWidthSide=new Multiply({context:this.context,value:2}),this._midMult=new Multiply({context:this.context}),this._twoTimesWidthMid.connect(this._midMult.factor),this.connectEffectMid(this._midMult),this._oneMinusWidth=new Subtract({context:this.context}),this._oneMinusWidth.connect(this._twoTimesWidthMid),connect(this.context.getConstant(1),this._oneMinusWidth),this.width.connect(this._oneMinusWidth.subtrahend),this._sideMult=new Multiply({context:this.context}),this.width.connect(this._twoTimesWidthSide),this._twoTimesWidthSide.connect(this._sideMult.factor),this.connectEffectSide(this._sideMult)}static getDefaults(){return Object.assign(MidSideEffect.getDefaults(),{width:.5})}dispose(){return super.dispose(),this.width.dispose(),this._midMult.dispose(),this._sideMult.dispose(),this._twoTimesWidthMid.dispose(),this._twoTimesWidthSide.dispose(),this._oneMinusWidth.dispose(),this}}class Tremolo extends StereoEffect{constructor(){super(optionsFromArguments(Tremolo.getDefaults(),arguments,["frequency","depth"])),this.name="Tremolo";const e=optionsFromArguments(Tremolo.getDefaults(),arguments,["frequency","depth"]);this._lfoL=new LFO({context:this.context,type:e.type,min:1,max:0}),this._lfoR=new LFO({context:this.context,type:e.type,min:1,max:0}),this._amplitudeL=new Gain$1({context:this.context}),this._amplitudeR=new Gain$1({context:this.context}),this.frequency=new Signal({context:this.context,value:e.frequency,units:"frequency"}),this.depth=new Signal({context:this.context,value:e.depth,units:"normalRange"}),readOnly$1(this,["frequency","depth"]),this.connectEffectLeft(this._amplitudeL),this.connectEffectRight(this._amplitudeR),this._lfoL.connect(this._amplitudeL.gain),this._lfoR.connect(this._amplitudeR.gain),this.frequency.fan(this._lfoL.frequency,this._lfoR.frequency),this.depth.fan(this._lfoR.amplitude,this._lfoL.amplitude),this.spread=e.spread}static getDefaults(){return Object.assign(StereoEffect.getDefaults(),{frequency:10,type:"sine",depth:.5,spread:180})}start(e){return this._lfoL.start(e),this._lfoR.start(e),this}stop(e){return this._lfoL.stop(e),this._lfoR.stop(e),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this.context.transport.syncSignal(this.frequency),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this.context.transport.unsyncSignal(this.frequency),this}get type(){return this._lfoL.type}set type(e){this._lfoL.type=e,this._lfoR.type=e}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(e){this._lfoL.phase=90-e/2,this._lfoR.phase=e/2+90}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._amplitudeL.dispose(),this._amplitudeR.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Vibrato extends Effect{constructor(){super(optionsFromArguments(Vibrato.getDefaults(),arguments,["frequency","depth"])),this.name="Vibrato";const e=optionsFromArguments(Vibrato.getDefaults(),arguments,["frequency","depth"]);this._delayNode=new Delay({context:this.context,delayTime:0,maxDelay:e.maxDelay}),this._lfo=new LFO({context:this.context,type:e.type,min:0,max:e.maxDelay,frequency:e.frequency,phase:-90}).start().connect(this._delayNode.delayTime),this.frequency=this._lfo.frequency,this.depth=this._lfo.amplitude,this.depth.value=e.depth,readOnly$1(this,["frequency","depth"]),this.effectSend.chain(this._delayNode,this.effectReturn)}static getDefaults(){return Object.assign(Effect.getDefaults(),{maxDelay:.005,frequency:5,depth:.1,type:"sine"})}get type(){return this._lfo.type}set type(e){this._lfo.type=e}dispose(){return super.dispose(),this._delayNode.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Analyser extends ToneAudioNode{constructor(){super(optionsFromArguments(Analyser.getDefaults(),arguments,["type","size"])),this.name="Analyser",this._analysers=[],this._buffers=[];const e=optionsFromArguments(Analyser.getDefaults(),arguments,["type","size"]);this.input=this.output=this._gain=new Gain$1({context:this.context}),this._split=new Split({context:this.context,channels:e.channels}),this.input.connect(this._split),assertRange(e.channels,1);for(let s=0;s{const a=this._buffers[s];this._type==="fft"?e.getFloatFrequencyData(a):this._type==="waveform"&&e.getFloatTimeDomainData(a)}),this.channels===1?this._buffers[0]:this._buffers}get size(){return this._analysers[0].frequencyBinCount}set size(e){this._analysers.forEach((s,a)=>{s.fftSize=e*2,this._buffers[a]=new Float32Array(e)})}get channels(){return this._analysers.length}get type(){return this._type}set type(e){assert(e==="waveform"||e==="fft",`Analyser: invalid type: ${e}`),this._type=e}get smoothing(){return this._analysers[0].smoothingTimeConstant}set smoothing(e){this._analysers.forEach(s=>s.smoothingTimeConstant=e)}dispose(){return super.dispose(),this._analysers.forEach(e=>e.disconnect()),this._split.dispose(),this._gain.dispose(),this}}class MeterBase extends ToneAudioNode{constructor(){super(optionsFromArguments(MeterBase.getDefaults(),arguments)),this.name="MeterBase",this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform"})}dispose(){return super.dispose(),this._analyser.dispose(),this}}class Meter extends MeterBase{constructor(){super(optionsFromArguments(Meter.getDefaults(),arguments,["smoothing"])),this.name="Meter",this._rms=0;const e=optionsFromArguments(Meter.getDefaults(),arguments,["smoothing"]);this.input=this.output=this._analyser=new Analyser({context:this.context,size:256,type:"waveform",channels:e.channels}),this.smoothing=e.smoothing,this.normalRange=e.normalRange}static getDefaults(){return Object.assign(MeterBase.getDefaults(),{smoothing:.8,normalRange:!1,channels:1})}getLevel(){return warn("'getLevel' has been changed to 'getValue'"),this.getValue()}getValue(){const e=this._analyser.getValue(),a=(this.channels===1?[e]:e).map(c=>{const d=c.reduce((b,k)=>b+k*k,0),_=Math.sqrt(d/c.length);return this._rms=Math.max(_,this._rms*this.smoothing),this.normalRange?this._rms:gainToDb(this._rms)});return this.channels===1?a[0]:a}get channels(){return this._analyser.channels}dispose(){return super.dispose(),this._analyser.dispose(),this}}class FFT extends MeterBase{constructor(){super(optionsFromArguments(FFT.getDefaults(),arguments,["size"])),this.name="FFT";const e=optionsFromArguments(FFT.getDefaults(),arguments,["size"]);this.normalRange=e.normalRange,this._analyser.type="fft",this.size=e.size}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{normalRange:!1,size:1024,smoothing:.8})}getValue(){return this._analyser.getValue().map(s=>this.normalRange?dbToGain(s):s)}get size(){return this._analyser.size}set size(e){this._analyser.size=e}get smoothing(){return this._analyser.smoothing}set smoothing(e){this._analyser.smoothing=e}getFrequencyOfIndex(e){return assert(0<=e&&es._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){Solo._soloed.has(this.context)||Solo._soloed.set(this.context,new Set),Solo._soloed.get(this.context).add(this)}_removeSolo(){Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).delete(this)}_isSoloed(){return Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).has(this)}_noSolos(){return!Solo._soloed.has(this.context)||Solo._soloed.has(this.context)&&Solo._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()?this.input.gain.value=1:this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),Solo._allSolos.get(this.context).delete(this),this._removeSolo(),this}}Solo._allSolos=new Map;Solo._soloed=new Map;class PanVol extends ToneAudioNode{constructor(){super(optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"])),this.name="PanVol";const e=optionsFromArguments(PanVol.getDefaults(),arguments,["pan","volume"]);this._panner=this.input=new Panner({context:this.context,pan:e.pan,channelCount:e.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new Volume({context:this.context,volume:e.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=e.mute,readOnly$1(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}}class Channel extends ToneAudioNode{constructor(){super(optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"])),this.name="Channel";const e=optionsFromArguments(Channel.getDefaults(),arguments,["volume","pan"]);this._solo=this.input=new Solo({solo:e.solo,context:this.context}),this._panVol=this.output=new PanVol({context:this.context,pan:e.pan,volume:e.volume,mute:e.mute,channelCount:e.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),readOnly$1(this,["pan","volume"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(e){return Channel.buses.has(e)||Channel.buses.set(e,new Gain$1({context:this.context})),Channel.buses.get(e)}send(e,s=0){const a=this._getBus(e),c=new Gain$1({context:this.context,units:"decibels",gain:s});return this.connect(c),c.connect(a),c}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}}Channel.buses=new Map;class Mono extends ToneAudioNode{constructor(){super(optionsFromArguments(Mono.getDefaults(),arguments)),this.name="Mono",this.input=new Gain$1({context:this.context}),this._merge=this.output=new Merge({channels:2,context:this.context}),this.input.connect(this._merge,0,0),this.input.connect(this._merge,0,1)}dispose(){return super.dispose(),this._merge.dispose(),this.input.dispose(),this}}class MultibandSplit extends ToneAudioNode{constructor(){super(optionsFromArguments(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"])),this.name="MultibandSplit",this.input=new Gain$1({context:this.context}),this.output=void 0,this.low=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this._lowMidFilter=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this.mid=new Filter$1({context:this.context,frequency:0,type:"lowpass"}),this.high=new Filter$1({context:this.context,frequency:0,type:"highpass"}),this._internalChannels=[this.low,this.mid,this.high];const e=optionsFromArguments(MultibandSplit.getDefaults(),arguments,["lowFrequency","highFrequency"]);this.lowFrequency=new Signal({context:this.context,units:"frequency",value:e.lowFrequency}),this.highFrequency=new Signal({context:this.context,units:"frequency",value:e.highFrequency}),this.Q=new Signal({context:this.context,units:"positive",value:e.Q}),this.input.fan(this.low,this.high),this.input.chain(this._lowMidFilter,this.mid),this.lowFrequency.fan(this.low.frequency,this._lowMidFilter.frequency),this.highFrequency.fan(this.mid.frequency,this.high.frequency),this.Q.connect(this.low.Q),this.Q.connect(this._lowMidFilter.Q),this.Q.connect(this.mid.Q),this.Q.connect(this.high.Q),readOnly$1(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{Q:1,highFrequency:2500,lowFrequency:400})}dispose(){return super.dispose(),writable(this,["high","mid","low","highFrequency","lowFrequency"]),this.low.dispose(),this._lowMidFilter.dispose(),this.mid.dispose(),this.high.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this.Q.dispose(),this}}class Listener$1 extends ToneAudioNode{constructor(){super(...arguments),this.name="Listener",this.positionX=new Param({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new Param({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new Param({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new Param({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new Param({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new Param({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new Param({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new Param({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new Param({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}}onContextInit(o=>{o.listener=new Listener$1({context:o})});onContextClose(o=>{o.listener.dispose()});class Panner3D extends ToneAudioNode{constructor(){super(optionsFromArguments(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"])),this.name="Panner3D";const e=optionsFromArguments(Panner3D.getDefaults(),arguments,["positionX","positionY","positionZ"]);this._panner=this.input=this.output=this.context.createPanner(),this.panningModel=e.panningModel,this.maxDistance=e.maxDistance,this.distanceModel=e.distanceModel,this.coneOuterGain=e.coneOuterGain,this.coneOuterAngle=e.coneOuterAngle,this.coneInnerAngle=e.coneInnerAngle,this.refDistance=e.refDistance,this.rolloffFactor=e.rolloffFactor,this.positionX=new Param({context:this.context,param:this._panner.positionX,value:e.positionX}),this.positionY=new Param({context:this.context,param:this._panner.positionY,value:e.positionY}),this.positionZ=new Param({context:this.context,param:this._panner.positionZ,value:e.positionZ}),this.orientationX=new Param({context:this.context,param:this._panner.orientationX,value:e.orientationX}),this.orientationY=new Param({context:this.context,param:this._panner.orientationY,value:e.orientationY}),this.orientationZ=new Param({context:this.context,param:this._panner.orientationZ,value:e.orientationZ})}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:"inverse",maxDistance:1e4,orientationX:0,orientationY:0,orientationZ:0,panningModel:"equalpower",positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1})}setPosition(e,s,a){return this.positionX.value=e,this.positionY.value=s,this.positionZ.value=a,this}setOrientation(e,s,a){return this.orientationX.value=e,this.orientationY.value=s,this.orientationZ.value=a,this}get panningModel(){return this._panner.panningModel}set panningModel(e){this._panner.panningModel=e}get refDistance(){return this._panner.refDistance}set refDistance(e){this._panner.refDistance=e}get rolloffFactor(){return this._panner.rolloffFactor}set rolloffFactor(e){this._panner.rolloffFactor=e}get distanceModel(){return this._panner.distanceModel}set distanceModel(e){this._panner.distanceModel=e}get coneInnerAngle(){return this._panner.coneInnerAngle}set coneInnerAngle(e){this._panner.coneInnerAngle=e}get coneOuterAngle(){return this._panner.coneOuterAngle}set coneOuterAngle(e){this._panner.coneOuterAngle=e}get coneOuterGain(){return this._panner.coneOuterGain}set coneOuterGain(e){this._panner.coneOuterGain=e}get maxDistance(){return this._panner.maxDistance}set maxDistance(e){this._panner.maxDistance=e}dispose(){return super.dispose(),this._panner.disconnect(),this.orientationX.dispose(),this.orientationY.dispose(),this.orientationZ.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this}}class Recorder extends ToneAudioNode{constructor(){super(optionsFromArguments(Recorder.getDefaults(),arguments)),this.name="Recorder";const e=optionsFromArguments(Recorder.getDefaults(),arguments);this.input=new Gain$1({context:this.context}),assert(Recorder.supported,"Media Recorder API is not available"),this._stream=this.context.createMediaStreamDestination(),this.input.connect(this._stream),this._recorder=new MediaRecorder(this._stream.stream,{mimeType:e.mimeType})}static getDefaults(){return ToneAudioNode.getDefaults()}get mimeType(){return this._recorder.mimeType}static get supported(){return theWindow!==null&&Reflect.has(theWindow,"MediaRecorder")}get state(){return this._recorder.state==="inactive"?"stopped":this._recorder.state==="paused"?"paused":"started"}start(){return __awaiter$4(this,void 0,void 0,function*(){assert(this.state!=="started","Recorder is already started");const e=new Promise(s=>{const a=()=>{this._recorder.removeEventListener("start",a,!1),s()};this._recorder.addEventListener("start",a,!1)});return this._recorder.start(),yield e})}stop(){return __awaiter$4(this,void 0,void 0,function*(){assert(this.state!=="stopped","Recorder is not started");const e=new Promise(s=>{const a=c=>{this._recorder.removeEventListener("dataavailable",a,!1),s(c.data)};this._recorder.addEventListener("dataavailable",a,!1)});return this._recorder.stop(),yield e})}pause(){return assert(this.state==="started","Recorder must be started"),this._recorder.pause(),this}dispose(){return super.dispose(),this.input.dispose(),this._stream.disconnect(),this}}class Compressor extends ToneAudioNode{constructor(){super(optionsFromArguments(Compressor.getDefaults(),arguments,["threshold","ratio"])),this.name="Compressor",this._compressor=this.context.createDynamicsCompressor(),this.input=this._compressor,this.output=this._compressor;const e=optionsFromArguments(Compressor.getDefaults(),arguments,["threshold","ratio"]);this.threshold=new Param({minValue:this._compressor.threshold.minValue,maxValue:this._compressor.threshold.maxValue,context:this.context,convert:!1,param:this._compressor.threshold,units:"decibels",value:e.threshold}),this.attack=new Param({minValue:this._compressor.attack.minValue,maxValue:this._compressor.attack.maxValue,context:this.context,param:this._compressor.attack,units:"time",value:e.attack}),this.release=new Param({minValue:this._compressor.release.minValue,maxValue:this._compressor.release.maxValue,context:this.context,param:this._compressor.release,units:"time",value:e.release}),this.knee=new Param({minValue:this._compressor.knee.minValue,maxValue:this._compressor.knee.maxValue,context:this.context,convert:!1,param:this._compressor.knee,units:"decibels",value:e.knee}),this.ratio=new Param({minValue:this._compressor.ratio.minValue,maxValue:this._compressor.ratio.maxValue,context:this.context,convert:!1,param:this._compressor.ratio,units:"positive",value:e.ratio}),readOnly$1(this,["knee","release","attack","ratio","threshold"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{attack:.003,knee:30,ratio:12,release:.25,threshold:-24})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.disconnect(),this.attack.dispose(),this.release.dispose(),this.threshold.dispose(),this.ratio.dispose(),this.knee.dispose(),this}}class Gate extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Gate.getDefaults(),arguments,["threshold","smoothing"]))),this.name="Gate";const e=optionsFromArguments(Gate.getDefaults(),arguments,["threshold","smoothing"]);this._follower=new Follower({context:this.context,smoothing:e.smoothing}),this._gt=new GreaterThan({context:this.context,value:dbToGain(e.threshold)}),this.input=new Gain$1({context:this.context}),this._gate=this.output=new Gain$1({context:this.context}),this.input.connect(this._gate),this.input.chain(this._follower,this._gt,this._gate.gain)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{smoothing:.1,threshold:-40})}get threshold(){return gainToDb(this._gt.value)}set threshold(e){this._gt.value=dbToGain(e)}get smoothing(){return this._follower.smoothing}set smoothing(e){this._follower.smoothing=e}dispose(){return super.dispose(),this.input.dispose(),this._follower.dispose(),this._gt.dispose(),this._gate.dispose(),this}}class Limiter extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(Limiter.getDefaults(),arguments,["threshold"]))),this.name="Limiter";const e=optionsFromArguments(Limiter.getDefaults(),arguments,["threshold"]);this._compressor=this.input=this.output=new Compressor({context:this.context,ratio:20,attack:.003,release:.01,threshold:e.threshold}),this.threshold=this._compressor.threshold,readOnly$1(this,"threshold")}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{threshold:-12})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.dispose(),this.threshold.dispose(),this}}class MidSideCompressor extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(MidSideCompressor.getDefaults(),arguments))),this.name="MidSideCompressor";const e=optionsFromArguments(MidSideCompressor.getDefaults(),arguments);this._midSideSplit=this.input=new MidSideSplit({context:this.context}),this._midSideMerge=this.output=new MidSideMerge({context:this.context}),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.side=new Compressor(Object.assign(e.side,{context:this.context})),this._midSideSplit.mid.chain(this.mid,this._midSideMerge.mid),this._midSideSplit.side.chain(this.side,this._midSideMerge.side),readOnly$1(this,["mid","side"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},side:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10}})}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this}}class MultibandCompressor extends ToneAudioNode{constructor(){super(Object.assign(optionsFromArguments(MultibandCompressor.getDefaults(),arguments))),this.name="MultibandCompressor";const e=optionsFromArguments(MultibandCompressor.getDefaults(),arguments);this._splitter=this.input=new MultibandSplit({context:this.context,lowFrequency:e.lowFrequency,highFrequency:e.highFrequency}),this.lowFrequency=this._splitter.lowFrequency,this.highFrequency=this._splitter.highFrequency,this.output=new Gain$1({context:this.context}),this.low=new Compressor(Object.assign(e.low,{context:this.context})),this.mid=new Compressor(Object.assign(e.mid,{context:this.context})),this.high=new Compressor(Object.assign(e.high,{context:this.context})),this._splitter.low.chain(this.low,this.output),this._splitter.mid.chain(this.mid,this.output),this._splitter.high.chain(this.high,this.output),readOnly$1(this,["high","mid","low","highFrequency","lowFrequency"])}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{lowFrequency:250,highFrequency:2e3,low:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10},mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},high:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16}})}dispose(){return super.dispose(),this._splitter.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.output.dispose(),this}}class EQ3 extends ToneAudioNode{constructor(){super(optionsFromArguments(EQ3.getDefaults(),arguments,["low","mid","high"])),this.name="EQ3",this.output=new Gain$1({context:this.context}),this._internalChannels=[];const e=optionsFromArguments(EQ3.getDefaults(),arguments,["low","mid","high"]);this.input=this._multibandSplit=new MultibandSplit({context:this.context,highFrequency:e.highFrequency,lowFrequency:e.lowFrequency}),this._lowGain=new Gain$1({context:this.context,gain:e.low,units:"decibels"}),this._midGain=new Gain$1({context:this.context,gain:e.mid,units:"decibels"}),this._highGain=new Gain$1({context:this.context,gain:e.high,units:"decibels"}),this.low=this._lowGain.gain,this.mid=this._midGain.gain,this.high=this._highGain.gain,this.Q=this._multibandSplit.Q,this.lowFrequency=this._multibandSplit.lowFrequency,this.highFrequency=this._multibandSplit.highFrequency,this._multibandSplit.low.chain(this._lowGain,this.output),this._multibandSplit.mid.chain(this._midGain,this.output),this._multibandSplit.high.chain(this._highGain,this.output),readOnly$1(this,["low","mid","high","lowFrequency","highFrequency"]),this._internalChannels=[this._multibandSplit]}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{high:0,highFrequency:2500,low:0,lowFrequency:400,mid:0})}dispose(){return super.dispose(),writable(this,["low","mid","high","lowFrequency","highFrequency"]),this._multibandSplit.dispose(),this.lowFrequency.dispose(),this.highFrequency.dispose(),this._lowGain.dispose(),this._midGain.dispose(),this._highGain.dispose(),this.low.dispose(),this.mid.dispose(),this.high.dispose(),this.Q.dispose(),this}}class Convolver extends ToneAudioNode{constructor(){super(optionsFromArguments(Convolver.getDefaults(),arguments,["url","onload"])),this.name="Convolver",this._convolver=this.context.createConvolver();const e=optionsFromArguments(Convolver.getDefaults(),arguments,["url","onload"]);this._buffer=new ToneAudioBuffer(e.url,s=>{this.buffer=s,e.onload()}),this.input=new Gain$1({context:this.context}),this.output=new Gain$1({context:this.context}),this._buffer.loaded&&(this.buffer=this._buffer),this.normalize=e.normalize,this.input.chain(this._convolver,this.output)}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{normalize:!0,onload:noOp})}load(e){return __awaiter$4(this,void 0,void 0,function*(){this.buffer=yield this._buffer.load(e)})}get buffer(){return this._buffer.length?this._buffer:null}set buffer(e){e&&this._buffer.set(e),this._convolver.buffer&&(this.input.disconnect(),this._convolver.disconnect(),this._convolver=this.context.createConvolver(),this.input.chain(this._convolver,this.output));const s=this._buffer.get();this._convolver.buffer=s||null}get normalize(){return this._convolver.normalize}set normalize(e){this._convolver.normalize=e}dispose(){return super.dispose(),this._buffer.dispose(),this._convolver.disconnect(),this}}function now(){return getContext().now()}function immediate(){return getContext().immediate()}const Transport=getContext().transport;function getTransport(){return getContext().transport}const Destination$1=getContext().destination,Master=getContext().destination;function getDestination$1(){return getContext().destination}const Listener=getContext().listener;function getListener(){return getContext().listener}const Draw=getContext().draw;function getDraw(){return getContext().draw}const context=getContext();function loaded(){return ToneAudioBuffer.loaded()}const Buffer=ToneAudioBuffer,Buffers=ToneAudioBuffers,BufferSource=ToneBufferSource;var _Tone=Object.freeze(Object.defineProperty({__proto__:null,now,immediate,Transport,getTransport,Destination:Destination$1,Master,getDestination:getDestination$1,Listener,getListener,Draw,getDraw,context,loaded,Buffer,Buffers,BufferSource,getContext,setContext,start,supported:isSupported,dbToGain,gainToDb,intervalToFrequencyRatio,ftom,mtof,optionsFromArguments,defaultArg,Clock,Context,BaseContext,Delay,Gain:Gain$1,Offline,OfflineContext,Param,ToneAudioBuffer,ToneAudioBuffers,ToneAudioNode,connectSeries,connect,disconnect,FrequencyClass,Frequency,MidiClass,Midi,TimeClass,Time,TicksClass,Ticks,TransportTimeClass,TransportTime,Emitter,IntervalTimeline,StateTimeline,Timeline,isUndef,isDefined,isFunction,isNumber,isObject,isBoolean,isArray,isString,isNote:isNote$2,Unit:Units,debug:Debug,Noise,UserMedia,Oscillator,AMOscillator,FMOscillator,PulseOscillator,FatOscillator,PWMOscillator,OmniOscillator,ToneOscillatorNode,LFO,ToneBufferSource,Player,Players:Players$1,GrainPlayer,Add,Abs,AudioToGain,GainToAudio,GreaterThan,GreaterThanZero,Multiply,Negate,Pow,Signal,connectSignal,Scale,ScaleExp,Subtract,SyncedSignal,WaveShaper,Zero,AMSynth:AMSynth$1,DuoSynth:DuoSynth$1,FMSynth:FMSynth$1,MetalSynth:MetalSynth$1,MembraneSynth:MembraneSynth$1,MonoSynth:MonoSynth$1,NoiseSynth:NoiseSynth$1,PluckSynth:PluckSynth$1,PolySynth:PolySynth$1,Sampler:Sampler$1,Synth:Synth$1,Loop,Part,Pattern:Pattern$3,Sequence,ToneEvent,AutoFilter:AutoFilter$1,AutoPanner,AutoWah,BitCrusher,Chebyshev,Chorus,Distortion,FeedbackDelay,FrequencyShifter,Freeverb,JCReverb,PingPongDelay,PitchShift,Phaser,Reverb,StereoWidener,Tremolo,Vibrato,Analyser,Meter,FFT,DCMeter,Waveform,Follower,Channel,CrossFade,Merge,MidSideMerge,MidSideSplit,Mono,MultibandSplit,Panner,Panner3D,PanVol,Recorder,Solo,Split,Volume,Compressor,Gate,Limiter,MidSideCompressor,MultibandCompressor,AmplitudeEnvelope,Envelope,FrequencyEnvelope,EQ3,Filter:Filter$1,OnePoleFilter,FeedbackCombFilter,LowpassCombFilter,Convolver,BiquadFilter,version},Symbol.toStringTag,{value:"Module"})),__awaiter$3=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class PianoComponent extends ToneAudioNode{constructor(e){super(e),this.name="PianoComponent",this.input=void 0,this.output=new Volume({context:this.context}),this._enabled=!1,this.volume=this.output.volume,this._loaded=!1,this.volume.value=e.volume,this._enabled=e.enabled,this.samples=e.samples}get loaded(){return this._loaded}load(){return __awaiter$3(this,void 0,void 0,function*(){if(this._enabled)yield this._internalLoad(),this._loaded=!0;else return Promise.resolve()})}}function midiToNote(o){return Frequency(o,"midi").toNote()}function randomBetween(o,e){return Math.random()*(e-o)+o}function getReleasesUrl(o){return`rel${o-20}.[mp3|ogg]`}function getHarmonicsUrl(o){return`harmS${midiToNote(o).replace("#","s")}.[mp3|ogg]`}function getNotesUrl(o,e){return`${midiToNote(o).replace("#","s")}v${e}.[mp3|ogg]`}const velocitiesMap={1:[8],2:[6,12],3:[1,7,15],4:[1,5,10,15],5:[1,4,8,12,16],6:[1,3,7,10,13,16],7:[1,3,6,9,11,13,16],8:[1,3,5,7,9,11,13,16],9:[1,3,5,7,9,11,13,15,16],10:[1,2,3,5,7,9,11,13,15,16],11:[1,2,3,5,7,9,11,13,14,15,16],12:[1,2,3,4,5,7,9,11,13,14,15,16],13:[1,2,3,4,5,7,9,11,12,13,14,15,16],14:[1,2,3,4,5,6,7,9,11,12,13,14,15,16],15:[1,2,3,4,5,6,7,9,10,11,12,13,14,15,16],16:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]},allNotes=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108];function getNotesInRange(o,e){return allNotes.filter(s=>o<=s&&s<=e)}const harmonics=[21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87];function getHarmonicsInRange(o,e){return harmonics.filter(s=>o<=s&&s<=e)}function inHarmonicsRange(o){return harmonics[0]<=o&&o<=harmonics[harmonics.length-1]}class Harmonics extends PianoComponent{constructor(e){super(e),this._urls={};const s=getHarmonicsInRange(e.minNote,e.maxNote);for(const a of s)this._urls[a]=getHarmonicsUrl(a)}triggerAttack(e,s,a){this._enabled&&inHarmonicsRange(e)&&this._sampler.triggerAttack(Midi(e).toNote(),s,a*randomBetween(.5,1))}_internalLoad(){return new Promise(e=>{this._sampler=new Sampler$1({baseUrl:this.samples,onload:e,urls:this._urls}).connect(this.output)})}}class Keybed extends PianoComponent{constructor(e){super(e),this._urls={};for(let s=e.minNote;s<=e.maxNote;s++)this._urls[s]=getReleasesUrl(s)}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers(this._urls,e,this.samples)})}start(e,s,a){this._enabled&&this._buffers.has(e)&&new ToneBufferSource({url:this._buffers.get(e),context:this.context}).connect(this.output).start(s,0,void 0,.015*a*randomBetween(.5,1))}}class Pedal extends PianoComponent{constructor(e){super(e),this._downTime=1/0,this._currentSound=null,this._downTime=1/0}_internalLoad(){return new Promise(e=>{this._buffers=new ToneAudioBuffers({down1:"pedalD1.mp3",down2:"pedalD2.mp3",up1:"pedalU1.mp3",up2:"pedalU2.mp3"},e,this.samples)})}_squash(e){this._currentSound&&this._currentSound.state!=="stopped"&&this._currentSound.stop(e),this._currentSound=null}_playSample(e,s){this._enabled&&(this._currentSound=new ToneBufferSource({url:this._buffers.get(`${s}${Math.random()>.5?1:2}`),context:this.context,curve:"exponential",fadeIn:.05,fadeOut:.1}).connect(this.output),this._currentSound.start(e,randomBetween(0,.01),void 0,.1*randomBetween(.5,1)))}down(e){this._squash(e),this._downTime=e,this._playSample(e,"down")}up(e){this._squash(e),this._downTime=1/0,this._playSample(e,"up")}isDown(e){return e>this._downTime}}class PianoString extends ToneAudioNode{constructor(e){super(e),this.name="PianoString",this._urls={},e.notes.forEach(s=>this._urls[s]=getNotesUrl(s,e.velocity)),this.samples=e.samples}load(){return new Promise(e=>{this._sampler=this.output=new Sampler$1({attack:0,baseUrl:this.samples,curve:"exponential",onload:e,release:.4,urls:this._urls,volume:3})})}triggerAttack(e,s,a){this._sampler.triggerAttack(e,s,a)}triggerRelease(e,s){this._sampler.triggerRelease(e,s)}}var __awaiter$2=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class PianoStrings extends PianoComponent{constructor(e){super(e);const s=getNotesInRange(e.minNote,e.maxNote),a=velocitiesMap[e.velocities].slice();this._strings=a.map(c=>new PianoString(Object.assign(e,{notes:s,velocity:c}))),this._activeNotes=new Map}scale(e,s,a,c,d){return(e-s)/(a-s)*(d-c)+c}triggerAttack(e,s,a){const c=this.scale(a,0,1,-.5,this._strings.length-.51),d=Math.max(Math.round(c),0);let _=1+c-d;this._strings.length===1&&(_=a);const b=this._strings[d];this._activeNotes.has(e)&&this.triggerRelease(e,s),this._activeNotes.set(e,b),b.triggerAttack(Midi(e).toNote(),s,_)}triggerRelease(e,s){this._activeNotes.has(e)&&(this._activeNotes.get(e).triggerRelease(Midi(e).toNote(),s),this._activeNotes.delete(e))}_internalLoad(){return __awaiter$2(this,void 0,void 0,function*(){yield Promise.all(this._strings.map(e=>__awaiter$2(this,void 0,void 0,function*(){yield e.load(),e.connect(this.output)})))})}}var __awaiter$1=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class Piano$1 extends ToneAudioNode{constructor(){super(optionsFromArguments(Piano$1.getDefaults(),arguments)),this.name="Piano",this.input=void 0,this.output=new Gain$1({context:this.context}),this._heldNotes=new Map,this._loaded=!1;const e=optionsFromArguments(Piano$1.getDefaults(),arguments);e.url.endsWith("/")||(e.url+="/"),this.maxPolyphony=e.maxPolyphony,this._heldNotes=new Map,this._sustainedNotes=new Map,this._strings=new PianoStrings(Object.assign({},e,{enabled:!0,samples:e.url,volume:e.volume.strings})).connect(this.output),this.strings=this._strings.volume,this._pedal=new Pedal(Object.assign({},e,{enabled:e.pedal,samples:e.url,volume:e.volume.pedal})).connect(this.output),this.pedal=this._pedal.volume,this._keybed=new Keybed(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.keybed})).connect(this.output),this.keybed=this._keybed.volume,this._harmonics=new Harmonics(Object.assign({},e,{enabled:e.release,samples:e.url,volume:e.volume.harmonics})).connect(this.output),this.harmonics=this._harmonics.volume}static getDefaults(){return Object.assign(ToneAudioNode.getDefaults(),{maxNote:108,minNote:21,pedal:!0,release:!1,url:"https://tambien.github.io/Piano/audio/",velocities:1,maxPolyphony:32,volume:{harmonics:0,keybed:0,pedal:0,strings:0}})}load(){return __awaiter$1(this,void 0,void 0,function*(){yield Promise.all([this._strings.load(),this._pedal.load(),this._keybed.load(),this._harmonics.load()]),this._loaded=!0})}get loaded(){return this._loaded}pedalDown({time:e=this.immediate()}={}){return this.loaded&&(e=this.toSeconds(e),this._pedal.isDown(e)||this._pedal.down(e)),this}pedalUp({time:e=this.immediate()}={}){if(this.loaded){const s=this.toSeconds(e);this._pedal.isDown(s)&&(this._pedal.up(s),this._sustainedNotes.forEach((a,c)=>{this._heldNotes.has(c)||this._strings.triggerRelease(c,s)}),this._sustainedNotes.clear())}return this}keyDown({note:e,midi:s,time:a=this.immediate(),velocity:c=.8}){return this.loaded&&this.maxPolyphony>this._heldNotes.size+this._sustainedNotes.size?(a=this.toSeconds(a),isString(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s)||(this._heldNotes.set(s,{time:a,velocity:c}),this._strings.triggerAttack(s,a,c))):console.warn("samples not loaded"),this}keyUp({note:e,midi:s,time:a=this.immediate(),velocity:c=.8}){if(this.loaded&&(a=this.toSeconds(a),isString(e)&&(s=Math.round(Midi(e).toMidi())),this._heldNotes.has(s))){const d=this._heldNotes.get(s);this._heldNotes.delete(s);const _=Math.pow(Math.max(a-d.time,.1),.7),b=d.velocity;let k=3/_*b*c;k=Math.max(k,.4),k=Math.min(k,4),this._pedal.isDown(a)?this._sustainedNotes.has(s)||this._sustainedNotes.set(s,a):(this._strings.triggerRelease(s,a),this._harmonics.triggerAttack(s,a,k)),this._keybed.start(s,a,c)}return this}stopAll(){return this.pedalUp(),this._heldNotes.forEach((e,s)=>{this.keyUp({midi:s})}),this}}var events={exports:{}},R=typeof Reflect=="object"?Reflect:null,ReflectApply=R&&typeof R.apply=="function"?R.apply:function o(e,s,a){return Function.prototype.apply.call(e,s,a)},ReflectOwnKeys;R&&typeof R.ownKeys=="function"?ReflectOwnKeys=R.ownKeys:Object.getOwnPropertySymbols?ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ReflectOwnKeys=function(e){return Object.getOwnPropertyNames(e)};function ProcessEmitWarning(o){console&&console.warn&&console.warn(o)}var NumberIsNaN=Number.isNaN||function o(e){return e!==e};function EventEmitter(){EventEmitter.init.call(this)}events.exports=EventEmitter;events.exports.once=once;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=void 0;EventEmitter.prototype._eventsCount=0;EventEmitter.prototype._maxListeners=void 0;var defaultMaxListeners=10;function checkListener(o){if(typeof o!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof o)}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:!0,get:function(){return defaultMaxListeners},set:function(o){if(typeof o!="number"||o<0||NumberIsNaN(o))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+o+".");defaultMaxListeners=o}});EventEmitter.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};EventEmitter.prototype.setMaxListeners=function o(e){if(typeof e!="number"||e<0||NumberIsNaN(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function _getMaxListeners(o){return o._maxListeners===void 0?EventEmitter.defaultMaxListeners:o._maxListeners}EventEmitter.prototype.getMaxListeners=function o(){return _getMaxListeners(this)};EventEmitter.prototype.emit=function o(e){for(var s=[],a=1;a0&&(_=s[0]),_ instanceof Error)throw _;var b=new Error("Unhandled error."+(_?" ("+_.message+")":""));throw b.context=_,b}var k=d[e];if(k===void 0)return!1;if(typeof k=="function")ReflectApply(k,this,s);else for(var $=k.length,j=arrayClone(k,$),a=0;a<$;++a)ReflectApply(j[a],this,s);return!0};function _addListener(o,e,s,a){var c,d,_;if(checkListener(s),d=o._events,d===void 0?(d=o._events=Object.create(null),o._eventsCount=0):(d.newListener!==void 0&&(o.emit("newListener",e,s.listener?s.listener:s),d=o._events),_=d[e]),_===void 0)_=d[e]=s,++o._eventsCount;else if(typeof _=="function"?_=d[e]=a?[s,_]:[_,s]:a?_.unshift(s):_.push(s),c=_getMaxListeners(o),c>0&&_.length>c&&!_.warned){_.warned=!0;var b=new Error("Possible EventEmitter memory leak detected. "+_.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");b.name="MaxListenersExceededWarning",b.emitter=o,b.type=e,b.count=_.length,ProcessEmitWarning(b)}return o}EventEmitter.prototype.addListener=function o(e,s){return _addListener(this,e,s,!1)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function o(e,s){return _addListener(this,e,s,!0)};function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(o,e,s){var a={fired:!1,wrapFn:void 0,target:o,type:e,listener:s},c=onceWrapper.bind(a);return c.listener=s,a.wrapFn=c,c}EventEmitter.prototype.once=function o(e,s){return checkListener(s),this.on(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.prependOnceListener=function o(e,s){return checkListener(s),this.prependListener(e,_onceWrap(this,e,s)),this};EventEmitter.prototype.removeListener=function o(e,s){var a,c,d,_,b;if(checkListener(s),c=this._events,c===void 0)return this;if(a=c[e],a===void 0)return this;if(a===s||a.listener===s)--this._eventsCount===0?this._events=Object.create(null):(delete c[e],c.removeListener&&this.emit("removeListener",e,a.listener||s));else if(typeof a!="function"){for(d=-1,_=a.length-1;_>=0;_--)if(a[_]===s||a[_].listener===s){b=a[_].listener,d=_;break}if(d<0)return this;d===0?a.shift():spliceOne(a,d),a.length===1&&(c[e]=a[0]),c.removeListener!==void 0&&this.emit("removeListener",e,b||s)}return this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.removeAllListeners=function o(e){var s,a,c;if(a=this._events,a===void 0)return this;if(a.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):a[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete a[e]),this;if(arguments.length===0){var d=Object.keys(a),_;for(c=0;c=0;c--)this.removeListener(e,s[c]);return this};function _listeners(o,e,s){var a=o._events;if(a===void 0)return[];var c=a[e];return c===void 0?[]:typeof c=="function"?s?[c.listener||c]:[c]:s?unwrapListeners(c):arrayClone(c,c.length)}EventEmitter.prototype.listeners=function o(e){return _listeners(this,e,!0)};EventEmitter.prototype.rawListeners=function o(e){return _listeners(this,e,!1)};EventEmitter.listenerCount=function(o,e){return typeof o.listenerCount=="function"?o.listenerCount(e):listenerCount.call(o,e)};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(o){var e=this._events;if(e!==void 0){var s=e[o];if(typeof s=="function")return 1;if(s!==void 0)return s.length}return 0}EventEmitter.prototype.eventNames=function o(){return this._eventsCount>0?ReflectOwnKeys(this._events):[]};function arrayClone(o,e){for(var s=new Array(e),a=0;a>4,j=15&_.data[0],_e=1+j;if(1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0),a.nrpnEventsEnabled&&$===a.MIDI_CHANNEL_MESSAGES.controlchange&&(b>=a.MIDI_NRPN_MESSAGES.increment&&b<=a.MIDI_NRPN_MESSAGES.parammsb||b===a.MIDI_NRPN_MESSAGES.entrymsb||b===a.MIDI_NRPN_MESSAGES.entrylsb)){var et={target:this,type:"controlchange",data:_.data,timestamp:_.timeStamp,channel:_e,controller:{number:b,name:this.getCcNameByNumber(b)},value:k};if(et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value!=a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j]=[],a._nrpnBuffer[j][0]=et;else if(a._nrpnBuffer[j].length===1&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb)a._nrpnBuffer[j].push(et);else if(a._nrpnBuffer[j].length!==2||et.controller.number!==a.MIDI_NRPN_MESSAGES.increment&&et.controller.number!==a.MIDI_NRPN_MESSAGES.decrement&&et.controller.number!==a.MIDI_NRPN_MESSAGES.entrymsb)if(a._nrpnBuffer[j].length===3&&a._nrpnBuffer[j][2].number===a.MIDI_NRPN_MESSAGES.entrymsb&&et.controller.number===a.MIDI_NRPN_MESSAGES.entrylsb)a._nrpnBuffer[j].push(et);else if(3<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=4&&et.controller.number===a.MIDI_NRPN_MESSAGES.parammsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter)a._nrpnBuffer[j].push(et);else if(4<=a._nrpnBuffer[j].length&&a._nrpnBuffer[j].length<=5&&et.controller.number===a.MIDI_NRPN_MESSAGES.paramlsb&&et.value===a.MIDI_NRPN_MESSAGES.nullactiveparameter){a._nrpnBuffer[j].push(et);var tt=[];a._nrpnBuffer[j].forEach(function(at){tt.push(at.data)});var nt=a._nrpnBuffer[j][0].value<<7|a._nrpnBuffer[j][1].value,st=a._nrpnBuffer[j][2].value;a._nrpnBuffer[j].length===6&&(st=a._nrpnBuffer[j][2].value<<7|a._nrpnBuffer[j][3].value);var rt="";switch(a._nrpnBuffer[j][2].controller.number){case a.MIDI_NRPN_MESSAGES.entrymsb:rt=a._nrpnTypes[0];break;case a.MIDI_NRPN_MESSAGES.increment:rt=a._nrpnTypes[1];break;case a.MIDI_NRPN_MESSAGES.decrement:rt=a._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var it={timestamp:et.timestamp,channel:et.channel,type:"nrpn",data:tt,controller:{number:nt,type:rt,name:"Non-Registered Parameter "+nt},value:st};a._nrpnBuffer[j]=[],this._userHandlers.channel[it.type]&&this._userHandlers.channel[it.type][it.channel]&&this._userHandlers.channel[it.type][it.channel].forEach(function(at){at(it)})}else a._nrpnBuffer[j]=[];else a._nrpnBuffer[j].push(et)}},c.prototype._parseChannelEvent=function(_){var b,k,$=_.data[0]>>4,j=1+(15&_.data[0]);1<_.data.length&&(b=_.data[1],k=2<_.data.length?_.data[2]:void 0);var _e={target:this,data:_.data,timestamp:_.timeStamp,channel:j};$===a.MIDI_CHANNEL_MESSAGES.noteoff||$===a.MIDI_CHANNEL_MESSAGES.noteon&&k===0?(_e.type="noteoff",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.noteon?(_e.type="noteon",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.velocity=k/127,_e.rawVelocity=k):$===a.MIDI_CHANNEL_MESSAGES.keyaftertouch?(_e.type="keyaftertouch",_e.note={number:b,name:a._notes[b%12],octave:a.getOctave(b)},_e.value=k/127):$===a.MIDI_CHANNEL_MESSAGES.controlchange&&0<=b&&b<=119?(_e.type="controlchange",_e.controller={number:b,name:this.getCcNameByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.channelmode&&120<=b&&b<=127?(_e.type="channelmode",_e.controller={number:b,name:this.getChannelModeByNumber(b)},_e.value=k):$===a.MIDI_CHANNEL_MESSAGES.programchange?(_e.type="programchange",_e.value=b):$===a.MIDI_CHANNEL_MESSAGES.channelaftertouch?(_e.type="channelaftertouch",_e.value=b/127):$===a.MIDI_CHANNEL_MESSAGES.pitchbend?(_e.type="pitchbend",_e.value=((k<<7)+b-8192)/8192):_e.type="unknownchannelmessage",this._userHandlers.channel[_e.type]&&this._userHandlers.channel[_e.type][j]&&this._userHandlers.channel[_e.type][j].forEach(function(et){et(_e)})},c.prototype.getCcNameByNumber=function(_){if(!(0<=(_=Math.floor(_))&&_<=119))throw new RangeError("The control change number must be between 0 and 119.");for(var b in a.MIDI_CONTROL_CHANGE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CONTROL_CHANGE_MESSAGES,b)&&_===a.MIDI_CONTROL_CHANGE_MESSAGES[b])return b},c.prototype.getChannelModeByNumber=function(_){if(!(120<=(_=Math.floor(_))&&status<=127))throw new RangeError("The control change number must be between 120 and 127.");for(var b in a.MIDI_CHANNEL_MODE_MESSAGES)if(Object.prototype.hasOwnProperty.call(a.MIDI_CHANNEL_MODE_MESSAGES,b)&&_===a.MIDI_CHANNEL_MODE_MESSAGES[b])return b},c.prototype._parseSystemEvent=function(_){var b=_.data[0],k={target:this,data:_.data,timestamp:_.timeStamp};b===a.MIDI_SYSTEM_MESSAGES.sysex?k.type="sysex":b===a.MIDI_SYSTEM_MESSAGES.timecode?k.type="timecode":b===a.MIDI_SYSTEM_MESSAGES.songposition?k.type="songposition":b===a.MIDI_SYSTEM_MESSAGES.songselect?(k.type="songselect",k.song=_.data[1]):b===a.MIDI_SYSTEM_MESSAGES.tuningrequest?k.type="tuningrequest":b===a.MIDI_SYSTEM_MESSAGES.clock?k.type="clock":b===a.MIDI_SYSTEM_MESSAGES.start?k.type="start":b===a.MIDI_SYSTEM_MESSAGES.continue?k.type="continue":b===a.MIDI_SYSTEM_MESSAGES.stop?k.type="stop":b===a.MIDI_SYSTEM_MESSAGES.activesensing?k.type="activesensing":b===a.MIDI_SYSTEM_MESSAGES.reset?k.type="reset":k.type="unknownsystemmessage",this._userHandlers.system[k.type]&&this._userHandlers.system[k.type].forEach(function($){$(k)})},d.prototype.send=function(_,b,k){if(!(128<=_&&_<=255))throw new RangeError("The status byte must be an integer between 128 (0x80) and 255 (0xFF).");b===void 0&&(b=[]),Array.isArray(b)||(b=[b]);var $=[];return b.forEach(function(j){var _e=Math.floor(j);if(!(0<=_e&&_e<=255))throw new RangeError("Data bytes must be integers between 0 (0x00) and 255 (0xFF).");$.push(_e)}),this._midiOutput.send([_].concat($),parseFloat(k)||0),this},d.prototype.sendSysex=function(_,b,k){if(!a.sysexEnabled)throw new Error("Sysex message support must first be activated.");return k=k||{},_=[].concat(_),b.forEach(function($){if($<0||127<$)throw new RangeError("The data bytes of a sysex message must be integers between 0 (0x00) and 127 (0x7F).")}),b=_.concat(b,a.MIDI_SYSTEM_MESSAGES.sysexend),this.send(a.MIDI_SYSTEM_MESSAGES.sysex,b,this._parseTimeParameter(k.time)),this},d.prototype.sendTimecodeQuarterFrame=function(_,b){return b=b||{},this.send(a.MIDI_SYSTEM_MESSAGES.timecode,_,this._parseTimeParameter(b.time)),this},d.prototype.sendSongPosition=function(_,b){b=b||{};var k=(_=Math.floor(_)||0)>>7&127,$=127&_;return this.send(a.MIDI_SYSTEM_MESSAGES.songposition,[k,$],this._parseTimeParameter(b.time)),this},d.prototype.sendSongSelect=function(_,b){if(b=b||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(a.MIDI_SYSTEM_MESSAGES.songselect,[_],this._parseTimeParameter(b.time)),this},d.prototype.sendTuningRequest=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendClock=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStart=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendContinue=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendStop=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(_.time)),this},d.prototype.sendActiveSensing=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(_.time)),this},d.prototype.sendReset=function(_){return _=_||{},this.send(a.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(_.time)),this},d.prototype.stopNote=function(_,b,k){if(_==="all")return this.sendChannelMode("allnotesoff",0,b,k);var $=64;return(k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&($=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&($=127*k.velocity),this._convertNoteToArray(_).forEach(function(j){a.toMIDIChannels(b).forEach(function(_e){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(_e-1),[j,Math.round($)],this._parseTimeParameter(k.time))}.bind(this))}.bind(this)),this},d.prototype.playNote=function(_,b,k){var $,j=64;if((k=k||{}).rawVelocity?!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=127&&(j=k.velocity):!isNaN(k.velocity)&&0<=k.velocity&&k.velocity<=1&&(j=127*k.velocity),$=this._parseTimeParameter(k.time),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteon<<4)+(tt-1),[et,Math.round(j)],$)}.bind(this))}.bind(this)),!isNaN(k.duration)){k.duration<=0&&(k.duration=0);var _e=64;k.rawVelocity?!isNaN(k.release)&&0<=k.release&&k.release<=127&&(_e=k.release):!isNaN(k.release)&&0<=k.release&&k.release<=1&&(_e=127*k.release),this._convertNoteToArray(_).forEach(function(et){a.toMIDIChannels(b).forEach(function(tt){this.send((a.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(tt-1),[et,Math.round(_e)],($||a.time)+k.duration)}.bind(this))}.bind(this))}return this},d.prototype.sendKeyAftertouch=function(_,b,k,$){var j=this;if($=$||{},b<1||16>7&127,tt=127&_e;return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("channelcoarsetuning",j,b,{time:k.time}),$.setRegisteredParameter("channelfinetuning",[et,tt],b,{time:k.time})}),this},d.prototype.setTuningProgram=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_))&&_<=127))throw new RangeError("The program value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningprogram",_,b,{time:k.time})}),this},d.prototype.setTuningBank=function(_,b,k){var $=this;if(k=k||{},!(0<=(_=Math.floor(_)||0)&&_<=127))throw new RangeError("The bank value must be between 0 and 127");return a.toMIDIChannels(b).forEach(function(){$.setRegisteredParameter("tuningbank",_,b,{time:k.time})}),this},d.prototype.sendChannelMode=function(_,b,k,$){if($=$||{},typeof _=="string"){if(!(_=a.MIDI_CHANNEL_MODE_MESSAGES[_]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(_=Math.floor(_))&&_<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((b=Math.floor(b)||0)<0||127>7&127,et=127&j;return a.toMIDIChannels(b).forEach(function(tt){$.send((a.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(tt-1),[et,_e],$._parseTimeParameter(k.time))}),this},d.prototype._parseTimeParameter=function(_){var b,k=parseFloat(_);return typeof _=="string"&&_.substring(0,1)==="+"?k&&0a.time&&(b=k),b},d.prototype._convertNoteToArray=function(_){var b=[];return Array.isArray(_)||(_=[_]),_.forEach(function(k){b.push(a.guessNoteNumber(k))}),b},o.exports?o.exports=a:e.WebMidi||(e.WebMidi=a)})(commonjsGlobal)})(webmidi_min);var _WebMidi=webmidi_min.exports,__awaiter=globalThis&&globalThis.__awaiter||function(o,e,s,a){function c(d){return d instanceof s?d:new s(function(_){_(d)})}return new(s||(s=Promise))(function(d,_){function b(j){try{$(a.next(j))}catch(_e){_(_e)}}function k(j){try{$(a.throw(j))}catch(_e){_(_e)}}function $(j){j.done?d(j.value):c(j.value).then(b,k)}$((a=a.apply(o,e||[])).next())})};class MidiInput extends events.exports.EventEmitter{constructor(e="all"){super(),this.deviceId=e,MidiInput.enabled().then(()=>{_WebMidi.addListener("connected",s=>{s.port.type==="input"&&this._addListeners(s.port)}),_WebMidi.addListener("disconnected",s=>{this._removeListeners(s.port)}),_WebMidi.inputs.forEach(s=>this._addListeners(s))})}_addListeners(e){MidiInput.connectedDevices.has(e.id)||(MidiInput.connectedDevices.set(e.id,e),this.emit("connect",this._inputToDevice(e)),e.addListener("noteon","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyDown",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("noteoff","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&this.emit("keyUp",{note:`${s.note.name}${s.note.octave}`,midi:s.note.number,velocity:s.velocity,device:this._inputToDevice(e)})}),e.addListener("controlchange","all",s=>{(this.deviceId==="all"||this.deviceId===e.id)&&s.controller.name==="holdpedal"&&this.emit(s.value?"pedalDown":"pedalUp",{device:this._inputToDevice(e)})}))}_inputToDevice(e){return{name:e.name,id:e.id,manufacturer:e.manufacturer}}_removeListeners(e){if(MidiInput.connectedDevices.has(e.id)){const s=MidiInput.connectedDevices.get(e.id);this.emit("disconnect",this._inputToDevice(s)),MidiInput.connectedDevices.delete(e.id),s.removeListener("noteon"),s.removeListener("noteoff"),s.removeListener("controlchange")}}emit(e,s){return super.emit(e,s)}on(e,s){return super.on(e,s),this}once(e,s){return super.once(e,s),this}off(e,s){return super.off(e,s),this}static enabled(){return __awaiter(this,void 0,void 0,function*(){MidiInput._isEnabled||(yield new Promise((e,s)=>{_WebMidi.enable(a=>{a?s(a):(MidiInput._isEnabled=!0,e())})}))})}static getDevices(){return __awaiter(this,void 0,void 0,function*(){return yield MidiInput.enabled(),_WebMidi.inputs})}}MidiInput.connectedDevices=new Map;MidiInput._isEnabled=!1;var tonePiano=Object.freeze(Object.defineProperty({__proto__:null,Piano:Piano$1,MidiInput},Symbol.toStringTag,{value:"Module"}));const Tone=_Tone,{AutoFilter,Destination,Filter,Gain,isNote:isNote$1,Synth,PolySynth,MembraneSynth,MetalSynth,MonoSynth,AMSynth,DuoSynth,FMSynth,NoiseSynth,PluckSynth,Sampler,getDestination,Players}=Tone,{Piano}=tonePiano,getDefaultSynth=()=>{const o=new PolySynth().chain(new Gain(.5),getDestination());return o.set({oscillator:{type:"triangle"},envelope:{release:.01}}),o};Pattern$4.prototype.tone=function(o){return this._withHap(e=>{const s=(a,c)=>{var b,k;let d,_=(k=(b=c.context)==null?void 0:b.velocity)!=null?k:.75;if(o instanceof PluckSynth)d=getPlayableNoteValue(c),o.triggerAttack(d,a);else if(o instanceof NoiseSynth)o.triggerAttackRelease(c.duration.valueOf(),a);else if(o instanceof Piano)d=getPlayableNoteValue(c),o.keyDown({note:d,time:a,velocity:_}),o.keyUp({note:d,time:a+c.duration.valueOf(),velocity:_});else if(o instanceof Sampler)d=getPlayableNoteValue(c),o.triggerAttackRelease(d,c.duration.valueOf(),a,_);else if(o instanceof Players){if(!o.has(c.value))throw new Error(`name "${c.value}" not defined for players`);const $=o.player(c.value);$.start(a),$.stop(a+c.duration.valueOf())}else d=getPlayableNoteValue(c),o.triggerAttackRelease(d,c.duration.valueOf(),a,_)};return e.setContext(wt(Ot({},e.context),{instrument:o,onTrigger:s}))})};Pattern$4.prototype.define("tone",(o,e)=>e.tone(o),{composable:!0,patternified:!1});const amsynth=o=>new AMSynth(o),duosynth=o=>new DuoSynth(o),fmsynth=o=>new FMSynth(o),membrane=o=>new MembraneSynth(o),metal=o=>new MetalSynth(o),monosynth=o=>new MonoSynth(o),noise=o=>new NoiseSynth(o),pluck=o=>new PluckSynth(o),polysynth=o=>new PolySynth(o),sampler=(o,e)=>new Promise(s=>{const a=new Sampler(o,()=>s(a),e)}),players=(o,e="")=>(o=e?Object.fromEntries(Object.entries(o).map(([s,a])=>[s,e+a])):o,new Promise(s=>{const a=new Players(o,()=>s(a))})),synth=o=>new Synth(o),piano=async(o={velocities:1})=>{const e=new Piano(o);return await e.load(),e},vol=o=>new Gain(o),lowpass=o=>new Filter(o,"lowpass"),highpass=o=>new Filter(o,"highpass"),adsr=(o,e=.1,s=.4,a=.01)=>({envelope:{attack:o,decay:e,sustain:s,release:a}}),osc=o=>({oscillator:{type:o}}),out=()=>getDestination(),getDrawContext$1=(o="test-canvas")=>{let e=document.querySelector("#"+o);return e||(e=document.createElement("canvas"),e.id=o,e.width=window.innerWidth,e.height=window.innerHeight,e.style="pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0;z-index:5",document.body.prepend(e)),e.getContext("2d")};Pattern$4.prototype.draw=function(o,{from:e,to:s,onQuery:a}){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const c=getDrawContext$1();let d,_=[];const b=k=>{const $=Tone.getTransport().seconds;if(e!==void 0&&s!==void 0){const j=Math.floor($);if(d!==j){d=j;const _e=j+e,et=j+s;setTimeout(()=>{_=this._asNumber(!0).query(new State(new TimeSpan(_e,et))).filter(Boolean).filter(tt=>tt.part.begin.equals(tt.whole.begin)),a==null||a(_)},0)}}o(c,_,$,k),window.strudelAnimation=requestAnimationFrame(b)};return requestAnimationFrame(b),this};const cleanupDraw=()=>{getDrawContext$1().clearRect(0,0,window.innerWidth,window.innerHeight),window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation),window.strudelScheduler&&clearInterval(window.strudelScheduler)};var dist$7={},tokenizer={},utils$1={},unicode$2={};Object.defineProperty(unicode$2,"__esModule",{value:!0});unicode$2.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$2.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$2.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$2.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$2.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$2.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(utils$1,"__esModule",{value:!0});utils$1.isStrictModeReservedWord=isStrictModeReservedWord;utils$1.isWhiteSpace=isWhiteSpace;utils$1.isLineTerminator=isLineTerminator;utils$1.isIdentifierStart=isIdentifierStart$1;utils$1.isIdentifierPart=isIdentifierPart$1;utils$1.isDecimalDigit=isDecimalDigit;utils$1.getHexValue=getHexValue;var _unicode$2=unicode$2,strictReservedWords=["null","true","false","implements","interface","package","private","protected","public","static","let","if","in","do","var","for","new","try","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];function isStrictModeReservedWord(o){return strictReservedWords.indexOf(o)!==-1}function isWhiteSpace(o){return o<128?_unicode$2.whitespaceBool[o]:o===160||o>5759&&_unicode$2.whitespaceArray.indexOf(o)!==-1}function isLineTerminator(o){return o===10||o===13||o===8232||o===8233}function isIdentifierStart$1(o){return o<128?_unicode$2.idStartBool[o]:_unicode$2.idStartLargeRegex.test(String.fromCodePoint(o))}function isIdentifierPart$1(o){return o<128?_unicode$2.idContinueBool[o]:_unicode$2.idContinueLargeRegex.test(String.fromCodePoint(o))}function isDecimalDigit(o){return o>=48&&o<=57}function getHexValue(o){return o>="0"&&o<="9"?o.charCodeAt(0)-48:o>="a"&&o<="f"?o.charCodeAt(0)-87:o>="A"&&o<="F"?o.charCodeAt(0)-55:-1}var errors={};Object.defineProperty(errors,"__esModule",{value:!0});errors.ErrorMessages={UNEXPECTED_TOKEN:function o(e){return"Unexpected token "+JSON.stringify(e)},UNEXPECTED_ILLEGAL_TOKEN:function o(e){return"Unexpected "+JSON.stringify(e)},UNEXPECTED_ESCAPED_KEYWORD:"Unexpected escaped keyword",UNEXPECTED_NUMBER:"Unexpected number",UNEXPECTED_STRING:"Unexpected string",UNEXPECTED_IDENTIFIER:"Unexpected identifier",UNEXPECTED_RESERVED_WORD:"Unexpected reserved word",UNEXPECTED_TEMPLATE:"Unexpected template",UNEXPECTED_EOS:"Unexpected end of input",UNEXPECTED_LINE_TERMINATOR:"Unexpected line terminator",UNEXPECTED_COMMA_AFTER_REST:"Unexpected comma after rest",UNEXPECTED_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",NEWLINE_AFTER_THROW:"Illegal newline after throw",UNTERMINATED_REGEXP:"Invalid regular expression: missing /",INVALID_LAST_REST_PARAMETER:"Rest parameter must be last formal parameter",INVALID_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",INVALID_REGEXP_FLAGS:"Invalid regular expression flags",INVALID_REGEX:"Invalid regular expression",INVALID_LHS_IN_ASSIGNMENT:"Invalid left-hand side in assignment",INVALID_LHS_IN_BINDING:"Invalid left-hand side in binding",INVALID_LHS_IN_FOR_IN:"Invalid left-hand side in for-in",INVALID_LHS_IN_FOR_OF:"Invalid left-hand side in for-of",INVALID_LHS_IN_FOR_AWAIT:"Invalid left-hand side in for-await",INVALID_UPDATE_OPERAND:"Increment/decrement target must be an identifier or member expression",INVALID_EXPONENTIATION_LHS:"Unary expressions as the left operand of an exponentation expression must be disambiguated with parentheses",MULTIPLE_DEFAULTS_IN_SWITCH:"More than one default clause in switch statement",NO_CATCH_OR_FINALLY:"Missing catch or finally after try",ILLEGAL_RETURN:"Illegal return statement",ILLEGAL_ARROW_FUNCTION_PARAMS:"Illegal arrow function parameter list",INVALID_ASYNC_PARAMS:"Async function parameters must not contain await expressions",INVALID_VAR_INIT_FOR_IN:"Invalid variable declaration in for-in statement",INVALID_VAR_INIT_FOR_OF:"Invalid variable declaration in for-of statement",INVALID_VAR_INIT_FOR_AWAIT:"Invalid variable declaration in for-await statement",UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT:"Binding pattern appears without initializer in for statement init",ILLEGAL_PROPERTY:"Illegal property initializer",INVALID_ID_BINDING_STRICT_MODE:function o(e){return"The identifier "+JSON.stringify(e)+" must not be in binding position in strict mode"},INVALID_ID_IN_LABEL_STRICT_MODE:function o(e){return"The identifier "+JSON.stringify(e)+" must not be in label position in strict mode"},INVALID_ID_IN_EXPRESSION_STRICT_MODE:function o(e){return"The identifier "+JSON.stringify(e)+" must not be in expression position in strict mode"},INVALID_CALL_TO_SUPER:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',INVALID_DELETE_STRICT_MODE:"Identifier expressions must not be deleted in strict mode",DUPLICATE_BINDING:function o(e){return"Duplicate binding "+JSON.stringify(e)},ILLEGAL_ID_IN_LEXICAL_DECLARATION:function o(e){return"Lexical declarations must not have a binding named "+JSON.stringify(e)},UNITIALIZED_CONST:"Constant lexical declarations must have an initialiser",ILLEGAL_LABEL_IN_BODY:function o(e){return"The body of a "+e+" statement must not be a labeled function declaration"},ILLEGEAL_LABEL_IN_IF:"The consequent of an if statement must not be a labeled function declaration",ILLEGAL_LABEL_IN_ELSE:"The alternate of an if statement must not be a labeled function declaration",ILLEGAL_CONTINUE_WITHOUT_ITERATION_WITH_ID:function o(e){return"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e)},ILLEGAL_CONTINUE_WITHOUT_ITERATION:"Continue statement must be nested within an iteration statement",ILLEGAL_BREAK_WITHOUT_ITERATION_OR_SWITCH:"Break statement must be nested within an iteration statement or a switch statement",ILLEGAL_WITH_STRICT_MODE:"Strict mode code must not include a with statement",ILLEGAL_ACCESS_SUPER_MEMBER:"Member access on super must be in a method",ILLEGAL_SUPER_CALL:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',DUPLICATE_LABEL_DECLARATION:function o(e){return"Label "+JSON.stringify(e)+" has already been declared"},ILLEGAL_BREAK_WITHIN_LABEL:function o(e){return"Break statement must be nested within a statement with label "+JSON.stringify(e)},ILLEGAL_YIELD_EXPRESSIONS:function o(e){return e+" parameters must not contain yield expressions"},ILLEGAL_YIELD_IDENTIFIER:'"yield" may not be used as an identifier in this context',ILLEGAL_AWAIT_IDENTIFIER:'"await" may not be used as an identifier in this context',DUPLICATE_CONSTRUCTOR:"Duplicate constructor method in class",ILLEGAL_CONSTRUCTORS:"Constructors cannot be async, generators, getters or setters",ILLEGAL_STATIC_CLASS_NAME:'Static class methods cannot be named "prototype"',NEW_TARGET_ERROR:"new.target must be within function (but not arrow expression) code",DUPLICATE_EXPORT:function o(e){return"Duplicate export "+JSON.stringify(e)},UNDECLARED_BINDING:function o(e){return"Exported binding "+JSON.stringify(e)+" is not declared"},DUPLICATE_PROPTO_PROP:"Duplicate __proto__ property in object literal not allowed",ILLEGAL_LABEL_FUNC_DECLARATION:"Labeled FunctionDeclarations are disallowed in strict mode",ILLEGAL_FUNC_DECL_IF:"FunctionDeclarations in IfStatements are disallowed in strict mode",ILLEGAL_USE_STRICT:'Functions with non-simple parameter lists may not contain a "use strict" directive',ILLEGAL_EXPORTED_NAME:"Names of variables used in an export specifier from the current module must be identifiers",NO_OCTALS_IN_TEMPLATES:"Template literals may not contain octal escape sequences",NO_AWAIT_IN_ASYNC_PARAMS:'Async arrow parameters may not contain "await"'};Object.defineProperty(tokenizer,"__esModule",{value:!0});tokenizer.JsError=tokenizer.TokenType=tokenizer.TokenClass=void 0;var _slicedToArray=function(){function o(e,s){var a=[],c=!0,d=!1,_=void 0;try{for(var b=e[Symbol.iterator](),k;!(c=(k=b.next()).done)&&(a.push(k.value),!(s&&a.length===s));c=!0);}catch($){d=!0,_=$}finally{try{!c&&b.return&&b.return()}finally{if(d)throw _}}return a}return function(e,s){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return o(e,s);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass$e=function(){function o(e,s){for(var a=0;a"},Ident:{name:"Identifier",isIdentifierName:!0},Keyword:{name:"Keyword",isIdentifierName:!0},NumericLiteral:{name:"Numeric"},TemplateElement:{name:"Template"},Punctuator:{name:"Punctuator"},StringLiteral:{name:"String"},RegularExpression:{name:"RegularExpression"},Illegal:{name:"Illegal"}},TokenType=tokenizer.TokenType={EOS:{klass:TokenClass.Eof,name:"EOS"},LPAREN:{klass:TokenClass.Punctuator,name:"("},RPAREN:{klass:TokenClass.Punctuator,name:")"},LBRACK:{klass:TokenClass.Punctuator,name:"["},RBRACK:{klass:TokenClass.Punctuator,name:"]"},LBRACE:{klass:TokenClass.Punctuator,name:"{"},RBRACE:{klass:TokenClass.Punctuator,name:"}"},COLON:{klass:TokenClass.Punctuator,name:":"},SEMICOLON:{klass:TokenClass.Punctuator,name:";"},PERIOD:{klass:TokenClass.Punctuator,name:"."},ELLIPSIS:{klass:TokenClass.Punctuator,name:"..."},ARROW:{klass:TokenClass.Punctuator,name:"=>"},CONDITIONAL:{klass:TokenClass.Punctuator,name:"?"},INC:{klass:TokenClass.Punctuator,name:"++"},DEC:{klass:TokenClass.Punctuator,name:"--"},ASSIGN:{klass:TokenClass.Punctuator,name:"="},ASSIGN_BIT_OR:{klass:TokenClass.Punctuator,name:"|="},ASSIGN_BIT_XOR:{klass:TokenClass.Punctuator,name:"^="},ASSIGN_BIT_AND:{klass:TokenClass.Punctuator,name:"&="},ASSIGN_SHL:{klass:TokenClass.Punctuator,name:"<<="},ASSIGN_SHR:{klass:TokenClass.Punctuator,name:">>="},ASSIGN_SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>="},ASSIGN_ADD:{klass:TokenClass.Punctuator,name:"+="},ASSIGN_SUB:{klass:TokenClass.Punctuator,name:"-="},ASSIGN_MUL:{klass:TokenClass.Punctuator,name:"*="},ASSIGN_DIV:{klass:TokenClass.Punctuator,name:"/="},ASSIGN_MOD:{klass:TokenClass.Punctuator,name:"%="},ASSIGN_EXP:{klass:TokenClass.Punctuator,name:"**="},COMMA:{klass:TokenClass.Punctuator,name:","},OR:{klass:TokenClass.Punctuator,name:"||"},AND:{klass:TokenClass.Punctuator,name:"&&"},BIT_OR:{klass:TokenClass.Punctuator,name:"|"},BIT_XOR:{klass:TokenClass.Punctuator,name:"^"},BIT_AND:{klass:TokenClass.Punctuator,name:"&"},SHL:{klass:TokenClass.Punctuator,name:"<<"},SHR:{klass:TokenClass.Punctuator,name:">>"},SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>"},ADD:{klass:TokenClass.Punctuator,name:"+"},SUB:{klass:TokenClass.Punctuator,name:"-"},MUL:{klass:TokenClass.Punctuator,name:"*"},DIV:{klass:TokenClass.Punctuator,name:"/"},MOD:{klass:TokenClass.Punctuator,name:"%"},EXP:{klass:TokenClass.Punctuator,name:"**"},EQ:{klass:TokenClass.Punctuator,name:"=="},NE:{klass:TokenClass.Punctuator,name:"!="},EQ_STRICT:{klass:TokenClass.Punctuator,name:"==="},NE_STRICT:{klass:TokenClass.Punctuator,name:"!=="},LT:{klass:TokenClass.Punctuator,name:"<"},GT:{klass:TokenClass.Punctuator,name:">"},LTE:{klass:TokenClass.Punctuator,name:"<="},GTE:{klass:TokenClass.Punctuator,name:">="},INSTANCEOF:{klass:TokenClass.Keyword,name:"instanceof"},IN:{klass:TokenClass.Keyword,name:"in"},NOT:{klass:TokenClass.Punctuator,name:"!"},BIT_NOT:{klass:TokenClass.Punctuator,name:"~"},ASYNC:{klass:TokenClass.Keyword,name:"async"},AWAIT:{klass:TokenClass.Keyword,name:"await"},ENUM:{klass:TokenClass.Keyword,name:"enum"},DELETE:{klass:TokenClass.Keyword,name:"delete"},TYPEOF:{klass:TokenClass.Keyword,name:"typeof"},VOID:{klass:TokenClass.Keyword,name:"void"},BREAK:{klass:TokenClass.Keyword,name:"break"},CASE:{klass:TokenClass.Keyword,name:"case"},CATCH:{klass:TokenClass.Keyword,name:"catch"},CLASS:{klass:TokenClass.Keyword,name:"class"},CONTINUE:{klass:TokenClass.Keyword,name:"continue"},DEBUGGER:{klass:TokenClass.Keyword,name:"debugger"},DEFAULT:{klass:TokenClass.Keyword,name:"default"},DO:{klass:TokenClass.Keyword,name:"do"},ELSE:{klass:TokenClass.Keyword,name:"else"},EXPORT:{klass:TokenClass.Keyword,name:"export"},EXTENDS:{klass:TokenClass.Keyword,name:"extends"},FINALLY:{klass:TokenClass.Keyword,name:"finally"},FOR:{klass:TokenClass.Keyword,name:"for"},FUNCTION:{klass:TokenClass.Keyword,name:"function"},IF:{klass:TokenClass.Keyword,name:"if"},IMPORT:{klass:TokenClass.Keyword,name:"import"},LET:{klass:TokenClass.Keyword,name:"let"},NEW:{klass:TokenClass.Keyword,name:"new"},RETURN:{klass:TokenClass.Keyword,name:"return"},SUPER:{klass:TokenClass.Keyword,name:"super"},SWITCH:{klass:TokenClass.Keyword,name:"switch"},THIS:{klass:TokenClass.Keyword,name:"this"},THROW:{klass:TokenClass.Keyword,name:"throw"},TRY:{klass:TokenClass.Keyword,name:"try"},VAR:{klass:TokenClass.Keyword,name:"var"},WHILE:{klass:TokenClass.Keyword,name:"while"},WITH:{klass:TokenClass.Keyword,name:"with"},NULL:{klass:TokenClass.Keyword,name:"null"},TRUE:{klass:TokenClass.Keyword,name:"true"},FALSE:{klass:TokenClass.Keyword,name:"false"},YIELD:{klass:TokenClass.Keyword,name:"yield"},NUMBER:{klass:TokenClass.NumericLiteral,name:""},STRING:{klass:TokenClass.StringLiteral,name:""},REGEXP:{klass:TokenClass.RegularExpression,name:""},IDENTIFIER:{klass:TokenClass.Ident,name:""},CONST:{klass:TokenClass.Keyword,name:"const"},TEMPLATE:{klass:TokenClass.TemplateElement,name:""},ESCAPED_KEYWORD:{klass:TokenClass.Keyword,name:""},ILLEGAL:{klass:TokenClass.Illegal,name:""}},TT=TokenType,I=TT.ILLEGAL,F=!1,T=!0,ONE_CHAR_PUNCTUATOR=[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.NOT,I,I,I,TT.MOD,TT.BIT_AND,I,TT.LPAREN,TT.RPAREN,TT.MUL,TT.ADD,TT.COMMA,TT.SUB,TT.PERIOD,TT.DIV,I,I,I,I,I,I,I,I,I,I,TT.COLON,TT.SEMICOLON,TT.LT,TT.ASSIGN,TT.GT,TT.CONDITIONAL,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACK,I,TT.RBRACK,TT.BIT_XOR,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACE,TT.BIT_OR,TT.RBRACE,TT.BIT_NOT],PUNCTUATOR_START=[F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,F,F,T,T,F,T,T,T,T,T,T,F,T,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,F],JsError=tokenizer.JsError=function(o){_inherits$8(e,o);function e(s,a,c,d){_classCallCheck$i(this,e);var _=_possibleConstructorReturn$8(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,d));_.index=s;try{_.line=a,_.column=c}catch{}return _.parseErrorLine=a,_.parseErrorColumn=c,_.description=d,_.message="["+a+":"+c+"]: "+d,_}return e}(Error);function fromCodePoint$1(o){if(o<=65535)return String.fromCharCode(o);var e=String.fromCharCode(Math.floor((o-65536)/1024)+55296),s=String.fromCharCode((o-65536)%1024+56320);return e+s}function decodeUtf16(o,e){return(o-55296)*1024+(e-56320)+65536}var Tokenizer=function(){function o(e){_classCallCheck$i(this,o),this.source=e,this.index=0,this.line=0,this.lineStart=0,this.startIndex=0,this.startLine=0,this.startLineStart=0,this.lastIndex=0,this.lastLine=0,this.lastLineStart=0,this.hasLineTerminatorBeforeNext=!1,this.tokenIndex=0}return _createClass$e(o,[{key:"saveLexerState",value:function(){return{source:this.source,index:this.index,line:this.line,lineStart:this.lineStart,startIndex:this.startIndex,startLine:this.startLine,startLineStart:this.startLineStart,lastIndex:this.lastIndex,lastLine:this.lastLine,lastLineStart:this.lastLineStart,lookahead:this.lookahead,hasLineTerminatorBeforeNext:this.hasLineTerminatorBeforeNext,tokenIndex:this.tokenIndex}}},{key:"restoreLexerState",value:function(s){this.source=s.source,this.index=s.index,this.line=s.line,this.lineStart=s.lineStart,this.startIndex=s.startIndex,this.startLine=s.startLine,this.startLineStart=s.startLineStart,this.lastIndex=s.lastIndex,this.lastLine=s.lastLine,this.lastLineStart=s.lastLineStart,this.lookahead=s.lookahead,this.hasLineTerminatorBeforeNext=s.hasLineTerminatorBeforeNext,this.tokenIndex=s.tokenIndex}},{key:"createILLEGAL",value:function(){return this.startIndex=this.index,this.startLine=this.line,this.startLineStart=this.lineStart,this.index1?c-1:0),_=1;_10)return TokenType.IDENTIFIER;switch(s.length){case 2:switch(s.charAt(0)){case"i":switch(s.charAt(1)){case"f":return TokenType.IF;case"n":return TokenType.IN}break;case"d":if(s.charAt(1)==="o")return TokenType.DO;break}break;case 3:switch(s.charAt(0)){case"v":if(o.cse2(s,"a","r"))return TokenType.VAR;break;case"f":if(o.cse2(s,"o","r"))return TokenType.FOR;break;case"n":if(o.cse2(s,"e","w"))return TokenType.NEW;break;case"t":if(o.cse2(s,"r","y"))return TokenType.TRY;break;case"l":if(o.cse2(s,"e","t"))return TokenType.LET;break}break;case 4:switch(s.charAt(0)){case"t":if(o.cse3(s,"h","i","s"))return TokenType.THIS;if(o.cse3(s,"r","u","e"))return TokenType.TRUE;break;case"n":if(o.cse3(s,"u","l","l"))return TokenType.NULL;break;case"e":if(o.cse3(s,"l","s","e"))return TokenType.ELSE;if(o.cse3(s,"n","u","m"))return TokenType.ENUM;break;case"c":if(o.cse3(s,"a","s","e"))return TokenType.CASE;break;case"v":if(o.cse3(s,"o","i","d"))return TokenType.VOID;break;case"w":if(o.cse3(s,"i","t","h"))return TokenType.WITH;break}break;case 5:switch(s.charAt(0)){case"a":if(o.cse4(s,"s","y","n","c"))return TokenType.ASYNC;if(o.cse4(s,"w","a","i","t"))return TokenType.AWAIT;break;case"w":if(o.cse4(s,"h","i","l","e"))return TokenType.WHILE;break;case"b":if(o.cse4(s,"r","e","a","k"))return TokenType.BREAK;break;case"f":if(o.cse4(s,"a","l","s","e"))return TokenType.FALSE;break;case"c":if(o.cse4(s,"a","t","c","h"))return TokenType.CATCH;if(o.cse4(s,"o","n","s","t"))return TokenType.CONST;if(o.cse4(s,"l","a","s","s"))return TokenType.CLASS;break;case"t":if(o.cse4(s,"h","r","o","w"))return TokenType.THROW;break;case"y":if(o.cse4(s,"i","e","l","d"))return TokenType.YIELD;break;case"s":if(o.cse4(s,"u","p","e","r"))return TokenType.SUPER;break}break;case 6:switch(s.charAt(0)){case"r":if(o.cse5(s,"e","t","u","r","n"))return TokenType.RETURN;break;case"t":if(o.cse5(s,"y","p","e","o","f"))return TokenType.TYPEOF;break;case"d":if(o.cse5(s,"e","l","e","t","e"))return TokenType.DELETE;break;case"s":if(o.cse5(s,"w","i","t","c","h"))return TokenType.SWITCH;break;case"e":if(o.cse5(s,"x","p","o","r","t"))return TokenType.EXPORT;break;case"i":if(o.cse5(s,"m","p","o","r","t"))return TokenType.IMPORT;break}break;case 7:switch(s.charAt(0)){case"d":if(o.cse6(s,"e","f","a","u","l","t"))return TokenType.DEFAULT;break;case"f":if(o.cse6(s,"i","n","a","l","l","y"))return TokenType.FINALLY;break;case"e":if(o.cse6(s,"x","t","e","n","d","s"))return TokenType.EXTENDS;break}break;case 8:switch(s.charAt(0)){case"f":if(o.cse7(s,"u","n","c","t","i","o","n"))return TokenType.FUNCTION;break;case"c":if(o.cse7(s,"o","n","t","i","n","u","e"))return TokenType.CONTINUE;break;case"d":if(o.cse7(s,"e","b","u","g","g","e","r"))return TokenType.DEBUGGER;break}break;case 10:if(s==="instanceof")return TokenType.INSTANCEOF;break}return TokenType.IDENTIFIER}},{key:"skipSingleLineComment",value:function(s){for(this.index+=s;this.index=a)break;if(c=this.source.charCodeAt(this.index+1),c===47)this.skipSingleLineComment(2),s=!0;else if(c===42)s=this.skipMultiLineComment()||s;else break}else if(!this.moduleIsTheGoalSymbol&&s&&c===45){if(this.index+2>=a)break;if(this.source.charAt(this.index+1)==="-"&&this.source.charAt(this.index+2)===">")this.skipSingleLineComment(3);else break}else if(!this.moduleIsTheGoalSymbol&&c===60)if(this.source.slice(this.index+1,this.index+4)==="!--")this.skipSingleLineComment(4),s=!0;else break;else break}}},{key:"scanHexEscape2",value:function(){if(this.index+2>this.source.length)return-1;var s=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(s===-1)return-1;var a=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));return a===-1?-1:(this.index+=2,s<<4|a)}},{key:"scanUnicode",value:function(){if(this.source.charAt(this.index)==="{"){for(var s=this.index+1,a=0,c=void 0;s1114111)throw this.createILLEGAL();s++}if(c!=="}")throw this.createILLEGAL();if(s===this.index+1)throw++this.index,this.createILLEGAL();return this.index=s+1,a}if(this.index+4>this.source.length)return-1;var _=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(_===-1)return-1;var b=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));if(b===-1)return-1;var k=(0,_utils$1.getHexValue)(this.source.charAt(this.index+2));if(k===-1)return-1;var $=(0,_utils$1.getHexValue)(this.source.charAt(this.index+3));return $===-1?-1:(this.index+=4,_<<12|b<<8|k<<4|$)}},{key:"getEscapedIdentifier",value:function(){for(var s="",a=_utils$1.isIdentifierStart;this.index=this.source.length)throw this.createILLEGAL();if(this.source.charAt(this.index)!=="u")throw this.createILLEGAL();if(++this.index,d=this.scanUnicode(),d<0)throw this.createILLEGAL();c=fromCodePoint$1(d)}else if(d>=55296&&d<=56319){if(this.index>=this.source.length)throw this.createILLEGAL();var b=this.source.charCodeAt(this.index);if(++this.index,!(b>=56320&&b<=57343))throw this.createILLEGAL();d=decodeUtf16(d,b),c=fromCodePoint$1(d)}if(!a(d)){if(s.length<1)throw this.createILLEGAL();return this.index=_,s}a=_utils$1.isIdentifierPart,s+=c}return s}},{key:"getIdentifier",value:function(){for(var s=this.index,a=this.source.length,c=this.index,d=_utils$1.isIdentifierStart;c=55296&&b<=56319)return this.index=s,this.getEscapedIdentifier();if(!d(b))return this.index=c,this.source.slice(s,c);++c,d=_utils$1.isIdentifierPart}return this.index=c,this.source.slice(s,c)}},{key:"scanIdentifier",value:function(){var s=this.getLocation(),a=this.index,c=this.source.charAt(this.index)==="\\"?this.getEscapedIdentifier():this.getIdentifier(),d=this.getSlice(a,s);d.text=c;var _=this.index-a!==c.length,b=this.getKeyword(c);return _&&b!==TokenType.IDENTIFIER&&(b=TokenType.ESCAPED_KEYWORD),{type:b,value:c,slice:d,escaped:_}}},{key:"getLocation",value:function(){return{line:this.startLine+1,column:this.startIndex-this.startLineStart,offset:this.startIndex}}},{key:"getLastTokenEndLocation",value:function(){return{line:this.lastLine+1,column:this.lastIndex-this.lastLineStart,offset:this.lastIndex}}},{key:"getSlice",value:function(s,a){return{text:this.source.slice(s,this.index),start:s,startLocation:a,end:this.index}}},{key:"scanPunctuatorHelper",value:function(){var s=this.source.charAt(this.index);switch(s){case".":{var a=this.source.charAt(this.index+1);if(a!==".")return TokenType.PERIOD;var c=this.source.charAt(this.index+2);return c!=="."?TokenType.PERIOD:TokenType.ELLIPSIS}case"(":return TokenType.LPAREN;case")":case";":case",":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];case"{":return TokenType.LBRACE;case"}":case"[":case"]":case":":case"?":case"~":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];default:if(this.index+1":return TokenType.GTE;case"/":return TokenType.ASSIGN_DIV;case"%":return TokenType.ASSIGN_MOD;case"^":return TokenType.ASSIGN_BIT_XOR;case"&":return TokenType.ASSIGN_BIT_AND}}if(this.index+1"&&_===">")return this.index+3"&&_==="=")return TokenType.ASSIGN_SHR;if(s==="*"&&_==="=")return TokenType.ASSIGN_EXP}switch(s){case"*":return TokenType.EXP;case"+":return TokenType.INC;case"-":return TokenType.DEC;case"<":return TokenType.SHL;case">":return TokenType.SHR;case"&":return TokenType.AND;case"|":return TokenType.OR}}else if(s==="="&&d===">")return TokenType.ARROW}return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)]}},{key:"scanPunctuator",value:function(){var s=this.getLocation(),a=this.index,c=this.scanPunctuatorHelper();return this.index+=c.name.length,{type:c,value:c.name,slice:this.getSlice(a,s)}}},{key:"scanHexLiteral",value:function(s,a){for(var c=this.index;c="0"&&c<="7")this.index++;else{if((0,_utils$1.isIdentifierPart)(c.charCodeAt(0)))throw this.createILLEGAL();break}}if(this.index-s===2)throw this.createILLEGAL();return{type:TokenType.NUMBER,value:parseInt(this.getSlice(s,a).text.substr(2),8),slice:this.getSlice(s,a),octal:!1,noctal:!1}}},{key:"scanLegacyOctalLiteral",value:function(s,a){for(var c=!0;this.index="0"&&d<="7")this.index++;else if(d==="8"||d==="9")c=!1,this.index++;else{if((0,_utils$1.isIdentifierPart)(d.charCodeAt(0)))throw this.createILLEGAL();break}}var _=this.getSlice(s,a);return c?{type:TokenType.NUMBER,slice:_,value:parseInt(_.text.substr(1),8),octal:!0,noctal:!c}:(this.eatDecimalLiteralSuffix(),{type:TokenType.NUMBER,slice:_,value:+_.text,octal:!0,noctal:!c})}},{key:"scanNumericLiteral",value:function(){var s=this.source.charAt(this.index),a=this.getLocation(),c=this.index;if(s==="0")if(this.index++,this.index="0"&&s<="9")return this.scanLegacyOctalLiteral(c,a)}else{var d=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+d.text,slice:d,octal:!1,noctal:!1}}else if(s!==".")for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length){var _=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+_.text,slice:_,octal:!1,noctal:!1}}s=this.source.charAt(this.index)}if(this.eatDecimalLiteralSuffix(),this.index!==this.source.length&&(0,_utils$1.isIdentifierStart)(this.source.charCodeAt(this.index)))throw this.createILLEGAL();var b=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+b.text,slice:b,octal:!1,noctal:!1}}},{key:"eatDecimalLiteralSuffix",value:function(){var s=this.source.charAt(this.index);if(s==="."){if(this.index++,this.index===this.source.length)return;for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length)return;s=this.source.charAt(this.index)}}if(s==="e"||s==="E"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();if(s=this.source.charAt(this.index),s==="+"||s==="-"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();s=this.source.charAt(this.index)}if(s>="0"&&s<="9")for(;s>="0"&&s<="9"&&(this.index++,this.index!==this.source.length);)s=this.source.charAt(this.index);else throw this.createILLEGAL()}}},{key:"scanStringEscape",value:function(s,a){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();var c=this.source.charAt(this.index);if((0,_utils$1.isLineTerminator)(c.charCodeAt(0)))this.index++,c==="\r"&&this.source.charAt(this.index)===` +`&&this.index++,this.lineStart=this.index,this.line++;else switch(c){case"n":s+=` +`,this.index++;break;case"r":s+="\r",this.index++;break;case"t":s+=" ",this.index++;break;case"u":case"x":{var d=void 0;if(this.index++,this.index>=this.source.length)throw this.createILLEGAL();if(d=c==="u"?this.scanUnicode():this.scanHexEscape2(),d<0)throw this.createILLEGAL();s+=fromCodePoint$1(d);break}case"b":s+="\b",this.index++;break;case"f":s+="\f",this.index++;break;case"v":s+="\v",this.index++;break;default:if(c>="0"&&c<="7"){var _=this.index,b=1;c>="0"&&c<="3"&&(b=0);for(var k=0;b<3&&c>="0"&&c<="7";){if(this.index++,(b>0||c!=="0")&&(a=this.source.slice(_,this.index)),k*=8,k+=c-"0",b++,this.index===this.source.length)throw this.createILLEGAL();c=this.source.charAt(this.index)}k===0&&b===1&&(c==="8"||c==="9")&&(a=this.source.slice(_,this.index+1)),s+=String.fromCharCode(k)}else{if(c==="8"||c==="9")throw this.createILLEGAL();s+=c,this.index++}}return[s,a]}},{key:"scanStringLiteral",value:function(){var s="",a=this.source.charAt(this.index),c=this.getLocation(),d=this.index;this.index++;for(var _=null;this.index=this.source.length)return{type:TokenType.EOS,slice:this.getSlice(this.index,s)};var a=this.source.charCodeAt(this.index);if(a<128){if(PUNCTUATOR_START[a])return this.scanPunctuator();if((0,_utils$1.isIdentifierStart)(a)||a===92)return this.scanIdentifier();if(a===46)return this.index+1=48&&a<=57)return this.scanNumericLiteral();throw this.createILLEGAL()}else{if((0,_utils$1.isIdentifierStart)(a)||a>=55296&&a<=56319)return this.scanIdentifier();throw this.createILLEGAL()}}},{key:"eof",value:function(){return this.lookahead.type===TokenType.EOS}},{key:"lex",value:function(){var s=this.lookahead;return this.lookahead=this.advance(),this.tokenIndex++,s}}],[{key:"cse2",value:function(s,a,c){return s.charAt(1)===a&&s.charAt(2)===c}},{key:"cse3",value:function(s,a,c,d){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d}},{key:"cse4",value:function(s,a,c,d,_){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_}},{key:"cse5",value:function(s,a,c,d,_,b){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b}},{key:"cse6",value:function(s,a,c,d,_,b,k){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k}},{key:"cse7",value:function(s,a,c,d,_,b,k,$){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===d&&s.charAt(4)===_&&s.charAt(5)===b&&s.charAt(6)===k&&s.charAt(7)===$}}]),o}();tokenizer.default=Tokenizer;var parser$1={},dist$6={},mappings=new Map([["General_Category",new Map([["C","Other"],["Cc","Control"],["cntrl","Control"],["Cf","Format"],["Cn","Unassigned"],["Co","Private_Use"],["Cs","Surrogate"],["L","Letter"],["LC","Cased_Letter"],["Ll","Lowercase_Letter"],["Lm","Modifier_Letter"],["Lo","Other_Letter"],["Lt","Titlecase_Letter"],["Lu","Uppercase_Letter"],["M","Mark"],["Combining_Mark","Mark"],["Mc","Spacing_Mark"],["Me","Enclosing_Mark"],["Mn","Nonspacing_Mark"],["N","Number"],["Nd","Decimal_Number"],["digit","Decimal_Number"],["Nl","Letter_Number"],["No","Other_Number"],["P","Punctuation"],["punct","Punctuation"],["Pc","Connector_Punctuation"],["Pd","Dash_Punctuation"],["Pe","Close_Punctuation"],["Pf","Final_Punctuation"],["Pi","Initial_Punctuation"],["Po","Other_Punctuation"],["Ps","Open_Punctuation"],["S","Symbol"],["Sc","Currency_Symbol"],["Sk","Modifier_Symbol"],["Sm","Math_Symbol"],["So","Other_Symbol"],["Z","Separator"],["Zl","Line_Separator"],["Zp","Paragraph_Separator"],["Zs","Space_Separator"],["Other","Other"],["Control","Control"],["Format","Format"],["Unassigned","Unassigned"],["Private_Use","Private_Use"],["Surrogate","Surrogate"],["Letter","Letter"],["Cased_Letter","Cased_Letter"],["Lowercase_Letter","Lowercase_Letter"],["Modifier_Letter","Modifier_Letter"],["Other_Letter","Other_Letter"],["Titlecase_Letter","Titlecase_Letter"],["Uppercase_Letter","Uppercase_Letter"],["Mark","Mark"],["Spacing_Mark","Spacing_Mark"],["Enclosing_Mark","Enclosing_Mark"],["Nonspacing_Mark","Nonspacing_Mark"],["Number","Number"],["Decimal_Number","Decimal_Number"],["Letter_Number","Letter_Number"],["Other_Number","Other_Number"],["Punctuation","Punctuation"],["Connector_Punctuation","Connector_Punctuation"],["Dash_Punctuation","Dash_Punctuation"],["Close_Punctuation","Close_Punctuation"],["Final_Punctuation","Final_Punctuation"],["Initial_Punctuation","Initial_Punctuation"],["Other_Punctuation","Other_Punctuation"],["Open_Punctuation","Open_Punctuation"],["Symbol","Symbol"],["Currency_Symbol","Currency_Symbol"],["Modifier_Symbol","Modifier_Symbol"],["Math_Symbol","Math_Symbol"],["Other_Symbol","Other_Symbol"],["Separator","Separator"],["Line_Separator","Line_Separator"],["Paragraph_Separator","Paragraph_Separator"],["Space_Separator","Space_Separator"]])],["Script",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])],["Script_Extensions",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])]]);const propertyToValueAliases=mappings,matchPropertyValue=function(o,e){const s=propertyToValueAliases.get(o);if(!s)throw new Error(`Unknown property \`${o}\`.`);const a=s.get(e);if(a)return a;throw new Error(`Unknown value \`${e}\` for property \`${o}\`.`)};var unicodeMatchPropertyValueEcmascript=matchPropertyValue,unicodeCanonicalPropertyNamesEcmascript=new Set(["General_Category","Script","Script_Extensions","Alphabetic","Any","ASCII","ASCII_Hex_Digit","Assigned","Bidi_Control","Bidi_Mirrored","Case_Ignorable","Cased","Changes_When_Casefolded","Changes_When_Casemapped","Changes_When_Lowercased","Changes_When_NFKC_Casefolded","Changes_When_Titlecased","Changes_When_Uppercased","Dash","Default_Ignorable_Code_Point","Deprecated","Diacritic","Emoji","Emoji_Component","Emoji_Modifier","Emoji_Modifier_Base","Emoji_Presentation","Extended_Pictographic","Extender","Grapheme_Base","Grapheme_Extend","Hex_Digit","ID_Continue","ID_Start","Ideographic","IDS_Binary_Operator","IDS_Trinary_Operator","Join_Control","Logical_Order_Exception","Lowercase","Math","Noncharacter_Code_Point","Pattern_Syntax","Pattern_White_Space","Quotation_Mark","Radical","Regional_Indicator","Sentence_Terminal","Soft_Dotted","Terminal_Punctuation","Unified_Ideograph","Uppercase","Variation_Selector","White_Space","XID_Continue","XID_Start"]),unicodePropertyAliasesEcmascript=new Map([["scx","Script_Extensions"],["sc","Script"],["gc","General_Category"],["AHex","ASCII_Hex_Digit"],["Alpha","Alphabetic"],["Bidi_C","Bidi_Control"],["Bidi_M","Bidi_Mirrored"],["Cased","Cased"],["CI","Case_Ignorable"],["CWCF","Changes_When_Casefolded"],["CWCM","Changes_When_Casemapped"],["CWKCF","Changes_When_NFKC_Casefolded"],["CWL","Changes_When_Lowercased"],["CWT","Changes_When_Titlecased"],["CWU","Changes_When_Uppercased"],["Dash","Dash"],["Dep","Deprecated"],["DI","Default_Ignorable_Code_Point"],["Dia","Diacritic"],["Ext","Extender"],["Gr_Base","Grapheme_Base"],["Gr_Ext","Grapheme_Extend"],["Hex","Hex_Digit"],["IDC","ID_Continue"],["Ideo","Ideographic"],["IDS","ID_Start"],["IDSB","IDS_Binary_Operator"],["IDST","IDS_Trinary_Operator"],["Join_C","Join_Control"],["LOE","Logical_Order_Exception"],["Lower","Lowercase"],["Math","Math"],["NChar","Noncharacter_Code_Point"],["Pat_Syn","Pattern_Syntax"],["Pat_WS","Pattern_White_Space"],["QMark","Quotation_Mark"],["Radical","Radical"],["RI","Regional_Indicator"],["SD","Soft_Dotted"],["STerm","Sentence_Terminal"],["Term","Terminal_Punctuation"],["UIdeo","Unified_Ideograph"],["Upper","Uppercase"],["VS","Variation_Selector"],["WSpace","White_Space"],["space","White_Space"],["XIDC","XID_Continue"],["XIDS","XID_Start"]]);const canonicalProperties=unicodeCanonicalPropertyNamesEcmascript,propertyAliases=unicodePropertyAliasesEcmascript,matchProperty=function(o){if(canonicalProperties.has(o))return o;if(propertyAliases.has(o))return propertyAliases.get(o);throw new Error(`Unknown property: ${o}`)};var unicodeMatchPropertyEcmascript=matchProperty,unicode$1={};Object.defineProperty(unicode$1,"__esModule",{value:!0});unicode$1.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$1.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$1.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$1.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$1.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$1.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(dist$6,"__esModule",{value:!0});var _createClass$d=function(){function o(e,s){for(var a=0;a=this.pattern.length}},{key:"backreference",value:function(s){s>this.largestBackreference&&(this.largestBackreference=s)}},{key:"nextCodePoint",value:function(){return this.empty()?null:this.unicode?String.fromCodePoint(this.pattern.codePointAt(this.index)):this.pattern.charAt(this.index)}},{key:"skipCodePoint",value:function(){this.index+=this.nextCodePoint().length}},{key:"eat",value:function(s){return this.index+s.length>this.pattern.length||this.pattern.slice(this.index,this.index+s.length)!==s?!1:(this.index+=s.length,!0)}},{key:"eatIdentifierCodePoint",value:function(){var s=void 0,a=this.index,c=void 0;if(this.match("\\u")){if(this.skipCodePoint(),s=acceptUnicodeEscape(this),!s.matched)return this.index=a,null;s=s.value,c=String.fromCodePoint(s)}else{if(c=this.nextCodePoint(),c==null)return this.index=a,null;this.index+=c.length,s=c.codePointAt(0)}return{character:c,characterValue:s}}},{key:"eatIdentifierStart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="_"||a.character==="$"||isIdentifierStart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatIdentifierPart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="\u200C"||a.character==="\u200D"||a.character==="$"||isIdentifierPart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatAny",value:function(){for(var s=arguments.length,a=Array(s),c=0;c1&&arguments[1]!==void 0?arguments[1]:{},s=e.unicode,a=s===void 0?!1:s,c=new PatternAcceptorState(o,a),d=acceptDisjunction(c);if(d.matched){if(c.unicode&&c.largestBackreference>c.capturingGroups)return!1;if(c.groupingNames.length>0||c.unicode){var _=!0,b=!1,k=void 0;try{for(var $=c.backreferenceNames[Symbol.iterator](),j;!(_=(j=$.next()).done);_=!0){var _e=j.value;if(c.groupingNames.indexOf(_e)===-1)return!1}}catch(et){b=!0,k=et}finally{try{!_&&$.return&&$.return()}finally{if(b)throw k}}}}return d.matched};var backtrackOnFailure=function o(e){return function(s){var a=s.index,c=s.largestBackreference,d=s.capturingGroups,_=e(s);return _.matched||(s.index=a,s.largestBackreference=c,s.capturingGroups=d),_}},acceptUnicodeEscape=backtrackOnFailure(function(o){if(!o.eat("u"))return{matched:!1};if(o.unicode&&o.eat("{")){for(var e=[];!o.eat("}");){var s=o.eatAny.apply(o,_toConsumableArray$6(hexDigits));if(s===null)return{matched:!1};e.push(s)}var a=parseInt(e.join(""),16);return a>1114111?{matched:!1}:{matched:!0,value:a}}var c=[0,0,0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});if(c.some(function(b){return b===null}))return{matched:!1};var d=parseInt(c.join(""),16);if(o.unicode&&d>=55296&&d<=56319){var _=backtrackOnFailure(function(b){if(!b.eat("\\u"))return{matched:!1};var k=[0,0,0,0].map(function(){return b.eatAny.apply(b,_toConsumableArray$6(hexDigits))});if(k.some(function(j){return j===null}))return{matched:!1};var $=parseInt(k.join(""),16);return $<56320||$>=57344?{matched:!1}:{matched:!0,value:65536+((d&1023)<<10)+($&1023)}})(o);if(_.matched)return _}return{matched:!0,value:d}}),acceptDisjunction=function o(e,s){do{if(s!==void 0&&e.eat(s))return{matched:!0};if(e.match("|"))continue;if(!acceptAlternative(e,s).matched)return{matched:!1}}while(e.eat("|"));return{matched:s===void 0||!!e.eat(s)}},acceptAlternative=function o(e,s){for(;!e.match("|")&&!e.empty()&&(s===void 0||!e.match(s));)if(!acceptTerm(e).matched)return{matched:!1};return{matched:!0}},anyOf=function o(){for(var e=arguments.length,s=Array(e),a=0;aparseInt(_))return{matched:!1}}return c.eat("}")?(c.eat("?"),{matched:!0}):{matched:!1}})(s);return a.matched?a:{matched:!s.unicode}}else s.eatAny("*","+","?")&&s.eat("?");return{matched:!0}})},acceptCharacterExcept=function o(e){return function(s){var a=s.nextCodePoint();return a===null||e.indexOf(a)!==-1?{matched:!1}:(s.skipCodePoint(),{matched:!0})}},acceptPatternCharacter=acceptCharacterExcept(syntaxCharacters),acceptExtendedPatternCharacter=acceptCharacterExcept(extendedSyntaxCharacters),acceptInvalidBracedQuantifier=function o(e){return backtrackOnFailure(function(s){return{matched:!!(s.eat("{")&&acceptDecimal(s).matched&&(!s.eat(",")||s.match("}")||acceptDecimal(s).matched)&&s.eat("}"))}})(e)},acceptAtom=function o(e){if(e.unicode)return anyOf(acceptPatternCharacter,function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);var s=anyOf(function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),backtrackOnFailure(function(a){return{matched:a.eat("\\")&&a.match("c")}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);return!s.matched&&acceptInvalidBracedQuantifier(e).matched?{matched:!1}:s.matched?s:acceptExtendedPatternCharacter(e)},acceptGrouping=backtrackOnFailure(function(o){if(!o.eat("("))return{matched:!1};var e=backtrackOnFailure(function(s){return o.eat("?")?acceptGroupName(s):{matched:!1}})(o);if(!acceptDisjunction(o,")").matched)return{matched:!1};if(e.matched){if(o.groupingNames.indexOf(e.data)!==-1)return{matched:!1};o.groupingNames.push(e.data)}return o.capturingGroups++,{matched:!0}}),acceptDecimalEscape=backtrackOnFailure(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(decimalDigits));return e===null?{matched:!1}:e==="0"?{matched:!0}:(o.backreference(parseInt(e+(o.eatNaturalNumber()||""))),{matched:!0})}),acceptCharacterClassEscape=function o(e){return e.eatAny("d","D","s","S","w","W")?{matched:!0}:e.unicode?backtrackOnFailure(function(s){return!s.eat("p{")&&!s.eat("P{")?{matched:!1}:acceptUnicodePropertyValueExpression(s).matched?{matched:!!s.eat("}")}:{matched:!1}})(e):{matched:!1}},acceptUnicodePropertyName=function o(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},acceptUnicodePropertyValue=function o(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(_toConsumableArray$6(decimalDigits),["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},illegalLoneUnicodePropertyNames=["General_Category","Script","Script_Extensions","scx","sc","gc"],generalCategoryValues=_mappings2.default.get("General_Category"),acceptLoneUnicodePropertyNameOrValue=function o(e){var s=acceptUnicodePropertyValue(e);return!s.matched||illegalLoneUnicodePropertyNames.includes(s.data)?{matched:!1}:{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyEcmascript2.default)(s.data)})||generalCategoryValues.get(s.data)!=null}},acceptUnicodePropertyValueExpression=function o(e){return anyOf(backtrackOnFailure(function(s){var a=acceptUnicodePropertyName(s);if(!a.matched||!s.eat("="))return{matched:!1};var c=acceptUnicodePropertyValue(s);return c.matched?{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyValueEcmascript2.default)(_unicodePropertyAliasesEcmascript2.default.get(a.data)||a.data,c.data)})}:{matched:!1}}),backtrackOnFailure(acceptLoneUnicodePropertyNameOrValue))(e)},acceptCharacterEscape=anyOf(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(controlEscapeCharacters));return e===null?{matched:!1}:{matched:!0,value:controlEscapeCharacterValues[e]}},backtrackOnFailure(function(o){if(!o.eat("c"))return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(controlCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)%32}}),backtrackOnFailure(function(o){return!o.eat("0")||o.eatAny.apply(o,_toConsumableArray$6(decimalDigits))?{matched:!1}:{matched:!0,value:0}}),backtrackOnFailure(function(o){if(!o.eat("x"))return{matched:!1};var e=[0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});return e.some(function(s){return s===null})?{matched:!1}:{matched:!0,value:parseInt(e.join(""),16)}}),acceptUnicodeEscape,backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(octalDigits));if(e===null)return{matched:!1};var s=parseInt(e,8);if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s};var a=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),c=parseInt(a,8);if(s<4){if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s<<3|c};var d=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),_=parseInt(d,8);return{matched:!0,value:s<<6|c<<3|_}}return{matched:!0,value:s<<3|c}}),backtrackOnFailure(function(o){if(!o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(syntaxCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)}}),function(o){return!o.unicode||!o.eat("/")?{matched:!1}:{matched:!0,value:"/".charCodeAt(0)}},backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.nextCodePoint();return e!==null&&e!=="c"&&e!=="k"?(o.skipCodePoint(),{matched:!0,value:e.codePointAt(0)}):{matched:!1}})),acceptGroupNameBackreference=backtrackOnFailure(function(o){if(!o.eat("k"))return{matched:!1};var e=acceptGroupName(o);return e.matched?(o.backreferenceNames.push(e.data),{matched:!0}):(o.backreferenceNames.push(INVALID_NAMED_BACKREFERENCE_SENTINEL),{matched:!0})}),acceptGroupName=backtrackOnFailure(function(o){if(!o.eat("<"))return{matched:!1};var e=[],s=o.eatIdentifierStart();if(!s)return{matched:!1};e.push(s);for(var a=void 0;a=o.eatIdentifierPart();)e.push(a);return o.eat(">")?{matched:e.length>0,data:e.join("")}:{matched:!1}}),acceptAtomEscape=anyOf(acceptDecimalEscape,acceptCharacterClassEscape,acceptCharacterEscape,acceptGroupNameBackreference),acceptCharacterClass=backtrackOnFailure(function(o){if(!o.eat("["))return{matched:!1};o.eat("^");var e=anyOf(function(k){return{matched:!!k.eat("b"),value:8}},function(k){return{matched:k.unicode&&!!k.eat("-"),value:"-".charCodeAt(0)}},backtrackOnFailure(function(k){if(k.unicode||!k.eat("c"))return{matched:!1};var $=k.eatAny.apply(k,_toConsumableArray$6(decimalDigits).concat(["_"]));return $===null?{matched:!1}:{matched:!0,value:$.charCodeAt(0)%32}}),acceptCharacterClassEscape,acceptCharacterEscape,function(k){return{matched:!k.unicode&&!!k.eat("k"),value:107}}),s=function($){var j=$.nextCodePoint();if(j==="]"||j==="-"||j===null)return{matched:!1};if(j!=="\\")return $.skipCodePoint(),{matched:!0,value:j.codePointAt(0)};$.eat("\\");var _e=e($);return!_e.matched&&$.nextCodePoint()==="c"&&!$.unicode?{matched:!0,value:"\\".charCodeAt(0)}:_e},a=function($){return $.eat("-")?{matched:!0,value:"-".charCodeAt(0)}:s($)},c=function($,j){var _e=function(nt){return nt.value===void 0&&nt.matched};if($.eat("-")){if($.match("]"))return{matched:!0};var et=a($);return et.matched?$.unicode&&(_e(j)||_e(et))?{matched:!1}:!(!$.unicode&&(_e(j)||_e(et)))&&j.value>et.value?{matched:!1}:$.match("]")?{matched:!0}:d($):{matched:!1}}return $.match("]")?{matched:!0}:_($)},d=function($){var j=a($);return j.matched?c($,j):{matched:!1}},_=function($){var j=s($);return j.matched?c($,j):{matched:!1}};if(o.eat("]"))return{matched:!0};var b=d(o);return b.matched&&o.eat("]"),b}),dist$5={};Object.defineProperty(dist$5,"__esModule",{value:!0});function _classCallCheck$g(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$5.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$5.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};dist$5.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$g(this,o),this.type="ArrayExpression",this.elements=s};dist$5.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$g(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$5.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$g(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$5.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$5.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$5.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$5.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$5.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="AwaitExpression",this.expression=s};dist$5.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$g(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$5.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="BindingIdentifier",this.name=s};dist$5.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$5.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$5.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$5.Block=function o(e){var s=e.statements;_classCallCheck$g(this,o),this.type="Block",this.statements=s};dist$5.BlockStatement=function o(e){var s=e.block;_classCallCheck$g(this,o),this.type="BlockStatement",this.block=s};dist$5.BreakStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="BreakStatement",this.label=s};dist$5.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$5.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$g(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$5.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$5.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$g(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$5.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$5.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$g(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$5.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$5.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$5.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ComputedPropertyName",this.expression=s};dist$5.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$5.ContinueStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="ContinueStatement",this.label=s};dist$5.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$g(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$5.DebuggerStatement=function o(){_classCallCheck$g(this,o),this.type="DebuggerStatement"};dist$5.Directive=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="Directive",this.rawValue=s};dist$5.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$g(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$5.EmptyStatement=function o(){_classCallCheck$g(this,o),this.type="EmptyStatement"};dist$5.Export=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="Export",this.declaration=s};dist$5.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$5.ExportDefault=function o(e){var s=e.body;_classCallCheck$g(this,o),this.type="ExportDefault",this.body=s};dist$5.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$5.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$g(this,o),this.type="ExportLocals",this.namedExports=s};dist$5.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ExpressionStatement",this.expression=s};dist$5.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$5.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$5.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$5.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,d=e.body;_classCallCheck$g(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=d};dist$5.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$g(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$5.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$5.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$g(this,o),this.type="Getter",this.name=s,this.body=a};dist$5.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="IdentifierExpression",this.name=s};dist$5.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$5.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$5.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$5.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$5.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$g(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$5.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$5.LiteralInfinityExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralInfinityExpression"};dist$5.LiteralNullExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralNullExpression"};dist$5.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralNumericExpression",this.value=s};dist$5.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$g(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};dist$5.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralStringExpression",this.value=s};dist$5.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$g(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$5.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$g(this,o),this.type="Module",this.directives=s,this.items=a};dist$5.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$5.NewTargetExpression=function o(){_classCallCheck$g(this,o),this.type="NewTargetExpression"};dist$5.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$5.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$5.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$g(this,o),this.type="ObjectExpression",this.properties=s};dist$5.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ReturnStatement",this.expression=s};dist$5.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="Script",this.directives=s,this.statements=a};dist$5.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$g(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$5.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="ShorthandProperty",this.name=s};dist$5.SpreadElement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadElement",this.expression=s};dist$5.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadProperty",this.expression=s};dist$5.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};dist$5.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$5.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="StaticPropertyName",this.value=s};dist$5.Super=function o(){_classCallCheck$g(this,o),this.type="Super"};dist$5.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$g(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$5.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$g(this,o),this.type="SwitchDefault",this.consequent=s};dist$5.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$g(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$5.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$g(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=d};dist$5.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="TemplateElement",this.rawValue=s};dist$5.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$g(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$5.ThisExpression=function o(){_classCallCheck$g(this,o),this.type="ThisExpression"};dist$5.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ThrowStatement",this.expression=s};dist$5.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$g(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$5.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$g(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$5.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$g(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$5.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$g(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$5.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$g(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$5.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$5.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$5.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$g(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$5.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$g(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$5.YieldExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldExpression",this.expression=s};dist$5.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldGeneratorExpression",this.expression=s};Object.defineProperty(parser$1,"__esModule",{value:!0});parser$1.GenericParser=void 0;var _createClass$c=function(){function o(e,s){for(var a=0;a":Precedence$1.Relational,"<=":Precedence$1.Relational,">=":Precedence$1.Relational,in:Precedence$1.Relational,instanceof:Precedence$1.Relational,"<<":Precedence$1.BitwiseSHIFT,">>":Precedence$1.BitwiseSHIFT,">>>":Precedence$1.BitwiseSHIFT,"+":Precedence$1.Additive,"-":Precedence$1.Additive,"*":Precedence$1.Multiplicative,"%":Precedence$1.Multiplicative,"/":Precedence$1.Multiplicative};function isValidSimpleAssignmentTarget(o){if(o==null)return!1;switch(o.type){case"IdentifierExpression":case"ComputedMemberExpression":case"StaticMemberExpression":return!0}return!1}function isPrefixOperator(o){switch(o.type){case _tokenizer.TokenType.INC:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TYPEOF:return!0}return!1}function isUpdateOperator(o){return o.type===_tokenizer.TokenType.INC||o.type===_tokenizer.TokenType.DEC}parser$1.GenericParser=function(o){_inherits$7(e,o);function e(s){_classCallCheck$f(this,e);var a=_possibleConstructorReturn$7(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,s));return a.allowIn=!0,a.inFunctionBody=!1,a.inParameter=!1,a.allowYieldExpression=!1,a.allowAwaitExpression=!1,a.firstAwaitLocation=null,a.module=!1,a.moduleIsTheGoalSymbol=!1,a.strict=!1,a.isBindingElement=!0,a.isAssignmentTarget=!0,a.firstExprError=null,a}return _createClass$c(e,[{key:"match",value:function(a){return this.lookahead.type===a}},{key:"matchIdentifier",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IDENTIFIER:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.YIELD:case _tokenizer.TokenType.ASYNC:return!0;case _tokenizer.TokenType.AWAIT:return this.moduleIsTheGoalSymbol?!1:(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0);case _tokenizer.TokenType.ESCAPED_KEYWORD:return this.lookahead.value==="await"&&!this.moduleIsTheGoalSymbol?(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0):this.lookahead.value==="let"||this.lookahead.value==="yield"||this.lookahead.value==="async"}return!1}},{key:"eat",value:function(a){return this.lookahead.type===a?this.lex():null}},{key:"expect",value:function(a){if(this.lookahead.type===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"matchContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a}},{key:"expectContextualKeyword",value:function(a){if(this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"eatContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a?this.lex():null}},{key:"consumeSemicolon",value:function(){if(!this.eat(_tokenizer.TokenType.SEMICOLON)&&!this.hasLineTerminatorBeforeNext&&!this.eof()&&!this.match(_tokenizer.TokenType.RBRACE))throw this.createUnexpected(this.lookahead)}},{key:"startNode",value:function(a){return a}},{key:"copyNode",value:function(a,c){return c}},{key:"finishNode",value:function(a){return a}},{key:"parseModule",value:function(){this.moduleIsTheGoalSymbol=this.module=this.strict=!0,this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Module({directives:d,items:_}),a)}},{key:"parseScript",value:function(){this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),d=c.directives,_=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Script({directives:d,statements:_}),a)}},{key:"parseFunctionBody",value:function(){var a=this.inFunctionBody,c=this.module,d=this.strict;this.inFunctionBody=!0,this.module=!1;var _=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);var b=new AST.FunctionBody(this.parseBody());return this.expect(_tokenizer.TokenType.RBRACE),b=this.finishNode(b,_),this.inFunctionBody=a,this.module=c,this.strict=d,b}},{key:"parseBody",value:function(){for(var a=[],c=[],d=!0,_=null;!(this.eof()||this.match(_tokenizer.TokenType.RBRACE));){var b=this.lookahead,k=b.slice.text,$=b.type===_tokenizer.TokenType.STRING,j=this.module,_e=this.getLocation(),et=this.startNode(),tt=j?this.parseModuleItem():this.parseStatementListItem();if(d)if($&&tt.type==="ExpressionStatement"&&tt.expression.type==="LiteralStringExpression"){!_&&b.octal&&(_=this.createErrorWithLocation(_e,"Unexpected legacy octal escape sequence: \\"+b.octal));var nt=k.slice(1,-1);nt==="use strict"&&(this.strict=!0),a.push(this.finishNode(new AST.Directive({rawValue:nt}),et))}else{if(d=!1,_&&this.strict)throw _;c.push(tt)}else c.push(tt)}if(_&&this.strict)throw _;return{directives:a,statements:c}}},{key:"parseImportSpecifier",value:function(){var a=this.startNode(),c=void 0;if(this.matchIdentifier()){if(c=this.parseIdentifier(),!this.eatContextualKeyword("as"))return this.finishNode(new AST.ImportSpecifier({name:null,binding:this.finishNode(new AST.BindingIdentifier({name:c}),a)}),a)}else this.lookahead.type.klass.isIdentifierName&&(c=this.parseIdentifierName(),this.expectContextualKeyword("as"));return this.finishNode(new AST.ImportSpecifier({name:c,binding:this.parseBindingIdentifier()}),a)}},{key:"parseNameSpaceBinding",value:function(){return this.expect(_tokenizer.TokenType.MUL),this.expectContextualKeyword("as"),this.parseBindingIdentifier()}},{key:"parseNamedImports",value:function(){var a=[];for(this.expect(_tokenizer.TokenType.LBRACE);!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseImportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseFromClause",value:function(){this.expectContextualKeyword("from");var a=this.expect(_tokenizer.TokenType.STRING).str;return a}},{key:"parseImportDeclaration",value:function(){var a=this.startNode(),c=null,d=void 0;if(this.expect(_tokenizer.TokenType.IMPORT),this.match(_tokenizer.TokenType.STRING))return d=this.lex().str,this.consumeSemicolon(),this.finishNode(new AST.Import({defaultBinding:null,namedImports:[],moduleSpecifier:d}),a);if(this.matchIdentifier()&&(c=this.parseBindingIdentifier(),!this.eat(_tokenizer.TokenType.COMMA))){var _=new AST.Import({defaultBinding:c,namedImports:[],moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(_,a)}if(this.match(_tokenizer.TokenType.MUL)){var b=new AST.ImportNamespace({defaultBinding:c,namespaceBinding:this.parseNameSpaceBinding(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(b,a)}else if(this.match(_tokenizer.TokenType.LBRACE)){var k=new AST.Import({defaultBinding:c,namedImports:this.parseNamedImports(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(k,a)}throw this.createUnexpected(this.lookahead)}},{key:"parseExportSpecifier",value:function(){var a=this.startNode(),c=this.finishNode({type:EXPORT_UNKNOWN_SPECIFIER,isIdentifier:this.matchIdentifier(),value:this.parseIdentifierName()},a);if(this.eatContextualKeyword("as")){var d=this.parseIdentifierName();return this.finishNode({name:c,exportedName:d},a)}return this.finishNode({name:c,exportedName:null},a)}},{key:"parseExportClause",value:function(){this.expect(_tokenizer.TokenType.LBRACE);for(var a=[];!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseExportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseExportDeclaration",value:function(){var a=this,c=this.startNode(),d=void 0;switch(this.expect(_tokenizer.TokenType.EXPORT),this.lookahead.type){case _tokenizer.TokenType.MUL:this.lex(),d=new AST.ExportAllFrom({moduleSpecifier:this.parseFromClause()}),this.consumeSemicolon();break;case _tokenizer.TokenType.LBRACE:{var _=this.parseExportClause(),b=null;this.matchContextualKeyword("from")?(b=this.parseFromClause(),d=new AST.ExportFrom({namedExports:_.map(function(_e){return a.copyNode(_e,new AST.ExportFromSpecifier({name:_e.name.value,exportedName:_e.exportedName}))}),moduleSpecifier:b})):(_.forEach(function(_e){var et=_e.name;if(!et.isIdentifier)throw a.createError(_errors$1.ErrorMessages.ILLEGAL_EXPORTED_NAME)}),d=new AST.ExportLocals({namedExports:_.map(function(_e){return a.copyNode(_e,new AST.ExportLocalSpecifier({name:a.copyNode(_e.name,new AST.IdentifierExpression({name:_e.name.value})),exportedName:_e.exportedName}))})})),this.consumeSemicolon();break}case _tokenizer.TokenType.CLASS:d=new AST.Export({declaration:this.parseClass({isExpr:!1,inDefault:!1})});break;case _tokenizer.TokenType.FUNCTION:d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.ASYNC:{var k=this.startNode();this.lex(),d=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:k})});break}case _tokenizer.TokenType.DEFAULT:switch(this.lex(),this.lookahead.type){case _tokenizer.TokenType.FUNCTION:d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.CLASS:d=new AST.ExportDefault({body:this.parseClass({isExpr:!1,inDefault:!0})});break;case _tokenizer.TokenType.ASYNC:{var $=this.startNode(),j=this.saveLexerState();if(this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)){d=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!1,isAsync:!0,startState:$})});break}this.restoreLexerState(j)}default:d=new AST.ExportDefault({body:this.parseAssignmentExpression()}),this.consumeSemicolon();break}break;case _tokenizer.TokenType.VAR:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.CONST:d=new AST.Export({declaration:this.parseVariableDeclaration(!0)}),this.consumeSemicolon();break;default:throw this.createUnexpected(this.lookahead)}return this.finishNode(d,c)}},{key:"parseModuleItem",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IMPORT:return this.parseImportDeclaration();case _tokenizer.TokenType.EXPORT:return this.parseExportDeclaration();default:return this.parseStatementListItem()}}},{key:"lookaheadLexicalDeclaration",value:function(){if(this.match(_tokenizer.TokenType.LET)||this.match(_tokenizer.TokenType.CONST)){var a=this.saveLexerState();if(this.lex(),this.matchIdentifier()||this.match(_tokenizer.TokenType.LBRACE)||this.match(_tokenizer.TokenType.LBRACK))return this.restoreLexerState(a),!0;this.restoreLexerState(a)}return!1}},{key:"parseStatementListItem",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.FUNCTION:return this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1});case _tokenizer.TokenType.CLASS:return this.parseClass({isExpr:!1,inDefault:!1});case _tokenizer.TokenType.ASYNC:{var a=this.getLocation(),c=this.saveLexerState();return this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:a}):(this.restoreLexerState(c),this.parseStatement())}default:if(this.lookaheadLexicalDeclaration()){var d=this.startNode();return this.finishNode(this.parseVariableDeclarationStatement(),d)}return this.parseStatement()}}},{key:"parseStatement",value:function(){var a=this.startNode(),c=this.isolateCoverGrammar(this.parseStatementHelper);return this.finishNode(c,a)}},{key:"parseStatementHelper",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.SEMICOLON:return this.parseEmptyStatement();case _tokenizer.TokenType.LBRACE:return this.parseBlockStatement();case _tokenizer.TokenType.LPAREN:return this.parseExpressionStatement();case _tokenizer.TokenType.BREAK:return this.parseBreakStatement();case _tokenizer.TokenType.CONTINUE:return this.parseContinueStatement();case _tokenizer.TokenType.DEBUGGER:return this.parseDebuggerStatement();case _tokenizer.TokenType.DO:return this.parseDoWhileStatement();case _tokenizer.TokenType.FOR:return this.parseForStatement();case _tokenizer.TokenType.IF:return this.parseIfStatement();case _tokenizer.TokenType.RETURN:return this.parseReturnStatement();case _tokenizer.TokenType.SWITCH:return this.parseSwitchStatement();case _tokenizer.TokenType.THROW:return this.parseThrowStatement();case _tokenizer.TokenType.TRY:return this.parseTryStatement();case _tokenizer.TokenType.VAR:return this.parseVariableDeclarationStatement();case _tokenizer.TokenType.WHILE:return this.parseWhileStatement();case _tokenizer.TokenType.WITH:return this.parseWithStatement();case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.CLASS:throw this.createUnexpected(this.lookahead);default:{var a=this.saveLexerState();if(this.eat(_tokenizer.TokenType.LET)){if(this.match(_tokenizer.TokenType.LBRACK))throw this.restoreLexerState(a),this.createUnexpected(this.lookahead);this.restoreLexerState(a)}else if(this.eat(_tokenizer.TokenType.ASYNC)){if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION))throw this.createUnexpected(this.lookahead);this.restoreLexerState(a)}var c=this.parseExpression();if(c.type==="IdentifierExpression"&&this.eat(_tokenizer.TokenType.COLON)){var d=this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement();return new AST.LabeledStatement({label:c.name,body:d})}return this.consumeSemicolon(),new AST.ExpressionStatement({expression:c})}}}},{key:"parseEmptyStatement",value:function(){return this.lex(),new AST.EmptyStatement}},{key:"parseBlockStatement",value:function(){return new AST.BlockStatement({block:this.parseBlock()})}},{key:"parseExpressionStatement",value:function(){var a=this.parseExpression();return this.consumeSemicolon(),new AST.ExpressionStatement({expression:a})}},{key:"parseBreakStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.BreakStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.BreakStatement({label:a})}},{key:"parseContinueStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ContinueStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.ContinueStatement({label:a})}},{key:"parseDebuggerStatement",value:function(){return this.lex(),this.consumeSemicolon(),new AST.DebuggerStatement}},{key:"parseDoWhileStatement",value:function(){this.lex();var a=this.parseStatement();this.expect(_tokenizer.TokenType.WHILE),this.expect(_tokenizer.TokenType.LPAREN);var c=this.parseExpression();return this.expect(_tokenizer.TokenType.RPAREN),this.eat(_tokenizer.TokenType.SEMICOLON),new AST.DoWhileStatement({body:a,test:c})}},{key:"parseForStatement",value:function(){this.lex();var a=this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT);this.expect(_tokenizer.TokenType.LPAREN);var c=null,d=null;if(a&&this.match(_tokenizer.TokenType.SEMICOLON))throw this.createUnexpected(this.lookahead);if(this.eat(_tokenizer.TokenType.SEMICOLON))return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:null,test:c,update:d,body:this.getIteratorStatementEpilogue()});var _=this.match(_tokenizer.TokenType.LET),b=this.lookaheadLexicalDeclaration(),k=this.startNode();if(this.match(_tokenizer.TokenType.VAR)||b){var $=this.allowIn;this.allowIn=!1;var j=this.parseVariableDeclaration(!1);if(this.allowIn=$,j.declarators.length===1&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){var _e=void 0,et=j.declarators[0];if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);if(et.init!==null&&(this.strict||j.kind!=="var"||et.binding.type!=="BindingIdentifier"))throw this.createError(_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_IN);_e=AST.ForInStatement,this.lex(),d=this.parseExpression()}else{if(et.init!==null)throw this.createError(a?_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_OF);a?_e=AST.ForAwaitStatement:_e=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression()}var tt=this.getIteratorStatementEpilogue();return new _e({left:j,right:d,body:tt})}else if(a)throw this.createUnexpected(this.lookahead);if(this.expect(_tokenizer.TokenType.SEMICOLON),j.declarators.some(function(at){return at.binding.type!=="BindingIdentifier"&&at.init===null}))throw this.createError(_errors$1.ErrorMessages.UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT);return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:j,test:c,update:d,body:this.getIteratorStatementEpilogue()})}var nt=this.allowIn;this.allowIn=!1;var st=this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget);if(this.allowIn=nt,this.isAssignmentTarget&&st.type!=="AssignmentExpression"&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){if((st.type==="ObjectAssignmentTarget"||st.type==="ArrayAssignmentTarget")&&(this.firstExprError=null),_&&this.matchContextualKeyword("of"))throw this.createError(a?_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);var rt=void 0;if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);rt=AST.ForInStatement,this.lex(),d=this.parseExpression()}else a?rt=AST.ForAwaitStatement:rt=AST.ForOfStatement,this.lex(),d=this.parseAssignmentExpression();return new rt({left:this.transformDestructuring(st),right:d,body:this.getIteratorStatementEpilogue()})}else if(a)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT);if(this.firstExprError)throw this.firstExprError;for(;this.eat(_tokenizer.TokenType.COMMA);){var it=this.parseAssignmentExpression();st=this.finishNode(new AST.BinaryExpression({left:st,operator:",",right:it}),k)}if(this.match(_tokenizer.TokenType.IN))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_IN);if(this.matchContextualKeyword("of"))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);return this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(d=this.parseExpression()),new AST.ForStatement({init:st,test:c,update:d,body:this.getIteratorStatementEpilogue()})}},{key:"getIteratorStatementEpilogue",value:function(){this.expect(_tokenizer.TokenType.RPAREN);var a=this.parseStatement();return a}},{key:"parseIfStatementChild",value:function(){return this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement()}},{key:"parseIfStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseIfStatementChild(),d=null;return this.eat(_tokenizer.TokenType.ELSE)&&(d=this.parseIfStatementChild()),new AST.IfStatement({test:a,consequent:c,alternate:d})}},{key:"parseReturnStatement",value:function(){if(!this.inFunctionBody)throw this.createError(_errors$1.ErrorMessages.ILLEGAL_RETURN);if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ReturnStatement({expression:null});var a=null;return!this.match(_tokenizer.TokenType.RBRACE)&&!this.eof()&&(a=this.parseExpression()),this.consumeSemicolon(),new AST.ReturnStatement({expression:a})}},{key:"parseSwitchStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();if(this.expect(_tokenizer.TokenType.RPAREN),this.expect(_tokenizer.TokenType.LBRACE),this.eat(_tokenizer.TokenType.RBRACE))return new AST.SwitchStatement({discriminant:a,cases:[]});var c=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT)){var d=this.parseSwitchDefault(),_=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT))throw this.createError(_errors$1.ErrorMessages.MULTIPLE_DEFAULTS_IN_SWITCH);return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatementWithDefault({discriminant:a,preDefaultCases:c,defaultCase:d,postDefaultCases:_})}return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatement({discriminant:a,cases:c})}},{key:"parseSwitchCases",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT));)a.push(this.parseSwitchCase());return a}},{key:"parseSwitchCase",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.CASE),this.finishNode(new AST.SwitchCase({test:this.parseExpression(),consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchDefault",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.DEFAULT),this.finishNode(new AST.SwitchDefault({consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchCaseBody",value:function(){return this.expect(_tokenizer.TokenType.COLON),this.parseStatementListInSwitchCaseBody()}},{key:"parseStatementListInSwitchCaseBody",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT)||this.match(_tokenizer.TokenType.CASE));)a.push(this.parseStatementListItem());return a}},{key:"parseThrowStatement",value:function(){var a=this.lex();if(this.hasLineTerminatorBeforeNext)throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.NEWLINE_AFTER_THROW);var c=this.parseExpression();return this.consumeSemicolon(),new AST.ThrowStatement({expression:c})}},{key:"parseTryStatement",value:function(){this.lex();var a=this.parseBlock();if(this.match(_tokenizer.TokenType.CATCH)){var c=this.parseCatchClause();if(this.eat(_tokenizer.TokenType.FINALLY)){var d=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:c,finalizer:d})}return new AST.TryCatchStatement({body:a,catchClause:c})}if(this.eat(_tokenizer.TokenType.FINALLY)){var _=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:null,finalizer:_})}throw this.createError(_errors$1.ErrorMessages.NO_CATCH_OR_FINALLY)}},{key:"parseVariableDeclarationStatement",value:function(){var a=this.parseVariableDeclaration(!0);return this.consumeSemicolon(),new AST.VariableDeclarationStatement({declaration:a})}},{key:"parseWhileStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression(),c=this.getIteratorStatementEpilogue();return new AST.WhileStatement({test:a,body:c})}},{key:"parseWithStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseStatement();return new AST.WithStatement({object:a,body:c})}},{key:"parseCatchClause",value:function(){var a=this.startNode();if(this.lex(),this.expect(_tokenizer.TokenType.LPAREN),this.match(_tokenizer.TokenType.RPAREN)||this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var c=this.parseBindingTarget();this.expect(_tokenizer.TokenType.RPAREN);var d=this.parseBlock();return this.finishNode(new AST.CatchClause({binding:c,body:d}),a)}},{key:"parseBlock",value:function(){var a=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);for(var c=[];!this.match(_tokenizer.TokenType.RBRACE);)c.push(this.parseStatementListItem());return this.expect(_tokenizer.TokenType.RBRACE),this.finishNode(new AST.Block({statements:c}),a)}},{key:"parseVariableDeclaration",value:function(a){var c=this.startNode(),d=this.lex(),_=d.type===_tokenizer.TokenType.VAR?"var":d.type===_tokenizer.TokenType.CONST?"const":"let",b=this.parseVariableDeclaratorList(a);return this.finishNode(new AST.VariableDeclaration({kind:_,declarators:b}),c)}},{key:"parseVariableDeclaratorList",value:function(a){var c=[];do c.push(this.parseVariableDeclarator(a));while(this.eat(_tokenizer.TokenType.COMMA));return c}},{key:"parseVariableDeclarator",value:function(a){var c=this.startNode();if(this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var d=this.allowIn;this.allowIn=!0;var _=this.parseBindingTarget();this.allowIn=d,a&&_.type!=="BindingIdentifier"&&!this.match(_tokenizer.TokenType.ASSIGN)&&this.expect(_tokenizer.TokenType.ASSIGN);var b=null;return this.eat(_tokenizer.TokenType.ASSIGN)&&(b=this.parseAssignmentExpression()),this.finishNode(new AST.VariableDeclarator({binding:_,init:b}),c)}},{key:"isolateCoverGrammar",value:function(a){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;if(this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=a.call(this),this.firstExprError!==null)throw this.firstExprError;return this.isBindingElement=c,this.isAssignmentTarget=d,this.firstExprError=_,b}},{key:"inheritCoverGrammar",value:function(a){var c=this.isBindingElement,d=this.isAssignmentTarget,_=this.firstExprError,b=void 0;return this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,b=a.call(this),this.isBindingElement=this.isBindingElement&&c,this.isAssignmentTarget=this.isAssignmentTarget&&d,this.firstExprError=_||this.firstExprError,b}},{key:"parseExpression",value:function(){var a=this.startNode(),c=this.parseAssignmentExpression();if(this.match(_tokenizer.TokenType.COMMA))for(;!this.eof()&&this.match(_tokenizer.TokenType.COMMA);){this.lex();var d=this.parseAssignmentExpression();c=this.finishNode(new AST.BinaryExpression({left:c,operator:",",right:d}),a)}return c}},{key:"finishArrowParams",value:function(a){var c=a.params,d=c===void 0?null:c,_=a.rest,b=_===void 0?null:_;if(a.type!==ARROW_EXPRESSION_PARAMS)if(a.type==="IdentifierExpression")d=[this.targetToBinding(this.transformDestructuring(a))];else throw this.createUnexpected(this.lookahead);return this.copyNode(a,new AST.FormalParameters({items:d,rest:b}))}},{key:"parseArrowExpressionTail",value:function(a,c,d){this.expect(_tokenizer.TokenType.ARROW);var _=this.allowYieldExpression,b=this.allowAwaitExpression,k=this.firstAwaitLocation;this.allowYieldExpression=!1,this.allowAwaitExpression=c,this.firstAwaitLocation=null;var $=void 0;if(this.match(_tokenizer.TokenType.LBRACE)){var j=this.allowIn;this.allowIn=!0,$=this.parseFunctionBody(),this.allowIn=j}else $=this.parseAssignmentExpression();return this.allowYieldExpression=_,this.allowAwaitExpression=b,this.firstAwaitLocation=k,this.finishNode(new AST.ArrowExpression({isAsync:c,params:a,body:$}),d)}},{key:"parseAssignmentExpression",value:function(){return this.isolateCoverGrammar(this.parseAssignmentExpressionOrTarget)}},{key:"parseAssignmentExpressionOrTarget",value:function(){var a=this.startNode();if(this.allowYieldExpression&&this.match(_tokenizer.TokenType.YIELD))return this.isBindingElement=this.isAssignmentTarget=!1,this.parseYieldExpression();var c=this.parseConditionalExpression();if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){this.isBindingElement=this.isAssignmentTarget=!1,this.firstExprError=null;var d=c.type===ARROW_EXPRESSION_PARAMS&&c.isAsync;return this.parseArrowExpressionTail(this.finishArrowParams(c),d,a)}var _=!1,b=this.lookahead;switch(b.type){case _tokenizer.TokenType.ASSIGN_BIT_OR:case _tokenizer.TokenType.ASSIGN_BIT_XOR:case _tokenizer.TokenType.ASSIGN_BIT_AND:case _tokenizer.TokenType.ASSIGN_SHL:case _tokenizer.TokenType.ASSIGN_SHR:case _tokenizer.TokenType.ASSIGN_SHR_UNSIGNED:case _tokenizer.TokenType.ASSIGN_ADD:case _tokenizer.TokenType.ASSIGN_SUB:case _tokenizer.TokenType.ASSIGN_MUL:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.ASSIGN_MOD:case _tokenizer.TokenType.ASSIGN_EXP:_=!0;break}if(_){if(!this.isAssignmentTarget||!isValidSimpleAssignmentTarget(c))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else if(b.type===_tokenizer.TokenType.ASSIGN){if(!this.isAssignmentTarget)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else return c;this.lex();var k=this.parseAssignmentExpression();this.firstExprError=null;var $=void 0;return b.type===_tokenizer.TokenType.ASSIGN?$=new AST.AssignmentExpression({binding:c,expression:k}):($=new AST.CompoundAssignmentExpression({binding:c,operator:b.type.name,expression:k}),this.isBindingElement=this.isAssignmentTarget=!1),this.finishNode($,a)}},{key:"targetToBinding",value:function(a){var c=this;if(a===null)return null;switch(a.type){case"AssignmentTargetIdentifier":return this.copyNode(a,new AST.BindingIdentifier({name:a.name}));case"ArrayAssignmentTarget":return this.copyNode(a,new AST.ArrayBinding({elements:a.elements.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(a.rest)}));case"ObjectAssignmentTarget":return this.copyNode(a,new AST.ObjectBinding({properties:a.properties.map(function(d){return c.targetToBinding(d)}),rest:this.targetToBinding(a.rest)}));case"AssignmentTargetPropertyIdentifier":return this.copyNode(a,new AST.BindingPropertyIdentifier({binding:this.targetToBinding(a.binding),init:a.init}));case"AssignmentTargetPropertyProperty":return this.copyNode(a,new AST.BindingPropertyProperty({name:a.name,binding:this.targetToBinding(a.binding)}));case"AssignmentTargetWithDefault":return this.copyNode(a,new AST.BindingWithDefault({binding:this.targetToBinding(a.binding),init:a.init}))}throw new Error("Not reached")}},{key:"transformDestructuring",value:function(a){var c=this;switch(a.type){case"DataProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyProperty({name:a.name,binding:this.transformDestructuringWithDefault(a.expression)}));case"ShorthandProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyIdentifier({binding:this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name.name})),init:null}));case"ObjectExpression":{var d=a.properties.length>0?a.properties[a.properties.length-1]:void 0;return d!=null&&d.type==="SpreadProperty"?this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.transformDestructuring(d.expression)})):this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"ArrayExpression":{var _=a.elements[a.elements.length-1];return _!=null&&_.type==="SpreadElement"?this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.slice(0,-1).map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:this.copyNode(_.expression,this.transformDestructuring(_.expression))})):this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.map(function(b){return b&&c.transformDestructuringWithDefault(b)}),rest:null}))}case"IdentifierExpression":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name}));case"StaticPropertyName":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.value}));case"ComputedMemberExpression":return this.copyNode(a,new AST.ComputedMemberAssignmentTarget({object:a.object,expression:a.expression}));case"StaticMemberExpression":return this.copyNode(a,new AST.StaticMemberAssignmentTarget({object:a.object,property:a.property}));case"ArrayAssignmentTarget":case"ObjectAssignmentTarget":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":case"AssignmentTargetIdentifier":case"AssignmentTargetPropertyIdentifier":case"AssignmentTargetPropertyProperty":case"AssignmentTargetWithDefault":return a}throw new Error("Not reached")}},{key:"transformDestructuringWithDefault",value:function(a){switch(a.type){case"AssignmentExpression":return this.copyNode(a,new AST.AssignmentTargetWithDefault({binding:this.transformDestructuring(a.binding),init:a.expression}))}return this.transformDestructuring(a)}},{key:"lookaheadAssignmentExpression",value:function(){if(this.matchIdentifier())return!0;switch(this.lookahead.type){case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.CLASS:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.FALSE:case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.INC:case _tokenizer.TokenType.LBRACE:case _tokenizer.TokenType.LBRACK:case _tokenizer.TokenType.LPAREN:case _tokenizer.TokenType.NEW:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.NULL:case _tokenizer.TokenType.NUMBER:case _tokenizer.TokenType.STRING:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.SUPER:case _tokenizer.TokenType.THIS:case _tokenizer.TokenType.TRUE:case _tokenizer.TokenType.TYPEOF:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TEMPLATE:return!0}return!1}},{key:"parseYieldExpression",value:function(){var a=this.startNode();if(this.lex(),this.hasLineTerminatorBeforeNext)return this.finishNode(new AST.YieldExpression({expression:null}),a);var c=!!this.eat(_tokenizer.TokenType.MUL),d=null;(c||this.lookaheadAssignmentExpression())&&(d=this.parseAssignmentExpression());var _=c?AST.YieldGeneratorExpression:AST.YieldExpression;return this.finishNode(new _({expression:d}),a)}},{key:"parseConditionalExpression",value:function(){var a=this.startNode(),c=this.parseBinaryExpression();if(this.firstExprError)return c;if(this.eat(_tokenizer.TokenType.CONDITIONAL)){this.isBindingElement=this.isAssignmentTarget=!1;var d=this.allowIn;this.allowIn=!0;var _=this.isolateCoverGrammar(this.parseAssignmentExpression);this.allowIn=d,this.expect(_tokenizer.TokenType.COLON);var b=this.isolateCoverGrammar(this.parseAssignmentExpression);return this.finishNode(new AST.ConditionalExpression({test:c,consequent:_,alternate:b}),a)}return c}},{key:"isBinaryOperator",value:function(a){switch(a){case _tokenizer.TokenType.OR:case _tokenizer.TokenType.AND:case _tokenizer.TokenType.BIT_OR:case _tokenizer.TokenType.BIT_XOR:case _tokenizer.TokenType.BIT_AND:case _tokenizer.TokenType.EQ:case _tokenizer.TokenType.NE:case _tokenizer.TokenType.EQ_STRICT:case _tokenizer.TokenType.NE_STRICT:case _tokenizer.TokenType.LT:case _tokenizer.TokenType.GT:case _tokenizer.TokenType.LTE:case _tokenizer.TokenType.GTE:case _tokenizer.TokenType.INSTANCEOF:case _tokenizer.TokenType.SHL:case _tokenizer.TokenType.SHR:case _tokenizer.TokenType.SHR_UNSIGNED:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.MUL:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.MOD:return!0;case _tokenizer.TokenType.IN:return this.allowIn;default:return!1}}},{key:"parseBinaryExpression",value:function(){var a=this,c=this.startNode(),d=this.parseExponentiationExpression();if(this.firstExprError)return d;var _=this.lookahead.type;if(!this.isBinaryOperator(_))return d;this.isBindingElement=this.isAssignmentTarget=!1,this.lex();var b=[];b.push({startState:c,left:d,operator:_,precedence:BinaryPrecedence$1[_.name]}),c=this.startNode();var k=this.isolateCoverGrammar(this.parseExponentiationExpression);for(_=this.lookahead.type;this.isBinaryOperator(_);){for(var $=BinaryPrecedence$1[_.name];b.length&&$<=b[b.length-1].precedence;){var j=b[b.length-1],_e=j.operator;d=j.left,b.pop(),c=j.startState,k=this.finishNode(new AST.BinaryExpression({left:d,operator:_e.name,right:k}),c)}this.lex(),b.push({startState:c,left:k,operator:_,precedence:$}),c=this.startNode(),k=this.isolateCoverGrammar(this.parseExponentiationExpression),_=this.lookahead.type}return b.reduceRight(function(et,tt){return a.finishNode(new AST.BinaryExpression({left:tt.left,operator:tt.operator.name,right:et}),tt.startState)},k)}},{key:"parseExponentiationExpression",value:function(){var a=this.startNode(),c=this.lookahead.type===_tokenizer.TokenType.LPAREN,d=this.parseUnaryExpression();if(this.lookahead.type!==_tokenizer.TokenType.EXP)return d;if(d.type==="UnaryExpression"&&!c)throw this.createError(_errors$1.ErrorMessages.INVALID_EXPONENTIATION_LHS);this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=this.isolateCoverGrammar(this.parseExponentiationExpression);return this.finishNode(new AST.BinaryExpression({left:d,operator:"**",right:_}),a)}},{key:"parseUnaryExpression",value:function(){if(this.lookahead.type.klass!==_tokenizer.TokenClass.Punctuator&&this.lookahead.type.klass!==_tokenizer.TokenClass.Keyword)return this.parseUpdateExpression();var a=this.startNode();if(this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT)){this.isBindingElement=this.isAssignmentTarget=!1;var c=this.isolateCoverGrammar(this.parseUnaryExpression);return this.finishNode(new AST.AwaitExpression({expression:c}),a)}var d=this.lookahead;if(!isPrefixOperator(d))return this.parseUpdateExpression();this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var _=void 0;if(isUpdateOperator(d)){var b=this.getLocation(),k=this.isolateCoverGrammar(this.parseUnaryExpression);if(!isValidSimpleAssignmentTarget(k))throw this.createErrorWithLocation(b,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);k=this.transformDestructuring(k),_=new AST.UpdateExpression({isPrefix:!0,operator:d.value,operand:k})}else{var $=this.isolateCoverGrammar(this.parseUnaryExpression);_=new AST.UnaryExpression({operator:d.value,operand:$})}return this.finishNode(_,a)}},{key:"parseUpdateExpression",value:function(){var a=this.getLocation(),c=this.startNode(),d=this.parseLeftHandSideExpression({allowCall:!0});if(this.firstExprError||this.hasLineTerminatorBeforeNext)return d;var _=this.lookahead;if(!isUpdateOperator(_))return d;if(this.lex(),this.isBindingElement=this.isAssignmentTarget=!1,!isValidSimpleAssignmentTarget(d))throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);return d=this.transformDestructuring(d),this.finishNode(new AST.UpdateExpression({isPrefix:!1,operator:_.value,operand:d}),c)}},{key:"parseLeftHandSideExpression",value:function(a){var c=this,d=a.allowCall,_=this.startNode(),b=this.allowIn;this.allowIn=!0;var k=void 0,$=this.lookahead;if(this.eat(_tokenizer.TokenType.SUPER))if(this.isBindingElement=!1,this.isAssignmentTarget=!1,k=this.finishNode(new AST.Super,_),this.match(_tokenizer.TokenType.LPAREN))if(d)k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.LBRACK))k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_),this.isAssignmentTarget=!0;else if(this.match(_tokenizer.TokenType.PERIOD))k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_),this.isAssignmentTarget=!0;else throw this.createUnexpected($);else if(this.match(_tokenizer.TokenType.NEW))this.isBindingElement=this.isAssignmentTarget=!1,k=this.parseNewExpression();else if(this.match(_tokenizer.TokenType.ASYNC)){if(k=this.parsePrimaryExpression(),k.type==="IdentifierExpression"&&d&&!this.hasLineTerminatorBeforeNext){if(this.matchIdentifier()){var j=this.startNode(),_e=this.allowAwaitExpression;this.allowAwaitExpression=!0;var et=this.parseBindingIdentifier();return this.allowAwaitExpression=_e,this.ensureArrow(),this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:[et],rest:null,isAsync:!0},j)}if(this.match(_tokenizer.TokenType.LPAREN)){var tt=this.startNode(),nt=this.firstAwaitLocation;this.firstAwaitLocation=null;var st=this.parseArgumentList(),rt=st.args,it=st.locationFollowingFirstSpread;if(this.isBindingElement&&!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){if(it!==null)throw this.createErrorWithLocation(it,_errors$1.ErrorMessages.UNEXPECTED_TOKEN(","));if(this.firstAwaitLocation!==null)throw this.createErrorWithLocation(this.firstAwaitLocation,_errors$1.ErrorMessages.NO_AWAIT_IN_ASYNC_PARAMS);var at=null;if(rt.length>0&&rt[rt.length-1].type==="SpreadElement"){if(at=this.targetToBinding(this.transformDestructuringWithDefault(rt[rt.length-1].expression)),at.init!=null)throw this.createError(_errors$1.ErrorMessages.UNEXPECTED_REST_PARAMETERS_INITIALIZATION);rt=rt.slice(0,-1)}var ot=rt.map(function(ht){return c.targetToBinding(c.transformDestructuringWithDefault(ht))});return this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:ot,rest:at,isAsync:!0},tt)}this.firstAwaitLocation=nt||this.firstAwaitLocation,this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:rt}),_)}}}else if(k=this.parsePrimaryExpression(),this.firstExprError)return k;for(;;)if(d&&this.match(_tokenizer.TokenType.LPAREN))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.CallExpression({callee:k,arguments:this.parseArgumentList().args}),_);else if(this.match(_tokenizer.TokenType.LBRACK))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.ComputedMemberExpression({object:k,expression:this.parseComputedMember()}),_);else if(this.match(_tokenizer.TokenType.PERIOD))this.isBindingElement=!1,this.isAssignmentTarget=!0,k=this.finishNode(new AST.StaticMemberExpression({object:k,property:this.parseStaticMember()}),_);else if(this.match(_tokenizer.TokenType.TEMPLATE))this.isBindingElement=this.isAssignmentTarget=!1,k=this.finishNode(new AST.TemplateExpression({tag:k,elements:this.parseTemplateElements()}),_);else break;return this.allowIn=b,k}},{key:"parseTemplateElements",value:function(){var a=this.startNode(),c=this.lookahead;if(c.tail)return this.lex(),[this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)];for(var d=[this.finishNode(new AST.TemplateElement({rawValue:this.lex().slice.text.slice(1,-2)}),a)];;){if(d.push(this.parseExpression()),!this.match(_tokenizer.TokenType.RBRACE))throw this.createILLEGAL();if(this.index=this.startIndex,this.line=this.startLine,this.lineStart=this.startLineStart,this.lookahead=this.scanTemplateElement(),a=this.startNode(),c=this.lex(),c.tail)return d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)),d;d.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-2)}),a))}}},{key:"parseStaticMember",value:function(){if(this.lex(),this.lookahead.type.klass.isIdentifierName)return this.lex().value;throw this.createUnexpected(this.lookahead)}},{key:"parseComputedMember",value:function(){this.lex();var a=this.parseExpression();return this.expect(_tokenizer.TokenType.RBRACK),a}},{key:"parseNewExpression",value:function(){var a=this,c=this.startNode();if(this.lex(),this.eat(_tokenizer.TokenType.PERIOD))return this.expectContextualKeyword("target"),this.finishNode(new AST.NewTargetExpression,c);var d=this.isolateCoverGrammar(function(){return a.parseLeftHandSideExpression({allowCall:!1})});return this.finishNode(new AST.NewExpression({callee:d,arguments:this.match(_tokenizer.TokenType.LPAREN)?this.parseArgumentList().args:[]}),c)}},{key:"parseRegexFlags",value:function(a){for(var c=!1,d=!1,_=!1,b=!1,k=!1,$=!1,j=0;j1?e-1:0),a=1;a1&&c.slice(1).forEach(function(d){a.addError(s(d))})}),this}},{key:"enforceConflictingLexicallyDeclaredNames",value:function(s,a){var c=this;return this.lexicallyDeclaredNames.forEachEntry(function(d,_){s.has(_)&&d.forEach(function(b){c.addError(a(b))})}),this}},{key:"observeFunctionDeclaration",value:function(){return this.observeVarBoundary(),addEach(this.functionDeclarationNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"functionDeclarationNamesAreLexical",value:function(){return addEach(this.lexicallyDeclaredNames,this.functionDeclarationNames),this.functionDeclarationNames=new _multimap2.default,this}},{key:"observeVarDeclaration",value:function(){return addEach(this.varDeclaredNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"recordForOfVars",value:function(){var s=this;return this.varDeclaredNames.forEach(function(a){s.forOfVarDeclaredNames.push(a)}),this}},{key:"observeVarBoundary",value:function(){return this.lexicallyDeclaredNames=new _multimap2.default,this.functionDeclarationNames=new _multimap2.default,this.varDeclaredNames=new _multimap2.default,this.forOfVarDeclaredNames=[],this}},{key:"exportName",value:function(s,a){return this.exportedNames.set(s,a),this}},{key:"exportDeclaredNames",value:function(){return addEach(this.exportedNames,this.lexicallyDeclaredNames,this.varDeclaredNames),addEach(this.exportedBindings,this.lexicallyDeclaredNames,this.varDeclaredNames),this}},{key:"exportBinding",value:function(s,a){return this.exportedBindings.set(s,a),this}},{key:"clearExportedBindings",value:function(){return this.exportedBindings=new _multimap2.default,this}},{key:"observeYieldExpression",value:function(s){return this.yieldExpressions.push(s),this}},{key:"clearYieldExpressions",value:function(){return this.yieldExpressions=[],this}},{key:"observeAwaitExpression",value:function(s){return this.awaitExpressions.push(s),this}},{key:"clearAwaitExpressions",value:function(){return this.awaitExpressions=[],this}},{key:"addError",value:function(s){return this.errors.push(s),this}},{key:"addStrictError",value:function(s){return this.strictErrors.push(s),this}},{key:"enforceStrictErrors",value:function(){return[].push.apply(this.errors,this.strictErrors),this.strictErrors=[],this}},{key:"concat",value:function(s){return this===identity?s:s===identity?this:([].push.apply(this.errors,s.errors),[].push.apply(this.strictErrors,s.strictErrors),[].push.apply(this.usedLabelNames,s.usedLabelNames),[].push.apply(this.freeBreakStatements,s.freeBreakStatements),[].push.apply(this.freeContinueStatements,s.freeContinueStatements),[].push.apply(this.freeLabeledBreakStatements,s.freeLabeledBreakStatements),[].push.apply(this.freeLabeledContinueStatements,s.freeLabeledContinueStatements),[].push.apply(this.newTargetExpressions,s.newTargetExpressions),addEach(this.boundNames,s.boundNames),addEach(this.lexicallyDeclaredNames,s.lexicallyDeclaredNames),addEach(this.functionDeclarationNames,s.functionDeclarationNames),addEach(this.varDeclaredNames,s.varDeclaredNames),[].push.apply(this.forOfVarDeclaredNames,s.forOfVarDeclaredNames),addEach(this.exportedNames,s.exportedNames),addEach(this.exportedBindings,s.exportedBindings),[].push.apply(this.superCallExpressions,s.superCallExpressions),[].push.apply(this.superCallExpressionsInConstructorMethod,s.superCallExpressionsInConstructorMethod),[].push.apply(this.superPropertyExpressions,s.superPropertyExpressions),[].push.apply(this.yieldExpressions,s.yieldExpressions),[].push.apply(this.awaitExpressions,s.awaitExpressions),this)}}],[{key:"empty",value:function(){return identity}}]),o}();identity=new EarlyErrorState;Object.getOwnPropertyNames(EarlyErrorState.prototype).forEach(function(o){o!=="constructor"&&Object.defineProperty(identity,o,{value:function(){return EarlyErrorState.prototype[o].apply(new EarlyErrorState,arguments)},enumerable:!1,writable:!0,configurable:!0})});earlyErrorState.EarlyError=function(o){_inherits$4(e,o);function e(s,a){_classCallCheck$7(this,e);var c=_possibleConstructorReturn$4(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,a));return c.node=s,c.message=a,c}return e}(Error);Object.defineProperty(earlyErrors,"__esModule",{value:!0});earlyErrors.EarlyErrorChecker=void 0;var _createClass$5=function(){function o(e,s){for(var a=0;a1&&s.slice(1).forEach(function(a){e=e.addError(new _earlyErrorState.EarlyError(a,"Duplicate constructor method in class"))}),e}var SUPERCALL_ERROR=function o(e){return new _earlyErrorState.EarlyError(e,_errors.ErrorMessages.ILLEGAL_SUPER_CALL)},SUPERPROPERTY_ERROR=function o(e){return new _earlyErrorState.EarlyError(e,"Member access on super must be in a method")},DUPLICATE_BINDING=function o(e){return new _earlyErrorState.EarlyError(e,"Duplicate binding "+JSON.stringify(e.name))},FREE_CONTINUE=function o(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement")},UNBOUND_CONTINUE=function o(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e.label))},FREE_BREAK=function o(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within an iteration statement or a switch statement")},UNBOUND_BREAK=function o(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within a statement with label "+JSON.stringify(e.label))};earlyErrors.EarlyErrorChecker=function(o){_inherits$3(e,o);function e(){return _classCallCheck$6(this,e),_possibleConstructorReturn$3(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,_earlyErrorState.EarlyErrorState))}return _createClass$5(e,[{key:"reduceAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceAssignmentTargetIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c}},{key:"reduceArrowExpression",value:function(a,c){var d=c.params,_=c.body,b=a.params.rest==null&&a.params.items.every(function($){return $.type==="BindingIdentifier"});d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a.body.type==="FunctionBody"&&(_=_.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors(),_=_.enforceStrictErrors())),d.yieldExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain yield expressions"))}),d.awaitExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Arrow parameters must not contain await expressions"))});var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceArrowExpression",this).call(this,a,{params:d,body:_});return!b&&a.body.type==="FunctionBody"&&isStrictFunctionBody(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),k=k.clearYieldExpressions(),k=k.clearAwaitExpressions(),k=k.observeVarBoundary(),k}},{key:"reduceAwaitExpression",value:function(a,c){var d=c.expression;return d.observeAwaitExpression(a)}},{key:"reduceBindingIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c=c.bindName(a.name,a),c}},{key:"reduceBlock",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBlock",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a=a.observeLexicalBoundary(),a}},{key:"reduceBreakStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBreakStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeBreakStatement(a):c.addFreeLabeledBreakStatement(a),c}},{key:"reduceCallExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCallExpression",this).apply(this,arguments);return a.callee.type==="Super"&&(c=c.observeSuperCallExpression(a)),c}},{key:"reduceCatchClause",value:function(a,c){var d=c.binding,_=c.body;d=d.observeLexicalDeclaration(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(_.previousLexicallyDeclaredNames,DUPLICATE_BINDING),d.lexicallyDeclaredNames.forEachEntry(function(k,$){_.varDeclaredNames.has($)&&_.varDeclaredNames.get($).forEach(function(j){_.forOfVarDeclaredNames.indexOf(j)>=0&&(d=d.addError(DUPLICATE_BINDING(j)))})});var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCatchClause",this).call(this,a,{binding:d,body:_});return b=b.observeLexicalBoundary(),b}},{key:"reduceClassDeclaration",value:function(a,c){var d=c.name,_=c.super,b=c.elements,k=d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),a.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(a,k),k=k.observeLexicalDeclaration(),k}},{key:"reduceClassElement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceClassElement",this).apply(this,arguments);return!a.isStatic&&isSpecialMethod(a.method)&&(c=c.addError(new _earlyErrorState.EarlyError(a,_errors.ErrorMessages.ILLEGAL_CONSTRUCTORS))),a.isStatic&&a.method.name.type==="StaticPropertyName"&&a.method.name.value==="prototype"&&(c=c.addError(new _earlyErrorState.EarlyError(a,'Static class methods cannot be named "prototype"'))),c}},{key:"reduceClassExpression",value:function(a,c){var d=c.name,_=c.super,b=c.elements,k=a.name==null?this.identity:d.enforceStrictErrors(),$=this.append.apply(this,_toConsumableArray$3(b));return $=$.enforceStrictErrors(),a.super!=null&&(_=_.enforceStrictErrors(),k=this.append(k,_),$=$.clearSuperCallExpressionsInConstructorMethod()),k=this.append(k,$),k=enforceDuplicateConstructorMethods(a,k),k=k.clearBoundNames(),k}},{key:"reduceCompoundAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCompoundAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceComputedMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceComputedMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceContinueStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceContinueStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeContinueStatement(a):c.addFreeLabeledContinueStatement(a),c}},{key:"reduceDoWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceDoWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a do-while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements(),c=c.clearFreeBreakStatements(),c}},{key:"reduceExport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExport",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.exportDeclaredNames(),a}},{key:"reduceExportFrom",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFrom",this).apply(this,arguments);return a=a.clearExportedBindings(),a}},{key:"reduceExportFromSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFromSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name,a),c=c.exportBinding(a.name,a),c}},{key:"reduceExportLocalSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportLocalSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name.name,a),c=c.exportBinding(a.name.name,a),c}},{key:"reduceExportDefault",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportDefault",this).apply(this,arguments);return c=c.functionDeclarationNamesAreLexical(),c=c.exportName("default",a),c}},{key:"reduceFormalParameters",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFormalParameters",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceForStatement",value:function(a,c){var d=c.init,_=c.test,b=c.update,k=c.body;d!=null&&(d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(k.varDeclaredNames,DUPLICATE_BINDING));var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForStatement",this).call(this,a,{init:d,test:_,update:b,body:k});return a.init!=null&&a.init.type==="VariableDeclaration"&&a.init.kind==="const"&&a.init.declarators.forEach(function(j){j.init==null&&($=$.addError(new _earlyErrorState.EarlyError(j,"Constant lexical declarations must have an initialiser")))}),isLabelledFunction(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for statement must not be a labeled function declaration"))),$=$.clearFreeContinueStatements(),$=$.clearFreeBreakStatements(),$=$.observeLexicalBoundary(),$}},{key:"reduceForInStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForInStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-in statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForOfStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-of statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceForAwaitStatement",value:function(a,c){var d=c.left,_=c.right,b=c.body;d=d.recordForOfVars(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),d=d.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING);var k=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:d,right:_,body:b});return isLabelledFunction(a.body)&&(k=k.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-await statement must not be a labeled function declaration"))),k=k.clearFreeContinueStatements(),k=k.clearFreeBreakStatements(),k=k.observeLexicalBoundary(),k}},{key:"reduceFunctionBody",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionBody",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.clearUsedLabelNames(),c=c.clearYieldExpressions(),c=c.clearAwaitExpressions(),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceFunctionDeclaration",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||a.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e){_e.length>1&&_e.slice(1).forEach(function(et){_=_[$](DUPLICATE_BINDING(et))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionDeclaration",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&(j=j.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeFunctionDeclaration(),j}},{key:"reduceFunctionExpression",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(_e){return _e.type==="BindingIdentifier"}),$=!k||a.isGenerator?"addError":"addStrictError";_.lexicallyDeclaredNames.forEachEntry(function(_e,et){_e.length>1&&_e.slice(1).forEach(function(tt){_=_[$](new _earlyErrorState.EarlyError(tt,"Duplicate binding "+JSON.stringify(et)))})}),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&_.yieldExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(_e){_=_.addError(new _earlyErrorState.EarlyError(_e,"Async function parameters must not contain await expressions"))}),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var j=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionExpression",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&(j=j.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),j=j.clearBoundNames(),j=j.clearYieldExpressions(),j=j.clearAwaitExpressions(),j=j.observeVarBoundary(),j}},{key:"reduceGetter",value:function(a,c){var d=c.name,_=c.body;_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors());var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceGetter",this).call(this,a,{name:d,body:_});return b=b.observeVarBoundary(),b}},{key:"reduceIdentifierExpression",value:function(a){var c=this.identity;return(0,_utils.isStrictModeReservedWord)(a.name)&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in expression position in strict mode"))),c}},{key:"reduceIfStatement",value:function(a,c){var d=c.test,_=c.consequent,b=c.alternate;return isLabelledFunction(a.consequent)&&(_=_.addError(new _earlyErrorState.EarlyError(a.consequent,"The consequent of an if statement must not be a labeled function declaration"))),a.alternate!=null&&isLabelledFunction(a.alternate)&&(b=b.addError(new _earlyErrorState.EarlyError(a.alternate,"The alternate of an if statement must not be a labeled function declaration"))),a.consequent.type==="FunctionDeclaration"&&(_=_.addStrictError(new _earlyErrorState.EarlyError(a.consequent,"FunctionDeclarations in IfStatements are disallowed in strict mode")),_=_.observeLexicalBoundary()),a.alternate!=null&&a.alternate.type==="FunctionDeclaration"&&(b=b.addStrictError(new _earlyErrorState.EarlyError(a.alternate,"FunctionDeclarations in IfStatements are disallowed in strict mode")),b=b.observeLexicalBoundary()),_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceIfStatement",this).call(this,a,{test:d,consequent:_,alternate:b})}},{key:"reduceImport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImport",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceImportNamespace",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImportNamespace",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceLabeledStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceLabeledStatement",this).apply(this,arguments);return(a.label==="yield"||(0,_utils.isStrictModeReservedWord)(a.label))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.label)+" must not be in label position in strict mode"))),c.usedLabelNames.indexOf(a.label)>=0&&(c=c.addError(new _earlyErrorState.EarlyError(a,"Label "+JSON.stringify(a.label)+" has already been declared"))),a.body.type==="FunctionDeclaration"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Labeled FunctionDeclarations are disallowed in strict mode"))),c=isIterationStatement(a.body)?c.observeIterationLabel(a.label):c.observeNonIterationLabel(a.label),c}},{key:"reduceLiteralRegExpExpression",value:function(){var a=this.identity;return a}},{key:"reduceMethod",value:function(a,c){var d=c.name,_=c.params,b=c.body,k=a.params.rest==null&&a.params.items.every(function(j){return j.type==="BindingIdentifier"});_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),a.name.type==="StaticPropertyName"&&a.name.value==="constructor"?(b=b.observeConstructorMethod(),_=_.observeConstructorMethod()):(b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR)),a.isGenerator&&_.yieldExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Generator parameters must not contain yield expressions"))}),a.isAsync&&_.awaitExpressions.forEach(function(j){_=_.addError(new _earlyErrorState.EarlyError(j,"Async function parameters must not contain await expressions"))}),b=b.clearSuperPropertyExpressions(),_=_.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceMethod",this).call(this,a,{name:d,params:_,body:b});return!k&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.clearYieldExpressions(),$=$.clearAwaitExpressions(),$=$.observeVarBoundary(),$}},{key:"reduceModule",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceModule",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a.exportedNames.forEachEntry(function(c,d){c.length>1&&c.slice(1).forEach(function(_){a=a.addError(new _earlyErrorState.EarlyError(_,"Duplicate export "+JSON.stringify(d)))})}),a.exportedBindings.forEachEntry(function(c,d){!a.lexicallyDeclaredNames.has(d)&&!a.varDeclaredNames.has(d)&&c.forEach(function(_){a=a.addError(new _earlyErrorState.EarlyError(_,"Exported binding "+JSON.stringify(d)+" is not declared"))})}),a.newTargetExpressions.forEach(function(c){a=a.addError(new _earlyErrorState.EarlyError(c,"new.target must be within function (but not arrow expression) code"))}),a=a.enforceFreeContinueStatementErrors(FREE_CONTINUE),a=a.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),a=a.enforceFreeBreakStatementErrors(FREE_BREAK),a=a.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),a=a.enforceSuperCallExpressions(SUPERCALL_ERROR),a=a.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a=a.enforceStrictErrors(),a}},{key:"reduceNewTargetExpression",value:function(a){return this.identity.observeNewTargetExpression(a)}},{key:"reduceObjectExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceObjectExpression",this).apply(this,arguments);c=c.enforceSuperCallExpressionsInConstructorMethod(SUPERCALL_ERROR);var d=a.properties.filter(function(_){return _.type==="DataProperty"&&_.name.type==="StaticPropertyName"&&_.name.value==="__proto__"});return d.slice(1).forEach(function(_){c=c.addError(new _earlyErrorState.EarlyError(_,"Duplicate __proto__ property in object literal not allowed"))}),c}},{key:"reduceUpdateExpression",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUpdateExpression",this).apply(this,arguments);return a=a.clearBoundNames(),a}},{key:"reduceUnaryExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUnaryExpression",this).apply(this,arguments);return a.operator==="delete"&&a.operand.type==="IdentifierExpression"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Identifier expressions must not be deleted in strict mode"))),c}},{key:"reduceScript",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceScript",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c.newTargetExpressions.forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,"new.target must be within function (but not arrow expression) code"))}),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.enforceSuperCallExpressions(SUPERCALL_ERROR),c=c.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceSetter",value:function(a,c){var d=c.name,_=c.param,b=c.body,k=a.param.type==="BindingIdentifier";_=_.observeLexicalDeclaration(),_=_.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(_.lexicallyDeclaredNames,DUPLICATE_BINDING),_=_.enforceSuperCallExpressions(SUPERCALL_ERROR),b=b.enforceSuperCallExpressions(SUPERCALL_ERROR),_=_.clearSuperPropertyExpressions(),b=b.clearSuperPropertyExpressions(),_=_.clearNewTargetExpressions(),b=b.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(_=_.enforceStrictErrors(),b=b.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceSetter",this).call(this,a,{name:d,param:_,body:b});return!k&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.observeVarBoundary(),$}},{key:"reduceStaticMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceStaticMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceSwitchStatement",value:function(a,c){var d=c.discriminant,_=c.cases,b=this.append.apply(this,_toConsumableArray$3(_));b=b.functionDeclarationNamesAreLexical(),b=b.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING),b=b.observeLexicalBoundary();var k=this.append(d,b);return k=k.clearFreeBreakStatements(),k}},{key:"reduceSwitchStatementWithDefault",value:function(a,c){var d=c.discriminant,_=c.preDefaultCases,b=c.defaultCase,k=c.postDefaultCases,$=this.append.apply(this,[b].concat(_toConsumableArray$3(_),_toConsumableArray$3(k)));$=$.functionDeclarationNamesAreLexical(),$=$.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),$=$.enforceConflictingLexicallyDeclaredNames($.varDeclaredNames,DUPLICATE_BINDING),$=$.observeLexicalBoundary();var j=this.append(d,$);return j=j.clearFreeBreakStatements(),j}},{key:"reduceVariableDeclaration",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclaration",this).apply(this,arguments);switch(a.kind){case"const":case"let":{c=c.observeLexicalDeclaration(),c.lexicallyDeclaredNames.has("let")&&c.lexicallyDeclaredNames.get("let").forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,'Lexical declarations must not have a binding named "let"'))});break}case"var":c=c.observeVarDeclaration();break}return c}},{key:"reduceVariableDeclarationStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclarationStatement",this).apply(this,arguments);return a.declaration.kind==="const"&&a.declaration.declarators.forEach(function(d){d.init==null&&(c=c.addError(new _earlyErrorState.EarlyError(d,"Constant lexical declarations must have an initialiser")))}),c}},{key:"reduceWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements().clearFreeBreakStatements(),c}},{key:"reduceWithStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWithStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a with statement must not be a labeled function declaration"))),c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Strict mode code must not include a with statement")),c}},{key:"reduceYieldExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}},{key:"reduceYieldGeneratorExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldGeneratorExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}}],[{key:"check",value:function(a){return(0,_shiftReducer2.default)(new e,a).errors}}]),e}(_shiftReducer$1.MonoidalReducer);(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.TokenType=o.TokenClass=o.Tokenizer=o.ParserWithLocation=o.GenericParser=o.EarlyErrorChecker=o.parseScriptWithLocation=o.parseModuleWithLocation=o.parseScript=o.parseModule=void 0;var e=function(){function st(rt,it){for(var at=0;at1&&arguments[1]!==void 0?arguments[1]:{},ot=at.earlyErrors,ht=ot===void 0?!0:ot,ct=new c.GenericParser(it),lt=ct[st]();if(ht){var ut=d.EarlyErrorChecker.check(lt);if(ut.length>0)throw new a.JsError(0,1,0,ut[0].message)}return lt}}function tt(st){return function(it){var at=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ot=at.earlyErrors,ht=ot===void 0?!0:ot,ct=new _e(it),lt=ct[st]();if(ht){var ut=d.EarlyErrorChecker.check(lt);if(ut.length>0){var pt=ut[0],dt=pt.node,gt=pt.message,yt=ct.locations.get(dt).start,ft=yt.offset,mt=yt.line,Et=yt.column;throw new a.JsError(ft,mt,Et,gt)}}return{tree:lt,locations:ct.locations,comments:ct.comments}}}o.parseModule=et("parseModule");var nt=o.parseScript=et("parseScript");o.parseModuleWithLocation=tt("parseModule"),o.parseScriptWithLocation=tt("parseScript"),o.default=nt,o.EarlyErrorChecker=d.EarlyErrorChecker,o.GenericParser=c.GenericParser,o.ParserWithLocation=_e})(dist$7);var dist$2={};Object.defineProperty(dist$2,"__esModule",{value:!0});var _default=dist$2.default=function(){var o={},e={typeName:"Boolean"},s={typeName:"Number"},a={typeName:"String"};function c(dn){return{typeName:"Maybe",argument:dn}}function d(dn){return{typeName:"List",argument:dn}}function _(dn){return{typeName:"Const",argument:dn}}function b(){return{typeName:"Union",arguments:[].slice.call(arguments,0)}}var k={typeName:"Enum",values:["ArrayAssignmentTarget","ArrayBinding","ArrayExpression","ArrowExpression","AssignmentExpression","AssignmentTargetIdentifier","AssignmentTargetPropertyIdentifier","AssignmentTargetPropertyProperty","AssignmentTargetWithDefault","AwaitExpression","BinaryExpression","BindingIdentifier","BindingPropertyIdentifier","BindingPropertyProperty","BindingWithDefault","Block","BlockStatement","BreakStatement","CallExpression","CatchClause","ClassDeclaration","ClassElement","ClassExpression","CompoundAssignmentExpression","ComputedMemberAssignmentTarget","ComputedMemberExpression","ComputedPropertyName","ConditionalExpression","ContinueStatement","DataProperty","DebuggerStatement","Directive","DoWhileStatement","EmptyStatement","Export","ExportAllFrom","ExportDefault","ExportFrom","ExportFromSpecifier","ExportLocalSpecifier","ExportLocals","ExpressionStatement","ForAwaitStatement","ForInStatement","ForOfStatement","ForStatement","FormalParameters","FunctionBody","FunctionDeclaration","FunctionExpression","Getter","IdentifierExpression","IfStatement","Import","ImportNamespace","ImportSpecifier","LabeledStatement","LiteralBooleanExpression","LiteralInfinityExpression","LiteralNullExpression","LiteralNumericExpression","LiteralRegExpExpression","LiteralStringExpression","Method","Module","NewExpression","NewTargetExpression","ObjectAssignmentTarget","ObjectBinding","ObjectExpression","ReturnStatement","Script","Setter","ShorthandProperty","SpreadElement","SpreadProperty","StaticMemberAssignmentTarget","StaticMemberExpression","StaticPropertyName","Super","SwitchCase","SwitchDefault","SwitchStatement","SwitchStatementWithDefault","TemplateElement","TemplateExpression","ThisExpression","ThrowStatement","TryCatchStatement","TryFinallyStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarationStatement","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","YieldGeneratorExpression"]},$={typeName:"Enum",values:["==","!=","===","!==","<","<=",">",">=","in","instanceof","<<",">>",">>>","+","-","*","/","%","**",",","||","&&","|","^","&"]},j={typeName:"Enum",values:["+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","|=","^=","&="]},_e={typeName:"Enum",values:["+","-","!","~","typeof","void","delete"]},et={typeName:"Enum",values:["++","--"]},tt={typeName:"Enum",values:["var","let","const"]},nt=o.ArrayAssignmentTarget={},st=o.ArrayBinding={},rt=o.ArrayExpression={},it=o.ArrowExpression={},at=o.AssignmentExpression={},ot=o.AssignmentTargetIdentifier={},ht=o.AssignmentTargetPropertyIdentifier={},ct=o.AssignmentTargetPropertyProperty={},lt=o.AssignmentTargetWithDefault={},ut=o.AwaitExpression={},pt=o.BinaryExpression={},dt=o.BindingIdentifier={},gt=o.BindingPropertyIdentifier={},yt=o.BindingPropertyProperty={},ft=o.BindingWithDefault={},mt=o.Block={},Et=o.BlockStatement={},vt=o.BreakStatement={},At=o.CallExpression={},_t=o.CatchClause={},Dt=o.ClassDeclaration={},bt=o.ClassElement={},Tt=o.ClassExpression={},St=o.CompoundAssignmentExpression={},Ct=o.ComputedMemberAssignmentTarget={},xt=o.ComputedMemberExpression={},Rt=o.ComputedPropertyName={},Mt=o.ConditionalExpression={},It=o.ContinueStatement={},Ft=o.DataProperty={},Vt=o.DebuggerStatement={},jt=o.Directive={},Nt=o.DoWhileStatement={},Kt=o.EmptyStatement={},Jt=o.Export={},en=o.ExportAllFrom={},tn=o.ExportDefault={},kt=o.ExportFrom={},Bt=o.ExportFromSpecifier={},Qt=o.ExportLocalSpecifier={},Lt=o.ExportLocals={},$t=o.ExpressionStatement={},Wt=o.ForAwaitStatement={},Gt=o.ForInStatement={},zt=o.ForOfStatement={},nn=o.ForStatement={},Xt=o.FormalParameters={},Zt=o.FunctionBody={},sn=o.FunctionDeclaration={},fn=o.FunctionExpression={},An=o.Getter={},cn=o.IdentifierExpression={},vn=o.IfStatement={},_n=o.Import={},On=o.ImportNamespace={},mn=o.ImportSpecifier={},Cn=o.LabeledStatement={},Dn=o.LiteralBooleanExpression={},bn=o.LiteralInfinityExpression={},xn=o.LiteralNullExpression={},Tn=o.LiteralNumericExpression={},kn=o.LiteralRegExpExpression={},wn=o.LiteralStringExpression={},Fn=o.Method={},Nn=o.Module={},Pn=o.NewExpression={},Bn=o.NewTargetExpression={},Yt=o.ObjectAssignmentTarget={},Ut=o.ObjectBinding={},Rn=o.ObjectExpression={},In=o.ReturnStatement={},Mn=o.Script={},$n=o.Setter={},Ln=o.ShorthandProperty={},hn=o.SpreadElement={},Wn=o.SpreadProperty={},Qn=o.StaticMemberAssignmentTarget={},jn=o.StaticMemberExpression={},qn=o.StaticPropertyName={},an=o.Super={},pn=o.SwitchCase={},gn=o.SwitchDefault={},Vn=o.SwitchStatement={},Gn=o.SwitchStatementWithDefault={},yn=o.TemplateElement={},Un=o.TemplateExpression={},zn=o.ThisExpression={},Yn=o.ThrowStatement={},Hn=o.TryCatchStatement={},Xn=o.TryFinallyStatement={},Zn=o.UnaryExpression={},Kn=o.UpdateExpression={},rn=o.VariableDeclaration={},Jn=o.VariableDeclarationStatement={},En=o.VariableDeclarator={},er=o.WhileStatement={},tr=o.WithStatement={},nr=o.YieldExpression={},rr=o.YieldGeneratorExpression={},gr=b(xt,jn),ir=b(ht,ct);b(Dt,Tt);var sr=b(Jt,en,tn,kt,Lt),un=b(Rt,qn);b(sn,fn);var ar=b(_n,On),yr=b(Nt,Wt,Gt,zt,nn,er),Ht=b(Ct,Qn),or=b(gt,yt),ur=b(An,Fn,$n),Er=b(Nn,Mn),Sr=b(ot,dt,cn),Ar=b(Ft,ur),Pt=b(rt,it,at,ut,pt,At,Tt,St,Mt,fn,cn,Dn,bn,xn,Tn,kn,wn,gr,Pn,Bn,Rn,Un,zn,Zn,Kn,nr,rr),qt=b(Et,vt,Dt,It,Vt,Kt,$t,sn,vn,yr,Cn,In,Vn,Gn,Yn,Hn,Xn,Jn,tr),lr=b(Ar,Ln,Wn);return b(nt,st,ir,lt,or,ft,mt,_t,bt,jt,sr,Bt,Qt,Pt,Xt,Zt,ar,mn,Ht,Yt,Ut,lr,Er,un,hn,qt,an,pn,gn,yn,rn,En,Sr),nt.typeName="ArrayAssignmentTarget",nt.fields=[{name:"type",type:_(k),value:"ArrayAssignmentTarget"},{name:"elements",type:d(c(b(lt,b(b(nt,Yt),b(ot,Ht)))))},{name:"rest",type:c(b(b(nt,Yt),b(ot,Ht)))}],st.typeName="ArrayBinding",st.fields=[{name:"type",type:_(k),value:"ArrayBinding"},{name:"elements",type:d(c(b(ft,b(dt,b(st,Ut)))))},{name:"rest",type:c(b(dt,b(st,Ut)))}],rt.typeName="ArrayExpression",rt.fields=[{name:"type",type:_(k),value:"ArrayExpression"},{name:"elements",type:d(c(b(Pt,hn)))}],it.typeName="ArrowExpression",it.fields=[{name:"type",type:_(k),value:"ArrowExpression"},{name:"isAsync",type:e},{name:"params",type:Xt},{name:"body",type:b(Pt,Zt)}],at.typeName="AssignmentExpression",at.fields=[{name:"type",type:_(k),value:"AssignmentExpression"},{name:"binding",type:b(b(nt,Yt),b(ot,Ht))},{name:"expression",type:Pt}],ot.typeName="AssignmentTargetIdentifier",ot.fields=[{name:"type",type:_(k),value:"AssignmentTargetIdentifier"},{name:"name",type:a}],ht.typeName="AssignmentTargetPropertyIdentifier",ht.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyIdentifier"},{name:"binding",type:ot},{name:"init",type:c(Pt)}],ct.typeName="AssignmentTargetPropertyProperty",ct.fields=[{name:"type",type:_(k),value:"AssignmentTargetPropertyProperty"},{name:"name",type:un},{name:"binding",type:b(lt,b(b(nt,Yt),b(ot,Ht)))}],lt.typeName="AssignmentTargetWithDefault",lt.fields=[{name:"type",type:_(k),value:"AssignmentTargetWithDefault"},{name:"binding",type:b(b(nt,Yt),b(ot,Ht))},{name:"init",type:Pt}],ut.typeName="AwaitExpression",ut.fields=[{name:"type",type:_(k),value:"AwaitExpression"},{name:"expression",type:Pt}],pt.typeName="BinaryExpression",pt.fields=[{name:"type",type:_(k),value:"BinaryExpression"},{name:"left",type:Pt},{name:"operator",type:$},{name:"right",type:Pt}],dt.typeName="BindingIdentifier",dt.fields=[{name:"type",type:_(k),value:"BindingIdentifier"},{name:"name",type:a}],gt.typeName="BindingPropertyIdentifier",gt.fields=[{name:"type",type:_(k),value:"BindingPropertyIdentifier"},{name:"binding",type:dt},{name:"init",type:c(Pt)}],yt.typeName="BindingPropertyProperty",yt.fields=[{name:"type",type:_(k),value:"BindingPropertyProperty"},{name:"name",type:un},{name:"binding",type:b(ft,b(dt,b(st,Ut)))}],ft.typeName="BindingWithDefault",ft.fields=[{name:"type",type:_(k),value:"BindingWithDefault"},{name:"binding",type:b(dt,b(st,Ut))},{name:"init",type:Pt}],mt.typeName="Block",mt.fields=[{name:"type",type:_(k),value:"Block"},{name:"statements",type:d(qt)}],Et.typeName="BlockStatement",Et.fields=[{name:"type",type:_(k),value:"BlockStatement"},{name:"block",type:mt}],vt.typeName="BreakStatement",vt.fields=[{name:"type",type:_(k),value:"BreakStatement"},{name:"label",type:c(a)}],At.typeName="CallExpression",At.fields=[{name:"type",type:_(k),value:"CallExpression"},{name:"callee",type:b(Pt,an)},{name:"arguments",type:d(b(Pt,hn))}],_t.typeName="CatchClause",_t.fields=[{name:"type",type:_(k),value:"CatchClause"},{name:"binding",type:b(dt,b(st,Ut))},{name:"body",type:mt}],Dt.typeName="ClassDeclaration",Dt.fields=[{name:"type",type:_(k),value:"ClassDeclaration"},{name:"name",type:dt},{name:"super",type:c(Pt)},{name:"elements",type:d(bt)}],bt.typeName="ClassElement",bt.fields=[{name:"type",type:_(k),value:"ClassElement"},{name:"isStatic",type:e},{name:"method",type:ur}],Tt.typeName="ClassExpression",Tt.fields=[{name:"type",type:_(k),value:"ClassExpression"},{name:"name",type:c(dt)},{name:"super",type:c(Pt)},{name:"elements",type:d(bt)}],St.typeName="CompoundAssignmentExpression",St.fields=[{name:"type",type:_(k),value:"CompoundAssignmentExpression"},{name:"binding",type:b(ot,Ht)},{name:"operator",type:j},{name:"expression",type:Pt}],Ct.typeName="ComputedMemberAssignmentTarget",Ct.fields=[{name:"type",type:_(k),value:"ComputedMemberAssignmentTarget"},{name:"object",type:b(Pt,an)},{name:"expression",type:Pt}],xt.typeName="ComputedMemberExpression",xt.fields=[{name:"type",type:_(k),value:"ComputedMemberExpression"},{name:"object",type:b(Pt,an)},{name:"expression",type:Pt}],Rt.typeName="ComputedPropertyName",Rt.fields=[{name:"type",type:_(k),value:"ComputedPropertyName"},{name:"expression",type:Pt}],Mt.typeName="ConditionalExpression",Mt.fields=[{name:"type",type:_(k),value:"ConditionalExpression"},{name:"test",type:Pt},{name:"consequent",type:Pt},{name:"alternate",type:Pt}],It.typeName="ContinueStatement",It.fields=[{name:"type",type:_(k),value:"ContinueStatement"},{name:"label",type:c(a)}],Ft.typeName="DataProperty",Ft.fields=[{name:"type",type:_(k),value:"DataProperty"},{name:"name",type:un},{name:"expression",type:Pt}],Vt.typeName="DebuggerStatement",Vt.fields=[{name:"type",type:_(k),value:"DebuggerStatement"}],jt.typeName="Directive",jt.fields=[{name:"type",type:_(k),value:"Directive"},{name:"rawValue",type:a}],Nt.typeName="DoWhileStatement",Nt.fields=[{name:"type",type:_(k),value:"DoWhileStatement"},{name:"body",type:qt},{name:"test",type:Pt}],Kt.typeName="EmptyStatement",Kt.fields=[{name:"type",type:_(k),value:"EmptyStatement"}],Jt.typeName="Export",Jt.fields=[{name:"type",type:_(k),value:"Export"},{name:"declaration",type:b(Dt,sn,rn)}],en.typeName="ExportAllFrom",en.fields=[{name:"type",type:_(k),value:"ExportAllFrom"},{name:"moduleSpecifier",type:a}],tn.typeName="ExportDefault",tn.fields=[{name:"type",type:_(k),value:"ExportDefault"},{name:"body",type:b(Dt,Pt,sn)}],kt.typeName="ExportFrom",kt.fields=[{name:"type",type:_(k),value:"ExportFrom"},{name:"namedExports",type:d(Bt)},{name:"moduleSpecifier",type:a}],Bt.typeName="ExportFromSpecifier",Bt.fields=[{name:"type",type:_(k),value:"ExportFromSpecifier"},{name:"name",type:a},{name:"exportedName",type:c(a)}],Qt.typeName="ExportLocalSpecifier",Qt.fields=[{name:"type",type:_(k),value:"ExportLocalSpecifier"},{name:"name",type:cn},{name:"exportedName",type:c(a)}],Lt.typeName="ExportLocals",Lt.fields=[{name:"type",type:_(k),value:"ExportLocals"},{name:"namedExports",type:d(Qt)}],$t.typeName="ExpressionStatement",$t.fields=[{name:"type",type:_(k),value:"ExpressionStatement"},{name:"expression",type:Pt}],Wt.typeName="ForAwaitStatement",Wt.fields=[{name:"type",type:_(k),value:"ForAwaitStatement"},{name:"left",type:b(b(b(nt,Yt),b(ot,Ht)),rn)},{name:"right",type:Pt},{name:"body",type:qt}],Gt.typeName="ForInStatement",Gt.fields=[{name:"type",type:_(k),value:"ForInStatement"},{name:"left",type:b(b(b(nt,Yt),b(ot,Ht)),rn)},{name:"right",type:Pt},{name:"body",type:qt}],zt.typeName="ForOfStatement",zt.fields=[{name:"type",type:_(k),value:"ForOfStatement"},{name:"left",type:b(b(b(nt,Yt),b(ot,Ht)),rn)},{name:"right",type:Pt},{name:"body",type:qt}],nn.typeName="ForStatement",nn.fields=[{name:"type",type:_(k),value:"ForStatement"},{name:"init",type:c(b(Pt,rn))},{name:"test",type:c(Pt)},{name:"update",type:c(Pt)},{name:"body",type:qt}],Xt.typeName="FormalParameters",Xt.fields=[{name:"type",type:_(k),value:"FormalParameters"},{name:"items",type:d(b(ft,b(dt,b(st,Ut))))},{name:"rest",type:c(b(dt,b(st,Ut)))}],Zt.typeName="FunctionBody",Zt.fields=[{name:"type",type:_(k),value:"FunctionBody"},{name:"directives",type:d(jt)},{name:"statements",type:d(qt)}],sn.typeName="FunctionDeclaration",sn.fields=[{name:"type",type:_(k),value:"FunctionDeclaration"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:dt},{name:"params",type:Xt},{name:"body",type:Zt}],fn.typeName="FunctionExpression",fn.fields=[{name:"type",type:_(k),value:"FunctionExpression"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:c(dt)},{name:"params",type:Xt},{name:"body",type:Zt}],An.typeName="Getter",An.fields=[{name:"type",type:_(k),value:"Getter"},{name:"name",type:un},{name:"body",type:Zt}],cn.typeName="IdentifierExpression",cn.fields=[{name:"type",type:_(k),value:"IdentifierExpression"},{name:"name",type:a}],vn.typeName="IfStatement",vn.fields=[{name:"type",type:_(k),value:"IfStatement"},{name:"test",type:Pt},{name:"consequent",type:qt},{name:"alternate",type:c(qt)}],_n.typeName="Import",_n.fields=[{name:"type",type:_(k),value:"Import"},{name:"defaultBinding",type:c(dt)},{name:"namedImports",type:d(mn)},{name:"moduleSpecifier",type:a}],On.typeName="ImportNamespace",On.fields=[{name:"type",type:_(k),value:"ImportNamespace"},{name:"defaultBinding",type:c(dt)},{name:"namespaceBinding",type:dt},{name:"moduleSpecifier",type:a}],mn.typeName="ImportSpecifier",mn.fields=[{name:"type",type:_(k),value:"ImportSpecifier"},{name:"name",type:c(a)},{name:"binding",type:dt}],Cn.typeName="LabeledStatement",Cn.fields=[{name:"type",type:_(k),value:"LabeledStatement"},{name:"label",type:a},{name:"body",type:qt}],Dn.typeName="LiteralBooleanExpression",Dn.fields=[{name:"type",type:_(k),value:"LiteralBooleanExpression"},{name:"value",type:e}],bn.typeName="LiteralInfinityExpression",bn.fields=[{name:"type",type:_(k),value:"LiteralInfinityExpression"}],xn.typeName="LiteralNullExpression",xn.fields=[{name:"type",type:_(k),value:"LiteralNullExpression"}],Tn.typeName="LiteralNumericExpression",Tn.fields=[{name:"type",type:_(k),value:"LiteralNumericExpression"},{name:"value",type:s}],kn.typeName="LiteralRegExpExpression",kn.fields=[{name:"type",type:_(k),value:"LiteralRegExpExpression"},{name:"pattern",type:a},{name:"global",type:e},{name:"ignoreCase",type:e},{name:"multiLine",type:e},{name:"dotAll",type:e},{name:"unicode",type:e},{name:"sticky",type:e}],wn.typeName="LiteralStringExpression",wn.fields=[{name:"type",type:_(k),value:"LiteralStringExpression"},{name:"value",type:a}],Fn.typeName="Method",Fn.fields=[{name:"type",type:_(k),value:"Method"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:un},{name:"params",type:Xt},{name:"body",type:Zt}],Nn.typeName="Module",Nn.fields=[{name:"type",type:_(k),value:"Module"},{name:"directives",type:d(jt)},{name:"items",type:d(b(sr,ar,qt))}],Pn.typeName="NewExpression",Pn.fields=[{name:"type",type:_(k),value:"NewExpression"},{name:"callee",type:Pt},{name:"arguments",type:d(b(Pt,hn))}],Bn.typeName="NewTargetExpression",Bn.fields=[{name:"type",type:_(k),value:"NewTargetExpression"}],Yt.typeName="ObjectAssignmentTarget",Yt.fields=[{name:"type",type:_(k),value:"ObjectAssignmentTarget"},{name:"properties",type:d(ir)},{name:"rest",type:c(b(b(nt,Yt),b(ot,Ht)))}],Ut.typeName="ObjectBinding",Ut.fields=[{name:"type",type:_(k),value:"ObjectBinding"},{name:"properties",type:d(or)},{name:"rest",type:c(b(dt,b(st,Ut)))}],Rn.typeName="ObjectExpression",Rn.fields=[{name:"type",type:_(k),value:"ObjectExpression"},{name:"properties",type:d(lr)}],In.typeName="ReturnStatement",In.fields=[{name:"type",type:_(k),value:"ReturnStatement"},{name:"expression",type:c(Pt)}],Mn.typeName="Script",Mn.fields=[{name:"type",type:_(k),value:"Script"},{name:"directives",type:d(jt)},{name:"statements",type:d(qt)}],$n.typeName="Setter",$n.fields=[{name:"type",type:_(k),value:"Setter"},{name:"name",type:un},{name:"param",type:b(ft,b(dt,b(st,Ut)))},{name:"body",type:Zt}],Ln.typeName="ShorthandProperty",Ln.fields=[{name:"type",type:_(k),value:"ShorthandProperty"},{name:"name",type:cn}],hn.typeName="SpreadElement",hn.fields=[{name:"type",type:_(k),value:"SpreadElement"},{name:"expression",type:Pt}],Wn.typeName="SpreadProperty",Wn.fields=[{name:"type",type:_(k),value:"SpreadProperty"},{name:"expression",type:Pt}],Qn.typeName="StaticMemberAssignmentTarget",Qn.fields=[{name:"type",type:_(k),value:"StaticMemberAssignmentTarget"},{name:"object",type:b(Pt,an)},{name:"property",type:a}],jn.typeName="StaticMemberExpression",jn.fields=[{name:"type",type:_(k),value:"StaticMemberExpression"},{name:"object",type:b(Pt,an)},{name:"property",type:a}],qn.typeName="StaticPropertyName",qn.fields=[{name:"type",type:_(k),value:"StaticPropertyName"},{name:"value",type:a}],an.typeName="Super",an.fields=[{name:"type",type:_(k),value:"Super"}],pn.typeName="SwitchCase",pn.fields=[{name:"type",type:_(k),value:"SwitchCase"},{name:"test",type:Pt},{name:"consequent",type:d(qt)}],gn.typeName="SwitchDefault",gn.fields=[{name:"type",type:_(k),value:"SwitchDefault"},{name:"consequent",type:d(qt)}],Vn.typeName="SwitchStatement",Vn.fields=[{name:"type",type:_(k),value:"SwitchStatement"},{name:"discriminant",type:Pt},{name:"cases",type:d(pn)}],Gn.typeName="SwitchStatementWithDefault",Gn.fields=[{name:"type",type:_(k),value:"SwitchStatementWithDefault"},{name:"discriminant",type:Pt},{name:"preDefaultCases",type:d(pn)},{name:"defaultCase",type:gn},{name:"postDefaultCases",type:d(pn)}],yn.typeName="TemplateElement",yn.fields=[{name:"type",type:_(k),value:"TemplateElement"},{name:"rawValue",type:a}],Un.typeName="TemplateExpression",Un.fields=[{name:"type",type:_(k),value:"TemplateExpression"},{name:"tag",type:c(Pt)},{name:"elements",type:d(b(Pt,yn))}],zn.typeName="ThisExpression",zn.fields=[{name:"type",type:_(k),value:"ThisExpression"}],Yn.typeName="ThrowStatement",Yn.fields=[{name:"type",type:_(k),value:"ThrowStatement"},{name:"expression",type:Pt}],Hn.typeName="TryCatchStatement",Hn.fields=[{name:"type",type:_(k),value:"TryCatchStatement"},{name:"body",type:mt},{name:"catchClause",type:_t}],Xn.typeName="TryFinallyStatement",Xn.fields=[{name:"type",type:_(k),value:"TryFinallyStatement"},{name:"body",type:mt},{name:"catchClause",type:c(_t)},{name:"finalizer",type:mt}],Zn.typeName="UnaryExpression",Zn.fields=[{name:"type",type:_(k),value:"UnaryExpression"},{name:"operator",type:_e},{name:"operand",type:Pt}],Kn.typeName="UpdateExpression",Kn.fields=[{name:"type",type:_(k),value:"UpdateExpression"},{name:"isPrefix",type:e},{name:"operator",type:et},{name:"operand",type:b(ot,Ht)}],rn.typeName="VariableDeclaration",rn.fields=[{name:"type",type:_(k),value:"VariableDeclaration"},{name:"kind",type:tt},{name:"declarators",type:d(En)}],Jn.typeName="VariableDeclarationStatement",Jn.fields=[{name:"type",type:_(k),value:"VariableDeclarationStatement"},{name:"declaration",type:rn}],En.typeName="VariableDeclarator",En.fields=[{name:"type",type:_(k),value:"VariableDeclarator"},{name:"binding",type:b(dt,b(st,Ut))},{name:"init",type:c(Pt)}],er.typeName="WhileStatement",er.fields=[{name:"type",type:_(k),value:"WhileStatement"},{name:"test",type:Pt},{name:"body",type:qt}],tr.typeName="WithStatement",tr.fields=[{name:"type",type:_(k),value:"WithStatement"},{name:"object",type:Pt},{name:"body",type:qt}],nr.typeName="YieldExpression",nr.fields=[{name:"type",type:_(k),value:"YieldExpression"},{name:"expression",type:c(Pt)}],rr.typeName="YieldGeneratorExpression",rr.fields=[{name:"type",type:_(k),value:"YieldGeneratorExpression"},{name:"expression",type:Pt}],o}(),estraverse$1={};(function(o){(function e(s){var a,c,d,_,b,k;function $(ct){var lt={},ut,pt;for(ut in ct)ct.hasOwnProperty(ut)&&(pt=ct[ut],typeof pt=="object"&&pt!==null?lt[ut]=$(pt):lt[ut]=pt);return lt}function j(ct,lt){var ut,pt,dt,gt;for(pt=ct.length,dt=0;pt;)ut=pt>>>1,gt=dt+ut,lt(ct[gt])?pt=ut:(dt=gt+1,pt-=ut+1);return dt}a={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ChainExpression:"ChainExpression",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",PrivateIdentifier:"PrivateIdentifier",Program:"Program",Property:"Property",PropertyDefinition:"PropertyDefinition",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},d={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},_={},b={},k={},c={Break:_,Skip:b,Remove:k};function _e(ct,lt){this.parent=ct,this.key=lt}_e.prototype.replace=function(lt){this.parent[this.key]=lt},_e.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)};function et(ct,lt,ut,pt){this.node=ct,this.path=lt,this.wrap=ut,this.ref=pt}function tt(){}tt.prototype.path=function(){var lt,ut,pt,dt,gt,yt;function ft(mt,Et){if(Array.isArray(Et))for(pt=0,dt=Et.length;pt=0;--ut)if(ct[ut].node===lt)return!0;return!1}tt.prototype.traverse=function(lt,ut){var pt,dt,gt,yt,ft,mt,Et,vt,At,_t,Dt,bt;for(this.__initialize(lt,ut),bt={},pt=this.__worklist,dt=this.__leavelist,pt.push(new et(lt,null,null,null)),dt.push(new et(null,null,null,null));pt.length;){if(gt=pt.pop(),gt===bt){if(gt=dt.pop(),mt=this.__execute(ut.leave,gt),this.__state===_||mt===_)return;continue}if(gt.node){if(mt=this.__execute(ut.enter,gt),this.__state===_||mt===_)return;if(pt.push(bt),dt.push(gt),this.__state===b||mt===b)continue;if(yt=gt.node,ft=yt.type||gt.wrap,_t=this.__keys[ft],!_t)if(this.__fallback)_t=this.__fallback(yt);else throw new Error("Unknown node type "+ft+".");for(vt=_t.length;(vt-=1)>=0;)if(Et=_t[vt],Dt=yt[Et],!!Dt){if(Array.isArray(Dt)){for(At=Dt.length;(At-=1)>=0;)if(!!Dt[At]&&!rt(dt,Dt[At])){if(st(ft,_t[vt]))gt=new et(Dt[At],[Et,At],"Property",null);else if(nt(Dt[At]))gt=new et(Dt[At],[Et,At],null,null);else continue;pt.push(gt)}}else if(nt(Dt)){if(rt(dt,Dt))continue;pt.push(new et(Dt,Et,null,null))}}}}},tt.prototype.replace=function(lt,ut){var pt,dt,gt,yt,ft,mt,Et,vt,At,_t,Dt,bt,Tt;function St(Ct){var xt,Rt,Mt,It;if(Ct.ref.remove()){for(Rt=Ct.ref.key,It=Ct.ref.parent,xt=pt.length;xt--;)if(Mt=pt[xt],Mt.ref&&Mt.ref.parent===It){if(Mt.ref.key=0;)if(Tt=At[Et],_t=gt[Tt],!!_t)if(Array.isArray(_t)){for(vt=_t.length;(vt-=1)>=0;)if(!!_t[vt]){if(st(yt,At[Et]))mt=new et(_t[vt],[Tt,vt],"Property",new _e(_t,vt));else if(nt(_t[vt]))mt=new et(_t[vt],[Tt,vt],null,new _e(_t,vt));else continue;pt.push(mt)}}else nt(_t)&&pt.push(new et(_t,Tt,null,new _e(gt,Tt)))}}return bt.root};function it(ct,lt){var ut=new tt;return ut.traverse(ct,lt)}function at(ct,lt){var ut=new tt;return ut.replace(ct,lt)}function ot(ct,lt){var ut;return ut=j(lt,function(dt){return dt.range[0]>ct.range[0]}),ct.extendedRange=[ct.range[0],ct.range[1]],ut!==lt.length&&(ct.extendedRange[1]=lt[ut].range[0]),ut-=1,ut>=0&&(ct.extendedRange[0]=lt[ut].range[1]),ct}function ht(ct,lt,ut){var pt=[],dt,gt,yt,ft;if(!ct.range)throw new Error("attachComments needs range information");if(!ut.length){if(lt.length){for(yt=0,gt=lt.length;ytmt.range[0]));)Et.extendedRange[1]===mt.range[0]?(mt.leadingComments||(mt.leadingComments=[]),mt.leadingComments.push(Et),pt.splice(ft,1)):ft+=1;if(ft===pt.length)return c.Break;if(pt[ft].extendedRange[0]>mt.range[1])return c.Skip}}),ft=0,it(ct,{leave:function(mt){for(var Et;ftmt.range[1])return c.Skip}}),ct}return s.Syntax=a,s.traverse=it,s.replace=at,s.attachComments=ht,s.VisitorKeys=d,s.VisitorOption=c,s.Controller=tt,s.cloneEnvironment=function(){return e({})},s})(o)})(estraverse$1);const Spec=_default.default||_default,estraverse=estraverse$1.cloneEnvironment();Object.keys(estraverse.Syntax).filter(o=>o!=="Property").forEach(o=>{delete estraverse.Syntax[o],delete estraverse.VisitorKeys[o]});Object.assign(estraverse.Syntax,Object.keys(Spec).reduce((o,e)=>(o[e]=e,o),{}));Object.assign(estraverse.VisitorKeys,Object.keys(Spec).reduce((o,e)=>(o[e]=Spec[e].fields.map(s=>s.name),o),{}));var dist$1={},StaticMemberExpression_1,ReturnStatement_1,LiteralStringExpression_1,LiteralNumericExpression_1,IdentifierExpression_1,CallExpression_1,ArrayExpression_1;Object.defineProperty(dist$1,"__esModule",{value:!0});function _classCallCheck$5(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$1.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$1.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};ArrayExpression_1=dist$1.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$5(this,o),this.type="ArrayExpression",this.elements=s};dist$1.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$5(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$1.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$5(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$1.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$1.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$1.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$1.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$1.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="AwaitExpression",this.expression=s};dist$1.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$5(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$1.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="BindingIdentifier",this.name=s};dist$1.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$1.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$1.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$1.Block=function o(e){var s=e.statements;_classCallCheck$5(this,o),this.type="Block",this.statements=s};dist$1.BlockStatement=function o(e){var s=e.block;_classCallCheck$5(this,o),this.type="BlockStatement",this.block=s};dist$1.BreakStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="BreakStatement",this.label=s};CallExpression_1=dist$1.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$1.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$5(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$1.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$1.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$5(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$1.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$1.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$5(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$1.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$1.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$1.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ComputedPropertyName",this.expression=s};dist$1.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$1.ContinueStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="ContinueStatement",this.label=s};dist$1.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$5(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$1.DebuggerStatement=function o(){_classCallCheck$5(this,o),this.type="DebuggerStatement"};dist$1.Directive=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="Directive",this.rawValue=s};dist$1.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$5(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$1.EmptyStatement=function o(){_classCallCheck$5(this,o),this.type="EmptyStatement"};dist$1.Export=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="Export",this.declaration=s};dist$1.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$1.ExportDefault=function o(e){var s=e.body;_classCallCheck$5(this,o),this.type="ExportDefault",this.body=s};dist$1.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$1.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$5(this,o),this.type="ExportLocals",this.namedExports=s};dist$1.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ExpressionStatement",this.expression=s};dist$1.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$1.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$1.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$1.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,d=e.body;_classCallCheck$5(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=d};dist$1.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$5(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$1.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$1.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$5(this,o),this.type="Getter",this.name=s,this.body=a};IdentifierExpression_1=dist$1.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="IdentifierExpression",this.name=s};dist$1.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$1.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$1.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$1.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$1.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$5(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$1.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$1.LiteralInfinityExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralInfinityExpression"};dist$1.LiteralNullExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralNullExpression"};LiteralNumericExpression_1=dist$1.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralNumericExpression",this.value=s};dist$1.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,d=e.multiLine,_=e.dotAll,b=e.unicode,k=e.sticky;_classCallCheck$5(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=d,this.dotAll=_,this.unicode=b,this.sticky=k};LiteralStringExpression_1=dist$1.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralStringExpression",this.value=s};dist$1.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,d=e.params,_=e.body;_classCallCheck$5(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=d,this.body=_};dist$1.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$5(this,o),this.type="Module",this.directives=s,this.items=a};dist$1.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$1.NewTargetExpression=function o(){_classCallCheck$5(this,o),this.type="NewTargetExpression"};dist$1.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$1.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$1.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$5(this,o),this.type="ObjectExpression",this.properties=s};ReturnStatement_1=dist$1.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ReturnStatement",this.expression=s};dist$1.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="Script",this.directives=s,this.statements=a};dist$1.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$5(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$1.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="ShorthandProperty",this.name=s};dist$1.SpreadElement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadElement",this.expression=s};dist$1.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadProperty",this.expression=s};dist$1.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};StaticMemberExpression_1=dist$1.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$1.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="StaticPropertyName",this.value=s};dist$1.Super=function o(){_classCallCheck$5(this,o),this.type="Super"};dist$1.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$5(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$1.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$5(this,o),this.type="SwitchDefault",this.consequent=s};dist$1.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$5(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$1.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,d=e.postDefaultCases;_classCallCheck$5(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=d};dist$1.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="TemplateElement",this.rawValue=s};dist$1.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$5(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$1.ThisExpression=function o(){_classCallCheck$5(this,o),this.type="ThisExpression"};dist$1.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ThrowStatement",this.expression=s};dist$1.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$5(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$1.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$5(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$1.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$5(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$1.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$5(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$1.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$5(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$1.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$1.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$1.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$5(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$1.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$5(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$1.YieldExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldExpression",this.expression=s};dist$1.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldGeneratorExpression",this.expression=s};var dist={},minimalCodegen={};/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty$1=Object.prototype.hasOwnProperty,propIsEnumerable=Object.prototype.propertyIsEnumerable;function toObject(o){if(o==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(o)}function shouldUseNative(){try{if(!Object.assign)return!1;var o=new String("abc");if(o[5]="de",Object.getOwnPropertyNames(o)[0]==="5")return!1;for(var e={},s=0;s<10;s++)e["_"+String.fromCharCode(s)]=s;var a=Object.getOwnPropertyNames(e).map(function(d){return e[d]});if(a.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(d){c[d]=d}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var objectAssign=shouldUseNative()?Object.assign:function(o,e){for(var s,a=toObject(o),c,d=1;d=48&&rt<=55}s=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function $(rt){return rt===32||rt===9||rt===11||rt===12||rt===160||rt>=5760&&s.indexOf(rt)>=0}function j(rt){return rt===10||rt===13||rt===8232||rt===8233}function _e(rt){if(rt<=65535)return String.fromCharCode(rt);var it=String.fromCharCode(Math.floor((rt-65536)/1024)+55296),at=String.fromCharCode((rt-65536)%1024+56320);return it+at}for(a=new Array(128),d=0;d<128;++d)a[d]=d>=97&&d<=122||d>=65&&d<=90||d===36||d===95;for(c=new Array(128),d=0;d<128;++d)c[d]=d>=97&&d<=122||d>=65&&d<=90||d>=48&&d<=57||d===36||d===95;function et(rt){return rt<128?a[rt]:e.NonAsciiIdentifierStart.test(_e(rt))}function tt(rt){return rt<128?c[rt]:e.NonAsciiIdentifierPart.test(_e(rt))}function nt(rt){return rt<128?a[rt]:o.NonAsciiIdentifierStart.test(_e(rt))}function st(rt){return rt<128?c[rt]:o.NonAsciiIdentifierPart.test(_e(rt))}code$1.exports={isDecimalDigit:_,isHexDigit:b,isOctalDigit:k,isWhiteSpace:$,isLineTerminator:j,isIdentifierStartES5:et,isIdentifierPartES5:tt,isIdentifierStartES6:nt,isIdentifierPartES6:st}})();var keyword$1={exports:{}};(function(){var o=code$1.exports;function e(et){switch(et){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function s(et,tt){return!tt&&et==="yield"?!1:a(et,tt)}function a(et,tt){if(tt&&e(et))return!0;switch(et.length){case 2:return et==="if"||et==="in"||et==="do";case 3:return et==="var"||et==="for"||et==="new"||et==="try";case 4:return et==="this"||et==="else"||et==="case"||et==="void"||et==="with"||et==="enum";case 5:return et==="while"||et==="break"||et==="catch"||et==="throw"||et==="const"||et==="yield"||et==="class"||et==="super";case 6:return et==="return"||et==="typeof"||et==="delete"||et==="switch"||et==="export"||et==="import";case 7:return et==="default"||et==="finally"||et==="extends";case 8:return et==="function"||et==="continue"||et==="debugger";case 10:return et==="instanceof";default:return!1}}function c(et,tt){return et==="null"||et==="true"||et==="false"||s(et,tt)}function d(et,tt){return et==="null"||et==="true"||et==="false"||a(et,tt)}function _(et){return et==="eval"||et==="arguments"}function b(et){var tt,nt,st;if(et.length===0||(st=et.charCodeAt(0),!o.isIdentifierStartES5(st)))return!1;for(tt=1,nt=et.length;tt=nt||(rt=et.charCodeAt(tt),!(56320<=rt&&rt<=57343)))return!1;st=k(st,rt)}if(!it(st))return!1;it=o.isIdentifierPartES6}return!0}function j(et,tt){return b(et)&&!c(et,tt)}function _e(et,tt){return $(et)&&!d(et,tt)}keyword$1.exports={isKeywordES5:s,isKeywordES6:a,isReservedWordES5:c,isReservedWordES6:d,isRestrictedWord:_,isIdentifierNameES5:b,isIdentifierNameES6:$,isIdentifierES5:j,isIdentifierES6:_e}})();(function(){utils.ast=ast.exports,utils.code=code$1.exports,utils.keyword=keyword$1.exports})();var coderep={};Object.defineProperty(coderep,"__esModule",{value:!0});var _createClass$4=function(){function o(e,s){for(var a=0;a":Precedence.Relational,"<=":Precedence.Relational,">=":Precedence.Relational,in:Precedence.Relational,instanceof:Precedence.Relational,"<<":Precedence.BitwiseSHIFT,">>":Precedence.BitwiseSHIFT,">>>":Precedence.BitwiseSHIFT,"+":Precedence.Additive,"-":Precedence.Additive,"*":Precedence.Multiplicative,"%":Precedence.Multiplicative,"/":Precedence.Multiplicative,"**":Precedence.Exponential};function getPrecedence(o){switch(o.type){case"ArrayExpression":case"FunctionExpression":case"ClassExpression":case"IdentifierExpression":case"AssignmentTargetIdentifier":case"NewTargetExpression":case"Super":case"LiteralBooleanExpression":case"LiteralNullExpression":case"LiteralNumericExpression":case"LiteralInfinityExpression":case"LiteralRegExpExpression":case"LiteralStringExpression":case"ObjectExpression":case"ThisExpression":case"SpreadElement":case"FunctionBody":return Precedence.Primary;case"ArrowExpression":case"AssignmentExpression":case"CompoundAssignmentExpression":case"YieldExpression":case"YieldGeneratorExpression":return Precedence.Assignment;case"ConditionalExpression":return Precedence.Conditional;case"ComputedMemberExpression":case"StaticMemberExpression":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":switch(o.object.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.object);default:return Precedence.Member}case"TemplateExpression":if(o.tag==null)return Precedence.Member;switch(o.tag.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.tag);default:return Precedence.Member}case"BinaryExpression":return BinaryPrecedence[o.operator];case"CallExpression":return Precedence.Call;case"NewExpression":return o.arguments.length===0?Precedence.New:Precedence.Member;case"UpdateExpression":return o.isPrefix?Precedence.Prefix:Precedence.Postfix;case"AwaitExpression":case"UnaryExpression":return Precedence.Prefix;default:throw new Error("unreachable: "+o.type)}}function escapeStringLiteral(o){for(var e="",s=0,a=0,c=0,d=o.length;cs?"'":'"';e+=b;for(var k=0;k1&&arguments[1]!==void 0?arguments[1]:!1;_classCallCheck$4(this,e);var c=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return c.token=s,c.isRegExp=a,c}return _createClass$4(e,[{key:"emit",value:function(a){a.put(this.token,this.isRegExp)}}]),e}(CodeRep);coderep.RawToken=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.token=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putRaw(this.token)}}]),e}(CodeRep);coderep.NumberCodeRep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.number=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putNumber(this.number)}}]),e}(CodeRep);coderep.Paren=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("("),this.expr.emit(a,!1),a.put(")")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Bracket=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("["),this.expr.emit(a,!1),a.put("]")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Brace=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("{"),this.expr.emit(a,!1),a.put("}")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.NoIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){this.expr.emit(a,!0)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.ContainsIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){c?(a.put("("),this.expr.emit(a,!1),a.put(")")):this.expr.emit(a,!1)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Seq=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){this.children.forEach(function(d){return d.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.Semi=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,";"))}return e}(Token);coderep.CommaSep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){var d=!0;this.children.forEach(function(_){d?d=!1:a.put(","),_.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.SemiOp=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this))}return _createClass$4(e,[{key:"emit",value:function(a){a.putOptionalSemi()}}]),e}(CodeRep);Object.defineProperty(minimalCodegen,"__esModule",{value:!0});var _createClass$3=function(){function o(e,s){for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep$1.Token(o,e)}function paren(o){return new _coderep$1.Paren(o)}function brace(o){return new _coderep$1.Brace(o)}function bracket$1(o){return new _coderep$1.Bracket(o)}function noIn$1(o){return new _coderep$1.NoIn(o)}function markContainsIn$1(o){return o.containsIn?new _coderep$1.ContainsIn(o):o}function seq$1(){for(var o=arguments.length,e=Array(o),s=0;s0&&c[c.length-1]==null&&(d=seq$1(d,t$1(","))),bracket$1(d)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq$1(t$1("await"),p$1(s.expression,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1("="),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(b=paren(b),k=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,d=a.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep$1.getPrecedence)(s.left)<(0,_coderep$1.getPrecedence)(s)||_e&&((0,_coderep$1.getPrecedence)(s.left)===(0,_coderep$1.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=paren(_),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep$1.getPrecedence)(s.right)<(0,_coderep$1.getPrecedence)(s)||!_e&&(0,_coderep$1.getPrecedence)(s.right)===(0,_coderep$1.getPrecedence)(s))&&(et=paren(et),tt=!1),(0,_objectAssign2$1.default)(seq$1(_,t$1(s.operator),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=a.elements,d=a.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceArrayBinding",value:function(s,a){var c=a.elements,d=a.rest,_=void 0;return c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):(c=c.concat(d==null?[]:[seq$1(t$1("..."),d)]),_=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(_=seq$1(_,t$1(",")))),bracket$1(_)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,d=a.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,d=a.rest,_=commaSep(c);c.length===0?_=d==null?empty$2():seq$1(t$1("..."),d):_=d==null?_:seq$1(_,t$1(","),t$1("..."),d);var b=brace(_);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq$1(c,t$1(":"),d)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return brace(seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return c}},{key:"reduceBreakStatement",value:function(s){return seq$1(t$1("break"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceCallExpression",value:function(s,a){var c=a.callee,d=a.arguments,_=d.map(function(b,k){return p$1(s.arguments[k],_coderep$1.Precedence.Assignment,b)});return(0,_objectAssign2$1.default)(seq$1(p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c),paren(commaSep(_))),{startsWithCurly:c.startsWithCurly,startsWithLet:c.startsWithLet,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,d=a.body;return seq$1(t$1("catch"),paren(c),d)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=seq$1(t$1("class"),s.name.name==="*default*"?empty$2():c);return d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=t$1("class");return c!=null&&(b=seq$1(b,c)),d!=null&&(b=seq$1(b,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,d))),b=seq$1.apply(void 0,[b,t$1("{")].concat(_toConsumableArray$2(_),[t$1("}")])),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return s.isStatic?seq$1(t$1("static"),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(d)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return bracket$1(p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2$1.default)(seq$1(p$1(s.test,_coderep$1.Precedence.LogicalOR,c),t$1("?"),p$1(s.consequent,_coderep$1.Precedence.Assignment,d),t$1(":"),p$1(s.alternate,_coderep$1.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq$1(t$1("continue"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,d=a.expression;return seq$1(c,t$1(":"),getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(){return seq$1(t$1("debugger"),semiOp())}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,d=a.test;return seq$1(t$1("do"),c,t$1("while"),paren(d),semiOp())}},{key:"reduceEmptyStatement",value:function(){return semi()}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq$1(d?paren(c):c,semiOp())}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("in"),d)),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,d=a.test,_=a.update,b=a.body;return c&&(c.startsWithLetSquareBracket&&(c=paren(c)),c=noIn$1(markContainsIn$1(c))),(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c||empty$2(),semi(),d||empty$2(),semi(),_||empty$2())),b),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),t$1("await"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,d))),_),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),brace(seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d))))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),s.name.name==="*default*"?empty$2():c,d,_)}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,d=a.params,_=a.body,b=seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),c||empty$2(),d,_);return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,d=a.rest;return paren(commaSep(c.concat(d==null?[]:[seq$1(t$1("..."),d)])))}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,d=a.body;c=this.regenerateArrowParams(s.params,c);var _=!1;return s.body.type!=="FunctionBody"&&(d.startsWithCurly?d=paren(d):d.containsIn&&(_=!0)),(0,_objectAssign2$1.default)(seq$1(s.isAsync?t$1("async"):empty$2(),c,t$1("=>"),p$1(s.body,_coderep$1.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,a){var c=a.name,d=a.body;return seq$1(t$1("get"),c,paren(empty$2()),d)}},{key:"reduceIdentifierExpression",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate;return _&&d.endsWithMissingElse&&(d=brace(d)),(0,_objectAssign2$1.default)(seq$1(t$1("if"),paren(c),d,_?seq$1(t$1("else"),_):empty$2()),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,d=a.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(brace(commaSep(d))),_.length===0?seq$1(t$1("import"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp()):seq$1(t$1("import"),commaSep(_),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,d=a.namespaceBinding;return seq$1(t$1("import"),c==null?empty$2():seq$1(c,t$1(",")),t$1("*"),t$1("as"),d,t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq$1(t$1(s.name),t$1("as"),c)}},{key:"reduceExportAllFrom",value:function(s){return seq$1(t$1("export"),t$1("*"),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),semiOp())}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq$1(c,semiOp())}return seq$1(t$1("export"),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?paren(c):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq$1(t$1("export default"),c);default:return seq$1(t$1("export default"),p$1(s.body,_coderep$1.Precedence.Assignment,c),semiOp())}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?t$1(s.name):seq$1(t$1(s.name),t$1("as"),t$1(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq$1(c,t$1("as"),t$1(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2$1.default)(seq$1(t$1(s.label+":"),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return t$1(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return t$1("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return t$1("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep$1.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return t$1("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),s.isGenerator?t$1("*"):empty$2(),c,d,_)}},{key:"reduceModule",value:function(s,a){var c=a.directives,d=a.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceNewExpression",value:function(s,a){var c=a.callee,d=a.arguments,_=d.map(function(k,$){return p$1(s.arguments[$],_coderep$1.Precedence.Assignment,k)}),b=(0,_coderep$1.getPrecedence)(s.callee)===_coderep$1.Precedence.Call?paren(c):p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c);return seq$1(t$1("new"),b,d.length===0?empty$2():paren(commaSep(_)))}},{key:"reduceNewTargetExpression",value:function(){return t$1("new.target")}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,d=brace(commaSep(c));return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2$1.default)(seq$1(p$1(s.operand,_coderep$1.Precedence.New,c),t$1(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq$1(t$1(s.operator),p$1(s.operand,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq$1(t$1("return"),c||empty$2(),semiOp())}},{key:"reduceScript",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(d)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,d=a.param,_=a.body;return seq$1(t$1("set"),c,paren(d),_)}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,d=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils$1.keyword.isIdentifierNameES6(s.value))return t$1(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep$1.NumberCodeRep(a):t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return t$1("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,d=a.consequent;return seq$1(t$1("case"),c,t$1(":"),seq$1.apply(void 0,_toConsumableArray$2(d)))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq$1(t$1("default:"),seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,d=a.cases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d))))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,d=a.preDefaultCases,_=a.defaultCase,b=a.postDefaultCases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(d).concat([_],_toConsumableArray$2(b)))))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,d=a.elements,_=s.tag==null?empty$2():p$1(s.tag,(0,_coderep$1.getPrecedence)(s),c);_=seq$1(_,t$1("`"));for(var b=0,k=s.elements.length;b0?t$1("}"):empty$2(),d[b],b1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep.Token(s,a)}},{key:"p",value:function(s,a,c){return(0,_coderep.getPrecedence)(s)0&&d[d.length-1]==null&&(_=seq(_,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA))),this.bracket(_,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq(this.t("await"),this.sep(Sep.AWAIT),this.p(s.expression,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.p(s.expression,_coderep.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP("=")),this.t("="),this.sep(Sep.AFTER_ASSIGN_OP("=")),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,d=a.expression,_=c,b=d,k=d.containsIn,$=c.startsWithCurly,j=c.startsWithLetSquareBracket,_e=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(b=this.paren(b,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),k=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_ASSIGN_OP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_ASSIGN_OP(s.operator)),b),{containsIn:k,startsWithCurly:$,startsWithLetSquareBracket:j,startsWithFunctionOrClass:_e})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,d=a.right,_=c,b=c.startsWithCurly,k=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass,j=c.containsIn,_e=s.operator==="**";((0,_coderep.getPrecedence)(s.left)<(0,_coderep.getPrecedence)(s)||_e&&((0,_coderep.getPrecedence)(s.left)===(0,_coderep.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(_=this.paren(_,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),b=!1,k=!1,$=!1,j=!1);var et=d,tt=d.containsIn;return((0,_coderep.getPrecedence)(s.right)<(0,_coderep.getPrecedence)(s)||!_e&&(0,_coderep.getPrecedence)(s.right)===(0,_coderep.getPrecedence)(s))&&(et=this.paren(et,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),tt=!1),(0,_objectAssign2.default)(seq(_,this.sep(Sep.BEFORE_BINOP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_BINOP(s.operator)),et),{containsIn:j||tt||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:b,startsWithLetSquareBracket:k,startsWithFunctionOrClass:$})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,d=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=this,d=a.elements,_=a.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceArrayBinding",value:function(s,a){var c=this,d=a.elements,_=a.rest,b=void 0;return d.length===0?b=_==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),_):(d=d.concat(_==null?[]:[seq(this.t("..."),this.sep(Sep.REST),_)]),b=this.commaSep(d.map(function(k){return c.getAssignmentExpr(k)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),d.length>0&&d[d.length-1]==null&&(b=seq(b,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(b,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,d=a.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,d=a.rest,_=void 0;c.length===0?_=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(_=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),_=d==null?_:this.commaSep([_,seq(this.t("..."),this.sep(Sep.REST),d)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var b=this.brace(_,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return b.startsWithCurly=!0,b}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,d=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,d))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,d=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),d)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return this.brace(seq.apply(void 0,_toConsumableArray$1(c)),s,Sep.BLOCK_BRACE_INITIAL,Sep.BLOCK_BRACE_FINAL,Sep.BLOCK_EMPTY)}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return seq(c,this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceBreakStatement",value:function(s){return seq(this.t("break"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceCallExpression",value:function(s,a){var c=this,d=a.callee,_=a.arguments,b=_.map(function(k,$){return c.p(s.arguments[$],_coderep.Precedence.Assignment,k)});return(0,_objectAssign2.default)(seq(this.p(s.callee,(0,_coderep.getPrecedence)(s),d),this.sep(Sep.CALL),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.CALL_PAREN_BEFORE,Sep.CALL_PAREN_AFTER,Sep.CALL_PAREN_EMPTY)),{startsWithCurly:d.startsWithCurly,startsWithLet:d.startsWithLet,startsWithLetSquareBracket:d.startsWithLetSquareBracket,startsWithFunctionOrClass:d.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,d=a.body;return seq(this.t("catch"),this.sep(Sep.BEFORE_CATCH_BINDING),this.paren(c,Sep.CATCH_PAREN_BEFORE,Sep.CATCH_PAREN_AFTER),this.sep(Sep.AFTER_CATCH_BINDING),d)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=seq(this.t("class"),s.name.name==="*default*"?empty$1():seq(this.sep(Sep.BEFORE_CLASS_NAME),c));return d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_DECLARATION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_BRACE_INITIAL,Sep.CLASS_BRACE_FINAL,Sep.CLASS_EMPTY),this.sep(Sep.AFTER_STATEMENT(s))),b}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,d=a.super,_=a.elements,b=this.t("class");return c!=null&&(b=seq(b,this.sep(Sep.BEFORE_CLASS_NAME),c)),d!=null&&(b=seq(b,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,d))),b=seq(b,this.sep(Sep.BEFORE_CLASS_EXPRESSION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(_)),s,Sep.CLASS_EXPRESSION_BRACE_INITIAL,Sep.CLASS_EXPRESSION_BRACE_FINAL,Sep.CLASS_EXPRESSION_BRACE_EMPTY)),b.startsWithFunctionOrClass=!0,b}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return c=seq(this.sep(Sep.BEFORE_CLASS_ELEMENT),c,this.sep(Sep.AFTER_CLASS_ELEMENT)),s.isStatic?seq(this.t("static"),this.sep(Sep.AFTER_STATIC),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET),this.bracket(d,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,d=a.expression,_=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_EXPRESSION),this.bracket(d,Sep.COMPUTED_MEMBER_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:_,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return this.bracket(this.p(s.expression,_coderep.Precedence.Assignment,c),Sep.COMPUTED_PROPERTY_BRACKET_INTIAL,Sep.COMPUTED_PROPERTY_BRACKET_FINAL)}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate,b=c.containsIn||_.containsIn,k=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_objectAssign2.default)(seq(this.p(s.test,_coderep.Precedence.LogicalOR,c),this.sep(Sep.BEFORE_TERNARY_QUESTION),this.t("?"),this.sep(Sep.AFTER_TERNARY_QUESTION),this.p(s.consequent,_coderep.Precedence.Assignment,d),this.sep(Sep.BEFORE_TERNARY_COLON),this.t(":"),this.sep(Sep.AFTER_TERNARY_COLON),this.p(s.alternate,_coderep.Precedence.Assignment,_)),{containsIn:b,startsWithCurly:k,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceContinueStatement",value:function(s){return seq(this.t("continue"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,d=a.expression;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),this.getAssignmentExpr(d))}},{key:"reduceDebuggerStatement",value:function(s){return seq(this.t("debugger"),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,d=a.test;return seq(this.t("do"),this.sep(Sep.AFTER_DO),c,this.sep(Sep.BEFORE_DOWHILE_WHILE),this.t("while"),this.sep(Sep.AFTER_DOWHILE_WHILE),this.paren(d,Sep.DO_WHILE_TEST_PAREN_BEFORE,Sep.DO_WHILE_TEST_PAREN_AFTER),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceEmptyStatement",value:function(s){return seq(this.t(";"),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,d=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq(d?this.paren(c,Sep.EXPRESSION_STATEMENT_PAREN_BEFORE,Sep.EXPRESSION_STATEMENT_PAREN_AFTER):c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FORIN_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_IN_LET_PAREN_BEFORE,Sep.FOR_IN_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FORIN_IN),this.t("in"),this.sep(Sep.AFTER_FORIN_FOR),d),Sep.FOR_IN_PAREN_BEFORE,Sep.FOR_IN_PAREN_AFTER),this.sep(Sep.BEFORE_FORIN_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,d=a.test,_=a.update,b=a.body;return c&&(c.startsWithLetSquareBracket&&(c=this.paren(c,Sep.FOR_LET_PAREN_BEFORE,Sep.FOR_LET_PAREN_AFTER)),c=noIn(markContainsIn(c))),(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOR_FOR),this.paren(seq(c?seq(this.sep(Sep.BEFORE_FOR_INIT),c,this.sep(Sep.AFTER_FOR_INIT)):this.sep(Sep.EMPTY_FOR_INIT),this.t(";"),d?seq(this.sep(Sep.BEFORE_FOR_TEST),d,this.sep(Sep.AFTER_FOR_TEST)):this.sep(Sep.EMPTY_FOR_TEST),this.t(";"),_?seq(this.sep(Sep.BEFORE_FOR_UPDATE),_,this.sep(Sep.AFTER_FOR_UPDATE)):this.sep(Sep.EMPTY_FOR_UPDATE))),this.sep(Sep.BEFORE_FOR_BODY),b,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:b.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,d=a.right,_=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.t("await"),this.sep(Sep.AFTER_FORAWAIT_AWAIT),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,d)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),_,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_FUNCTION_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),s.name.name==="*default*"?empty$1():c,this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_DECLARATION_BODY),this.brace(_,s,Sep.FUNCTION_BRACE_INITIAL,Sep.FUNCTION_BRACE_FINAL,Sep.FUNCTION_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,d=a.params,_=a.body,b=seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),c||empty$1(),this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_EXPRESSION_BODY),this.brace(_,s,Sep.FUNCTION_EXPRESSION_BRACE_INITIAL,Sep.FUNCTION_EXPRESSION_BRACE_FINAL,Sep.FUNCTION_EXPRESSION_EMPTY));return b.startsWithFunctionOrClass=!0,b}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,d=a.rest;return this.commaSep(c.concat(d==null?[]:[seq(this.t("..."),this.sep(Sep.REST),d)]),Sep.PARAMETER_BEFORE_COMMA,Sep.PARAMETER_AFTER_COMMA)}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,d=a.body;(s.params.rest!=null||s.params.items.length!==1||s.params.items[0].type!=="BindingIdentifier")&&(c=this.paren(c,Sep.ARROW_PARAMETERS_PAREN_BEFORE,Sep.ARROW_PARAMETERS_PAREN_AFTER,Sep.ARROW_PARAMETERS_PAREN_EMPTY));var _=!1;return s.body.type==="FunctionBody"?d=this.brace(d,s,Sep.ARROW_BRACE_INITIAL,Sep.ARROW_BRACE_FINAL,Sep.ARROW_BRACE_EMPTY):d.startsWithCurly?d=this.paren(d,Sep.ARROW_BODY_PAREN_BEFORE,Sep.ARROW_BODY_PAREN_AFTER):d.containsIn&&(_=!0),(0,_objectAssign2.default)(seq(s.isAsync?seq(this.t("async"),this.sep(Sep.BEFORE_ARROW_ASYNC_PARAMS)):empty$1(),c,this.sep(Sep.BEFORE_ARROW),this.t("=>"),this.sep(Sep.AFTER_ARROW),this.p(s.body,_coderep.Precedence.Assignment,d)),{containsIn:_})}},{key:"reduceGetter",value:function(s,a){var c=a.name,d=a.body;return seq(this.t("get"),this.sep(Sep.AFTER_GET),c,this.sep(Sep.BEFORE_GET_PARAMS),this.paren(empty$1(),null,null,Sep.GETTER_PARAMS),this.sep(Sep.BEFORE_GET_BODY),this.brace(d,s,Sep.GET_BRACE_INTIAL,Sep.GET_BRACE_FINAL,Sep.GET_BRACE_EMPTY))}},{key:"reduceIdentifierExpression",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,d=a.consequent,_=a.alternate;return _&&d.endsWithMissingElse&&(d=this.brace(d,s,Sep.MISSING_ELSE_INTIIAL,Sep.MISSING_ELSE_FINAL,Sep.MISSING_ELSE_EMPTY)),(0,_objectAssign2.default)(seq(this.t("if"),this.sep(Sep.AFTER_IF),this.paren(c,Sep.IF_PAREN_BEFORE,Sep.IF_PAREN_AFTER),this.sep(Sep.AFTER_IF_TEST),d,_?seq(this.sep(Sep.BEFORE_ELSE),this.t("else"),this.sep(Sep.AFTER_ELSE),_):empty$1(),this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:_?_.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,d=a.namedImports,_=[];return c!=null&&_.push(c),d.length>0&&_.push(this.brace(this.commaSep(d,Sep.NAMED_IMPORT_BEFORE_COMMA,Sep.NAMED_IMPORT_AFTER_COMMA),s,Sep.IMPORT_BRACE_INTIAL,Sep.IMPORT_BRACE_FINAL,Sep.IMPORT_BRACE_EMPTY)),_.length===0?seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_MODULE),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s))):seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_BINDINGS),this.commaSep(_,Sep.IMPORT_BEFORE_COMMA,Sep.IMPORT_AFTER_COMMA),this.sep(Sep.AFTER_IMPORT_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,d=a.namespaceBinding;return seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_NAMESPACE),c==null?empty$1():seq(c,this.sep(Sep.IMPORT_BEFORE_COMMA),this.t(","),this.sep(Sep.IMPORT_AFTER_COMMA)),this.sep(Sep.BEFORE_IMPORT_STAR),this.t("*"),this.sep(Sep.AFTER_IMPORT_STAR),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),d,this.sep(Sep.AFTER_NAMESPACE_BINDING),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq(this.t(s.name),this.sep(Sep.BEFORE_IMPORT_AS),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),c)}},{key:"reduceExportAllFrom",value:function(s){return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_STAR),this.t("*"),this.sep(Sep.AFTER_EXPORT_STAR),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_FROM_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_LOCAL_BINDINGS),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq(c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}return seq(this.t("export"),this.sep(Sep.AFTER_EXPORT),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?this.paren(c,Sep.EXPORT_PAREN_BEFORE,Sep.EXPORT_PAREN_AFTER):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),c);default:return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),this.p(s.body,_coderep.Precedence.Assignment,c),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?this.t(s.name):seq(this.t(s.name),this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq(c,this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2.default)(seq(this.t(s.label),this.sep(Sep.BEFORE_LABEL_COLON),this.t(":"),this.sep(Sep.AFTER_LABEL_COLON),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return this.t(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return this.t("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return this.t("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return this.t("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,d=a.params,_=a.body;return seq(s.isAsync?seq(this.t("async"),this.sep(Sep.AFTER_METHOD_ASYNC)):empty$1(),s.isGenerator?seq(this.t("*"),this.sep(Sep.AFTER_METHOD_GENERATOR_STAR)):empty$1(),c,this.sep(Sep.AFTER_METHOD_NAME),this.paren(d,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_METHOD_BODY),this.brace(_,s,Sep.METHOD_BRACE_INTIAL,Sep.METHOD_BRACE_FINAL,Sep.METHOD_BRACE_EMPTY))}},{key:"reduceModule",value:function(s,a){var c=a.directives,d=a.items;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.items[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_MODULE_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceNewExpression",value:function(s,a){var c=this,d=a.callee,_=a.arguments,b=_.map(function($,j){return c.p(s.arguments[j],_coderep.Precedence.Assignment,$)}),k=(0,_coderep.getPrecedence)(s.callee)===_coderep.Precedence.Call?this.paren(d,Sep.NEW_CALLEE_PAREN_BEFORE,Sep.NEW_CALLEE_PAREN_AFTER):this.p(s.callee,(0,_coderep.getPrecedence)(s),d);return seq(this.t("new"),this.sep(Sep.AFTER_NEW),k,_.length===0?this.sep(Sep.EMPTY_NEW_CALL):seq(this.sep(Sep.BEFORE_NEW_ARGS),this.paren(this.commaSep(b,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.NEW_PAREN_BEFORE,Sep.NEW_PAREN_AFTER,Sep.NEW_PAREN_EMPTY)))}},{key:"reduceNewTargetExpression",value:function(){return seq(this.t("new"),this.sep(Sep.NEW_TARGET_BEFORE_DOT),this.t("."),this.sep(Sep.NEW_TARGET_AFTER_DOT),this.t("target"))}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,d=this.brace(this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return d.startsWithCurly=!0,d}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2.default)(seq(this.p(s.operand,_coderep.Precedence.New,c),this.sep(Sep.BEFORE_POSTFIX(s.operator)),this.t(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq(this.t(s.operator),this.sep(Sep.UNARY(s.operator)),this.p(s.operand,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq(this.t("return"),c?seq(this.sep(Sep.RETURN),c):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceScript",value:function(s,a){var c=a.directives,d=a.statements;return d.length&&(d[0]=this.parenToAvoidBeingDirective(s.statements[0],d[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_SCRIPT_DIRECTIVES):empty$1()],_toConsumableArray$1(d)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,d=a.param,_=a.body;return seq(this.t("set"),this.sep(Sep.AFTER_SET),c,this.sep(Sep.BEFORE_SET_PARAMS),this.paren(d,Sep.SETTER_PARAM_BEFORE,Sep.SETTER_PARAM_AFTER),this.sep(Sep.BEFORE_SET_BODY),this.brace(_,s,Sep.SET_BRACE_INTIIAL,Sep.SET_BRACE_FINAL,Sep.SET_BRACE_EMPTY))}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,d=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_DOT),this.t(s.property));return d.startsWithLet=c.startsWithLet,d.startsWithCurly=c.startsWithCurly,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass,d}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils.keyword.isIdentifierNameES6(s.value))return this.t(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep.NumberCodeRep(a):this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return this.t("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,d=a.consequent;return seq(this.t("case"),this.sep(Sep.BEFORE_CASE_TEST),c,this.sep(Sep.AFTER_CASE_TEST),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(d)),this.sep(Sep.AFTER_CASE_BODY))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq(this.t("default"),this.sep(Sep.DEFAULT),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(c)),this.sep(Sep.AFTER_DEFAULT_BODY))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,d=a.cases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d)),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,d=a.preDefaultCases,_=a.defaultCase,b=a.postDefaultCases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(d).concat([_],_toConsumableArray$1(b))),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,d=a.elements,_=s.tag==null?empty$1():seq(this.p(s.tag,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.TEMPLATE_TAG));_=seq(_,this.t("`"));for(var b=0,k=s.elements.length;b0&&($+="}"),$+=s.elements[b].rawValue,b=1e3&&o%10===0?(e=o.toString(10),/[eE]/.test(e)?e.replace(/[eE]\+/,"e"):o.toString(10).replace(/0{3,}$/,function(s){return"e"+s.length})):o%1===0?o>1e15&&o<1e20?"0x"+o.toString(16).toUpperCase():o.toString(10).replace(/[eE]\+/,"e"):o.toString(10).replace(/^0\./,".").replace(/[eE]\+/,"e")}tokenStream.TokenStream=function(){function o(){_classCallCheck$1(this,o),this.result="",this.lastNumber=null,this.lastCodePoint=null,this.lastTokenStr="",this.optionalSemi=!1,this.previousWasRegExp=!1,this.partialHtmlComment=!1}return _createClass$1(o,[{key:"putNumber",value:function(s){var a=renderNumber(s);this.put(a),this.lastNumber=a}},{key:"putOptionalSemi",value:function(){this.optionalSemi=!0}},{key:"putRaw",value:function(s){this.result+=s,this.lastTokenStr=s}},{key:"put",value:function(s,a){if(this.optionalSemi&&(this.optionalSemi=!1,s!=="}"&&(this.result+=";",this.lastCodePoint=";",this.previousWasRegExp=!1)),this.lastNumber!==null&&s.length===1&&s==="."){this.result+=needsDoubleDot(this.lastNumber)?"..":".",this.lastNumber=null,this.lastCodePoint=".";return}var c=[].concat(_toConsumableArray(s)).length;if(c>0){this.lastNumber=null;var d=String.fromCodePoint(s.codePointAt(0)),_=this.lastCodePoint;this.lastCodePoint=String.fromCodePoint(s.codePointAt(c-1));var b=this.previousWasRegExp;this.previousWasRegExp=a,_&&((_==="+"||_==="-")&&_===d||isIdentifierPartES6(_)&&isIdentifierPartES6(d)||_==="/"&&d==="/"||b&&d==="i"||this.partialHtmlComment&&s.startsWith("--"))&&(this.result+=" ")}this.partialHtmlComment=this.lastTokenStr.endsWith("<")&&s==="!",this.result+=s,this.lastTokenStr=s}}]),o}();Object.defineProperty(withLocation,"__esModule",{value:!0});var _createClass=function(){function o(e,s){for(var a=0;a1?c-1:0),_=1;_1?c-1:0),_=1;_1?c-1:0),_=1;_1&&arguments[1]!==void 0?arguments[1]:new _minimalCodegen2.default,s=new TokenStreamWithLocation,a=(0,_shiftReducer.reduce)(addLocationToReducer(e),o);return a.emit(s),{source:s.result,locations:s.locations}}(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.codeGenWithLocation=o.SemiOp=o.CommaSep=o.Semi=o.Seq=o.ContainsIn=o.NoIn=o.Brace=o.Bracket=o.Paren=o.NumberCodeRep=o.Token=o.Empty=o.CodeRep=o.escapeStringLiteral=o.getPrecedence=o.Precedence=o.Sep=o.FormattedCodeGen=o.ExtensibleCodeGen=o.MinimalCodeGen=void 0,o.default=j;var e=minimalCodegen;Object.defineProperty(o,"MinimalCodeGen",{enumerable:!0,get:function(){return $(e).default}});var s=formattedCodegen;Object.defineProperty(o,"ExtensibleCodeGen",{enumerable:!0,get:function(){return s.ExtensibleCodeGen}}),Object.defineProperty(o,"FormattedCodeGen",{enumerable:!0,get:function(){return s.FormattedCodeGen}}),Object.defineProperty(o,"Sep",{enumerable:!0,get:function(){return s.Sep}});var a=coderep;Object.defineProperty(o,"Precedence",{enumerable:!0,get:function(){return a.Precedence}}),Object.defineProperty(o,"getPrecedence",{enumerable:!0,get:function(){return a.getPrecedence}}),Object.defineProperty(o,"escapeStringLiteral",{enumerable:!0,get:function(){return a.escapeStringLiteral}}),Object.defineProperty(o,"CodeRep",{enumerable:!0,get:function(){return a.CodeRep}}),Object.defineProperty(o,"Empty",{enumerable:!0,get:function(){return a.Empty}}),Object.defineProperty(o,"Token",{enumerable:!0,get:function(){return a.Token}}),Object.defineProperty(o,"NumberCodeRep",{enumerable:!0,get:function(){return a.NumberCodeRep}}),Object.defineProperty(o,"Paren",{enumerable:!0,get:function(){return a.Paren}}),Object.defineProperty(o,"Bracket",{enumerable:!0,get:function(){return a.Bracket}}),Object.defineProperty(o,"Brace",{enumerable:!0,get:function(){return a.Brace}}),Object.defineProperty(o,"NoIn",{enumerable:!0,get:function(){return a.NoIn}}),Object.defineProperty(o,"ContainsIn",{enumerable:!0,get:function(){return a.ContainsIn}}),Object.defineProperty(o,"Seq",{enumerable:!0,get:function(){return a.Seq}}),Object.defineProperty(o,"Semi",{enumerable:!0,get:function(){return a.Semi}}),Object.defineProperty(o,"CommaSep",{enumerable:!0,get:function(){return a.CommaSep}}),Object.defineProperty(o,"SemiOp",{enumerable:!0,get:function(){return a.SemiOp}});var c=withLocation;Object.defineProperty(o,"codeGenWithLocation",{enumerable:!0,get:function(){return $(c).default}});var d=dist$4,_=$(d),b=tokenStream,k=$(e);function $(_e){return _e&&_e.__esModule?_e:{default:_e}}function j(_e){var et=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new k.default,tt=new b.TokenStream,nt=(0,_.default)(et,_e);return nt.emit(tt),tt.result}})(dist);var shiftCodegen=getDefaultExportFromCjs(dist);const{replace}=estraverse,codegen=shiftCodegen.default||shiftCodegen,{Pattern:Pattern$2}=strudel,isNote=o=>/^[a-gC-G][bs]?[0-9]$/.test(o);var shapeshifter=o=>{const{code:e,addReturn:s}=wrapAsync(o),a=dist$7.parseScriptWithLocation(e),c=[],d=[],_=replace(a.tree,{enter(k,$){var tt,nt,st;if(d.push($),d.some(rt=>c.includes(rt)))return k;if(isBackTickString(k))return minifyWithLocation(k,k,a.locations,c);if(((tt=k.directives)==null?void 0:tt.length)===1&&!((nt=k.statements)!=null&&nt.length)){const rt=new LiteralStringExpression_1({value:k.directives[0].rawValue}),it=minifyWithLocation(rt,k.directives[0],a.locations,c);return wt(Ot({},k),{directives:[],statements:[it]})}if(isStringWithDoubleQuotes(k,a.locations,e))return minifyWithLocation(k,k,a.locations,c);const _e={"*":"fast","/":"slow","&":"stack","&&":"append"};if(k.type==="BinaryExpression"&&_e[k.operator]&&["LiteralNumericExpression","LiteralStringExpression","IdentifierExpression"].includes((st=k.right)==null?void 0:st.type)&&canBeOverloaded(k.left)){let rt=k.left;return k.left.type==="IdentifierExpression"&&(rt=wrapFunction("reify",k.left)),new CallExpression_1({callee:new StaticMemberExpression_1({property:_e[k.operator],object:wrapFunction("reify",rt)}),arguments:[k.right]})}const et=isPatternArg(d)||hasModifierCall($);if(k.type==="CallExpression"&&k.callee.name==="pure"){const rt=k.arguments[0];return reifyWithLocation(rt,k.arguments[0],a.locations,c)}if(k.type==="IdentifierExpression"){if(isNote(k.name)){const rt=k.name[1]==="s"?k.name.replace("s","#"):k.name;return et?reifyWithLocation(new LiteralStringExpression_1({value:rt}),k,a.locations,c):new LiteralStringExpression_1({value:rt})}if(k.name==="r")return new IdentifierExpression_1({name:"silence"})}return["LiteralStringExpression"].includes(k.type)&&et?reifyWithLocation(k,k,a.locations,c):addMiniNotationLocations(k,a.locations,c)},leave(){d.pop()}});return s(_),codegen(_)};function wrapAsync(o){return o=`(async () => { +${o} +})()`,{code:o,addReturn:s=>{const a=s.statements[0].expression.callee.body;a.statements=a.statements.slice(0,-1).concat([new ReturnStatement_1({expression:a.statements.slice(-1)[0]})])}}}function addMiniNotationLocations(o,e,s){const a=["mini","m"];if(o.type==="CallExpression"&&a.includes(o.callee.name)){if(o.arguments.length>1)return console.warn("multi arg mini locations not supported yet..."),o;const c=o.arguments[0];return minifyWithLocation(c,c,e,s)}return o.type==="StaticMemberExpression"&&a.includes(o.property)?minifyWithLocation(o.object,o,e,s):o}function wrapFunction(o,...e){return new CallExpression_1({callee:new IdentifierExpression_1({name:o}),arguments:e})}function isBackTickString(o){return o.type==="TemplateExpression"&&o.elements.length===1}function isStringWithDoubleQuotes(o,e,s){if(o.type!=="LiteralStringExpression")return!1;const a=e.get(o);return s.slice(a.start.offset,a.end.offset)[0]==='"'}function isPatternArg(o){if(!o.length)return!1;const e=o.slice(0,-1),s=o[o.length-1];return isPatternFactory(s)?!0:(s==null?void 0:s.type)==="ArrayExpression"?isPatternArg(e):!1}function hasModifierCall(o){return(o==null?void 0:o.type)==="StaticMemberExpression"&&Object.keys(Pattern$2.prototype.composable).includes(o.property)}const factories=Object.keys(Pattern$2.prototype.factories).concat(["mini"]);function isPatternFactory(o){return(o==null?void 0:o.type)==="CallExpression"&&factories.includes(o.callee.name)}function canBeOverloaded(o){return o.type==="IdentifierExpression"&&isNote(o.name)||isPatternFactory(o)}function reifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),d=new CallExpression_1({callee:new StaticMemberExpression_1({object:wrapFunction("reify",o),property:"withLocation"}),arguments:c});return a.push(d),d}function minifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),d=wrapFunction("mini",o),_=new CallExpression_1({callee:new StaticMemberExpression_1({object:d,property:"withMiniLocation"}),arguments:c});return a.push(_),_}function getLocationArguments(o,e){const s=e.get(o),a=-1;return[new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.start.line+a}),new LiteralNumericExpression_1({value:s.start.column}),new LiteralNumericExpression_1({value:s.start.offset})]}),new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.end.line+a}),new LiteralNumericExpression_1({value:s.end.column}),new LiteralNumericExpression_1({value:s.end.offset})]})]}const{isPattern,Pattern:Pattern$1}=strudel;let scoped=!1;const evalScope=async(...o)=>{scoped&&console.warn("@strudel.cycles/eval evalScope was called more than once."),scoped=!0;const e=await Promise.allSettled(o),s=e.filter(a=>a.status==="fulfilled").map(a=>a.value);e.forEach((a,c)=>{a.status==="rejected"&&console.warn(`evalScope: module with index ${c} could not be loaded:`,a.reason)}),Object.assign(globalThis,...s,Pattern$1.prototype.bootstrap())};function safeEval(o){return Function('"use strict";return ('+o+")")()}const evaluate=async o=>{scoped||await evalScope();const e=shapeshifter(o);let s=await safeEval(e);if(!isPattern(s)){console.log("evaluated",s);const a=`got "${typeof s}" instead of pattern`;throw new Error(a+(typeof s=="function"?", did you forget to call a function?":"."))}return{mode:"javascript",pattern:s}};let extend="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(o=>o?parseInt(o,36):1);for(let o=1;oo)return extend[e-1]<=o;return!1}function isRegionalIndicator(o){return o>=127462&&o<=127487}const ZWJ=8205;function findClusterBreak(o,e,s=!0,a=!0){return(s?nextClusterBreak:prevClusterBreak)(o,e,a)}function nextClusterBreak(o,e,s){if(e==o.length)return e;e&&surrogateLow(o.charCodeAt(e))&&surrogateHigh(o.charCodeAt(e-1))&&e--;let a=codePointAt(o,e);for(e+=codePointSize(a);e=0&&isRegionalIndicator(codePointAt(o,_));)d++,_-=2;if(d%2==0)break;e+=2}else break}return e}function prevClusterBreak(o,e,s){for(;e>0;){let a=nextClusterBreak(o,e-2,s);if(a=56320&&o<57344}function surrogateHigh(o){return o>=55296&&o<56320}function codePointAt(o,e){let s=o.charCodeAt(e);if(!surrogateHigh(s)||e+1==o.length)return s;let a=o.charCodeAt(e+1);return surrogateLow(a)?(s-55296<<10)+(a-56320)+65536:s}function fromCodePoint(o){return o<=65535?String.fromCharCode(o):(o-=65536,String.fromCharCode((o>>10)+55296,(o&1023)+56320))}function codePointSize(o){return o<65536?1:2}function countColumn(o,e,s=o.length){let a=0;for(let c=0;c=e)return c;if(c==o.length)break;d+=o.charCodeAt(c)==9?s-d%s:1,c=findClusterBreak(o,c)}return a===!0?-1:o.length}class Text{constructor(){}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,s,a){let c=[];return this.decompose(0,e,c,2),a.length&&a.decompose(0,a.length,c,3),this.decompose(s,this.length,c,1),TextNode.from(c,this.length-(s-e)+a.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,s=this.length){let a=[];return this.decompose(e,s,a,0),TextNode.from(a,s-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let s=this.scanIdentical(e,1),a=this.length-this.scanIdentical(e,-1),c=new RawTextCursor(this),d=new RawTextCursor(e);for(let _=s,b=s;;){if(c.next(_),d.next(_),_=0,c.lineBreak!=d.lineBreak||c.done!=d.done||c.value!=d.value)return!1;if(b+=c.value.length,c.done||b>=a)return!0}}iter(e=1){return new RawTextCursor(this,e)}iterRange(e,s=this.length){return new PartialTextCursor(this,e,s)}iterLines(e,s){let a;if(e==null)a=this.iter();else{s==null&&(s=this.lines+1);let c=this.line(e).from;a=this.iterRange(c,Math.max(c,s==this.lines+1?this.length:s<=1?0:this.line(s-1).to))}return new LineCursor(a)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?Text.empty:e.length<=32?new TextLeaf(e):TextNode.from(TextLeaf.split(e,[]))}}class TextLeaf extends Text{constructor(e,s=textLength(e)){super(),this.text=e,this.length=s}get lines(){return this.text.length}get children(){return null}lineInner(e,s,a,c){for(let d=0;;d++){let _=this.text[d],b=c+_.length;if((s?a:b)>=e)return new Line(c,b,a,_);c=b+1,a++}}decompose(e,s,a,c){let d=e<=0&&s>=this.length?this:new TextLeaf(sliceText(this.text,e,s),Math.min(s,this.length)-Math.max(0,e));if(c&1){let _=a.pop(),b=appendText(d.text,_.text.slice(),0,d.length);if(b.length<=32)a.push(new TextLeaf(b,_.length+d.length));else{let k=b.length>>1;a.push(new TextLeaf(b.slice(0,k)),new TextLeaf(b.slice(k)))}}else a.push(d)}replace(e,s,a){if(!(a instanceof TextLeaf))return super.replace(e,s,a);let c=appendText(this.text,appendText(a.text,sliceText(this.text,0,e)),s),d=this.length+a.length-(s-e);return c.length<=32?new TextLeaf(c,d):TextNode.from(TextLeaf.split(c,[]),d)}sliceString(e,s=this.length,a=` +`){let c="";for(let d=0,_=0;d<=s&&_e&&_&&(c+=a),ed&&(c+=b.slice(Math.max(0,e-d),s-d)),d=k+1}return c}flatten(e){for(let s of this.text)e.push(s)}scanIdentical(){return 0}static split(e,s){let a=[],c=-1;for(let d of e)a.push(d),c+=d.length+1,a.length==32&&(s.push(new TextLeaf(a,c)),a=[],c=-1);return c>-1&&s.push(new TextLeaf(a,c)),s}}class TextNode extends Text{constructor(e,s){super(),this.children=e,this.length=s,this.lines=0;for(let a of e)this.lines+=a.lines}lineInner(e,s,a,c){for(let d=0;;d++){let _=this.children[d],b=c+_.length,k=a+_.lines-1;if((s?k:b)>=e)return _.lineInner(e,s,a,c);c=b+1,a=k+1}}decompose(e,s,a,c){for(let d=0,_=0;_<=s&&d=_){let $=c&((_<=e?1:0)|(k>=s?2:0));_>=e&&k<=s&&!$?a.push(b):b.decompose(e-_,s-_,a,$)}_=k+1}}replace(e,s,a){if(a.lines=d&&s<=b){let k=_.replace(e-d,s-d,a),$=this.lines-_.lines+k.lines;if(k.lines<$>>5-1&&k.lines>$>>5+1){let j=this.children.slice();return j[c]=k,new TextNode(j,this.length-(s-e)+a.length)}return super.replace(d,b,k)}d=b+1}return super.replace(e,s,a)}sliceString(e,s=this.length,a=` +`){let c="";for(let d=0,_=0;de&&d&&(c+=a),e_&&(c+=b.sliceString(e-_,s-_,a)),_=k+1}return c}flatten(e){for(let s of this.children)s.flatten(e)}scanIdentical(e,s){if(!(e instanceof TextNode))return 0;let a=0,[c,d,_,b]=s>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;c+=s,d+=s){if(c==_||d==b)return a;let k=this.children[c],$=e.children[d];if(k!=$)return a+k.scanIdentical($,s);a+=k.length+1}}static from(e,s=e.reduce((a,c)=>a+c.length+1,-1)){let a=0;for(let tt of e)a+=tt.lines;if(a<32){let tt=[];for(let nt of e)nt.flatten(tt);return new TextLeaf(tt,s)}let c=Math.max(32,a>>5),d=c<<1,_=c>>1,b=[],k=0,$=-1,j=[];function _e(tt){let nt;if(tt.lines>d&&tt instanceof TextNode)for(let st of tt.children)_e(st);else tt.lines>_&&(k>_||!k)?(et(),b.push(tt)):tt instanceof TextLeaf&&k&&(nt=j[j.length-1])instanceof TextLeaf&&tt.lines+nt.lines<=32?(k+=tt.lines,$+=tt.length+1,j[j.length-1]=new TextLeaf(nt.text.concat(tt.text),nt.length+1+tt.length)):(k+tt.lines>c&&et(),k+=tt.lines,$+=tt.length+1,j.push(tt))}function et(){k!=0&&(b.push(j.length==1?j[0]:TextNode.from(j,$)),$=-1,k=j.length=0)}for(let tt of e)_e(tt);return et(),b.length==1?b[0]:new TextNode(b,s)}}Text.empty=new TextLeaf([""],0);function textLength(o){let e=-1;for(let s of o)e+=s.length+1;return e}function appendText(o,e,s=0,a=1e9){for(let c=0,d=0,_=!0;d=s&&(k>a&&(b=b.slice(0,a-c)),c0?1:(e instanceof TextLeaf?e.text.length:e.children.length)<<1]}nextInner(e,s){for(this.done=this.lineBreak=!1;;){let a=this.nodes.length-1,c=this.nodes[a],d=this.offsets[a],_=d>>1,b=c instanceof TextLeaf?c.text.length:c.children.length;if(_==(s>0?b:0)){if(a==0)return this.done=!0,this.value="",this;s>0&&this.offsets[a-1]++,this.nodes.pop(),this.offsets.pop()}else if((d&1)==(s>0?0:1)){if(this.offsets[a]+=s,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(c instanceof TextLeaf){let k=c.text[_+(s<0?-1:0)];if(this.offsets[a]+=s,k.length>Math.max(0,e))return this.value=e==0?k:s>0?k.slice(e):k.slice(0,k.length-e),this;e-=k.length}else{let k=c.children[_+(s<0?-1:0)];e>k.length?(e-=k.length,this.offsets[a]+=s):(s<0&&this.offsets[a]--,this.nodes.push(k),this.offsets.push(s>0?1:(k instanceof TextLeaf?k.text.length:k.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class PartialTextCursor{constructor(e,s,a){this.value="",this.done=!1,this.cursor=new RawTextCursor(e,s>a?-1:1),this.pos=s>a?e.length:0,this.from=Math.min(s,a),this.to=Math.max(s,a)}nextInner(e,s){if(s<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,s<0?this.pos-this.to:this.from-this.pos);let a=s<0?this.pos-this.from:this.to-this.pos;e>a&&(e=a),a-=e;let{value:c}=this.cursor.next(e);return this.pos+=(c.length+e)*s,this.value=c.length<=a?c:s<0?c.slice(c.length-a):c.slice(0,a),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class LineCursor{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:s,lineBreak:a,value:c}=this.inner.next(e);return s?(this.done=!0,this.value=""):a?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=c,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol!="undefined"&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this});class Line{constructor(e,s,a,c){this.from=e,this.to=s,this.number=a,this.text=c}get length(){return this.to-this.from}}const DefaultSplit=/\r\n?|\n/;var MapMode=function(o){return o[o.Simple=0]="Simple",o[o.TrackDel=1]="TrackDel",o[o.TrackBefore=2]="TrackBefore",o[o.TrackAfter=3]="TrackAfter",o}(MapMode||(MapMode={}));class ChangeDesc{constructor(e){this.sections=e}get length(){let e=0;for(let s=0;se)return d+(e-c);d+=b}else{if(a!=MapMode.Simple&&$>=e&&(a==MapMode.TrackDel&&ce||a==MapMode.TrackBefore&&ce))return null;if($>e||$==e&&s<0&&!b)return e==c||s<0?d:d+k;d+=k}c=$}if(e>c)throw new RangeError(`Position ${e} is out of range for changeset of length ${c}`);return d}touchesRange(e,s=e){for(let a=0,c=0;a=0&&c<=s&&b>=e)return cs?"cover":!0;c=b}return!1}toString(){let e="";for(let s=0;s=0?":"+c:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(s=>typeof s!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(e)}}class ChangeSet extends ChangeDesc{constructor(e,s){super(e),this.inserted=s}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return iterChanges(this,(s,a,c,d,_)=>e=e.replace(c,c+(a-s),_),!1),e}mapDesc(e,s=!1){return mapSet(this,e,s,!0)}invert(e){let s=this.sections.slice(),a=[];for(let c=0,d=0;c=0){s[c]=b,s[c+1]=_;let k=c>>1;for(;a.length0&&addInsert(a,s,d.text),d.forward(j),b+=j}let $=e[_++];for(;b<$;){if(d.done)break e;let j=Math.min(d.len,$-b);addSection(s,j,-1),addSection(c,j,d.ins==-1?-1:d.off==0?d.ins:0),d.forward(j),b+=j}}return{changes:new ChangeSet(s,a),filtered:new ChangeDesc(c)}}toJSON(){let e=[];for(let s=0;s>1].toJSON()))}return e}static of(e,s,a){let c=[],d=[],_=0,b=null;function k(j=!1){if(!j&&!c.length)return;_et||_e<0||et>s)throw new RangeError(`Invalid change range ${_e} to ${et} (in doc of length ${s})`);let nt=tt?typeof tt=="string"?Text.of(tt.split(a||DefaultSplit)):tt:Text.empty,st=nt.length;if(_e==et&&st==0)return;_e<_&&k(),_e>_&&addSection(c,_e-_,-1),addSection(c,et-_e,st),addInsert(d,c,nt),_=et}}return $(e),k(!b),b}static empty(e){return new ChangeSet(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let s=[],a=[];for(let c=0;cb&&typeof _!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(d.length==1)s.push(d[0],0);else{for(;a.length=0&&s<=0&&s==o[c+1]?o[c]+=e:e==0&&o[c]==0?o[c+1]+=s:a?(o[c]+=e,o[c+1]+=s):o.push(e,s)}function addInsert(o,e,s){if(s.length==0)return;let a=e.length-2>>1;if(a>1])),!(s||_==o.sections.length||o.sections[_+1]<0);)b=o.sections[_++],k=o.sections[_++];e(c,$,d,j,_e),c=$,d=j}}}function mapSet(o,e,s,a=!1){let c=[],d=a?[]:null,_=new SectionIter(o),b=new SectionIter(e);for(let k=0,$=0;;)if(_.ins==-1)k+=_.len,_.next();else if(b.ins==-1&&$=0&&(_.done||$$&&!_.done&&k+_.len<$+b.len;)k+=_.len,_.next();$+=b.len,b.next()}else if(_.ins>=0){let j=0,_e=k+_.len;for(;;)if(b.ins>=0&&$>k&&$+b.len<_e)j+=b.ins,$+=b.len,b.next();else if(b.ins==-1&&$<_e){let et=Math.min(b.len,_e-$);j+=et,b.forward(et),$+=et}else break;addSection(c,j,_.ins),d&&addInsert(d,c,_.text),k=_e,_.next()}else{if(_.done&&b.done)return d?new ChangeSet(c,d):new ChangeDesc(c);throw new Error("Mismatched change set lengths")}}function composeSets(o,e,s=!1){let a=[],c=s?[]:null,d=new SectionIter(o),_=new SectionIter(e);for(let b=!1;;){if(d.done&&_.done)return c?new ChangeSet(a,c):new ChangeDesc(a);if(d.ins==0)addSection(a,d.len,0,b),d.next();else if(_.len==0&&!_.done)addSection(a,0,_.ins,b),c&&addInsert(c,a,_.text),_.next();else{if(d.done||_.done)throw new Error("Mismatched change set lengths");{let k=Math.min(d.len2,_.len),$=a.length;if(d.ins==-1){let j=_.ins==-1?-1:_.off?0:_.ins;addSection(a,k,j,b),c&&j&&addInsert(c,a,_.text)}else _.ins==-1?(addSection(a,d.off?0:d.len,k,b),c&&addInsert(c,a,d.textBit(k))):(addSection(a,d.off?0:d.len,_.off?0:_.ins,b),c&&!_.off&&addInsert(c,a,_.text));b=(d.ins>k||_.ins>=0&&_.len>k)&&(b||a.length>$),d.forward2(k),_.forward(k)}}}}class SectionIter{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return s>=e.length?Text.empty:e[s]}textBit(e){let{inserted:s}=this.set,a=this.i-2>>1;return a>=s.length&&!e?Text.empty:s[a].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class SelectionRange{constructor(e,s,a){this.from=e,this.to=s,this.flags=a}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,s=-1){let a,c;return this.empty?a=c=e.mapPos(this.from,s):(a=e.mapPos(this.from,1),c=e.mapPos(this.to,-1)),a==this.from&&c==this.to?this:new SelectionRange(a,c,this.flags)}extend(e,s=e){if(e<=this.anchor&&s>=this.anchor)return EditorSelection.range(e,s);let a=Math.abs(e-this.anchor)>Math.abs(s-this.anchor)?e:s;return EditorSelection.range(this.anchor,a)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(e.anchor,e.head)}}class EditorSelection{constructor(e,s=0){this.ranges=e,this.mainIndex=s}map(e,s=-1){return e.empty?this:EditorSelection.create(this.ranges.map(a=>a.map(e,s)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let s=0;se.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(e.ranges.map(s=>SelectionRange.fromJSON(s)),e.main)}static single(e,s=e){return new EditorSelection([EditorSelection.range(e,s)],0)}static create(e,s=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let a=0,c=0;ce?4:0))}}function normalized(o,e=0){let s=o[e];o.sort((a,c)=>a.from-c.from),e=o.indexOf(s);for(let a=1;ac.head?EditorSelection.range(b,_):EditorSelection.range(_,b))}}return new EditorSelection(o,e)}function checkSelection(o,e){for(let s of o.ranges)if(s.to>e)throw new RangeError("Selection points outside of document")}let nextID=0;class Facet{constructor(e,s,a,c,d){this.combine=e,this.compareInput=s,this.compare=a,this.isStatic=c,this.extensions=d,this.id=nextID++,this.default=e([])}static define(e={}){return new Facet(e.combine||(s=>s),e.compareInput||((s,a)=>s===a),e.compare||(e.combine?(s,a)=>s===a:sameArray$1),!!e.static,e.enables)}of(e){return new FacetProvider([],this,0,e)}compute(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,1,s)}computeN(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,2,s)}from(e,s){return s||(s=a=>a),this.compute([e],a=>s(a.field(e)))}}function sameArray$1(o,e){return o==e||o.length==e.length&&o.every((s,a)=>s===e[a])}class FacetProvider{constructor(e,s,a,c){this.dependencies=e,this.facet=s,this.type=a,this.value=c,this.id=nextID++}dynamicSlot(e){var s;let a=this.value,c=this.facet.compareInput,d=this.id,_=e[d]>>1,b=this.type==2,k=!1,$=!1,j=[];for(let _e of this.dependencies)_e=="doc"?k=!0:_e=="selection"?$=!0:(((s=e[_e.id])!==null&&s!==void 0?s:1)&1)==0&&j.push(e[_e.id]);return{create(_e){return _e.values[_]=a(_e),1},update(_e,et){if(k&&et.docChanged||$&&(et.docChanged||et.selection)||j.some(tt=>(ensureAddr(_e,tt)&1)>0)){let tt=a(_e);if(b?!compareArray(tt,_e.values[_],c):!c(tt,_e.values[_]))return _e.values[_]=tt,1}return 0},reconfigure(_e,et){let tt=a(_e),nt=et.config.address[d];if(nt!=null){let st=getAddr(et,nt);if(b?compareArray(tt,st,c):c(tt,st))return _e.values[_]=st,0}return _e.values[_]=tt,1}}}}function compareArray(o,e,s){if(o.length!=e.length)return!1;for(let a=0;ao[k.id]),c=s.map(k=>k.type),d=a.filter(k=>!(k&1)),_=o[e.id]>>1;function b(k){let $=[];for(let j=0;jensureAddr(k,_e)&1))return 0;let j=b(k);return e.compare(j,k.values[_])?0:(k.values[_]=j,1)},reconfigure(k,$){let j=a.some(nt=>ensureAddr(k,nt)&1),_e=$.config.facets[e.id],et=$.facet(e);if(_e&&!j&&sameArray$1(s,_e))return k.values[_]=et,0;let tt=b(k);return e.compare(tt,et)?(k.values[_]=et,0):(k.values[_]=tt,1)}}}const initField=Facet.define({static:!0});class StateField{constructor(e,s,a,c,d){this.id=e,this.createF=s,this.updateF=a,this.compareF=c,this.spec=d,this.provides=void 0}static define(e){let s=new StateField(nextID++,e.create,e.update,e.compare||((a,c)=>a===c),e);return e.provide&&(s.provides=e.provide(s)),s}create(e){let s=e.facet(initField).find(a=>a.field==this);return((s==null?void 0:s.create)||this.createF)(e)}slot(e){let s=e[this.id]>>1;return{create:a=>(a.values[s]=this.create(a),1),update:(a,c)=>{let d=a.values[s],_=this.updateF(d,c);return this.compareF(d,_)?0:(a.values[s]=_,1)},reconfigure:(a,c)=>c.config.address[this.id]!=null?(a.values[s]=c.field(this),0):(a.values[s]=this.create(a),1)}}init(e){return[this,initField.of({field:this,create:e})]}get extension(){return this}}const Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(o){return e=>new PrecExtension(e,o)}const Prec={lowest:prec(Prec_.lowest),low:prec(Prec_.low),default:prec(Prec_.default),high:prec(Prec_.high),highest:prec(Prec_.highest),fallback:prec(Prec_.lowest),extend:prec(Prec_.high),override:prec(Prec_.highest)};class PrecExtension{constructor(e,s){this.inner=e,this.prec=s}}class Compartment{of(e){return new CompartmentInstance(this,e)}reconfigure(e){return Compartment.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class CompartmentInstance{constructor(e,s){this.compartment=e,this.inner=s}}class Configuration{constructor(e,s,a,c,d,_){for(this.base=e,this.compartments=s,this.dynamicSlots=a,this.address=c,this.staticValues=d,this.facets=_,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,s,a){let c=[],d=Object.create(null),_=new Map;for(let et of flatten(e,s,_))et instanceof StateField?c.push(et):(d[et.facet.id]||(d[et.facet.id]=[])).push(et);let b=Object.create(null),k=[],$=[];for(let et of c)b[et.id]=$.length<<1,$.push(tt=>et.slot(tt));let j=a==null?void 0:a.config.facets;for(let et in d){let tt=d[et],nt=tt[0].facet,st=j&&j[et]||[];if(tt.every(rt=>rt.type==0))if(b[nt.id]=k.length<<1|1,sameArray$1(st,tt))k.push(a.facet(nt));else{let rt=nt.combine(tt.map(it=>it.value));k.push(a&&nt.compare(rt,a.facet(nt))?a.facet(nt):rt)}else{for(let rt of tt)rt.type==0?(b[rt.id]=k.length<<1|1,k.push(rt.value)):(b[rt.id]=$.length<<1,$.push(it=>rt.dynamicSlot(it)));b[nt.id]=$.length<<1,$.push(rt=>dynamicFacetSlot(rt,nt,tt))}}let _e=$.map(et=>et(b));return new Configuration(e,_,_e,b,k,d)}}function flatten(o,e,s){let a=[[],[],[],[],[]],c=new Map;function d(_,b){let k=c.get(_);if(k!=null){if(k>=b)return;let $=a[k].indexOf(_);$>-1&&a[k].splice($,1),_ instanceof CompartmentInstance&&s.delete(_.compartment)}if(c.set(_,b),Array.isArray(_))for(let $ of _)d($,b);else if(_ instanceof CompartmentInstance){if(s.has(_.compartment))throw new RangeError("Duplicate use of compartment in extensions");let $=e.get(_.compartment)||_.inner;s.set(_.compartment,$),d($,b)}else if(_ instanceof PrecExtension)d(_.inner,_.prec);else if(_ instanceof StateField)a[b].push(_),_.provides&&d(_.provides,b);else if(_ instanceof FacetProvider)a[b].push(_),_.facet.extensions&&d(_.facet.extensions,b);else{let $=_.extension;if(!$)throw new Error(`Unrecognized extension value in extension set (${_}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);d($,b)}}return d(o,Prec_.default),a.reduce((_,b)=>_.concat(b))}function ensureAddr(o,e){if(e&1)return 2;let s=e>>1,a=o.status[s];if(a==4)throw new Error("Cyclic dependency between fields and/or facets");if(a&2)return a;o.status[s]=4;let c=o.computeSlot(o,o.config.dynamicSlots[s]);return o.status[s]=2|c}function getAddr(o,e){return e&1?o.config.staticValues[e>>1]:o.values[e>>1]}const languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:o=>o.some(e=>e),static:!0}),lineSeparator=Facet.define({combine:o=>o.length?o[0]:void 0,static:!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly=Facet.define({combine:o=>o.length?o[0]:!1});class Annotation{constructor(e,s){this.type=e,this.value=s}static define(){return new AnnotationType}}class AnnotationType{of(e){return new Annotation(this,e)}}class StateEffectType{constructor(e){this.map=e}of(e){return new StateEffect(this,e)}}class StateEffect{constructor(e,s){this.type=e,this.value=s}map(e){let s=this.type.map(this.value,e);return s===void 0?void 0:s==this.value?this:new StateEffect(this.type,s)}is(e){return this.type==e}static define(e={}){return new StateEffectType(e.map||(s=>s))}static mapEffects(e,s){if(!e.length)return e;let a=[];for(let c of e){let d=c.map(s);d&&a.push(d)}return a}}StateEffect.reconfigure=StateEffect.define();StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(e,s,a,c,d,_){this.startState=e,this.changes=s,this.selection=a,this.effects=c,this.annotations=d,this.scrollIntoView=_,this._doc=null,this._state=null,a&&checkSelection(a,s.newLength),d.some(b=>b.type==Transaction.time)||(this.annotations=d.concat(Transaction.time.of(Date.now())))}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let s of this.annotations)if(s.type==e)return s.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let s=this.annotation(Transaction.userEvent);return!!(s&&(s==e||s.length>e.length&&s.slice(0,e.length)==e&&s[e.length]=="."))}}Transaction.time=Annotation.define();Transaction.userEvent=Annotation.define();Transaction.addToHistory=Annotation.define();Transaction.remote=Annotation.define();function joinRanges(o,e){let s=[];for(let a=0,c=0;;){let d,_;if(a=o[a]))d=o[a++],_=o[a++];else if(c=0;c--){let d=a[c](o);d instanceof Transaction?o=d:Array.isArray(d)&&d.length==1&&d[0]instanceof Transaction?o=d[0]:o=resolveTransaction(e,asArray$1(d),!1)}return o}function extendTransaction(o){let e=o.startState,s=e.facet(transactionExtender),a=o;for(let c=s.length-1;c>=0;c--){let d=s[c](o);d&&Object.keys(d).length&&(a=mergeTransaction(o,resolveTransactionInner(e,d,o.changes.newLength),!0))}return a==o?o:new Transaction(e,o.changes,o.selection,a.effects,a.annotations,a.scrollIntoView)}const none$3=[];function asArray$1(o){return o==null?none$3:Array.isArray(o)?o:[o]}var CharCategory=function(o){return o[o.Word=0]="Word",o[o.Space=1]="Space",o[o.Other=2]="Other",o}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wordChar;try{wordChar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(o){}function hasWordChar(o){if(wordChar)return wordChar.test(o);for(let e=0;e"\x80"&&(s.toUpperCase()!=s.toLowerCase()||nonASCIISingleCaseWordChar.test(s)))return!0}return!1}function makeCategorizer(o){return e=>{if(!/\S/.test(e))return CharCategory.Space;if(hasWordChar(e))return CharCategory.Word;for(let s=0;s-1)return CharCategory.Word;return CharCategory.Other}}class EditorState{constructor(e,s,a,c,d,_){this.config=e,this.doc=s,this.selection=a,this.values=c,this.status=e.statusTemplate.slice(),this.computeSlot=d,_&&(_._state=this);for(let b=0;bc.set(k,b)),s=null),c.set(_.value.compartment,_.value.extension)):_.is(StateEffect.reconfigure)?(s=null,a=_.value):_.is(StateEffect.appendConfig)&&(s=null,a=asArray$1(a).concat(_.value));let d;s?d=e.startState.values.slice():(s=Configuration.resolve(a,c,this),d=new EditorState(s,this.doc,this.selection,s.dynamicSlots.map(()=>null),(b,k)=>k.reconfigure(b,this),null).values),new EditorState(s,e.newDoc,e.newSelection,d,(_,b)=>b.update(_,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(s=>({changes:{from:s.from,to:s.to,insert:e},range:EditorSelection.cursor(s.from+e.length)}))}changeByRange(e){let s=this.selection,a=e(s.ranges[0]),c=this.changes(a.changes),d=[a.range],_=asArray$1(a.effects);for(let b=1;b_.spec.fromJSON(b,k)))}return EditorState.create({doc:e.doc,selection:EditorSelection.fromJSON(e.selection),extensions:s.extensions?c.concat([s.extensions]):c})}static create(e={}){let s=Configuration.resolve(e.extensions||[],new Map),a=e.doc instanceof Text?e.doc:Text.of((e.doc||"").split(s.staticFacet(EditorState.lineSeparator)||DefaultSplit)),c=e.selection?e.selection instanceof EditorSelection?e.selection:EditorSelection.single(e.selection.anchor,e.selection.head):EditorSelection.single(0);return checkSelection(c,a.length),s.staticFacet(allowMultipleSelections)||(c=c.asSingle()),new EditorState(s,a,c,s.dynamicSlots.map(()=>null),(d,_)=>_.create(d),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||` +`}get readOnly(){return this.facet(readOnly)}phrase(e){for(let s of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(s,e))return s[e];return e}languageDataAt(e,s,a=-1){let c=[];for(let d of this.facet(languageData))for(let _ of d(this,s,a))Object.prototype.hasOwnProperty.call(_,e)&&c.push(_[e]);return c}charCategorizer(e){return makeCategorizer(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:s,from:a,length:c}=this.doc.lineAt(e),d=this.charCategorizer(e),_=e-a,b=e-a;for(;_>0;){let k=findClusterBreak(s,_,!1);if(d(s.slice(k,_))!=CharCategory.Word)break;_=k}for(;bo.length?o[0]:4});EditorState.lineSeparator=lineSeparator;EditorState.readOnly=readOnly;EditorState.phrases=Facet.define();EditorState.languageData=languageData;EditorState.changeFilter=changeFilter;EditorState.transactionFilter=transactionFilter;EditorState.transactionExtender=transactionExtender;Compartment.reconfigure=StateEffect.define();function combineConfig(o,e,s={}){let a={};for(let c of o)for(let d of Object.keys(c)){let _=c[d],b=a[d];if(b===void 0)a[d]=_;else if(!(b===_||_===void 0))if(Object.hasOwnProperty.call(s,d))a[d]=s[d](b,_);else throw new Error("Config merge conflict for field "+d)}for(let c in e)a[c]===void 0&&(a[c]=e[c]);return a}const C="\u037C",COUNT=typeof Symbol=="undefined"?"__"+C:Symbol.for(C),SET=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),top=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{};class StyleModule{constructor(e,s){this.rules=[];let{finish:a}=s||{};function c(_){return/^@/.test(_)?[_]:_.split(/,\s*/)}function d(_,b,k,$){let j=[],_e=/^@(\w+)\b/.exec(_[0]),et=_e&&_e[1]=="keyframes";if(_e&&b==null)return k.push(_[0]+";");for(let tt in b){let nt=b[tt];if(/&/.test(tt))d(tt.split(/,\s*/).map(st=>_.map(rt=>st.replace(/&/,rt))).reduce((st,rt)=>st.concat(rt)),nt,k);else if(nt&&typeof nt=="object"){if(!_e)throw new RangeError("The value of a property ("+tt+") should be a primitive value.");d(c(tt),nt,j,et)}else nt!=null&&j.push(tt.replace(/_.*/,"").replace(/[A-Z]/g,st=>"-"+st.toLowerCase())+": "+nt+";")}(j.length||et)&&k.push((a&&!_e&&!$?_.map(a):_).join(", ")+" {"+j.join(" ")+"}")}for(let _ in e)d(c(_),e[_],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=top[COUNT]||1;return top[COUNT]=e+1,C+e.toString(36)}static mount(e,s){(e[SET]||new StyleSet(e)).mount(Array.isArray(s)?s:[s])}}let adoptedSet=null;class StyleSet{constructor(e){if(!e.head&&e.adoptedStyleSheets&&typeof CSSStyleSheet!="undefined"){if(adoptedSet)return e.adoptedStyleSheets=[adoptedSet.sheet].concat(e.adoptedStyleSheets),e[SET]=adoptedSet;this.sheet=new CSSStyleSheet,e.adoptedStyleSheets=[this.sheet].concat(e.adoptedStyleSheets),adoptedSet=this}else{this.styleTag=(e.ownerDocument||e).createElement("style");let s=e.head||e;s.insertBefore(this.styleTag,s.firstChild)}this.modules=[],e[SET]=this}mount(e){let s=this.sheet,a=0,c=0;for(let d=0;d-1&&(this.modules.splice(b,1),c--,b=-1),b==-1){if(this.modules.splice(c++,0,_),s)for(let k=0;k<_.rules.length;k++)s.insertRule(_.rules[k],a++)}else{for(;c>1,$=d[k]-e||(a?this.value[k].endSide:this.value[k].startSide)-s;if(k==_)return $>=0?_:b;$>=0?b=k:_=k+1}}between(e,s,a,c){for(let d=this.findIndex(s,-1e9,!0),_=this.findIndex(a,1e9,!1,d);d<_;d++)if(c(this.from[d]+e,this.to[d]+e,this.value[d])===!1)return!1}map(e,s){let a=[],c=[],d=[],_=-1,b=-1;for(let k=0;ktt||et==tt&&$.startSide>0&&$.endSide<=0)continue;(tt-et||$.endSide-$.startSide)<0||(_<0&&(_=et),$.point&&(b=Math.max(b,tt-et)),a.push($),c.push(et-_),d.push(tt-_))}return{mapped:a.length?new Chunk(c,d,a,b):null,pos:_}}}class RangeSet{constructor(e,s,a=RangeSet.empty,c){this.chunkPos=e,this.chunk=s,this.nextLayer=a,this.maxPoint=c}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let s of this.chunk)e+=s.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:s=[],sort:a=!1,filterFrom:c=0,filterTo:d=this.length}=e,_=e.filter;if(s.length==0&&!_)return this;if(a&&(s=s.slice().sort(cmpRange)),this.isEmpty)return s.length?RangeSet.of(s):this;let b=new LayerCursor(this,null,-1).goto(0),k=0,$=[],j=new RangeSetBuilder;for(;b.value||k=0){let _e=s[k++];j.addInner(_e.from,_e.to,_e.value)||$.push(_e)}else b.rangeIndex==1&&b.chunkIndexthis.chunkEnd(b.chunkIndex)||db.to||d=d&&e<=d+_.length&&_.between(d,e-d,s-d,a)===!1)return}this.nextLayer.between(e,s,a)}}iter(e=0){return HeapCursor.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,s=0){return HeapCursor.from(e).goto(s)}static compare(e,s,a,c,d=-1){let _=e.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),b=s.filter(_e=>_e.maxPoint>0||!_e.isEmpty&&_e.maxPoint>=d),k=findSharedChunks(_,b,a),$=new SpanCursor(_,k,d),j=new SpanCursor(b,k,d);a.iterGaps((_e,et,tt)=>compare($,_e,j,et,tt,c)),a.empty&&a.length==0&&compare($,0,j,0,0,c)}static eq(e,s,a=0,c){c==null&&(c=1e9);let d=e.filter(j=>!j.isEmpty&&s.indexOf(j)<0),_=s.filter(j=>!j.isEmpty&&e.indexOf(j)<0);if(d.length!=_.length)return!1;if(!d.length)return!0;let b=findSharedChunks(d,_),k=new SpanCursor(d,b,0).goto(a),$=new SpanCursor(_,b,0).goto(a);for(;;){if(k.to!=$.to||!sameValues(k.active,$.active)||k.point&&(!$.point||!k.point.eq($.point)))return!1;if(k.to>c)return!0;k.next(),$.next()}}static spans(e,s,a,c,d=-1){var _;let b=new SpanCursor(e,null,d,(_=c.filterPoint)===null||_===void 0?void 0:_.bind(c)).goto(s),k=s,$=b.openStart;for(;;){let j=Math.min(b.to,a);if(b.point?(c.point(k,j,b.point,b.activeForPoint(b.to),$),$=b.openEnd(j)+(b.to>j?1:0)):j>k&&(c.span(k,j,b.active,$),$=b.openEnd(j)),b.to>a)break;k=b.to,b.next()}return $}static of(e,s=!1){let a=new RangeSetBuilder;for(let c of e instanceof Range$1?[e]:s?lazySort(e):e)a.add(c.from,c.to,c.value);return a.finish()}}RangeSet.empty=new RangeSet([],[],null,-1);function lazySort(o){if(o.length>1)for(let e=o[0],s=1;s0)return o.slice().sort(cmpRange);e=a}return o}RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}finishChunk(e){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}add(e,s,a){this.addInner(e,s,a)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(e,s,a)}addInner(e,s,a){let c=e-this.lastTo||a.startSide-this.last.endSide;if(c<=0&&(e-this.lastFrom||a.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return c<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(s-this.chunkStart),this.last=a,this.lastFrom=e,this.lastTo=s,this.value.push(a),a.point&&(this.maxPoint=Math.max(this.maxPoint,s-e)),!0)}addChunk(e,s){if((e-this.lastTo||s.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,s.maxPoint),this.chunks.push(s),this.chunkPos.push(e);let a=s.value.length-1;return this.last=s.value[a],this.lastFrom=s.from[a]+e,this.lastTo=s.to[a]+e,!0}finish(){return this.finishInner(RangeSet.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let s=new RangeSet(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,s}}function findSharedChunks(o,e,s){let a=new Map;for(let d of o)for(let _=0;_=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=a&&c.push(new LayerCursor(_,s,a,d));return c.length==1?c[0]:new HeapCursor(c)}get startSide(){return this.value?this.value.startSide:0}goto(e,s=-1e9){for(let a of this.heap)a.goto(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);return this.next(),this}forward(e,s){for(let a of this.heap)a.forward(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);(this.to-e||this.value.endSide-s)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),heapBubble(this.heap,0)}}}function heapBubble(o,e){for(let s=o[e];;){let a=(e<<1)+1;if(a>=o.length)break;let c=o[a];if(a+1=0&&(c=o[a+1],a++),s.compare(c)<0)break;o[a]=s,o[e]=c,e=a}}class SpanCursor{constructor(e,s,a,c=()=>!0){this.minPoint=a,this.filterPoint=c,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=HeapCursor.from(e,s,a)}goto(e,s=-1e9){return this.cursor.goto(e,s),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=s,this.openStart=-1,this.next(),this}forward(e,s){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-s)<0;)this.removeActive(this.minActive);this.cursor.forward(e,s)}removeActive(e){remove(this.active,e),remove(this.activeTo,e),remove(this.activeRank,e),this.minActive=findMinIndex(this.active,this.activeTo)}addActive(e){let s=0,{value:a,to:c,rank:d}=this.cursor;for(;s-1&&(this.activeTo[d]-this.cursor.from||this.active[d].endSide-this.cursor.startSide)<0){if(this.activeTo[d]>e){this.to=this.activeTo[d],this.endSide=this.active[d].endSide;break}this.removeActive(d),a&&remove(a,d)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let _=this.cursor.value;if(!_.point)this.addActive(a),this.cursor.next();else if(s&&this.cursor.to==this.to&&this.cursor.from=0&&!(this.activeRank[a]e||this.activeTo[a]==e&&this.active[a].endSide>=this.point.endSide)&&s.push(this.active[a]);return s.reverse()}openEnd(e){let s=0;for(let a=this.activeTo.length-1;a>=0&&this.activeTo[a]>e;a--)s++;return s}}function compare(o,e,s,a,c,d){o.goto(e),s.goto(a);let _=a+c,b=a,k=a-e;for(;;){let $=o.to+k-s.to||o.endSide-s.endSide,j=$<0?o.to+k:s.to,_e=Math.min(j,_);if(o.point||s.point?o.point&&s.point&&(o.point==s.point||o.point.eq(s.point))&&sameValues(o.activeForPoint(o.to+k),s.activeForPoint(s.to))||d.comparePoint(b,_e,o.point,s.point):_e>b&&!sameValues(o.active,s.active)&&d.compareRange(b,_e,o.active,s.active),j>_)break;b=j,$<=0&&o.next(),$>=0&&s.next()}}function sameValues(o,e){if(o.length!=e.length)return!1;for(let s=0;s=e;a--)o[a+1]=o[a];o[e]=s}function findMinIndex(o,e){let s=-1,a=1e9;for(let c=0;c",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"',229:"Q"},chrome$1=typeof navigator!="undefined"&&/Chrome\/(\d+)/.exec(navigator.userAgent),safari$1=typeof navigator!="undefined"&&/Apple Computer/.test(navigator.vendor),gecko$1=typeof navigator!="undefined"&&/Gecko\/\d+/.test(navigator.userAgent),mac=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),ie$1=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),brokenModifierNames=chrome$1&&(mac||+chrome$1[1]<57)||gecko$1&&mac;for(var i=0;i<10;i++)base[48+i]=base[96+i]=String(i);for(var i=1;i<=24;i++)base[i+111]="F"+i;for(var i=65;i<=90;i++)base[i]=String.fromCharCode(i+32),shift[i]=String.fromCharCode(i);for(var code in base)shift.hasOwnProperty(code)||(shift[code]=base[code]);function keyName(o){var e=brokenModifierNames&&(o.ctrlKey||o.altKey||o.metaKey)||(safari$1||ie$1)&&o.shiftKey&&o.key&&o.key.length==1,s=!e&&o.key||(o.shiftKey?shift:base)[o.keyCode]||o.key||"Unidentified";return s=="Esc"&&(s="Escape"),s=="Del"&&(s="Delete"),s=="Left"&&(s="ArrowLeft"),s=="Up"&&(s="ArrowUp"),s=="Right"&&(s="ArrowRight"),s=="Down"&&(s="ArrowDown"),s}function getSelection(o){let e;return o.nodeType==11?e=o.getSelection?o:o.ownerDocument:e=o,e.getSelection()}function contains(o,e){return e?o==e||o.contains(e.nodeType!=1?e.parentNode:e):!1}function deepActiveElement(){let o=document.activeElement;for(;o&&o.shadowRoot;)o=o.shadowRoot.activeElement;return o}function hasSelection(o,e){if(!e.anchorNode)return!1;try{return contains(o,e.anchorNode)}catch{return!1}}function clientRectsFor(o){return o.nodeType==3?textRange(o,0,o.nodeValue.length).getClientRects():o.nodeType==1?o.getClientRects():[]}function isEquivalentPosition(o,e,s,a){return s?scanFor(o,e,s,a,-1)||scanFor(o,e,s,a,1):!1}function domIndex(o){for(var e=0;;e++)if(o=o.previousSibling,!o)return e}function scanFor(o,e,s,a,c){for(;;){if(o==s&&e==a)return!0;if(e==(c<0?0:maxOffset(o))){if(o.nodeName=="DIV")return!1;let d=o.parentNode;if(!d||d.nodeType!=1)return!1;e=domIndex(o)+(c<0?0:1),o=d}else if(o.nodeType==1){if(o=o.childNodes[e+(c<0?-1:0)],o.nodeType==1&&o.contentEditable=="false")return!1;e=c<0?maxOffset(o):0}else return!1}}function maxOffset(o){return o.nodeType==3?o.nodeValue.length:o.childNodes.length}const Rect0={left:0,right:0,top:0,bottom:0};function flattenRect(o,e){let s=e?o.left:o.right;return{left:s,right:s,top:o.top,bottom:o.bottom}}function windowRect(o){return{left:0,right:o.innerWidth,top:0,bottom:o.innerHeight}}function scrollRectIntoView(o,e,s,a,c,d,_,b){let k=o.ownerDocument,$=k.defaultView;for(let j=o;j;)if(j.nodeType==1){let _e,et=j==k.body;if(et)_e=windowRect($);else{if(j.scrollHeight<=j.clientHeight&&j.scrollWidth<=j.clientWidth){j=j.parentNode;continue}let st=j.getBoundingClientRect();_e={left:st.left,right:st.left+j.clientWidth,top:st.top,bottom:st.top+j.clientHeight}}let tt=0,nt=0;if(c=="nearest")e.top<_e.top?(nt=-(_e.top-e.top+_),s>0&&e.bottom>_e.bottom+nt&&(nt=e.bottom-_e.bottom+nt+_)):e.bottom>_e.bottom&&(nt=e.bottom-_e.bottom+_,s<0&&e.top-nt<_e.top&&(nt=-(_e.top+nt-e.top+_)));else{let st=e.bottom-e.top,rt=_e.bottom-_e.top;nt=(c=="center"&&st<=rt?e.top+st/2-rt/2:c=="start"||c=="center"&&s<0?e.top-_:e.bottom-rt+_)-_e.top}if(a=="nearest"?e.left<_e.left?(tt=-(_e.left-e.left+d),s>0&&e.right>_e.right+tt&&(tt=e.right-_e.right+tt+d)):e.right>_e.right&&(tt=e.right-_e.right+d,s<0&&e.left<_e.left+tt&&(tt=-(_e.left+tt-e.left+d))):tt=(a=="center"?e.left+(e.right-e.left)/2-(_e.right-_e.left)/2:a=="start"==b?e.left-d:e.right-(_e.right-_e.left)+d)-_e.left,tt||nt)if(et)$.scrollBy(tt,nt);else{if(nt){let st=j.scrollTop;j.scrollTop+=nt,nt=j.scrollTop-st}if(tt){let st=j.scrollLeft;j.scrollLeft+=tt,tt=j.scrollLeft-st}e={left:e.left-tt,top:e.top-nt,right:e.right-tt,bottom:e.bottom-nt}}if(et)break;j=j.assignedSlot||j.parentNode,a=c="nearest"}else if(j.nodeType==11)j=j.host;else break}class DOMSelectionState{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){this.set(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset)}set(e,s,a,c){this.anchorNode=e,this.anchorOffset=s,this.focusNode=a,this.focusOffset=c}}let preventScrollSupported=null;function focusPreventScroll(o){if(o.setActive)return o.setActive();if(preventScrollSupported)return o.focus(preventScrollSupported);let e=[];for(let s=o;s&&(e.push(s,s.scrollTop,s.scrollLeft),s!=s.ownerDocument);s=s.parentNode);if(o.focus(preventScrollSupported==null?{get preventScroll(){return preventScrollSupported={preventScroll:!0},!0}}:void 0),!preventScrollSupported){preventScrollSupported=!1;for(let s=0;ss)return _e.domBoundsAround(e,s,$);if(et>=e&&c==-1&&(c=k,d=$),$>s&&_e.dom.parentNode==this.dom){_=k,b=j;break}j=et,$=et+_e.breakAfter}return{from:d,to:b<0?a+this.length:b,startDOM:(c?this.children[c-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:_=0?this.children[_].dom:null}}markDirty(e=!1){this.dirty|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let s=this.parent;s;s=s.parent){if(e&&(s.dirty|=2),s.dirty&1)return;s.dirty|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.dirty&&this.markParentsDirty(!0))}setDOM(e){this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this}get rootView(){for(let e=this;;){let s=e.parent;if(!s)return e;e=s}}replaceChildren(e,s,a=noChildren){this.markDirty();for(let c=e;cthis.pos||e==this.pos&&(s>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let a=this.children[--this.i];this.pos-=a.length+a.breakAfter}}}function replaceRange(o,e,s,a,c,d,_,b,k){let{children:$}=o,j=$.length?$[e]:null,_e=d.length?d[d.length-1]:null,et=_e?_e.breakAfter:_;if(!(e==a&&j&&!_&&!et&&d.length<2&&j.merge(s,c,d.length?_e:null,s==0,b,k))){if(a<$.length){let tt=$[a];tt&&c0&&(!_&&d.length&&j.merge(s,j.length,d[0],!1,b,0)?j.breakAfter=d.shift().breakAfter:(s2);var browser={mac:ios$1||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios:ios$1,android:/Android\b/.test(nav.userAgent),webkit,safari,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:doc.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const MaxJoinLen=256;class TextView extends ContentView{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,s,a){return a&&(!(a instanceof TextView)||this.length-(s-e)+a.length>MaxJoinLen)?!1:(this.text=this.text.slice(0,e)+(a?a.text:"")+this.text.slice(s),this.markDirty(),!0)}split(e){let s=new TextView(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),s}localPosFromDOM(e,s){return e==this.dom?s:s?this.text.length:0}domAtPos(e){return new DOMPos(this.dom,e)}domBoundsAround(e,s,a){return{from:a,to:a+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,s){return textCoords(this.dom,e,s)}}class MarkView extends ContentView{constructor(e,s=[],a=0){super(),this.mark=e,this.children=s,this.length=a;for(let c of s)c.setParent(this)}setAttrs(e){if(clearAttributes(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let s in this.mark.attrs)e.setAttribute(s,this.mark.attrs[s]);return e}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.dirty|=6)}sync(e){this.dom?this.dirty&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e)}merge(e,s,a,c,d,_){return a&&(!(a instanceof MarkView&&a.mark.eq(this.mark))||e&&d<=0||se&&s.push(a=e&&(c=d),a=k,d++}let _=this.length-e;return this.length=e,c>-1&&(this.children.length=c,this.markDirty()),new MarkView(this.mark,s,_)}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}coordsAt(e,s){return coordsInChildren(this,e,s)}}function textCoords(o,e,s){let a=o.nodeValue.length;e>a&&(e=a);let c=e,d=e,_=0;e==0&&s<0||e==a&&s>=0?browser.chrome||browser.gecko||(e?(c--,_=1):(d++,_=-1)):s<0?c--:d++;let b=textRange(o,c,d).getClientRects();if(!b.length)return Rect0;let k=b[(_?_<0:s>=0)?0:b.length-1];return browser.safari&&!_&&k.width==0&&(k=Array.prototype.find.call(b,$=>$.width)||k),_?flattenRect(k,_<0):k||null}class WidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.side=a,this.prevWidget=null}static create(e,s,a){return new(e.customView||WidgetView)(e,s,a)}split(e){let s=WidgetView.create(this.widget,this.length-e,this.side);return this.length-=e,s}sync(){(!this.dom||!this.widget.updateDOM(this.dom))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}getSide(){return this.side}merge(e,s,a,c,d,_){return a&&(!(a instanceof WidgetView)||!this.widget.compare(a.widget)||e>0&&d<=0||s0?a.length-1:0;c=a[d],!(e>0?d==0:d==a.length-1||c.top0?-1:1);return e==0&&s>0||e==this.length&&s<=0?c:flattenRect(c,e==0)}get isEditable(){return!1}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class CompositionView extends WidgetView{domAtPos(e){let{topView:s,text:a}=this.widget;return s?scanCompositionTree(e,0,s,a,(c,d)=>c.domAtPos(d),c=>new DOMPos(a,Math.min(c,a.nodeValue.length))):new DOMPos(a,Math.min(e,a.nodeValue.length))}sync(){this.setDOM(this.widget.toDOM())}localPosFromDOM(e,s){let{topView:a,text:c}=this.widget;return a?posFromDOMInCompositionTree(e,s,a,c):Math.min(s,this.length)}ignoreMutation(){return!1}get overrideDOMText(){return null}coordsAt(e,s){let{topView:a,text:c}=this.widget;return a?scanCompositionTree(e,s,a,c,(d,_,b)=>d.coordsAt(_,b),(d,_)=>textCoords(c,d,_)):textCoords(c,e,s)}destroy(){var e;super.destroy(),(e=this.widget.topView)===null||e===void 0||e.destroy()}get isEditable(){return!0}}function scanCompositionTree(o,e,s,a,c,d){if(s instanceof MarkView){for(let _ of s.children){let b=contains(_.dom,a),k=b?a.nodeValue.length:_.length;if(o0?-1:1);return a&&a.tops.top?{left:s.left,right:s.right,top:a.top,bottom:a.bottom}:s}get overrideDOMText(){return Text.empty}}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=noChildren;function inlineSiblingRect(o,e){let s=o.parent,a=s?s.children.indexOf(o):-1;for(;s&&a>=0;)if(e<0?a>0:ac&&s<_&&d.dom.parentNode==o)return d.domAtPos(s-c);if(s<=c)break;c=_}}for(;a>0;a--){let c=e[a-1].dom;if(c.parentNode==o)return DOMPos.after(c)}return new DOMPos(o,0)}function joinInlineInto(o,e,s){let a,{children:c}=o;s>0&&e instanceof MarkView&&c.length&&(a=c[c.length-1])instanceof MarkView&&a.mark.eq(e.mark)?joinInlineInto(a,e.children[0],s-1):(c.push(e),e.setParent(o)),o.length+=e.length}function coordsInChildren(o,e,s){for(let d=0,_=0;_0?k>=e:k>e)&&(e0)){let j=0;if(k==d){if(b.getSide()<=0)continue;j=s=-b.getSide()}let _e=b.coordsAt(Math.max(0,e-d),s);return j&&_e?flattenRect(_e,s<0):_e}d=k}let a=o.dom.lastChild;if(!a)return o.dom.getBoundingClientRect();let c=clientRectsFor(a);return c[c.length-1]||null}function combineAttrs(o,e){for(let s in o)s=="class"&&e.class?e.class+=" "+o.class:s=="style"&&e.style?e.style+=";"+o.style:e[s]=o[s];return e}function attrsEq(o,e){if(o==e)return!0;if(!o||!e)return!1;let s=Object.keys(o),a=Object.keys(e);if(s.length!=a.length)return!1;for(let c of s)if(a.indexOf(c)==-1||o[c]!==e[c])return!1;return!0}function updateAttrs(o,e,s){if(e)for(let a in e)s&&a in s||o.removeAttribute(a);if(s)for(let a in s)e&&e[a]==s[a]||o.setAttribute(a,s[a])}class WidgetType{eq(e){return!1}updateDOM(e){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}ignoreEvent(e){return!0}get customView(){return null}destroy(e){}}var BlockType=function(o){return o[o.Text=0]="Text",o[o.WidgetBefore=1]="WidgetBefore",o[o.WidgetAfter=2]="WidgetAfter",o[o.WidgetRange=3]="WidgetRange",o}(BlockType||(BlockType={}));class Decoration extends RangeValue{constructor(e,s,a,c){super(),this.startSide=e,this.endSide=s,this.widget=a,this.spec=c}get heightRelevant(){return!1}static mark(e){return new MarkDecoration(e)}static widget(e){let s=e.side||0,a=!!e.block;return s+=a?s>0?3e8:-4e8:s>0?1e8:-1e8,new PointDecoration(e,s,s,a,e.widget||null,!1)}static replace(e){let s=!!e.block,a,c;if(e.isBlockGap)a=-5e8,c=4e8;else{let{start:d,end:_}=getInclusive(e,s);a=(d?s?-3e8:-1:5e8)-1,c=(_?s?2e8:1:-6e8)+1}return new PointDecoration(e,a,c,s,e.widget||null,!0)}static line(e){return new LineDecoration(e)}static set(e,s=!1){return RangeSet.of(e,s)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Decoration.none=RangeSet.empty;class MarkDecoration extends Decoration{constructor(e){let{start:s,end:a}=getInclusive(e);super(s?-1:5e8,a?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){return this==e||e instanceof MarkDecoration&&this.tagName==e.tagName&&this.class==e.class&&attrsEq(this.attrs,e.attrs)}range(e,s=e){if(e>=s)throw new RangeError("Mark decorations may not be empty");return super.range(e,s)}}MarkDecoration.prototype.point=!1;class LineDecoration extends Decoration{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof LineDecoration&&attrsEq(this.spec.attributes,e.spec.attributes)}range(e,s=e){if(s!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,s)}}LineDecoration.prototype.mapMode=MapMode.TrackBefore;LineDecoration.prototype.point=!0;class PointDecoration extends Decoration{constructor(e,s,a,c,d,_){super(s,a,d,e),this.block=c,this.isReplace=_,this.mapMode=c?s<=0?MapMode.TrackBefore:MapMode.TrackAfter:MapMode.TrackDel}get type(){return this.startSide=5}eq(e){return e instanceof PointDecoration&&widgetsEq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,s=e){if(this.isReplace&&(e>s||e==s&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&s!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,s)}}PointDecoration.prototype.point=!0;function getInclusive(o,e=!1){let{inclusiveStart:s,inclusiveEnd:a}=o;return s==null&&(s=o.inclusive),a==null&&(a=o.inclusive),{start:s!=null?s:e,end:a!=null?a:e}}function widgetsEq(o,e){return o==e||!!(o&&e&&o.compare(e))}function addRange(o,e,s,a=0){let c=s.length-1;c>=0&&s[c]+a>=o?s[c]=Math.max(s[c],e):s.push(o,e)}class LineView extends ContentView{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,s,a,c,d,_){if(a){if(!(a instanceof LineView))return!1;this.dom||a.transferDOM(this)}return c&&this.setDeco(a?a.attrs:null),mergeChildrenInto(this,e,s,a?a.children:[],d,_),!0}split(e){let s=new LineView;if(s.breakAfter=this.breakAfter,this.length==0)return s;let{i:a,off:c}=this.childPos(e);c&&(s.append(this.children[a].split(c),0),this.children[a].merge(c,this.children[a].length,null,!1,0,0),a++);for(let d=a;d0&&this.children[a-1].length==0;)this.children[--a].destroy();return this.children.length=a,this.markDirty(),this.length=e,s}transferDOM(e){!this.dom||(e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){attrsEq(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,s){joinInlineInto(this,e,s)}addLineDeco(e){let s=e.spec.attributes,a=e.spec.class;s&&(this.attrs=combineAttrs(s,this.attrs||{})),a&&(this.attrs=combineAttrs({class:a},this.attrs||{}))}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.dirty|=6)}sync(e){var s;this.dom?this.dirty&4&&(clearAttributes(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e);let a=this.dom.lastChild;for(;a&&ContentView.get(a)instanceof MarkView;)a=a.lastChild;if(!a||!this.length||a.nodeName!="BR"&&((s=ContentView.get(a))===null||s===void 0?void 0:s.isEditable)==!1&&(!browser.ios||!this.children.some(c=>c instanceof TextView))){let c=document.createElement("BR");c.cmIgnore=!0,this.dom.appendChild(c)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0;for(let s of this.children){if(!(s instanceof TextView))return null;let a=clientRectsFor(s.dom);if(a.length!=1)return null;e+=a[0].width}return{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length}}coordsAt(e,s){return coordsInChildren(this,e,s)}become(e){return!1}get type(){return BlockType.Text}static find(e,s){for(let a=0,c=0;a=s){if(d instanceof LineView)return d;if(_>s)break}c=_+d.breakAfter}return null}}class BlockWidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.type=a,this.breakAfter=0,this.prevWidget=null}merge(e,s,a,c,d,_){return a&&(!(a instanceof BlockWidgetView)||!this.widget.compare(a.widget)||e>0&&d<=0||s0;){if(this.textOff==this.text.length){let{value:d,lineBreak:_,done:b}=this.cursor.next(this.skip);if(this.skip=0,b)throw new Error("Ran out of text content when drawing inline views");if(_){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer([]),this.curLine=null,e--;continue}else this.text=d,this.textOff=0}let c=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(s.slice(0,a)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+c)),s),a),this.atCursorPos=!0,this.textOff+=c,e-=c,a=0}}span(e,s,a,c){this.buildText(s-e,a,c),this.pos=s,this.openStart<0&&(this.openStart=c)}point(e,s,a,c,d){let _=s-e;if(a instanceof PointDecoration)if(a.block){let{type:b}=a;b==BlockType.WidgetAfter&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(a.widget||new NullWidget("div"),_,b))}else{let b=WidgetView.create(a.widget||new NullWidget("span"),_,a.startSide),k=this.atCursorPos&&!b.isEditable&&d<=c.length&&(e0),$=!b.isEditable&&(ethis.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}return!0}static build(e,s,a,c,d){let _=new ContentBuilder(e,s,a,d);return _.openEnd=RangeSet.spans(c,s,a,_),_.openStart<0&&(_.openStart=_.openEnd),_.finish(_.openEnd),_}}function wrapMarks(o,e){for(let s of e)o=new MarkView(s,[o],o.length);return o}class NullWidget extends WidgetType{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}}const none$2=[],clickAddsSelectionRange=Facet.define(),dragMovesSelection$1=Facet.define(),mouseSelectionStyle=Facet.define(),exceptionSink=Facet.define(),updateListener=Facet.define(),inputHandler$1=Facet.define(),scrollTo=StateEffect.define({map:(o,e)=>o.map(e)}),centerOn=StateEffect.define({map:(o,e)=>o.map(e)});class ScrollTarget{constructor(e,s="nearest",a="nearest",c=5,d=5){this.range=e,this.y=s,this.x=a,this.yMargin=c,this.xMargin=d}map(e){return e.empty?this:new ScrollTarget(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin)}}const scrollIntoView$1=StateEffect.define({map:(o,e)=>o.map(e)});function logException(o,e,s){let a=o.facet(exceptionSink);a.length?a[0](e):window.onerror?window.onerror(String(e),s,void 0,void 0,e):s?console.error(s+":",e):console.error(e)}const editable=Facet.define({combine:o=>o.length?o[0]:!0});class PluginFieldProvider{constructor(e,s){this.field=e,this.get=s}}class PluginField{from(e){return new PluginFieldProvider(this,e)}static define(){return new PluginField}}PluginField.decorations=PluginField.define();PluginField.atomicRanges=PluginField.define();PluginField.scrollMargins=PluginField.define();let nextPluginID=0;const viewPlugin=Facet.define();class ViewPlugin{constructor(e,s,a){this.id=e,this.create=s,this.fields=a,this.extension=viewPlugin.of(this)}static define(e,s){let{eventHandlers:a,provide:c,decorations:d}=s||{},_=[];if(c)for(let b of Array.isArray(c)?c:[c])_.push(b);return a&&_.push(domEventHandlers.from(b=>({plugin:b,handlers:a}))),d&&_.push(PluginField.decorations.from(d)),new ViewPlugin(nextPluginID++,e,_)}static fromClass(e,s){return ViewPlugin.define(a=>new e(a),s)}}const domEventHandlers=PluginField.define();class PluginInstance{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}takeField(e,s){if(this.spec)for(let{field:a,get:c}of this.spec.fields)a==e&&s.push(c(this.value))}update(e){if(this.value){if(this.mustUpdate){let s=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(s)}catch(a){if(logException(s.state,a,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(s){logException(e.state,s,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var s;if(!((s=this.value)===null||s===void 0)&&s.destroy)try{this.value.destroy()}catch(a){logException(e.state,a,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const editorAttributes=Facet.define(),contentAttributes=Facet.define(),decorations=Facet.define(),styleModule=Facet.define();class ChangedRange{constructor(e,s,a,c){this.fromA=e,this.toA=s,this.fromB=a,this.toB=c}join(e){return new ChangedRange(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let s=e.length,a=this;for(;s>0;s--){let c=e[s-1];if(!(c.fromA>a.toA)){if(c.toAj)break;d+=2}if(!k)return a;new ChangedRange(k.fromA,k.toA,k.fromB,k.toB).addToSet(a),_=k.toA,b=k.toB}}}class ViewUpdate{constructor(e,s,a=none$2){this.view=e,this.state=s,this.transactions=a,this.flags=0,this.startState=e.state,this.changes=ChangeSet.empty(this.startState.doc.length);for(let _ of a)this.changes=this.changes.compose(_.changes);let c=[];this.changes.iterChangedRanges((_,b,k,$)=>c.push(new ChangedRange(_,b,k,$))),this.changedRanges=c;let d=e.hasFocus;d!=e.inputState.notifiedFocused&&(e.inputState.notifiedFocused=d,this.flags|=1)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}var Direction=function(o){return o[o.LTR=0]="LTR",o[o.RTL=1]="RTL",o}(Direction||(Direction={}));const LTR=Direction.LTR,RTL=Direction.RTL;function dec(o){let e=[];for(let s=0;s=s){if(b.level==a)return _;(d<0||(c!=0?c<0?b.froms:e[d].level>b.level))&&(d=_)}}if(d<0)throw new RangeError("Index out of range");return d}}const types=[];function computeOrder(o,e){let s=o.length,a=e==LTR?1:2,c=e==LTR?2:1;if(!o||a==1&&!BidiRE.test(o))return trivialOrder(s);for(let _=0,b=a,k=a;_=0;et-=3)if(BracketStack[et+1]==-j){let tt=BracketStack[et+2],nt=tt&2?a:tt&4?tt&1?c:a:0;nt&&(types[_]=types[BracketStack[et]]=nt),b=et;break}}else{if(BracketStack.length==189)break;BracketStack[b++]=_,BracketStack[b++]=$,BracketStack[b++]=k}else if((_e=types[_])==2||_e==1){let et=_e==a;k=et?0:1;for(let tt=b-3;tt>=0;tt-=3){let nt=BracketStack[tt+2];if(nt&2)break;if(et)BracketStack[tt+2]|=2;else{if(nt&4)break;BracketStack[tt+2]|=4}}}for(let _=0;_b;){let j=$,_e=types[--$]!=2;for(;$>b&&_e==(types[$-1]!=2);)$--;d.push(new BidiSpan($,j,_e?2:1))}else d.push(new BidiSpan(b,_,0))}else for(let _=0;_1)for(let k of this.points)k.node==e&&k.pos>this.text.length&&(k.pos-=_-1);a=d+_}}readNode(e){if(e.cmIgnore)return;let s=ContentView.get(e),a=s&&s.overrideDOMText;if(a!=null){this.findPointInside(e,a.length);for(let c=a.iter();!c.next().done;)c.lineBreak?this.lineBreak():this.append(c.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,s){for(let a of this.points)a.node==e&&e.childNodes[a.offset]==s&&(a.pos=this.text.length)}findPointInside(e,s){for(let a of this.points)(e.nodeType==3?a.node==e:e.contains(a.node))&&(a.pos=this.text.length+Math.min(s,a.offset))}}function isBlockElement(o){return o.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(o.nodeName)}class DOMPoint{constructor(e,s){this.node=e,this.offset=s,this.pos=-1}}class DocView extends ContentView{constructor(e){super(),this.view=e,this.compositionDeco=Decoration.none,this.decorations=[],this.pluginDecorationLength=0,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,e.state.doc.length)],0)}get root(){return this.view.root}get editorView(){return this.view}get length(){return this.view.state.doc.length}update(e){let s=e.changedRanges;this.minWidth>0&&s.length&&(s.every(({fromA:_,toA:b})=>bthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.view.inputState.composing<0?this.compositionDeco=Decoration.none:(e.transactions.length||this.dirty)&&(this.compositionDeco=computeCompositionDeco(this.view,e.changes)),(browser.ie||browser.chrome)&&!this.compositionDeco.size&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,c=this.updateDeco(),d=findChangedDeco(a,c,e.changes);return s=ChangedRange.extendWithRanges(s,d),this.dirty==0&&s.length==0?!1:(this.updateInner(s,e.startState.doc.length),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,s){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,s);let{observer:a}=this.view;a.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.minWidth=this.minWidth?this.minWidth+"px":"";let d=browser.chrome||browser.ios?{node:a.selectionRange.focusNode,written:!1}:void 0;this.sync(d),this.dirty=0,d&&(d.written||a.selectionRange.focusNode!=d.node)&&(this.forceSelection=!0),this.dom.style.height=""});let c=[];if(this.view.viewport.from||this.view.viewport.to=0?e[c]:null;if(!d)break;let{fromA:_,toA:b,fromB:k,toB:$}=d,{content:j,breakAtStart:_e,openStart:et,openEnd:tt}=ContentBuilder.build(this.view.state.doc,k,$,this.decorations,this.pluginDecorationLength),{i:nt,off:st}=a.findPos(b,1),{i:rt,off:it}=a.findPos(_,-1);replaceRange(this,rt,it,nt,st,j,_e,et,tt)}}updateSelection(e=!1,s=!1){if(e&&this.view.observer.readSelectionRange(),!(s||this.mayControlSelection())||browser.ios&&this.view.inputState.rapidCompositionStart)return;let a=this.forceSelection;this.forceSelection=!1;let c=this.view.state.selection.main,d=this.domAtPos(c.anchor),_=c.empty?d:this.domAtPos(c.head);if(browser.gecko&&c.empty&&betweenUneditable(d)){let k=document.createTextNode("");this.view.observer.ignore(()=>d.node.insertBefore(k,d.node.childNodes[d.offset]||null)),d=_=new DOMPos(k,0),a=!0}let b=this.view.observer.selectionRange;(a||!b.focusNode||!isEquivalentPosition(d.node,d.offset,b.anchorNode,b.anchorOffset)||!isEquivalentPosition(_.node,_.offset,b.focusNode,b.focusOffset))&&(this.view.observer.ignore(()=>{browser.android&&browser.chrome&&this.dom.contains(b.focusNode)&&inUneditable(b.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let k=getSelection(this.root);if(c.empty){if(browser.gecko){let $=nextToUneditable(d.node,d.offset);if($&&$!=3){let j=nearbyTextNode(d.node,d.offset,$==1?1:-1);j&&(d=new DOMPos(j,$==1?0:j.nodeValue.length))}}k.collapse(d.node,d.offset),c.bidiLevel!=null&&b.cursorBidiLevel!=null&&(b.cursorBidiLevel=c.bidiLevel)}else if(k.extend)k.collapse(d.node,d.offset),k.extend(_.node,_.offset);else{let $=document.createRange();c.anchor>c.head&&([d,_]=[_,d]),$.setEnd(_.node,_.offset),$.setStart(d.node,d.offset),k.removeAllRanges(),k.addRange($)}}),this.view.observer.setSelectionRange(d,_)),this.impreciseAnchor=d.precise?null:new DOMPos(b.anchorNode,b.anchorOffset),this.impreciseHead=_.precise?null:new DOMPos(b.focusNode,b.focusOffset)}enforceCursorAssoc(){if(this.compositionDeco.size)return;let e=this.view.state.selection.main,s=getSelection(this.root);if(!e.empty||!e.assoc||!s.modify)return;let a=LineView.find(this,e.head);if(!a)return;let c=a.posAtStart;if(e.head==c||e.head==c+a.length)return;let d=this.coordsAt(e.head,-1),_=this.coordsAt(e.head,1);if(!d||!_||d.bottom>_.top)return;let b=this.domAtPos(e.head+e.assoc);s.collapse(b.node,b.offset),s.modify("move",e.assoc<0?"forward":"backward","lineboundary")}mayControlSelection(){return this.view.state.facet(editable)?this.root.activeElement==this.dom:hasSelection(this.dom,this.view.observer.selectionRange)}nearest(e){for(let s=e;s;){let a=ContentView.get(s);if(a&&a.rootView==this)return a;s=s.parentNode}return null}posFromDOM(e,s){let a=this.nearest(e);if(!a)throw new RangeError("Trying to find position for a DOM position outside of the document");return a.localPosFromDOM(e,s)+a.posAtStart}domAtPos(e){let{i:s,off:a}=this.childCursor().findPos(e,-1);for(;s_||e==_&&d.type!=BlockType.WidgetBefore&&d.type!=BlockType.WidgetAfter&&(!c||s==2||this.children[c-1].breakAfter||this.children[c-1].type==BlockType.WidgetBefore&&s>-2))return d.coordsAt(e-_,s);a=_}}measureVisibleLineHeights(){let e=[],{from:s,to:a}=this.view.viewState.viewport,c=this.view.contentDOM.clientWidth,d=c>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,_=-1;for(let b=0,k=0;ka)break;if(b>=s){let _e=$.dom.getBoundingClientRect();if(e.push(_e.height),d){let et=$.dom.lastChild,tt=et?clientRectsFor(et):[];if(tt.length){let nt=tt[tt.length-1],st=this.view.textDirection==Direction.LTR?nt.right-_e.left:_e.right-nt.left;st>_&&(_=st,this.minWidth=c,this.minWidthFrom=b,this.minWidthTo=j)}}}b=j+$.breakAfter}return e}measureTextSize(){for(let c of this.children)if(c instanceof LineView){let d=c.measureTextSize();if(d)return d}let e=document.createElement("div"),s,a;return e.className="cm-line",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let c=clientRectsFor(e.firstChild)[0];s=e.getBoundingClientRect().height,a=c?c.width/27:7,e.remove()}),{lineHeight:s,charWidth:a}}childCursor(e=this.length){let s=this.children.length;return s&&(e-=this.children[--s].length),new ChildCursor(this.children,e,s)}computeBlockGapDeco(){let e=[],s=this.view.viewState;for(let a=0,c=0;;c++){let d=c==s.viewports.length?null:s.viewports[c],_=d?d.from-1:this.length;if(_>a){let b=s.lineBlockAt(_).bottom-s.lineBlockAt(a).top;e.push(Decoration.replace({widget:new BlockGapWidget(b),block:!0,inclusive:!0,isBlockGap:!0}).range(a,_))}if(!d)break;a=d.to+1}return Decoration.set(e)}updateDeco(){let e=this.view.pluginField(PluginField.decorations);return this.pluginDecorationLength=e.length,this.decorations=[...e,...this.view.state.facet(decorations),this.compositionDeco,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(e){let{range:s}=e,a=this.coordsAt(s.head,s.empty?s.assoc:s.head>s.anchor?-1:1),c;if(!a)return;!s.empty&&(c=this.coordsAt(s.anchor,s.anchor>s.head?-1:1))&&(a={left:Math.min(a.left,c.left),top:Math.min(a.top,c.top),right:Math.max(a.right,c.right),bottom:Math.max(a.bottom,c.bottom)});let d=0,_=0,b=0,k=0;for(let j of this.view.pluginField(PluginField.scrollMargins))if(j){let{left:_e,right:et,top:tt,bottom:nt}=j;_e!=null&&(d=Math.max(d,_e)),et!=null&&(_=Math.max(_,et)),tt!=null&&(b=Math.max(b,tt)),nt!=null&&(k=Math.max(k,nt))}let $={left:a.left-d,top:a.top-b,right:a.right+_,bottom:a.bottom+k};scrollRectIntoView(this.view.scrollDOM,$,s.head0&&s<=0)o=o.childNodes[e-1],e=maxOffset(o);else if(o.nodeType==1&&e=0)o=o.childNodes[e],e=0;else return null}}function nextToUneditable(o,e){return o.nodeType!=1?0:(e&&o.childNodes[e-1].contentEditable=="false"?1:0)|(e0;){let $=findClusterBreak(c.text,_,!1);if(a(c.text.slice($,_))!=k)break;_=$}for(;bo?e.left-o:Math.max(0,o-e.right)}function getdy(o,e){return e.top>o?e.top-o:Math.max(0,o-e.bottom)}function yOverlap(o,e){return o.tope.top+1}function upTop(o,e){return eo.bottom?{top:o.top,left:o.left,right:o.right,bottom:e}:o}function domPosAtCoords(o,e,s){let a,c,d,_,b,k,$,j;for(let tt=o.firstChild;tt;tt=tt.nextSibling){let nt=clientRectsFor(tt);for(let st=0;stat||_==at&&d>it)&&(a=tt,c=rt,d=it,_=at),it==0?s>rt.bottom&&(!$||$.bottomrt.top)&&(k=tt,j=rt):$&&yOverlap($,rt)?$=upBot($,rt.bottom):j&&yOverlap(j,rt)&&(j=upTop(j,rt.top))}}if($&&$.bottom>=s?(a=b,c=$):j&&j.top<=s&&(a=k,c=j),!a)return{node:o,offset:0};let _e=Math.max(c.left,Math.min(c.right,e));if(a.nodeType==3)return domPosInText(a,_e,s);if(!d&&a.contentEditable=="true")return domPosAtCoords(a,_e,s);let et=Array.prototype.indexOf.call(o.childNodes,a)+(e>=(c.left+c.right)/2?1:0);return{node:o,offset:et}}function domPosInText(o,e,s){let a=o.nodeValue.length,c=-1,d=1e9,_=0;for(let b=0;bs?j.top-s:s-j.bottom)-1;if(j.left-1<=e&&j.right+1>=e&&_e=(j.left+j.right)/2,tt=et;if((browser.chrome||browser.gecko)&&textRange(o,b).getBoundingClientRect().left==j.right&&(tt=!et),_e<=0)return{node:o,offset:b+(tt?1:0)};c=b+(tt?1:0),d=_e}}}return{node:o,offset:c>-1?c:_>0?o.nodeValue.length:0}}function posAtCoords(o,{x:e,y:s},a,c=-1){var d;let _=o.contentDOM.getBoundingClientRect(),b=_.top+o.viewState.paddingTop,k,{docHeight:$}=o.viewState,j=s-b;if(j<0)return 0;if(j>$)return o.state.doc.length;for(let it=o.defaultLineHeight/2,at=!1;k=o.elementAtHeight(j),k.type!=BlockType.Text;)for(;j=c>0?k.bottom+it:k.top-it,!(j>=0&&j<=$);){if(at)return a?null:0;at=!0,c=-c}s=b+j;let _e=k.from;if(_eo.viewport.to)return o.viewport.to==o.state.doc.length?o.state.doc.length:a?null:posAtCoordsImprecise(o,_,k,e,s);let et=o.dom.ownerDocument,tt=o.root.elementFromPoint?o.root:et,nt=tt.elementFromPoint(e,s);nt&&!o.contentDOM.contains(nt)&&(nt=null),nt||(e=Math.max(_.left+1,Math.min(_.right-1,e)),nt=tt.elementFromPoint(e,s),nt&&!o.contentDOM.contains(nt)&&(nt=null));let st,rt=-1;if(nt&&((d=o.docView.nearest(nt))===null||d===void 0?void 0:d.isEditable)!=!1){if(et.caretPositionFromPoint){let it=et.caretPositionFromPoint(e,s);it&&({offsetNode:st,offset:rt}=it)}else if(et.caretRangeFromPoint){let it=et.caretRangeFromPoint(e,s);it&&({startContainer:st,startOffset:rt}=it,browser.safari&&isSuspiciousCaretResult(st,rt,e)&&(st=void 0))}}if(!st||!o.docView.dom.contains(st)){let it=LineView.find(o.docView,_e);if(!it)return j>k.top+k.height/2?k.to:k.from;({node:st,offset:rt}=domPosAtCoords(it.dom,e,s))}return o.docView.posFromDOM(st,rt)}function posAtCoordsImprecise(o,e,s,a,c){let d=Math.round((a-e.left)*o.defaultCharacterWidth);o.lineWrapping&&s.height>o.defaultLineHeight*1.5&&(d+=Math.floor((c-s.top)/o.defaultLineHeight)*o.viewState.heightOracle.lineLength);let _=o.state.sliceDoc(s.from,s.to);return s.from+findColumn(_,d,o.state.tabSize)}function isSuspiciousCaretResult(o,e,s){let a;if(o.nodeType!=3||e!=(a=o.nodeValue.length))return!1;for(let c=o.nextSibling;c;c=c.nextSibling)if(c.nodeType!=1||c.nodeName!="BR")return!1;return textRange(o,a-1,a).getBoundingClientRect().left>s}function moveToLineBoundary(o,e,s,a){let c=o.state.doc.lineAt(e.head),d=!a||!o.lineWrapping?null:o.coordsAtPos(e.assoc<0&&e.head>c.from?e.head-1:e.head);if(d){let k=o.dom.getBoundingClientRect(),$=o.posAtCoords({x:s==(o.textDirection==Direction.LTR)?k.right-1:k.left+1,y:(d.top+d.bottom)/2});if($!=null)return EditorSelection.cursor($,s?-1:1)}let _=LineView.find(o.docView,e.head),b=_?s?_.posAtEnd:_.posAtStart:s?c.to:c.from;return EditorSelection.cursor(b,s?-1:1)}function moveByChar(o,e,s,a){let c=o.state.doc.lineAt(e.head),d=o.bidiSpans(c);for(let _=e,b=null;;){let k=moveVisually(c,d,o.textDirection,_,s),$=movedOver;if(!k){if(c.number==(s?o.state.doc.lines:1))return _;$=` +`,c=o.state.doc.line(c.number+(s?1:-1)),d=o.bidiSpans(c),k=EditorSelection.cursor(s?c.from:c.to)}if(b){if(!b($))return _}else{if(!a)return k;b=a($)}_=k}}function byGroup(o,e,s){let a=o.state.charCategorizer(e),c=a(s);return d=>{let _=a(d);return c==CharCategory.Space&&(c=_),c==_}}function moveVertically(o,e,s,a){let c=e.head,d=s?1:-1;if(c==(s?o.state.doc.length:0))return EditorSelection.cursor(c,e.assoc);let _=e.goalColumn,b,k=o.contentDOM.getBoundingClientRect(),$=o.coordsAtPos(c),j=o.documentTop;if($)_==null&&(_=$.left-k.left),b=d<0?$.top:$.bottom;else{let tt=o.viewState.lineBlockAt(c-j);_==null&&(_=Math.min(k.right-k.left,o.defaultCharacterWidth*(c-tt.from))),b=(d<0?tt.top:tt.bottom)+j}let _e=k.left+_,et=a!=null?a:o.defaultLineHeight>>1;for(let tt=0;;tt+=10){let nt=b+(et+tt)*d,st=posAtCoords(o,{x:_e,y:nt},!1,d);if(ntk.bottom||(d<0?stc))return EditorSelection.cursor(st,e.assoc,void 0,_)}}function skipAtoms(o,e,s){let a=o.pluginField(PluginField.atomicRanges);for(;;){let c=!1;for(let d of a)d.between(s.from-1,s.from+1,(_,b,k)=>{s.from>_&&s.froms.from?EditorSelection.cursor(_,1):EditorSelection.cursor(b,-1),c=!0)});if(!c)return s}}class InputState{constructor(e){this.lastKeyCode=0,this.lastKeyTime=0,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.rapidCompositionStart=!1,this.mouseSelection=null;for(let s in handlers){let a=handlers[s];e.contentDOM.addEventListener(s,c=>{!eventBelongsToEditor(e,c)||this.ignoreDuringComposition(c)||s=="keydown"&&this.keydown(e,c)||(this.mustFlushObserver(c)&&e.observer.forceFlush(),this.runCustomHandlers(s,e,c)?c.preventDefault():a(e,c))}),this.registeredEvents.push(s)}this.notifiedFocused=e.hasFocus,this.ensureHandlers(e),browser.safari&&e.contentDOM.addEventListener("input",()=>null)}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}ensureHandlers(e){let s=this.customHandlers=e.pluginField(domEventHandlers);for(let a of s)for(let c in a.handlers)this.registeredEvents.indexOf(c)<0&&c!="scroll"&&(this.registeredEvents.push(c),e.contentDOM.addEventListener(c,d=>{!eventBelongsToEditor(e,d)||this.runCustomHandlers(c,e,d)&&d.preventDefault()}))}runCustomHandlers(e,s,a){for(let c of this.customHandlers){let d=c.handlers[e];if(d)try{if(d.call(c.plugin,a,s)||a.defaultPrevented)return!0}catch(_){logException(s.state,_)}}return!1}runScrollHandlers(e,s){for(let a of this.customHandlers){let c=a.handlers.scroll;if(c)try{c.call(a.plugin,s,e)}catch(d){logException(e.state,d)}}}keydown(e,s){if(this.lastKeyCode=s.keyCode,this.lastKeyTime=Date.now(),s.keyCode==9&&Date.now()c.keyCode==s.keyCode))&&!(s.ctrlKey||s.altKey||s.metaKey)&&!s.synthetic?(this.pendingIOSKey=a,setTimeout(()=>this.flushIOSKey(e),250),!0):!1}flushIOSKey(e){let s=this.pendingIOSKey;return s?(this.pendingIOSKey=void 0,dispatchKey(e.contentDOM,s.key,s.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:browser.safari&&Date.now()-this.compositionEndedAt<500?(this.compositionEndedAt=0,!0):!1:!1}mustFlushObserver(e){return e.type=="keydown"&&e.keyCode!=229||e.type=="compositionend"&&!browser.ios}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const PendingKeys=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],modifierCodes=[16,17,18,20,91,92,224,225];class MouseSelection{constructor(e,s,a,c){this.view=e,this.style=a,this.mustSelect=c,this.lastEvent=s;let d=e.contentDOM.ownerDocument;d.addEventListener("mousemove",this.move=this.move.bind(this)),d.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=s.shiftKey,this.multiple=e.state.facet(EditorState.allowMultipleSelections)&&addsSelectionRange(e,s),this.dragMove=dragMovesSelection(e,s),this.dragging=isInPrimarySelection(e,s)&&getClickType(s)==1?null:!1,this.dragging===!1&&(s.preventDefault(),this.select(s))}move(e){if(e.buttons==0)return this.destroy();this.dragging===!1&&this.select(this.lastEvent=e)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}select(e){let s=this.style.get(e,this.extend,this.multiple);(this.mustSelect||!s.eq(this.view.state.selection)||s.main.assoc!=this.view.state.selection.main.assoc)&&this.view.dispatch({selection:s,userEvent:"select.pointer",scrollIntoView:!0}),this.mustSelect=!1}update(e){e.docChanged&&this.dragging&&(this.dragging=this.dragging.map(e.changes)),this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function addsSelectionRange(o,e){let s=o.state.facet(clickAddsSelectionRange);return s.length?s[0](e):browser.mac?e.metaKey:e.ctrlKey}function dragMovesSelection(o,e){let s=o.state.facet(dragMovesSelection$1);return s.length?s[0](e):browser.mac?!e.altKey:!e.ctrlKey}function isInPrimarySelection(o,e){let{main:s}=o.state.selection;if(s.empty)return!1;let a=getSelection(o.root);if(a.rangeCount==0)return!0;let c=a.getRangeAt(0).getClientRects();for(let d=0;d=e.clientX&&_.top<=e.clientY&&_.bottom>=e.clientY)return!0}return!1}function eventBelongsToEditor(o,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let s=e.target,a;s!=o.contentDOM;s=s.parentNode)if(!s||s.nodeType==11||(a=ContentView.get(s))&&a.ignoreEvent(e))return!1;return!0}const handlers=Object.create(null),brokenClipboardAPI=browser.ie&&browser.ie_version<15||browser.ios&&browser.webkit_version<604;function capturePaste(o){let e=o.dom.parentNode;if(!e)return;let s=e.appendChild(document.createElement("textarea"));s.style.cssText="position: fixed; left: -10000px; top: 10px",s.focus(),setTimeout(()=>{o.focus(),s.remove(),doPaste(o,s.value)},50)}function doPaste(o,e){let{state:s}=o,a,c=1,d=s.toText(e),_=d.lines==s.selection.ranges.length;if(lastLinewiseCopy!=null&&s.selection.ranges.every(k=>k.empty)&&lastLinewiseCopy==d.toString()){let k=-1;a=s.changeByRange($=>{let j=s.doc.lineAt($.from);if(j.from==k)return{range:$};k=j.from;let _e=s.toText((_?d.line(c++).text:e)+s.lineBreak);return{changes:{from:j.from,insert:_e},range:EditorSelection.cursor($.from+_e.length)}})}else _?a=s.changeByRange(k=>{let $=d.line(c++);return{changes:{from:k.from,to:k.to,insert:$.text},range:EditorSelection.cursor(k.from+$.length)}}):a=s.replaceSelection(d);o.dispatch(a,{userEvent:"input.paste",scrollIntoView:!0})}handlers.keydown=(o,e)=>{o.inputState.setSelectionOrigin("select"),e.keyCode==27?o.inputState.lastEscPress=Date.now():modifierCodes.indexOf(e.keyCode)<0&&(o.inputState.lastEscPress=0)};let lastTouch=0;handlers.touchstart=(o,e)=>{lastTouch=Date.now(),o.inputState.setSelectionOrigin("select.pointer")};handlers.touchmove=o=>{o.inputState.setSelectionOrigin("select.pointer")};handlers.mousedown=(o,e)=>{if(o.observer.flush(),lastTouch>Date.now()-2e3&&getClickType(e)==1)return;let s=null;for(let a of o.state.facet(mouseSelectionStyle))if(s=a(o,e),s)break;if(!s&&e.button==0&&(s=basicMouseSelection(o,e)),s){let a=o.root.activeElement!=o.contentDOM;a&&o.observer.ignore(()=>focusPreventScroll(o.contentDOM)),o.inputState.startMouseSelection(new MouseSelection(o,e,s,a))}};function rangeForClick(o,e,s,a){if(a==1)return EditorSelection.cursor(e,s);if(a==2)return groupAt(o.state,e,s);{let c=LineView.find(o.docView,e),d=o.state.doc.lineAt(c?c.posAtEnd:e),_=c?c.posAtStart:d.from,b=c?c.posAtEnd:d.to;return bo>=e.top&&o<=e.bottom,inside=(o,e,s)=>insideY(e,s)&&o>=s.left&&o<=s.right;function findPositionSide(o,e,s,a){let c=LineView.find(o.docView,e);if(!c)return 1;let d=e-c.posAtStart;if(d==0)return 1;if(d==c.length)return-1;let _=c.coordsAt(d,-1);if(_&&inside(s,a,_))return-1;let b=c.coordsAt(d,1);return b&&inside(s,a,b)?1:_&&insideY(a,_)?-1:1}function queryPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:s,bias:findPositionSide(o,s,e.clientX,e.clientY)}}const BadMouseDetail=browser.ie&&browser.ie_version<=11;let lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(o){if(!BadMouseDetail)return o.detail;let e=lastMouseDown,s=lastMouseDownTime;return lastMouseDown=o,lastMouseDownTime=Date.now(),lastMouseDownCount=!e||s>Date.now()-400&&Math.abs(e.clientX-o.clientX)<2&&Math.abs(e.clientY-o.clientY)<2?(lastMouseDownCount+1)%3:1}function basicMouseSelection(o,e){let s=queryPos(o,e),a=getClickType(e),c=o.state.selection,d=s,_=e;return{update(b){b.docChanged&&(s&&(s.pos=b.changes.mapPos(s.pos)),c=c.map(b.changes),_=null)},get(b,k,$){let j;if(_&&b.clientX==_.clientX&&b.clientY==_.clientY?j=d:(j=d=queryPos(o,b),_=b),!j||!s)return c;let _e=rangeForClick(o,j.pos,j.bias,a);if(s.pos!=j.pos&&!k){let et=rangeForClick(o,s.pos,s.bias,a),tt=Math.min(et.from,_e.from),nt=Math.max(et.to,_e.to);_e=tt<_e.from?EditorSelection.range(tt,nt):EditorSelection.range(nt,tt)}return k?c.replaceRange(c.main.extend(_e.from,_e.to)):$?c.addRange(_e):EditorSelection.create([_e])}}}handlers.dragstart=(o,e)=>{let{selection:{main:s}}=o.state,{mouseSelection:a}=o.inputState;a&&(a.dragging=s),e.dataTransfer&&(e.dataTransfer.setData("Text",o.state.sliceDoc(s.from,s.to)),e.dataTransfer.effectAllowed="copyMove")};function dropText(o,e,s,a){if(!s)return;let c=o.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:d}=o.inputState,_=a&&d&&d.dragging&&d.dragMove?{from:d.dragging.from,to:d.dragging.to}:null,b={from:c,insert:s},k=o.state.changes(_?[_,b]:b);o.focus(),o.dispatch({changes:k,selection:{anchor:k.mapPos(c,-1),head:k.mapPos(c,1)},userEvent:_?"move.drop":"input.drop"})}handlers.drop=(o,e)=>{if(!e.dataTransfer)return;if(o.state.readOnly)return e.preventDefault();let s=e.dataTransfer.files;if(s&&s.length){e.preventDefault();let a=Array(s.length),c=0,d=()=>{++c==s.length&&dropText(o,e,a.filter(_=>_!=null).join(o.state.lineBreak),!1)};for(let _=0;_{/[\x00-\x08\x0e-\x1f]{2}/.test(b.result)||(a[_]=b.result),d()},b.readAsText(s[_])}}else dropText(o,e,e.dataTransfer.getData("Text"),!0)};handlers.paste=(o,e)=>{if(o.state.readOnly)return e.preventDefault();o.observer.flush();let s=brokenClipboardAPI?null:e.clipboardData;s?(doPaste(o,s.getData("text/plain")),e.preventDefault()):capturePaste(o)};function captureCopy(o,e){let s=o.dom.parentNode;if(!s)return;let a=s.appendChild(document.createElement("textarea"));a.style.cssText="position: fixed; left: -10000px; top: 10px",a.value=e,a.focus(),a.selectionEnd=e.length,a.selectionStart=0,setTimeout(()=>{a.remove(),o.focus()},50)}function copiedRange(o){let e=[],s=[],a=!1;for(let c of o.selection.ranges)c.empty||(e.push(o.sliceDoc(c.from,c.to)),s.push(c));if(!e.length){let c=-1;for(let{from:d}of o.selection.ranges){let _=o.doc.lineAt(d);_.number>c&&(e.push(_.text),s.push({from:_.from,to:Math.min(o.doc.length,_.to+1)})),c=_.number}a=!0}return{text:e.join(o.lineBreak),ranges:s,linewise:a}}let lastLinewiseCopy=null;handlers.copy=handlers.cut=(o,e)=>{let{text:s,ranges:a,linewise:c}=copiedRange(o.state);if(!s&&!c)return;lastLinewiseCopy=c?s:null;let d=brokenClipboardAPI?null:e.clipboardData;d?(e.preventDefault(),d.clearData(),d.setData("text/plain",s)):captureCopy(o,s),e.type=="cut"&&!o.state.readOnly&&o.dispatch({changes:a,scrollIntoView:!0,userEvent:"delete.cut"})};handlers.focus=handlers.blur=o=>{setTimeout(()=>{o.hasFocus!=o.inputState.notifiedFocused&&o.update([])},10)};function forceClearComposition(o,e){if(o.docView.compositionDeco.size){o.inputState.rapidCompositionStart=e;try{o.update([])}finally{o.inputState.rapidCompositionStart=!1}}}handlers.compositionstart=handlers.compositionupdate=o=>{o.inputState.compositionFirstChange==null&&(o.inputState.compositionFirstChange=!0),o.inputState.composing<0&&(o.inputState.composing=0,o.docView.compositionDeco.size&&(o.observer.flush(),forceClearComposition(o,!0)))};handlers.compositionend=o=>{o.inputState.composing=-1,o.inputState.compositionEndedAt=Date.now(),o.inputState.compositionFirstChange=null,setTimeout(()=>{o.inputState.composing<0&&forceClearComposition(o,!1)},50)};handlers.contextmenu=o=>{o.inputState.lastContextMenu=Date.now()};handlers.beforeinput=(o,e)=>{var s;let a;if(browser.chrome&&browser.android&&(a=PendingKeys.find(c=>c.inputType==e.inputType))&&(o.observer.delayAndroidKey(a.key,a.keyCode),a.key=="Backspace"||a.key=="Delete")){let c=((s=window.visualViewport)===null||s===void 0?void 0:s.height)||0;setTimeout(()=>{var d;(((d=window.visualViewport)===null||d===void 0?void 0:d.height)||0)>c+10&&o.hasFocus&&(o.contentDOM.blur(),o.focus())},100)}};const wrappingWhiteSpace=["pre-wrap","normal","pre-line","break-spaces"];class HeightOracle{constructor(){this.doc=Text.empty,this.lineWrapping=!1,this.direction=Direction.LTR,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.lineLength=30,this.heightChanged=!1}heightForGap(e,s){let a=this.doc.lineAt(s).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(a+=Math.ceil((s-e-a*this.lineLength*.5)/this.lineLength)),this.lineHeight*a}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForStyle(e,s){return wrappingWhiteSpace.indexOf(e)>-1!=this.lineWrapping||this.direction!=s}mustRefreshForHeights(e){let s=!1;for(let a=0;a-1,k=Math.round(a)!=Math.round(this.lineHeight)||this.lineWrapping!=b||this.direction!=s;if(this.lineWrapping=b,this.direction=s,this.lineHeight=a,this.charWidth=c,this.lineLength=d,k){this.heightSamples={};for(let $=0;$<_.length;$++){let j=_[$];j<0?$++:this.heightSamples[Math.floor(j*10)]=!0}}return k}}class MeasuredHeights{constructor(e,s){this.from=e,this.heights=s,this.index=0}get more(){return this.indexs.moveY(e)):this.type):this}}var QueryType$1=function(o){return o[o.ByPos=0]="ByPos",o[o.ByHeight=1]="ByHeight",o[o.ByPosNoHeight=2]="ByPosNoHeight",o}(QueryType$1||(QueryType$1={}));const Epsilon=.001;class HeightMap{constructor(e,s,a=2){this.length=e,this.height=s,this.flags=a}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,s){this.height!=s&&(Math.abs(this.height-s)>Epsilon&&(e.heightChanged=!0),this.height=s)}replace(e,s,a){return HeightMap.of(a)}decomposeLeft(e,s){s.push(this)}decomposeRight(e,s){s.push(this)}applyChanges(e,s,a,c){let d=this;for(let _=c.length-1;_>=0;_--){let{fromA:b,toA:k,fromB:$,toB:j}=c[_],_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0),et=_e.to>=k?_e:d.lineAt(k,QueryType$1.ByPosNoHeight,s,0,0);for(j+=et.to-k,k=et.to;_>0&&_e.from<=c[_-1].toA;)b=c[_-1].fromA,$=c[_-1].fromB,_--,b<_e.from&&(_e=d.lineAt(b,QueryType$1.ByPosNoHeight,s,0,0));$+=_e.from-b,b=_e.from;let tt=NodeBuilder.build(a,e,$,j);d=d.replace(b,k,tt)}return d.updateHeight(a,0)}static empty(){return new HeightMapText(0,0)}static of(e){if(e.length==1)return e[0];let s=0,a=e.length,c=0,d=0;for(;;)if(s==a)if(c>d*2){let b=e[s-1];b.break?e.splice(--s,1,b.left,null,b.right):e.splice(--s,1,b.left,b.right),a+=1+b.break,c-=b.size}else if(d>c*2){let b=e[a];b.break?e.splice(a,1,b.left,null,b.right):e.splice(a,1,b.left,b.right),a+=2+b.break,d-=b.size}else break;else if(c0){let d=a[a.length-1];d instanceof HeightMapGap?a[a.length-1]=new HeightMapGap(d.length+c):a.push(null,new HeightMapGap(c-1))}if(e>0){let d=a[0];d instanceof HeightMapGap?a[0]=new HeightMapGap(e+d.length):a.unshift(new HeightMapGap(e-1),null)}return HeightMap.of(a)}decomposeLeft(e,s){s.push(new HeightMapGap(e-1),null)}decomposeRight(e,s){s.push(null,new HeightMapGap(this.length-e-1))}updateHeight(e,s=0,a=!1,c){let d=s+this.length;if(c&&c.from<=s+this.length&&c.more){let _=[],b=Math.max(s,c.from),k=-1,$=e.heightChanged;for(c.from>s&&_.push(new HeightMapGap(c.from-s-1).updateHeight(e,s));b<=d&&c.more;){let _e=e.doc.lineAt(b).length;_.length&&_.push(null);let et=c.heights[c.index++];k==-1?k=et:Math.abs(et-k)>=Epsilon&&(k=-2);let tt=new HeightMapText(_e,et);tt.outdated=!1,_.push(tt),b+=_e+1}b<=d&&_.push(null,new HeightMapGap(d-b).updateHeight(e,b));let j=HeightMap.of(_);return e.heightChanged=$||k<0||Math.abs(j.height-this.height)>=Epsilon||Math.abs(k-this.lines(e.doc,s).lineHeight)>=Epsilon,j}else(a||this.outdated)&&(this.setHeight(e,e.heightForGap(s,s+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class HeightMapBranch extends HeightMap{constructor(e,s,a){super(e.length+s+a.length,e.height+a.height,s|(e.outdated||a.outdated?2:0)),this.left=e,this.right=a,this.size=e.size+a.size}get break(){return this.flags&1}blockAt(e,s,a,c){let d=a+this.left.height;return eb))return $;let j=s==QueryType$1.ByPosNoHeight?QueryType$1.ByPosNoHeight:QueryType$1.ByPos;return k?$.join(this.right.lineAt(b,j,a,_,b)):this.left.lineAt(b,j,a,c,d).join($)}forEachLine(e,s,a,c,d,_){let b=c+this.left.height,k=d+this.left.length+this.break;if(this.break)e=k&&this.right.forEachLine(e,s,a,b,k,_);else{let $=this.lineAt(k,QueryType$1.ByPos,a,c,d);e<$.from&&this.left.forEachLine(e,$.from-1,a,c,d,_),$.to>=e&&$.from<=s&&_($),s>$.to&&this.right.forEachLine($.to+1,s,a,b,k,_)}}replace(e,s,a){let c=this.left.length+this.break;if(sthis.left.length)return this.balanced(this.left,this.right.replace(e-c,s-c,a));let d=[];e>0&&this.decomposeLeft(e,d);let _=d.length;for(let b of a)d.push(b);if(e>0&&mergeGaps(d,_-1),s=a&&s.push(null)),e>a&&this.right.decomposeLeft(e-a,s)}decomposeRight(e,s){let a=this.left.length,c=a+this.break;if(e>=c)return this.right.decomposeRight(e-c,s);e2*s.size||s.size>2*e.size?HeightMap.of(this.break?[e,null,s]:[e,s]):(this.left=e,this.right=s,this.height=e.height+s.height,this.outdated=e.outdated||s.outdated,this.size=e.size+s.size,this.length=e.length+this.break+s.length,this)}updateHeight(e,s=0,a=!1,c){let{left:d,right:_}=this,b=s+d.length+this.break,k=null;return c&&c.from<=s+d.length&&c.more?k=d=d.updateHeight(e,s,a,c):d.updateHeight(e,s,a),c&&c.from<=b+_.length&&c.more?k=_=_.updateHeight(e,b,a,c):_.updateHeight(e,b,a),k?this.balanced(d,_):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function mergeGaps(o,e){let s,a;o[e]==null&&(s=o[e-1])instanceof HeightMapGap&&(a=o[e+1])instanceof HeightMapGap&&o.splice(e-1,3,new HeightMapGap(s.length+1+a.length))}const relevantWidgetHeight=5;class NodeBuilder{constructor(e,s){this.pos=e,this.oracle=s,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,s){if(this.lineStart>-1){let a=Math.min(s,this.lineEnd),c=this.nodes[this.nodes.length-1];c instanceof HeightMapText?c.length+=a-this.pos:(a>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(a-this.pos,-1)),this.writtenTo=a,s>a&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=s}point(e,s,a){if(e=relevantWidgetHeight)&&this.addLineDeco(c,d)}else s>e&&this.span(e,s);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:s}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=s,this.writtenToe&&this.nodes.push(new HeightMapText(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,s){let a=new HeightMapGap(s-e);return this.oracle.doc.lineAt(e).to==s&&(a.flags|=4),a}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof HeightMapText)return e;let s=new HeightMapText(0,-1);return this.nodes.push(s),s}addBlock(e){this.enterLine(),e.type==BlockType.WidgetAfter&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,e.type!=BlockType.WidgetBefore&&(this.covering=e)}addLineDeco(e,s){let a=this.ensureLine();a.length+=s,a.collapsed+=s,a.widgetHeight=Math.max(a.widgetHeight,e),this.writtenTo=this.pos=this.pos+s}finish(e){let s=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(s instanceof HeightMapText)&&!this.isCovered?this.nodes.push(new HeightMapText(0,-1)):(this.writtenTo$.clientHeight||$.scrollWidth>$.clientWidth)&&j.overflow!="visible"){let _e=$.getBoundingClientRect();a=Math.max(a,_e.left),c=Math.min(c,_e.right),d=Math.max(d,_e.top),_=Math.min(_,_e.bottom)}k=j.position=="absolute"||j.position=="fixed"?$.offsetParent:$.parentNode}else if(k.nodeType==11)k=k.host;else break;return{left:a-s.left,right:Math.max(a,c)-s.left,top:d-(s.top+e),bottom:Math.max(d,_)-(s.top+e)}}function fullPixelRange(o,e){let s=o.getBoundingClientRect();return{left:0,right:s.right-s.left,top:e,bottom:s.bottom-(s.top+e)}}class LineGap{constructor(e,s,a){this.from=e,this.to=s,this.size=a}static same(e,s){if(e.length!=s.length)return!1;for(let a=0;as.draw(!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:s}=this.state.selection;for(let a=0;a<=1;a++){let c=a?s.head:s.anchor;if(!e.some(({from:d,to:_})=>c>=d&&c<=_)){let{from:d,to:_}=this.lineBlockAt(c);e.push(new Viewport(d,_))}}this.viewports=e.sort((a,c)=>a.from-c.from),this.scaler=this.heightMap.height<=7e6?IdScaler:new BigScaler(this.heightOracle.doc,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.state.doc,0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:scaleBlock(e,this.scaler))})}update(e,s=null){let a=this.state;this.state=e.state;let c=this.state.facet(decorations),d=e.changedRanges,_=ChangedRange.extendWithRanges(d,heightRelevantDecoChanges(e.startState.facet(decorations),c,e?e.changes:ChangeSet.empty(this.state.doc.length))),b=this.heightMap.height;this.heightMap=this.heightMap.applyChanges(c,a.doc,this.heightOracle.setDoc(this.state.doc),_),this.heightMap.height!=b&&(e.flags|=2);let k=_.length?this.mapViewport(this.viewport,e.changes):this.viewport;(s&&(s.range.headk.to)||!this.viewportIsAppropriate(k))&&(k=this.getViewport(0,s));let $=!e.changes.empty||e.flags&2||k.from!=this.viewport.from||k.to!=this.viewport.to;this.viewport=k,this.updateForViewport(),$&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),s&&(this.scrollTarget=s),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&(this.mustEnforceCursorAssoc=!0)}measure(e){let s=e.contentDOM,a=window.getComputedStyle(s),c=this.heightOracle,d=a.whiteSpace,_=a.direction=="rtl"?Direction.RTL:Direction.LTR,b=this.heightOracle.mustRefreshForStyle(d,_),k=b||this.mustMeasureContent||this.contentDOMHeight!=s.clientHeight,$=0,j=0;if(this.editorWidth!=e.scrollDOM.clientWidth&&(c.lineWrapping&&(k=!0),this.editorWidth=e.scrollDOM.clientWidth,$|=8),k){this.mustMeasureContent=!1,this.contentDOMHeight=s.clientHeight;let it=parseInt(a.paddingTop)||0,at=parseInt(a.paddingBottom)||0;(this.paddingTop!=it||this.paddingBottom!=at)&&($|=8,this.paddingTop=it,this.paddingBottom=at)}let _e=(this.printing?fullPixelRange:visiblePixelRange)(s,this.paddingTop),et=_e.top-this.pixelViewport.top,tt=_e.bottom-this.pixelViewport.bottom;this.pixelViewport=_e;let nt=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(nt!=this.inView&&(this.inView=nt,nt&&(k=!0)),!this.inView)return 0;let st=s.clientWidth;if((this.contentDOMWidth!=st||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=st,this.editorHeight=e.scrollDOM.clientHeight,$|=8),k){let it=e.docView.measureVisibleLineHeights();if(c.mustRefreshForHeights(it)&&(b=!0),b||c.lineWrapping&&Math.abs(st-this.contentDOMWidth)>c.charWidth){let{lineHeight:at,charWidth:ot}=e.docView.measureTextSize();b=c.refresh(d,_,at,ot,st/ot,it),b&&(e.docView.minWidth=0,$|=8)}et>0&&tt>0?j=Math.max(et,tt):et<0&&tt<0&&(j=Math.min(et,tt)),c.heightChanged=!1,this.heightMap=this.heightMap.updateHeight(c,0,b,new MeasuredHeights(this.viewport.from,it)),c.heightChanged&&($|=2)}let rt=!this.viewportIsAppropriate(this.viewport,j)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return rt&&(this.viewport=this.getViewport(j,this.scrollTarget)),this.updateForViewport(),($&2||rt)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(b?[]:this.lineGaps)),$|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),$}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,s){let a=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),c=this.heightMap,d=this.state.doc,{visibleTop:_,visibleBottom:b}=this,k=new Viewport(c.lineAt(_-a*1e3,QueryType$1.ByHeight,d,0,0).from,c.lineAt(b+(1-a)*1e3,QueryType$1.ByHeight,d,0,0).to);if(s){let{head:$}=s.range;if($k.to){let j=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),_e=c.lineAt($,QueryType$1.ByPos,d,0,0),et;s.y=="center"?et=(_e.top+_e.bottom)/2-j/2:s.y=="start"||s.y=="nearest"&&$=b+Math.max(10,Math.min(a,250)))&&c>_-2*1e3&&da.from&&b.push({from:a.from,to:d}),_=a.from&&k.from<=a.to&&cutRange(b,k.from-10,k.from+10),!k.empty&&k.to>=a.from&&k.to<=a.to&&cutRange(b,k.to-10,k.to+10);for(let{from:$,to:j}of b)j-$>1e3&&s.push(find(e,_e=>_e.from>=a.from&&_e.to<=a.to&&Math.abs(_e.from-$)<1e3&&Math.abs(_e.to-j)<1e3)||new LineGap($,j,this.gapSize(a,$,j,c)))}return s}gapSize(e,s,a,c){let d=findFraction(c,a)-findFraction(c,s);return this.heightOracle.lineWrapping?e.height*d:c.total*this.heightOracle.charWidth*d}updateLineGaps(e){LineGap.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Decoration.set(e.map(s=>s.draw(this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.state.facet(decorations);this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let s=[];RangeSet.spans(e,this.viewport.from,this.viewport.to,{span(c,d){s.push({from:c,to:d})},point(){}},20);let a=s.length!=this.visibleRanges.length||this.visibleRanges.some((c,d)=>c.from!=s[d].from||c.to!=s[d].to);return this.visibleRanges=s,a?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(s=>s.from<=e&&s.to>=e)||scaleBlock(this.heightMap.lineAt(e,QueryType$1.ByPos,this.state.doc,0,0),this.scaler)}lineBlockAtHeight(e){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(e),QueryType$1.ByHeight,this.state.doc,0,0),this.scaler)}elementAtHeight(e){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(e),this.state.doc,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Viewport{constructor(e,s){this.from=e,this.to=s}}function lineStructure(o,e,s){let a=[],c=o,d=0;return RangeSet.spans(s.facet(decorations),o,e,{span(){},point(_,b){_>c&&(a.push({from:c,to:_}),d+=_-c),c=b}},20),c=1)return e[e.length-1].to;let a=Math.floor(o*s);for(let c=0;;c++){let{from:d,to:_}=e[c],b=_-d;if(a<=b)return d+a;a-=b}}function findFraction(o,e){let s=0;for(let{from:a,to:c}of o.ranges){if(e<=c){s+=e-a;break}s+=c-a}return s/o.total}function cutRange(o,e,s){for(let a=0;ae){let d=[];c.froms&&d.push({from:s,to:c.to}),o.splice(a,1,...d),a+=d.length-1}}}function find(o,e){for(let s of o)if(e(s))return s}const IdScaler={toDOM(o){return o},fromDOM(o){return o},scale:1};class BigScaler{constructor(e,s,a){let c=0,d=0,_=0;this.viewports=a.map(({from:b,to:k})=>{let $=s.lineAt(b,QueryType$1.ByPos,e,0,0).top,j=s.lineAt(k,QueryType$1.ByPos,e,0,0).bottom;return c+=j-$,{from:b,to:k,top:$,bottom:j,domTop:0,domBottom:0}}),this.scale=(7e6-c)/(s.height-c);for(let b of this.viewports)b.domTop=_+(b.top-d)*this.scale,_=b.domBottom=b.domTop+(b.bottom-b.top),d=b.bottom}toDOM(e){for(let s=0,a=0,c=0;;s++){let d=sscaleBlock(c,e)):o.type)}const theme=Facet.define({combine:o=>o.join(" ")}),darkTheme=Facet.define({combine:o=>o.indexOf(!0)>-1}),baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName(),lightDarkIDs={"&light":"."+baseLightID,"&dark":"."+baseDarkID};function buildTheme(o,e,s){return new StyleModule(e,{finish(a){return/&/.test(a)?a.replace(/&\w*/,c=>{if(c=="&")return o;if(!s||!s[c])throw new RangeError(`Unsupported selector: ${c}`);return s[c]}):o+" "+a}})}const baseTheme$8=buildTheme("."+baseThemeID,{"&.cm-editor":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,minHeight:"100%",display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere"},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 4px"},".cm-selectionLayer":{zIndex:-1,contain:"size style"},".cm-selectionBackground":{position:"absolute"},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{zIndex:100,contain:"size style",pointerEvents:"none"},"&.cm-focused .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{visibility:"hidden"},"100%":{}},".cm-cursor, .cm-dropCursor":{position:"absolute",borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},"&.cm-focused .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#f3f9ff"},"&dark .cm-activeLine":{backgroundColor:"#223039"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},lightDarkIDs),observeOptions={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},useCharData=browser.ie&&browser.ie_version<=11;class DOMObserver{constructor(e,s,a){this.view=e,this.onChange=s,this.onScrollChanged=a,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.scrollTargets=[],this.intersection=null,this.resize=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(c=>{for(let d of c)this.queue.push(d);(browser.ie&&browser.ie_version<=11||browser.ios&&e.composing)&&c.some(d=>d.type=="childList"&&d.removedNodes.length||d.type=="characterData"&&d.oldValue.length>d.target.nodeValue.length)?this.flushSoon():this.flush()}),useCharData&&(this.onCharData=c=>{this.queue.push({target:c.target,type:"characterData",oldValue:c.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),window.addEventListener("resize",this.onResize=this.onResize.bind(this)),typeof ResizeObserver=="function"&&(this.resize=new ResizeObserver(()=>{this.view.docView.lastUpdate{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),c.length>0&&c[c.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(c=>{c.length>0&&c[c.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange(),this.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((s,a)=>s!=e[a]))){this.gapIntersection.disconnect();for(let s of e)this.gapIntersection.observe(s);this.gaps=e}}onSelectionChange(e){if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:s}=this,a=this.selectionRange;if(s.state.facet(editable)?s.root.activeElement!=this.dom:!hasSelection(s.dom,a))return;let c=a.anchorNode&&s.docView.nearest(a.anchorNode);c&&c.ignoreEvent(e)||((browser.ie&&browser.ie_version<=11||browser.android&&browser.chrome)&&!s.state.selection.main.empty&&a.focusNode&&isEquivalentPosition(a.focusNode,a.focusOffset,a.anchorNode,a.anchorOffset)?this.flushSoon():this.flush(!1))}readSelectionRange(){let{root:e}=this.view,s=getSelection(e),a=browser.safari&&e.nodeType==11&&deepActiveElement()==this.view.contentDOM&&safariSelectionRangeHack(this.view)||s;return this.selectionRange.eq(a)?!1:(this.selectionRange.setRange(a),this.selectionChanged=!0)}setSelectionRange(e,s){this.selectionRange.set(e.node,e.offset,s.node,s.offset),this.selectionChanged=!1}listenForScroll(){this.parentCheck=-1;let e=0,s=null;for(let a=this.dom;a;)if(a.nodeType==1)!s&&e{let a=this.delayedAndroidKey;this.delayedAndroidKey=null;let c=this.view.state;dispatchKey(this.view.contentDOM,a.key,a.keyCode)?this.processRecords():this.flush(),this.view.state==c&&this.view.update([])}),(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:s})}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=window.setTimeout(()=>{this.delayedFlush=-1,this.flush()},20))}forceFlush(){this.delayedFlush>=0&&(window.clearTimeout(this.delayedFlush),this.delayedFlush=-1,this.flush())}processRecords(){let e=this.queue;for(let d of this.observer.takeRecords())e.push(d);e.length&&(this.queue=[]);let s=-1,a=-1,c=!1;for(let d of e){let _=this.readMutation(d);!_||(_.typeOver&&(c=!0),s==-1?{from:s,to:a}=_:(s=Math.min(_.from,s),a=Math.max(_.to,a)))}return{from:s,to:a,typeOver:c}}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return;e&&this.readSelectionRange();let{from:s,to:a,typeOver:c}=this.processRecords(),d=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(s<0&&!d)return;this.selectionChanged=!1;let _=this.view.state;this.onChange(s,a,c),this.view.state==_&&this.view.update([])}readMutation(e){let s=this.view.docView.nearest(e.target);if(!s||s.ignoreMutation(e))return null;if(s.markDirty(e.type=="attributes"),e.type=="attributes"&&(s.dirty|=4),e.type=="childList"){let a=findChild(s,e.previousSibling||e.target.previousSibling,-1),c=findChild(s,e.nextSibling||e.target.nextSibling,1);return{from:a?s.posAfter(a):s.posAtStart,to:c?s.posBefore(c):s.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:s.posAtStart,to:s.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}destroy(){var e,s,a;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(s=this.gapIntersection)===null||s===void 0||s.disconnect(),(a=this.resize)===null||a===void 0||a.disconnect();for(let c of this.scrollTargets)c.removeEventListener("scroll",this.onScroll);window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.onResize),window.removeEventListener("beforeprint",this.onPrint),this.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout)}}function findChild(o,e,s){for(;e;){let a=ContentView.get(e);if(a&&a.parent==o)return a;let c=e.parentNode;e=c!=o.dom?c:s>0?e.nextSibling:e.previousSibling}return null}function safariSelectionRangeHack(o){let e=null;function s(k){k.preventDefault(),k.stopImmediatePropagation(),e=k.getTargetRanges()[0]}if(o.contentDOM.addEventListener("beforeinput",s,!0),document.execCommand("indent"),o.contentDOM.removeEventListener("beforeinput",s,!0),!e)return null;let a=e.startContainer,c=e.startOffset,d=e.endContainer,_=e.endOffset,b=o.docView.domAtPos(o.state.selection.main.anchor);return isEquivalentPosition(b.node,b.offset,d,_)&&([a,c,d,_]=[d,_,a,c]),{anchorNode:a,anchorOffset:c,focusNode:d,focusOffset:_}}function applyDOMChange(o,e,s,a){let c,d,_=o.state.selection.main;if(e>-1){let b=o.docView.domBoundsAround(e,s,0);if(!b||o.state.readOnly)return;let{from:k,to:$}=b,j=o.docView.impreciseHead||o.docView.impreciseAnchor?[]:selectionPoints(o),_e=new DOMReader(j,o.state);_e.readRange(b.startDOM,b.endDOM);let et=_.from,tt=null;(o.inputState.lastKeyCode===8&&o.inputState.lastKeyTime>Date.now()-100||browser.android&&_e.text.length<$-k)&&(et=_.to,tt="end");let nt=findDiff(o.state.doc.sliceString(k,$,LineBreakPlaceholder),_e.text,et-k,tt);nt&&(browser.chrome&&o.inputState.lastKeyCode==13&&nt.toB==nt.from+2&&_e.text.slice(nt.from,nt.toB)==LineBreakPlaceholder+LineBreakPlaceholder&&nt.toB--,c={from:k+nt.from,to:k+nt.toA,insert:Text.of(_e.text.slice(nt.from,nt.toB).split(LineBreakPlaceholder))}),d=selectionFromPoints(j,k)}else if(o.hasFocus||!o.state.facet(editable)){let b=o.observer.selectionRange,{impreciseHead:k,impreciseAnchor:$}=o.docView,j=k&&k.node==b.focusNode&&k.offset==b.focusOffset||!contains(o.contentDOM,b.focusNode)?o.state.selection.main.head:o.docView.posFromDOM(b.focusNode,b.focusOffset),_e=$&&$.node==b.anchorNode&&$.offset==b.anchorOffset||!contains(o.contentDOM,b.anchorNode)?o.state.selection.main.anchor:o.docView.posFromDOM(b.anchorNode,b.anchorOffset);(j!=_.head||_e!=_.anchor)&&(d=EditorSelection.single(_e,j))}if(!(!c&&!d)){if(!c&&a&&!_.empty&&d&&d.main.empty?c={from:_.from,to:_.to,insert:o.state.doc.slice(_.from,_.to)}:c&&c.from>=_.from&&c.to<=_.to&&(c.from!=_.from||c.to!=_.to)&&_.to-_.from-(c.to-c.from)<=4&&(c={from:_.from,to:_.to,insert:o.state.doc.slice(_.from,c.from).append(c.insert).append(o.state.doc.slice(c.to,_.to))}),c){let b=o.state;if(browser.ios&&o.inputState.flushIOSKey(o)||browser.android&&(c.from==_.from&&c.to==_.to&&c.insert.length==1&&c.insert.lines==2&&dispatchKey(o.contentDOM,"Enter",13)||c.from==_.from-1&&c.to==_.to&&c.insert.length==0&&dispatchKey(o.contentDOM,"Backspace",8)||c.from==_.from&&c.to==_.to+1&&c.insert.length==0&&dispatchKey(o.contentDOM,"Delete",46)))return;let k=c.insert.toString();if(o.state.facet(inputHandler$1).some(_e=>_e(o,c.from,c.to,k)))return;o.inputState.composing>=0&&o.inputState.composing++;let $;if(c.from>=_.from&&c.to<=_.to&&c.to-c.from>=(_.to-_.from)/3&&(!d||d.main.empty&&d.main.from==c.from+c.insert.length)&&o.inputState.composing<0){let _e=_.fromc.to?b.sliceDoc(c.to,_.to):"";$=b.replaceSelection(o.state.toText(_e+c.insert.sliceString(0,void 0,o.state.lineBreak)+et))}else{let _e=b.changes(c),et=d&&!b.selection.main.eq(d.main)&&d.main.to<=_e.newLength?d.main:void 0;if(b.selection.ranges.length>1&&o.inputState.composing>=0&&c.to<=_.to&&c.to>=_.to-10){let tt=o.state.sliceDoc(c.from,c.to),nt=compositionSurroundingNode(o)||o.state.doc.lineAt(_.head),st=_.to-c.to,rt=_.to-_.from;$=b.changeByRange(it=>{if(it.from==_.from&&it.to==_.to)return{changes:_e,range:et||it.map(_e)};let at=it.to-st,ot=at-tt.length;if(it.to-it.from!=rt||o.state.sliceDoc(ot,at)!=tt||nt&&it.to>=nt.from&&it.from<=nt.to)return{range:it};let ht=b.changes({from:ot,to:at,insert:c.insert}),ct=it.to-_.to;return{changes:ht,range:et?EditorSelection.range(Math.max(0,et.anchor+ct),Math.max(0,et.head+ct)):it.map(ht)}})}else $={changes:_e,selection:et&&b.selection.replaceRange(et)}}let j="input.type";o.composing&&(j+=".compose",o.inputState.compositionFirstChange&&(j+=".start",o.inputState.compositionFirstChange=!1)),o.dispatch($,{scrollIntoView:!0,userEvent:j})}else if(d&&!d.main.eq(_)){let b=!1,k="select";o.inputState.lastSelectionTime>Date.now()-50&&(o.inputState.lastSelectionOrigin=="select"&&(b=!0),k=o.inputState.lastSelectionOrigin),o.dispatch({selection:d,scrollIntoView:b,userEvent:k})}}}function findDiff(o,e,s,a){let c=Math.min(o.length,e.length),d=0;for(;d0&&b>0&&o.charCodeAt(_-1)==e.charCodeAt(b-1);)_--,b--;if(a=="end"){let k=Math.max(0,d-Math.min(_,b));s-=_+k-d}return _=_?d-s:0,b=d+(b-_),_=d):b=b?d-s:0,_=d+(_-b),b=d),{from:d,toA:_,toB:b}}function selectionPoints(o){let e=[];if(o.root.activeElement!=o.contentDOM)return e;let{anchorNode:s,anchorOffset:a,focusNode:c,focusOffset:d}=o.observer.selectionRange;return s&&(e.push(new DOMPoint(s,a)),(c!=s||d!=a)&&e.push(new DOMPoint(c,d))),e}function selectionFromPoints(o,e){if(o.length==0)return null;let s=o[0].pos,a=o.length==2?o[1].pos:s;return s>-1&&a>-1?EditorSelection.single(s+e,a+e):null}class EditorView{constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: absolute; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=e.dispatch||(s=>this.update([s])),this.dispatch=this.dispatch.bind(this),this.root=e.root||getRoot(e.parent)||document,this.viewState=new ViewState(e.state||EditorState.create()),this.plugins=this.state.facet(viewPlugin).map(s=>new PluginInstance(s));for(let s of this.plugins)s.update(this);this.observer=new DOMObserver(this,(s,a,c)=>{applyDOMChange(this,s,a,c)},s=>{this.inputState.runScrollHandlers(this,s),this.observer.intersecting&&this.measure()}),this.inputState=new InputState(this),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),e.parent&&e.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}dispatch(...e){this._dispatch(e.length==1&&e[0]instanceof Transaction?e[0]:this.state.update(...e))}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let s=!1,a,c=this.state;for(let _ of e){if(_.startState!=c)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");c=_.state}if(this.destroyed){this.viewState.state=c;return}if(c.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(c);a=new ViewUpdate(this,c,e);let d=this.viewState.scrollTarget;try{this.updateState=2;for(let _ of e){if(d&&(d=d.map(_.changes)),_.scrollIntoView){let{main:b}=_.state.selection;d=new ScrollTarget(b.empty?b:EditorSelection.cursor(b.head,b.head>b.anchor?-1:1))}for(let b of _.effects)b.is(scrollTo)?d=new ScrollTarget(b.value):b.is(centerOn)?d=new ScrollTarget(b.value,"center"):b.is(scrollIntoView$1)&&(d=b.value)}this.viewState.update(a,d),this.bidiCache=CachedOrder.update(this.bidiCache,a.changes),a.empty||(this.updatePlugins(a),this.inputState.update(a)),s=this.docView.update(a),this.state.facet(styleModule)!=this.styleModules&&this.mountStyles(),this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(s,e.some(_=>_.isUserEvent("select.pointer")))}finally{this.updateState=0}if(a.startState.facet(theme)!=a.state.facet(theme)&&(this.viewState.mustMeasureContent=!0),(s||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!a.empty)for(let _ of this.state.facet(updateListener))_(a)}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let s=this.hasFocus;try{for(let a of this.plugins)a.destroy(this);this.viewState=new ViewState(e),this.plugins=e.facet(viewPlugin).map(a=>new PluginInstance(a)),this.pluginMap.clear();for(let a of this.plugins)a.update(this);this.docView=new DocView(this),this.inputState.ensureHandlers(this),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}s&&this.focus(),this.requestMeasure()}updatePlugins(e){let s=e.startState.facet(viewPlugin),a=e.state.facet(viewPlugin);if(s!=a){let c=[];for(let d of a){let _=s.indexOf(d);if(_<0)c.push(new PluginInstance(d));else{let b=this.plugins[_];b.mustUpdate=e,c.push(b)}}for(let d of this.plugins)d.mustUpdate!=e&&d.destroy(this);this.plugins=c,this.pluginMap.clear(),this.inputState.ensureHandlers(this)}else for(let c of this.plugins)c.mustUpdate=e;for(let c=0;c-1&&cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,e&&this.observer.flush();let s=null;try{for(let a=0;;a++){this.updateState=1;let c=this.viewport,d=this.viewState.measure(this);if(!d&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(a>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let _=[];d&4||([this.measureRequests,_]=[_,this.measureRequests]);let b=_.map(_e=>{try{return _e.read(this)}catch(et){return logException(this.state,et),BadMeasure}}),k=new ViewUpdate(this,this.state),$=!1,j=!1;k.flags|=d,s?s.flags|=d:s=k,this.updateState=2,k.empty||(this.updatePlugins(k),this.inputState.update(k),this.updateAttrs(),$=this.docView.update(k));for(let _e=0;_e<_.length;_e++)if(b[_e]!=BadMeasure)try{let et=_[_e];et.write&&et.write(b[_e],this)}catch(et){logException(this.state,et)}if(this.viewState.scrollTarget&&(this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,j=!0),$&&this.docView.updateSelection(!0),this.viewport.from==c.from&&this.viewport.to==c.to&&!j&&this.measureRequests.length==0)break}}finally{this.updateState=0,this.measureScheduled=-1}if(s&&!s.empty)for(let a of this.state.facet(updateListener))a(s)}get themeClasses(){return baseThemeID+" "+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+" "+this.state.facet(theme)}updateAttrs(){let e=attrsFromFacet(this,editorAttributes,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),s={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(editable)?"true":"false",class:"cm-content",style:`${browser.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(s["aria-readonly"]="true"),attrsFromFacet(this,contentAttributes,s),this.observer.ignore(()=>{updateAttrs(this.contentDOM,this.contentAttrs,s),updateAttrs(this.dom,this.editorAttrs,e)}),this.editorAttrs=e,this.contentAttrs=s}showAnnouncements(e){let s=!0;for(let a of e)for(let c of a.effects)if(c.is(EditorView.announce)){s&&(this.announceDOM.textContent=""),s=!1;let d=this.announceDOM.appendChild(document.createElement("div"));d.textContent=c.value}}mountStyles(){this.styleModules=this.state.facet(styleModule),StyleModule.mount(this.root,this.styleModules.concat(baseTheme$8).reverse())}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=requestAnimationFrame(()=>this.measure())),e){if(e.key!=null){for(let s=0;sa.spec==e)||null),s&&s.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}blockAtHeight(e,s){let a=ensureTop(s,this);return this.elementAtHeight(e-a).moveY(a)}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}visualLineAtHeight(e,s){let a=ensureTop(s,this);return this.lineBlockAtHeight(e-a).moveY(a)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}viewportLines(e,s){let a=ensureTop(s,this);for(let c of this.viewportLineBlocks)e(c.moveY(a))}get viewportLineBlocks(){return this.viewState.viewportLines}visualLineAt(e,s=0){return this.lineBlockAt(e).moveY(s+this.viewState.paddingTop)}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,s,a){return skipAtoms(this,e,moveByChar(this,e,s,a))}moveByGroup(e,s){return skipAtoms(this,e,moveByChar(this,e,s,a=>byGroup(this,e.head,a)))}moveToLineBoundary(e,s,a=!0){return moveToLineBoundary(this,e,s,a)}moveVertically(e,s,a){return skipAtoms(this,e,moveVertically(this,e,s,a))}scrollPosIntoView(e){this.dispatch({effects:scrollTo.of(EditorSelection.cursor(e))})}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,s=0){return this.docView.posFromDOM(e,s)}posAtCoords(e,s=!0){return this.readMeasured(),posAtCoords(this,e,s)}coordsAtPos(e,s=1){this.readMeasured();let a=this.docView.coordsAt(e,s);if(!a||a.left==a.right)return a;let c=this.state.doc.lineAt(e),d=this.bidiSpans(c),_=d[BidiSpan.find(d,e-c.from,-1,s)];return flattenRect(a,_.dir==Direction.LTR==s>0)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.heightOracle.direction}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>MaxBidiLine)return trivialOrder(e.length);let s=this.textDirection;for(let c of this.bidiCache)if(c.from==e.from&&c.dir==s)return c.order;let a=computeOrder(e.text,this.textDirection);return this.bidiCache.push(new CachedOrder(e.from,e.to,s,a)),a}get hasFocus(){var e;return(document.hasFocus()||browser.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()})}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,s={}){return scrollIntoView$1.of(new ScrollTarget(typeof e=="number"?EditorSelection.cursor(e):e,s.y,s.x,s.yMargin,s.xMargin))}static domEventHandlers(e){return ViewPlugin.define(()=>({}),{eventHandlers:e})}static theme(e,s){let a=StyleModule.newName(),c=[theme.of(a),styleModule.of(buildTheme(`.${a}`,e))];return s&&s.dark&&c.push(darkTheme.of(!0)),c}static baseTheme(e){return Prec.lowest(styleModule.of(buildTheme("."+baseThemeID,e,lightDarkIDs)))}}EditorView.scrollTo=scrollTo;EditorView.centerOn=centerOn;EditorView.styleModule=styleModule;EditorView.inputHandler=inputHandler$1;EditorView.exceptionSink=exceptionSink;EditorView.updateListener=updateListener;EditorView.editable=editable;EditorView.mouseSelectionStyle=mouseSelectionStyle;EditorView.dragMovesSelection=dragMovesSelection$1;EditorView.clickAddsSelectionRange=clickAddsSelectionRange;EditorView.decorations=decorations;EditorView.darkTheme=darkTheme;EditorView.contentAttributes=contentAttributes;EditorView.editorAttributes=editorAttributes;EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"});EditorView.announce=StateEffect.define();const MaxBidiLine=4096;function ensureTop(o,e){return(o==null?e.contentDOM.getBoundingClientRect().top:o)+e.viewState.paddingTop}const BadMeasure={};class CachedOrder{constructor(e,s,a,c){this.from=e,this.to=s,this.dir=a,this.order=c}static update(e,s){if(s.empty)return e;let a=[],c=e.length?e[e.length-1].dir:Direction.LTR;for(let d=Math.max(0,e.length-10);d=0;c--){let d=a[c],_=typeof d=="function"?d(o):d;_&&combineAttrs(_,s)}return s}const currentPlatform=browser.mac?"mac":browser.windows?"win":browser.linux?"linux":"key";function normalizeKeyName(o,e){const s=o.split(/-(?!$)/);let a=s[s.length-1];a=="Space"&&(a=" ");let c,d,_,b;for(let k=0;ka.concat(c),[]))),s}function runScopeHandlers(o,e,s){return runHandlers(getKeymap(o.state),e,o,s)}let storedPrefix=null;const PrefixTimeout=4e3;function buildKeymap(o,e=currentPlatform){let s=Object.create(null),a=Object.create(null),c=(_,b)=>{let k=a[_];if(k==null)a[_]=b;else if(k!=b)throw new Error("Key binding "+_+" is used both as a regular binding and as a multi-stroke prefix")},d=(_,b,k,$)=>{let j=s[_]||(s[_]=Object.create(null)),_e=b.split(/ (?!$)/).map(nt=>normalizeKeyName(nt,e));for(let nt=1;nt<_e.length;nt++){let st=_e.slice(0,nt).join(" ");c(st,!0),j[st]||(j[st]={preventDefault:!0,commands:[rt=>{let it=storedPrefix={view:rt,prefix:st,scope:_};return setTimeout(()=>{storedPrefix==it&&(storedPrefix=null)},PrefixTimeout),!0}]})}let et=_e.join(" ");c(et,!1);let tt=j[et]||(j[et]={preventDefault:!1,commands:[]});tt.commands.push(k),$&&(tt.preventDefault=!0)};for(let _ of o){let b=_[e]||_.key;if(!!b)for(let k of _.scope?_.scope.split(" "):["editor"])d(k,b,_.run,_.preventDefault),_.shift&&d(k,"Shift-"+b,_.shift,_.preventDefault)}return s}function runHandlers(o,e,s,a){let c=keyName(e),d=c.length==1&&c!=" ",_="",b=!1;storedPrefix&&storedPrefix.view==s&&storedPrefix.scope==a&&(_=storedPrefix.prefix+" ",(b=modifierCodes.indexOf(e.keyCode)<0)&&(storedPrefix=null));let k=_e=>{if(_e){for(let et of _e.commands)if(et(s))return!0;_e.preventDefault&&(b=!0)}return!1},$=o[a],j;if($){if(k($[_+modifiers(c,e,!d)]))return!0;if(d&&(e.shiftKey||e.altKey||e.metaKey)&&(j=base[e.keyCode])&&j!=c){if(k($[_+modifiers(j,e,!0)]))return!0}else if(d&&e.shiftKey&&k($[_+modifiers(c,e,!0)]))return!0}return b}const CanHidePrimary=!browser.ios,selectionConfig=Facet.define({combine(o){return combineConfig(o,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,s)=>Math.min(e,s),drawRangeCursor:(e,s)=>e||s})}});function drawSelection(o={}){return[selectionConfig.of(o),drawSelectionPlugin,hideNativeSelection]}class Piece{constructor(e,s,a,c,d){this.left=e,this.top=s,this.width=a,this.height=c,this.className=d}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width>=0&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}}const drawSelectionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.rangePieces=[],this.cursors=[],this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.selectionLayer=o.scrollDOM.appendChild(document.createElement("div")),this.selectionLayer.className="cm-selectionLayer",this.selectionLayer.setAttribute("aria-hidden","true"),this.cursorLayer=o.scrollDOM.appendChild(document.createElement("div")),this.cursorLayer.className="cm-cursorLayer",this.cursorLayer.setAttribute("aria-hidden","true"),o.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){this.cursorLayer.style.animationDuration=this.view.state.facet(selectionConfig).cursorBlinkRate+"ms"}update(o){let e=o.startState.facet(selectionConfig)!=o.state.facet(selectionConfig);(e||o.selectionSet||o.geometryChanged||o.viewportChanged)&&this.view.requestMeasure(this.measureReq),o.transactions.some(s=>s.scrollIntoView)&&(this.cursorLayer.style.animationName=this.cursorLayer.style.animationName=="cm-blink"?"cm-blink2":"cm-blink"),e&&this.setBlinkRate()}readPos(){let{state:o}=this.view,e=o.facet(selectionConfig),s=o.selection.ranges.map(c=>c.empty?[]:measureRange(this.view,c)).reduce((c,d)=>c.concat(d)),a=[];for(let c of o.selection.ranges){let d=c==o.selection.main;if(c.empty?!d||CanHidePrimary:e.drawRangeCursor){let _=measureCursor(this.view,c,d);_&&a.push(_)}}return{rangePieces:s,cursors:a}}drawSel({rangePieces:o,cursors:e}){if(o.length!=this.rangePieces.length||o.some((s,a)=>!s.eq(this.rangePieces[a]))){this.selectionLayer.textContent="";for(let s of o)this.selectionLayer.appendChild(s.draw());this.rangePieces=o}if(e.length!=this.cursors.length||e.some((s,a)=>!s.eq(this.cursors[a]))){let s=this.cursorLayer.children;if(s.length!==e.length){this.cursorLayer.textContent="";for(const a of e)this.cursorLayer.appendChild(a.draw())}else e.forEach((a,c)=>a.adjust(s[c]));this.cursors=e}}destroy(){this.selectionLayer.remove(),this.cursorLayer.remove()}}),themeSpec={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};CanHidePrimary&&(themeSpec[".cm-line"].caretColor="transparent !important");const hideNativeSelection=Prec.highest(EditorView.theme(themeSpec));function getBase(o){let e=o.scrollDOM.getBoundingClientRect();return{left:(o.textDirection==Direction.LTR?e.left:e.right-o.scrollDOM.clientWidth)-o.scrollDOM.scrollLeft,top:e.top-o.scrollDOM.scrollTop}}function wrappedLine(o,e,s){let a=EditorSelection.cursor(e);return{from:Math.max(s.from,o.moveToLineBoundary(a,!1,!0).from),to:Math.min(s.to,o.moveToLineBoundary(a,!0,!0).from),type:BlockType.Text}}function blockAt(o,e){let s=o.lineBlockAt(e);if(Array.isArray(s.type)){for(let a of s.type)if(a.to>e||a.to==e&&(a.to==s.to||a.type==BlockType.Text))return a}return s}function measureRange(o,e){if(e.to<=o.viewport.from||e.from>=o.viewport.to)return[];let s=Math.max(e.from,o.viewport.from),a=Math.min(e.to,o.viewport.to),c=o.textDirection==Direction.LTR,d=o.contentDOM,_=d.getBoundingClientRect(),b=getBase(o),k=window.getComputedStyle(d.firstChild),$=_.left+parseInt(k.paddingLeft)+Math.min(0,parseInt(k.textIndent)),j=_.right-parseInt(k.paddingRight),_e=blockAt(o,s),et=blockAt(o,a),tt=_e.type==BlockType.Text?_e:null,nt=et.type==BlockType.Text?et:null;if(o.lineWrapping&&(tt&&(tt=wrappedLine(o,s,tt)),nt&&(nt=wrappedLine(o,a,nt))),tt&&nt&&tt.from==nt.from)return rt(it(e.from,e.to,tt));{let ot=tt?it(e.from,null,tt):at(_e,!1),ht=nt?it(null,e.to,nt):at(et,!0),ct=[];return(tt||_e).to<(nt||et).from-1?ct.push(st($,ot.bottom,j,ht.top)):ot.bottomgt&&ft.from=Et)break;Dt>mt&&dt(Math.max(_t,mt),ot==null&&_t<=gt,Math.min(Dt,Et),ht==null&&Dt>=yt,At.dir)}if(mt=vt.to+1,mt>=Et)break}return pt.length==0&&dt(gt,ot==null,yt,ht==null,o.textDirection),{top:lt,bottom:ut,horizontal:pt}}function at(ot,ht){let ct=_.top+(ht?ot.top:ot.bottom);return{top:ct,bottom:ct,horizontal:[]}}}function measureCursor(o,e,s){let a=o.coordsAtPos(e.head,e.assoc||1);if(!a)return null;let c=getBase(o);return new Piece(a.left-c.left,a.top-c.top,-1,a.bottom-a.top,s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary")}function iterMatches(o,e,s,a,c){e.lastIndex=0;for(let d=o.iterRange(s,a),_=s,b;!d.next().done;_+=d.value.length)if(!d.lineBreak)for(;b=e.exec(d.value);)c(_+b.index,_+b.index+b[0].length,b)}function matchRanges(o,e){let s=o.visibleRanges;if(s.length==1&&s[0].from==o.viewport.from&&s[0].to==o.viewport.to)return s;let a=[];for(let{from:c,to:d}of s)c=Math.max(o.state.doc.lineAt(c).from,c-e),d=Math.min(o.state.doc.lineAt(d).to,d+e),a.length&&a[a.length-1].to>=c?a[a.length-1].to=d:a.push({from:c,to:d});return a}class MatchDecorator{constructor(e){let{regexp:s,decoration:a,boundary:c,maxLength:d=1e3}=e;if(!s.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");this.regexp=s,this.getDeco=typeof a=="function"?a:()=>a,this.boundary=c,this.maxLength=d}createDeco(e){let s=new RangeSetBuilder;for(let{from:a,to:c}of matchRanges(e,this.maxLength))iterMatches(e.state.doc,this.regexp,a,c,(d,_,b)=>s.add(d,_,this.getDeco(b,e,d)));return s.finish()}updateDeco(e,s){let a=1e9,c=-1;return e.docChanged&&e.changes.iterChanges((d,_,b,k)=>{k>e.view.viewport.from&&b1e3?this.createDeco(e.view):c>-1?this.updateRange(e.view,s.map(e.changes),a,c):s}updateRange(e,s,a,c){for(let d of e.visibleRanges){let _=Math.max(d.from,a),b=Math.min(d.to,c);if(b>_){let k=e.state.doc.lineAt(_),$=k.tok.from;_--)if(this.boundary.test(k.text[_-1-k.from])){j=_;break}for(;b<$.to;b++)if(this.boundary.test($.text[b-$.from])){_e=b;break}}let et=[],tt;if(k==$)for(this.regexp.lastIndex=j-k.from;(tt=this.regexp.exec(k.text))&&tt.index<_e-k.from;){let nt=tt.index+k.from;et.push(this.getDeco(tt,e,nt).range(nt,nt+tt[0].length))}else iterMatches(e.state.doc,this.regexp,j,_e,(nt,st,rt)=>et.push(this.getDeco(rt,e,nt).range(nt,st)));s=s.update({filterFrom:j,filterTo:_e,filter:(nt,st)=>nt_e,add:et})}}return s}}const UnicodeRegexpSupport=/x/.unicode!=null?"gu":"g",Specials=new RegExp(`[\0-\b +-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\uFEFF\uFFF9-\uFFFC]`,UnicodeRegexpSupport),Names={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let _supportsTabSize=null;function supportsTabSize(){var o;if(_supportsTabSize==null&&typeof document!="undefined"&&document.body){let e=document.body.style;_supportsTabSize=((o=e.tabSize)!==null&&o!==void 0?o:e.MozTabSize)!=null}return _supportsTabSize||!1}const specialCharConfig=Facet.define({combine(o){let e=combineConfig(o,{render:null,specialChars:Specials,addSpecialChars:null});return(e.replaceTabs=!supportsTabSize())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,UnicodeRegexpSupport)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,UnicodeRegexpSupport)),e}});function highlightSpecialChars(o={}){return[specialCharConfig.of(o),specialCharPlugin()]}let _plugin=null;function specialCharPlugin(){return _plugin||(_plugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=Decoration.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(o.state.facet(specialCharConfig)),this.decorations=this.decorator.createDeco(o)}makeDecorator(o){return new MatchDecorator({regexp:o.specialChars,decoration:(e,s,a)=>{let{doc:c}=s.state,d=codePointAt(e[0],0);if(d==9){let _=c.lineAt(a),b=s.state.tabSize,k=countColumn(_.text,b,a-_.from);return Decoration.replace({widget:new TabWidget((b-k%b)*this.view.defaultCharacterWidth)})}return this.decorationCache[d]||(this.decorationCache[d]=Decoration.replace({widget:new SpecialCharWidget(o,d)}))},boundary:o.replaceTabs?void 0:/[^]/})}update(o){let e=o.state.facet(specialCharConfig);o.startState.facet(specialCharConfig)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(o.view)):this.decorations=this.decorator.updateDeco(o,this.decorations)}},{decorations:o=>o.decorations}))}const DefaultPlaceholder="\u2022";function placeholder$1(o){return o>=32?DefaultPlaceholder:o==10?"\u2424":String.fromCharCode(9216+o)}class SpecialCharWidget extends WidgetType{constructor(e,s){super(),this.options=e,this.code=s}eq(e){return e.code==this.code}toDOM(e){let s=placeholder$1(this.code),a=e.state.phrase("Control character")+" "+(Names[this.code]||"0x"+this.code.toString(16)),c=this.options.render&&this.options.render(this.code,a,s);if(c)return c;let d=document.createElement("span");return d.textContent=s,d.title=a,d.setAttribute("aria-label",a),d.className="cm-specialChar",d}ignoreEvent(){return!1}}class TabWidget extends WidgetType{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function highlightActiveLine(){return activeLineHighlighter}const lineDeco=Decoration.line({class:"cm-activeLine"}),activeLineHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.docChanged||o.selectionSet)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=-1,s=[];for(let a of o.state.selection.ranges){if(!a.empty)return Decoration.none;let c=o.lineBlockAt(a.head);c.from>e&&(s.push(lineDeco.range(c.from)),e=c.from)}return Decoration.set(s)}},{decorations:o=>o.decorations}),fromHistory=Annotation.define(),isolateHistory=Annotation.define(),invertedEffects=Facet.define(),historyConfig=Facet.define({combine(o){return combineConfig(o,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})}});function changeEnd(o){let e=0;return o.iterChangedRanges((s,a)=>e=a),e}const historyField_=StateField.define({create(){return HistoryState.empty},update(o,e){let s=e.state.facet(historyConfig),a=e.annotation(fromHistory);if(a){let k=e.docChanged?EditorSelection.single(changeEnd(e.changes)):void 0,$=HistEvent.fromTransaction(e,k),j=a.side,_e=j==0?o.undone:o.done;return $?_e=updateBranch(_e,_e.length,s.minDepth,$):_e=addSelection(_e,e.startState.selection),new HistoryState(j==0?a.rest:_e,j==0?_e:a.rest)}let c=e.annotation(isolateHistory);if((c=="full"||c=="before")&&(o=o.isolate()),e.annotation(Transaction.addToHistory)===!1)return e.changes.empty?o:o.addMapping(e.changes.desc);let d=HistEvent.fromTransaction(e),_=e.annotation(Transaction.time),b=e.annotation(Transaction.userEvent);return d?o=o.addChanges(d,_,b,s.newGroupDelay,s.minDepth):e.selection&&(o=o.addSelection(e.startState.selection,_,b,s.newGroupDelay)),(c=="full"||c=="after")&&(o=o.isolate()),o},toJSON(o){return{done:o.done.map(e=>e.toJSON()),undone:o.undone.map(e=>e.toJSON())}},fromJSON(o){return new HistoryState(o.done.map(HistEvent.fromJSON),o.undone.map(HistEvent.fromJSON))}});function history(o={}){return[historyField_,historyConfig.of(o),EditorView.domEventHandlers({beforeinput(e,s){let a=e.inputType=="historyUndo"?undo:e.inputType=="historyRedo"?redo:null;return a?(e.preventDefault(),a(s)):!1}})]}function cmd(o,e){return function({state:s,dispatch:a}){if(!e&&s.readOnly)return!1;let c=s.field(historyField_,!1);if(!c)return!1;let d=c.pop(o,s,e);return d?(a(d),!0):!1}}const undo=cmd(0,!1),redo=cmd(1,!1),undoSelection=cmd(0,!0),redoSelection=cmd(1,!0);class HistEvent{constructor(e,s,a,c,d){this.changes=e,this.effects=s,this.mapped=a,this.startSelection=c,this.selectionsAfter=d}setSelAfter(e){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,s,a;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(s=this.mapped)===null||s===void 0?void 0:s.toJSON(),startSelection:(a=this.startSelection)===null||a===void 0?void 0:a.toJSON(),selectionsAfter:this.selectionsAfter.map(c=>c.toJSON())}}static fromJSON(e){return new HistEvent(e.changes&&ChangeSet.fromJSON(e.changes),[],e.mapped&&ChangeDesc.fromJSON(e.mapped),e.startSelection&&EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(EditorSelection.fromJSON))}static fromTransaction(e,s){let a=none$1;for(let c of e.startState.facet(invertedEffects)){let d=c(e);d.length&&(a=a.concat(d))}return!a.length&&e.changes.empty?null:new HistEvent(e.changes.invert(e.startState.doc),a,void 0,s||e.startState.selection,none$1)}static selection(e){return new HistEvent(void 0,none$1,void 0,void 0,e)}}function updateBranch(o,e,s,a){let c=e+1>s+20?e-s-1:0,d=o.slice(c,e);return d.push(a),d}function isAdjacent(o,e){let s=[],a=!1;return o.iterChangedRanges((c,d)=>s.push(c,d)),e.iterChangedRanges((c,d,_,b)=>{for(let k=0;k=$&&_<=j&&(a=!0)}}),a}function eqSelectionShape(o,e){return o.ranges.length==e.ranges.length&&o.ranges.filter((s,a)=>s.empty!=e.ranges[a].empty).length===0}function conc(o,e){return o.length?e.length?o.concat(e):o:e}const none$1=[],MaxSelectionsPerEvent=200;function addSelection(o,e){if(o.length){let s=o[o.length-1],a=s.selectionsAfter.slice(Math.max(0,s.selectionsAfter.length-MaxSelectionsPerEvent));return a.length&&a[a.length-1].eq(e)?o:(a.push(e),updateBranch(o,o.length-1,1e9,s.setSelAfter(a)))}else return[HistEvent.selection([e])]}function popSelection(o){let e=o[o.length-1],s=o.slice();return s[o.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),s}function addMappingToBranch(o,e){if(!o.length)return o;let s=o.length,a=none$1;for(;s;){let c=mapEvent(o[s-1],e,a);if(c.changes&&!c.changes.empty||c.effects.length){let d=o.slice(0,s);return d[s-1]=c,d}else e=c.mapped,s--,a=c.selectionsAfter}return a.length?[HistEvent.selection(a)]:none$1}function mapEvent(o,e,s){let a=conc(o.selectionsAfter.length?o.selectionsAfter.map(b=>b.map(e)):none$1,s);if(!o.changes)return HistEvent.selection(a);let c=o.changes.map(e),d=e.mapDesc(o.changes,!0),_=o.mapped?o.mapped.composeDesc(d):d;return new HistEvent(c,StateEffect.mapEffects(o.effects,e),_,o.startSelection.map(d),a)}const joinableUserEvent=/^(input\.type|delete)($|\.)/;class HistoryState{constructor(e,s,a=0,c=void 0){this.done=e,this.undone=s,this.prevTime=a,this.prevUserEvent=c}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this}addChanges(e,s,a,c,d){let _=this.done,b=_[_.length-1];return b&&b.changes&&!b.changes.empty&&e.changes&&(!a||joinableUserEvent.test(a))&&(!b.selectionsAfter.length&&s-this.prevTime0&&s-this.prevTime{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=NodeType.match(e)),s=>{let a=e(s);return a===void 0?null:[this,a]}}}NodeProp.closedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.openedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.group=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.contextHash=new NodeProp({perNode:!0});NodeProp.lookAhead=new NodeProp({perNode:!0});NodeProp.mounted=new NodeProp({perNode:!0});const noProps=Object.create(null);class NodeType{constructor(e,s,a,c=0){this.name=e,this.props=s,this.id=a,this.flags=c}static define(e){let s=e.props&&e.props.length?Object.create(null):noProps,a=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),c=new NodeType(e.name||"",s,e.id,a);if(e.props){for(let d of e.props)if(Array.isArray(d)||(d=d(c)),d){if(d[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");s[d[0].id]=d[1]}}return c}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let s=this.prop(NodeProp.group);return s?s.indexOf(e)>-1:!1}return this.id==e}static match(e){let s=Object.create(null);for(let a in e)for(let c of a.split(" "))s[c]=e[a];return a=>{for(let c=a.prop(NodeProp.group),d=-1;d<(c?c.length:0);d++){let _=s[d<0?a.name:c[d]];if(_)return _}}}}NodeType.none=new NodeType("",Object.create(null),0,8);class NodeSet{constructor(e){this.types=e;for(let s=0;s_.node;;){let k=!1;if(_.from<=d&&_.to>=c&&(_.type.isAnonymous||s(_.type,_.from,_.to,b)!==!1)){if(_.firstChild())continue;_.type.isAnonymous||(k=!0)}for(;k&&a&&a(_.type,_.from,_.to,b),k=_.type.isAnonymous,!_.nextSibling();){if(!_.parent())return;k=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let s in this.props)e.push([+s,this.props[s]]);return e}balance(e={}){return this.children.length<=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(s,a,c)=>new Tree(this.type,s,a,c,this.propValues),e.makeTree||((s,a,c)=>new Tree(NodeType.none,s,a,c)))}static build(e){return buildTree(e)}}Tree.empty=new Tree(NodeType.none,[],[],0);class FlatBufferCursor{constructor(e,s){this.buffer=e,this.index=s}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}}class TreeBuffer{constructor(e,s,a){this.buffer=e,this.length=s,this.set=a}get type(){return NodeType.none}toString(){let e=[];for(let s=0;s0));k=_[k+3]);return b}slice(e,s,a,c){let d=this.buffer,_=new Uint16Array(s-e);for(let b=e,k=0;b=e&&se;case 1:return s<=e&&a>e;case 2:return a>e;case 4:return!0}}function enterUnfinishedNodesBefore(o,e){let s=o.childBefore(e);for(;s;){let a=s.lastChild;if(!a||a.to!=s.to)break;a.type.isError&&a.from==a.to?(o=s,s=a.prevSibling):s=a}return o}function resolveNode(o,e,s,a){for(var c;o.from==o.to||(s<1?o.from>=e:o.from>e)||(s>-1?o.to<=e:o.to0?b.length:-1;e!=$;e+=s){let j=b[e],_e=k[e]+_._from;if(!!checkSide(c,a,_e,_e+j.length)){if(j instanceof TreeBuffer){if(d&2)continue;let et=j.findChild(0,j.buffer.length,s,a-_e,c);if(et>-1)return new BufferNode(new BufferContext(_,j,e,_e),null,et)}else if(d&1||!j.type.isAnonymous||hasChild(j)){let et;if(!(d&1)&&j.props&&(et=j.prop(NodeProp.mounted))&&!et.overlay)return new TreeNode(et.tree,_e,e,_);let tt=new TreeNode(j,_e,e,_);return d&1||!tt.type.isAnonymous?tt:tt.nextChild(s<0?j.children.length-1:0,s,a,c)}}}if(d&1||!_.type.isAnonymous||(_.index>=0?e=_.index+s:e=s<0?-1:_._parent.node.children.length,_=_._parent,!_))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this.node.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this.node.children.length-1,-1,e,-2)}enter(e,s,a=!0,c=!0){let d;if(a&&(d=this.node.prop(NodeProp.mounted))&&d.overlay){let _=e-this.from;for(let{from:b,to:k}of d.overlay)if((s>0?b<=_:b<_)&&(s<0?k>=_:k>_))return new TreeNode(d.tree,d.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,s,c?0:2)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get cursor(){return new TreeCursor(this)}get tree(){return this.node}toTree(){return this.node}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}toString(){return this.node.toString()}}function getChildren(o,e,s,a){let c=o.cursor,d=[];if(!c.firstChild())return d;if(s!=null){for(;!c.type.is(s);)if(!c.nextSibling())return d}for(;;){if(a!=null&&c.type.is(a))return d;if(c.type.is(e)&&d.push(c.node),!c.nextSibling())return a==null?d:[]}}class BufferContext{constructor(e,s,a,c){this.parent=e,this.buffer=s,this.index=a,this.start=c}}class BufferNode{constructor(e,s,a){this.context=e,this._parent=s,this.index=a,this.type=e.buffer.set.types[e.buffer.buffer[a]]}get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}child(e,s,a){let{buffer:c}=this.context,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.context.start,a);return d<0?null:new BufferNode(this.context,this,d)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,s,a,c=!0){if(!c)return null;let{buffer:d}=this.context,_=d.findChild(this.index+4,d.buffer[this.index+3],s>0?1:-1,e-this.context.start,s);return _<0?null:new BufferNode(this.context,this,_)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,s=e.buffer[this.index+3];return s<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new BufferNode(this.context,this._parent,s):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,s=this._parent?this._parent.index+4:0;return this.index==s?this.externalSibling(-1):new BufferNode(this.context,this._parent,e.findChild(s,this.index,-1,0,4))}get cursor(){return new TreeCursor(this)}get tree(){return null}toTree(){let e=[],s=[],{buffer:a}=this.context,c=this.index+4,d=a.buffer[this.index+3];if(d>c){let _=a.buffer[this.index+1],b=a.buffer[this.index+2];e.push(a.slice(c,d,_,b)),s.push(0)}return new Tree(this.type,e,s,this.to-this.from)}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}}class TreeCursor{constructor(e,s=0){if(this.mode=s,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof TreeNode)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let a=e._parent;a;a=a._parent)this.stack.unshift(a.index);this.bufferNode=e,this.yieldBuf(e.index)}}get name(){return this.type.name}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,s){this.index=e;let{start:a,buffer:c}=this.buffer;return this.type=s||c.set.types[c.buffer[e]],this.from=a+c.buffer[e+1],this.to=a+c.buffer[e+2],!0}yield(e){return e?e instanceof TreeNode?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,s,a){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree.node.children.length-1:0,e,s,a,this.mode));let{buffer:c}=this.buffer,d=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.buffer.start,a);return d<0?!1:(this.stack.push(this.index),this.yieldBuf(d))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,s,a=!0,c=!0){return this.buffer?c?this.enterChild(1,e,s):!1:this.yield(this._tree.enter(e,s,a&&!(this.mode&1),c))}parent(){if(!this.buffer)return this.yieldNode(this.mode&1?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&1?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:s}=this.buffer,a=this.stack.length-1;if(e<0){let c=a<0?0:this.stack[a]+4;if(this.index!=c)return this.yieldBuf(s.findChild(c,this.index,-1,0,4))}else{let c=s.buffer[this.index+3];if(c<(a<0?s.buffer.length:s.buffer[this.stack[a]+3]))return this.yieldBuf(c)}return a<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let s,a,{buffer:c}=this;if(c){if(e>0){if(this.index-1)for(let d=s+e,_=e<0?-1:a.node.children.length;d!=_;d+=e){let b=a.node.children[d];if(this.mode&1||b instanceof TreeBuffer||!b.type.isAnonymous||hasChild(b))return!1}return!0}move(e,s){if(s&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,s=0){for(;(this.from==this.to||(s<1?this.from>=e:this.from>e)||(s>-1?this.to<=e:this.to=0;){for(let _=e;_;_=_._parent)if(_.index==c){if(c==this.index)return _;s=_,a=d+1;break e}c=this.stack[--d]}}for(let c=a;ce instanceof TreeBuffer||!e.type.isAnonymous||hasChild(e))}function buildTree(o){var e;let{buffer:s,nodeSet:a,maxBufferLength:c=DefaultBufferLength,reused:d=[],minRepeatType:_=a.types.length}=o,b=Array.isArray(s)?new FlatBufferCursor(s,s.length):s,k=a.types,$=0,j=0;function _e(ht,ct,lt,ut,pt){let{id:dt,start:gt,end:yt,size:ft}=b,mt=j;for(;ft<0;)if(b.next(),ft==-1){let Dt=d[dt];lt.push(Dt),ut.push(gt-ht);return}else if(ft==-3){$=dt;return}else if(ft==-4){j=dt;return}else throw new RangeError(`Unrecognized record size: ${ft}`);let Et=k[dt],vt,At,_t=gt-ht;if(yt-gt<=c&&(At=st(b.pos-ct,pt))){let Dt=new Uint16Array(At.size-At.skip),bt=b.pos-At.size,Tt=Dt.length;for(;b.pos>bt;)Tt=rt(At.start,Dt,Tt);vt=new TreeBuffer(Dt,yt-At.start,a),_t=At.start-ht}else{let Dt=b.pos-ft;b.next();let bt=[],Tt=[],St=dt>=_?dt:-1,Ct=0,xt=yt;for(;b.pos>Dt;)St>=0&&b.id==St&&b.size>=0?(b.end<=xt-c&&(tt(bt,Tt,gt,Ct,b.end,xt,St,mt),Ct=bt.length,xt=b.end),b.next()):_e(gt,Dt,bt,Tt,St);if(St>=0&&Ct>0&&Ct-1&&Ct>0){let Rt=et(Et);vt=balanceRange(Et,bt,Tt,0,bt.length,0,yt-gt,Rt,Rt)}else vt=nt(Et,bt,Tt,yt-gt,mt-yt)}lt.push(vt),ut.push(_t)}function et(ht){return(ct,lt,ut)=>{let pt=0,dt=ct.length-1,gt,yt;if(dt>=0&&(gt=ct[dt])instanceof Tree){if(!dt&>.type==ht&>.length==ut)return gt;(yt=gt.prop(NodeProp.lookAhead))&&(pt=lt[dt]+gt.length+yt)}return nt(ht,ct,lt,ut,pt)}}function tt(ht,ct,lt,ut,pt,dt,gt,yt){let ft=[],mt=[];for(;ht.length>ut;)ft.push(ht.pop()),mt.push(ct.pop()+lt-pt);ht.push(nt(a.types[gt],ft,mt,dt-pt,yt-dt)),ct.push(pt-lt)}function nt(ht,ct,lt,ut,pt=0,dt){if($){let gt=[NodeProp.contextHash,$];dt=dt?[gt].concat(dt):[gt]}if(pt>25){let gt=[NodeProp.lookAhead,pt];dt=dt?[gt].concat(dt):[gt]}return new Tree(ht,ct,lt,ut,dt)}function st(ht,ct){let lt=b.fork(),ut=0,pt=0,dt=0,gt=lt.end-c,yt={size:0,start:0,skip:0};e:for(let ft=lt.pos-ht;lt.pos>ft;){let mt=lt.size;if(lt.id==ct&&mt>=0){yt.size=ut,yt.start=pt,yt.skip=dt,dt+=4,ut+=4,lt.next();continue}let Et=lt.pos-mt;if(mt<0||Et=_?4:0,At=lt.start;for(lt.next();lt.pos>Et;){if(lt.size<0)if(lt.size==-3)vt+=4;else break e;else lt.id>=_&&(vt+=4);lt.next()}pt=At,ut+=mt,dt+=vt}return(ct<0||ut==ht)&&(yt.size=ut,yt.start=pt,yt.skip=dt),yt.size>4?yt:void 0}function rt(ht,ct,lt){let{id:ut,start:pt,end:dt,size:gt}=b;if(b.next(),gt>=0&&ut<_){let yt=lt;if(gt>4){let ft=b.pos-(gt-4);for(;b.pos>ft;)lt=rt(ht,ct,lt)}ct[--lt]=yt,ct[--lt]=dt-ht,ct[--lt]=pt-ht,ct[--lt]=ut}else gt==-3?$=ut:gt==-4&&(j=ut);return lt}let it=[],at=[];for(;b.pos>0;)_e(o.start||0,o.bufferStart||0,it,at,-1);let ot=(e=o.length)!==null&&e!==void 0?e:it.length?at[0]+it[0].length:0;return new Tree(k[o.topID],it.reverse(),at.reverse(),ot)}const nodeSizeCache=new WeakMap;function nodeSize(o,e){if(!o.isAnonymous||e instanceof TreeBuffer||e.type!=o)return 1;let s=nodeSizeCache.get(e);if(s==null){s=1;for(let a of e.children){if(a.type!=o||!(a instanceof Tree)){s=1;break}s+=nodeSize(o,a)}nodeSizeCache.set(e,s)}return s}function balanceRange(o,e,s,a,c,d,_,b,k){let $=0;for(let nt=a;nt=j)break;lt+=ut}if(ot==ht+1){if(lt>j){let ut=nt[ht];tt(ut.children,ut.positions,0,ut.children.length,st[ht]+at);continue}_e.push(nt[ht])}else{let ut=st[ot-1]+nt[ot-1].length-ct;_e.push(balanceRange(o,nt,st,ht,ot,ct,ut,null,k))}et.push(ct+at-d)}}return tt(e,s,a,c,0),(b||k)(_e,et,_)}class TreeFragment{constructor(e,s,a,c,d=!1,_=!1){this.from=e,this.to=s,this.tree=a,this.offset=c,this.open=(d?1:0)|(_?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,s=[],a=!1){let c=[new TreeFragment(0,e.length,e,0,!1,a)];for(let d of s)d.to>e.length&&c.push(d);return c}static applyChanges(e,s,a=128){if(!s.length)return e;let c=[],d=1,_=e.length?e[0]:null;for(let b=0,k=0,$=0;;b++){let j=b=a)for(;_&&_.from<_e;){let et=_;if(k>=et.from||_e<=et.to||$){let tt=Math.max(et.from,k)-$,nt=Math.min(et.to,_e)-$;et=tt>=nt?null:new TreeFragment(tt,nt,et.tree,et.offset+$,b>0,!!j)}if(et&&c.push(et),_.to>_e)break;_=dnew Range(c.from,c.to)):[new Range(0,0)]:[new Range(0,e.length)],this.createParse(e,s||[],a)}parse(e,s,a){let c=this.startParse(e,s,a);for(;;){let d=c.advance();if(d)return d}}}class StringInput{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,s){return this.string.slice(e,s)}}new NodeProp({perNode:!0});var _a;const languageDataProp=new NodeProp;function defineLanguageFacet(o){return Facet.define({combine:o?e=>e.concat(o):void 0})}class Language{constructor(e,s,a,c=[]){this.data=e,this.topNode=a,EditorState.prototype.hasOwnProperty("tree")||Object.defineProperty(EditorState.prototype,"tree",{get(){return syntaxTree(this)}}),this.parser=s,this.extension=[language.of(this),EditorState.languageData.of((d,_,b)=>d.facet(languageDataFacetAt(d,_,b)))].concat(c)}isActiveAt(e,s,a=-1){return languageDataFacetAt(e,s,a)==this.data}findRegions(e){let s=e.facet(language);if((s==null?void 0:s.data)==this.data)return[{from:0,to:e.doc.length}];if(!s||!s.allowsNesting)return[];let a=[],c=(d,_)=>{if(d.prop(languageDataProp)==this.data){a.push({from:_,to:_+d.length});return}let b=d.prop(NodeProp.mounted);if(b){if(b.tree.prop(languageDataProp)==this.data){if(b.overlay)for(let k of b.overlay)a.push({from:k.from+_,to:k.to+_});else a.push({from:_,to:_+d.length});return}else if(b.overlay){let k=a.length;if(c(b.tree,b.overlay[0].from+_),a.length>k)return}}for(let k=0;ka.isTop?s:void 0)]}))}configure(e){return new LRLanguage(this.data,this.parser.configure(e))}get allowsNesting(){return this.parser.wrappers.length>0}}function syntaxTree(o){let e=o.field(Language.state,!1);return e?e.tree:Tree.empty}class DocInput{constructor(e,s=e.length){this.doc=e,this.length=s,this.cursorPos=0,this.string="",this.cursor=e.iter()}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,s){let a=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,s):this.string.slice(e-a,s-a)}}let currentContext=null;class ParseContext{constructor(e,s,a=[],c,d,_,b,k){this.parser=e,this.state=s,this.fragments=a,this.tree=c,this.treeLen=d,this.viewport=_,this.skipped=b,this.scheduleOn=k,this.parse=null,this.tempSkipped=[]}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(e,s){return s!=null&&s>=this.state.doc.length&&(s=void 0),this.tree!=Tree.empty&&this.isDone(s!=null?s:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var a;if(typeof e=="number"){let c=Date.now()+e;e=()=>Date.now()>c}for(this.parse||(this.parse=this.startParse()),s!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>s)&&s=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(s=this.parse.advance()););}),this.treeLen=e,this.tree=s,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let s=currentContext;currentContext=this;try{return e()}finally{currentContext=s}}withoutTempSkipped(e){for(let s;s=this.tempSkipped.pop();)e=cutFragments(e,s.from,s.to);return e}changes(e,s){let{fragments:a,tree:c,treeLen:d,viewport:_,skipped:b}=this;if(this.takeTree(),!e.empty){let k=[];if(e.iterChangedRanges(($,j,_e,et)=>k.push({fromA:$,toA:j,fromB:_e,toB:et})),a=TreeFragment.applyChanges(a,k),c=Tree.empty,d=0,_={from:e.mapPos(_.from,-1),to:e.mapPos(_.to,1)},this.skipped.length){b=[];for(let $ of this.skipped){let j=e.mapPos($.from,1),_e=e.mapPos($.to,-1);j<_e&&b.push({from:j,to:_e})}}}return new ParseContext(this.parser,s,a,c,d,_,b,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let s=this.skipped.length;for(let a=0;ae.from&&(this.fragments=cutFragments(this.fragments,c,d),this.skipped.splice(a--,1))}return this.skipped.length>=s?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,s){this.skipped.push({from:e,to:s})}static getSkippingParser(e){return new class extends Parser{createParse(s,a,c){let d=c[0].from,_=c[c.length-1].to;return{parsedPos:d,advance(){let k=currentContext;if(k){for(let $ of c)k.tempSkipped.push($);e&&(k.scheduleOn=k.scheduleOn?Promise.all([k.scheduleOn,e]):e)}return this.parsedPos=_,new Tree(NodeType.none,[],[],_-d)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let s=this.fragments;return this.treeLen>=e&&s.length&&s[0].from==0&&s[0].to>=e}static get(){return currentContext}}function cutFragments(o,e,s){return TreeFragment.applyChanges(o,[{fromA:e,toA:s,fromB:e,toB:s}])}class LanguageState{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let s=this.context.changes(e.changes,e.state),a=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),s.viewport.to);return s.work(20,a)||s.takeTree(),new LanguageState(s)}static init(e){let s=Math.min(3e3,e.doc.length),a=new ParseContext(e.facet(language).parser,e,[],Tree.empty,0,{from:0,to:s},[],null);return a.work(20,s)||a.takeTree(),new LanguageState(a)}}Language.state=StateField.define({create:LanguageState.init,update(o,e){for(let s of e.effects)if(s.is(Language.setState))return s.value;return e.startState.facet(language)!=e.state.facet(language)?LanguageState.init(e.state):o.apply(e)}});let requestIdle=o=>{let e=setTimeout(()=>o(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(requestIdle=o=>{let e=-1,s=setTimeout(()=>{e=requestIdleCallback(o,{timeout:500-100})},100);return()=>e<0?clearTimeout(s):cancelIdleCallback(e)});const isInputPending=typeof navigator!="undefined"&&((_a=navigator.scheduling)===null||_a===void 0?void 0:_a.isInputPending)?()=>navigator.scheduling.isInputPending():null,parseWorker=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let s=this.view.state.field(Language.state).context;(s.updateViewport(e.view.viewport)||this.view.viewport.to>s.treeLen)&&this.scheduleWork(),e.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(s)}scheduleWork(){if(this.working)return;let{state:e}=this.view,s=e.field(Language.state);(s.tree!=s.context.tree||!s.context.isDone(e.doc.length))&&(this.working=requestIdle(this.work))}work(e){this.working=null;let s=Date.now();if(this.chunkEndc+1e3,k=d.context.work(()=>isInputPending&&isInputPending()||Date.now()>_,c+(b?0:1e5));this.chunkBudget-=Date.now()-s,(k||this.chunkBudget<=0)&&(d.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(d.context))})),this.chunkBudget>0&&!(k&&!b)&&this.scheduleWork(),this.checkAsyncSchedule(d.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(s=>logException(this.view.state,s)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(o){return o.length?o[0]:null},enables:[Language.state,parseWorker]});class LanguageSupport{constructor(e,s=[]){this.language=e,this.support=s,this.extension=[e,s]}}const indentService=Facet.define(),indentUnit=Facet.define({combine:o=>{if(!o.length)return" ";if(!/^(?: +|\t+)$/.test(o[0]))throw new Error("Invalid indent unit: "+JSON.stringify(o[0]));return o[0]}});function getIndentUnit(o){let e=o.facet(indentUnit);return e.charCodeAt(0)==9?o.tabSize*e.length:e.length}function indentString(o,e){let s="",a=o.tabSize;if(o.facet(indentUnit).charCodeAt(0)==9)for(;e>=a;)s+=" ",e-=a;for(let c=0;c=a.from&&c<=a.to?d&&c==e?{text:"",from:e}:(s<0?c-1&&(d+=_-this.countColumn(a,a.search(/\S|$/))),d}countColumn(e,s=e.length){return countColumn(e,this.state.tabSize,s)}lineIndent(e,s=1){let{text:a,from:c}=this.lineAt(e,s),d=this.options.overrideIndentation;if(d){let _=d(c);if(_>-1)return _}return this.countColumn(a,a.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const indentNodeProp=new NodeProp;function syntaxIndentation(o,e,s){return indentFrom(e.resolveInner(s).enterUnfinishedNodesBefore(s),s,o)}function ignoreClosed(o){return o.pos==o.options.simulateBreak&&o.options.simulateDoubleBreak}function indentStrategy(o){let e=o.type.prop(indentNodeProp);if(e)return e;let s=o.firstChild,a;if(s&&(a=s.type.prop(NodeProp.closedBy))){let c=o.lastChild,d=c&&a.indexOf(c.name)>-1;return _=>delimitedStrategy(_,!0,1,void 0,d&&!ignoreClosed(_)?c.from:void 0)}return o.parent==null?topIndent:null}function indentFrom(o,e,s){for(;o;o=o.parent){let a=indentStrategy(o);if(a)return a(new TreeIndentContext(s,e,o))}return null}function topIndent(){return 0}class TreeIndentContext extends IndentContext{constructor(e,s,a){super(e.state,e.options),this.base=e,this.pos=s,this.node=a}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){let e=this.state.doc.lineAt(this.node.from);for(;;){let s=this.node.resolve(e.from);for(;s.parent&&s.parent.from==s.from;)s=s.parent;if(isParent(s,this.node))break;e=this.state.doc.lineAt(s.from)}return this.lineIndent(e.from)}continue(){let e=this.node.parent;return e?indentFrom(e,this.pos,this.base):0}}function isParent(o,e){for(let s=e;s;s=s.parent)if(o==s)return!0;return!1}function bracketedAligned(o){let e=o.node,s=e.childAfter(e.from),a=e.lastChild;if(!s)return null;let c=o.options.simulateBreak,d=o.state.doc.lineAt(s.from),_=c==null||c<=d.from?d.to:Math.min(d.to,c);for(let b=s.to;;){let k=e.childAfter(b);if(!k||k==a)return null;if(!k.type.isSkipped)return k.from<_?s:null;b=k.to}}function delimitedIndent({closing:o,align:e=!0,units:s=1}){return a=>delimitedStrategy(a,e,s,o)}function delimitedStrategy(o,e,s,a,c){let d=o.textAfter,_=d.match(/^\s*/)[0].length,b=a&&d.slice(_,_+a.length)==a||c==o.pos+_,k=e?bracketedAligned(o):null;return k?b?o.column(k.from):o.column(k.to):o.baseIndent+(b?0:o.unit*s)}const flatIndent=o=>o.baseIndent;function continuedIndent({except:o,units:e=1}={}){return s=>{let a=o&&o.test(s.textAfter);return s.baseIndent+(a?0:e*s.unit)}}const DontIndentBeyond=200;function indentOnInput(){return EditorState.transactionFilter.of(o=>{if(!o.docChanged||!o.isUserEvent("input.type")&&!o.isUserEvent("input.complete"))return o;let e=o.startState.languageDataAt("indentOnInput",o.startState.selection.main.head);if(!e.length)return o;let s=o.newDoc,{head:a}=o.newSelection.main,c=s.lineAt(a);if(a>c.from+DontIndentBeyond)return o;let d=s.sliceString(c.from,a);if(!e.some($=>$.test(d)))return o;let{state:_}=o,b=-1,k=[];for(let{head:$}of _.selection.ranges){let j=_.doc.lineAt($);if(j.from==b)continue;b=j.from;let _e=getIndentation(_,j.from);if(_e==null)continue;let et=/^\s*/.exec(j.text)[0],tt=indentString(_,_e);et!=tt&&k.push({from:j.from,to:j.from+et.length,insert:tt})}return k.length?[o,{changes:k,sequential:!0}]:o})}const foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside$1(o){let e=o.firstChild,s=o.lastChild;return e&&e.tos)continue;if(d&&_.from=e&&k.to>s&&(d=k)}}return d}function isUnfinished(o){let e=o.lastChild;return e&&e.to==o.to&&e.type.isError}function foldable(o,e,s){for(let a of o.facet(foldService)){let c=a(o,e,s);if(c)return c}return syntaxFolding(o,e,s)}class GutterMarker extends RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}GutterMarker.prototype.elementClass="";GutterMarker.prototype.toDOM=void 0;GutterMarker.prototype.mapMode=MapMode.TrackBefore;GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1;GutterMarker.prototype.point=!0;const gutterLineClass=Facet.define(),defaults$1={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>RangeSet.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},activeGutters=Facet.define();function gutter(o){return[gutters(),activeGutters.of(Object.assign(Object.assign({},defaults$1),o))]}const baseTheme$7=EditorView.baseTheme({".cm-gutters":{display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#999",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"}}),unfixGutters=Facet.define({combine:o=>o.some(e=>e)});function gutters(o){let e=[gutterView,baseTheme$7];return o&&o.fixed===!1&&e.push(unfixGutters.of(!0)),e}const gutterView=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.prevViewport=o.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=o.state.facet(activeGutters).map(e=>new SingleGutterView(o,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!o.state.facet(unfixGutters),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),o.scrollDOM.insertBefore(this.dom,o.contentDOM)}update(o){if(this.updateGutters(o)){let e=this.prevViewport,s=o.view.viewport,a=Math.min(e.to,s.to)-Math.max(e.from,s.from);this.syncGutters(a<(s.to-s.from)*.8)}o.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(unfixGutters)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=o.view.viewport}syncGutters(o){let e=this.dom.nextSibling;o&&this.dom.remove();let s=RangeSet.iter(this.view.state.facet(gutterLineClass),this.view.viewport.from),a=[],c=this.gutters.map(d=>new UpdateContext(d,this.view.viewport,-this.view.documentPadding.top));for(let d of this.view.viewportLineBlocks){let _;if(Array.isArray(d.type)){for(let b of d.type)if(b.type==BlockType.Text){_=b;break}}else _=d.type==BlockType.Text?d:void 0;if(!!_){a.length&&(a=[]),advanceCursor(s,a,d.from);for(let b of c)b.line(this.view,_,a)}}for(let d of c)d.finish();o&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(o){let e=o.startState.facet(activeGutters),s=o.state.facet(activeGutters),a=o.docChanged||o.heightChanged||o.viewportChanged||!RangeSet.eq(o.startState.facet(gutterLineClass),o.state.facet(gutterLineClass),o.view.viewport.from,o.view.viewport.to);if(e==s)for(let c of this.gutters)c.update(o)&&(a=!0);else{a=!0;let c=[];for(let d of s){let _=e.indexOf(d);_<0?c.push(new SingleGutterView(this.view,d)):(this.gutters[_].update(o),c.push(this.gutters[_]))}for(let d of this.gutters)d.dom.remove(),c.indexOf(d)<0&&d.destroy();for(let d of c)this.dom.appendChild(d.dom);this.gutters=c}return a}destroy(){for(let o of this.gutters)o.destroy();this.dom.remove()}},{provide:PluginField.scrollMargins.from(o=>o.gutters.length==0||!o.fixed?null:o.view.textDirection==Direction.LTR?{left:o.dom.offsetWidth}:{right:o.dom.offsetWidth})});function asArray(o){return Array.isArray(o)?o:[o]}function advanceCursor(o,e,s){for(;o.value&&o.from<=s;)o.from==s&&e.push(o.value),o.next()}class UpdateContext{constructor(e,s,a){this.gutter=e,this.height=a,this.localMarkers=[],this.i=0,this.cursor=RangeSet.iter(e.markers,s.from)}line(e,s,a){this.localMarkers.length&&(this.localMarkers=[]),advanceCursor(this.cursor,this.localMarkers,s.from);let c=a.length?this.localMarkers.concat(a):this.localMarkers,d=this.gutter.config.lineMarker(e,s,c);d&&c.unshift(d);let _=this.gutter;if(c.length==0&&!_.config.renderEmptyElements)return;let b=s.top-this.height;if(this.i==_.elements.length){let k=new GutterElement(e,s.height,b,c);_.elements.push(k),_.dom.appendChild(k.dom)}else _.elements[this.i].update(e,s.height,b,c);this.height=s.bottom,this.i++}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let s=e.elements.pop();e.dom.removeChild(s.dom),s.destroy()}}}class SingleGutterView{constructor(e,s){this.view=e,this.config=s,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let a in s.domEventHandlers)this.dom.addEventListener(a,c=>{let d=e.lineBlockAtHeight(c.clientY-e.documentTop);s.domEventHandlers[a](e,d,c)&&c.preventDefault()});this.markers=asArray(s.markers(e)),s.initialSpacer&&(this.spacer=new GutterElement(e,0,0,[s.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let s=this.markers;if(this.markers=asArray(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let c=this.config.updateSpacer(this.spacer.markers[0],e);c!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[c])}let a=e.view.viewport;return!RangeSet.eq(this.markers,s,a.from,a.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class GutterElement{constructor(e,s,a,c){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.update(e,s,a,c)}update(e,s,a,c){this.height!=s&&(this.dom.style.height=(this.height=s)+"px"),this.above!=a&&(this.dom.style.marginTop=(this.above=a)?a+"px":""),sameMarkers(this.markers,c)||this.setMarkers(e,c)}setMarkers(e,s){let a="cm-gutterElement",c=this.dom.firstChild;for(let d=0,_=0;;){let b=_,k=dd(b,k,$)||_(b,k,$):_}return a}})}});class NumberMarker extends GutterMarker{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function formatNumber(o,e){return o.state.facet(lineNumberConfig).formatNumber(e,o.state)}const lineNumberGutter=activeGutters.compute([lineNumberConfig],o=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(lineNumberMarkers)},lineMarker(e,s,a){return a.some(c=>c.toDOM)?null:new NumberMarker(formatNumber(e,e.state.doc.lineAt(s.from).number))},lineMarkerChange:e=>e.startState.facet(lineNumberConfig)!=e.state.facet(lineNumberConfig),initialSpacer(e){return new NumberMarker(formatNumber(e,maxLineNumber(e.state.doc.lines)))},updateSpacer(e,s){let a=formatNumber(s.view,maxLineNumber(s.view.state.doc.lines));return a==e.number?e:new NumberMarker(a)},domEventHandlers:o.facet(lineNumberConfig).domEventHandlers}));function lineNumbers(o={}){return[lineNumberConfig.of(o),gutters(),lineNumberGutter]}function maxLineNumber(o){let e=9;for(;e{let e=[],s=-1;for(let a of o.selection.ranges)if(a.empty){let c=o.doc.lineAt(a.head).from;c>s&&(s=c,e.push(activeLineGutterMarker.range(c)))}return RangeSet.of(e)});function highlightActiveLineGutter(){return activeLineGutterHighlighter}function mapRange(o,e){let s=e.mapPos(o.from,1),a=e.mapPos(o.to,-1);return s>=a?void 0:{from:s,to:a}}const foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(o){let e=[];for(let{head:s}of o.state.selection.ranges)e.some(a=>a.from<=s&&a.to>=s)||e.push(o.lineBlockAt(s));return e}const foldState=StateField.define({create(){return Decoration.none},update(o,e){o=o.map(e.changes);for(let s of e.effects)s.is(foldEffect)&&!foldExists(o,s.value.from,s.value.to)?o=o.update({add:[foldWidget.range(s.value.from,s.value.to)]}):s.is(unfoldEffect)&&(o=o.update({filter:(a,c)=>s.value.from!=a||s.value.to!=c,filterFrom:s.value.from,filterTo:s.value.to}));if(e.selection){let s=!1,{head:a}=e.selection.main;o.between(a,a,(c,d)=>{ca&&(s=!0)}),s&&(o=o.update({filterFrom:a,filterTo:a,filter:(c,d)=>d<=a||c>=a}))}return o},provide:o=>EditorView.decorations.from(o)});function foldInside(o,e,s){var a;let c=null;return(a=o.field(foldState,!1))===null||a===void 0||a.between(e,s,(d,_)=>{(!c||c.from>d)&&(c={from:d,to:_})}),c}function foldExists(o,e,s){let a=!1;return o.between(e,e,(c,d)=>{c==e&&d==s&&(a=!0)}),a}function maybeEnable(o,e){return o.field(foldState,!1)?e:e.concat(StateEffect.appendConfig.of(codeFolding()))}const foldCode=o=>{for(let e of selectedLines(o)){let s=foldable(o.state,e.from,e.to);if(s)return o.dispatch({effects:maybeEnable(o.state,[foldEffect.of(s),announceFold(o,s)])}),!0}return!1},unfoldCode=o=>{if(!o.state.field(foldState,!1))return!1;let e=[];for(let s of selectedLines(o)){let a=foldInside(o.state,s.from,s.to);a&&e.push(unfoldEffect.of(a),announceFold(o,a,!1))}return e.length&&o.dispatch({effects:e}),e.length>0};function announceFold(o,e,s=!0){let a=o.state.doc.lineAt(e.from).number,c=o.state.doc.lineAt(e.to).number;return EditorView.announce.of(`${o.state.phrase(s?"Folded lines":"Unfolded lines")} ${a} ${o.state.phrase("to")} ${c}.`)}const foldAll=o=>{let{state:e}=o,s=[];for(let a=0;a{let e=o.state.field(foldState,!1);if(!e||!e.size)return!1;let s=[];return e.between(0,o.state.doc.length,(a,c)=>{s.push(unfoldEffect.of({from:a,to:c}))}),o.dispatch({effects:s}),!0},foldKeymap=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:foldCode},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:unfoldCode},{key:"Ctrl-Alt-[",run:foldAll},{key:"Ctrl-Alt-]",run:unfoldAll}],defaultConfig={placeholderDOM:null,placeholderText:"\u2026"},foldConfig=Facet.define({combine(o){return combineConfig(o,defaultConfig)}});function codeFolding(o){let e=[foldState,baseTheme$6];return o&&e.push(foldConfig.of(o)),e}const foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(o){let{state:e}=o,s=e.facet(foldConfig),a=d=>{let _=o.lineBlockAt(o.posAtDOM(d.target)),b=foldInside(o.state,_.from,_.to);b&&o.dispatch({effects:unfoldEffect.of(b)}),d.preventDefault()};if(s.placeholderDOM)return s.placeholderDOM(o,a);let c=document.createElement("span");return c.textContent=s.placeholderText,c.setAttribute("aria-label",e.phrase("folded code")),c.title=e.phrase("unfold"),c.className="cm-foldPlaceholder",c.onclick=a,c}}}),foldGutterDefaults={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{}};class FoldMarker extends GutterMarker{constructor(e,s){super(),this.config=e,this.open=s}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let s=document.createElement("span");return s.textContent=this.open?this.config.openText:this.config.closedText,s.title=e.state.phrase(this.open?"Fold line":"Unfold line"),s}}function foldGutter(o={}){let e=Object.assign(Object.assign({},foldGutterDefaults),o),s=new FoldMarker(e,!0),a=new FoldMarker(e,!1),c=ViewPlugin.fromClass(class{constructor(_){this.from=_.viewport.from,this.markers=this.buildMarkers(_)}update(_){(_.docChanged||_.viewportChanged||_.startState.facet(language)!=_.state.facet(language)||_.startState.field(foldState,!1)!=_.state.field(foldState,!1)||syntaxTree(_.startState)!=syntaxTree(_.state))&&(this.markers=this.buildMarkers(_.view))}buildMarkers(_){let b=new RangeSetBuilder;for(let k of _.viewportLineBlocks){let $=foldInside(_.state,k.from,k.to)?a:foldable(_.state,k.from,k.to)?s:null;$&&b.add(k.from,k.from,$)}return b.finish()}}),{domEventHandlers:d}=e;return[c,gutter({class:"cm-foldGutter",markers(_){var b;return((b=_.plugin(c))===null||b===void 0?void 0:b.markers)||RangeSet.empty},initialSpacer(){return new FoldMarker(e,!1)},domEventHandlers:Object.assign(Object.assign({},d),{click:(_,b,k)=>{if(d.click&&d.click(_,b,k))return!0;let $=foldInside(_.state,b.from,b.to);if($)return _.dispatch({effects:unfoldEffect.of($)}),!0;let j=foldable(_.state,b.from,b.to);return j?(_.dispatch({effects:foldEffect.of(j)}),!0):!1}})}),codeFolding()]}const baseTheme$6=EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),baseTheme$5=EditorView.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),DefaultScanDist=1e4,DefaultBrackets="()[]{}",bracketMatchingConfig=Facet.define({combine(o){return combineConfig(o,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist})}}),matchingMark=Decoration.mark({class:"cm-matchingBracket"}),nonmatchingMark=Decoration.mark({class:"cm-nonmatchingBracket"}),bracketMatchingState=StateField.define({create(){return Decoration.none},update(o,e){if(!e.docChanged&&!e.selection)return o;let s=[],a=e.state.facet(bracketMatchingConfig);for(let c of e.state.selection.ranges){if(!c.empty)continue;let d=matchBrackets(e.state,c.head,-1,a)||c.head>0&&matchBrackets(e.state,c.head-1,1,a)||a.afterCursor&&(matchBrackets(e.state,c.head,1,a)||c.headEditorView.decorations.from(o)}),bracketMatchingUnique=[bracketMatchingState,baseTheme$5];function bracketMatching(o={}){return[bracketMatchingConfig.of(o),bracketMatchingUnique]}function matchingNodes(o,e,s){let a=o.prop(e<0?NodeProp.openedBy:NodeProp.closedBy);if(a)return a;if(o.name.length==1){let c=s.indexOf(o.name);if(c>-1&&c%2==(e<0?1:0))return[s[c+e]]}return null}function matchBrackets(o,e,s,a={}){let c=a.maxScanDistance||DefaultScanDist,d=a.brackets||DefaultBrackets,_=syntaxTree(o),b=_.resolveInner(e,s);for(let k=b;k;k=k.parent){let $=matchingNodes(k.type,s,d);if($&&k.from=a.to){if(k==0&&c.indexOf($.type.name)>-1&&$.from<$.to)return{start:b,end:{from:$.from,to:$.to},matched:!0};if(matchingNodes($.type,s,d))k++;else if(matchingNodes($.type,-s,d)&&(k--,k==0))return{start:b,end:$.from==$.to?void 0:{from:$.from,to:$.to},matched:!1}}while(s<0?$.prevSibling():$.nextSibling());return{start:b,matched:!1}}function matchPlainBrackets(o,e,s,a,c,d,_){let b=s<0?o.sliceDoc(e-1,e):o.sliceDoc(e,e+1),k=_.indexOf(b);if(k<0||k%2==0!=s>0)return null;let $={from:s<0?e-1:e,to:s>0?e+1:e},j=o.doc.iterRange(e,s>0?o.doc.length:0),_e=0;for(let et=0;!j.next().done&&et<=d;){let tt=j.value;s<0&&(et+=tt.length);let nt=e+et*s;for(let st=s>0?0:tt.length-1,rt=s>0?tt.length:-1;st!=rt;st+=s){let it=_.indexOf(tt[st]);if(!(it<0||a.resolve(nt+st,1).type!=c))if(it%2==0==s>0)_e++;else{if(_e==1)return{start:$,end:{from:nt+st,to:nt+st+1},matched:it>>1==k>>1};_e--}}s>0&&(et+=tt.length)}return j.done?{start:$,matched:!1}:null}function updateSel(o,e){return EditorSelection.create(o.ranges.map(e),o.mainIndex)}function setSel(o,e){return o.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function moveSel({state:o,dispatch:e},s){let a=updateSel(o.selection,s);return a.eq(o.selection)?!1:(e(setSel(o,a)),!0)}function rangeEnd(o,e){return EditorSelection.cursor(e?o.to:o.from)}function cursorByChar(o,e){return moveSel(o,s=>s.empty?o.moveByChar(s,e):rangeEnd(s,e))}const cursorCharLeft=o=>cursorByChar(o,o.textDirection!=Direction.LTR),cursorCharRight=o=>cursorByChar(o,o.textDirection==Direction.LTR);function cursorByGroup(o,e){return moveSel(o,s=>s.empty?o.moveByGroup(s,e):rangeEnd(s,e))}const cursorGroupLeft=o=>cursorByGroup(o,o.textDirection!=Direction.LTR),cursorGroupRight=o=>cursorByGroup(o,o.textDirection==Direction.LTR);function interestingNode(o,e,s){if(e.type.prop(s))return!0;let a=e.to-e.from;return a&&(a>2||/[^\s,.;:]/.test(o.sliceDoc(e.from,e.to)))||e.firstChild}function moveBySyntax(o,e,s){let a=syntaxTree(o).resolveInner(e.head),c=s?NodeProp.closedBy:NodeProp.openedBy;for(let k=e.head;;){let $=s?a.childAfter(k):a.childBefore(k);if(!$)break;interestingNode(o,$,c)?a=$:k=s?$.to:$.from}let d=a.type.prop(c),_,b;return d&&(_=s?matchBrackets(o,a.from,1):matchBrackets(o,a.to,-1))&&_.matched?b=s?_.end.to:_.end.from:b=s?a.to:a.from,EditorSelection.cursor(b,s?-1:1)}const cursorSyntaxLeft=o=>moveSel(o,e=>moveBySyntax(o.state,e,o.textDirection!=Direction.LTR)),cursorSyntaxRight=o=>moveSel(o,e=>moveBySyntax(o.state,e,o.textDirection==Direction.LTR));function cursorByLine(o,e){return moveSel(o,s=>{if(!s.empty)return rangeEnd(s,e);let a=o.moveVertically(s,e);return a.head!=s.head?a:o.moveToLineBoundary(s,e)})}const cursorLineUp=o=>cursorByLine(o,!1),cursorLineDown=o=>cursorByLine(o,!0);function cursorByPage(o,e){let{state:s}=o,a=updateSel(s.selection,_=>_.empty?o.moveVertically(_,e,o.dom.clientHeight):rangeEnd(_,e));if(a.eq(s.selection))return!1;let c=o.coordsAtPos(s.selection.main.head),d=o.scrollDOM.getBoundingClientRect();return o.dispatch(setSel(s,a),{effects:c&&c.top>d.top&&c.bottomcursorByPage(o,!1),cursorPageDown=o=>cursorByPage(o,!0);function moveByLineBoundary(o,e,s){let a=o.lineBlockAt(e.head),c=o.moveToLineBoundary(e,s);if(c.head==e.head&&c.head!=(s?a.to:a.from)&&(c=o.moveToLineBoundary(e,s,!1)),!s&&c.head==a.from&&a.length){let d=/^\s*/.exec(o.state.sliceDoc(a.from,Math.min(a.from+100,a.to)))[0].length;d&&e.head!=a.from+d&&(c=EditorSelection.cursor(a.from+d))}return c}const cursorLineBoundaryForward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!0)),cursorLineBoundaryBackward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!1)),cursorLineStart=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from,1)),cursorLineEnd=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to,-1));function toMatchingBracket(o,e,s){let a=!1,c=updateSel(o.selection,d=>{let _=matchBrackets(o,d.head,-1)||matchBrackets(o,d.head,1)||d.head>0&&matchBrackets(o,d.head-1,1)||d.headtoMatchingBracket(o,e,!1);function extendSel(o,e){let s=updateSel(o.state.selection,a=>{let c=e(a);return EditorSelection.range(a.anchor,c.head,c.goalColumn)});return s.eq(o.state.selection)?!1:(o.dispatch(setSel(o.state,s)),!0)}function selectByChar(o,e){return extendSel(o,s=>o.moveByChar(s,e))}const selectCharLeft=o=>selectByChar(o,o.textDirection!=Direction.LTR),selectCharRight=o=>selectByChar(o,o.textDirection==Direction.LTR);function selectByGroup(o,e){return extendSel(o,s=>o.moveByGroup(s,e))}const selectGroupLeft=o=>selectByGroup(o,o.textDirection!=Direction.LTR),selectGroupRight=o=>selectByGroup(o,o.textDirection==Direction.LTR),selectSyntaxLeft=o=>extendSel(o,e=>moveBySyntax(o.state,e,o.textDirection!=Direction.LTR)),selectSyntaxRight=o=>extendSel(o,e=>moveBySyntax(o.state,e,o.textDirection==Direction.LTR));function selectByLine(o,e){return extendSel(o,s=>o.moveVertically(s,e))}const selectLineUp=o=>selectByLine(o,!1),selectLineDown=o=>selectByLine(o,!0);function selectByPage(o,e){return extendSel(o,s=>o.moveVertically(s,e,o.dom.clientHeight))}const selectPageUp=o=>selectByPage(o,!1),selectPageDown=o=>selectByPage(o,!0),selectLineBoundaryForward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!0)),selectLineBoundaryBackward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!1)),selectLineStart=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from)),selectLineEnd=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to)),cursorDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:0})),!0),cursorDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.doc.length})),!0),selectDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:0})),!0),selectDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:o.doc.length})),!0),selectAll=({state:o,dispatch:e})=>(e(o.update({selection:{anchor:0,head:o.doc.length},userEvent:"select"})),!0),selectLine=({state:o,dispatch:e})=>{let s=selectedLineBlocks(o).map(({from:a,to:c})=>EditorSelection.range(a,Math.min(c+1,o.doc.length)));return e(o.update({selection:EditorSelection.create(s),userEvent:"select"})),!0},selectParentSyntax=({state:o,dispatch:e})=>{let s=updateSel(o.selection,a=>{var c;let d=syntaxTree(o).resolveInner(a.head,1);for(;!(d.from=a.to||d.to>a.to&&d.from<=a.from||!(!((c=d.parent)===null||c===void 0)&&c.parent));)d=d.parent;return EditorSelection.range(d.to,d.from)});return e(setSel(o,s)),!0},simplifySelection=({state:o,dispatch:e})=>{let s=o.selection,a=null;return s.ranges.length>1?a=EditorSelection.create([s.main]):s.main.empty||(a=EditorSelection.create([EditorSelection.cursor(s.main.head)])),a?(e(setSel(o,a)),!0):!1};function deleteBy({state:o,dispatch:e},s){if(o.readOnly)return!1;let a="delete.selection",c=o.changeByRange(d=>{let{from:_,to:b}=d;if(_==b){let k=s(_);k<_?a="delete.backward":k>_&&(a="delete.forward"),_=Math.min(_,k),b=Math.max(b,k)}return _==b?{range:d}:{changes:{from:_,to:b},range:EditorSelection.cursor(_)}});return c.changes.empty?!1:(e(o.update(c,{scrollIntoView:!0,userEvent:a})),!0)}function skipAtomic(o,e,s){if(o instanceof EditorView)for(let a of o.pluginField(PluginField.atomicRanges))a.between(e,e,(c,d)=>{ce&&(e=s?d:c)});return e}const deleteByChar=(o,e)=>deleteBy(o,s=>{let{state:a}=o,c=a.doc.lineAt(s),d,_;if(!e&&s>c.from&&sdeleteByChar(o,!1),deleteCharForward=o=>deleteByChar(o,!0),deleteByGroup=(o,e)=>deleteBy(o,s=>{let a=s,{state:c}=o,d=c.doc.lineAt(a),_=c.charCategorizer(a);for(let b=null;;){if(a==(e?d.to:d.from)){a==s&&d.number!=(e?c.doc.lines:1)&&(a+=e?1:-1);break}let k=findClusterBreak(d.text,a-d.from,e)+d.from,$=d.text.slice(Math.min(a,k)-d.from,Math.max(a,k)-d.from),j=_($);if(b!=null&&j!=b)break;($!=" "||a!=s)&&(b=j),a=k}return skipAtomic(o,a,e)}),deleteGroupBackward=o=>deleteByGroup(o,!1),deleteGroupForward=o=>deleteByGroup(o,!0),deleteToLineEnd=o=>deleteBy(o,e=>{let s=o.lineBlockAt(e).to;return skipAtomic(o,edeleteBy(o,e=>{let s=o.lineBlockAt(e).from;return skipAtomic(o,e>s?s:Math.max(0,e-1),!1)}),splitLine=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>({changes:{from:a.from,to:a.to,insert:Text.of(["",""])},range:EditorSelection.cursor(a.from)}));return e(o.update(s,{scrollIntoView:!0,userEvent:"input"})),!0},transposeChars=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>{if(!a.empty||a.from==0||a.from==o.doc.length)return{range:a};let c=a.from,d=o.doc.lineAt(c),_=c==d.from?c-1:findClusterBreak(d.text,c-d.from,!1)+d.from,b=c==d.to?c+1:findClusterBreak(d.text,c-d.from,!0)+d.from;return{changes:{from:_,to:b,insert:o.doc.slice(c,b).append(o.doc.slice(_,c))},range:EditorSelection.cursor(b)}});return s.changes.empty?!1:(e(o.update(s,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function selectedLineBlocks(o){let e=[],s=-1;for(let a of o.selection.ranges){let c=o.doc.lineAt(a.from),d=o.doc.lineAt(a.to);if(!a.empty&&a.to==d.from&&(d=o.doc.lineAt(a.to-1)),s>=c.number){let _=e[e.length-1];_.to=d.to,_.ranges.push(a)}else e.push({from:c.from,to:d.to,ranges:[a]});s=d.number+1}return e}function moveLine(o,e,s){if(o.readOnly)return!1;let a=[],c=[];for(let d of selectedLineBlocks(o)){if(s?d.to==o.doc.length:d.from==0)continue;let _=o.doc.lineAt(s?d.to+1:d.from-1),b=_.length+1;if(s){a.push({from:d.to,to:_.to},{from:d.from,insert:_.text+o.lineBreak});for(let k of d.ranges)c.push(EditorSelection.range(Math.min(o.doc.length,k.anchor+b),Math.min(o.doc.length,k.head+b)))}else{a.push({from:_.from,to:d.from},{from:d.to,insert:o.lineBreak+_.text});for(let k of d.ranges)c.push(EditorSelection.range(k.anchor-b,k.head-b))}}return a.length?(e(o.update({changes:a,scrollIntoView:!0,selection:EditorSelection.create(c,o.selection.mainIndex),userEvent:"move.line"})),!0):!1}const moveLineUp=({state:o,dispatch:e})=>moveLine(o,e,!1),moveLineDown=({state:o,dispatch:e})=>moveLine(o,e,!0);function copyLine(o,e,s){if(o.readOnly)return!1;let a=[];for(let c of selectedLineBlocks(o))s?a.push({from:c.from,insert:o.doc.slice(c.from,c.to)+o.lineBreak}):a.push({from:c.to,insert:o.lineBreak+o.doc.slice(c.from,c.to)});return e(o.update({changes:a,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const copyLineUp=({state:o,dispatch:e})=>copyLine(o,e,!1),copyLineDown=({state:o,dispatch:e})=>copyLine(o,e,!0),deleteLine=o=>{if(o.state.readOnly)return!1;let{state:e}=o,s=e.changes(selectedLineBlocks(e).map(({from:c,to:d})=>(c>0?c--:do.moveVertically(c,!0)).map(s);return o.dispatch({changes:s,selection:a,scrollIntoView:!0,userEvent:"delete.line"}),!0};function isBetweenBrackets(o,e){if(/\(\)|\[\]|\{\}/.test(o.sliceDoc(e-1,e+1)))return{from:e,to:e};let s=syntaxTree(o).resolveInner(e),a=s.childBefore(e),c=s.childAfter(e),d;return a&&c&&a.to<=e&&c.from>=e&&(d=a.type.prop(NodeProp.closedBy))&&d.indexOf(c.name)>-1&&o.doc.lineAt(a.to).from==o.doc.lineAt(c.from).from?{from:a.to,to:c.from}:null}const insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0);function newlineAndIndent(o){return({state:e,dispatch:s})=>{if(e.readOnly)return!1;let a=e.changeByRange(c=>{let{from:d,to:_}=c,b=e.doc.lineAt(d),k=!o&&d==_&&isBetweenBrackets(e,d);o&&(d=_=(_<=b.to?b:e.doc.lineAt(_)).to);let $=new IndentContext(e,{simulateBreak:d,simulateDoubleBreak:!!k}),j=getIndentation($,d);for(j==null&&(j=/^\s*/.exec(e.doc.lineAt(d).text)[0].length);_b.from&&d{let c=[];for(let _=a.from;_<=a.to;){let b=o.doc.lineAt(_);b.number>s&&(a.empty||a.to>b.from)&&(e(b,c,a),s=b.number),_=b.to+1}let d=o.changes(c);return{changes:c,range:EditorSelection.range(d.mapPos(a.anchor,1),d.mapPos(a.head,1))}})}const indentSelection=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=Object.create(null),a=new IndentContext(o,{overrideIndentation:d=>{let _=s[d];return _==null?-1:_}}),c=changeBySelectedLine(o,(d,_,b)=>{let k=getIndentation(a,d.from);if(k==null)return;/\S/.test(d.text)||(k=0);let $=/^\s*/.exec(d.text)[0],j=indentString(o,k);($!=j||b.fromo.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{a.push({from:s.from,insert:o.facet(indentUnit)})}),{userEvent:"input.indent"})),!0),indentLess=({state:o,dispatch:e})=>o.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{let c=/^\s*/.exec(s.text)[0];if(!c)return;let d=countColumn(c,o.tabSize),_=0,b=indentString(o,Math.max(0,d-getIndentUnit(o)));for(;_({mac:o.key,run:o.run,shift:o.shift}))),defaultKeymap=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:"Alt-ArrowUp",run:moveLineUp},{key:"Shift-Alt-ArrowUp",run:copyLineUp},{key:"Alt-ArrowDown",run:moveLineDown},{key:"Shift-Alt-ArrowDown",run:copyLineDown},{key:"Escape",run:simplifySelection},{key:"Mod-Enter",run:insertBlankLine},{key:"Alt-l",mac:"Ctrl-l",run:selectLine},{key:"Mod-i",run:selectParentSyntax,preventDefault:!0},{key:"Mod-[",run:indentLess},{key:"Mod-]",run:indentMore},{key:"Mod-Alt-\\",run:indentSelection},{key:"Shift-Mod-k",run:deleteLine},{key:"Shift-Mod-\\",run:cursorMatchingBracket}].concat(standardKeymap),defaults={brackets:["(","[","{","'",'"'],before:")]}:;>"},closeBracketEffect=StateEffect.define({map(o,e){let s=e.mapPos(o,-1,MapMode.TrackAfter);return s==null?void 0:s}}),skipBracketEffect=StateEffect.define({map(o,e){return e.mapPos(o)}}),closedBracket=new class extends RangeValue{};closedBracket.startSide=1;closedBracket.endSide=-1;const bracketState=StateField.define({create(){return RangeSet.empty},update(o,e){if(e.selection){let s=e.state.doc.lineAt(e.selection.main.head).from,a=e.startState.doc.lineAt(e.startState.selection.main.head).from;s!=e.changes.mapPos(a,-1)&&(o=RangeSet.empty)}o=o.map(e.changes);for(let s of e.effects)s.is(closeBracketEffect)?o=o.update({add:[closedBracket.range(s.value,s.value+1)]}):s.is(skipBracketEffect)&&(o=o.update({filter:a=>a!=s.value}));return o}});function closeBrackets(){return[inputHandler,bracketState]}const definedClosing="()[]{}<>";function closing(o){for(let e=0;e{if((android?o.composing:o.compositionStarted)||o.state.readOnly)return!1;let c=o.state.selection.main;if(a.length>2||a.length==2&&codePointSize(codePointAt(a,0))==1||e!=c.from||s!=c.to)return!1;let d=insertBracket(o.state,a);return d?(o.dispatch(d),!0):!1}),deleteBracketPair=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let a=config(o,o.selection.main.head).brackets||defaults.brackets,c=null,d=o.changeByRange(_=>{if(_.empty){let b=prevChar(o.doc,_.head);for(let k of a)if(k==b&&nextChar(o.doc,_.head)==closing(codePointAt(k,0)))return{changes:{from:_.head-k.length,to:_.head+k.length},range:EditorSelection.cursor(_.head-k.length),userEvent:"delete.backward"}}return{range:c=_}});return c||e(o.update(d,{scrollIntoView:!0})),!c},closeBracketsKeymap=[{key:"Backspace",run:deleteBracketPair}];function insertBracket(o,e){let s=config(o,o.selection.main.head),a=s.brackets||defaults.brackets;for(let c of a){let d=closing(codePointAt(c,0));if(e==c)return d==c?handleSame(o,c,a.indexOf(c+c+c)>-1):handleOpen(o,c,d,s.before||defaults.before);if(e==d&&closedBracketAt(o,o.selection.main.from))return handleClose(o,c,d)}return null}function closedBracketAt(o,e){let s=!1;return o.field(bracketState).between(0,o.doc.length,a=>{a==e&&(s=!0)}),s}function nextChar(o,e){let s=o.sliceString(e,e+2);return s.slice(0,codePointSize(codePointAt(s,0)))}function prevChar(o,e){let s=o.sliceString(e-2,e);return codePointSize(codePointAt(s,0))==s.length?s:s.slice(1)}function handleOpen(o,e,s,a){let c=null,d=o.changeByRange(_=>{if(!_.empty)return{changes:[{insert:e,from:_.from},{insert:s,from:_.to}],effects:closeBracketEffect.of(_.to+e.length),range:EditorSelection.range(_.anchor+e.length,_.head+e.length)};let b=nextChar(o.doc,_.head);return!b||/\s/.test(b)||a.indexOf(b)>-1?{changes:{insert:e+s,from:_.head},effects:closeBracketEffect.of(_.head+e.length),range:EditorSelection.cursor(_.head+e.length)}:{range:c=_}});return c?null:o.update(d,{scrollIntoView:!0,userEvent:"input.type"})}function handleClose(o,e,s){let a=null,c=o.selection.ranges.map(d=>d.empty&&nextChar(o.doc,d.head)==s?EditorSelection.cursor(d.head+s.length):a=d);return a?null:o.update({selection:EditorSelection.create(c,o.selection.mainIndex),scrollIntoView:!0,effects:o.selection.ranges.map(({from:d})=>skipBracketEffect.of(d))})}function handleSame(o,e,s){let a=null,c=o.changeByRange(d=>{if(!d.empty)return{changes:[{insert:e,from:d.from},{insert:e,from:d.to}],effects:closeBracketEffect.of(d.to+e.length),range:EditorSelection.range(d.anchor+e.length,d.head+e.length)};let _=d.head,b=nextChar(o.doc,_);if(b==e){if(nodeStart(o,_))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(closedBracketAt(o,_)){let k=s&&o.sliceDoc(_,_+e.length*3)==e+e+e;return{range:EditorSelection.cursor(_+e.length*(k?3:1)),effects:skipBracketEffect.of(_)}}}else{if(s&&o.sliceDoc(_-2*e.length,_)==e+e&&nodeStart(o,_-2*e.length))return{changes:{insert:e+e+e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)};if(o.charCategorizer(_)(b)!=CharCategory.Word){let k=o.sliceDoc(_-1,_);if(k!=e&&o.charCategorizer(_)(k)!=CharCategory.Word&&!probablyInString(o,_,e))return{changes:{insert:e+e,from:_},effects:closeBracketEffect.of(_+e.length),range:EditorSelection.cursor(_+e.length)}}}return{range:a=d}});return a?null:o.update(c,{scrollIntoView:!0,userEvent:"input.type"})}function nodeStart(o,e){let s=syntaxTree(o).resolveInner(e+1);return s.parent&&s.from==e}function probablyInString(o,e,s){let a=syntaxTree(o).resolveInner(e,-1);for(let c=0;c<5;c++){if(o.sliceDoc(a.from,a.from+s.length)==s)return!0;let d=a.to==e&&a.parent;if(!d)break;a=d}return!1}const panelConfig=Facet.define({combine(o){let e,s;for(let a of o)e=e||a.topContainer,s=s||a.bottomContainer;return{topContainer:e,bottomContainer:s}}});function getPanel(o,e){let s=o.plugin(panelPlugin),a=s?s.specs.indexOf(e):-1;return a>-1?s.panels[a]:null}const panelPlugin=ViewPlugin.fromClass(class{constructor(o){this.input=o.state.facet(showPanel),this.specs=this.input.filter(s=>s),this.panels=this.specs.map(s=>s(o));let e=o.state.facet(panelConfig);this.top=new PanelGroup(o,!0,e.topContainer),this.bottom=new PanelGroup(o,!1,e.bottomContainer),this.top.sync(this.panels.filter(s=>s.top)),this.bottom.sync(this.panels.filter(s=>!s.top));for(let s of this.panels)s.dom.classList.add("cm-panel"),s.mount&&s.mount()}update(o){let e=o.state.facet(panelConfig);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new PanelGroup(o.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new PanelGroup(o.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let s=o.state.facet(showPanel);if(s!=this.input){let a=s.filter(k=>k),c=[],d=[],_=[],b=[];for(let k of a){let $=this.specs.indexOf(k),j;$<0?(j=k(o.view),b.push(j)):(j=this.panels[$],j.update&&j.update(o)),c.push(j),(j.top?d:_).push(j)}this.specs=a,this.panels=c,this.top.sync(d),this.bottom.sync(_);for(let k of b)k.dom.classList.add("cm-panel"),k.mount&&k.mount()}else for(let a of this.panels)a.update&&a.update(o)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:PluginField.scrollMargins.from(o=>({top:o.top.scrollMargin(),bottom:o.bottom.scrollMargin()}))});class PanelGroup{constructor(e,s,a){this.view=e,this.top=s,this.container=a,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let s of this.panels)s.destroy&&e.indexOf(s)<0&&s.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let s=this.container||this.view.dom;s.insertBefore(this.dom,this.top?s.firstChild:null)}let e=this.dom.firstChild;for(let s of this.panels)if(s.dom.parentNode==this.dom){for(;e!=s.dom;)e=rm(e);e=e.nextSibling}else this.dom.insertBefore(s.dom,e);for(;e;)e=rm(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function rm(o){let e=o.nextSibling;return o.remove(),e}const baseTheme$4=EditorView.baseTheme({".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"}}),showPanel=Facet.define({enables:[panelPlugin,baseTheme$4]});function crelt(){var o=arguments[0];typeof o=="string"&&(o=document.createElement(o));var e=1,s=arguments[1];if(s&&typeof s=="object"&&s.nodeType==null&&!Array.isArray(s)){for(var a in s)if(Object.prototype.hasOwnProperty.call(s,a)){var c=s[a];typeof c=="string"?o.setAttribute(a,c):c!=null&&(o[a]=c)}e++}for(;eo.normalize("NFKD"):o=>o;class SearchCursor{constructor(e,s,a=0,c=e.length,d){this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(a,c),this.bufferStart=a,this.normalize=d?_=>d(basicNormalize(_)):basicNormalize,this.query=this.normalize(s)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let s=fromCodePoint(e),a=this.bufferStart+this.bufferPos;this.bufferPos+=codePointSize(e);let c=this.normalize(s);for(let d=0,_=a;;d++){let b=c.charCodeAt(d),k=this.match(b,_);if(k)return this.value=k,this;if(d==c.length-1)break;_==a&&dthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let s=this.matchPos<=this.to&&this.re.exec(this.curLine);if(s){let a=this.curLineStart+s.index,c=a+s[0].length;if(this.matchPos=c+(a==c?1:0),a==this.curLine.length&&this.nextLine(),athis.value.to)return this.value={from:a,to:c,match:s},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=a||c.to<=s){let b=new FlattenedDoc(s,e.sliceString(s,a));return flattened.set(e,b),b}if(c.from==s&&c.to==a)return c;let{text:d,from:_}=c;return _>s&&(d=e.sliceString(s,_)+d,_=s),c.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,s=this.re.exec(this.flat.text);if(s&&!s[0]&&s.index==e&&(this.re.lastIndex=e+1,s=this.re.exec(this.flat.text)),s&&this.flat.tothis.flat.text.length-10&&(s=null),s){let a=this.flat.from+s.index,c=a+s[0].length;return this.value={from:a,to:c,match:s},this.matchPos=c+(a==c?1:0),this}else{if(this.flat.to==this.to)return this.done=!0,this;this.flat=FlattenedDoc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}}typeof Symbol!="undefined"&&(RegExpCursor.prototype[Symbol.iterator]=MultilineRegExpCursor.prototype[Symbol.iterator]=function(){return this});function validRegExp(o){try{return new RegExp(o,baseFlags),!0}catch{return!1}}function createLineDialog(o){let e=crelt("input",{class:"cm-textfield",name:"line"}),s=crelt("form",{class:"cm-gotoLine",onkeydown:c=>{c.keyCode==27?(c.preventDefault(),o.dispatch({effects:dialogEffect.of(!1)}),o.focus()):c.keyCode==13&&(c.preventDefault(),a())},onsubmit:c=>{c.preventDefault(),a()}},crelt("label",o.state.phrase("Go to line"),": ",e)," ",crelt("button",{class:"cm-button",type:"submit"},o.state.phrase("go")));function a(){let c=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!c)return;let{state:d}=o,_=d.doc.lineAt(d.selection.main.head),[,b,k,$,j]=c,_e=$?+$.slice(1):0,et=k?+k:_.number;if(k&&j){let nt=et/100;b&&(nt=nt*(b=="-"?-1:1)+_.number/d.doc.lines),et=Math.round(d.doc.lines*nt)}else k&&b&&(et=et*(b=="-"?-1:1)+_.number);let tt=d.doc.line(Math.max(1,Math.min(d.doc.lines,et)));o.dispatch({effects:dialogEffect.of(!1),selection:EditorSelection.cursor(tt.from+Math.max(0,Math.min(_e,tt.length))),scrollIntoView:!0}),o.focus()}return{dom:s,pos:-10}}const dialogEffect=StateEffect.define(),dialogField=StateField.define({create(){return!0},update(o,e){for(let s of e.effects)s.is(dialogEffect)&&(o=s.value);return o},provide:o=>showPanel.from(o,e=>e?createLineDialog:null)}),gotoLine=o=>{let e=getPanel(o,createLineDialog);if(!e){let s=[dialogEffect.of(!0)];o.state.field(dialogField,!1)==null&&s.push(StateEffect.appendConfig.of([dialogField,baseTheme$1$1])),o.dispatch({effects:s}),e=getPanel(o,createLineDialog)}return e&&e.dom.querySelector("input").focus(),!0},baseTheme$1$1=EditorView.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),defaultHighlightOptions={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!0},highlightConfig=Facet.define({combine(o){return combineConfig(o,defaultHighlightOptions,{highlightWordAroundCursor:(e,s)=>e||s,minSelectionLength:Math.min,maxMatches:Math.min})}});function highlightSelectionMatches(o){let e=[defaultTheme,matchHighlighter];return o&&e.push(highlightConfig.of(o)),e}const matchDeco=Decoration.mark({class:"cm-selectionMatch"}),mainMatchDeco=Decoration.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function insideWordBoundaries(o,e,s,a){return(s==0||o(e.sliceDoc(s-1,s))!=CharCategory.Word)&&(a==e.doc.length||o(e.sliceDoc(a,a+1))!=CharCategory.Word)}function insideWord(o,e,s,a){return o(e.sliceDoc(s,s+1))==CharCategory.Word&&o(e.sliceDoc(a-1,a))==CharCategory.Word}const matchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.selectionSet||o.docChanged||o.viewportChanged)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=o.state.facet(highlightConfig),{state:s}=o,a=s.selection;if(a.ranges.length>1)return Decoration.none;let c=a.main,d,_=null;if(c.empty){if(!e.highlightWordAroundCursor)return Decoration.none;let k=s.wordAt(c.head);if(!k)return Decoration.none;_=s.charCategorizer(c.head),d=s.sliceDoc(k.from,k.to)}else{let k=c.to-c.from;if(k200)return Decoration.none;if(e.wholeWords){if(d=s.sliceDoc(c.from,c.to),_=s.charCategorizer(c.head),!(insideWordBoundaries(_,s,c.from,c.to)&&insideWord(_,s,c.from,c.to)))return Decoration.none}else if(d=s.sliceDoc(c.from,c.to).trim(),!d)return Decoration.none}let b=[];for(let k of o.visibleRanges){let $=new SearchCursor(s.doc,d,k.from,k.to);for(;!$.next().done;){let{from:j,to:_e}=$.value;if((!_||insideWordBoundaries(_,s,j,_e))&&(c.empty&&j<=c.from&&_e>=c.to?b.push(mainMatchDeco.range(j,_e)):(j>=c.to||_e<=c.from)&&b.push(matchDeco.range(j,_e)),b.length>e.maxMatches))return Decoration.none}}return Decoration.set(b)}},{decorations:o=>o.decorations}),defaultTheme=EditorView.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),selectWord=({state:o,dispatch:e})=>{let{selection:s}=o,a=EditorSelection.create(s.ranges.map(c=>o.wordAt(c.head)||EditorSelection.cursor(c.head)),s.mainIndex);return a.eq(s)?!1:(e(o.update({selection:a})),!0)};function findNextOccurrence(o,e){let{main:s,ranges:a}=o.selection,c=o.wordAt(s.head),d=c&&c.from==s.from&&c.to==s.to;for(let _=!1,b=new SearchCursor(o.doc,e,a[a.length-1].to);;)if(b.next(),b.done){if(_)return null;b=new SearchCursor(o.doc,e,0,Math.max(0,a[a.length-1].from-1)),_=!0}else{if(_&&a.some(k=>k.from==b.value.from))continue;if(d){let k=o.wordAt(b.value.from);if(!k||k.from!=b.value.from||k.to!=b.value.to)continue}return b.value}}const selectNextOccurrence=({state:o,dispatch:e})=>{let{ranges:s}=o.selection;if(s.some(d=>d.from===d.to))return selectWord({state:o,dispatch:e});let a=o.sliceDoc(s[0].from,s[0].to);if(o.selection.ranges.some(d=>o.sliceDoc(d.from,d.to)!=a))return!1;let c=findNextOccurrence(o,a);return c?(e(o.update({selection:o.selection.addRange(EditorSelection.range(c.from,c.to),!1),effects:EditorView.scrollIntoView(c.to)})),!0):!1},searchConfigFacet=Facet.define({combine(o){var e;return{top:o.reduce((s,a)=>s!=null?s:a.top,void 0)||!1,caseSensitive:o.reduce((s,a)=>s!=null?s:a.caseSensitive||a.matchCase,void 0)||!1,createPanel:((e=o.find(s=>s.createPanel))===null||e===void 0?void 0:e.createPanel)||(s=>new SearchPanel(s))}}});class SearchQuery{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||validRegExp(this.search)),this.unquoted=this.search.replace(/\\([nrt\\])/g,(s,a)=>a=="n"?` +`:a=="r"?"\r":a=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp}create(){return this.regexp?new RegExpQuery(this):new StringQuery(this)}getCursor(e,s=0,a=e.length){return this.regexp?regexpCursor(this,e,s,a):stringCursor(this,e,s,a)}}class QueryType{constructor(e){this.spec=e}}function stringCursor(o,e,s,a){return new SearchCursor(e,o.unquoted,s,a,o.caseSensitive?void 0:c=>c.toLowerCase())}class StringQuery extends QueryType{constructor(e){super(e)}nextMatch(e,s,a){let c=stringCursor(this.spec,e,a,e.length).nextOverlapping();return c.done&&(c=stringCursor(this.spec,e,0,s).nextOverlapping()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=a;;){let d=Math.max(s,c-1e4-this.spec.unquoted.length),_=stringCursor(this.spec,e,d,c),b=null;for(;!_.nextOverlapping().done;)b=_.value;if(b)return b;if(d==s)return null;c-=1e4}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace}matchAll(e,s){let a=stringCursor(this.spec,e,0,e.length),c=[];for(;!a.next().done;){if(c.length>=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let d=stringCursor(this.spec,e,Math.max(0,s-this.spec.unquoted.length),Math.min(a+this.spec.unquoted.length,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}function regexpCursor(o,e,s,a){return new RegExpCursor(e,o.search,o.caseSensitive?void 0:{ignoreCase:!0},s,a)}class RegExpQuery extends QueryType{nextMatch(e,s,a){let c=regexpCursor(this.spec,e,a,e.length).next();return c.done&&(c=regexpCursor(this.spec,e,0,s).next()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=1;;c++){let d=Math.max(s,a-c*1e4),_=regexpCursor(this.spec,e,d,a),b=null;for(;!_.next().done;)b=_.value;if(b&&(d==s||b.from>d+10))return b;if(d==s)return null}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace.replace(/\$([$&\d+])/g,(s,a)=>a=="$"?"$":a=="&"?e.match[0]:a!="0"&&+a=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let d=regexpCursor(this.spec,e,Math.max(0,s-250),Math.min(a+250,e.length));for(;!d.next().done;)c(d.value.from,d.value.to)}}const setSearchQuery=StateEffect.define(),togglePanel$1=StateEffect.define(),searchState=StateField.define({create(o){return new SearchState(defaultQuery(o).create(),null)},update(o,e){for(let s of e.effects)s.is(setSearchQuery)?o=new SearchState(s.value.create(),o.panel):s.is(togglePanel$1)&&(o=new SearchState(o.query,s.value?createSearchPanel:null));return o},provide:o=>showPanel.from(o,e=>e.panel)});class SearchState{constructor(e,s){this.query=e,this.panel=s}}const matchMark=Decoration.mark({class:"cm-searchMatch"}),selectedMatchMark=Decoration.mark({class:"cm-searchMatch cm-searchMatch-selected"}),searchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=this.highlight(o.state.field(searchState))}update(o){let e=o.state.field(searchState);(e!=o.startState.field(searchState)||o.docChanged||o.selectionSet||o.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:o,panel:e}){if(!e||!o.spec.valid)return Decoration.none;let{view:s}=this,a=new RangeSetBuilder;for(let c=0,d=s.visibleRanges,_=d.length;c<_;c++){let{from:b,to:k}=d[c];for(;c<_-1&&k>d[c+1].from-2*250;)k=d[++c].to;o.highlight(s.state.doc,b,k,($,j)=>{let _e=s.state.selection.ranges.some(et=>et.from==$&&et.to==j);a.add($,j,_e?selectedMatchMark:matchMark)})}return a.finish()}},{decorations:o=>o.decorations});function searchCommand(o){return e=>{let s=e.state.field(searchState,!1);return s&&s.query.spec.valid?o(e,s):openSearchPanel(e)}}const findNext=searchCommand((o,{query:e})=>{let{from:s,to:a}=o.state.selection.main,c=e.nextMatch(o.state.doc,s,a);return!c||c.from==s&&c.to==a?!1:(o.dispatch({selection:{anchor:c.from,head:c.to},scrollIntoView:!0,effects:announceMatch(o,c),userEvent:"select.search"}),!0)}),findPrevious=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a,to:c}=s.selection.main,d=e.prevMatch(s.doc,a,c);return d?(o.dispatch({selection:{anchor:d.from,head:d.to},scrollIntoView:!0,effects:announceMatch(o,d),userEvent:"select.search"}),!0):!1}),selectMatches=searchCommand((o,{query:e})=>{let s=e.matchAll(o.state.doc,1e3);return!s||!s.length?!1:(o.dispatch({selection:EditorSelection.create(s.map(a=>EditorSelection.range(a.from,a.to))),userEvent:"select.search.matches"}),!0)}),selectSelectionMatches=({state:o,dispatch:e})=>{let s=o.selection;if(s.ranges.length>1||s.main.empty)return!1;let{from:a,to:c}=s.main,d=[],_=0;for(let b=new SearchCursor(o.doc,o.sliceDoc(a,c));!b.next().done;){if(d.length>1e3)return!1;b.value.from==a&&(_=d.length),d.push(EditorSelection.range(b.value.from,b.value.to))}return e(o.update({selection:EditorSelection.create(d,_),userEvent:"select.search.matches"})),!0},replaceNext=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a,to:c}=s.selection.main;if(s.readOnly)return!1;let d=e.nextMatch(s.doc,a,a);if(!d)return!1;let _=[],b,k;if(d.from==a&&d.to==c&&(k=s.toText(e.getReplacement(d)),_.push({from:d.from,to:d.to,insert:k}),d=e.nextMatch(s.doc,d.from,d.to)),d){let $=_.length==0||_[0].from>=d.to?0:d.to-d.from-k.length;b={anchor:d.from-$,head:d.to-$}}return o.dispatch({changes:_,selection:b,scrollIntoView:!!b,effects:d?announceMatch(o,d):void 0,userEvent:"input.replace"}),!0}),replaceAll=searchCommand((o,{query:e})=>{if(o.state.readOnly)return!1;let s=e.matchAll(o.state.doc,1e9).map(a=>{let{from:c,to:d}=a;return{from:c,to:d,insert:e.getReplacement(a)}});return s.length?(o.dispatch({changes:s,userEvent:"input.replace.all"}),!0):!1});function createSearchPanel(o){return o.state.facet(searchConfigFacet).createPanel(o)}function defaultQuery(o,e){var s;let a=o.selection.main,c=a.empty||a.to>a.from+100?"":o.sliceDoc(a.from,a.to),d=(s=e==null?void 0:e.caseSensitive)!==null&&s!==void 0?s:o.facet(searchConfigFacet).caseSensitive;return e&&!c?e:new SearchQuery({search:c.replace(/\n/g,"\\n"),caseSensitive:d})}const openSearchPanel=o=>{let e=o.state.field(searchState,!1);if(e&&e.panel){let s=getPanel(o,createSearchPanel);if(!s)return!1;let a=s.dom.querySelector("[name=search]");if(a!=o.root.activeElement){let c=defaultQuery(o.state,e.query.spec);c.valid&&o.dispatch({effects:setSearchQuery.of(c)}),a.focus(),a.select()}}else o.dispatch({effects:[togglePanel$1.of(!0),e?setSearchQuery.of(defaultQuery(o.state,e.query.spec)):StateEffect.appendConfig.of(searchExtensions)]});return!0},closeSearchPanel=o=>{let e=o.state.field(searchState,!1);if(!e||!e.panel)return!1;let s=getPanel(o,createSearchPanel);return s&&s.dom.contains(o.root.activeElement)&&o.focus(),o.dispatch({effects:togglePanel$1.of(!1)}),!0},searchKeymap=[{key:"Mod-f",run:openSearchPanel,scope:"editor search-panel"},{key:"F3",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:closeSearchPanel,scope:"editor search-panel"},{key:"Mod-Shift-l",run:selectSelectionMatches},{key:"Alt-g",run:gotoLine},{key:"Mod-d",run:selectNextOccurrence,preventDefault:!0}];class SearchPanel{constructor(e){this.view=e;let s=this.query=e.state.field(searchState).query.spec;this.commit=this.commit.bind(this),this.searchField=crelt("input",{value:s.search,placeholder:phrase(e,"Find"),"aria-label":phrase(e,"Find"),class:"cm-textfield",name:"search",onchange:this.commit,onkeyup:this.commit}),this.replaceField=crelt("input",{value:s.replace,placeholder:phrase(e,"Replace"),"aria-label":phrase(e,"Replace"),class:"cm-textfield",name:"replace",onchange:this.commit,onkeyup:this.commit}),this.caseField=crelt("input",{type:"checkbox",name:"case",checked:s.caseSensitive,onchange:this.commit}),this.reField=crelt("input",{type:"checkbox",name:"re",checked:s.regexp,onchange:this.commit});function a(c,d,_){return crelt("button",{class:"cm-button",name:c,onclick:d,type:"button"},_)}this.dom=crelt("div",{onkeydown:c=>this.keydown(c),class:"cm-search"},[this.searchField,a("next",()=>findNext(e),[phrase(e,"next")]),a("prev",()=>findPrevious(e),[phrase(e,"previous")]),a("select",()=>selectMatches(e),[phrase(e,"all")]),crelt("label",null,[this.caseField,phrase(e,"match case")]),crelt("label",null,[this.reField,phrase(e,"regexp")]),...e.state.readOnly?[]:[crelt("br"),this.replaceField,a("replace",()=>replaceNext(e),[phrase(e,"replace")]),a("replaceAll",()=>replaceAll(e),[phrase(e,"replace all")]),crelt("button",{name:"close",onclick:()=>closeSearchPanel(e),"aria-label":phrase(e,"close"),type:"button"},["\xD7"])]])}commit(){let e=new SearchQuery({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:setSearchQuery.of(e)}))}keydown(e){runScopeHandlers(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?findPrevious:findNext)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),replaceNext(this.view))}update(e){for(let s of e.transactions)for(let a of s.effects)a.is(setSearchQuery)&&!a.value.eq(this.query)&&this.setQuery(a.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(searchConfigFacet).top}}function phrase(o,e){return o.state.phrase(e)}const AnnounceMargin=30,Break=/[\s\.,:;?!]/;function announceMatch(o,{from:e,to:s}){let a=o.state.doc.lineAt(e).from,c=o.state.doc.lineAt(s).to,d=Math.max(a,e-AnnounceMargin),_=Math.min(c,s+AnnounceMargin),b=o.state.sliceDoc(d,_);if(d!=a){for(let k=0;kb.length-AnnounceMargin;k--)if(!Break.test(b[k-1])&&Break.test(b[k])){b=b.slice(0,k);break}}return EditorView.announce.of(`${o.state.phrase("current match")}. ${b} ${o.state.phrase("on line")} ${o.state.doc.lineAt(e).number}`)}const baseTheme$3=EditorView.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),searchExtensions=[searchState,Prec.lowest(searchHighlighter),baseTheme$3],ios=typeof navigator!="undefined"&&!/Edge\/(\d+)/.exec(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor)&&(/Mobile\/\w+/.test(navigator.userAgent)||navigator.maxTouchPoints>2),Outside="-10000px";class TooltipViewManager{constructor(e,s,a){this.facet=s,this.createTooltipView=a,this.input=e.state.facet(s),this.tooltips=this.input.filter(c=>c),this.tooltipViews=this.tooltips.map(a)}update(e){let s=e.state.facet(this.facet),a=s.filter(d=>d);if(s===this.input){for(let d of this.tooltipViews)d.update&&d.update(e);return!1}let c=[];for(let d=0;d{var e,s,a;return{position:ios?"absolute":((e=o.find(c=>c.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((s=o.find(c=>c.parent))===null||s===void 0?void 0:s.parent)||null,tooltipSpace:((a=o.find(c=>c.tooltipSpace))===null||a===void 0?void 0:a.tooltipSpace)||windowSpace}}}),tooltipPlugin=ViewPlugin.fromClass(class{constructor(o){var e;this.view=o,this.inView=!0,this.lastTransaction=0,this.measureTimeout=-1;let s=o.state.facet(tooltipConfig);this.position=s.position,this.parent=s.parent,this.classes=o.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new TooltipViewManager(o,showTooltip,a=>this.createTooltip(a)),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(a=>{Date.now()>this.lastTransaction-50&&a.length>0&&a[a.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),(e=o.dom.ownerDocument.defaultView)===null||e===void 0||e.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let o of this.manager.tooltipViews)this.intersectionObserver.observe(o.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(o){o.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(o);e&&this.observeIntersection();let s=e||o.geometryChanged,a=o.state.facet(tooltipConfig);if(a.position!=this.position){this.position=a.position;for(let c of this.manager.tooltipViews)c.dom.style.position=this.position;s=!0}if(a.parent!=this.parent){this.parent&&this.container.remove(),this.parent=a.parent,this.createContainer();for(let c of this.manager.tooltipViews)this.container.appendChild(c.dom);s=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);s&&this.maybeMeasure()}createTooltip(o){let e=o.create(this.view);if(e.dom.classList.add("cm-tooltip"),o.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",e.dom.appendChild(s)}return e.dom.style.position=this.position,e.dom.style.top=Outside,this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var o,e;(o=this.view.dom.ownerDocument.defaultView)===null||o===void 0||o.removeEventListener("resize",this.measureSoon);for(let{dom:s}of this.manager.tooltipViews)s.remove();(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let o=this.view.dom.getBoundingClientRect();return{editor:o,parent:this.parent?this.container.getBoundingClientRect():o,pos:this.manager.tooltips.map((e,s)=>{let a=this.manager.tooltipViews[s];return a.getCoords?a.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(tooltipConfig).tooltipSpace(this.view)}}writeMeasure(o){let{editor:e,space:s}=o,a=[];for(let c=0;c=Math.min(e.bottom,s.bottom)||k.rightMath.min(e.right,s.right)+.1){b.style.top=Outside;continue}let j=d.arrow?_.dom.querySelector(".cm-tooltip-arrow"):null,_e=j?7:0,et=$.right-$.left,tt=$.bottom-$.top,nt=_.offset||noOffset,st=this.view.textDirection==Direction.LTR,rt=$.width>s.right-s.left?st?s.left:s.right-$.width:st?Math.min(k.left-(j?14:0)+nt.x,s.right-et):Math.max(s.left,k.left-et+(j?14:0)-nt.x),it=!!d.above;!d.strictSide&&(it?k.top-($.bottom-$.top)-nt.ys.bottom)&&it==s.bottom-k.bottom>k.top-s.top&&(it=!it);let at=it?k.top-tt-_e-nt.y:k.bottom+_e+nt.y,ot=rt+et;if(_.overlap!==!0)for(let ht of a)ht.leftrt&&ht.topat&&(at=it?ht.top-tt-2-_e:ht.bottom+_e+2);this.position=="absolute"?(b.style.top=at-o.parent.top+"px",b.style.left=rt-o.parent.left+"px"):(b.style.top=at+"px",b.style.left=rt+"px"),j&&(j.style.left=`${k.left+(st?nt.x:-nt.x)-(rt+14-7)}px`),_.overlap!==!0&&a.push({left:rt,top:at,right:ot,bottom:at+tt}),b.classList.toggle("cm-tooltip-above",it),b.classList.toggle("cm-tooltip-below",!it),_.positioned&&_.positioned()}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let o of this.manager.tooltipViews)o.dom.style.top=Outside}},{eventHandlers:{scroll(){this.maybeMeasure()}}}),baseTheme$2=EditorView.baseTheme({".cm-tooltip":{zIndex:100},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:`${7}px`,width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:`${7}px solid transparent`,borderRight:`${7}px solid transparent`},".cm-tooltip-above &":{bottom:`-${7}px`,"&:before":{borderTop:`${7}px solid #bbb`},"&:after":{borderTop:`${7}px solid #f5f5f5`,bottom:"1px"}},".cm-tooltip-below &":{top:`-${7}px`,"&:before":{borderBottom:`${7}px solid #bbb`},"&:after":{borderBottom:`${7}px solid #f5f5f5`,top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),noOffset={x:0,y:0},showTooltip=Facet.define({enables:[tooltipPlugin,baseTheme$2]}),showHoverTooltip=Facet.define();class HoverTooltipHost{constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new TooltipViewManager(e,showHoverTooltip,s=>this.createHostedView(s))}static create(e){return new HoverTooltipHost(e)}createHostedView(e){let s=e.create(this.view);return s.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(s.dom),this.mounted&&s.mount&&s.mount(this.view),s}mount(e){for(let s of this.manager.tooltipViews)s.mount&&s.mount(e);this.mounted=!0}positioned(){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned()}update(e){this.manager.update(e)}}const showHoverTooltipHost=showTooltip.compute([showHoverTooltip],o=>{let e=o.facet(showHoverTooltip).filter(s=>s);return e.length===0?null:{pos:Math.min(...e.map(s=>s.pos)),end:Math.max(...e.filter(s=>s.end!=null).map(s=>s.end)),create:HoverTooltipHost.create,above:e[0].above,arrow:e.some(s=>s.arrow)}});class HoverPlugin{constructor(e,s,a,c,d){this.view=e,this.source=s,this.field=a,this.setHover=c,this.hoverTime=d,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let e=Date.now()-this.lastMove.time;ec.bottom||s.xc.right+this.view.defaultCharacterWidth)return;let d=this.view.bidiSpans(this.view.state.doc.lineAt(a)).find(k=>k.from<=a&&k.to>=a),_=d&&d.dir==Direction.RTL?-1:1,b=this.source(this.view,a,s.x{this.pending==k&&(this.pending=null,$&&this.view.dispatch({effects:this.setHover.of($)}))},$=>logException(this.view.state,$,"hover tooltip"))}else b&&this.view.dispatch({effects:this.setHover.of(b)})}mousemove(e){var s;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let a=this.active;if(a&&!isInTooltip(this.lastMove.target)||this.pending){let{pos:c}=a||this.pending,d=(s=a==null?void 0:a.end)!==null&&s!==void 0?s:c;(c==d?this.view.posAtCoords(this.lastMove)!=c:!isOverRange(this.view,c,d,e.clientX,e.clientY,6))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1,this.active&&this.view.dispatch({effects:this.setHover.of(null)})}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}function isInTooltip(o){for(let e=o;e;e=e.parentNode)if(e.nodeType==1&&e.classList.contains("cm-tooltip"))return!0;return!1}function isOverRange(o,e,s,a,c,d){let _=document.createRange(),b=o.domAtPos(e),k=o.domAtPos(s);_.setEnd(k.node,k.offset),_.setStart(b.node,b.offset);let $=_.getClientRects();_.detach();for(let j=0;j<$.length;j++){let _e=$[j];if(Math.max(_e.top-c,c-_e.bottom,_e.left-a,a-_e.right)<=d)return!0}return!1}function hoverTooltip(o,e={}){let s=StateEffect.define(),a=StateField.define({create(){return null},update(c,d){if(c&&e.hideOnChange&&(d.docChanged||d.selection))return null;for(let _ of d.effects){if(_.is(s))return _.value;if(_.is(closeHoverTooltipEffect))return null}if(c&&d.docChanged){let _=d.changes.mapPos(c.pos,-1,MapMode.TrackDel);if(_==null)return null;let b=Object.assign(Object.create(null),c);return b.pos=_,c.end!=null&&(b.end=d.changes.mapPos(c.end)),b}return c},provide:c=>showHoverTooltip.from(c)});return[a,ViewPlugin.define(c=>new HoverPlugin(c,o,a,s,e.hoverTime||300)),showHoverTooltipHost]}function getTooltip(o,e){let s=o.plugin(tooltipPlugin);if(!s)return null;let a=s.manager.tooltips.indexOf(e);return a<0?null:s.manager.tooltipViews[a]}const closeHoverTooltipEffect=StateEffect.define();class CompletionContext{constructor(e,s,a){this.state=e,this.pos=s,this.explicit=a,this.abortListeners=[]}tokenBefore(e){let s=syntaxTree(this.state).resolveInner(this.pos,-1);for(;s&&e.indexOf(s.name)<0;)s=s.parent;return s?{from:s.from,to:this.pos,text:this.state.sliceDoc(s.from,this.pos),type:s.type}:null}matchBefore(e){let s=this.state.doc.lineAt(this.pos),a=Math.max(s.from,this.pos-250),c=s.text.slice(a-s.from,this.pos-s.from),d=c.search(ensureAnchor(e,!1));return d<0?null:{from:a+d,to:this.pos,text:c.slice(d)}}get aborted(){return this.abortListeners==null}addEventListener(e,s){e=="abort"&&this.abortListeners&&this.abortListeners.push(s)}}function toSet(o){let e=Object.keys(o).join(""),s=/\w/.test(e);return s&&(e=e.replace(/\w/g,"")),`[${s?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function prefixMatch(o){let e=Object.create(null),s=Object.create(null);for(let{label:c}of o){e[c[0]]=!0;for(let d=1;dtypeof c=="string"?{label:c}:c),[s,a]=e.every(c=>/^\w+$/.test(c.label))?[/\w*$/,/\w+$/]:prefixMatch(e);return c=>{let d=c.matchBefore(a);return d||c.explicit?{from:d?d.from:c.pos,options:e,span:s}:null}}function ifNotIn(o,e){return s=>{for(let a=syntaxTree(s.state).resolveInner(s.pos,-1);a;a=a.parent)if(o.indexOf(a.name)>-1)return null;return e(s)}}class Option{constructor(e,s,a){this.completion=e,this.source=s,this.match=a}}function cur(o){return o.selection.main.head}function ensureAnchor(o,e){var s;let{source:a}=o,c=e&&a[0]!="^",d=a[a.length-1]!="$";return!c&&!d?o:new RegExp(`${c?"^":""}(?:${a})${d?"$":""}`,(s=o.flags)!==null&&s!==void 0?s:o.ignoreCase?"i":"")}const pickedCompletion=Annotation.define();function applyCompletion(o,e){let s=e.completion.apply||e.completion.label,a=e.source;typeof s=="string"?o.dispatch({changes:{from:a.from,to:a.to,insert:s},selection:{anchor:a.from+s.length},userEvent:"input.complete",annotations:pickedCompletion.of(e.completion)}):s(o,e.completion,a.from,a.to)}const SourceCache=new WeakMap;function asSource(o){if(!Array.isArray(o))return o;let e=SourceCache.get(o);return e||SourceCache.set(o,e=completeFromList(o)),e}class FuzzyMatcher{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[];for(let s=0;s=48&&ct<=57||ct>=97&&ct<=122?2:ct>=65&&ct<=90?1:0:(lt=fromCodePoint(ct))!=lt.toLowerCase()?1:lt!=lt.toUpperCase()?2:0;(!at||ut==1&&rt||ht==0&&ut!=0)&&(s[_e]==ct||a[_e]==ct&&(et=!0)?_[_e++]=at:_.length&&(it=!1)),ht=ut,at+=codePointSize(ct)}return _e==k&&_[0]==0&&it?this.result(-100+(et?-200:0),_,e):tt==k&&nt==0?[-200-e.length,0,st]:b>-1?[-700-e.length,b,b+this.pattern.length]:tt==k?[-200+-700-e.length,nt,st]:_e==k?this.result(-100+(et?-200:0)+-700+(it?0:-1100),_,e):s.length==2?null:this.result((c[0]?-700:0)+-200+-1100,c,e)}result(e,s,a){let c=[e-a.length],d=1;for(let _ of s){let b=_+(this.astral?codePointSize(codePointAt(a,_)):1);d>1&&c[d-1]==_?c[d-1]=b:(c[d++]=_,c[d++]=b)}return c}}const completionConfig=Facet.define({combine(o){return combineConfig(o,{activateOnTyping:!0,override:null,maxRenderedOptions:100,defaultKeymap:!0,optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[]},{defaultKeymap:(e,s)=>e&&s,icons:(e,s)=>e&&s,optionClass:(e,s)=>a=>joinClass(e(a),s(a)),addToOptions:(e,s)=>e.concat(s)})}});function joinClass(o,e){return o?e?o+" "+e:o:e}function optionContent(o){let e=o.addToOptions.slice();return o.icons&&e.push({render(s){let a=document.createElement("div");return a.classList.add("cm-completionIcon"),s.type&&a.classList.add(...s.type.split(/\s+/g).map(c=>"cm-completionIcon-"+c)),a.setAttribute("aria-hidden","true"),a},position:20}),e.push({render(s,a,c){let d=document.createElement("span");d.className="cm-completionLabel";let{label:_}=s,b=0;for(let k=1;kb&&d.appendChild(document.createTextNode(_.slice(b,$)));let _e=d.appendChild(document.createElement("span"));_e.appendChild(document.createTextNode(_.slice($,j))),_e.className="cm-completionMatchedText",b=j}return b<_.length&&d.appendChild(document.createTextNode(_.slice(b))),d},position:50},{render(s){if(!s.detail)return null;let a=document.createElement("span");return a.className="cm-completionDetail",a.textContent=s.detail,a},position:80}),e.sort((s,a)=>s.position-a.position).map(s=>s.render)}function rangeAroundSelected(o,e,s){if(o<=s)return{from:0,to:o};if(e<=o>>1){let c=Math.floor(e/s);return{from:c*s,to:(c+1)*s}}let a=Math.floor((o-e)/s);return{from:o-(a+1)*s,to:o-a*s}}class CompletionTooltip{constructor(e,s){this.view=e,this.stateField=s,this.info=null,this.placeInfo={read:()=>this.measureInfo(),write:b=>this.positionInfo(b),key:this};let a=e.state.field(s),{options:c,selected:d}=a.open,_=e.state.facet(completionConfig);this.optionContent=optionContent(_),this.optionClass=_.optionClass,this.range=rangeAroundSelected(c.length,d,_.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.dom.addEventListener("mousedown",b=>{for(let k=b.target,$;k&&k!=this.dom;k=k.parentNode)if(k.nodeName=="LI"&&($=/-(\d+)$/.exec(k.id))&&+$[1]{this.info&&this.view.requestMeasure(this.placeInfo)})}mount(){this.updateSel()}update(e){e.state.field(this.stateField)!=e.startState.field(this.stateField)&&this.updateSel()}positioned(){this.info&&this.view.requestMeasure(this.placeInfo)}updateSel(){let e=this.view.state.field(this.stateField),s=e.open;if((s.selected=this.range.to)&&(this.range=rangeAroundSelected(s.options.length,s.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.list.remove(),this.list=this.dom.appendChild(this.createListBox(s.options,e.id,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfo)})),this.updateSelectedOption(s.selected)){this.info&&(this.info.remove(),this.info=null);let{completion:a}=s.options[s.selected],{info:c}=a;if(!c)return;let d=typeof c=="string"?document.createTextNode(c):c(a);if(!d)return;"then"in d?d.then(_=>{_&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(_)}).catch(_=>logException(this.view.state,_,"completion info")):this.addInfoPane(d)}}addInfoPane(e){let s=this.info=document.createElement("div");s.className="cm-tooltip cm-completionInfo",s.appendChild(e),this.dom.appendChild(s),this.view.requestMeasure(this.placeInfo)}updateSelectedOption(e){let s=null;for(let a=this.list.firstChild,c=this.range.from;a;a=a.nextSibling,c++)c==e?a.hasAttribute("aria-selected")||(a.setAttribute("aria-selected","true"),s=a):a.hasAttribute("aria-selected")&&a.removeAttribute("aria-selected");return s&&scrollIntoView(this.list,s),s}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let s=this.dom.getBoundingClientRect(),a=this.info.getBoundingClientRect(),c=e.getBoundingClientRect();if(c.top>Math.min(innerHeight,s.bottom)-10||c.bottomnew CompletionTooltip(e,o)}function scrollIntoView(o,e){let s=o.getBoundingClientRect(),a=e.getBoundingClientRect();a.tops.bottom&&(o.scrollTop+=a.bottom-s.bottom)}const MaxOptions=300;function score(o){return(o.boost||0)*100+(o.apply?10:0)+(o.info?5:0)+(o.type?1:0)}function sortOptions(o,e){let s=[],a=0;for(let _ of o)if(_.hasResult())if(_.result.filter===!1)for(let b of _.result.options)s.push(new Option(b,_,[1e9-a++]));else{let b=new FuzzyMatcher(e.sliceDoc(_.from,_.to)),k;for(let $ of _.result.options)(k=b.match($.label))&&($.boost!=null&&(k[0]+=$.boost),s.push(new Option($,_,k)))}let c=[],d=null;for(let _ of s.sort(cmpOption)){if(c.length==MaxOptions)break;!d||d.label!=_.completion.label||d.detail!=_.completion.detail||d.type!=_.completion.type||d.apply!=_.completion.apply?c.push(_):score(_.completion)>score(d)&&(c[c.length-1]=_),d=_.completion}return c}class CompletionDialog{constructor(e,s,a,c,d){this.options=e,this.attrs=s,this.tooltip=a,this.timestamp=c,this.selected=d}setSelected(e,s){return e==this.selected||e>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(s,e),this.tooltip,this.timestamp,e)}static build(e,s,a,c,d){let _=sortOptions(e,s);if(!_.length)return null;let b=0;if(c&&c.selected){let k=c.options[c.selected].completion;for(let $=0;$<_.length;$++)if(_[$].completion==k){b=$;break}}return new CompletionDialog(_,makeAttrs(a,b),{pos:e.reduce((k,$)=>$.hasResult()?Math.min(k,$.from):k,1e8),create:completionTooltip(completionState),above:d.aboveCursor},c?c.timestamp:Date.now(),b)}map(e){return new CompletionDialog(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected)}}class CompletionState{constructor(e,s,a){this.active=e,this.id=s,this.open=a}static start(){return new CompletionState(none,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:s}=e,a=s.facet(completionConfig),d=(a.override||s.languageDataAt("autocomplete",cur(s)).map(asSource)).map(b=>(this.active.find($=>$.source==b)||new ActiveSource(b,this.active.some($=>$.state!=0)?1:0)).update(e,a));d.length==this.active.length&&d.every((b,k)=>b==this.active[k])&&(d=this.active);let _=e.selection||d.some(b=>b.hasResult()&&e.changes.touchesRange(b.from,b.to))||!sameResults(d,this.active)?CompletionDialog.build(d,s,this.id,this.open,a):this.open&&e.docChanged?this.open.map(e.changes):this.open;!_&&d.every(b=>b.state!=1)&&d.some(b=>b.hasResult())&&(d=d.map(b=>b.hasResult()?new ActiveSource(b.source,0):b));for(let b of e.effects)b.is(setSelectedEffect)&&(_=_&&_.setSelected(b.value,this.id));return d==this.active&&_==this.open?this:new CompletionState(d,this.id,_)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:baseAttrs}}function sameResults(o,e){if(o==e)return!0;for(let s=0,a=0;;){for(;sd||s=="delete"&&cur(e.startState)==this.from)return new ActiveSource(this.source,s=="input"&&a.activateOnTyping?1:0);let b=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos);return this.span&&(c==d||this.span.test(e.state.sliceDoc(c,d)))?new ActiveResult(this.source,b,this.result,c,d,this.span):new ActiveSource(this.source,1,b)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty?this:new ActiveResult(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1),this.span)}}const startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),setActiveEffect=StateEffect.define({map(o,e){return o.map(s=>s.map(e))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(o,e){return o.update(e)},provide:o=>[showTooltip.from(o,e=>e.tooltip),EditorView.contentAttributes.from(o,e=>e.attrs)]}),CompletionInteractMargin=75;function moveCompletionSelection(o,e="option"){return s=>{let a=s.state.field(completionState,!1);if(!a||!a.open||Date.now()-a.open.timestamp=b&&(_=e=="page"?b-1:0),s.dispatch({effects:setSelectedEffect.of(_)}),!0}}const acceptCompletion=o=>{let e=o.state.field(completionState,!1);return o.state.readOnly||!e||!e.open||Date.now()-e.open.timestampo.state.field(completionState,!1)?(o.dispatch({effects:startCompletionEffect.of(!0)}),!0):!1,closeCompletion=o=>{let e=o.state.field(completionState,!1);return!e||!e.active.some(s=>s.state!=0)?!1:(o.dispatch({effects:closeCompletionEffect.of(null)}),!0)};class RunningQuery{constructor(e,s){this.active=e,this.context=s,this.time=Date.now(),this.updates=[],this.done=void 0}}const DebounceTime=50,MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.composing=0;for(let e of o.state.field(completionState).active)e.state==1&&this.startQuery(e)}update(o){let e=o.state.field(completionState);if(!o.selectionSet&&!o.docChanged&&o.startState.field(completionState)==e)return;let s=o.transactions.some(a=>(a.selection||a.docChanged)&&!getUserEvent(a));for(let a=0;aMaxUpdateCount&&Date.now()-c.time>MinAbortTime){for(let d of c.context.abortListeners)try{d()}catch(_){logException(this.view.state,_)}c.context.abortListeners=null,this.running.splice(a--,1)}else c.updates.push(...o.transactions)}if(this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),this.debounceUpdate=e.active.some(a=>a.state==1&&!this.running.some(c=>c.active.source==a.source))?setTimeout(()=>this.startUpdate(),DebounceTime):-1,this.composing!=0)for(let a of o.transactions)getUserEvent(a)=="input"?this.composing=2:this.composing==2&&a.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1;let{state:o}=this.view,e=o.field(completionState);for(let s of e.active)s.state==1&&!this.running.some(a=>a.active.source==s.source)&&this.startQuery(s)}startQuery(o){let{state:e}=this.view,s=cur(e),a=new CompletionContext(e,s,o.explicitPos==s),c=new RunningQuery(o,a);this.running.push(c),Promise.resolve(o.source(a)).then(d=>{c.context.aborted||(c.done=d||null,this.scheduleAccept())},d=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,d)})}scheduleAccept(){this.running.every(o=>o.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),DebounceTime))}accept(){var o;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],s=this.view.state.facet(completionConfig);for(let a=0;a_.source==c.active.source);if(d&&d.state==1)if(c.done==null){let _=new ActiveSource(c.active.source,0);for(let b of c.updates)_=_.update(b,s);_.state!=1&&e.push(_)}else this.startQuery(d)}e.length&&this.view.dispatch({effects:setActiveEffect.of(e)})}},{eventHandlers:{compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),baseTheme$1=EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",listStyle:"none",margin:0,padding:0,"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer",padding:"1px 3px",lineHeight:1.2}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"300px"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class FieldPos{constructor(e,s,a,c){this.field=e,this.line=s,this.from=a,this.to=c}}class FieldRange{constructor(e,s,a){this.field=e,this.from=s,this.to=a}map(e){let s=e.mapPos(this.from,-1,MapMode.TrackDel),a=e.mapPos(this.to,1,MapMode.TrackDel);return s==null||a==null?null:new FieldRange(this.field,s,a)}}class Snippet{constructor(e,s){this.lines=e,this.fieldPositions=s}instantiate(e,s){let a=[],c=[s],d=e.doc.lineAt(s),_=/^\s*/.exec(d.text)[0];for(let k of this.lines){if(a.length){let $=_,j=/^\t*/.exec(k)[0].length;for(let _e=0;_enew FieldRange(k.field,c[k.line]+k.from,c[k.line]+k.to));return{text:a,ranges:b}}static parse(e){let s=[],a=[],c=[],d;for(let _ of e.split(/\r\n?|\n/)){for(;d=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(_);){let b=d[1]?+d[1]:null,k=d[2]||d[3]||"",$=-1;for(let j=0;j=$&&_e.field++}c.push(new FieldPos($,a.length,d.index,d.index+k.length)),_=_.slice(0,d.index)+k+_.slice(d.index+d[0].length)}a.push(_)}return new Snippet(a,c)}}let fieldMarker=Decoration.widget({widget:new class extends WidgetType{toDOM(){let o=document.createElement("span");return o.className="cm-snippetFieldPosition",o}ignoreEvent(){return!1}}}),fieldRange=Decoration.mark({class:"cm-snippetField"});class ActiveSnippet{constructor(e,s){this.ranges=e,this.active=s,this.deco=Decoration.set(e.map(a=>(a.from==a.to?fieldMarker:fieldRange).range(a.from,a.to)))}map(e){let s=[];for(let a of this.ranges){let c=a.map(e);if(!c)return null;s.push(c)}return new ActiveSnippet(s,this.active)}selectionInsideField(e){return e.ranges.every(s=>this.ranges.some(a=>a.field==this.active&&a.from<=s.from&&a.to>=s.to))}}const setActive=StateEffect.define({map(o,e){return o&&o.map(e)}}),moveToField=StateEffect.define(),snippetState=StateField.define({create(){return null},update(o,e){for(let s of e.effects){if(s.is(setActive))return s.value;if(s.is(moveToField)&&o)return new ActiveSnippet(o.ranges,s.value)}return o&&e.docChanged&&(o=o.map(e.changes)),o&&e.selection&&!o.selectionInsideField(e.selection)&&(o=null),o},provide:o=>EditorView.decorations.from(o,e=>e?e.deco:Decoration.none)});function fieldSelection(o,e){return EditorSelection.create(o.filter(s=>s.field==e).map(s=>EditorSelection.range(s.from,s.to)))}function snippet(o){let e=Snippet.parse(o);return(s,a,c,d)=>{let{text:_,ranges:b}=e.instantiate(s.state,c),k={changes:{from:c,to:d,insert:Text.of(_)}};if(b.length&&(k.selection=fieldSelection(b,0)),b.length>1){let $=new ActiveSnippet(b,0),j=k.effects=[setActive.of($)];s.state.field(snippetState,!1)===void 0&&j.push(StateEffect.appendConfig.of([snippetState,addSnippetKeymap,snippetPointerHandler,baseTheme$1]))}s.dispatch(s.state.update(k))}}function moveField(o){return({state:e,dispatch:s})=>{let a=e.field(snippetState,!1);if(!a||o<0&&a.active==0)return!1;let c=a.active+o,d=o>0&&!a.ranges.some(_=>_.field==c+o);return s(e.update({selection:fieldSelection(a.ranges,c),effects:setActive.of(d?null:new ActiveSnippet(a.ranges,c))})),!0}}const clearSnippet=({state:o,dispatch:e})=>o.field(snippetState,!1)?(e(o.update({effects:setActive.of(null)})),!0):!1,nextSnippetField=moveField(1),prevSnippetField=moveField(-1),defaultSnippetKeymap=[{key:"Tab",run:nextSnippetField,shift:prevSnippetField},{key:"Escape",run:clearSnippet}],snippetKeymap=Facet.define({combine(o){return o.length?o[0]:defaultSnippetKeymap}}),addSnippetKeymap=Prec.highest(keymap.compute([snippetKeymap],o=>o.facet(snippetKeymap)));function snippetCompletion(o,e){return Object.assign(Object.assign({},e),{apply:snippet(o)})}const snippetPointerHandler=EditorView.domEventHandlers({mousedown(o,e){let s=e.state.field(snippetState,!1),a;if(!s||(a=e.posAtCoords({x:o.clientX,y:o.clientY}))==null)return!1;let c=s.ranges.find(d=>d.from<=a&&d.to>=a);return!c||c.field==s.active?!1:(e.dispatch({selection:fieldSelection(s.ranges,c.field),effects:setActive.of(s.ranges.some(d=>d.field>c.field)?new ActiveSnippet(s.ranges,c.field):null)}),!0)}});function autocompletion(o={}){return[completionState,completionConfig.of(o),completionPlugin,completionKeymapExt,baseTheme$1]}const completionKeymap=[{key:"Ctrl-Space",run:startCompletion},{key:"Escape",run:closeCompletion},{key:"ArrowDown",run:moveCompletionSelection(!0)},{key:"ArrowUp",run:moveCompletionSelection(!1)},{key:"PageDown",run:moveCompletionSelection(!0,"page")},{key:"PageUp",run:moveCompletionSelection(!1,"page")},{key:"Enter",run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],o=>o.facet(completionConfig).defaultKeymap?[completionKeymap]:[])),toggleComment=o=>{let e=getConfig(o.state);return e.line?toggleLineComment(o):e.block?toggleBlockCommentByLine(o):!1};function command(o,e){return({state:s,dispatch:a})=>{if(s.readOnly)return!1;let c=o(e,s);return c?(a(s.update(c)),!0):!1}}const toggleLineComment=command(changeLineComment,0),toggleBlockComment=command(changeBlockComment,0),toggleBlockCommentByLine=command((o,e)=>changeBlockComment(o,e,selectedLineRanges(e)),0),commentKeymap=[{key:"Mod-/",run:toggleComment},{key:"Alt-A",run:toggleBlockComment}];function getConfig(o,e=o.selection.main.head){let s=o.languageDataAt("commentTokens",e);return s.length?s[0]:{}}const SearchMargin=50;function findBlockComment(o,{open:e,close:s},a,c){let d=o.sliceDoc(a-SearchMargin,a),_=o.sliceDoc(c,c+SearchMargin),b=/\s*$/.exec(d)[0].length,k=/^\s*/.exec(_)[0].length,$=d.length-b;if(d.slice($-e.length,$)==e&&_.slice(k,k+s.length)==s)return{open:{pos:a-b,margin:b&&1},close:{pos:c+k,margin:k&&1}};let j,_e;c-a<=2*SearchMargin?j=_e=o.sliceDoc(a,c):(j=o.sliceDoc(a,a+SearchMargin),_e=o.sliceDoc(c-SearchMargin,c));let et=/^\s*/.exec(j)[0].length,tt=/\s*$/.exec(_e)[0].length,nt=_e.length-tt-s.length;return j.slice(et,et+e.length)==e&&_e.slice(nt,nt+s.length)==s?{open:{pos:a+et+e.length,margin:/\s/.test(j.charAt(et+e.length))?1:0},close:{pos:c-tt-s.length,margin:/\s/.test(_e.charAt(nt-1))?1:0}}:null}function selectedLineRanges(o){let e=[];for(let s of o.selection.ranges){let a=o.doc.lineAt(s.from),c=s.to<=a.to?a:o.doc.lineAt(s.to),d=e.length-1;d>=0&&e[d].to>a.from?e[d].to=c.to:e.push({from:a.from,to:c.to})}return e}function changeBlockComment(o,e,s=e.selection.ranges){let a=s.map(d=>getConfig(e,d.from).block);if(!a.every(d=>d))return null;let c=s.map((d,_)=>findBlockComment(e,a[_],d.from,d.to));if(o!=2&&!c.every(d=>d))return{changes:e.changes(s.map((d,_)=>c[_]?[]:[{from:d.from,insert:a[_].open+" "},{from:d.to,insert:" "+a[_].close}]))};if(o!=1&&c.some(d=>d)){let d=[];for(let _=0,b;_c&&(d==_||_>j.from)){c=j.from;let _e=getConfig(e,$).line;if(!_e)continue;let et=/^\s*/.exec(j.text)[0].length,tt=et==j.length,nt=j.text.slice(et,et+_e.length)==_e?et:-1;etd.comment<0&&(!d.empty||d.single))){let d=[];for(let{line:b,token:k,indent:$,empty:j,single:_e}of a)(_e||!j)&&d.push({from:b.from+$,insert:k+" "});let _=e.changes(d);return{changes:_,selection:e.selection.map(_,1)}}else if(o!=1&&a.some(d=>d.comment>=0)){let d=[];for(let{line:_,comment:b,token:k}of a)if(b>=0){let $=_.from+b,j=$+k.length;_.text[j-_.from]==" "&&j++,d.push({from:$,to:j})}return{changes:d}}return null}const MaxOff=2e3;function rectangleFor(o,e,s){let a=Math.min(e.line,s.line),c=Math.max(e.line,s.line),d=[];if(e.off>MaxOff||s.off>MaxOff||e.col<0||s.col<0){let _=Math.min(e.off,s.off),b=Math.max(e.off,s.off);for(let k=a;k<=c;k++){let $=o.doc.line(k);$.length<=b&&d.push(EditorSelection.range($.from+_,$.to+b))}}else{let _=Math.min(e.col,s.col),b=Math.max(e.col,s.col);for(let k=a;k<=c;k++){let $=o.doc.line(k),j=findColumn($.text,_,o.tabSize,!0);if(j>-1){let _e=findColumn($.text,b,o.tabSize);d.push(EditorSelection.range($.from+j,$.from+_e))}}}return d}function absoluteColumn(o,e){let s=o.coordsAtPos(o.viewport.from);return s?Math.round(Math.abs((s.left-e)/o.defaultCharacterWidth)):-1}function getPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1),a=o.state.doc.lineAt(s),c=s-a.from,d=c>MaxOff?-1:c==a.length?absoluteColumn(o,e.clientX):countColumn(a.text,o.state.tabSize,s-a.from);return{line:a.number,col:d,off:c}}function rectangleSelectionStyle(o,e){let s=getPos(o,e),a=o.state.selection;return s?{update(c){if(c.docChanged){let d=c.changes.mapPos(c.startState.doc.line(s.line).from),_=c.state.doc.lineAt(d);s={line:_.number,col:s.col,off:Math.min(s.off,_.length)},a=a.map(c.changes)}},get(c,d,_){let b=getPos(o,c);if(!b)return a;let k=rectangleFor(o.state,s,b);return k.length?_?EditorSelection.create(k.concat(a.ranges)):EditorSelection.create(k):a}}:null}function rectangularSelection(o){let e=(o==null?void 0:o.eventFilter)||(s=>s.altKey&&s.button==0);return EditorView.mouseSelectionStyle.of((s,a)=>e(a)?rectangleSelectionStyle(s,a):null)}let nextTagID=0;class Tag{constructor(e,s,a){this.set=e,this.base=s,this.modified=a,this.id=nextTagID++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let s=new Tag([],null,[]);if(s.set.push(s),e)for(let a of e.set)s.set.push(a);return s}static defineModifier(){let e=new Modifier;return s=>s.modified.indexOf(e)>-1?s:Modifier.get(s.base||s,s.modified.concat(e).sort((a,c)=>a.id-c.id))}}let nextModifierID=0;class Modifier{constructor(){this.instances=[],this.id=nextModifierID++}static get(e,s){if(!s.length)return e;let a=s[0].instances.find(b=>b.base==e&&sameArray(s,b.modified));if(a)return a;let c=[],d=new Tag(c,e,s);for(let b of s)b.instances.push(d);let _=permute(s);for(let b of e.set)for(let k of _)c.push(Modifier.get(b,k));return d}}function sameArray(o,e){return o.length==e.length&&o.every((s,a)=>s==e[a])}function permute(o){let e=[o];for(let s=0;s0&&_e+3==c.length){_=1;break}let et=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(b);if(!et)throw new RangeError("Invalid path: "+c);if(d.push(et[0]=="*"?null:et[0][0]=='"'?JSON.parse(et[0]):et[0]),_e+=et[0].length,_e==c.length)break;let tt=c[_e++];if(_e==c.length&&tt=="!"){_=0;break}if(tt!="/")throw new RangeError("Invalid path: "+c);b=c.slice(_e)}let k=d.length-1,$=d[k];if(!$)throw new RangeError("Invalid path: "+c);let j=new Rule(a,_,k>0?d.slice(0,k):null);e[$]=j.sort(e[$])}}return ruleNodeProp.add(e)}const ruleNodeProp=new NodeProp,highlightStyle=Facet.define({combine(o){return o.length?HighlightStyle.combinedMatch(o):null}}),fallbackHighlightStyle=Facet.define({combine(o){return o.length?o[0].match:null}});function getHighlightStyle(o){return o.facet(highlightStyle)||o.facet(fallbackHighlightStyle)}class Rule{constructor(e,s,a,c){this.tags=e,this.mode=s,this.context=a,this.next=c}sort(e){return!e||e.depth_.facet(EditorView.darkTheme)==(s.themeType=="dark")?[this]:[])),this.fallback=d.concat(fallbackHighlightStyle.of(this))}match(e,s){if(this.scope&&s!=this.scope)return null;for(let a of e.set){let c=this.map[a.id];if(c!==void 0)return a!=e&&(this.map[e.id]=c),c}return this.map[e.id]=this.all}static combinedMatch(e){if(e.length==1)return e[0].match;let s=e.some(a=>a.scope)?void 0:Object.create(null);return(a,c)=>{let d=s&&s[a.id];if(d!==void 0)return d;let _=null;for(let b of e){let k=b.match(a,c);k&&(_=_?_+" "+k:k)}return s&&(s[a.id]=_),_}}static define(e,s){return new HighlightStyle(e,s||{})}static get(e,s,a){let c=getHighlightStyle(e);return c&&c(s,a||NodeType.none)}}class TreeHighlighter{constructor(e){this.markCache=Object.create(null),this.tree=syntaxTree(e.state),this.decorations=this.buildDeco(e,getHighlightStyle(e.state))}update(e){let s=syntaxTree(e.state),a=getHighlightStyle(e.state),c=a!=e.startState.facet(highlightStyle);s.length{a.add(_,b,this.markCache[k]||(this.markCache[k]=Decoration.mark({class:k})))});return a.finish()}}const treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:o=>o.decorations})),nodeStack=[""];class HighlightBuilder{constructor(e,s,a){this.at=e,this.style=s,this.span=a,this.class=""}startSpan(e,s){s!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=s)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,s,a,c,d,_){let{type:b,from:k,to:$}=e;if(k>=a||$<=s)return;nodeStack[d]=b.name,b.isTop&&(_=b);let j=c,_e=b.prop(ruleNodeProp),et=!1;for(;_e;){if(!_e.context||matchContext(_e.context,nodeStack,d)){for(let nt of _e.tags){let st=this.style(nt,_);st&&(j&&(j+=" "),j+=st,_e.mode==1?c+=(c?" ":"")+st:_e.mode==0&&(et=!0))}break}_e=_e.next}if(this.startSpan(e.from,j),et)return;let tt=e.tree&&e.tree.prop(NodeProp.mounted);if(tt&&tt.overlay){let nt=e.node.enter(tt.overlay[0].from+k,1),st=e.firstChild();for(let rt=0,it=k;;rt++){let at=rt=ot||!e.nextSibling())););if(!at||ot>a)break;it=at.to+k,it>s&&(this.highlightRange(nt.cursor,Math.max(s,at.from+k),Math.min(a,it),c,d,tt.tree.type),this.startSpan(it,j))}st&&e.parent()}else if(e.firstChild()){do if(!(e.to<=s)){if(e.from>=a)break;this.highlightRange(e,s,a,c,d+1,_),this.startSpan(Math.min(a,e.to),j)}while(e.nextSibling());e.parent()}}}function highlightTreeRange(o,e,s,a,c){let d=new HighlightBuilder(e,a,c);d.highlightRange(o.cursor(),e,s,"",0,o.type),d.flush(s)}function matchContext(o,e,s){if(o.length>s-1)return!1;for(let a=s-1,c=o.length-1;c>=0;c--,a--){let d=o[c];if(d&&d!=e[a])return!1}return!0}const t=Tag.define,comment=t(),name=t(),typeName=t(name),propertyName=t(name),literal=t(),string=t(literal),number=t(literal),content=t(),heading=t(content),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment,lineComment:t(comment),blockComment:t(comment),docComment:t(comment),name,variableName:t(name),typeName,tagName:t(typeName),propertyName,attributeName:t(propertyName),className:t(name),labelName:t(name),namespace:t(name),macroName:t(name),literal,string,docString:t(string),character:t(string),attributeValue:t(string),number,integer:t(number),float:t(number),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content,heading,heading1:t(heading),heading2:t(heading),heading3:t(heading),heading4:t(heading),heading5:t(heading),heading6:t(heading),contentSeparator:t(content),list:t(content),quote:t(content),emphasis:t(content),strong:t(content),link:t(content),monospace:t(content),strikethrough:t(content),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(),constant:Tag.defineModifier(),function:Tag.defineModifier(),standard:Tag.defineModifier(),local:Tag.defineModifier(),special:Tag.defineModifier()},defaultHighlightStyle=HighlightStyle.define([{tag:tags.link,textDecoration:"underline"},{tag:tags.heading,textDecoration:"underline",fontWeight:"bold"},{tag:tags.emphasis,fontStyle:"italic"},{tag:tags.strong,fontWeight:"bold"},{tag:tags.strikethrough,textDecoration:"line-through"},{tag:tags.keyword,color:"#708"},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:"#219"},{tag:[tags.literal,tags.inserted],color:"#164"},{tag:[tags.string,tags.deleted],color:"#a11"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:"#e40"},{tag:tags.definition(tags.variableName),color:"#00f"},{tag:tags.local(tags.variableName),color:"#30a"},{tag:[tags.typeName,tags.namespace],color:"#085"},{tag:tags.className,color:"#167"},{tag:[tags.special(tags.variableName),tags.macroName],color:"#256"},{tag:tags.definition(tags.propertyName),color:"#00c"},{tag:tags.comment,color:"#940"},{tag:tags.meta,color:"#7a757a"},{tag:tags.invalid,color:"#f00"}]);tags.link,tags.heading,tags.emphasis,tags.strong,tags.keyword,tags.atom,tags.bool,tags.url,tags.labelName,tags.inserted,tags.deleted,tags.literal,tags.string,tags.number,tags.regexp,tags.escape,tags.string,tags.variableName,tags.variableName,tags.variableName,tags.variableName,tags.propertyName,tags.typeName,tags.namespace,tags.className,tags.macroName,tags.propertyName,tags.operator,tags.comment,tags.meta,tags.invalid,tags.punctuation;class SelectedDiagnostic{constructor(e,s,a){this.from=e,this.to=s,this.diagnostic=a}}class LintState{constructor(e,s,a){this.diagnostics=e,this.panel=s,this.selected=a}static init(e,s,a){let c=Decoration.set(e.map(d=>d.from==d.to||d.from==d.to-1&&a.doc.lineAt(d.from).to==d.from?Decoration.widget({widget:new DiagnosticWidget(d),diagnostic:d}).range(d.from):Decoration.mark({attributes:{class:"cm-lintRange cm-lintRange-"+d.severity},diagnostic:d}).range(d.from,d.to)),!0);return new LintState(c,s,findDiagnostic(c))}}function findDiagnostic(o,e=null,s=0){let a=null;return o.between(s,1e9,(c,d,{spec:_})=>{if(!(e&&_.diagnostic!=e))return a=new SelectedDiagnostic(c,d,_.diagnostic),!1}),a}function maybeEnableLint(o,e){return o.field(lintState,!1)?e:e.concat(StateEffect.appendConfig.of([lintState,EditorView.decorations.compute([lintState],s=>{let{selected:a,panel:c}=s.field(lintState);return!a||!c||a.from==a.to?Decoration.none:Decoration.set([activeMark.range(a.from,a.to)])}),hoverTooltip(lintTooltip),baseTheme]))}const setDiagnosticsEffect=StateEffect.define(),togglePanel=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(o,e){if(e.docChanged){let s=o.diagnostics.map(e.changes),a=null;if(o.selected){let c=e.changes.mapPos(o.selected.from,1);a=findDiagnostic(s,o.selected.diagnostic,c)||findDiagnostic(s,null,c)}o=new LintState(s,o.panel,a)}for(let s of e.effects)s.is(setDiagnosticsEffect)?o=LintState.init(s.value,o.panel,e.state):s.is(togglePanel)?o=new LintState(o.diagnostics,s.value?LintPanel.open:null,o.selected):s.is(movePanelSelection)&&(o=new LintState(o.diagnostics,o.panel,s.value));return o},provide:o=>[showPanel.from(o,e=>e.panel),EditorView.decorations.from(o,e=>e.diagnostics)]}),activeMark=Decoration.mark({class:"cm-lintRange cm-lintRange-active"});function lintTooltip(o,e,s){let{diagnostics:a}=o.state.field(lintState),c=[],d=2e8,_=0;return a.between(e-(s<0?1:0),e+(s>0?1:0),(b,k,{spec:$})=>{e>=b&&e<=k&&(b==k||(e>b||s>0)&&(erenderDiagnostic(o,s,!1)))}const openLintPanel=o=>{let e=o.state.field(lintState,!1);(!e||!e.panel)&&o.dispatch({effects:maybeEnableLint(o.state,[togglePanel.of(!0)])});let s=getPanel(o,LintPanel.open);return s&&s.dom.querySelector(".cm-panel-lint ul").focus(),!0},closeLintPanel=o=>{let e=o.state.field(lintState,!1);return!e||!e.panel?!1:(o.dispatch({effects:togglePanel.of(!1)}),!0)},nextDiagnostic=o=>{let e=o.state.field(lintState,!1);if(!e)return!1;let s=o.state.selection.main,a=e.diagnostics.iter(s.to+1);return!a.value&&(a=e.diagnostics.iter(0),!a.value||a.from==s.from&&a.to==s.to)?!1:(o.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0}),!0)},lintKeymap=[{key:"Mod-Shift-m",run:openLintPanel},{key:"F8",run:nextDiagnostic}];function assignKeys(o){let e=[];if(o)e:for(let{name:s}of o){for(let a=0;ad.toLowerCase()==c.toLowerCase())){e.push(c);continue e}}e.push("")}return e}function renderDiagnostic(o,e,s){var a;let c=s?assignKeys(e.actions):[];return crelt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},crelt("span",{class:"cm-diagnosticText"},e.message),(a=e.actions)===null||a===void 0?void 0:a.map((d,_)=>{let b=_e=>{_e.preventDefault();let et=findDiagnostic(o.state.field(lintState).diagnostics,e);et&&d.apply(o,et.from,et.to)},{name:k}=d,$=c[_]?k.indexOf(c[_]):-1,j=$<0?k:[k.slice(0,$),crelt("u",k.slice($,$+1)),k.slice($+1)];return crelt("button",{type:"button",class:"cm-diagnosticAction",onclick:b,onmousedown:b,"aria-label":` Action: ${k}${$<0?"":` (access key "${c[_]})"`}.`},j)}),e.source&&crelt("div",{class:"cm-diagnosticSource"},e.source))}class DiagnosticWidget extends WidgetType{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return crelt("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class PanelItem{constructor(e,s){this.diagnostic=s,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=renderDiagnostic(e,s,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class LintPanel{constructor(e){this.view=e,this.items=[];let s=c=>{if(c.keyCode==27)closeLintPanel(this.view),this.view.focus();else if(c.keyCode==38||c.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(c.keyCode==40||c.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(c.keyCode==36)this.moveSelection(0);else if(c.keyCode==35)this.moveSelection(this.items.length-1);else if(c.keyCode==13)this.view.focus();else if(c.keyCode>=65&&c.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:d}=this.items[this.selectedIndex],_=assignKeys(d.actions);for(let b=0;b<_.length;b++)if(_[b].toUpperCase().charCodeAt(0)==c.keyCode){let k=findDiagnostic(this.view.state.field(lintState).diagnostics,d);k&&d.actions[b].apply(e,k.from,k.to)}}else return;c.preventDefault()},a=c=>{for(let d=0;dcloseLintPanel(this.view)},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(lintState).selected;if(!e)return-1;for(let s=0;s{let $=-1,j;for(let _e=a;_ea&&(this.items.splice(a,$-a),c=!0)),s&&j.diagnostic==s.diagnostic?j.dom.hasAttribute("aria-selected")||(j.dom.setAttribute("aria-selected","true"),d=j):j.dom.hasAttribute("aria-selected")&&j.dom.removeAttribute("aria-selected"),a++});a({sel:d.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:_,panel:b})=>{_.topb.bottom&&(this.list.scrollTop+=_.bottom-b.bottom)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),c&&this.sync()}sync(){let e=this.list.firstChild;function s(){let a=e;e=a.nextSibling,a.remove()}for(let a of this.items)if(a.dom.parentNode==this.list){for(;e!=a.dom;)s();e=a.dom.nextSibling}else this.list.insertBefore(a.dom,e);for(;e;)s()}moveSelection(e){if(this.selectedIndex<0)return;let s=this.view.state.field(lintState),a=findDiagnostic(s.diagnostics,this.items[e].diagnostic);!a||this.view.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0,effects:movePanelSelection.of(a)})}static open(e){return new LintPanel(e)}}function svg(o,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(o)}')`}function underline(o){return svg(``,'width="6" height="3"')}const baseTheme=EditorView.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:underline("#d11")},".cm-lintRange-warning":{backgroundImage:underline("orange")},".cm-lintRange-info":{backgroundImage:underline("#999")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/** @license React v17.0.2 + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var f=react.exports,g=60103;reactJsxRuntime_production_min.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var h=Symbol.for;g=h("react.element"),reactJsxRuntime_production_min.Fragment=h("react.fragment")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};function q(o,e,s){var a,c={},d=null,_=null;s!==void 0&&(d=""+s),e.key!==void 0&&(d=""+e.key),e.ref!==void 0&&(_=e.ref);for(a in e)n.call(e,a)&&!p.hasOwnProperty(a)&&(c[a]=e[a]);if(o&&o.defaultProps)for(a in e=o.defaultProps,e)c[a]===void 0&&(c[a]=e[a]);return{$$typeof:g,type:o,key:d,ref:_,props:c,_owner:m.current}}reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;jsxRuntime.exports=reactJsxRuntime_production_min;const jsx=jsxRuntime.exports.jsx,jsxs=jsxRuntime.exports.jsxs,Fragment=jsxRuntime.exports.Fragment;/*! @license ReactCodeMirror - MIT License - Tom Golden (8162045+tbjgolden@users.noreply.github.com) */var __assign=function(){return __assign=Object.assign||function(e){for(var s,a=1,c=arguments.length;a0)&&!(c=a.next()).done;)d.push(c.value)}catch(b){_={error:b}}finally{try{c&&!c.done&&(s=a.return)&&s.call(a)}finally{if(_)throw _.error}}return d}function __spreadArray(o,e,s){if(s||arguments.length===2)for(var a=0,c=e.length,d;as%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,s,a=0){let c=e.parser.context;return new Stack(e,[],s,a,a,0,[],0,c?new StackContext(c,c.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,s){this.stack.push(this.state,s,this.bufferBase+this.buffer.length),this.state=e}reduce(e){let s=e>>19,a=e&65535,{parser:c}=this.p,d=c.dynamicPrecedence(a);if(d&&(this.score+=d),s==0){this.pushState(c.getGoto(this.state,a,!0),this.reducePos),a_;)this.stack.pop();this.reduceContext(a,b)}storeNode(e,s,a,c=4,d=!1){if(e==0){let _=this,b=this.buffer.length;if(b==0&&_.parent&&(b=_.bufferBase-_.parent.bufferBase,_=_.parent),b>0&&_.buffer[b-4]==0&&_.buffer[b-1]>-1){if(s==a)return;if(_.buffer[b-2]>=s){_.buffer[b-2]=a;return}}}if(!d||this.pos==a)this.buffer.push(e,s,a,c);else{let _=this.buffer.length;if(_>0&&this.buffer[_-4]!=0)for(;_>0&&this.buffer[_-2]>a;)this.buffer[_]=this.buffer[_-4],this.buffer[_+1]=this.buffer[_-3],this.buffer[_+2]=this.buffer[_-2],this.buffer[_+3]=this.buffer[_-1],_-=4,c>4&&(c-=4);this.buffer[_]=e,this.buffer[_+1]=s,this.buffer[_+2]=a,this.buffer[_+3]=c}}shift(e,s,a){let c=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let d=e,{parser:_}=this.p;(a>this.pos||s<=_.maxNode)&&(this.pos=a,_.stateFlag(d,1)||(this.reducePos=a)),this.pushState(d,c),this.shiftContext(s,c),s<=_.maxNode&&this.buffer.push(s,c,a,4)}else this.pos=a,this.shiftContext(s,c),s<=this.p.parser.maxNode&&this.buffer.push(s,c,a,4)}apply(e,s,a){e&65536?this.reduce(e):this.shift(e,s,a)}useNode(e,s){let a=this.p.reused.length-1;(a<0||this.p.reused[a]!=e)&&(this.p.reused.push(e),a++);let c=this.pos;this.reducePos=this.pos=c+e.length,this.pushState(s,c),this.buffer.push(a,c,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,s=e.buffer.length;for(;s>0&&e.buffer[s-2]>e.reducePos;)s-=4;let a=e.buffer.slice(s),c=e.bufferBase+s;for(;e&&c==e.bufferBase;)e=e.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,a,c,this.curContext,this.lookAhead,e)}recoverByDelete(e,s){let a=e<=this.p.parser.maxNode;a&&this.storeNode(e,this.pos,s,4),this.storeNode(0,this.pos,s,a?8:4),this.pos=this.reducePos=s,this.score-=190}canShift(e){for(let s=new SimulatedStack(this);;){let a=this.p.parser.stateSlot(s.state,4)||this.p.parser.hasAction(s.state,e);if((a&65536)==0)return!0;if(a==0)return!1;s.reduce(a)}}recoverByInsert(e){if(this.stack.length>=300)return[];let s=this.p.parser.nextStates(this.state);if(s.length>4<<1||this.stack.length>=120){let c=[];for(let d=0,_;dk&1&&b==_)||c.push(s[d],_)}s=c}let a=[];for(let c=0;c>19,c=e&65535,d=this.stack.length-a*3;if(d<0||s.getGoto(this.stack[d],c,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reduce(e),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let s=0;sthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class StackContext{constructor(e,s){this.tracker=e,this.context=s,this.hash=e.strict?e.hash(s):0}}var Recover;(function(o){o[o.Insert=200]="Insert",o[o.Delete=190]="Delete",o[o.Reduce=100]="Reduce",o[o.MaxNext=4]="MaxNext",o[o.MaxInsertStackDepth=300]="MaxInsertStackDepth",o[o.DampenInsertStackDepth=120]="DampenInsertStackDepth"})(Recover||(Recover={}));class SimulatedStack{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let s=e&65535,a=e>>19;a==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(a-1)*3;let c=this.start.p.parser.getGoto(this.stack[this.base-3],s,!0);this.state=c}}class StackBufferCursor{constructor(e,s,a){this.stack=e,this.pos=s,this.index=a,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,s=e.bufferBase+e.buffer.length){return new StackBufferCursor(e,s,s-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new StackBufferCursor(this.stack,this.pos,this.index)}}class CachedToken{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const nullToken=new CachedToken;class InputStream{constructor(e,s){this.input=e,this.ranges=s,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=nullToken,this.rangeIndex=0,this.pos=this.chunkPos=s[0].from,this.range=s[0],this.end=s[s.length-1].to,this.readNext()}resolveOffset(e,s){let a=this.range,c=this.rangeIndex,d=this.pos+e;for(;da.to:d>=a.to;){if(c==this.ranges.length-1)return null;let _=this.ranges[++c];d+=_.from-a.to,a=_}return d}peek(e){let s=this.chunkOff+e,a,c;if(s>=0&&s=this.chunk2Pos&&ab.to&&(this.chunk2=this.chunk2.slice(0,b.to-a)),c=this.chunk2.charCodeAt(0)}}return a>=this.token.lookAhead&&(this.token.lookAhead=a+1),c}acceptToken(e,s=0){let a=s?this.resolveOffset(s,-1):this.pos;if(a==null||a=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,s){if(s?(this.token=s,s.start=e,s.lookAhead=e+1,s.value=s.extended=-1):this.token=nullToken,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&s<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,s-this.chunkPos);if(e>=this.chunk2Pos&&s<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,s-this.chunk2Pos);if(e>=this.range.from&&s<=this.range.to)return this.input.read(e,s);let a="";for(let c of this.ranges){if(c.from>=s)break;c.to>e&&(a+=this.input.read(Math.max(c.from,e),Math.min(c.to,s)))}return a}}class TokenGroup{constructor(e,s){this.data=e,this.id=s}token(e,s){readToken(this.data,e,s,this.id)}}TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1;class ExternalTokenizer{constructor(e,s={}){this.token=e,this.contextual=!!s.contextual,this.fallback=!!s.fallback,this.extend=!!s.extend}}function readToken(o,e,s,a){let c=0,d=1<0){let j=o[$];if(b.allows(j)&&(e.token.value==-1||e.token.value==j||_.overrides(j,e.token.value))){e.acceptToken(j);break}}for(let $=e.next,j=0,_e=o[c+2];j<_e;){let et=j+_e>>1,tt=k+et+(et<<1),nt=o[tt],st=o[tt+1];if($=st)j=et+1;else{c=o[tt+2],e.advance();continue e}}break}}function decodeArray(o,e=Uint16Array){if(typeof o!="string")return o;let s=null;for(let a=0,c=0;a=92&&_--,_>=34&&_--;let k=_-32;if(k>=46&&(k-=46,b=!0),d+=k,b)break;d*=46}s?s[c++]=d:s=new e(d)}return s}const verbose=typeof process!="undefined"&&/\bparse\b/.test({}.LOG);let stackIDs=null;var Safety;(function(o){o[o.Margin=25]="Margin"})(Safety||(Safety={}));function cutAt(o,e,s){let a=o.fullCursor();for(a.moveTo(e);;)if(!(s<0?a.childBefore(e):a.childAfter(e)))for(;;){if((s<0?a.toe)&&!a.type.isError)return s<0?Math.max(0,Math.min(a.to-1,e-25)):Math.min(o.length,Math.max(a.from+1,e+25));if(s<0?a.prevSibling():a.nextSibling())break;if(!a.parent())return s<0?0:o.length}}class FragmentCursor{constructor(e,s){this.fragments=e,this.nodeSet=s,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?cutAt(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?cutAt(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=_,null;if(d instanceof Tree){if(_==e){if(_=Math.max(this.safeFrom,e)&&(this.trees.push(d),this.start.push(_),this.index.push(0))}else this.index[s]++,this.nextStart=_+d.length}}}class TokenCache{constructor(e,s){this.stream=s,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(a=>new CachedToken)}getActions(e){let s=0,a=null,{parser:c}=e.p,{tokenizers:d}=c,_=c.stateSlot(e.state,3),b=e.curContext?e.curContext.hash:0,k=0;for(let $=0;$_e.end+25&&(k=Math.max(_e.lookAhead,k)),_e.value!=0)){let et=s;if(_e.extended>-1&&(s=this.addActions(e,_e.extended,_e.end,s)),s=this.addActions(e,_e.value,_e.end,s),!j.extend&&(a=_e,s>et))break}}for(;this.actions.length>s;)this.actions.pop();return k&&e.setLookAhead(k),!a&&e.pos==this.stream.end&&(a=new CachedToken,a.value=e.p.parser.eofTerm,a.start=a.end=e.pos,s=this.addActions(e,a.value,a.end,s)),this.mainToken=a,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let s=new CachedToken,{pos:a,p:c}=e;return s.start=a,s.end=Math.min(a+1,c.stream.end),s.value=a==c.stream.end?c.parser.eofTerm:0,s}updateCachedToken(e,s,a){if(s.token(this.stream.reset(a.pos,e),a),e.value>-1){let{parser:c}=a.p;for(let d=0;d=0&&a.p.parser.dialect.allows(_>>1)){(_&1)==0?e.value=_>>1:e.extended=_>>1;break}}}else e.value=0,e.end=Math.min(a.p.stream.end,a.pos+1)}putAction(e,s,a,c){for(let d=0;de.bufferLength*4?new FragmentCursor(a,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,s=this.minStackPos,a=this.stacks=[],c,d;for(let _=0;_s)a.push(b);else{if(this.advanceStack(b,a,e))continue;{c||(c=[],d=[]),c.push(b);let k=this.tokens.getMainToken(b);d.push(k.value,k.end)}}break}}if(!a.length){let _=c&&findFinished(c);if(_)return this.stackToTree(_);if(this.parser.strict)throw verbose&&c&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+s);this.recovering||(this.recovering=5)}if(this.recovering&&c){let _=this.stoppedAt!=null&&c[0].pos>this.stoppedAt?c[0]:this.runRecovery(c,d,a);if(_)return this.stackToTree(_.forceAll())}if(this.recovering){let _=this.recovering==1?1:this.recovering*3;if(a.length>_)for(a.sort((b,k)=>k.score-b.score);a.length>_;)a.pop();a.some(b=>b.reducePos>s)&&this.recovering--}else if(a.length>1){e:for(let _=0;_500&&$.buffer.length>500)if((b.score-$.score||b.buffer.length-$.buffer.length)>0)a.splice(k--,1);else{a.splice(_--,1);continue e}}}}this.minStackPos=a[0].pos;for(let _=1;_ ":"";if(this.stoppedAt!=null&&c>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let $=e.curContext&&e.curContext.tracker.strict,j=$?e.curContext.hash:0;for(let _e=this.fragments.nodeAt(c);_e;){let et=this.parser.nodeSet.types[_e.type.id]==_e.type?d.getGoto(e.state,_e.type.id):-1;if(et>-1&&_e.length&&(!$||(_e.prop(NodeProp.contextHash)||0)==j))return e.useNode(_e,et),verbose&&console.log(_+this.stackID(e)+` (via reuse of ${d.getName(_e.type.id)})`),!0;if(!(_e instanceof Tree)||_e.children.length==0||_e.positions[0]>0)break;let tt=_e.children[0];if(tt instanceof Tree&&_e.positions[0]==0)_e=tt;else break}}let b=d.stateSlot(e.state,4);if(b>0)return e.reduce(b),verbose&&console.log(_+this.stackID(e)+` (via always-reduce ${d.getName(b&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let k=this.tokens.getActions(e);for(let $=0;$c?s.push(nt):a.push(nt)}return!1}advanceFully(e,s){let a=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>a)return pushStackDedup(e,s),!0}}runRecovery(e,s,a){let c=null,d=!1;for(let _=0;_ ":"";if(b.deadEnd&&(d||(d=!0,b.restart(),verbose&&console.log(j+this.stackID(b)+" (restarted)"),this.advanceFully(b,a))))continue;let _e=b.split(),et=j;for(let tt=0;_e.forceReduce()&&tt<10&&(verbose&&console.log(et+this.stackID(_e)+" (via force-reduce)"),!this.advanceFully(_e,a));tt++)verbose&&(et=this.stackID(_e)+" -> ");for(let tt of b.recoverByInsert(k))verbose&&console.log(j+this.stackID(tt)+" (via recover-insert)"),this.advanceFully(tt,a);this.stream.end>b.pos?($==b.pos&&($++,k=0),b.recoverByDelete(k,$),verbose&&console.log(j+this.stackID(b)+` (via recover-delete ${this.parser.getName(k)})`),pushStackDedup(b,a)):(!c||c.scoreo;class ContextTracker{constructor(e){this.start=e.start,this.shift=e.shift||id,this.reduce=e.reduce||id,this.reuse=e.reuse||id,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class LRParser extends Parser{constructor(e){if(super(),this.wrappers=[],e.version!=13)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (${13})`);let s=e.nodeNames.split(" ");this.minRepeatTerm=s.length;for(let b=0;be.topRules[b][1]),c=[];for(let b=0;b=0)d(j,k,b[$++]);else{let _e=b[$+-j];for(let et=-j;et>0;et--)d(b[$++],k,_e);$++}}}this.nodeSet=new NodeSet(s.map((b,k)=>NodeType.define({name:k>=this.minRepeatTerm?void 0:b,id:k,props:c[k],top:a.indexOf(k)>-1,error:k==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(k)>-1}))),this.strict=!1,this.bufferLength=DefaultBufferLength;let _=decodeArray(e.tokenData);if(this.context=e.context,this.specialized=new Uint16Array(e.specialized?e.specialized.length:0),this.specializers=[],e.specialized)for(let b=0;btypeof b=="number"?new TokenGroup(_,b):b),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,s,a){let c=new Parse(this,e,s,a);for(let d of this.wrappers)c=d(c,e,s,a);return c}getGoto(e,s,a=!1){let c=this.goto;if(s>=c[0])return-1;for(let d=c[s+1];;){let _=c[d++],b=_&1,k=c[d++];if(b&&a)return k;for(let $=d+(_>>1);d<$;d++)if(c[d]==e)return k;if(b)return-1}}hasAction(e,s){let a=this.data;for(let c=0;c<2;c++)for(let d=this.stateSlot(e,c?2:1),_;;d+=3){if((_=a[d])==65535)if(a[d+1]==1)_=a[d=pair(a,d+2)];else{if(a[d+1]==2)return pair(a,d+2);break}if(_==s||_==0)return pair(a,d+1)}return 0}stateSlot(e,s){return this.states[e*6+s]}stateFlag(e,s){return(this.stateSlot(e,0)&s)>0}validAction(e,s){if(s==this.stateSlot(e,4))return!0;for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else return!1;if(s==pair(this.data,a+1))return!0}}nextStates(e){let s=[];for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else break;if((this.data[a+2]&1)==0){let c=this.data[a+1];s.some((d,_)=>_&1&&d==c)||s.push(this.data[a],c)}}return s}overrides(e,s){let a=findOffset(this.data,this.tokenPrecTable,s);return a<0||findOffset(this.data,this.tokenPrecTable,e){let c=e.tokenizers.find(d=>d.from==a);return c?c.to:a})),e.contextTracker&&(s.context=e.contextTracker),e.dialect&&(s.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(s.strict=e.strict),e.wrap&&(s.wrappers=s.wrappers.concat(e.wrap)),e.bufferLength!=null&&(s.bufferLength=e.bufferLength),s}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let s=this.dynamicPrecedences;return s==null?0:s[e]||0}parseDialect(e){let s=Object.keys(this.dialects),a=s.map(()=>!1);if(e)for(let d of e.split(" ")){let _=s.indexOf(d);_>=0&&(a[_]=!0)}let c=null;for(let d=0;da)&&s.p.parser.stateFlag(s.state,2)&&(!e||e.score{let{next:s}=o;(s==braceR||s==-1||e.context)&&e.canShift(insertSemi)&&o.acceptToken(insertSemi)},{contextual:!0,fallback:!0}),noSemicolon=new ExternalTokenizer((o,e)=>{let{next:s}=o,a;space.indexOf(s)>-1||s==slash&&((a=o.peek(1))==slash||a==star)||s!=braceR&&s!=semicolon&&s!=-1&&!e.context&&e.canShift(noSemi)&&o.acceptToken(noSemi)},{contextual:!0}),incdecToken=new ExternalTokenizer((o,e)=>{let{next:s}=o;if((s==plus||s==minus)&&(o.advance(),s==o.next)){o.advance();let a=!e.context&&e.canShift(incdec);o.acceptToken(a?incdec:incdecPrefix)}},{contextual:!0}),template=new ExternalTokenizer(o=>{for(let e=!1,s=0;;s++){let{next:a}=o;if(a<0){s&&o.acceptToken(templateContent);break}else if(a==backtick){s?o.acceptToken(templateContent):o.acceptToken(templateEnd,1);break}else if(a==braceL&&e){s==1?o.acceptToken(InterpolationStart,1):o.acceptToken(templateContent,-1);break}else if(a==10&&s){o.advance(),o.acceptToken(templateContent);break}else a==backslash&&o.advance();e=a==dollar,o.advance()}});function tsExtends(o,e){return o=="extends"&&e.dialectEnabled(Dialect_ts)?TSExtends:-1}const spec_identifier={__proto__:null,export:18,as:23,from:29,default:32,async:37,function:38,this:48,true:56,false:56,void:66,typeof:70,null:86,super:88,new:122,await:139,yield:141,delete:142,class:152,extends:154,public:197,private:197,protected:197,readonly:199,instanceof:220,in:222,const:224,import:256,keyof:307,unique:311,infer:317,is:351,abstract:371,implements:373,type:375,let:378,var:380,interface:387,enum:391,namespace:397,module:399,declare:403,global:407,for:428,of:437,while:440,with:444,do:448,if:452,else:454,switch:458,case:464,try:470,catch:472,finally:474,return:478,throw:482,break:486,continue:490,debugger:494},spec_word={__proto__:null,async:109,get:111,set:113,public:161,private:161,protected:161,static:163,abstract:165,override:167,readonly:173,new:355},spec_LessThan={__proto__:null,"<":129},parser=LRParser.deserialize({version:13,states:"$1jO`QYOOO'QQ!LdO'#ChO'XOSO'#DVO)dQYO'#D]O)tQYO'#DhO){QYO'#DrO-xQYO'#DxOOQO'#E]'#E]O.]QWO'#E[O.bQWO'#E[OOQ!LS'#Ef'#EfO0aQ!LdO'#IrO2wQ!LdO'#IsO3eQWO'#EzO3jQpO'#FaOOQ!LS'#FS'#FSO3rO!bO'#FSO4QQWO'#FhO5_QWO'#FgOOQ!LS'#Is'#IsOOQ!LQ'#Ir'#IrOOQQ'#J['#J[O5dQWO'#HnO5iQ!LYO'#HoOOQQ'#If'#IfOOQQ'#Hp'#HpQ`QYOOO){QYO'#DjO5qQWO'#G[O5vQ#tO'#CmO6UQWO'#EZO6aQWO'#EgO6fQ#tO'#FRO7QQWO'#G[O7VQWO'#G`O7bQWO'#G`O7pQWO'#GcO7pQWO'#GdO7pQWO'#GfO5qQWO'#GiO8aQWO'#GlO9oQWO'#CdO:PQWO'#GyO:XQWO'#HPO:XQWO'#HRO`QYO'#HTO:XQWO'#HVO:XQWO'#HYO:^QWO'#H`O:cQ!LZO'#HdO){QYO'#HfO:nQ!LZO'#HhO:yQ!LZO'#HjO5iQ!LYO'#HlO){QYO'#DWOOOS'#Hr'#HrO;UOSO,59qOOQ!LS,59q,59qO=gQbO'#ChO=qQYO'#HsO>UQWO'#ItO@TQbO'#ItO'dQYO'#ItO@[QWO,59wO@rQ&jO'#DbOAkQWO'#E]OAxQWO'#JPOBTQWO'#JOOBTQWO'#JOOB]QWO,5:yOBbQWO'#I}OBiQWO'#DyO5vQ#tO'#EZOBwQWO'#EZOCSQ`O'#FROOQ!LS,5:S,5:SOC[QYO,5:SOEYQ!LdO,5:^OEvQWO,5:dOFaQ!LYO'#I|O7VQWO'#I{OFhQWO'#I{OFpQWO,5:xOFuQWO'#I{OGTQYO,5:vOITQWO'#EWOJ_QWO,5:vOKnQWO'#DlOKuQYO'#DqOLPQ&jO,5;PO){QYO,5;POOQQ'#Er'#ErOOQQ'#Et'#EtO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;RO){QYO,5;ROOQQ'#Ex'#ExOLXQYO,5;cOOQ!LS,5;h,5;hOOQ!LS,5;i,5;iONXQWO,5;iOOQ!LS,5;j,5;jO){QYO'#H}ON^Q!LYO,5YOOQQ'#Ii'#IiOOQQ,5>Z,5>ZOOQQ-E;n-E;nO!+YQ!LdO,5:UOOQ!LQ'#Cp'#CpO!+yQ#tO,5O,5>OO){QYO,5>OO5iQ!LYO,5>QOOQQ,5>S,5>SO!8VQWO,5>SOOQQ,5>U,5>UO!8VQWO,5>UOOQQ,5>W,5>WO!8[Q`O,59rOOOS-E;p-E;pOOQ!LS1G/]1G/]O!8aQbO,5>_O'dQYO,5>_OOQO,5>d,5>dO!8kQYO'#HsOOQO-E;q-E;qO!8xQWO,5?`O!9QQbO,5?`O!9XQWO,5?jOOQ!LS1G/c1G/cO!9aQpO'#DTOOQO'#Iv'#IvO){QYO'#IvO!:OQpO'#IvO!:mQpO'#DcO!;OQ&jO'#DcO!=ZQYO'#DcO!=bQWO'#IuO!=jQWO,59|O!=oQWO'#EaO!=}QWO'#JQO!>VQWO,5:zO!>mQ&jO'#DcO){QYO,5?kO!>wQWO'#HxOOQO-E;v-E;vO!9XQWO,5?jOOQ!LQ1G0e1G0eO!@TQ&jO'#D|OOQ!LS,5:e,5:eO){QYO,5:eOITQWO,5:eO!@[QWO,5:eO:^QWO,5:uO!,rQpO,5:uO!,zQ#tO,5:uO5vQ#tO,5:uOOQ!LS1G/n1G/nOOQ!LS1G0O1G0OOOQ!LQ'#EV'#EVO){QYO,5?hO!@gQ!LYO,5?hO!@xQ!LYO,5?hO!APQWO,5?gO!AXQWO'#HzO!APQWO,5?gOOQ!LQ1G0d1G0dO7VQWO,5?gOOQ!LS1G0b1G0bO!AsQ!LdO1G0bO!BdQ!LbO,5:rOOQ!LS'#Fq'#FqO!CQQ!LdO'#IoOGTQYO1G0bO!EPQ#tO'#IwO!EZQWO,5:WO!E`QbO'#IxO){QYO'#IxO!EjQWO,5:]OOQ!LS'#DT'#DTOOQ!LS1G0k1G0kO!EoQWO1G0kO!HQQ!LdO1G0mO!HXQ!LdO1G0mO!JlQ!LdO1G0mO!JsQ!LdO1G0mO!LzQ!LdO1G0mO!M_Q!LdO1G0mO#!OQ!LdO1G0mO#!VQ!LdO1G0mO#$jQ!LdO1G0mO#$qQ!LdO1G0mO#&fQ!LdO1G0mO#)`Q7^O'#ChO#+ZQ7^O1G0}O#-UQ7^O'#IsOOQ!LS1G1T1G1TO#-iQ!LdO,5>iOOQ!LQ-E;{-E;{O#.YQ!LdO1G0mOOQ!LS1G0m1G0mO#0[Q!LdO1G1QO#0{QpO,5;sO#1QQpO,5;tO#1VQpO'#F[O#1kQWO'#FZOOQO'#JU'#JUOOQO'#H{'#H{O#1pQpO1G1]OOQ!LS1G1]1G1]OOOO1G1f1G1fO#2OQ7^O'#IrO#2YQWO,5;}OLXQYO,5;}OOOO-E;z-E;zOOQ!LS1G1Y1G1YOOQ!LS,5VQ&jO'#GhOOQQ1G2l1G2lO!&wQ&jO'#IWO!0OQ`O1G2oOOQQ1G2o1G2oOOQQ,5=Y,5=YO#>_Q#tO,5=[O5qQWO,5=[O#5YQWO,5=_O5_QWO,5=_O!,rQpO,5=_O!,zQ#tO,5=_O5vQ#tO,5=_O#>pQWO'#J_O#>{QWO,5=`OOQQ1G.j1G.jO#?QQ!LYO1G.jO#?]QWO1G.jO#?bQWO1G.jO5iQ!LYO1G.jO#?jQbO,5?|O#?tQWO,5?|O#@PQYO,5=gO#@WQWO,5=gO7VQWO,5?|OOQQ1G3P1G3PO`QYO1G3POOQQ1G3V1G3VOOQQ1G3X1G3XO:XQWO1G3ZO#@]QYO1G3]O#DWQYO'#H[OOQQ1G3`1G3`O:^QWO1G3fO#DeQWO1G3fO5iQ!LYO1G3jOOQQ1G3l1G3lOOQ!LQ'#Fx'#FxO5iQ!LYO1G3nO5iQ!LYO1G3pOOOS1G/^1G/^O#DmQ`O,5_O#EPQWO1G4zO#EXQWO1G5UO#EaQWO,5?bOLXQYO,5:{O7VQWO,5:{O:^QWO,59}OLXQYO,59}O!,rQpO,59}O#EfQ7^O,59}OOQO,5:{,5:{O#EpQ&jO'#HtO#FWQWO,5?aOOQ!LS1G/h1G/hO#F`Q&jO'#HyO#FtQWO,5?lOOQ!LQ1G0f1G0fO!;OQ&jO,59}O#F|QbO1G5VO7VQWO,5>dOOQ!LQ'#ES'#ESO#GWQ!LrO'#ETO!?{Q&jO'#D}OOQO'#Hw'#HwO#GrQ&jO,5:hOOQ!LS,5:h,5:hO#GyQ&jO'#D}O#H[Q&jO'#D}O#HcQ&jO'#EYO#HfQ&jO'#ETO#HsQ&jO'#ETO!?{Q&jO'#ETO#IWQWO1G0PO#I]Q`O1G0POOQ!LS1G0P1G0PO){QYO1G0POITQWO1G0POOQ!LS1G0a1G0aO:^QWO1G0aO!,rQpO1G0aO!,zQ#tO1G0aO#IdQ!LdO1G5SO){QYO1G5SO#ItQ!LYO1G5SO#JVQWO1G5RO7VQWO,5>fOOQO,5>f,5>fO#J_QWO,5>fOOQO-E;x-E;xO#JVQWO1G5RO#JmQ!LdO,59jO#LlQ!LdO,5k,5>kO$(]QWO,5>kOOQ!LS1G2P1G2PP$(bQWO'#IPPOQ!LS-E;}-E;}O$)RQ#tO1G2[O$)tQ#tO1G2^O$*OQ#tO1G2`OOQ!LS1G1x1G1xO$*VQWO'#IOO$*eQWO,5?sO$*eQWO,5?sO$*mQWO,5?sO$*xQWO,5?sOOQO1G1z1G1zO$+WQ#tO1G1yO$+hQWO'#IQO$+xQWO,5?tOITQWO,5?tO$,QQ`O,5?tOOQ!LS1G1}1G1}O5iQ!LYO,5n,5>nOOQO-Ev,5>vOOQO-Ep,5>pOOQ!LQ-Er,5>rOOQO-E`,5>`OOQO-E;r-E;rOOQO,5>e,5>eOOQO-E;w-E;wO!,rQpO1G/iO:^QWO,5:iOOQO,5:o,5:oO){QYO,5:oO$9pQ!LYO,5:oO$9{Q!LYO,5:oO!,rQpO,5:iOOQO-E;u-E;uOOQ!LS1G0S1G0SO!?{Q&jO,5:iO$:ZQ&jO,5:iO$:lQ!LrO,5:oO$;WQ&jO,5:iO!?{Q&jO,5:oOOQO,5:t,5:tO$;_Q&jO,5:oO$;lQ!LYO,5:oOOQ!LS7+%k7+%kO#IWQWO7+%kO#I]Q`O7+%kOOQ!LS7+%{7+%{O:^QWO7+%{O!,rQpO7+%{O$lQ!LdO1G2^O$@nQ!LdO1G1yO$BvQ#tO,5>aOOQO-E;s-E;sO$CQQbO,5>bO){QYO,5>bOOQO-E;t-E;tO$C[QWO1G5OO$CdQ7^O1G0bO$EkQ7^O1G0mO$ErQ7^O1G0mO$GsQ7^O1G0mO$GzQ7^O1G0mO$IoQ7^O1G0mO$JSQ7^O1G0mO$LaQ7^O1G0mO$LhQ7^O1G0mO$NiQ7^O1G0mO$NpQ7^O1G0mO%!eQ7^O1G0mO%!xQ!LdO<iOOOO7+'T7+'TOOOS1G/R1G/ROOQ!LS1G4V1G4VOJdQWO7+'zO%'rQWO,5>jO5qQWO,5>jOOQO-E;|-E;|O%(QQWO1G5_O%(QQWO1G5_O%(YQWO1G5_O%(eQ`O,5>lO%(oQWO,5>lOITQWO,5>lOOQO-Eu,5>uO%,RQWO,5>uO%,WQWO,5>uOOQO-EtOOQO-ERQ#tO<cQWO1G4UO%>nQWO1G4UO%>|QWO7+*yO%>|QWO7+*yOITQWO1G4WO%?UQ`O1G4WO%?`QWO7+*zOOQO7+'o7+'oO5iQ!LYO7+'oOOQO7+'n7+'nO$,[QWO7+'pO%?hQ`O7+'pOOQO7+'t7+'tO5iQ!LYO7+'nO$,[QWO7+'oO%?oQWO7+'pOITQWO7+'pO#5TQWO7+'oO%?tQ#tO<oOOQO-EqOOQO-E{AN>{OOQOAN>uAN>uO%0}Q!LdOAN>{O:^QWOAN>uO){QYOAN>{O!,rQpOAN>uO&(PQ!LYOAN>{O&([Q7^O<^O!O&OO~Ox&RO!W&]O!X&UO!Y&UO'[$bO~O]&SOk&SO!Q&VO'e&PO!S'iP!S'tP~P@aO!O'qX!R'qX!]'qX!c'qX'n'qX~O!{'qX#W#PX!S'qX~PAYO!{&^O!O'sX!R'sX~O!R&_O!O'rX~O!O&bO~O!{#eO~PAYOS&fO!T&cO!o&eO'Z$`O~Oc&kO!d$XO'Z$`O~Ou$nO!d$mO~O!S&lO~P`Ou!{Ov!{Ox!|O!b!yO!d!zO'dQOP!faZ!faj!fa!R!fa!a!fa!j!fa#[!fa#]!fa#^!fa#_!fa#`!fa#a!fa#b!fa#c!fa#e!fa#g!fa#i!fa#j!fa'n!fa'u!fa'v!fa~O_!fa'U!fa!O!fa!c!fan!fa!T!fa%Q!fa!]!fa~PCcO!c&mO~O!]!wO!{&oO'n&nO!R'pX_'pX'U'pX~O!c'pX~PE{O!R&sO!c'oX~O!c&uO~Ox$tO!T$uO#V&vO'Z$`O~OPTOQTO]cOb!kOc!jOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!TSO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!n!iO#t!lO#x^O'Z9YO'dQO'mYO'zaO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'Z&zO'd#sO~O#W&|O~O]#qOh$OOj#rOk#qOl#qOq$POs$QOx#xO!T#yO!_$VO!d#vO#V$WO#t$TO$_$RO$a$SO$d$UO'Z&zO'd#sO~O'_'kP~PJdO!Q'QO!c'lP~P){O'e'SO'mYO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!d!zO~O!R#bO_$]a'U$]a!c$]a!O$]a!T$]a%Q$]a!]$]a~O#d'iO~PITO!]'kO!T'wX#w'wX#z'wX$R'wX~Ou'lO~P! POu'lO!T'wX#w'wX#z'wX$R'wX~O!T'nO#w'rO#z'mO$R'sO~O!Q'vO~PLXO#z#fO$R'yO~Ou$eXx$eX!b$eX'n$eX'u$eX'v$eX~OSfX!RfX!{fX'_fX'_$eX~P!!iOk'{O~OR'|O'S'}O'T(PO~Ou(ROx(SO'n#[O'u(UO'v(WO~O'_(QO~P!#rO'_(ZO~O]#qOh$OOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~O!Q(_O'Z([O!c'{P~P!$aO#W(aO~O!Q(eO'Z(bO!O'|P~P!$aO_(nOj(sOx(kO!W(qO!X(jO!Y(jO!d(hO!x(rO$w(mO'[$bO'e(gO~O!S(pO~P!&XO!b!yOu'cXx'cX'n'cX'u'cX'v'cX!R'cX!{'cX~O'_'cX#m'cX~P!'TOS(vO!{(uO!R'bX'_'bX~O!R(wO'_'aX~O'Z(yO~O!d)OO~O'Z&zO~O!d(hO~Ox$tO!Q!rO!T$uO#U!uO#V!rO'Z$`O!c'oP~O!]!wO#W)SO~OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO#j#ZO'dQO'n#[O'u!}O'v#OO~O_!^a!R!^a'U!^a!O!^a!c!^an!^a!T!^a%Q!^a!]!^a~P!)fOS)[O!T&cO!o)ZO%Q)YO'`$cO~O'Z$zO'_'aP~O!])_O!T'^X_'^X'U'^X~O!d$XO'`$cO~O!d$XO'Z$`O'`$cO~O!]!wO#W&|O~O])jO%R)kO'Z)gO!S(TP~O!R)lO^(SX~O'e'SO~OZ)pO~O^)qO~O!T$kO'Z$`O'[$bO^(SP~Ox$tO!Q)vO!R&_O!T$uO'Z$`O!O'rP~O]&YOk&YO!Q)wO'e'SO!S'tP~O!R)xO_(PX'U(PX~O!{)|O'`$cO~OS*PO!T#yO'`$cO~O!T*RO~Ou*TO!TSO~O!n*YO~Oc*_O~O'Z(yO!S(RP~Oc$iO~O%RtO'Z$zO~P8tOZ*eO^*dO~OPTOQTO]cObnOcmOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!nlO#x^O%PqO'dQO'mYO'zaO~O!T!bO#t!lO'Z9YO~P!1RO^*dO_$[O'U$[O~O_*iO#d*kO%T*kO%U*kO~P){O!d%_O~O%t*pO~O!T*rO~O&U*uO&V*tOP&SaQ&SaX&Sa]&Sa_&Sab&Sac&Sah&Saj&Sak&Sal&Saq&Sas&Sax&Sa{&Sa|&Sa}&Sa!T&Sa!_&Sa!d&Sa!g&Sa!h&Sa!i&Sa!j&Sa!k&Sa!n&Sa#d&Sa#t&Sa#x&Sa%P&Sa%R&Sa%T&Sa%U&Sa%X&Sa%Z&Sa%^&Sa%_&Sa%a&Sa%n&Sa%t&Sa%v&Sa%x&Sa%z&Sa%}&Sa&T&Sa&X&Sa&Z&Sa&]&Sa&_&Sa&a&Sa'Q&Sa'Z&Sa'd&Sa'm&Sa'z&Sa!S&Sa%{&Sa`&Sa&Q&Sa~O'Z*xO~On*{O~O!O&ga!R&ga~P!)fO!Q+PO!O&gX!R&gX~P){O!R%yO!O'ha~O!O'ha~P>^O!R&_O!O'ra~O!RwX!R!ZX!SwX!S!ZX!]wX!]!ZX!d!ZX!{wX'`!ZX~O!]+UO!{+TO!R#TX!R'jX!S#TX!S'jX!]'jX!d'jX'`'jX~O!]+WO!d$XO'`$cO!R!VX!S!VX~O]&QOk&QOx&RO'e(gO~OP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!T!bO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'dQO'mYO'z:kO~O'Z9vO~P!;^O!R+[O!S'iX~O!S+^O~O!]+UO!{+TO!R#TX!S#TX~O!R+_O!S'tX~O!S+aO~O]&QOk&QOx&RO'[$bO'e(gO~O!X+bO!Y+bO~P!>[Ox$tO!Q+dO!T$uO'Z$`O!O&lX!R&lX~O_+hO!W+kO!X+gO!Y+gO!r+oO!s+mO!t+nO!u+lO!x+pO'[$bO'e(gO'm+eO~O!S+jO~P!?]OS+uO!T&cO!o+tO~O!{+{O!R'pa!c'pa_'pa'U'pa~O!]!wO~P!@gO!R&sO!c'oa~Ox$tO!Q,OO!T$uO#U,QO#V,OO'Z$`O!R&nX!c&nX~O_#Oi!R#Oi'U#Oi!O#Oi!c#Oin#Oi!T#Oi%Q#Oi!]#Oi~P!)fO#W!za!R!za!c!za!{!za!T!za_!za'U!za!O!za~P!#rO#W'cXP'cXZ'cX_'cXj'cXv'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX'U'cX'd'cX!c'cX!O'cX!T'cXn'cX%Q'cX!]'cX~P!'TO!R,ZO'_'kX~P!#rO'_,]O~O!R,^O!c'lX~P!)fO!c,aO~O!O,bO~OP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zi_#Zij#Zi!R#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O#[#Zi~P!EtO#[#PO~P!EtOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO'dQOZ#Zi_#Zi!R#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~Oj#Zi~P!H`Oj#RO~P!H`OP#^Oj#ROu!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO'dQO_#Zi!R#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'u#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P!JzOZ#dO!a#TO#a#TO#b#TO#c#TO~P!JzOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO'dQO_#Zi!R#Zi#g#Zi#i#Zi#j#Zi'U#Zi'n#Zi'v#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'u#Zi~P!MrO'u!}O~P!MrOP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO'dQO'u!}O_#Zi!R#Zi#i#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'v#Zi~P#!^O'v#OO~P#!^OP#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO'dQO'u!}O'v#OO~O_#Zi!R#Zi#j#Zi'U#Zi'n#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P#$xOP[XZ[Xj[Xu[Xv[Xx[X!a[X!b[X!d[X!j[X!{[X#WdX#[[X#][X#^[X#_[X#`[X#a[X#b[X#c[X#e[X#g[X#i[X#j[X#o[X'd[X'n[X'u[X'v[X!R[X!S[X~O#m[X~P#']OP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO#j9gO'dQO'n#[O'u!}O'v#OO~O#m,dO~P#)gOP'gXZ'gXj'gXu'gXv'gXx'gX!a'gX!b'gX!d'gX!j'gX#['gX#]'gX#^'gX#_'gX#`'gX#a'gX#b'gX#e'gX#g'gX#i'gX#j'gX'd'gX'n'gX'u'gX'v'gX!R'gX~O!{9kO#o9kO#c'gX#m'gX!S'gX~P#+bO_&qa!R&qa'U&qa!c&qan&qa!O&qa!T&qa%Q&qa!]&qa~P!)fOP#ZiZ#Zi_#Zij#Ziv#Zi!R#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'U#Zi'd#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P!#rO_#ni!R#ni'U#ni!O#ni!c#nin#ni!T#ni%Q#ni!]#ni~P!)fO#z,fO~O#z,gO~O!]'kO!{,hO!T$OX#w$OX#z$OX$R$OX~O!Q,iO~O!T'nO#w,kO#z'mO$R,lO~O!R9hO!S'fX~P#)gO!S,mO~O$R,oO~OR'|O'S'}O'T,rO~O],uOk,uO!O,vO~O!RdX!]dX!cdX!c$eX'ndX~P!!iO!c,|O~P!#rO!R,}O!]!wO'n&nO!c'{X~O!c-SO~O!O$eX!R$eX!]$lX~P!!iO!R-UO!O'|X~P!#rO!]-WO~O!O-YO~O!Q(_O'Z$`O!c'{P~Oj-^O!]!wO!d$XO'`$cO'n&nO~O!])_O~O!S-dO~P!&XO!X-eO!Y-eO'[$bO'e(gO~Ox-gO'e(gO~O!x-hO~O'Z$zO!R&vX'_&vX~O!R(wO'_'aa~Ou-mOv-mOx-nO'nra'ura'vra!Rra!{ra~O'_ra#mra~P#6fOu(ROx(SO'n$^a'u$^a'v$^a!R$^a!{$^a~O'_$^a#m$^a~P#7[Ou(ROx(SO'n$`a'u$`a'v$`a!R$`a!{$`a~O'_$`a#m$`a~P#7}O]-oO~O#W-pO~O'_$na!R$na#m$na!{$na~P!#rO#W-sO~OS-|O!T&cO!o-{O%Q-zO~O'_-}O~O]#qOj#rOk#qOl#qOq$POs9lOx#xO!T#yO!_:oO!d#vO#V9rO#t$TO$_9nO$a9pO$d$UO'd#sO~Oh.PO'Z.OO~P#9tO!])_O!T'^a_'^a'U'^a~O#W.VO~OZ[X!RdX!SdX~O!R.WO!S(TX~O!S.YO~OZ.ZO~O].]O'Z)gO~O!T$kO'Z$`O^'OX!R'OX~O!R)lO^(Sa~O!c.`O~P!)fO].bO~OZ.cO~O^.dO~OS-|O!T&cO!o-{O%Q-zO'`$cO~O!R)xO_(Pa'U(Pa~O!{.jO~OS.mO!T#yO~O'e'SO!S(QP~OS.wO!T.sO!o.vO%Q.uO'`$cO~OZ/RO!R/PO!S(RX~O!S/SO~O^/UO_$[O'U$[O~O]/VO~O]/WO'Z(yO~O#c/XO%r/YO~P0zO!{#eO#c/XO%r/YO~O_/ZO~P){O_/]O~O%{/aOP%yiQ%yiX%yi]%yi_%yib%yic%yih%yij%yik%yil%yiq%yis%yix%yi{%yi|%yi}%yi!T%yi!_%yi!d%yi!g%yi!h%yi!i%yi!j%yi!k%yi!n%yi#d%yi#t%yi#x%yi%P%yi%R%yi%T%yi%U%yi%X%yi%Z%yi%^%yi%_%yi%a%yi%n%yi%t%yi%v%yi%x%yi%z%yi%}%yi&T%yi&X%yi&Z%yi&]%yi&_%yi&a%yi'Q%yi'Z%yi'd%yi'm%yi'z%yi!S%yi`%yi&Q%yi~O`/gO!S/eO&Q/fO~P`O!TSO!d/jO~O!R#bOn$]a~O!O&gi!R&gi~P!)fO!R%yO!O'hi~O!R&_O!O'ri~O!O/nO~O!R!Va!S!Va~P#)gO]&QOk&QO!Q/tO'e(gO!R&hX!S&hX~P@aO!R+[O!S'ia~O]&YOk&YO!Q)wO'e'SO!R&mX!S&mX~O!R+_O!S'ta~O!O'si!R'si~P!)fO_$[O!]!wO!d$XO!j0OO!{/|O'U$[O'`$cO'n&nO~O!S0RO~P!?]O!X0SO!Y0SO'[$bO'e(gO'm+eO~O!W0TO~P#GyO!TSO!W0TO!u0VO!x0WO~P#GyO!W0TO!s0YO!t0YO!u0VO!x0WO~P#GyO!T&cO~O!T&cO~P!#rO!R'pi!c'pi_'pi'U'pi~P!)fO!{0cO!R'pi!c'pi_'pi'U'pi~O!R&sO!c'oi~Ox$tO!T$uO#V0eO'Z$`O~O#WraPraZra_rajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra'Ura'dra!cra!Ora!Tranra%Qra!]ra~P#6fO#W$^aP$^aZ$^a_$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a'U$^a'd$^a!c$^a!O$^a!T$^an$^a%Q$^a!]$^a~P#7[O#W$`aP$`aZ$`a_$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a'U$`a'd$`a!c$`a!O$`a!T$`an$`a%Q$`a!]$`a~P#7}O#W$naP$naZ$na_$naj$nav$na!R$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na'U$na'd$na!c$na!O$na!T$na!{$nan$na%Q$na!]$na~P!#rO_#Oq!R#Oq'U#Oq!O#Oq!c#Oqn#Oq!T#Oq%Q#Oq!]#Oq~P!)fO!R&iX'_&iX~PJdO!R,ZO'_'ka~O!Q0mO!R&jX!c&jX~P){O!R,^O!c'la~O!R,^O!c'la~P!)fO#m!fa!S!fa~PCcO#m!^a!R!^a!S!^a~P#)gO!T1QO#x^O$P1RO~O!S1VO~On1WO~P!#rO_$Yq!R$Yq'U$Yq!O$Yq!c$Yqn$Yq!T$Yq%Q$Yq!]$Yq~P!)fO!O1XO~O],uOk,uO~Ou(ROx(SO'v(WO'n$xi'u$xi!R$xi!{$xi~O'_$xi#m$xi~P$(jOu(ROx(SO'n$zi'u$zi'v$zi!R$zi!{$zi~O'_$zi#m$zi~P$)]O#m1YO~P!#rO!Q1[O'Z$`O!R&rX!c&rX~O!R,}O!c'{a~O!R,}O!]!wO!c'{a~O!R,}O!]!wO'n&nO!c'{a~O'_$gi!R$gi#m$gi!{$gi~P!#rO!Q1cO'Z(bO!O&tX!R&tX~P!$aO!R-UO!O'|a~O!R-UO!O'|a~P!#rO!]!wO~O!]!wO#c1mO~Oj1qO!]!wO'n&nO~O!R'bi'_'bi~P!#rO!{1tO!R'bi'_'bi~P!#rO!c1wO~O_$Zq!R$Zq'U$Zq!O$Zq!c$Zqn$Zq!T$Zq%Q$Zq!]$Zq~P!)fO!R1{O!T'}X~P!#rO!T&cO%Q2OO~O!T&cO%Q2OO~P!#rO!T$eX$u[X_$eX'U$eX~P!!iO$u2SOugXxgX!TgX'ngX'ugX'vgX_gX'UgX~O$u2SO~O]2YO%R2ZO'Z)gO!R&}X!S&}X~O!R.WO!S(Ta~OZ2_O~O^2`O~O]2cO~OS2eO!T&cO!o2dO%Q2OO~O_$[O'U$[O~P!#rO!T#yO~P!#rO!R2jO!{2lO!S(QX~O!S2mO~Ox(kO!W2vO!X2oO!Y2oO!r2uO!s2tO!t2tO!x2sO'[$bO'e(gO'm+eO~O!S2rO~P$1nOS2}O!T.sO!o2|O%Q2{O~OS2}O!T.sO!o2|O%Q2{O'`$cO~O'Z(yO!R&|X!S&|X~O!R/PO!S(Ra~O]3XO'e3WO~O]3YO~O^3[O~O!c3_O~P){O_3aO~O_3aO~P){O#c3cO%r3dO~PE{O`/gO!S3hO&Q/fO~P`O!]3jO~O&V3kOP&SqQ&SqX&Sq]&Sq_&Sqb&Sqc&Sqh&Sqj&Sqk&Sql&Sqq&Sqs&Sqx&Sq{&Sq|&Sq}&Sq!T&Sq!_&Sq!d&Sq!g&Sq!h&Sq!i&Sq!j&Sq!k&Sq!n&Sq#d&Sq#t&Sq#x&Sq%P&Sq%R&Sq%T&Sq%U&Sq%X&Sq%Z&Sq%^&Sq%_&Sq%a&Sq%n&Sq%t&Sq%v&Sq%x&Sq%z&Sq%}&Sq&T&Sq&X&Sq&Z&Sq&]&Sq&_&Sq&a&Sq'Q&Sq'Z&Sq'd&Sq'm&Sq'z&Sq!S&Sq%{&Sq`&Sq&Q&Sq~O!R#Ti!S#Ti~P#)gO!{3mO!R#Ti!S#Ti~O!R!Vi!S!Vi~P#)gO_$[O!{3tO'U$[O~O_$[O!]!wO!{3tO'U$[O~O!X3xO!Y3xO'[$bO'e(gO'm+eO~O_$[O!]!wO!d$XO!j3yO!{3tO'U$[O'`$cO'n&nO~O!W3zO~P$:ZO!W3zO!u3}O!x4OO~P$:ZO_$[O!]!wO!j3yO!{3tO'U$[O'n&nO~O!R'pq!c'pq_'pq'U'pq~P!)fO!R&sO!c'oq~O#W$xiP$xiZ$xi_$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi'U$xi'd$xi!c$xi!O$xi!T$xin$xi%Q$xi!]$xi~P$(jO#W$ziP$ziZ$zi_$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi'U$zi'd$zi!c$zi!O$zi!T$zin$zi%Q$zi!]$zi~P$)]O#W$giP$giZ$gi_$gij$giv$gi!R$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi'U$gi'd$gi!c$gi!O$gi!T$gi!{$gin$gi%Q$gi!]$gi~P!#rO!R&ia'_&ia~P!#rO!R&ja!c&ja~P!)fO!R,^O!c'li~O#m#Oi!R#Oi!S#Oi~P#)gOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'dQOZ#Zij#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~O#[#Zi~P$CqO#[9]O~P$CqOP#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O'dQOZ#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~Oj#Zi~P$EyOj9_O~P$EyOP#^Oj9_Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O'dQO#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'u#Zi'v#Zi!R#Zi!S#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P$HROZ9jO!a9aO#a9aO#b9aO#c9aO~P$HROP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO'dQO#g#Zi#i#Zi#j#Zi#m#Zi'n#Zi'v#Zi!R#Zi!S#Zi~O'u#Zi~P$JgO'u!}O~P$JgOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO'dQO'u!}O#i#Zi#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~O'v#Zi~P$LoO'v#OO~P$LoOP#^OZ9jOj9_Ou!{Ov!{Ox!|O!a9aO!b!yO!d!zO!j#^O#[9]O#]9^O#^9^O#_9^O#`9`O#a9aO#b9aO#c9aO#e9bO#g9dO#i9fO'dQO'u!}O'v#OO~O#j#Zi#m#Zi'n#Zi!R#Zi!S#Zi~P$NwO_#ky!R#ky'U#ky!O#ky!c#kyn#ky!T#ky%Q#ky!]#ky~P!)fOP#ZiZ#Zij#Ziv#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'd#Zi!R#Zi!S#Zi~P!#rO!b!yOP'cXZ'cXj'cXu'cXv'cXx'cX!a'cX!d'cX!j'cX#['cX#]'cX#^'cX#_'cX#`'cX#a'cX#b'cX#c'cX#e'cX#g'cX#i'cX#j'cX#m'cX'd'cX'n'cX'u'cX'v'cX!R'cX!S'cX~O#m#ni!R#ni!S#ni~P#)gO!S4`O~O!R&qa!S&qa~P#)gO!]!wO'n&nO!R&ra!c&ra~O!R,}O!c'{i~O!R,}O!]!wO!c'{i~O!O&ta!R&ta~P!#rO!]4gO~O!R-UO!O'|i~P!#rO!R-UO!O'|i~O!O4mO~O!]!wO#c4sO~Oj4tO!]!wO'n&nO~O!O4vO~O'_$iq!R$iq#m$iq!{$iq~P!#rO_$Zy!R$Zy'U$Zy!O$Zy!c$Zyn$Zy!T$Zy%Q$Zy!]$Zy~P!)fO!R1{O!T'}a~O!T&cO%Q4{O~O!T&cO%Q4{O~P!#rO_#Oy!R#Oy'U#Oy!O#Oy!c#Oyn#Oy!T#Oy%Q#Oy!]#Oy~P!)fOZ5OO~O]5QO'Z)gO~O!R.WO!S(Ti~O]5TO~O^5UO~O'e'SO!R&yX!S&yX~O!R2jO!S(Qa~O!S5cO~P$1nOx-gO'e(gO'm+eO~O!W5fO!X5eO!Y5eO!x0WO'[$bO'e(gO'm+eO~O!s5gO!t5gO~P%-iO!X5eO!Y5eO'[$bO'e(gO'm+eO~O!T.sO~O!T.sO%Q5iO~O!T.sO%Q5iO~P!#rOS5nO!T.sO!o5mO%Q5iO~OZ5sO!R&|a!S&|a~O!R/PO!S(Ri~O]5vO~O!c5wO~O!c5xO~O!c5yO~O!c5yO~P){O_5{O~O!]6OO~O!c6QO~O!R'si!S'si~P#)gO_$[O'U$[O~P!)fO_$[O!{6VO'U$[O~O_$[O!]!wO!{6VO'U$[O~O!X6[O!Y6[O'[$bO'e(gO'm+eO~O_$[O!]!wO!j6]O!{6VO'U$[O'n&nO~O!d$XO'`$cO~P%2TO!W6^O~P%1rO!R'py!c'py_'py'U'py~P!)fO#W$iqP$iqZ$iq_$iqj$iqv$iq!R$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq'U$iq'd$iq!c$iq!O$iq!T$iq!{$iqn$iq%Q$iq!]$iq~P!#rO!R&ji!c&ji~P!)fO#m#Oq!R#Oq!S#Oq~P#)gOu-mOv-mOx-nOPraZrajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra#mra'dra'nra'ura'vra!Rra!Sra~Ou(ROx(SOP$^aZ$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a#m$^a'd$^a'n$^a'u$^a'v$^a!R$^a!S$^a~Ou(ROx(SOP$`aZ$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a#m$`a'd$`a'n$`a'u$`a'v$`a!R$`a!S$`a~OP$naZ$naj$nav$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na#m$na'd$na!R$na!S$na~P!#rO#m$Yq!R$Yq!S$Yq~P#)gO#m$Zq!R$Zq!S$Zq~P#)gO!S6hO~O'_$|y!R$|y#m$|y!{$|y~P!#rO!]!wO!R&ri!c&ri~O!]!wO'n&nO!R&ri!c&ri~O!R,}O!c'{q~O!O&ti!R&ti~P!#rO!R-UO!O'|q~O!O6oO~P!#rO!O6oO~O!R'by'_'by~P!#rO!R&wa!T&wa~P!#rO!T$tq_$tq'U$tq~P!#rOZ6wO~O!R.WO!S(Tq~O]6zO~O!T&cO%Q6{O~O!T&cO%Q6{O~P!#rO!{6|O!R&ya!S&ya~O!R2jO!S(Qi~P#)gO!X7SO!Y7SO'[$bO'e(gO'm+eO~O!W7UO!x4OO~P%ArO!T.sO%Q7XO~O!T.sO%Q7XO~P!#rO]7`O'e7_O~O!R/PO!S(Rq~O!c7bO~O!c7bO~P){O!c7dO~O!c7eO~O!R#Ty!S#Ty~P#)gO_$[O!{7kO'U$[O~O_$[O!]!wO!{7kO'U$[O~O!X7nO!Y7nO'[$bO'e(gO'm+eO~O_$[O!]!wO!j7oO!{7kO'U$[O'n&nO~O#W$|yP$|yZ$|y_$|yj$|yv$|y!R$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y'U$|y'd$|y!c$|y!O$|y!T$|y!{$|yn$|y%Q$|y!]$|y~P!#rO#m#ky!R#ky!S#ky~P#)gOP$giZ$gij$giv$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi#m$gi'd$gi!R$gi!S$gi~P!#rOu(ROx(SO'v(WOP$xiZ$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi#m$xi'd$xi'n$xi'u$xi!R$xi!S$xi~Ou(ROx(SOP$ziZ$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi#m$zi'd$zi'n$zi'u$zi'v$zi!R$zi!S$zi~O#m$Zy!R$Zy!S$Zy~P#)gO#m#Oy!R#Oy!S#Oy~P#)gO!]!wO!R&rq!c&rq~O!R,}O!c'{y~O!O&tq!R&tq~P!#rO!O7uO~P!#rO!R.WO!S(Ty~O!R2jO!S(Qq~O!X8RO!Y8RO'[$bO'e(gO'm+eO~O!T.sO%Q8UO~O!T.sO%Q8UO~P!#rO!c8XO~O&V8YOP&S!ZQ&S!ZX&S!Z]&S!Z_&S!Zb&S!Zc&S!Zh&S!Zj&S!Zk&S!Zl&S!Zq&S!Zs&S!Zx&S!Z{&S!Z|&S!Z}&S!Z!T&S!Z!_&S!Z!d&S!Z!g&S!Z!h&S!Z!i&S!Z!j&S!Z!k&S!Z!n&S!Z#d&S!Z#t&S!Z#x&S!Z%P&S!Z%R&S!Z%T&S!Z%U&S!Z%X&S!Z%Z&S!Z%^&S!Z%_&S!Z%a&S!Z%n&S!Z%t&S!Z%v&S!Z%x&S!Z%z&S!Z%}&S!Z&T&S!Z&X&S!Z&Z&S!Z&]&S!Z&_&S!Z&a&S!Z'Q&S!Z'Z&S!Z'd&S!Z'm&S!Z'z&S!Z!S&S!Z%{&S!Z`&S!Z&Q&S!Z~O_$[O!{8_O'U$[O~O_$[O!]!wO!{8_O'U$[O~OP$iqZ$iqj$iqv$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq#m$iq'd$iq!R$iq!S$iq~P!#rO!R&yq!S&yq~P#)gO_$[O!{8tO'U$[O~OP$|yZ$|yj$|yv$|y!a$|y!b$|y!d$|y!j$|y#[$|y#]$|y#^$|y#_$|y#`$|y#a$|y#b$|y#c$|y#e$|y#g$|y#i$|y#j$|y#m$|y'd$|y!R$|y!S$|y~P!#rOn'fX~P.jOn[X!O[X!c[X%r[X!T[X%Q[X!][X~P$zO!]dX!c[X!cdX'ndX~P;aOP9VOQ9VO]cOb:mOc!jOhcOj9VOkcOlcOq9VOs9VOxRO{cO|cO}cO!TSO!_9XO!dUO!g9VO!h9VO!i9VO!j9VO!k9VO!n!iO#t!lO#x^O'Z'bO'dQO'mYO'z:kO~O!R9hO!S$]a~O]#qOh$OOj#rOk#qOl#qOq$POs9mOx#xO!T#yO!_:pO!d#vO#V9sO#t$TO$_9oO$a9qO$d$UO'Z&zO'd#sO~O#d'iO~P&-UO!S[X!SdX~P;aO#W9[O~O!]!wO#W9[O~O!{9kO~O#c9aO~O!{9tO!R'sX!S'sX~O!{9kO!R'qX!S'qX~O#W9uO~O'_9wO~P!#rO#W9|O~O#W9}O~O!]!wO#W:OO~O!]!wO#W9uO~O#m:PO~P#)gO#W:QO~O#W:RO~O#W:SO~O#W:TO~O#m:UO~P!#rO#m:VO~P!#rO#x~!b!r!t!u#U#V'z$_$a$d$u%P%Q%R%X%Z%^%_%a%c~UT#x'z#]}'W'X#z'W'Z'e~",goto:"#Ed(XPPPPPPPP(YP(jP*^PPPP-uPP.[3n5b5uP5uPPP5uP7c5uP5uP7gPP7lP8Qk|}?O}!O>k!O!P?`!P!QCl!Q!R!0[!R![!1q![!]!7s!]!^!8V!^!_!8g!_!`!9d!`!a!:[!a!b!U#R#S2`#S#T!>i#T#o2`#o#p!>y#p#q!?O#q#r!?f#r#s!?x#s$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$I|2`$I|$I}!Bq$I}$JO!Bq$JO$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`W%YR$UWO!^%T!_#o%T#p~%T,T%jg$UW'W+{OX%TXY%cYZ%TZ[%c[p%Tpq%cq!^%T!_#o%T#p$f%T$f$g%c$g#BY%T#BY#BZ%c#BZ$IS%T$IS$I_%c$I_$JT%T$JT$JU%c$JU$KV%T$KV$KW%c$KW&FU%T&FU&FV%c&FV?HT%T?HT?HU%c?HU~%T,T'YR$UW'X+{O!^%T!_#o%T#p~%T$T'jS$UW!j#{O!^%T!_!`'v!`#o%T#p~%T$O'}S#e#v$UWO!^%T!_!`(Z!`#o%T#p~%T$O(bR#e#v$UWO!^%T!_#o%T#p~%T'u(rZ$UW]!ROY(kYZ)eZr(krs*rs!^(k!^!_+U!_#O(k#O#P-b#P#o(k#o#p+U#p~(k&r)jV$UWOr)ers*Ps!^)e!^!_*a!_#o)e#o#p*a#p~)e&r*WR$P&j$UWO!^%T!_#o%T#p~%T&j*dROr*ars*ms~*a&j*rO$P&j'u*{R$P&j$UW]!RO!^%T!_#o%T#p~%T'm+ZV]!ROY+UYZ*aZr+Urs+ps#O+U#O#P+w#P~+U'm+wO$P&j]!R'm+zROr+Urs,Ts~+U'm,[U$P&j]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R,sU]!ROY,nZr,nrs-Vs#O,n#O#P-[#P~,n!R-[O]!R!R-_PO~,n'u-gV$UWOr(krs-|s!^(k!^!_+U!_#o(k#o#p+U#p~(k'u.VZ$P&j$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/PZ$UW]!ROY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x!Z/yR$UW]!RO!^%T!_#o%T#p~%T!Z0XT$UWO!^.x!^!_,n!_#o.x#o#p,n#p~.xy0mZ$UWOt%Ttu1`u!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`y1g]$UW'mqOt%Ttu1`u!Q%T!Q![1`![!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`&i2k_$UW#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`[3q_$UW#zSOt%Ttu3ju}%T}!O3j!O!Q%T!Q![3j![!^%T!_!c%T!c!}3j!}#R%T#R#S3j#S#T%T#T#o3j#p$g%T$g~3j$O4wS#^#v$UWO!^%T!_!`5T!`#o%T#p~%T$O5[R$UW#o#vO!^%T!_#o%T#p~%T%r5lU'v%j$UWOv%Tvw6Ow!^%T!_!`5T!`#o%T#p~%T$O6VS$UW#i#vO!^%T!_!`5T!`#o%T#p~%T'u6jZ$UW]!ROY6cYZ7]Zw6cwx*rx!^6c!^!_8T!_#O6c#O#P:T#P#o6c#o#p8T#p~6c&r7bV$UWOw7]wx*Px!^7]!^!_7w!_#o7]#o#p7w#p~7]&j7zROw7wwx*mx~7w'm8YV]!ROY8TYZ7wZw8Twx+px#O8T#O#P8o#P~8T'm8rROw8Twx8{x~8T'm9SU$P&j]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R9kU]!ROY9fZw9fwx-Vx#O9f#O#P9}#P~9f!R:QPO~9f'u:YV$UWOw6cwx:ox!^6c!^!_8T!_#o6c#o#p8T#p~6c'u:xZ$P&j$UW]!ROY;kYZ%TZw;kwx/rx!^;k!^!_9f!_#O;k#O#PW{!^%T!_!`5T!`#o%T#p~%T$O>_S#[#v$UWO!^%T!_!`5T!`#o%T#p~%T$u>rSj$m$UWO!^%T!_!`5T!`#o%T#p~%T&i?VR!R&a$UWO!^%T!_#o%T#p~%T&i?gVu%n$UWO!O%T!O!P?|!P!Q%T!Q![@r![!^%T!_#o%T#p~%Ty@RT$UWO!O%T!O!P@b!P!^%T!_#o%T#p~%Ty@iR!Qq$UWO!^%T!_#o%T#p~%Ty@yZ$UWkqO!Q%T!Q![@r![!^%T!_!g%T!g!hAl!h#R%T#R#S@r#S#X%T#X#YAl#Y#o%T#p~%TyAqZ$UWO{%T{|Bd|}%T}!OBd!O!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyBiV$UWO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%TyCVV$UWkqO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%T,TCs`$UW#]#vOYDuYZ%TZzDuz{Jl{!PDu!P!Q!-e!Q!^Du!^!_Fx!_!`!.^!`!a!/]!a!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXD|[$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXEy_$UW}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%TPF}V}POYFxZ!PFx!P!QGd!Q!}Fx!}#OG{#O#PHh#P~FxPGiU}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGdPHOTOYG{Z#OG{#O#PH_#P#QFx#Q~G{PHbQOYG{Z~G{PHkQOYFxZ~FxXHvY$UWOYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~HqXIkV$UWOYHqYZ%TZ!^Hq!^!_G{!_#oHq#o#pG{#p~HqXJVV$UWOYDuYZ%TZ!^Du!^!_Fx!_#oDu#o#pFx#p~Du,TJs^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q!,R!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,TKtV$UWOzKoz{LZ{!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TL`X$UWOzKoz{LZ{!PKo!P!QL{!Q!^Ko!^!_M]!_#oKo#o#pM]#p~Ko,TMSR$UWU+{O!^%T!_#o%T#p~%T+{M`ROzM]z{Mi{~M]+{MlTOzM]z{Mi{!PM]!P!QM{!Q~M]+{NQOU+{,TNX^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q! T!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl,T! ^_$UWU+{}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%T+{!!bY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!&x!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#VY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!#u!Q!}!!]!}#O!$`#O#P!&f#P~!!]+{!#|UU+{}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGd+{!$cWOY!$`YZM]Zz!$`z{!${{#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%OYOY!$`YZM]Zz!$`z{!${{!P!$`!P!Q!%n!Q#O!$`#O#P!&S#P#Q!!]#Q~!$`+{!%sTU+{OYG{Z#OG{#O#PH_#P#QFx#Q~G{+{!&VTOY!$`YZM]Zz!$`z{!${{~!$`+{!&iTOY!!]YZM]Zz!!]z{!#Q{~!!]+{!&}_}POzM]z{Mi{#ZM]#Z#[!&x#[#]M]#]#^!&x#^#aM]#a#b!&x#b#gM]#g#h!&x#h#iM]#i#j!&x#j#mM]#m#n!&x#n~M],T!(R[$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!(|^$UWOY!'|YZKoZz!'|z{!(w{!P!'|!P!Q!)x!Q!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|,T!*PY$UWU+{OYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~Hq,T!*tX$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#o!'|#o#p!$`#p~!'|,T!+fX$UWOYJlYZKoZzJlz{NQ{!^Jl!^!_!!]!_#oJl#o#p!!]#p~Jl,T!,Yc$UW}POzKoz{LZ{!^Ko!^!_M]!_#ZKo#Z#[!,R#[#]Ko#]#^!,R#^#aKo#a#b!,R#b#gKo#g#h!,R#h#iKo#i#j!,R#j#mKo#m#n!,R#n#oKo#o#pM]#p~Ko,T!-lV$UWT+{OY!-eYZ%TZ!^!-e!^!_!.R!_#o!-e#o#p!.R#p~!-e+{!.WQT+{OY!.RZ~!.R$P!.g[$UW#o#v}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Du]!/f[#wS$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Duy!0cd$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#U%T#U#V!3X#V#X%T#X#YAl#Y#b%T#b#c!2w#c#d!4m#d#l%T#l#m!5{#m#o%T#p~%Ty!1x_$UWkqO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#X%T#X#YAl#Y#b%T#b#c!2w#c#o%T#p~%Ty!3OR$UWkqO!^%T!_#o%T#p~%Ty!3^W$UWO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#o%T#p~%Ty!3}Y$UWkqO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#b%T#b#c!2w#c#o%T#p~%Ty!4rV$UWO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#o%T#p~%Ty!5`X$UWkqO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#b%T#b#c!2w#c#o%T#p~%Ty!6QZ$UWO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#o%T#p~%Ty!6z]$UWkqO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#b%T#b#c!2w#c#o%T#p~%T%w!7|R!]V$UW#m%hO!^%T!_#o%T#p~%T!P!8^R_w$UWO!^%T!_#o%T#p~%T+c!8rR'`d!a%Y#x&s'zP!P!Q!8{!^!_!9Q!_!`!9_W!9QO$WW#v!9VP#`#v!_!`!9Y#v!9_O#o#v#v!9dO#a#v%w!9kT!{%o$UWO!^%T!_!`'v!`!a!9z!a#o%T#p~%T$P!:RR#W#w$UWO!^%T!_#o%T#p~%T%w!:gT'_!s#a#v$RS$UWO!^%T!_!`!:v!`!a!;W!a#o%T#p~%T$O!:}R#a#v$UWO!^%T!_#o%T#p~%T$O!;_T#`#v$UWO!^%T!_!`5T!`!a!;n!a#o%T#p~%T$O!;uS#`#v$UWO!^%T!_!`5T!`#o%T#p~%T%w!]S#g#v$UWO!^%T!_!`5T!`#o%T#p~%T$P!>pR$UW'd#wO!^%T!_#o%T#p~%T~!?OO!T~%r!?VT'u%j$UWO!^%T!_!`5T!`#o%T#p#q!=P#q~%T$u!?oR!S$knQ$UWO!^%T!_#o%T#p~%TX!@PR!kP$UWO!^%T!_#o%T#p~%T,T!@gr$UW'W+{#zS'Z%k'epOX%TXY%cYZ%TZ[%c[p%Tpq%cqt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`,T!CO_$UW'X+{#zS'Z%k'epOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`",tokenizers:[noSemicolon,incdecToken,template,0,1,2,3,4,5,6,7,8,insertSemicolon],topRules:{Script:[0,7]},dialects:{jsx:11335,ts:11337},dynamicPrecedences:{"149":1,"176":1},specialized:[{term:287,get:(o,e)=>tsExtends(o,e)<<1},{term:287,get:o=>spec_identifier[o]||-1},{term:297,get:o=>spec_word[o]||-1},{term:63,get:o=>spec_LessThan[o]||-1}],tokenPrec:11358}),snippets=[snippetCompletion("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),snippetCompletion("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),snippetCompletion("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),snippetCompletion(`try { + \${} +} catch (\${error}) { + \${} +}`,{label:"try",detail:"block",type:"keyword"}),snippetCompletion(`class \${name} { + constructor(\${params}) { + \${} + } +}`,{label:"class",detail:"definition",type:"keyword"}),snippetCompletion('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),snippetCompletion('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],javascriptLanguage=LRLanguage.define({parser:parser.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\s*({|else\b)/}),TryStatement:continuedIndent({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:flatIndent,SwitchBody:o=>{let e=o.textAfter,s=/^\s*\}/.test(e),a=/^\s*(case|default)\b/.test(e);return o.baseIndent+(s?0:a?1:2)*o.unit},Block:delimitedIndent({closing:"}"}),ArrowFunction:o=>o.baseIndent+o.unit,"TemplateString BlockComment":()=>-1,"Statement Property":continuedIndent({except:/^{/}),JSXElement(o){let e=/^\s*<\//.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},JSXEscape(o){let e=/\s*\}/.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},"JSXOpenTag JSXSelfClosingTag"(o){return o.column(o.node.from)+o.unit}}),foldNodeProp.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression":foldInside$1,BlockComment(o){return{from:o.from+2,to:o.to-2}}}),styleTags({"get set async static":tags.modifier,"for while do if else switch try catch finally return throw break continue default case":tags.controlKeyword,"in of await yield void typeof delete instanceof":tags.operatorKeyword,"let var const function class extends":tags.definitionKeyword,"import export from":tags.moduleKeyword,"with debugger as new":tags.keyword,TemplateString:tags.special(tags.string),Super:tags.atom,BooleanLiteral:tags.bool,this:tags.self,null:tags.null,Star:tags.modifier,VariableName:tags.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":tags.function(tags.variableName),VariableDefinition:tags.definition(tags.variableName),Label:tags.labelName,PropertyName:tags.propertyName,PrivatePropertyName:tags.special(tags.propertyName),"CallExpression/MemberExpression/PropertyName":tags.function(tags.propertyName),"FunctionDeclaration/VariableDefinition":tags.function(tags.definition(tags.variableName)),"ClassDeclaration/VariableDefinition":tags.definition(tags.className),PropertyDefinition:tags.definition(tags.propertyName),PrivatePropertyDefinition:tags.definition(tags.special(tags.propertyName)),UpdateOp:tags.updateOperator,LineComment:tags.lineComment,BlockComment:tags.blockComment,Number:tags.number,String:tags.string,ArithOp:tags.arithmeticOperator,LogicOp:tags.logicOperator,BitOp:tags.bitwiseOperator,CompareOp:tags.compareOperator,RegExp:tags.regexp,Equals:tags.definitionOperator,"Arrow : Spread":tags.punctuation,"( )":tags.paren,"[ ]":tags.squareBracket,"{ }":tags.brace,"InterpolationStart InterpolationEnd":tags.special(tags.brace),".":tags.derefOperator,", ;":tags.separator,TypeName:tags.typeName,TypeDefinition:tags.definition(tags.typeName),"type enum interface implements namespace module declare":tags.definitionKeyword,"abstract global Privacy readonly override":tags.modifier,"is keyof unique infer":tags.operatorKeyword,JSXAttributeValue:tags.attributeValue,JSXText:tags.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":tags.angleBracket,"JSXIdentifier JSXNameSpacedName":tags.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":tags.attributeName})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),typescriptLanguage=javascriptLanguage.configure({dialect:"ts"}),jsxLanguage=javascriptLanguage.configure({dialect:"jsx"}),tsxLanguage=javascriptLanguage.configure({dialect:"jsx ts"});function javascript(o={}){let e=o.jsx?o.typescript?tsxLanguage:jsxLanguage:o.typescript?typescriptLanguage:javascriptLanguage;return new LanguageSupport(e,javascriptLanguage.data.of({autocomplete:ifNotIn(["LineComment","BlockComment","String"],completeFromList(snippets))}))}const useObserver=(o,{root:e,rootMargin:s,threshold:a}={},c=[])=>{const d=react.exports.useRef(null),_=react.exports.useRef(null);return react.exports.useCallback(k=>{d.current&&_.current&&(_.current.unobserve(d.current),_.current.disconnect(),_.current=null),k&&(_.current=new IntersectionObserver(o,{root:e,rootMargin:s,threshold:a}),_.current.observe(k),d.current=k)},[d,e,s,JSON.stringify(a),...c])},useInView=({root:o,rootMargin:e,threshold:s,unobserveOnEnter:a,target:c,onEnter:d,onLeave:_,defaultInView:b}={},k=[])=>{const[$,j]=react.exports.useState({inView:b||!1,entry:null,observer:null}),_e=react.exports.useCallback(([tt],nt)=>{const rt=nt.thresholds.some(it=>tt.intersectionRatio>=it)&&tt.isIntersecting;j({inView:rt,entry:tt,observer:nt}),rt&&a&&(nt.unobserve(tt.target),nt.disconnect()),rt?d==null||d(tt,nt):_==null||_(tt,nt)},[d,_,a]),et=useObserver(_e,{root:o,rootMargin:e,threshold:s},[a,...k]);return react.exports.useEffect(()=>{c!=null&&c.current&&et(c.current)},[c,et]),[et,$.inView,$.entry,$.observer]},WebMidi=_WebMidi;function enableWebMidi(){return new Promise((o,e)=>{if(WebMidi.enabled){o(WebMidi);return}WebMidi.enable(s=>{s&&e(s),o(WebMidi)})})}const outputByName=o=>WebMidi.getOutputByName(o);Pattern$4.prototype.midi=function(o,e=1){var s,a,c;if(isPattern$1((s=o==null?void 0:o.constructor)==null?void 0:s.name))throw new Error(`.midi does not accept Pattern input. Make sure to pass device name with single quotes. Example: .midi('${((c=(a=WebMidi.outputs)==null?void 0:a[0])==null?void 0:c.name)||"IAC Driver Bus 1"}')`);return this._withHap(d=>{const _=(b,k)=>{var tt,nt;let $=k.value;const j=(nt=(tt=k.context)==null?void 0:tt.velocity)!=null?nt:.9;if(!isNote$2($))throw new Error("not a note: "+$);if(!WebMidi.enabled)throw new Error("\u{1F3B9} WebMidi is not enabled. Supported Browsers: https://caniuse.com/?search=webmidi");if(!WebMidi.outputs.length)throw new Error("\u{1F50C} No MIDI devices found. Connect a device or enable IAC Driver.");let _e;if(typeof o=="number"?_e=WebMidi.outputs[o]:typeof o=="string"?_e=outputByName(o):_e=WebMidi.outputs[0],!_e)throw new Error(`\u{1F50C} MIDI device '${o||""}' not found. Use one of ${WebMidi.outputs.map(st=>`'${st.name}'`).join(" | ")}`);const et=WebMidi.time-Tone.getContext().currentTime*1e3;b=b*1e3+et,_e.playNote($,e,{time:b,duration:k.duration.valueOf()*1e3-5,velocity:j})};return d.setContext(wt(Ot({},d.context),{onTrigger:_}))})};const ivory="#abb2bf",stone="#7d8799",invalid="#ffffff",darkBackground="#21252b",highlightBackground="rgba(0, 0, 0, 0.5)",background="transparent",tooltipBackground="#353a42",selection="rgba(128, 203, 196, 0.5)",cursor="#ffcc00",materialPalenightTheme=EditorView.theme({"&":{color:"#ffffff",backgroundColor:background,fontSize:"15px","z-index":11},".cm-content":{caretColor:cursor,lineHeight:"22px"},".cm-line":{background:"#2C323699"},"&.cm-focused .cm-cursor":{backgroundColor:cursor,width:"3px"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:selection},".cm-panels":{backgroundColor:darkBackground,color:"#ffffff"},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:highlightBackground},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{background:"transparent",color:"#676e95",border:"none"},".cm-activeLineGutter":{backgroundColor:highlightBackground},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:tooltipBackground},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:highlightBackground,color:ivory}}},{dark:!0}),materialPalenightHighlightStyle=HighlightStyle.define([{tag:tags.keyword,color:"#c792ea"},{tag:tags.operator,color:"#89ddff"},{tag:tags.special(tags.variableName),color:"#eeffff"},{tag:tags.typeName,color:"#f07178"},{tag:tags.atom,color:"#f78c6c"},{tag:tags.number,color:"#ff5370"},{tag:tags.definition(tags.variableName),color:"#82aaff"},{tag:tags.string,color:"#c3e88d"},{tag:tags.special(tags.string),color:"#f07178"},{tag:tags.comment,color:stone},{tag:tags.variableName,color:"#f07178"},{tag:tags.tagName,color:"#ff5370"},{tag:tags.bracket,color:"#a2a1a4"},{tag:tags.meta,color:"#ffcb6b"},{tag:tags.attributeName,color:"#c792ea"},{tag:tags.propertyName,color:"#c792ea"},{tag:tags.className,color:"#decb6b"},{tag:tags.invalid,color:invalid}]),materialPalenight=[materialPalenightTheme,materialPalenightHighlightStyle],setHighlights=StateEffect.define(),highlightField=StateField.define({create(){return Decoration.none},update(o,e){try{for(let s of e.effects)s.is(setHighlights)&&(o=Decoration.set(s.value.flatMap(a=>(a.context.locations||[]).map(({start:c,end:d})=>{const _=a.context.color||"#FFCA28";let b=e.newDoc.line(c.line).from+c.column,k=e.newDoc.line(d.line).from+d.column;const $=e.newDoc.length;return b>$||k>$?void 0:Decoration.mark({attributes:{style:`outline: 1px solid ${_}`}}).range(b,k)})).filter(Boolean),!0));return o}catch{return o}},provide:o=>EditorView.decorations.from(o)});function CodeMirror({value:o,onChange:e,onViewChanged:s,onCursor:a,options:c,editorDidMount:d}){return jsx(Fragment,{children:jsx(CodeMirror$1,{onViewChange:s,style:{display:"flex",flexDirection:"column",flex:"1 0 auto"},value:o,onChange:e,extensions:[javascript(),materialPalenight,highlightField]})})}function useCycle(o){const{onEvent:e,onQuery:s,onSchedule:a,ready:c=!0,onDraw:d}=o,[_,b]=react.exports.useState(!1),k=1,$=()=>Math.floor(Tone.getTransport().seconds/k),j=(nt=$())=>{const st=new TimeSpan$1(nt,nt+1),rt=(s==null?void 0:s(new State$1(st)))||[];a==null||a(rt,nt);const it=st.begin.valueOf();Tone.getTransport().cancel(it);const at=(nt+1)*k-.5,ot=Math.max(Tone.getTransport().seconds,at)+.1;Tone.getTransport().schedule(()=>{j(nt+1)},ot),rt==null||rt.filter(ht=>{var ct;return ht.part.begin.equals((ct=ht.whole)==null?void 0:ct.begin)}).forEach(ht=>{Tone.getTransport().schedule(ct=>{e(ct,ht,Tone.getContext().currentTime),Tone.Draw.schedule(()=>{d==null||d(ct,ht)},ct)},ht.part.begin.valueOf())})};react.exports.useEffect(()=>{c&&j()},[e,a,s,d,c]);const _e=async()=>{b(!0),await Tone.start(),Tone.getTransport().start("+0.1")},et=()=>{Tone.getTransport().pause(),b(!1)};return{start:_e,stop:et,onEvent:e,started:_,setStarted:b,toggle:()=>_?et():_e(),query:j,activeCycle:$}}function usePostMessage(o){return react.exports.useEffect(()=>(window.addEventListener("message",o),()=>window.removeEventListener("message",o)),[o]),react.exports.useCallback(e=>window.postMessage(e,"*"),[])}let s4=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);const generateHash=o=>encodeURIComponent(btoa(o));function useRepl({tune:o,defaultSynth:e,autolink:s=!0,onEvent:a,onDraw:c}){const d=react.exports.useMemo(()=>s4(),[]),[_,b]=react.exports.useState(o),[k,$]=react.exports.useState(),[j,_e]=react.exports.useState(""),[et,tt]=react.exports.useState(),[nt,st]=react.exports.useState(!1),[rt,it]=react.exports.useState(""),[at,ot]=react.exports.useState(),ht=react.exports.useMemo(()=>_!==k||et,[_,k,et]),ct=react.exports.useCallback(ft=>_e(mt=>mt+`${mt?` -`:""}${ft}`),[]),ut=react.exports.useMemo(()=>{if(k&&!k.includes("strudel disable-highlighting"))return(ft,mt)=>c==null?void 0:c(ft,mt,k)},[k,c]),ot=useCycle({onDraw:ut,onEvent:react.exports.useCallback((ft,mt,yt)=>{var At;try{a==null||a(mt),(At=mt.context.logs)!=null&&At.length&&mt.context.logs.forEach(ct);const{onTrigger:vt,velocity:St}=mt.context;if(vt)vt(ft,mt,yt,1,mt.wholeOrPart().begin.valueOf(),mt.duration.valueOf());else if(e){const Tt=getPlayableNoteValue(mt);e.triggerAttackRelease(Tt,mt.duration.valueOf(),ft,St)}else throw new Error("no defaultSynth passed to useRepl.")}catch(vt){console.warn(vt),vt.message="unplayable event: "+(vt==null?void 0:vt.message),ct(vt.message)}},[a,ct,e]),onQuery:react.exports.useCallback(ft=>{try{return(at==null?void 0:at.query(ft))||[]}catch(mt){return console.warn(mt),mt.message="query error: "+mt.message,tt(mt),[]}},[at]),onSchedule:react.exports.useCallback((ft,mt)=>Et(ft,mt),[]),ready:!!at&&!!k}),ht=usePostMessage(({data:{from:ft,type:mt}})=>{mt==="start"&&ft!==d&&(ot.setStarted(!1),$(void 0))}),pt=react.exports.useCallback(async(ft=_)=>{if(k&&!dt){tt(void 0),ot.start();return}try{it(!0);const mt=await evaluate(ft);ot.start(),ht({type:"start",from:d}),lt(()=>mt.pattern),s&&(window.location.hash="#"+encodeURIComponent(btoa(_))),st(generateHash(_)),tt(void 0),$(ft),it(!1)}catch(mt){mt.message="evaluation error: "+mt.message,console.warn(mt),tt(mt)}},[k,dt,_,ot,s,d,ht]),Et=(ft,mt)=>{ft.length};return{pending:nt,code:_,setCode:b,pattern:at,error:et,cycle:ot,setPattern:lt,dirty:dt,log:j,togglePlay:()=>{ot.started?ot.stop():pt()},setActiveCode:$,activateCode:pt,activeCode:k,pushLog:ct,hash:rt}}function cx(...o){return o.filter(Boolean).join(" ")}let highlights=[],lastEnd;function useHighlighting({view:o,pattern:e,active:s}){react.exports.useEffect(()=>{if(o)if(e&&s){let c=function(){try{const d=Tone$1.getTransport().seconds,b=[Math.max(lastEnd||d,d-1/10),d+1/60];lastEnd=d+1/60,highlights=highlights.filter($=>$.whole.end>d);const k=e.queryArc(...b).filter($=>$.hasOnset());highlights=highlights.concat(k),o.dispatch({effects:setHighlights.of(highlights)})}catch{o.dispatch({effects:setHighlights.of([])})}a=requestAnimationFrame(c)},a=requestAnimationFrame(c);return()=>{cancelAnimationFrame(a)}}else highlights=[],o.dispatch({effects:setHighlights.of([])})},[e,s,o])}const container="_container_10e1g_1",header="_header_10e1g_5",buttons="_buttons_10e1g_9",button="_button_10e1g_9",buttonDisabled="_buttonDisabled_10e1g_17",error="_error_10e1g_21",body="_body_10e1g_25";var styles={container,header,buttons,button,buttonDisabled,error,body};function Icon({type:o}){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"sc-h-5 sc-w-5",viewBox:"0 0 20 20",fill:"currentColor",children:{refresh:jsx("path",{fillRule:"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z",clipRule:"evenodd"}),play:jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"}),pause:jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}[o]})}function MiniRepl$1({tune:o,defaultSynth:e,hideOutsideView:s=!1}){const{code:a,setCode:c,pattern:d,activateCode:_,error:b,cycle:k,dirty:$,togglePlay:j}=useRepl({tune:o,defaultSynth:e,autolink:!1}),[_e,et]=react.exports.useState(),[tt,nt]=useInView({threshold:.01}),it=react.exports.useRef(),rt=react.exports.useMemo(()=>((nt||!s)&&(it.current=!0),nt||it.current),[nt,s]);return useHighlighting({view:_e,pattern:d,active:k.started}),jsxs("div",{className:styles.container,ref:tt,children:[jsxs("div",{className:styles.header,children:[jsxs("div",{className:styles.buttons,children:[jsx("button",{className:cx(styles.button,k.started?"sc-animate-pulse":""),onClick:()=>j(),children:jsx(Icon,{type:k.started?"pause":"play"})}),jsx("button",{className:cx($?styles.button:styles.buttonDisabled),onClick:()=>_(),children:jsx(Icon,{type:"refresh"})})]}),b&&jsx("div",{className:styles.error,children:b.message})]}),jsx("div",{className:styles.body,children:rt&&jsx(CodeMirror,{value:a,onChange:c,onViewChanged:et})})]})}var WebDirtPacked$1={exports:{}};(function(o,e){(function(s,a){o.exports=a()})(self,()=>(()=>{var s={d:($,j)=>{for(var _e in j)s.o(j,_e)&&!s.o($,_e)&&Object.defineProperty($,_e,{enumerable:!0,get:j[_e]})},o:($,j)=>Object.prototype.hasOwnProperty.call($,j),r:$=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty($,Symbol.toStringTag,{value:"Module"}),Object.defineProperty($,"__esModule",{value:!0})}},a={};function c($,j){if(this.msg=$,this.ac=j.ac,this.sampleBank=j.sampleBank,this.outputNode=j.destination,this.cutGroups=j.cutGroups,this.eventCounter=j.eventCounter,this.audioOutputs=j.audioOutputs,this.workletsAvailable=j.workletsAvailable,typeof $.buffer=="object")this.bufferContainer=$.buffer;else{if(this.sampleBank==null)return void console.log("WebDirt: there is no sample bank, cancelling event");if(typeof this.sampleBank!="object")return void console.log("WebDirt: buffer not provided by calling application + no WebDirt sample bank");if(this.msg.n=parseInt(this.msg.n),isNaN(this.msg.n)&&(this.msg.n=0),!this.sampleBank.sampleNameExists(this.msg.s))return void console.log("WebDirt: no sample named "+this.msg.s+" exists in sample map");if(!this.sampleBank.getBufferMightSucceed(this.msg.s,this.msg.n))return}if(this.when=this.msg.when,isNaN(this.when))console.log("WebDirt: 'when' is null or not a number");else if(this.nudge=parseFloat(this.msg.nudge),isNaN(this.nudge)||(this.when=this.when+this.nudge),isNaN(parseFloat(this.msg.speed))&&(this.msg.speed=1),this.msg.speed!=0)if(isNaN(parseFloat(this.msg.note))&&(this.msg.note=0),this.msg.speed=this.msg.speed*Math.pow(2,this.msg.note/12),this.msg.begin=d(this.msg.begin,0),this.msg.end=d(this.msg.end,1),this.msg.end!=this.msg.begin){if(this.msg.begin>this.msg.end&&(this.msg.speed=-1*this.msg.speed),this.msg.speed<0&&(this.msg.begin=1-this.msg.begin,this.msg.end=1-this.msg.end),this.msg.begin>this.msg.end){let ht=this.msg.begin;this.msg.begin=this.msg.end,this.msg.end=ht}var _e;if(this.source=_e=this.ac.createBufferSource(),this.source.onended=this.disconnectHandler(),this.disconnectOnEnd(this.source),this.source.playbackRate.value=Math.abs(this.msg.speed),this.prepareBuffer(),this.buffer!=null)this.source.buffer=this.buffer,this.start();else{var et=this,tt=1e3*(this.msg.when-this.ac.currentTime-.2);tt<=0&&(tt=1e3*(this.msg.when-this.ac.currentTime-.2)),tt>0&&setTimeout(function(){et.prepareBuffer(),et.buffer!=null?(et.source.buffer=et.buffer,et.start()):(console.log("WebDirt: unable to access sample "+$.s+":"+$.n+" on second attempt"),et.stopAll())},tt)}this.cut(this.msg.cut,this.msg.s),_e=this.shape(_e,this.msg.shape),_e=this.lowPassFilter(_e,this.msg.cutoff,this.msg.resonance),_e=this.highPassFilter(_e,this.msg.hcutoff,this.msg.hresonance),_e=this.bandPassFilter(_e,this.msg.bandf,this.msg.bandq),_e=this.vowel(_e,this.msg.vowel),_e=this.delay(_e,this.msg.delay,this.msg.delaytime,this.msg.delayfeedback),_e=this.loop(_e,this.msg.loop,this.msg.begin,this.msg.end,this.msg.speed),_e=this.crush(_e,this.msg.crush),_e=this.coarse(_e,this.msg.coarse),this.unit(this.msg.unit,this.msg.speed);var nt=parseFloat(this.msg.gain);isNaN(nt)&&(nt=1),nt>2&&(nt=2),nt<0&&(nt=0);var it=parseFloat(this.msg.overgain);isNaN(it)||(nt+=it),nt=Math.pow(nt,4);var rt,st,at,lt=parseFloat($.pan);if(isNaN(lt)&&(lt=.5),this.audioOutputs==2)(lt>1||lt<0)&&(lt-=Math.floor(lt)),rt=lt,st=0,at=1;else{var dt=(lt-=Math.floor(lt))*this.audioOutputs;(at=(st=Math.floor(dt))+1)>=this.audioOutputs&&(at=0),rt=dt-Math.floor(dt)}var ct=this.ac.createGain();this.disconnectOnEnd(ct);var ut=this.ac.createGain();this.disconnectOnEnd(ut),ct.gain.value=Math.cos(rt*Math.PI/2)*nt,ut.gain.value=Math.sin(rt*Math.PI/2)*nt,_e.connect(ct),_e.connect(ut),this.gain1=ct,this.gain2=ut;var ot=this.ac.createChannelMerger(this.audioOutputs);this.disconnectOnEnd(ot),ct.connect(ot,0,st),ut.connect(ot,0,at),ot.connect(this.outputNode)}else this.stopAll()}function d($,j){let _e=parseFloat($);return isNaN(_e)?j:_e>1?1:_e<0?0:_e}s.r(a),s.d(a,{WebDirt:()=>k}),c.prototype.prepareBuffer=function(){typeof this.bufferContainer=="object"?typeof this.bufferContainer.buffer=="object"&&(this.msg.speed>=0?this.buffer=this.bufferContainer.buffer:(typeof this.bufferContainer.reverseBuffer=="object"||(this.bufferContainer.reverseBuffer=this.reverseBuffer(this.ac,this.bufferContainer.buffer)),this.buffer=this.bufferContainer.reverseBuffer)):(this.msg.speed>=0?this.buffer=this.sampleBank.getBuffer(this.msg.s,this.msg.n):this.buffer=this.sampleBank.getReverseBuffer(this.msg.s,this.msg.n),this.buffer=this.accel(this.buffer,this.msg.accelerate,this.msg.speed))},c.prototype.disconnectOnEnd=function($){this.source.disconnectQueue==null&&(this.source.disconnectQueue=new Array),this.source.disconnectQueue.unshift($)},c.prototype.start=function(){let $=Math.abs(this.msg.speed),j=(this.msg.end-this.msg.begin)*this.source.buffer.duration/$,_e=this.msg.begin*this.source.buffer.duration;this.source.start(this.when,_e,j)},c.prototype.stopAll=function(){if(this.source!=null&&this.source.disconnectQueue!=null){for(var $=0;$1&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"coarse-processor");return _e.parameters.get("coarse").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.crush=function($,j){if(j=parseInt(j),isNaN(j)&&(j=null),j!=null&&j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"crush-processor");return _e.parameters.get("crush").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.cut=function($,j){if($=parseInt($),!isNaN($)&&$!=0){for(var _e={cutGroup:$,node:this,sampleName:j},et=0;et2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="highpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.lowPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="lowpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.bandPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=10),_e<1&&(_e=1),_e>100&&(_e=100);var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="bandpass",et.frequency.value=j,et.Q.value=_e,et.gain.value=_e,$.connect(et),et},c.prototype.loop=function($,j){if(isNaN(parseInt(j))||j==0)return $;try{var _e=this.source.buffer.duration-this.msg.begin*this.source.buffer.duration-(1-this.msg.end)*this.source.buffer.duration;return this.source.loop=!0,this.source.loopStart=this.msg.begin*this.source.buffer.duration,this.source.loopEnd=this.msg.end*this.source.buffer.duration,this.source.stop(this.when+_e*j/this.source.playbackRate.value),$}catch{return console.log("WebDirt Warning: buffer data not yet available to calculate loop time - no looping applied"),$}},c.prototype.accelerate=function($,j){if(j=Math.abs(j),isNaN(parseFloat($))&&($=0),$!=0){$=parseFloat($),this.source.playbackRate.setValueAtTime(j,this.when);var _e=Math.abs((this.source.buffer.length*$/this.ac.sampleRate+j)/j),et=j+this.source.buffer.length*$/this.ac.sampleRate;if(et<0)this.source.buffer=this.negativeAccelerateBuffer(this.source.buffer,$,j),this.source.playbackRate.linearRampToValueAtTime(0,this.when+_e),this.source.playbackRate.linearRampToValueAtTime(1,this.when+this.source.buffer.duration);else try{this.source.playbackRate.linearRampToValueAtTime(et,this.when+this.source.buffer.duration)}catch{console.log("WebDirt: Warning, buffer data not loaded, could not apply acclerate effect")}}},c.prototype.negativeAccelerateBuffer=function($,j,_e){var et=$.length,tt=new Float32Array(et),nt=this.ac.createBuffer($.numberOfChannels,$.length,this.ac.sampleRate),it=new Float32Array(et),rt=Math.abs(_e/(_e-j))*et;rt=et*Math.abs((this.source.buffer.length*j/this.ac.sampleRate+_e)/_e)/this.source.buffer.duration,rt=Math.trunc(rt);for(var st=0;st<$.numberOfChannels;st++){$.copyFromChannel(tt,st,0);for(var at=0;at=1&&(j=.999),j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"shape-processor");return _e.parameters.get("shape").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.stop=function($){this.gain1.gain.setValueAtTime(this.gain1.gain.value,$),this.gain1.gain.linearRampToValueAtTime(0,$+.02),this.gain2.gain.setValueAtTime(this.gain1.gain.value,$),this.gain2.gain.linearRampToValueAtTime(0,$+.02)},c.prototype.unit=function($,j){$=="c"&&(this.source.playbackRate.value=this.source.playbackRate.value*this.source.buffer.duration)},c.prototype.vowel=function($,j){if(typeof j!="string")return $;if((j=j.toLowerCase())=="a"||j=="e"||j=="i"||j=="o"||j=="u"){var _e,et,tt,nt=this.ac.createGain();switch(this.disconnectOnEnd(nt),j){case"a":_e=_.a.freqs,et=_.a.qs,tt=_.a.amps;break;case"e":_e=_.e.freqs,et=_.e.qs,tt=_.e.amps;break;case"i":_e=_.i.freqs,et=_.i.qs,tt=_.i.amps;break;case"o":_e=_.o.freqs,et=_.o.qs,tt=_.o.amps;break;case"u":_e=_.u.freqs,et=_.u.qs,tt=_.u.amps}for(var it=0;it<5;it++){var rt=this.ac.createGain();this.disconnectOnEnd(rt),rt.gain.value=tt[it];var st=this.ac.createBiquadFilter();this.disconnectOnEnd(st),st.type="bandpass",st.Q.value=et[it]/8,st.frequency.value=_e[it],$.connect(st),st.connect(rt),rt.connect(nt)}return nt.gain.value=8,nt}return $},c.prototype.reverseBuffer=function($,j){for(var _e=j.length,et=new Float32Array(_e),tt=$.createBuffer(j.numberOfChannels,j.length,$.sampleRate),nt=new Float32Array(_e),it=0;it{console.log("WebDirt: audio worklets added"),this.workletsAvailable=!0}).catch(j=>{console.log("WebDirt: error loading AudioWorklets.js: "+j),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1}):(console.log("WebDirt: browser does not support audio worklets"),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1),this.tempo={time:this.ac.currentTime,beats:0,bpm:30},this.clockDiff=Date.now()/1e3-this.ac.currentTime,this.sampleBank!=null&&(this.sampleBank.ac=this.ac),this.silentNote=this.ac.createOscillator(),this.silentNote.type="sine",this.silentNote.frequency.value=440,this.silentGain=this.ac.createGain(),this.silentGain.gain.value=0,this.silentNote.connect(this.silentGain),this.silentGain.connect(this.ac.destination),this.silentNote.start();var $=this;setTimeout(function(){$.silentGain.disconnect($.ac.destination),$.silentNote.disconnect($.silentGain),$.silentNote.stop(),$.silentGain=null,$.silentNote=null},500)}console.log("WebDirt: initializeWebAudio finished.")},k.prototype.playSample=function($,j){if(j==null&&(j=this.latency),$.whenPosix!=null&&($.when=$.whenPosix-(new Date().getTime()/1e3-this.ac.currentTime)),$.when==null&&($.when=this.ac.currentTime),$.when=$.when+j,typeof $.maxLateness!="number"&&($.maxLateness=this.maxLateness),this.ac.currentTime-$.when>$.maxLateness)return void console.log("WebDirt warning: dropping msg late by "+(this.ac.currentTime-$.when)+" seconds");let _e=new c($,this);return this.eventCounter++,_e},k.prototype.playScore=function($,j,_e){this.initializeWebAudio(),j==null&&(j=this.latency);for(var et=this.ac.currentTime,tt=0,nt=0;nt<$.length;nt++){var it=$[nt];it.when>tt&&(tt=it.when),it.when=it.when+et,it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.playSample(it,j)}setTimeout(function(){typeof _e=="function"&&_e()},1e3*(tt+j))},k.prototype.playScoreWhenReady=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);for(var tt=$.length,nt=0;nt<$.length;nt++){var it=$[nt],rt=this;it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.sampleBank!=null&&this.sampleBank.load(it.sample_name,it.sample_n,function(){(tt-=1)<=0&&(rt.playScore($,j,et),typeof _e=="function"&&_e())})}},k.prototype.loadAndPlayScore=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);var tt=new XMLHttpRequest;tt.open("GET",$,!0),tt.responseType="json";var nt=this;tt.onload=function(){if(tt.readyState!=4)throw Error("readyState != 4 in callback of loadAndPlayScore");if(tt.status!=200)throw Error("status != 200 in callback of loadAndPlayScore");if(tt.response==null)throw Error("JSON response null in callback of loadAndPlayScore");console.log("playing JSON score from "+$),nt.playScoreWhenReady(tt.response,j,_e,et)},tt.send()},k.prototype.renderAndPlayScore=function($,j,_e,et,tt,nt,it){this.initializeWebAudio(),tt==null&&(tt=this.latency),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt.renderAndPlayScore: attempting websocket connection to "+$);var rt=new WebSocket($);rt.onerror=function(){console.log(" ERROR opening websocket connection to "+$)},rt.onopen=function(){console.log(" websocket connection to "+$+" established");try{var at='{"render":'+JSON.stringify(j)+',"cps":'+_e+',"cycles":'+et+"}";console.log(at),rt.send(at),console.log(" render request sent")}catch{console.log(" EXCEPTION during transmission of render request"),rt.close()}};var st=this;rt.onmessage=function(at){var lt=JSON.parse(at.data);if(!lt instanceof Array)return console.log(" WebDirt warning: rendering socket received non-array message"),console.log(typeof lt),void(globalX=lt);console.log(" received score from "+$),st.playScoreWhenReady(lt,tt,nt,it),console.log(" closing websocket connection to "+$),rt.close()}},k.prototype.subscribeToTidalSocket=function($,j){this.initializeWebAudio(),j==null&&(j=!1),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt: attempting websocket connection to "+$),ws=new WebSocket($),ws.onopen=function(){console.log("websocket connection to tidalSocket opened")},ws.onerror=function(){console.log("ERROR opening websocket connection to tidalSocket")};var _e=this;ws.onmessage=function(et){if(et.data==null)throw Error("null data in tidalSocket onmessage handler");var tt=JSON.parse(et.data);if(tt.address==null)throw Error("received message from tidalSocket with no address: "+et.data);if(tt.address!="/play")throw Error("address of message from tidalSocket wasn't /play: "+et.data);if(tt.args.constructor!==Array)throw Error("ERROR: message from tidalSocket where args doesn't exist or isn't an array: "+et.data);if(tt.args.length!=30&&tt.args.length!=33)throw Error("ERROR: message from tidalSocket with "+tt.args.length+" args instead of 30 or 33: "+et.data);var nt={};nt.when=tt.args[0]+tt.args[1]/1e6+_e.clockDiff,nt.sample_name=tt.args[3],nt.begin=tt.args[5],nt.end=tt.args[6],nt.speed=tt.args[7],nt.pan=tt.args[8],nt.vowel=tt.args[10],nt.cutoff=tt.args[11],nt.resonance=tt.args[12],nt.accelerate=tt.args[13],nt.shape=tt.args[14],nt.gain=tt.args[16],nt.cut=tt.args[17],nt.delay=tt.args[18],nt.delaytime=tt.args[19],nt.delayfeedback=tt.args[20],nt.crush=tt.args[21],nt.coarse=tt.args[22],nt.hcutoff=tt.args[23],nt.hresonance=tt.args[24],nt.bandf=tt.args[25],nt.bandq=tt.args[26],nt.unit_name=tt.args[27],nt.sample_loop=tt.args[28],nt.sample_n=tt.args[29],tt.args.length==33&&(nt.attack=tt.args[30],nt.hold=tt.args[31],nt.release=tt.args[32]),_e.playSample(nt),j&&console.log(tt)}},k.prototype.getCurrentTime=function(){return this.ac.currentTime},k.prototype.syncWithEsp=function($){if(typeof EspClient=="function")if(this.espClient==null){this.espClient=new EspClient($,this.ac);var j=this;this.espClient.tempoCallback=function(_e){j.tempo=_e}}else this.espClient.setUrl($);else console.log("WebDirt ERROR: syncWithEsp called but EspClient does not exist")},k.prototype.setTempo=function($){if(typeof $.time!="number")throw Error("WebDirt: no time in setTempo");if(typeof $.beats!="number")throw Error("WebDirt: no beats in setTempo");if(typeof $.bpm!="number")throw Error("WebDirt: no bpm in setTempo");this.espClient!=null&&this.espClient.sendSetTempo($),this.tempo=$},k.prototype.sampleHint=function($){this.sampleBank!=null&&(console.log("WebDirt received sample hint: "+$),this.sampleBank.loadAllNamed($))},a})())})(WebDirtPacked$1);var WebDirtPacked={exports:{}};(function(o,e){(function(s,a){o.exports=a()})(self,()=>(()=>{var s={d:($,j)=>{for(var _e in j)s.o(j,_e)&&!s.o($,_e)&&Object.defineProperty($,_e,{enumerable:!0,get:j[_e]})},o:($,j)=>Object.prototype.hasOwnProperty.call($,j),r:$=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty($,Symbol.toStringTag,{value:"Module"}),Object.defineProperty($,"__esModule",{value:!0})}},a={};function c($,j){if(this.msg=$,this.ac=j.ac,this.sampleBank=j.sampleBank,this.outputNode=j.destination,this.cutGroups=j.cutGroups,this.eventCounter=j.eventCounter,this.audioOutputs=j.audioOutputs,this.workletsAvailable=j.workletsAvailable,typeof $.buffer=="object")this.bufferContainer=$.buffer;else{if(this.sampleBank==null)return void console.log("WebDirt: there is no sample bank, cancelling event");if(typeof this.sampleBank!="object")return void console.log("WebDirt: buffer not provided by calling application + no WebDirt sample bank");if(this.msg.n=parseInt(this.msg.n),isNaN(this.msg.n)&&(this.msg.n=0),!this.sampleBank.sampleNameExists(this.msg.s))return void console.log("WebDirt: no sample named "+this.msg.s+" exists in sample map");if(!this.sampleBank.getBufferMightSucceed(this.msg.s,this.msg.n))return}if(this.when=this.msg.when,isNaN(this.when))console.log("WebDirt: 'when' is null or not a number");else if(this.nudge=parseFloat(this.msg.nudge),isNaN(this.nudge)||(this.when=this.when+this.nudge),isNaN(parseFloat(this.msg.speed))&&(this.msg.speed=1),this.msg.speed!=0)if(isNaN(parseFloat(this.msg.note))&&(this.msg.note=0),this.msg.speed=this.msg.speed*Math.pow(2,this.msg.note/12),this.msg.begin=d(this.msg.begin,0),this.msg.end=d(this.msg.end,1),this.msg.end!=this.msg.begin){if(this.msg.begin>this.msg.end&&(this.msg.speed=-1*this.msg.speed),this.msg.speed<0&&(this.msg.begin=1-this.msg.begin,this.msg.end=1-this.msg.end),this.msg.begin>this.msg.end){let ht=this.msg.begin;this.msg.begin=this.msg.end,this.msg.end=ht}var _e;if(this.source=_e=this.ac.createBufferSource(),this.source.onended=this.disconnectHandler(),this.disconnectOnEnd(this.source),this.source.playbackRate.value=Math.abs(this.msg.speed),this.prepareBuffer(),this.buffer!=null)this.source.buffer=this.buffer,this.start();else{var et=this,tt=1e3*(this.msg.when-this.ac.currentTime-.2);tt<=0&&(tt=1e3*(this.msg.when-this.ac.currentTime-.2)),tt>0&&setTimeout(function(){et.prepareBuffer(),et.buffer!=null?(et.source.buffer=et.buffer,et.start()):(console.log("WebDirt: unable to access sample "+$.s+":"+$.n+" on second attempt"),et.stopAll())},tt)}this.cut(this.msg.cut,this.msg.s),_e=this.shape(_e,this.msg.shape),_e=this.lowPassFilter(_e,this.msg.cutoff,this.msg.resonance),_e=this.highPassFilter(_e,this.msg.hcutoff,this.msg.hresonance),_e=this.bandPassFilter(_e,this.msg.bandf,this.msg.bandq),_e=this.vowel(_e,this.msg.vowel),_e=this.delay(_e,this.msg.delay,this.msg.delaytime,this.msg.delayfeedback),_e=this.loop(_e,this.msg.loop,this.msg.begin,this.msg.end,this.msg.speed),_e=this.crush(_e,this.msg.crush),_e=this.coarse(_e,this.msg.coarse),this.unit(this.msg.unit,this.msg.speed);var nt=parseFloat(this.msg.gain);isNaN(nt)&&(nt=1),nt>2&&(nt=2),nt<0&&(nt=0);var it=parseFloat(this.msg.overgain);isNaN(it)||(nt+=it),nt=Math.pow(nt,4);var rt,st,at,lt=parseFloat($.pan);if(isNaN(lt)&&(lt=.5),this.audioOutputs==2)(lt>1||lt<0)&&(lt-=Math.floor(lt)),rt=lt,st=0,at=1;else{var dt=(lt-=Math.floor(lt))*this.audioOutputs;(at=(st=Math.floor(dt))+1)>=this.audioOutputs&&(at=0),rt=dt-Math.floor(dt)}var ct=this.ac.createGain();this.disconnectOnEnd(ct);var ut=this.ac.createGain();this.disconnectOnEnd(ut),ct.gain.value=Math.cos(rt*Math.PI/2)*nt,ut.gain.value=Math.sin(rt*Math.PI/2)*nt,_e.connect(ct),_e.connect(ut),this.gain1=ct,this.gain2=ut;var ot=this.ac.createChannelMerger(this.audioOutputs);this.disconnectOnEnd(ot),ct.connect(ot,0,st),ut.connect(ot,0,at),ot.connect(this.outputNode)}else this.stopAll()}function d($,j){let _e=parseFloat($);return isNaN(_e)?j:_e>1?1:_e<0?0:_e}s.r(a),s.d(a,{WebDirt:()=>k}),c.prototype.prepareBuffer=function(){typeof this.bufferContainer=="object"?typeof this.bufferContainer.buffer=="object"&&(this.msg.speed>=0?this.buffer=this.bufferContainer.buffer:(typeof this.bufferContainer.reverseBuffer=="object"||(this.bufferContainer.reverseBuffer=this.reverseBuffer(this.ac,this.bufferContainer.buffer)),this.buffer=this.bufferContainer.reverseBuffer)):(this.msg.speed>=0?this.buffer=this.sampleBank.getBuffer(this.msg.s,this.msg.n):this.buffer=this.sampleBank.getReverseBuffer(this.msg.s,this.msg.n),this.buffer=this.accel(this.buffer,this.msg.accelerate,this.msg.speed))},c.prototype.disconnectOnEnd=function($){this.source.disconnectQueue==null&&(this.source.disconnectQueue=new Array),this.source.disconnectQueue.unshift($)},c.prototype.start=function(){let $=Math.abs(this.msg.speed),j=(this.msg.end-this.msg.begin)*this.source.buffer.duration/$,_e=this.msg.begin*this.source.buffer.duration;this.source.start(this.when,_e,j)},c.prototype.stopAll=function(){if(this.source!=null&&this.source.disconnectQueue!=null){for(var $=0;$1&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"coarse-processor");return _e.parameters.get("coarse").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.crush=function($,j){if(j=parseInt(j),isNaN(j)&&(j=null),j!=null&&j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"crush-processor");return _e.parameters.get("crush").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.cut=function($,j){if($=parseInt($),!isNaN($)&&$!=0){for(var _e={cutGroup:$,node:this,sampleName:j},et=0;et2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="highpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.lowPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="lowpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.bandPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=10),_e<1&&(_e=1),_e>100&&(_e=100);var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="bandpass",et.frequency.value=j,et.Q.value=_e,et.gain.value=_e,$.connect(et),et},c.prototype.loop=function($,j){if(isNaN(parseInt(j))||j==0)return $;try{var _e=this.source.buffer.duration-this.msg.begin*this.source.buffer.duration-(1-this.msg.end)*this.source.buffer.duration;return this.source.loop=!0,this.source.loopStart=this.msg.begin*this.source.buffer.duration,this.source.loopEnd=this.msg.end*this.source.buffer.duration,this.source.stop(this.when+_e*j/this.source.playbackRate.value),$}catch{return console.log("WebDirt Warning: buffer data not yet available to calculate loop time - no looping applied"),$}},c.prototype.accelerate=function($,j){if(j=Math.abs(j),isNaN(parseFloat($))&&($=0),$!=0){$=parseFloat($),this.source.playbackRate.setValueAtTime(j,this.when);var _e=Math.abs((this.source.buffer.length*$/this.ac.sampleRate+j)/j),et=j+this.source.buffer.length*$/this.ac.sampleRate;if(et<0)this.source.buffer=this.negativeAccelerateBuffer(this.source.buffer,$,j),this.source.playbackRate.linearRampToValueAtTime(0,this.when+_e),this.source.playbackRate.linearRampToValueAtTime(1,this.when+this.source.buffer.duration);else try{this.source.playbackRate.linearRampToValueAtTime(et,this.when+this.source.buffer.duration)}catch{console.log("WebDirt: Warning, buffer data not loaded, could not apply acclerate effect")}}},c.prototype.negativeAccelerateBuffer=function($,j,_e){var et=$.length,tt=new Float32Array(et),nt=this.ac.createBuffer($.numberOfChannels,$.length,this.ac.sampleRate),it=new Float32Array(et),rt=Math.abs(_e/(_e-j))*et;rt=et*Math.abs((this.source.buffer.length*j/this.ac.sampleRate+_e)/_e)/this.source.buffer.duration,rt=Math.trunc(rt);for(var st=0;st<$.numberOfChannels;st++){$.copyFromChannel(tt,st,0);for(var at=0;at=1&&(j=.999),j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"shape-processor");return _e.parameters.get("shape").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.stop=function($){this.gain1.gain.setValueAtTime(this.gain1.gain.value,$),this.gain1.gain.linearRampToValueAtTime(0,$+.02),this.gain2.gain.setValueAtTime(this.gain1.gain.value,$),this.gain2.gain.linearRampToValueAtTime(0,$+.02)},c.prototype.unit=function($,j){$=="c"&&(this.source.playbackRate.value=this.source.playbackRate.value*this.source.buffer.duration)},c.prototype.vowel=function($,j){if(typeof j!="string")return $;if((j=j.toLowerCase())=="a"||j=="e"||j=="i"||j=="o"||j=="u"){var _e,et,tt,nt=this.ac.createGain();switch(this.disconnectOnEnd(nt),j){case"a":_e=_.a.freqs,et=_.a.qs,tt=_.a.amps;break;case"e":_e=_.e.freqs,et=_.e.qs,tt=_.e.amps;break;case"i":_e=_.i.freqs,et=_.i.qs,tt=_.i.amps;break;case"o":_e=_.o.freqs,et=_.o.qs,tt=_.o.amps;break;case"u":_e=_.u.freqs,et=_.u.qs,tt=_.u.amps}for(var it=0;it<5;it++){var rt=this.ac.createGain();this.disconnectOnEnd(rt),rt.gain.value=tt[it];var st=this.ac.createBiquadFilter();this.disconnectOnEnd(st),st.type="bandpass",st.Q.value=et[it]/8,st.frequency.value=_e[it],$.connect(st),st.connect(rt),rt.connect(nt)}return nt.gain.value=8,nt}return $},c.prototype.reverseBuffer=function($,j){for(var _e=j.length,et=new Float32Array(_e),tt=$.createBuffer(j.numberOfChannels,j.length,$.sampleRate),nt=new Float32Array(_e),it=0;it{console.log("WebDirt: audio worklets added"),this.workletsAvailable=!0}).catch(j=>{console.log("WebDirt: error loading AudioWorklets.js: "+j),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1}):(console.log("WebDirt: browser does not support audio worklets"),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1),this.tempo={time:this.ac.currentTime,beats:0,bpm:30},this.clockDiff=Date.now()/1e3-this.ac.currentTime,this.sampleBank!=null&&(this.sampleBank.ac=this.ac),this.silentNote=this.ac.createOscillator(),this.silentNote.type="sine",this.silentNote.frequency.value=440,this.silentGain=this.ac.createGain(),this.silentGain.gain.value=0,this.silentNote.connect(this.silentGain),this.silentGain.connect(this.ac.destination),this.silentNote.start();var $=this;setTimeout(function(){$.silentGain.disconnect($.ac.destination),$.silentNote.disconnect($.silentGain),$.silentNote.stop(),$.silentGain=null,$.silentNote=null},500)}console.log("WebDirt: initializeWebAudio finished.")},k.prototype.playSample=function($,j){if(j==null&&(j=this.latency),$.whenPosix!=null&&($.when=$.whenPosix-(new Date().getTime()/1e3-this.ac.currentTime)),$.when==null&&($.when=this.ac.currentTime),$.when=$.when+j,typeof $.maxLateness!="number"&&($.maxLateness=this.maxLateness),this.ac.currentTime-$.when>$.maxLateness)return void console.log("WebDirt warning: dropping msg late by "+(this.ac.currentTime-$.when)+" seconds");let _e=new c($,this);return this.eventCounter++,_e},k.prototype.playScore=function($,j,_e){this.initializeWebAudio(),j==null&&(j=this.latency);for(var et=this.ac.currentTime,tt=0,nt=0;nt<$.length;nt++){var it=$[nt];it.when>tt&&(tt=it.when),it.when=it.when+et,it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.playSample(it,j)}setTimeout(function(){typeof _e=="function"&&_e()},1e3*(tt+j))},k.prototype.playScoreWhenReady=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);for(var tt=$.length,nt=0;nt<$.length;nt++){var it=$[nt],rt=this;it.s!=null&&(it.sample_name=it.s),it.n!=null&&(it.sample_n=it.n),this.sampleBank!=null&&this.sampleBank.load(it.sample_name,it.sample_n,function(){(tt-=1)<=0&&(rt.playScore($,j,et),typeof _e=="function"&&_e())})}},k.prototype.loadAndPlayScore=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);var tt=new XMLHttpRequest;tt.open("GET",$,!0),tt.responseType="json";var nt=this;tt.onload=function(){if(tt.readyState!=4)throw Error("readyState != 4 in callback of loadAndPlayScore");if(tt.status!=200)throw Error("status != 200 in callback of loadAndPlayScore");if(tt.response==null)throw Error("JSON response null in callback of loadAndPlayScore");console.log("playing JSON score from "+$),nt.playScoreWhenReady(tt.response,j,_e,et)},tt.send()},k.prototype.renderAndPlayScore=function($,j,_e,et,tt,nt,it){this.initializeWebAudio(),tt==null&&(tt=this.latency),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt.renderAndPlayScore: attempting websocket connection to "+$);var rt=new WebSocket($);rt.onerror=function(){console.log(" ERROR opening websocket connection to "+$)},rt.onopen=function(){console.log(" websocket connection to "+$+" established");try{var at='{"render":'+JSON.stringify(j)+',"cps":'+_e+',"cycles":'+et+"}";console.log(at),rt.send(at),console.log(" render request sent")}catch{console.log(" EXCEPTION during transmission of render request"),rt.close()}};var st=this;rt.onmessage=function(at){var lt=JSON.parse(at.data);if(!lt instanceof Array)return console.log(" WebDirt warning: rendering socket received non-array message"),console.log(typeof lt),void(globalX=lt);console.log(" received score from "+$),st.playScoreWhenReady(lt,tt,nt,it),console.log(" closing websocket connection to "+$),rt.close()}},k.prototype.subscribeToTidalSocket=function($,j){this.initializeWebAudio(),j==null&&(j=!1),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt: attempting websocket connection to "+$),ws=new WebSocket($),ws.onopen=function(){console.log("websocket connection to tidalSocket opened")},ws.onerror=function(){console.log("ERROR opening websocket connection to tidalSocket")};var _e=this;ws.onmessage=function(et){if(et.data==null)throw Error("null data in tidalSocket onmessage handler");var tt=JSON.parse(et.data);if(tt.address==null)throw Error("received message from tidalSocket with no address: "+et.data);if(tt.address!="/play")throw Error("address of message from tidalSocket wasn't /play: "+et.data);if(tt.args.constructor!==Array)throw Error("ERROR: message from tidalSocket where args doesn't exist or isn't an array: "+et.data);if(tt.args.length!=30&&tt.args.length!=33)throw Error("ERROR: message from tidalSocket with "+tt.args.length+" args instead of 30 or 33: "+et.data);var nt={};nt.when=tt.args[0]+tt.args[1]/1e6+_e.clockDiff,nt.sample_name=tt.args[3],nt.begin=tt.args[5],nt.end=tt.args[6],nt.speed=tt.args[7],nt.pan=tt.args[8],nt.vowel=tt.args[10],nt.cutoff=tt.args[11],nt.resonance=tt.args[12],nt.accelerate=tt.args[13],nt.shape=tt.args[14],nt.gain=tt.args[16],nt.cut=tt.args[17],nt.delay=tt.args[18],nt.delaytime=tt.args[19],nt.delayfeedback=tt.args[20],nt.crush=tt.args[21],nt.coarse=tt.args[22],nt.hcutoff=tt.args[23],nt.hresonance=tt.args[24],nt.bandf=tt.args[25],nt.bandq=tt.args[26],nt.unit_name=tt.args[27],nt.sample_loop=tt.args[28],nt.sample_n=tt.args[29],tt.args.length==33&&(nt.attack=tt.args[30],nt.hold=tt.args[31],nt.release=tt.args[32]),_e.playSample(nt),j&&console.log(tt)}},k.prototype.getCurrentTime=function(){return this.ac.currentTime},k.prototype.syncWithEsp=function($){if(typeof EspClient=="function")if(this.espClient==null){this.espClient=new EspClient($,this.ac);var j=this;this.espClient.tempoCallback=function(_e){j.tempo=_e}}else this.espClient.setUrl($);else console.log("WebDirt ERROR: syncWithEsp called but EspClient does not exist")},k.prototype.setTempo=function($){if(typeof $.time!="number")throw Error("WebDirt: no time in setTempo");if(typeof $.beats!="number")throw Error("WebDirt: no beats in setTempo");if(typeof $.bpm!="number")throw Error("WebDirt: no bpm in setTempo");this.espClient!=null&&this.espClient.sendSetTempo($),this.tempo=$},k.prototype.sampleHint=function($){this.sampleBank!=null&&(console.log("WebDirt received sample hint: "+$),this.sampleBank.loadAllNamed($))},a})())})(WebDirtPacked);const bufferCache={},loadCache={},loadBuffer=(o,e)=>(loadCache[o]||(loadCache[o]=fetch(o).then(s=>s.arrayBuffer()).then(async s=>{const a=await e.decodeAudioData(s);return bufferCache[o]=a,a})),loadCache[o]),getLoadedBuffer=o=>bufferCache[o],githubCache={};let sampleCache={current:void 0};const loadGithubSamples=async(o,e)=>{const s="loadGithubSamples "+o,a=localStorage.getItem(s);if(a&&(console.log("[sampler]: loaded sample list from localstorage",o),githubCache[o]=JSON.parse(a)),githubCache[o])return sampleCache.current=githubCache[o],githubCache[o];console.log("[sampler]: fetching sample list from github",o);try{const[c,d,..._]=o.split("/"),b=`https://api.github.com/repos/${c}/${d}/contents`,k=await fetch(`${b}/${_.join("/")}`).then($=>$.json());githubCache[o]=(await Promise.all(k.map(async({name:$,path:j})=>({name:$,content:await fetch(`${b}/${j}`).then(_e=>_e.json()).catch(_e=>{console.error("could not load path",_e)})})))).filter(({content:$})=>!!$).reduce(($,{name:j,content:_e})=>wt(_t({},$),{[(e==null?void 0:e(j))||j]:_e.map(({download_url:et})=>et)}),{})}catch(c){console.error("[sampler]: failed to fetch sample list from github",c);return}return sampleCache.current=githubCache[o],localStorage.setItem(s,JSON.stringify(sampleCache.current)),console.log("[sampler]: loaded samples:",sampleCache.current),githubCache[o]},samples=(o,e="")=>{sampleCache.current=_t(_t({},sampleCache.current),Object.fromEntries(Object.entries(o).map(([s,a])=>[s,(typeof a=="string"?[a]:a).map(c=>(e+c).replace("github:","https://raw.githubusercontent.com/"))])))},resetLoadedSamples=()=>{sampleCache.current=void 0},getLoadedSamples=()=>sampleCache.current,{Pattern}=strudel;let webDirt;function loadWebDirt(o){webDirt=new WebDirtPacked.exports.WebDirt(o),webDirt.initializeWebAudio()}Pattern.prototype.webdirt=function(){return this._withHap(o=>{const e=async(s,a,c)=>{if(!webDirt)throw new Error("WebDirt not initialized!");const d=s-c,j=a.value||{},{s:_,n:b=0}=j,k=rn(j,["s","n"]);_||console.warn('Pattern.webdirt: no "s" was set!');const $=getLoadedSamples();if(!($!=null&&$[_])){webDirt.playSample(_t({s:_,n:b},k),d);return}if(!($!=null&&$[_]))console.warn(`Pattern.webdirt: sample "${_}" not found in loaded samples`,$);else{const _e=$[_],et=_e[b%_e.length],tt=getLoadedBuffer(et);if(!tt)console.log(`Pattern.webdirt: load ${_}:${b} from ${et}`),loadBuffer(et,webDirt.ac);else{const nt=_t({buffer:{buffer:tt}},k);webDirt.playSample(nt,d)}}};return o.setContext(wt(_t({},o.context),{onTrigger:e}))})};const defaultSynth=new Tone$1.PolySynth().chain(new Tone$1.Gain(.5),Tone$1.Destination).set({oscillator:{type:"triangle"},envelope:{release:.01}});evalScope(Tone$1,controls,__vitePreload(()=>Promise.resolve().then(function(){return strudel}),void 0),__vitePreload(()=>import("./index.1aa3ae22.js"),[]),__vitePreload(()=>import("./index.f7e36124.js"),[]),__vitePreload(()=>import("./index.321c57dd.js"),[]),__vitePreload(()=>import("./index.bca2d889.js"),[]),__vitePreload(()=>import("./index.72ac4b27.js"),[]),__vitePreload(()=>import("./index.af577255.js"),[]),__vitePreload(()=>import("./osc.b5070dcb.js"),[]),__vitePreload(()=>import("./index.cded106f.js"),[]));loadWebDirt({sampleMapUrl:"../EmuSP12.json",sampleFolder:"../EmuSP12"});function MiniRepl({tune:o}){return jsx(MiniRepl$1,{tune:o,defaultSynth,hideOutsideView:!0})}const layoutProps={},MDXLayout="wrapper";function MDXContent(s){var a=s,{components:o}=a,e=rn(a,["components"]);return createElement(MDXLayout,wt(_t(_t({},layoutProps),e),{components:o,mdxType:"MDXLayout"}),createElement("h1",{id:"table-of-contents"},createElement("a",{parentName:"h1","aria-hidden":"true",tabIndex:-1,href:"#table-of-contents"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Table of Contents"),createElement("ul",null,createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#what-is-strudel"},"What is Strudel?")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#show-me-a-demo"},"Show me a Demo")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#disclaimer"},"Disclaimer")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#mini-notation"},"Mini Notation")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#notes"},"Notes")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#sequences"},"Sequences")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#division"},"Division")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#angle-brackets"},"Angle Brackets")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#multiplication"},"Multiplication")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#bracket-nesting"},"Bracket Nesting")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#rests"},"Rests")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#parallel"},"Parallel")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#elongation"},"Elongation")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#replication"},"Replication")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#mini-notation-todo"},"Mini Notation TODO")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#core-api"},"Core API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#notes-1"},"Notes"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#functions-that-create-patterns"},"Functions that create Patterns"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#purevalue"},"pure(value)")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#catvalues"},"cat(...values)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#seqvalues"},"seq(...values)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#stackvalues"},"stack(...values)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#nesting-functions"},"Nesting functions")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#timecatweightvalue"},"timeCat(...","weight,value",")")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#polyrhythmvalues"},"polyrhythm(...","...values",")")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#pattern-modifier-functions"},"Pattern modifier functions")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#slowfactor"},"slow(factor)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#fastfactor"},"fast(factor)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#earlycycles"},"early(cycles)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#latecycles"},"late(cycles)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#rev"},"rev()")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#everyn-func"},"every(n, func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#addn"},"add(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#subn"},"sub(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#muln"},"mul(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#divn"},"div(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#round"},"round()")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#structbinary_pat"},"struct(binary_pat)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#whenbinary_pat-func"},"when(binary_pat, func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#superimposefunc"},"superimpose(...func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#layerfunc"},"layer(...func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#applyfunc"},"apply(func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#offtime-func"},"off(time, func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#appendpat"},"append(pat)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#stackpat"},"stack(pat)")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#tone-api"},"Tone API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#toneinstrument"},"tone(instrument)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#sampler"},"sampler")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#players"},"players")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#out"},"out")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#volvolume"},"vol(volume)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#osctype"},"osc(type)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#lowpasscutoff"},"lowpass(cutoff)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#highpasscutoff"},"highpass(cutoff)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#adsr"},"adsr")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#tonal-api"},"Tonal API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#transposesemitones"},"transpose(semitones)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#scalename"},"scale(name)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#scaletransposesteps"},"scaleTranspose(steps)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#voicingsrange"},"voicings(range?)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#rootnotesoctave--2"},"rootNotes(octave = 2)")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#microtonal-api"},"Microtonal API"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#midi-api"},"MIDI API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#midioutputname"},"midi(outputName?)")))))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#contributing"},"Contributing"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#api-docs"},"API Docs")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#pattern-factories"},"Pattern Factories")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#pure"},"pure")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#slowcat"},"slowcat")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#fastcat"},"fastcat")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#stack"},"stack")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#timecat"},"timeCat")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#pattern-modifiers"},"Pattern Modifiers")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternslow"},"Pattern.slow")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternfast"},"Pattern.fast")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#continuous-signals"},"Continuous Signals")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#saw"},"saw")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#sine"},"sine")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#cosine"},"cosine")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#tri"},"tri")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#square"},"square")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#using-samples-with-webdirt"},"Using Samples with Webdirt")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternwebdirt"},"Pattern.webdirt")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#using-superdirt-via-osc"},"Using Superdirt via OSC")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#getting-started"},"Getting Started")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#usage"},"Usage")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternosc"},"Pattern.osc")))))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#superdirt-params"},"Superdirt Params")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#basic-types"},"Basic Types")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#s"},"s")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#n"},"n")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#freq"},"freq")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#channel"},"channel")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#orbit"},"orbit")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#filters"},"Filters")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#cutoff"},"cutoff")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#resonance"},"resonance")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#hcutoff"},"hcutoff")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#hresonance"},"hresonance")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#bandf"},"bandf")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#bandq"},"bandq")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#djf"},"djf")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#vowel"},"vowel")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#sample-editing"},"Sample Editing")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#cut"},"cut")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#begin"},"begin")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#end"},"end")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#loop"},"loop")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#speed"},"speed")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#unit"},"unit")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#audio-effects"},"Audio Effects")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#gain"},"gain")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#amp"},"amp")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#accelerate"},"accelerate")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#crush"},"crush")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#coarse"},"coarse")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#leslie"},"leslie")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#lrate"},"lrate")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#lsize"},"lsize")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#pan"},"pan")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#room"},"room")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#size"},"size")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#dry"},"dry")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#shape"},"shape")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#squiz"},"squiz")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#synth-effects"},"Synth Effects")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#octave"},"octave")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#detune"},"detune"))))))),createElement("h1",{id:"what-is-strudel"},createElement("a",{parentName:"h1","aria-hidden":"true",tabIndex:-1,href:"#what-is-strudel"},createElement("span",{parentName:"a",className:"icon icon-link"})),"What is Strudel?"),createElement("p",null,`With Strudel, you can expressively write dynamic music pieces. +`:""}${ft}`),[]),lt=react.exports.useMemo(()=>{if(k&&!k.includes("strudel disable-highlighting"))return(ft,mt)=>c==null?void 0:c(ft,mt,k)},[k,c]),ut=useCycle({onDraw:lt,onEvent:react.exports.useCallback((ft,mt,Et)=>{var vt;try{a==null||a(mt),(vt=mt.context.logs)!=null&&vt.length&&mt.context.logs.forEach(ct);const{onTrigger:At,velocity:_t}=mt.context;if(At)At(ft,mt,Et,1,mt.wholeOrPart().begin.valueOf(),mt.duration.valueOf());else if(e){const Dt=getPlayableNoteValue(mt);e.triggerAttackRelease(Dt,mt.duration.valueOf(),ft,_t)}else throw new Error("no defaultSynth passed to useRepl.")}catch(At){console.warn(At),At.message="unplayable event: "+(At==null?void 0:At.message),ct(At.message)}},[a,ct,e]),onQuery:react.exports.useCallback(ft=>{try{return(at==null?void 0:at.query(ft))||[]}catch(mt){return console.warn(mt),mt.message="query error: "+mt.message,tt(mt),[]}},[at]),onSchedule:react.exports.useCallback((ft,mt)=>gt(ft,mt),[]),ready:!!at&&!!k}),pt=usePostMessage(({data:{from:ft,type:mt}})=>{mt==="start"&&ft!==d&&(ut.setStarted(!1),$(void 0))}),dt=react.exports.useCallback(async(ft=_)=>{if(k&&!ht){tt(void 0),ut.start();return}try{st(!0);const mt=await evaluate(ft);ut.start(),pt({type:"start",from:d}),ot(()=>mt.pattern),s&&(window.location.hash="#"+encodeURIComponent(btoa(_))),it(generateHash(_)),tt(void 0),$(ft),st(!1)}catch(mt){mt.message="evaluation error: "+mt.message,console.warn(mt),tt(mt)}},[k,ht,_,ut,s,d,pt]),gt=(ft,mt)=>{ft.length};return{pending:nt,code:_,setCode:b,pattern:at,error:et,cycle:ut,setPattern:ot,dirty:ht,log:j,togglePlay:()=>{ut.started?ut.stop():dt()},setActiveCode:$,activateCode:dt,activeCode:k,pushLog:ct,hash:rt}}function cx(...o){return o.filter(Boolean).join(" ")}let highlights=[],lastEnd;function useHighlighting({view:o,pattern:e,active:s}){react.exports.useEffect(()=>{if(o)if(e&&s){let c=function(){try{const d=Tone.getTransport().seconds,b=[Math.max(lastEnd||d,d-1/10),d+1/60];lastEnd=d+1/60,highlights=highlights.filter($=>$.whole.end>d);const k=e.queryArc(...b).filter($=>$.hasOnset());highlights=highlights.concat(k),o.dispatch({effects:setHighlights.of(highlights)})}catch{o.dispatch({effects:setHighlights.of([])})}a=requestAnimationFrame(c)},a=requestAnimationFrame(c);return()=>{cancelAnimationFrame(a)}}else highlights=[],o.dispatch({effects:setHighlights.of([])})},[e,s,o])}const container="_container_10e1g_1",header="_header_10e1g_5",buttons="_buttons_10e1g_9",button="_button_10e1g_9",buttonDisabled="_buttonDisabled_10e1g_17",error="_error_10e1g_21",body="_body_10e1g_25";var styles={container,header,buttons,button,buttonDisabled,error,body};function Icon({type:o}){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"sc-h-5 sc-w-5",viewBox:"0 0 20 20",fill:"currentColor",children:{refresh:jsx("path",{fillRule:"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z",clipRule:"evenodd"}),play:jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"}),pause:jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}[o]})}function MiniRepl$1({tune:o,defaultSynth:e,hideOutsideView:s=!1}){const{code:a,setCode:c,pattern:d,activateCode:_,error:b,cycle:k,dirty:$,togglePlay:j}=useRepl({tune:o,defaultSynth:e,autolink:!1}),[_e,et]=react.exports.useState(),[tt,nt]=useInView({threshold:.01}),st=react.exports.useRef(),rt=react.exports.useMemo(()=>((nt||!s)&&(st.current=!0),nt||st.current),[nt,s]);return useHighlighting({view:_e,pattern:d,active:k.started}),jsxs("div",{className:styles.container,ref:tt,children:[jsxs("div",{className:styles.header,children:[jsxs("div",{className:styles.buttons,children:[jsx("button",{className:cx(styles.button,k.started?"sc-animate-pulse":""),onClick:()=>j(),children:jsx(Icon,{type:k.started?"pause":"play"})}),jsx("button",{className:cx($?styles.button:styles.buttonDisabled),onClick:()=>_(),children:jsx(Icon,{type:"refresh"})})]}),b&&jsx("div",{className:styles.error,children:b.message})]}),jsx("div",{className:styles.body,children:rt&&jsx(CodeMirror,{value:a,onChange:c,onViewChanged:et})})]})}var WebDirtPacked={exports:{}};(function(o,e){(function(s,a){o.exports=a()})(self,()=>(()=>{var s={d:($,j)=>{for(var _e in j)s.o(j,_e)&&!s.o($,_e)&&Object.defineProperty($,_e,{enumerable:!0,get:j[_e]})},o:($,j)=>Object.prototype.hasOwnProperty.call($,j),r:$=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty($,Symbol.toStringTag,{value:"Module"}),Object.defineProperty($,"__esModule",{value:!0})}},a={};function c($,j){if(this.msg=$,this.ac=j.ac,this.sampleBank=j.sampleBank,this.outputNode=j.destination,this.cutGroups=j.cutGroups,this.eventCounter=j.eventCounter,this.audioOutputs=j.audioOutputs,this.workletsAvailable=j.workletsAvailable,typeof $.buffer=="object")this.bufferContainer=$.buffer;else{if(this.sampleBank==null)return void console.log("WebDirt: there is no sample bank, cancelling event");if(typeof this.sampleBank!="object")return void console.log("WebDirt: buffer not provided by calling application + no WebDirt sample bank");if(this.msg.n=parseInt(this.msg.n),isNaN(this.msg.n)&&(this.msg.n=0),!this.sampleBank.sampleNameExists(this.msg.s))return void console.log("WebDirt: no sample named "+this.msg.s+" exists in sample map");if(!this.sampleBank.getBufferMightSucceed(this.msg.s,this.msg.n))return}if(this.when=this.msg.when,isNaN(this.when))console.log("WebDirt: 'when' is null or not a number");else if(this.nudge=parseFloat(this.msg.nudge),isNaN(this.nudge)||(this.when=this.when+this.nudge),isNaN(parseFloat(this.msg.speed))&&(this.msg.speed=1),this.msg.speed!=0)if(isNaN(parseFloat(this.msg.note))&&(this.msg.note=0),this.msg.speed=this.msg.speed*Math.pow(2,this.msg.note/12),this.msg.begin=d(this.msg.begin,0),this.msg.end=d(this.msg.end,1),this.msg.end!=this.msg.begin){if(this.msg.begin>this.msg.end&&(this.msg.speed=-1*this.msg.speed),this.msg.speed<0&&(this.msg.begin=1-this.msg.begin,this.msg.end=1-this.msg.end),this.msg.begin>this.msg.end){let pt=this.msg.begin;this.msg.begin=this.msg.end,this.msg.end=pt}var _e;if(this.source=_e=this.ac.createBufferSource(),this.source.onended=this.disconnectHandler(),this.disconnectOnEnd(this.source),this.source.playbackRate.value=Math.abs(this.msg.speed),this.prepareBuffer(),this.buffer!=null)this.source.buffer=this.buffer,this.start();else{var et=this,tt=1e3*(this.msg.when-this.ac.currentTime-.2);tt<=0&&(tt=1e3*(this.msg.when-this.ac.currentTime-.2)),tt>0&&setTimeout(function(){et.prepareBuffer(),et.buffer!=null?(et.source.buffer=et.buffer,et.start()):(console.log("WebDirt: unable to access sample "+$.s+":"+$.n+" on second attempt"),et.stopAll())},tt)}this.cut(this.msg.cut,this.msg.s),_e=this.shape(_e,this.msg.shape),_e=this.lowPassFilter(_e,this.msg.cutoff,this.msg.resonance),_e=this.highPassFilter(_e,this.msg.hcutoff,this.msg.hresonance),_e=this.bandPassFilter(_e,this.msg.bandf,this.msg.bandq),_e=this.vowel(_e,this.msg.vowel),_e=this.delay(_e,this.msg.delay,this.msg.delaytime,this.msg.delayfeedback),_e=this.loop(_e,this.msg.loop,this.msg.begin,this.msg.end,this.msg.speed),_e=this.crush(_e,this.msg.crush),_e=this.coarse(_e,this.msg.coarse),this.unit(this.msg.unit,this.msg.speed);var nt=parseFloat(this.msg.gain);isNaN(nt)&&(nt=1),nt>2&&(nt=2),nt<0&&(nt=0);var st=parseFloat(this.msg.overgain);isNaN(st)||(nt+=st),nt=Math.pow(nt,4);var rt,it,at,ot=parseFloat($.pan);if(isNaN(ot)&&(ot=.5),this.audioOutputs==2)(ot>1||ot<0)&&(ot-=Math.floor(ot)),rt=ot,it=0,at=1;else{var ht=(ot-=Math.floor(ot))*this.audioOutputs;(at=(it=Math.floor(ht))+1)>=this.audioOutputs&&(at=0),rt=ht-Math.floor(ht)}var ct=this.ac.createGain();this.disconnectOnEnd(ct);var lt=this.ac.createGain();this.disconnectOnEnd(lt),ct.gain.value=Math.cos(rt*Math.PI/2)*nt,lt.gain.value=Math.sin(rt*Math.PI/2)*nt,_e.connect(ct),_e.connect(lt),this.gain1=ct,this.gain2=lt;var ut=this.ac.createChannelMerger(this.audioOutputs);this.disconnectOnEnd(ut),ct.connect(ut,0,it),lt.connect(ut,0,at),ut.connect(this.outputNode)}else this.stopAll()}function d($,j){let _e=parseFloat($);return isNaN(_e)?j:_e>1?1:_e<0?0:_e}s.r(a),s.d(a,{WebDirt:()=>k}),c.prototype.prepareBuffer=function(){typeof this.bufferContainer=="object"?typeof this.bufferContainer.buffer=="object"&&(this.msg.speed>=0?this.buffer=this.bufferContainer.buffer:(typeof this.bufferContainer.reverseBuffer=="object"||(this.bufferContainer.reverseBuffer=reverseBuffer(this.ac,this.bufferContainer.buffer)),this.buffer=this.bufferContainer.reverseBuffer)):(this.msg.speed>=0?this.buffer=this.sampleBank.getBuffer(this.msg.s,this.msg.n):this.buffer=this.sampleBank.getReverseBuffer(this.msg.s,this.msg.n),this.buffer=this.accel(this.buffer,this.msg.accelerate,this.msg.speed))},c.prototype.disconnectOnEnd=function($){this.source.disconnectQueue==null&&(this.source.disconnectQueue=new Array),this.source.disconnectQueue.unshift($)},c.prototype.start=function(){let $=Math.abs(this.msg.speed),j=(this.msg.end-this.msg.begin)*this.source.buffer.duration/$,_e=this.msg.begin*this.source.buffer.duration;this.source.start(this.when,_e,j)},c.prototype.stopAll=function(){if(this.source!=null&&this.source.disconnectQueue!=null){for(var $=0;$1&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"coarse-processor");return _e.parameters.get("coarse").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.crush=function($,j){if(j=parseInt(j),isNaN(j)&&(j=null),j!=null&&j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"crush-processor");return _e.parameters.get("crush").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.cut=function($,j){if($=parseInt($),!isNaN($)&&$!=0){for(var _e={cutGroup:$,node:this,sampleName:j},et=0;et2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="highpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.lowPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=0),_e<0&&(_e=0),_e>1&&(_e=1),_e=1/(_e=1-.999*(_e*=_e));var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="lowpass",et.frequency.value=j,et.Q.value=_e,$.connect(et),et},c.prototype.bandPassFilter=function($,j,_e){if(isNaN(parseFloat(j))&&isNaN(parseFloat(_e)))return $;isNaN(parseFloat(j))&&(j=440),j<20&&(j=20),j>2e4&&(j=2e4),isNaN(parseFloat(_e))&&(_e=10),_e<1&&(_e=1),_e>100&&(_e=100);var et=this.ac.createBiquadFilter();return this.disconnectOnEnd(et),et.type="bandpass",et.frequency.value=j,et.Q.value=_e,et.gain.value=_e,$.connect(et),et},c.prototype.loop=function($,j){if(isNaN(parseInt(j))||j==0)return $;try{var _e=this.source.buffer.duration-this.msg.begin*this.source.buffer.duration-(1-this.msg.end)*this.source.buffer.duration;return this.source.loop=!0,this.source.loopStart=this.msg.begin*this.source.buffer.duration,this.source.loopEnd=this.msg.end*this.source.buffer.duration,this.source.stop(this.when+_e*j/this.source.playbackRate.value),$}catch{return console.log("WebDirt Warning: buffer data not yet available to calculate loop time - no looping applied"),$}},c.prototype.accelerate=function($,j){if(j=Math.abs(j),isNaN(parseFloat($))&&($=0),$!=0){$=parseFloat($),this.source.playbackRate.setValueAtTime(j,this.when);var _e=Math.abs((this.source.buffer.length*$/this.ac.sampleRate+j)/j),et=j+this.source.buffer.length*$/this.ac.sampleRate;if(et<0)this.source.buffer=this.negativeAccelerateBuffer(this.source.buffer,$,j),this.source.playbackRate.linearRampToValueAtTime(0,this.when+_e),this.source.playbackRate.linearRampToValueAtTime(1,this.when+this.source.buffer.duration);else try{this.source.playbackRate.linearRampToValueAtTime(et,this.when+this.source.buffer.duration)}catch{console.log("WebDirt: Warning, buffer data not loaded, could not apply acclerate effect")}}},c.prototype.negativeAccelerateBuffer=function($,j,_e){var et=$.length,tt=new Float32Array(et),nt=this.ac.createBuffer($.numberOfChannels,$.length,this.ac.sampleRate),st=new Float32Array(et),rt=Math.abs(_e/(_e-j))*et;rt=et*Math.abs((this.source.buffer.length*j/this.ac.sampleRate+_e)/_e)/this.source.buffer.duration,rt=Math.trunc(rt);for(var it=0;it<$.numberOfChannels;it++){$.copyFromChannel(tt,it,0);for(var at=0;at=1&&(j=.999),j>0&&this.workletsAvailable){var _e=new AudioWorkletNode(this.ac,"shape-processor");return _e.parameters.get("shape").value=j,$.connect(_e),this.disconnectOnEnd(_e),_e}return $},c.prototype.stop=function($){this.gain1.gain.setValueAtTime(this.gain1.gain.value,$),this.gain1.gain.linearRampToValueAtTime(0,$+.02),this.gain2.gain.setValueAtTime(this.gain1.gain.value,$),this.gain2.gain.linearRampToValueAtTime(0,$+.02)},c.prototype.unit=function($,j){$=="c"&&(this.source.playbackRate.value=this.source.playbackRate.value*this.source.buffer.duration)},c.prototype.vowel=function($,j){if(typeof j!="string")return $;if((j=j.toLowerCase())=="a"||j=="e"||j=="i"||j=="o"||j=="u"){var _e,et,tt,nt=this.ac.createGain();switch(this.disconnectOnEnd(nt),j){case"a":_e=_.a.freqs,et=_.a.qs,tt=_.a.amps;break;case"e":_e=_.e.freqs,et=_.e.qs,tt=_.e.amps;break;case"i":_e=_.i.freqs,et=_.i.qs,tt=_.i.amps;break;case"o":_e=_.o.freqs,et=_.o.qs,tt=_.o.amps;break;case"u":_e=_.u.freqs,et=_.u.qs,tt=_.u.amps}for(var st=0;st<5;st++){var rt=this.ac.createGain();this.disconnectOnEnd(rt),rt.gain.value=tt[st];var it=this.ac.createBiquadFilter();this.disconnectOnEnd(it),it.type="bandpass",it.Q.value=et[st]/8,it.frequency.value=_e[st],$.connect(it),it.connect(rt),rt.connect(nt)}return nt.gain.value=8,nt}return $};var _={a:{freqs:[660,1120,2750,3e3,3350],amps:[1,.5012,.0708,.0631,.0126],qs:[80,90,120,130,140]},e:{freqs:[440,1800,2700,3e3,3300],amps:[1,.1995,.1259,.1,.1],qs:[70,80,100,120,120]},i:{freqs:[270,1850,2900,3350,3590],amps:[1,.0631,.0631,.0158,.0158],qs:[40,90,100,120,120]},o:{freqs:[430,820,2700,3e3,3300],amps:[1,.3162,.0501,.0794,.01995],qs:[40,80,100,120,120]},u:{freqs:[370,630,2750,3e3,3400],amps:[1,.1,.0708,.0316,.01995],qs:[40,60,100,120,120]}};function b($,j,_e){this.STATUS_PRELOAD=0,this.STATUS_LOADING=1,this.STATUS_READY=2,this.STATUS_ERROR=3,this.sampleMapUrl=$,this.urlPrefix=j,this.samples={};var et=new XMLHttpRequest;et.open("GET",this.sampleMapUrl,!0),et.responseType="json";var tt=this;et.onload=function(){if(et.readyState!=4)throw Error("WebDirt: readyState != 4 in callback of sampleMap load");if(et.status!=200)throw Error("WebDirt: status != 200 in callback of sampleMap load");if(et.response==null)throw Error("WebDirt: JSON response null in callback of sampleMap load");tt.sampleMap=et.response,console.log("WebDirt: sampleMap loaded from "+tt.sampleMapUrl),typeof _e=="function"&&_e()},et.onerror=function(){console.log("WebDirt: unspecified error in loading of sampleMap from "+tt.sampleMapUrl)},et.send()}function k($){this.workletsAvailable=!1,$===void 0&&($={}),typeof $=="object"?(typeof $.sampleMapUrl=="string"?($.sampleFolder==null&&($.sampleFolder="samples"),console.log("WebDirt: will manage own sample bank, samplemap="+$.sampleMapUrl+" sampleFolder="+$.sampleFolder),this.sampleBank=new b($.sampleMapUrl,$.sampleFolder,$.readyCallback)):console.log("WebDirt: will expect application to provide sample buffers"),$.latency==null&&($.latency=.4),this.latency=$.latency,typeof $.maxLateness!="number"?this.maxLateness=.005:this.maxLateness=$.maxLateness,this.ac=$.audioContext,this.destination=$.destination,this.cutGroups=new Array,this.eventCounter=0,this.audioOutputs=2,this.ac==null?console.log("WebDirt: initialized (without audio context)"):this.destination==null?(this.destination=this.ac.destination,console.log("WebDirt: initialized with provided context")):console.log("WebDirt: initialized with provided context + destination")):console.log("WebDirt: unable to construct WebDirt object, arguments object not provided to constructor")}return b.prototype.loadAllNamed=function($){if(this.ac==null)throw Error("WebDirt: called SampleBank.loadAllNamed with null audio context");if(this.sampleMap==null)throw Error("WebDirt: SampleBank.loadAllNamed: sampleMap is null");if(this.sampleMap[$]!=null)for(var j=0;j{console.log("WebDirt: audio worklets added"),this.workletsAvailable=!0}).catch(j=>{console.log("WebDirt: error loading AudioWorklets.js: "+j),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1}):(console.log("WebDirt: browser does not support audio worklets"),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1),this.tempo={time:this.ac.currentTime,beats:0,bpm:30},this.clockDiff=Date.now()/1e3-this.ac.currentTime,this.sampleBank!=null&&(this.sampleBank.ac=this.ac),this.silentNote=this.ac.createOscillator(),this.silentNote.type="sine",this.silentNote.frequency.value=440,this.silentGain=this.ac.createGain(),this.silentGain.gain.value=0,this.silentNote.connect(this.silentGain),this.silentGain.connect(this.ac.destination),this.silentNote.start();var $=this;setTimeout(function(){$.silentGain.disconnect($.ac.destination),$.silentNote.disconnect($.silentGain),$.silentNote.stop(),$.silentGain=null,$.silentNote=null},500)}console.log("WebDirt: initializeWebAudio finished.")},k.prototype.playSample=function($,j){if(j==null&&(j=this.latency),$.whenPosix!=null&&($.when=$.whenPosix-(new Date().getTime()/1e3-this.ac.currentTime)),$.when==null&&($.when=this.ac.currentTime),$.when=$.when+j,typeof $.maxLateness!="number"&&($.maxLateness=this.maxLateness),this.ac.currentTime-$.when>$.maxLateness)return void console.log("WebDirt warning: dropping msg late by "+(this.ac.currentTime-$.when)+" seconds");let _e=new c($,this);return this.eventCounter++,_e},k.prototype.playScore=function($,j,_e){this.initializeWebAudio(),j==null&&(j=this.latency);for(var et=this.ac.currentTime,tt=0,nt=0;nt<$.length;nt++){var st=$[nt];st.when>tt&&(tt=st.when),st.when=st.when+et,st.s!=null&&(st.sample_name=st.s),st.n!=null&&(st.sample_n=st.n),this.playSample(st,j)}setTimeout(function(){typeof _e=="function"&&_e()},1e3*(tt+j))},k.prototype.playScoreWhenReady=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);for(var tt=$.length,nt=0;nt<$.length;nt++){var st=$[nt],rt=this;st.s!=null&&(st.sample_name=st.s),st.n!=null&&(st.sample_n=st.n),this.sampleBank!=null&&this.sampleBank.load(st.sample_name,st.sample_n,function(){(tt-=1)<=0&&(rt.playScore($,j,et),typeof _e=="function"&&_e())})}},k.prototype.loadAndPlayScore=function($,j,_e,et){this.initializeWebAudio(),j==null&&(j=this.latency);var tt=new XMLHttpRequest;tt.open("GET",$,!0),tt.responseType="json";var nt=this;tt.onload=function(){if(tt.readyState!=4)throw Error("readyState != 4 in callback of loadAndPlayScore");if(tt.status!=200)throw Error("status != 200 in callback of loadAndPlayScore");if(tt.response==null)throw Error("JSON response null in callback of loadAndPlayScore");console.log("playing JSON score from "+$),nt.playScoreWhenReady(tt.response,j,_e,et)},tt.send()},k.prototype.renderAndPlayScore=function($,j,_e,et,tt,nt,st){this.initializeWebAudio(),tt==null&&(tt=this.latency),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt.renderAndPlayScore: attempting websocket connection to "+$);var rt=new WebSocket($);rt.onerror=function(){console.log(" ERROR opening websocket connection to "+$)},rt.onopen=function(){console.log(" websocket connection to "+$+" established");try{var at='{"render":'+JSON.stringify(j)+',"cps":'+_e+',"cycles":'+et+"}";console.log(at),rt.send(at),console.log(" render request sent")}catch{console.log(" EXCEPTION during transmission of render request"),rt.close()}};var it=this;rt.onmessage=function(at){var ot=JSON.parse(at.data);if(!ot instanceof Array)return console.log(" WebDirt warning: rendering socket received non-array message"),console.log(typeof ot),void(globalX=ot);console.log(" received score from "+$),it.playScoreWhenReady(ot,tt,nt,st),console.log(" closing websocket connection to "+$),rt.close()}},k.prototype.subscribeToTidalSocket=function($,j){this.initializeWebAudio(),j==null&&(j=!1),window.WebSocket=window.WebSocket||window.MozWebSocket,console.log("WebDirt: attempting websocket connection to "+$),ws=new WebSocket($),ws.onopen=function(){console.log("websocket connection to tidalSocket opened")},ws.onerror=function(){console.log("ERROR opening websocket connection to tidalSocket")};var _e=this;ws.onmessage=function(et){if(et.data==null)throw Error("null data in tidalSocket onmessage handler");var tt=JSON.parse(et.data);if(tt.address==null)throw Error("received message from tidalSocket with no address: "+et.data);if(tt.address!="/play")throw Error("address of message from tidalSocket wasn't /play: "+et.data);if(tt.args.constructor!==Array)throw Error("ERROR: message from tidalSocket where args doesn't exist or isn't an array: "+et.data);if(tt.args.length!=30&&tt.args.length!=33)throw Error("ERROR: message from tidalSocket with "+tt.args.length+" args instead of 30 or 33: "+et.data);var nt={};nt.when=tt.args[0]+tt.args[1]/1e6+_e.clockDiff,nt.sample_name=tt.args[3],nt.begin=tt.args[5],nt.end=tt.args[6],nt.speed=tt.args[7],nt.pan=tt.args[8],nt.vowel=tt.args[10],nt.cutoff=tt.args[11],nt.resonance=tt.args[12],nt.accelerate=tt.args[13],nt.shape=tt.args[14],nt.gain=tt.args[16],nt.cut=tt.args[17],nt.delay=tt.args[18],nt.delaytime=tt.args[19],nt.delayfeedback=tt.args[20],nt.crush=tt.args[21],nt.coarse=tt.args[22],nt.hcutoff=tt.args[23],nt.hresonance=tt.args[24],nt.bandf=tt.args[25],nt.bandq=tt.args[26],nt.unit_name=tt.args[27],nt.sample_loop=tt.args[28],nt.sample_n=tt.args[29],tt.args.length==33&&(nt.attack=tt.args[30],nt.hold=tt.args[31],nt.release=tt.args[32]),_e.playSample(nt),j&&console.log(tt)}},k.prototype.getCurrentTime=function(){return this.ac.currentTime},k.prototype.syncWithEsp=function($){if(typeof EspClient=="function")if(this.espClient==null){this.espClient=new EspClient($,this.ac);var j=this;this.espClient.tempoCallback=function(_e){j.tempo=_e}}else this.espClient.setUrl($);else console.log("WebDirt ERROR: syncWithEsp called but EspClient does not exist")},k.prototype.setTempo=function($){if(typeof $.time!="number")throw Error("WebDirt: no time in setTempo");if(typeof $.beats!="number")throw Error("WebDirt: no beats in setTempo");if(typeof $.bpm!="number")throw Error("WebDirt: no bpm in setTempo");this.espClient!=null&&this.espClient.sendSetTempo($),this.tempo=$},k.prototype.sampleHint=function($){this.sampleBank!=null&&(console.log("WebDirt received sample hint: "+$),this.sampleBank.loadAllNamed($))},a})())})(WebDirtPacked);const bufferCache={},loadCache={},loadBuffer=(o,e)=>(loadCache[o]||(loadCache[o]=fetch(o).then(s=>s.arrayBuffer()).then(async s=>{const a=await e.decodeAudioData(s);return bufferCache[o]=a,a})),loadCache[o]),getLoadedBuffer=o=>bufferCache[o],githubCache={};let sampleCache={current:void 0};const loadGithubSamples=async(o,e)=>{const s="loadGithubSamples "+o,a=localStorage.getItem(s);if(a&&(console.log("[sampler]: loaded sample list from localstorage",o),githubCache[o]=JSON.parse(a)),githubCache[o])return sampleCache.current=githubCache[o],githubCache[o];console.log("[sampler]: fetching sample list from github",o);try{const[c,d,..._]=o.split("/"),b=`https://api.github.com/repos/${c}/${d}/contents`,k=await fetch(`${b}/${_.join("/")}`).then($=>$.json());githubCache[o]=(await Promise.all(k.map(async({name:$,path:j})=>({name:$,content:await fetch(`${b}/${j}`).then(_e=>_e.json()).catch(_e=>{console.error("could not load path",_e)})})))).filter(({content:$})=>!!$).reduce(($,{name:j,content:_e})=>wt(Ot({},$),{[(e==null?void 0:e(j))||j]:_e.map(({download_url:et})=>et)}),{})}catch(c){console.error("[sampler]: failed to fetch sample list from github",c);return}return sampleCache.current=githubCache[o],localStorage.setItem(s,JSON.stringify(sampleCache.current)),console.log("[sampler]: loaded samples:",sampleCache.current),githubCache[o]},samples=(o,e="")=>{sampleCache.current=Ot(Ot({},sampleCache.current),Object.fromEntries(Object.entries(o).map(([s,a])=>[s,(typeof a=="string"?[a]:a).map(c=>(e+c).replace("github:","https://raw.githubusercontent.com/"))])))},resetLoadedSamples=()=>{sampleCache.current=void 0},getLoadedSamples=()=>sampleCache.current,{Pattern}=strudel;let webDirt;function loadWebDirt(o){webDirt=new WebDirtPacked.exports.WebDirt(o),webDirt.initializeWebAudio()}Pattern.prototype.webdirt=function(){return this._withHap(o=>{const e=async(s,a,c)=>{if(!webDirt)throw new Error("WebDirt not initialized!");const d=s-c,j=a.value||{},{s:_,n:b=0}=j,k=ln(j,["s","n"]);_||console.warn('Pattern.webdirt: no "s" was set!');const $=getLoadedSamples();if(!($!=null&&$[_])){webDirt.playSample(Ot({s:_,n:b},k),d);return}if(!($!=null&&$[_]))console.warn(`Pattern.webdirt: sample "${_}" not found in loaded samples`,$);else{const _e=$[_],et=_e[b%_e.length],tt=getLoadedBuffer(et);if(!tt)console.log(`Pattern.webdirt: load ${_}:${b} from ${et}`),loadBuffer(et,webDirt.ac);else{const nt=Ot({buffer:{buffer:tt}},k);webDirt.playSample(nt,d)}}};return o.setContext(wt(Ot({},o.context),{onTrigger:e}))})};const defaultSynth=new Tone.PolySynth().chain(new Tone.Gain(.5),Tone.Destination).set({oscillator:{type:"triangle"},envelope:{release:.01}});evalScope(Tone,controls,__vitePreload(()=>Promise.resolve().then(function(){return strudel}),void 0),__vitePreload(()=>import("./index.fb101d8b.js"),[]),__vitePreload(()=>import("./index.4951e033.js"),[]),__vitePreload(()=>import("./index.5f4f06b4.js"),[]),__vitePreload(()=>import("./index.c0f5b494.js"),[]),__vitePreload(()=>import("./index.bf2b2693.js"),[]),__vitePreload(()=>import("./index.dd197254.js"),[]),__vitePreload(()=>import("./osc.ca309656.js"),[]),__vitePreload(()=>import("./index.2b76d197.js"),[]));loadWebDirt({sampleMapUrl:"../EmuSP12.json",sampleFolder:"../EmuSP12"});function MiniRepl({tune:o}){return jsx(MiniRepl$1,{tune:o,defaultSynth,hideOutsideView:!0})}const layoutProps={},MDXLayout="wrapper";function MDXContent(s){var a=s,{components:o}=a,e=ln(a,["components"]);return createElement(MDXLayout,wt(Ot(Ot({},layoutProps),e),{components:o,mdxType:"MDXLayout"}),createElement("h1",{id:"table-of-contents"},createElement("a",{parentName:"h1","aria-hidden":"true",tabIndex:-1,href:"#table-of-contents"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Table of Contents"),createElement("ul",null,createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#what-is-strudel"},"What is Strudel?")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#show-me-a-demo"},"Show me a Demo")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#disclaimer"},"Disclaimer")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#mini-notation"},"Mini Notation")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#notes"},"Notes")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#sequences"},"Sequences")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#division"},"Division")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#angle-brackets"},"Angle Brackets")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#multiplication"},"Multiplication")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#bracket-nesting"},"Bracket Nesting")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#rests"},"Rests")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#parallel"},"Parallel")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#elongation"},"Elongation")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#replication"},"Replication")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#mini-notation-todo"},"Mini Notation TODO")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#core-api"},"Core API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#notes-1"},"Notes"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#functions-that-create-patterns"},"Functions that create Patterns"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#purevalue"},"pure(value)")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#catvalues"},"cat(...values)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#seqvalues"},"seq(...values)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#stackvalues"},"stack(...values)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#nesting-functions"},"Nesting functions")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#timecatweightvalue"},"timeCat(...","weight,value",")")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#polyrhythmvalues"},"polyrhythm(...","...values",")")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#pattern-modifier-functions"},"Pattern modifier functions")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#slowfactor"},"slow(factor)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#fastfactor"},"fast(factor)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#earlycycles"},"early(cycles)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#latecycles"},"late(cycles)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#rev"},"rev()")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#everyn-func"},"every(n, func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#addn"},"add(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#subn"},"sub(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#muln"},"mul(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#divn"},"div(n)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#round"},"round()")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#structbinary_pat"},"struct(binary_pat)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#whenbinary_pat-func"},"when(binary_pat, func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#superimposefunc"},"superimpose(...func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#layerfunc"},"layer(...func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#applyfunc"},"apply(func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#offtime-func"},"off(time, func)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#appendpat"},"append(pat)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#stackpat"},"stack(pat)")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#tone-api"},"Tone API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#toneinstrument"},"tone(instrument)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#sampler"},"sampler")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#players"},"players")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#out"},"out")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#volvolume"},"vol(volume)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#osctype"},"osc(type)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#lowpasscutoff"},"lowpass(cutoff)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#highpasscutoff"},"highpass(cutoff)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#adsr"},"adsr")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#tonal-api"},"Tonal API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#transposesemitones"},"transpose(semitones)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#scalename"},"scale(name)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#scaletransposesteps"},"scaleTranspose(steps)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#voicingsrange"},"voicings(range?)")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#rootnotesoctave--2"},"rootNotes(octave = 2)")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#microtonal-api"},"Microtonal API"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#midi-api"},"MIDI API")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#midioutputname"},"midi(outputName?)")))))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#contributing"},"Contributing"))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#api-docs"},"API Docs")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#pattern-factories"},"Pattern Factories")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#pure"},"pure")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#slowcat"},"slowcat")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#fastcat"},"fastcat")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#stack"},"stack")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#timecat"},"timeCat")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#pattern-modifiers"},"Pattern Modifiers")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternslow"},"Pattern.slow")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternfast"},"Pattern.fast")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#continuous-signals"},"Continuous Signals")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#saw"},"saw")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#sine"},"sine")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#cosine"},"cosine")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#tri"},"tri")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#square"},"square")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#using-samples-with-webdirt"},"Using Samples with Webdirt")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternwebdirt"},"Pattern.webdirt")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#using-superdirt-via-osc"},"Using Superdirt via OSC")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#getting-started"},"Getting Started")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#usage"},"Usage")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#patternosc"},"Pattern.osc")))))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#superdirt-params"},"Superdirt Params")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#basic-types"},"Basic Types")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#s"},"s")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#n"},"n")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#freq"},"freq")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#channel"},"channel")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#orbit"},"orbit")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#filters"},"Filters")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#cutoff"},"cutoff")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#resonance"},"resonance")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#hcutoff"},"hcutoff")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#hresonance"},"hresonance")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#bandf"},"bandf")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#bandq"},"bandq")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#djf"},"djf")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#vowel"},"vowel")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#sample-editing"},"Sample Editing")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#cut"},"cut")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#begin"},"begin")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#end"},"end")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#loop"},"loop")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#speed"},"speed")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#unit"},"unit")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#audio-effects"},"Audio Effects")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#gain"},"gain")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#amp"},"amp")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#accelerate"},"accelerate")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#crush"},"crush")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#coarse"},"coarse")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#leslie"},"leslie")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#lrate"},"lrate")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#lsize"},"lsize")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#pan"},"pan")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#room"},"room")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#size"},"size")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#dry"},"dry")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#shape"},"shape")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#squiz"},"squiz")))),createElement("li",{parentName:"ul"},createElement("p",{parentName:"li"},createElement("a",{parentName:"p",href:"#synth-effects"},"Synth Effects")),createElement("ul",{parentName:"li"},createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#octave"},"octave")),createElement("li",{parentName:"ul"},createElement("a",{parentName:"li",href:"#detune"},"detune"))))))),createElement("h1",{id:"what-is-strudel"},createElement("a",{parentName:"h1","aria-hidden":"true",tabIndex:-1,href:"#what-is-strudel"},createElement("span",{parentName:"a",className:"icon icon-link"})),"What is Strudel?"),createElement("p",null,`With Strudel, you can expressively write dynamic music pieces. It aims to be `,createElement("a",{parentName:"p",href:"https://tidalcycles.org/"},"Tidal Cycles")," for JavaScript (started by the same author)."),createElement("p",null,"You don't need to know JavaScript or Tidal Cycles to make music with Strudel."),createElement("p",null,"This interactive tutorial will guide you through the basics of Strudel."),createElement("p",null,"The best place to actually make music with Strudel is the ",createElement("a",{parentName:"p",href:"https://strudel.tidalcycles.org/"},"Strudel REPL"),"."),createElement("h2",{id:"show-me-a-demo"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#show-me-a-demo"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Show me a Demo"),createElement("p",null,"To get a taste of what Strudel can do, check out this track:"),createElement(MiniRepl,{tune:`const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out()); const kick = new MembraneSynth().chain(vol(.8), out()); const snare = new NoiseSynth().chain(vol(.8), out()); @@ -646,4 +421,4 @@ All you need is a github account.`),createElement("p",null,"If you want to run t They can provide streams of numbers that can be sampled at discrete points in time.`),createElement("h3",{id:"saw"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#saw"},createElement("span",{parentName:"a",className:"icon icon-link"})),"saw"),createElement("p",null,"A sawtooth signal between 0 and 1."),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'"c3 [eb3,g3] g2 [g3,bb3]".legato(saw.slow(4))',mdxType:"MiniRepl"}),createElement(MiniRepl,{tune:"saw.range(0,8).segment(8).scale('C major').slow(4)",mdxType:"MiniRepl"})),createElement("h3",{id:"sine"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#sine"},createElement("span",{parentName:"a",className:"icon icon-link"})),"sine"),createElement("p",null,"A sine signal between 0 and 1."),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:"sine.segment(16).range(0,15).slow(2).scale('C minor')",mdxType:"MiniRepl"})),createElement("h3",{id:"cosine"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#cosine"},createElement("span",{parentName:"a",className:"icon icon-link"})),"cosine"),createElement("p",null,"A cosine signal between 0 and 1."),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:"stack(sine,cosine).segment(16).range(0,15).slow(2).scale('C minor')",mdxType:"MiniRepl"})),createElement("h3",{id:"tri"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#tri"},createElement("span",{parentName:"a",className:"icon icon-link"})),"tri"),createElement("p",null,"A triangle signal between 0 and 1."),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:"triangle.segment(2).range(0,7).scale('C minor')",mdxType:"MiniRepl"})),createElement("h3",{id:"square"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#square"},createElement("span",{parentName:"a",className:"icon icon-link"})),"square"),createElement("p",null,"A square signal between 0 and 1."),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:"square.segment(2).range(0,7).scale('C minor')",mdxType:"MiniRepl"})),createElement("h2",{id:"using-samples-with-webdirt"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#using-samples-with-webdirt"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Using Samples with Webdirt"),createElement("p",null,"You can use the powerful sampling engine ",createElement("a",{parentName:"p",href:"https://github.com/dktr0/WebDirt"},"Webdirt")," with Strudel."),createElement("h3",{id:"patternwebdirt"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#patternwebdirt"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Pattern.webdirt"),createElement("p",null,"Uses ",createElement("a",{href:"https://github.com/dktr0/WebDirt"},"webdirt")," as output."),createElement("details",null,createElement("summary",null,"show supported Webdirt controls"),createElement("ul",null,createElement("li",null,"s :: String, -- name of sample bank"),createElement("li",null,"n :: Int, -- number of sample within a bank"),createElement("li",null,createElement("a",{href:"#gain"},"gain")," :: Number, -- clamped from 0 to 2; 1 is default and full-scale"),createElement("li",null,"overgain :: Number, -- additional gain added to gain to go past clamp at 2"),createElement("li",null,createElement("a",{href:"#pan"},"pan")," :: Number, -- range: 0 to 1"),createElement("li",null,"nudge :: Number, -- nudge the time of the sample forwards/backwards in seconds"),createElement("li",null,createElement("a",{href:"#speed"},"speed")," :: Number, -- speed / pitch of the sample"),createElement("li",null,createElement("a",{href:"#unit"},"unit")," :: String"),createElement("li",null,"note :: Number, -- pitch offset in semitones"),createElement("li",null,createElement("a",{href:"#begin"},"begin")," :: Number, -- cut from sample start, normalized"),createElement("li",null,createElement("a",{href:"#end"},"end")," :: Number, -- cut from sample end, normalized"),createElement("li",null,createElement("a",{href:"#cut"},"cut")," :: Int, -- samples with same cut number will interupt each other"),createElement("li",null,createElement("a",{href:"#cutoff"},"cutoff")," :: Number, -- lowpass filter frequency"),createElement("li",null,createElement("a",{href:"#resonance"},"resonance")," :: Number, -- lowpass filter resonance"),createElement("li",null,createElement("a",{href:"#hcutoff"},"hcutoff")," :: Number, -- highpass filter frequency"),createElement("li",null,createElement("a",{href:"#hresonance"},"hresonance")," :: Number, -- highpass filter resonance"),createElement("li",null,createElement("a",{href:"#bandf"},"bandf")," :: Number, -- bandpass filter frequency"),createElement("li",null,createElement("a",{href:"#bandq"},"bandq")," :: Number, -- bandpass filter resonance"),createElement("li",null,createElement("a",{href:"#vowel"},"vowel")," :: String, -- name of vowel ('a' | 'e' | 'i' | 'o' | 'u')"),createElement("li",null,"delay :: Number, -- delay wet/dry mix"),createElement("li",null,"delaytime :: Number, -- delay time in seconds"),createElement("li",null,"delayfeedback :: Number, -- delay feedback"),createElement("li",null,createElement("a",{href:"#loop"},"loop")," :: Number, -- loop sample n times (relative to sample length)"),createElement("li",null,createElement("a",{href:"#crush"},"crush")," :: Number, -- bitcrusher (currently not working)"),createElement("li",null,createElement("a",{href:"#coarse"},"coarse")," :: Number, -- coarse effect (currently not working)"),createElement("li",null,createElement("a",{href:"#shape"},"shape")," :: Number, -- (currently not working)"))),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd*2 hh sd hh").n("<0 1>").webdirt()',mdxType:"MiniRepl"})),createElement("h2",{id:"using-superdirt-via-osc"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#using-superdirt-via-osc"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Using Superdirt via OSC"),createElement("p",null,`In mainline tidal, the actual sound is generated via Superdirt, which runs inside Supercollider. Strudel also supports using Superdirt as a backend, although it requires some developer tooling to run.`),createElement("h3",{id:"getting-started"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#getting-started"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Getting Started"),createElement("p",null,"Getting Superdirt to work with Strudel, you need to"),createElement("ol",null,createElement("li",{parentName:"ol"},"install SuperCollider + sc3 plugins, see ",createElement("a",{parentName:"li",href:"https://tidalcycles.org/docs/"},"Tidal Docs")," (Install Tidal) for more info."),createElement("li",{parentName:"ol"},"install ",createElement("a",{parentName:"li",href:"https://nodejs.org/en/"},"node.js")),createElement("li",{parentName:"ol"},"download ",createElement("a",{parentName:"li",href:"https://github.com/tidalcycles/strudel/"},"Strudel Repo")," (or git clone, if you have git installed)"),createElement("li",{parentName:"ol"},"run ",createElement("inlineCode",{parentName:"li"},"npm i")," in the strudel directory"),createElement("li",{parentName:"ol"},"run ",createElement("inlineCode",{parentName:"li"},"npm run osc")," to start the osc server, which forwards OSC messages from Strudel REPL to SuperCollider")),createElement("p",null,"Now you're all set!"),createElement("h3",{id:"usage"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#usage"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Usage"),createElement("ol",null,createElement("li",{parentName:"ol"},"Start SuperCollider, either using SuperCollider IDE or by running ",createElement("inlineCode",{parentName:"li"},"sclang")," in a terminal"),createElement("li",{parentName:"ol"},"Open the ",createElement("a",{parentName:"li",href:"https://strudel.tidalcycles.org/#cygiYmQgc2QiKS5vc2MoKQ%3D%3D"},"Strudel REPL"))),createElement("p",null,"...or test it here:"),createElement(MiniRepl,{tune:'s("bd sd").osc()',mdxType:"MiniRepl"}),createElement("p",null,"If you now hear sound, congratulations! If not, you can get help on the ",createElement("a",{parentName:"p",href:"https://discord.com/invite/HGEdXmRkzT"},"#strudel channel in the TidalCycles discord"),"."),createElement("h3",{id:"patternosc"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#patternosc"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Pattern.osc"),createElement("p",null,"Sends each hap as an OSC message, which can be picked up by SuperCollider or any other OSC-enabled software."),createElement("h1",{id:"superdirt-params"},createElement("a",{parentName:"h1","aria-hidden":"true",tabIndex:-1,href:"#superdirt-params"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Superdirt Params"),createElement("p",null,"The following functions are specific to SuperDirt and won't work with other Strudel outputs."),createElement("h2",{id:"basic-types"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#basic-types"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Basic Types"),createElement("h3",{id:"s"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#s"},createElement("span",{parentName:"a",className:"icon icon-link"})),"s"),createElement("p",null,"Select a sound / sample by name."),createElement("details",null,createElement("summary",null,"show all sounds"),createElement("p",null,"808 (6) 808bd (25) 808cy (25) 808hc (5) 808ht (5) 808lc (5) 808lt (5) 808mc (5) 808mt (5) 808oh (5) 808sd (25) 909 (1) ab (12) ade (10) ades2 (9) ades3 (7) ades4 (6) alex (2) alphabet (26) amencutup (32) armora (7) arp (2) arpy (11) auto (11) baa (7) baa2 (7) bass (4) bass0 (3) bass1 (30) bass2 (5) bass3 (11) bassdm (24) bassfoo (3) battles (2) bd (24) bend (4) bev (2) bin (2) birds (10) birds3 (19) bleep (13) blip (2) blue (2) bottle (13) breaks125 (2) breaks152 (1) breaks157 (1) breaks165 (1) breath (1) bubble (8) can (14) casio (3) cb (1) cc (6) chin (4) circus (3) clak (2) click (4) clubkick (5) co (4) coins (1) control (2) cosmicg (15) cp (2) cr (6) crow (4) d (4) db (13) diphone (38) diphone2 (12) dist (16) dork2 (4) dorkbot (2) dr (42) dr2 (6) dr55 (4) dr_few (8) drum (6) drumtraks (13) e (8) east (9) electro1 (13) em2 (6) erk (1) f (1) feel (7) feelfx (8) fest (1) fire (1) flick (17) fm (17) foo (27) future (17) gab (10) gabba (4) gabbaloud (4) gabbalouder (4) glasstap (3) glitch (8) glitch2 (8) gretsch (24) gtr (3) h (7) hand (17) hardcore (12) hardkick (6) haw (6) hc (6) hh (13) hh27 (13) hit (6) hmm (1) ho (6) hoover (6) house (8) ht (16) if (5) ifdrums (3) incoming (8) industrial (32) insect (3) invaders (18) jazz (8) jungbass (20) jungle (13) juno (12) jvbass (13) kicklinn (1) koy (2) kurt (7) latibro (8) led (1) less (4) lighter (33) linnhats (6) lt (16) made (7) made2 (1) mash (2) mash2 (4) metal (10) miniyeah (4) monsterb (6) moog (7) mouth (15) mp3 (4) msg (9) mt (16) mute (28) newnotes (15) noise (1) noise2 (8) notes (15) numbers (9) oc (4) odx (15) off (1) outdoor (6) pad (3) padlong (1) pebbles (1) perc (6) peri (15) pluck (17) popkick (10) print (11) proc (2) procshort (8) psr (30) rave (8) rave2 (4) ravemono (2) realclaps (4) reverbkick (1) rm (2) rs (1) sax (22) sd (2) seawolf (3) sequential (8) sf (18) sheffield (1) short (5) sid (12) sine (6) sitar (8) sn (52) space (18) speakspell (12) speech (7) speechless (10) speedupdown (9) stab (23) stomp (10) subroc3d (11) sugar (2) sundance (6) tabla (26) tabla2 (46) tablex (3) tacscan (22) tech (13) techno (7) tink (5) tok (4) toys (13) trump (11) ul (10) ulgab (5) uxay (3) v (6) voodoo (5) wind (10) wobble (1) world (3) xmas (1) yeah (31)"),createElement("p",null,createElement("a",{href:"https://tidalcycles.org/docs/configuration/Audio%20Samples/default_library",target:"_blank"},"more info"))),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"sound (string|Pattern): The sound / pattern of sounds to pick")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd hh").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"n"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#n"},createElement("span",{parentName:"a",className:"icon icon-link"})),"n"),createElement("p",null,"The note or sample number to choose for a synth or sampleset Note names currently not working yet, but will hopefully soon. Just stick to numbers for now"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"value (string|number|Pattern): note name, note number or sample number")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:`s('superpiano').n("<0 1 2 3>").osc()`,mdxType:"MiniRepl"}),createElement(MiniRepl,{tune:`s('superpiano').n("").osc()`,mdxType:"MiniRepl"}),createElement(MiniRepl,{tune:`n("0 1 2 3").s('east').osc()`,mdxType:"MiniRepl"})),createElement("h3",{id:"freq"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#freq"},createElement("span",{parentName:"a",className:"icon icon-link"})),"freq"),createElement("p",null,"Set frequency of sound."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"frequency (number|Pattern): in Hz. the audible range is between 20 and 20000 Hz")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'freq("220 110 440 110").s("superzow").osc()',mdxType:"MiniRepl"}),createElement(MiniRepl,{tune:'freq("110".mulOut(".5 1.5 .6 [2 3]")).s("superzow").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"channel"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#channel"},createElement("span",{parentName:"a",className:"icon icon-link"})),"channel"),createElement("p",null,"choose the channel the pattern is sent to in superdirt"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"channel (number|Pattern): channel number")),createElement("h3",{id:"orbit"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#orbit"},createElement("span",{parentName:"a",className:"icon icon-link"})),"orbit"),createElement("p",null,"a pattern of numbers. An ",createElement("code",null,"orbit")," is a global parameter context for patterns. Patterns with the same orbit will share hardware output bus offset and global effects, e.g. reverb and delay. The maximum number of orbits is specified in the superdirt startup, numbers higher than maximum will wrap around."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"number (number|Pattern): undefined")),createElement("h2",{id:"filters"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#filters"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Filters"),createElement("h3",{id:"cutoff"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#cutoff"},createElement("span",{parentName:"a",className:"icon icon-link"})),"cutoff"),createElement("p",null,"Applies the cutoff frequency of the low-pass filter."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"frequency (number|Pattern): audible between 0 and 20000")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd,hh*2,<~ sd>").fast(2).cutoff("<4000 2000 1000 500 200 100>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"resonance"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#resonance"},createElement("span",{parentName:"a",className:"icon icon-link"})),"resonance"),createElement("p",null,"Applies the cutoff frequency of the low-pass filter."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"q (number|Pattern): resonance factor between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd,hh*2,<~ sd>").fast(2).cutoff(2000).resonance("<0 .2 .4 .6>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"hcutoff"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#hcutoff"},createElement("span",{parentName:"a",className:"icon icon-link"})),"hcutoff"),createElement("p",null,"Applies the cutoff frequency of the high-pass filter."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"frequency (number|Pattern): audible between 0 and 20000")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd,hh*2,<~ sd>").fast(2).hcutoff("<4000 2000 1000 500 200 100>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"hresonance"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#hresonance"},createElement("span",{parentName:"a",className:"icon icon-link"})),"hresonance"),createElement("p",null,"Applies the cutoff frequency of the high-pass filter."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"q (number|Pattern): resonance factor between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd,hh*2,<~ sd>").fast(2).hcutoff(2000).hresonance("<0 .2 .4 .6>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"bandf"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#bandf"},createElement("span",{parentName:"a",className:"icon icon-link"})),"bandf"),createElement("p",null,"Sets the center frequency of the band-pass filter."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"frequency (number|Pattern): center frequency")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").bandf("<1000 2000 4000 8000>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"bandq"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#bandq"},createElement("span",{parentName:"a",className:"icon icon-link"})),"bandq"),createElement("p",null,"Sets the q-factor of the band-pass filter"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"q (number|Pattern): q factor")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").bandf(2000).bandq("<.2 .9>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"djf"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#djf"},createElement("span",{parentName:"a",className:"icon icon-link"})),"djf"),createElement("p",null,"Set detune of oscillators. Works only with some synths, see ",createElement("a",{target:"_blank",href:"https://tidalcycles.org/docs/patternlib/tutorials/synthesizers"},"tidal doc")),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"cutoff (number|Pattern): below 0.5 is low pass filter, above is high pass filter")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:`n("0 3 7 [10,24]").s('superzow').octave(3).djf("<.5 .25 .5 .75>").osc()`,mdxType:"MiniRepl"})),createElement("h3",{id:"vowel"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#vowel"},createElement("span",{parentName:"a",className:"icon icon-link"})),"vowel"),createElement("p",null,"Formant filter to make things sound like vowels."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"vowel (string|Pattern): You can use a e i o u. Use a rest (~) to override the effect")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:`vowel("a e i [o u]").slow(2) .n("<[0,7]!4 [2,7]!4>") -.s('supersquare').osc()`,mdxType:"MiniRepl"})),createElement("h2",{id:"sample-editing"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#sample-editing"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Sample Editing"),createElement("h3",{id:"cut"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#cut"},createElement("span",{parentName:"a",className:"icon icon-link"})),"cut"),createElement("p",null,"In the style of classic drum-machines, ",createElement("code",null,"cut")," will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"group (number|Pattern): cut group number")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sax").cut(1).osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"begin"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#begin"},createElement("span",{parentName:"a",className:"icon icon-link"})),"begin"),createElement("p",null,"a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. ",createElement("code",null,"0.25")," to cut off the first quarter from each sample."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): between 0 and 1, where 1 is the length of the sample")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("rave").begin("<0 .25 .5 .75>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"end"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#end"},createElement("span",{parentName:"a",className:"icon icon-link"})),"end"),createElement("p",null,"The same as ",createElement("a",{href:"#begin"},"begin"),", but cuts off the end off each sample."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"length (number|Pattern): 1 = whole sample, .5 = half sample, .25 = quarter sample etc..")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd*2,ho*4").end("<.1 .2 .5 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"loop"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#loop"},createElement("span",{parentName:"a",className:"icon icon-link"})),"loop"),createElement("p",null,"Loops the sample (from ",createElement("code",null,"begin")," to ",createElement("code",null,"end"),") the specified number of times. Note that the tempo of the loop is not synced with the cycle tempo."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"times (number|Pattern): How often the sample is looped")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd").loop("<1 2 3 4>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"speed"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#speed"},createElement("span",{parentName:"a",className:"icon icon-link"})),"speed"),createElement("p",null,"Changes the speed of sample playback, i.e. a cheap way of changing pitch."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"speed (number|Pattern): inf to inf, negative numbers play the sample backwards.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd").speed("<1 2 4 1 -2 -4>").osc()',mdxType:"MiniRepl"}),createElement(MiniRepl,{tune:'speed("1 1.5*2 [2 1.1]").s("sax").cut(1).osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"unit"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#unit"},createElement("span",{parentName:"a",className:"icon icon-link"})),"unit"),createElement("p",null,"Used in conjunction with ",createElement("a",{href:"#speed"},"speed"),', accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using ',createElement("code",null,'unit "c"')," means ",createElement("code",null,"speed")," will be interpreted in units of cycles, e.g. ",createElement("code",null,'speed "1"')," means samples will be stretched to fill a cycle. Using ",createElement("code",null,'unit "s"')," means the playback speed will be adjusted so that the duration is the number of seconds specified by ",createElement("code",null,"speed"),"."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"unit (number|string|Pattern): see description above")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'speed("1 2 .5 3").s("bd").unit("c").osc()',mdxType:"MiniRepl"})),createElement("h2",{id:"audio-effects"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#audio-effects"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Audio Effects"),createElement("h3",{id:"gain"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#gain"},createElement("span",{parentName:"a",className:"icon icon-link"})),"gain"),createElement("p",null,"Like ",createElement("a",{href:"#amp"},"amp"),", but exponential."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): gain.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd*8").gain(".7*2 1 .7*2 1 .7 1").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"amp"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#amp"},createElement("span",{parentName:"a",className:"icon icon-link"})),"amp"),createElement("p",null,"Like ",createElement("a",{href:"#gain"},"gain"),", but linear."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): gain.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd*8").amp(".1*2 .5 .1*2 .5 .1 .5").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"accelerate"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#accelerate"},createElement("span",{parentName:"a",className:"icon icon-link"})),"accelerate"),createElement("p",null,"A pattern of numbers that speed up (or slow down) samples while they play. Currently only supported by osc / superdirt."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): acceleration.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("sax").accelerate("<0 1 2 4 8 16>").slow(2).osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"crush"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#crush"},createElement("span",{parentName:"a",className:"icon icon-link"})),"crush"),createElement("p",null,"bit crusher effect."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"depth (number|Pattern): between 1 (for drastic reduction in bit-depth) to 16 (for barely no reduction).")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s(",hh*3,jvbass*2").fast(2).crush("<16 8 7 6 5 4 3 2>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"coarse"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#coarse"},createElement("span",{parentName:"a",className:"icon icon-link"})),"coarse"),createElement("p",null,"fake-resampling for lowering the sample rate"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"factor (number|Pattern): 1 for original 2 for half, 3 for a third and so on.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("xmas").coarse("<1 4 8 16 32>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"leslie"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#leslie"},createElement("span",{parentName:"a",className:"icon icon-link"})),"leslie"),createElement("p",null,"Emulation of a Leslie speaker: speakers rotating in a wooden amplified cabinet."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"wet (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("0,4,7").s("supersquare").leslie("<0 .4 .6 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"lrate"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#lrate"},createElement("span",{parentName:"a",className:"icon icon-link"})),"lrate"),createElement("p",null,"Rate of modulation / rotation for leslie effect"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"rate (number|Pattern): 6.7 for fast, 0.7 for slow")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("0,4,7").s("supersquare").leslie(1).lrate("<1 2 4 8>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"lsize"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#lsize"},createElement("span",{parentName:"a",className:"icon icon-link"})),"lsize"),createElement("p",null,"Physical size of the cabinet in meters. Be careful, it might be slightly larger than your computer. Affects the Doppler amount (pitch warble)"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"meters (number|Pattern): somewhere between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("0,4,7").s("supersquare").leslie(1).lrate(2).lsize("<.1 .5 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"pan"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#pan"},createElement("span",{parentName:"a",className:"icon icon-link"})),"pan"),createElement("p",null,"Sets position in stereo."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"pan (number|Pattern): between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel)")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("[bd hh]*2").pan("<.5 1 .5 0>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"room"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#room"},createElement("span",{parentName:"a",className:"icon icon-link"})),"room"),createElement("p",null,"Sets the level of reverb."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"level (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").room("<0 .2 .4 .6 .8 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"size"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#size"},createElement("span",{parentName:"a",className:"icon icon-link"})),"size"),createElement("p",null,"Sets the room size of the reverb, see ",createElement("a",{href:"#room"},"room"),"."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"size (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").room(.8).size("<0 .2 .4 .6 .8 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"dry"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#dry"},createElement("span",{parentName:"a",className:"icon icon-link"})),"dry"),createElement("p",null,"Set dryness of reverb. See ",createElement("a",{href:"#room"},"room")," and ",createElement("a",{href:"#size"},"size")," for more information about reverb."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"dry (number|Pattern): 0 = wet, 1 = dry")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("[0,3,7](3,8)").s("superpiano").room(.7).dry("<0 .5 .75 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"shape"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#shape"},createElement("span",{parentName:"a",className:"icon icon-link"})),"shape"),createElement("p",null,"Wave shaping distortion. CAUTION: it might get loud"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"distortion (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").shape("<0 .2 .4 .6 .8 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"squiz"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#squiz"},createElement("span",{parentName:"a",className:"icon icon-link"})),"squiz"),createElement("p",null,"Made by Calum Gunn. Reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter. The SuperCollider manual defines Squiz as:"),createElement("p",null,`"A simplistic pitch-raising algorithm. It's not meant to sound natural; its sound is reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter, depending on the input. The algorithm works by cutting the signal into fragments (delimited by upwards-going zero-crossings) and squeezing those fragments in the time domain (i.e. simply playing them back faster than they came in), leaving silences inbetween. All the parameters apart from memlen can be modulated."`),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"squiz (number|Pattern): Try passing multiples of 2 to it - 2, 4, 8 etc.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'squiz("2 4/2 6 [8 16]").s("bd").osc()',mdxType:"MiniRepl"})),createElement("h2",{id:"synth-effects"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#synth-effects"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Synth Effects"),createElement("h3",{id:"octave"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#octave"},createElement("span",{parentName:"a",className:"icon icon-link"})),"octave"),createElement("p",null,"Sets the default octave of a synth."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"octave (number|Pattern): octave number")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:`n("0,4,7").s('supersquare').octave("<3 4 5 6>").osc()`,mdxType:"MiniRepl"})),createElement("h3",{id:"detune"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#detune"},createElement("span",{parentName:"a",className:"icon icon-link"})),"detune"),createElement("p",null,"Set detune of oscillators. Works only with some synths, see ",createElement("a",{target:"_blank",href:"https://tidalcycles.org/docs/patternlib/tutorials/synthesizers"},"tidal doc")),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:`n("0 3 7").s('superzow').octave(3).detune("<0 .25 .5 1 2>").osc()`,mdxType:"MiniRepl"})))}MDXContent.isMDXComponent=!0;var style$1="",style="";ReactDOM.render(jsx(React.StrictMode,{children:jsxs("div",{className:"min-h-screen",children:[jsx("header",{className:"flex-none flex justify-start sticky top-0 z-[2] w-full h-16 px-2 items-center border-b border-gray-200 bg-white",children:jsxs("div",{className:"p-4 w-full flex justify-between",children:[jsxs("div",{className:"flex items-center space-x-2",children:[jsx("img",{src:"https://tidalcycles.org/img/logo.svg",className:"Tidal-logo w-10 h-10",alt:"logo"}),jsx("h1",{className:"text-xl cursor-pointer",onClick:()=>window.scrollTo(0,0),children:"Strudel Tutorial"})]}),!window.location.href.includes("localhost")&&jsx("div",{className:"flex space-x-4",children:jsx("a",{href:"../",children:"go to REPL"})})]})}),jsx("main",{className:"p-4 pl-6 max-w-3xl prose",children:jsx(MDXContent,{})})]})}),document.getElementById("root"));export{reify$1 as A,stack as B,strudel as C,enableWebMidi as D,TimeSpan$1 as E,loadWebDirt as F,loadBuffer as G,Hap as H,getLoadedBuffer as I,loadGithubSamples as J,samples as K,resetLoadedSamples as L,getLoadedSamples as M,Pattern$4 as P,State$1 as S,Tone$1 as T,WebMidi as W,amsynth as a,metal as b,monosynth as c,duosynth as d,polysynth as e,fmsynth as f,getDefaultSynth as g,players as h,synth as i,piano as j,highpass as k,lowpass as l,membrane as m,noise as n,adsr as o,pluck as p,osc as q,out as r,sampler as s,getDrawContext$1 as t,cleanupDraw as u,vol as v,mod as w,getAugmentedNamespace as x,commonjsGlobal as y,getDefaultExportFromCjs as z}; +.s('supersquare').osc()`,mdxType:"MiniRepl"})),createElement("h2",{id:"sample-editing"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#sample-editing"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Sample Editing"),createElement("h3",{id:"cut"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#cut"},createElement("span",{parentName:"a",className:"icon icon-link"})),"cut"),createElement("p",null,"In the style of classic drum-machines, ",createElement("code",null,"cut")," will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"group (number|Pattern): cut group number")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sax").cut(1).osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"begin"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#begin"},createElement("span",{parentName:"a",className:"icon icon-link"})),"begin"),createElement("p",null,"a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. ",createElement("code",null,"0.25")," to cut off the first quarter from each sample."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): between 0 and 1, where 1 is the length of the sample")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("rave").begin("<0 .25 .5 .75>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"end"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#end"},createElement("span",{parentName:"a",className:"icon icon-link"})),"end"),createElement("p",null,"The same as ",createElement("a",{href:"#begin"},"begin"),", but cuts off the end off each sample."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"length (number|Pattern): 1 = whole sample, .5 = half sample, .25 = quarter sample etc..")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd*2,ho*4").end("<.1 .2 .5 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"loop"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#loop"},createElement("span",{parentName:"a",className:"icon icon-link"})),"loop"),createElement("p",null,"Loops the sample (from ",createElement("code",null,"begin")," to ",createElement("code",null,"end"),") the specified number of times. Note that the tempo of the loop is not synced with the cycle tempo."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"times (number|Pattern): How often the sample is looped")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd").loop("<1 2 3 4>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"speed"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#speed"},createElement("span",{parentName:"a",className:"icon icon-link"})),"speed"),createElement("p",null,"Changes the speed of sample playback, i.e. a cheap way of changing pitch."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"speed (number|Pattern): inf to inf, negative numbers play the sample backwards.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd").speed("<1 2 4 1 -2 -4>").osc()',mdxType:"MiniRepl"}),createElement(MiniRepl,{tune:'speed("1 1.5*2 [2 1.1]").s("sax").cut(1).osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"unit"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#unit"},createElement("span",{parentName:"a",className:"icon icon-link"})),"unit"),createElement("p",null,"Used in conjunction with ",createElement("a",{href:"#speed"},"speed"),', accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using ',createElement("code",null,'unit "c"')," means ",createElement("code",null,"speed")," will be interpreted in units of cycles, e.g. ",createElement("code",null,'speed "1"')," means samples will be stretched to fill a cycle. Using ",createElement("code",null,'unit "s"')," means the playback speed will be adjusted so that the duration is the number of seconds specified by ",createElement("code",null,"speed"),"."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"unit (number|string|Pattern): see description above")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'speed("1 2 .5 3").s("bd").unit("c").osc()',mdxType:"MiniRepl"})),createElement("h2",{id:"audio-effects"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#audio-effects"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Audio Effects"),createElement("h3",{id:"gain"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#gain"},createElement("span",{parentName:"a",className:"icon icon-link"})),"gain"),createElement("p",null,"Like ",createElement("a",{href:"#amp"},"amp"),", but exponential."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): gain.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd*8").gain(".7*2 1 .7*2 1 .7 1").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"amp"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#amp"},createElement("span",{parentName:"a",className:"icon icon-link"})),"amp"),createElement("p",null,"Like ",createElement("a",{href:"#gain"},"gain"),", but linear."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): gain.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd*8").amp(".1*2 .5 .1*2 .5 .1 .5").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"accelerate"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#accelerate"},createElement("span",{parentName:"a",className:"icon icon-link"})),"accelerate"),createElement("p",null,"A pattern of numbers that speed up (or slow down) samples while they play. Currently only supported by osc / superdirt."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): acceleration.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("sax").accelerate("<0 1 2 4 8 16>").slow(2).osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"crush"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#crush"},createElement("span",{parentName:"a",className:"icon icon-link"})),"crush"),createElement("p",null,"bit crusher effect."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"depth (number|Pattern): between 1 (for drastic reduction in bit-depth) to 16 (for barely no reduction).")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s(",hh*3,jvbass*2").fast(2).crush("<16 8 7 6 5 4 3 2>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"coarse"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#coarse"},createElement("span",{parentName:"a",className:"icon icon-link"})),"coarse"),createElement("p",null,"fake-resampling for lowering the sample rate"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"factor (number|Pattern): 1 for original 2 for half, 3 for a third and so on.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("xmas").coarse("<1 4 8 16 32>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"leslie"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#leslie"},createElement("span",{parentName:"a",className:"icon icon-link"})),"leslie"),createElement("p",null,"Emulation of a Leslie speaker: speakers rotating in a wooden amplified cabinet."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"wet (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("0,4,7").s("supersquare").leslie("<0 .4 .6 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"lrate"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#lrate"},createElement("span",{parentName:"a",className:"icon icon-link"})),"lrate"),createElement("p",null,"Rate of modulation / rotation for leslie effect"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"rate (number|Pattern): 6.7 for fast, 0.7 for slow")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("0,4,7").s("supersquare").leslie(1).lrate("<1 2 4 8>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"lsize"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#lsize"},createElement("span",{parentName:"a",className:"icon icon-link"})),"lsize"),createElement("p",null,"Physical size of the cabinet in meters. Be careful, it might be slightly larger than your computer. Affects the Doppler amount (pitch warble)"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"meters (number|Pattern): somewhere between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("0,4,7").s("supersquare").leslie(1).lrate(2).lsize("<.1 .5 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"pan"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#pan"},createElement("span",{parentName:"a",className:"icon icon-link"})),"pan"),createElement("p",null,"Sets position in stereo."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"pan (number|Pattern): between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel)")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("[bd hh]*2").pan("<.5 1 .5 0>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"room"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#room"},createElement("span",{parentName:"a",className:"icon icon-link"})),"room"),createElement("p",null,"Sets the level of reverb."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"level (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").room("<0 .2 .4 .6 .8 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"size"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#size"},createElement("span",{parentName:"a",className:"icon icon-link"})),"size"),createElement("p",null,"Sets the room size of the reverb, see ",createElement("a",{href:"#room"},"room"),"."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"size (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").room(.8).size("<0 .2 .4 .6 .8 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"dry"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#dry"},createElement("span",{parentName:"a",className:"icon icon-link"})),"dry"),createElement("p",null,"Set dryness of reverb. See ",createElement("a",{href:"#room"},"room")," and ",createElement("a",{href:"#size"},"size")," for more information about reverb."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"dry (number|Pattern): 0 = wet, 1 = dry")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'n("[0,3,7](3,8)").s("superpiano").room(.7).dry("<0 .5 .75 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"shape"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#shape"},createElement("span",{parentName:"a",className:"icon icon-link"})),"shape"),createElement("p",null,"Wave shaping distortion. CAUTION: it might get loud"),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"distortion (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'s("bd sd").shape("<0 .2 .4 .6 .8 1>").osc()',mdxType:"MiniRepl"})),createElement("h3",{id:"squiz"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#squiz"},createElement("span",{parentName:"a",className:"icon icon-link"})),"squiz"),createElement("p",null,"Made by Calum Gunn. Reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter. The SuperCollider manual defines Squiz as:"),createElement("p",null,`"A simplistic pitch-raising algorithm. It's not meant to sound natural; its sound is reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter, depending on the input. The algorithm works by cutting the signal into fragments (delimited by upwards-going zero-crossings) and squeezing those fragments in the time domain (i.e. simply playing them back faster than they came in), leaving silences inbetween. All the parameters apart from memlen can be modulated."`),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"squiz (number|Pattern): Try passing multiples of 2 to it - 2, 4, 8 etc.")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:'squiz("2 4/2 6 [8 16]").s("bd").osc()',mdxType:"MiniRepl"})),createElement("h2",{id:"synth-effects"},createElement("a",{parentName:"h2","aria-hidden":"true",tabIndex:-1,href:"#synth-effects"},createElement("span",{parentName:"a",className:"icon icon-link"})),"Synth Effects"),createElement("h3",{id:"octave"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#octave"},createElement("span",{parentName:"a",className:"icon icon-link"})),"octave"),createElement("p",null,"Sets the default octave of a synth."),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"octave (number|Pattern): octave number")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:`n("0,4,7").s('supersquare').octave("<3 4 5 6>").osc()`,mdxType:"MiniRepl"})),createElement("h3",{id:"detune"},createElement("a",{parentName:"h3","aria-hidden":"true",tabIndex:-1,href:"#detune"},createElement("span",{parentName:"a",className:"icon icon-link"})),"detune"),createElement("p",null,"Set detune of oscillators. Works only with some synths, see ",createElement("a",{target:"_blank",href:"https://tidalcycles.org/docs/patternlib/tutorials/synthesizers"},"tidal doc")),createElement("p",null,createElement("strong",{parentName:"p"},"Parameters")),createElement("ul",null,createElement("li",{parentName:"ul"},"amount (number|Pattern): between 0 and 1")),createElement("p",null,createElement("strong",{parentName:"p"},"Examples")),createElement("div",{className:"space-y-2"},createElement(MiniRepl,{tune:`n("0 3 7").s('superzow').octave(3).detune("<0 .25 .5 1 2>").osc()`,mdxType:"MiniRepl"})))}MDXContent.isMDXComponent=!0;var style$1="",style="";ReactDOM.render(jsx(React.StrictMode,{children:jsxs("div",{className:"min-h-screen",children:[jsx("header",{className:"flex-none flex justify-start sticky top-0 z-[2] w-full h-16 px-2 items-center border-b border-gray-200 bg-white",children:jsxs("div",{className:"p-4 w-full flex justify-between",children:[jsxs("div",{className:"flex items-center space-x-2",children:[jsx("img",{src:"https://tidalcycles.org/img/logo.svg",className:"Tidal-logo w-10 h-10",alt:"logo"}),jsx("h1",{className:"text-xl cursor-pointer",onClick:()=>window.scrollTo(0,0),children:"Strudel Tutorial"})]}),!window.location.href.includes("localhost")&&jsx("div",{className:"flex space-x-4",children:jsx("a",{href:"../",children:"go to REPL"})})]})}),jsx("main",{className:"p-4 pl-6 max-w-3xl prose",children:jsx(MDXContent,{})})]})}),document.getElementById("root"));export{reify$1 as A,stack as B,strudel as C,enableWebMidi as D,TimeSpan$1 as E,loadWebDirt as F,loadBuffer as G,Hap as H,getLoadedBuffer as I,loadGithubSamples as J,samples as K,resetLoadedSamples as L,getLoadedSamples as M,Pattern$4 as P,State$1 as S,Tone as T,WebMidi as W,amsynth as a,metal as b,monosynth as c,duosynth as d,polysynth as e,fmsynth as f,getDefaultSynth as g,players as h,synth as i,piano as j,highpass as k,lowpass as l,membrane as m,noise as n,adsr as o,pluck as p,osc as q,out as r,sampler as s,getDrawContext$1 as t,cleanupDraw as u,vol as v,mod as w,getAugmentedNamespace as x,commonjsGlobal as y,getDefaultExportFromCjs as z}; diff --git a/tutorial/assets/index.321c57dd.js b/tutorial/assets/index.5f4f06b4.js similarity index 99% rename from tutorial/assets/index.321c57dd.js rename to tutorial/assets/index.5f4f06b4.js index 92ffb7406..a9347e181 100644 --- a/tutorial/assets/index.321c57dd.js +++ b/tutorial/assets/index.5f4f06b4.js @@ -1,4 +1,4 @@ -var tt=Object.defineProperty,nt=Object.defineProperties;var at=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var Pe=Object.prototype.hasOwnProperty,Oe=Object.prototype.propertyIsEnumerable;var Re=(a,f,r)=>f in a?tt(a,f,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[f]=r,H=(a,f)=>{for(var r in f||(f={}))Pe.call(f,r)&&Re(a,r,f[r]);if(M)for(var r of M(f))Oe.call(f,r)&&Re(a,r,f[r]);return a},J=(a,f)=>nt(a,at(f));var qe=(a,f)=>{var r={};for(var $ in a)Pe.call(a,$)&&f.indexOf($)<0&&(r[$]=a[$]);if(a!=null&&M)for(var $ of M(a))f.indexOf($)<0&&Oe.call(a,$)&&(r[$]=a[$]);return r};import{C as it}from"./index.a9d67b3c.js";function ft(a,f){function r(){this.constructor=a}r.prototype=f.prototype,a.prototype=new r}function D(a,f,r,$){var l=Error.call(this,a);return Object.setPrototypeOf&&Object.setPrototypeOf(l,D.prototype),l.expected=f,l.found=r,l.location=$,l.name="SyntaxError",l}ft(D,Error);function K(a,f,r){return r=r||" ",a.length>f?a:(f-=a.length,r+=r.repeat(f),a+r.slice(0,f))}D.prototype.format=function(a){var f="Error: "+this.message;if(this.location){var r=null,$;for($=0;$f in a?tt(a,f,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[f]=r,H=(a,f)=>{for(var r in f||(f={}))Pe.call(f,r)&&Re(a,r,f[r]);if(M)for(var r of M(f))Oe.call(f,r)&&Re(a,r,f[r]);return a},J=(a,f)=>nt(a,at(f));var qe=(a,f)=>{var r={};for(var $ in a)Pe.call(a,$)&&f.indexOf($)<0&&(r[$]=a[$]);if(a!=null&&M)for(var $ of M(a))f.indexOf($)<0&&Oe.call(a,$)&&(r[$]=a[$]);return r};import{C as it}from"./index.5a47cda7.js";function ft(a,f){function r(){this.constructor=a}r.prototype=f.prototype,a.prototype=new r}function D(a,f,r,$){var l=Error.call(this,a);return Object.setPrototypeOf&&Object.setPrototypeOf(l,D.prototype),l.expected=f,l.found=r,l.location=$,l.name="SyntaxError",l}ft(D,Error);function K(a,f,r){return r=r||" ",a.length>f?a:(f-=a.length,r+=r.repeat(f),a+r.slice(0,f))}D.prototype.format=function(a){var f="Error: "+this.message;if(this.location){var r=null,$;for($=0;$ `+m+` `+w+` | `+l.line+" | "+E+` diff --git a/tutorial/assets/index.8434e414.css b/tutorial/assets/index.8434e414.css new file mode 100644 index 000000000..eff678c3f --- /dev/null +++ b/tutorial/assets/index.8434e414.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.container{width:100%}.\!container{width:100%!important}@media (min-width: 640px){.container{max-width:640px}.\!container{max-width:640px!important}}@media (min-width: 768px){.container{max-width:768px}.\!container{max-width:768px!important}}@media (min-width: 1024px){.container{max-width:1024px}.\!container{max-width:1024px!important}}@media (min-width: 1280px){.container{max-width:1280px}.\!container{max-width:1280px!important}}@media (min-width: 1536px){.container{max-width:1536px}.\!container{max-width:1536px!important}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~="not-prose"] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(ol):not(:where([class~="not-prose"] *)){list-style-type:decimal;padding-left:1.625em}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~="not-prose"] *)){list-style-type:disc;padding-left:1.625em}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~="not-prose"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201c""\201d""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *)):after{content:close-quote}.prose :where(h1):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~="not-prose"] *)){font-weight:900}.prose :where(h2):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~="not-prose"] *)){font-weight:800}.prose :where(h3):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~="not-prose"] *)){font-weight:700}.prose :where(h4):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~="not-prose"] *)){font-weight:700}.prose :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~="not-prose"] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~="not-prose"] *)):before{content:"`"}.prose :where(code):not(:where([class~="not-prose"] *)):after{content:"`"}.prose :where(a code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links)}.prose :where(pre):not(:where([class~="not-prose"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~="not-prose"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~="not-prose"] *)):before{content:none}.prose :where(pre code):not(:where([class~="not-prose"] *)):after{content:none}.prose :where(table):not(:where([class~="not-prose"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~="not-prose"] *)){vertical-align:baseline;padding:.5714286em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.875em}.prose :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.9em}.prose :where(li):not(:where([class~="not-prose"] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose>:where(ul > li p):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose>:where(ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose>:where(ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose>:where(ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose>:where(ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(tbody td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(tbody td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose>:where(:first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose>:where(:last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~="not-prose"] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.prose-lg :where([class~="lead"]):not(:where([class~="not-prose"] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.prose-lg :where(blockquote):not(:where([class~="not-prose"] *)){margin-top:1.6666667em;margin-bottom:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~="not-prose"] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.prose-lg :where(h2):not(:where([class~="not-prose"] *)){font-size:1.6666667em;margin-top:1.8666667em;margin-bottom:1.0666667em;line-height:1.3333333}.prose-lg :where(h3):not(:where([class~="not-prose"] *)){font-size:1.3333333em;margin-top:1.6666667em;margin-bottom:.6666667em;line-height:1.5}.prose-lg :where(h4):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:.4444444em;line-height:1.5555556}.prose-lg :where(img):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.prose-lg :where(video):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.prose-lg :where(figure):not(:where([class~="not-prose"] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.prose-lg :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose-lg :where(figcaption):not(:where([class~="not-prose"] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(code):not(:where([class~="not-prose"] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~="not-prose"] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~="not-prose"] *)){padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~="not-prose"] *)){padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~="not-prose"] *)){margin-top:.6666667em;margin-bottom:.6666667em}.prose-lg :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.4444444em}.prose-lg :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.4444444em}.prose-lg>:where(ul > li p):not(:where([class~="not-prose"] *)){margin-top:.8888889em;margin-bottom:.8888889em}.prose-lg>:where(ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.3333333em}.prose-lg>:where(ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.3333333em}.prose-lg>:where(ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.3333333em}.prose-lg>:where(ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.8888889em;margin-bottom:.8888889em}.prose-lg :where(hr):not(:where([class~="not-prose"] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.prose-lg :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg :where(table):not(:where([class~="not-prose"] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~="not-prose"] *)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.prose-lg :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose-lg :where(tbody td):not(:where([class~="not-prose"] *)){padding:.75em}.prose-lg :where(tbody td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose-lg :where(tbody td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose-lg>:where(:first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose-lg>:where(:last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.\!visible{visibility:visible!important}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.\!fixed{position:fixed!important}.absolute{position:absolute}.\!absolute{position:absolute!important}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.-inset-1{top:-.25rem;right:-.25rem;bottom:-.25rem;left:-.25rem}.top-0{top:0px}.left-1{left:.25rem}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-\[2\]{z-index:2}.float-right{float:right}.float-left{float:left}.float-none{float:none}.clear-left{clear:left}.clear-right{clear:right}.clear-both{clear:both}.clear-none{clear:none}.mt-2{margin-top:.5rem}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.block{display:block}.\!block{display:block!important}.inline-block{display:inline-block}.inline{display:inline}.\!inline{display:inline!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.\!table{display:table!important}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.h-16{height:4rem}.h-10{height:2.5rem}.h-1{height:.25rem}.h-\[calc\(100\%-theme\(\'spacing\.1\'\)\)\],.h-\[calc\(100\%-theme\(\"spacing\.1\"\)\)\]{height:calc(100% - .25rem)}.min-h-screen{min-height:100vh}.w-full{width:100%}.w-10{width:2.5rem}.max-w-3xl{max-width:48rem}.flex-none{flex:none}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform-cpu{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-gpu{transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-pointer{cursor:pointer}.touch-auto{touch-action:auto}.touch-none{touch-action:none}.touch-pan-x{--tw-pan-x: pan-x;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-left{--tw-pan-x: pan-left;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-right{--tw-pan-x: pan-right;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-y{--tw-pan-y: pan-y;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-up{--tw-pan-y: pan-up;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-down{--tw-pan-y: pan-down;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pinch-zoom{--tw-pinch-zoom: pinch-zoom;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.resize-none{resize:none}.resize-y{resize:vertical}.resize-x{resize:horizontal}.resize{resize:both}.snap-none{-ms-scroll-snap-type:none;scroll-snap-type:none}.snap-x{-ms-scroll-snap-type:x var(--tw-scroll-snap-strictness);scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-y{-ms-scroll-snap-type:y var(--tw-scroll-snap-strictness);scroll-snap-type:y var(--tw-scroll-snap-strictness)}.snap-both{-ms-scroll-snap-type:both var(--tw-scroll-snap-strictness);scroll-snap-type:both var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness: mandatory}.snap-proximity{--tw-scroll-snap-strictness: proximity}.snap-start{scroll-snap-align:start}.snap-end{scroll-snap-align:end}.snap-center{scroll-snap-align:center}.snap-align-none{scroll-snap-align:none}.snap-normal{scroll-snap-stop:normal}.snap-always{scroll-snap-stop:always}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.break-before-auto{-moz-column-break-before:auto;break-before:auto}.break-before-avoid{-moz-column-break-before:avoid;break-before:avoid}.break-before-all{-moz-column-break-before:all;break-before:all}.break-before-avoid-page{-moz-column-break-before:avoid;break-before:avoid-page}.break-before-page{-moz-column-break-before:page;break-before:page}.break-before-left{-moz-column-break-before:left;break-before:left}.break-before-right{-moz-column-break-before:right;break-before:right}.break-before-column{-moz-column-break-before:column;break-before:column}.break-inside-auto{-moz-column-break-inside:auto;break-inside:auto}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.break-inside-avoid-page{break-inside:avoid-page}.break-inside-avoid-column{-moz-column-break-inside:avoid;break-inside:avoid-column}.break-after-auto{-moz-column-break-after:auto;break-after:auto}.break-after-avoid{-moz-column-break-after:avoid;break-after:avoid}.break-after-all{-moz-column-break-after:all;break-after:all}.break-after-avoid-page{-moz-column-break-after:avoid;break-after:avoid-page}.break-after-page{-moz-column-break-after:page;break-after:page}.break-after-left{-moz-column-break-after:left;break-after:left}.break-after-right{-moz-column-break-after:right;break-after:right}.break-after-column{-moz-column-break-after:column;break-after:column}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.grid-flow-row-dense{grid-auto-flow:row dense}.grid-flow-col-dense{grid-auto-flow:column dense}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.place-content-center{place-content:center}.place-content-start{place-content:start}.place-content-end{place-content:end}.place-content-between{place-content:space-between}.place-content-around{place-content:space-around}.place-content-evenly{place-content:space-evenly}.place-content-stretch{place-content:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 1}.divide-solid>:not([hidden])~:not([hidden]){border-style:solid}.divide-dashed>:not([hidden])~:not([hidden]){border-style:dashed}.divide-dotted>:not([hidden])~:not([hidden]){border-style:dotted}.divide-double>:not([hidden])~:not([hidden]){border-style:double}.divide-none>:not([hidden])~:not([hidden]){border-style:none}.place-self-auto{place-self:auto}.place-self-start{place-self:start}.place-self-end{place-self:end}.place-self-center{place-self:center}.place-self-stretch{place-self:stretch}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.self-baseline{align-self:baseline}.justify-self-auto{justify-self:auto}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.justify-self-stretch{justify-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.overflow-y-clip{overflow-y:clip}.overflow-x-visible{overflow-x:visible}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overscroll-auto{-ms-scroll-chaining:chained;overscroll-behavior:auto}.overscroll-contain{-ms-scroll-chaining:none;overscroll-behavior:contain}.overscroll-none{-ms-scroll-chaining:none;overscroll-behavior:none}.overscroll-y-auto{overscroll-behavior-y:auto}.overscroll-y-contain{overscroll-behavior-y:contain}.overscroll-y-none{overscroll-behavior-y:none}.overscroll-x-auto{overscroll-behavior-x:auto}.overscroll-x-contain{overscroll-behavior-x:contain}.overscroll-x-none{overscroll-behavior-x:none}.scroll-auto{scroll-behavior:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis,.text-ellipsis{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-l{border-left-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-double{border-style:double}.border-hidden{border-style:hidden}.border-none{border-style:none}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-\[rgb\(255\,0\,0\)\]{--tw-bg-opacity: 1;background-color:rgb(255 0 0 / var(--tw-bg-opacity))}.bg-\[url\(\'\.\.\.\'\)\]{background-image:url(...)}.bg-\[url\(\"\.\.\.\"\)\]{background-image:url(...)}.bg-\[url\(\'\.\.\.\'\)\,url\(\'\.\.\.\'\)\]{background-image:url(...),url(...)}.bg-\[url\(\"\.\.\.\"\)\,url\(\"\.\.\.\"\)\]{background-image:url(...),url(...)}.decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.box-decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.box-decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.bg-fixed{background-attachment:fixed}.bg-local{background-attachment:local}.bg-scroll{background-attachment:scroll}.bg-clip-border{background-clip:border-box}.bg-clip-padding{background-clip:padding-box}.bg-clip-content{background-clip:content-box}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-repeat{background-repeat:repeat}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-repeat-round{background-repeat:round}.bg-repeat-space{background-repeat:space}.bg-origin-border{background-origin:border-box}.bg-origin-padding{background-origin:padding-box}.bg-origin-content{background-origin:content-box}.fill-\[\#bada55\]{fill:#bada55}.fill-\[\#bada55\]\/50{fill:#bada5580}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.object-none{-o-object-fit:none;object-fit:none}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.p-4{padding:1rem}.p-1{padding:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-1{padding-left:.25rem;padding-right:.25rem}.pl-6{padding-left:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-top{vertical-align:text-top}.align-text-bottom{vertical-align:text-bottom}.align-sub{vertical-align:sub}.align-super{vertical-align:super}.font-\[\'some_font\'\,sans-serif\],.font-\[\"some_font\"\,sans-serif\]{font-family:some font,sans-serif}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal: ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero: slashed-zero;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure: lining-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure: oldstyle-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing: proportional-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction: diagonal-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction: stacked-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.decoration-solid{-webkit-text-decoration-style:solid;text-decoration-style:solid}.decoration-double{-webkit-text-decoration-style:double;text-decoration-style:double}.decoration-dotted{-webkit-text-decoration-style:dotted;text-decoration-style:dotted}.decoration-dashed{-webkit-text-decoration-style:dashed;text-decoration-style:dashed}.decoration-wavy{-webkit-text-decoration-style:wavy;text-decoration-style:wavy}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.bg-blend-normal{background-blend-mode:normal}.bg-blend-multiply{background-blend-mode:multiply}.bg-blend-screen{background-blend-mode:screen}.bg-blend-overlay{background-blend-mode:overlay}.bg-blend-darken{background-blend-mode:darken}.bg-blend-lighten{background-blend-mode:lighten}.bg-blend-color-dodge{background-blend-mode:color-dodge}.bg-blend-color-burn{background-blend-mode:color-burn}.bg-blend-hard-light{background-blend-mode:hard-light}.bg-blend-soft-light{background-blend-mode:soft-light}.bg-blend-difference{background-blend-mode:difference}.bg-blend-exclusion{background-blend-mode:exclusion}.bg-blend-hue{background-blend-mode:hue}.bg-blend-saturation{background-blend-mode:saturation}.bg-blend-color{background-blend-mode:color}.bg-blend-luminosity{background-blend-mode:luminosity}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-screen{mix-blend-mode:screen}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-darken{mix-blend-mode:darken}.mix-blend-lighten{mix-blend-mode:lighten}.mix-blend-color-dodge{mix-blend-mode:color-dodge}.mix-blend-color-burn{mix-blend-mode:color-burn}.mix-blend-hard-light{mix-blend-mode:hard-light}.mix-blend-soft-light{mix-blend-mode:soft-light}.mix-blend-difference{mix-blend-mode:difference}.mix-blend-exclusion{mix-blend-mode:exclusion}.mix-blend-hue{mix-blend-mode:hue}.mix-blend-saturation{mix-blend-mode:saturation}.mix-blend-color{mix-blend-mode:color}.mix-blend-luminosity{mix-blend-mode:luminosity}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.\!shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1) !important;--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-dashed{outline-style:dashed}.outline-dotted{outline-style:dotted}.outline-double{outline-style:double}.outline-hidden{outline-style:hidden}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!invert{--tw-invert: invert(100%) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.sepia{--tw-sepia: sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter-none{filter:none}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-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);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)}.backdrop-grayscale{--tw-backdrop-grayscale: grayscale(100%);-webkit-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);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)}.backdrop-invert{--tw-backdrop-invert: invert(100%);-webkit-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);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)}.backdrop-sepia{--tw-backdrop-sepia: sepia(100%);-webkit-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);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)}.backdrop-filter{-webkit-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);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)}.backdrop-filter-none{-webkit-backdrop-filter:none;backdrop-filter:none}.transition{transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.content-\[\'hello\'\],.content-\[\"hello\"\]{--tw-content: "hello";content:var(--tw-content)}.content-\[\'this-is-also-valid\]-weirdly-enough\'\]{--tw-content: "this-is-also-valid]-weirdly-enough";content:var(--tw-content)}.\[attr\:value\]{attr:value}.\[content\:\'hello\'\],.\[content\:\"hello\"\]{content:"hello"}.\[vite\:css\]{vite:css}h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{display:block;content:" ";margin-top:-70px;height:70px;visibility:hidden;pointer-events:none;position:relative}h1:hover .icon-link,h2:hover .icon-link,h3:hover .icon-link,h4:hover .icon-link,h5:hover .icon-link,h6:hover .icon-link,.icon.icon-link:hover{visibility:visible}.icon.icon-link{background-image:url(/tutorial/assets/link.55bc37e1.svg);background-repeat:no-repeat;height:16px;display:block;color:gray;fill:#000;position:absolute;visibility:hidden;margin-left:-20px;width:20px;margin-top:8px}#table-of-contents{display:none}#table-of-contents+ul{position:fixed;right:0;top:64px;overflow:auto;height:calc(100vh - 64px);width:33%;margin:2px;padding:12px 0 12px 8px}#table-of-contents+ul ul{padding-left:8px}#table-of-contents+ul li{list-style:none;margin:2px}#table-of-contents+ul li p{margin:0}#table-of-contents+ul li a{text-decoration:none}@media only screen and (max-width: 1120px){#table-of-contents+ul{display:none}}.hover\:font-bold:hover{font-weight:700}.before\:hover\:text-center:hover:before{content:var(--tw-content);text-align:center}.hover\:before\:text-center:hover:before{content:var(--tw-content);text-align:center}.hover\:focus\:text-center:focus:hover{text-align:center}.focus\:hover\:text-center:hover:focus{text-align:center}.prose-headings\:underline :is(:where(h1,h2,h3,h4,th):not(:where([class~="not-prose"] *))){-webkit-text-decoration-line:underline;text-decoration-line:underline}.prose-lead\:italic :is(:where([class~="lead"]):not(:where([class~="not-prose"] *))){font-style:italic}.prose-h1\:text-3xl :is(:where(h1):not(:where([class~="not-prose"] *))){font-size:1.875rem;line-height:2.25rem}.prose-h2\:text-2xl :is(:where(h2):not(:where([class~="not-prose"] *))){font-size:1.5rem;line-height:2rem}.prose-h3\:text-xl :is(:where(h3):not(:where([class~="not-prose"] *))){font-size:1.25rem;line-height:1.75rem}.prose-h4\:text-lg :is(:where(h4):not(:where([class~="not-prose"] *))){font-size:1.125rem;line-height:1.75rem}.prose-p\:text-gray-700 :is(:where(p):not(:where([class~="not-prose"] *))){--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.prose-a\:font-bold :is(:where(a):not(:where([class~="not-prose"] *))){font-weight:700}.prose-blockquote\:italic :is(:where(blockquote):not(:where([class~="not-prose"] *))){font-style:italic}.prose-figure\:mx-auto :is(:where(figure):not(:where([class~="not-prose"] *))){margin-left:auto;margin-right:auto}.prose-figcaption\:opacity-75 :is(:where(figcaption):not(:where([class~="not-prose"] *))){opacity:.75}.prose-strong\:font-medium :is(:where(strong):not(:where([class~="not-prose"] *))){font-weight:500}.prose-em\:italic :is(:where(em):not(:where([class~="not-prose"] *))){font-style:italic}.prose-code\:font-mono :is(:where(code):not(:where([class~="not-prose"] *))){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.prose-pre\:font-mono :is(:where(pre):not(:where([class~="not-prose"] *))){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.prose-ol\:pl-6 :is(:where(ol):not(:where([class~="not-prose"] *))){padding-left:1.5rem}.prose-ul\:pl-8 :is(:where(ul):not(:where([class~="not-prose"] *))){padding-left:2rem}.prose-li\:my-4 :is(:where(li):not(:where([class~="not-prose"] *))){margin-top:1rem;margin-bottom:1rem}.prose-table\:my-8 :is(:where(table):not(:where([class~="not-prose"] *))){margin-top:2rem;margin-bottom:2rem}.prose-thead\:border-red-300 :is(:where(thead):not(:where([class~="not-prose"] *))){--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.prose-tr\:border-red-200 :is(:where(tr):not(:where([class~="not-prose"] *))){--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity))}.prose-th\:text-left :is(:where(th):not(:where([class~="not-prose"] *))){text-align:left}.prose-img\:rounded-lg :is(:where(img):not(:where([class~="not-prose"] *))){border-radius:.5rem}.prose-video\:my-12 :is(:where(video):not(:where([class~="not-prose"] *))){margin-top:3rem;margin-bottom:3rem}.prose-hr\:border-t-2 :is(:where(hr):not(:where([class~="not-prose"] *))){border-top-width:2px}@media (min-width: 640px){.sm\:container{width:100%}@media (min-width: 640px){.sm\:container{max-width:640px}}@media (min-width: 768px){.sm\:container{max-width:768px}}@media (min-width: 1024px){.sm\:container{max-width:1024px}}@media (min-width: 1280px){.sm\:container{max-width:1280px}}@media (min-width: 1536px){.sm\:container{max-width:1536px}}.sm\:underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}}@media (prefers-color-scheme: dark){@media (min-width: 1024px){.dark\:lg\:hover\:\[paint-order\:markers\]:hover{paint-order:markers}}}*,:before,:after{--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sc-h-5{height:1.25rem}.sc-w-5{width:1.25rem}@-webkit-keyframes sc-pulse{50%{opacity:.5}}@keyframes sc-pulse{50%{opacity:.5}}.sc-animate-pulse{-webkit-animation:sc-pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:sc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cm-editor{background-color:transparent!important}._container_10e1g_1{overflow:hidden;border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(68 76 87 / var(--tw-bg-opacity))}._header_10e1g_5{display:flex;justify-content:space-between;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}._buttons_10e1g_9{display:flex}._button_10e1g_9{display:flex;width:4rem;cursor:pointer;align-items:center;justify-content:center;border-right-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}._button_10e1g_9:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}._buttonDisabled_10e1g_17{display:flex;width:4rem;cursor:pointer;cursor:not-allowed;align-items:center;justify-content:center;--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}._error_10e1g_21{padding:.25rem;text-align:right;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}._body_10e1g_25{position:relative;overflow:auto} diff --git a/tutorial/assets/index.af577255.js b/tutorial/assets/index.af577255.js deleted file mode 100644 index 42cab7057..000000000 --- a/tutorial/assets/index.af577255.js +++ /dev/null @@ -1 +0,0 @@ -var x=Object.defineProperty,A=Object.defineProperties;var C=Object.getOwnPropertyDescriptors;var k=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var f=(e,t,r)=>t in e?x(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))T.call(t,r)&&f(e,r,t[r]);if(k)for(var r of k(t))b.call(t,r)&&f(e,r,t[r]);return e},w=(e,t)=>A(e,C(t));var u=(e,t,r)=>(f(e,typeof t!="symbol"?t+"":t,r),r);import{S as N,E as q,C as O}from"./index.a9d67b3c.js";const M=e=>"("+e+")();",R=e=>URL.createObjectURL(new Blob([M(e)],{type:"text/javascript"})),S=e=>new Worker(R(e));class V{constructor(t,r,n=this.interval){u(this,"worker");u(this,"audioContext");u(this,"interval",.2);u(this,"lastEnd",0);this.audioContext=t,this.interval=n,this.worker=S(()=>{let i,o=null;const s=()=>{o&&(clearInterval(o),o=null)},a=()=>{if(s(),!i)throw new Error("no interval set! call worker.postMessage({interval}) before starting.");o=setInterval(()=>postMessage("tick"),i*1e3)};self.onmessage=function(l){l.data=="start"?a():l.data.interval?(i=l.data.interval,o&&a()):l.data=="stop"&&s()}}),this.worker.postMessage({interval:n}),this.worker.onmessage=i=>{if(i.data==="tick"){const o=this.lastEnd||this.audioContext.currentTime,s=this.audioContext.currentTime+this.interval;this.lastEnd=s,r(o,s)}}}start(){console.log("start..."),this.audioContext.resume(),this.worker.postMessage("start")}stop(){console.log("stop..."),this.worker.postMessage("stop")}}class W{constructor({audioContext:t,interval:r=.2,onEvent:n}){u(this,"worker");u(this,"pattern");this.worker=new V(t,(i,o)=>{this.pattern.query(new N(new q(i,o))).forEach(s=>{!s.part.begin.equals(s.whole.begin)||(n?n==null||n(s):console.warn("unplayable event: no audio node nor onEvent callback",s))})},r)}start(){if(!this.pattern)throw new Error("Scheduler: no pattern set! call .setPattern first.");this.worker.start()}stop(){this.worker.stop()}setPattern(t){this.pattern=t}}const{Pattern:c,getFrequency:_,patternify2:F}=O;let d;const p=()=>(d||(d=new AudioContext),d),g=.2,E=(e,t,r,n,i,o,s)=>{const a=p().createGain();return a.gain.setValueAtTime(0,o),a.gain.linearRampToValueAtTime(i,o+e),a.gain.linearRampToValueAtTime(r*i,o+e+t),a.gain.setValueAtTime(r*i,s),a.gain.linearRampToValueAtTime(0,s+n),a};c.prototype.withAudioNode=function(e){return this._withHap(t=>t.setContext(w(h({},t.context),{createAudioNode:(r,n)=>{var i,o;return e(r,n,(o=(i=t.context).createAudioNode)==null?void 0:o.call(i,r,t))}})))};c.prototype._wave=function(e){return this.withAudioNode((t,r)=>{const n=p().createOscillator();n.type=e;const i=_(r);n.frequency.value=i;const o=t!=null?t:r.whole.begin.valueOf()+g,s=o+r.duration.valueOf();return n.start(o),n.stop(s),n})};c.prototype.adsr=function(e=.01,t=.05,r=1,n=.01){return this.withAudioNode((i,o,s)=>{var v;const a=((v=o.context)==null?void 0:v.velocity)||1,l=i!=null?i:o.whole.begin.valueOf()+g,m=l+o.duration.valueOf()+g,y=E(e,t,r,n,a,l,m);return s==null||s.connect(y),y})};c.prototype._filter=function(e="lowpass",t=1e3){return this.withAudioNode((r,n,i)=>{const o=p().createBiquadFilter();return o.type=e,o.frequency.value=t,i==null||i.connect(o),o})};c.prototype.filter=function(e,t){return F(c.prototype._filter)(reify(e),reify(t),this)};c.prototype.out=function(){const e=p().createGain();return e.gain.value=.1,e.connect(p().destination),this.withAudioNode((t,r,n)=>{n||console.warn("out: no source! call .osc() first"),n==null||n.connect(e)})._withHap(t=>{const r=(n,i)=>{var o,s;return(s=(o=i.context)==null?void 0:o.createAudioNode)==null?void 0:s.call(o,n,i)};return t.setContext(w(h({},t.context),{onTrigger:r}))})};c.prototype.define("wave",(e,t)=>t.wave(e),{patternified:!0});export{V as ClockWorker,W as Scheduler,p as getAudioContext}; diff --git a/tutorial/assets/index.bca2d889.js b/tutorial/assets/index.bca2d889.js deleted file mode 100644 index be86e5417..000000000 --- a/tutorial/assets/index.bca2d889.js +++ /dev/null @@ -1 +0,0 @@ -import{W as a,D as b}from"./index.a9d67b3c.js";export{a as WebMidi,b as enableWebMidi}; diff --git a/tutorial/assets/index.72ac4b27.js b/tutorial/assets/index.bf2b2693.js similarity index 99% rename from tutorial/assets/index.72ac4b27.js rename to tutorial/assets/index.bf2b2693.js index 793184dfa..201c56d62 100644 --- a/tutorial/assets/index.72ac4b27.js +++ b/tutorial/assets/index.bf2b2693.js @@ -1 +1 @@ -var h=Object.defineProperty,q=Object.defineProperties;var g=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var y=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var m=(i,n,e)=>n in i?h(i,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[n]=e,c=(i,n)=>{for(var e in n||(n={}))y.call(n,e)&&m(i,e,n[e]);if(p)for(var e of p(n))b.call(n,e)&&m(i,e,n[e]);return i},a=(i,n)=>q(i,g(n));import{P as o,w as _}from"./index.a9d67b3c.js";function S(i){if(!/^[1-9]+[0-9]*edo$/.test(i))throw new Error('not an edo scale: "'+i+'"');const[n,e]=i.match(/^([1-9]+[0-9]*)edo$/);return Array.from({length:e},(r,s)=>Math.pow(2,s/e))}const f={"12ji":[1/1,16/15,9/8,6/5,5/4,4/3,45/32,3/2,8/5,5/3,16/9,15/8]};function v(i,n){return n.map(e=>e*i)}const w=220;function k(i,n){if(typeof i=="string")if(/^[1-9]+[0-9]*edo$/.test(i))i=S(i);else if(f[i])i=f[i];else throw new Error('unknown scale name: "'+i+'"');return i=v(w,i),n?i.filter((e,r)=>n.includes(r)):i}function l(i,n,e=0){const r=_(e+n,i.length),s=Math.floor(n/i.length);return i[r]*Math.pow(2,s)}o.prototype._xen=function(i,n){return this._asNumber()._withHap(e=>{const r=k(i);n=n||r.length;const s=l(r,e.value);return e.withValue(()=>s).setContext(a(c({},e.context),{type:"frequency"}))})};o.prototype.tuning=function(i){return this._asNumber()._withHap(n=>{const e=l(i,n.value);return n.withValue(()=>e).setContext(a(c({},n.context),{type:"frequency"}))})};o.prototype.define("xen",(i,n)=>n.xen(i),{composable:!0,patternified:!0});function t(){this.scale=[],this.mode={output:"frequency",input:"step"},this.etmajor=[261.62558,293.664764,329.627563,349.228241,391.995422,440,493.883301,523.25116],this.tonic=440}t.prototype.tonicize=function(i){this.tonic=i};t.prototype.note=function(i,n){var e;return this.mode.output=="frequency"?e=this.frequency(i,n):this.mode.output=="ratio"?e=this.ratio(i,n):this.mode.output=="MIDI"?e=this.MIDI(i,n):e=this.frequency(i,n),e};t.prototype.frequency=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);for(var r=i%this.scale.length;r<0;)r+=this.scale.length;var s=this.tonic*this.scale[r];return s=s*Math.pow(2,e),s=Math.floor(s*1e11)/1e11,s};t.prototype.ratio=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);var r=i%this.scale.length,s=Math.pow(2,e)*this.scale[r];return s=Math.floor(s*1e11)/1e11,s};t.prototype.MIDI=function(i,n){var e=this.frequency(i,n),r=69+12*Math.log(e/440)/Math.log(2);return r=Math.floor(r*1e9)/1e9,r};t.prototype.loadScale=function(i){var n=u[i].frequencies;this.scale=[];for(var e=0;e[1, 1, -1]->[0, 1, -1]->[0, 0, -1]->[0, 0, 0]->[0, -1, 0],[0, -1, 1]->[0, -2, 1]->[-1, -2, 1]"},breedt1:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,326.6631048533,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Graham Breed's 1/4 P temperament, TL 10-06-99"},breedt2:{frequencies:[261.6255653006,276.37000081643,293.53214922797,310.91625060765,328.43856194079,349.78078158391,368.4933346061,392.4383479509,414.55500101742,439.10654054756,466.37437567834,492.65784266492,523.2511306012],description:"Graham Breed's 1/5 P temperament, TL 10-06-99"},breedt3:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,350.01785633742,368.74309237173,392.4383479509,414.83597850347,438.51190905657,466.69047534984,491.65745674141,523.2511306012],description:"Graham Breed's other 1/4 P temperament, TL 10-06-99"},brown:{frequencies:[261.6255653006,272.52663052146,275.62199471997,275.93321340298,279.38237857051,287.10624449997,290.69507255622,291.02331101095,294.32876096318,306.24666079997,306.59245933664,310.07474405997,310.42486507835,322.99452506247,327.03195662575,331.11985608357,344.52749339997,344.91651675372,348.83408706747,349.22797321314,363.36884069528,367.49599295996,367.91095120397,372.50983809402,382.80832599996,387.59343007496,388.03108134794,392.4383479509,408.78994578219,413.43299207996,413.89982010446,430.65936674996,436.04260883433,436.53496651643,441.49314144476,459.36999119996,459.88868900496,465.11211608996,465.63729761752,484.4917875937,489.99465727995,490.54793493862,496.67978412536,516.79124009995,517.37477513058,523.2511306012],description:"Tuning of Colin Brown's Voice Harmonium, Glasgow. Helmholtz/Ellis p. 470-473"},bruder:{frequencies:[261.6255653006,276.38325105256,293.66476791741,310.22971009486,327.53979283172,349.02656754477,368.60786575306,391.65594491223,414.34624765043,439.23819834286,465.62553897253,491.60634075178,523.2511306012],description:"Ignaz Bruder organ temperament (1829) according to P. Vier"},burma3:{frequencies:[261.6255653006,287.71029735626,317.68827763215,350.39147881787,389.32370520689,429.81331927092,476.14308821464,523.2511306012],description:"Burmese scale, von Hornbostel"},"burt-forks":{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Warren Burt 19-tone Forks. Interval 5(3): pp. 13+23 Winter 1986-87"},burt1:{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,415.52295665389,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"W. Burt's 13diatsub #1"},burt10:{frequencies:[261.6255653006,265.11390617127,268.69652652494,272.3773008609,276.16031892841,355.06326719367,368.21375857121,382.37582620857,386.08821287079,389.87339142835,393.73352401674,397.67085925691,523.2511306012],description:"W. Burt's 19enhsub #10"},burt11:{frequencies:[261.6255653006,344.24416486921,347.6866065179,351.12904816659,354.57148981529,358.01393146398,371.78369805875,385.55346465352,495.71159741166,502.59648070905,509.48136400643,516.36624730382,523.2511306012],description:"W. Burt's 19enhharm #11"},burt12:{frequencies:[261.6255653006,302.93486508491,316.70463167967,330.47439827444,344.24416486921,358.01393146398,371.78369805875,385.55346465352,440.63253103259,468.17206422213,495.71159741166,509.48136400643,523.2511306012],description:"W. Burt's 19diatharm #12"},burt13:{frequencies:[261.6255653006,273.51763645063,286.54228580542,293.53112204458,300.86940009569,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,523.2511306012],description:"W. Burt's 23diatsub #13"},burt14:{frequencies:[261.6255653006,264.50057151269,267.43946675172,270.4444045804,273.51763645063,334.29933343966,353.96400011258,376.08675011961,382.05638107389,388.21858076863,394.58281979763,401.15920012759,523.2511306012],description:"W. Burt's 23enhsub #14"},burt15:{frequencies:[261.6255653006,341.25073734861,346.93824963775,352.6257619269,358.31327421604,364.00078650518,386.75083566176,409.50088481833,500.50108144463,506.18859373377,511.87610602291,517.56361831206,523.2511306012],description:"W. Burt's 23enhharm #15"},burt16:{frequencies:[261.6255653006,295.75063903546,307.12566361375,318.50068819203,341.25073734861,364.00078650518,386.75083566176,409.50088481833,455.00098313148,466.37600770977,477.75103228805,500.50108144463,523.2511306012],description:"W. Burt's 23diatharm #16"},burt17:{frequencies:[261.6255653006,262.27760655527,262.77528702311,280.51080915002,281.04308772525,281.33584094163,286.12102533302,286.66394947976,306.91182648178,308.56189006502,309.14739649778,336.61297098002,337.2517052703,337.60300912996,338.42271813583,339.41807907152,363.01398831179,369.18841978454,370.27426807802,396.01525997649,398.14437427744,399.31538714296,403.93556517602,406.10726176299,434.33931739357,434.79175418253,435.61678597414,437.95881170519,475.21831197179,476.86837555503,477.77324913293,478.27092960078,479.17846457156,521.20718087229,521.75010501903,522.74014316897,523.2511306012],description:`W. Burt's "2 out of 3,5,11,17,31 dekany" CPS with 1/1=3/1. 1/1 vol. 10(1) '98`},burt18:{frequencies:[261.6255653006,268.26840191956,269.80136421624,270.50397193556,275.42222597075,281.04308772525,286.15296204753,295.09524211152,300.46061014991,306.59245933664,309.14739649778,314.76825825228,321.92208230347,324.60476632267,337.2517052703,343.38355445704,344.27778246344,354.11429053382,357.69120255941,367.91095120397,370.97687579734,375.57576268738,393.46032281536,404.70204632437,413.13333895612,421.56463158788,429.2294430713,432.80635509689,449.66894036041,463.72109474667,472.15238737843,490.54793493862,491.82540351919,500.76768358318,505.87755790546,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 1,3,5,7,11 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt19:{frequencies:[261.6255653006,268.26840191956,286.15296204753,294.32876096318,300.46061014991,306.59245933664,321.92208230347,327.03195662575,343.38355445704,357.69120255941,367.91095120397,375.57576268738,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 2,3,4,5,7 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt2:{frequencies:[261.6255653006,264.16561933264,266.75547834571,269.39662169567,272.09058791262,340.11323489078,344.41846571218,348.83408706747,353.36439988652,358.01393146398,412.25846653428,485.87604984397,523.2511306012],description:"W. Burt's 13enhsub #2"},burt20:{frequencies:[261.6255653006,269.10058145205,279.06726965397,279.38237857051,294.32876096318,298.00787047521,330.74639366397,335.25885428462,367.91095120397,376.74081403286,412.06026534844,418.60090448096,523.2511306012],description:'Warren Burt tuning for "Commas" (1993) 1/1=263. XH 16'},burt3:{frequencies:[261.6255653006,281.75060878526,332.06321749692,382.37582620857,387.40708707973,392.4383479509,397.46960882207,402.50086969323,503.12608711654,508.1573479877,513.18860885887,518.21986973003,523.2511306012],description:"W. Burt's 13enhharm #3"},burt4:{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,342.12573923925,362.25078272391,382.37582620857,402.50086969323,442.75095666255,462.87600014722,483.00104363188,503.12608711654,523.2511306012],description:"W. Burt's 13diatharm #4, see his post 3/30/94 in Tuning Digest #57"},burt5:{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,277.97716313189,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"W. Burt's 17diatsub #5"},burt6:{frequencies:[261.6255653006,265.53042448419,269.55361273395,273.7005913914,277.97716313189,370.63621750918,386.75083566176,404.33041910093,408.97789518255,413.73345210327,418.60090448096,423.58424858192,523.2511306012],description:"W. Burt's 17enhsub #6"},burt7:{frequencies:[261.6255653006,323.18452184192,327.03195662575,330.87939140958,334.72682619341,338.57426097725,353.96400011258,369.35373924791,492.47165233054,500.16652189821,507.86139146587,515.55626103354,523.2511306012],description:"W. Burt's 17enhharm #7"},burt8:{frequencies:[261.6255653006,277.01530443593,292.40504357126,307.79478270659,323.18452184192,338.57426097725,353.96400011258,369.35373924791,400.13321751856,430.91269578922,461.69217405988,492.47165233054,523.2511306012],description:"W. Burt's 17diatharm #8"},burt9:{frequencies:[261.6255653006,268.69652652494,276.16031892841,292.40504357126,310.68035879446,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"W. Burt's 19diatsub #9"},burt_fibo:{frequencies:[261.6255653006,277.97716313189,294.32876096318,311.70233365892,327.03195662575,343.38355445704,363.82305174615,385.28452389971,392.4383479509,425.14154361347,449.66894036041,476.24028683625,523.2511306012],description:'Warren Burt, 3/2+5/3+8/5+etc. "Recurrent Sequences", 2002'},burt_fibo23:{frequencies:[261.6255653006,267.05480676802,277.97716313189,282.81557538079,294.32876096318,299.5065008038,311.70233365892,327.03195662575,330.09788121912,343.38355445704,349.5792770728,363.82305174615,370.21039464899,385.28452389971,392.4383479509,408.02346463385,425.14154361347,432.10374737758,449.66894036041,457.60521391719,476.24028683625,484.61169812829,504.34459560877,523.2511306012],description:'Warren Burt, 23-tone Fibonacci scale. "Recurrent Sequences", 2002'},burt_primes:{frequencies:[261.6255653006,267.75741448733,273.88926367407,277.97716313189,280.0211128608,284.10901231862,290.24086150535,298.416660421,302.50455987882,304.54850960773,308.63640906555,310.68035879446,320.90010743902,322.94405716793,327.03195662575,333.16380581248,335.20775554139,339.29565499922,341.33960472813,351.55935337268,353.60330310159,359.73515228832,363.82305174615,365.86700147506,369.95490093288,376.08675011961,384.26254903526,390.39439822199,392.4383479509,394.48229767981,396.52624740872,402.65809659545,406.74599605328,412.87784524001,421.05364415565,425.14154361347,431.27339280021,433.31734252912,437.40524198694,445.58104090258,455.80078954714,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,519.16323114338,523.2511306012],description:'Warren Burt, primes until 251. "Some Numbers", Dec. 2002'},bushmen:{frequencies:[261.6255653006,347.0163224393,394.26624244126,453.9405988926,523.2511306012],description:"Observed scale of South-African bushmen, almost (4 notes) equal pentatonic"},dan_semantic:{frequencies:[261.6255653006,272.52663052146,275.62199471997,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,397.34382730029,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:'The Semantic Scale, from Alain Dani\xEF\xBF\xBDlou: "S\xEF\xBF\xBDmantique Musicale" (1967)'},danielou5_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.62199471997,279.06726965397,282.55561052465,285.76488412567,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division in 5-limit, symmetrized"},danielou_53:{frequencies:[261.6255653006,264.89588486686,267.43946675172,272.52663052146,275.62199471997,279.06726965397,282.55561052465,287.78812183066,290.69507255622,294.32876096318,297.67175429757,301.87565226992,306.59245933664,310.07474405997,313.95067836072,318.93402246168,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.64686971777,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division of the Octave, see p. 153"},darreg:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"This set of 19 ratios in 5-limit JI is for his megalyra family"},darreg_ennea:{frequencies:[261.6255653006,269.29177952703,277.18263097687,293.66476791741,349.22823143301,391.99543598175,403.48177901006,415.30469757995,440,523.2511306012],description:"Ivor Darreg's Mixed Enneatonic, a mixture of chromatic and enharmonic"},darreg_genus:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,523.2511306012],description:"Ivor Darreg's Mixed JI Genus (Archytas Enh, Ptolemy Soft Chrom, Didymos Chrom"},darreg_genus2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,348.83408706747,392.4383479509,406.97310157871,418.60090448096,441.49314144476,523.2511306012],description:"Darreg's Mixed JI Genus 2 (Archytas Enharmonic and Chromatic Genera)"},david11:{frequencies:[261.6255653006,269.80136421624,274.70684356563,285.40970760065,294.32876096318,305.22982618403,314.76825825228,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,374.60024122586,392.4383479509,406.97310157871,419.69101100305,428.11456140098,441.49314144476,457.84473927605,479.64686971777,490.54793493862,499.46698830115,523.2511306012],description:"11-limit system from Gary David, 1967"},david7:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,488.36772189445,523.2511306012],description:"Gary David's Constant Structure, 1967. A mode of Fokker's 7-limit scale"},ddimlim1:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"First 27/25&2048/1875 scale"},de_caus:{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"De Caus (a mode of Ellis's duodene) (1615)"},degung1:{frequencies:[261.6255653006,286.1303811777,319.28416942365,390.63652710512,420.90734643474,523.2511306012],description:"Gamelan Degung, Kabupaten Sukabumi. 1/1=363 Hz"},degung2:{frequencies:[261.6255653006,276.67939184371,325.99375993805,390.36201910543,415.27879033283,523.2511306012],description:"Gamelan Degung, Kabupaten Bandung. 1/1=252 Hz"},degung3:{frequencies:[261.6255653006,282.83850205216,320.55017368416,393.28023705203,426.95140008307,523.2511306012],description:"Gamelan Degung, Kabupaten Sumedang. 1/1=388.5 Hz"},degung4:{frequencies:[261.6255653006,284.6485709981,319.18312009646,379.88037698982,415.46137490477,523.2511306012],description:"Gamelan Degung, Kasepuhan Cheribon. 1/1=250 Hz"},degung5:{frequencies:[261.6255653006,284.24274449773,317.86283634652,388.77066331187,430.33748813761,523.2511306012],description:"Gamelan Degung, Kanoman Cheribon. 1/1=428 Hz"},degung6:{frequencies:[261.6255653006,273.29426590363,298.47415715355,379.54129348313,409.02013274169,523.2511306012],description:"Gamelan Degung, Kacherbonan Cheribon. 1/1=426 Hz"},dekany:{frequencies:[261.6255653006,299.7792935736,305.22982618403,327.03195662575,359.73515228832,381.53728273004,419.69101100305,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"2)5 Dekany 1.3.5.7.11 (1.3 tonic)"},dekany2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,348.83408706747,358.80077526939,398.6675280771,418.60090448096,448.50096908674,465.11211608996,523.2511306012],description:"3)5 Dekany 1.3.5.7.9 (1.3.5.7.9 tonic)"},dekany3:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"2)5 Dekany 1.3.5.7.9 and 3)5 Dekany 1 1/3 1/5 1/7 1/9"},dekany4:{frequencies:[261.6255653006,270.96933548991,288.48890459486,310.68035879446,321.77608589426,355.06326719367,425.14154361347,440.3251701711,474.19633710734,485.87604984397,523.2511306012],description:"2)5 Dekany 1.7.13.19.29 (1.7 tonic)"},dekany_union:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,381.53728273004,392.4383479509,412.06026534844,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Union of 2)5 and 3)5 [ 1 3 5 7 9] dekanies"},dent:{frequencies:[261.6255653006,276.73939277812,293.41671964988,311.13637945111,328.33487278761,349.18153137729,368.9858570375,391.91718148616,414.84850593482,438.82216331296,465.92281947955,491.98114271667,523.2511306012],description:"Tom Dent, well temperament with A=421 Hz. Integer Hz beat rates from A"},dent2:{frequencies:[261.6255653006,276.57667301797,293.18838124587,310.79781949647,328.55897053596,349.10502918563,369.05532299592,391.67735584266,414.54302837239,438.92977277749,465.83490899549,492.45596147139,523.2511306012],description:"Tom Dent, well-temperament, 2/32 and 5/32 comma. TL 3 & 5-9-2005"},dent3:{frequencies:[261.6255653006,276.38325105256,293.15632631094,310.94732162256,328.48713220126,349.22823143301,368.7143392539,391.76907592069,414.58565256441,438.73106346722,466.16376151809,492.17459484008,523.2511306012],description:'Tom Dent, Bach harpsichord "sine wave" temperament, TL 10-10-2005'},deporcy:{frequencies:[261.6255653006,272.52663052146,286.15296204753,299.00064605783,313.95067836072,327.03195662575,348.83408706747,358.80077526939,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,478.40103369253,502.32108537715,523.2511306012],description:"A 15-note chord-based detempering of 7-limit porcupine"},diab19_612:{frequencies:[261.6255653006,267.01398215014,280.33982809972,299.03492334906,305.19382000629,313.95883772326,320.42510414137,327.02455105776,348.83292260574,366.24210002542,373.7851897098,392.43965797471,418.61038382265,427.23204601759,436.03127668087,448.5538823653,457.79225819026,488.32116993744,512.69177642068,523.2511306012],description:"diab19a in 612-tET"},diab19_72:{frequencies:[261.6255653006,266.71173418545,279.86396690685,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,349.22823143301,366.44956000397,373.57357677338,391.99543598175,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,489.15147723638,513.27277840175,523.2511306012],description:"diab19a in 72-tET"},diablack:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,331.11985608357,372.08969287196,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Unique 256/245&2048/2025 Fokker block"},diachrome1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"First 25/24&2048/2025 scale"},diacycle13:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,360.86284869048,373.75080757229,387.59343007496,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"Diacycle on 20/13, 13/10; there are also nodes at 3/2, 4/3; 13/9, 18/13"},diaddim1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,334.88072358477,344.91651675372,357.20610515709,367.91095120397,392.4383479509,418.60090448096,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 2048/2025&2048/1875 scale"},dialim1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,353.19451315581,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 27/25&2048/2025 scale"},diamisty:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,436.53496651643,470.39487098876,496.11959049595,523.2511306012],description:"Diamisty scale 2048/2025 and 67108864/66430125"},diamond11a:{frequencies:[261.6255653006,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,523.2511306012],description:"11-limit Diamond with added 16/15 & 15/8, Zoomoozophone tuning: 1/1 = 392 Hz"},diamond11ak:{frequencies:[261.6255653006,279.72330032405,285.63317938628,287.78812183066,290.69507255622,293.86839138568,299.07491977616,305.39295512204,314.19649759716,319.76457981184,326.52043447049,333.41680553884,335.93301933283,349.10721912206,359.17247822875,366.75848641051,373.2589099097,381.14243472333,392.13131479202,407.50942884268,410.58480125643,419.25667855894,428.11456140098,435.70146034294,448.26139746089,457.73103588952,465.84075338014,470.92601754108,475.68284600109,479.27160679251,489.39746055879,523.2511306012],description:"microtempered version of diamond11a, Dave Keenan TL 11-1-2000, 225/224&385/384"},diamond11at:{frequencies:[261.6255653006,279.83704120119,285.33574350137,287.98268367985,290.84948650387,293.82121114493,299.2738827313,305.22380787491,314.19079532693,320.23980272009,326.48518221507,332.71524733285,336.02719554531,349.1122100506,359.53680125564,366.52331521885,373.4984028396,380.75621844446,392.12570885984,407.39521875769,411.45055399509,419.30194782174,427.47925671618,435.70936791853,448.50981249085,457.42672761267,465.91555560021,470.67599975252,475.36147343465,479.7712027167,489.19854301666,523.2511306012],description:"microtempered version of diamond11a, OdC"},diamond11map:{frequencies:[195.99771799087,228.66400432268,261.33029065449,293.99657698631,326.66286331812,359.32914964993,391.99543598174,457.32800864536,522.66058130899,587.99315397261,653.32572663623,718.65829929986,213.81569235368,249.45164107929,285.0875898049,320.72353853051,356.35948725613,391.99543598174,427.63138470735,498.90328215858,570.1751796098,641.44707706103,712.71897451225,783.99087196348,235.19726158904,274.39680518722,313.59634878539,352.79589238357,391.99543598174,431.19497957991,470.39452317809,548.79361037444,627.19269757078,705.59178476713,783.99087196348,862.38995915983,261.33029065449,304.88533909691,348.44038753932,391.99543598174,435.55048442416,479.10553286657,522.66058130899,609.77067819382,696.88077507865,783.99087196348,871.10096884831,958.21106573314,293.99657698631,342.99600648402,391.99543598174,440.99486547946,489.99429497718,538.99372447489,587.99315397261,685.99201296804,783.99087196348,881.98973095892,979.98858995435,1077.98744894978,335.99608798435,391.99543598174,447.99478397913,503.99413197652,559.99347997391,615.99282797131,671.9921759687,783.99087196348,895.98956795826,1007.98826395305,1119.98695994783,1231.98565594261,783.99087196348],description:"11-limit diamond on a 'centreless' map"},diamond15:{frequencies:[261.6255653006,269.80136421624,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,310.07474405997,313.95067836072,318.85615771011,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,343.38355445704,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,367.91095120397,372.08969287196,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,398.6675280771,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,429.33426100611,436.04260883433,441.49314144476,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,507.3950357345,523.2511306012],description:"15-limit Diamond + 2nd ratios. See Novaro, 1927, Sistema Natural..."},diamond17:{frequencies:[261.6255653006,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,523.2511306012],description:"17-limit Diamond"},diamond17a:{frequencies:[261.6255653006,277.01530443593,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,494.18162334558,523.2511306012],description:"17-limit, +9 Diamond"},diamond19:{frequencies:[261.6255653006,275.39533189537,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,292.40504357126,299.00064605783,302.93486508491,305.22982618403,307.79478270659,309.19384990071,310.68035879446,313.95067836072,317.68818643644,322.00069575458,327.03195662575,330.47439827444,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,355.06326719367,358.01393146398,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,382.37582620857,385.55346465352,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,414.24047839262,418.60090448096,425.14154361347,430.91269578922,436.04260883433,440.63253103259,442.75095666255,444.76346101102,448.50096908674,451.89870370104,457.84473927605,468.17206422213,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,497.08857407114,523.2511306012],description:"19-limit Diamond"},diamond7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"7-limit Diamond, also double-tie circular mirroring of 4:5:6:7"},diamond9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"9-limit Diamond"},diamond_chess:{frequencies:[261.6255653006,299.00064605783,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,457.84473927605,523.2511306012],description:"9-limit chessboard pattern diamond. OdC"},diamond_chess11:{frequencies:[261.6255653006,287.78812183066,299.00064605783,313.95067836072,319.76457981184,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,428.11456140098,436.04260883433,457.84473927605,475.68284600109,523.2511306012],description:"11-limit chessboard pattern diamond. OdC"},diamond_dup:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Two 7-limit diamonds 3/2 apart"},diamond_mod:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"13-tone Octave Modular Diamond, based on Archytas's Enharmonic"},diamond_tetr:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,523.2511306012],description:"Tetrachord Modular Diamond based on Archytas's Enharmonic"},diaphonic_10:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"10-tone Diaphonic Cycle"},diaphonic_12:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Diaphonic Cycle, conjunctive form on 3/2 and 4/3"},diaphonic_12a:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,488.36772189445,523.2511306012],description:"2nd 12-tone Diaphonic Cycle, conjunctive form on 10/7 and 7/5"},diaphonic_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"D5-tone Diaphonic Cycle"},diaphonic_7:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"7-tone Diaphonic Cycle, disjunctive form on 4/3 and 3/2"},diaschismic:{frequencies:[261.6255653006,266.61097723855,278.05603152599,283.35453458855,295.51835494038,301.14961170579,314.07733767684,320.06224556188,333.80185153667,340.16262034629,354.76509561975,369.99442271164,377.04485988831,393.23061088369,400.72382577504,417.92606548687,425.88986517773,444.17243057662,452.63636847719,472.06710558841,481.06259110609,501.71360968203,523.2511306012],description:"diaschismic temperament, g=105.446531, p=600, 5-limit"},diat13:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012],description:"This genus is from K.S's diatonic Hypodorian harmonia"},diat15:{frequencies:[261.6255653006,301.87565226992,327.03195662575,356.76213450082,373.75080757229,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Tonos-15 Diatonic and its own trite synemmenon Bb"},diat15_inv:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,366.27579142084,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"Inverted Tonos-15 Harmonia, a harmonic series from 15 from 30."},diat17:{frequencies:[261.6255653006,296.50897400735,342.12573923925,370.63621750918,386.75083566176,404.33041910093,444.76346101102,494.18162334558,523.2511306012],description:"Tonos-17 Diatonic and its own trite synemmenon Bb"},diat19:{frequencies:[261.6255653006,276.16031892841,310.68035879446,355.06326719367,368.21375857121,382.37582620857,414.24047839262,451.89870370104,523.2511306012],description:"Tonos-19 Diatonic and its own trite synemmenon Bb"},diat21:{frequencies:[261.6255653006,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Tonos-21 Diatonic and its own trite synemmenon Bb"},diat21_inv:{frequencies:[261.6255653006,299.00064605783,323.91736656265,348.83408706747,373.75080757229,398.6675280771,448.50096908674,473.41768959156,523.2511306012],description:"Inverted Tonos-21 Harmonia, a harmonic series from 21 from 42."},diat23:{frequencies:[261.6255653006,286.54228580542,300.86940009569,334.29933343966,353.96400011258,376.08675011961,429.81342870813,462.87600014722,523.2511306012],description:"Tonos-23 Diatonic and its own trite synemmenon Bb"},diat25:{frequencies:[261.6255653006,297.30177875068,327.03195662575,363.36884069528,384.74347838324,408.78994578219,467.18850946536,503.12608711654,523.2511306012],description:"Tonos-25 Diatonic and its own trite synemmenon Bb"},diat27:{frequencies:[261.6255653006,294.32876096318,336.37572681506,353.19451315581,371.78369805875,392.4383479509,441.49314144476,504.56359022259,523.2511306012],description:"Tonos-27 Diatonic and its own trite synemmenon Bb"},diat27_inv:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,377.90359432309,387.59343007496,406.97310157871,465.11211608996,523.2511306012],description:"Inverted Tonos-27 Harmonia, a harmonic series from 27 from 54"},diat29:{frequencies:[261.6255653006,291.81313052759,316.13089140489,344.87006335079,361.29244731988,379.35706968587,421.50785520652,474.19633710734,523.2511306012],description:"Tonos-29 Diatonic and its own trite synemmenon Bb"},diat31:{frequencies:[261.6255653006,289.65687586852,311.93817401225,337.93302184661,352.6257619269,368.65420565085,405.51962621593,450.57736246214,523.2511306012],description:"Tonos-31 Diatonic. The disjunctive and conjunctive diatonic forms are the same"},diat33:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,375.37581108347,392.4383479509,431.68218274599,479.64686971777,523.2511306012],description:"Tonos-33 Diatonic. The conjunctive form is 23 (Bb instead of B) 20 18 33/2"},diat_chrom:{frequencies:[261.6255653006,280.31310567921,301.87565226992,348.83408706747,392.4383479509,420.46965851882,452.81347840488,523.2511306012],description:"Diatonic- Chromatic, on the border between the chromatic and diatonic genera"},diat_dies2:{frequencies:[261.6255653006,266.71168334607,311.12698372208,349.22823143301,391.99543598175,399.61600264311,466.16376151809,523.2511306012],description:"Dorian Diatonic, 2 part Diesis"},diat_dies5:{frequencies:[261.6255653006,274.52693220706,311.12698372208,349.22823143301,391.99543598175,411.32564531909,466.16376151809,523.2511306012],description:"Dorian Diatonic, 5 part Diesis"},diat_enh:{frequencies:[261.6255653006,269.29177952703,311.12698372208,349.22823143301,391.99543598175,403.48177901006,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode"},diat_enh2:{frequencies:[261.6255653006,269.29177952703,302.26980244078,349.22823143301,391.99543598175,403.48177901006,452.89298412314,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode 3 + 12 + 15 parts"},diat_enh3:{frequencies:[261.6255653006,302.26980244078,311.12698372208,349.22823143301,391.99543598175,452.89298412314,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 3 + 12 parts"},diat_enh4:{frequencies:[261.6255653006,302.26980244078,339.28638158975,349.22823143301,391.99543598175,452.89298412314,508.3551866238,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 12 + 3 parts"},diat_enh5:{frequencies:[261.6255653006,293.66476791741,339.28638158975,349.22823143301,391.99543598175,440,508.3551866238,523.2511306012],description:"Dorian Mode, 12 + 15 + 3 parts"},diat_enh6:{frequencies:[261.6255653006,293.66476791741,302.26980244078,349.22823143301,391.99543598175,440,452.89298412314,523.2511306012],description:"Dorian Mode, 12 + 3 + 15 parts"},diat_eq:{frequencies:[261.6255653006,288.06466200271,317.1754314895,349.22823143301,391.99543598175,431.60932167676,475.22619361214,523.2511306012],description:"Equal Diatonic, Islamic form, similar to 11/10 x 11/10 x 400/363"},diat_eq2:{frequencies:[261.6255653006,287.78812183066,317.12189733406,348.83408706747,392.4383479509,431.68218274599,475.68284600109,523.2511306012],description:"Equal Diatonic, 11/10 x 400/363 x 11/10"},diat_gold:{frequencies:[261.6255653006,292.38332274669,326.75708630452,349.99258496952,391.13935185123,437.1232727958,488.51296691354,523.2511306012],description:"Diatonic scale with ratio between whole and half tone the Golden Section"},diat_hemchrom:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"Diat. + Hem. Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_smal:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:'"Smallest number" diatonic scale'},diat_sofchrom:{frequencies:[261.6255653006,271.8968348557,311.12698372208,349.22823143301,391.99543598175,407.38495184466,466.16376151809,523.2511306012],description:"Diat. + Soft Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_soft:{frequencies:[261.6255653006,274.52693220706,302.26980244078,349.22823143301,391.99543598175,411.32564531909,452.89298412314,523.2511306012],description:"Soft Diatonic genus 5 + 10 + 15 parts"},diat_soft2:{frequencies:[261.6255653006,281.2143451833,302.26980244078,349.22823143301,391.99543598175,421.34544350737,452.89298412314,523.2511306012],description:"Soft Diatonic genus with equally divided Pyknon; Dorian Mode"},diat_soft3:{frequencies:[261.6255653006,281.2143451833,324.90175210669,349.22823143301,391.99543598175,421.34544350737,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},diat_soft4:{frequencies:[261.6255653006,302.26980244078,324.90175210669,349.22823143301,391.99543598175,452.89298412314,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},dicot:{frequencies:[261.6255653006,270.35822989652,294.32876096318,320.42456924675,331.11985608357,360.47764004221,392.4383479509,405.53734464206,441.49314144476,480.63685362987,523.2511306012],description:"Dicot temperament, g=350.9775, 5-limit"},didy_chrom:{frequencies:[261.6255653006,279.06726965397,290.69507255622,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Didymus Chromatic"},didy_chrom1:{frequencies:[261.6255653006,279.06726965397,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Permuted Didymus Chromatic"},didy_chrom2:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,470.92601754108,490.54793493862,523.2511306012],description:"Didymos's Chromatic, 6/5 x 25/24 x 16/15"},didy_chrom3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,392.4383479509,408.78994578219,436.04260883433,523.2511306012],description:"Didymos's Chromatic, 25/24 x 16/15 x 6/5"},didy_diat:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,418.60090448096,465.11211608996,523.2511306012],description:"Didymus Diatonic"},didy_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Inverse Didymus Diatonic, variant of Ptolemy with 2 identical triads"},didy_enh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Dorian mode of Didymos's Enharmonic"},didy_enh2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,348.83408706747,392.4383479509,413.43299207996,418.60090448096,523.2511306012],description:"Permuted Didymus Enharmonic"},"diesic-m":{frequencies:[261.6255653006,289.62525622617,320.62153003931,354.93508703008,392.92094947462,434.97213484265,481.52372211906,523.2511306012],description:"Minimal Diesic temperament, g=176.021, 5-limit"},"diesic-t":{frequencies:[261.6255653006,272.92239980638,281.87304203955,294.04415210774,303.68749398125,316.80053726141,327.19018747082,337.92057205022,352.51178108166,364.07260143821,379.79303732838,392.24856169057,409.18561859271,422.60509148244,436.46466102477,455.31094249407,470.24311865111,490.54793493862,506.63572944675,523.2511306012],description:"Tiny Diesic temperament, g=443.017, 5-limit"},diff31_72:{frequencies:[261.6255653006,269.29177952703,274.52698453615,279.86396690685,285.30470202322,293.66476791741,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,336.03572815422,342.56848033562,352.60650301302,356.01745236555,366.44956000397,373.57357677338,384.52011812375,388.23978476841,399.61607881612,407.38487419079,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,508.3551866238,523.2511306012],description:"Diff31, 11/9, 4/3, 7/5, 3/2, 7/4, 9/5 difference diamond, tempered to 72-et"},dimteta:{frequencies:[261.6255653006,282.55561052465,307.12566361375,336.37572681506,406.97310157871,439.53094970501,477.75103228805,523.2511306012],description:"A heptatonic form on the 9/7"},dimtetb:{frequencies:[261.6255653006,294.32876096318,336.37572681506,406.97310157871,457.84473927605,523.2511306012],description:"A pentatonic form on the 9/7"},div_fifth1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #1, From Schlesinger, see Chapter 8, p. 160"},div_fifth2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #2, From Schlesinger, see Chapter 8, p. 160"},div_fifth3:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #3, From Schlesinger, see Chapter 8, p. 160"},div_fifth4:{frequencies:[261.6255653006,274.70684356563,305.22982618403,343.38355445704,392.4383479509,523.2511306012],description:"Divided Fifth #4, From Schlesinger, see Chapter 8, p. 160"},div_fifth5:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,523.2511306012],description:"Divided Fifth #5, From Schlesinger, see Chapter 8, p. 160"},dkring1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,320.49131749323,327.03195662575,366.27579142084,392.4383479509,439.53094970501,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 4:5:6:7"},dkring2:{frequencies:[261.6255653006,274.70684356563,305.22982618403,329.64821227876,336.37572681506,353.19451315581,366.27579142084,392.4383479509,406.97310157871,427.32175665765,436.04260883433,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 3:5:7:9"},dkring3:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,348.83408706747,384.42940207435,392.4383479509,398.6675280771,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"Double-tie circular mirroring of 6:7:8:9"},dkring4:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,327.03195662575,336.37572681506,367.91095120397,373.75080757229,378.42269266694,420.46965851882,467.18850946536,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 7:8:9:10"},dodeceny:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Degenerate eikosany 3)6 from 1.3.5.9.15.45 tonic 1.3.15"},dorian_chrom:{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,315.92521092903,322.00069575458,348.83408706747,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,620.14948811994,631.85042185805,644.00139150917,697.66817413493,761.09255360175,797.33505615421,816.78225264578,837.20180896192,930.22423217991,1046.5022612024],description:"Dorian Chromatic Tonos"},dorian_chrom2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the chromatic genus"},dorian_chrominv:{frequencies:[261.6255653006,273.00058987889,285.40970760065,332.97799220076,380.54627680087,404.33041910093,428.11456140098,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Dorian inverted"},dorian_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,669.76144716954,697.66817413493,728.00157301037,761.09255360175,837.20180896192,881.26506206518,930.22423217991,984.94330466108,1046.5022612024],description:"Dorian Diatonic Tonos"},dorian_diat2:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,442.75095666255,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Harmonia, a subharmonic series through 13 from 22"},dorian_diat2inv:{frequencies:[261.6255653006,285.40970760065,309.19384990071,332.97799220076,356.76213450082,380.54627680087,428.11456140098,475.68284600109,523.2511306012],description:"Inverted Schlesinger's Dorian Harmonia, a harmonic series from 11 from 22"},dorian_diatcon:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,479.64686971777,523.2511306012],description:"A Dorian Diatonic with its own trite synemmenon replacing paramese"},dorian_diatred11:{frequencies:[261.6255653006,287.78812183066,316.56693401373,348.83408706747,392.4383479509,431.68218274599,474.85040102059,523.2511306012],description:"Dorian mode of a diatonic genus with reduplicated 11/10"},dorian_enh:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,310.07474405997,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012,558.13453930795,598.00129211566,608.8740428814,614.4600432748,620.14948811994,697.66817413493,761.09255360175,778.79238042969,787.95464372887,797.33505615421,930.22423217991,1046.5022612024],description:"Dorian Enharmonic Tonos"},dorian_enh2:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the enharmonic genus"},dorian_enhinv:{frequencies:[261.6255653006,267.19206668997,273.00058987889,332.97799220076,380.54627680087,392.4383479509,404.33041910093,523.2511306012],description:"A harmonic form of Schlesinger's Dorian enharmonic inverted"},dorian_pent:{frequencies:[261.6255653006,271.49822814213,287.78812183066,359.73515228832,411.12588832951,423.21782622156,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the pentachromatic genus"},dorian_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the Dorian Tonos, a non-rep. 16 tone gamut"},dorian_schl:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Piano Tuning (Sub 22)"},dorian_tri1:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,411.12588832951,421.15334902048,431.68218274599,523.2511306012],description:"Schlesinger's Dorian Harmonia in the first trichromatic genus"},dorian_tri2:{frequencies:[261.6255653006,269.80136421624,287.78812183066,359.73515228832,411.12588832951,421.15334902048,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the second trichromatic genus"},douwes:{frequencies:[261.6255653006,273.00058987889,292.50063201309,313.39353429974,327.01933943691,350.37786403433,365.61168556196,391.72680409,408.75840577964,436.81779569448,468.01906681552,488.36772189445,523.2511306012],description:"Claas Douwes recommendation of 24/23 and 15/14 steps for clavichord (1699)"},dow_high:{frequencies:[261.6255653006,277.01530443593,278.50463402967,294.32876096318,308.34441624714,313.31771328338,327.34193952303,331.11985608357,346.88746827803,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707],description:"Highest octave of Dowlands lute tuning, strings 5,6. 1/1=G (1610)"},dow_lmh:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012,548.16785110602,557.00926805934,581.94122581871,588.65752192635,616.68883249427,620.14948811994,626.63542656676,656.62886977405,662.23971216714,693.77493655606,697.66817413493,736.51936392681,742.67902407912,784.8766959018,822.25177665903,831.04591330779,835.51390208901,882.98628288953,925.03324874141,939.95313985014,982.02581856908,993.35956825072,1040.66240483408,1046.5022612024,1108.06121774372,1114.01853611868,1177.3150438527,1233.37766498854,1253.27085313352,1309.3677580921,1324.47942433429,1387.54987311211,1395.33634826987,1477.41495699162,1569.7533918036,1671.02780417803,1765.97256577905,1850.06649748281],description:"All three octaves of Dowland's lute tuning"},dow_low:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012],description:"Lowest octave of Dowlands lute tuning, strings 1,2,3. 1/1=G. (1610)"},dow_middle:{frequencies:[261.6255653006,274.08392555301,278.50463402967,290.97061290936,294.32876096318,308.34441624714,310.07474405997,313.31771328338,328.31443488703,331.11985608357,346.88746827803,348.83408706747,368.2596819634,371.33951203956,392.4383479509,411.12588832951,415.52295665389,417.75695104451,441.49314144476,462.5166243707,469.97656992507,491.01290928454,496.67978412536,520.33120241704,523.2511306012],description:"Middle octave of Dowlands lute tuning, strings 3,4,5. 1/1=G (1610)"},dowland_12:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707,492.47165233054,523.2511306012],description:"subset of Dowland's lute tuning, lowest octave"},druri:{frequencies:[261.6255653006,285.79952600623,326.97270111135,357.18467683857,523.2511306012],description:"Scale of druri dana of Siwoli, south Nias, Jaap Kunst"},dudon_a:{frequencies:[261.6255653006,285.85015468029,319.76457981184,348.83408706747,392.4383479509,428.77523202043,479.64686971777,523.2511306012],description:"Dudon Tetrachord A"},dudon_b:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,482.37213602298,523.2511306012],description:"Dudon Tetrachord B"},dudon_c12:{frequencies:[261.6255653006,302.50455987882,327.03195662575,343.38355445704,392.4383479509,425.14154361347,474.19633710734,523.2511306012],description:"Differentially coherent scale in interval class 1 and 2"},dudon_diat:{frequencies:[261.6255653006,294.32876096318,321.08592105074,350.8160989258,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Dudon Neutral Diatonic"},dudon_moha_baya:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Mohajira + Bayati (Dudon) 3 + 4 + 3 Mohajira and 3 + 3 + 4 Bayati tetrachords"},dudon_mohajira:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Dudon's Mohajira, two 3 + 4 + 3 tetrachords, neutral diatonic"},dudon_mohajira_r:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"Jacques Dudon, JI Mohajira, Lumi\xEF\xBF\xBDres audibles"},dudon_thai:{frequencies:[261.6255653006,288.26147859917,317.63518509943,350.43752981487,386.47021463976,426.17461277719,469.97930400405,523.2511306012],description:"Dudon, coherent Thai heptatonic scale, 1/1 vol. 11/2, 2003"},dudon_thai2:{frequencies:[261.6255653006,288.02814528506,314.43072526953,347.1339209321,383.13743909274,422.44127975143,475.35895071461,523.2511306012],description:"Slightly better version, 3.685 cents deviation"},dudon_thai3:{frequencies:[261.6255653006,291.60349465796,321.58142401532,354.2846196779,394.48229767981,434.67997568173,478.96555314146,523.2511306012],description:"Dudon, Thai scale with two 704/703 = 2.46 c. deviations and simpler numbers"},duncan:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Dudley Duncan's Superparticular Scale"},duoden12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Almost equal 12-tone subset of Duodenarium"},duodenarium:{frequencies:[14.56761754744,14.73307690724,14.74971276678,14.91724036858,14.98726085128,15.00418372272,15.10370587319,15.17460161192,15.19173601925,15.34695511171,15.36428413207,15.5387920506,15.55633768372,15.71528203439,15.73302695124,15.80687667908,15.91172305982,15.92968978813,16.00446263757,16.18624171938,16.20451842054,16.38856974087,16.57471152064,16.59342686263,16.78189541465,16.86066845769,16.87970668806,16.99166910733,17.07142681341,17.26532450067,17.28481964857,17.48114105693,17.67969228869,17.69965532014,17.78273626396,17.90068844229,17.98471302153,18.00502046726,18.2095219343,18.41634613405,18.43714095848,18.64655046072,18.73407606409,18.85833844126,18.87963234148,18.9682520149,18.98967002407,19.18369388963,19.20535516508,19.42349006325,19.44542210465,19.64410254298,19.66628368904,19.88965382477,19.91211223516,20.00557829696,20.13827449758,20.23280214922,20.25564802567,20.48571217609,20.7183894008,20.74178357829,20.97736926831,21.07583557211,21.21563074642,21.23958638417,21.33928351676,21.58165562584,21.60602456072,21.85142632116,22.09961536086,22.12456915017,22.37586055287,22.48089127691,22.50627558408,22.65555880978,22.76190241787,23.02043266756,23.0464261981,23.3081880759,23.57292305158,23.59954042685,23.71031501862,23.86758458973,23.97961736204,24.00669395635,24.27936257907,24.30677763081,24.55512817873,24.5828546113,24.86206728096,24.89014029395,25.14445125502,25.17284312198,25.29100268653,25.31956003209,25.487503661,25.60714022011,25.897986751,25.92722947286,26.22171158539,26.51953843303,26.54948298021,26.67410439595,26.85103266344,26.9770695323,27.0075307009,27.31428290145,27.62451920107,27.65571143772,27.96982569108,28.10111409614,28.2875076619,28.31944851222,28.45237802234,28.77554083445,28.80803274762,29.13523509488],description:"Ellis's Duodenarium : genus [3^12 5^8]"},duodene:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Duodene : genus [33355]"},"duodene14-18-21":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"14-18-21 Duodene"},"duodene3-11_9":{frequencies:[261.6255653006,285.40970760065,294.32876096318,319.76457981184,321.08592105074,348.83408706747,359.73515228832,392.4383479509,426.35277308246,428.11456140098,479.64686971777,481.6288815761,523.2511306012],description:"3-11/9 Duodene"},"duodene3-7":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"3-7 Duodene"},"duodene6-7-9":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"6-7-9 Duodene"},duodene_min:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Minor Duodene"},"duodene_r-45":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,353.19451315581,376.74081403286,401.85686830172,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated -45 degrees"},duodene_r45:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,313.95067836072,334.88072358477,383.2405741708,408.78994578219,436.04260883433,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 45 degrees"},duodene_r90:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 90 degrees: genus [33555]"},duodene_skew:{frequencies:[261.6255653006,282.55561052465,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rotated 6/5x3/2 duodene"},duodene_t:{frequencies:[261.6255653006,279.3825857701,293.66476791741,313.59634948548,327.03195662575,349.22823143301,367.08095907728,391.99543598175,418.60090448096,436.53528831673,469.86362971679,489.99429388332,523.2511306012],description:"Duodene with equal tempered fifths"},duowell:{frequencies:[261.6255653006,278.41172412276,294.03623226919,312.90189200955,327.96500300935,349.00756672938,368.59392213143,392.24328034087,417.4100028405,437.50413894442,469.11953885575,491.70297432358,523.2511306012],description:"Ellis duodene well-tuned to fifth=(7168/11)^(1/16) third=(11/7)^(1/2)"},dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},cairo:{frequencies:[261.6255653006,269.38381929633,276.03456984659,285.15047989166,293.63138642043,300.85736580106,309.799366845,312.20234522745,320.03127253896,327.93377450564,337.66851484331,348.83408706747,357.41197445437,367.9166999024,380.21445327801,392.4383479509,401.02017979859,414.62054722758,417.26565438692,427.77234352616,440.44707963064,451.93568025669,468.86302025197,480.04690880844,491.77737838459,510.98743222773,523.2511306012],description:"P.42, of d'Erlanger, vol.5. Congress of Arabic Music, Cairo, 1932"},canright:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:`David Canright's piano tuning for "Fibonacci Suite" (2001)`},carlos_alpha:{frequencies:[261.6255653006,273.68256372566,286.29520819723,299.48910562989,313.29104303136,327.729041887,342.83241505062,358.63182625716,375.1593523779,392.44854854484,410.5345162762,429.45397474154,449.24533531117,469.94877954106,491.60634075178,514.26198936695,537.96172218451,562.75365576207,588.68812410589],description:"Wendy Carlos' Alpha scale with perfect fifth divided in nine"},carlos_alpha2:{frequencies:[261.6255653006,267.58616452957,273.68256372566,279.91785681123,286.29520819723,292.81785438923,299.48910562989,306.31234757893,313.29104303136,320.42873367481,327.729041887,335.19567257401,342.83241505062,350.6431449633,358.63182625716,366.8025131876,375.1593523779,383.7065849236,392.44854854484,401.3896797878,410.5345162762,419.88769901416,429.45397474154,439.23819834286,449.24533531117,459.48046426806,469.94877954106,480.6555937997,491.60634075178,502.8065779009,514.26198936695,525.97838877075,537.96172218451,550.21807114943,562.75365576207,575.57483783111,588.68812410589],description:"Wendy Carlos' Alpha prime scale with perfect fifth divided by eightteen"},carlos_beta:{frequencies:[261.6255653006,271.44693432634,281.63699549204,292.20958942356,303.17907632096,314.56035546319,326.36888544505,338.62070517372,351.33245565363,364.52140258903,378.2054598351,392.40321372938,407.13394833666,422.41767164147,438.27514272393,454.72789995564,471.7982902542,489.50949943583,507.88558370741,526.95150234083,546.73315157381,567.25739978343,588.55212398003],description:"Wendy Carlos' Beta scale with perfect fifth divided by eleven"},carlos_beta2:{frequencies:[261.6255653006,266.49100855797,271.44693432634,276.49502530642,281.63699549204,286.87459075215,292.20958942356,297.64380291476,303.17907632096,308.81728905054,314.56035546319,320.41022551991,326.36888544505,332.43835840072,338.62070517372,344.91802487526,351.33245565363,357.86617542024,364.52140258903,371.30039682974,378.2054598351,385.23893610237,392.40321372938,399.70072522531,407.13394833666,414.70540688852,422.41767164147,430.27336116448,438.27514272393,446.42573318931,454.72789995564,463.18446188312,471.7982902542,480.57230974851,489.50949943583,498.61289378764,507.88558370741,517.33071758003,526.95150234083,536.75120456442,546.73315157381,556.90073257014,567.25739978343,577.80666964473,588.55212398003],description:"Wendy Carlos' Beta prime scale with perfect fifth divided by twentytwo"},carlos_gamma:{frequencies:[261.6255653006,266.98388983977,272.45195763676,278.03201633122,283.72635959645,289.53732808222,295.4673103769,301.51874398927,307.69411635045,313.99596583639,320.42688281121,326.98951069203,333.68654703547,340.52074464653,347.49491271011,354.6119179457,361.87468578579,369.2862015783,376.84951181374,384.56772537748,392.44401482761,400.48161769905,408.68383783428,417.05404674148,425.59568498025,434.31226357598,443.20736546293,452.28464695708,461.547839259,471.00074998758,480.64726474513,490.49134871455,500.53704828923,510.78849273629,521.24989589392,531.92555790347],description:"Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty"},carlos_harm:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'"},carlos_super:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Super Just"},carlson:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Brian Carlson's guitar scale (or 7 is 21/16 instead) fretted by Mark Rankin"},cassandra1:{frequencies:[261.6255653006,265.52313139125,271.43629763673,275.48001908354,279.58398024378,283.7490817683,290.06813927787,294.38942683035,298.7750924519,305.42877739024,309.97889991383,314.59680966486,319.28351286859,326.39391783308,331.25637026535,336.19125912653,343.67819754196,348.79814248043,353.99435973883,359.26798967332,367.26884406885,372.74022844163,378.29312490007,386.71766674112,392.47878977853,398.32574139651,407.19640716832,413.26261206104,419.41919061043,425.66748431192,435.14704737009,441.62964923022,448.20882304357,458.19037897128,465.01626879626,471.9438445688,478.97462660712,489.64133323501,496.93576068834,504.33885972365,515.57042175735,523.2511306012],description:"Cassandra temperament (Erv Wilson), 13-limit, g=497.866"},cassandra2:{frequencies:[261.6255653006,265.34593985135,270.18130909623,275.10479273152,279.0168449367,284.10133754875,289.27848429833,293.3920895946,298.7385406747,304.18241953205,309.72550158209,314.12986807617,319.85422136322,325.68288889698,330.31417303802,336.33345109576,342.46241778116,348.70307193775,353.66170827405,360.10644584283,366.66862514012,371.88273569526,378.65951299923,385.5597827545,392.58579535013,398.16845391153,405.42423290482,412.81223314336,418.68251621245,426.31212065787,434.08075852776,440.25348482514,448.27617460765,456.44506096456,464.76280801961,471.37183998139,479.96159605313,488.70788228454,495.65741860341,504.6897280454,513.8866322474,523.2511306012],description:"Cassandra temperament, schismic variant, 13-limit, g=497.395"},catler:{frequencies:[261.6255653006,269.80136421624,279.06726965397,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,322.00069575458,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,418.60090448096,425.14154361347,436.04260883433,441.49314144476,457.84473927605,465.11211608996,483.00104363188,490.54793493862,523.2511306012],description:'Catler 24-tone JI from "Over and Under the 13 Limit", 1/1 3(3)'},cbrat19:{frequencies:[261.6255653006,272.05448646742,281.65887246066,291.7164960911,303.76422848609,314.23522436032,325.78124145721,339.14379232251,350.05979530932,364.18597952318,377.95660802413,389.93691761381,406.2330981776,420.87727247778,436.65546295526,454.14747622901,467.92430113657,486.684954898,506.27371414348,523.2511306012],description:"brats = -1 -1 -1 -1 -1 -1 -1 -1 0 3/7 390808/591947 1/2 1/2 1/2 1/2 1/4 0 0 -1"},ceb88f:{frequencies:[261.6255653006,275.30280934529,289.60851057007,304.80308899558,320.69584574771,337.31885569235,354.97473368038,373.44187862432,393.05647479461,413.57234190108,435.03089105397,457.82276134277,481.66189358475,506.59641128799],description:"88 cents steps with equal beating fifths"},ceb88s:{frequencies:[261.6255653006,275.27750547448,289.60710371138,304.74878776577,320.64207659236,337.32428016541,354.95189689869,373.45451504132,392.8755714351,413.39725679488,434.93759942207,457.54716438978,481.43806014345,506.51485544552,533.01280425363],description:"88 cents steps with equal beating sevenths"},ceb88t:{frequencies:[261.6255653006,275.20384442973,289.60910777612,304.54100616185,320.3823320487,337.18847246966,354.60902163481,373.09056856306,392.69773188536,413.02170471677,434.58350960486,457.45853552679,481.16983689269,506.32527343025,533.01280425363],description:"88 cents steps with equal beating 7/6 thirds"},cet105:{frequencies:[261.6255653006,277.98437592617,295.36606150822,313.83458334354,333.45789502888,354.30820661869,376.46223533368,400.00150378562,425.01262301844,451.58762919357,479.82430313337,509.82655042708,541.70476218406,575.57624366132],description:"Equal temperament with very good 6/5 and 13/8"},cet105a:{frequencies:[261.6255653006,278.09098920184,295.59266404146,314.19580976213,333.96974580612,354.98815389674,377.32935907335,401.07660961589,426.31839262878,453.14877154631,481.66772230429,511.98151233648,544.20310589723,578.45256778249,614.85751848055,653.5536209391,694.68506540856,738.40511604959,784.8766959018],description:"18th root of 3"},cet111:{frequencies:[261.6255653006,279.02234237845,297.57591715819,317.3632108372,338.46625752841,360.97255206362,384.97540137331,410.57431878206,437.87543474729,466.99193686517,498.04453913461,531.16197935691,566.48156495049,604.14972437838,644.32262592407,687.16682227215,732.8599410185,781.59142109591,833.56329335333,888.99103711409,948.10444554232,1011.14859670036,1078.38486510237,1150.09200534594,1226.56730779978,1308.127826503],description:'25th root of 5, Karlheinz Stockhausen in "Studie II" (1954)'},cet111a:{frequencies:[261.6255653006,279.09119608948,297.72279782842,317.59821198502,338.80046946076,361.41815173468,385.54574794778,411.2840547398,438.74060487161,468.03009995854,499.27490936609,532.60556349815,568.16130614457,606.09068659426,646.55215742719,689.71476370538,735.75882016749,784.8766959018],description:"17th root of 3. McLaren 'Microtonal Music', volume 1, track 8"},cet112:{frequencies:[261.6255653006,279.13807488234,297.82282461384,317.75828292395,339.02816520012,361.72179601836,385.93447726538,411.76789245756,439.33052439618,468.73812456399,500.11419015728,533.59048802364,569.30759588159,607.4155105893,648.07426630787,691.45461344743,737.73872000797,787.12095980595,839.80871352279,896.02324851892,956.00062766807,1019.99273078287,1088.26829265547,1161.11404316696,1238.83588500259,1321.76021726874,1410.23528064063,1504.63263477595,1605.34868446028,1712.8063948195,1827.45703443292,1949.78208984359,2080.29524321777,2219.54459500735,2368.11492276755,2526.63016208001,2695.75596930795,2876.20260183901,3068.72784518,3274.14022786751,3493.30234242079,3727.13457771193,3976.61891204907,4242.80307922676,4526.8048719912,4829.81697864182,5153.11189830808,5498.04733953642,5866.07179694692,6258.73081875602,6677.6733762505,7124.65885956048,7601.56430418436,8110.3925243186],description:"53rd root of 31. McLaren 'Microtonal Music', volume 4, track 16"},cet114:{frequencies:[261.6255653006,279.47933554513,298.55147893584,318.92513586406,340.68912750315,363.93832870511,388.77409689134,415.30469757995,443.64579124771,473.92093172942,506.26209616971,540.81027939262,577.71608583803,617.1404103833,659.25511382574,704.24379572788,752.30258557703,803.64098403142,858.48280642307,917.06712239825,979.64933665453,1046.5022612024],description:"21st root of 4"},cet115:{frequencies:[261.6255653006,279.68949451567,299.00064605783,319.64513593742,341.71502406609,365.30872604057,390.53145607553,417.49568846357,446.32166408632,477.13792869952,510.08190181294],description:"2nd root of 8/7. Werner Linden, Musiktheorie, 2003 no.1 midi 15.Eb=19.44544 Hz"},cet117:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82340237272,513.27277840175,549.0539690723,587.32953583482,628.27336308449,672.07145630843,718.92279942609,769.0402362475,822.65144744826,880,941.34642612261,1006.96941915374,1077.1671181081,1152.25842837255,1232.58448551457,1318.51022765149,1410.42601205207,1508.74940691646,1613.92711604023,1726.4369576214,1846.79005749489,1975.53320502451,2113.25127526858,2260.56991361642,2418.15841952625,2586.73271138559,2767.05861265008,2959.95538169309],description:"72nd root of 128, step = generator of Miracle"},cet118:{frequencies:[261.6255653006,280.22072913446,300.13755324878,321.46997343155,344.3186075731,368.79121945838,395.0032340925,423.07827792492,453.14877154631,485.35654007358,519.85349135637,556.8023269521,596.37732215892,638.76512932755,684.16567043124,732.79307276157,784.8766959018],description:"16th root of 3. McLaren 'Microtonal Music', volume 1, track 7"},cet126:{frequencies:[261.6255653006,281.50639381697,302.89795903081,325.91506125677,350.68122444233,377.32935907335,406.00247545366,436.85445118639,470.05085697597,505.76984518255,544.20310589723,585.55689566922,630.05314440547,677.93064638327,729.44634176744,784.8766959018],description:"15th root of 3. McLaren 'Microtonal Music', volume 1, track 6"},cet126a:{frequencies:[261.6255653006,281.42815779395,302.72962012827,325.64340264099,350.29154279212,376.80531512858,405.32593044476,436.00528786292,469.00678383895,504.50618240233,542.69254813034,583.76926541313,627.95510352048,675.48539363125,726.61327927927,781.61106458091,840.77166451082,904.41016494992,972.86550081423,1046.5022612024],description:"19th root of 4"},cet133:{frequencies:[261.6255653006,282.54488373859,305.13688994853,329.53533037111,355.88464567857,384.34082587483,415.07233376839,448.26110228542,484.10361152681,522.81205194575,564.61558053174,609.76167743791,658.5176110828,711.17202040031],description:"13th root of e"},cet140:{frequencies:[261.6255653006,283.72172983292,307.68407293041,333.67021037701,361.85106232365,392.4119924075,425.55401329039,461.49511402661,500.47170241421,542.7401414615,588.57845795114,638.28815062634,692.19618110881,750.65713728047,814.05554253056,882.80839491877,957.36792629418,1038.22454144983,1125.91008648826,1221.00130775733,1324.12366033919,1435.95544645068,1557.23222387914,1688.75170820144,1831.3789571042],description:"24th root of 7"},cet141:{frequencies:[261.6255653006,283.85429714132,307.97166902637,334.13814720468,362.52783176564,393.32961502355,426.7484383229,463.0066556268,502.34551296122,545.02675670673,591.33436279611,641.57644431325,696.08728968715,755.22958979995,819.39685117042,889.01601417107,964.55029369918,1046.5022612024],description:"17th root of 4"},cet146:{frequencies:[261.6255653006,284.69629445872,309.80145226022,337.12043918596,366.84847565362,399.19799705513,434.40017432099,472.70655602525,514.39088038704,559.75102196641,609.11112257023,662.82390755693,721.27320639821,784.8766959018],description:"13th root of 3, Bohlen-Pierce approximation"},cet148:{frequencies:[261.6255653006,284.92791524313,310.30575035912,337.94392545772,368.04376529149,400.82452432448,436.52498800167,475.40520223986,517.74838217475,563.86296895784,614.08486606944,668.77990486322,728.34649714081,793.21854485147,863.86858278563,940.81124699851,1024.60701225804,1115.86625569541,1215.25373699679,1323.49342609599,1441.37375222579,1569.7533918036],description:"21th root of 6, Moreno's C-21"},cet152:{frequencies:[261.6255653006,285.70808394691,312.0073878821,340.72733440875,372.0911362405,406.34196228781,443.74556186468,484.59214639302,529.19833545193,577.91081034511,631.10724720728,689.20039277289,752.64098693245,821.92125998587],description:"13th root of pi"},cet158:{frequencies:[261.6255653006,286.70831230381,314.19580976213,344.3186075731,377.32935907335,413.50494015483,453.14877154631,496.5933637384,544.20310589723,596.37732215892,653.5536209391,716.21156534988,784.8766959018],description:`12th root of 3, Moreno's A-12, see dissertation "Embedding Equal Pitch Spaces.`},cet159:{frequencies:[261.6255653006,286.82842069679,314.45911373416,344.75151869218,377.96204482418,414.37180231943,454.28897403052,498.05144066897,546.02962057131],description:"4e-th root of e. e-th root of e is highest x-th root of x"},cet160:{frequencies:[261.6255653006,286.95745534843,314.74210513576,345.21700307457,378.64263238751,415.30469757995,455.51656649021,499.62194879119,547.99783383788,601.05771297194,659.25511382574,723.0874768355,793.10040709753,869.89233791055,954.11964586525,1046.5022612024],description:'15th root of 4, Rudolf Escher in "The Long Christmas Dinner" (1960)'},cet160a:{frequencies:[261.6255653006,287.06963246392,314.98822873932,345.62201499981,379.23505183234,416.11708252541,456.58602635137,500.99072933585,549.71395617638,603.17569602575,661.83679400878,726.20290371434,796.8288589228,874.32344802967,959.35468153537,1052.65552131526,1155.03021091382,1267.36122959081,1390.6168610076,1525.85955590014,1674.2551187631,1837.08270650821,2015.74588766663,2211.78472029595,2426.88907720145,2662.91313932742,2921.89140956529,3206.0563044734,3517.85730085803,3859.98211320646,4235.37982185266,4647.28638964387,5099.2524155536,5595.17379976366,6139.32543031277,6736.39784717273,7391.53779523322,8110.3925243186],description:"37th root of 31. McLaren 'Microtonal Music', volume 2, track 7"},cet163:{frequencies:[261.6255653006,287.45276480522,315.82957660097,347.00769742017,381.26366336311,418.90131810157,460.25449359467,505.68997636603,555.61077020009,610.45965236807],description:'9th root of 7/3. Jeff Scott in "Quiet Moonlight" (2001)'},cet163a:{frequencies:[261.6255653006,287.41152361975,315.7389582221,346.85836204295,381.04491126651,418.60090448096,459.85843616195,505.18233428314,554.97338050766],description:"5th root of 8/5"},cet166:{frequencies:[261.6255653006,287.95619440582,316.93680165166,348.83408706747],description:"3rd root of 4/3"},cet173:{frequencies:[261.6255653006,289.10449173793,319.46957112932,353.02394045842,390.10257564198,431.07563562091,476.35215768611,526.38414093011,581.67105858963,642.7648443263,710.27540222401,784.8766959018],description:"11th root of 3, Moreno's A-11"},cet175:{frequencies:[261.6255653006,289.48414624674,320.30918244523,354.41654988346,392.15575985798,433.91353804458,480.11779720922,531.2420078798,587.8100594825,650.40162657281,719.65810898332,796.28920449429,881.08018137935,974.89992535123,1078.70983713651,1193.57370864212,1320.66858845324,1461.29686662697,1616.89961515233,1789.07135516847,1979.57639663535,2190.36691789568,2423.60297039629,2681.67459807517,2967.22638952895,3283.18448966052,3632.78664249769,4019.61535560076,4447.6346101102],description:"28th root of 7. McLaren 'Microtonal Music', volume 6, track 3"},cet175a:{frequencies:[261.6255653006,289.53628281337,320.42456924675,354.60807736883,392.4383479509,434.30442400296,480.63685362987,531.91211578736],description:"4th root of 3/2"},cet178:{frequencies:[261.6255653006,289.91935960089,321.27301846367,356.01745236555,394.51936464224,437.18511000944,484.46499093218,536.85800524663,594.91712478053,659.25511382574,730.5510078664,809.55727745129,897.10776473059,994.12650420781,1101.63744560301,1220.77528002516,1352.79740322961,1499.09721690784,1661.21879031979,1840.87318566558,2039.95650991293,2260.56991361642,2505.04181781964,2775.9524141353,3076.16094499002,3408.83584914421,3777.48827884202,4186.0090448096],description:"27th root of 16"},cet181:{frequencies:[261.6255653006,290.48091212946,322.51878830959,358.09020513941,397.58488163802,441.43552612833,490.12256936272,544.17943316245,604.19836236377,670.83693141722,744.82523718317,826.97390553231,918.18295398723,1019.45167961503,1131.88958971281,1256.72856920928,1395.33634826987],description:"6.625 tET. The 16/3 is the so-called Kidjel Ratio promoted by Maurice Kidjel in 1958"},cet182:{frequencies:[261.6255653006,290.70585738945,323.0184918031,358.92275093366,398.81785224951,443.14738973192,492.40425618917,547.1361382945,607.95159681319,675.52683545966,750.61321956915,834.04563048717,926.75174856904,1029.76237395443,1144.22286477952,1271.40590625444,1412.7256395721,1569.7533918036],description:"17th root of 6, Moreno's C-17"},cet195:{frequencies:[261.6255653006,292.81795587218,327.72927094457,366.80289667873,410.53509014096,459.48126579586,514.26306468681,575.57624366132],description:"7th root of 11/5"},cet21k:{frequencies:[261.6255653006,264.89588486686,268.20708342769,271.55967197054,274.95416787017,278.3910952928,281.87098404962,285.39437141672,288.96180112674,292.57382370898,296.23099657435,299.9338841014,303.68305772341,307.47909424051,311.32258299104,315.21411535185,319.1542918681,323.14372059172,327.18301717534,331.2728049672,335.41371510742,339.60638662537,343.85146653829,348.14960995112,352.50148015762,356.90774874273,361.36909568619,365.8862094675,370.45978717215,375.09053459917,379.77916637013,384.52640603933,389.33298620552,394.19964862491,399.1271443257,404.11623372391,409.16768674077,414.28228292154,419.46080913287,424.70406934596,430.01287031296,435.38803129329,440.83038178715,446.34076166346,451.92002128953,457.56902166224,463.28863454093,469.07974258197,474.94323947488,480.88003008033,486.89103056976,492.97716856672,499.13938329007,505.37862569893,511.69585863936,518.09205699304,524.56820782765],description:"scale of syntonic comma's, almost 56-tET"},cet222:{frequencies:[261.6255653006,297.3462123974,337.94392545772,384.08458333231,436.52498800167,496.12526073276,563.86296895784,640.8491384935,728.34649714081,827.79017883768,940.81124699851,1069.2634803114,1215.25373699679,1381.1765584523,1569.7533918036],description:"14th root of 6, Moreno's C-14"},cet233:{frequencies:[261.6255653006,299.41460910537,342.66187834083,392.15575985798,448.79850611373,513.6227001391,587.8100594825,672.71300106294,769.87926947615,881.08018137935,1008.34288220748,1153.98733901804,1320.66858845324,1511.42518780658,1729.7345489351,1979.57639663535,2265.50524176842,2592.73349533282,2967.22638952895,3395.81083571538,3886.29974647262,4447.6346101102],description:"21st root of 17. McLaren 'Microtonal Music', volume 2, track 15"},cet24:{frequencies:[261.6255653006,265.3411057651,269.1094134006,272.9312375932,276.80733837157,280.73848655813,284.72546392233,288.7690633361,292.87008893155,297.02935626086,301.24769245848,305.52593640563,309.86493889709,314.26556281043,318.72868327757,323.25518785885,327.84597671953,332.50196280875,337.22407204116,342.01324348101,346.8704295289,351.79659611118,356.79272287204,361.85980336835,366.9988452672,372.21087054633,377.49691569736,382.85803193188,388.29528539052,393.80975735501,399.40254446313,405.07475892685,410.82752875349,416.66199797006,422.57932685074,428.58069214763,434.66728732478,440.84032279551,447.10102616311,453.45064246502,459.89043442035,466.42168268106,473.04568608657,479.76376192214,486.57724618073,493.48749382879,500.49587907561,507.6037956467,514.81265706088,522.12389691142,529.53896915113],description:"least squares fit primes 2-13"},cet258:{frequencies:[261.6255653006,303.75687573192,352.67287219582,409.46613795376,475.40520223986,551.96287401486,640.8491384935,744.04935121924,863.86858278563,1002.98310468409,1164.50016626124,1352.0273979586,1569.7533918036],description:"12th root of 6, Moreno's C-12"},cet29:{frequencies:[51.91308719749,52.80006242627,53.70219231256,54.6197354699,55.55295587693,56.50212107609,57.46750349647,58.44938022184,59.44803272677,60.46374832519,61.49681820986,62.54753889218,63.61621194966,64.70314373878,65.80864697157,66.93303858176,68.07664129187,69.2397833384,70.42279815925,71.62602610967,72.84981213985,74.09450750046,75.36046944358,76.64806088248,77.95765225928,79.28961901721,80.64434345693,82.02221441105,83.42362735565,84.84898403373,86.29869452271,87.77317443616,89.27284697886,90.79814258634,92.34949851506,93.9273610926,95.53218267212,97.16442386902,98.82455316866,100.51304648023,102.230389586,103.97707482641,105.75360353451,107.56048560902,109.39823902877,111.26739251837,113.16848194039,115.10205294491,117.06866050489,119.06886838764,121.10325205621,123.17239474253,125.2768903313,127.4173428542,129.59436591466,131.80858584574,134.06063743615,136.35116706905,138.68083217153,141.05030058861,143.46025402018,145.91138336926,148.40439215824,150.93999592972,153.51892156515,156.14191102559,158.8097162888,161.52310306741,164.28285015685,167.08974869373,169.94460622727,172.84824120887,175.80148703892,178.80519135714,181.8602162858,184.96743760879,188.12774927869,191.34205731671,194.61128429254,197.93636853869,201.31826325695,204.75794142387,208.2563891515,211.8146105632,215.43362693858,219.11447574094,222.85821595641,226.66592086774,230.53868336123,234.47761499594,238.48384494529,242.55852580808,246.70282574354,250.91793424736,255.20506113867,259.56543598745],description:"95th root of 5"},cet39:{frequencies:[261.6255653006,267.55763511324,273.62420803617,279.82833216202,286.17312954462,292.66178817784,299.29756995616,306.08381073387,313.02392200207,320.12139075456,327.37978859613,334.80276256646,342.39404424694,350.15744982839,358.09687996112,366.21632994368,374.51987945827,383.01170275779,391.6960687417,400.57734310204,409.65998815178,418.94857448076,428.44776921301,438.16234766073,448.09719341103,458.25729813392,468.64777462103,479.27384364987,490.14084702027,501.25424765147,512.61963232837,524.24271148185,536.12933410494,548.28547272565,560.71723832061,573.43088042607,586.43278689221,599.72950056876,613.32770249519,627.23422858353,641.45606974252,656.00037539202,670.87445318194,686.08578808043,701.64202314362,717.55097860059,733.82065199545,750.45921787297,767.47504913108,784.8766959018],description:"49th root of 3"},cet39a:{frequencies:[261.6255653006,267.54999903763,273.60843178624,279.80421399945,286.14029787289,292.61969147246,299.24597805224,306.02231493662,312.9519192023,320.03862308027,327.28580327671,334.69690040195,342.27601296361,350.02675229311,357.95279806627,366.05853356918,374.34782106107,382.82459589435,391.49354592099,400.35880176332,409.42457221564,418.6958708581,428.17711532294,437.87280684605,447.78830736843,457.9283414747,468.29772316218,478.90218693807,489.74678566745,500.83666784082,512.17796641877,523.77608535691],description:"31-tET with least squares octave; equal weight to 5/4, 3/2, 7/4 and 2/1"},cet39b:{frequencies:[261.6255653006,267.54443554965,273.59736903996,279.78708267123,286.11699418435,292.58994480246,299.2095086599,305.97865699219,312.90112748358,319.98002733127,327.21907624411,334.6220906301,342.19239338178,349.93416455252,357.85087908811,365.94690831825,374.22588619981,382.6921630398,391.3502022376,400.20389001205,409.25811505631,418.51694141988,427.98548149913,437.66798531163,447.56979919346,457.69536764001,468.05001127562,478.63918904181,489.46765396188,500.54138513107,511.86535306771,523.4458104663],description:"31-tET with l.s. 8/7, 5/4, 4/3, 3/2, 8/5, 7/4, 2/1; equal weights"},cet39c:{frequencies:[261.6255653006,267.52919373065,273.56603860918,279.73910598956,286.05147140959,292.50627485027,299.10673210371,305.85612987468,312.75782903301,319.8152662872,327.03195662575,334.41149334841,341.95754947331,349.67388372612,357.56433846376,365.63284274659,373.88341429498,382.32016148985,390.94728541851,399.7690842757,408.78994578219,418.01436575232,427.44693588739,437.09235368188,446.9554220819,457.04105241293,467.35426952494,477.9002035559,488.68410850494,499.71135422907,510.98743222773,522.51795602393],description:"10th root of 5/4"},cet39d:{frequencies:[261.6255653006,267.55786538889,273.62467903016,279.82905628857,286.1741163878,292.66304927922,299.29911724561,306.08565654127,313.02607906932,320.12387409698,327.38261000985,334.80593610581,342.39758442978,350.16137164992,358.1012009765,366.22106412416,374.52504331879,383.0173133498,391.70214366901,400.58390053708,409.66704921865,418.95615622721,428.45589162089,438.17103135034,448.1064596598,458.26717154264,468.65827525256,479.28499487175,490.15267293726,501.26677312698,512.63288300643,524.25671683791],description:"31-tET with l.s. 5/4, 3/2, 7/4"},cet39e:{frequencies:[261.6255653006,267.56053134626,273.63013029147,279.83741943955,286.18551905392,292.67762672082,299.3170076044,306.10700082387,313.05102655064,320.15257723818,327.41522444303,334.84262641603,342.43851674365,350.20672153383,358.15114775562,366.27579142084],description:"15th root of 7/5, X.J. Scott"},cet44:{frequencies:[261.6255653006,268.36512159638,275.27829096782,282.369545742,289.64347345451,297.10477981732,304.75829176301,312.60896056742,320.66186505284,328.92221487359,337.3953538863,346.08676360706,355.00206675748,364.14703090225,373.52757218034,383.14975913231,393.01981662619,403.14412988459,413.52924861543,424.18189124916,435.1089492851,446.31749174973,457.81476976988,469.60822126365,481.70547575226,494.11435929576,506.84289955596,519.89933098975,533.2921001762],description:"least maximum error of 10.0911 cents to a set of 11-limit consonances"},cet45:{frequencies:[261.6255653006,268.55812265554,275.67437899809,282.97903853108,290.47742047479,298.17449463282,306.07552595385,314.18591889722,322.51122112969,331.05693609414,339.82928674186,348.83408706747],description:"11th root of 4/3"},cet45a:{frequencies:[261.6255653006,268.48547646737,275.52525683447,282.74962263341,290.1634137569,297.77159700127,305.57926939395,313.59166160814,321.8141414671,330.2522175402,338.9115428334,347.79791857637,356.91729810903,366.27579142084],description:"13th root of 7/5, X.J. Scott"},cet49:{frequencies:[261.6255653006,269.10883825956,276.80615518671,284.72363837915,292.86758524998,301.24447333711,309.86096545541,318.72391499615,327.84037137809,337.21758565441,346.86301628009,356.78433504421,366.98943317194,377.48642760107,388.28366743806,399.38974059878,410.81348063915,422.56397378117,434.65056613995,447.08287115744,459.87077724873,473.02445566714,486.55436859423,500.47127746122,514.78625150841,529.51067658945],description:"least squares fit primes 3-13"},cet49a:{frequencies:[261.6255653006,269.10939785623,276.80730639354,284.72541458317,292.8700212642,301.24760545475,309.86483150611,318.72855440416,327.84582522255,337.22389673177,346.87022916874,356.7924961714,366.99859088307,377.49663223147,388.29497138724,399.40219840734,410.82714906841,422.57891189558,434.66683539241,447.10053547759,459.8899031344,473.04511227892,486.57662785344,500.49521415122,514.81194337949,529.53820446742],description:"least squares fit primes 5-13"},cet49b:{frequencies:[261.6255653006,269.11089011973,276.81037630182,284.73015118141,292.87651740119,301.25595792767,309.87514121046,318.74092648901,327.86036925135,337.24072684885,346.88946427176,356.81426008988,367.0230125633,377.52384592787,388.3251168606,399.43542112995,410.86360043647,422.61874944911,434.71022304287,447.14764374346,459.94090938509,473.10020098719,486.63599085665,500.55905092174,514.88046130456,529.61161913871],description:"least squares fit primes 3-11"},cet51:{frequencies:[261.6255653006,269.45730810595,277.52349357863,285.8311397433,294.38747470873,303.19994295657,312.27621181854,321.62417814738,331.25197518754,341.1679796516,351.38081900843,361.89937898954,372.73281132023,383.89054168203,395.38227791356,407.21801845694,419.40806105693,431.96301172054,444.89379394488,458.21165822114,471.92819182319,486.05532888913,500.60536080461,515.59094689708,531.0251223827,546.92132188791,563.29337300176,580.1555203085,597.52243480304,615.40922665547,633.83145835774,652.80515826392,672.34683453572,692.47348950549,713.20263446921,734.55230492227,756.54107625132,779.18807989593,802.51301999392,826.53619052513,851.2784929682,876.7614544861,903.00724665589,930.0387047592,957.87934765022,986.55339821839,1016.08580446361,1046.5022612024],description:"47nd root of 4"},cet53:{frequencies:[261.6255653006,269.81714175785,278.26519897904,286.97776745533,295.963129115,305.22982618403],description:"5th root of 7/6, X.J. Scott"},cet54:{frequencies:[261.6255653006,269.96706985652,278.57452968396,287.45642599351,296.6215054241,306.0787984682,315.83762188043,325.9075894649,336.29862154621,347.0209567468,358.08515411748,369.5021153806,381.28308783765,393.43967739203,405.98385998242,418.92799580061,432.28483186346,446.06752886518,460.28966468743,474.96525012045,490.10874266572,505.73506369981,521.85960157932,538.49824405725,555.66738252045,573.38393096839,591.66534267587,610.52963091344,629.99537269573,650.08174791487,670.80854445602,692.19618110881,714.26572768264,737.03893002078,760.53821452531,784.78673539949,809.80838082331,835.62780061242,862.2704354823,889.76252234217,918.13114956434,947.40426420901,977.61070438283,1008.78022764847,1040.94354635268,1074.13233401713,1108.37929206026,1143.71815851921,1180.1837471134,1217.81198154093,1256.63993812708,1296.7058535394,1338.04920533515,1380.71072249048,1424.73243255855,1470.15770307252,1517.03129303135,1565.39936221354,1615.30956841503,1666.81108016015,1719.95463363144,1774.79258265191,1831.3789571042],description:"62nd root of 7"},cet54a:{frequencies:[36.70809598968,37.88151295543,39.09243955873,40.34207507177,41.63165640381,42.96246070241,44.33580570763,45.75305128262,47.21560103286,48.72490261351,50.28245077394,51.88978777214,53.5485051662,55.26024570942,57.02670371,58.84962859429,60.73082539186,62.67215683218,64.67554556259,66.74297456936,68.87649134796,71.07820847085,73.35030604133,75.69503428946,78.11471406483,80.61174171737,83.18858976192,85.8478097501,88.59203530858,91.42398271579,94.34645661434,97.36235078878,100.47465152683,103.6864411753,107.00089881505,110.42130694669,113.95105240089,117.59363027227,121.3526480812,125.23182656372,129.23500749643,133.36615476182,137.62935895249,142.02884224198,146.56895930934,151.25420649717,156.08922305851,161.0787965455,166.22786851013,171.54153558634,177.0250602084,182.68387207023,188.52357443227,194.5499507934,200.76896615752,207.18677957808,213.80974586608,220.64442297146,227.69757979185,234.97619765489,242.48748500016,250.23887937817,258.23805608937,266.49293732345,275.01169389411,283.8027624226,292.87484767725,302.23693268442,311.89828942495,321.86848086456,332.15738106504,342.77517792247,353.73238500089,365.03985405114,376.70877738729,388.75071142436,401.17757988308,414.00168763976,427.23573537822,440.89282237095,454.98647402737,469.53064564449,484.53973861665,500.02861758376,516.01261368641,532.50755680773,549.52977996323,567.09613827221,585.22402902787,603.93139550692,623.23676470498,643.1592524742,663.71858572717,684.9351219702,706.82987354375,729.42451222373,752.74141479803,776.80366927173,801.63510168485,827.26030448295,853.70464190233,880.99430375232],description:"101st root of 24"},cet54b:{frequencies:[261.6255653006,269.96795403263,278.5763544202,287.45924871019,296.62539133416,306.08381073387,315.84382837889,325.91506125677,336.30743300953,347.03118371184,358.09687996112,369.51542742358,381.29807310848,393.45642905887,406.00247545366,418.94857448076,432.30748251802,446.09236270275,460.31680056078,474.99480683953,490.14084702027,505.76984518255,521.89720128632,538.53880634615,555.71105808945,573.43088042607,591.71572697754,610.58361784146,630.05314440547,650.14349087612,670.87445318194,692.26646247798,714.3405894063,737.11858847932,760.62290389144,784.8766959018],description:"35th root of 3 or shrunk 22-tET"},cet55:{frequencies:[261.6255653006,270.01349691657,278.67035254505,287.60475577316,296.82560168354,306.34207552634,316.16365537714,326.30012507123,336.76157646737,347.55843063202,358.70144085484,370.20170518484,382.07067969055,394.32018111076,406.96241165943,420.00996255663,433.47583121124,447.37342422819,461.71658555081,476.51960046685,491.79721226214,507.56463983627,523.83758122386,540.63224654693,557.96536270557,575.85419620437,594.31655714751,613.37083662462,633.03601203256,653.33166919923,674.2780257851,695.8959359612,718.20693418482,741.23324143097,764.99779551626,789.52425640623,814.83705588084,840.96140460432,867.92332151557,895.74966491622,924.46813868508,954.10735043232,984.69681977767,1016.26701863443,1048.84937826003,1082.47635523452,1117.18144085251,1152.9992001672,1189.96531328939,1228.1165836432,1267.49101522141,1308.127826503],description:"51th root of 5"},cet55a:{frequencies:[261.6255653006,270.1234331478,278.89732210685,287.95619440582,297.30930820811,306.96622255393,316.93680165166,327.23123542864,337.86004496999,348.83408706747],description:"9th root of 4/3"},cet63:{frequencies:[261.6255653006,271.38398887572,281.50639381697,292.00635633712,302.89795903081,314.19580976213,325.91506125677,338.07143142496,350.68122444233,363.76135261718,377.32935907335,391.4034412791,406.00247545366,421.14604188408,436.85445118639,453.14877154631,470.05085697597,487.58337662462,505.76984518255,524.63465441916,544.20310589723,564.50144490757,585.55689566922,607.39769784277,630.05314440547,653.5536209391,677.93064638327,703.21691530872,729.44634176744,756.65410477833,784.8766959018],description:"30th root of 3 or stretched 19-tET"},cet63a:{frequencies:[261.6255653006,271.37251603396,281.48259278098,291.96932561311,302.84674360983,314.12940356828,325.83240291761,337.9714015469,350.5626427598,363.62297711023,377.1698766242,391.22147055517,405.79656146784,420.91465242294,436.59597307447,452.86150935499,469.73302118774,487.23308701689,505.38512383853,524.21342105699,543.74317298677,564.00051582303,585.01254970054,606.80739415229,629.41421305643,652.8632568014,677.18590276436,702.41470135475,728.58340348685,755.72702964881,783.88190097186,813.08569174348,843.37747981977,874.79780396885,907.38869808556,941.19377721109,976.25827622702,1012.62911525602,1050.35496244617,1089.48630538731,1130.07549372248,1172.17684627813,1215.84669925421,1261.14348767523,1308.127826503],description:"44th root of 5"},cet67:{frequencies:[261.6255653006,271.89449162354,282.56647812794,293.65734341902,305.18353207836,317.16212905639,329.61089159214,342.54827390456,355.99345454941,369.96636271272,384.48771622149,399.57903967613,415.26270466472,431.56196087069,448.50096908674],description:"14th root of 12/7, X.J. Scott"},cet70:{frequencies:[261.6255653006,272.49048247121,283.80660334964,295.59266404146,307.86818385681,320.65348759128,333.96974580612,347.83900623503,362.28423824861,377.32935907335,392.99928119148,409.31995166322,426.31839262878,444.02275580482,462.46235461904,481.66772230429,501.67065719504,522.50428685614,544.20310589723,566.80304433509,590.34152430617,614.85751848055,640.39162865951,666.98613212152,694.68506540856,723.53429383412,753.58158307649,784.8766959018],description:"27th root of 3"},cet78:{frequencies:[261.6255653006,273.68177330057,286.29355449603,299.48651076576,313.28742377221,327.72430932822,342.82647426905,358.62457594514,375.15068445646,392.4383479509],description:"9th root of 3/2"},cet79:{frequencies:[261.6255653006,273.87994580863,286.70831230381,300.13755324878,314.19580976213,328.91254817579,344.3186075731,360.44627930254,377.32935907335,395.0032340925,413.50494015483,432.87325713404,453.14877154631,474.3739811962,496.5933637384,519.85349135637,544.20310589723,569.69324454502,596.37732215892,624.31126899512,653.5536209391,684.16567043124,716.21156534988,749.7584744066,784.8766959018],description:"24th root of 3, James Heffernan (1906)."},cet80:{frequencies:[261.6255653006,273.93704112612,286.82786567404,300.32530171503,314.4578949408,329.25553433534,344.74951538696,360.97260627516,377.95911717185,395.74497280393,414.36778843034,433.8669493945,454.28369442026,475.66120282759,498.04439817054,521.48118104407,546.02084308555,571.71528316122,598.61884237431,626.7884189909,656.28358877393,687.16673097983,719.50316028422,753.36126491573,788.81265129014,825.93229545055,864.79870163404,905.49406830005,948.10446197172,992.7199992577,1039.43503743958,1088.34837402783,1139.56345570838,1193.18859712177,1249.33720993748,1308.127826503],description:"35th root of 5"},cet84:{frequencies:[261.6255653006,274.70153691096,288.43104187674,302.84674360983,317.98293803021,333.87563322966,350.5626427598,368.08366429725,386.48038152577,405.79656146784,426.0781586093,447.37342422819,469.73302118774,493.21014446673,517.86064472263,543.74317298677,570.91930267857,599.45368763079,629.41421305643,660.87215705217,693.9023601738,728.58340348685,764.99779551626,803.23216389999,843.37747981977,885.52924725223,929.78774807537,976.25827622702,1025.05138820617,1076.28316609431,1130.07549372248,1186.55634664103,1245.86008938569,1308.127826503],description:"33rd root of 5"},cet87:{frequencies:[261.6255653006,275.05808287728,289.18026151691,304.0275068203,319.63704721237,336.04802279017,353.30157737897,371.44097305523,390.51169339433,410.56155044631,431.64081781968,453.80235066263,477.10170997643,501.59731726833,527.35059397819,554.42610593952],description:"Least-squares stretched ET to telephone dial tones. 1/1=697 Hz"},cet88:{frequencies:[261.6255653006,275.26799068863,289.6217982776,304.72408298441,320.61387403473,337.33223582731,354.92237405774,373.42974737602,392.90218486657,413.39000965417,434.94616895528,457.62637091093,481.48922855473,506.59641128799,533.01280425363],description:"88 cents steps by Gary Morrison"},cet88_appr:{frequencies:[261.6255653006,275.62199471997,290.69507255622,305.22982618403,320.49131749323,336.37572681506,354.37113606854,373.75080757229,392.4383479509,413.43299207996,436.04260883433,457.84473927605,482.33849075995,504.56359022259,531.55670410281,560.62621135843,588.65752192635,620.14948811994,654.0639132515,686.76710891407,723.50773613993,763.07456546008,801.22829373309],description:"88 cents scale approximated"},cet88b:{frequencies:[261.6255653006,275.26385669298,289.61326650562,304.7105300898,320.59498481995,337.30729585456,354.89100872976,373.39113880701,392.85588995712,413.33509311257,434.8821088097,457.55209870333,481.40413163568,506.49927024418,532.9029023296],description:"87.9745 cents steps. Least squares of 7/6, 11/9, 10/7, 3/2, 7/4."},cet88bis:{frequencies:[261.6255653006,289.53272725508,320.41669955092,337.26306895804,373.23835706057,392.86190344834,434.76782633734,457.62637091093],description:"Bistep approximation of 2212121 mode in 7/4 to 11/9 9/7 10/7 3/2"},cet88bm:{frequencies:[261.6255653006,275.22889829239,289.53954239223,304.59427454323,320.43178392135,337.09277136281,354.62005396115,373.05867644715,392.45602022512,412.86193859025,434.32887139488,456.91198653787,480.66932039657,505.66192697453,531.95403480429],description:"87.75412 cents steps. Minimal highest deviation for 7/6, 11/9, 10/7, 3/2, 7/4."},cet88c:{frequencies:[261.6255653006,275.37188725148,289.84046967782,305.06925821769,321.09819727018,337.96933026971,355.72690383892,374.4174952616,394.09012940783,414.79640018179,436.59061916193,459.52995194191,483.67455974508,509.0877727469,535.83624905561,563.99013984227,593.62329144382,624.813430743,657.64235771869,692.19618110881,728.56553457307,766.84580121693,807.13738838693,849.54597972796,894.18279699007,941.16492045434,990.61558284509,1042.66447461031,1097.44811755542,1155.11020756021,1215.8019705522,1279.68259818323,1346.91964745566,1417.68945580607,1492.17764912727,1570.57960775359,1653.10095047047,1739.95812689496,1831.3789571042],description:"38th root of 7. McLaren 'Microtonal Music', volume 3, track 7"},cet89:{frequencies:[261.6255653006,275.56724848068,290.25186566903,305.71900507847,322.01036982349,339.16988002511,357.2437980159,376.28084921395,396.33236207144,417.45239374596,439.69788420361,463.12880499146,487.80833148705,513.80299757552,541.1828853206,570.0218080747,600.39752248465,632.39191886931,666.09125466774,701.58637981228,738.97299766656,778.35189934333,819.82925103406,863.51687139942,909.53255273344,958.00034936337,1009.05093129669,1062.82192563509,1119.45831186524,1179.11277682321,1241.94614996535,1308.127826503],description:"31st root of 5. McLaren 'Microtonal Music', volume 2, track 22"},cet90:{frequencies:[261.6255653006,275.62199471997,290.36720431405,305.90125228146,322.26633935092,339.50692625527,357.66984706396,376.80444887746,396.96271256675,418.19939952297,440.572208006,464.1419130862,488.97255163391,515.13157534193,542.69005603758,571.72285881831,602.3088534069,634.53113933145],description:"Scale with limma steps"},cet93:{frequencies:[261.6255653006,275.99488223824,291.15340824655,307.14448922429,324.01384989472,341.80973194459,360.58302103444,380.38739950036,401.27949808494,423.31905787312],description:"Tuning used in John Chowning's STRIA, 9th root of Phi"},cet98:{frequencies:[261.6255653006,276.83245825991,292.92324815749,309.94930780463,327.96500300935,347.02785219778,367.1987248383,388.54202015806,411.12588832951],description:"8th root of 11/7, X.J. Scott"},chahargah:{frequencies:[261.6255653006,277.18263097687,283.66146785671,311.12698372208,326.97270111135,348.82502010853,367.86341164695,392.44854854484,415.30469757995,425.01198472693,466.16376151809,493.88330125613,523.2511306012],description:"Chahargah in C"},chahargah2:{frequencies:[261.6255653006,283.66146785671,327.729041887,348.82502010853,392.44854854484,425.01198472693,493.88330125613,523.2511306012],description:"Dastgah Chahargah in C, Mohammad Reza Gharib"},chalmers:{frequencies:[261.6255653006,274.70684356563,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,515.07533168556,523.2511306012],description:"Chalmers' 19-tone with more hexanies than Perrett's Tierce-Tone"},chalmers_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,313.95067836072,327.03195662575,336.37572681506,343.38355445704,376.74081403286,384.42940207435,392.4383479509,400.61414686654,408.78994578219,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"7-limit figurative scale, Chalmers '96 Adnexed S&H decads"},chalmers_19:{frequencies:[261.6255653006,269.10058145205,290.69507255622,294.32876096318,305.22982618403,313.95067836072,336.37572681506,348.83408706747,356.10146388137,363.36884069528,376.74081403286,384.42940207435,392.4383479509,406.97310157871,436.04260883433,448.50096908674,465.11211608996,470.92601754108,508.71637697339,523.2511306012],description:"7-limit figurative scale. Reversed S&H decads"},chalmers_csurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,315.80837468238,323.38635505005,348.83408706747,357.38803216938,383.0466618906,392.4383479509,423.31690179539,433.47765231178,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Combined Surd Scale, combination of Surd and Inverted Surd, JHC, 26-6-97"},chalmers_isurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,323.38635505005,348.83408706747,383.0466618906,433.47765231178,523.2511306012],description:"Inverted Surd Scale, of the form 4/(SQRT(N)+1, JHC, 26-6-97"},chalmers_ji1:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji3:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"15 16 17 18 19 20 21 on 1/1, 15-20 on 3/2, May 2, 1997. See other scales"},chalmers_ji4:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,496.11959049595,523.2511306012],description:"15 16 17 18 19 20 on 1/1, same on 4/3, + 16/15 on 16/9"},chalmers_surd:{frequencies:[261.6255653006,315.80837468238,357.38803216938,392.4383479509,423.31690179539,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/2, JHC, 26-6-97"},chalmers_surd2:{frequencies:[261.6255653006,272.2395613933,282.33485096279,291.98077704337,301.23248980765,310.13469895524,318.72425558532,327.03195662575,335.08385052998,342.90220911983,350.50624086893,357.91266581346,365.13613061818,372.18956061116,379.08442465499,385.8309605564,392.4383479509,398.91485744029,405.26796981327,411.50448329997,417.63058822561,423.65195171798,429.57376586736,435.40081471708,441.13750301549,446.78791303515,452.35581962987,457.84473927605,463.2579384726,468.59846621725,473.86917438523,479.07273156015,484.21164154672,489.28825377326,494.3047826718,499.26331035461,504.16580309972,509.01411882861,513.81001953884,518.55516185524,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/4"},chalung:{frequencies:[261.6255653006,328.09251713275,362.03316295439,390.31715077734,479.41117101029,527.4935758042,647.70012555753,728.30917696308,823.06004869243,961.65052057178,1054.9871516084,1301.05663342451],description:'Tuning of chalung from Tasikmalaya. "slendroid". 1/1=185 Hz'},chaumont:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.49749487796,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.40109831725,489.02683710225,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 1st interpretation"},chaumont2:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.30531842668,327.84547867349,349.70184487387,366.99801003998,391.46454285105,410.8262805401,438.2147004401,465.11211608996,490.54793493862,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 2nd interpretation"},chimes:{frequencies:[261.6255653006,288.69027895239,130.8127826503,144.34513947619],description:"Heavenly Chimes"},chimes_peck:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,1046.5022612024],description:"Kris Peck, 9-tone windchime tuning. TL 7-3-2001"},chin_12:{frequencies:[261.6255653006,277.05457499359,293.57996645301,310.53449241474,329.24697610111,347.79893712036,368.97000115401,391.76907592069,413.1274313058,439.00991514661,462.11551390967,491.43599249807,523.2511306012],description:"Chinese scale, 4th cent."},chin_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,441.49314144476,523.2511306012],description:"Chinese pentatonic from Zhou period"},chin_60:{frequencies:[261.6255653006,262.17244551937,265.19499215873,268.81311753311,272.48060600886,276.1981310001,279.38237857051,283.19406633357,287.05775848811,290.97416342694,294.32876096318,294.94400091442,298.34436617857,302.41475692242,306.54068145351,310.72289706448,314.30517589183,318.59332496145,322.93997797627,327.34593352805,331.11985608357,331.812000697,335.63741195089,340.21660119759,344.85826629043,349.56326086722,353.59332287831,358.41749022331,363.30747486009,368.26417485089,372.50983809402,373.28850041093,377.59208844475,382.74367817547,387.96555142985,392.4383479509,393.25866808247,397.79248823809,403.21967609811,408.72090880899,414.29719629306,419.07356785577,424.79110016094,430.58663751693,436.46124492224,441.49314144476,442.41600115048,447.51654926786,453.62213515688,459.81102195042,466.08434536373,471.45776383774,477.8899872033,484.40996672226,491.01890004663,496.67978412536,497.7180007967,503.45611792634,510.32490448905,517.28740216504,523.2511306012],description:'Chinese scale of fifths (the 60 lu")'},chin_7:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Chinese heptatonic scale and tritriadic of 64:81:96 triad"},chin_bianzhong:{frequencies:[261.6255653006,277.82379926216,312.56802260838,375.1593523779,420.13030572059,469.40618689596,506.59641128799,563.72967895209,627.66881138238,764.75812197709,849.53311813274,949.1724262561,1225.95732655636],description:"Pitches of Bianzhong bells (Xinyang). 1/1=b, Liang Mingyue, 1975."},chin_bianzhong2a:{frequencies:[261.6255653006,284.81073476233,312.56802260838,372.56793743951,413.39000965417,447.94973572445,491.60634075178,562.75365576207,652.05945856061,695.63805470995,863.88355261715,960.75607282217,1173.30283584026],description:"A-tones (GU) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=d#=619 Hz"},chin_bianzhong2b:{frequencies:[261.6255653006,279.59231184543,312.74738729016,375.37536096215,418.43048063126,468.86028020615,505.12945327459,562.08698385796,624.42058858709,762.97988553915,849.53425657971,936.08862980659,1215.37624187632],description:"B-tones (SUI) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=b+=506.6 Hz"},chin_bianzhong3:{frequencies:[261.6255653006,508.3551866238,542.32970395878,608.04166718582,619.02750937577,673.88551872153,729.80120031671,739.56153452917,812.57643344187,881.52624580654,911.03313298042,978.11461117351,982.0774855146,1059.88575280263,1092.20381072382,1163.18085489566,1213.27682870749,1331.52122774489,1483.40111876828,1542.82606951623,1645.93659621657,1649.74391394557,1818.91159982256,2044.01922018919,2273.22753490632,2362.92760489328,2776.13057951436],description:"A and B-tones of 13 Xinyang bells (Ma Cheng-Yuan) abs. pitches wrt middle-C"},chin_bronze:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:`Scale found on ancient Chinese bronze instrument 3rd c.BC & "Scholar's Lute"`},chin_chime:{frequencies:[261.6255653006,248.6592656401,341.74499057264,392.56190849927,548.78974538591,648.86582834888,714.36935367713,785.57745330134,889.7110417619,886.88898199546,992.62825668803,1044.08711871947,1326.14827969763],description:"Pitches of 12 stone chimes, F. Kuttner, 1951, ROMA Toronto. %1=b4"},chin_ching:{frequencies:[261.6255653006,276.1981310001,294.32876096318,310.72289706448,331.11985608357,349.56326086722,368.26417485089,392.4383479509,414.29719629306,441.49314144476,466.08434536373,496.67978412536,524.34489103873],description:"Scale of Ching Fang, c.45 BC. Pyth.steps 0 1 2 3 4 5 47 48 49 50 51 52 53"},chin_di:{frequencies:[261.6255653006,298.70635408336,316.56004827153,360.50766037677,409.94872043165,433.75364775074,527.37121036213],description:"Chinese di scale"},chin_di2:{frequencies:[261.6255653006,289.95657583698,318.21537073485,338.89464890898,383.48501130814,436.9606979923,494.73987775324,522.04355935974],description:"Observed tuning from Chinese flute dizi, Helmholtz/Ellis p. 518, nr.103"},chin_huang:{frequencies:[261.6255653006,331.11985608357,392.4383479509,441.49314144476,523.2511306012,588.65752192635,662.23971216714],description:"Huang Zhong qin tuning"},"chin_liu-an":{frequencies:[261.6255653006,278.83777354406,294.32876096318,311.64221749042,331.11985608357,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067],description:'Scale of Liu An, in: "Huai Nan Tzu", c.122 BC, 1st known corr. to Pyth. scale'},chin_lu:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,495.71159741166,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Huai Nan zi, Han era. P\xEF\xBF\xBDre Amiot 1780, Kurt Reinhard"},chin_lu2:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Chinese L\xEF\xBF\xBD (Lushi chunqiu, by Lu Buwei). Mingyue: Music of the billion, p.67"},chin_lu3:{frequencies:[261.6255653006,277.34278419245,293.66476791741,310.58830860439,329.24697610111,347.81902735497,369.14054089803,391.76907592069,413.1512951712,439.23819834286,462.1422075194,491.60634075178,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, reported in Sung Shu (500 AD)"},chin_lu3a:{frequencies:[261.6255653006,277.06033146978,293.58830182213,310.53780743131,329.25144446584,347.79484055318,368.74579520635,391.78066943209,413.13681807919,438.99947255393,462.1072190611,491.17907538715,523.2511306012],description:`Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, calc. basis is "big number" 177147`},chin_lu4:{frequencies:[261.6255653006,276.78521684908,293.5444075184,310.55356739316,329.35741152087,348.44172229085,369.5396750577,391.9150968203,414.62425518576,439.72952246257,465.20924434298,493.37740286979,523.2511306012],description:'Chinese L\xEF\xBF\xBD "749-Temperament"'},chin_lu5:{frequencies:[261.6255653006,277.35401920913,293.41471131112,311.37240624271,329.40299530711,349.20610523279,369.80535913035,392.03738806826,415.16320853113,440.12206674667,466.08434536373,494.10449271367,522.71643616375],description:"Chinese L\xEF\xBF\xBD scale by Ch'ien Lo-Chih, c.450 AD Pyth.steps 0 154 255 103 204 etc."},chin_lusheng:{frequencies:[261.6255653006,316.38258506467,348.82502010853,389.28772571905,466.97226207056,520.53801357752],description:"Observed tuning of a small Lusheng, 1/1=d, OdC '97"},chin_pan:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Pan Huai-su pure system, in: Sin-Yan Shen, 1991"},chin_pipa:{frequencies:[261.6255653006,284.4818984792,320.42873367481,380.17671965621,433.44136952667,521.74210224793],description:"Observed tuning from Chinese balloon lute p'i-p'a, Helmholtz/Ellis p. 518, nr.109"},chin_sheng:{frequencies:[261.6255653006,295.36595061166,318.03161540472,348.82502010853,395.40657391157,442.03793673691,477.05982293263,522.94897617031],description:"Observed tuning from Chinese sheng or mouth organ, Helmholtz/Ellis p. 518, nr.105"},chin_sientsu:{frequencies:[261.6255653006,291.80478157373,326.97270111135,392.44854854484,438.22451411849,523.2511306012],description:"Observed tuning from Chinese tamboura sienzi, Helmholtz/Ellis p. 518, nr.108"},chin_sona:{frequencies:[261.6255653006,284.4818984792,310.58830860439,337.33223582731,377.98706287655,418.43499793376,469.94877954106,528.10941333272],description:"Observed tuning from Chinese oboe (so-na), Helmholtz/Ellis p. 518, nr.104"},"chin_wang-po":{frequencies:[261.6255653006,294.32876096318,330.24264909897,371.97947673071,392.4383479509,440.94196398978,495.71159741166,517.50111817701],description:"Scale of Wang Po, 958 AD. H. Pischner: Musik in China, Berlin, 1955, p.20"},chin_yangqin:{frequencies:[261.6255653006,288.45311779165,306.48933163909,347.41744306689,383.26356564167,434.44398956347,465.08793784701,522.64699622026],description:"Observed tuning from Chinese dulcimer yangqin, Helmholtz/Ellis p. 518, nr.107"},chin_yunlo:{frequencies:[261.6255653006,288.45311779165,323.40385076956,367.0144478307,386.1523605003,409.35055662695,483.1608380663,525.67465946865],description:"Observed tuning from Chinese gong-chime (y\xEF\xBF\xBDn-lo), Helmholtz/Ellis p. 518, nr.106"},choquel:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,475.68284600109,490.54793493862,523.2511306012],description:"Choquel/Barbour/Marpurg?"},chordal:{frequencies:[261.6255653006,392.4383479509,327.03195662575,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,981.09586987725,490.54793493862,555.95432626377,621.36071758893,310.68035879446,523.2511306012,348.83408706747,418.60090448096,299.00064605783,465.11211608996,380.54627680087,322.00069575458,279.06726965397,610.45965236807,915.6894785521,872.08521766867,697.66817413493,654.0639132515,627.90135672144,448.50096908674,319.76457981184,377.90359432309,444.76346101102,889.52692202204,336.37572681506,294.32876096318,465.11211608996,411.12588832951,305.22982618403,366.27579142084,373.75080757229,313.95067836072,470.92601754108],description:"Chordal Notes S&H"},chrom15:{frequencies:[261.6255653006,280.31310567921,301.87565226992,356.76213450082,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Tonos-15 Chromatic"},chrom15_inv:{frequencies:[261.6255653006,313.95067836072,331.39238271409,348.83408706747,383.71749577421,453.48431318771,488.36772189445,523.2511306012],description:"Inverted Chromatic Tonos-15 Harmonia"},chrom15_inv2:{frequencies:[261.6255653006,279.06726965397,296.50897400735,348.83408706747,383.71749577421,401.15920012759,418.60090448096,523.2511306012],description:"A harmonic form of the Chromatic Tonos-15 inverted"},chrom17:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Tonos-17 Chromatic"},chrom17_con:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,386.75083566176,404.33041910093,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Chromatic"},chrom19:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,382.37582620857,397.67085925691,414.24047839262,523.2511306012],description:"Tonos-19 Chromatic"},chrom19_con:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,368.21375857121,382.37582620857,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Chromatic"},chrom21:{frequencies:[261.6255653006,274.70684356563,289.16509849014,343.38355445704,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Tonos-21 Chromatic"},chrom21_inv:{frequencies:[261.6255653006,323.91736656265,336.37572681506,348.83408706747,398.6675280771,473.41768959156,498.33441009638,523.2511306012],description:"Inverted Chromatic Tonos-21 Harmonia"},chrom21_inv2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,398.6675280771,423.58424858192,448.50096908674,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-21"},chrom23:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,376.08675011961,401.15920012759,429.81342870813,523.2511306012],description:"Tonos-23 Chromatic"},chrom23_con:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,353.96400011258,376.08675011961,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Chromatic"},chrom25:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,408.78994578219,436.04260883433,467.18850946536,523.2511306012],description:"Tonos-25 Chromatic"},chrom25_con:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,384.74347838324,408.78994578219,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Chromatic"},chrom27:{frequencies:[261.6255653006,277.01530443593,294.32876096318,353.19451315581,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Tonos-27 Chromatic"},chrom27_inv:{frequencies:[261.6255653006,310.07474405997,329.45441556372,348.83408706747,387.59343007496,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Chromatic Tonos-27 Harmonia"},chrom27_inv2:{frequencies:[261.6255653006,271.31540105247,281.00523680435,348.83408706747,387.59343007496,406.97310157871,436.04260883433,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-27"},chrom29:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,379.35706968587,399.32323124828,421.50785520652,523.2511306012],description:"Tonos-29 Chromatic"},chrom29_con:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,361.29244731988,379.35706968587,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Chromatic"},chrom31:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,405.51962621593,523.2511306012],description:"Tonos-31 Chromatic. Tone 24 alternates with 23 as MESE or A"},chrom31_con:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Chromatic"},chrom33:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,392.4383479509,411.12588832951,431.68218274599,523.2511306012],description:"Tonos-33 Chromatic. A variant is 66 63 60 48"},chrom33_con:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,375.37581108347,392.4383479509,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Chromatic"},chrom_new:{frequencies:[261.6255653006,273.20871865617,297.93622032612,349.22823143301,391.99543598175,409.35055662695,446.39994737251,523.2511306012],description:"New Chromatic genus 4.5 + 9 + 16.5"},chrom_new2:{frequencies:[261.6255653006,273.6474710507,299.37374239667,349.22823143301,391.99543598175,410.00794244467,448.55379686399,523.2511306012],description:"New Chromatic genus 14/3 + 28/3 + 16 parts"},chrom_soft:{frequencies:[261.6255653006,271.68808704293,282.55561052465,348.83408706747,392.4383479509,407.5321305644,423.83341578697,523.2511306012],description:"100/81 Chromatic. This genus is a good approximation to the soft chromatic"},chrom_soft2:{frequencies:[261.6255653006,268.42893440103,282.57118533961,349.22823143301,391.99543598175,402.18897205153,423.37840671577,523.2511306012],description:"1:2 Soft Chromatic"},chrom_soft3:{frequencies:[261.6255653006,271.31540105247,281.75060878526,348.83408706747,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Soft chromatic genus is from K. Schlesinger's modified Mixolydian Harmonia"},cifariello:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"F. Cifariello Ciardi, ICMC 86 Proc. 15-tone 5-limit tuning"},ckring1:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring with common pivot of 4:5:6:7 = square 1 3 5 7"},ckring2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,448.50096908674,470.92601754108,523.2511306012],description:"Double-tie circular mirroring with common pivot of 3:5:7:9"},"clampitt-phi":{frequencies:[261.6255653006,289.46753582364,320.2724252102,340.92857683151,377.20990650852,444.26963537301,491.54843559637,523.2511306012],description:'David Clampitt, phi+1 mod 3phi+2, from "Pairwise Well-Formed Scales", 1997'},classr:{frequencies:[261.6255653006,275.93321340298,287.4304306281,313.95067836072,327.03195662575,344.91651675372,367.91095120397,392.4383479509,408.78994578219,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"Marvel projection to the 5-limit of class"},cluster:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"13-tone 5-limit Tritriadic Cluster"},cluster6a:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:6"},cluster6b:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:6:5"},cluster6c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,418.60090448096,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:4:5"},cluster6d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:5:4"},cluster6e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:8"},cluster6f:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:8:6"},cluster6g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:7"},cluster6h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:7:5"},cluster6i:{frequencies:[261.6255653006,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:7"},cluster6j:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,436.04260883433,439.53094970501,523.2511306012],description:"Six-Tone Triadic Cluster 5:7:6"},cluster8a:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:6"},cluster8b:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,392.4383479509,408.78994578219,418.60090448096,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:6:5"},cluster8c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,363.36884069528,418.60090448096,436.04260883433,484.4917875937,523.2511306012],description:"Eight-Tone Triadic Cluster 3:4:5"},cluster8d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Eight-Tone Triadic Cluster 3:5:4"},cluster8e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,334.88072358477,392.4383479509,401.85686830172,418.60090448096,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:8"},cluster8f:{frequencies:[261.6255653006,301.39265122629,313.95067836072,348.83408706747,376.74081403286,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:8:6"},cluster8g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:7"},cluster8h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,457.84473927605,523.2511306012],description:"Eight-Tone Triadic Cluster 4:7:5"},cluster8i:{frequencies:[261.6255653006,307.67166479351,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:7"},cluster8j:{frequencies:[261.6255653006,263.718569823,305.22982618403,313.95067836072,366.27579142084,376.74081403286,436.04260883433,439.53094970501,523.2511306012],description:"Eight-Tone Triadic Cluster 5:7:6"},cohenf_11:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:`Flynn Cohen, 7-limit scale of "Rameau's nephew", 1996`},coleman:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,491.89038573682,523.2511306012],description:"Jim Coleman's ModX piano temperament. TL 16 Mar 1999"},collengettes:{frequencies:[261.6255653006,269.10058145205,275.62199471997,285.40970760065,294.32876096318,302.73815413355,310.07474405997,321.08592105074,331.11985608357,340.58042340025,348.83408706747,358.80077526939,367.49599295996,380.54627680087,392.4383479509,403.65087217807,413.43299207996,428.11456140098,441.49314144476,454.10723120033,465.11211608996,478.40103369253,496.67978412536,507.3950357345,523.2511306012],description:"R.P. Collengettes, from p.23 of d'Erlanger, vol 5. 24 tone Arabic system"},colonna1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,308.86351459099,327.03195662575,348.83408706747,363.36884069528,392.4383479509,399.70572476481,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Colonna 1"},colonna2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Colonna 2"},concertina:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"English Concertina, Helmholtz/Ellis, p. 470"},cons11:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 11 not exceeding 2/1"},cons12:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 12 not exceeding 2/1"},cons13:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 13 not exceeding 2/1"},cons14:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 14 not exceeding 2/1"},cons15:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 15 not exceeding 2/1"},cons16:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 16 not exceeding 2/1"},cons17:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 17 not exceeding 2/1"},cons18:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 18 not exceeding 2/1"},cons19:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 19 not exceeding 2/1"},cons20:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 20 not exceeding 2/1"},cons21:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 21 not exceeding 2/1"},cons8:{frequencies:[261.6255653006,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 8 not exceeding 2/1"},cons9:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 9 not exceeding 2/1"},cons_5:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Set of consonant 5-limit intervals within the octave"},cons_7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals of tetrad 4:5:6:7 and inverse"},cons_7a:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals, harmonic entropy minima"},cont_frac1:{frequencies:[261.6255653006,264.29672053658,267.01859068163,284.39991302433,288.64312378534,304.51680721446,328.36325429535,342.47239171077,368.24757473349,390.36247006958,408.23697512781,419.80330474394,448.3033221197,488.42606438843,498.20005830409],description:"Continued fraction scale 1, see McLaren in Xenharmonikon 15, pp.33-38"},cont_frac2:{frequencies:[261.6255653006,268.67076720771,283.00159623424,287.78825007941,303.56038377389,306.30898587133,329.63288816559,333.85601282718,352.97051886932,380.09613548074,393.10104267352,426.45795861378,432.83315799354,472.91012288255,483.94654132265,519.4303061261],description:"Continued fraction scale 2, see McLaren in Xenharmonikon 15, pp.33-38"},cordier:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Serge Cordier, piano tuning, 1975 (Piano bien temp\xEF\xBF\xBDr\xEF\xBF\xBD et justesse orchestrale)"},corner11:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,343.38355445704,359.73515228832,392.4383479509,400.61414686654,408.78994578219,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 11-limit. Chalmers '96"},corner13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 13-limit. Chalmers '96"},corner17:{frequencies:[261.6255653006,265.71346475842,269.80136421624,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,347.47145391486,359.73515228832,371.99885066179,382.21859930635,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,449.66894036041,451.71289008932,457.84473927605,486.4600354808,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 17-limit."},corner17a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,275.93321340298,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,306.59245933664,312.72430852337,314.76825825228,318.85615771011,327.03195662575,331.11985608357,337.2517052703,343.38355445704,345.42750418595,347.47145391486,359.73515228832,367.91095120397,371.99885066179,382.21859930635,392.4383479509,398.57019713763,400.61414686654,404.70204632437,408.78994578219,416.96574469783,425.14154361347,429.2294430713,441.49314144476,449.66894036041,451.71289008932,457.84473927605,459.88868900496,478.28423656516,486.4600354808,490.54793493862,494.63583439645,515.07533168556,521.20718087229,523.2511306012],description:"Quadratic Corner 17 odd limit."},corner7:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,392.4383479509,400.61414686654,408.78994578219,457.84473927605,490.54793493862,523.2511306012],description:"Quadratic corner 7-limit. Chalmers '96"},corner9:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"First 9 harmonics of 5th through 9th harmonics"},corners11:{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,286.15296204753,294.32876096318,299.00064605783,304.4370214407,314.76825825228,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,434.91003062957,449.66894036041,457.84473927605,465.11211608996,478.40103369253,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Quadratic Corners 11-limit. Chalmers '96"},corners13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,398.6675280771,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"Quadratic Corners 13-limit. Chalmers '96"},corners7:{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Quadratic Corners 7-limit. Chalmers '96"},corrette:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.33704984564,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Corrette temperament"},corrette2:{frequencies:[261.6255653006,272.8349596094,292.34127285051,310.42509491746,326.6631048533,350.01785633742,365.01443422269,391.11111150212,409.71484950008,437.02884834934,466.16376151809,488.33748205014,523.2511306012],description:"Michel Corrette, modified meantone temperament (1753)"},coul_12:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,340.65828815182,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 5/4 3/2 2 successively split largest intervals by smallest interval"},coul_12a:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 6/5 3/2 2 successively split largest intervals by smallest interval"},coul_12sup:{frequencies:[261.6255653006,280.31310567921,294.32876096318,310.68035879446,331.39238271409,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,466.02053819169,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean scale. Op de Coul, 2003"},coul_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical 13-tone 5-limit just system"},coul_17sup:{frequencies:[261.6255653006,276.16031892841,279.06726965397,294.57100685697,310.07474405997,313.95067836072,331.39238271409,348.83408706747,368.21375857121,372.08969287196,392.76134247596,413.43299207996,418.60090448096,441.85651028546,465.11211608996,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean 17-tone scale. Op de Coul, 2003"},coul_20:{frequencies:[261.6255653006,277.18263097687,282.2367833559,293.66476791741,305.55548036855,311.12698372208,329.62755691287,335.63799088232,349.22823143301,363.36884069528,369.99442271164,391.99543598175,399.14308682247,415.30469757995,432.12070439462,440,466.16376151809,474.66379875343,493.88330125613,513.88101620607,523.2511306012],description:"Tuning for a 3-row symmetrical keyboard, Op de Coul, 1989"},coul_27:{frequencies:[261.6255653006,275.62199471997,275.93321340298,279.06726965397,293.99679436797,294.32876096318,310.07474405997,310.42486507835,327.03195662575,330.74639366397,331.11985608357,348.83408706747,367.49599295996,367.91095120397,372.08969287196,372.50983809402,392.4383479509,413.43299207996,413.89982010446,418.60090448096,440.99519155196,441.49314144476,465.11211608996,465.63729761752,490.54793493862,496.11959049595,496.67978412536,523.2511306012],description:"Symmetrical 27-tone 5-limit just system, 67108864/66430125 and 25/24"},counterschismic:{frequencies:[261.6255653006,265.12640119254,268.67408364533,272.2692364133,275.65170316539,279.34022410565,283.07810312094,286.865997406,290.70457953408,294.3160713245,298.25434362449,302.24531258767,306.28968684494,310.09479611189,314.24420508029,318.4491358588,322.71033506911,327.0285519162,331.0913069245,335.5216703313,340.01131880467,344.56104171562,348.84160709651,353.50948891197,358.2398341551,363.03347451625,367.54352740958,372.46166135084,377.44560747755,382.49624206822,387.61445966759,392.4298881006,397.68103103357,403.0024376988,408.3950505989,413.46864135256,419.00130591222,424.60800114791,430.28972009123,436.04746916004,441.46459261549,447.37187116862,453.35819556254,459.4246261707,465.13216971689,471.35614630867,477.663406507,484.05506753352,490.06860102591,496.62625431187,503.27165616309,510.00598369715,516.83042094502,523.2511306012],description:"Counterschismic temperament, g=498.082318, 5-limit"},couperin:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28785294636,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.24345038333,489.02683710225,523.2511306012],description:"Couperin modified meantone"},cross13:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,322.00069575458,332.97799220076,336.37572681506,366.27579142084,373.75080757229,406.97310157871,411.12588832951,425.14154361347,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"13-limit harmonic/subharmonic cross"},cross2:{frequencies:[261.6255653006,282.55561052465,339.14425131559,366.27579142084,436.04260883433,470.92601754108,560.62621135843,605.4763082671,726.73768139056,784.8766959018],description:"Pusey's double 5-7 cross reduced by 3/1"},cross2_5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5 cross reduced by 2/1"},cross2_7:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,348.83408706747,392.4383479509,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"longer 3-5-7 cross reduced by 2/1"},cross3:{frequencies:[261.6255653006,282.55561052465,311.45900631024,336.37572681506,363.28578496026,403.74315632809,436.04260883433,470.92601754108,508.60009894437,565.24041885932,610.45965236807,659.29642455751,726.73768139056,784.8766959018],description:"Pusey's triple 5-7 cross reduced by 3/1"},cross_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"3-5-7 cross reduced by 2/1, quasi diatonic, similar to Zalzal's, Flynn Cohen"},cross_72:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,313.95067836072,343.38355445704,348.83408706747,392.4383479509,398.6675280771,436.04260883433,448.50096908674,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5-7 cross reduced by 2/1"},cross_7a:{frequencies:[261.6255653006,336.37572681506,392.4383479509,436.04260883433,470.92601754108,523.2511306012,610.45965236807,784.8766959018],description:"2-5-7 cross reduced by 3/1"},cruciform:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Cruciform Lattice"},galilei:{frequencies:[261.6255653006,277.66336828161,293.32570896007,311.30674962848,328.86683469969,348.2210758395,368.7143392539,390.41365788584,413.39000965417,437.71854962063,463.47885582013,490.75518955849,523.2511306012],description:"Vincenzo Galilei's approximation"},gamelan_om:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other Music gamelan (7 limit black keys)"},gamelan_udan:{frequencies:[261.6255653006,261.6255653006,290.69507255622,305.22982618403,334.88072358477,351.32575911795,364.00078650518,392.4383479509,402.50086969323,465.11211608996,465.11211608996,501.44900015948,523.2511306012],description:"Gamelan Udan Mas (approx) s6,p6,p7,s1,p1,s2,p2,p3,s3,p4,s5,p5"},ganassi:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Sylvestro Ganassi's temperament (1543)"},gann_custer:{frequencies:[261.6255653006,269.80136421624,274.70684356563,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"Kyle Gann, scale from Custer's Ghost to Sitting Bull, 1/1=G"},gann_frac:{frequencies:[261.6255653006,264.89588486686,294.32876096318,305.22982618403,309.04519901133,313.95067836072,348.83408706747,353.19451315581,366.27579142084,392.4383479509,397.34382730029,412.06026534844,418.60090448096,423.83341578697,457.84473927605,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Fractured Paradise, 1/1=B"},gann_ghost:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Kyle Gann, scale from Ghost Town, 1/1=E"},gann_super:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Superparticular Woman (1992), 1/1=G"},gann_things:{frequencies:[261.6255653006,266.47048317654,272.52663052146,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,387.59343007496,392.4383479509,406.97310157871,408.78994578219,436.04260883433,448.50096908674,465.11211608996,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Kyle Gann, scale from How Miraculous Things Happen, 1/1=A"},garcia:{frequencies:[261.6255653006,268.33391312882,271.68808704293,279.06726965397,286.22284067074,294.32876096318,301.87565226992,310.07474405997,313.95067836072,322.00069575458,331.11985608357,339.61010880366,348.83408706747,357.77855083843,362.25078272391,372.08969287196,381.63045422766,392.4383479509,402.50086969323,407.5321305644,418.60090448096,429.33426100611,441.49314144476,452.81347840488,465.11211608996,470.92601754108,483.00104363188,496.11959049595,509.4151632055,523.2511306012],description:"Linear 29-tone scale by Jos\xEF\xBF\xBD L. Garcia, 1988 15/13-52/45 alternating"},garibaldi24:{frequencies:[261.6255653006,271.45160478635,275.48458787532,290.07776082447,294.38747453868,305.44397410364,309.9819851541,326.40257969757,331.25197480486,343.69301829526,348.79929894143,361.89937857146,367.27615309757,386.73177659938,392.47748849606,407.21801775129,413.26809573999,435.16003837828,441.62525370518,458.21165716245,465.0193526482,489.65270106975,496.92751922541,515.59094540799,523.2511306012],description:"Garibaldi[24] in 94-tET tuning."},genovese:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Denny Genovese's 65-note scale. 3/2=384 Hz"},genovese_12:{frequencies:[261.6255653006,285.40970760065,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Denny Genovese's superposition of harmonics 8-16 and subharmonics 6-12"},genovese_38:{frequencies:[261.6255653006,280.31310567921,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Denny Genovese's 38-note scale. Harm 1..16 x Subh. 1..12"},"gf1-2":{frequencies:[261.6255653006,269.29177952703,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,339.28638158975,349.22823143301,359.46139971304,380.8360868427,403.48177901006,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"16-note scale with all possible quadruplets of 50 & 100 c. Galois Field GF(2)"},"gf2-3":{frequencies:[261.6255653006,270.85177093588,280.40333801024,290.29174037004,300.52885648597,316.56538760238,327.729041887,345.21700307457,357.39105439675,369.99442271164,389.73770840504,410.5345162762,425.01198472693,447.69106452518,471.58032351597,496.7443381147,523.2511306012],description:"16-note scale with all possible quadruplets of 60 & 90 c. Galois Field GF(2)"},gilson7:{frequencies:[261.6255653006,261.6255653006,299.00064605783,313.95067836072,327.03195662575,392.4383479509,373.75080757229,392.4383479509,408.78994578219,408.78994578219,467.18850946536,490.54793493862,523.2511306012],description:"Gilson septimal"},gilson7a:{frequencies:[261.6255653006,261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,373.75080757229,373.75080757229,392.4383479509,418.60090448096,470.92601754108,470.92601754108,523.2511306012],description:"Gilson septimal 2"},golden_10:{frequencies:[261.6255653006,287.58715183149,304.90466328003,323.26497397694,342.73087946949,376.74069565061,399.42672527674,423.47882962254,465.50141625349,493.53231135469,523.2511306012],description:"Golden version of Rapoport's Major 10 out of 13"},golden_5:{frequencies:[261.6255653006,327.03195662575,343.38355445704,392.4383479509,425.14154361347,523.2511306012],description:"Golden pentatonic"},gradus10:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,490.54793493862,882.98628288953,930.22423217991,941.85203508216,1220.91930473613,1255.80271344288,1674.40361792384,2747.0684356563,3270.3195662575,3488.34087067467,5886.5752192635,10595.8353946743,10988.2737426252,11162.69078615893,13081.27826503,14651.0316568336,23546.300877054,31395.067836072,41860.090448096,42383.3415786972,56511.1221049296,75348.1628065728,100464.2170754304,133952.2894339072],description:"Intervals > 1 with Gradus = 10"},gradus3:{frequencies:[261.6255653006,784.8766959018,1046.5022612024],description:"Intervals > 1 with Gradus = 3"},gradus4:{frequencies:[261.6255653006,392.4383479509,1569.7533918036,2093.0045224048],description:"Intervals > 1 with Gradus = 4"},gradus5:{frequencies:[261.6255653006,348.83408706747,1308.127826503,2354.6300877054,3139.5067836072,4186.0090448096],description:"Intervals > 1 with Gradus = 5"},gradus6:{frequencies:[261.6255653006,654.0639132515,697.66817413493,1177.3150438527,2616.255653006,4709.2601754108,6279.0135672144,8372.0180896192],description:"Intervals > 1 with Gradus = 6"},gradus7:{frequencies:[261.6255653006,327.03195662575,436.04260883433,588.65752192635,1395.33634826987,1831.3789571042,3924.383479509,5232.511306012,7063.8902631162,9418.5203508216,12558.0271344288,16744.0361792384],description:"Intervals > 1 with Gradus = 7"},gradus8:{frequencies:[261.6255653006,294.32876096318,313.95067836072,418.60090448096,872.08521766867,915.6894785521,1962.1917397545,2790.67269653973,3531.9451315581,3662.7579142084,7848.766959018,10465.022612024,14127.7805262324,18837.0407016432,25116.0542688576,33488.0723584768],description:"Intervals > 1 with Gradus = 8"},gradus9:{frequencies:[261.6255653006,457.84473927605,465.11211608996,470.92601754108,610.45965236807,627.90135672144,837.20180896192,981.09586987725,1744.17043533733,1765.97256577905,5494.1368713126,5581.34539307947,6540.639132515,7325.5158284168,11773.150438527,15697.533918036,20930.045224048,21191.6707893486,28255.5610524648,37674.0814032864,50232.1085377152,66976.1447169536],description:"Intervals > 1 with Gradus = 9"},grady11:{frequencies:[261.6255653006,277.4816601673,290.69507255622,305.22982618403,332.97799220076,356.76213450082,378.42269266694,392.4383479509,420.46965851882,458.69417292962,481.6288815761,504.56359022259,523.2511306012],description:"Kraig Grady's dual [5 7 9 11] hexany scale"},grady7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Kraig Grady's 7-limit "Centaur" scale (1987), see Xenharmonikon 16`},grady7t:{frequencies:[261.6255653006,274.79177208104,293.65339461903,305.54250820508,326.68804977983,349.10444036529,366.6627351378,392.00975085961,407.77240291308,436.0718257558,457.96530027286,489.37179607373,523.2511306012],description:"Tempered version of grady7 with egalised 225/224"},grady_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Kraig Grady, letter to Lou Harrison, published in 1/1 7 (1) 1991 p 5."},grammateus:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"H. Grammateus (Heinrich Schreiber) (1518). B-F# and Bb-F 1/2 P. Also Marpurg temp.nr.6"},graupner:{frequencies:[261.6255653006,277.083518473,293.59062125964,310.9808189359,329.55130849159,349.11528328816,370.00708353276,392.01655298731,415.20348378516,439.96413779539,466.04943410823,493.90517116572,523.2511306012],description:"Johann Gottlieb Graupner's temperament (1819)"},groenewald_21:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"J\xEF\xBF\xBDrgen Gr\xEF\xBF\xBDnewald, new meantone temperament I (2000)"},gross:{frequencies:[13.75,13.83042567154,13.91662997964,13.99803029322,14.07990672861,14.1622619889,14.24509903843,14.32842061343,14.41222946472,14.49652860895,14.58132083065,14.67220542837,14.75802520833,14.84434696019,14.93117353378,15.01850805439,15.10635340681,15.19471249121,15.28358848801,15.37298433293,15.46880332718,15.55928251958,15.65029093742,15.74183158529,15.83390775812,15.92652249736,16.01967895316,16.113380201,16.20762961362,16.30865090754,16.4040424858,16.49999202274,16.59650278193,16.69357794961,16.79122101993,16.88943521823,16.98822378696,17.08759028197,17.18753798549,17.29466699621,17.39582592037,17.49757653721,17.59992220598,17.70286661052,17.80641315127,17.91056524676,18.01532664586,18.12070080902,18.23364617402,18.34029731861,18.44757228066,18.55547460176,18.66400816581,18.77317655783,18.88298349104,18.99343259063,19.10452783216,19.2236053387,19.33604689279,19.44914613325,19.56290690697,19.67733296969,19.79242844011,19.90819712001,20.02464283144,20.14176976577,20.26731246322,20.38585868839,20.50509842475,20.62503561099,20.74567420676,20.86701855437,20.98907266203,21.11184068121,21.23532666504,21.36768545088,21.49266790503,21.61838152318,21.74483045784,21.87201888365,21.99995137868,22.12863216875,22.25806563075,22.38825603783,22.52780097787,22.65956910312,22.79210808945,22.92542231482,23.05951631373,23.1943945132,23.33006176809,23.46652255971,23.60378139323,23.75090264526,23.88982499399,24.02955978014,24.17011203339,24.3114863964,24.45368753658,24.59672057234,24.74059022832,24.88530139802,25.04041015894,25.18687501732,25.33419642278,25.48237967807,25.63142967793,25.78135134315,25.93215007005,26.08383083979,26.23639881154,26.39992889083,26.55434576426,26.70966568928,26.86589425653,27.0230366265,27.18109814415,27.34008402779,27.5],description:"Gross temperament, g=91.531021, 5-limit"},groven:{frequencies:[261.6255653006,264.7464578752,272.5650766677,275.81646505128,279.10663876478,290.77709705464,294.24573392894,297.75574765819,306.54921255625,310.20599265769,313.90639394672,327.03195662575,330.93307160522,334.88072358477,344.77058253591,348.88329767713,353.04507480266,363.47137260637,367.80716871461,372.19468374184,387.75749219625,392.38299382393,397.06367008113,408.78994578219,413.66634097248,418.60090448096,436.10412364188,441.30634506723,446.57062302059,459.75895986689,465.24335632603,470.79317533731,484.69686416326,490.47874118496,496.32958936031,517.08292506126,523.2511306012],description:"Eivind Groven's 36-tone scale with 1/8-schisma temp. fifths and 5/4 (1948)"},groven_ji:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,517.37477513058,523.2511306012],description:"Untempered version of Groven's 36-tone scale"},gumbeng:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.9259392365,525.62941881859],description:"Scale of gumbeng ensemble, Java. 1/1=440 Hz."},gunkali:{frequencies:[261.6255653006,275.93321340298,282.55561052465,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Indian mode Gunkali, see Dani\xEF\xBF\xBDlou: Intr. to the Stud. of Mus. Scales, p.175"},gyaling:{frequencies:[261.6255653006,283.49766588023,307.55338551939,339.28638158975,347.81902735497,393.58362272115,435.9522698367],description:'Tibetan Buddhist Gyaling tones measured from CD "The Diamond Path", Ligon 2002'},far12_104:{frequencies:[261.6255653006,276.7193479141,294.32876096318,311.93817401225,329.54758706133,349.67263054599,369.79767403066,392.4383479509,415.07902187114,440.23532622697,465.3916305828,493.06356537421,523.2511306012],description:"Farey approximation to 12-tET with den=104"},far12_65:{frequencies:[261.6255653006,277.72560008833,293.82563487606,309.92566966379,330.05071314845,350.17575663311,370.30080011777,390.42584360243,414.57589578403,438.72594796562,466.90100884415,495.07606972267,523.2511306012],description:"Farey approximation to 12-tET with den=65"},far12_80:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,330.30227619201,349.92419358955,369.5461109871,392.4383479509,415.3305849147,441.49314144476,467.65569797482,493.81825450488,523.2511306012],description:"Farey approximation to 12-tET with den=80"},farey3:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"Farey fractions between 0 and 1 until 3rd level, normalised by 2/1"},farey4:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Farey fractions between 0 and 1 until 4th level, normalised by 2/1"},farey5:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,348.83408706747,366.27579142084,373.75080757229,380.54627680087,392.4383479509,402.50086969323,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Farey fractions between 0 and 1 until 5th level, normalised by 2/1"},farnsworth:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Farnsworth's scale"},fibo_9:{frequencies:[261.6255653006,277.97716313189,327.03195662575,343.38355445704,363.82305174615,392.4383479509,425.14154361347,449.66894036041,523.2511306012],description:"First 9 Fibonacci terms reduced by 2/1, B. McLaren, XH 13, 1991"},finnamore:{frequencies:[261.6255653006,277.97716313189,310.68035879446,348.83408706747,392.4383479509,416.96574469783,457.84473927605,466.02053819169,523.2511306012],description:"David J. Finnamore, Tuning List 9 May '97. Tetrachordal scale, 17/16x19/17x64/57"},finnamore53:{frequencies:[261.6255653006,286.15296204753,310.68035879446,327.03195662575,343.38355445704,359.73515228832,367.91095120397,376.08675011961,392.4383479509,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,457.84473927605,474.19633710734,523.2511306012],description:'David J. Finnamore, tuning for "Crawlspace", 53-limit, 1998.'},finnamore_11:{frequencies:[261.6255653006,287.78812183066,294.32876096318,305.22982618403,323.76163705949,331.11985608357,343.38355445704,348.83408706747,392.4383479509,431.68218274599,441.49314144476,457.84473927605,485.64245558924,515.07533168556,523.2511306012],description:"David J. Finnamore, 11-limit scale, Tuning List 3 Sept '98"},finnamore_7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,309.04519901133,331.11985608357,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,463.567798517,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 21/20 &15/14"},finnamore_7a:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,331.11985608357,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,473.02836583367,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 15/14 &21/20"},finnamore_jc:{frequencies:[261.6255653006,276.16031892841,310.68035879446,348.83408706747,392.4383479509,414.24047839262,466.02053819169,523.2511306012],description:"Chalmers' modification of Finnamore. Tuning List 9-5-97 19/18 x 9/8 x 64/57"},fisher:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.67535808973,327.03195662575,349.71841093413,365.63284485857,391.22147055517,410.55062036439,437.39890198442,467.47330218196,489.02683992698,523.2511306012],description:"Alexander Metcalf Fisher's modified meantone temperament (1818)"},"fj-10tet":{frequencies:[261.6255653006,280.31310567921,300.51585203447,322.00069575458,345.20039866051,370.01329949656,396.52624740872,425.14154361347,455.42228033808,488.36772189445,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 10-tet"},"fj-12tet":{frequencies:[261.6255653006,277.19851561611,293.6613488068,311.12229387098,329.64821227876,348.83408706747,370.01329949656,391.99491478937,415.52295665389,440.00663255101,466.16918908107,490.54793493862,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 12-tet"},"fj-13tet":{frequencies:[261.6255653006,275.96121271433,291.05844139692,306.97399661937,323.91736656265,341.56671025356,360.27127025001,379.97998769849,400.78810003496,422.62591317789,445.95266812602,41.6222490251,496.18641694941,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 13-tet"},"fj-14tet":{frequencies:[261.6255653006,274.92856014639,288.87822835275,303.4856557487,318.85615771011,335.0643204727,352.18826098158,370.01329949656,388.70083987518,408.5030756448,429.33426100611,451.0785608631,473.88781639354,497.93252750759,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 14-tet"},"fj-15tet":{frequencies:[261.6255653006,274.08392555301,286.94416839421,300.51585203447,314.76825825228,329.64821227876,345.20039866051,361.51896296083,378.66858135613,396.52624740872,415.52295665389,392.4383479509,455.42228033808,477.08191319521,499.46698830115,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 15-tet"},"fj-16tet":{frequencies:[261.6255653006,273.25336820285,285.40970760065,297.96244937013,311.12229387098,324.92207303462,339.29565499922,354.2846196779,370.01329949656,386.4008349055,403.52417698906,421.50785520652,440.00663255101,459.44001711325,479.64686971777,500.9851250437,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 16-tet"},"fj-17tet":{frequencies:[261.6255653006,272.52663052146,283.8915708581,295.75063903546,307.98958953109,320.70230585235,334.29933343966,348.03400888612,362.53828334512,373.75080757229,392.4383479509,409.71550792358,426.86276443782,444.76346101102,462.87600014722,482.37213602298,502.32108537715,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 17-tet"},"fj-18tet":{frequencies:[261.6255653006,271.88539139082,282.55561052465,293.6613488068,305.22982618403,317.12189733406,329.64821227876,342.60490694126,355.98232655655,370.01329949656,384.51030051755,399.57359064092,415.52295665389,431.68218274599,448.50096908674,466.16918908107,484.4917875937,503.12608711654,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 18-tet"},"fj-19tet":{frequencies:[261.6255653006,271.31540105247,281.44568388398,291.81313052759,302.73815413355,313.95067836072,325.69713231299,337.73482066077,350.31219760589,363.36884069528,376.74081403286,390.78248994267,405.26313056367,420.46965851882,436.04260883433,451.89870370104,468.95148497277,485.87604984397,504.56359022259,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 19-tet"},"fj-20tet":{frequencies:[261.6255653006,270.8594087818,280.31310567921,290.29686012806,300.51585203447,311.12229387098,322.00069575458,333.44434793214,345.20039866051,357.34223553253,370.01329949656,383.09457776159,396.52624740872,410.48149038542,425.14154361347,440.00663255101,455.42228033808,470.92601754108,488.36772189445,505.41302387616,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 20-tet"},"fj-21tet":{frequencies:[261.6255653006,270.34641747729,279.46367202564,288.87822835275,298.56093922539,308.58400009814,318.85615771011,329.64821227876,340.72166643799,352.18826098158,364.00078650518,376.08675011961,388.70083987518,401.78211814021,415.52295665389,429.33426100611,443.62595855319,457.84473927605,473.88781639354,489.85212226495,506.18859373377,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 21-tet"},"fj-22tet":{frequencies:[261.6255653006,270.06509966514,278.68810216803,287.55242312318,296.76929795292,306.29334474217,316.13089140489,326.18252297218,336.37572681506,347.40443916965,358.52392281934,370.01329949656,381.83190611439,392.4383479509,392.4383479509,419.69101100305,433.03541842858,446.94367405519,461.28718092474,475.68284600109,491.34557385722,506.89953276991,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 22-tet"},"fj-23tet":{frequencies:[261.6255653006,269.55361273395,277.97716313189,286.37392958579,295.1673044417,304.21577360535,313.47928094576,323.18452184192,332.97799220076,343.1154954762,353.6790049434,364.40703738298,375.66747838035,387.20583664489,398.97898708342,411.12588832951,423.58424858192,436.04260883433,449.99597231703,463.79077485106,477.96978276071,492.47165233054,507.86139146587,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 23-tet"},"fj-24tet":{frequencies:[261.6255653006,269.32043486826,277.19851561611,285.40970760065,293.6613488068,302.32287545847,311.12229387098,320.2657782128,329.64821227876,339.29565499922,348.83408706747,348.83408706747,370.01329949656,380.54627680087,391.99491478937,403.52417698906,415.52295665389,427.53446036927,440.00663255101,452.81347840488,466.16918908107,479.64686971777,490.54793493862,508.30109829831,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 24-tet"},"fj-26tet":{frequencies:[261.6255653006,268.69652652494,275.96121271433,283.42769574232,291.05844139692,299.00064605783,306.97399661937,315.29234792636,323.91736656265,332.57487114483,341.56671025356,350.8160989258,360.27127025001,370.01329949656,379.97998769849,390.22118214327,400.78810003496,411.12588832951,422.62591317789,434.18710837121,445.95266812602,457.84473927605,457.84473927605,483.00104363188,496.18641694941,509.48136400643,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 26-tet"},"fj-30tet":{frequencies:[261.6255653006,267.70988077271,274.08392555301,280.31310567921,286.94416839421,293.6613488068,300.51585203447,307.52478728316,314.76825825228,322.00069575458,329.64821227876,337.35928157183,345.20039866051,353.19451315581,361.51896296083,370.01329949656,378.66858135613,387.59343007496,396.52624740872,405.78659107848,415.52295665389,425.14154361347,392.4383479509,444.76346101102,455.42228033808,466.16918908107,477.08191319521,488.36772189445,499.46698830115,511.35905945117,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 30-tet"},"fj-31tet":{frequencies:[261.6255653006,267.57160087561,273.51763645063,279.79400733536,286.15296204753,292.60754013883,299.00064605783,305.96888145324,312.81317590289,319.76457981184,327.03195662575,334.53760808929,342.12573923925,349.884792149,357.81143489641,366.27579142084,373.75080757229,382.37582620857,391.25985441351,400.13321751856,409.20921752145,418.60090448096,428.11456140098,437.54620403721,447.51741432997,457.84473927605,467.90726101838,478.40103369253,489.12605686634,500.50108144463,511.62332769895,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 31-tet"},"fj-36tet":{frequencies:[261.6255653006,266.75547834571,271.88539139082,277.19851561611,282.55561052465,288.08208313999,293.6613488068,299.00064605783,305.22982618403,311.12229387098,317.12189733406,323.18452184192,329.64821227876,327.03195662575,342.60490694126,348.83408706747,355.98232655655,362.89997767503,370.01329949656,377.22755927063,384.51030051755,391.99491478937,399.57359064092,406.97310157871,415.52295665389,423.35773294097,431.68218274599,440.00663255101,448.50096908674,436.04260883433,466.16918908107,475.19745534191,484.4917875937,490.54793493862,503.12608711654,513.18860885887,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 36-tet"},"fj-41tet":{frequencies:[261.6255653006,266.05989691586,270.64713651786,275.21650375777,279.87851171692,284.71017400359,289.532292266,294.32876096318,299.49242343621,304.63250754179,309.81974838229,315.13988547572,320.49131749323,325.95972070239,331.39238271409,337.09447836808,342.81970625596,348.83408706747,354.64798851859,360.72615821749,366.27579142084,373.13810133036,379.35706968587,386.00493241072,392.4383479509,399.32323124828,405.97070477679,413.09299784305,419.97788114044,427.14378008261,434.48531380278,441.85651028546,449.45930449077,436.04260883433,465.11211608996,472.93852188955,480.82536325516,489.12605686634,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 41-tet"},"fj-42tet":{frequencies:[261.6255653006,265.98599138894,270.34641747729,274.92856014639,279.46367202564,284.05061375494,288.87822835275,293.6613488068,298.56093922539,303.4856557487,308.58400009814,313.7026920429,318.85615771011,324.18820048118,329.64821227876,335.0643204727,340.72166643799,346.37750898953,352.18826098158,358.01393146398,364.00078650518,370.01329949656,376.08675011961,382.37582620857,388.70083987518,395.22159864559,401.78211814021,408.5030756448,415.52295665389,422.16852582597,429.33426100611,436.04260883433,443.62595855319,451.0785608631,457.84473927605,466.16918908107,473.88781639354,481.94183081689,489.85212226495,497.93252750759,506.18859373377,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 42-tet"},"fj-43tet":{frequencies:[261.6255653006,265.84533248287,270.2034526875,274.70684356563,279.06726965397,283.42769574232,288.1672893166,292.86443876933,297.71185016965,302.50455987882,307.4100392282,312.38873468728,317.43901923139,322.67153053741,327.85988562987,332.97799220076,338.57426097725,344.24416486921,348.83408706747,355.41586229515,361.11697745717,367.05676325756,372.95559308809,379.09010482332,385.17097113699,391.45479319413,397.88888056133,404.33041910093,392.4383479509,417.48760420309,424.25767346043,431.1976909584,438.2228218785,445.32011114996,452.54151835779,459.82675113439,467.18850946536,475.05694751951,483.00104363188,490.54793493862,498.33441009638,506.89953276991,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 43-tet"},"fj-53tet":{frequencies:[261.6255653006,265.06800694929,268.51044859798,272.09058791262,275.69145590816,279.30296836145,282.98275430473,286.71294827463,290.48132617934,294.32876096318,298.13145813324,302.11523612093,306.05254808749,310.07474405997,313.95067836072,318.31110444906,322.46872002167,326.7649917632,331.03642956402,335.41739141103,336.37572681506,344.24416486921,348.83408706747,353.42400926572,358.01393146398,362.89997767503,367.52162744608,372.31330446624,377.3445653374,382.37582620857,387.20583664489,392.4383479509,397.67085925691,402.82031482791,408.13588186894,413.53718386224,418.60090448096,424.41480593208,429.81342870813,436.04260883433,441.49314144476,447.29532132038,453.1728541814,459.07882213124,465.11211608996,470.92601754108,477.46665667359,483.76047923507,485.87604984397,496.55464434604,503.12608711654,509.83443494476,516.36624730382,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 53-tet"},"fj-54tet":{frequencies:[261.6255653006,265.02329991489,268.42103452919,271.88539139082,275.39533189537,279.06726965397,282.55561052465,286.15296204753,289.90941019796,293.6613488068,297.46468383493,301.26580246736,305.22982618403,309.19384990071,313.15787361738,317.12189733406,321.29455387793,325.43667878855,329.64821227876,333.91683992313,338.19890148614,342.60490694126,346.93824963775,351.55935337268,355.98232655655,360.61902244137,365.28852513669,370.01329949656,374.76094489005,379.61356533813,384.51030051755,389.53139722534,394.5147413263,399.57359064092,404.77917650282,409.88005230427,415.52295665389,420.652869699,426.07592063241,431.68218274599,436.04260883433,442.75095666255,448.50096908674,454.40229762736,460.26719821402,466.16918908107,472.20223981084,478.40103369253,484.4917875937,490.54793493862,497.08857407114,503.12608711654,510.16985233617,516.54278277298,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 54-tet"},"fj-55tet":{frequencies:[261.6255653006,264.93728131706,268.33391312882,271.68808704293,275.15792212649,278.68810216803,282.14521748104,285.77561748219,289.37373131733,293.02063313667,296.76929795292,300.51585203447,304.33994330886,308.21641939523,312.11470948142,316.13089140489,319.76457981184,324.10331223806,328.22116374075,332.33517754401,336.37572681506,340.90603963412,345.20039866051,348.83408706747,353.96400011258,358.52392281934,363.07221307022,367.68998366571,372.31330446624,377.04860881557,381.83190611439,386.75083566176,391.58336244338,396.52624740872,401.56482115906,406.65712867376,411.81801945465,416.96574469783,418.60090448096,427.65717404906,433.03541842858,438.60756535689,444.15502946381,449.8123754291,455.42228033808,461.28718092474,467.18850946536,472.93852188955,479.03272519828,485.0974023282,491.34557385722,497.60156537565,503.87145909745,510.16985233617,516.71049146868,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 55-tet"},"fj-5tet":{frequencies:[261.6255653006,300.51585203447,345.20039866051,396.52624740872,455.42228033808,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 5-tet"},"fj-60tet":{frequencies:[261.6255653006,264.66772303665,267.70988077271,270.8594087818,274.08392555301,277.19851561611,280.31310567921,283.6903720127,286.94416839421,290.29686012806,293.6613488068,297.10021822272,300.51585203447,304.05133264664,307.52478728316,311.12229387098,314.76825825228,318.50068819203,322.00069575458,325.79787377056,329.64821227876,333.44434793214,337.35928157183,341.25073734861,345.20039866051,348.83408706747,353.19451315581,357.34223553253,361.51896296083,365.74186169574,370.01329949656,374.3258088147,378.66858135613,383.09457776159,387.59343007496,391.99491478937,396.52624740872,401.15920012759,405.78659107848,410.48149038542,415.52295665389,420.18651396763,425.14154361347,429.81342870813,434.91003062957,440.00663255101,444.76346101102,450.23934493592,455.42228033808,460.95932933915,466.16918908107,470.92601754108,477.08191319521,482.55382044333,488.36772189445,490.54793493862,499.46698830115,505.41302387616,511.35905945117,517.30509502619,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 60-tet"},"fj-66tet":{frequencies:[261.6255653006,264.37951861955,267.19206668997,270.06509966514,272.83808952777,275.76748774928,278.68810216803,281.58005756929,284.57517629188,287.55242312318,290.69507255622,293.6613488068,296.76929795292,299.91223339337,302.93486508491,306.29334474217,309.48390041656,312.81317590289,316.13089140489,319.38705374359,322.78478835788,326.18252297218,329.64821227876,332.97799220076,336.37572681506,340.11323489078,343.8507429665,347.40443916965,351.12904816659,354.74652922115,358.52392281934,362.25078272391,366.27579142084,370.01329949656,373.75080757229,377.90359432309,381.83190611439,385.89770881839,389.97018224052,392.4383479509,398.12586024004,402.50086969323,406.65712867376,411.12588832951,415.52295665389,419.69101100305,424.01384721132,428.62060698183,433.03541842858,437.71969579139,442.27178896054,446.94367405519,451.89870370104,456.45311392871,461.28718092474,466.16918908107,470.92601754108,475.68284600109,481.05345877852,485.87604984397,491.34557385722,496.41773928832,501.44900015948,506.89953276991,512.35006538034,517.80059799077,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 66-tet"},"fj-72tet":{frequencies:[195.99771799087,197.9006084568,199.84081050049,201.76235675531,203.68390301012,205.67661764474,207.66424882366,209.67197738558,211.67753543014,213.81569235368,215.817711945,217.77524221208,219.99743856118,222.13074705632,223.99739198957,226.48625190056,228.66400432268,230.8417567448,233.07836734049,235.19726158904,237.57299150408,239.92824098882,242.11482810637,244.5635242187,246.9571246685,249.45164107929,251.74018824515,254.18454051941,256.66367832138,259.11562717437,261.33029065449,264.17083729204,266.68541956135,269.28382123963,271.86780237443,274.39680518722,277.19677258709,279.99673998696,282.60136082405,285.0875898049,288.0572521987,290.83532347032,293.66437746429,296.5093682426,299.34196929515,302.30156503677,304.88533909691,307.99641398565,311.29049327962,313.59634878539,317.15994365795,320.28895378996,323.39623468494,326.46784071315,329.63252571192,332.8263135694,335.99608798435,339.22681959958,342.55457018224,345.87832586624,349.232297511,352.79589238357,355.99585512627,359.32914964993,362.95873702013,366.4305162438,367.49572123288,373.6206499201,376.91868844398,380.79556638226,384.45706221286,388.2262490973,391.99543598174],description:"Franck Jedrzejewski continued fractions approx. of 72-tet"},"fj-78tet":{frequencies:[138.59131548844,139.82873794816,141.06616040788,142.33702671786,143.60064014465,144.89092073791,146.18536017274,147.4753741736,148.781853392,150.14059177914,151.48353088271,152.80580938469,154.18283848089,155.56168065029,156.95883922787,158.39007484393,159.76498868806,161.21846903757,162.6138101731,164.12129465736,165.53962683341,167.02030328094,168.55700532378,170.00534699915,171.58924774759,173.06676710248,174.62505751543,176.17540104463,177.75842638735,179.35346710269,180.93866188769,182.53490332624,184.15558359423,185.8383548595,187.50589742554,188.98815748424,190.84705739392,192.48793817839,194.02784168382,196.00771761937,197.74614527009,199.57149430335,201.28738678083,203.10796235375,204.87411854813,206.71247055903,207.88697323266,210.45347907504,212.31010032272,214.18657848213,216.10849194808,217.78635291041,220.11561871693,221.7461047815,223.87827886594,225.96410133985,228.00506741647,230.00260868294,232.05987709692,234.17153306667,236.2351968553,238.37706264012,240.41350645954,242.53480210477,244.7463656498,246.9445257794,249.1343885566,251.39820018833,253.59261982991,255.8608901325,258.1602935569,260.55167311827,262.84559834014,265.13121223875,267.51346943117,269.88835121433,272.23294113801,274.70778605744,277.18263097688],description:"Franck Jedrzejewski continued fractions approx. of 78-tet"},"fj-7tet":{frequencies:[261.6255653006,288.87822835275,318.85615771011,352.18826098158,388.70083987518,429.33426100611,473.88781639354,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 7-tet"},"fj-84tet":{frequencies:[97.99885899544,98.81551615374,99.63217331203,100.44883047033,101.26548762862,102.12512674262,102.98185182572,103.83212441184,104.68059938149,105.53723276432,106.39876119505,107.33208366167,108.20707347413,109.09306944775,109.9987192806,110.89344570537,111.83399203009,112.76581035092,113.67867643471,114.64017467391,115.58839778949,116.53918367025,117.50574088079,118.47623251688,119.43610940069,120.45693084856,121.43336875522,122.4985737443,123.47856233425,124.48503710232,125.50731064328,126.58185953578,127.62642101732,128.62350243151,129.74496824748,130.66514532725,131.9215409554,132.99845149381,134.10370178323,135.17083999371,136.34623860235,137.19840259362,138.59838629355,139.73911375276,140.87335980595,142.09834554339,143.22910160872,144.41937115117,145.59830479323,146.83218873215,148.0408295463,149.25980062382,150.498247743,151.74016876713,153.01576229113,154.29607586516,155.64524663982,156.7981743927,158.13452246991,159.45577056885,160.81864040277,162.07503603092,163.33143165907,164.81626285597,166.17197829662,167.54643634704,168.96354999214,170.33135015874,171.49800324202,173.20728566636,174.61614875551,176.03498745477,177.50736723702,178.95443816559,180.52421393897,181.99788099153,183.48722535316,183.74786061645,186.51395744293,188.05186455882,189.60648805639,191.21728584476,192.8364644749,194.36440367429,195.99771799088],description:"Franck Jedrzejewski continued fractions approx. of 84-tet"},"fj-8tet":{frequencies:[261.6255653006,285.40970760065,311.12229387098,339.29565499922,370.01329949656,403.52417698906,440.00663255101,479.64686971777,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 8-tet"},"fj-90tet":{frequencies:[69.29565774422,69.83283338565,70.37840239647,70.9071846685,71.46114704873,72.0131345185,72.59545097014,73.14541650779,73.69538204544,74.24534758309,74.83931036376,75.40998048636,76.00168913882,76.58993750677,77.19009976571,77.78084032514,78.38361285822,78.99704982841,79.59636362512,80.23707738804,80.84493403492,81.4527906818,82.08870225085,82.70772053342,83.37133822351,83.99473665966,84.69469279849,85.2869633775,85.97794571968,86.61957218027,87.31252875772,87.95218098305,88.65767976099,89.35492709123,90.08435506749,90.74431371267,91.43177063473,92.14038007748,92.85618137725,93.5491379547,94.28753430771,95.03404490636,95.75399979201,96.51895185802,97.25706350066,98.00385880968,98.74631228551,99.50145727375,100.29634673506,101.05616754365,101.84361819984,102.66023369514,103.42635484212,103.94348661633,105.02623126858,105.83336819117,106.60870422188,107.47897935838,108.27446522534,109.14066094715,110.05780935847,110.87305239075,111.72157064884,112.60544383436,113.39289449054,114.33783527796,115.19278170468,116.11704811194,116.93642244337,117.80261816517,118.79255613295,119.69249974002,120.62577459179,121.5942673625,122.52275717094,123.4722628897,124.41720367712,125.39214258478,126.36267000417,127.35418180019,128.32529211893,129.35189445588,130.27583655913,131.29703572589,132.29171023897,133.26088027735,134.39157865546,135.4415128637,136.49144707195,137.52522844622,138.59131548844],description:"Franck Jedrzejewski continued fractions approx. of 90-tet"},"fj-96tet":{frequencies:[48.99942949772,49.35708956705,49.70956615711,50.0646344868,50.44058918883,50.81422318282,51.17718191984,51.5338827476,51.91606220592,52.2660581309,52.67438671005,53.04896912563,53.45392308842,53.81904551389,54.21213476343,54.59936429746,54.9993596403,55.39065943221,55.80490581685,56.20522795327,56.62156297514,57.01751796098,57.44760699733,57.85474808165,58.26959183513,58.69162434342,59.11042288614,59.54361052887,59.98206024721,60.41025554513,60.85413018265,61.24928687215,61.73928116713,62.19158359326,62.61038213598,63.09515579158,63.54613512986,63.99925485416,64.47293354963,64.92424408448,65.33257266363,65.89578449693,66.3533941115,66.81740386053,67.32095530991,67.84536391992,68.30223505743,68.78766064103,69.29919314678,69.78706625433,70.30352927934,70.77695371893,71.27189745123,71.86582992999,72.36838818125,72.90159022832,73.41609436608,73.94459360565,74.47913283653,75.03037641838,75.5753912592,76.10549687944,76.66039776256,77.21122223883,77.82262331991,78.34524166943,78.94352530188,79.48796340741,80.07223844749,80.64489438166,81.23589627254,81.66571582953,82.40813142798,82.999033639,83.58726208435,84.21776944921,84.8067048999,85.43490271397,86.04777863014,86.69129834212,87.30807437776,87.94769397027,88.57589178434,89.20408959841,89.83228741249,90.46048522656,91.16172929808,91.87393030822,92.49330511929,93.09891604567,93.82869478287,94.4988997456,95.19889159557,95.91377688915,96.59887529551,97.28872233605,97.99885899544],description:"Franck Jedrzejewski continued fractions approx. of 96-tet"},"fj-9tet":{frequencies:[261.6255653006,282.55561052465,305.22982618403,329.64821227876,355.98232655655,384.51030051755,415.52295665389,448.50096908674,484.4917875937,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 9-tet"},flavel:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Bill Flavel's just tuning. Tuning List 6-5-98"},fogliano:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord with D-/D and Bb-/Bb"},fogliano1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.1, Musica theorica (1529)"},fogliano2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.2"},"fokker-h":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker-H 5-limit per.bl. synt.comma&small diesis, KNAW B71, 1968"},"fokker-ht":{frequencies:[261.6255653006,272.31140503734,279.67242998298,290.89121260742,305.67073265504,313.92185180985,326.66733279836,335.5942968927,349.22294231864,363.36596605244,376.74379448613,392.00137290182,407.92073675044,419.068143928,436.08264938702,447.85404100892,470.60848490625,489.4864783277,502.71810253025,523.2511306012],description:"Tempered version of Fokker-H per.bl. with better 6 tetrads, OdC"},"fokker-k":{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Fokker-K 5-limit per.bl. of 225/224 & 81/80 & 10976/10935, KNAW B71, 1968"},"fokker-l":{frequencies:[261.6255653006,271.31540105247,282.62020942966,291.99281841585,301.39265122629,313.95067836072,325.57848126297,339.14425131559,350.39138209902,363.36884069528,376.74081403286,390.69417751556,403.65087217807,420.46965851882,436.04260883433,454.2110508691,468.83301301868,484.38104661368,504.56359022259,523.2511306012],description:"Fokker-L 7-limit periodicity block 10976/10935 & 225/224 & 15625/15552, 1969"},"fokker-lt":{frequencies:[261.6255653006,272.07297743248,282.57734531132,291.77233860052,302.20925621315,313.90139500947,326.42149564976,339.58797317787,349.9403315901,363.14714144228,376.97081214523,391.19775936204,403.12344267272,419.38375585596,436.11106867998,452.98371913917,469.18728997524,484.4545223075,503.15865298196,523.2511306012],description:"Tempered version of Fokker-L per.bl. with more triads"},"fokker-m":{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker-M 7-limit periodicity block 81/80 & 225/224 & 1029/1024, KNAW B72, 1969"},"fokker-n":{frequencies:[261.6255653006,265.7783520514,273.37201925287,277.71125765371,286.15296204753,290.69507255622,299.00064605783,303.74668805875,313.95067836072,318.93402246168,328.62879235146,333.84512238879,343.38355445704,348.83408706747,358.80077526939,364.4960256705,375.57576268738,381.53728273004,392.4383479509,398.6675280771,410.05802887931,416.56688648057,429.2294430713,436.04260883433,450.69091522486,457.84473927605,470.92601754108,478.40103369253,492.94318852719,500.76768358318,515.07533168556,523.2511306012],description:"Fokker-N 7-limit periodicity block 81/80 & 2100875/2097152 & 1029/1024, 1969"},"fokker-n2":{frequencies:[261.6255653006,265.7783520514,272.52663052146,279.06726965397,286.15296204753,290.69507255622,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"Fokker-N different block shape"},"fokker-p":{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.31310567921,286.15296204753,290.69507255622,299.00064605783,306.17666156322,312.97980223949,320.35783506196,327.03195662575,334.88072358477,341.85740532612,350.39138209902,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.69417751556,400.44729382745,408.78994578219,418.60090448096,427.32175665765,437.39523080459,447.11400319927,457.84473927605,470.92601754108,478.40103369253,488.36772189445,500.76768358318,510.98743222773,523.2511306012],description:"Fokker-P 7-limit periodicity block 65625/65536 & 6144/6125 & 2401/2400, 1969"},"fokker-q":{frequencies:[261.6255653006,265.7783520514,269.10058145205,272.52663052146,274.70684356563,279.06726965397,284.76252005507,286.15296204753,290.69507255622,294.32876096318,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,318.93402246168,321.92208230347,327.03195662575,332.22294006425,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,381.53728273004,387.59343007496,392.4383479509,398.6675280771,401.85686830172,408.78994578219,412.06026534844,418.60090448096,425.24536328225,429.2294430713,436.04260883433,439.53094970501,448.50096908674,454.2110508691,457.84473927605,465.11211608996,470.92601754108,478.40103369253,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-Q 7-limit per.bl. 225/224 & 4000/3969 & 6144/6125, KNAW B72, 1969"},"fokker-r":{frequencies:[261.6255653006,264.95644634031,268.26840191956,272.52663052146,275.55899540689,279.06726965397,282.62020942966,287.04062021552,290.69507255622,294.32876096318,298.07600213285,301.80195215951,306.17666156322,310.07474405997,313.95067836072,317.94773560837,322.92069774245,327.03195662575,331.19555792538,334.88072358477,340.1962906258,344.44874425862,348.83408706747,353.19451315581,357.69120255941,363.36884069528,367.91095120397,372.08969287196,376.74081403286,382.72082695402,387.59343007496,392.4383479509,397.43466951046,402.40260287934,408.78994578219,413.33849311034,418.60090448096,423.93031414449,430.56093032327,436.04260883433,441.49314144476,447.11400319927,453.59505416773,459.26499234482,465.11211608996,470.92601754108,476.92160341255,484.38104661368,490.54793493862,496.79333688808,502.32108537715,510.29443593869,516.67311638793,523.2511306012],description:"Fokker-R 7-limit per.bl. 4375/4374 & 65625/65536 & 6144/6125, 1969"},"fokker-s":{frequencies:[261.6255653006,265.7783520514,269.10058145205,273.37201925287,273.85732695955,278.20426865732,282.55561052465,286.15296204753,290.69507255622,295.2417807931,299.00064605783,303.74668805875,304.28591884395,309.04519901133,313.95067836072,317.94773560837,322.92069774245,328.04642310345,332.22294006425,333.84512238879,338.01818641865,343.38355445704,348.83408706747,353.19451315581,358.80077526939,364.4960256705,369.13660007139,370.8542388136,375.57576268738,381.53728273004,387.59343007496,392.4383479509,398.6675280771,404.99558407833,410.05802887931,412.06026534844,417.30640298598,423.93031414449,430.56093032327,436.04260883433,442.96392008567,449.89223739901,450.69091522486,457.84473927605,463.67378109554,470.92601754108,478.40103369253,484.4917875937,492.06963465517,499.88026377668,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-S 7-limit per.bl. 4375/4374 & 323/322 & 64827/65536, 1969"},fokker_12:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Fokker's 7-limit 12-tone just scale"},fokker_12a:{frequencies:[261.6255653006,274.70684356563,293.02063313667,309.04519901133,327.03195662575,348.83408706747,367.91095120397,390.69417751556,412.06026534844,439.53094970501,465.11211608996,490.54793493862,523.2511306012],description:"Fokker's 7-limit periodicity block of 2048/2025 & 3969/4000 & 225/224"},fokker_12b:{frequencies:[261.6255653006,275.93321340298,293.02063313667,309.04519901133,332.22294006425,348.83408706747,367.91095120397,392.4383479509,412.06026534844,439.53094970501,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit semitone scale KNAW B72, 1969"},fokker_12c:{frequencies:[261.6255653006,275.93321340298,293.02063313667,311.45900631024,332.22294006425,348.83408706747,372.08969287196,392.4383479509,412.06026534844,442.96392008567,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit complementary semitone scale, KNAW B72, 1969"},fokker_12t:{frequencies:[261.6255653006,279.53180800295,293.53544531438,305.4439412874,326.66157401657,349.08351368992,366.63408494061,391.81886165309,419.06057467847,436.03416050506,457.88164994338,489.21957814041,523.2511306012],description:"Tempered version of fokker_12 with egalised 225/224, see also lumma"},fokker_12t2:{frequencies:[261.6255653006,279.53060025556,293.5302824794,305.44678713816,326.66192308793,349.10467831311,366.62831408589,391.81689264402,419.03095498017,436.04260883433,457.88067400285,489.21694446174,523.2511306012],description:"Another tempered version of fokker_12 with egalised 225/224"},fokker_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 3125/3072. KNAW B71, 1968"},fokker_22a:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 2109375/2097152 = semicomma"},fokker_31:{frequencies:[261.6255653006,265.7783520514,275.93321340298,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,315.35224388912,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,482.88312345521,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone just system"},fokker_31a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,476.92160341255,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone first alternate septimal tuning"},fokker_31b:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,480.53675259294,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone second alternate septimal tuning"},fokker_31c:{frequencies:[261.6255653006,269.46602871384,272.52663052146,279.06726965397,287.4304306281,294.32876096318,297.67175429757,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,383.2405741708,392.4383479509,396.89567239676,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,465.11211608996,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & 2109375/2097152 = semicomma"},fokker_31d:{frequencies:[261.6255653006,266.13928761861,272.52663052146,279.06726965397,287.4304306281,294.32876096318,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,399.20893142792,408.78994578219,418.60090448096,425.82286018978,436.04260883433,443.56547936435,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & W\xEF\xBF\xBDrschmidt's comma"},fokker_31d2:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Reduced version of fokker_31d by Prooijen expressibility"},fokker_41:{frequencies:[261.6255653006,264.89588486686,271.31540105247,274.70684356563,280.31310567921,283.8170195002,290.69507255622,294.32876096318,300.33547037059,305.22982618403,311.45900631024,313.95067836072,321.55899383997,325.57848126297,329.64821227876,336.37572681506,341.85740532612,348.83408706747,353.19451315581,361.75386806997,366.27579142084,373.75080757229,378.42269266694,387.59343007496,392.4383479509,400.44729382745,406.97310157871,415.27867508032,420.46965851882,425.72552925031,436.04260883433,439.53094970501,448.50096908674,455.80987376816,465.11211608996,470.92601754108,482.33849075995,488.36772189445,498.33441009638,504.56359022259,516.79124009995,523.2511306012],description:"Fokker's 7-limit supracomma per.bl. 10976/10935 & 225/224 & 496125/262144"},fokker_41a:{frequencies:[261.6255653006,264.59711493117,272.83435407277,275.93321340298,279.06726965397,287.4304306281,291.02331101095,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.77913876369,367.91095120397,372.08969287196,376.315896791,388.03108134794,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 34171875/33554432"},fokker_41b:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,287.4304306281,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,340.65828815182,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,383.2405741708,388.03108134794,392.4383479509,397.34382730029,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,454.2110508691,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.67978412536,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 3125/3072"},fokker_53:{frequencies:[261.6255653006,263.718569823,268.26840191956,272.52663052146,274.70684356563,279.06726965397,282.55561052465,286.15296204753,290.69507255622,294.32876096318,299.00064605783,300.46061014991,305.22982618403,309.04519901133,313.95067836072,317.87506184023,321.92208230347,327.03195662575,329.64821227876,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,357.69120255941,360.55273217989,366.27579142084,373.75080757229,376.74081403286,381.53728273004,386.30649876417,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.83341578697,429.2294430713,436.04260883433,439.53094970501,448.50096908674,450.69091522486,457.84473927605,465.11211608996,470.92601754108,476.92160341255,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker's 53-tone system, degree 37 has alternatives"},fokker_53a:{frequencies:[261.6255653006,264.89588486686,269.46602871384,272.52663052146,275.93321340298,279.38237857051,283.88190679319,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.42486507835,313.95067836072,319.36714514233,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,359.28803828513,363.36884069528,367.91095120397,372.50983809402,378.50920905758,383.2405741708,388.03108134794,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,425.82286018978,431.14564594215,436.04260883433,441.49314144476,447.01180571282,454.2110508691,459.88868900496,465.63729761752,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,504.67894541011,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & kleisma"},fokker_53b:{frequencies:[261.6255653006,264.59711493117,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,388.03108134794,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.35538388988,431.14564594215,436.04260883433,441.49314144476,446.50763144636,451.5790761492,459.88868900496,465.11211608996,470.92601754108,476.27480687611,485.03885168492,490.54793493862,496.11959049595,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & 2109375/2097152"},fokker_av:{frequencies:[261.6255653006,267.53238172257,273.57240048543,279.74894499065,286.06477437084,292.52336378682,299.12777114678,305.88111195206,312.78710209553,319.84901131344,327.07017092477,334.45455423048,342.00545991849,349.72704272607,357.62295854304,365.69693211485,373.95340598657,382.39606841888,391.02956482064,399.85798283974,408.88548711149,418.11704484248,427.5567798744,437.20988623572,447.08093432269,457.17458061119,467.49637893146,478.0512162812,488.84407170063,499.88088374606,511.16658268681,522.70737825664],description:"Fokker's suggestion for a shrinked octave by averaging approximations"},fokker_bosch:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Scale of "Naar Den Bosch toe", genus diatonicum cum septimis. 1/1=D'},fokker_sr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,296.75121990114,305.22982618403,315.35224388912,325.57848126297,336.37572681506,347.28371334717,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,446.50763144636,461.31528248922,474.80195184183,490.54793493862,506.45541529795,523.2511306012],description:"Fokker's 7-limit sruti scale, KNAW B72, 1969"},fokker_sr2:{frequencies:[261.6255653006,270.30192333353,279.06726965397,288.32205155576,296.75121990114,306.59245933664,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,372.08969287196,381.53728273004,394.1903048614,406.97310157871,420.46965851882,434.10464168396,448.50096908674,461.31528248922,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Fokker's complementary 7-limit sruti scale, KNAW B72, 1969"},fokker_sra:{frequencies:[261.6255653006,269.76956886185,278.7476190342,287.42460593148,296.37169586701,305.59729331129,315.11006948887,325.59707150921,336.43308557971,346.90573279191,357.7043774887,368.83916960349,381.11429755927,392.97780480816,406.05627704035,419.57000893919,433.5334812886,447.02871783796,460.94403787128,475.29252052682,490.08765232515,506.39798251136,523.2511306012],description:"Two-step approximation 9-13 to Fokker's 7-limit sruti scale"},fokker_srb:{frequencies:[261.6255653006,269.31534001393,278.64197723942,286.83190328195,296.76515515861,305.48776291796,316.06708432391,325.35701999957,336.62443200122,346.51859521924,358.51885197895,369.0565423573,381.83730669135,393.06038214356,406.67242132093,418.62545783369,433.12283887627,445.85331391262,461.29362042034,474.85209942927,491.29666030217,505.73699464332,523.2511306012],description:"Two-step maximally even approximation 11-11 to Fokker's 7-limit sruti scale"},fokker_uv:{frequencies:[220,220.05029721079,220.09166666667,220.14198483463,220.15668113546,220.24841308594,220.29876708984,220.3905582428,220.5253936656,220.68244897959,220.7744,220.82487425697,220.98214285714,221.03266460905,221.0236875,221.07421875,221.28224372864,221.41762468656,221.66763848397,221.71831695641,221.76,221.81069958848,222.01040039062,222.06115722656,222.40609622534,222.44790857143,222.4987654321,222.65722615577,222.75,222.80092592593,223.00151824951,223.05250167847,223.14544022083,223.18896568405,223.23999196793,223.44097959184,223.49206349206,223.58518518519,223.79557291667,223.88882107205,224.18534499514,224.23659907493,224.33003099121,224.48979591837,224.58333333333,224.79466029576,224.83692169189,224.88832473755,225.18617242815,225.28,225.33150434385,225.49198250729,225.5859375,225.67993164062,225.9788277551,226.03049186753,226.28571428571,226.4317558299,226.68743133545,227.08224,227.1341563786,227.29591836735,227.390625,227.44261188272,228.096,228.14814814815,229.16666666667,231,232.03125,233.6237037037,233.84353741497],description:"Table of Unison Vectors, Microsons and Minisons, from article KNAW, 1969"},foote:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,492.17459484008,523.2511306012],description:"Ed Foote, piano temperament. TL 9 Jun 1999, almost equal to Coleman"},forster:{frequencies:[261.6255653006,279.06726965397,283.42769574232,287.78812183066,299.00064605783,309.19384990071,319.76457981184,327.03195662575,336.37572681506,340.11323489078,343.38355445704,353.19451315581,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,387.59343007496,392.4383479509,398.6675280771,402.50086969323,406.97310157871,418.60090448096,428.11456140098,441.49314144476,442.75095666255,448.50096908674,457.84473927605,465.11211608996,483.00104363188,490.54793493862,507.3950357345,523.2511306012],description:"Cris Forster's Chrysalis tuning, XH 7+8"},fortuna11:{frequencies:[261.6255653006,274.70684356563,299.00064605783,305.22982618403,332.97799220076,343.38355445704,373.75080757229,398.6675280771,411.12588832951,448.50096908674,457.84473927605,498.33441009638,523.2511306012],description:"11-limit scale from Clem Fortuna"},fortuna_a1:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,320.24370022528,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,479.82340237272,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or G major, superset of Basandida, trivalent"},fortuna_a2:{frequencies:[261.6255653006,277.18263097687,285.30470202322,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,428.11456140098,440,466.16376151809,493.88330125613,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or F minor"},fortuna_bag:{frequencies:[261.6255653006,266.17557513191,291.58269109838,303.42373253797,318.96815495553,348.01136516401,359.18086083642,388.55281975337,398.8194592997,432.92801877123,462.35552488468,479.64686971777,523.2511306012],description:"Bagpipe tuning from Fortuna, try key of G with F natural"},fortuna_eth:{frequencies:[261.6255653006,280.31310567921,288.69027895239,305.7551787248,323.91736656265,346.02090894595,368.95913055213,385.17097113699,414.24047839262,422.62591317789,469.58434797544,484.00729580611,523.2511306012],description:"Ethiopian Tunings from Fortuna"},fortuna_sheng:{frequencies:[261.6255653006,275.29257244317,286.94416839421,312.81317590289,320.2657782128,348.83408706747,367.19377586049,382.62738925213,417.81993264424,433.74764773521,467.75479856774,484.77678276288,523.2511306012],description:"Sheng scale on naturals starting on d, from Fortuna"},"francis_r12-14p":{frequencies:[261.6255653006,277.2273508585,293.19140419912,311.27759533081,328.56574776048,349.51003591412,369.636465861,391.67937618637,415.43871422078,438.93656251816,466.46466724696,492.84862139436,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cornet-ton"},"francis_r12-2":{frequencies:[261.6255653006,277.2831963903,293.15801965318,311.35818177599,328.6319369554,349.45847225471,369.71092870521,391.50168688506,415.45657533448,438.80025285527,466.56783666625,492.94847466277,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R12-2, fifths beat ratios 0, 1, 2. C=279.331 Cornet-ton"},"francis_r2-1":{frequencies:[261.6255653006,276.41735337657,293.40958958006,310.96959408698,328.77281747949,349.18425877583,368.55655650762,391.91325216238,414.62612565656,439.06418506387,465.92902003736,492.10921220871,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R2-1, fifths beat ratios 0, 1, 2. C=249.072 Cammerton"},"francis_r2-14p":{frequencies:[261.6255653006,276.42350693124,293.47533146651,310.97644498676,328.88393162803,349.17189700163,368.56467609256,392.05867944486,414.6352601896,439.36162975058,466.01338145177,492.37181018521,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cammerton"},francis_seal:{frequencies:[261.6255653006,275.89934348748,293.01242796531,310.38672525582,327.92787107993,349.18506556371,367.865749003,391.38524198103,413.84896721463,437.93907827641,465.58008765101,490.83740312498,523.2511306012],description:"J. Charles Francis, Bach tuning interpretion as beats/sec. from seal"},francis_suppig:{frequencies:[261.6255653006,276.33536163417,293.13939342657,310.64213412049,328.58201670643,349.47038191026,368.45885450371,391.47500324588,414.51381656966,438.73106346722,465.97531289569,491.91879926026,523.2511306012],description:"J. Charles Francis, Suppig Calculus musicus, 5ths beat ratios 0, 1, 2."},efg333:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,523.2511306012],description:"Genus primum [333]"},efg333333333337:{frequencies:[261.6255653006,275.01702890535,279.38237857051,289.72987407313,294.32876096318,309.39415751852,314.30517589183,325.94610833227,331.11985608357,343.38355445704,353.59332287831,366.6893718738,372.50983809402,386.30649876417,392.4383479509,412.52554335802,419.07356785577,434.59481110969,441.49314144476,457.84473927605,471.45776383774,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:"Genus [333333333337]"},efg333333355:{frequencies:[261.6255653006,264.89588486686,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.42486507835,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,397.34382730029,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Genus [333333355]"},efg33335:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Genus [33335]"},efg3333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Genus [3333555]"},efg33335555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Genus bis-ultra-chromaticum [33335555]"},efg333355577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,278.20426865732,279.06726965397,281.68182201554,284.8811711051,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,317.94773560837,320.49131749323,321.92208230347,325.57848126297,327.03195662575,333.84512238879,343.38355445704,348.83408706747,352.10227751942,356.10146388137,357.69120255941,360.55273217989,363.36884069528,366.27579142084,367.91095120397,372.08969287196,375.57576268738,381.53728273004,392.4383479509,400.61414686654,402.40260287934,406.97310157871,408.78994578219,412.06026534844,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,445.12682985172,450.69091522486,457.84473927605,459.88868900496,465.11211608996,469.46970335923,470.92601754108,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Genus [333355577]"},efg33337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,386.30649876417,392.4383479509,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33337]"},efg3335:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonicum veterum correctum [3335]"},efg33355:{frequencies:[261.6255653006,272.52663052146,290.69507255622,310.07474405997,327.03195662575,348.83408706747,363.36884069528,387.59343007496,408.78994578219,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Genus diatonico-chromaticum hodiernum correctum [33355]"},efg333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonico-hyperchromaticum [333555]"},efg33355555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,319.36714514233,327.03195662575,340.65828815182,348.83408706747,359.28803828513,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,425.82286018978,436.04260883433,459.88868900496,470.92601754108,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"Genus [33355555]"},efg333555777:{frequencies:[261.6255653006,262.79353657426,267.07609791103,268.26840191956,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,281.68182201554,286.15296204753,294.32876096318,299.00064605783,300.46061014991,305.22982618403,306.59245933664,311.45900631024,312.97980223949,313.95067836072,318.93402246168,320.49131749323,321.92208230347,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,350.39138209902,352.10227751942,357.69120255941,358.80077526939,360.55273217989,366.27579142084,367.91095120397,373.75080757229,375.57576268738,381.53728273004,392.4383479509,398.6675280771,400.61414686654,402.40260287934,408.78994578219,412.06026534844,417.30640298598,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,448.50096908674,450.69091522486,457.84473927605,459.88868900496,467.18850946536,469.46970335923,470.92601754108,476.92160341255,478.40103369253,480.73697623985,488.36772189445,490.54793493862,498.33441009638,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333555777]"},efg333557:{frequencies:[261.6255653006,265.7783520514,279.06726965397,280.31310567921,290.69507255622,299.00064605783,313.95067836072,318.93402246168,327.03195662575,332.22294006425,348.83408706747,358.80077526939,372.08969287196,373.75080757229,392.4383479509,398.6675280771,418.60090448096,425.24536328225,436.04260883433,448.50096908674,465.11211608996,478.40103369253,490.54793493862,498.33441009638,523.2511306012],description:"Genus diatonico-enharmonicum [333557]"},efg33357:{frequencies:[261.6255653006,274.70684356563,279.06726965397,305.22982618403,313.95067836072,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,406.97310157871,418.60090448096,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Genus diatonico-enharmonicum [33357]"},efg3335711:{frequencies:[261.6255653006,265.58571790036,269.80136421624,275.93321340298,286.15296204753,294.32876096318,295.09524211152,303.52653474327,314.76825825228,321.92208230347,327.03195662575,331.98214737546,337.2517052703,343.38355445704,354.11429053382,359.73515228832,367.91095120397,379.40816842909,386.30649876417,392.4383479509,393.46032281536,404.70204632437,429.2294430713,441.49314144476,442.64286316727,449.66894036041,457.84473927605,472.15238737843,482.88312345521,490.54793493862,505.87755790546,515.07533168556,523.2511306012],description:"Genus [3 3 3 5 7 11], expanded hexany 1 3 5 7 9 11"},efg333577:{frequencies:[261.6255653006,267.07609791103,281.68182201554,286.15296204753,294.32876096318,300.46061014991,305.22982618403,321.92208230347,327.03195662575,333.84512238879,343.38355445704,348.83408706747,367.91095120397,375.57576268738,381.53728273004,392.4383479509,400.61414686654,429.2294430713,436.04260883433,450.69091522486,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333577]"},efg3337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus [3337]"},efg33377:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33377] Bi-enharmonicum simplex"},efg335:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Genus secundum [335]"},efg3355:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Genus chromaticum veterum correctum [3355]"},efg33555:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,367.91095120397,392.4383479509,408.78994578219,418.60090448096,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Genus bichromaticum [33555]"},efg335555577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,320.49131749323,327.03195662575,333.84512238879,334.88072358477,341.85740532612,343.38355445704,348.83408706747,357.69120255941,366.27579142084,375.57576268738,381.53728273004,384.58958099188,390.69417751556,392.4383479509,400.61414686654,408.78994578219,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,446.50763144636,457.84473927605,469.46970335923,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,502.32108537715,512.78610798918,523.2511306012],description:"Genus [335555577]"},efg33557:{frequencies:[261.6255653006,274.70684356563,279.06726965397,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,429.2294430713,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Genus chromatico-enharmonicum [33557]"},efg335577:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Genus chromaticum septimis triplex [335577]"},efg3357:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,343.38355445704,348.83408706747,381.53728273004,392.4383479509,429.2294430713,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum vocale [3357]"},efg33577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,523.2511306012],description:"Genus [33577]"},efg337:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus quintum [337]"},efg3377:{frequencies:[261.6255653006,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [3377]"},efg33777:{frequencies:[261.6255653006,267.07609791103,299.00064605783,300.46061014991,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777]"},efg33777a:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777] with comma discarded which disappears in 31-tET"},efg355:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Genus tertium [355]"},efg3555:{frequencies:[261.6255653006,306.59245933664,327.03195662575,383.2405741708,392.4383479509,408.78994578219,490.54793493862,510.98743222773,523.2511306012],description:"Genus enharmonicum veterum correctum [3555]"},efg35555:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,334.88072358477,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Genus [35555]"},efg35557:{frequencies:[261.6255653006,268.26840191956,274.70684356563,286.15296204753,306.59245933664,313.95067836072,327.03195662575,343.38355445704,357.69120255941,366.27579142084,392.4383479509,408.78994578219,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus [35557]"},efg3557:{frequencies:[261.6255653006,274.70684356563,286.15296204753,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum instrumentale [3557]"},efg35577:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,358.80077526939,366.27579142084,373.75080757229,392.4383479509,418.60090448096,429.2294430713,448.50096908674,457.84473927605,478.40103369253,490.54793493862,523.2511306012],description:"Genus [35577]"},efg357:{frequencies:[261.6255653006,286.15296204753,327.03195662575,343.38355445704,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus sextum [357] & 7-limit Octony, see ch.6 p.118"},efg35711:{frequencies:[261.6255653006,269.80136421624,286.15296204753,295.09524211152,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,392.4383479509,393.46032281536,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,523.2511306012],description:"Genus [3 5 7 11]"},efg3571113:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.01701053212,278.99913799634,286.15296204753,292.28481123426,295.09524211152,314.76825825228,318.85615771011,319.68651228748,327.03195662575,337.2517052703,343.38355445704,348.74892249543,359.73515228832,365.35601404283,371.99885066179,383.62381474497,392.4383479509,393.46032281536,398.57019713763,425.14154361347,429.2294430713,438.4272168514,449.66894036041,457.84473927605,464.99856332724,472.15238737843,479.52976843121,490.54793493862,511.49841965996,523.2511306012],description:"Genus [3 5 7 11 13]"},efg3577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,429.2294430713,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Genus [3577]"},efg35777:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,300.46061014991,327.03195662575,343.38355445704,373.75080757229,375.57576268738,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777]"},efg35777a:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777] with comma discarded which disappears in 31-tET"},efg377:{frequencies:[261.6255653006,300.46061014991,343.38355445704,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus octavum [377]"},efg3777:{frequencies:[261.6255653006,262.90303388117,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus [3777]"},efg37777:{frequencies:[261.6255653006,262.90303388117,299.00064605783,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777]"},efg37777a:{frequencies:[261.6255653006,299.00064605783,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777] with comma discarded that disappears in 31-tET"},efg555:{frequencies:[261.6255653006,327.03195662575,408.78994578219,510.98743222773,523.2511306012],description:"Genus quartum [555]"},efg55557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [55557]"},efg5557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,408.78994578219,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [5557]"},efg55577:{frequencies:[261.6255653006,286.15296204753,291.99281841585,299.00064605783,327.03195662575,357.69120255941,373.75080757229,408.78994578219,447.11400319927,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"Genus [55577]"},efg557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Genus septimum [557]"},efg5577:{frequencies:[261.6255653006,293.02063313667,320.49131749323,334.88072358477,366.27579142084,400.61414686654,418.60090448096,457.84473927605,512.78610798918,523.2511306012],description:"Genus [5577]"},efg55777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,320.49131749323,327.03195662575,366.27579142084,373.75080757229,400.61414686654,418.60090448096,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"Genus [55777]"},efg577:{frequencies:[261.6255653006,286.15296204753,327.03195662575,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus nonum [577]"},efg5777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus [5777]"},efg57777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,350.53737850823,373.75080757229,400.61414686654,438.17172313528,457.84473927605,500.76768358318,523.2511306012],description:"Genus [57777]"},efg777:{frequencies:[261.6255653006,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus decimum [777]"},efg77777:{frequencies:[261.6255653006,299.00064605783,341.71502406609,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus [77777]"},eikohole1:{frequencies:[261.6255653006,277.4816601673,305.22982618403,332.97799220076,436.04260883433,475.68284600109,523.2511306012],description:"First eikohole ball <6 9 13 17 20|-epimorphic"},eikohole2:{frequencies:[261.6255653006,266.38239376061,274.70684356563,285.40970760065,299.68019298069,313.95067836072,332.97799220076,348.83408706747,366.27579142084,380.54627680087,392.4383479509,399.57359064092,418.60090448096,428.11456140098,443.97065626768,470.92601754108,488.36772189445,499.46698830115,523.2511306012],description:"Second eikohole ball"},eikohole4:{frequencies:[261.6255653006,274.70684356563,279.79400733536,287.78812183066,305.22982618403,313.95067836072,319.76457981184,335.75280880244,348.83408706747,359.73515228832,366.27579142084,373.05867644715,383.71749577421,392.4383479509,406.97310157871,418.60090448096,419.69101100305,431.68218274599,447.67041173658,457.84473927605,470.92601754108,479.64686971777,488.36772189445,503.62921320365,523.2511306012],description:"Fourth eikohole ball"},eikohole5:{frequencies:[261.6255653006,266.38239376061,274.70684356563,279.06726965397,285.40970760065,287.78812183066,294.32876096318,295.98043751179,299.68019298069,305.22982618403,313.95067836072,321.08592105074,325.57848126297,332.97799220076,342.49164912079,348.83408706747,353.19451315581,355.17652501415,363.24871876447,366.27579142084,374.60024122586,380.54627680087,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Fifth eikohole ball"},eikohole6:{frequencies:[261.6255653006,266.38239376061,272.43653907335,274.70684356563,279.06726965397,285.40970760065,287.78812183066,293.02063313667,294.32876096318,295.98043751179,299.00064605783,299.68019298069,305.22982618403,310.77945938738,313.95067836072,317.12189733406,321.08592105074,325.57848126297,329.64821227876,332.97799220076,336.37572681506,342.49164912079,348.83408706747,349.6268918108,353.19451315581,355.17652501415,356.76213450082,363.24871876447,366.27579142084,374.60024122586,380.54627680087,383.71749577421,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,431.68218274599,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,484.33162501929,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Sixth eikohole ball"},eikosany:{frequencies:[261.6255653006,269.80136421624,274.70684356563,287.78812183066,294.32876096318,305.22982618403,323.76163705949,335.75280880244,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,412.06026534844,419.69101100305,431.68218274599,457.84473927605,470.92601754108,479.64686971777,503.62921320365,523.2511306012],description:"3)6 1.3.5.7.9.11 Eikosany (1.3.5 tonic)"},ekring1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,376.74081403286,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Single-tie circular mirroring of 3:4:5"},ekring2:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,384.42940207435,400.61414686654,448.50096908674,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Single-tie circular mirroring of 6:7:8"},ekring3:{frequencies:[261.6255653006,266.96486255163,299.00064605783,305.10270005901,327.03195662575,333.70607818954,341.71502406609,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,523.2511306012],description:"Single-tie circular mirroring of 4:5:7"},ekring4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,376.74081403286,392.4383479509,401.85686830172,436.04260883433,446.50763144636,465.11211608996,502.32108537715,523.2511306012],description:"Single-tie circular mirroring of 4:5:6"},ekring5:{frequencies:[261.6255653006,263.718569823,269.10058145205,305.22982618403,322.92069774245,366.27579142084,373.75080757229,376.74081403286,384.42940207435,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Single-tie circular mirroring of 3:5:7"},ekring5bp:{frequencies:[261.6255653006,282.55561052465,336.37572681506,363.28578496026,366.27579142084,395.57785473451,432.48307733364,512.78610798918,560.62621135843,605.4763082671,610.45965236807,659.29642455751,784.8766959018],description:"Single-tie BP circular mirroring of 3:5:7"},ekring6:{frequencies:[261.6255653006,288.32205155576,299.00064605783,336.37572681506,348.83408706747,384.42940207435,392.4383479509,406.97310157871,432.48307733364,465.11211608996,494.26637409559,512.57253609913,523.2511306012],description:"Single-tie circular mirroring of 6:7:9"},ekring7:{frequencies:[261.6255653006,266.96486255163,290.69507255622,296.62762505737,322.99452506247,336.37572681506,343.24053756638,406.97310157871,415.27867508032,432.48307733364,470.92601754108,480.53675259294,523.2511306012],description:"Single-tie circular mirroring of 5:7:9"},ekring7bp:{frequencies:[261.6255653006,311.45900631024,336.37572681506,400.44729382745,432.48307733364,436.04260883433,470.92601754108,514.86080634958,610.45965236807,667.41215637908,720.80512888941,726.73768139056,784.8766959018],description:"Single-tie BP circular mirroring of 5:7:9"},ellis:{frequencies:[261.6255653006,277.10015133873,293.57875905702,310.98767008297,329.52610437773,349.11112716429,369.96685849926,391.93834696391,415.15022554673,439.86813926913,465.98150356841,493.78915701915,523.2511306012],description:"Alexander John Ellis' imitation equal temperament (1875)"},ellis_24:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,294.32876096318,298.00787047521,306.59245933664,310.42486507835,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,397.34382730029,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,523.2511306012],description:"Ellis, from p.421 of Helmholtz, 24 tones of JI for 1 manual harmonium"},ellis_eb:{frequencies:[261.6255653006,277.21587437848,293.6537610003,311.19285946782,329.68548178616,349.2169654334,370.02116610622,391.93834696391,415.32381240723,439.98064151826,466.28928903228,494.02822100775,523.2511306012],description:"Ellis' new equal beating temperament for pianofortes (1885)"},ellis_harm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Just Harmonium"},ellis_mteb:{frequencies:[261.6255653006,273.31920907322,292.34465012884,313.05587813274,326.9349299255,350.18846153218,365.78692922515,391.15004079048,408.78346942429,437.23842445073,468.2723780569,489.17031487243,523.2511306012],description:"Ellis' equal beating meantone tuning (1885)"},enh14:{frequencies:[261.6255653006,267.70988077271,274.08392555301,348.83408706747,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"14/11 Enharmonic"},enh15:{frequencies:[261.6255653006,270.64713651786,280.31310567921,356.76213450082,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Tonos-15 Enharmonic"},enh15_inv:{frequencies:[261.6255653006,331.39238271409,340.11323489078,348.83408706747,383.71749577421,488.36772189445,505.80942624783,523.2511306012],description:"Inverted Enharmonic Tonos-15 Harmonia"},enh15_inv2:{frequencies:[261.6255653006,270.34641747729,279.06726965397,348.83408706747,383.71749577421,392.4383479509,401.15920012759,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-15"},enh17:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,404.33041910093,413.73345210327,423.58424858192,523.2511306012],description:"Tonos-17 Enharmonic"},enh17_con:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,378.52209447746,386.75083566176,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Enharmonic"},enh19:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,382.37582620857,389.87339142835,397.67085925691,523.2511306012],description:"Tonos-19 Enharmonic"},enh19_con:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,361.51896296083,368.21375857121,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Enharmonic"},enh2:{frequencies:[261.6255653006,266.71168334607,277.18263097687,349.22823143301,391.99543598175,399.61600264311,415.30469757995,523.2511306012],description:"1:2 Enharmonic. New genus 2 + 4 + 24 parts"},enh21:{frequencies:[261.6255653006,268.0066766494,274.70684356563,343.38355445704,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Tonos-21 Enharmonic"},enh21_inv:{frequencies:[261.6255653006,336.37572681506,342.60490694126,348.83408706747,398.6675280771,498.33441009638,510.79277034879,523.2511306012],description:"Inverted Enharmonic Tonos-21 Harmonia"},enh21_inv2:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,398.6675280771,411.12588832951,423.58424858192,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-21"},enh23:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,376.08675011961,388.21858076863,401.15920012759,523.2511306012],description:"Tonos-23 Enharmonic"},enh23_con:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,343.8507429665,353.96400011258,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Enharmonic"},enh25:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,408.78994578219,421.97671822677,436.04260883433,523.2511306012],description:"Tonos-25 Enharmonic"},enh25_con:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,373.75080757229,384.74347838324,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Enharmonic"},enh27:{frequencies:[261.6255653006,269.10058145205,277.01530443593,353.19451315581,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Tonos-27 Enharmonic"},enh27_inv:{frequencies:[261.6255653006,329.45441556372,339.14425131559,348.83408706747,387.59343007496,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Enharmonic Tonos-27 Harmonia"},enh27_inv2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,387.59343007496,397.28326582684,406.97310157871,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-27"},enh29:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,379.35706968587,389.08417403679,399.32323124828,523.2511306012],description:"Tonos-29 Enharmonic"},enh29_con:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,352.8902973822,361.29244731988,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Enharmonic"},enh31:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,368.65420565085,377.22755927063,386.2091678247,523.2511306012],description:"Tonos-31 Enharmonic. Tone 24 alternates with 23 as MESE or A"},enh31_con:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,360.46188996972,368.65420565085,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Enharmonic"},enh33:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"Tonos-33 Enharmonic"},enh33_con:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,367.38909169871,375.37581108347,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Enharmonic"},enh_invcon:{frequencies:[261.6255653006,283.42769574232,370.63621750918,381.53728273004,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Enharmonic Conjunct Phrygian Harmonia"},enh_mod:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Enharmonic After Wilson's Purvi Modulations, See page 111"},enh_perm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Permuted Enharmonic, After Wilson's Marwa Permutations, See page 110."},enn45ji:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.92069774245,329.64821227876,336.37572681506,339.14425131559,346.06556256693,348.83408706747,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,392.4383479509,395.57785473451,403.65087217807,406.97310157871,415.27867508032,423.93031414449,427.32175665765,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.78610798918,523.2511306012],description:"Detempered Ennealimma[45], Hahn reduced"},enn72synch:{frequencies:[195.99771799087,197.54967854522,199.11392792408,201.62391554947,203.22042578925,204.82957760946,207.41161549338,209.05395423619,211.68924370912,213.36545381699,215.05493658943,217.76587316352,219.49019959291,221.22817968434,224.01693484168,225.790758792,228.63703016722,230.44743589451,232.27217821307,235.20015301436,237.06252857463,238.93964952543,241.95167308427,243.86750892427,246.94165062806,248.89699839908,250.8678291188,254.03021536301,256.04169222048,258.06909647124,261.3222603528,263.39147750593,266.71173418544,268.8236265844,270.95224149283,274.36780754746,276.54032271274,278.73004041423,282.24365173996,284.47852987378,288.0646054292,290.34557537779,292.64460663558,296.33362372129,298.68006816723,301.0450940916,304.84000597616,307.25380610435,311.12698372207,313.59056753865,316.0736586482,320.05801564518,322.59231767928,325.14668697146,329.24541662461,331.85246687263,336.03572815421,338.69654584276,341.37843257302,345.68177614255,348.4189737305,351.17784515594,355.60471802638,358.42048803112,362.93866010991,365.81250216232,368.70910003837,373.35696816148,376.31330506793,379.29305101359,384.07434037944,387.11553797119,391.99543598174],description:"Poptimal synchonized beating ennealimmal tuning, TM 10-10-2005"},ennea45:{frequencies:[261.6255653006,267.02028728287,269.13615104392,274.68574138534,276.8623300691,282.57123430547,288.39787286736,290.68311542614,296.67700440585,299.02785016604,305.1938252949,311.48692526882,313.95512370264,320.42888174436,322.96795420876,329.62755691287,336.42448069667,339.09030198792,346.08234767737,348.824677577,356.01744619623,363.3585507705,366.23777597441,373.78960287068,376.751482929,384.52012478698,392.44893391322,395.5586690753,403.715093104,406.91412394911,415.30469757995,423.86828492968,427.22700928979,436.03643483576,439.49155400205,448.55387459245,457.80308677504,461.43068321685,470.94538888861,474.67712392136,484.46499932732,494.45467284607,498.37269363637,508.649143962,512.67967026301,523.2511306012],description:"Ennealimmal-45, in a 7-limit least-squares tuning, g=48.999, G.W. Smith"},epimore_enh:{frequencies:[261.6255653006,265.11390617127,279.06726965397,348.83408706747,392.4383479509,397.67085925691,418.60090448096,523.2511306012],description:"New Epimoric Enharmonic, Dorian mode of the 4th new Enharmonic on Hofmann's list"},eratos_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Dorian mode of Eratosthenes's Chromatic. same as Ptol. Intense Chromatic"},eratos_diat:{frequencies:[261.6255653006,275.62199471997,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Dorian mode of Eratosthenes's Diatonic, Pythagorean"},eratos_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Dorian mode of Eratosthenes's Enharmonic"},erlangen:{frequencies:[261.6255653006,275.62199471997,293.99679436797,310.07474405997,327.03195662575,348.83408706747,367.49599295996,392.4383479509,413.43299207996,440.99519155196,465.11211608996,490.54793493862,523.2511306012],description:"Anonymus: Pro clavichordiis faciendis, Erlangen 15th century"},erlangen2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Revised Erlangen"},erlich1:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,433.12277132725,461.29357245868,491.2966347616,523.2511306012],description:"Asymmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich10:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Canonical JI interpretation of the Pentachordal decatonic mode of 22-tET"},erlich10s1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Superparticular version of erlich10 using 50/49 decatonic comma"},erlich10s2:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Other superparticular version of erlich10 using 50/49 decatonic comma"},erlich11:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Canonical JI interpretation of the Symmetrical decatonic mode of 22-tET"},erlich11s1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Superparticular version of erlich11 using 50/49 decatonic comma"},erlich11s2:{frequencies:[261.6255653006,280.31310567921,305.22982618403,311.45900631024,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other superparticular version of erlich11 using 50/49 decatonic comma"},erlich12:{frequencies:[261.6255653006,267.01308914069,282.57123920205,288.39008844866,305.19382000629,311.47852302926,329.62755691287,336.41541160581,356.01745236555,363.34874301751,384.52011812375,392.4383479509,415.30469757995,423.85685859121,448.5538823653,457.7907297806,484.46499093218,494.44133512215,523.2511306012],description:"Two 9-tET scales 3/2 shifted, Paul Erlich, TL 5-12-2001"},erlich13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Just scale by Paul Erlich (2002)"},erlich2:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,476.05893615592,523.2511306012],description:"Asymmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich3:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,419.68935090103,461.29357245868,491.2966347616,523.2511306012],description:"Symmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich4:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,491.2966347616,523.2511306012],description:"Symmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich5:{frequencies:[261.6255653006,269.33066959279,278.10477655849,287.16472157287,295.62197660533,306.17967660611,315.19693888202,326.45372959864,335.05049156411,348.07025322573,357.23626005287,368.87410717392,380.89108570115,393.29954676976,406.11224388345,419.34234602259,433.00345117936,444.40607048653,461.67529188567,473.83294924974,490.75518955849,505.2083639382,523.2511306012],description:"Unequal 22-note compromise between decatonic & Indian srutis, Paul Erlich"},erlich6:{frequencies:[261.6255653006,274.70684356563,280.31310567921,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Scale of consonant tones against 1/1-3/2 drone. TL 23-9-1998"},erlich7:{frequencies:[261.6255653006,272.64118737561,277.98432293805,281.84855879469,292.47977325983,303.51199286577,307.73108663824,313.76190292287,326.97270111135,337.05955506058,340.85784563832,350.05627231138,365.1325261687,373.60234843661,378.13992750117,391.18115131013,406.9458559663,413.62886206386,420.42161880722,437.36472209676,452.44848028305,457.94368329907,468.56640608675,488.7466646507,501.93603498211,507.59230220159,523.2511306012],description:"Meantone-like circle of sinuoidally varying fifths, TL 08-12-99"},erlich8:{frequencies:[261.6255653006,263.902226729,277.18263097687,279.59466973861,293.66476791741,296.22023396764,311.12698372208,313.83440569119,329.62755691287,332.49597057,349.22823143301,352.26720984209,369.99442271164,373.21410818061,391.99543598175,395.40657391157,415.30469757995,418.91867232636,440,443.82887286778,466.16376151809,470.22031101449,493.88330125613,498.18106573801,523.2511306012],description:"Two 12-tET scales 15 cents shifted, Paul Erlich"},erlich9:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,302.70726563706,308.34441624714,319.76457981184,332.97799220076,345.34574619679,356.76213450082,369.97554688974,383.71749577421,396.40237166758,411.12588832951,428.11456140098,436.04260883433,452.23847716247,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"11-limit periodicity block, u.v.: 9801/9800 243/242 126/125 100/99"},erlich_bpf:{frequencies:[261.6255653006,269.93113880221,277.4816601673,282.55561052465,293.6613488068,301.87565226992,311.45900631024,319.76457981184,328.70904358281,336.37572681506,347.05432131712,356.76213450082,366.27579142084,377.90359432309,388.47432423422,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,591.67627844905,610.45965236807,624.69777837082,642.17184210147,659.29642455751,680.22646978156,699.2537836216,726.73768139056,740.02659899313,760.72664372021,784.8766959018],description:"Erlich's 39-tone Triple Bohlen-Pierce scale"},erlich_bpp:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.6613488068,299.68019298069,311.45900631024,319.76457981184,323.65460841914,336.37572681506,345.34574619679,356.76213450082,366.27579142084,380.67211882362,385.30310526088,400.44729382745,411.12588832951,419.55227017296,436.04260883433,447.67041173658,458.69417292962,470.92601754108,489.43558134466,499.46698830115,512.78610798918,528.59042785223,539.42434736524,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.27431887171,642.17184210147,659.29642455751,685.20981388252,699.2537836216,720.80512888941,740.02659899313,764.49028821604,784.8766959018],description:"Periodicity block for erlich_bpf, 1625/1617 1331/1323 275/273 245/243"},erlich_bpp2:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.92501780685,299.68019298069,311.45900631024,319.76457981184,326.02570445152,336.37572681506,345.34574619679,356.76213450082,366.27579142084,377.90359432309,385.30310526088,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.83932387181,642.17184210147,659.29642455751,685.20981388252,698.62650953896,726.73768139056,740.02659899313,764.49028821604,784.8766959018],description:"Improved shape for erlich_bpp"},erlich_bppe:{frequencies:[261.6255653006,269.03526454087,276.77324548748,284.61195549492,292.79795257063,301.09050901183,309.7504615497,318.52314490095,327.68449417797,337.10934179701,346.6568752383,356.62740568226,366.72772736951,377.27553481706,387.96064596243,399.11915372018,410.59860200806,422.22748385656,434.37157296247,446.67374500165,459.5209564409,472.53540627884,486.12644973042,499.89441151621,514.27235352402,529.06383329425,544.0478609495,559.69574261012,575.54731703113,592.10118472076,608.870542156,626.38285104305,644.39884822068,662.64936456684,681.70845767885,701.01565227402,721.17823493702,741.60327945962,762.93324174612,784.8766959018],description:"LS optimal 3:5:7:11:13 tempering, virtually equal, g=780.2702 cents"},erlich_bppm:{frequencies:[261.6255653006,269.3148593258,276.83859227209,284.97500405989,292.93622770824,301.54575630263,309.96990811138,319.08006614158,327.99406628962,337.15709295818,347.06629484351,356.76213450082,367.24753706379,377.50717076432,388.60227773252,399.45849178361,410.61798882758,422.6862401977,434.49464068244,447.26463523836,459.75967424319,473.27221959449,486.49381977384,500.79209531182,514.78250488433,529.16376146212,544.7161244152,559.93362036345,576.39032675477,592.49269103014,609.9063234692,626.94500947499,644.45969779399,663.40066444061,681.93379843592,701.97614206495,721.5869464624,742.79471409673,763.54584931731,784.8766959018],description:"MM optimal 3:5:7:11:13 tempering, g=780.352 cents"},erlich_paj:{frequencies:[261.6255653006,269.74106841426,278.59741216196,287.23937405609,296.67040683594,305.87298460253,315.91563888094,325.71519477697,336.4093235789,346.84458402385,358.23265591403,369.99442271164,381.47147728046,393.99623872149,406.21781843768,419.55531290213,432.56972318844,446.77218107119,460.63084592459,475.75462791404,490.51231476219,506.61748047856,523.2511306012],description:"Erlich's Pajara or Twintone, with RMS optimal generator"},erlich_paj2:{frequencies:[261.6255653006,270.25447814202,278.68577354399,287.87753105276,296.85845221806,306.64959036092,316.21614384055,326.645747324,336.83612131731,347.94582350257,358.80069640371,369.99442271164,382.1975482805,394.12120058634,407.1203087173,419.82124923186,433.66800958456,447.19715926063,461.9468459571,476.35821106408,492.06970256841,507.42081104304,523.2511306012],description:"Erlich's Pajara or Twintone with minimax optimal generator"},escapade:{frequencies:[261.6255653006,270.11362843741,278.8770761192,287.9248395776,297.26614463769,306.91051483225,316.86778450163,327.1481015562,337.76194863153,348.72014864112,360.03386958939,371.71464785337,383.77439429365,392.56657056143,405.30282760495,418.45229174958,432.02837124332,446.04490958069,460.51619165905,475.45697355792,490.88248752006,506.80846290374,523.2511306012],description:"Escapade temperament, g=55.275493, 5-limit"},"et-mix6":{frequencies:[261.6255653006,293.66476791741,300.52885648597,311.12698372208,329.62755691287,345.21700307457,369.99442271164,396.55020354877,415.30469757995,440,455.51656649021,466.16376151809,523.2511306012],description:"Mix of equal temperaments from 1-6 (= 4-6)"},euler:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Euler's Monochord (a mode of Ellis's duodene) (1739), genus [33355]"},euler20:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,489.33808574423,509.07699553894,513.57043963064,523.2511306012],description:"Genus [3333555] tempered by 225/224-planar"},euler24:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,308.1508239679,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,384.70789368407,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,480.28481865546,489.33808574423,493.65730140218,509.07699553894,513.57043963064,523.2511306012],description:"Genus [33333555] tempered by 225/224-planar"},euler_diat:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Euler's genus diatonicum veterum correctum"},euler_enh:{frequencies:[261.6255653006,267.90457886781,275.62199471997,348.83408706747,392.4383479509,401.85686830172,413.43299207996,523.2511306012],description:"Euler's Old Enharmonic, From Tentamen Novae Theoriae Musicae"},euler_gm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,348.83408706747,361.75386806997,372.08969287196,385.87079260796,523.2511306012],description:"Euler's Genus Musicum, Octony based on Archytas's Enharmonic"},exptriad2:{frequencies:[261.6255653006,306.59245933664,327.03195662575,367.91095120397,392.4383479509,459.88868900496,490.54793493862,523.2511306012],description:"Two times expanded major triad"},exptriad3:{frequencies:[261.6255653006,269.46602871384,275.93321340298,279.06726965397,287.4304306281,294.32876096318,297.67175429757,303.14928230307,306.59245933664,313.95067836072,323.35923445661,327.03195662575,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,378.93660287884,383.2405741708,392.4383479509,404.19904307077,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,490.54793493862,505.24880383846,517.37477513058,523.2511306012],description:"Three times expanded major triad"},iivv17:{frequencies:[261.6255653006,269.80136421624,277.97716313189,283.42769574232,294.32876096318,305.22982618403,318.85615771011,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,370.63621750918,392.4383479509,416.96574469783,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"17-limit IIVV"},"indian-ayyar":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Carnatic sruti system, C.Subrahmanya Ayyar, 1976. alt:21/20 25/16 63/40 40/21"},"indian-dk":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,465.11211608996,523.2511306012],description:"Raga Darbari Kanada"},"indian-ellis":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,367.68998366571,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Ellis's Indian Chromatic, theoretical #74 of App.XX, p.517 of Helmholtz"},"indian-hahn":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Indian shrutis Paul Hahn proposal"},"indian-hrdaya1":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,328.55303549378,348.83408706747,375.07381928051,392.4383479509,428.11456140098,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Bhatkande's interpretation"},"indian-hrdaya2":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,330.47439827444,348.83408706747,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Levy's interpretation"},"indian-invrot":{frequencies:[261.6255653006,267.90457886781,279.06726965397,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Inverted and rotated North Indian gamut"},"indian-magrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Ma-grama (Sa Ri Ga Ma Pa Dha Ni Sa)"},"indian-newbengali":{frequencies:[261.6255653006,269.13627541126,277.02257024271,285.46954808622,294.32876096318,303.84527498141,313.95067836072,324.71413568646,336.35938765066,348.83408706747,358.01090280364,367.91095120397,377.98706287655,388.6137256405,400.23209335925,412.19781491431,425.25755219187,438.98455767189,453.41648894489,469.13512554326,485.39868175205,503.9696508909,523.2511306012],description:"Modern Bengali scale,S.M. Tagore: The mus. scales of the Hindus,Calcutta 1884"},"indian-old2ellis":{frequencies:[261.6255653006,270.06509966514,277.97716313189,285.40970760065,294.32876096318,305.22982618403,316.13089140489,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,415.52295665389,428.11456140098,441.49314144476,457.84473927605,474.19633710734,490.54793493862,505.80942624783,523.2511306012],description:"Ellis Old Indian Chrom2, Helmholtz, p. 517. This is a 4 cent appr. to #73"},"indian-oldellis":{frequencies:[261.6255653006,269.44737349144,277.4816601673,285.79952600623,294.32876096318,304.84150796353,315.71315096976,327.03195662575,337.72216249472,348.83408706747,359.25382662183,369.99442271164,381.0561299374,392.4383479509,404.18156579781,416.22249025095,428.71043212875,441.49314144476,457.27414749797,473.58203588493,490.54793493862,506.59641128799,523.2511306012],description:"Ellis Old Indian Chromatic, Helmholtz, p. 517. This is a 0.5 cent appr. to #73"},"indian-raja":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:"A folk scale from Rajasthan, India"},"indian-sagrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Sa-grama (Sa Ri Ga Ma Pa Dha Ni Sa), inverse of Didymus' diatonic"},"indian-srutiharm":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"B. Chaitanya Deva's sruti harmonium. The Music of India, 1981, p. 109"},"indian-srutivina":{frequencies:[261.6255653006,268.56758546278,278.98051393788,288.52577197574,297.52863491406,305.33829130574,314.01573591759,327.57422802312,336.57725592546,350.35262131413,358.2707318239,366.40588882483,378.77125721528,394.82459335461,403.28512412878,416.95215854696,428.77531684666,444.28620821491,453.93981227417,469.5594057965,487.34812384257,504.37765306036,529.32520658991],description:"Raja S.M. Tagore's sruti vina, measured by Ellis and Hipkins, 1886. 1/1=241.2"},"indian-srutivina2":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"S. Ramanathan's sruti vina, 1973. In B.C. Deva, The Music of India, p. 110"},"indian-vina":{frequencies:[261.6255653006,276.70272600503,292.81785438923,313.29104303136,329.05685050583,352.26720984209,369.14054089803,390.18821123181,411.0090584005,435.70052664441,465.35666077712,491.60634075178,525.37110555681],description:"Observed South Indian tuning of a vina, Ellis"},"indian-vina2":{frequencies:[261.6255653006,277.02257024271,292.81785438923,308.97787266236,326.21810583671,344.81842302716,363.84824628932,386.37547528213,409.11417474979,432.19134773437,455.25352578019,480.93331155807,507.76825077597,539.82938999168,571.59905201246,602.44805673853,637.90290877605,678.5727631795,715.19510239543,756.4109196702,799.53998816902,846.10508618474,890.73947019126,943.16064703194,1001.55531043729],description:"Observed tuning of old vina in Tanjore Palace, Ellis and Hipkins. 1/1=210.7 Hz"},"indian-vina3":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Tuning of K.S. Subramanian's vina (1983)"},indian:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale"},indian2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale with tritone 64/45 schisma lower (Mr.Devarajan, Madurai)"},indian2_sm:{frequencies:[261.6255653006,275.80107697063,279.12844116922,290.7446524607,294.25230137258,310.19560923413,313.9379197281,327.00276442799,330.9478443499,348.87940629173,353.08841191408,367.78254402461,372.21960384438,392.38737044642,413.64787586584,418.63827382983,436.06032987759,441.3211172644,465.23297251763,470.84571179248,490.44043044945,496.35728163707,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 289-equal (schismic) temperament"},indian3:{frequencies:[261.6255653006,270.06509966514,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"Indian shruti scale with 32/31 and 31/16 and tritone schisma lower"},indian4:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"Indian shruti scale according to Firoze Framjee: Text book of Indian music"},indian5:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"23 Shrutis, Amit Mitra, 1/1 no. 12:2, Table C."},indian6:{frequencies:[146.8323839587,148.66778875818,150.35636117371,151.0621234143,152.23581568838,152.95039995698,154.68761437624,154.86227995644,156.62120955595,158.5789746754,159.32333328852,163.14709328744,165.18643195354,167.06262352634,169.15090632042,169.94488884109,172.0691999516,174.02356617327,176.19886075044,178.40134650982,179.23874994958,180.42763340845,181.27454809716,183.54047994838,185.62513725149,185.83473594773,187.94545146714,188.82765426788,190.29476961048,191.18799994622,193.3595179703,193.57784994555,195.77651194493,198.22371834425,200.47514823161,202.98108758451,203.93386660931,206.48303994192,208.82827940793,209.0640779412,211.43863290053,212.43111105136,214.08161581178,215.0864999395,217.52945771659,220.24857593805,223.00168313728,225.53454176056,226.59318512145,228.35372353257,229.42559993547,232.03142156437,232.29341993466,234.93181433392,237.86846201309,238.98499993278,240.57017787793,241.69939746288,244.72063993117,247.77964793031,250.59393528951,253.72635948063,254.91733326163,258.1037999274,261.03534925991,264.29829112566,267.60201976473,270.64145011268,271.91182214574,275.31071992256,278.43770587724,278.75210392159,281.9181772007,283.24148140181,285.44215441571,286.78199991934,290.03927695546,293.6647679174],description:"Shrutis calculated by generation method, Amit Mitra, 1/1 no. 12:2, Table B."},indian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"North Indian Gamut, modern Hindustani gamut out of 22 or more shrutis"},indian_12c:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"Carnatic gamut. Kuppuswami: Carnatic music and the Tamils, p. v"},indian_a:{frequencies:[261.6255653006,290.79521372391,318.76727400207,355.94891173479,388.6137256405,432.69092326853,486.52148746092,523.2511306012],description:"One observed indian mode"},indian_b:{frequencies:[261.6255653006,290.79521372391,305.95868600104,356.15457528086,388.83826257328,432.94092754357,461.60862817266,523.2511306012],description:"Observed Indian mode"},indian_c:{frequencies:[261.6255653006,278.94941459687,313.65318017499,356.15457528086,388.83826257328,422.07621250312,470.76384471612,523.2511306012],description:"Observed Indian mode"},indian_d:{frequencies:[261.6255653006,289.28740724512,320.24370022528,344.61930560862,391.31674786192,442.03793673691,485.39868175205,523.2511306012],description:"Indian D (Ellis, correct)"},indian_e:{frequencies:[261.6255653006,275.58617649731,323.21709932123,347.81902735497,393.58362272115,410.77171881178,488.21056770985,523.2511306012],description:"Observed Indian mode"},indian_g:{frequencies:[261.6255653006,275.48458755707,279.57748987366,290.07776015425,294.38747470873,309.98198497505,314.58741860623,326.40257913196,331.25197518754,348.79929894143,353.98144532328,367.27615246113,372.73281132023,392.47748849606,413.26809526256,419.40806105693,435.16003737285,441.62525396027,465.0193523796,471.92819182319,489.65270022124,496.92751979948,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 94-et (garibaldi) temperament"},indian_rat:{frequencies:[261.6255653006,269.55361273395,277.4816601673,285.40970760065,294.32876096318,302.93486508491,315.75499260417,327.03195662575,337.58137458142,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,416.22249025095,428.77523202043,441.49314144476,457.84473927605,473.41768959156,490.54793493862,506.37206187213,523.2511306012],description:"Indian Raga, From Fortuna, after Helmholtz, ratios by JC"},indian_rot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,510.98743222773,523.2511306012],description:"Rotated North Indian Gamut"},ionic:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ancient greek Ionic"},iran_diat:{frequencies:[261.6255653006,297.21429859784,337.6441411202,347.13660997509,394.35734781054,448.00148789644,460.59652406882,523.2511306012],description:"Iranian Diatonic from Dariush Anooshfar, Safi-a-ddin Armavi's scale from 125 ET"},iraq:{frequencies:[261.6255653006,290.3675288125,326.6631048533,348.83408706747,387.1561215731,435.55129321875,465.11211608996,516.20736538157,523.2511306012],description:"Iraq 8-tone scale, Ellis"},isfahan_5:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,523.2511306012],description:"Isfahan (IG #2, DF #8), from Rouanet"},islamic:{frequencies:[261.6255653006,283.42769574232,305.22982618403,330.6656450327,348.83408706747,523.2511306012],description:"Islamic Genus (DF#7), from Rouanet"},italian:{frequencies:[261.6255653006,274.68983337859,292.34127285051,309.02606224197,326.6631048533,348.44038788768,366.66693712906,391.11111150212,411.56972129721,437.02884834934,464.06284405662,489.44164088633,523.2511306012],description:"Italian organ temperament, G.C. Klop (1974), 1/12 P.comma, also d'Alembert/Rousseau (1752/67)"},iter1:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,631.61998662719],description:"McLaren style, IE= 2.414214, PD=5, SD=0"},iter10:{frequencies:[261.6255653006,277.06070189651,293.38358189778,297.59908052943,301.91391280887,310.68035879446,328.97472072452,338.5155215149,348.35227203008,368.89204707385,413.65123162392,438.0707139917,463.89070822207,520.1365405381,535.27989222422,550.79066379074,583.29634230953,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter11:{frequencies:[261.6255653006,278.87608544381,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #2"},iter12:{frequencies:[261.6255653006,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #4"},iter13:{frequencies:[261.6255653006,297.26403435806,337.75715313333,383.76621672426,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #6"},iter14:{frequencies:[261.6255653006,280.22072913446,300.13755324878,344.3186075731,368.79121945838,395.0032340925,453.14877154631,519.85349135637,596.37732215892,638.76512932755,684.16567043124,784.8766959018],description:"Binary Divided 3/1 Scale #2"},iter15:{frequencies:[261.6255653006,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale"},iter16:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale 4+2"},iter17:{frequencies:[261.6255653006,278.49896488475,296.46060526524,301.12918013362,305.87127435301,315.58067012184,335.93387506143,346.5975621448,357.59974896504,380.66295170881,431.34763334053,459.16716607109,488.78090454553,553.8613271114,571.44277158458,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #2"},iter18:{frequencies:[261.6255653006,296.46060526524,335.93387506143,357.59974896504,380.66295170881,431.34763334053,488.78090454553,553.8613271114,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #4"},iter19:{frequencies:[261.6255653006,322.51878830959,331.06584352035,339.83940187549,358.09020513941,397.58488163802,418.936859706,441.43552612833,490.12256936272,604.19836236377,670.83693141722,744.82523718317,918.18295398723,967.49323514067,1019.45167961503,1131.88958971281,1395.33634826987],description:"Binary Kidjel Ratio scale #2, IE=16/3"},iter2:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,466.76379263857,529.06503205232,631.63886479716],description:"Iterated 1 + SQR(2) Scale, IE=2.414214, PD=5, SD=1"},iter20:{frequencies:[261.6255653006,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale #2"},iter21:{frequencies:[261.6255653006,265.58958666715,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale 5+2 #2"},iter22:{frequencies:[261.6255653006,301.8727519909,307.3207469799,312.86706369289,324.26179396336,348.311367392,360.99698978488,374.14462916403,401.89387036212,463.7192413329,498.11197631533,535.05552246568,617.36582527423,639.85050556571,663.15408964479,712.33833913185,821.92095613931],description:"Binary PI Scale #2"},iter23:{frequencies:[261.6255653006,280.22072913446,282.63618845904,285.07246866924,290.00821285991,300.13755151512,305.33413252207,310.62068712289,321.46997343155,344.3186075731,356.34488692223,368.79121945838,395.00323181087,401.84231702948,408.7998141568,423.07827792492,453.14877154631],description:"Binary SQR(3) Scale #2"},iter24:{frequencies:[261.6255653006,289.31157243481,292.97226416221,296.67927674571,304.23460945445,319.92739457651,328.07477344771,336.42963427227,353.78307729046,391.22147055517,411.40114203819,432.62170761687,478.4030399831,490.58621022536,503.07964402145,529.02909391167,585.01254970054],description:"Binary SQR(5) Scale #2"},iter25:{frequencies:[261.6255653006,295.4600775297,299.98610231105,304.581459303,313.98443628203,333.67021037701,343.97120738708,354.59021667251,376.82183739983,425.55401329039,452.23482674104,480.58843796626,542.7401414615,559.49550492793,576.76813324226,612.92956630767,692.19618110881],description:"Binary SQR(7) Scale #2"},iter26:{frequencies:[261.6255653006,266.56189672137,275.04226095704,276.16031892841,278.32506946872,283.8915708581,299.68019298069,302.93486508491,309.19384990071,326.13597866239,377.90359432309,389.87339142835,411.92110281371,477.08191319521,486.74523776856,503.12608711654,552.32063785682,711.29450566101],description:"E Scale"},iter27:{frequencies:[261.6255653006,264.53251602616,264.59858308811,264.97973921471,266.91093025617,277.4816601673,277.93638607994,279.98525409362,291.05844139692,358.0999925052,361.3330282979,375.61956161015,462.09190754392,465.48964215821,480.4396744611,568.53247844169,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=3"},iter28:{frequencies:[261.6255653006,265.20947715403,272.47639519786,295.60291144354,377.3445653374,784.8766959018],description:"McLaren 3-Division Scale"},iter29:{frequencies:[261.6255653006,264.46932144517,267.35459227799,273.20191774753,285.29018929764,311.12229387098,370.01329949656,523.2511306012],description:"Iterated Binary Division of the Octave, IE=2, PD=6, SD=0"},iter3:{frequencies:[261.6255653006,291.72408166262,314.40967058055,328.65360269166,338.82655178274,356.71329642628,384.4758307461,404.77917650282,417.30358762823,426.15298265459,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter30:{frequencies:[261.6255653006,263.40533105094,266.47048317654,274.97380842818,299.54231389489,377.98194879009,711.1793535636],description:"Iterated E-scale, IE= 2.71828, PD=5, SD=0"},iter31:{frequencies:[261.6255653006,264.53251602616,277.4816601673,358.0999925052,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=0"},iter32:{frequencies:[261.6255653006,264.32273607689,265.98599138894,268.74462830198,273.21657135822,280.65287914064,293.09931751721,314.43072526953,352.25402909754,423.30428543018],description:"Iterated PHI scale, IE= 1.61803339, PD=8, SD=0"},iter33:{frequencies:[261.6255653006,264.70351312767,271.46111286829,293.79264300149,376.62581378438,821.87425059077],description:"Iterated PI Scale, IE= 3.14159, PD=4, SD=0"},iter34:{frequencies:[261.6255653006,263.41752122732,264.70351312767,267.00143308075,271.01725226011,278.10591587072,290.81088732616,314.21361862735,359.24704489038,453.1728541814],description:"Iterated SQR3 Scale, IE= 1.73205, PD=8, SD=0"},iter35:{frequencies:[261.6255653006,263.32443260775,265.41724016003,270.17542037578,281.14986121856,307.30621955943,374.94109676838,585.0238335194],description:"Iterated SQR 5 Scale, IE= 2.23607, PD=6, SD=0"},iter36:{frequencies:[261.6255653006,263.60757715894,266.85807660661,275.72514666411,300.63990398578,377.90359432309,692.2176415245],description:"Iterated SQR 7 Scale, IE= 2.64575, PD=5, SD=0"},iter37:{frequencies:[261.6255653006,295.02271214403,313.28742377221,326.0879260201,332.68289475257,342.82647426905,364.05069339959,375.15068445646,382.73792346942,386.58911684499,392.4383479509],description:"Iterated 3/2 scale, IE=3/2, PD=3, SD=2"},iter4:{frequencies:[261.6255653006,267.82522324611,277.41331493081,278.97828136646,281.37089098366,287.35922746131,302.93486508491,307.2300216374,313.76772341995,330.79094463294,377.42704502382,390.96854140427,412.14986314478,470.26367433779,480.2976795817,495.79659597089,536.59937372878,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter5:{frequencies:[261.6255653006,292.148547919,314.45380444784,328.62723446295,338.43307070995,355.46951807147,382.59222452561,401.8431885336,413.81298563886,422.03832066739,436.04260883433],description:"Iterated 5/3 Scale, analog of Hexachord, IE=5/3, PD=3, SD=2"},iter6:{frequencies:[261.6255653006,276.4345595629,292.10621368514,326.13597866239,344.58001283494,364.1180547998,406.52587839016,453.84026633778,506.69255051888,535.41976154541,565.73733351326,631.63886479716],description:"Iterated binary 1+SQR(2) scale, IE= 2.414214, G=2, PD=4, SD=2"},iter7:{frequencies:[261.6255653006,279.30296836145,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter8:{frequencies:[261.6255653006,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=2"},iter9:{frequencies:[261.6255653006,298.19688088025,339.84351781315,387.34174602946,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=12"},ives:{frequencies:[261.6255653006,302.26980244078,349.22823143301,375.37611551499,433.69180740168,501.06699929295,578.9091089468,622.25396744417],description:`Charles Ives' stretched major scale, "Scrapbook" pp. 108-110`},ives2a:{frequencies:[261.6255653006,303.72829164664,352.60650301302,379.92060676531,441.0602510811,512.03893786214,594.44004134205,640.48740045057],description:"Speculation by Joe Monzo for Ives' other stretched scale"},ives2b:{frequencies:[261.6255653006,300.81831683262,345.88232658126,370.885984045,426.44646246473,490.3301667422,563.78395315523,604.53960488156],description:"Alt. speculation by Joe Monzo for Ives' other stretched scale"},abell1:{frequencies:[261.6255653006,273.68256372566,292.6487650037,305.95868600104,327.16162250699,342.04121835587,365.95599773772,391.31674786192,409.35055662695,437.71854962063,457.62637091093,489.33987776603,523.2511306012],description:"Ross Abell's French Baroque Meantone 1, a'=520"},abell2:{frequencies:[261.6255653006,275.90473010106,294.68429813772,308.79945157961,330.00857764288,348.01999353916,369.14054089803,392.90218486657,412.67427966689,441.52756934418,463.21121723949,493.59810545034,523.2511306012],description:"Ross Abell's French Baroque Meantone 2, a'=520"},abell3:{frequencies:[261.6255653006,275.90505521365,293.49576926806,308.08682543008,329.24698751194,350.03632176331,368.71497179837,392.44893164635,412.28324979826,440.25465969448,462.14293627657,492.7440237889,523.2511306012],description:"Ross Abell's French Baroque Meantone 3, a' = 520"},abell4:{frequencies:[261.6255653006,274.95017225036,292.98704147282,308.2648062752,328.10786809908,346.01554587335,367.43868454848,391.54284657258,411.48414905414,438.47771564426,461.87534079415,491.0387427573,523.2511306012],description:"Ross Abell's French Baroque Meantone 4, a'=520"},abell5:{frequencies:[261.6255653006,277.98432293805,295.87822452474,311.66659310186,331.15428443044,349.43001184052,371.27895029721,395.6350356808,416.26536455926,442.29334161825,466.70260620202,495.88429116026,523.2511306012],description:"Ross Abell's French Baroque Meantone 5, a'=520"},abell6:{frequencies:[261.6255653006,277.02257024271,293.32570896007,311.66659310186,330.00857764288,349.43001184052,369.99442271164,391.76907592069,414.82519580403,440.76312290327,466.70260620202,494.16866184506,523.2511306012],description:"Ross Abell's French Baroque Meantone 6, a'=520"},abell7:{frequencies:[261.6255653006,277.50302994288,294.34406205295,310.05056613125,328.86683469969,348.82502010853,369.99442271164,392.44854854484,416.26536455926,438.47771564426,465.08793784701,493.31307433255,523.2511306012],description:"Ross Abell's French Baroque Meantone 7, a'=520"},abell8:{frequencies:[261.6255653006,277.82379926216,294.68429813772,311.48661940174,329.62755691287,350.03605285217,371.27895029721,392.44854854484,415.30469757995,441.01779121056,467.78216486233,494.45418731234,523.2511306012],description:"Ross Abell's French Baroque Meantone 8, a'=520"},abell9:{frequencies:[261.6255653006,276.06414495892,293.32570896007,309.69258848748,330.19925313612,348.62358905703,369.14054089803,391.99543598175,412.67427966689,440,464.55095742407,493.88330125613,523.2511306012],description:"Ross Abell's French Baroque Meantone 9, a'=520"},"ad-dik":{frequencies:[261.6255653006,269.0348830679,275.62199471997,285.40970760065,294.32876096318,300.46061014991,310.07474405997,321.08592105074,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.49599295996,378.42269266694,392.4383479509,400.61414686654,413.43299207996,428.11456140098,441.49314144476,453.48431318771,470.92601754108,479.64686971777,490.54793493862,508.71637697339,523.2511306012],description:"Amin Ad-Dik, d'Erlanger, vol 5, p.42"},adjeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Soeroepan adjeng"},aeolic:{frequencies:[261.6255653006,294.32876096318,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Ancient Greek Aeolic, also tritriadic scale of the 54:64:81 triad"},agricola:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,331.11985608357,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Agricola's Monochord, Rudimenta musices (1539)"},"al-din":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012,551.24398943995,580.73440862809,588.65752192635,620.14948811994,653.3262097066,688.27781763329,697.66817413493,734.99198591993,774.31254483746,784.8766959018,826.86598415992,871.10161294214,917.70375684439,930.22423217991,979.98931455991,1032.41672644994,1046.5022612024,1102.48797887989],description:"Safi al-Din's complete lute tuning on 5 strings 4/3 apart"},"al-din_19":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic scale by Safi al-Din"},"al-farabi":{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Al-Farabi Syn Chrom"},"al-farabi_19":{frequencies:[261.6255653006,275.62199471997,285.40970760065,294.32876096318,310.07474405997,326.6631048533,331.11985608357,336.87132687997,348.83408706747,367.49599295996,380.54627680087,392.4383479509,413.43299207996,435.55080647107,441.49314144476,455.28980211491,465.11211608996,489.99465727995,507.3950357345,523.2511306012],description:"Arabic scale by Al Farabi"},"al-farabi_22":{frequencies:[261.6255653006,275.62199471997,277.01530443593,285.40970760065,294.32876096318,310.07474405997,321.08592105074,326.6631048533,331.11985608357,348.83408706747,367.49599295996,369.35373924791,380.54627680087,392.4383479509,413.43299207996,428.11456140098,435.55080647107,441.49314144476,465.11211608996,489.99465727995,492.47165233054,507.3950357345,523.2511306012],description:"Al-Farabi 22 note ud scale"},"al-farabi_9":{frequencies:[261.6255653006,294.32876096318,321.08592105074,331.11985608357,348.83408706747,392.4383479509,428.11456140098,441.49314144476,465.11211608996,523.2511306012],description:"Al-Farabi 9 note ud scale"},"al-farabi_blue":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.81054504865,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Another tuning from Al Farabi, c700 AD"},"al-farabi_chrom":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Al Farabi's Chromatic c700 AD"},"al-farabi_chrom2":{frequencies:[261.6255653006,279.06726965397,325.57848126297,348.83408706747,392.4383479509,418.60090448096,488.36772189445,523.2511306012],description:"Al-Farabi's Chromatic permuted"},"al-farabi_diat":{frequencies:[261.6255653006,299.00064605783,341.71502406609,348.83408706747,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Diatonic"},"al-farabi_diat2":{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Old Phrygian, permuted form of Al-Farabi's reduplicated 10/9 diatonic genus, same as ptolemy_diat"},"al-farabi_div":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al Farabi's 10 intervals for the division of the tetrachord"},"al-farabi_div2":{frequencies:[261.6255653006,275.62199471997,277.01530443593,279.38237857051,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,314.30517589183,321.08592105074,331.11985608357,348.83408706747],description:"Al-Farabi's tetrachord division, incl. extra 2187/2048 & 19683/16384"},"al-farabi_divo":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747,367.49599295996,369.35373924791,379.26927587201,392.4383479509,413.43299207996,415.52295665389,426.67793535601,432.48307733364,441.49314144476,465.11211608996,467.46332623563,481.6288815761,496.67978412536,523.2511306012],description:"Al Farabi's theoretical octave division with identical tetrachords, 10th c."},"al-farabi_dor":{frequencies:[261.6255653006,282.55561052465,313.95067836072,348.83408706747,392.4383479509,423.83341578697,470.92601754108,523.2511306012],description:"Dorian mode of Al-Farabi's 10/9 Diatonic"},"al-farabi_dor2":{frequencies:[261.6255653006,267.07609791103,305.22982618403,348.83408706747,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Dorian mode of Al-Farabi's Diatonic"},"al-farabi_g1":{frequencies:[261.6255653006,294.32876096318,331.11985608357,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus conjunctum medium, Land"},"al-farabi_g10":{frequencies:[261.6255653006,294.32876096318,343.38355445704,367.91095120397,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus chromaticum forte"},"al-farabi_g11":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,496.67978412536,523.2511306012],description:"Al-Farabi's Greek genus chromaticum mollissimum"},"al-farabi_g12":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.17464957743,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Al-Farabi's Greek genus mollissimum ordinantium"},"al-farabi_g3":{frequencies:[261.6255653006,294.32876096318,336.37572681506,378.42269266694,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus conjunctum primum"},"al-farabi_g4":{frequencies:[261.6255653006,294.32876096318,336.37572681506,384.42940207435,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Greek genus forte duplicatum primum"},"al-farabi_g5":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Al-Farabi's Greek genus conjunctum tertium, or forte aequatum"},"al-farabi_g6":{frequencies:[261.6255653006,294.32876096318,336.37572681506,373.75080757229,392.4383479509,448.50096908674,498.33441009638,523.2511306012],description:"Al-Farabi's Greek genus forte disjunctum primum"},"al-farabi_g7":{frequencies:[261.6255653006,294.32876096318,343.38355445704,374.60024122586,392.4383479509,457.84473927605,499.46698830115,523.2511306012],description:"Al-Farabi's Greek genus non continuum acre"},"al-farabi_g8":{frequencies:[261.6255653006,294.32876096318,353.19451315581,378.42269266694,392.4383479509,470.92601754108,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus non continuum mediocre"},"al-farabi_g9":{frequencies:[261.6255653006,294.32876096318,367.91095120397,383.71749577421,392.4383479509,490.54793493862,511.62332769895,523.2511306012],description:"Al-Farabi's Greek genus non continuum laxum"},"al-hwarizmi":{frequencies:[261.6255653006,294.32876096318,302.73815413355,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al-Hwarizmi's tetrachord division"},"al-kindi":{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747],description:"Al-Kindi's tetrachord division"},"al-kindi2":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,523.2511306012],description:"Arabic mode by al-Kindi"},"al-mausili":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Arabic mode by Ishaq al-Mausili, ? - 850 AD"},albion:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Terry Riley's Harp of New Albion scale, inverse Malcolm's Monochord, 1/1 on C#"},alembert:{frequencies:[261.6255653006,273.70610837433,292.50627485027,307.8325111191,327.03195662575,347.99121610009,365.92863081328,391.22147055517,409.45161370755,437.39890198442,462.86717295458,489.22460251523,523.2511306012],description:"Jean-Le Rond d'Alembert modified meantone (1752)"},alembert2:{frequencies:[261.6255653006,274.99999938609,292.5775112526,309.28790118232,327.03195662575,348.53877105022,367.08095907728,391.31674786192,412.03444522126,437.50542525192,464.32494005553,489.99429388332,523.2511306012],description:"d'Alembert (?)"},alves:{frequencies:[261.6255653006,267.07609791103,294.32876096318,305.22982618403,327.03195662575,336.37572681506,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:'Bill Alves, tuning for "Instantaneous Motion", 1/1 vol. 6/3'},alves_22:{frequencies:[261.6255653006,269.80136421624,279.06726965397,287.78812183066,297.30177875068,305.22982618403,317.12189733406,327.03195662575,336.37572681506,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,406.97310157871,418.60090448096,431.68218274599,448.50096908674,460.46099492906,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"11-limit rational interpretation of 22-tET, Bill Alves, tuning list 9-1-98"},amity:{frequencies:[261.6255653006,265.19165427121,275.22357733525,278.97501409741,282.77758484276,286.63198489776,290.53892403345,294.49911672845,305.63971046081,309.80573452349,314.02854360428,318.30891171173,322.64762154083,327.04547204619,339.41726037801,344.04368955469,348.73317930436,353.48658917459,358.304790429,371.85908609843,376.92771379174,382.0654272409,387.27317253358,392.55190203235,397.90258328792,412.95482206782,418.58360545772,424.28911201625,430.07238503487,435.93448947821,452.42543551278,458.59222335614,464.84306764133,471.17911410024,477.60152408164,484.11147196776,502.42490579041,509.27320879713,516.21486058423,523.2511306012],description:"Amity temperament, g=339.508826, 5-limit"},angklung:{frequencies:[261.6255653006,294.70472480469,326.28010551578,372.13971319976,421.00655337609,533.77627782773,589.40944960937,672.10704388342,757.81210779894],description:"Scale of an anklung set from Tasikmalaya. 1/1=174 Hz"},appunn:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.38237857051,287.10624449997,290.69507255622,294.32876096318,302.46583782713,306.24666079997,310.07474405997,322.99452506247,327.03195662575,331.11985608357,340.27406755552,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.50983809402,382.80832599996,387.59343007496,392.4383479509,408.78994578219,413.89982010446,419.07356785577,430.65936674996,436.04260883433,441.49314144476,453.6987567407,459.36999119996,465.11211608996,484.4917875937,490.54793493862,496.67978412536,510.41110133328,516.79124009995,523.2511306012],description:"Probable tuning of A. Appunn's 36-tone harmonium w. 3 manuals 80/81 apart,1887"},arabic:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic 17-tone Pythagorean mode, Safi al-Din"},arabic_s:{frequencies:[261.6255653006,275.62199471997,290.69507255622,294.32876096318,310.07474405997,327.03195662575,331.11985608357,348.83408706747,367.91095120397,387.59343007496,392.4383479509,413.43299207996,436.04260883433,441.49314144476,465.11211608996,490.54793493862,516.79124009995,523.2511306012],description:"Schimatically altered Arabic 17-tone Pythagorean mode"},arch_chrom:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,441.49314144476,523.2511306012],description:"Archytas' Chromatic"},arch_chromc2:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,331.11985608357,343.38355445704,348.83408706747,361.75386806997,392.4383479509,406.97310157871,422.04617941496,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:"Product set of 2 of Archytas' Chromatic"},arch_dor:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,465.11211608996,441.49314144476,523.2511306012],description:"Dorian mode of Archytas' Chromatic with added 16/9"},arch_enh:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Archytas' Enharmonic"},arch_enh2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,418.60090448096,523.2511306012],description:"Archytas' Enharmonic with added 16/9"},arch_enh3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,358.80077526939,448.50096908674,523.2511306012],description:"Complex 9 of p. 113 based on Archytas's Enharmonic"},arch_enhp:{frequencies:[261.6255653006,269.10058145205,279.06726965397,348.83408706747,392.4383479509,403.65087217807,418.60090448096,523.2511306012],description:"Permutation of Archytas's Enharmonic with the 36/35 first"},arch_enht:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 113 based on Archytas's Enharmonic"},arch_enht2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,490.54793493862,508.71637697339,523.2511306012],description:"Complex 5 of p. 113 based on Archytas's Enharmonic"},arch_enht3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 113 based on Archytas's Enharmonic"},arch_enht4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,339.14425131559,348.83408706747,436.04260883433,523.2511306012],description:"Complex 8 of p. 113 based on Archytas's Enharmonic"},arch_enht5:{frequencies:[261.6255653006,263.77886213435,271.31540105247,279.06726965397,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 10 of p. 113 based on Archytas's Enharmonic"},arch_enht6:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,297.67175429757,348.83408706747,372.08969287196,523.2511306012],description:"Complex 2 of p. 113 based on Archytas's Enharmonic"},arch_enht7:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,287.04062021552,348.83408706747,358.80077526939,523.2511306012],description:"Complex 11 of p. 113 based on Archytas's Enharmonic"},arch_mult:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,523.2511306012],description:"Multiple Archytas"},arch_ptol:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"Archytas/Ptolemy Hybrid 1"},arch_ptol2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Archytas/Ptolemy Hybrid 2"},arch_sept:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,465.11211608996,523.2511306012],description:"Archytas Septimal"},ariel1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 1"},ariel2:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 2"},ariel3:{frequencies:[261.6255653006,279.06726965397,290.69507255622,310.07474405997,322.99452506247,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Ariel's 12-tone JI scale"},ariel_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,302.80736724606,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Ariel 19-tone scale"},ariel_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Ariel's 31-tone system"},arist_archenh:{frequencies:[261.6255653006,271.89678302796,279.86396690685,349.22823143301,391.99543598175,407.38487419079,419.32216217931,523.2511306012],description:"PsAristo Arch. Enharmonic, 4 + 3 + 23 parts, similar to Archytas' enharmonic"},arist_chrom:{frequencies:[261.6255653006,277.18263097687,329.62755691287,349.22823143301,391.99543598175,415.30469757995,493.88330125613,523.2511306012],description:"Dorian, Neo-Chromatic,6+18+6 parts = Athanasopoulos' Byzant.liturg. 2nd chromatic"},arist_chrom2:{frequencies:[261.6255653006,282.57123920205,336.03572815422,349.22823143301,391.99543598175,423.37848741825,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 18 + 4 parts"},arist_chrom3:{frequencies:[261.6255653006,279.86388595857,299.37253740865,349.22869576324,391.99491478937,419.32387668214,448.55625766774,523.2511306012],description:"PsAristo 3 Chromatic, 7 + 7 + 16 parts"},arist_chrom4:{frequencies:[261.6255653006,275.85166538713,290.85115308106,349.22823143301,391.99543598175,413.31050241775,435.7843409791,523.2511306012],description:"PsAristo Chromatic, 5.5 + 5.5 + 19 parts"},arist_chromenh:{frequencies:[261.6255653006,269.29177952703,293.66476791741,349.22823143301,391.99543598175,403.48177901006,440,523.2511306012],description:"Aristoxenos' Chromatic/Enharmonic, 3 + 9 + 18 parts"},arist_chrominv:{frequencies:[261.6255653006,311.12698372208,329.62755691287,349.22823143301,391.99543598175,466.16376151809,493.88330125613,523.2511306012],description:"Aristoxenos' Inverted Chromatic, Dorian mode, 18 + 6 + 6 parts"},arist_chromrej:{frequencies:[261.6255653006,277.18263097687,285.30470202322,349.22823143301,391.99543598175,415.30469757995,427.47405410759,523.2511306012],description:"Aristoxenos Rejected Chromatic, 6 + 3 + 21 parts"},arist_chromunm:{frequencies:[261.6255653006,273.20871865617,282.57118533961,349.22823143301,391.99543598175,409.35055662695,423.37840671577,523.2511306012],description:"Unmelodic Chromatic, genus of Aristoxenos, Dorian Mode, 4.5 + 3.5 + 22 parts"},arist_diat:{frequencies:[261.6255653006,293.66476791741,311.12698372208,349.22823143301,391.99543598175,440,466.16376151809,523.2511306012],description:"Phrygian octave species on E, 12 + 6 + 12 parts"},arist_diat2:{frequencies:[261.6255653006,279.86396690685,311.12698372208,349.22823143301,391.99543598175,419.32216217931,466.16376151809,523.2511306012],description:"PsAristo 2 Diatonic, 7 + 11 + 12 parts"},arist_diat3:{frequencies:[261.6255653006,286.68133251996,314.13668154225,349.22823143301,391.99543598175,429.53666932309,470.6732130613,523.2511306012],description:"PsAristo Diat 3, 9.5 + 9.5 + 11 parts"},arist_diat4:{frequencies:[261.6255653006,282.57123920205,305.19382000629,349.22823143301,391.99543598175,423.37848741825,457.27406033445,523.2511306012],description:"PsAristo Diatonic, 8 + 8 + 14 parts"},arist_diatdor:{frequencies:[261.6255653006,299.37379946195,305.19382000629,349.22823143301,391.99543598175,448.5538823653,457.27406033445,523.2511306012],description:"PsAristo Redup. Diatonic, 14 + 2 + 14 parts"},arist_diatinv:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,493.88330125613,523.2511306012],description:"Lydian octave species on E, major mode, 12 + 12 + 6 parts"},arist_diatred:{frequencies:[261.6255653006,299.37379946195,342.56848033562,349.22823143301,391.99543598175,448.5538823653,513.27277840175,523.2511306012],description:"Aristo Redup. Diatonic, Dorian Mode, 14 + 14 + 2 parts"},arist_diatred2:{frequencies:[261.6255653006,271.89678302796,308.14612137864,349.22823143301,391.99543598175,407.38487419079,461.69751437372,523.2511306012],description:"PsAristo 2 Redup. Diatonic 2, 4 + 13 + 13 parts"},arist_diatred3:{frequencies:[261.6255653006,282.57123920205,314.13668154225,349.22823143301,391.99543598175,423.37848741825,470.6732130613,523.2511306012],description:"PsAristo 3 Redup. Diatonic, 8 + 11 + 11 parts"},arist_enh:{frequencies:[261.6255653006,269.29177952703,277.18263097687,349.22823143301,391.99543598175,403.48177901006,415.30469757995,523.2511306012],description:"Aristoxenos' Enharmonion, Dorian mode"},arist_enh2:{frequencies:[261.6255653006,270.59109411209,279.86402025325,349.22823143301,391.99543598175,405.42855124795,419.32224210861,523.2511306012],description:"PsAristo 2 Enharmonic, 3.5 + 3.5 + 23 parts"},arist_enh3:{frequencies:[261.6255653006,267.99870394401,274.52693220706,349.22823143301,391.99543598175,401.54435471309,411.32564531909,523.2511306012],description:"PsAristo Enharmonic, 2.5 + 2.5 + 25 parts"},arist_hemchrom:{frequencies:[261.6255653006,273.20871865617,285.30470202322,349.22823143301,391.99543598175,409.35055662695,427.47405410759,523.2511306012],description:"Aristoxenos's Chromatic Hemiolion, Dorian Mode"},arist_hemchrom2:{frequencies:[261.6255653006,273.20871865617,293.66476791741,349.22823143301,391.99543598175,409.35055662695,440,523.2511306012],description:"PsAristo C/H Chromatic, 4.5 + 7.5 + 18 parts"},arist_hemchrom3:{frequencies:[261.6255653006,271.81876914348,282.83844897362,348.83408706747,392.4383479509,407.72815371522,424.25767346043,523.2511306012],description:"Dorian mode of Aristoxenos' Hemiolic Chromatic according to Ptolemy's interpret"},arist_hypenh2:{frequencies:[261.6255653006,267.3544191957,273.20871865617,349.22823143301,391.99543598175,400.57901831518,409.35055662695,523.2511306012],description:"PsAristo 2nd Hyperenharmonic, 37.5 + 37.5 + 425 cents"},arist_hypenh3:{frequencies:[261.6255653006,265.43099677612,269.29177952703,349.22823143301,391.99543598175,397.69714089209,403.48177901006,523.2511306012],description:"PsAristo 3 Hyperenharmonic, 1.5 + 1.5 + 27 parts"},arist_hypenh4:{frequencies:[261.6255653006,266.71168334607,271.8968348557,349.22823143301,391.99543598175,399.61600264311,407.38495184466,523.2511306012],description:"PsAristo 4 Hyperenharmonic, 2 + 2 + 26 parts"},arist_hypenh5:{frequencies:[261.6255653006,265.12453591719,268.67030163715,349.22823143301,391.99543598175,397.23796841836,402.55061428954,523.2511306012],description:"PsAristo Hyperenharmonic, 23 + 23 + 454 cents"},arist_intdiat:{frequencies:[261.6255653006,275.39533189537,307.79478270659,348.83408706747,392.4383479509,413.09299784305,461.69217405988,523.2511306012],description:"Dorian mode of Aristoxenos's Intense Diatonic according to Ptolemy"},arist_penh2:{frequencies:[261.6255653006,269.29177952703,339.28638158975,349.22823143301,391.99543598175,403.48177901006,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 3 + 24 + 3 parts"},arist_penh3:{frequencies:[261.6255653006,329.62755691287,339.28638158975,349.22823143301,391.99543598175,493.88330125613,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 24 + 3 + 3 parts"},arist_pschrom2:{frequencies:[261.6255653006,278.52001838539,296.50560089735,349.22823143301,391.99543598175,417.30851459865,444.25644015807,523.2511306012],description:"PsAristo 2 Chromatic, 6.5 + 6.5 + 17 parts"},arist_softchrom:{frequencies:[261.6255653006,271.89678302796,282.57123920205,349.22823143301,391.99543598175,407.38487419079,423.37848741825,523.2511306012],description:"Aristoxenos's Chromatic Malakon, Dorian Mode"},arist_softchrom2:{frequencies:[261.6255653006,277.18263097687,324.90175210669,349.22823143301,391.99543598175,415.30469757995,486.80259447109,523.2511306012],description:"Aristoxenos' Soft Chromatic, 6 + 16.5 + 9.5 parts"},arist_softchrom3:{frequencies:[261.6255653006,281.2143451833,329.62755691287,349.22823143301,391.99543598175,421.34544350737,493.88330125613,523.2511306012],description:"Aristoxenos's Chromatic Malakon, 9.5 + 16.5 + 6 parts"},arist_softchrom4:{frequencies:[261.6255653006,277.18263097687,297.93622032612,349.22823143301,391.99543598175,415.30469757995,446.39994737251,523.2511306012],description:"PsAristo S. Chromatic, 6 + 7.5 + 16.5 parts"},arist_softchrom5:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,392.4383479509,405.97070477679,420.46965851882,523.2511306012],description:"Dorian mode of Aristoxenos' Soft Chromatic according to Ptolemy's interpretati"},arist_softdiat:{frequencies:[261.6255653006,277.18263097687,302.26980244078,349.22823143301,391.99543598175,415.30469757995,452.89298412314,523.2511306012],description:"Aristoxenos's Diatonon Malakon, Dorian Mode"},arist_softdiat2:{frequencies:[261.6255653006,277.18263097687,320.24370022528,349.22823143301,391.99543598175,415.30469757995,479.82340237272,523.2511306012],description:"Dorian Mode, 6 + 15 + 9 parts"},arist_softdiat3:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Dorian Mode, 9 + 15 + 6 parts"},arist_softdiat4:{frequencies:[261.6255653006,285.30470202322,302.26980244078,349.22823143301,391.99543598175,427.47405410759,452.89298412314,523.2511306012],description:"Dorian Mode, 9 + 6 + 15 parts"},arist_softdiat5:{frequencies:[261.6255653006,302.26980244078,320.24370022528,349.22823143301,391.99543598175,452.89298412314,479.82340237272,523.2511306012],description:"Dorian Mode, 15 + 6 + 9 parts"},arist_softdiat6:{frequencies:[261.6255653006,302.26980244078,329.62755691287,349.22823143301,391.99543598175,452.89298412314,493.88330125613,523.2511306012],description:"Dorian Mode, 15 + 9 + 6 parts"},arist_softdiat7:{frequencies:[261.6255653006,275.39533189537,299.00064605783,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Dorian mode of Aristoxenos's Soft Diatonic according to Ptolemy"},arist_synchrom:{frequencies:[261.6255653006,277.18263097687,293.66476791741,349.22823143301,391.99543598175,415.30469757995,440,523.2511306012],description:"Aristoxenos's Chromatic Syntonon, Dorian Mode"},arist_syndiat:{frequencies:[261.6255653006,277.18263097687,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Aristoxenos's Diatonon Syntonon, Dorian Mode"},arist_unchrom:{frequencies:[261.6255653006,271.89678302796,293.66476791741,349.22823143301,391.99543598175,407.38487419079,440,523.2511306012],description:"Aristoxenos's Unnamed Chromatic, Dorian Mode, 4 + 8 + 18 parts"},arist_unchrom2:{frequencies:[261.6255653006,282.57123920205,293.66476791741,349.22823143301,391.99543598175,423.37848741825,440,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 4 + 18 parts"},arist_unchrom3:{frequencies:[261.6255653006,311.12698372208,323.3415889232,349.22823143301,391.99543598175,466.16376151809,484.46499093218,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 4 + 8 parts"},arist_unchrom4:{frequencies:[261.6255653006,311.12698372208,336.03572815422,349.22823143301,391.99543598175,466.16376151809,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 8 + 4 parts"},arith13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,318.85615771011,327.03195662575,343.38355445704,367.91095120397,371.99885066179,392.4383479509,449.66894036041,457.84473927605,490.54793493862,523.2511306012],description:"The first 13 terms of the arithmetic series, octave reduced"},arith22:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,312.72430852337,318.85615771011,327.03195662575,343.38355445704,349.51540364377,367.91095120397,371.99885066179,388.35044849308,392.4383479509,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,517.11928141447,523.2511306012],description:"The first 22 terms of the arithmetic series, octave reduced"},arnautoff_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,523.2511306012],description:"Philip Arnautoff, transposed Archytas enharmonic (2005), 1/1 vol 12/1"},"aron-neidhardt":{frequencies:[261.6255653006,275.62199471997,292.53519855339,310.07474405997,327.04005607367,348.83408706747,367.49599295996,391.42133845759,413.43299207996,437.43855491017,465.11211608996,489.99465727995,523.2511306012],description:"Aron-Neidhardt equal beating well temperament"},art_nam:{frequencies:[261.6255653006,287.78812183066,317.68818643644,324.77656382143,348.83408706747,353.19451315581,392.4383479509,431.68218274599,473.41768959156,523.2511306012],description:"Artificial Nam System"},artusi:{frequencies:[261.6255653006,276.63528606528,292.50629850443,309.28767786778,327.03195662575,349.91920725962,369.99442271164,391.22137338448,413.66637442451,437.39882871549,462.49310482954,489.02679755603,523.2511306012],description:"Lute tuning of Giovanni Maria Artusi (1603). 1/4-comma w. acc. 1/2-way naturals"},astro:{frequencies:[13.75,13.8316453704,13.91377553836,13.99639338254,14.07098381034,14.15453513289,14.23858257025,14.32312915102,14.40817767355,14.49373120103,14.57979273211,14.66636528323,14.75345188876,14.84105560105,14.92917949063,15.01782664621,15.10700017487,15.1875093157,15.27769039377,15.36840704189,15.45966226264,15.55145934276,15.64380149972,15.73669197012,15.83013400973,15.92413089371,16.01868591662,16.11380239262,16.20948365552,16.30573305894,16.39263055969,16.48996755631,16.58788242969,16.68637870643,16.78545983879,16.88512929958,16.98539058219,17.08624720077,17.18770269033,17.28976060687,17.39242452751,17.49569805061,17.59958489756,17.69337767194,17.7984382082,17.90412257766,18.01043448453,18.11737765504,18.22495583753,18.33317280261,18.44203234327,18.55153827502,18.66169443603,18.77250468726,18.88397302169,18.99610312873,19.09733831271,19.21073534981,19.32480572095,19.43955342429,19.55498248173,19.67109693902,19.78790086598,19.90539835657,20.02359352906,20.14249064253,20.26209363229,20.38240680608,20.50343438087,20.62518059864,20.73509756099,20.85821935885,20.98207223488,21.1066605301,21.23198861133,21.35806087129,21.4848817288,21.61245575376,21.74078716869,21.86988059568,21.99974055944,22.13037161156,22.26177833063,22.38041714879,22.51330859954,22.64698913914,22.78146345308,22.91673625467,23.0528122852,23.18969644807,23.32739327396,23.46590772227,23.60524464792,23.74540893465,23.88640549521,24.02823927151,24.15629202037,24.29972834105,24.44401636439,24.58916114767,24.73516777819,24.8820415172,25.02978722599,25.17841022592,25.32791572621,25.478308967,25.62959521956,25.78177978645,25.93486800174,26.07308167197,26.22789959273,26.38363679833,26.54029874734,26.69789108494,26.85641902723,27.01588828389,27.17630444429,27.33767313101,27.5],description:"Astro temperament, g=132.194511, 5-limit"},athan_chrom:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,493.88330125613,523.2511306012],description:"Athanasopoulos's Byzantine Liturgical mode Chromatic"},auftetf:{frequencies:[261.6255653006,264.29521392612,269.80136421624,287.78812183066,359.73515228832,380.54627680087,384.42940207435,392.4383479509,418.60090448096],description:"5/4 C.I. again"},augmented:{frequencies:[261.6255653006,312.71213182188,329.62755691287,393.99259743989,415.30469757995,496.39956701727,523.2511306012],description:"Augmented temperament, g=91.2, oct=1/3, 5-limit"},augteta:{frequencies:[261.6255653006,280.76889934699,302.93486508491,328.90071066361,359.73515228832,380.54627680087,408.39112632289,440.63253103259,478.40103369253],description:"Linear Division of the 11/8, duplicated on the 16/11"},augteta2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,373.75080757229,402.50086969323,436.04260883433,475.68284600109],description:"Linear Division of the 7/5, duplicated on the 10/7"},augtetb:{frequencies:[261.6255653006,270.8594087818,280.76889934699,302.93486508491,359.73515228832,380.54627680087,295.48299139832,408.39112632289,440.63253103259],description:"Harmonic mean division of 11/8"},augtetc:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,359.73515228832,380.54627680087,407.72815371522,439.09185784716,475.68284600109],description:"11/10 C.I."},augtetd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,359.73515228832,380.54627680087,395.18267206244,410.98997894494,428.11456140098],description:"11/9 C.I."},augtete:{frequencies:[261.6255653006,269.80136421624,278.50463402967,287.78812183066,359.73515228832,380.54627680087,392.4383479509,405.0976494977,418.60090448096],description:"5/4 C.I."},augtetg:{frequencies:[261.6255653006,278.50463402967,297.71185016965,319.76457981184,359.73515228832,380.54627680087,405.0976494977,433.03541842858,465.11211608996],description:"9/8 C.I."},augteth:{frequencies:[261.6255653006,278.50463402967,287.78812183066,319.76457981184,359.73515228832,380.54627680087,405.0976494977,418.60090448096,465.11211608996],description:"9/8 C.I. A gapped version of this scale is called AugTetI"},augtetj:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. comprised of 11:10:9:8 subharmonic series on 1 and 8:9:10:11 on 16/11"},augtetk:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,418.60090448096,465.11211608996],description:"9/8 C.I. This is the converse form of AugTetJ"},augtetl:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. This is the harmonic form of AugTetI"},avg_bac:{frequencies:[261.6255653006,290.69507255622,307.79478270659,348.83408706747,392.4383479509,436.04260883433,461.69217405988,523.2511306012],description:"Average Bac System"},avicenna:{frequencies:[261.6255653006,290.69507255622,299.00064605783,348.83408706747,392.4383479509,436.04260883433,448.50096908674,523.2511306012],description:"Soft diatonic of Avicenna (Ibn Sina)"},avicenna_17:{frequencies:[261.6255653006,278.99913799634,283.42769574232,294.32876096318,310.07474405997,318.85615771011,331.11985608357,348.83408706747,371.99885066179,377.90359432309,392.4383479509,413.43299207996,425.14154361347,441.49314144476,465.11211608996,495.99846754905,503.87145909745,523.2511306012],description:"Tuning by Avicenna (Ibn Sina), Ahmed Mahmud Hifni, Cairo, 1977"},avicenna_19:{frequencies:[261.6255653006,275.62199471997,283.49690885483,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,358.80077526939,372.50983809402,377.99587847311,392.4383479509,413.43299207996,425.24536328225,441.49314144476,465.11211608996,478.40103369253,496.67978412536,503.45611792634,523.2511306012],description:"Arabic scale by Ibn Sina"},avicenna_chrom:{frequencies:[261.6255653006,269.10058145205,299.00064605783,348.83408706747,392.4383479509,403.65087217807,448.50096908674,523.2511306012],description:"Dorian mode a chromatic genus of Avicenna"},avicenna_chrom2:{frequencies:[261.6255653006,271.8968348557,323.34165055711,349.22823143301,391.99543598175,407.38495184466,484.46508327871,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 4 + 18 + 8 parts"},avicenna_chrom3:{frequencies:[261.6255653006,290.69507255622,339.14425131559,348.83408706747,392.4383479509,436.04260883433,508.71637697339,523.2511306012],description:"Avicenna's Chromatic permuted"},avicenna_diat:{frequencies:[261.6255653006,281.75060878526,305.22982618403,348.83408706747,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Dorian mode a soft diatonic genus of Avicenna"},avicenna_diff:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,310.68035879446,343.38355445704,367.91095120397,392.4383479509,400.61414686654,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Difference tones of Avicenna's Soft diatonic reduced by 2/1"},avicenna_enh:{frequencies:[261.6255653006,268.33391312882,279.06726965397,348.83408706747,392.4383479509,402.50086969323,418.60090448096,523.2511306012],description:"Dorian mode of Avicenna's (Ibn Sina) Enharmonic genus"},awad:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,358.80077526939,369.35373924791,380.54627680087,392.4383479509,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"d'Erlanger vol.5, p.37, after Mans.ur 'Awad"},awraamoff:{frequencies:[261.6255653006,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Awraamoff Septimal Just"},ayers:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,537.78588422901,569.42034800719,605.00911975764,645.34306107481,691.43899400873,744.62660893248,806.67882634352,880.01326510202,968.01459161222,1075.57176845802,1210.01823951527,1382.87798801746,1613.35765268703,1936.02918322444,2420.03647903055,3226.71530537407,4840.0729580611,9680.1459161222],description:"Lydia Ayers, algorithmic composition, subharmonics 1-37"},ayers_19:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,523.2511306012],description:"Scale for NINETEEN, for 19 for the 90's CD. Repeats at 37/19 (or 2/1)"},ayers_ap:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Lydia Ayers' Appetizer, ICMC 96, Balinese Slendro from Singaraja,"},ayers_me:{frequencies:[261.6255653006,280.31310567921,299.00064605783,308.34441624714,336.37572681506,392.4383479509,420.46965851882,448.50096908674,504.56359022259,523.2511306012],description:"Scale for Merapi (1996), Lydia Ayers. Slendro 0 2 4 5 7 9, Pelog 0 1 3 6 8 9"},h10_27:{frequencies:[261.6255653006,281.00523680435,300.3849083081,319.76457981184,348.83408706747,368.21375857121,397.28326582684,426.35277308246,455.42228033808,484.4917875937,523.2511306012],description:"10-tET harmonic approximation, fundamental=27"},h12_24:{frequencies:[261.6255653006,272.52663052146,294.32876096318,316.13089140489,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,468.74580449691,490.54793493862,523.2511306012],description:"12-tET harmonic approximation, fundamental=24"},h14_27:{frequencies:[261.6255653006,271.31540105247,290.69507255622,300.3849083081,319.76457981184,339.14425131559,348.83408706747,368.21375857121,387.59343007496,406.97310157871,426.35277308246,455.42228033808,474.80195184183,494.18162334558,523.2511306012],description:"14-tET harmonic approximation, fundamental=27"},h15_24:{frequencies:[261.6255653006,272.52663052146,283.42769574232,305.22982618403,316.13089140489,327.03195662575,348.83408706747,359.73515228832,381.53728273004,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"15-tET harmonic approximation, fundamental=24"},hahn9:{frequencies:[261.6255653006,286.15296204753,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,457.84473927605,490.54793493862,523.2511306012],description:"Paul Hahn's just version of 9 out of 31 scale. TL 6-8-'98"},hahn_7:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Paul Hahn's scale with 32 consonant 7-limit dyads. TL '99, see also smithgw_hahn12"},hahn_g:{frequencies:[261.6255653006,280.50183143454,294.66523452594,309.54379154736,331.87735433448,348.63486612079,373.78884718875,392.66259958718,420.99317852788,442.25042328711,464.58101193362,498.10049926644,523.2511306012],description:'fourth of sqrt(2)-1 octave "recursive" meantone, Paul Hahn'},hahnmaxr:{frequencies:[261.6255653006,275.93321340298,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Paul Hahn's hahn_7 marvel projected to the 5-limit"},halfefg357777:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.35783506196,341.71502406609,375.57576268738,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Half genus [357777]"},hamilton:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,479.64686971777,523.2511306012],description:"Elsie Hamilton's gamut, from article The Modes of Ancient Greek Music (1953)"},hamilton_jc:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,338.57426097725,411.12588832951,383.71749577421,442.75095666255,426.35277308246,479.64686971777,523.2511306012],description:"Chalmers' permutation of Hamilton's gamut. Diatonic notes on white"},hamilton_jc2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"EH gamut, diatonic notes on white and drops 17 for 25. JC Dorian Harmonia on C"},hammond:{frequencies:[261.6255653006,226.52945288223,240.12209418,254.35818848669,269.43528366778,285.40970760065,302.50455987882,320.49131749323,339.40613876835,359.73515228832,381.06332337261,403.65087217807,427.65717404906,453.05890576445],description:'Hammond organ pitch wheel ratios, 1/1=320 Hz. Do "del 0" to get 12-tone scale'},hammond12:{frequencies:[261.6255653006,277.32410877127,293.76579515365,311.17877832054,329.62811300357,349.37146352202,370.1449018936,391.99018843668,415.46876743159,440.10130305006,466.18833124791,493.91391932426,523.2511306012],description:"Hammond organ scale, 1/1=277.0731707 Hz, A=440, see hammond for the ratios"},handblue:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Handy Blues" of Pitch Palette, 7-limit'},handel:{frequencies:[261.6255653006,276.07055536165,292.89641271707,310.57937447136,328.79480940231,349.02322090701,368.4933346061,391.37619916626,414.10583283548,438.86859125239,465.61660972366,492.3908742288,523.2511306012],description:"Well temperament according to Georg Friedrich H\xEF\xBF\xBDndel's rules (c. 1780)"},hanson_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"JI version of Hanson's 19 out of 53-tET scale"},"harm-doreninv1":{frequencies:[261.6255653006,321.08592105074,327.03195662575,332.97799220076,380.54627680087,499.46698830115,511.35905945117,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Dorian Harmonia"},"harm-dorinv1":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Dorian Harmonia"},"harm-lydchrinv1":{frequencies:[261.6255653006,322.00069575458,342.12573923925,362.25078272391,402.50086969323,483.00104363188,503.12608711654,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Lydian Harmonia"},"harm-lydeninv1":{frequencies:[261.6255653006,342.12573923925,352.18826098158,362.25078272391,402.50086969323,503.12608711654,513.18860885887,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Lydian Harmonia"},"harm-mixochrinv1":{frequencies:[261.6255653006,336.37572681506,355.06326719367,373.75080757229,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Mixolydian Harmonia"},"harm-mixoeninv1":{frequencies:[261.6255653006,355.06326719367,364.40703738298,373.75080757229,411.12588832951,504.56359022259,513.90736041189,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Mixolydian Harmonia"},harm10:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"6/7/8/9/10 harmonics"},harm11s:{frequencies:[261.6255653006,65.40639132515,95.13656920022,104.65022612024,116.27802902249,130.8127826503,149.50032302891,174.41704353373,196.21917397545,209.30045224048,261.6255653006,327.03195662575,348.83408706747,392.4383479509,457.84473927605,523.2511306012,588.65752192635,654.0639132515,719.47030457665,1046.5022612024],description:"Harm. 1/4-11/4 and subh. 4/1-4/11. Joseph Pehrson 1999"},harm12s:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,348.83408706747,359.73515228832,380.54627680087,392.4383479509,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"Harmonics 1 to 12 and subharmonics mixed"},"harm15-30":{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,383.71749577421,418.60090448096,436.04260883433,453.48431318771,488.36772189445,523.2511306012],description:"Harmonics 15 to 30"},harm15:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991],description:"Fifth octave of the harmonic overtone series"},"harm16-32":{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Harmonics 16-32 & Tom Stone's Guitar Scale"},harm16:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,2093.0045224048,1395.33634826987,1046.5022612024,837.20180896192,697.66817413493,598.00129211566,523.2511306012,465.11211608996,418.60090448096,380.54627680087,348.83408706747,322.00069575458,299.00064605783,279.06726965397,261.6255653006],description:"First 16 harmonics and subharmonics"},"harm1c-dorian":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"Harm1C-Dorian"},"harm1c-hypod":{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"HarmC-Hypodorian"},"harm1c-hypol":{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"HarmC-Hypolydian"},"harm1c-lydian":{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,382.37582620857,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"Harm1C-Lydian"},"harm1c-mix":{frequencies:[261.6255653006,299.00064605783,373.75080757229,392.4383479509,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"Harm1C-Con Mixolydian"},"harm1c-mixolydian":{frequencies:[261.6255653006,280.31310567921,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"Harm1C-Mixolydian"},harm24:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"Harmonics 12 to 24"},harm24_2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 12 to 24, mode 9"},harm3:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605],description:"Third octave of the harmonic overtone series"},"harm30-60":{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,357.55493924415,366.27579142084,374.99664359753,383.71749577421,392.4383479509,401.15920012759,409.88005230427,418.60090448096,427.32175665765,436.04260883433,444.76346101102,453.48431318771,462.20516536439,470.92601754108,479.64686971777,488.36772189445,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Harmonics 30-60"},harm30:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,310.07474405997,322.00069575458,334.88072358477,348.83408706747,364.00078650518,398.6675280771,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024,1196.00258423131,1395.33634826987,1674.40361792384,2093.0045224048,2790.67269653973,4186.0090448096,8372.0180896192,8633.6436549198,8895.2692202204,9156.894785521,9418.5203508216,9680.1459161222,9941.7714814228,10203.3970467234,10465.022612024,10726.6481773246,10988.2737426252,11249.8993079258,11511.5248732264,11773.150438527,12034.7760038276,12296.4015691282,12558.0271344288,12819.6526997294,13081.27826503,13342.9038303306,13604.5293956312,13866.1549609318,14127.7805262324,14389.406091533,14651.0316568336,14912.6572221342,15174.2827874348,15435.9083527354,15697.533918036,15959.1594833366,16220.7850486372],description:"First 30 harmonics and subharmonics"},"harm32-64":{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,335.20775554139,343.38355445704,351.55935337268,359.73515228832,367.91095120397,376.08675011961,384.26254903526,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,449.66894036041,457.84473927605,466.02053819169,474.19633710734,482.37213602298,490.54793493862,498.72373385427,506.89953276991,515.07533168556,523.2511306012],description:"Harmonics 32-64"},harm37odd:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Odd harmonics until 37"},harm4:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862],description:"Fourth octave of the harmonic overtone series"},"harm6-12":{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,331.11985608357,343.38355445704,359.73515228832,367.91095120397,392.4383479509,400.61414686654,404.70204632437,408.78994578219,441.49314144476,449.66894036041,457.84473927605,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"First 12 harmonics of 6th through 12th harmonics"},harm6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:"Harmonics 6-12"},"harm60-30":{frequencies:[261.6255653006,280.31310567921,290.69507255622,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,413.09299784305,436.04260883433,448.50096908674,490.54793493862,523.2511306012],description:"Harmonics 60 to 30 (Perkis)"},harm7lim:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,3139.5067836072,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,7325.5158284168,7848.766959018,8372.0180896192,9156.894785521,9418.5203508216,10465.022612024,10988.2737426252,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14651.0316568336,15697.533918036,16482.4106139378,16744.0361792384,18313.789571042,18837.0407016432,19621.917397545,20930.045224048,21191.6707893486,21976.5474852504,23546.300877054,25116.0542688576,25639.3053994588,26162.55653006,27470.684356563,29302.0633136672,31395.067836072],description:"7-limit harmonics"},harm8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 8-16"},harm9:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,356.10146388137,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"6/7/8/9 harmonics, First 9 overtones of 5th through 9th harmonics"},harm_bastard:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:`Schlesinger's "Bastard" Hypodorian Harmonia & inverse 1)7 from 1.3.5.7.9.11.13`},harm_bastinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,523.2511306012],description:`Inverse Schlesinger's "Bastard" Hypodorian Harmonia & 1)7 from 1.3.5.7.9.11.13`},harm_darreg:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,5232.511306012,6279.0135672144,7325.5158284168,8372.0180896192,9418.5203508216,10465.022612024,11511.5248732264,12558.0271344288,13604.5293956312,14651.0316568336,15697.533918036],description:"Darreg Harmonics 4-15"},harm_mean:{frequencies:[261.6255653006,270.06509966514,279.06726965397,299.00064605783,348.83408706747,392.4383479509,405.0976494977,418.60090448096,448.50096908674,523.2511306012],description:"Harm. Mean 9-tonic 8/7 is HM of 1/1 and 4/3, etc."},"harmc-hypop":{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,363.36884069528,377.90359432309,406.97310157871,465.11211608996,494.18162334558,523.2511306012],description:"HarmC-Hypophrygian"},"harmd-15":{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"HarmD-15-Harmonia"},"harmd-conmix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-ConMixolydian"},"harmd-hypod":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"HarmD-Hypodorian"},"harmd-hypol":{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"HarmD-Hypolydian"},"harmd-hypop":{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,406.97310157871,436.04260883433,465.11211608996,523.2511306012],description:"HarmD-Hypophrygian"},"harmd-lyd":{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"HarmD-Lydian"},"harmd-mix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-Mixolydian. Harmonics 7-14"},"harmd-phr":{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,348.83408706747,327.03195662575,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"HarmD-Phryg (with 5 extra tones)"},"harme-hypod":{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,376.08675011961,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"HarmE-Hypodorian"},"harme-hypol":{frequencies:[261.6255653006,281.24748269815,274.70684356563,340.11323489078,366.27579142084,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"HarmE-Hypolydian"},"harme-hypop":{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,363.36884069528,377.90359432309,406.97310157871,494.18162334558,508.71637697339,523.2511306012],description:"HarmE-Hypophrygian"},"harmjc-15":{frequencies:[261.6255653006,280.31310567921,301.87565226992,313.95067836072,327.03195662575,356.76213450082,373.75080757229,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Rationalized JC Sub-15 Harmonia on C. MD=15, No planetary assignment."},"harmjc-17-2":{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-17":{frequencies:[261.6255653006,269.55361273395,277.97716313189,296.50897400735,317.68818643644,342.12573923925,355.81076880882,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-19-2":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-19":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,414.24047839262,432.2509339749,451.89870370104,473.41768959156,497.08857407114,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-21":{frequencies:[261.6255653006,268.0066766494,274.70684356563,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,406.97310157871,422.62591317789,439.53094970501,457.84473927605,523.2511306012],description:"Rationalized JC Sub-21 Harmonia on C. MD=21, No planetary assignment."},"harmjc-23-2":{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,462.87600014722,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-23":{frequencies:[261.6255653006,273.51763645063,300.86940009569,316.70463167967,334.29933343966,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,481.3910401531,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-25":{frequencies:[261.6255653006,272.52663052146,297.30177875068,311.45900631024,327.03195662575,363.36884069528,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,503.12608711654,523.2511306012],description:"Rationalized JC Sub-25 Harmonia on C. MD=25, No planetary assignment."},"harmjc-27":{frequencies:[261.6255653006,271.68808704293,294.32876096318,307.12566361375,321.08592105074,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,504.56359022259,523.2511306012],description:"Rationalized JC Sub-27 Harmonia on C. MD=27, No planetary assignment."},"harmjc-hypod16":{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,418.60090448096,440.63253103259,465.11211608996,523.2511306012],description:"Rationalized JC Hypodorian Harmonia on C. Saturn Scale on C, MD=16. (Steiner)"},"harmjc-hypol20":{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,455.00098313148,575.57624366132,523.2511306012],description:"Rationalized JC Hypolydian Harmonia on C. Mars scale on C., MD=20"},"harmjc-hypop18":{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Rationalized JC Hypophrygian Harmonia on C. Jupiter scale on C, MD =18"},"harmjc-lydian13":{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,400.13321751856,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"Rationalized JC Lydian Harmonia on C. Mercury scale on C, MD = 26 or 13"},"harmjc-mix14":{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,332.97799220076,348.83408706747,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Rationalized JC Mixolydian Harmonia on C. Moon Scale on C, MD = 14"},"harmjc-phryg12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Rationalized JC Phrygian Harmonia on C. Venus scale on C, MD = 24 or 12"},harmonical:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"See pp 17 and 466-468 Helmholtz. lower 4 oct. Instr. designed & tuned by Ellis"},harmonical_up:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,457.84473927605,392.4383479509,408.78994578219,425.14154361347,474.19633710734,490.54793493862,523.2511306012],description:"Upper 2 octaves of Ellis's Harmonical"},harmsub16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,301.87565226992,327.03195662575,356.76213450082,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"16 harmonics on 1/1 and 16 subharmonics on 15/8"},harrison_16:{frequencies:[261.6255653006,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:'Lou Harrison 16-tone superparticular "Ptolemy Duple"'},harrison_5:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_3:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,406.97310157871,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,490.54793493862,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_8:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,367.91095120397,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:'Lou Harrison 8-tone tuning for "Serenade for Guitar"'},harrison_cinna:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,343.38355445704,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Lou Harrison, "Incidental Music for Corneille's Cinna" (1955-56) 1/1=C`},harrison_diat:{frequencies:[261.6255653006,274.70684356563,313.95067836072,348.83408706747,392.4383479509,412.06026534844,470.92601754108,523.2511306012],description:"From Lou Harrison, a soft diatonic"},harrison_joy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Lou Harrison's Joyous 6"},harrison_mid:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Lou Harrison mid mode"},harrison_mid2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"Lou Harrison mid mode 2"},harrison_min:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"From Lou Harrison, a symmetrical pentatonic with minor thirds"},harrison_mix1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,425.14154361347,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix2:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix3:{frequencies:[261.6255653006,313.95067836072,336.37572681506,392.4383479509,418.60090448096,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix4:{frequencies:[261.6255653006,280.31310567921,327.03195662575,392.4383479509,448.50096908674,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_songs:{frequencies:[261.6255653006,271.31540105247,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'Shared gamut of "Four Strict Songs" (1951-55), each pentatonic'},harrisonj:{frequencies:[261.6255653006,272.17712546173,292.13970819848,313.56642833783,326.21280531667,350.13858362887,364.25994396351,390.97625694066,406.744629928,436.57694340361,468.59728067062,487.49616921257,523.2511306012],description:"John Harrison's temperament (1775), almost 3/10-comma. Third = 1200/pi"},harrisonm_rev:{frequencies:[261.6255653006,257.53766584278,294.32876096318,289.72987407313,331.11985608357,343.38355445704,372.50983809402,392.4383479509,386.30649876417,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:'Michael Harrison, piano tuning for "Revelation" (2001), 1/1=F'},haverstick13:{frequencies:[261.6255653006,283.85429714132,301.75671459889,307.97166902637,320.78822215662,341.02002673508,362.52783176564,377.61479489998,401.43059675514,426.7484383229,444.50800708553,482.27514684959,502.34551296122,523.2511306012],description:"Neil Haverstick, scale in 34-tET, MMM 21-5-2006"},hawkes:{frequencies:[261.6255653006,274.56549986328,292.86986732103,310.24975557428,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901507992,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1807)"},hawkes2:{frequencies:[261.6255653006,275.15193010334,293.04845178801,312.10900487995,328.24542585003,349.59527202198,367.66978141816,391.58387939843,411.8292495232,438.61558204759,467.14415995873,491.2960898965,523.2511306012],description:"Meantone with fifth tempered 1/6 of 53-tET step by William Hawkes (1808)"},hawkes3:{frequencies:[261.6255653006,274.56549986328,292.86986732103,311.6193417424,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1811)"},hbarnes:{frequencies:[261.6255653006,276.71351472429,293.33333347996,310.95136287868,328.88393162803,349.42547049952,369.15973155124,391.77416758435,414.83597850347,439.25532436715,466.16376151809,493.04743111995,523.2511306012],description:"Variation on Barnes with 1/6P -> 1/8P. OdC '99"},hebdome1:{frequencies:[261.6255653006,265.71346475842,267.23182741418,269.80136421624,273.30527803723,280.31310567921,283.42769574232,287.78812183066,289.07289023169,292.28481123426,294.32876096318,300.63580584096,303.67253115248,308.34441624714,311.77046531655,315.35224388912,318.85615771011,323.76163705949,327.03195662575,334.03978426773,336.37572681506,340.11323489078,341.63159754654,346.88746827803,350.74177348112,359.73515228832,364.40703738298,367.91095120397,370.01329949656,375.7947573012,382.62738925213,385.43052030892,389.71308164569,392.4383479509,400.84774112128,404.70204632437,409.95791705585,411.12588832951,417.54973033466,420.46965851882,425.14154361347,431.68218274599,437.28844485957,441.49314144476,445.38637902364,449.66894036041,455.50879672872,462.5166243707,467.65569797482,470.92601754108,478.28423656516,479.64686971777,485.87604984397,490.54793493862,501.0596764016,504.56359022259,510.16985233617,513.90736041189,523.2511306012],description:"Wilson 1.3.5.7.9.11.13.15 hebdomekontany, 1.3.5.7 tonic"},helmholtz:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Helmholtz's Chromatic scale and Gipsy major from Slovakia"},helmholtz_24:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,331.11985608357,344.91651675372,348.83408706747,367.91095120397,372.50983809402,388.03108134794,392.4383479509,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,517.37477513058,523.2511306012],description:"Simplified Helmholtz 24"},helmholtz_hd:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Helmholtz Harmonic Decad"},helmholtz_pure:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,330.74639366397,344.91651675372,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,413.43299207996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,496.11959049595,516.79124009995,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning untempered"},helmholtz_temp:{frequencies:[261.6255653006,275.81645389904,279.10671937395,290.77707354032,294.24580701304,306.54917537161,310.20605716322,327.03195662575,330.9330448436,344.77062435684,348.88325535732,367.80710710303,372.19474608839,387.75741156435,392.38304142029,408.78994578219,413.66637442451,436.10414127513,441.30625330017,459.75895986689,465.24324076996,490.4788828408,496.3296094287,517.08305349316,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning"},hem_chrom:{frequencies:[261.6255653006,269.55361273395,285.40970760065,348.83408706747,392.4383479509,404.33041910093,428.11456140098,523.2511306012],description:"Hemiolic Chromatic genus has the strong or 1:2 division of the 12/11 pyknon"},hem_chrom11:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"11'al Hemiolic Chromatic genus with a CI of 11/9, Winnington-Ingram"},hem_chrom13:{frequencies:[261.6255653006,272.09058791262,283.42769574232,348.83408706747,392.4383479509,408.13588186894,425.14154361347,523.2511306012],description:"13'al Hemiolic Chromatic or neutral-third genus has a CI of 16/13"},hem_chrom2:{frequencies:[261.6255653006,269.29177952703,285.30470202322,349.22823143301,391.99543598175,403.48177901006,427.47405410759,523.2511306012],description:"1:2 Hemiolic Chromatic genus 3 + 6 + 21 parts"},hemiwuer24:{frequencies:[261.6255653006,274.60778382002,280.48822448524,286.49458884928,292.62957327549,307.15025309186,313.72755695954,320.44570714783,327.30771955335,350.90592546776,358.42021185082,366.09540888186,373.9349620795,392.49012653442,400.89489544613,409.47964376542,418.24822532303,439.00227453173,448.4030528436,458.00513880662,467.8128437444,491.02635713596,501.54117720983,512.28116095218,523.2511306012],description:"Hemiw\xEF\xBF\xBDrschmidt[24] in 229-tET tuning."},hen12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Adjusted Hahn12"},hen22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,415.27867508032,418.60090448096,436.04260883433,448.50096908674,457.84473927605,484.4917875937,490.54793493862,508.71637697339,523.2511306012],description:"Adjusted Hahn22"},hept_diamond:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,316.53463456122,325.57848126297,327.03195662575,334.88072358477,336.37572681506,348.83408706747,392.4383479509,406.97310157871,408.78994578219,418.60090448096,420.46965851882,432.48307733364,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Inverted-Prime Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondi:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,281.36411960997,289.40309445597,294.32876096318,297.67175429757,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,459.88868900496,465.11211608996,473.02836583367,486.54346200035,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Prime-Inverted Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondp:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,361.75386806997,367.91095120397,372.08969287196,378.42269266694,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Heptatonic Diamond based on Archytas's Enharmonic, 27 tones"},herf:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Sims:Reflections on This and That, 1991. Used by Herf in Ekmelischer Gesang"},heun:{frequencies:[261.6255653006,275.15237829755,293.0485888979,312.10878854255,328.24573110938,349.59519124833,367.67029324081,391.58396987353,411.83001550364,438.61588607285,467.14394139401,491.29666030217,523.2511306012],description:"Well temperament for organ of Jan Heun (1805), subset of 55-tET"},hexagonal13:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 13-tone scale"},hexagonal37:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,313.95067836072,322.99452506247,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 37-tone scale"},hexany1:{frequencies:[261.6255653006,305.22982618403,327.03195662575,381.53728273004,436.04260883433,457.84473927605,523.2511306012],description:"Two out of 1 3 5 7 hexany on 1.3"},hexany10:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"1.3.5.9 Hexany"},hexany11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"1.3.7.9 Hexany on 1.3"},hexany12:{frequencies:[261.6255653006,290.69507255622,305.22982618403,339.14425131559,406.97310157871,436.04260883433,523.2511306012],description:"3.5.7.9 Hexany on 3.9"},hexany13:{frequencies:[261.6255653006,285.40970760065,327.03195662575,356.76213450082,392.4383479509,475.68284600109,523.2511306012],description:"1.3.5.11 Hexany on 1.11"},hexany14:{frequencies:[261.6255653006,287.78812183066,340.11323489078,383.71749577421,453.48431318771,498.83274450648,523.2511306012],description:"5.11.13.15 Hexany (5.15), used in The Giving, by Stephen J. Taylor"},hexany15:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"1.3.5.15 2)4 hexany (1.15 tonic) degenerate, symmetrical pentatonic"},hexany16:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,465.11211608996,523.2511306012],description:"1.3.9.27 Hexany, a degenerate pentatonic form"},hexany17:{frequencies:[261.6255653006,327.03195662575,334.88072358477,408.78994578219,418.60090448096,523.2511306012],description:"1.5.25.125 Hexany, a degenerate pentatonic form"},hexany18:{frequencies:[261.6255653006,299.00064605783,341.71502406609,400.61414686654,457.84473927605,523.2511306012],description:"1.7.49.343 Hexany, a degenerate pentatonic form"},hexany19:{frequencies:[261.6255653006,299.00064605783,327.03195662575,418.60090448096,457.84473927605,523.2511306012],description:"1.5.7.35 Hexany, a degenerate pentatonic form"},hexany2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 2"},hexany20:{frequencies:[261.6255653006,279.06726965397,305.22982618403,398.6675280771,436.04260883433,465.11211608996,523.2511306012],description:"3.5.7.105 Hexany"},hexany21:{frequencies:[261.6255653006,279.06726965397,310.07474405997,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany"},hexany21a:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany + 4/3. Is Didymos Diatonic tetrachord on 1/1 and inv. on 3/2"},hexany22:{frequencies:[261.6255653006,276.76092858245,359.73515228832,380.54627680087,494.63583439645,523.2511306012],description:"1.11.121.1331 Hexany, a degenerate pentatonic form"},hexany23:{frequencies:[261.6255653006,348.83408706747,359.73515228832,380.54627680087,392.4383479509,523.2511306012],description:"1.3.11.33 Hexany, degenerate pentatonic form"},hexany24:{frequencies:[261.6255653006,327.03195662575,359.73515228832,380.54627680087,418.60090448096,523.2511306012],description:"1.5.11.55 Hexany, a degenerate pentatonic form"},hexany25:{frequencies:[261.6255653006,299.00064605783,359.73515228832,380.54627680087,457.84473927605,523.2511306012],description:"1.7.11.77 Hexany, a degenerate pentatonic form"},hexany26:{frequencies:[261.6255653006,294.32876096318,359.73515228832,380.54627680087,465.11211608996,523.2511306012],description:"1.9.11.99 Hexany, a degenerate pentatonic form"},hexany3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 3"},hexany4:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 4"},hexany49:{frequencies:[261.6255653006,299.00064605783,305.22982618403,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"1.3.21.49 2)4 hexany (1.21 tonic)"},hexany5:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 5"},hexany6:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 6"},hexany7:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 7"},hexany8:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,340.65828815182,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 8"},hexany9:{frequencies:[261.6255653006,299.00064605783,313.95067836072,358.80077526939,418.60090448096,448.50096908674,523.2511306012],description:"1.3.5.7 Hexany on 5.7"},hexany_cl:{frequencies:[261.6255653006,294.32876096318,301.39265122629,313.95067836072,327.03195662575,348.83408706747,353.19451315581,376.74081403286,392.4383479509,418.60090448096,470.92601754108,502.32108537715,523.2511306012],description:"Hexany Cluster 1"},hexany_cl2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Composed of 1.3.5.45, 1.3.5.75, 1.3.5.9, and 1.3.5.25 hexanies"},hexany_flank:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,327.03195662575,348.83408706747,373.75080757229,381.53728273004,427.14378008261,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Hexany Flanker, 7-limit, from Wilson"},hexany_tetr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,336.37572681506,348.83408706747,358.80077526939,523.2511306012],description:"Complex 12 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,339.14425131559,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,358.80077526939,372.08969287196,523.2511306012],description:"Complex 2 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,523.2511306012],description:"Complex 9 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_u2:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Hexany union = genus [335577] minus two corners"},hexany_union:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"The union of all of the pitches of the 1.3.5.7 hexany on each tone as 1/1"},hexany_urot:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,333.84512238879,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,392.4383479509,400.61414686654,406.97310157871,436.04260883433,445.12682985172,448.50096908674,457.84473927605,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Aggregate rotations of 1.3.5.7 hexany, 1.3 = 1/1"},hexanys:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Hexanys 1 3 5 7 9"},hexanys2:{frequencies:[261.6255653006,314.76825825228,425.14154361347,457.84473927605,269.80136421624,371.99885066179,392.4383479509,472.15238737843,318.85615771011,359.73515228832,343.38355445704,292.28481123426,523.2511306012],description:"Hexanys 1 3 7 11 13"},higgs:{frequencies:[261.6255653006,392.4383479509,418.60090448096,422.62591317789,423.58424858192,425.14154361347,436.04260883433,523.2511306012],description:"From Greg Higgs announcement of the formation of an Internet Tuning list"},hinsz_gr:{frequencies:[261.6255653006,274.68983337859,292.34127285051,310.07474405997,326.6631048533,348.83408706747,366.25311135453,391.11111150212,412.03474986192,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Reconstructed Hinsz temperament, organ Pelstergasthuiskerk Groningen. Ortgies,2002"},hipkins:{frequencies:[261.6255653006,275.62199471997,299.00064605783,348.83408706747,392.4383479509,413.43299207996,448.50096908674,523.2511306012],description:"Hipkins' Chromatic"},hirajoshi:{frequencies:[261.6255653006,291.13134764929,317.84796618517,388.16504068057,412.91271853531,523.2511306012],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.112"},hirajoshi2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"Japanese pentatonic koto scale, theoretical. Helmholz/Ellis p.519, nr.110"},hirajoshi3:{frequencies:[261.6255653006,292.47977325983,321.54118165335,396.32121331049,415.54465627623,522.94897617031],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.111"},hirashima:{frequencies:[261.6255653006,277.33928225406,292.50627485027,312.00669222389,327.03195662575,349.91912034749,369.78570985692,391.22147055517,416.00892317314,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Tatsushi Hirashima, temperament of chapel organ of Kobe Shoin Women's Univ."},hjelmboogie:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:`Paul Hjelmstad's "Boogie Woogie" scale, TL 20-3-2006`},ho_mai_nhi:{frequencies:[261.6255653006,287.78812183066,348.83408706747,392.4383479509,431.68218274599,523.2511306012],description:"Ho Mai Nhi (Nam Hue) dan tranh scale, Vietnam"},hochgartz:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.86458629683,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.49999887294,438.2147004401,465.53241962975,490.54793493862,523.2511306012],description:"Michael Hochgartz, modified 1/5-comma meantone temperament"},hofmann1:{frequencies:[261.6255653006,262.65154790962,279.06726965397,348.83408706747,392.4383479509,393.97732186443,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #1, Dorian mode"},hofmann2:{frequencies:[261.6255653006,263.56353245097,279.06726965397,348.83408706747,392.4383479509,395.34529867646,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #2, Dorian mode"},hofmann_chrom:{frequencies:[261.6255653006,264.26824777838,290.69507255622,348.83408706747,392.4383479509,396.40237166758,436.04260883433,523.2511306012],description:"Hofmann's Chromatic"},holder:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,409.94826565972,437.46806069696,467.28984664562,489.70152554512,523.2511306012],description:"William Holder's equal beating meantone temperament (1694). 3/2 beats 2.8 Hz"},holder2:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,410.64811919433,437.46806069696,467.46154552107,489.70152554512,523.2511306012],description:"Holder's irregular e.b. temperament with improved Eb and G#"},hummel:{frequencies:[261.6255653006,277.1703574486,293.54676487235,311.03465677994,329.45811370906,349.13199096171,369.8583804246,391.99149393462,415.308682162,439.8732919971,466.10512967869,493.74031485884,523.2511306012],description:"Johann Nepomuk Hummel's quasi-equal temperament (1829)"},hummel2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"Johann Nepomuk Hummel's temperament according to the second bearing plan"},husmann:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747],description:"Tetrachord division according to Husmann"},hwerck3:{frequencies:[261.6255653006,276.40121172404,293.00227310437,310.60041853231,328.69828757761,349.03110370139,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Variation on Werckmeister III with 1/4P -> 1/6P and 0P -> 1/24P. OdC '99"},hyper_enh:{frequencies:[261.6255653006,264.93728131706,268.33391312882,348.83408706747,392.4383479509,397.40592197559,402.50086969323,523.2511306012],description:"13/10 HyperEnharmonic. This genus is at the limit of usable tunings"},hyper_enh2:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Hyperenharmonic genus from Kathleen Schlesinger's enharmonic Phrygian Harmonia"},hypo_chrom:{frequencies:[261.6255653006,275.39533189537,282.83844897362,290.69507255622,348.83408706747,373.75080757229,387.59343007496,402.50086969323,418.60090448096,427.14378008261,436.04260883433,455.00098313148,523.2511306012],description:"Hypolydian Chromatic Tonos"},hypo_diat:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012],description:"Hypolydian Diatonic Tonos"},hypo_enh:{frequencies:[261.6255653006,268.33391312882,271.81876914348,275.39533189537,348.83408706747,373.75080757229,387.59343007496,402.50086969323,410.39304360878,414.45634107026,418.60090448096,465.11211608996,523.2511306012],description:"Hypolydian Enharmonic Tonos"},hypod_chrom:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012],description:"Hypodorian Chromatic Tonos"},hypod_chrom2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chrom2inv:{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chromenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Hypodorian Harmonia in a mixed chromatic-enharmonic genus"},hypod_chrominv:{frequencies:[261.6255653006,277.97716313189,294.32876096318,359.73515228832,392.4383479509,408.78994578219,425.14154361347,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypodorian Inverted"},hypod_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012],description:"Hypodorian Diatonic Tonos"},hypod_diat2:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Schlesinger's Hypodorian Harmonia, a subharmonic series through 13 from 16"},hypod_diatcon:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,418.60090448096,465.11211608996,523.2511306012],description:"A Hypodorian Diatonic with its own trite synemmenon replacing paramese"},hypod_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Hypodorian Harmonia, a harmonic series from 8 from 16"},hypod_enh:{frequencies:[261.6255653006,270.06509966514,274.49239638096,279.06726965397,310.07474405997,348.83408706747,364.00078650518,380.54627680087,389.39619021485,393.97732186443,398.6675280771,452.54151835779,523.2511306012],description:"Hypodorian Enharmonic Tonos"},hypod_enhinv:{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypodorian Harmonia"},hypod_enhinv2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,359.73515228832,392.4383479509,400.61414686654,408.78994578219,523.2511306012],description:"A harmonic form of Schlesinger's Hypodorian enharmonic inverted"},hypodorian_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,784.8766959018,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the Hypodorian Tonos"},hypol_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the chromatic genus"},hypol_chrominv:{frequencies:[261.6255653006,313.95067836072,327.03195662575,340.11323489078,366.27579142084,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypolydian Harmonia"},hypol_chrominv2:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,523.2511306012],description:"harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_chrominv3:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_diat:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"Schlesinger's Hypolydian Harmonia, a subharmonic series through 13 from 20"},hypol_diatcon:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"A Hypolydian Diatonic with its own trite synemmenon replacing paramese"},hypol_diatinv:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Inverted Schlesinger's Hypolydian Harmonia, a harmonic series from 10 from 20"},hypol_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the enharmonic genus"},hypol_enhinv:{frequencies:[261.6255653006,327.03195662575,333.57259575826,340.11323489078,366.27579142084,392.4383479509,497.08857407114,510.16985233617,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypolydian Harmonia"},hypol_enhinv2:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,366.27579142084,379.35706968587,392.4383479509,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_enhinv3:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_pent:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,373.75080757229,402.50086969323,415.27867508032,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the pentachromatic genus"},hypol_tri:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,373.75080757229,402.50086969323,413.09299784305,424.25767346043,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the first trichromatic genus"},hypol_tri2:{frequencies:[261.6255653006,270.64713651786,290.69507255622,348.83408706747,373.75080757229,402.50086969323,413.09299784305,436.04260883433,2093.0045224048],description:"Schlesinger's Hypolydian Harmonia in the second trichromatic genus"},hypolydian_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,406.97310157871,457.84473927605,488.36772189445,523.2511306012,563.50121757052,610.45965236807,665.95598440153,732.55158284168,813.94620315742,915.6894785521,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypolydian Tonos"},hypop_chrom:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012],description:"Hypophrygian Chromatic Tonos"},hypop_chromenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia in a mixed chromatic-enharmonic genus"},hypop_chrominv:{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,377.90359432309,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypophrygian Harmonia"},hypop_chrominv2:{frequencies:[261.6255653006,276.16031892841,290.69507255622,348.83408706747,377.90359432309,406.97310157871,436.04260883433,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypophrygian inverted"},hypop_diat:{frequencies:[261.6255653006,294.32876096318,303.82323712328,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"Hypophrygian Diatonic Tonos"},hypop_diat2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia"},hypop_diat2inv:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,436.04260883433,465.11211608996,523.2511306012],description:"Inverted Schlesinger's Hypophrygian Harmonia, a harmonic series from 9 from 18"},hypop_diatcon:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012],description:"A Hypophrygian Diatonic with its own trite synemmenon replacing paramese"},hypop_enh:{frequencies:[261.6255653006,269.10058145205,273.00058987889,277.01530443593,313.95067836072,362.25078272391,376.74081403286,392.4383479509,400.78810003496,405.0976494977,409.50088481833,470.92601754108,523.2511306012],description:"Hypophrygian Enharmonic Tonos"},hypop_enhinv:{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,377.90359432309,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypophrygian Harmonia"},hypop_enhinv2:{frequencies:[261.6255653006,268.89294211451,276.16031892841,348.83408706747,377.90359432309,392.4383479509,406.97310157871,523.2511306012],description:"A harmonic form of Schlesinger's Hypophrygian enharmonic inverted"},hypophryg_pis:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,377.90359432309,425.14154361347,453.48431318771,523.2511306012,544.18117582525,566.85539148463,618.38769980142,680.22646978156,755.80718864618,850.28308722695,971.75209968794,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypophrygian Tonos"},kanzelmeyer_11:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 11 harmonics from 16 to 32. Base 388.3614815 Hz"},kanzelmeyer_18:{frequencies:[261.6255653006,277.97716313189,302.50455987882,310.68035879446,327.03195662575,335.20775554139,351.55935337268,359.73515228832,376.08675011961,384.26254903526,392.4383479509,425.14154361347,433.31734252912,457.84473927605,474.19633710734,482.37213602298,498.72373385427,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 18 harmonics from 32 to 64. Base 388.3614815 Hz"},kayolonian:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"19-tone 5-limit scale of the Kayenian Imperium on Kayolonia (reeks van Sjauriek)"},kayolonian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"See Barnard: De Keiaanse Muziek, p. 11. (uitgebreide reeks)"},kayolonian_40:{frequencies:[261.6255653006,267.90457886781,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,319.36714514233,327.03195662575,331.11985608357,334.88072358477,340.65828815182,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,401.85686830172,408.78994578219,413.43299207996,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,496.11959049595,502.32108537715,510.98743222773,523.2511306012],description:"See Barnard: De Keiaanse Muziek"},kayolonian_f:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"Kayolonian scale F and periodicity block (128/125, 16875/16384)"},kayolonian_p:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale P"},kayolonian_s:{frequencies:[261.6255653006,287.4304306281,306.59245933664,327.03195662575,359.28803828513,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale S"},kayolonian_t:{frequencies:[261.6255653006,279.06726965397,297.67175429757,317.51653791741,348.83408706747,381.01984550089,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale T"},kayolonian_z:{frequencies:[261.6255653006,279.06726965397,297.67175429757,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale Z"},kayoloniana:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"Amendment by Rasch of Kayolonian scale's note 9"},"kebyar-b":{frequencies:[261.6255653006,280.40333801024,299.48910562989,384.37207420335,402.78320381033,523.2511306012],description:"Gamelan Kebyar tuning begbeg, Andrew Toth, 1993"},"kebyar-s":{frequencies:[261.6255653006,283.00682726281,309.51375468789,385.26118901859,416.26536455926,523.2511306012],description:"Gamelan kebyar tuning sedung, Andrew Toth, 1993"},"kebyar-t":{frequencies:[261.6255653006,293.15632631094,325.27731021818,397.46748834812,422.07621250312,523.2511306012],description:"Gamelan kebyar tuning tirus, Andrew Toth, 1993"},keenan:{frequencies:[261.6255653006,279.77706779472,292.57243455474,305.95298478736,327.17991022208,349.87955533643,365.88099775759,391.26571058456,418.41160951721,437.54730686196,457.55816161244,489.30340830564,523.2511306012],description:"Dave Keenan 31-ET mode has 3 4:5:6:7 tetrads + 3 inv. is Fokker's 12-tone mode"},keenan2:{frequencies:[261.6255653006,278.14493936283,295.70736791055,306.84360659709,326.21810583671,346.81593583087,369.99442271164,393.35634555235,418.19337019276,433.94238997708,461.34206956593,490.47180009913,523.2511306012],description:"Dave Keenan strange 9-limit temperament TL 19-11-98"},keenan3:{frequencies:[261.6255653006,272.10155294862,282.99701916355,314.19580976213,326.77681046955,339.86157848985,377.32935907335,392.4383479509,408.1523292189,453.14877154631,471.29371440761,523.2511306012],description:"Chain of 1/6 kleisma tempered 6/5s, 10 tetrads, Dave Keenan, 30-Jun-99, TD235"},keenan3eb:{frequencies:[261.6255653006,272.52625793573,283.88113057344,314.31833892864,327.41448875753,341.05629284549,377.62371824792,393.35750206077,409.74683779238,453.67913385439,472.5817850056,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 same"},keenan3eb2:{frequencies:[261.6255653006,271.88912362492,282.55531921581,314.13446783,326.45794787121,339.26487744082,377.18204004818,391.97887331053,407.35618327602,452.88341485066,470.6500094,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 opposite"},keenan3j:{frequencies:[261.6255653006,291.88463270656,302.72962012827,313.97755176024,350.29154279212,363.30663963964,405.32593044476,420.38583225541,436.00528786292,486.43275040712,504.50618240233,523.2511306012],description:"Chain of 11 nearly just 19-tET minor thirds, Dave Keenan, 1-Jul-99"},keenan7:{frequencies:[261.6255653006,269.29177952703,279.86396690685,288.06460709314,296.5055443788,305.19382000629,314.13668154225,326.46944327063,336.03572815422,349.22823143301,359.46139971304,369.99442271164,380.8360868427,391.99543598175,407.38487419079,419.32216217931,435.78442404634,448.5538823653,461.69751437372,475.22628419761,489.15147723638,508.3551866238,523.2511306012],description:"Dave Keenan, 22 out of 72-tET periodicity block. TL 29-04-2001"},keenanmt:{frequencies:[261.6255653006,279.93529690293,292.50627485027,305.64177427204,327.03195662575,349.91912034749,365.63284274659,391.22147055517,418.60090448096,437.39890198442,457.04105241293,489.02683710225,523.2511306012],description:"Dave Keenan 1/4-comma tempered version of keenan with 6 7-limit tetrads"},keenanst:{frequencies:[261.6255653006,268.50609092997,277.46533822773,286.72352888229,294.26410920268,304.08282473376,314.22916151277,322.49311613356,333.25374941849,342.01803421352,353.43015577174,365.22306367425,374.82811589307,387.33500976677,397.52158713557,410.7856943143,424.4923875554,435.65616946139,450.19271626925,462.0323945472,477.44903730562,493.38008744487,506.35555615636,523.2511306012],description:"Dave Keenan, 7-limit temperament, g=260.353"},kelletat:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,327.14272545641,348.82502010853,367.43868454848,391.99543598175,413.39000965417,437.97145880542,465.08793784701,489.90551202062,523.2511306012],description:"Herbert Kelletat's Bach-tuning (1967)"},kellner:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,491.32444638706,523.2511306012],description:"Herbert Anton Kellner's Bach tuning. 5 1/5 Pyth. comma and 7 pure fifths"},kellners:{frequencies:[261.6255653006,275.84425785506,292.86986732103,310.2247482054,327.84547867349,348.89032888179,367.85164222246,391.46454285105,413.69968681881,438.2147004401,465.26210635182,491.68894399626,523.2511306012],description:"Kellner's temperament with 1/5 synt. comma instead of 1/5 Pyth. comma"},kepler1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.1, Harmonices Mundi (1619)"},kepler2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.2"},kepler3:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Kepler's choice system, Harmonices Mundi, Liber III (1619)"},kilroy:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Kilroy"},kimball:{frequencies:[261.6255653006,272.52663052146,275.93321340298,290.69507255622,294.32876096318,306.59245933664,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Buzz Kimball 18-note just scale"},kimball_53:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,281.75060878526,283.42769574232,285.40970760065,287.78812183066,296.50897400735,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,461.69217405988,475.68284600109,479.64686971777,483.00104363188,485.87604984397,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Buzz Kimball 53-note just scale"},kirkwood:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Scale based on Kirkwood gaps of the asteroid belt"},"kirn-stan":{frequencies:[261.6255653006,276.16031892841,292.60754013883,310.68035879446,327.03195662575,348.83408706747,368.21375857121,392.4383479509,414.24047839262,437.1900893839,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger temperament improved by Charles Earl Stanhope (1806)"},kirnberger:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's well-temperament, also called Kirnberger III, letter to Forkel 1779"},kirnberger1:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,438.75944753732,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's temperament 1 (1766)"},kirnberger2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,438.75941205608,465.11211608996,490.54793493862,523.2511306012],description:'Kirnberger 2: 1/2 synt. comma. "Die Kunst des reinen Satzes" (1774)'},kirnberger3:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.89982010446,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger 3: 1/4 synt. comma (1744)"},kirnberger3v:{frequencies:[261.6255653006,275.93321340298,292.50063201309,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.21579858034,413.43299207996,437.39258595147,465.11211608996,490.54793493862,523.2511306012],description:"Variant well-temperament like Kirnberger 3, Kenneth Scholz, MTO 4.4, 1998"},klais:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,327.21690075602,348.83408706747,367.49599295996,391.99543598175,413.43299207996,438.01699797506,465.11211608996,489.99465727995,523.2511306012],description:"Johannes Klais, Bach temperament"},klonaris:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Johnny Klonaris, 19-limit harmonic scale"},knot:{frequencies:[261.6255653006,268.26840191956,280.31310567921,286.15296204753,294.32876096318,299.00064605783,306.59245933664,327.03195662575,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,459.88868900496,476.92160341255,478.40103369253,490.54793493862,523.2511306012],description:"Smallest knot in 3-D, American Scientist, Nov-Dec '97 p506-510, trefoil knot"},koepf_36:{frequencies:[261.6255653006,272.26348829648,274.95017225036,277.18263097687,288.45311779165,291.29956028699,293.66476791741,305.60543275312,308.62113352716,311.12698372208,323.77767743764,326.97270111135,329.62755691287,343.03050002254,346.41550969045,349.22823143301,363.4281550135,367.0144478307,369.99442271164,385.03871768789,388.83826257328,391.99543598175,407.93431128975,411.95978887118,415.30469757995,432.19134773437,436.45619266906,440,457.89078262597,462.40922843744,466.16376151809,485.11838543951,489.90551202062,493.88330125613,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 36-tone subset of 48-tone scale (1991)"},koepf_48:{frequencies:[261.6255653006,269.44737349144,272.26348829648,274.95017225036,277.18263097687,285.46954808622,288.45311779165,291.29956028699,293.66476791741,302.44445076078,305.60543275312,308.62113352716,311.12698372208,320.42873367481,323.77767743764,326.97270111135,329.62755691287,339.48241770075,343.03050002254,346.41550969045,349.22823143301,359.66909273781,363.4281550135,367.0144478307,369.99442271164,381.0561299374,385.03871768789,388.83826257328,391.99543598175,403.71490654806,407.93431128975,411.95978887118,415.30469757995,427.72104413038,432.19134773437,436.45619266906,440,453.15466093696,457.89078262597,462.40922843744,466.16376151809,480.10063929961,485.11838543951,489.90551202062,493.88330125613,508.64890891624,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 48-tone scale (1991)"},kolinsky:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Kolinsky's 7th root of 3/2, also invented by Augusto Novaro"},kora1:{frequencies:[261.6255653006,293.66476791741,326.78388880949,349.22823143301,391.99543598175,440,489.62261321254,523.2511306012],description:"Kora tuning Tomora Ba, also called Silaba, 1/1=F, R. King"},kora2:{frequencies:[261.6255653006,298.79793764201,315.65242990842,349.22823143301,391.99543598175,447.69106452518,472.94426956511,523.2511306012],description:"Kora tuning Tomora Mesengo, also called Tomora, 1/1=F, R. King"},kora3:{frequencies:[261.6255653006,291.13134764929,330.58093469714,349.22823143301,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Hardino, 1/1=F, R.King"},kora4:{frequencies:[261.6255653006,291.13134764929,330.58093469714,371.06455309218,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Sauta, 1/1=F, R. King"},korea_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:'According to Lou Harrison, called "the Delightful" in Korea'},kornerup:{frequencies:[261.6255653006,272.97226153513,280.22976278938,292.38332274669,305.0639823888,313.17470478367,326.75708630452,340.92853547661,349.99278713323,365.17196824772,374.88056242272,391.13935185123,408.10305876469,418.95303445734,437.12302030357,456.08130156398,468.2068441924,488.51296691354,509.70006023951,523.2511306012],description:"Kornerup's temperament with fifth of (15 - sqrt 5) / 22 octaves"},kornerup_11:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Kornerup's doric minor"},kraeh_22:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,320.49131749323,336.37572681506,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,400.61414686654,412.06026534844,436.04260883433,441.49314144476,457.84473927605,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Kraehenbuehl & Schmidt 7-limit 22-tone tuning"},kraeh_22a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,318.93402246168,320.49131749323,327.03195662575,336.37572681506,343.38355445704,348.83408706747,350.39138209902,353.19451315581,358.80077526939,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,400.61414686654,403.65087217807,408.78994578219,412.06026534844,418.60090448096,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,478.40103369253,488.36772189445,490.54793493862,498.33441009638,504.56359022259,523.2511306012],description:'Kraehenbuehl & Schmidt 7-limit 22-tone tuning with "inflections" for some tones'},kraeh_22b:{frequencies:[261.6255653006,269.10058145205,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,448.50096908674,457.84473927605,476.92160341255,490.54793493862,504.56359022259,523.2511306012],description:"Best 22-tET approximation of KRAEH_22A"},kring1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Double-tie circular mirroring of 4:5:6 and Partch's 5-limit tonality Diamond"},kring1p3:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,310.07474405997,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,441.49314144476,446.50763144636,454.2110508691,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Third carthesian power of double-tie mirroring of 4:5:6 with kleismas removed"},kring2:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,392.4383479509,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 6:7:8"},kring2p3:{frequencies:[261.6255653006,265.7783520514,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,515.07533168556,523.2511306012],description:"Third power of 6:7:8 mirroring with 1029/1024 intervals removed"},kring3:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,373.75080757229,436.04260883433,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 3:5:7"},kring3bp:{frequencies:[261.6255653006,336.37572681506,366.27579142084,436.04260883433,470.92601754108,560.62621135843,610.45965236807,784.8766959018],description:"Double-tie BP circular mirroring of 3:5:7"},kring4:{frequencies:[261.6255653006,299.00064605783,327.03195662575,366.27579142084,373.75080757229,418.60090448096,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 4:5:7"},kring4p3:{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.42990280658,286.15296204753,293.02063313667,299.00064605783,305.10270005901,320.49131749323,327.03195662575,334.88072358477,341.71502406609,350.53737850823,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.53145607553,400.61414686654,408.78994578219,418.60090448096,427.14378008261,448.68784449053,457.84473927605,467.18850946536,478.40103369253,488.16432009441,500.76768358318,510.98743222773,523.2511306012],description:"Third power of 4:5:7 mirroring with 3136/3125 intervals removed"},kring5:{frequencies:[261.6255653006,290.69507255622,336.37572681506,366.27579142084,373.75080757229,406.97310157871,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 5:7:9"},kring5p3:{frequencies:[261.6255653006,266.96486255163,272.4643387202,278.02483542877,284.8811711051,290.69507255622,296.68339105088,302.73815413355,308.91648380975,316.53463456122,322.99452506247,329.64821227876,336.37572681506,343.24053756638,351.70514951247,358.88280562497,366.27579142084,373.75080757229,381.45007420827,389.23476960028,398.83363954714,406.97310157871,415.27867508032,423.83341578697,432.48307733364,443.14848838571,452.19233508746,461.42075008924,470.92601754108,480.53675259294,492.38720931745,502.43592787495,512.78610798918,523.2511306012],description:"Third power of 5:7:9 mirroring with 250047/250000 intervals removed"},kring6:{frequencies:[261.6255653006,305.22982618403,336.37572681506,348.83408706747,392.4383479509,406.97310157871,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 6:7:9"},kring6p3:{frequencies:[261.6255653006,267.07609791103,271.31540105247,276.96780524107,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,316.53463456122,324.36230800023,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,361.75386806997,369.29040698809,378.42269266694,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,422.04617941496,432.48307733364,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,494.26637409559,504.56359022259,512.57253609913,523.2511306012],description:"Third power of 6:7:9 mirroring with 118098/117649 intervals removed"},krousseau:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,343.38355445704,348.83408706747,366.27579142084,392.4383479509,406.97310157871,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Kami Rousseau's tri-blues scale"},krousseau2:{frequencies:[261.6255653006,271.34627406517,291.88463270656,302.72962012827,337.74269681563,350.29154279212,363.30663963964,390.80553229045,405.32593044476,452.20508247496,469.00678383895,486.43275040712,523.2511306012],description:"19-tET version of Kami Rousseau's tri-blues scale"},kukuya:{frequencies:[261.6255653006,307.37578701508,361.96165147221,412.67427966689,460.80941404108],description:"African Kukuya Horns (aerophone, ivory, one note only)"},kurzw_arab:{frequencies:[261.6255653006,282.02769802256,290.29174037004,302.26980244078,321.16993719469,349.63190883464,374.94271441196,393.35634555235,411.95978887118,429.20598402782,447.69106452518,496.7443381147,523.2511306012],description:'Kurzweil "Empirical Arabic"'},kurzw_harmp:{frequencies:[261.6255653006,285.46954808622,287.62123438446,306.48933163909,308.79945157961,324.90175210669,345.81573716922,348.42227432308,427.72104413038,430.94493093825,458.94995811222,462.40922843744,523.2511306012],description:'Kurzweil "Empirical Bali/Java Harmonic Pelog"'},kurzw_melp:{frequencies:[261.6255653006,281.53940445957,283.98935579354,303.66981774726,307.02089761314,323.96475278212,344.02264297658,347.0163224393,421.10213511252,424.76655906637,451.06547253417,454.99063696457,523.2511306012],description:'Kurzweil "Empirical Bali/Java Melodic Pelog"'},kurzw_slen:{frequencies:[261.6255653006,266.96862289802,288.95340229325,306.66641795878,318.95145438803,352.26720984209,352.26720984209,389.06292924114,404.41509766528,429.20598402782,464.81937009253,474.03826620294,523.2511306012],description:'Kurzweil "Empirical Bali/Java Slendro, Siam 7"'},kurzw_tibet:{frequencies:[261.6255653006,270.53905136894,299.14332201883,312.9293240034,325.46525203475,353.69443592699,373.86139962101,397.69714089209,408.87792937274,438.98455767189,471.30800669535,489.90551202062,523.2511306012],description:'Kurzweil "Empirical Tibetian Ceremonial"'},kwazy:{frequencies:[13.75,13.8425266748,13.92142234948,14.00076777204,14.0805654254,14.16081788707,14.25610896047,14.337361936,14.41907801447,14.50125983535,14.58391005315,14.66703125278,14.76572882594,14.84988638999,14.93452361174,15.01964313826,15.10524789197,15.20689431811,15.29356631363,15.38073220905,15.46839499707,15.55655742089,15.66124080485,15.75050226619,15.84027256598,15.93055451337,16.0213510245,16.11266503216,16.22109048883,16.31354291552,16.40652227664,16.50003157548,16.59407373656,16.70573878851,16.80095347779,16.89671084507,16.99301388521,17.08986590459,17.18726993397,17.30292672931,17.40154500258,17.50072545316,17.60047118468,17.70078541898,17.81989766631,17.92146252619,18.023606257,18.12633215803,18.22964354736,18.35231459047,18.45691397115,18.56210951808,18.66790462912,18.77430261304,18.88130712282,19.00836345475,19.11670199894,19.22565790976,19.335234928,19.44543648263,19.57628896102,19.68786429416,19.80007566685,19.91292659048,20.02642071019,20.16118263857,20.27609169854,20.39165568498,20.50787833065,20.62476338959,20.74231451743,20.88189396397,21.00091073243,21.12060583931,21.24098302814,21.36204643183,21.50579618625,21.62836889778,21.75164008927,21.875613993,22.00029448845,22.14833914981,22.27457391904,22.40152829449,22.52920624893,22.65761190639,22.78674941445,22.94008616579,23.07083364148,23.202326315,23.33456843363,23.46756413327,23.62548236417,23.76013626908,23.89555763659,24.03175070206,24.16872014141,24.30647024079,24.47003364934,24.60950094889,24.74976328722,24.89082505353,25.03269080417,25.2011409598,25.3447753621,25.48922841152,25.63450477396,25.78060914191,25.95409219477,26.10201805756,26.25078702673,26.40040390759,26.55087337946,26.70220060843,26.88188539622,27.03509923475,27.18918616153,27.34415146685,27.5],description:"Kwazy temperament, g=162.741892, p=600, 5-limit"},lambdoma5_12:{frequencies:[261.6255653006,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,47.56828460011,52.32511306012,58.13901451124,65.40639132515,71.35242690016,74.75016151446,78.48766959018,87.20852176687,95.13656920022,98.10958698772,104.65022612024,109.01065220858,112.12524227169,116.27802902249,118.92071150027,130.8127826503,145.34753627811,149.50032302891,156.97533918036,163.51597831288,174.41704353373,186.87540378614,196.21917397545,209.30045224048,218.02130441717,261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012,654.0639132515,784.8766959018,1046.5022612024,1308.127826503],description:"5x12 Lambdoma"},lambdoma_prim:{frequencies:[261.6255653006,8.43953436454,9.02157121726,11.37502457829,13.76976659477,15.38973913533,16.87906872907,18.04314243452,20.12504348466,22.75004915657,23.78414230005,25.31860309361,27.06471365179,27.53953318954,30.77947827066,34.12507373486,37.37508075723,40.25008696932,41.30929978431,42.19767182268,45.10785608631,46.16921740599,47.56828460011,52.32511306012,56.87512289143,59.07674055175,60.37513045398,63.15099852083,68.84883297384,71.35242690016,74.75016151446,76.94869567665,79.62517204801,87.20852176687,96.38836616338,100.62521742331,104.65022612024,107.72817394731,112.12524227169,118.92071150027,130.8127826503,140.87530439263,156.97533918036,166.48899610038,174.41704353373,186.87540378614,261.6255653006,366.27579142084,392.4383479509,436.04260883433,523.2511306012,610.45965236807,654.0639132515,784.8766959018,915.6894785521,1308.127826503,1831.3789571042],description:"Prime Lambdoma"},lambert:{frequencies:[261.6255653006,276.15600972046,293.19138048956,310.67551062492,328.56569462012,349.50994910362,368.20801314466,391.67947347082,414.23401437362,438.93663604468,466.01326570444,491.89550004992,523.2511306012],description:"Lambert's temperament (1774) 1/7 Pyth. comma, 5 pure"},lara:{frequencies:[261.6255653006,286.4606265643,298.28060863281,313.11013128311,341.05478972476,377.11473546037,395.40657391157,420.13030572059,450.02449304881,492.74350578058,523.2511306012,577.23956595248,599.67057787333],description:"Sundanese 'multi-laras' gamelan Ki Barong tuning, Weintraub, TL 15-2-99 1/1=497"},lebanon:{frequencies:[261.6255653006,285.30470202322,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Lebanese scale? Dastgah Shur"},leedy:{frequencies:[261.6255653006,269.80136421624,290.69507255622,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:'Douglas Leedy, scale for "Pastorale" (1987), 1/1=f, 10/9 only in vocal parts'},leeuw1:{frequencies:[261.6255653006,311.12698372208,349.22823143301,380.8360868427,415.30469757995,466.16376151809,508.3551866238,554.36526195375,604.53960488156,659.25511382574,739.98884542327,806.96355802011,880,987.76660251225],description:'Ton de Leeuw: non-oct. mode from "Car nos vignes sont en fleurs",part 5. 1/1=A'},leftpistol:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Left Pistol"},legros1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.49749487796,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 3 just major thirds"},legros2:{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.49749487796,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 2 just major thirds"},"lehman-bach":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.77584116741,328.14198392915,349.6228209638,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Brad Lehman's Bach keyboard temperament"},lemba10:{frequencies:[261.6255653006,283.65327551057,298.9489942119,324.1191713102,341.59697290141,370.35792032269,401.5404117335,423.19307614937,458.82405293702,483.56568031466,524.27976214079],description:"10-note Lemba scale, Herman Miller"},lemba12:{frequencies:[261.6255653006,276.1173031791,283.29759227608,298.9897683987,323.75689816556,341.69016129748,369.99442271164,390.48883496177,400.64329718448,422.83538548023,457.86139629758,483.22286023634,523.2511306012],description:"Lemba[12] in 270-et (poptimal)"},lemba22:{frequencies:[261.6255653006,268.42900262332,276.1173031791,283.29759227608,298.9897683987,306.76484424299,315.55115201964,323.75689816556,341.69016129748,350.57563899649,360.61677037127,369.99442271164,379.61593604418,390.48883496177,400.64329718448,422.83538548023,433.83100318771,446.25671880862,457.86139629758,483.22286023634,495.78882330645,509.98912747823,523.2511306012],description:"Lemba[22] in 270-et (poptimal)"},lemba24:{frequencies:[261.6255653006,275.73346179752,283.65327551057,290.60211247891,298.9489942119,307.53562105228,315.06951922004,324.1191713102,332.05932738876,341.59697290141,351.40856549044,360.01724743313,370.35792032269,390.32910012969,401.5404117335,411.37720579947,423.19307614937,435.34833037897,446.01333880095,458.82405293702,470.06416125332,483.56568031466,497.45499966368,509.64147516102,524.27976214079],description:"24-note Lemba scale for mapping millerlemba24.kbm"},lemba8:{frequencies:[261.6255653006,275.73334871592,283.6533803711,298.94898212432,307.53584843097,324.11927802481,341.59694330429,351.4088110982,370.358025147],description:"Lemba temperament (4 down, 3 up) TOP tuning, Herman Miller, TL 22-11-2004"},leusden:{frequencies:[261.6255653006,275.54404190554,292.50627485027,310.51268695591,327.03195662575,349.91912034749,367.08095907728,391.22147055517,413.66634097248,437.39890198442,466.16376151809,489.02683710225,523.2511306012],description:"Organ in Gereformeerde kerk De Koningshof, Henk van Eeken, 1984, a'=415, modif. 1/4 mean"},leven:{frequencies:[261.6255653006,279.06726965397,298.97057995496,313.95067836072,330.39003879965,348.83408706747,369.35382642901,392.4383479509,418.60090448096,448.46752658184,465.11211608996,502.32108537715,523.2511306012],description:"Leven's monochord ?"},ligon:{frequencies:[261.6255653006,279.66870773512,292.40504357126,309.19384990071,329.87571277032,342.12573923925,366.27579142084,392.4383479509,411.12588832951,436.04260883433,462.87600014722,485.87604984397,523.2511306012],description:"Jacky Ligon, strictly proper all prime scale, TL 08-09-2000"},ligon2:{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,411.78935130154,441.2028763945,470.61640148747,500.02992658044,529.4434516734,558.85697676637],description:"Jacky Ligon, 19-limit symmetrical non-octave scale, 2001"},ligon3:{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,341.25073734861,376.08675011961,401.15920012759,427.90314680276,471.58492637221,481.3910401531,508.13498682828,534.87893350345,561.62288017862,588.36682685379,615.11077352897],description:"Jacky Ligon, 23-limit non-octave scale (2001)"},ligon4:{frequencies:[261.6255653006,278.49926570678,289.46759601673,308.13698517552,320.27237341115,340.92853547661,362.91692931321,386.32347802158,401.53832428939,427.43578342293,444.26952759254,472.92296174596,491.54841572131,523.2511306012,556.99853141357,592.92249142473,616.27397035104,640.54474682231,681.85707095323,725.83385862642,754.41987838254,803.07664857879],description:"Jacky Ligon, 2/1 Phi Scale, TL 12-04-2001"},ligon5:{frequencies:[261.6255653006,273.22765669781,280.653851324,293.09977429907,314.41721066027,328.36040925687,337.28508524374,352.24238645938,377.86132347501,394.61802538749,405.34378524393,423.31898451752,454.1076550834,474.24531572837,487.13535379632,508.73764640933,545.73895363303],description:'Jacky Ligon, scale for "Two Golden Flutes" (2001)'},ligon6:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:'Jacky Ligon, "Primal Golden Tuning" (2001)'},ligon7:{frequencies:[261.6255653006,294.32876096318,321.08592105074,361.22166118208,394.05999401681,443.31749326891,483.61908356609,527.58445479937],description:"Jacky Ligon, 7 tone, 27/22=generator, MMM 22-01-2002"},lindley_ea:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Mark Lindley +J. de Boer +W. Drake (1991), for organ Grosvenor Chapel, London"},lindley_sf:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.07474405997,328.14198392915,349.6228209638,368.32692341742,391.5530240856,413.90012676351,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Lindley (1988) suggestion nr. 2 for Stanford Fisk organ"},"ling-lun":{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Scale of Ling Lun from C"},liu_major:{frequencies:[261.6255653006,290.69507255622,322.99452506247,348.83408706747,392.4383479509,436.04260883433,484.4917875937,523.2511306012],description:`Linus Liu's Major Scale, see his 1978 book, "Intonation Theory"`},liu_mel:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,423.83341578697,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Linus Liu's Melodic Minor, use 5 and 7 descending and 6 and 8 ascending"},liu_minor:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,387.59343007496,418.60090448096,484.4917875937,523.2511306012],description:"Linus Liu's Harmonic Minor"},liu_pent:{frequencies:[261.6255653006,294.32876096318,331.11985608357,353.19451315581,392.4383479509,441.49314144476,496.67978412536,529.79176973372],description:`Linus Liu's "pentatonic scale"`},lorina:{frequencies:[261.6255653006,271.31540105247,293.02063313667,305.22982618403,313.95067836072,348.83408706747,348.83408706747,385.55346465352,406.97310157871,457.84473927605,457.84473927605,465.11211608996,523.2511306012],description:"Lorina"},lt46a:{frequencies:[261.6255653006,265.62583852249,273.73233506765,277.91772325275,286.39934942254,290.77841553921,299.65253047503,308.79746990018,313.51900484808,323.08712797864,328.02715279963,338.03804253716,348.35444940179,353.68081538041,364.47461587782,370.04745828823,381.3407438317,387.1714705201,398.98735486934,411.16384203565,417.45056598488,430.19052226982,436.76816801564,450.09766813034,463.83396431287,470.92601754108,485.29796386361,492.71820372913,507.75521382755,523.2511306012],description:"13-limit temperament, minimax g=495.66296 cents"},lucy_19:{frequencies:[261.6255653006,272.17716319349,280.81422591737,292.13972001074,301.4102593031,313.56641022552,326.2128298123,336.56461921066,350.13857756143,364.25998604447,375.81913491042,390.97626371576,406.74469336313,419.65201956185,436.57696862128,450.43096951372,468.59726172356,487.49621708267,502.96605061019,523.2511306012],description:"Lucy's 19-tone scale"},lucy_24:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,292.13970819848,301.41031849758,303.92192719902,313.56642833783,326.21280343239,336.56467170065,339.36921655583,350.13858362887,364.25994396351,375.81917832675,390.97625694066,403.38329512334,406.744629928,419.65205349792,436.57694340361,450.43105016925,454.18442712942,468.59728067062,487.49616921257,502.96612033609,523.2511306012],description:"Lucy/Harrison, meantone tuning from Bbb to Cx, third=1200.0/pi, 1/1=A"},lucy_31:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,283.15423815518,292.13970819848,301.41031849758,303.92192719902,313.56642833783,323.51698308414,326.21280343239,336.56467170065,339.36921655583,350.13858362887,361.24970022276,364.25994396351,375.81917832675,378.95082751155,390.97625694066,403.38329512334,406.744629928,419.65205349792,432.96907456701,436.57694340361,450.43105016925,454.18442712942,468.59728067062,483.46750424654,487.49616921257,502.96612033609,507.15726445705,523.2511306012],description:"Lucy/Harrison's meantone tuning, 1/1=A"},lucy_7:{frequencies:[261.6255653006,292.13972001074,326.2128298123,350.13857756143,390.97626371576,436.57696862128,487.49621708267,523.2511306012],description:"Diatonic Lucy's scale"},lumma5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Carl Lumma's 5-limit version of lumma7, also Fokker 12-tone just."},lumma7:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,390.69417751556,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Carl Lumma's 7-limit 12-tone scale, a.k.a GW Smith's Prism. TL 21-11-98"},lumma7t:{frequencies:[261.6255653006,279.68948643792,293.67396186758,305.56991806333,326.66797434652,349.22276480589,366.68390442934,392.00157215927,419.06732091375,436.04260883433,457.84473927605,489.45662770953,523.2511306012],description:"Tempered lumma7, 6 tetrads + 4 triads within 2c of Just, TL 19-2-99"},lumma7t72:{frequencies:[261.6255653006,279.86396690685,293.66476791741,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"72-tET version of lumma7t"},lumma7t_keen:{frequencies:[261.6255653006,279.95098841649,293.39965821869,305.14186035122,326.51537799354,349.38597341375,366.17023517096,391.81845653432,419.26317124465,436.04260556019,456.98979229899,488.99939844699,523.2511306012],description:"Dave Keenan's adaptation of lumma7t to include 6:8:11, TL 17-04-9"},lumma_10:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,375.37611551499,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:"Carl Lumma's 10-tone 125 cent Pyth. scale, TL 29-12-1999"},lumma_12_fun:{frequencies:[261.6255653006,276.16031892841,293.246794009,310.68035879446,327.94037872749,348.23056788569,368.93292606842,390.99572534534,413.52379936426,439.8701910135,464.30742384759,491.05951174505,522.34585182853],description:"Rational well temperament based on 577/289, 3/2, and 19/16."},"lumma_12_moh-ha-ha":{frequencies:[261.6255653006,276.16031892841,293.42033886144,310.68035879446,330.09788121912,349.51540364377,368.93292606842,391.72740891476,414.24047839262,440.13050829216,466.02053819169,493.4335110265,523.2511306012],description:"Rational well temperament."},lumma_12_strangeion:{frequencies:[261.6255653006,277.97716313189,292.40504357126,310.68035879446,330.09788121912,349.23197505989,368.93292606842,391.9912339477,414.71297038361,440.63253103259,468.17206422213,492.47165233054,523.2511306012],description:'19-limit "dodekaphonic" scale.'},lumma_22:{frequencies:[261.6255653006,263.29318697558,262.98919438538,262.83732973433,262.68555277841,262.53386346698,263.29318697558,262.38226174944,262.98919438538,262.23074757519,263.29318697558,262.68555277841,262.07932089369,263.29318697558,262.83732973433,263.59753095473,262.38226174944,263.44531501617,262.68555277841,262.98919438538,263.29318697558,263.902226729,261.92798165442],description:"Carl Lumma, intervals of attraction by trial and error, 1999."},lumma_5151:{frequencies:[261.6255653006,276.7826524273,292.81785438923,309.78204413166,327.729041887,346.71578592374,369.67398581173,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Carl Lumma's 5151 temperament III (1197/709.5/696). June 2003"},lumma_al1:{frequencies:[261.6255653006,274.63272075836,292.81785438923,309.78204413166,327.729041887,346.71578592374,366.8025131876,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Alaska I (1197/709.5/696), Carl Lumma, 6 June 2003."},lumma_al2:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,347.216824829,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska II (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al3:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,349.32910706765,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska III (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al4:{frequencies:[261.6255653006,276.38325105256,293.32570896007,309.87152561537,328.86683469969,349.02656754477,368.7143392539,391.31674786192,413.39000965417,438.73106346722,464.55095742407,491.89038573682,522.04355935974],description:"Alaska IV (1196/701/697), Carl Lumma, 6 June 2003."},lumma_al5:{frequencies:[261.6255653006,276.84261239447,293.89809826895,310.99222741882,329.08061019985,349.35433052883,369.67398581173,391.17550247358,415.27471248744,439.42852501549,464.98720675925,493.63374591774,522.3451906503],description:"Alaska V (1197/702/696.375), Carl Lumma, 6 June 2003."},lumma_al6:{frequencies:[261.6255653006,276.86260193655,293.83444433876,310.94732162256,329.05685050583,349.22823143301,369.56723519412,391.09077971329,415.06487744922,439.23819834286,464.81937009253,493.31307433255,522.04355935974],description:"Alaska VI (1196/701/696), Carl Lumma, 6 June 2003."},lumma_al7:{frequencies:[261.6255653006,276.11677207256,293.26810788146,310.16878953668,328.73958549954,348.42227432308,368.499294457,391.39134599911,413.94674961638,438.72852926454,464.99660740427,491.79379203259,522.3451906503],description:"Alaska VII, Carl Lumma, 27 Jan 2004"},lumma_dec1:{frequencies:[261.6255653006,286.10322937235,299.18791603519,327.17991022208,342.14320575162,374.15409293384,391.26571058456,427.87249484695,457.55816161244,489.30340830564,523.2511306012],description:"Carl Lumma, two 5-tone 7/4-chains, 5/4 apart in 31-tET, TL 9-2-2000"},lumma_dec2:{frequencies:[261.6255653006,286.10322937235,292.57243455474,327.17991022208,342.14320575162,382.6142546815,391.26571058456,437.54730686196,457.55816161244,511.68128147674,523.2511306012],description:"Carl Lumma, two 5-tone 3/2-chains, 7/4 apart in 31-tET, TL 9-2-2000"},lumma_magic:{frequencies:[261.6255653006,293.02063313667,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,418.60090448096,436.04260883433,457.84473927605,467.18850946536,523.2511306012],description:"Magic chord test, Carl Lumma, TL 24-06-99"},"lumma_synchtrines+2":{frequencies:[261.6255653006,277.1478691313,293.59111644706,311.009943641,329.46223568632,349.00930447981,369.71610741159,391.65144749868,414.88821865981,439.50363030131,465.57948255979,493.20241832805,522.46423212702],description:"The 12-tone equal temperament with 2:3:4 brats of +2"},"lumma_synchtrines-2":{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338321153,392.13011885309,415.46777761785,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"The 12-tone equal temperament with 2:3:4 brats of -2"},lydian_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,317.12189733406,327.03195662575,373.75080757229,402.50086969323,418.60090448096,427.14378008261,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,615.58956541318,634.24379466812,654.0639132515,747.50161514457,805.00173938646,837.20180896192,854.28756016522,872.08521766867,951.36569200218,1046.5022612024],description:"Lydian Chromatic Tonos"},lydian_chrom2:{frequencies:[261.6255653006,272.09058791262,283.42769574232,340.11323489078,377.90359432309,400.13321751856,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the chromatic genus"},lydian_chrominv:{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Lydian inverted"},lydian_diat:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,697.66817413493,747.50161514457,852.70554616492,805.00173938646,872.08521766867,910.00196626296,951.36569200218,996.66882019276,1046.5022612024],description:"Lydian Diatonic Tonos"},lydian_diat2:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,377.90359432309,425.14154361347,485.87604984397,523.2511306012],description:"Schlesinger's Lydian Harmonia, a subharmonic series through 13 from 26"},lydian_diat2inv:{frequencies:[261.6255653006,281.75060878526,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"Inverted Schlesinger's Lydian Harmonia, a harmonic series from 13 from 26"},lydian_diatcon:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,425.14154361347,485.87604984397,523.2511306012],description:"A Lydian Diatonic with its own trite synemmenon replacing paramese"},lydian_enh:{frequencies:[261.6255653006,275.39533189537,290.69507255622,299.00064605783,303.33398875432,307.79478270659,373.75080757229,402.50086969323,410.39304360878,414.45634107026,418.60090448096,475.68284600109,523.2511306012,550.79066379074,581.39014511244,598.00129211566,606.66797750864,615.58956541318,747.50161514457,805.00173938646,820.78608721757,828.91268214051,837.20180896192,951.36569200218,1046.5022612024],description:"Lydian Enharmonic Tonos"},lydian_enh2:{frequencies:[261.6255653006,266.75547834571,272.09058791262,340.11323489078,377.90359432309,388.70083987518,400.13321751856,523.2511306012],description:"Schlesinger's Lydian Harmonia in the enharmonic genus"},lydian_enhinv:{frequencies:[261.6255653006,266.65682617177,271.68808704293,362.25078272391,402.50086969323,412.56339143556,422.62591317789,523.2511306012],description:"A harmonic form of Schlesinger's Enharmonic Lydian inverted"},lydian_pent:{frequencies:[261.6255653006,269.93113880221,283.42769574232,340.11323489078,377.90359432309,395.48050568695,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the pentachromatic genus"},lydian_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,805.00173938646,872.08521766867,951.36569200218,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Lydian Tonos"},lydian_tri:{frequencies:[261.6255653006,268.51044859798,275.76748774928,340.11323489078,377.90359432309,392.4383479509,408.13588186894,523.2511306012],description:"Schlesinger's Lydian Harmonia in the first trichromatic genus"},lydian_tri2:{frequencies:[261.6255653006,268.51044859798,283.42769574232,340.11323489078,377.90359432309,392.4383479509,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the second trichromatic genus"},nachbaur_6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:`Fred Nachbaur's harmonic hexatonic, as used in "Void of Sensation"`},nassarre:{frequencies:[261.6255653006,277.66336828161,294.34406205295,311.66659310186,331.15428443044,350.6431449633,372.56793743951,394.49404533893,419.16071913933,443.82887286778,471.58032351597,495.88429116026,523.2511306012],description:"Nassarre's Equal Semitones"},negri5_19:{frequencies:[261.6255653006,271.22480440713,281.41555648081,291.74090527404,302.70251050738,313.80889368201,325.59966315504,337.54616011163,350.22880998446,363.07896889448,376.72096510961,390.54314115106,405.21705098851,420.08476989056,435.86864979507,451.86099895106,468.83881245397,486.04086171852,504.30291533224,523.2511306012],description:"Negri temperament, g=126.238272, 5-limit"},negri_19:{frequencies:[261.6255653006,269.02825605326,281.18681366715,289.14299126725,302.21061955257,310.76166549402,324.80633749066,333.99672707734,349.09149261831,358.96903024071,375.19240283292,392.14898023137,403.24482870584,421.46921730446,433.39468387282,452.98167562873,465.79878414581,486.85025820508,500.62567766841,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},negri_29:{frequencies:[261.6255653006,269.02825605326,276.64040740805,281.18681366715,289.14299126725,297.32428710198,302.21061955257,310.76166549402,319.55466133443,324.80633749066,333.99672707734,343.44715857517,349.09149261831,358.96903024071,369.1260526158,375.19240283292,385.80846524917,392.14898023137,403.24482870584,414.65463641221,421.46921730446,433.39468387282,445.65757880387,452.98167562873,465.79878414581,478.97855252217,486.85025820508,500.62567766841,514.79087238232,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},"neid-mar-morg":{frequencies:[261.6255653006,277.49581689502,293.99657683935,311.12698372208,329.99999983505,349.6228209638,369.99442271164,392.4383479509,415.77394625748,440,466.69047534984,494.44133512215,523.2511306012],description:"Neidhardt-Marpurg-de Morgan temperament (1858)"},neidhardt1:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,348.83408706747,368.32692341742,391.5530240856,414.36778843034,438.51190905657,465.11211608996,491.65745674141,523.2511306012],description:"Neidhardt I temperament (1724)"},neidhardt2:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,349.22823143301,369.15973155124,391.5530240856,414.36778843034,438.51190905657,466.16376151809,492.7691222293,523.2511306012],description:"Neidhardt II temperament (1724)"},neidhardt3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Neidhardt III temperament (1724) 'Grosse Stadt'"},neidhardt4:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"Neidhardt IV temperament (1724), equal temperament"},neidhardtn:{frequencies:[261.6255653006,276.86979852503,293.66476791741,310.77584116741,329.62755691287,348.83408706747,369.99442271164,391.5530240856,415.30469757995,439.50340943686,466.16376151809,493.32589719545,523.2511306012],description:"Johann Georg Neidhardt's temperament (1732), alt. 1/6 & 0 P, also Marpurg nr.10"},neogeb24:{frequencies:[261.6255653006,270.11478301563,282.39420473706,291.55732426372,295.23185084282,304.81152420286,308.65309481038,318.66826025208,333.15492371116,343.96512368902,348.30015108876,359.6017829051,375.94928703407,388.14807710176,393.03994675222,405.79329398283,424.24066266408,438.00640969567,443.52664897728,457.91818970179,463.68937649142,478.73515685363,500.49846361623,516.73862125829,523.2511306012],description:"Neo-Gothic e-based lineotuning (T/S or Blackwood's R=e, ~2.71828), 24 notes"},neogji12:{frequencies:[261.6255653006,282.52678126125,294.32876096318,317.84262891891,332.97799220076,348.83408706747,374.60024122586,392.4383479509,423.79017189188,441.49314144476,443.97065626768,499.46698830115,523.2511306012],description:"M. Schulter, neo-Gothic 12-note JI (prim. 2/3/7/11) 1/1=F with Eb key as D+1"},neogp16a:{frequencies:[261.6255653006,274.38778799819,281.28352228595,295.02457363685,309.19384990071,317.19205704586,332.33517754401,348.83408706747,366.27579142084,374.86334014511,392.4383479509,411.12588832951,422.62591317789,442.75095666255,464.34856430463,498.91386871277,523.2511306012],description:"M. Schulter, scale from mainly prime-to-prime ratios and octave complements (Gb-D#)"},neutr_diat:{frequencies:[261.6255653006,294.32876096318,320.24370022528,348.83408706747,392.4383479509,427.47405410759,479.82340237272,523.2511306012],description:"Neutral Diatonic, 9 + 9 + 12 parts, geometric mean of major and minor"},neutr_pent1:{frequencies:[261.6255653006,302.32287545847,348.83408706747,392.4383479509,453.48431318771,523.2511306012],description:"Quasi-Neutral Pentatonic 1, 15/13 x 52/45 in each trichord, after Dudon"},neutr_pent2:{frequencies:[261.6255653006,301.87565226992,348.83408706747,392.4383479509,452.81347840488,523.2511306012],description:"Quasi-Neutral Pentatonic 2, 15/13 x 52/45 in each trichord, after Dudon"},new_enh:{frequencies:[261.6255653006,264.89588486686,279.06726965397,348.83408706747,392.4383479509,397.34382730029,418.60090448096,523.2511306012],description:"New Enharmonic"},new_enh2:{frequencies:[261.6255653006,327.03195662575,331.11985608357,348.83408706747,392.4383479509,490.54793493862,496.67978412536,523.2511306012],description:"New Enharmonic permuted"},newcastle:{frequencies:[261.6255653006,273.65745935891,291.9012907804,312.65334602246,327.03195662575,350.28154752005,366.3906401674,390.81668391305,410.48618883318,436.04260883433,467.04206359353,490.54793493862,523.2511306012],description:"Newcastle modified 1/3-comma meantone"},norden:{frequencies:[261.6255653006,274.87601291722,292.73769384471,310.07474405997,327.54963108844,349.78078158391,366.5013507395,391.37619916626,412.31401916973,437.91808280662,466.37437567834,489.99465727995,523.2511306012],description:"Reconstructed Schnitger temperament, organ in Norden. Ortgies, 2002"},novaro:{frequencies:[261.6255653006,274.70684356563,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,498.33441009638,523.2511306012],description:"9-limit diamond with 21/20, 16/15, 15/8 and 40/21 added for evenness"},novaro15:{frequencies:[261.6255653006,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,523.2511306012],description:"1-15 diamond, see Novaro, 1927, Sistema Natural base del Natural-Aproximado, p"},novaro_eb:{frequencies:[261.6255653006,277.27733921611,293.70273468471,311.34510173929,329.85947563084,349.74559786079,370.61463194963,392.51515715445,416.03831243363,440.72414616847,467.23897542105,495.06435356607,524.26505360912],description:"Novaro (?) equal beating 4/3 with strectched octave, almost pure 3/2"},janke1:{frequencies:[261.6255653006,276.38325105256,293.32570896007,310.58830860439,328.86683469969,349.02656754477,368.7143392539,391.76907592069,414.34624765043,439.23819834286,465.62553897253,492.45896815637,523.2511306012],description:"Rainer Janke, Temperatur I"},janke2:{frequencies:[261.6255653006,276.38325105256,292.98704147282,310.58830860439,328.48713220126,349.02656754477,368.7143392539,391.54284657258,414.34624765043,438.73106346722,465.62553897253,491.89038573682,523.2511306012],description:"Rainer Janke, Temperatur II"},janke3:{frequencies:[261.6255653006,276.22365192501,292.98704147282,310.40895756597,328.29744538229,349.02656754477,368.50142299854,391.54284657258,414.10698098223,438.47771564426,465.62553897253,491.60634075178,523.2511306012],description:"Rainer Janke, Temperatur III"},janke4:{frequencies:[261.6255653006,275.90473010106,292.98704147282,310.76776326996,328.10786809908,349.22823143301,368.07595926604,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.32245979018,523.2511306012],description:"Rainer Janke, Temperatur IV"},janke5:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,328.10786809908,348.82502010853,367.43868454848,391.54284657258,413.39000965417,438.47771564426,465.08793784701,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur V"},janke6:{frequencies:[261.6255653006,275.74540729824,292.98704147282,310.58830860439,328.10786809908,349.43001184052,367.65098676472,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur VI"},janke7:{frequencies:[261.6255653006,275.42703764514,292.81785438923,311.12698372208,327.91840028839,349.63190883464,367.0144478307,391.54284657258,413.62886206386,438.22451411849,467.24207374344,490.75518955849,523.2511306012],description:"Rainer Janke, Temperatur VII"},jemblung1:{frequencies:[261.6255653006,298.87388797409,337.89601991959,388.44742741354,452.30188977628,523.2511306012],description:"Scale of bamboo gamelan jemblung from Kalijering, slendro-like. 1/1=590 Hz."},jemblung2:{frequencies:[261.6255653006,300.03885820455,355.06324470257,391.40016308218,451.61555914985,523.2511306012],description:"Bamboo gamelan jemblung at Royal Batavia Society. 1/1=504 Hz."},ji_10coh:{frequencies:[261.6255653006,283.42769574232,299.7792935736,327.03195662575,348.83408706747,370.63621750918,392.4383479509,436.04260883433,457.84473927605,485.0974023282,523.2511306012],description:"Differentially coherent 10-tone scale"},ji_10coh2:{frequencies:[261.6255653006,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Other diff. coherent 10-tone scale"},ji_11:{frequencies:[261.6255653006,276.96780524107,294.32876096318,316.53463456122,336.37572681506,356.10146388137,384.42940207435,406.97310157871,432.48307733364,465.11211608996,494.26637409559,523.2511306012],description:"3 and 7 prime rational interpretation of 11-tET. OdC 2000"},ji_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Basic JI with 7-limit tritone"},ji_12a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"7-limit 12-tone scale"},ji_12b:{frequencies:[261.6255653006,272.52663052146,290.69507255622,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"alternate 7-limit 12-tone scale"},ji_12c:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Kurzweil "Just with natural b7th", is Sauveur Just with 7/4'},ji_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"5-limit 12-tone symmetrical scale with two tritones"},ji_17:{frequencies:[261.6255653006,271.31540105247,283.8170195002,294.32876096318,310.07474405997,321.55899383997,336.37572681506,348.83408706747,361.75386806997,378.42269266694,392.4383479509,406.97310157871,425.72552925031,441.49314144476,465.11211608996,482.33849075995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 17-tET. OdC"},ji_17a:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,310.07474405997,321.08592105074,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,426.35277308246,441.49314144476,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_17b:{frequencies:[261.6255653006,272.52663052146,285.40970760065,294.32876096318,310.07474405997,319.76457981184,334.88072358477,348.83408706747,359.73515228832,380.54627680087,392.4383479509,408.78994578219,428.11456140098,441.49314144476,465.11211608996,479.64686971777,502.32108537715,523.2511306012],description:"Alt. 3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_19:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"5-limit 19-tone scale"},ji_20:{frequencies:[261.6255653006,271.31540105247,279.38237857051,288.32205155576,299.00064605783,310.07474405997,321.55899383997,331.11985608357,348.83408706747,356.10146388137,372.50983809402,384.42940207435,392.4383479509,413.43299207996,425.72552925031,441.49314144476,457.84473927605,474.80195184183,489.99465727995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 20-tET. OdC"},ji_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"7-limit 21-tone just scale, Op de Coul, 2001"},ji_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"5-limit 22-tone scale (Zarlino?)"},ji_27:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,331.11985608357,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,413.43299207996,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"7-limit rational interpretation of 27-tET, OdC"},ji_29:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,287.78812183066,294.32876096318,301.39265122629,310.07474405997,317.12189733406,323.76163705949,331.11985608357,340.65828815182,348.83408706747,356.76213450082,367.91095120397,372.08969287196,383.71749577421,392.4383479509,401.85686830172,413.43299207996,422.82919644541,431.68218274599,441.49314144476,454.2110508691,465.11211608996,475.68284600109,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"3,5,11-prime rational interpretation of 29-tET, OdC"},ji_30:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,313.95067836072,321.92208230347,329.64821227876,336.37572681506,344.91651675372,353.19451315581,360.81424763342,370.01329949656,379.40816842909,387.59343007496,396.89567239676,406.97310157871,415.27867508032,425.24536328225,436.04260883433,443.97065626768,456.65553216105,465.11211608996,478.40103369253,488.36772189445,498.33441009638,511.62332769895,523.2511306012],description:"11-limit rational interpretation of 30-tET"},ji_31:{frequencies:[261.6255653006,267.57160087561,274.08392555301,280.31310567921,285.40970760065,293.02063313667,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,356.76213450082,366.27579142084,373.75080757229,383.71749577421,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,467.18850946536,479.64686971777,490.54793493862,499.46698830115,512.78610798918,523.2511306012],description:"A just 11-limit 31-tone scale, optimized for Mann complexity"},ji_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 7-limit 31-tone scale"},ji_31b:{frequencies:[261.6255653006,267.90457886781,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 5-limit 31-tone scale, corner clipped genus"},ji_31c:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"A just 11-limit 31-tone scale"},ji_5coh:{frequencies:[261.6255653006,305.22982618403,348.83408706747,381.53728273004,446.94367405519,523.2511306012],description:"Differential fully coherent pentatonic scale"},ji_6coh:{frequencies:[261.6255653006,294.32876096318,330.74639366397,372.08969287196,418.60090448096,465.11211608996,523.2511306012],description:"Differential coherent 6-tone scale, OdC 2003"},ji_7:{frequencies:[261.6255653006,290.69507255622,318.93402246168,348.83408706747,392.4383479509,429.2294430713,470.92601754108,523.2511306012],description:"7-limit rational interpretation of 7-tET. OdC"},ji_7a:{frequencies:[261.6255653006,287.78812183066,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Superparticular approximation to 7-tET. Op de Coul, 1998"},ji_8coh:{frequencies:[261.6255653006,286.99041781007,312.35527031954,339.96223546814,370.00947616612,405.83764015148,441.71144237774,480.75585116768,523.2511306012],description:"Differential coherent 8-tone scale, OdC, 2003"},ji_8coh3:{frequencies:[261.6255653006,277.97716313189,302.50455987882,327.03195662575,359.73515228832,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Differential fully coherent 8-tone scale, OdC, 2003"},ji_9coh:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Differentially coherent 9-tone scale"},ji_ri24a:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,301.87565226992,310.68035879446,319.76457981184,329.87571277032,340.11323489078,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,402.50086969323,414.99227599406,428.11456140098,440.63253103259,453.48431318771,465.11211608996,479.64686971777,494.18162334558,508.71637697339,523.2511306012],description:"M. Schulter, just/rational intonation system - with circulating 24-note set"},jioct12:{frequencies:[261.6255653006,272.52663052146,282.55561052465,302.80736724606,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"12-tone JI version of Messiaen's octatonic scale, Erlich & Par\xEF\xBF\xBDzek"},"jobin-bach":{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.76836826904,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,464.6525521713,489.02683710225,523.2511306012],description:"Emile Jobin, WTC temperament after Bach's signet"},"johnson-secor_rwt":{frequencies:[261.6255653006,276.16031892841,293.03678286293,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.52992584916,414.24047839262,438.40450629885,465.11211608996,490.95167809495,523.2511306012],description:"Johnson/Secor proportional-beating well-temperament with five 24/19s."},johnson_44:{frequencies:[261.6255653006,265.7783520514,269.99705605222,274.2827236086,278.63641763414,283.05921791404,287.55222124002,292.11654190835,296.75331210627,301.46368356757,306.24882108355,311.17820103386,316.11753722951,321.13527558179,326.23266245367,331.4109583385,336.67144939063,342.01544029518,347.44425644654,352.9592442771,358.56177366235,364.2532300084,370.03502692537,375.90859839047,381.87540114246,387.93691728375,394.09464571975,400.35011587045,406.70487919155,413.16051176499,419.71861468993,426.38081694263,433.14876596753,440.02414274758,447.00865248514,454.10402744924,461.31203006992,468.63444275836,476.07308421189,483.62979961065,491.30646309654,499.10497838378,507.02727962797,515.07533168556,523.2511306012],description:"Aaron Johnson, 44-tET approximation"},johnson_7:{frequencies:[261.6255653006,288.83389952765,318.87182567809,352.10227751942,388.71994014354,429.2294430713,473.86811641255,523.2511306012],description:"Aaron Johnson, 7-tET approximation"},johnson_eb:{frequencies:[261.6255653006,273.1678696521,292.40504357126,312.71949922989,327.03195662575,349.65487315468,365.50630446407,390.89937403737,408.78994578219,437.06859144336,467.84806971401,488.62421754671,523.2511306012],description:'Aaron Johnson, "1/4-comma tempered" equal beating C-G-D-A-E plus just thirds'},johnson_ratwell:{frequencies:[261.6255653006,276.16031892841,292.90688289089,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.49724879514,414.24047839262,438.30776524386,465.11211608996,490.95167809495,523.2511306012],description:"Aaron Johnson, rational well-temperament with five 24/19's"},johnson_temp:{frequencies:[261.6255653006,275.52965735686,292.50638298357,309.88336774144,327.03195662575,348.76230617841,367.55223824197,391.22154286826,413.09299784305,437.39914452994,464.92072007996,490.30891677011,523.2511306012],description:"Aaron Johnson, temperament with just 5/4, 24/19 and 19/15"},johnston:{frequencies:[261.6255653006,275.93321340298,294.32876096318,315.35224388912,327.03195662575,359.73515228832,367.91095120397,392.4383479509,401.35740131342,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Ben Johnston's combined otonal-utonal scale"},johnston_21:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Johnston 21-note just enharmonic scale"},johnston_22:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,353.19451315581,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Johnston 22-note scale from end of string quartet nr. 4"},johnston_25:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Johnston 25-note just enharmonic scale"},"johnston_6-qt":{frequencies:[261.6255653006,262.79353657426,266.47048317654,267.57160087561,271.31540105247,272.52663052146,277.4816601673,280.31310567921,284.23518205497,290.69507255622,294.32876096318,297.30177875068,299.7792935736,300.33547037059,305.22982618403,306.59245933664,310.07474405997,311.45900631024,316.53463456122,317.12189733406,319.76457981184,322.99452506247,327.03195662575,334.46450109452,339.14425131559,342.60490694126,348.83408706747,350.39138209902,355.29397756872,356.76213450082,361.75386806997,363.36884069528,367.91095120397,373.75080757229,381.53728273004,382.24514410802,387.59343007496,390.82337532559,392.4383479509,396.40237166758,399.70572476481,406.97310157871,408.78994578219,413.43299207996,420.46965851882,426.35277308246,436.04260883433,445.95266812602,452.19233508746,459.88868900496,465.11211608996,467.18850946536,475.68284600109,479.64686971777,484.4917875937,486.49381977384,490.54793493862,248.7057842981,498.33441009638,508.71637697339,516.79124009995,523.2511306012],description:"11-limit complete system from Ben Johnston's _6th Quartet_"},"johnston_6-qt_row":{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,350.39138209902,363.36884069528,399.70572476481,408.78994578219,436.04260883433,445.95266812602,490.54793493862,508.71637697339],description:`11-limit 'prime row' from Ben Johnston's "6th Quartet"`},johnston_81:{frequencies:[116.54094037952,117.99770213426,119.33792294863,119.89808681021,120.82964698549,121.39681289533,122.77564089365,122.91427305652,124.31033640482,124.45070146973,125.86421560988,127.43751830501,127.89129259755,128.03570110055,129.48993375502,131.10855792696,132.74741490105,134.25516331721,134.88534766148,135.93335285867,136.57141450725,138.12259600536,138.27855718859,139.84912845542,141.59724256112,142.26189011172,143.87770417225,145.6761754744,147.49712766783,149.17240368579,151.03705873186,151.74601611917,153.46955111706,155.38792050603,157.33026951235,159.11723059817,159.29689788126,161.10619598065,161.86241719378,163.70085452487,163.8856974087,165.74711520643,165.93426862631,167.81895414651,169.91669107334,170.71426813406,172.6532450067,174.81141056928,176.9965532014,179.00688442294,179.84713021531,181.24447047823,182.095219343,184.16346134048,184.37140958479,186.46550460723,188.79632341482,189.68252014896,191.15627745751,191.83693889633,194.23490063253,196.66283689044,198.89653824771,199.12112235157,199.83014468368,201.38274497581,202.32802149222,204.62606815608,204.85712176088,207.18389400804,207.41783578289,209.77369268314,212.39586384168,213.39283516758,215.81655625837,218.5142632116,221.24569150175,223.75860552868,226.55558809779,227.61902417875,230.2043266756,233.08188075904],description:"Johnston 81-note 5-limit scale of Sonata for Microtonal Piano"},jorgensen:{frequencies:[261.6255653006,269.51415085551,288.85811466493,309.59046173614,318.92511007349,352.12195684808,355.62605411908,388.77403176757,408.50706336067,429.24143792307,469.25139168707,473.92081401802,523.2511306012],description:"Jorgensen's 5&7 temperament"},jousse:{frequencies:[261.6255653006,276.90198715646,293.15566421679,311.51473523959,328.62702621286,349.28097970329,369.20264759391,391.76800554826,415.35298052707,439.0631553946,466.60176257857,492.27019703794,523.2511306012],description:"Temperament of Jean Jousse (1832)"},jousse2:{frequencies:[261.6255653006,277.21176919085,293.63180098233,311.16627887077,329.63881547742,349.36510452864,370.14670828388,392.04008509316,415.41939014292,440.0494382652,466.3511549761,494.0599599767,523.2511306012],description:"Jean Jousse's quasi-equal temperament"},quasi_5:{frequencies:[261.6255653006,302.26980244078,349.22823143301,391.99543598175,452.89298412314,523.2511306012],description:"Quasi-Equal 5-Tone in 24-tET, 5 5 4 5 5 steps"},quasi_9:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:'Quasi-Equal Enneatonic, Each "tetrachord" has 125 + 125 + 125 + 125 cents'},quint_chrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,348.83408706747,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Aristides Quintilianus' Chromatic genus"},oconnell:{frequencies:[261.6255653006,267.57429119961,272.27874977392,278.46970304972,283.3657217904,288.34782337261,294.90414810658,300.08911516052,305.36524364276,312.30850472426,317.79947295261,323.38698268281,330.74001416845,336.55504284097,344.20748191927,350.25929591231,356.41751010259,364.52157313929,370.93054700815,377.45220049416,386.03454097812,392.82175095637,399.72829510222,408.81713953112,416.00491024634,423.31905787312],description:"Walter O'Connell, Pythagorean scale of 25 octaves reduced by Phi. XH 15 (1993)"},oconnell_11:{frequencies:[261.6255653006,272.27874977392,288.34782337261,300.08911516052,312.30850472426,323.38698268281,344.20748191927,356.41751010259,370.93054700815,386.03454097812,408.81713953112,423.31905787312],description:"Walter O'Connell, 11-note mode of 25-tone scale"},oconnell_14:{frequencies:[261.6255653006,272.27874977392,283.3657217904,288.34782337261,300.08911516052,312.30850472426,323.38698268281,336.55504284097,344.20748191927,356.41751010259,370.93054700815,386.03454097812,399.72829510222,408.81713953112,423.31905787312],description:"Walter O'Connell, 14-note mode of 25-tone scale"},oconnell_7:{frequencies:[261.6255653006,283.3657217904,300.08911516052,323.38698268281,344.20748191927,370.93054700815,392.82175095637,423.31905787312],description:"Walter O'Connell, 7-note mode of 25-tone scale"},oconnell_9:{frequencies:[261.6255653006,278.46970304972,294.90414810658,305.36524364276,323.38698268281,344.20748191927,364.52157313929,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 9-tone mode of 25-tone scale"},oconnell_9a:{frequencies:[261.6255653006,272.27874977392,288.34782337261,305.36524364276,323.38698268281,344.20748191927,356.41751010259,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 7+2 major mode analogy for 25-tone scale"},octony_min:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Octony on Harmonic Minor, from Palmer on an album of Turkish music"},octony_rot:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Rotated Octony on Harmonic Minor"},octony_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,408.78994578219,420.46965851882,436.04260883433,523.2511306012],description:"Complex 10 of p. 115, an Octony based on Archytas's Enharmonic,"},octony_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,315.35224388912,324.36230800023,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,306.59245933664,315.35224388912,327.03195662575,348.83408706747,490.54793493862,523.2511306012],description:"Complex 5 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,420.46965851882,432.48307733364,448.50096908674,523.2511306012],description:"Complex 11 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans5:{frequencies:[261.6255653006,271.31540105247,279.06726965397,317.94773560837,327.03195662575,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 15 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans6:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,345.98646186692,348.83408706747,358.80077526939,523.2511306012],description:"Complex 14 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_u:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,356.76213450082,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"7)8 octony from 1.3.5.7.9.11.13.15, 1.3.5.7.9.11.13 tonic (subharmonics 8-16)"},odd1:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"ODD-1"},odd2:{frequencies:[261.6255653006,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"ODD-2"},oettingen:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,301.39265122629,306.59245933664,310.42486507835,313.95067836072,317.87506184023,323.35923445661,327.03195662575,331.11985608357,334.88072358477,339.06673262958,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.50983809402,376.74081403286,383.2405741708,388.03108134794,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,452.08897683944,459.88868900496,465.11211608996,470.92601754108,476.81259276034,485.03885168492,490.54793493862,496.67978412536,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"von Oettingen's Orthotonophonium tuning"},oettingen2:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"von Oettingen's Orthotonophonium tuning with central 1/1"},ogr10:{frequencies:[261.6255653006,264.15640940857,271.89678302796,296.5055443788,342.56848033562,359.46139971304,411.32572372413,440,484.46499093218,513.27277840175,523.2511306012],description:"Optimal Golomb Ruler of 10 segments, length 72"},ogr10a:{frequencies:[261.6255653006,264.15640940857,285.30470202322,314.13668154225,329.62755691287,352.60650301302,431.60923940535,448.5538823653,457.27406033445,508.3551866238,523.2511306012],description:"2nd Optimal Golomb Ruler of 10 segments, length 72"},ogr11:{frequencies:[261.6255653006,265.92749183559,274.74472021414,318.1829357186,331.4244391468,362.52783176564,371.50609336774,409.69842558521,455.51656649021,482.27514684959,486.22402266421,523.2511306012],description:"Optimal Golomb Ruler of 11 segments, length 85"},ogr12:{frequencies:[261.6255653006,265.06964174786,270.3209511875,308.09015504092,333.2396629384,346.57411320722,384.79959982017,413.49815209867,456.11269186454,468.20039948765,496.58195036371,499.83980314828,523.2511306012],description:"Optimal Golomb Ruler of 12 segments, length 106"},ogr2:{frequencies:[261.6255653006,329.62755691287,523.2511306012],description:"Optimal Golomb Ruler of 2 segments, length 3"},ogr3:{frequencies:[261.6255653006,293.66476791741,415.30469757995,523.2511306012],description:"Optimal Golomb Ruler of 3 segments, length 6"},ogr4:{frequencies:[261.6255653006,278.64197723942,336.62443200122,461.29362042034,523.2511306012],description:"Optimal Golomb Ruler of 4 segments, length 11"},ogr4a:{frequencies:[261.6255653006,296.76515515861,406.67242132093,433.12283887627,523.2511306012],description:"2nd Optimal Golomb Ruler of 4 segments, length 11"},ogr5:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,426.7484383229,523.2511306012],description:"Optimal Golomb Ruler of 5 segments, length 17"},ogr5a:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,482.27514684959,523.2511306012],description:"2nd Optimal Golomb Ruler of 5 segments, length 17"},ogr5b:{frequencies:[261.6255653006,272.51337835337,362.52783176564,426.7484383229,463.0066556268,523.2511306012],description:"3rd Optimal Golomb Ruler of 5 segments, length 17"},ogr5c:{frequencies:[261.6255653006,272.51337835337,362.52783176564,409.69842558521,444.50800708553,523.2511306012],description:"4th Optimal Golomb Ruler of 5 segments, length 17"},ogr6:{frequencies:[261.6255653006,268.98086109226,292.31087910123,345.21700307457,430.94493093825,495.02573326308,523.2511306012],description:"Optimal Golomb Ruler of 6 segments, length 25"},ogr6a:{frequencies:[261.6255653006,276.5429423948,284.31762274025,345.21700307457,407.69874723177,468.32288027948,523.2511306012],description:"2nd Optimal Golomb Ruler of 6 segments, length 25"},ogr6b:{frequencies:[261.6255653006,268.98086109226,354.92237405774,407.69874723177,443.06044202496,495.02573326308,523.2511306012],description:"3rd Optimal Golomb Ruler of 6 segments, length 25"},ogr6c:{frequencies:[261.6255653006,268.98086109226,317.66442301495,354.92237405774,455.51656649021,495.02573326308,523.2511306012],description:"4th Optimal Golomb Ruler of 6 segments, length 25"},ogr6d:{frequencies:[261.6255653006,276.5429423948,317.66442301495,375.1593523779,468.32288027948,481.48922855473,523.2511306012],description:"5th Optimal Golomb Ruler of 6 segments, length 25"},ogr7:{frequencies:[261.6255653006,267.01398215014,283.85429714132,314.3146261019,355.21191871351,409.69842558521,502.34551296122,523.2511306012],description:"Optimal Golomb Ruler of 7 segments, length 34"},ogr8:{frequencies:[261.6255653006,265.77967818767,283.06627815664,316.06708432391,387.90015179087,400.3161696196,454.08364189083,499.09751029017,523.2511306012],description:"Optimal Golomb Ruler of 8 segments, length 44"},ogr9:{frequencies:[261.6255653006,264.94361147373,282.17583275232,296.76515515861,349.59519124833,363.06573983159,401.57942110183,438.61588607285,510.2272282764,523.2511306012],description:"Optimal Golomb Ruler of 9 segments, length 55"},oldani:{frequencies:[261.6255653006,272.52663052146,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"This scale by Norbert L. Oldani appeared in Interval 5(3), p.10-11"},oljare:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Tampere" (2001)'},oljare17:{frequencies:[261.6255653006,272.51337835337,320.78822215662,334.13814720468,393.32961502355,409.69842558521,426.7484383229,502.34551296122,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Fafner" (2001), MOS in 17-tET'},olympos:{frequencies:[261.6255653006,279.06726965397,348.83408706747,372.08969287196,465.11211608996,523.2511306012],description:"Scale of ancient Greek flutist Olympos, 6th century BC as reported by Partch"},opelt:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friederich Wilhelm Opelt 19-tone"},organ1373a:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 ficta semitones (Eb-G#)"},organ1373b:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 accidental semitones (Eb-G#)"},ragib:{frequencies:[261.6255653006,269.99542342683,281.01564479119,288.12007609225,294.32876096318,303.49446183192,311.45900631024,323.77767743764,335.77702597132,341.99420300732,348.83408706747,360.36579242507,371.06455309218,381.37837507376,392.4383479509,407.46331920162,417.22825371678,432.79663407874,450.28451247858,458.15534711532,465.11211608996,476.50902003141,487.19844562495,503.12608711654,523.2511306012],description:"Idris Ragib Bey, vol.5 d'Erlanger, p 40. Idris Rag'ib Bey"},ragib7:{frequencies:[261.6255653006,270.30192333353,281.29980781121,288.32205155576,294.32876096318,303.74668805875,311.45900631024,324.36230800023,336.37572681506,341.71502406609,348.83408706747,360.4025644447,370.6997805717,381.53728273004,392.4383479509,406.97310157871,417.13259773693,432.48307733364,450.69091522486,457.84473927605,465.11211608996,476.92160341255,486.65469735975,502.32108537715,523.2511306012],description:"7-limit version of Idris Rag'ib Bey scale"},"rameau-flat":{frequencies:[261.6255653006,276.01120901503,292.50629850443,312.00666699279,327.03195662575,349.91920725962,366.20974703841,391.22137338448,415.30469757995,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:'Rameau bemols, see Pierre-Yves Asselin in "Musique et temperament"'},"rameau-gall":{frequencies:[261.6255653006,274.65078342868,292.50627485027,310.49874388777,327.03195662575,349.91912034749,366.20104475463,391.22147055517,412.61639318626,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Rameau's temperament, after Gallimard (1st solution)"},"rameau-merc":{frequencies:[261.6255653006,273.37431312998,292.50627485027,308.72950296259,327.03195662575,348.83408706747,365.63284274659,391.22147055517,409.55238583376,437.39890198442,464.53468854848,489.02683710225,523.2511306012],description:"Rameau's temperament, after Mercadier"},"rameau-minor":{frequencies:[261.6255653006,294.32876096318,313.95067836072,353.19451315581,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Rameau's systeme diatonique mineur on E. Asc. 4-6-8-9, desc. 9-7-5-4"},"rameau-nouv":{frequencies:[261.6255653006,275.98004852257,292.50627485027,311.49614460359,327.03195662575,349.91912034749,367.37127028704,391.22147055517,414.64857675456,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Temperament by Rameau in Nouveau Systeme (1726)"},"rameau-sharp":{frequencies:[261.6255653006,273.37431312998,292.50629850443,308.54983514133,327.03195662575,348.83408706747,365.63293356166,391.22137338448,409.42528169498,437.39882871549,464.33633889105,489.02679755603,523.2511306012],description:'Rameau dieses, see Pierre-Yves Asselin in "Musique et temperament"'},rameau:{frequencies:[261.6255653006,275.07757335026,292.50629850443,310.73186404381,327.03195662575,349.91920725962,366.77009798369,391.22137338448,412.61635981914,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:"Rameau's modified meantone temperament (1725)"},ramis:{frequencies:[261.6255653006,275.93321340298,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monochord of Ramos de Pareja (Ramis de Pareia), Musica practica (1482). Carlos: Switched on Bach"},rapoport_8:{frequencies:[261.6255653006,297.86386736488,316.53463456122,336.37572681506,382.96782946913,406.97310157871,432.48307733364,492.38720931745,523.2511306012],description:"Paul Rapoport, cycle of 14/9 close to 8 out of 11-tET, XH 13, 1991"},rast_moha:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Rast + Mohajira (Dudon) 4 + 3 + 3 Rast and 3 + 4 + 3 Mohajira tetrachords"},rat_dorenh:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,418.60090448096,426.35277308246,523.2511306012],description:"Rationalized Schlesinger's Dorian Harmonia in the enharmonic genus"},rat_hypodenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,389.39619021485,398.6675280771,523.2511306012],description:"1+1 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh2:{frequencies:[261.6255653006,270.06509966514,288.69027895239,348.83408706747,380.54627680087,389.39619021485,408.39112632289,523.2511306012],description:"1+2 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh3:{frequencies:[261.6255653006,270.06509966514,299.00064605783,348.83408706747,380.54627680087,389.39619021485,418.60090448096,523.2511306012],description:"1+3 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,380.54627680087,386.4008349055,392.4383479509,523.2511306012],description:"1+1 rationalized hexachromatic/hexenharmonic genus derived from K.S.'Bastard'"},rat_hypodhex2:{frequencies:[261.6255653006,267.19206668997,279.06726965397,348.83408706747,380.54627680087,386.4008349055,398.6675280771,523.2511306012],description:"1+2 rat. hexachromatic/hexenharmonic genus derived from K.S.'s 'Bastard' Hypodo"},rat_hypodhex3:{frequencies:[261.6255653006,267.19206668997,285.40970760065,348.83408706747,380.54627680087,386.4008349055,405.0976494977,523.2511306012],description:"1+3 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex4:{frequencies:[261.6255653006,267.19206668997,292.04714266113,348.83408706747,380.54627680087,386.4008349055,411.73859457144,523.2511306012],description:"1+4 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex5:{frequencies:[261.6255653006,267.19206668997,299.00064605783,348.83408706747,380.54627680087,386.4008349055,418.60090448096,523.2511306012],description:"1+5 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex6:{frequencies:[261.6255653006,273.00058987889,292.04714266113,348.83408706747,380.54627680087,392.4383479509,411.73859457144,523.2511306012],description:"2+3 rationalized hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' hypod"},rat_hypodpen:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,380.54627680087,387.59343007496,394.90651366128,523.2511306012],description:"1+1 rationalized pentachromatic/pentenharmonic genus derived from K.S.'s 'Bastar"},rat_hypodpen2:{frequencies:[261.6255653006,268.33391312882,282.83844897362,348.83408706747,380.54627680087,387.59343007496,402.50086969323,523.2511306012],description:"1+2 rationalized pentachromatic/pentenharmonic genus from K.S.'s 'Bastard' hyp"},rat_hypodpen3:{frequencies:[261.6255653006,268.33391312882,290.69507255622,348.83408706747,380.54627680087,387.59343007496,410.39304360878,523.2511306012],description:"1+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen4:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,387.59343007496,418.60090448096,523.2511306012],description:"1+4 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen5:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,380.54627680087,394.90651366128,410.39304360878,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen6:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,394.90651366128,418.60090448096,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodtri:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,380.54627680087,392.4383479509,405.0976494977,523.2511306012],description:"rationalized first (1+1) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypodtri2:{frequencies:[261.6255653006,273.00058987889,299.00064605783,348.83408706747,380.54627680087,392.4383479509,418.60090448096,523.2511306012],description:"rationalized second (1+2) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypolenh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,410.39304360878,418.60090448096,523.2511306012],description:"Rationalized Schlesinger's Hypolydian Harmonia in the enharmonic genus"},rat_hypopchrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the chromatic genus"},rat_hypopenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the enharmonic genus"},rat_hypoppen:{frequencies:[261.6255653006,273.79419624481,294.32876096318,362.25078272391,392.4383479509,405.97070477679,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the pentachromatic genus"},rat_hypoptri:{frequencies:[261.6255653006,271.68808704293,282.55561052465,362.25078272391,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in first trichromatic genus"},rat_hypoptri2:{frequencies:[261.6255653006,271.68808704293,294.32876096318,362.25078272391,392.4383479509,403.65087217807,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in second trichromatic genus"},rectsp10:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,340.11323489078,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10"},rectsp10a:{frequencies:[261.6255653006,275.39533189537,277.01530443593,279.06726965397,281.75060878526,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10 union with inversion"},rectsp11:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,523.2511306012],description:"Rectangle minimal beats spectrum of order 11"},rectsp12:{frequencies:[261.6255653006,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,414.24047839262,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,501.44900015948,523.2511306012],description:"Rectangle minimal beats spectrum of order 12"},rectsp6:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 (=songlines)"},rectsp6a:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 union with inversion"},rectsp7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7"},rectsp7a:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7 union with inversion"},rectsp8:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8"},rectsp8a:{frequencies:[261.6255653006,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8 union with inversion"},rectsp9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9"},rectsp9a:{frequencies:[261.6255653006,277.01530443593,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9 union with inversion"},redfield:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Redfield New Diatonic"},reinhard:{frequencies:[261.6255653006,277.01530443593,294.32876096318,309.81974838229,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Reinhard 19-limit superparticular"},reinhard17:{frequencies:[261.6255653006,277.01530443593,277.97716313189,286.94416839421,292.40504357126,296.50897400735,307.79478270659,317.68818643644,338.57426097725,342.12573923925,369.35373924791,400.13321751856,404.33041910093,430.91269578922,444.76346101102,477.08191319521,492.47165233054,523.2511306012],description:`Reinhard's Harmonic-17 tuning for "Tresspass", 1998`},renteng1:{frequencies:[261.6255653006,285.40970760065,313.15788183285,391.64553850062,426.52890806662,523.2511306012],description:"Gamelan Renteng from Chileunyi (Tg. Sari). 1/1=330 Hz"},renteng2:{frequencies:[261.6255653006,294.32876096318,311.77048523333,396.07199334683,425.86840190162,523.2511306012],description:"Gamelan Renteng from Chikebo (Tg. Sari). 1/1=360 Hz"},renteng3:{frequencies:[261.6255653006,278.97471276149,312.97903559457,379.60005211265,409.44065404912,468.42785143649,523.2511306012],description:"Gamelan Renteng from Lebakwangi (Pameungpeuk). 1/1=377 Hz"},renteng4:{frequencies:[261.6255653006,296.45730715573,311.93819010347,397.0826586675,424.17395032031,523.2511306012],description:"Gamelan Renteng Bale` bandung from Kanoman (Cheribon). 1/1=338 Hz"},robot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Dead Robot (see lattice)"},robot_live:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,376.74081403286,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Live Robot"},romieu:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu's Monochord, Memoire theorique & pratique (1758)"},romieu_inv:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu inverted, Pure (just) C minor in Wilkinson: Tuning In"},rosati_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Dante Rosati, JI guitar tuning"},rosati_21a:{frequencies:[261.6255653006,280.31310567921,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,488.36772189445,523.2511306012],description:"Alternative version of rosati_21 with more tetrads"},rousseau:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Rousseau's Monochord, Dictionnaire de musique (1768)"},rousseauw:{frequencies:[261.6255653006,276.81658657456,293.31219032635,311.14941643136,328.83652403056,349.33732971591,369.19521129916,391.76004912942,415.1051791302,439.20783490896,466.32059269121,492.40223109551,523.2511306012],description:"Jean-Jacques Rousseau's temperament (1768)"},rsr_12:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"RSR - 7 limit JI"},"rvf-1":{frequencies:[261.6255653006,272.14556467328,280.20095193414,292.09989854643,304.19649364034,313.29104303136,326.0297292803,340.21856244106,350.08660369014,364.11104988921,374.67209286633,390.97784457618,406.87534373272,419.03967825638,436.39317047385,454.92493848389,468.39051363853,487.22455955444,508.94280091833,523.2511306012],description:"D-A 695 cents, the increment is 0.25 cents, interval range 49.5 to 75.5"},"rvf-2":{frequencies:[261.6255653006,272.87751533003,278.75612859219,292.27711197479,305.71136588092,312.51386339015,326.29348693151,342.97106251658,349.87433921674,364.79522794952,372.13777859784,391.13596290168,408.38225803817,417.4934384938,436.65792486176,457.83788806384,467.7011114131,487.81592522452,513.9947144098,523.2511306012],description:"695 cents, 0.607 cents, 31-90 cents, C-A# is 7/4."},"rvf-3":{frequencies:[261.6255653006,272.98787180262,278.19314238431,292.29399505039,306.11778315204,312.24320803046,326.25579420701,343.90343447252,349.81371586656,364.81629995674,371.08598724028,391.15855645336,408.71263878415,416.89098941754,436.60748307387,458.73792719255,467.48503753613,487.78774868553,515.83876338215,523.2511306012],description:"694.737, 0.082, 25-97, the fifth E#-B# is 3/2."},majmin:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Malcolm & Marpurg 4 (Yamaha major & minor) mixed. Mersenne/Ban without D#"},major_clus:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Chalmers' Major Mode Cluster"},major_wing:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Chalmers' Major Wing with 7 major and 6 minor triads"},malcolm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Malcolm's Monochord (1721), and C major in Yamaha synths, Wilkinson: Tuning In"},malcolm2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Malcolm 2"},malcolm_ap:{frequencies:[261.6255653006,279.47938236087,293.66476791741,313.97746652079,326.1838132033,349.22823143301,369.99442271164,391.99543598175,419.68935090103,436.0054062308,466.16376151809,489.82458627646,523.2511306012],description:"Best approximations in mix of all ETs from 12-23 to Malcolm's Monochord"},malcolm_me:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Malcolm's Mid-East"},malcolme:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,496.11959049595,523.2511306012],description:"Most equal interval permutation of Malcolm's Monochord"},malcolme2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Inverse most equal interval permutation of Malcolm's Monochord"},malcolms:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,369.99442271164,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical version of Malcolm's Monochord and Albion scale"},malerbi:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Luigi Malerbi's well-temperament nr.1 (1794) (nr.2 = Young)"},malgache:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,353.19451315581,376.74081403286,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,392.4383479509,408.78994578219,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malkauns:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"Raga Malkauns, inverse of prime_5"},mambuti:{frequencies:[261.6255653006,294.34406205295,331.72862856444,394.26624244126,466.16376151809,525.06772693396,590.39077962608,792.18471060794,999.82182774046],description:"African Mambuti Flutes (aerophone; vertical wooden; one note each)"},mandelbaum5:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,454.2110508691,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Mandelbaum's 5-limit 19-tone scale, kleismic detempered circle of minor thirds"},mandelbaum7:{frequencies:[261.6255653006,272.52663052146,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Mandelbaum's 7-limit 19-tone scale"},marimba1:{frequencies:[261.6255653006,284.4818984792,319.50463429683,342.83241505062,371.92288545737,411.72190027758,457.09800545097,500.48847822777,547.68138927822,612.97866327818,651.68292300609,728.11694797601,807.8963375694,903.69557412727,1013.19282257599,1069.7265813247,1225.95732655636,1303.36584601218],description:"Marimba of the Bakwese, SW Belgian Congo (Zaire). 1/1=140.5 Hz"},marimba2:{frequencies:[261.6255653006,279.11058864149,318.03161540472,343.03050002254,379.95718438213,421.58889248327,458.6849347701,519.33670373121,571.2689787911,613.68721319418,694.83488613378,761.23234162637,846.59395682498,953.56868388592,1049.52904699774,1145.8425062572,1271.3918647407,1389.66977226756],description:"Marimba of the Bakubu, S. Belgian Congo (Zaire). 1/1=141.5 Hz"},marimba3:{frequencies:[261.6255653006,296.73398952435,348.2210758395,420.13030572059,476.50902003141,518.73708886244,603.49292471609,696.44215167899,840.26061144117,953.01804006282,1037.47417772488],description:"Marimba from the Yakoma tribe, Zaire. 1/1=185.5 Hz"},marion:{frequencies:[261.6255653006,269.91407136119,278.46532473603,287.28749371714,296.38899008685,305.77900572762,315.46632790985,325.46074015958,335.7715953476,346.4093067252,357.3838291689,368.70624618807,380.38737313392,392.4383479509,411.71310103548,431.93429139282,453.14890242083,475.40520223986,498.75490298644,523.2511306012],description:"scale with two different ET step sizes"},marion1:{frequencies:[261.6255653006,262.79353657426,272.52663052146,280.31310567921,286.15296204753,294.32876096318,305.22982618403,311.45900631024,327.03195662575,336.37572681506,343.38355445704,350.39138209902,367.91095120397,373.75080757229,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,476.92160341255,490.54793493862,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 1"},marion10:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,290.69507255622,296.75121990114,305.22982618403,317.94773560837,327.03195662575,339.14425131559,356.10146388137,363.36884069528,370.93902487643,381.53728273004,400.61414686654,406.97310157871,408.78994578219,423.93031414449,436.04260883433,445.12682985172,457.84473927605,474.80195184183,476.92160341255,484.4917875937,508.71637697339,523.2511306012],description:"Marion's 7-limit Scale # 10"},marion15:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,299.00064605783,313.95067836072,320.35783506196,327.03195662575,336.37572681506,353.19451315581,358.80077526939,360.4025644447,373.75080757229,384.42940207435,392.4383479509,403.65087217807,418.60090448096,420.46965851882,427.14378008261,448.50096908674,461.31528248922,470.92601754108,480.53675259294,504.56359022259,523.2511306012],description:"Marion's 7-limit Scale # 15"},marion19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,309.04519901133,313.95067836072,315.35224388912,327.03195662575,336.37572681506,343.38355445704,353.19451315581,366.27579142084,367.91095120397,373.75080757229,392.4383479509,403.65087217807,412.06026534844,420.46965851882,441.49314144476,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 19"},marion26:{frequencies:[261.6255653006,271.31540105247,279.06726965397,284.8811711051,293.02063313667,303.87324917877,305.22982618403,310.07474405997,325.57848126297,334.88072358477,341.85740532612,348.83408706747,366.27579142084,379.84156147346,390.69417751556,406.97310157871,418.60090448096,427.32175665765,434.10464168396,455.80987376816,465.11211608996,474.80195184183,488.36772189445,512.78610798918,523.2511306012],description:"Marion's 7-limit Scale # 26"},marissing:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Peter van Marissing, just scale, Mens en Melodie, 1979"},"marpurg-1":{frequencies:[261.6255653006,276.86979852503,294.32876096318,311.47852302926,329.62755691287,348.83408706747,370.83100115625,392.4383479509,415.30469757995,439.50340943686,467.21778431035,494.44133512215,523.2511306012],description:"Other temperament by Marpurg, 3 fifths 1/3 Pyth. comma flat"},"marpurg-t1":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg's temperament nr.1, Kirnbergersche Temperatur (1766)"},"marpurg-t11":{frequencies:[261.6255653006,278.12325072816,294.32876096318,311.47852302926,331.11985608357,348.83408706747,371.66947115233,392.4383479509,416.24372513446,441.49314144476,466.16376151809,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.11, 6 tempered fifths"},"marpurg-t12":{frequencies:[261.6255653006,279.06706247425,294.66131982972,310.42509491746,330.74614861362,349.22823143301,372.08941681833,392.88175996935,418.60059350213,441.99197952365,465.63764214343,496.11922267243,523.2511306012],description:"Marpurg's temperament nr.12, 4 tempered fifths"},"marpurg-t2":{frequencies:[261.6255653006,278.75210322491,294.32876096318,313.59611581451,331.11985608357,348.83408706747,371.66947115233,392.4383479509,418.12815462835,441.49314144476,470.39417348663,495.55929511749,523.2511306012],description:"Marpurg's temperament nr.2, 2 tempered fifths, Neue Methode (1790)"},"marpurg-t3":{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,331.11985608357,348.83408706747,368.74309237173,392.4383479509,414.83597850347,441.49314144476,465.11211608996,491.65745674141,523.2511306012],description:"Marpurg's temperament nr.3, 2 tempered fifths"},"marpurg-t4":{frequencies:[261.6255653006,276.86979852503,294.32876096318,310.07474405997,331.11985608357,348.83408706747,369.15973155124,392.4383479509,415.30469757995,441.49314144476,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.4, 2 tempered fifths"},"marpurg-t5":{frequencies:[261.6255653006,277.80935667884,294.32876096318,312.53552595124,331.11985608357,348.83408706747,370.41247575694,392.4383479509,416.71403480995,441.49314144476,468.80328869252,493.88330125613,523.2511306012],description:"Marpurg's temperament nr.5, 2 tempered fifths"},"marpurg-t7":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.07474405997,329.62755691287,348.83408706747,369.15973155124,390.66969766777,415.30469757995,439.50340943686,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.7, 3 tempered fifths"},"marpurg-t8":{frequencies:[261.6255653006,277.49581689502,293.33333347996,311.12698372208,329.99999983505,348.83408706747,369.99442271164,391.11111150212,414.83597850347,440,466.69047534984,493.32589719545,523.2511306012],description:"Marpurg's temperament nr.8, 4 tempered fifths"},"marpurg-t9":{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,350.01785633742,371.24999944327,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.9, 4 tempered fifths"},marpurg:{frequencies:[261.6255653006,277.49581689502,293.83071040301,311.12698372208,329.99999983505,349.42557141756,369.99442271164,392.4383479509,415.53937569366,440,466.69047534984,494.16238213869,523.2511306012],description:"Marpurg, Versuch ueber die musikalische Temperatur (1776), p. 153"},marpurg1:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg's Monochord no.1 (1776)"},marpurg3:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg 3"},marpurg4:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg 4, also Yamaha Pure Minor"},marsh:{frequencies:[261.6255653006,275.50659558095,293.15632631094,311.93674864629,328.48713220126,349.53094576004,368.07595926604,391.65594491223,412.43597848639,438.85779226656,466.97226207056,491.74834273545,523.2511306012],description:"John Marsh's meantone temperament (1809)"},marsh2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"John Marsh's quasi-equal temperament (1840)"},mavila12:{frequencies:[261.6255653006,256.98292999787,287.53945699376,321.72930260925,316.02010771872,353.59644178868,347.32175377489,388.62000642034,381.72381344999,427.11263899087,477.89842030218,469.41794908116,525.2340355968],description:"A 12-note mavila scale (for warping meantone-based music)"},mavila9:{frequencies:[261.6255653006,287.53945699376,316.02010771872,321.72930260925,353.59644178868,388.62000642034,427.11263899087,434.82882549415,477.89842030218,525.2340355968],description:"9-note scale of mavila temperament (TOP tuning)"},mavlim1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"First 27/25&135/128 scale"},mbira_banda:{frequencies:[261.6255653006,291.13134764929,327.53979283172,368.50142299854,404.88256627495,443.57258128492,480.10063929961,555.00605988575],description:"Mubayiwa Bandambira's tuning of keys R2-R9 from Berliner: The soul of mbira."},mbira_banda2:{frequencies:[261.6255653006,321.16993719469,360.29289210659,380.8360868427,422.32008370967,461.34206956593,587.32953583482,513.96502576833,761.67217368541,711.48673390068,849.04255025658,936.10488897708,1046.50286568598,633.49659152295,1055.60951665979,1174.65975017952,1321.5609185619,1486.83332446121,1633.62433483289,1789.73120457747,1937.11498804338,2239.34414798534],description:"Mubayiwa Bandambira's Mbira DzaVadzimu tuning B1=114 Hz"},mbira_gondo:{frequencies:[261.6255653006,315.28798447451,345.21700307457,379.51849407657,422.56409582244,461.07566488503,564.05539604512,516.94239487354,778.57545143809,697.24717811406,842.69088701475,926.42243447898,1029.11884353824,628.3943418294,1040.47545270591,1153.813137635,1308.64724593201,1415.59600512246,1572.51770682594,1715.83353717518,1883.05646656025,2103.91477035149],description:"John Gondo's Mbira DzaVadzimu tuning B1=122 Hz"},mbira_kunaka:{frequencies:[261.6255653006,292.98704147282,325.27731021818,350.44066402496,386.59871897734,434.19311733646,479.82340237272,507.76825077597],description:"John Kunaka's mbira tuning of keys R2-R9"},mbira_kunaka2:{frequencies:[261.6255653006,340.26769547546,358.83903996308,405.11650317313,448.98591596033,490.75518955849,622.61349925697,541.70354187177,817.28364083393,724.3415782324,907.35693646861,997.5144154576,1094.73088724383,673.88551872153,1085.91380691742,1216.08403680913,1350.10935126711,1454.55340013417,1604.63250673428,1802.17976955899,1991.5747030301,2107.56373750553],description:"John Kunaka's Mbira DzaVadzimu tuning B1=113 Hz"},mbira_mude:{frequencies:[261.6255653006,289.28740724512,309.15639683494,364.68988616898,372.56793743951,408.17001145418,507.1819925915,459.74594725879,689.63684605432,610.50517472746,760.79276355093,824.39562982862,887.65774573556,562.75365576207,888.68380073365,1015.53708814899,1126.80895076279,1206.28956516212,1365.00817887311,1507.58874420517,1666.02447560859,1935.99638964471],description:"Hakurotwi Mude's Mbira DzaVadzimu tuning B1=132 Hz"},mbira_mujuru:{frequencies:[261.6255653006,281.37682788104,301.05008478933,329.43721154897,394.9500460767,419.64523240241,533.01280425363,488.77489658044,700.88132804992,602.10016957865,765.19999119503,809.29752893,942.6160133907,577.57308891646,937.72844143307,1046.50286568598,1145.18149427149,1243.7900049313,1411.51350174391,1540.15576038017,1658.34356815416,1904.9365287586],description:"Ephat Mujuru's Mbira DzaVadzimu tuning, B1=106 Hz"},mbira_zimb:{frequencies:[261.6255653006,276.86260193655,305.95868600104,343.62544191138,379.08031027329,408.40584780369,453.41648894489,507.76825077597],description:"Shona mbira scale"},mboko_bow:{frequencies:[261.6255653006,347.61817721989,375.37611551499],description:"African Mboko Mouth Bow (chordophone, single string, plucked)"},mboko_zither:{frequencies:[261.6255653006,294.68429813772,319.3201344739,354.92237405774,396.55020354877,418.67676528474,472.67116512585,513.07516347663],description:"African Mboko Zither (chordophone; idiochordic palm fibre, plucked)"},mcclain:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,331.11985608357,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,510.98743222773,523.2511306012],description:"McClain's 12-tone scale, see page 119 of The Myth of Invariance"},mcclain_18:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,319.36714514233,327.03195662575,331.11985608357,344.91651675372,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,441.49314144476,459.88868900496,490.54793493862,496.67978412536,510.98743222773,523.2511306012],description:"McClain's 18-tone scale, see page 143 of The Myth of Invariance"},mcclain_8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,523.2511306012],description:"McClain's 8-tone scale, see page 51 of The Myth of Invariance"},mccoskey_22:{frequencies:[261.6255653006,270.06509966514,279.06726965397,287.78812183066,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,382.37582620857,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"31-limit rational interpretation of 22-tET, Marion McCoskey"},mclaren_bar:{frequencies:[261.6255653006,281.77400528964,292.14326370913,304.76756192248,325.50548568708,328.66136118639,353.45752508165,360.67039921732,379.1552038283,397.63971531932,405.75513620619,436.411067852,476.98680497297,521.16951219839],description:"Metal bar scale. see McLaren, Xenharmonicon 15, pp.31-33"},mclaren_cps:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,367.91095120397,392.4383479509,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"2)12 [1,2,3,4,5,6,8,9,10,12,14,15] a degenerate CPS"},mclaren_harm:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012],description:'from "Wilson part 9", claimed to be Schlesingers Dorian Enharmonic, prov. unkn'},mclaren_rath1:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,372.08969287196,380.54627680087,389.39619021485,398.6675280771,492.47165233054,507.3950357345,523.2511306012],description:"McLaren Rat H1"},mclaren_rath2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,380.54627680087,389.39619021485,398.6675280771,440.63253103259,452.54151835779,465.11211608996,523.2511306012],description:"McLaren Rat H2"},mean10:{frequencies:[261.6255653006,272.18829429226,292.14313377277,313.56091500001,326.220453695,350.13653284039,364.27275363262,390.97854693193,406.76370320307,436.58461973079,468.59178605305,487.51045723915,523.2511306012],description:"3/10-comma meantone scale"},mean11:{frequencies:[261.6255653006,272.83457350033,292.34115464648,313.24237654315,326.6628419965,350.01792709981,365.01399145768,391.11103243201,407.86767761879,437.02858581415,468.2743796482,488.33699124025,523.2511306012],description:"3/11-comma meantone scale. A.J. Ellis no. 10"},mean11ls_19:{frequencies:[261.6255653006,272.93479580544,280.25721516838,292.37183188538,305.01012622427,313.1930753928,326.73140514978,340.85495140859,349.99956372811,365.12891753666,374.92476290643,391.13155279262,408.03891236124,418.98596425085,437.09738047696,455.99169236578,468.2252457596,488.46511500326,509.57988860269,523.2511306012],description:"Least squares appr. to 3/2, 5/4, 7/6, 15/14 and 11/8, Petr Par\xEF\xBF\xBDzek"},mean13:{frequencies:[261.6255653006,273.83184954717,292.64606374809,312.75295135888,327.34460995374,349.8355370417,366.15730590163,391.31494185909,409.57195510156,437.7124891801,467.78648270341,489.61131479929,523.2511306012],description:"3/13-comma meantone scale"},mean14:{frequencies:[261.6255653006,274.22463192287,292.76593693997,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"3/14-comma meantone scale (Giordano Riccati, 1762)"},mean14_15:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,417.8586951835,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"15 of 3/14-comma meantone scale"},mean14_19:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,343.38964426558,349.76390952171,366.60744235102,373.41269440635,391.39507854003,410.24343789088,417.8586951835,437.98145930734,459.07327263526,467.59494724206,490.11285326462,513.71515101261,523.2511306012],description:"19 of 3/14-comma meantone scale"},mean14_7:{frequencies:[261.6255653006,292.76593693997,327.61283758281,349.76390952171,391.39507854003,437.98145930734,490.11285326462,523.2511306012],description:"Least squares appr. of 5L+2S to Ptolemy's Intense Diatonic scale"},mean14a:{frequencies:[261.6255653006,274.24690838881,292.77273178776,312.55000460003,327.62804498858,349.75985073129,366.63296888199,391.39962048672,410.28152481852,437.9967071602,467.58409501387,490.1412915133,523.2511306012],description:'fifth of sqrt(5/2)-1 octave "recursive" meantone, Paul Hahn'},mean16:{frequencies:[261.6255653006,274.864106667,292.9608347655,312.24903186879,328.04917632434,349.64754658398,367.34009701877,391.52533508436,411.33694767869,438.41888642025,467.28387071703,490.92894854125,523.2511306012],description:"3/16-comma meantone scale"},mean17:{frequencies:[261.6255653006,273.72412433093,292.61316553779,312.80569569783,327.2710181906,349.85520131118,366.03383354947,391.29294726693,409.38781813791,437.63868343995,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean17_17:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},mean17_19:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,342.40527209253,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,512.10885267608,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean18:{frequencies:[261.6255653006,272.71477685134,292.30447317753,313.30134186202,326.58087306932,350.03988839382,364.87661266094,391.0864943589,407.66301227525,436.94633423564,468.33314368944,488.18382342185,523.2511306012],description:"5/18-comma meantone scale (Smith). 3/2 and 5/3 eq. beat. A.J. Ellis no. 9"},mean19:{frequencies:[261.6255653006,273.06170311607,292.41066686775,313.13068664042,326.81820677503,349.97632128221,365.27443420834,391.15752841841,408.25574814862,437.18446858874,468.16306089008,488.62733218513,523.2511306012],description:"5/19-comma meantone scale, fifths beats three times third. A.J. Ellis no. 11"},mean19r:{frequencies:[261.6255653006,273.04332227389,292.40504357126,313.13971948727,326.80563693258,349.97968716666,365.25335892465,391.15376651139,408.22434232755,437.17185753972,468.17206422213,488.60384173026,523.2511306012],description:"Approximate 5/19-comma meantone with 19/17 tone, Petr Parizek, 2002"},mean23:{frequencies:[261.6255653006,274.15058593695,292.74334833321,312.59706303545,327.56228503462,349.77740346966,366.52259116395,391.37997903742,410.11684180717,437.93077103284,467.63102771476,490.01832104213,523.2511306012],description:"5/23-comma meantone scale, A.J. Ellis no. 4"},mean23six:{frequencies:[261.6255653006,273.11604376732,292.42729246507,313.10398392891,326.85537164611,349.96637341293,365.33674088125,391.16864715511,408.34860251967,437.22175336101,468.13644404983,488.69678846289,523.2511306012],description:"6/23-comma meantone scale"},mean25:{frequencies:[261.6255653006,272.66208311698,292.28833573479,313.32728859832,326.54481265413,350.04955123355,364.81618195011,391.07569872695,407.57299290994,436.91015056532,468.35900068872,488.11644468937,523.2511306012],description:"7/25-comma meantone scale, least square weights 3/2:0 5/4:1 6/5:1"},mean26:{frequencies:[261.6255653006,272.91754119498,292.36655103694,313.20156187458,326.7196004604,350.00272362315,365.10913291207,391.12802157824,408.00943064927,437.08553692506,468.23370304224,488.44305713046,523.2511306012],description:"7/26-comma meantone scale (Woolhouse 1835). Almost equal to meaneb742"},mean26_21:{frequencies:[261.6255653006,272.91754592428,280.26986822267,292.36655272572,304.98534036063,313.20156006546,326.71960423481,335.52133892506,340.8210986211,350.00272362315,365.10913712997,374.9450750913,391.12802157824,408.00943771953,419.00109777107,437.08553944976,455.95052092314,468.23370033762,488.44306277317,501.60158217053,509.52467838008,523.2511306012],description:"21 of 7/26-comma meantone scale (Woolhouse 1835)"},mean27:{frequencies:[261.6255653006,273.15429014256,292.43899158768,313.08519355925,326.88152513903,349.9593710588,365.38059276675,391.17647406766,408.41395592075,437.24799400905,468.11771609009,488.74567091648,523.2511306012],description:"7/27-comma meantone scale, least square weights 3/2:2 5/4:1 6/5:1"},mean29:{frequencies:[261.6255653006,273.57932033947,292.56893127899,312.87664195194,327.1720749345,349.88164908166,365.86785468743,391.26336919078,409.14031659695,437.53944680455,467.90980928584,489.28875967044,523.2511306012],description:"7/29-comma meantone scale, least square weights 3/2:4 5/4:1 6/5:1"},mean2sev:{frequencies:[261.6255653006,272.52663052146,292.24684137387,313.39402123097,326.45210604021,350.07440004945,364.66083404534,391.04793957621,407.34160211012,436.81711699543,468.42550014967,487.94322738789,523.2511306012],description:"2/7-comma meantone scale. Zarlino's temperament (1558). See also meaneb371"},mean2sev_15:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,350.07447082328,364.66081719444,391.04786051887,407.34165622677,419.34452602299,436.81710690282,468.42541627199,487.94330348661,523.2511306012],description:"15 of 2/7-comma meantone scale"},mean2sev_19:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,340.0543130973,350.07447082328,364.66081719444,375.40603866065,391.04786051887,407.34165622677,419.34452602299,436.81710690282,455.01770749831,468.42541627199,487.94330348661,508.27414914183,523.2511306012],description:"19 of 2/7-comma meantone scale"},mean2sev_31:{frequencies:[261.6255653006,264.72620698393,272.52663052146,280.55692507618,283.88190679319,292.24689370448,300.8583415146,304.42377254813,313.39402847191,317.10820138491,326.45203249943,336.07138073182,340.0543130973,350.07447082328,354.22315547012,364.66081719444,375.40603866065,379.85514366424,391.04786051887,395.6823437549,407.34165622677,419.34452602299,424.31412061457,436.81710690282,449.68851049921,455.01770749831,468.42541627199,473.97693555703,487.94330348661,502.32108537715,508.27414914183,523.2511306012],description:"31 of 2/7-comma meantone scale"},mean2seveb:{frequencies:[261.6255653006,274.26749945295,292.59076110537,312.44357330613,327.42660602987,349.76102048238,366.6169314736,391.04794861134,410.01084835752,437.49574139527,467.27496094916,489.74950989452,523.2511306012],description:'"2/7-comma" meantone with equal beating fifths. A.J. Ellis no. 8'},mean2sevr:{frequencies:[261.6255653006,272.52663052146,292.24289114742,313.39346366789,326.45152465405,350.07234194042,364.65868952128,391.04531121882,407.33886585294,436.81651812993,468.41855142334,487.93599106598,523.2511306012],description:"Rational approximation to 2/7-comma meantone, 1/1 = 262.9333"},mean9:{frequencies:[261.6255653006,274.03547926168,292.70827332867,306.59245933664,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"2/9-comma meantone scale, Lemme Rossi, Sistema musico (1666)"},mean94:{frequencies:[261.6255653006,268.79084150406,291.09659021292,315.25339315665,323.88740273232,350.76536842075,360.37196303797,390.27761906502,400.96635635801,434.24075936811,470.27645613296,483.15616342113,523.2511306012],description:"4/9-comma meantone scale"},mean9_15:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,418.0235894185,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"15 of 2/9-comma meantone scale"},mean9_19:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,343.0174228875,349.79835961887,366.39065074918,373.63364091796,391.35653176554,409.92008797511,418.0235894185,437.85206746661,458.62082212371,467.68706357679,489.87127257422,513.10776453427,523.2511306012],description:"19 of 2/9-comma meantone scale"},mean9_31:{frequencies:[261.6255653006,268.72322665693,274.03547926168,279.45274708261,287.03404351137,292.70827332867,298.49467410529,306.59245933664,312.65343270838,321.13524775754,327.48360691354,333.95746354843,343.0174228875,349.79835961887,359.28803828513,366.39065074918,373.63364091796,383.76997851754,391.35653176554,401.97367512027,409.92008797511,418.0235894185,429.36393755067,437.85181455341,446.50763144636,458.62082212371,467.68706357679,480.3749841712,489.87127257422,499.55528826613,513.10776453427,523.2511306012],description:"31 of 2/9-comma meantone scale"},meaneb1071:{frequencies:[261.6255653006,273.45959631537,292.5323192343,305.76452283047,327.09038632535,349.9034421565,365.73073124967,391.23900009103,408.93579686983,437.45744778434,457.24482979639,489.13584427285,523.2511306012],description:"Equal beating 7/4 = 3/2 same."},meaneb1071a:{frequencies:[261.6255653006,273.94115519525,292.67936294368,306.45675889694,327.41929816594,349.81553441422,366.28252094772,391.33731744348,409.75863641311,437.78732645584,458.39517452459,489.75074612717,523.2511306012],description:"Equal beating 7/4 = 3/2 opposite."},meaneb341:{frequencies:[261.6255653006,272.43747957464,292.21954801903,313.43802026715,326.39113133433,350.09085029289,364.55867287416,391.02956482064,407.18921698842,436.75579855003,468.46925117002,487.82916876009,523.2511306012],description:"Equal beating 6/5 = 5/4 same. Almost 4/15 Pyth. comma"},meaneb371:{frequencies:[261.6255653006,272.52577151658,292.24657972098,313.39444482621,326.45151771442,350.07455777399,364.65985037488,391.0477633913,407.34013625771,436.81652657765,468.42591953828,487.94213100406,523.2511306012],description:"Equal beating 6/5 = 3/2 same. Practically 2/7-comma (Zarlino)"},meaneb371a:{frequencies:[261.6255653006,269.83862220337,291.42039690163,314.72828847419,324.6081803116,350.57044084899,361.57569171511,390.49462500658,421.72650333798,434.96526321606,469.75391665508,484.50062400899,523.2511306012],description:"Equal beating 6/5 = 3/2 opposite. Almost 2/5-comma"},meaneb381:{frequencies:[261.6255653006,275.92799893014,293.28437056932,311.73248946737,328.77414682856,349.45463702831,368.55847249214,391.74146894101,416.38271791821,439.14534885862,466.76838786866,492.28548089506,523.2511306012],description:"Equal beating 6/5 = 8/5 same. Almost 1/7-comma"},meaneb451:{frequencies:[261.6255653006,274.36682021224,292.8092284668,312.49148032108,327.70992276921,349.73795145032,366.77030983847,391.42412846541,410.48661799548,438.07873640926,467.5258138363,490.29448158868,523.2511306012],description:"Equal beating 5/4 = 4/3 same, 5/24 comma meantone. A.J. Ellis no. 6"},meaneb471:{frequencies:[261.6255653006,272.3284467197,292.18612898941,313.49179640307,326.31648163178,350.11087068539,364.43361138613,391.00720457415,407.00321492741,436.68087780422,468.52283272721,487.68970701588,523.2511306012],description:"Equal beating 5/4 = 3/2 same. Almost 5/17-comma"},meaneb471a:{frequencies:[261.6255653006,274.14912748586,292.7429036132,312.59777626068,327.56128980523,349.7776701617,366.52092076205,391.37968062521,410.11434970273,437.92977184699,467.63173811584,490.01645860508,523.2511306012],description:"Equal beating 5/4 = 3/2 opposite. Almost 1/5 Pyth. Gottfried Keller (1707)"},meaneb471b:{frequencies:[261.6255653006,272.31089540773,292.18072491748,313.50040506268,326.30440921209,350.11400731728,364.41338872146,391.00370158472,406.97310157871,436.668886633,468.53149836075,487.66729542944,523.2511306012],description:"21/109-comma meantone with 9/7 major thirds, almost equal beating 5/4 and 3/2"},meaneb472:{frequencies:[261.6255653006,270.83769079127,291.72826852127,314.23020335825,325.29440843388,350.38540704884,362.72286472858,390.7008399429,404.45761497645,435.65472502222,469.25816799182,485.78126704788,523.2511306012],description:"Beating of 5/4 = twice 3/2 same. Almost 5/14-comma"},meaneb472_19:{frequencies:[261.6255653006,270.8378472333,281.80541953687,291.72826852127,302.00051792575,314.23002185182,325.29459633135,336.74877333101,350.38540704884,362.72307424558,377.41153667283,390.7008399429,404.45808222448,420.83660282593,435.65497666633,450.99513069838,469.25816799182,485.78154764623,502.88674365212,523.2511306012],description:"Beating of 5/4 = twice 3/2 same, 19 tones"},meaneb472a:{frequencies:[261.6255653006,274.74648495017,292.92493846141,312.30633997417,327.96897748493,349.66886860972,367.20529370531,391.50146074488,411.13561642091,438.33843670622,467.34113372786,490.7787182415,523.2511306012],description:"Beating of 5/4 = twice 3/2 opposite. Almost 3/17-comma"},meaneb591:{frequencies:[261.6255653006,273.06215106005,292.41085266114,313.13038820279,326.81843330822,349.97621009739,365.27491737756,391.15765268623,418.87439289145,437.18488525956,468.16276342643,488.62782610925,523.2511306012],description:"Equal beating 4/3 = 5/3 same."},meaneb732:{frequencies:[261.6255653006,272.00548436883,292.08705896894,313.65121264041,326.09523618955,350.1701397801,364.06303937825,390.94102347986,406.4514961644,436.45893055948,468.68174619223,487.27655969467,523.2511306012],description:"Beating of 3/2 = twice 6/5 same. Almost 4/13-comma"},meaneb732_19:{frequencies:[261.6255653006,272.00553778846,280.94077405591,292.08707584055,303.67560621907,313.65118727632,326.09527197795,339.03307470248,350.17012966679,364.06310036266,376.02237826726,390.94103477068,406.45158772689,419.80330474394,436.45896585468,453.77543893118,468.68171912011,487.27662724555,506.60928680033,523.2511306012],description:"Beating of 3/2 = twice 6/5 same, 19 tones"},meaneb732a:{frequencies:[261.6255653006,270.68848625127,291.6822692306,314.3042667302,325.1920204578,350.41293324447,362.5515203525,390.67014898736,404.20304509584,435.55206635241,469.33217160858,485.59021720901,523.2511306012],description:"Beating of 3/2 = twice 6/5 opposite. Almost 1/3 Pyth. comma"},meaneb742:{frequencies:[261.6255653006,272.89343543801,292.35917287023,313.21341909223,326.70311046689,350.00714105462,365.08148980199,391.12308516115,407.96824372307,437.06899032128,468.24551969328,488.41224041213,523.2511306012],description:"Beating of 3/2 = twice 5/4 same."},meaneb742a:{frequencies:[261.6255653006,273.78850133971,292.63287562287,312.77409391616,327.31510698093,349.84341999552,366.10759179471,391.30612443552,409.49789158088,437.68290117536,467.80756449982,489.55615570194,523.2511306012],description:"Beating of 3/2 = twice 5/4 opposite. Almost 3/13-comma, 3/14 Pyth. comma"},meaneb781:{frequencies:[261.6255653006,273.88372205101,292.66195046404,312.72748571568,327.38015167213,349.82604176358,366.21672762941,391.32556326448,418.15568884829,437.74813244966,467.76108961433,489.67748280644,523.2511306012],description:"Equal beating 3/2 = 8/5 same."},meaneb891:{frequencies:[261.6255653006,272.7426257605,292.31307409948,313.28760473417,326.59990179186,350.03483972175,364.90860969063,391.092135133,419.1546662649,436.96549358815,468.31936361194,488.21959184068,523.2511306012],description:"Equal beating 8/5 = 5/3 same. Almost 5/18-comma"},meaneight:{frequencies:[261.6255653006,276.08926119362,293.33333347996,311.65444160511,328.88393162803,349.42547049952,368.74309237173,391.77416758435,413.43299207996,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8 Pyth. comma meantone scale"},meanfifth:{frequencies:[261.6255653006,274.56546814423,292.86978442859,312.39456569414,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"1/5-comma meantone scale (Verheijen)"},meanfifth2:{frequencies:[261.6255653006,279.06726965397,292.86986732103,312.39452419152,327.84547867349,349.70184487387,366.99801003998,391.46454285105,417.56218018201,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"1/5-comma meantone by John Holden (1770)"},meanfifth_19:{frequencies:[261.6255653006,274.56546814423,279.06726965397,292.86978442859,307.35519222791,312.39456569414,327.84548435462,344.06059968708,349.70179235499,366.99791252626,373.01539917593,391.46460164194,410.82629477826,417.56217294621,438.21464222188,459.88868900496,467.42914467878,490.54793493862,514.81033759999,523.2511306012],description:"19 of 1/5-comma meantone scale"},meanfifth_43:{frequencies:[261.6255653006,265.91515911649,270.13633240739,274.56546814423,279.06726965397,283.49717461664,288.14537375445,292.86978442859,297.67175429757,302.39711110066,307.35519222791,312.39456569414,317.35355938713,322.556865357,327.84548435462,333.22081516619,338.51040756711,344.06059968708,349.70179235499,355.43547760922,361.07770857381,366.99791252626,373.01539917593,378.93660287884,385.14971481892,391.46460164194,397.88302689184,404.19904307077,410.82629477826,417.56217294621,424.19061149626,431.14564594215,438.21464222188,445.39957775044,452.46991103879,459.88868900496,467.42914467878,475.09307907327,482.63477102771,490.54793493862,498.59100550039,506.50570672499,514.81033759999,523.2511306012],description:"Complete 1/5-comma meantone scale"},meanfiftheb:{frequencies:[261.6255653006,275.80023422757,293.11157312801,311.73372470712,328.53333183909,349.48325286892,368.3828117434,391.46459711956,412.7266004334,438.69360944226,466.62683936965,491.82624824197,523.2511306012],description:'"1/5-comma" meantone with equal beating fifths'},meangold:{frequencies:[261.6255653006,272.97231199113,292.38331430233,313.17462880702,326.75706743029,349.99269211627,365.17193449866,391.13923210785,408.10300926149,437.12312635029,468.20685771475,488.51307131873,523.2511306012],description:"Meantone scale with Blackwood's R = phi, and diat./chrom. ST = phi, ~4/15-comma"},meanhalf:{frequencies:[261.6255653006,267.49544939623,290.69507255622,315.90677595028,322.99452506247,351.00752840096,358.88280562497,390.00836666198,398.75867291663,433.34262909025,470.92601754108,481.49180950675,523.2511306012],description:"1/2-comma meantone scale"},meanhar2:{frequencies:[261.6255653006,273.08769296879,292.41861893027,305.22982618403,326.83598255713,349.97156260351,365.30423365264,391.16284711627,408.30015740759,437.20230245522,456.35665612784,488.66055322307,523.2511306012],description:"1/9-Harrison's comma meantone scale"},meanhar3:{frequencies:[261.6255653006,274.22153683641,292.76499331753,306.86017365004,327.61072570921,343.38355445704,366.60389537541,391.39444778107,410.23814647641,437.9793418028,459.06587176894,490.10890120058,523.2511306012],description:"1/11-Harrison's comma meantone scale"},meanharris:{frequencies:[261.6255653006,273.71072489962,292.60907359238,306.12544311476,327.26186315247,349.85764856047,366.01847563765,391.29021017831,409.36491649663,437.62950220286,457.84473927605,489.45661357347,523.2511306012],description:"1/10-Harrison's comma meantone scale"},meanhsev:{frequencies:[261.6255653006,265.69493617871,271.18768033644,275.4057836544,279.68949451567,284.03983498254,289.91182549392,294.4211659268,299.00064605783,305.1819244006,309.92877868547,314.74946639166,321.25632089757,326.25319922315,331.32779988873,336.4813337451,343.43745382287,348.77934146077,354.20431777528,361.52682728594,367.15008027699,372.86080050545,378.66034414493,386.48843610249,392.49994642563,398.60496085649,406.84537033315,413.17351844213,419.60009331305,426.12662827999,434.93599657884,441.70106893056,448.57136642871,457.84473927605,464.96613926104,472.19830582795,481.96011959425,489.45661357347,497.06970936204,504.80122352123,515.23704142273,523.2511306012],description:"1/14-septimal schisma tempered meantone scale"},meanhskl:{frequencies:[261.6255653006,275.0605216927,293.02063313667,312.15345277639,328.18310911307,349.61186736411,367.56508220664,391.56529173291,411.67289207144,438.55312706018,467.18850946536,491.17950266504,523.2511306012],description:"Half septimal kleisma meantone"},meanlst357_19:{frequencies:[261.6255653006,273.71260157103,279.68803244686,292.60971924044,306.12821574316,312.81131320311,327.26311833974,342.38279105966,349.85736361975,366.02068710341,374.01129952811,391.29052886394,409.36829077259,418.30522648629,437.63082426891,457.84952434322,467.84458559023,489.45917220726,512.07206464598,523.2511306012],description:"19 of mean-tone scale, least square error in 3/2, 5/4 and 7/4"},meanmalc:{frequencies:[261.6255653006,279.16226462633,292.82999876562,312.45832383396,327.75622702832,349.72564885805,366.84815356577,391.43789792004,417.67588698136,438.12522309524,467.49265244264,490.38100841085,523.2511306012],description:"Meantone approximation to Malcolm's Monochord, 3/16 Pyth. comma"},meannkleis:{frequencies:[261.6255653006,277.55670411237,293.77792781181,311.66693695111,329.88161264913,349.96913477239,370.42222384066,392.07096746411,415.94530241673,440.25439013544,467.06275302556,494.35929617392,523.2511306012],description:"1/5 kleisma tempered meantone scale"},meanpi:{frequencies:[261.6255653006,275.38456311745,294.43027471344,309.91448590794,326.2128298123,348.77404705732,367.11600789597,392.50613131028,413.14795414706,434.87532652316,464.95175460796,489.40347900327,523.2511306012],description:"Pi-based meantone with Harrison's major third by Erv Wilson"},meanpi2:{frequencies:[261.6255653006,287.5806999253,296.7710142931,326.2128298123,336.6377243117,370.0346037192,381.85992557156,394.06315326167,433.15704755212,446.99959483943,491.34516423327,507.04724898227,523.2511306012],description:"Pi-based meantone by Erv Wilson analogous to 22-tET"},meanpkleis:{frequencies:[261.6255653006,274.33428876064,294.88060759996,309.2047285643,324.22465805628,348.50752497012,365.43662717622,392.80607455881,411.88702081614,442.73537947933,464.24169412807,486.7926967469,523.2511306012],description:"1/5 kleisma positive temperament"},meanquar:{frequencies:[261.6255653006,273.37431312998,292.50627485027,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale. Pietro Aaron's temp. (1523). 6/5 beats twice 3/2"},meanquar_14:{frequencies:[261.6255653006,273.37431312998,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split D#/Eb and G#/Ab, Otto Gibelius (1666)"},meanquar_15:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb and G#/Ab"},meanquar_16:{frequencies:[261.6255653006,273.37431312998,279.93548123753,292.50629850443,305.64179898843,312.97722776199,327.03195662575,349.91920725962,365.63293356166,391.22137338448,408.78994578219,418.60090448096,437.39882871549,457.04097849371,468.01000025525,489.02679755603,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, G#/Ab and A#/Bb"},meanquar_17:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177250659,312.977175335,327.03195662575,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39889945791,457.04105241293,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},meanquar_19:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,341.71789064962,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39890198442,457.04105241293,468.01003810189,489.02683710225,510.98743222773,523.2511306012],description:"19 of 1/4-comma meantone scale"},meanquar_27:{frequencies:[261.6255653006,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,327.03195662575,334.88072358477,341.71789064962,349.91912034749,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"27 of 1/4-comma meantone scale"},meanquar_31:{frequencies:[261.6255653006,267.90457886781,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,320.48862783822,327.03195662575,334.88072358477,341.71789064962,349.91912034749,358.31717956585,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,479.24227945773,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"31 of 1/4-comma meantone scale"},meanquareb:{frequencies:[261.6255653006,274.90575459855,292.80763523599,312.14798050979,327.88746490679,349.6453532581,367.3522744581,391.22144795733,411.14173398328,437.99455416256,467.00507093977,490.61429903129,523.2511306012],description:"Variation on 1/4-comma meantone with equal beating fifths"},meanquarm23:{frequencies:[261.6255653006,273.51763645063,292.40504357126,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,408.78994578219,436.04260883433,468.17206422213,489.12605686634,523.2511306012],description:"1/4-comma meantone approximation with minimal order 23 beatings"},meanquarr:{frequencies:[261.6255653006,273.37036621967,292.50063201309,312.98169478553,327.03195662575,349.92419358955,365.62579001637,391.21579858034,408.78994578219,437.39258595147,468.01906681552,489.01974822542,523.2511306012],description:"Rational approximation to 1/4-comma meantone, Kenneth Scholz, MTO 4.4, 1998"},meansabat:{frequencies:[261.6255653006,279.13726386405,294.25495796556,313.95067836072,330.95382015833,348.87783040382,372.229687597,392.38914286775,418.65339720992,441.32709511026,470.8669722571,496.36848628125,523.2511306012],description:"1/9-schisma meantone scale of Eduard Sa'bat-Garibaldi"},meansabat_53:{frequencies:[261.6255653006,264.79625752493,268.00537599851,271.25338610366,275.79485124716,279.13726386405,282.52018221184,285.94410045135,290.73152483281,294.25495796556,297.82109228474,301.4304452945,305.08354077075,310.19140758515,313.95067836072,317.75550958044,321.60645175541,326.99095182327,330.95382015833,334.96471528237,339.02421924159,343.13292113612,348.87783040382,353.10595017045,357.38531136087,361.71653498009,367.77258074571,372.229687597,376.74081403286,381.30660995465,385.92774054592,392.38914286775,397.14458487807,401.95765903525,406.82906379475,413.640406907,418.65339720992,423.72714093867,428.86237189887,436.04260883433,441.32709511026,446.67562589029,452.08897683944,457.56793273834,465.22877230071,470.8669722571,476.57350267936,482.349191678,490.42492909292,496.36848628125,502.38407462043,508.4725670703,514.63484717027,523.2511306012],description:"53-tone 1/9-schisma meantone scale"},meanschis:{frequencies:[261.6255653006,275.81646505128,294.24573392894,310.20599265769,327.03195662575,348.88329767713,367.80716871461,392.38299382393,413.66634097248,436.10412364188,465.24335632603,490.47874118496,523.2511306012],description:"1/8-schisma temperament, Helmholtz"},meanschis7:{frequencies:[261.6255653006,275.84425785506,294.23387584933,310.2247482054,327.0846843223,348.89032888179,367.85164222246,392.37508610937,413.69968681881,436.18322603255,465.26210635182,490.54793493862,523.2511306012],description:"1/7-schisma linear temperament"},meanschis_17:{frequencies:[261.6255653006,275.81646505128,290.77709705464,294.24573392894,310.20599265769,327.03195662575,330.93307160522,348.88329767713,367.80716871461,372.19468374184,392.38299382393,413.66634097248,436.10412364188,441.30634506723,465.24335632603,490.47874118496,496.32958936031,523.2511306012],description:"17-tone 1/8-schisma linear temperament"},meansept:{frequencies:[261.6255653006,273.93523095528,292.67762672082,312.70235991264,327.41522444303,349.81667202162,366.27579142084,391.33604481052,409.74867679276,437.78330574787,467.73603562223,489.74334292241,523.2511306012],description:"Meantone scale with septimal diminished fifth"},meansept2:{frequencies:[261.6255653006,273.61459551034,286.15296204753,292.57963558274,305.98714063953,320.00886175336,327.19620693615,342.18982383643,349.87514759905,365.9082279648,382.67602660872,391.27063976147,409.20043831214,427.95210889573,437.56358849756,457.61500463173,478.58500343311,489.333659422,511.75744671018,523.2511306012],description:"Meantone scale with septimal neutral second"},meansept3:{frequencies:[261.6255653006,267.11515986718,271.23581508831,275.42019673559,281.19923906193,285.53716249988,289.94217244295,296.02592413073,300.59257160392,305.22982618403,309.9384746623,316.44180152381,321.32358037849,326.28048244956,333.12670774706,338.26588629419,343.48414905091,348.7829114007,356.10146388137,361.59490682213,367.17305499414,374.87731434423,380.66058361349,386.53284867747,394.643327573,400.73152907611,406.91341882127,413.19091223118,421.86074762795,428.36858751681,434.97682067587,444.1040384307,450.95501471222,457.91167766162,464.97592623609,474.73234784313,482.05581210758,489.49253462334,499.76337935275,507.47298512535,515.30182087389,523.2511306012],description:"Pythagorean scale with septimal minor third"},meansept4:{frequencies:[261.6255653006,266.94086705872,271.13211808455,275.38917613856,280.98410555769,285.39585012732,289.87686370457,295.76613145071,300.40996929954,305.12672026341,309.91752915454,316.21395200486,321.17884203959,326.22168604472,332.8493514236,338.07543464185,343.38355445704,348.77505435772,355.86092403367,361.44831302863,367.12342987925,374.58207334188,380.46340397682,386.43730087372,394.28810581018,400.47907310734,406.76701374557,413.15368163355,421.54749623588,428.16623317002,434.88889120201,443.72428802318,450.69091522486,457.76754776364,464.95497741911,474.40121026751,481.84980583512,489.41535214975,499.35853288878,507.19898454493,515.16253949886,523.2511306012],description:"Pythagorean scale with septimal narrow fourth"},meansev:{frequencies:[261.6255653006,275.93321340298,293.28595453555,311.72996498387,328.77769811601,349.45369437647,368.5644419122,391.74252566418,413.16594588103,439.14890519043,466.76586696593,492.29212632197,523.2511306012],description:"1/7-comma meantone scale, Jean-Baptiste Romieu (1755)"},meansev2:{frequencies:[261.6255653006,273.98141462199,292.76593693997,312.83835055233,327.61283758281,350.07440004945,366.60744235102,391.74252566418,410.24343789088,438.37026184168,468.42550014967,490.54793493862,524.18054130269],description:"Meantone scale with 1/7-comma stretched octave (stretched meansept)"},meansev_19:{frequencies:[261.6255653006,275.93321340298,278.07859353335,293.28589524255,309.32501829942,311.72996858511,328.77775508885,346.75764506664,349.4536277652,368.56443339655,371.42996022741,391.74260033637,413.16585280598,416.37814821359,439.14890011719,463.16493144882,466.76596133102,492.29202110912,496.11959049595,523.2511306012],description:"19 of 1/7-comma meantone scale"},meanseveb:{frequencies:[261.6255653006,276.822915312,293.45907344559,311.2600957924,329.2717708679,349.29792128041,369.56105314287,391.74259807358,414.53862252605,439.49286138442,466.19439430972,493.21190508606,523.2511306012],description:'"1/7-comma" meantone with equal beating fifths'},meansixth:{frequencies:[261.6255653006,275.36245350283,293.11247215425,312.00666699279,328.38886075091,349.55699144229,367.91095120397,391.62676241399,412.18948168074,438.75944753732,467.04212833931,491.56459996916,523.2511306012],description:"1/6-comma meantone scale (tritonic temperament of Salinas)"},meansixth_19:{frequencies:[261.6255653006,275.36245350283,278.49009641114,293.11247215425,308.50278723002,312.00666699279,328.38886075091,345.6314161331,349.55699144229,367.91095120397,372.08969287196,391.62676241399,412.18948168074,416.87124381956,438.75944753732,461.79691129422,467.04212833931,491.56459996916,517.37477513058,523.2511306012],description:"19 of 1/6-comma meantone scale"},meansixtheb:{frequencies:[261.6255653006,276.39673661379,293.31426069206,311.4574698476,328.96404447481,349.37515437283,369.07004939896,391.62674884124,413.78350416977,439.15979251365,466.37460465854,492.63446576705,523.2511306012],description:'"1/6-comma" meantone with equal beating fifths'},meansixthm:{frequencies:[261.6255653006,275.36250599118,293.11251278827,312.00669222389,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52369088643,438.75941205608,467.04206359353,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 2 fifths"},meansixthm2:{frequencies:[261.6255653006,276.14113065853,293.11251278827,310.24975557428,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52380581681,438.75941205608,465.72523006308,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 4 fifths"},meansixthpm:{frequencies:[261.6255653006,275.00020270933,293.00227310437,309.72478954314,328.14198392915,348.83408706747,367.49599295996,391.5530240856,412.50030385781,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"modified 1/6P-comma temperament, French 18th century"},meansixthso:{frequencies:[261.6255653006,273.09145986506,292.50627485027,313.30134186202,327.03195662575,350.28154752005,365.63284274659,391.62667645325,408.78994578219,437.85193595173,468.98001879925,489.53334447372,524.3356019912],description:"1/6-comma meantone scale with 1/6-comma stretched oct, Dave Keenan TL 13-12-99"},meanstr:{frequencies:[261.6255653006,272.52663052146,292.30447317753,313.51763757869,326.58087306932,350.28154752005,364.87661266094,391.35649333595,407.66301227525,437.24799400905,468.98001879925,488.52085380073,523.97386302914],description:"Meantone with 1/9-comma stretched octave, Petr Parizek (2006)"},meanten:{frequencies:[261.6255653006,276.96346718799,293.59840699152,311.2324721493,329.47860040677,349.26769656434,369.74365294187,391.95114287501,414.92943551322,439.85086739936,466.26912673157,493.60433806962,523.2511306012],description:"1/10-comma meantone scale"},meanthird:{frequencies:[261.6255653006,271.40047399919,291.9012907804,313.95067836072,325.68056936328,350.28154752005,363.36884069528,390.81668391305,405.4184580124,436.04260883433,468.98001879925,486.50215045777,523.2511306012],description:"1/3-comma meantone scale (Salinas)"},meanthird_19:{frequencies:[261.6255653006,271.40047399919,281.38801176707,291.9012907804,302.80736724606,313.95067836072,325.68056936328,337.848714425,350.28154752005,363.36884069528,376.74081403286,390.81668391305,405.4184580124,420.33785775232,436.04260883433,452.33412516107,468.98001879925,486.50215045777,504.40543017669,523.2511306012],description:"Complete 1/3-comma meantone scale"},meanthirdeb:{frequencies:[261.6255653006,273.41679662438,292.30169912182,312.83755546226,326.81234905863,349.91518709086,365.63683018302,390.81669745772,408.5035451685,436.83089868331,467.63468237516,488.59687355467,523.2511306012],description:'"1/3-comma" meantone with equal beating fifths'},meanvar1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,312.00669222389,327.03195662575,349.55706816887,366.3906401674,391.22147055517,410.48618883318,437.39890198442,467.04206359353,489.53334447372,523.2511306012],description:"Variable meantone 1: C-G-D-A-E 1/4, others 1/6"},meanvar2:{frequencies:[261.6255653006,274.19219069011,292.50627485027,312.04360750473,327.03195662575,349.70184487387,366.23895640989,391.22147055517,410.65012590831,437.39890198442,467.23549927892,489.3306802979,523.2511306012],description:"Variable meantone 2: C..E 1/4, 1/5-1/6-1/7-1/8 outward both directions"},meanvar3:{frequencies:[261.6255653006,275.36250599118,292.50627485027,310.71739423852,327.03195662575,349.55706816887,367.15000817177,391.22147055517,413.04376116614,437.39890198442,466.0760911248,489.53334447372,523.2511306012],description:"Variable meantone 3: C..E 1/4, 1/6 next, then Pyth."},meanvar4:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,412.61639318626,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Variable meantone 4: naturals 1/4-comma, accidentals Pyth."},mediant16:{frequencies:[261.6255653006,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Mediant doubling of octave done four times"},mercadier:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,349.22823143301,368.74309237173,391.5530240856,413.90012676351,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Mercadier's well-temperament (1777), 1/12 and 1/6 Pyth. comma"},mercadier2:{frequencies:[261.6255653006,276.14388692511,292.95319623755,310.40895756597,328.03206784165,349.20805980193,368.45885450371,391.49761638186,413.86785247997,438.37641748302,465.57175090792,491.63473786767,523.2511306012],description:"Mercadier de Belestas (1776)"},mercator:{frequencies:[261.6255653006,272.09448029963,279.3054110864,290.48161516351,306.08206748155,318.32990397837,326.76614606023,335.42596179815,348.84778913489,362.80689075348,372.42184279259,387.32403355801,408.12545368833,418.94141877379,435.70530841001,453.13974129598,465.14865565404,490.12996697565,509.74216322321,523.2511306012],description:"19 out of 53-tET, see Mandelbaum p. 331"},merrick:{frequencies:[261.6255653006,278.62147458377,295.28844751169,312.94924079019,329.91874474504,349.29981986967,371.62722343835,394.01440557319,416.60121863153,438.96906929631,468.0242659544,493.6331420766,523.2511306012],description:"A. Merrick's melodically tuned equal temperament (1811)"},mersen_l1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 1"},mersen_l2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 2"},mersen_s1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 1"},mersen_s2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 2"},mersenmt1:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.03921839762,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 1"},mersenmt2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 2"},mersenne:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,340.65828815182,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,510.98743222773,523.2511306012],description:"31-note choice system of Mersenne, Harmonie universelle (1636)"},meyer:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},meyer_29:{frequencies:[261.6255653006,268.26840191956,275.93321340298,286.15296204753,289.72987407313,294.32876096318,306.59245933664,321.92208230347,327.03195662575,331.11985608357,343.38355445704,344.91651675372,357.69120255941,367.91095120397,372.50983809402,383.2405741708,386.30649876417,392.4383479509,408.78994578219,413.89982010446,429.2294430713,441.49314144476,457.84473927605,459.88868900496,482.88312345521,490.54793493862,496.67978412536,510.98743222773,515.07533168556,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},mid_enh1:{frequencies:[261.6255653006,269.10058145205,336.37572681506,348.83408706747,392.4383479509,403.65087217807,504.56359022259,523.2511306012],description:"Mid-Mode1 Enharmonic, permutation of Archytas's with the 5/4 lying medially"},mid_enh2:{frequencies:[261.6255653006,271.31540105247,339.14425131559,348.83408706747,392.4383479509,406.97310157871,508.71637697339,523.2511306012],description:"Permutation of Archytas' Enharmonic with the 5/4 medially and 28/27 first"},miller19:{frequencies:[261.6255653006,271.16557874802,283.07475767856,293.39690257971,304.09543631541,315.18408718336,326.67707691855,338.58915326012,350.93559605343,363.73224209988,376.99551198295,390.74241649248,407.9032302438,422.77716528297,438.1934715504,454.17192383337,470.73301771751,487.89800430439,505.68889852562,524.12852955557],description:"TOP tempered nr. 64 [1202.9, 570.4479508], 7-limit {225/224, 1029/1000}"},miller7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,313.95067836072,329.64821227876,353.19451315581,366.27579142084,392.4383479509,412.06026534844,439.53094970501,470.92601754108,494.47231841813,523.2511306012],description:"Herman Miller, 7-limit JI. mode of parizek_ji1"},miller_12:{frequencies:[261.6255653006,273.36657578691,291.63627719304,313.29104303136,327.35065305942,349.22823143301,364.90060015836,391.99543598175,418.19337019276,436.9606979923,456.57025003029,487.08386390194,523.2511306012],description:"Herman Miller, scale with appr. to three 7/4 and one 11/8. Tuning List 19-11-99"},miller_12a:{frequencies:[261.6255653006,273.46133384191,291.68681828778,313.23675853409,327.40738352015,349.22823143301,365.02708698668,391.99543598175,418.12090908234,437.03642407223,456.80766452229,487.25270356141,523.85596330884],description:'Herman Miller, "Starling" scale, alternative version TL 25-11-99'},miller_12r:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,484.4917875937,523.2511306012],description:'Herman Miller, "Starling" scale rational version'},miller_ar1:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.07474405997,327.9937953665,348.83408706747,368.24374600687,391.64146650178,414.27421384356,438.21489534465,465.11211608996,490.99166158792,523.2511306012],description:'Herman Miller, "Arrow I" well-temperament'},miller_ar2:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.2849072826,328.2161033156,349.07052034394,368.24374600687,391.64146650178,414.27421384356,438.51190905657,465.42736069124,491.32444638706,523.2511306012],description:'Herman Miller, "Arrow II" well-temperament'},miller_b1:{frequencies:[261.6255653006,276.37000081643,292.93610587951,310.49521248455,328.2161033156,348.83408706747,368.4933346061,391.64146650178,413.993616853,438.80912407872,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Butterfly I" well-temperament'},miller_b2:{frequencies:[261.6255653006,276.55731914056,293.13465239421,310.70566022736,328.2161033156,349.07052034394,368.74309237173,392.17254067411,414.27421384356,439.10654054756,465.42736069124,491.99069280383,523.2511306012],description:'Herman Miller, "Butterfly II" well-temperament'},miller_bug:{frequencies:[261.6255653006,275.99574470663,292.73769384471,310.49521248455,327.54963108844,348.83408706747,368.4933346061,391.64146650178,413.993616853,437.62147130622,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Bug I" well-temperament'},miller_dim:{frequencies:[261.6255653006,272.37088095799,275.97178311718,291.10467300644,307.06737543415,311.12698372208,323.9053895548,328.18760802294,346.1837483498,365.1667076515,369.99442271164,385.1905938463,390.2830385166,411.68417663589,434.25884690128,440,458.07139483414,464.12736626882,489.57775198944,516.42371048788,523.2511306012],description:"Diminished temperament, g=92.421, oct=1/4, 7-limit"},miller_nikta:{frequencies:[261.6255653006,272.78230567952,282.82337239762,292.30660227893,305.1368529352,315.1779191367,326.89249731477,341.39626079795,349.76381456689,364.82541608424,379.88701473,391.60159255926,407.77886614283,422.28262813098,436.22855406869,456.86852448015,469.69877536137,488.10739794888,508.74736733766,523.2511306012],description:'Herman Miller, 19-tone scale of "Nikta". Tuning List 22-1-99'},miller_sp:{frequencies:[261.6255653006,276.74268633071,292.73329748773,304.15432597486,321.72882314722,340.31880135827,353.5963846,374.02771873076,395.63960626236,411.07553805605,434.82810464551,459.95313047266,477.89826295658,505.51194770063,525.23456349057],description:"Herman Miller, Superpelog temperament, TOP tuning"},minor_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"A minor pentatonic"},minor_clus:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,353.19451315581,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,523.2511306012],description:"Chalmers' Minor Mode Cluster, Genus [333335]"},minor_wing:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Chalmers' Minor Wing with 7 minor and 6 major triads"},minortone:{frequencies:[261.6255653006,264.87670583656,269.18630372462,273.56601964703,276.96554054138,281.47182622933,286.05143175444,290.70554674078,294.31805527354,299.10666990622,303.97319627313,307.75057781118,312.75774231814,317.84637624619,323.01780144749,327.03184444407,332.35271908155,337.76016543181,341.95740725719,347.52112383796,353.17536321933,358.9216002989,363.3818066762,369.29410472703,375.30259493676,379.96636500161,386.14849505708,392.43120962619,398.81614754309,403.7721109712,410.34156772664,417.0179085097,422.20006196255,429.06934285921,436.05038835349,443.14501943782,448.65184388114,455.95150328441,463.36992699746,469.12808274602,476.76089208744,484.51788878959,492.4010934061,498.52001054206,506.63103252794,514.8740254656,523.2511306012],description:"Minortone temperament, g=182.466089, 5-limit"},miracle1:{frequencies:[261.6255653006,266.71173418545,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,479.82340237272,489.15147723638,513.27277840175,523.2511306012],description:'21 out of 72-tET Pyth. scale "Miracle/Blackjack", Keenan & Erlich, TL 2-5-2001'},miracle1a:{frequencies:[261.6255653006,266.57640943865,279.87817034289,285.17441410431,299.40418912991,305.0699313594,320.29246281951,326.35348199782,342.63803067389,349.1219037468,366.54256247747,373.47879032775,392.11482112276,399.53496279579,419.47115746916,427.40897376302,448.73603972606,457.22764679928,480.04261976898,489.12665346498,513.5333359992,523.2511306012],description:"Version of Blackjack with just 11/8 intervals"},miracle2:{frequencies:[261.6255653006,266.71172956369,274.52699087907,279.86396690685,285.30469707927,293.66477470251,299.3738011912,305.19381471768,314.13668880034,320.24370207508,326.46943949911,336.03573785931,342.56848231438,349.22822739856,359.4614100947,366.44956423737,373.57357245769,380.83607584373,391.99544051026,399.61607650784,407.38486242506,419.32216702351,427.4740516384,435.78441397758,448.55389013814,457.27405769313,466.16375074742,479.82341068742,489.15147723638,498.66088722045,513.27278729609,523.2511306012],description:'31 out of 72-tET Pythagorean scale "Miracle/Canasta", tempered Fokker-M, 36 7-limit tetrads'},miracle24:{frequencies:[261.6255653006,266.71173418545,274.52698453615,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,513.27277840175,523.2511306012],description:"Miracle[24] in 72-tET tuning."},miracle2a:{frequencies:[261.6255653006,266.57640943865,274.68028654691,279.87817034289,285.17441410431,293.84366906071,299.40418912991,305.0699313594,314.34400674513,320.29246281951,326.35348199782,336.27457379784,342.63803067389,349.1219037468,359.73515228832,366.54256247747,373.47879032775,380.54627680087,392.11482112276,399.53496279579,407.09552105481,419.47115746916,427.40897376302,435.49700296564,448.73603972606,457.22764679928,465.87994655565,480.04261976898,489.12665346498,498.38259075187,513.5333359992,523.2511306012],description:"Version of Canasta with just 11/8 intervals"},miracle3:{frequencies:[261.6255653006,266.71172956369,271.8967720342,274.52699087907,279.86396690685,285.30469707927,290.85119844166,293.66477470251,299.3738011912,305.19381471768,311.12697293924,314.13668880034,320.24370207508,326.46943949911,332.81620914398,336.03573785931,342.56848231438,349.22822739856,356.01744208336,359.4614100947,366.44956423737,373.57357245769,380.83607584373,384.52012922913,391.99544051026,399.61607650784,407.38486242506,411.32573797959,419.32216702351,427.4740516384,435.78441397758,440.00001524924,448.55389013814,457.27405769313,466.16375074742,470.67322937359,479.82341068742,489.15147723638,498.66088722045,503.48472993456,513.27278729609,523.2511306012],description:'41 out of 72-tET Pythagorean scale "Miracle/Studloco", Erlich/Keenan 2001'},miracle31s:{frequencies:[261.6255653006,266.63636836248,274.61234258734,279.87187586531,285.23214274484,293.7643779857,299.39072204343,305.12482507342,314.2521161294,320.27085311289,326.40486440328,336.1687117034,342.60720791066,349.16901789451,359.61381619398,366.50134650551,373.52079096839,380.6746756467,392.06191220286,399.57090708206,407.22371854314,419.40512463865,427.43781242392,435.62434685833,448.6553095271,457.24821364991,466.00569400686,479.94546308962,489.13765420145,498.50589943595,513.41785698047,523.2511306012],description:"Canasta with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle3a:{frequencies:[261.6255653006,266.57640943865,271.6209387912,274.68028654691,279.87817034289,285.17441410431,290.57088243021,293.84366906071,299.40418912991,305.0699313594,310.84289043406,314.34400674513,320.29246281951,326.35348199782,332.52919812642,336.27457379784,342.63803067389,349.1219037468,355.72847573316,359.73515228832,366.54256247747,373.47879032775,380.54627680087,384.83248369581,392.11482112276,399.53496279579,407.09552105481,411.6807594913,419.47115746916,427.40897376302,435.49700296564,440.40213577526,448.73603972606,457.22764679928,465.87994655565,471.12729153307,480.04261976898,489.12665346498,498.38259075187,503.99602271809,513.5333359992,523.2511306012],description:"Version of Studloco with just 11/8 intervals"},miracle3ls:{frequencies:[261.6255653006,266.8561524992,272.19132869617,274.36355553357,279.84880885615,285.44374339214,291.1505189834,293.47406686496,299.34138986722,305.32601617869,311.43030899178,313.91568307924,320.1916880693,326.59318586748,333.12264767748,335.78115718319,342.4943108472,349.34167821305,356.32594256772,359.16962765504,366.35037871957,373.67471357934,381.14545968569,384.18721873359,391.86813762951,399.70261841457,407.69373119716,410.94736065575,419.16328558448,427.54349328421,436.09121881038,439.57145109254,448.35967321435,457.32356924795,466.46667727785,470.18934850506,479.58967749961,489.177972196,498.95793401383,502.93987502638,512.99500332159,523.2511306012],description:"Miracle-41 in a 7-limit least-squares tuning, Gene Ward Smith, 2001"},miracle3p:{frequencies:[261.6255653006,266.34679554672,270.06721067987,274.94077677072,279.90228841312,284.95333588433,290.09553330897,294.14767822015,299.45579274291,304.85969791727,310.36112062791,314.69634158508,320.37527393455,326.15668500873,332.04242788125,336.6805001021,342.75615313904,348.94144590806,355.2383548887,360.20043713509,366.70052302062,373.3179099666,380.0547104455,385.36343543368,392.31760641523,399.39727291251,406.60469732047,412.28427858225,419.7242587073,427.29849640545,435.00941939202,441.0857666732,449.04549132915,457.14885520764,465.39844769831,471.89927840742,480.41505607532,489.08450736089,497.91040254418,504.86537329764,513.97604599191,523.2511306012],description:"Least squares Pythagorean approximation to partch_43"},miracle41s:{frequencies:[261.6255653006,266.63636836248,269.45164985995,274.61234258734,279.87187586531,285.23214274484,290.69507255622,293.7643779857,299.39072204343,305.12482507342,310.96875093738,314.2521161294,320.27085311289,326.40486440328,332.65635780028,336.1687117034,342.60720791066,349.16901789451,355.85650343121,359.61381619398,366.50134650551,373.52079096839,380.6746756467,384.69403121132,392.06191220286,399.57090708206,407.22371854314,411.52339231679,419.40512463865,427.43781242392,435.62434685833,440.22388881539,448.6553095271,457.24821364991,466.00569400686,470.92601754108,479.94546308962,489.13765420145,498.50589943595,503.76937659657,513.41785698047,523.2511306012],description:"StudLoco with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle_12:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,336.03572815422,342.56848033562,359.46139971304,366.44956000397,384.52011812375,411.32572372413,440,470.6732130613,523.2511306012],description:"A 12-tone subset of Blackjack with six 4-7-9-11 tetrads"},miracle_12a:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82339960115,489.15147723638,513.27277840175,523.2511306012],description:"A 12-tone chain of Miracle generators and subset of Blackjack"},"24erlich-keenan":{frequencies:[261.6255653006,266.71173469898,279.86396636799,285.30470202322,290.8512090818,299.37380003836,305.19381941867,320.24370022528,326.46944389922,342.56847967604,349.22823143301,356.01745305102,366.44956070954,373.5735760541,391.99543598175,399.61607958554,407.38487340641,419.32216137194,427.47405410759,448.55388322895,457.27405945401,479.82340237272,489.15147817819,498.66089778183,523.2511306012],description:"24 note mapping for Erlich/Keenan Miracle scale low version, tuned to 72-equal"},miracle_8:{frequencies:[261.6255653006,279.86396690685,314.13668154225,336.03572815422,366.44956000397,391.99543598175,419.32216217931,448.5538823653,523.2511306012],description:"tet3a in 72-et"},miring1:{frequencies:[261.6255653006,285.29448470177,307.6953604706,387.15515639797,420.96788906714,523.2511306012],description:"Gamelan Miring from Serdang wetan, Tangerang. 1/1=309.5 Hz"},miring2:{frequencies:[261.6255653006,279.34865171253,304.66723527068,384.42070010042,412.69311132744,523.2511306012],description:"Gamelan Miring (Melog gender) from Serdang wetan"},misca:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,348.83408706747,392.4383479509,412.06026534844,433.74764773521,457.84473927605,523.2511306012],description:"21/20 x 20/19 x 19/18=7/6 7/6 x 8/7=4/3"},miscb:{frequencies:[261.6255653006,269.80136421624,278.50463402967,319.76457981184,348.83408706747,392.4383479509,404.70204632437,417.75695104451,479.64686971777,523.2511306012],description:"33/32 x 32/31x 31/27=11/9 11/9 x 12/11=4/3"},miscc:{frequencies:[261.6255653006,276.00059636107,292.04714266113,310.07474405997,348.83408706747,392.4383479509,414.00089454161,438.0707139917,465.11211608996,523.2511306012],description:"96/91 x 91/86 x 86/54=32/27. 32/27 x 9/8=4/3."},miscd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,348.83408706747,392.4383479509,407.5321305644,423.83341578697,441.49314144476,523.2511306012],description:"27/26 x 26/25 x 25/24=9/8. 9/8 x 32/27=4/3."},misce:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,348.83408706747,392.4383479509,420.46965851882,452.81347840488,490.54793493862,523.2511306012],description:"15/14 x 14/13 x 13/12=5/4. 5/4 x 16/15= 4/3."},miscf:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,378.42269266694,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh1"},miscg:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh 2"},misch:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,490.54793493862,504.56359022259,523.2511306012],description:"SupraEnh 3"},misty:{frequencies:[261.6255653006,268.57642185399,270.57706033988,272.59260010205,274.62315370363,276.66883458144,284.01936005382,286.13503371773,288.26646546986,290.41377434565,292.57708030445,300.35025535204,302.58757688062,304.84156607104,307.11234355974,309.40003795144,311.70477168653,319.9861304005,322.36972224007,324.77106769218,327.19030275625,329.62755691287,338.38508739928,340.90573394089,343.44515491415,346.00349213972,348.58088853904,357.84197030948,360.50755209334,363.19298782427,365.89842747751,368.62402219236,378.41760905933,381.23645754858,384.07630597582,386.93730633346,389.81962065329,392.72340320054,403.157261366,406.16039889903,409.18590458221,412.23394976407,415.30469757995,426.33849458487,429.51431022199,432.71378016074,435.93708308397,439.18439906139,450.85263092877,454.21105352848,457.59449053401,461.00313090234,464.43716505707,476.77631130474,480.3278378528,483.9058226648,487.51045723915,491.14194572312,494.80048247871,507.94632001299,511.73003620658,515.54193450341,519.38223078906,523.2511306012],description:"Misty temperament, g=96.787939, p=400, 5-limit"},mistyschism:{frequencies:[261.6255653006,278.75251614148,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,418.12877421223,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Mistyschism scale 32805/32768 and 67108864/66430125"},mixed9_3:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,349.22823143301,391.99543598175,409.35055662695,427.47405410759,466.16376151809,523.2511306012],description:"A mixture of the hemiolic chromatic and diatonic genera, 75 + 75 + 150 + 200 c"},mixed9_4:{frequencies:[261.6255653006,271.89678302796,282.57123920205,305.19382000629,349.22823143301,391.99543598175,407.38487419079,423.37848741825,457.27406033445,523.2511306012],description:'Mixed enneatonic 4, each "tetrachord" contains 67 + 67 + 133 + 233 cents.'},mixed9_5:{frequencies:[261.6255653006,277.18263097687,293.66476791741,329.62755691287,349.22823143301,391.99543598175,415.30469757995,440,493.88330125613,523.2511306012],description:"A mixture of the intense chromatic genus and the permuted intense diatonic"},mixed9_6:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,349.22823143301,391.99543598175,415.30469757995,440,466.16376151809,523.2511306012],description:"Mixed 9-tonic 6, Mixture of Chromatic and Diatonic"},mixed9_7:{frequencies:[261.6255653006,277.18263097687,311.12698372208,329.62755691287,349.22823143301,391.99543598175,415.30469757995,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 7, Mixture of Chromatic and Diatonic"},mixed9_8:{frequencies:[261.6255653006,293.66476791741,311.12698372208,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 8, Mixture of Chromatic and Diatonic"},mixol_chrom:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,311.12229387098,319.76457981184,359.73515228832,411.12588832951,426.35277308246,434.39716502741,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,605.86973016981,622.24458774197,639.52915962369,719.47030457665,822.25177665903,852.70554616492,868.79433005482,885.50191332511,959.29373943553,1046.5022612024],description:"Mixolydian chromatic tonos"},mixol_chrom2:{frequencies:[261.6255653006,271.31540105247,281.75060878526,332.97799220076,366.27579142084,385.55346465352,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the chromatic genus"},mixol_chrominv:{frequencies:[261.6255653006,279.06726965397,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Mixolydian inverted"},mixol_diat:{frequencies:[261.6255653006,274.08392555301,287.78812183066,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,500.50108144463,523.2511306012,548.16785110602,575.57624366132,639.52915962369,677.14852195449,719.47030457665,767.43499154843,822.25177665903,885.50191332511,920.92198985811,959.29373943553,1001.00216288925,1046.5022612024],description:"Mixolydian diatonic tonos"},mixol_diat2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,348.83408706747,366.27579142084,406.97310157871,457.84473927605,523.2511306012],description:"Schlesinger's Mixolydian Harmonia, a subharmonic series though 13 from 28"},mixol_diatcon:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv2:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"Inverted Schlesinger's Mixolydian Harmonia, a harmonic series from 14 from 28"},mixol_enh:{frequencies:[261.6255653006,274.08392555301,287.78812183066,295.1673044417,299.00064605783,302.93486508491,348.83408706747,411.12588832951,418.60090448096,422.44127975143,426.35277308246,469.85815809087,523.2511306012,548.16785110602,575.57624366132,590.33460888341,598.00129211566,605.86973016981,697.66817413493,822.25177665903,837.20180896192,844.88255950285,852.70554616492,939.71631618175,1046.5022612024],description:"Mixolydian Enharmonic Tonos"},mixol_enh2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,332.97799220076,366.27579142084,375.66747838035,385.55346465352,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the enharmonic genus"},mixol_enhinv:{frequencies:[261.6255653006,270.34641747729,279.06726965397,373.75080757229,411.12588832951,420.46965851882,429.81342870813,523.2511306012],description:"A harmonic form of Schlesinger's Mixolydian inverted"},mixol_penta:{frequencies:[261.6255653006,269.32043486826,281.75060878526,332.97799220076,366.27579142084,381.53728273004,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the pentachromatic genus"},mixol_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,822.25177665903,885.50191332511,959.29373943553,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Mixolydian Tonos"},mixol_tri1:{frequencies:[261.6255653006,268.0066766494,274.70684356563,332.97799220076,366.27579142084,378.90599112501,392.4383479509,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the first trichromatic genus"},mixol_tri2:{frequencies:[261.6255653006,268.0066766494,281.75060878526,332.97799220076,366.27579142084,378.90599112501,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the second trichromatic genus"},mmmgeo1:{frequencies:[261.6255653006,291.52662303231,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo2:{frequencies:[261.6255653006,295.05751399041,323.4477810403,352.62279726972,392.9238840789,430.73079539701,485.77193724523,529.58860866211],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo3a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,477.32335087626,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4b:{frequencies:[261.6255653006,295.05751399041,323.4477810403,348.40303271111,392.9238840789,430.73079539701,485.77193724523,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmswap:{frequencies:[261.6255653006,251.16054268858,294.32876096318,282.55561052465,313.95067836072,348.83408706747,353.19451315581,392.4383479509,376.74081403286,418.60090448096,423.83341578697,470.92601754108,523.2511306012],description:"Swapping major and minor in 5-limit JI"},mokhalif:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,425.01198472693,477.05982293263,523.2511306012],description:"Iranian mode Mokhalif from C"},montvallon:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Montvallon's Monochord, Nouveau sisteme de musique (1742)"},monzismic:{frequencies:[261.6255653006,265.20988799749,268.52946324281,272.20837072565,275.61554447717,279.39153269358,282.88861654172,286.76424730356,290.69297498385,294.33151655947,298.3639173457,302.09847446042,306.23728412706,310.07039048391,314.31841699833,318.25267316085,322.61279858837,327.03265671938,331.12605620426,335.66254762155,339.86396564906,344.52016812641,348.83245514045,353.61152766937,358.03760933268,362.94279426564,367.48567344471,372.52029869489,377.62390147213,382.35053879638,387.58881783384,392.44018387738,397.81669307529,402.79607923799,408.31446627855,413.42525081527,419.08925963743,424.33490995001,430.14838328955,436.04150237937,441.49934027584,447.54796975207,453.14983163098,459.35807517454,465.10776160818,471.47983118983,477.38124304179,483.92146177974,489.97860285142,496.69140794435,503.49617981289,509.7983334288,516.78267280423,523.2511306012],description:"Monzismic temperament, g=249.018448, 5-limit"},sevengroups:{frequencies:[261.6255653006,261.6255653006,275.62199471997,265.19499215873,270.69536599394,266.7406479561],description:"Here are some suggestions for a logical system encompassing intervals into seven broad groups: skhisma, kleisma, comma,"},"monzo-sym-11":{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,285.40970760065,286.15296204753,287.78812183066,294.32876096318,299.00064605783,304.4370214407,305.22982618403,313.95067836072,314.76825825228,327.03195662575,332.97799220076,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,411.12588832951,418.60090448096,434.91003062957,436.04260883433,448.50096908674,449.66894036041,457.84473927605,465.11211608996,475.68284600109,478.40103369253,479.64686971777,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Monzo symmetrical system: 11-limit"},"monzo-sym-5":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 5-limit"},"monzo-sym-7":{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 7-limit"},monzo_sumerian_2place12:{frequencies:[261.6255653006,277.17835052447,293.68632213351,311.15032543183,329.66469551353,349.22211163595,369.93402791915,391.94841243536,415.27867508032,439.91220695103,466.03267445926,493.6331420766,523.2511306012],description:"Monzo - most accurate 2-place sexagesimal 12-tET approximation"},monzo_sumerian_simp12:{frequencies:[261.6255653006,277.34158865788,293.41184893525,310.84225580269,329.78012432849,348.83408706747,370.22485655745,392.4383479509,415.27867508032,440.11777340288,466.26338370404,493.6331420766,523.2511306012],description:"Monzo - simplified 2-place sexagesimal 12-tET approximation"},morgan:{frequencies:[261.6255653006,277.18263097687,294.07958763262,310.86358783941,330.18637907377,349.03110370139,370.30791823326,392.32757291716,415.07027187895,440.74593809176,465.76911360306,494.58094207912,523.2511306012],description:"Augustus de Morgan's temperament (1843)"},"mos11-34":{frequencies:[261.6255653006,272.51337835337,301.75671459889,314.3146261019,348.04364484358,362.52783176564,377.61479489998,418.13653788176,435.53771116377,453.66305442345,502.34551296122,523.2511306012],description:"Wilson 11 of 34-tET, G=9, Chain of minor & major thirds with Kleismatic fusion"},"mos12-17":{frequencies:[261.6255653006,272.51337835337,283.85429714132,307.97166902637,320.78822215662,348.04364484358,362.52783176564,377.61479489998,409.69842558521,426.7484383229,463.0066556268,482.27514684959,523.2511306012],description:"MOS 12 of 17, generator 7"},"mos12-22":{frequencies:[261.6255653006,287.56082683758,296.76515515861,326.18384711731,336.62443200122,347.39920007397,381.83730669135,394.05926325844,433.12283887627,446.9863572706,491.29666030217,507.02222283506,523.2511306012],description:"MOS 12 of 22, contains nearly just, recognizable diatonic, and pentatonic scales"},"mos13-22":{frequencies:[261.6255653006,278.64197723942,296.76515515861,316.06708432391,326.18384711731,347.39920007397,369.99442271164,381.83730669135,406.67242132093,433.12283887627,446.9863572706,476.05883716226,507.02222283506,523.2511306012],description:"MOS 13 of 22, contains 5 and 9 tone MOS as well. G=5 or 17"},"mos15-22":{frequencies:[261.6255653006,278.64197723942,287.56082683758,306.26409645618,316.06708432391,336.62443200122,347.39920007397,369.99442271164,381.83730669135,406.67242132093,419.68930726506,446.9863572706,461.29362042034,491.29666030217,507.02222283506,523.2511306012],description:"MOS 15 in 22, contains 7 and 8 tone MOS as well. G= 3 or 19"},moscow:{frequencies:[261.6255653006,277.4816141504,293.64820765919,311.48626315692,329.67368081467,349.7414907984,370.88289054572,392.4383479509,416.22242101754,440.4723112686,467.22939450183,494.51052097482,523.2511306012],description:"Charles E. Moscow's equal beating piano tuning (1895)"},mundeuc45:{frequencies:[261.6255653006,267.57160087561,269.80136421624,271.31540105247,274.70684356563,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,499.46698830115,504.56359022259,507.3950357345,513.90736041189,523.2511306012],description:"Euclidean reduced detempered Miracle[45] with Tenney tie-breaker"},musaqa:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Egyptian scale by Miha'il Musaqa"},musaqa_24:{frequencies:[261.6255653006,269.02051582234,276.67624041581,284.6011815168,292.80374147632,300.29158209195,310.07474405997,319.15917884888,328.55303549378,338.26335715633,348.29659232622,358.65845048745,369.35373924791,380.38618160659,391.75821216589,403.47075130695,415.52295665389,427.91195157543,440.63253103259,453.67684579974,467.03406698289,480.69003385373,494.62688932105,508.8227088795,523.2511306012],description:"from d'Erlanger vol.5, p.34, after Mih.a'il Mu^saqah, 1899, a Lebanese scholar"},myna23:{frequencies:[261.6255653006,267.85369360167,274.23008563259,291.58574485564,298.52709031489,305.63367799752,312.90944157785,320.35840837329,327.98470157359,348.7424193045,357.04440817535,365.54403007102,374.24598974517,383.15510395049,392.27630410488,417.10295228105,427.03229805648,437.19801690717,447.60573581317,458.26121570764,469.17035466565,498.86352554567,510.73922293119,522.89762727195],description:"23 notes of Myna temperament, 7-limit TOP tuning (Paul Erlich)"},"mystic-r":{frequencies:[261.6255653006,367.91095120397,465.11211608996,654.0639132515,872.08521766867,1177.3150438527],description:"Skriabin's mystic chord, op. 60 rationalised"},mystic:{frequencies:[261.6255653006,369.99442271164,466.16376151809,659.25511382574,880,1174.65907166964],description:"Skriabin's mystic chord, op. 60"},urmawi:{frequencies:[261.6255653006,294.32876096318,326.6631048533,348.83408706747,392.4383479509,441.49314144476,471.45776383774,523.2511306012],description:"al-Urmawi, one of twelve maqam rows. First tetrachord is Rast"},valentine:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,330.47439827444,348.83408706747,371.78369805875,392.4383479509,414.24047839262,440.63253103259,466.02053819169,495.71159741166,523.2511306012],description:"Robert Valentine, tuning with primes 3 & 19, TL 7-2-2002"},valentine2:{frequencies:[261.6255653006,286.10322937235,312.87102146627,349.87955533643,382.6142546815,418.41160951721,467.90420651233,511.68128147674,559.55413558945,625.74204293254,684.28641150324,748.30818586768,782.53142116911,855.74498969389,935.80841302466,1046.5022612024],description:"Robert Valentine, two octave 31-tET subset for guitar, TL 10-5-2002"},vallotti:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.6228209638,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Vallotti & Young scale (Vallotti version)"},vavoom:{frequencies:[164.81377845643,165.83014536684,167.75567809608,168.79018601865,170.75008918846,172.7327497266,173.79795102719,175.81600173949,176.90021569146,178.95428827501,180.05785630665,182.14859375797,184.26360775673,185.39991601304,187.55268266167,188.70927492235,190.90046811205,192.07770535997,194.30800987601,196.56421264146,197.77637683895,200.07285246365,201.3066535986,203.64411977036,206.00872855044,207.27913480479,209.68595147418,210.9790342774,213.42881100738,214.74497512464,217.23848121866,219.76094059848,221.11615343515,223.68363702025,225.06304018178,227.6763542391,229.0803795269,231.74034082302,234.43118684139,235.87686755635,238.61574610914,240.08723199411,242.87499909192,244.37274935352,247.21027763268,250.08075380295,251.62294163139,254.54465534315,256.1143694988,259.0882353168,260.68597011615,263.71291896434,266.77501515601,268.42015092639,271.53690502834,273.21140777811,276.38379544331,278.08818779989,281.31720045362,284.58370833477,286.33866758091,289.66348210637,291.44976709494,294.83392732599,296.65209720599,300.09666587055,303.58123106099,305.45334345815,309.00010579622,310.90563508986,314.51570836542,316.45525105281,320.12976356015,323.84694071013,325.84402686189,329.62755691286],description:"Vavoom temperament, g=111.875426, 5-limit"},veroli:{frequencies:[261.6255653006,276.87699530057,293.57148765354,310.97965314221,329.42008585855,349.28270065725,369.64409253099,391.93430587921,414.97617910427,439.79164309579,466.09106516521,493.49262474744,523.2511306012],description:"Claudio di Veroli's well temperament (1978)"},vertex_chrom:{frequencies:[261.6255653006,271.89678302796,317.17549194805,349.22823143301,391.99543598175,407.38487419079,448.5538823653,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 266.7 + 166.7 cents"},vertex_chrom2:{frequencies:[261.6255653006,274.52698453615,323.3415889232,349.22823143301,391.99543598175,411.32572372413,484.46499093218,523.2511306012],description:"A vertex tetrachord from Chapter 5, 83.3 + 283.3 + 133.3 cents"},vertex_chrom3:{frequencies:[261.6255653006,275.18850165466,324.90175210669,349.22823143301,391.99543598175,412.31687950427,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 287.5 + 125 cents"},vertex_chrom4:{frequencies:[261.6255653006,275.40936140075,325.42347822215,349.22823143301,391.99543598175,412.64779522483,487.58430040208,523.2511306012],description:"A vertex tetrachord from Chapter 5, 88.9 + 288.9 + 122.2 cents"},vertex_chrom5:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 133.3 + 266.7 + 100 cents"},vertex_diat:{frequencies:[261.6255653006,299.37379946195,323.3415889232,349.22823143301,391.99543598175,448.5538823653,484.46499932732,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 133.3 + 133.3 cents"},vertex_diat10:{frequencies:[261.6255653006,295.79278388132,324.90175210669,349.22823143301,391.99543598175,443.18842137843,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 162.5 + 125 cents"},vertex_diat11:{frequencies:[261.6255653006,295.79278388132,306.66641795878,349.22823143301,391.99543598175,443.18842137843,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 62.5 + 225 cents"},vertex_diat12:{frequencies:[261.6255653006,293.66476791741,315.65242990842,349.22823143301,391.99543598175,440,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 125 + 175 cents"},vertex_diat2:{frequencies:[261.6255653006,299.37379946195,329.62755691287,349.22823143301,391.99543598175,448.5538823653,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 166.7 + 100 cents"},vertex_diat3:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 225 + 200 cents"},vertex_diat4:{frequencies:[261.6255653006,297.93622032612,329.62755691287,349.22823143301,391.99543598175,446.39994737251,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 225 + 175 + 100 cents"},vertex_diat5:{frequencies:[261.6255653006,275.18850165466,315.65242990842,349.22823143301,391.99543598175,412.31687950427,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 237.5 + 175 cents"},vertex_diat7:{frequencies:[261.6255653006,293.66476791741,306.66641795878,349.22823143301,391.99543598175,440,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 75 + 225 cents"},vertex_diat8:{frequencies:[261.6255653006,277.18263097687,306.66641795878,349.22823143301,391.99543598175,415.30469757995,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 100 + 175 + 225 cents"},vertex_diat9:{frequencies:[261.6255653006,295.79278388132,320.24370022528,349.22823143301,391.99543598175,443.18842137843,479.82340237272,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 137.5 + 150 cents"},vertex_sdiat:{frequencies:[261.6255653006,275.18850165466,306.66641795878,349.22823143301,391.99543598175,412.31687950427,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 187.5 + 225 cents"},vertex_sdiat2:{frequencies:[261.6255653006,273.20871865617,302.26980244078,349.22823143301,391.99543598175,409.35055662695,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 175 + 250 cents"},vertex_sdiat3:{frequencies:[261.6255653006,265.43099677612,302.26980244078,349.22823143301,391.99543598175,397.69714089209,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 25 + 225 + 250 cents"},vertex_sdiat4:{frequencies:[261.6255653006,271.8968348557,302.26980244078,349.22823143301,391.99543598175,407.38495184466,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 183.3 + 250 cents"},vertex_sdiat5:{frequencies:[261.6255653006,299.37374239667,302.26980244078,349.22823143301,391.99543598175,448.55379686399,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.33 + 16.67 + 250 cents"},vicentino1:{frequencies:[261.6255653006,267.54129532085,273.59078691818,279.77706779472,286.10322937235,292.57243455474,295.8616864168,299.18791603519,305.95298478736,312.87102146627,319.94548489658,327.17991022208,330.85823737058,334.57791819083,342.14320575162,349.87955533643,357.79083283678,365.88099775759,374.15409293384,382.6142546815,391.26571058456,395.66452371628,400.11279059885,409.15991580663,418.41160951721,427.87249484695,437.54730686196,442.46644183113,447.44088028055,457.55816161244,467.90420651233,478.48419305869,489.30340830564,494.80441235385,500.36726155789,511.68128147674,523.2511306012],description:"Usual Archicembalo tuning, 31-tET plus D,E,G,A,B a 10th tone higher"},vicentino2:{frequencies:[261.6255653006,262.40966637115,273.59078691818,274.41074818102,279.77706779472,280.61556956011,292.57243455474,293.44928279173,305.95298478736,306.86993670158,312.87102146627,313.80870698104,327.17991022208,328.16047998243,342.14320575162,343.16862103779,349.87955533643,350.92815470883,365.88099775759,366.97755604579,374.15409293384,391.26571058456,392.4383479509,409.15991580663,410.38618254261,418.41160951721,419.66560148231,437.54730686196,438.85865161274,457.55816161244,458.92947695163,467.90420651233,469.30653196482,489.30340830564,490.7698679226,511.68128147674,523.2511306012],description:"Alternative Archicembalo tuning, lower 3 rows the same upper 3 rows 3/2 higher"},vicentino2q217:{frequencies:[261.6255653006,262.46259217279,273.59078691818,274.46609608433,279.77706779472,280.67216895906,292.57243455474,293.50847071582,305.95298478736,306.93183153514,312.87102146627,313.87199953275,327.17991022208,328.2266690608,342.14320575162,343.23783523487,349.87955533643,350.99893596542,365.88099775759,367.05157442308,374.15409293384,391.26571058456,392.51750150462,409.15991580663,410.46895395112,418.41160951721,419.7502468954,437.54730686196,438.9471656765,457.55816161244,459.02204178186,467.90420651233,469.40118981889,489.30340830564,490.86885203792,511.68128147674,523.2511306012],description:"Vicentino's second tuning, 217-tET version"},vicentino36:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,279.93529690293,280.80602334765,292.50627485027,293.41610276971,305.64177427204,306.59245933664,312.97717714283,313.95067836072,327.03195662575,328.04917632434,341.71789064962,349.91912034749,351.00752840096,365.63284274659,366.77012764335,374.40803131735,375.5726110527,391.22147055517,392.4383479509,408.78994578219,410.06146948999,418.60090448096,419.90294514449,437.39889945791,438.75941205608,457.04105505291,458.46266117889,468.01003810189,469.46576276783,489.02683710225,490.54793493862,510.98743222773,523.2511306012],description:"Vicentino's second tuning of 1555"},victor_eb:{frequencies:[261.6255653006,276.45300885359,293.16631378471,311.00963644582,328.52867116285,348.83408706747,368.60401198904,391.83966133014,414.6795130731,439.03603741286,465.77732204887,492.79300649794,523.2511306012],description:"Equal beating Victorian piano temperament, interpr. by Bill Bremmer (improved)"},victorian:{frequencies:[261.6255653006,276.5429423948,293.32570896007,310.76776326996,328.29744538229,349.22823143301,368.92737853004,391.99543598175,414.58565256441,438.73106346722,465.89457252293,492.17459484008,523.2511306012],description:"Form of Victorian temperament (1885)"},vitale1:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,457.84473927605,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Rami Vitale's 7-limit just scale"},vitale2:{frequencies:[261.6255653006,274.70684356563,294.32876096318,299.00064605783,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,448.50096908674,457.84473927605,470.92601754108,504.56359022259,523.2511306012],description:"Rami Vitale, inverse mode of vitale1"},vitale3:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,412.06026534844,420.46965851882,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Superset of several Byzantine scales by Rami Vitale, TL 29-Aug-2001"},vogel_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,310.07474405997,313.95067836072,321.55899383997,330.74639366397,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,413.43299207996,418.60090448096,428.74532511996,440.99519155196,465.11211608996,482.33849075995,496.11959049595,523.2511306012],description:"Martin Vogel's 21-tone Archytas system, see Divisions of the tetrachord"},vogelh_b:{frequencies:[261.6255653006,276.37000081643,292.73769384471,310.07474405997,327.54963108844,349.78078158391,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Harald Vogel's temperament, van Eeken organ in Bunschoten, Immanuelkerk, 1992"},vogelh_fisk:{frequencies:[261.6255653006,274.01856817608,292.73769384471,312.85332572834,327.54963108844,349.78078158391,366.49445363528,391.37619916626,409.75340805561,437.91808280662,467.82492621575,489.99465727995,523.2511306012],description:"Modified meantone tuning of Fisk organ in Memorial Church at Stanford"},vogelh_hb:{frequencies:[261.6255653006,276.50527247638,293.79744652436,312.85332572834,329.92547760025,349.78078158391,369.82037393809,392.08397832814,413.47189899094,440.29822362186,467.82492621575,494.44133512215,523.2511306012],description:"Harald Vogel hybrid meantone (1984)"},vogelh_jakobi:{frequencies:[261.6255653006,275.2485073924,292.86986732103,310.4251397446,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.87276088221,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Harald Vogel's temperament for the Schnitger organ in St. Jakobi, Hamburg"},volans:{frequencies:[261.6255653006,288.78654445823,322.09885310804,352.06379107796,388.6137256405,429.95038611107,482.60299106564,523.2511306012],description:"African scale according to Kevin Volans 1/1=G"},vong:{frequencies:[261.6255653006,287.78812183066,324.77656382143,353.19451315581,392.4383479509,431.68218274599,476.53227965466,523.2511306012],description:"Vong Co Dan Tranh scale, Vietnam"},"vries19-72":{frequencies:[261.6255653006,271.89678302796,282.57123920205,293.66476791741,305.19382000629,314.13668154225,326.46944327063,339.28638158975,352.60650301302,366.44956000397,377.18735172911,391.99543598175,407.38487419079,423.37848741825,452.89298412314,470.6732130613,489.15147723638,508.3551866238,523.2511306012],description:"Leo de Vries 19/72 Through-Transposing-Tonality 18 tone scale"},"vries35-72":{frequencies:[261.6255653006,320.24370022528,326.46944327063,332.81622067851,339.28638158975,345.88232658126,352.60650301302,359.46139971304,366.44956000397,448.5538823653,457.27406033445,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Leo de Vries 35/72 Through-Transposing-Tonality 17 tone scale"},"vries5-72":{frequencies:[261.6255653006,269.29177952703,274.52698453615,282.57123920205,288.06460709314,296.5055443788,302.26980244078,317.17549194805,332.81622067851,349.22823143301,366.44956000397,384.52011812375,403.48177901006,423.37848741825,444.25635547592,466.16376151809,489.15147723638,513.27277840175,523.2511306012],description:"Leo de Vries 5/72 Through-Transposing-Tonality 18 tone scale"},"vries6-31":{frequencies:[261.6255653006,292.57243455474,299.18791603519,334.57791819083,342.14320575162,382.6142546815,391.26571058456,437.54730686196,447.44088028055,500.36726155789,511.68128147674,523.2511306012],description:'Leo de Vries 6/31 TTT used in "For 31-tone organ" (1995)'},vulture:{frequencies:[261.6255653006,265.58852967049,269.02996542365,272.51599294435,276.04719319079,279.62414831161,283.24745441839,286.9177088442,290.63552324927,294.40151054717,298.21629835234,302.73351960911,306.6562716924,310.62985211059,314.65492307423,318.73214815075,322.86220682342,327.0457799678,331.28356479042,335.57625992643,339.9245807679,344.32924417279,349.54496173019,354.07428378691,358.66229781376,363.30976018416,368.01744541334,372.78612960355,377.61660747204,382.50967536449,387.46614872711,392.486844677,398.43202813578,403.59481739244,408.82450722915,414.12195980508,419.48805795853,424.92368633675,430.42975080549,436.00715908665,441.65684067409,447.37972696622,453.17677170128,460.0412514682,466.0023613576,472.04071122634,478.15730738573,484.35315820906,490.6292962557,496.98675620078,503.42659462849,509.94988192555,516.55769649554,523.2511306012],description:"Vulture temperament, g=475.542233, 5-limit"},walker_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:'Douglas Walker, 1977, for "out of the fathomless dark/into the limitless light'},walkerr_11:{frequencies:[261.6255653006,291.47537246454,299.00064605783,333.11471138804,341.71502406609,380.70252730062,390.53145607553,435.08860262928,484.72943438718,497.2441172906,510.08190181294,523.2511306012],description:'Robert Walker, "Seven to Pi" scale, TL 09-07-2002'},wauchope:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Symmetrical 7-limit JI whole-half step scale, Ken Wauchope"},wendell1:{frequencies:[261.6255653006,276.25045813601,293.35468319005,310.78176509232,328.42642049784,348.83408706747,369.47972269069,391.8804287311,414.37568699689,438.92294511207,466.17264740545,492.63963050051,523.2511306012],description:"Robert Wendell's Natural Synchronous well-temperament (2003)"},wendell1r:{frequencies:[261.6255653006,276.25560153172,293.36810129327,310.78755172318,328.43721515437,348.83408706747,369.49186704867,391.89926583958,414.38340229758,438.93945576706,466.18132758477,492.65582273156,523.2511306012],description:"Rational version of wendell1 by Gene Ward Smith"},wendell2:{frequencies:[261.6255653006,276.37223575148,293.46077701205,310.91876490958,328.50868755512,348.91469434159,369.57235851938,392.00856887742,414.55835341999,438.92345217603,466.37814713124,492.76314493882,523.2511306012],description:"Robert Wendell's Very Mild Synchronous well-temperament (2003)"},werck1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Werckmeister I (just intonation)"},werck3:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,491.65745674141,523.2511306012],description:"Andreas Werckmeister's temperament III (the most famous one, 1681)"},werck3_eb:{frequencies:[261.6255653006,275.62199471997,292.52927773082,310.07474405997,328.06371231954,348.83408706747,367.49599295996,391.41011079897,413.43299207996,437.41828331138,465.11211608996,492.10978071589,523.2511306012],description:"Werckmeister III equal beating version, 5/4 beats twice 3/2"},werck3_mod:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,490.82535372381,523.2511306012],description:"Modified Werckmeister III with B between E and F#, Nijsse (1997), organ Soest"},werck4:{frequencies:[261.6255653006,274.37997440822,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,390.66969766777,411.5699614066,437.52264545758,467.21778431035,489.99465727995,523.2511306012],description:"Andreas Werckmeister's temperament IV"},werck5:{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,328.88393162803,350.01785633742,369.99442271164,392.4383479509,413.43299207996,440,466.69047534984,493.32589719545,523.2511306012],description:"Andreas Werckmeister's temperament V"},werck6:{frequencies:[261.6255653006,275.69145590816,291.35574317567,310.77945938738,328.70904358281,348.83408706747,368.91086905696,391.43977709097,413.53718386224,438.27872477707,466.16918908107,493.06356537421,523.2511306012],description:`Andreas Werckmeister's "septenarius" tuning VI`},werck6_dup:{frequencies:[261.6255653006,275.62199471997,291.49363009634,310.67551062492,328.56569462012,348.83408706747,368.92162485303,391.67947347082,413.43299207996,438.08759304581,466.01326570444,492.84854168382,523.2511306012],description:"Andreas Werckmeister's VI in the interpretation by Dupont (1935)"},werck_cl5:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.97737261399,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.14811800305,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/5-comma"},werck_cl6:{frequencies:[261.6255653006,275.36250599118,293.11251278827,310.35057963607,328.38895179964,349.55706816887,367.91095120397,391.62667645325,413.31226430431,438.75941205608,466.0760911248,491.56462836305,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/6-comma"},werck_puzzle:{frequencies:[261.6255653006,272.52663052146,291.60349465796,306.59245933664,327.03195662575,347.47145391486,365.18568489875,389.71308164569,408.78994578219,436.04260883433,461.93263873387,490.54793493862,523.2511306012],description:"From Hypomnemata Musica, 1697, p. 49, 1/1=192, fifths tempered superparticular"},white:{frequencies:[261.6255653006,275.93321340298,289.72987407313,294.32876096318,305.22982618403,310.42486507835,327.03195662575,331.11985608357,343.38355445704,348.83408706747,367.91095120397,386.30649876417,392.4383479509,406.97310157871,413.89982010446,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"Justin White's 22-tone scale based on Al-Farabi's tetrachord"},wicks:{frequencies:[261.6255653006,276.65728054629,293.45376109391,310.36444075595,329.26048109616,348.28499607284,369.54304125029,391.93835601961,414.48592121967,439.68064187634,465.04666232412,493.39072329352,523.2511306012],description:"Mark Wicks' equal beating temperament for organs (1887)"},wier_cl:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Danny Wier, ClownTone (2003)"},wiesse:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Von Wiesse's 1/2 Pyth. comma tuning"},wilson1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 19-tone Scott scale (1976)"},wilson11:{frequencies:[261.6255653006,271.31540105247,277.4816601673,291.35574317567,305.22982618403,312.16686768822,325.57848126297,332.97799220076,348.83408706747,366.27579142084,374.60024122586,392.4383479509,406.97310157871,416.22249025095,437.0336147635,457.84473927605,468.25030153232,488.36772189445,499.46698830115,523.2511306012],description:"Wilson 11-limit 19-tone scale, 1977"},wilson1t:{frequencies:[261.6255653006,273.34666024156,279.64601698606,292.92954243175,306.05308604033,313.10617410217,327.13365148064,334.67254769546,349.66622272551,366.27579142084,374.71672979763,391.50442319155,409.04422481132,418.47077311482,437.21869500104,457.98711402938,468.54156606881,489.53271107931,500.81414097667,523.2511306012],description:"Wilson's Scott scale, wilson1, in minimax minerva tempering"},wilson2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,418.60090448096,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 19-tone, 1975"},wilson3:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Wilson 19-tone"},wilson5:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 22-tone 5-limit scale"},wilson7:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson's 22-tone 7-limit 'marimba' scale"},wilson7_2:{frequencies:[261.6255653006,263.718569823,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,329.64821227876,343.38355445704,353.19451315581,366.27579142084,376.74081403286,392.4383479509,408.78994578219,412.06026534844,436.04260883433,439.53094970501,457.84473927605,470.92601754108,490.54793493862,494.47231841813,523.2511306012],description:"Wilson 7-limit scale"},wilson7_3:{frequencies:[261.6255653006,267.90457886781,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson 7-limit scale"},wilson7_4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,387.59343007496,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 7-limit 22-tone scale XH 3, 1975"},wilson_17:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,310.42486507835,327.03195662575,331.11985608357,348.83408706747,367.91095120397,372.50983809402,392.4383479509,413.89982010446,436.04260883433,441.49314144476,465.11211608996,490.54793493862,496.67978412536,523.2511306012],description:"Wilson's 17-tone 5-limit scale"},wilson_31:{frequencies:[261.6255653006,265.7783520514,271.31540105247,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.08592105074,327.03195662575,332.22294006425,339.14425131559,348.83408706747,354.37113606854,361.75386806997,372.08969287196,380.54627680087,392.4383479509,398.6675280771,406.97310157871,418.60090448096,428.11456140098,441.49314144476,448.50096908674,457.84473927605,470.92601754108,481.6288815761,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Wilson 11-limit 31-tone scale XH 3, 1975"},wilson_41:{frequencies:[261.6255653006,265.7783520514,271.31540105247,275.62199471997,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,321.08592105074,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.37113606854,361.75386806997,367.49599295996,372.08969287196,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,413.43299207996,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,481.6288815761,490.54793493862,496.67978412536,504.56359022259,515.07533168556,523.2511306012],description:"Wilson 11-limit 41-tone scale XH 3, 1975"},wilson_alessandro:{frequencies:[261.6255653006,265.58571790036,269.80136421624,270.50397193556,275.93321340298,278.232656848,284.55612632182,286.15296204753,288.53757006459,294.32876096318,295.09524211152,303.52653474327,304.3169684275,305.22982618403,309.14739649778,314.76825825228,321.92208230347,324.60476632267,327.03195662575,331.98214737546,337.2517052703,340.06213614756,343.38355445704,347.79082106,351.18772614924,354.11429053382,359.73515228832,365.180362113,367.91095120397,370.97687579734,379.40816842909,386.30649876417,391.2646736925,392.4383479509,393.46032281536,404.70204632437,405.75595790334,413.89982010446,417.348985272,419.69101100305,429.2294430713,432.80635509689,441.49314144476,442.64286316727,449.66894036041,456.47545264125,457.84473927605,463.72109474667,472.15238737843,482.88312345521,486.907149484,490.54793493862,494.63583439645,505.87755790546,515.07533168556,521.68623159,523.2511306012],description:"D'Alessandro, genus [3 3 3 5 7 11 11] plus 8 pigtails, XH 12, 1989"},wilson_bag:{frequencies:[261.6255653006,294.32876096318,318.85615771011,349.51540364377,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Erv's bagpipe, mar '97, after Theodore Podnos (37-39)."},wilson_class:{frequencies:[261.6255653006,272.52663052146,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,381.53728273004,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Class Scale, Erv Wilson, 9 july 1967"},wilson_dia1:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,362.25078272391,371.78369805875,381.83190611439,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycles, tetrachordal form"},wilson_dia2:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle, conjunctive form"},wilson_dia3:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycle on 3/2"},wilson_dia4:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,381.83190611439,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle on 4/3"},wilson_duo:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 'duovigene'"},wilson_enh:{frequencies:[261.6255653006,264.37951861955,279.06726965397,348.83408706747,392.4383479509,396.56927792933,418.60090448096,523.2511306012],description:"Wilson's Enharmonic & 3rd new Enharmonic on Hofmann's list of superp. 4chords"},wilson_enh2:{frequencies:[261.6255653006,265.7783520514,275.62199471997,348.83408706747,392.4383479509,398.6675280771,413.43299207996,523.2511306012],description:"Wilson's 81/64 Enharmonic, a strong division of the 256/243 pyknon"},wilson_facet:{frequencies:[261.6255653006,271.31540105247,274.70684356563,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,366.27579142084,387.59343007496,392.4383479509,406.97310157871,412.06026534844,436.04260883433,452.19233508746,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson study in 'conjunct facets', Hexany based"},wilson_gh1:{frequencies:[261.6255653006,286.54684077898,313.84200313831,343.73718179912,398.2573899082,436.19359890902,477.74343791599,523.2511306012],description:"Golden Horagram nr.1: 1phi+0 / 7phi+1"},wilson_gh11:{frequencies:[261.6255653006,294.51148904212,316.87124012705,356.70145865606,383.78276711707,432.02365977685,464.82353976398,523.2511306012],description:"Golden Horagram nr.11: 1phi+0 / 3phi+1"},wilson_gh2:{frequencies:[261.6255653006,290.51361927671,322.59142140135,358.21117585067,382.16527586729,424.3630293795,471.22015545621,523.2511306012],description:"Golden Horagram nr.2: 1phi+0 / 6phi+1"},wilson_gh50:{frequencies:[261.6255653006,270.80964219588,280.31611759965,306.81496952381,317.58537244461,347.60736272384,359.80973785756,372.44046183271,407.64801512355,421.95805149354,461.8466031062,478.05922145,523.2511306012],description:"Golden Horagram nr.50: 7phi+2 / 17phi+5"},wilson_helix:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Wilson's Helix Song, see David Rosenthal, Helix Song, XH 7&8, 1979. Also Secor, 1964"},wilson_hypenh:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Wilson's Hyperenharmonic, this genus has a CI of 9/7"},wilson_l1:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,404.70204632437,419.69101100305,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l2:{frequencies:[261.6255653006,267.07609791103,279.79400733536,287.78812183066,294.32876096318,305.22982618403,314.76825825228,327.03195662575,335.75280880244,348.83408706747,359.73515228832,373.05867644715,381.53728273004,392.4383479509,411.12588832951,419.69101100305,436.04260883433,447.67041173658,457.84473927605,479.64686971777,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l3:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 11-limit scale"},wilson_l4:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l5:{frequencies:[261.6255653006,267.07609791103,279.79400733536,285.40970760065,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,479.64686971777,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l6:{frequencies:[261.6255653006,267.57160087561,277.4816601673,285.40970760065,294.32876096318,305.22982618403,312.16686768822,327.03195662575,332.97799220076,348.83408706747,356.76213450082,369.97554688974,381.53728273004,392.4383479509,406.97310157871,416.22249025095,436.04260883433,443.97065626768,457.84473927605,475.68284600109,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 1 3 7 9 11 15 eikosany plus 9/8 and tritone. Used Stearns: Jewel"},window:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,297.67175429757,306.59245933664,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,446.50763144636,459.88868900496,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Window lattice"},wonder1:{frequencies:[261.6255653006,272.72256190885,277.86237426839,283.09905309511,288.43442562998,293.8703485525,299.4087202614,312.10830899518,317.99039712482,323.98334274799,330.08923137594,336.31019538088,342.64839962317,357.18202566262,363.91358676728,370.77201292014,377.75969724053,384.87907140314,392.13262172187,408.76514672187,416.46885901676,424.31776026786,432.3145818485,440.46211650535,448.76319953449,467.79774494453,476.61400354229,485.59641603135,494.74811665626,504.07229015717,513.57219283465,523.2511306012],description:"Wonder Scale, gen=~233.54 cents, 8/7+1029/1024^7/25, LS 12:14:18:21, M.Schulter"},wonder36:{frequencies:[261.6255653006,271.89678302796,277.18263097687,282.57123920205,288.06460709314,293.66476791741,299.37379946195,311.12698372208,317.17549194805,323.3415889232,329.62755691287,336.03572815422,342.56848033562,356.01745236555,362.93866220634,369.99442271164,377.18735172911,384.52011812375,391.99543598175,407.38487419079,415.30469757995,423.37848741825,431.60923940535,440,448.5538823653,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Wonder Scale, 36-tET version"},wronski:{frequencies:[261.6255653006,277.97716313189,294.32876096318,308.86351459099,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,463.29527188648,494.18162334558,523.2511306012],description:`Wronski's scale, from Jocelyn Godwin, "Music and the Occult", p. 105.`},wurschmidt:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,331.11985608357,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's normalised 12-tone system"},wurschmidt1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-1 19-tone scale"},wurschmidt2:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-2 19-tone scale"},wurschmidt_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system"},wurschmidt_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,372.08969287196,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system with alternative tritone"},wurschmidt_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,319.36714514233,321.48549464138,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,425.82286018978,428.6473261885,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 53-tone system"},wurschmidt_temp:{frequencies:[261.6255653006,270.6876810201,276.46178051834,282.35904862511,288.38211267756,294.53365605714,300.81641938515,307.23320174366,313.78686192261,320.48031969341,327.31655710978,338.6540596739,345.87796520471,353.25596548096,360.79134753214,368.48746850413,376.34775715481,384.37571538166,392.57491978195,400.94902556208,409.5017589506,423.68596790742,432.72370810117,441.95423435346,451.38165902684,461.01018486849,470.84409628664,480.88777706987,491.14570185547,501.62244073019,512.32266126632,523.2511306012],description:"W\xEF\xBF\xBDrschmidt temperament, 5-limit, g=387.744375, 5-limit"},"t-side":{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Tau-on-Side"},"t-side2":{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Tau-on-Side opposite"},tagawa_55:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Rick Tagawa, 17-limit diamond subset with good 72-tET approximation, 2003"},tamil:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,372.50983809402,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Possible Tamil sruti scale. Alternative 11th sruti is 45/32 or 64/45"},tamil_vi:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale in Tamil music, Vidyasankar Sundaresan"},tamil_vi2:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.49599295996,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale with 1024/729 tritone"},tanaka:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"26-note choice system of Shoh\xEF\xBF\xBD Tanaka, Studien i.G.d. reinen Stimmung (1890)"},tanbur:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,306.66732929008,314.73752216614,323.24394168414,332.22294006425,341.71502406609,351.76546595039,523.2511306012],description:"Sub-40 tanbur scale"},tansur:{frequencies:[261.6255653006,275.71279889585,293.19126194179,310.07474405997,328.21516866261,348.83408706747,367.61706537823,391.78834765065,413.56919813705,438.48689188122,465.11211608996,491.022754507,523.2511306012],description:"William Tans'ur temperament from A New Musical Grammar (1746) p. 73"},tartini_7:{frequencies:[261.6255653006,294.32876096318,313.95067836072,367.91095120397,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Tartini (1754) with 2 neochromatic tetrachords, 1/1=d, Minor Gipsy (Slovakia)"},taylor_g:{frequencies:[261.6255653006,274.70684356563,287.78812183066,294.32876096318,313.95067836072,353.19451315581,366.27579142084,392.4383479509,412.06026534844,418.60090448096,431.68218274599,470.92601754108,523.2511306012],description:"Gregory Taylor's Dutch train ride scale based on pelog_schmidt"},taylor_n:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,348.83408706747,367.9112241576,391.33200541501,413.90012676351,437.76975193523,465.63764214343,491.10256480205,523.2511306012],description:"Nigel Taylor's Circulating Balanced temperament (20th cent.)"},telemann:{frequencies:[261.6255653006,264.94361147373,271.70648167539,275.15237829755,278.64197723942,282.17583275232,289.3785657319,293.0485888979,296.76515515861,300.52885648597,304.34029066685,308.20006306951,312.10878854255,316.06708432391,324.13491490251,328.24573110938,332.40868242763,336.62443200122,345.21700307457,349.59519124833,354.02890545793,363.06573983159,367.67029324081,372.33324354561,377.05533136015,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,417.05301810033,422.34226102699,433.12283887627,438.61588607285,444.17860098504,449.81186203693,461.29362042034,467.14394139401,473.06846134744,485.14386048744,491.29666030217,497.52749252881,503.83734680745,516.69814597997,523.2511306012],description:"G.Ph. Telemann (1767). 55-tET interpretation of Klang- und Intervallen-Tafel"},telemann_28:{frequencies:[261.6255653006,264.94361147373,275.15237829755,278.64197723942,293.0485888979,296.76515515861,308.20006306951,312.10878854255,328.24573110938,332.40868242763,345.21700307457,349.59519124833,354.02890545793,367.67029324081,372.33324354561,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,438.61588607285,444.17860098504,461.29362042034,467.14394139401,473.06846134744,491.29666030217,497.52749252881,516.69814597997,523.2511306012],description:"Telemann's tuning as described on Sorge's monochord, 1746, 1748, 1749"},"temes-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,378.62819763364,399.72843132859,423.31905787312,446.91000942727,523.2511306012],description:"Temes' 5-tone Phi scale mixed with its octave inverse"},"temes-ur":{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312],description:"Temes' Ur 5-tone phi scale"},temes:{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312,495.63057556553,523.2511306012,554.13187513888,585.01259700885,684.94462120932],description:"Temes' 5-tone Phi scale / 2 cycle"},"temes2-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,399.72843132859,423.31905787312,468.0102705885,495.63057556553,523.2511306012,552.41124604023,585.01259700885,646.77396536561,684.94438778203,757.25639526728,799.45686265718,846.63811574624,893.82001885454,1046.5022612024],description:"Temes' 2 cycle Phi scale mixed with its 4/1 inverse"},temp10coh:{frequencies:[261.6255653006,279.06726965397,299.10339764541,320.57805584394,343.5945271479,368.2635494613,394.70435354475,423.05284121745,453.57582505819,488.36772189445,523.2511306012],description:"Differential coherent 10-tone scale, OdC, 2003"},temp10ebss:{frequencies:[261.6255653006,280.43397904206,300.58585223371,322.17714382919,345.31067040124,370.09659148016,396.65293718743,425.1061627261,455.59176355181,488.25490599611,523.2511306012],description:`Cycle of 10 equal "beating" 15/14's`},temp11ebst:{frequencies:[261.6255653006,278.68301283272,296.80966039395,316.07252488244,336.70993118161,358.64093492832,381.94662420398,406.71316497313,433.24697173408,461.44397806515,491.40843569917,523.2511306012],description:"Cycle of 11 equal beating 9/7's"},temp12coh3:{frequencies:[261.6255653006,279.8393060116,294.68135606466,311.32770136359,332.21069717879,353.56473801237,370.2386298036,397.61708850394,418.97112933752,440.1984563065,471.2874275201,496.80305467842,523.2511306012],description:"Differential coherent scale, interval=3, OdC, 2003"},temp12ebf:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.5354160273,349.23174343306,369.98176018664,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating temperament tuned by The Best Factory Tuners (1840)"},temp12ebf4:{frequencies:[261.6255653006,276.98801737971,293.51517393789,310.79793252689,329.39098365485,348.83408706747,369.75126958642,391.78747833067,414.83115644933,439.62189128662,465.54602917011,493.43560586205,523.2511306012],description:"Eleven equal beating fifths and just fourth"},temp12ebfo:{frequencies:[261.6255653006,277.20265787963,293.64844512428,311.16011036869,329.64835309433,349.33484978517,370.11921182839,392.06266066657,415.42830219132,440.09698059047,466.36447845344,494.0968438935,523.62658899088],description:"Equal beating fifths and fifth beats twice octave at C"},temp12ebfp:{frequencies:[261.6255653006,277.75307788644,293.77513637875,310.82931496301,329.94340332986,349.12935317325,370.63270249518,391.99544730302,416.18671544528,440.21980402758,465.80107112682,494.47220378931,523.2511306012],description:"All fifths except G#-Eb beat same as 700 c. C-G"},temp12ebfr:{frequencies:[261.6255653006,277.1880780098,293.58315312731,311.09097992515,329.53543943235,349.23174457993,369.98176152553,391.84186168221,415.185630746,439.77824342227,466.03998361904,493.70667287983,523.2511306012],description:"Exact values of equal beating temperament of Best Factory Tuners (1840)"},temp12ep:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767],description:"Pythagorean comma distributed equally over octave and fifth: 1/19-Pyth comma"},temp12fo1o:{frequencies:[261.6255653006,277.20349049726,293.7089710611,311.19723286579,329.72679517909,349.35966199273,370.1615231373,392.20198585541,415.5548023839,440.29810917508,466.51470234738,494.29230838881,523.72386870485],description:"Fifth beats same octave opposite"},temp12fo2o:{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338107372,392.13011658806,415.46777521802,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"Fifth beats twice octave opposite"},temp12p10:{frequencies:[261.6255653006,277.12003622197,293.53214922797,310.91625060765,329.32990524605,349.3071136959,369.493381814,391.90691363044,415.11714643072,439.70197837153,465.74281849401,493.32589719545,523.2511306012],description:"1/10-Pyth. comma well temperament"},temp12p6:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Modified 1/6-Pyth. comma temperament"},temp12p8:{frequencies:[261.6255653006,277.02617059261,293.33333347996,310.60041853231,328.88393162803,349.42547049952,369.36822764145,391.77416758435,414.83597850347,439.25532436715,465.90062756558,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament"},temp12p8a:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,349.42547049952,368.74309237173,391.77416758435,414.83597850347,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament, consecutive just fifths"},temp12s17:{frequencies:[261.6255653006,275.41266079541,292.61316553779,309.9334225479,327.2710181906,348.78108411875,367.16108497228,391.29294726693,413.18177371806,437.63868343995,464.97078294553,490.98112850332,523.2511306012],description:'4/17th synt. comma "well"-temperament. OdC 1999'},temp12s3:{frequencies:[261.6255653006,275.79485124716,293.07576161921,310.19140758515,326.99095182327,348.87783040382,367.77258074571,390.81668391305,413.640406907,437.79703699716,465.22877230071,490.42492909292,523.2511306012],description:'1/3 synt. comma "well"-temperament. OdC 1999'},temp12septendec:{frequencies:[261.6255653006,277.01530443593,293.31032234393,310.5638707171,328.83233370046,348.17541215342,368.65631875068,390.34198455955,413.30334035457,437.61515184999,463.35732874365,494.18162334558,523.2511306012],description:"Scale with 18/17 steps"},temp12w2b:{frequencies:[261.6255653006,276.80621914251,293.38957467182,310.9374037046,329.12408537692,349.33498699812,369.32540968366,391.68699838314,414.83365420901,439.33301386008,466.03043161756,492.93477894539,523.2511306012],description:"The fifths on white keys beat twice the amount of fifths on black keys"},temp15coh:{frequencies:[261.6255653006,273.98642352939,286.93424587686,300.52595924487,314.76156220527,329.6715499436,345.28562122078,360.48992106995,377.61407292725,395.54746439596,414.33033691342,434.93480826785,455.53927928881,477.11963158959,499.65025190386,523.2511306012],description:"Differential coherent 15-tone scale, OdC, 2003"},temp15ebmt:{frequencies:[261.6255653006,274.13344448045,287.10161388969,300.54701305042,315.02372625978,330.03318193885,345.59498492211,361.72946206059,379.10151766291,397.1128647533,415.78702800292,435.14840215297,455.99486887387,477.60848441971,500.01748339385,523.2511306012],description:"Cycle of 15 equal beating minor thirds"},temp15ebsi:{frequencies:[261.6255653006,274.09084013406,287.01483652929,300.41443756554,314.84183942382,329.80016763418,345.30896502873,361.38848559819,378.7013656391,396.65136316555,415.2619179078,434.55734100747,455.33280077531,476.87279531786,499.20546063174,523.2511306012],description:"Cycle of 15 equal beating major sixths"},temp15mt:{frequencies:[261.6255653006,272.10155294862,290.46827626332,302.09918118188,314.19580976213,326.77681046955,348.83408706747,362.80207077951,377.32935907335,392.4383479509,418.92774655891,435.70241417719,453.14877154631,471.29371440761,503.10581234929,523.2511306012],description:"Cycle of 15 minor thirds, Petr Parizek"},temp16d3:{frequencies:[261.6255653006,272.52663052146,287.69189096389,299.67905363019,312.16568143019,325.17258353382,338.72144179457,352.83483584176,372.46899992671,387.98854005196,404.15472995283,420.99451113006,438.53594735503,462.93911228358,482.22824196207,502.32108537715,523.2511306012],description:"Cycle of 16 thirds tempered by 1/3 small diesis"},temp16d4:{frequencies:[261.6255653006,271.36369423603,291.82218013836,302.68427617679,313.95067836072,325.63643364742,337.75715313333,350.32902355546,376.74081403286,390.76372105392,405.30858212106,420.39482899491,436.04260883433,468.91646607712,486.37029938793,504.47379566792,523.2511306012],description:"Cycle of 16 thirds tempered by 1/4 small diesis"},temp16ebs:{frequencies:[261.6255653006,273.35566334732,285.38860666159,297.73221513295,311.13803992337,324.88997598926,338.996955196,354.31789928052,370.0343963911,386.15666093499,403.66631166114,421.62802297921,440.05346707662,460.0644954801,480.59216613216,501.64981691394,523.2511306012],description:"Cycle of 16 equal beating sevenths"},temp16ebt:{frequencies:[261.6255653006,273.54317752885,285.74681450472,298.24333695649,311.03977535434,324.14332902314,339.04034606654,354.29488987405,369.91554384313,385.91109319424,402.29053605603,420.91180538217,439.97998583037,459.50580330844,479.50024102158,499.97454326842,523.2511306012],description:"Cycle of 16 equal beating thirds"},temp16l4:{frequencies:[261.6255653006,278.81939890042,286.59644689091,305.43134787805,313.95067836072,322.70763593891,343.91573686494,353.50850469302,376.74081403286,387.24916379762,412.69888495295,424.21020636659,436.04260883433,464.69899736225,477.66074674968,509.05224558146,523.2511306012],description:"Cycle of 16 fifths tempered by 1/4 major limma"},temp17c10:{frequencies:[261.6255653006,278.13248184697,287.25399162485,296.67464640038,315.39293803189,325.73642523995,336.41913481987,347.45218787195,369.37422084479,381.48805431277,393.9991677018,418.85802036446,432.59470262079,446.78188702878,474.97099505857,490.54793493862,506.63572944675,523.2511306012],description:'Cycle of 17 fifths tempered by 1/10 of "17-tET comma"'},temp17c11:{frequencies:[261.6255653006,276.93071634298,286.5293181416,296.46061382736,313.80362259461,324.68026371274,335.93389640617,347.57758745223,367.91095120397,380.66298908833,393.8570200719,416.89773925535,431.34769064645,446.29848691039,472.40704302301,488.78098359819,505.72245578392,523.2511306012],description:'Cycle of 17 fifths tempered by 1/11 of "17-tET comma"'},temp17c12:{frequencies:[261.6255653006,275.93321340298,285.92682111936,296.28237159295,312.48531442823,323.80274674587,335.53006800342,347.68212334757,366.69599021774,379.97679689512,393.73860099464,415.27118158544,430.3112595477,445.8960513142,470.2809925818,487.31338757149,504.96265307831,523.2511306012],description:'Cycle of 17 fifths tempered by 1/12 of "17-tET comma"'},temp17c13:{frequencies:[261.6255653006,275.09197878886,285.41800532755,296.13163442011,311.37414725128,323.06208421743,335.18874504319,347.77059980835,365.67107999768,379.3971387881,393.63842979584,413.89982010446,429.43622376713,445.55581352332,468.48950048969,486.07501593832,504.32063522708,523.2511306012],description:'Cycle of 17 fifths tempered by 1/13 of "17-tET comma"'},temp17c14:{frequencies:[261.6255653006,274.37296298479,284.98259752889,296.00249241327,310.42486507835,322.42857866752,334.89645942743,347.84645641687,364.79486552165,378.90099378095,393.5525871037,412.72797362103,428.68761089217,445.26438593469,466.95936897503,485.01606158014,503.77098227424,523.2511306012],description:'Cycle of 17 fifths tempered by 1/14 of "17-tET comma"'},temp17c15:{frequencies:[261.6255653006,273.75133628611,284.60578240525,295.8906154666,309.60449456672,321.88054534371,334.64335075548,347.91221098893,364.0371787025,378.47152629398,393.47820661021,411.71505587788,428.03986711385,445.01196937812,465.63729761752,484.10016650719,503.29510175355,523.2511306012],description:'Cycle of 17 fifths tempered by 1/15 of "17-tET comma"'},temp17ebf:{frequencies:[261.6255653006,272.44226039746,283.83762774933,295.84262353625,308.01140541539,320.83119298602,334.33681303028,348.02669374128,362.44895565855,377.64277622383,393.64943714798,409.87448211667,426.96753159265,444.97502525992,463.22819966593,482.45788080796,502.71631088044,523.2511306012],description:"Cycle of 17 equal beating fifths"},temp17ebs:{frequencies:[261.6255653006,272.25303191034,284.09302419378,294.99486987374,307.14054534497,320.67196534338,333.1312181383,347.01199086095,362.47647062671,376.71561430061,392.57935523584,410.25304697073,426.52635565248,444.65634289229,464.854847056,483.45291583119,504.17290303449,523.2511306012],description:"Cycle of 17 equal beating sevenths"},temp17fo2:{frequencies:[261.6255653006,272.49443630436,283.81483782984,295.60553136463,307.88605111976,320.67674980257,333.99881838086,347.87433573796,362.32629011314,377.37863296804,393.05630224552,409.38528080469,426.39262165238,444.10651133426,462.55629730628,481.77255670213,501.78712602614,522.6331757532],description:"Fifth beats twice octave"},temp17nt:{frequencies:[261.6255653006,272.67141175251,283.62400127587,295.59862296305,308.07881564783,321.08592105074,333.98321109015,348.08400151932,362.78013022893,377.35217954558,393.28401259522,409.88848628312,426.35277308246,444.35341180422,463.11404114636,482.66674266598,502.05436630802,523.2511306012],description:"17-tone temperament with 27/22 neutral thirds"},temp17s:{frequencies:[261.6255653006,272.47577100117,283.83144686231,295.66037914716,307.98229466369,320.75501909295,334.12277657932,348.04764753103,362.48197303348,377.58873713905,393.32509157531,409.63717539588,426.70917767843,444.49267120113,463.01730800927,482.21968335939,502.31662775181,523.2511306012],description:"Cycle of 17 fifths tempered by 2 schismas. Schulter, Tuning List 10-9-98"},temp19d5:{frequencies:[261.6255653006,270.66831710441,280.02362001571,289.70227696231,304.50185643804,315.02657220273,325.91506125677,337.17989695691,348.83408706747,360.89108965294,379.3273836973,392.4383479509,406.00247545366,420.03542981361,434.55341522625,449.57319616728,472.53985806789,488.87259164079,505.76984518255,523.2511306012],description:"Cycle of 19 thirds tempered by 1/5 small diesis. Third = 3\\5"},temp19ebf:{frequencies:[261.6255653006,271.21349495395,281.45216719787,291.55303152151,302.33945232218,313.85796000757,325.22143162672,337.35615460362,350.31447634238,363.09838134063,376.74994653359,390.21776437961,404.59965986997,419.95766938963,435.10896436483,451.288596451,468.56635736893,485.61156561298,503.81364896584,523.2511306012],description:"Cycle of 19 equal beating fifths"},temp19ebmt:{frequencies:[261.6255653006,271.3515811897,281.43551369743,291.89053542337,302.73030209663,313.98726376766,325.65848288741,337.75920164946,350.30522706536,363.3129458114,376.82130195458,390.82676353803,405.34762742982,420.40285701732,436.01212051281,452.22214724761,469.0287008844,486.45373685079,504.52001310976,523.2511306012],description:"Cycle of 19 equal beating minor thirds"},temp19ebo:{frequencies:[261.6255653006,277.22364042749,293.65618047886,311.2040149966,329.6906225544,349.43193638686,370.22936988938,392.1394232912,415.53653598153,440.18534605859,466.50709783521,494.2370091719,523.84897992059,555.04513017437,587.91021027711,623.0058793126,659.97909442818,699.46172209312,741.05658909815,784.8766959018],description:"Cycle of 19 equal beating octaves in twelfth"},temp19ebt:{frequencies:[261.6255653006,271.59402175166,281.80172126331,292.25440577595,302.95795550425,313.91838845704,325.14187338321,337.60244413755,350.36206814823,363.42792409681,376.80735887968,390.50790160795,404.53725818867,420.11297167574,436.06250107414,452.39482160095,469.11911613638,486.2447950704,503.78149001575,523.2511306012],description:"Cycle of 19 equal beating thirds"},temp19k10:{frequencies:[261.6255653006,271.76196854941,282.29109592175,293.22816309454,304.58897525989,314.09773337131,326.2671147593,338.90798583865,352.03861397416,365.67797428016,377.09383089344,391.70392883316,406.88007915549,422.6442137645,439.01911266466,452.72455471179,470.26488431194,488.48479525859,507.41061720556,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/10 kleisma"},temp19k3:{frequencies:[261.6255653006,272.95237156345,284.76956174698,297.09836322231,309.96092731219,314.44113201634,328.05453510669,342.25731432435,357.07498823553,372.53417996774,377.91882441317,394.28042610165,411.35038641496,429.15937528906,447.73938330242,454.2110508691,473.87564511273,494.39160029408,515.79576952378,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/3 kleisma"},temp19k4:{frequencies:[261.6255653006,272.52663052146,283.88190679319,295.71031957624,308.03158289191,314.31844786309,327.4150485592,341.05734286691,355.26806612985,370.07090075127,377.62397563434,393.35830866491,409.74823893478,426.8210805314,444.6052930255,453.67960031314,472.58291784883,492.27387080735,512.78528301977,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/4 kleisma"},temp19k5:{frequencies:[261.6255653006,272.27150423996,283.35064249518,294.88062803952,306.8797443789,314.24485853342,327.03195662575,340.33937954017,354.18830437416,368.6007608062,377.44717941318,392.80607455881,408.78994578219,425.42422593284,442.73537947933,453.36102900438,471.8089732132,491.00759210237,510.98743222773,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/5 kleisma"},temp19k6:{frequencies:[261.6255653006,272.10155294862,282.99701916355,294.32876096318,306.11424676116,314.19580976213,326.77681046955,339.86157848985,353.47028562902,367.62391141072,377.32935907335,392.4383479509,408.1523292189,424.49552853314,441.49314144476,453.14877154631,471.29371440761,490.16521545931,509.79236747994,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/6 kleisma"},temp19k7:{frequencies:[261.6255653006,271.9802243463,282.7447017667,293.93521741989,305.56863311614,314.16077935352,326.59468561952,339.52070304385,352.95830848174,366.92774752709,377.24522513926,392.17589782962,407.69749910471,423.83341578697,440.60837682578,452.99722066906,470.92601754108,489.56440442681,508.94046380742,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/7 kleisma"},temp19k8:{frequencies:[261.6255653006,271.88926339885,282.55561052465,293.64040364533,305.16005936662,314.13450956378,326.45815718343,339.26526937521,352.57481080357,366.4064920117,377.18213591051,391.97917444376,407.35670799125,423.33750965456,439.94524339387,452.88359011983,470.65043349884,489.11427877975,508.30246674991,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/8 kleisma"},temp19k9:{frequencies:[261.6255653006,271.81853598083,282.40862793607,293.41130980736,304.84265779003,314.11407882217,326.35200974457,339.06673262958,352.27682225125,366.00158141044,377.13307501509,391.82623534045,407.09184571451,422.95220417284,439.43048454013,452.79523167251,470.4362008006,488.76446469244,507.80680338678,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/9 kleisma"},temp19lst:{frequencies:[261.6255653006,270.56149416036,279.80263334807,289.3594074481,304.78245180412,315.19242188443,325.95794877725,337.09117667186,348.60466454729,360.5114003397,379.7268899367,392.69661814622,406.10933276067,419.98016416303,434.32475952075,449.15930043669,473.09978287909,489.25870067642,505.96953296163,523.2511306012],description:"Cycle of 19 least squares thirds 5/4^5 = 3/2"},temp19lst2:{frequencies:[261.6255653006,270.86681403244,280.43448605562,290.34011310859,303.98143643885,314.71879896063,325.83542931914,337.34472599098,349.26055890156,361.59728998429,378.58655645252,391.95915298383,405.80409975455,420.1380835834,434.97837844393,450.34287106955,471.50175486263,488.15634183652,505.39920634693,523.2511306012],description:"Cycle of 19 least squares thirds 5/4, 3/2 (5), 6/5 (4)"},temp21ebs:{frequencies:[261.6255653006,270.48603901573,279.57527100587,288.89916626223,298.46378542286,308.59004184051,318.97773454914,329.63361550747,340.56460989801,352.13747205507,364.00912264098,376.18727282918,388.67983604901,401.90596519454,415.47356606258,429.3914526989,443.66866815503,458.78424493347,474.29007331382,490.19622772738,506.51304733863,523.2511306012],description:"Cycle of 21 equal beating sevenths"},temp22ebf:{frequencies:[261.6255653006,269.81217946012,278.43675961795,287.52273893052,297.09479717246,306.30473778727,316.00739221221,326.22911792828,336.99768333647,347.35886661388,358.27435338478,369.77379349451,381.88843101834,394.65117841871,406.93109909525,419.8679691216,433.49693671533,447.85502662133,461.66993710068,476.2239184443,491.55650493929,507.70935693135,523.2511306012],description:"Cycle of 22 equal beating fifths"},temp22ebt:{frequencies:[261.6255653006,270.16401944699,278.90739732088,287.86061708193,297.02871287074,306.4168425362,316.03028815926,325.87445510174,336.54752540671,347.4767459334,358.66827061689,370.12838991426,381.86355177507,393.88036006393,406.18556836568,419.52690380046,433.1884314408,447.17783799964,461.50298590676,476.17193984405,491.19294816955,506.57446222015,523.2511306012],description:"Cycle of 22 equal beating thirds"},temp22fo2:{frequencies:[261.6255653006,269.97341665226,278.58762814388,287.47669703533,296.64939669548,306.114775449,315.88217199169,325.96122111215,336.36187067071,347.09438029185,358.16933884319,369.59767092309,381.39065611261,393.55992749281,406.11749146369,419.07573510033,432.44744798202,446.24582051114,460.48446638525,475.17743368268,490.33921589034,505.98477744485,522.12955176559],description:"Fifth beats twice opposite rate as octave"},temp23ebs:{frequencies:[261.6255653006,269.54528659271,277.75645349026,286.26979186473,295.09642104593,304.24787054065,313.41421505132,322.9178815064,332.77128133421,342.98728793362,353.5792427091,364.56098080918,375.56059498003,386.96499273375,398.78907363541,411.04828247111,423.75862731373,436.93671323096,450.13624919654,463.82153026575,478.01042762353,492.72147385367,507.97388874722,523.2511306012],description:"Cycle of 23 equal beating major sixths"},temp24ebaf:{frequencies:[261.6255653006,269.28287293678,277.23083697142,285.33112867981,293.73889258015,302.30779732819,311.20195864933,320.26658492056,329.67528611807,339.26431305611,349.21731641877,359.36108127338,369.88988063787,380.8183283077,391.95623237686,403.5169050439,415.29914897519,427.52862168357,439.9924847314,452.92944495636,466.1143590732,479.79973930305,493.74741628009,508.22451419243,523.2511306012],description:"Cycle of 24 equal beating 11/8's"},temp24ebf:{frequencies:[261.6255653006,269.29177952703,277.18807786937,285.37455545576,293.58315284916,302.20762754558,311.09098010692,320.17688686519,329.5354160273,339.23795459232,349.23174343306,359.45337270909,369.98176018664,380.89707445632,391.84186131702,403.3411703213,415.18563115404,427.4653330282,439.77824302677,452.71493931339,466.03998256716,479.66882917609,493.70667148145,508.26043277122,523.2511306012],description:"24-tone ET with 23 equal beatings fifths. Fifth on 17 slightly smaller."},temp25ebt:{frequencies:[261.6255653006,269.07040607882,276.69392272178,284.50040351526,292.49424189123,300.67993013952,309.06207502162,317.64539198503,326.43470939254,335.74076076764,345.27015661764,355.02825763358,365.02055286832,375.25266439783,385.73034580726,396.45949385543,407.44613828076,419.07870286007,430.99044652419,443.18807578441,455.67844358274,468.46858279232,481.56568677979,494.97711759939,508.71042703507,523.2511306012],description:"Cycle of 25 equal beating thirds"},temp26eb3:{frequencies:[261.6255653006,268.53506427639,276.23413316293,283.52944261778,291.01742029734,298.70315454572,307.26715974579,315.38204761281,323.71124866952,332.26042290088,341.78653782772,350.81307822085,360.07800843467,370.40166886388,380.18393134541,390.22454217496,400.5303243006,412.0137801623,422.89501338113,434.06361862988,445.5271853685,458.30072684004,470.40439262311,482.82771472967,495.57913524385,509.78770018956,523.2511306012],description:"Cycle of 26 fifths, 5/4 beats three times 3/2"},temp26ebf:{frequencies:[261.6255653006,268.42568455944,275.6873347244,283.44184249631,290.6057533496,298.25588724353,306.42524452376,315.14906491362,323.2084665433,331.81486605817,341.00539333861,350.8196903474,359.88651586494,369.56871668171,379.90806097321,389.45994242989,399.66012078319,410.55259814459,422.18435687733,432.93022440227,444.40542617247,456.65946119637,469.74519313893,481.83429211771,494.74389287961,508.52968420524,523.2511306012],description:"Cycle of 26 equal beating fifths"},temp26ebmt:{frequencies:[261.6255653006,268.65375733515,276.22103845862,283.50786797993,291.35362426947,298.90860888253,307.04308924768,315.80151824033,324.23534814673,333.31608510092,342.06028051348,351.47518831899,360.54116941247,370.30254728737,380.81265974123,390.93325547321,401.83014055422,412.32317421544,423.62106542614,434.50024245702,446.21389528982,458.82603004394,470.97074536855,484.04700949484,496.63864979835,510.1961187079,523.2511306012],description:"Cycle of 26 equal beating minor thirds"},temp26ebs:{frequencies:[261.6255653006,268.70854008298,275.97438147252,283.42781183148,291.07367309004,298.91693448926,307.01176285104,315.31558194419,323.83378869523,332.57191674,341.53564330438,350.78687613393,360.27695513986,370.01204624828,379.9984780646,390.24273934583,400.81557597059,411.66137956276,422.7871998129,434.200265189,445.90799193987,457.99123299379,470.38643795716,483.10166179174,496.14516363988,509.5254229925,523.2511306012],description:"Cycle of 26 equal beating sevenths"},temp27c8:{frequencies:[261.6255653006,268.8683660761,273.88218275531,281.46429379013,289.25630678777,297.26403435806,305.49344487497,313.95067836072,319.80518189674,328.65861797738,337.75715313333,347.10756874671,356.7168418477,363.36884069528,373.42828707985,383.76621672426,394.39034225616,405.30858212106,412.86671295557,424.29645219584,436.04260883433,448.1139452722,460.51946086698,473.26841152735,482.09384659572,495.44005640506,509.15574351714,523.2511306012],description:"Cycle of 27 fifths tempered by 1/8 of difference between augm. 2nd and 5/4"},temp27eb2:{frequencies:[261.6255653006,268.46319812592,275.47953375729,282.6792426258,290.06711722511,297.6480770209,305.21714541248,313.19405229436,321.37943712173,329.77875040935,338.39757940759,347.00289091411,356.07187808578,365.37788286775,374.92710181611,384.72589137834,394.78077412888,404.81988946592,415.39993259502,426.25648711974,437.39677971686,448.82822593369,460.24174609969,472.27024976331,484.61312060812,497.27857467888,510.27504274822,523.2511306012],description:"Cycle of 27 fourths, 5/4 beats twice 4/3"},temp28ebt:{frequencies:[261.6255653006,268.20719354764,274.94677993062,281.84811597329,288.91508487862,296.15166190523,303.56191452522,311.15001492268,318.92023016627,326.87692943437,335.10396312415,343.5284476344,352.15511767098,360.98882840285,370.03454814671,379.29736707683,388.78249121135,398.49525813745,408.44113355924,418.72492751128,429.25553103998,440.03886948281,451.08100913788,462.38815755283,473.96667987616,485.82308640697,497.96404651665,510.39638953936,523.2511306012],description:"Cycle of 28 equal beating thirds"},temp29c14:{frequencies:[261.6255653006,268.03384168485,274.59908446169,281.12309545065,288.00894581307,294.85155418799,302.07367045706,309.47268578827,316.82523654187,324.58557784847,332.29718551084,340.4364979057,348.77517523396,357.06148706459,365.80737813473,374.49834647311,383.67133729641,392.78672100419,402.40767098088,412.26427490957,422.0589810157,432.39692561869,442.66994710331,453.51274088813,464.62111626441,475.65973015548,487.31057837675,498.88825560972,511.10806227553,523.2511306012],description:"Cycle of 29 fifths 1/14 comma positive"},temp29ebf:{frequencies:[261.6255653006,267.97141371953,274.40384216744,281.08918054527,287.86573007783,294.90872015661,302.04780073409,309.28428172011,316.80528774769,324.42890571749,332.35226986162,340.383734589,348.52477529448,356.98590767403,365.56247629567,374.47626314535,383.51165984234,392.90231649713,402.42108995343,412.06973029551,422.09773822292,432.26256191617,442.8270465847,453.53566813958,464.39038927288,475.67189906986,487.10732348594,498.99237046175,511.03956815915,523.2511306012],description:"Cycle of 29 equal beating fifths"},temp29fo:{frequencies:[261.6255653006,267.94780983951,274.42283293416,281.05432651499,287.84607006616,294.80193939197,301.92589896847,309.2220107369,316.69443479624,324.34743177532,332.18536334326,340.21270232633,348.43402388135,356.85401564372,365.47747852664,374.30932945854,383.35460418662,392.61845788025,402.10617708826,411.82316930666,421.77497497272,431.96726840975,442.4058610624,453.0967048103,464.04589268124,475.25967298378,486.74443697706,498.50673304697,510.55326782272,522.89091000079],description:"Fifth beats with opposite equal rate as octave"},temp31c51:{frequencies:[261.6255653006,267.17944246504,273.80687224646,279.61933836952,286.55534345926,292.63843680803,298.85066583755,306.26370726525,312.76517639908,319.40466275447,327.32754956004,334.27616903285,342.56794607269,349.84009583671,357.26662128823,366.1286782788,373.90098334082,383.17565840352,391.30984260196,399.61670205031,409.52926208827,418.22288720188,428.59697681668,437.69538032917,446.98692528774,458.07451174337,467.79867446983,477.72926229583,489.57941763243,499.97237729845,512.37427391379,523.2511306012],description:"Cycle of 31 51/220-comma tempered fifths (twice diff. of 31-tET and 1/4-comma)"},temp31coh:{frequencies:[261.6255653006,267.17903658035,272.71444919697,278.8328003927,286.67318542907,292.31259119845,298.22448926086,305.9625493141,312.79375273624,319.37019903425,325.99008611032,333.53448283298,342.55073731576,349.35067604096,356.49690427728,365.94514964733,373.94225818849,381.74854907994,389.68867781295,401.66236977474,409.34549662494,417.52928752537,426.20510506248,437.61344561246,447.02040600938,456.30467151405,466.17931462488,479.8608061495,489.18804557359,499.02680928636,509.58872491278,523.2511306012],description:"Differential coherent 31-tone scale, interval=8, OdC, 2003"},temp31eb1:{frequencies:[261.6255653006,267.35556661283,273.21106374578,279.19480525048,287.36432599524,293.65804565963,300.08960744161,306.66203029506,313.37839929357,320.24186707858,327.25565533923,334.42305632458,341.74743438901,349.23222958864,356.8809512704,367.32364464292,375.36859607341,383.58974428421,391.99094825517,400.57615379751,409.34938620036,418.31476585427,427.47650107887,436.83889236244,446.40633438056,459.46863260649,469.5317006585,479.81516534138,490.32385367952,501.06269841655,512.03674033076,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats equal 5/4. Third 1/18 synt. comma higher"},temp31eb1a:{frequencies:[261.6255653006,267.52830363402,273.56421824856,279.73631545395,286.19123047598,292.64821393201,299.25087842544,306.00251077972,312.90647197491,319.96619882071,327.18520755731,334.56708808783,342.11551697966,349.83425186023,357.90667665031,365.98168819447,374.23888853079,382.68238383924,391.31637942763,400.14517332125,409.17316051655,418.40483516889,427.84479530109,437.49773526159,447.36846272566,457.69148927209,468.01782376277,478.57713873597,489.37469064597,500.41585743254,511.7061296998,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats equal 7/4"},temp31eb2:{frequencies:[261.6255653006,267.43633367564,273.37616065041,279.44791264824,286.8151286113,293.18536340431,299.69708268426,306.35342885652,313.15761412007,320.11292201761,327.22270902014,334.4904061467,341.91952062013,349.51363755953,357.2764217104,366.69546492458,374.83986170174,383.16514754137,391.67534003419,400.37454600262,409.26696348258,418.35688374945,427.64869338884,437.14687641357,446.85601642745,458.63669049374,468.82312458207,479.23580188553,489.87974732177,500.7600974131,511.88210276525,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats twice 5/4"},temp31eb2a:{frequencies:[261.6255653006,267.30377559621,273.10522335955,279.03258328435,287.71713441117,293.9616250555,300.34164347605,306.86013111019,313.520093235,320.3246003528,327.27678960683,334.37986622751,341.63710501026,349.05185182525,356.62752721996,367.72712485201,375.70811839104,383.86232802855,392.19351543866,400.70551714108,409.40225971792,418.28775270674,427.36609266644,436.64146506587,446.11814621352,460.00303307438,469.98674378481,480.18713671772,490.60891465214,501.25688243424,512.13594919255,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 3/2"},temp31eb2b:{frequencies:[261.6255653006,267.52098517401,273.5492512983,279.71335720518,286.24081966732,292.69091492047,299.28635537219,306.03041620307,312.92644639599,319.97787039914,327.18818982659,334.56098519707,342.09991771207,349.80873107384,357.97195918064,366.0384300542,374.28666922186,382.72077261519,391.34492846269,400.16341936959,409.18062444454,418.40102147414,427.82918914659,437.46980932536,447.32766937413,457.76662230541,468.08184681118,478.62951259033,489.41485742956,500.44323714283,511.72012823096,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 7/4 (7/4 beats twice 5/4 gives 31-tET)"},temp31ebf:{frequencies:[261.6255653006,267.58895287558,273.47207673981,279.84020613447,286.1226232561,292.32048149598,299.02929415269,305.64780689513,312.81195283539,319.87967238294,326.85226402826,334.39967773649,341.84550545999,349.90516819854,357.85635261941,365.7005167875,374.19135817901,382.56791460144,390.83172556312,399.77680617055,408.60149248083,418.153686518,427.57731316062,436.87410111252,446.93731687602,456.86508723973,467.61130449655,478.21288647115,488.67177324268,499.99289085438,511.16163412976,523.2511306012],description:"Cycle of 31 equal beating fifths"},temp31ebf2:{frequencies:[261.6255653006,268.47208070676,273.9410776603,281.1098810272,286.83632036086,292.67941197057,300.33857976184,306.45672349367,312.69950064833,320.88257689406,327.41921873353,335.98749730659,342.8318387903,349.81560715632,358.96997989875,366.28249344322,375.86779039798,383.5245262314,391.33723606718,401.57819634767,409.75867428285,420.48170539436,429.04726334649,437.78730875453,449.24382765192,458.39529367535,467.73318258368,479.97335657757,489.75080836323,502.56716753771,512.80487382351,523.2511306012],description:"Cycle of 31 fifths, 3/2 beats equal 7/4"},temp31ebs:{frequencies:[261.6255653006,267.49970467488,273.5255021102,279.70687352555,286.04783307233,292.55250379055,299.22511217624,305.93841412724,312.82503848113,319.88946348152,327.13627425327,334.57018402367,342.19602042672,349.86836735032,357.73879552978,365.81242398075,374.09449397971,382.59039112658,391.30563169636,400.0740276901,409.06880268892,418.29580572823,427.76103041037,437.4706255228,447.4309015606,457.4519243295,467.73166961576,478.27681510244,489.09421437332,500.19089295757,511.57406697079,523.2511306012],description:"Cycle of 31 equal beating sevenths"},temp31ebs1:{frequencies:[261.6255653006,267.15774161678,272.80689957055,278.57550963341,287.00766304701,293.07655388437,299.27377555355,305.60203820353,312.06411627904,318.6628357552,328.30838543699,335.25059642555,342.33960321815,349.5785118895,356.97048813578,364.51877275634,375.55232561156,383.49353066309,391.60265342908,399.88324912115,408.33893898267,416.9734277591,429.59472356821,438.6786743379,447.954711436,457.42689142912,467.09936712211,476.97636845082,491.41388278482,501.80502418824,512.41589335668,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats equal 7/4. 17/9 schisma fifth"},temp31ebs2:{frequencies:[261.6255653006,267.52957387699,273.56681763873,279.74030009523,286.13080593576,292.58781532731,299.19053769144,305.94226304679,312.84635035505,319.90623967996,327.21431324819,334.59843914397,342.14920188821,349.87035796113,357.76575454309,365.83932576918,374.19671203989,382.64107477964,391.27599615891,400.10577865514,409.13482199124,418.3676180873,427.92498506647,437.58181190976,447.45656083737,457.55415226032,467.87960969795,478.43807796233,489.36771995709,500.41110255739,511.70370009509,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats twice 7/4. Almost 31-tET"},temp31ebsi:{frequencies:[261.6255653006,267.31506098272,273.2139312212,279.32987994092,285.67089487749,292.24525964349,299.06156112772,306.12870201667,312.71376833043,319.5411631371,326.61980701828,333.95894503443,341.56816427739,349.45740040562,357.63696227352,366.11753111539,374.01961057916,382.2124855973,390.7068565555,399.51382386635,408.64488423766,418.11197066674,427.92744450622,438.10412760018,447.58662182594,457.41807184609,467.61131789159,478.17967690081,489.136951815,500.49745466086,512.27602199232,523.2511306012],description:"Cycle of 31 equal beating major sixths"},temp31ebt:{frequencies:[261.6255653006,267.508686718,273.53300221315,279.70190221389,286.0188552526,292.48741633838,299.11122072338,305.89399777728,312.83956126154,319.95181832117,327.23477005018,334.588671338,342.11906613961,349.83019225353,357.72638299858,365.81208378543,374.09184045976,382.57031224079,391.25226584136,400.14258695229,409.24627647794,418.43865241641,427.85164834976,437.49055334209,447.36079317794,457.46791872903,467.81761394993,478.41570188597,489.26814549043,500.38104816704,511.76065992154,523.2511306012],description:"Cycle of 31 equal beating thirds"},temp31g3:{frequencies:[261.6255653006,266.21023205793,270.87523947024,275.62199471997,289.25983723073,294.32876096318,299.48651076576,304.73464409936,310.07474405997,315.5084236529,331.11985608357,336.92232427465,342.82647426905,348.83408706747,354.94697625466,361.16698614085,379.03761443004,385.6797831671,392.4383479509,399.31534788729,406.31285900225,413.43299207996,433.88975562921,441.49314144476,449.22976592409,457.10196592055,465.11211608996,473.26263524279,496.67978412536,505.38348615935,514.23971114652,523.2511306012],description:"Wonder Scale, cycle of 31 sevenths tempered by 1/3 gamelan residue, s.wonder1"},temp31g4:{frequencies:[261.6255653006,266.75106828164,271.97698492363,277.30528403104,287.97116616014,293.61280545832,299.36497003718,305.22982618403,311.20958045219,317.30648321666,329.51091606373,335.96636137331,342.54827390456,349.25913259695,356.10146388137,363.07784268567,377.0427625798,384.42940207435,391.96075366681,399.63965159508,407.46898671086,415.4517078616,431.43106138252,439.88322158593,448.50096908674,457.28754710584,466.24626137824,475.38048570318,493.66485502092,503.33623955776,513.19709315346,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/4 gamelan residue"},temp31g5:{frequencies:[261.6255653006,267.07609791103,272.64018328418,278.3201871026,287.20071989568,293.1840695693,299.2920706603,305.52732176658,311.89247392994,318.39023342226,328.54930692245,335.39408374843,342.38146206091,349.5144087687,356.79595852417,364.22920722399,375.85089312601,383.68111960674,391.67447579625,399.83436022994,408.16424460367,416.66766586736,429.96253800336,438.92009035289,448.06425836543,457.39892986705,466.92807368021,476.65574406444,491.86469103391,502.11187209711,512.57253609913,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/5 gamelan residue"},temp31g6:{frequencies:[261.6255653006,267.29300481931,273.08321314304,278.9988528944,286.68823620156,292.89859205665,299.24348036203,305.72581270733,312.34856974117,319.11478979112,327.9097940226,335.01310892782,342.27029731995,349.68469585889,357.2597060542,364.99881126821,375.05840734677,383.18307527508,391.48374080678,399.96422099622,408.62840644009,417.48028065389,428.98629965513,438.27917301224,447.77335490729,457.47320099372,467.3831713443,477.50781354513,490.66822826519,501.2972832058,512.15658610391,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/6 gamelan residue"},temp31g7:{frequencies:[261.6255653006,267.44804485495,273.40010374961,279.48462577409,286.32273545638,292.69485077785,299.20877758909,305.86767190621,312.6747599825,319.63333987564,327.45376040978,334.74124806474,342.19091885571,349.80638115363,357.59132564064,365.54952414453,374.49336901227,382.82772265927,391.34755742947,400.0570012071,408.96027492626,418.06169111145,428.2903432132,437.821949061,447.565680886,457.52625955954,467.70851101039,478.11736856842,489.81539667363,500.71624319167,511.85968815724,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/7 gamelan residue"},temp31h10:{frequencies:[261.6255653006,267.8597617245,273.71072489962,279.68949451567,286.35413084244,292.60907359238,299.00064605783,306.12544311476,312.81225819702,320.26616683613,327.26186315247,334.41036913783,342.37893460431,349.85764856047,358.19430059608,366.01847563765,374.01355928612,382.92581520849,391.29021017831,400.61414686654,409.36491649663,418.30683086326,428.27453775026,437.62950220286,447.18881072031,457.84473927605,467.84561789912,478.99376955124,489.45661357347,500.14800438647,512.06587983104,523.2511306012],description:"Cycle of 31 fifths tempered by 1/10 Harrison's comma"},temp31h11:{frequencies:[261.6255653006,269.21878403965,274.22153683641,279.31725480271,287.42394184039,292.76499331753,298.20529308835,306.86017365004,312.56239683413,321.63396690808,327.61072570921,333.69854562169,343.38355445704,349.7644731902,359.91576765193,366.60389537541,373.41630725864,384.25405432087,391.39444778107,402.75397853578,410.23814647641,417.86138882164,429.98907567166,437.9793418028,446.11808436842,459.06587176894,467.59645436585,481.16761342105,490.10890120058,499.21634316923,513.70521350358,523.2511306012],description:"Cycle of 31 fifths tempered by 1/11 Harrison's comma"},temp31h12:{frequencies:[261.6255653006,270.35656674398,274.64794212014,279.0074329748,288.31850430385,292.89498819461,297.54411640065,307.47379627264,312.35433239663,322.77826253379,327.90172667751,333.10651564349,344.2229903876,349.68684701428,361.35664068489,367.0924599966,372.91932620731,385.3644371109,391.48133253101,404.54589939324,410.96726244836,417.49055189439,431.4231018689,438.27108715714,445.22777061734,460.08596806997,467.38892215786,482.98668436162,490.65313915878,498.44128370652,515.07533168556,523.2511306012],description:"Cycle of 31 fifths tempered by 1/12 Harrison's comma"},temp31h8:{frequencies:[261.6255653006,264.15772162327,272.31089540773,280.71571360382,283.4326348965,292.18072491748,301.19882119914,304.11398928909,313.50040506268,316.53463456122,326.30440921209,336.37572681506,339.63135730234,350.11400731728,353.50260556257,364.41338872146,375.66093089504,379.29678648678,391.00370158472,394.788050771,406.97310157871,419.5342415638,423.59472503043,436.668886633,450.14658206855,454.50334862767,468.53149836075,473.06620699858,487.66729542944,502.71904336675,507.58463809481,523.2511306012],description:"Cycle of 31 fifths tempered by 1/8 Harrison's comma"},temp31h9:{frequencies:[261.6255653006,266.20804854623,273.08769296879,280.14512719472,285.05198845745,292.41861893027,299.97562432697,305.22982618403,313.11791376428,318.60230743232,326.83598255713,335.28243953396,341.15505431438,349.97156260351,356.10146388137,365.30423365264,374.74482972428,381.30864508241,391.16284711627,398.01423104415,408.30015740759,418.85190169901,426.18827121524,437.20230245522,448.50096908674,456.35665612784,468.15032961482,476.35018210031,488.66055322307,501.28905975035,510.06935121341,523.2511306012],description:"Cycle of 31 fifths tempered by 1/9 Harrison's comma"},temp31ms:{frequencies:[261.6255653006,267.90457886781,273.56603860918,280.13162379381,286.05147140959,292.91670530125,299.10673210371,306.2852939563,312.75782903301,320.26401722477,327.03195662575,334.88072358477,341.95754947331,350.16453098318,357.56433846376,366.14588292411,373.88341429498,382.85661659068,390.94728541851,400.33002063726,408.78994578219,418.60090448096,427.44693588739,437.70566275183,446.9554220819,457.68235263341,467.35426952494,478.57076966998,488.68410850494,500.41252756995,510.98743222773,523.2511306012],description:"Cycle of 31 5th root of 5/4 chromatic semitones"},temp31mt:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,285.65057792122,292.50627485027,299.52642572255,306.71505845072,314.07622014281,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,365.63273925968,374.40803131735,383.39382442208,392.5952765698,402.01756125559,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,457.04092569426,468.01003810189,479.24227945773,490.7440946167,502.52195335034,510.98743222773,523.2511306012],description:"Cycle of 31 square root of 5/4 meantones"},temp31to:{frequencies:[261.6255653006,267.53589118464,273.57973594714,279.76011588387,286.08011543105,292.54288870475,299.15166280294,305.90973254237,312.82047235615,319.88733118052,327.11383586587,334.50359293692,342.06029039257,349.78769954651,357.68967690936,365.77016611333,374.03319988033,382.48290424395,391.12349182016,399.95927701915,408.9946695077,418.23417857039,427.68241536008,437.34409519915,447.22403993284,457.32718033558,467.65855857191,478.22333071276,489.02676930874,500.07426891005,511.37133726836,522.92361522538],description:"Third beats with opposite equal rate as octave"},temp31w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,356.97015906904,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 31 thirds tempered by 1/10 Wuerschmidt comma"},temp31w11:{frequencies:[261.6255653006,267.42197848694,273.34681181717,279.40291364591,286.91265577589,293.26931399985,299.76680465545,306.40825140143,313.19684009872,320.13583435099,327.22856275086,334.47843511672,341.88893114233,349.46360748692,357.20610515709,366.80702823839,374.93377645155,383.2405741708,391.73141324262,400.41036830387,409.28161120445,418.34939984118,427.61808628905,437.09212645494,446.77606497733,458.78443573652,468.94897543376,479.33871705477,489.95864449434,500.81386326642,511.90958055231,523.2511306012],description:"Cycle of 31 thirds tempered by 1/11 Wuerschmidt comma"},temp31w12:{frequencies:[261.6255653006,267.46216197987,273.42896553533,279.52888390694,286.63976159726,293.03439921138,299.57169286871,306.25482853931,313.08705807777,320.0717057658,327.2121755928,334.51194000906,341.9745565771,349.60365642833,357.40295156876,366.49485373999,374.67097398132,383.02949720151,391.57448819698,400.31011139524,409.24061734241,418.37035125513,427.70376253715,437.24539007841,446.99988402026,458.37102198078,468.59680699416,479.0507177135,489.73784363297,500.66339010461,511.83267129957,523.2511306012],description:"Cycle of 31 thirds tempered by 1/12 Wuerschmidt comma"},temp31w13:{frequencies:[261.6255653006,267.49616787535,273.49850059869,279.63551774138,286.40905375482,292.83577174957,299.40669857094,306.12507001426,312.99419468163,320.01745343487,327.19830857776,334.54029455907,342.04702698539,349.72220057363,357.56974544479,366.23091133098,374.44874787361,382.85098402684,391.44175752404,400.22529663315,409.2059314354,418.38808223908,427.77627085136,437.37511801764,447.18935574711,458.02150335998,468.29902426597,478.80716193382,489.55109116118,500.53609997149,511.7676037195,523.2511306012],description:"Cycle of 31 thirds tempered by 1/13 Wuerschmidt comma"},temp31w14:{frequencies:[261.6255653006,267.52531966849,273.55811412425,279.72695193191,286.21145362846,292.66562728487,299.26534666214,306.01389218024,312.91461811683,319.97095981222,327.18642276261,334.56459899164,342.10915585471,349.82384327668,357.71250180664,366.00482869479,374.25837321367,382.69803863807,391.32802257119,400.15261355898,409.17620468607,418.4030501472,427.83842920638,437.48634583318,447.35182400506,457.72212848121,468.04393370572,478.5984967348,489.39107187298,500.42702361787,511.71183724724,523.2511306012],description:"Cycle of 31 thirds tempered by 1/14 Wuerschmidt comma"},temp31w15:{frequencies:[261.6255653006,267.55058630145,273.60979095449,279.80621811014,286.0403087015,292.51824916652,299.142895223,305.91756930507,312.84566908988,319.93066920159,327.176122954,334.58566413263,342.16300881716,349.91195724514,357.83639571789,365.80900091179,374.09345893182,382.56553686518,391.22947931103,400.08963362509,409.15044340767,418.41645289306,427.89230922859,437.58276480531,447.49267964143,457.46282942114,467.82296651709,478.41773025336,489.25243249537,500.33250769337,511.66351279634,523.2511306012],description:"Cycle of 31 thirds tempered by 1/15 Wuerschmidt comma, almost 31-tET"},temp31w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,278.83674800471,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,356.32163474066,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,445.77026919414,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 31 thirds tempered by 1/8 Wuerschmidt comma"},temp31w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,356.68171037974,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,446.1797636563,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 31 thirds tempered by 1/9 Wuerschmidt comma"},temp32ebf:{frequencies:[261.6255653006,266.99024669658,272.64192755012,278.59596223891,284.86852586219,291.47665855944,298.4383110444,304.47357861204,310.83171904039,317.53000821614,324.58664278196,332.02079024875,339.85265231199,346.64232633314,353.79523650997,361.33080945807,369.26952339658,377.6329406438,386.44378308989,395.72598875513,403.77301123196,412.25053247262,421.18158418009,430.59042797451,440.50262726312,450.945108697,459.9980085603,469.53522100534,479.58265227668,490.16760508681,501.31882698223,513.0666164148,523.2511306012],description:"Cycle of 32 equal beating fifths"},temp33a12:{frequencies:[261.6255653006,266.94139439278,272.36523138282,277.89927397158,284.73748648557,290.5229142688,296.42589304627,302.44880952638,308.5941041528,316.1876182869,322.61206437627,329.16704532903,335.85521147284,342.67927280589,351.11151394887,358.24555988319,365.52455654698,372.95145333883,382.12859604556,389.89286138208,397.81488464837,405.89786889835,414.14508930077,424.3358756666,432.95772800787,441.75476312782,450.73053786756,459.88868900496,471.20507923536,480.77924170569,490.54793493862,500.51511311891,512.83118959171,523.2511306012],description:'Cycle of 33 fifths tempered by 1/12 "11 fifths" comma'},temp34eb2a:{frequencies:[261.6255653006,267.30377714022,273.10522651459,279.03258811962,285.08859470169,291.27603831759,293.96161656556,300.34163653669,306.86012579271,313.52008961307,320.32459850253,327.27678960683,334.37986815896,341.63710895701,349.05185787385,356.62753339984,364.36762821878,372.27571081823,375.70810971034,383.86232137672,392.19350864246,400.70551251195,409.40225735312,418.28775270674,427.36609513501,436.64147011015,446.11815394416,455.80051576031,465.69301950749,469.98673021106,480.18712562304,490.60890615053,501.2568766435,512.13594623433,523.2511306012],description:"Cycle of 34 thirds, 5/4 beats twice 3/2"},temp34ebsi:{frequencies:[261.6255653006,266.99788221884,272.57696520339,278.14698300137,283.93137567849,289.70637009331,295.70363067102,301.69114426564,307.90910207865,314.36637542255,320.81315450625,327.50805511637,334.19207543599,341.13334896852,348.06334108321,355.26005273528,362.44506998142,369.90662102486,377.65534755435,385.39148338011,393.42536256589,401.44618836017,409.77571602141,418.09170597447,426.72775997548,435.3497813463,444.30364141769,453.60211446558,462.88547695756,472.52613162558,482.15112257833,492.14655599832,502.125745683,512.48900933996,523.2511306012],description:"Cycle of 34 equal beating major sixths"},temp34ebt:{frequencies:[261.6255653006,266.93199967636,272.36578831151,277.92998813547,283.62773001764,289.46221547291,295.43672985114,301.55463262869,307.81936583026,314.23445063866,320.80349820247,327.5302045997,334.16324661664,340.95548417522,347.91073392156,355.03290870525,362.32601803901,369.79415983503,377.44153922514,385.2724539348,393.29131162714,401.50262139782,409.91100286066,418.20230551726,426.69260242977,435.3866631899,444.28938530291,453.40576935587,462.74094691381,472.3001707563,482.08881469934,492.11238732973,502.37652397446,512.8870010249,523.2511306012],description:"Cycle of 34 equal beating thirds"},temp34w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,281.06516151868,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,351.5637974276,359.28803828513,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,449.40705529895,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 34 thirds tempered by 1/10 Wuerschmidt comma"},temp34w5:{frequencies:[261.6255653006,266.84400329087,272.16653090376,277.59522118835,285.18293865736,290.87125860088,296.67303727804,302.5905394405,308.62607485572,314.78199505921,321.06070411799,327.46464776022,333.99632772474,340.65828815182,347.45313114562,356.95032497057,364.07013256472,371.33195122039,378.73861781039,386.29301712643,393.99809806388,401.85686830172,409.8723892274,418.04779164423,426.38625992488,434.89105154177,443.56547936435,455.68978545099,464.77906877635,474.04965097839,483.50514461458,493.14924173292,502.98569917153,513.01835960126,523.2511306012],description:"Cycle of 34 thirds tempered by 1/5 Wuerschmidt comma"},temp34w6:{frequencies:[261.6255653006,267.02047390967,272.52663052146,278.06968704778,283.80368699438,289.65592453275,295.6288411546,301.72492193478,307.94670831505,314.29679425134,320.77782174252,327.39249271371,334.14356492035,341.03384719449,348.06621207862,355.14570764395,362.46906930947,369.94344613252,377.57194788125,385.35775486011,393.30411308867,401.41432870635,409.69178284295,418.13992649314,426.76227456772,435.56242170336,444.42154779224,453.58584388327,462.93911228358,472.48525217168,482.22824196207,492.17213857029,502.32108537715,512.67931193931,523.2511306012],description:"Cycle of 34 thirds tempered by 1/6 Wuerschmidt comma"},temp34w7:{frequencies:[261.6255653006,267.14659557842,272.78413659373,276.97759061533,282.82259314675,288.79093992594,294.88523549471,301.10813946365,307.46236235072,313.95067836072,320.57591524951,327.34096447962,334.24877325582,341.30235609413,348.50479124753,353.86228320674,361.3297679824,368.9548354601,376.74081403286,384.69109896591,392.80915578714,401.0985286019,409.56282802254,418.20574780595,427.03105980737,436.04260883433,442.74580331919,452.08897683944,461.62931955889,471.37098776125,481.31823237599,491.47539447856,501.84689823661,512.43727265667,523.2511306012],description:"Cycle of 34 thirds tempered by 1/7 Wuerschmidt comma"},temp34w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,276.16133434798,282.08899791039,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,352.90276052629,360.47764004221,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,441.49314144476,450.96957067185,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 34 thirds tempered by 1/8 Wuerschmidt comma"},temp34w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,281.5197407082,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,352.15826244648,359.81626391233,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,440.52130132575,450.10083737825,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 34 thirds tempered by 1/9 Wuerschmidt comma"},temp35ebsi:{frequencies:[261.6255653006,266.57889315685,271.71450319234,277.03910343536,282.55964921963,288.28335166643,294.21768457231,300.3704033182,306.74954035112,312.48255822683,318.42655208483,324.58928450704,330.97880464114,337.6034601246,344.47190142434,351.59310182482,358.97636423712,366.63132974323,373.51095055492,380.64374131787,388.03901984907,395.70644562254,403.65603146762,411.89816253905,420.4436041444,429.30351656419,438.48947534443,446.74502047858,455.30437022365,464.17870575399,473.37961532931,482.91911915131,492.80967579032,503.06420520117,513.69610107468,523.2511306012],description:"Cycle of 35 equal beating major sixths"},temp37ebs:{frequencies:[261.6255653006,266.54882370674,271.76117582243,276.81154351547,282.15846820925,287.3392230449,292.82419544994,298.13870690002,303.76528724985,309.7222634282,315.49411047005,321.60488016898,327.52574544851,333.79428377068,339.86801168664,346.29839044807,353.1063601343,359.70275861181,366.68649693083,373.45319917734,380.61724149647,387.55864668979,394.907650003,402.68818871569,410.22692643911,418.2083422233,425.94171605945,434.12919568644,442.06222705415,450.46108885682,459.35313199837,467.96883572953,477.09045247204,485.92859505436,495.28571063961,504.35203618851,513.95073426779,523.2511306012],description:"Cycle of 37 equal beating sevenths"},temp37ebt:{frequencies:[261.6255653006,266.44794669373,271.38606435347,276.44269655507,281.62068893017,286.92295259461,292.35247205526,297.91229840101,303.60556084342,309.43546158348,315.40528084,321.51837488336,327.7781831369,333.8061589736,339.9788066307,346.29959662983,352.77208770341,359.39991652139,366.18681567584,373.13659908053,380.25317623321,387.54055229398,395.00282568127,402.64419215928,410.46895395112,418.00392297279,425.71973353547,433.62072344005,441.71133574434,449.99612361773,458.47974493329,467.16697490003,476.06269518051,485.17191513214,494.49975815874,504.05146656861,513.83241864047,523.2511306012],description:"Cycle of 37 equal beating thirds"},temp3ebt:{frequencies:[261.6255653006,330.24866439584,416.02753826489,523.2511306012],description:"Cycle of 3 equal beating thirds"},temp4ebmt:{frequencies:[261.6255653006,310.36356181711,368.84915763691,439.03187262068,523.2511306012],description:"Cycle of 4 equal beating minor thirds"},temp4ebsi:{frequencies:[261.6255653006,310.92686529443,370.08842528703,441.08229727815,523.2511306012],description:"Cycle of 4 equal beating major sixths"},temp53ebs:{frequencies:[261.6255653006,264.97369574946,268.51842903659,272.2713107977,275.7058824095,279.342132921,283.19190440533,286.71515038985,290.44528277978,294.39444663109,298.00865518834,301.83509073593,305.88621462445,310.17522146598,314.10044576101,318.25616227247,322.65590013911,326.68246801001,330.94547393755,335.45880590636,339.58933056423,343.96239778214,348.59225483118,353.4939765515,357.97994689961,362.72933676467,367.75761084241,372.35940104854,377.23140801172,382.38950169412,387.11009989437,392.10789272021,397.3991578827,403.00112480292,408.12795020911,413.55582307376,419.3024201087,424.56160969567,430.12961973912,436.02458225248,441.41955172249,447.13131541518,453.17847579573,459.58072182695,465.43995070361,471.64323472325,478.21077610462,484.22127701861,490.5847168482,497.32181757346,503.48749858841,510.01522804676,516.92626488088,523.2511306012],description:"Cycle of 53 equal beating harmonic sevenths"},temp53ebsi:{frequencies:[261.6255653006,265.08815342092,268.54511416675,272.14096825888,275.73097879106,279.31515577755,283.04333763043,286.76545980208,290.48153462492,294.34691329876,298.20601137227,302.05883614112,306.06646174912,310.06757319581,314.22944103195,318.38454699407,322.53289853772,326.84792360782,331.1559371129,335.45694960827,339.93076775401,344.39731584765,348.85660497561,353.49505873963,358.12597594237,362.74936749482,367.55851619873,372.35985057275,377.35409330215,382.34021841275,387.3182413058,392.49627136254,397.66588656991,402.8271015422,408.19568270781,413.55554119639,418.90668980097,424.47283359145,430.02993471298,435.57800299537,441.34898312942,447.11058430799,453.10367443873,459.08702461554,465.06065502782,471.27428848056,477.47782740925,483.67128540638,490.11358366391,496.54541154487,502.96678854317,509.64616466331,516.31468511822,523.2511306012],description:"Cycle of 53 equal beating major sixths"},temp53ebt:{frequencies:[261.6255653006,265.06408390481,268.61942739596,272.14046995187,275.78114176924,279.3866896354,283.11473715719,286.8068186786,290.62433945466,294.40503066492,298.31417332138,302.18560037327,306.18856199636,310.15290198883,314.25193588094,318.31142144389,322.50883104059,326.66574402863,330.9638909587,335.40807143415,339.80937339101,344.36021509659,348.86714800611,353.52720940583,358.14231011275,362.91421253104,367.64007568808,372.5265022753,377.36578530136,382.3694885676,387.32491504393,392.44870495902,397.52306357866,402.76982394565,407.96596497751,413.33865052838,418.89387526617,424.39550434456,430.08405345947,435.71772111176,441.54279782575,447.31167294612,453.27655186057,459.18388087721,465.29191391782,471.34101945319,477.59564801313,483.78993007475,490.19466758193,496.53761595054,503.09606844751,509.59124455492,516.30709807412,523.2511306012],description:"Cycle of 53 equal beating thirds"},temp57ebs:{frequencies:[261.6255653006,264.8277951114,268.04955507264,271.33445958124,274.63939933433,278.00911284632,281.39937814535,284.85609135359,288.33388628378,291.8798428433,295.4474281527,299.08493440323,302.74462553584,306.42663750246,310.18081323211,313.95788745209,317.80898926922,321.68357852782,325.63410692083,329.60872876069,333.66125215256,337.73849074816,341.89564167341,346.07814569972,350.28615866377,354.57664765081,358.89330206442,363.2945606359,367.72266219717,372.23755268366,376.77997919433,381.41143316036,386.07113633698,390.82216502962,395.60217018381,400.41132814233,405.3147417445,410.24806349136,415.27807310888,420.33876095689,425.4986359826,430.68997922537,435.98307052812,441.30844296951,446.73819252663,452.20105472878,457.69723413281,463.30113726238,468.93921588924,474.68780077646,480.47144432851,486.36844238798,492.30140788993,498.35065469266,504.4367956254,510.6422225112,516.88549425379,523.2511306012],description:"Cycle of 57 equal beating harmonic sevenths"},temp59ebt:{frequencies:[261.6255653006,264.71774803536,267.84005552541,271.00645194849,274.20369404321,277.44608402629,280.72006081878,284.04026812198,287.39281927261,290.79271098314,294.22572486522,297.70721418515,301.22261902261,304.78766466692,308.38743972219,312.03804524126,315.72421513091,319.46243532331,323.23707283878,327.06501147453,330.93024062011,334.83312418563,338.79111909993,342.78767359614,346.84065928187,350.93313112856,355.08338946648,359.27407840069,363.52394351295,367.81521017702,372.16707169716,376.56132871014,381.01763522853,385.51735474883,390.08061088885,394.68832388107,399.36109834092,404.07939600279,408.86431870994,413.69585627072,418.57446131049,423.52195428502,428.51764625978,433.58387848862,438.69946807471,443.88729218006,449.12565432864,454.4379830027,459.80206875391,465.24189440938,470.73471441434,476.30509804765,481.92974808423,487.63381799831,493.39345924022,499.23442935246,505.13230099895,511.11345315981,517.15287439575,523.2511306012],description:"Cycle of 59 equal beating thirds"},temp5ebf:{frequencies:[261.6255653006,300.99242152138,345.28013476976,397.76927639746,456.81956072863,523.2511306012],description:"Cycle of 5 equal beating fifths"},temp5ebs:{frequencies:[261.6255653006,300.72264357012,345.40501873528,396.4705903526,454.83124362955,523.2511306012],description:"Cycle of 5 equal beating harmonic sevenths"},temp6:{frequencies:[261.6255653006,292.50629174609,327.17562781541,373.91502405318,418.23333786749,467.5991148023,523.2511306012],description:"Tempered wholetone scale with approximations to 5/4 (4), 7/5 (4) and 7/4 (1)"},temp65ebf:{frequencies:[261.6255653006,264.41601755103,267.24454169377,270.11165630441,273.01788702098,275.96376822181,278.903505094,281.88335012505,284.90384796088,287.96555727487,291.06903608099,294.16604397209,297.30530343106,300.48739162418,303.71289539257,306.98240612292,310.29652144782,313.60372560746,316.95605020285,320.35411162765,323.7985328567,327.28994911888,330.77408078649,334.30574717623,337.88559766085,341.51429052286,345.19248907458,348.92086961342,352.64147345074,356.41283883338,360.23565716142,364.11063345825,368.0384739541,371.95812372083,375.93124824951,379.95858022583,384.04085801267,388.17883226226,392.30817269042,396.49385281186,400.73664000181,405.03730976228,409.39665754461,413.81548025993,418.22508312451,422.69484912531,427.22559773342,431.81816208034,436.47338166162,441.11888946365,445.82778005125,450.60091414809,455.43916939942,460.34343547357,465.31460883154,470.27541574397,475.30390033467,480.4009926512,485.56762723834,490.80474851567,496.03094699932,501.32844669322,506.69822455894,512.14126217109,517.65855736571,523.2511306012],description:"Cycle of 65 equal beating fifths"},temp65ebt:{frequencies:[261.6255653006,264.43406811535,267.2034679247,270.07937559507,272.91523803531,275.86016780291,278.76409255008,281.77970028627,284.75331888701,287.84130158502,290.886287826,294.04838131756,297.16644728835,300.4044304772,303.59732911309,306.91302510559,310.18255295306,313.57782661988,316.92582314139,320.40258196387,323.83093239735,327.39113302053,330.90176198948,334.36350914498,337.95839429282,341.50322405771,345.18438591943,348.81429298672,352.58380229516,356.30082494405,360.1608038988,363.96703524466,367.91965255368,371.81723365001,375.86471396542,379.85583700975,384.00045811272,388.08736764479,392.33145942297,396.5164558179,400.86240365726,405.1478399234,409.59809307723,413.98637838791,418.31356254814,422.80716945583,427.23820566351,431.83965831621,436.37704077554,441.08892851835,445.73520856761,450.56017999004,455.31796985254,460.25874195194,465.13071889642,470.19006822446,475.1789734801,480.35974823468,485.46838574269,490.77349931217,496.0047455553,501.43718079349,506.7939752079,512.35679191473,517.84214996629,523.2511306012],description:"Cycle of 65 equal beating thirds"},temp6eb2:{frequencies:[261.6255653006,293.46010680596,329.2739659995,369.56455759223,414.89147313404,465.88425311859,523.2511306012],description:"Cycle of 6 equal beating 9/8 seconds"},temp6s:{frequencies:[261.6255653006,271.93638072959,309.96730300827,353.31693843766,402.72911708552,459.05170412301,523.2511306012],description:"Cycle of 6 tempered harmonic sevenths, 6/5 and 4/3 minimax, Op de Coul, 2002"},temp6teb:{frequencies:[261.6255653006,314.31996068356,377.55323514312,453.43316449459,544.48907971635,653.75617798246,784.8766959018],description:"Cycle of 6 equal beating 6/5's in a twelfth"},"temp7-5ebf":{frequencies:[261.6255653006,272.53310095338,288.29512120063,313.54121701986,318.29837158817,352.05202827415,359.67534615791,387.61143614087,414.35283422339,427.61576999092,475.86500581459,472.62064557223,523.2511306012],description:"7 equal beating fifths on white, 5 equal beating fifths on black"},temp7ebf:{frequencies:[261.6255653006,288.29512120063,318.29837158817,352.05202827415,387.61143614087,427.61576999092,472.62064557223,523.2511306012],description:"Cycle of 7 equal beating fifths"},temp7ebnt:{frequencies:[261.6255653006,288.84289825546,318.65722544634,351.9228541964,388.36258888271,429.02057812008,473.55803233064,523.2511306012],description:"Cycle of 7 equal beating 11/9 neutral thirds"},temp8eb3q:{frequencies:[261.6255653006,285.27029088455,311.06453578321,339.20371183191,369.9009952302,403.38894083349,439.92124473489,479.77466958441,523.2511306012],description:`Cycle of 8 equal "beating" 12/11's`},temp9ebmt:{frequencies:[261.6255653006,282.57058469242,305.18178513943,329.6176429161,355.99737593287,384.50587463168,415.28223014648,448.54214811156,484.4478959333,523.2511306012],description:"Cycle of 9 equal beating 7/6 septimal minor thirds"},tenney_11:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,523.2511306012],description:`Scale of James Tenney's "Spectrum II" for wind quintet`},tertiadia:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"Tertiadia 2048/2025 and 262144/253125 scale"},tertiadie:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,383.2405741708,408.78994578219,436.04260883433,476.27480687611,490.54793493862,523.2511306012],description:"First Tertiadie 262144/253125 and 128/125 scale"},tet3a:{frequencies:[261.6255653006,280.31310567921,313.95067836072,336.37572681506,366.27579142084,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Eight notes, two major one minor tetrad"},tetracot:{frequencies:[261.6255653006,266.81074454173,272.09868928948,277.49143626213,289.66902367154,295.4099985897,301.26475437609,307.23554606336,320.71844041089,327.07478634962,333.55710924695,340.16790585091,355.09602205939,362.13370020095,369.31085868177,376.6302618745,393.15851224787,400.95055410677,408.89702710335,417.00099192139,435.30089370336,443.92815899023,452.72640877864,461.69903182491,481.96048707062,491.51250279099,501.25383072009,523.2511306012],description:"tetracot temperament, g=176.28227, 5-limit"},"tetragam-di":{frequencies:[261.6255653006,279.06726965397,290.69507255622,290.69507255622,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,436.04260883433,457.84473927605,523.2511306012],description:"Tetragam Dia2"},"tetragam-enh":{frequencies:[261.6255653006,271.31540105247,279.06726965397,279.06726965397,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,418.60090448096,418.60090448096,457.84473927605,523.2511306012],description:"Tetragam Enharm."},"tetragam-hex":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Tetragam/Hexgam"},"tetragam-py":{frequencies:[261.6255653006,275.62199471997,294.32876096318,294.32876096318,331.11985608357,348.83408706747,372.50983809402,392.4383479509,413.43299207996,441.49314144476,441.49314144476,465.11211608996,523.2511306012],description:"Tetragam Pyth."},"tetragam-slpe":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,279.06726965397,345.21700307457,348.83408706747,396.55020354877,455.51656649021,392.4383479509,455.51656649021,418.60090448096,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-slpe2":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,286.29520819723,345.21700307457,313.29104303136,396.55020354877,396.55020354877,387.04559340587,455.51656649021,423.54155496477,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-sp":{frequencies:[261.6255653006,271.31540105247,271.31540105247,271.31540105247,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,406.97310157871,406.97310157871,457.84473927605,523.2511306012],description:"Tetragam Septimal"},"tetragam-un":{frequencies:[261.6255653006,269.80136421624,285.40970760065,285.40970760065,319.76457981184,348.83408706747,359.73515228832,392.4383479509,404.70204632437,428.11456140098,428.11456140098,479.64686971777,523.2511306012],description:"Tetragam Undecimal"},tetragam13:{frequencies:[261.6255653006,275.95382006469,307.00724256551,307.00724256551,341.55514486295,341.55514486295,400.80167111126,400.80167111126,445.90437572008,445.90437572008,445.90437572008,496.08254310677,523.2511306012],description:"Tetragam (13-tET)"},tetragam5:{frequencies:[261.6255653006,300.52885648597,300.52885648597,300.52885648597,300.52885648597,345.21700307457,345.21700307457,396.55020354877,455.51656649021,455.51656649021,455.51656649021,455.51656649021,523.2511306012],description:"Tetragam (5-tET)"},tetragam7:{frequencies:[261.6255653006,288.85811466493,288.85811466493,288.85811466493,318.92511007349,352.12195684808,352.12195684808,388.77403176757,429.24143792307,429.24143792307,429.24143792307,473.92081401802,523.2511306012],description:"Tetragam (7-tET)"},tetragam8:{frequencies:[261.6255653006,285.30470202322,311.12698372208,311.12698372208,339.28638158975,339.28638158975,403.48177901006,403.48177901006,440,440,440,440,523.2511306012],description:"Tetragam (8-tET)"},tetragam9a:{frequencies:[261.6255653006,282.57118533961,305.19387818096,305.19387818096,329.62755691287,356.01738450312,415.30469757995,415.30469757995,448.55379686399,448.55379686399,448.55379686399,484.46508327871,523.2511306012],description:"Tetragam (9-tET) A"},tetragam9b:{frequencies:[261.6255653006,282.57118533961,282.57118533961,282.57118533961,305.19387818096,305.19387818096,384.52019141924,384.52019141924,415.30469757995,415.30469757995,415.30469757995,448.55379686399,523.2511306012],description:"Tetragam (9-tET) B"},tetraphonic_31:{frequencies:[261.6255653006,266.96486255163,272.52663052146,278.32506946872,284.37561445717,290.69507255622,297.30177875068,304.21577360535,311.45900631024,319.05556743976,327.03195662575,333.99008336247,341.25073734861,348.83408706747,356.76213450082,365.05892832642,373.75080757229,382.86668092771,392.4383479509,400.61414686654,409.13785211902,418.03215325205,427.32175665765,437.0336147635,447.19718719986,457.84473927605,467.58611670746,477.75103228805,488.36772189445,499.46698830115,511.08249965699,523.2511306012],description:"31-tone Tetraphonic Cycle, conjunctive form on 5/4, 6/5, 7/6 and 8/7"},tetratriad:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"4:5:6 Tetratriadic scale"},tetratriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"3:5:9 Tetratriadic scale"},tetratriad2:{frequencies:[261.6255653006,296.75121990114,305.22982618403,356.10146388137,373.75080757229,415.4517078616,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"3:5:7 Tetratriadic scale"},thailand:{frequencies:[261.6255653006,281.86483947605,307.02089761314,350.84574289301,397.92692612688,408.40584780369,474.03826620294,539.82938999168],description:"Observed ranat tuning from Thailand, Helmholtz/Ellis p. 518, nr.85"},thailand2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,356.77227917518,391.76907592069,435.19747628762,477.88722128969,525.37110555681],description:"Observed ranat t'hong tuning, Helmholtz/Ellis p. 518"},thailand3:{frequencies:[261.6255653006,293.32570896007,322.47117131255,354.92237405774,396.55020354877,437.46578647972,488.21056770985,538.58355905405],description:"Observed tak'hay tuning. Helmholtz, p. 518"},thailand4:{frequencies:[261.6255653006,281.88044777549,304.38587215019,332.5176539627,392.71966479735,416.35036198375,461.923848369,523.2511306012,563.76089555097,608.77174430039,665.59794246809,786.00196746963,831.57545378481,924.97296635309,1046.5022612024,1127.52179110194],description:"Khong mon (bronze percussion vessels) tuning, Gemeentemuseum Den Haag 1/1=465"},thirds:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,502.32108537715,523.2511306012],description:"Major and minor thirds parallellogram"},thomas:{frequencies:[261.6255653006,280.80530480292,294.66217084622,313.95044496966,332.05645032639,350.21604710412,374.62015588545,391.99543598175,420.73257541073,441.99197952365,468.79922683914,499.49209883845,523.2511306012],description:"Tuning of the Thomas/Philpott organ, Gereformeerde Kerk, St. Jansklooster"},tiby1:{frequencies:[261.6255653006,295.66718139806,337.56154978455,348.04364484358,393.32961502355,444.50800708553,507.49227916989,523.2511306012],description:"Tiby's 1st Byzantine Liturgical genus, 12 + 13 + 3 parts"},tiby2:{frequencies:[261.6255653006,295.66718139806,311.12698372208,348.04364484358,393.32961502355,444.50800708553,467.75037672729,523.2511306012],description:"Tiby's second Byzantine Liturgical genus, 12 + 5 + 11 parts"},tiby3:{frequencies:[261.6255653006,295.66718139806,324.07484847125,348.04364484358,393.32961502355,444.50800708553,487.21628271135,523.2511306012],description:"Tiby's third Byzantine Liturgical genus, 12 + 9 + 7 parts"},tiby4:{frequencies:[261.6255653006,286.76251801126,324.07484847125,348.04364484358,393.32961502355,431.12067692221,487.21628271135,523.2511306012],description:"Tiby's fourth Byzantine Liturgical genus, 9 + 12 + 7 parts"},todi_av:{frequencies:[261.6255653006,276.38325105256,310.05056613125,371.27895029721,392.44854854484,413.39000965417,495.88429116026,523.2511306012],description:"Average of 8 interpretations of raga Todi, in B. Bel, 1988."},tonos15_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,767.43499154843,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-15"},tonos17_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,738.70747849581,784.8766959018,897.00193817349,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-17"},tonos19_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,385.55346465352,406.97310157871,457.84473927605,523.2511306012,542.63080210495,563.50121757052,610.45965236807,665.95598440153,771.10692930703,813.94620315742,915.6894785521,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-19"},tonos21_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,398.6675280771,440.63253103259,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,797.33505615421,881.26506206518,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-21"},tonos23_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,409.50088481833,448.50096908674,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,819.00176963666,897.00193817349,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-23"},tonos25_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,753.48162806573,856.22912280196,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-25"},tonos27_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,387.59343007496,436.04260883433,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,775.18686014993,872.08521766867,996.66882019276,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-27"},tonos29_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,396.94913355953,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,793.89826711906,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-29"},tonos31_pis:{frequencies:[261.6255653006,273.51763645063,300.86940009569,334.29933343966,388.21858076863,429.81342870813,462.87600014722,501.44900015948,523.2511306012,547.03527290125,601.73880019138,668.59866687931,776.43716153726,859.62685741626,925.75200029443,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31"},tonos31_pis2:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,405.0976494977,448.50096908674,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,810.19529899541,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31B"},tonos33_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-33"},top31:{frequencies:[261.6255653006,267.49189720203,273.48976766293,279.62212612306,285.89198815637,292.30243695391,298.85662483994,305.55777482212,312.40918217641,319.41421606749,326.57632120555,333.89901954025,341.38591199258,349.04068022565,358.99452880887,367.04412845091,375.2742212459,383.6888543241,392.29216556304,401.08838562235,410.08184002413,419.27695128006,428.67824106611,438.29033244612,448.11795214515,458.16593287385,468.4392157049,478.94285250284,489.68200840824,500.66196437769,511.88811978069,523.36599505479],description:"Top temperament, 11-limit, {225/224, 385/384, 1331/1323}, Gene Ward Smith"},trab19:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,5,45,75,225}"},trab19a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,9,15,675}"},tranh:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Bac Dan Tranh scale, Vietnam"},tranh2:{frequencies:[261.6255653006,290.69507255622,307.79478270659,392.4383479509,436.04260883433,523.2511306012],description:"Dan Ca Dan Tranh Scale"},tranh3:{frequencies:[261.6255653006,317.68818643644,348.83408706747,392.4383479509,473.41768959156,476.53227965466,523.2511306012],description:"Sa Mac Dan Tranh scale"},"tri12-1":{frequencies:[261.6255653006,264.29521392612,275.21650375777,319.76457981184,323.02748368748,332.97799220076,336.37572681506,406.97310157871,411.12588832951,428.11456140098,432.48307733364,502.48719684718,523.2511306012],description:"12-tone Tritriadic of 7:9:11"},"tri12-2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,504.56359022259,523.2511306012],description:"12-tone Tritriadic of 6:7:9"},"tri19-1":{frequencies:[261.6255653006,266.96486255163,269.10058145205,305.22982618403,311.45900631024,313.95067836072,320.35783506196,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,427.32175665765,436.04260883433,439.53094970501,448.50096908674,508.71637697339,512.78610798918,523.2511306012],description:"3:5:7 Tritriadic 19-Tone Matrix"},"tri19-2":{frequencies:[261.6255653006,282.55561052465,290.69507255622,294.32876096318,313.95067836072,322.99452506247,327.03195662575,348.83408706747,353.19451315581,363.36884069528,376.74081403286,387.59343007496,392.4383479509,418.60090448096,423.83341578697,436.04260883433,465.11211608996,470.92601754108,484.4917875937,523.2511306012],description:"3:5:9 Tritriadic 19-Tone Matrix"},"tri19-3":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"4:5:6 Tritriadic 19-Tone Matrix"},"tri19-4":{frequencies:[261.6255653006,264.89588486686,290.69507255622,294.32876096318,322.99452506247,327.03195662575,331.11985608357,334.88072358477,363.36884069528,367.91095120397,372.08969287196,376.74081403286,408.78994578219,413.43299207996,418.60090448096,423.83341578697,465.11211608996,470.92601754108,516.79124009995,523.2511306012],description:"4:5:9 Tritriadic 19-Tone Matrix"},"tri19-5":{frequencies:[261.6255653006,266.96486255163,284.8811711051,290.69507255622,302.73815413355,316.53463456122,322.99452506247,329.64821227876,336.37572681506,366.27579142084,373.75080757229,406.97310157871,415.27867508032,423.83341578697,432.48307733364,452.19233508746,470.92601754108,480.53675259294,512.78610798918,523.2511306012],description:"5:7:9 Tritriadic 19-Tone Matrix"},"tri19-6":{frequencies:[261.6255653006,267.07609791103,294.32876096318,299.00064605783,305.22982618403,336.37572681506,341.71502406609,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,400.61414686654,406.97310157871,448.50096908674,457.84473927605,465.11211608996,512.57253609913,523.2511306012],description:"6:7:8 Tritriadic 19-Tone Matrix"},"tri19-7":{frequencies:[261.6255653006,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,316.53463456122,336.37572681506,348.83408706747,356.10146388137,384.42940207435,392.4383479509,406.97310157871,432.48307733364,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,523.2511306012],description:"6:7:9 Tritriadic 19-Tone Matrix"},"tri19-8":{frequencies:[261.6255653006,264.29521392612,272.43653907335,275.21650375777,316.53463456122,319.76457981184,323.02748368748,332.97799220076,336.37572681506,350.27555023717,390.82337532559,406.97310157871,411.12588832951,423.79017189188,428.11456140098,432.48307733364,497.4115685962,502.48719684718,517.96576564563,523.2511306012],description:"7:9:11 Tritriadic 19-Tone Matrix"},"tri19-9":{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,341.71502406609,366.27579142084,373.75080757229,400.61414686654,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"4:5:7 Tritriadic 19-Tone Matrix"},triang11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"11-limit triangular diamond lattice with 64/63 intervals removed"},triaphonic_12:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,367.19377586049,387.59343007496,410.39304360878,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Triaphonic Cycle, conjunctive form on 4/3, 5/4 and 6/5"},triaphonic_17:{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,390.69417751556,406.97310157871,422.62591317789,439.53094970501,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"17-tone Triaphonic Cycle, conjunctive form on 4/3, 7/6 and 9/7"},trichord7:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Trichordal undecatonic, 7-limit"},tricot:{frequencies:[261.6255653006,264.94025538413,268.70564228797,272.11003565477,275.55755973666,279.4738436282,283.01466417842,286.6003471482,290.673570175,294.35628843049,298.08566525814,302.32211998602,306.15242072385,310.03124984507,314.43747949204,318.42127516569,322.45554578164,327.03835025925,331.18179578139,335.37773516927,339.62683737367,344.45368576554,348.81777463097,353.23715677741,358.25743790514,362.79641682209,367.39290067029,372.61436622199,377.33523951767,382.11592657559,387.54663888312,392.45669803325,397.4289679423,403.0773124301,408.18413893183,413.35566924724,419.23036738005,424.541846554,429.92062250389,436.03074525334,441.55507841911,447.14940523431,453.50438708518,459.25010687752,465.06861996272,470.9608512551,477.65424916833,483.70593529179,489.8342966599,496.79592520903,503.09012862502,509.46407999504,516.70469117363,523.2511306012],description:"Tricot temperament, g=565.988015, 5-limit"},tritriad:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Tritriadic scale of the 10:12:15 triad, natural minor mode"},tritriad10:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,366.27579142084,392.4383479509,488.36772189445,523.2511306012],description:"Tritriadic scale of the 10:14:15 triad"},tritriad11:{frequencies:[261.6255653006,309.19384990071,356.76213450082,383.71749577421,421.62797713733,453.48431318771,486.49381977384,523.2511306012],description:"Tritriadic scale of the 11:13:15 triad"},tritriad13:{frequencies:[261.6255653006,294.32876096318,340.11323489078,348.83408706747,392.4383479509,453.48431318771,510.16985233617,523.2511306012],description:"Tritriadic scale of the 10:13:15 triad"},tritriad14:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Tritriadic scale of the 14:18:21 triad"},tritriad18:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,426.35277308246,479.64686971777,523.2511306012],description:"Tritriadic scale of the 18:22:27 triad"},tritriad22:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Tritriadic scale of the 22:27:33 triad"},tritriad26:{frequencies:[261.6255653006,294.32876096318,301.87565226992,348.83408706747,392.4383479509,402.50086969323,452.81347840488,523.2511306012],description:"Tritriadic scale of the 26:30:39 triad"},tritriad3:{frequencies:[261.6255653006,305.22982618403,356.10146388137,373.75080757229,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Tritriadic scale of the 3:5:7 triad. Possibly Mathews's 3.5.7a"},tritriad32:{frequencies:[261.6255653006,294.32876096318,322.00069575458,348.83408706747,392.4383479509,429.33426100611,483.00104363188,523.2511306012],description:"Tritriadic scale of the 26:32:39 triad"},tritriad3c:{frequencies:[261.6255653006,305.22982618403,366.27579142084,373.75080757229,427.32175665765,436.04260883433,512.78610798918,523.2511306012],description:"From 1/1 7/6 7/5, a variant of the 3.5.7 triad"},tritriad3d:{frequencies:[261.6255653006,305.22982618403,313.95067836072,363.36884069528,366.27579142084,436.04260883433,508.71637697339,523.2511306012],description:"From 1/1 7/6 5/3, a variant of the 3.5.7 triad"},tritriad5:{frequencies:[261.6255653006,290.69507255622,329.64821227876,366.27579142084,406.97310157871,423.83341578697,470.92601754108,523.2511306012],description:"Tritriadic scale of the 5:7:9 triad. Possibly Mathews's 5.7.9a."},tritriad68:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Tritriadic scale of the 6:7:8 triad"},tritriad68i:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,398.6675280771,448.50096908674,465.11211608996,523.2511306012],description:"Tritriadic scale of the subharmonic 6:7:8 triad"},tritriad69:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Tritriadic scale of the 6:7:9 triad, septimal natural minor"},tritriad7:{frequencies:[261.6255653006,264.29521392612,323.02748368748,332.97799220076,336.37572681506,411.12588832951,428.11456140098,523.2511306012],description:"Tritriadic scale of the 7:9:11 triad"},tritriad9:{frequencies:[261.6255653006,272.93037367779,319.76457981184,362.25078272391,377.90359432309,442.75095666255,461.88217083933,523.2511306012],description:"Tritriadic scale of the 9:11:13 triad"},tsjerepnin:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,470.92601754108,490.54793493862,523.2511306012],description:"Scale from Ivan Tsjerepnin's Santur Opera (1977) & suite from it Santur Live!"},tsuda13:{frequencies:[261.6255653006,281.75060878526,283.42769574232,322.00069575458,340.11323489078,362.25078272391,377.90359432309,402.50086969323,425.14154361347,442.75095666255,485.87604984397,518.26778650024,523.2511306012],description:"Mayumi Tsuda's Harmonic-13 scale. 1/1=440 Hz."},tuneable3:{frequencies:[36.70809598968,41.95210970249,42.82611198796,43.59086398774,44.04971518762,44.86545065405,45.8851199871,46.71939489596,47.1961234153,47.72052478658,48.94412798624,49.55592958607,50.47363198581,51.39133438555,52.00313598538,52.44013712811,53.02280531843,53.39359416681,55.06214398452,57.10148265061,57.68415084093,58.73295358349,59.65065598323,61.1801599828,62.40376318246,62.92816455374,64.23916798194,66.07457278142,66.74199270851,67.29817598108,68.17217826655,68.82767998065,70.35718398022,73.41619197936,79.53420797764,80.7578111773,82.59321597678,85.65222397592,87.18172797549,88.09943037523,89.14823311779,89.73090130811,90.10169015649,91.7702399742,94.39224683061,95.44104957317,96.35875197291,97.88825597248,100.94726397162,102.7826687711,104.00627197076,104.88027425623,105.53577597033,110.12428796904,114.20296530123,114.71279996775,115.36830168185,116.24230396732,117.46590716698,119.30131196646,120.61231539466,122.3603199656,123.88982396517,124.80752636491,125.85632910747,128.47833596388,132.14914556285,134.59635196216,137.6553599613,139.49076476078,140.71436796044,141.58837024591,146.83238395872,152.950399957,154.17400315666,156.00940795614,159.06841595528,161.51562235459,165.18643195356,168.85724155253,171.30444795184,174.36345595098,176.19886075046,183.5404799484,190.88209914634,192.71750394582,195.77651194496,201.89452794324,205.56533754221,208.01254394152,211.07155194066,220.24857593808,229.4255999355,232.48460793464,238.60262393292,244.7206399312,247.77964793034,256.95667192776,269.19270392432,275.3107199226,281.42873592088,293.66476791744],description:"Marc Sabat, 3 octaves of intervals tuneable by ear"},tuners1:{frequencies:[261.6255653006,276.50456653385,293.15590636358,311.0676370396,328.627540632,349.28088891463,369.11955599459,391.76814585061,414.75684959346,439.06365754828,466.60145532616,492.6062100846,523.2511306012],description:"The Tuner's Guide well temperament no. 1 (1840)"},tuners2:{frequencies:[261.6255653006,276.9861853325,293.55936848273,311.27971878774,329.48489606404,349.42029142443,369.90111701824,391.99869425741,415.03962525779,439.89939957166,466.4799232208,493.78769382322,523.2511306012],description:"The Tuner's Guide well temperament no. 2 (1840)"},tuners3:{frequencies:[261.6255653006,276.9180796764,293.64050032496,311.25753558078,329.38199580693,349.20116137147,369.59117881045,391.8877401954,415.37711930697,439.91014033466,466.33569310799,493.52238512763,523.2511306012],description:"The Tuner's Guide well temperament no. 3 (1840)"},turkish:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Turkish, 5-limit from Palmer on a Turkish music record, harmonic minor inverse"},turkish_24:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Ra'uf Yekta, 24-tone Pythagorean Turkish Theoretical Gamut, 1/1=D (perde yegah) at 294 Hz"},turkish_24a:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,344.52749339997,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,459.36999119996,465.11211608996,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:"Turkish gamut with schismatic simplifications"},turkish_41:{frequencies:[261.6255653006,266.80864394988,272.09440643071,275.67629620338,281.13773466533,286.70737164501,290.48162858661,294.30556868769,300.13607443832,306.08208692954,310.11139540064,316.25503135793,322.52037740267,326.76608188608,333.2396629384,339.84149442859,344.31521657963,348.8478314504,355.75887527351,362.80683626646,367.58287746967,374.8650823332,382.29155536296,387.32409620162,392.42288612931,400.19720009986,408.12552912594,413.49815209867,421.6899870258,430.04411333507,435.70527569249,441.44096240275,450.1863739015,459.10504388656,465.14876849982,474.36385666592,483.76150545705,490.12981126508,499.83980314828,509.74215733443,516.45247616827,523.2511306012],description:"Abd\xEF\xBF\xBDlkadir T\xEF\xBF\xBDre and M. Ekrem Karadeniz theoretical Turkish gamut"},turkish_41a:{frequencies:[261.6255653006,268.5590565112,272.09440643071,275.67629620338,279.3053384865,286.70737164501,290.48162858661,294.30556868769,298.17984938441,306.08208692954,310.11139540064,314.19374626607,322.52037740267,326.76608188608,335.42589979828,339.84149442859,344.31521657963,348.8478314504,353.4401143131,362.80683626646,367.58287746967,377.32440283229,382.29155536296,387.32409620162,392.42288612931,402.82271318249,408.12552912594,413.49815209867,424.45650702809,430.04411333507,435.70527569249,441.44096240275,453.1398459935,459.10504388656,465.14876849982,477.47594368525,483.76150545705,490.12981126508,503.11902634639,509.74215733443,516.45247616827,523.2511306012],description:"Karadeniz's theoretical Turkish gamut, quantized to subset of 53-tET"},turkish_aeu:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Arel-Ezgi-Uzdilek (AEU) 24 tone theoretical system"},turkish_bagl:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,311.64221749042,321.08592105074,331.11985608357,348.83408706747,369.35373924791,380.54627680087,392.4383479509,415.52295665389,428.11456140098,441.49314144476,465.11211608996,492.47165233054,507.3950357345,523.2511306012],description:'Ratios of the 17 frets on the neck of "Baglama" ("saz") according to Yal\xEF\xBF\xBD\xEF\xBF\xBDn Tura'},two29:{frequencies:[261.6255653006,265.43099677612,267.95417262175,271.85165581044,274.43586616969,278.42762776199,281.0743490329,285.16266958193,287.87341387594,292.06062910037,294.83694510625,299.12544722478,301.96892109338,306.36116019141,309.2734164419,313.77190187131,316.75460431924,321.36190613206,324.41675883995,329.13550925662,332.26425750751,337.09715242073,340.3015837153,345.25138423021,348.53332930799,353.60286331966,356.96419720496,362.15636101402,365.59900408717,370.91676405444,374.44268531179,379.88907958456,383.50028913155,389.07842928561,392.77699240278,398.49006531303,402.2780950448,408.12936467525,412.00902517967,418.00183444819,421.97534223334,428.1131149215,432.1827401118,438.46898282094,442.63705045414,449.07535460876,453.34424596425,459.9382898638,464.31044382305,471.06399474345,475.54190918343,482.45882552933,487.04505874954,494.12929225872,498.82646444278,506.0820624438,510.89285715645,518.32396488098,523.2511306012],description:"Two 29-tET scales 25 cents shifted, many near just intervals"},two29a:{frequencies:[261.6255653006,264.02813680074,267.95417262175,270.41486126945,274.43586616969,276.95607779319,281.0743490329,283.65552346679,287.87341387594,290.51702578379,294.83694510625,297.54450482308,301.96892109338,304.74197548856,309.2734164419,312.11354980287,316.75460431924,319.66343925668,324.41675883995,327.39595721478,332.26425750751,335.31552138031,340.3015837153,343.42665631876,348.53332930799,351.73399604284,356.96419720496,360.24228665998,365.59900408717,368.95638908389,374.44268531179,377.88128181162,383.50028913155,387.02206376789,392.77699240278,396.38395721814,402.2780950448,405.97231075214,412.00902517967,415.79260233969,421.97534223334,425.85044246025,432.1827401118,436.15157730833,442.63705045414,446.70189207635,453.34424596425,457.50741431695,464.31044382305,468.5743173866,475.54190918343,479.90892674463,487.04505874954,491.51771254425,498.82646444278,503.40730976502,510.89285715645,515.58451111167,523.2511306012],description:"Two 29-tET scales 15.826 cents shifted, 13-limit chords, Mystery temperament, Gene Ward Smith"},xenakis_chrom:{frequencies:[261.6255653006,274.52698453615,329.62755691287,349.22823143301,391.99543598175,411.32572372413,493.88330125613,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 5 + 19 + 6 parts"},xenakis_diat:{frequencies:[261.6255653006,293.66476791741,326.46944327063,349.22823143301,391.99543598175,440,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 12 + 11 + 7 parts"},xenakis_schrom:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 7 + 16 + 7 parts"},xenoga24:{frequencies:[261.6255653006,265.7783520514,279.38237857051,283.8170195002,294.32876096318,299.00064605783,310.07474405997,314.99656539426,331.11985608357,336.37572681506,348.83408706747,354.37113606854,372.50983809402,378.42269266694,392.4383479509,398.6675280771,419.07356785577,425.72552925031,441.49314144476,448.50096908674,465.11211608996,472.49484809138,496.67978412536,504.56359022259,523.2511306012],description:"M. Schulter, 3+7 ratios Xeno-Gothic adaptive tuning (keyboards 64:63 apart)"},xylophone2:{frequencies:[261.6255653006,295.19538981304,332.68808325276,388.83826257328,446.65787257783,506.59641128799,527.19506190947,579.57827742703,633.13077520476,751.1860077911,842.69088701475],description:"African Yaswa xylophones (idiophone; calbash resonators with membrane)"},xylophone3:{frequencies:[261.6255653006,292.47977325983,348.01999353916,392.4383479509,442.29334161825,523.2511306012],description:"African Banyoro xylophone (idiophone; loose log)"},xylophone4:{frequencies:[261.6255653006,281.70207497315,314.1971709147,349.63190883464,391.76907592069,436.9606979923,505.71930677521,568.9637969584,597.94115990992,660.7800775993,716.43551549302],description:"African Bapare xylophone (idiophone, loose-log)"},zalzal:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,465.11211608996,523.2511306012],description:"Tuning of popular flute by Al Farabi & Zalzal. First tetrachord is modern Rast"},zalzal2:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,387.59343007496,419.89288258121,465.11211608996,523.2511306012],description:"Zalzal's Scale, a medieval Islamic with Ditone Diatonic & 10/9 x 13/12 x 72/65"},zarlino:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Ptolemy's Intense Diatonic Systonon, also Zarlino's scale"},zarlino2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"16-note choice system of Zarlino, Sopplimenti musicali (1588)"},zartehijaz1:{frequencies:[261.6255653006,280.55696721076,336.07142343876,350.07440004945,375.4060213132,393.89732161404,446.43551156053,468.42549744394,502.32108537715,523.2511306012],description:"Scale from Zarlino temperament extraordinaire -- lower Hijaz tetrachord"},zesster_a:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Harmonic six-star, group A, from Fokker"},zesster_b:{frequencies:[261.6255653006,293.02063313667,299.00064605783,334.88072358477,366.27579142084,418.60090448096,457.84473927605,478.40103369253,523.2511306012],description:"Harmonic six-star, group B, from Fokker"},zesster_c:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,398.6675280771,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Harmonic six-star, group C on Eb, from Fokker"},zesster_mix:{frequencies:[261.6255653006,274.70684356563,279.06726965397,293.02063313667,299.00064605783,313.95067836072,334.88072358477,348.83408706747,358.80077526939,366.27579142084,392.4383479509,418.60090448096,457.84473927605,478.40103369253,488.36772189445,502.32108537715,523.2511306012],description:"Harmonic six-star, groups A, B and C mixed, from Fokker"},zest24:{frequencies:[261.6255653006,269.33468959023,272.52663052146,280.55696721076,292.24684137387,300.8582598368,308.87634556583,317.97777315513,326.45210604021,336.07142343876,350.07440004945,360.38977980792,364.66083404534,375.4060213132,391.04793957621,402.57065589001,410.30971075781,422.39999923493,436.81711699543,449.68847932918,465.03699205118,478.73988827571,487.94322738789,502.32108537715,523.2511306012],description:"Zarlino Extraordinaire Spectrum Temperament (two circles at ~50.28c apart)"},zir_bouzourk:{frequencies:[261.6255653006,281.75060878526,305.22982618403,313.95067836072,353.19451315581,392.4383479509,523.2511306012],description:"Zirafkend Bouzourk (IG #3, DF #9), from both Rouanet and Safi al-Din"},zwolle:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Henri Arnaut De Zwolle. Pythagorean on G flat."},zwolle2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.68386704488,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,467.04206359353,489.02683710225,523.2511306012],description:"Henri Arnaut De Zwolle's modified meantone tuning (c. 1440)"},yarman12:{frequencies:[261.6255653006,283.42769574232,294.32876096318,309.19384990071,332.97799220076,348.83408706747,377.90359432309,392.4383479509,411.12588832951,442.75095666255,465.11211608996,499.46698830115,523.2511306012],description:"Detempered Yarman 13-limit, [<1 1 -20 -6 -3 -1|, <0 1 38 15 11 8|]"},yarman12_80:{frequencies:[261.6255653006,282.84340331238,295.36595061166,319.3201344739,333.45764463229,348.2210758395,376.46181130035,393.12919962609,425.01198472693,443.82887286778,479.82340237272,501.06699929295,523.2511306012],description:"Ozan Yarman MOS, 80-et version"},yarman17:{frequencies:[261.6255653006,274.08392555301,283.42769574232,294.32876096318,309.19384990071,322.00069575458,332.97799220076,348.83408706747,362.25078272391,377.90359432309,392.4383479509,411.12588832951,425.14154361347,442.75095666255,465.11211608996,485.87604984397,499.46698830115,523.2511306012],description:"80-et commas 13-limit detempering of a chain of 16 fifths"},"yarman_ney-ahengs":{frequencies:[261.6255653006,275.39533189537,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Well Temperament for piano by Ozan Yarman from Ney Ahengs"},yasser_6:{frequencies:[261.6255653006,291.88463270656,325.64340264099,363.30663963964,405.32593044476,452.20508247496,523.2511306012],description:"Yasser Hexad, 6 of 19 as whole tone scale"},yasser_diat:{frequencies:[261.6255653006,281.42815779395,291.88463270656,313.97755176024,325.64340264099,350.29154279212,376.80531512858,390.80553229045,420.38583225541,436.00528786292,469.00678383895,486.43275040712,523.2511306012],description:"Yasser's Supra-Diatonic, the flat notes are V,W,X,Y,and Z"},yasser_ji:{frequencies:[261.6255653006,282.64904822654,294.32876096318,304.39128270551,327.03195662575,347.87575166344,359.73515228832,391.36022062136,425.14154361347,434.84468957929,457.84473927605,478.32915853722,523.2511306012],description:"Yasser's just scale, 2 Yasser hexads, 121/91 apart"},yekta:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rauf Yekta's 12-tone tuning suggested in 1922 Lavignac Music Encyclopedia"},"young-g":{frequencies:[261.6255653006,299.07507698093,319.76457981184,341.88537054616,390.82337532559,446.76650366117,477.67301428683,510.71739232152,583.82257301724,667.39198333921,713.56092257662,762.92356430953,872.13001648254,996.96833978235,1065.93668681199,1139.67601990796,1302.81150610354,1489.29848625885,1592.32474578757,1702.47910946196,1946.17475603251,2224.75468143463,2378.65811671778,2543.20970830682,2907.24890901465,3323.39919648924,3553.30434397593,3799.11599765247,4342.92768045015],description:"Gayle Young's Harmonium, see PNM 26(2): 204-212 (1988)"},"young-lm_guitar":{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"LaMonte Young, Tuning of For Guitar '58. 1/1 March '92, inv.of Mersenne lute 1"},"young-lm_piano":{frequencies:[261.6255653006,289.72987407313,294.32876096318,300.46061014991,343.38355445704,338.01818641865,386.30649876417,392.4383479509,400.61414686654,457.84473927605,450.69091522486,515.07533168556,523.2511306012],description:"LaMonte Young's Well-Tempered Piano"},"young-w10":{frequencies:[261.6255653006,277.18263097687,302.26980244078,320.24370022528,349.22823143301,369.99442271164,391.99543598175,427.47405410759,452.89298412314,493.88330125613,523.2511306012],description:"William Lyman Young 10 out of 24-tET (1961)"},"young-w14":{frequencies:[261.6255653006,277.18263097687,293.66476791741,302.26980244078,320.24370022528,339.28638158975,359.46139971304,369.99442271164,391.99543598175,415.30469757995,427.47405410759,452.89298412314,479.82340237272,508.3551866238,523.2511306012],description:"William Lyman Young 14 out of 24-tET (1961)"},"young-wt":{frequencies:[261.6255653006,285.40970760065,309.19384990071,348.83408706747,392.4383479509,428.11456140098,463.79077485106,523.2511306012],description:'William Lyman Young "exquisite 3/4 tone Hellenic Lyre" dorian'},young:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,391.5530240856,413.43299207996,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"Thomas Young well temperament (1807), also Luigi Malerbi nr.2 (1794)"},young2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.22823143301,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.65745674141,523.2511306012],description:"Thomas Young well temperament no.2 (1799)"},yugo_bagpipe:{frequencies:[261.6255653006,277.02257024271,294.00421879736,322.47117131255,341.84370465044,381.9375744369,404.41509766528,430.1988069325,452.63145841613,463.74664903953,478.99265177484,502.22604835608,523.2511306012],description:"Yugoslavian Bagpipe"},yves:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:`St Yves's scale II from Jocelyn Godwin, "Music and the Occult", 1995.`},saba_sup:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular version of maqam Sab"},sabagh:{frequencies:[261.6255653006,275.67629620338,279.3053384865,286.70737164501,294.30556868769,310.11139540064,314.19374626607,322.52037740267,326.76608188608,331.06767743197,348.8478314504,362.80683626646,367.58287746967,372.42178901277,392.42288612931,413.49815209867,418.94150105041,430.04411333507,441.44096240275,465.14876849982,471.27205084813,483.76150545705,490.12981126508,496.58195036371,523.2511306012],description:"Twfiq Al-Sabagh, Arabic master musical scale in 53-tET (1954)"},sabbagh:{frequencies:[261.6255653006,294.30556868769,321.46759848648,348.8478314504,392.42288612931,428.64035280622,465.14876849982,523.2511306012],description:"Tawfiq as-Sabbagh, a composer from Syria. 1/1=G"},safi_diat:{frequencies:[261.6255653006,276.16031892841,305.22982618403,348.83408706747,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:"Safi al-Din's Diatonic, also the strong form of Avicenna's 8/7 diatonic"},safi_diat2:{frequencies:[261.6255653006,283.79722337692,310.07474405997,348.83408706747,392.4383479509,425.69583506538,465.11211608996,523.2511306012],description:"Safi al-Din's 2nd Diatonic, a 3/4 tone diatonic like Ptolemy's Equable Diatonic"},safi_major:{frequencies:[261.6255653006,281.75060878526,322.00069575458,348.83408706747,375.66747838035,392.4383479509,523.2511306012],description:"Singular Major (DF #6), from Safi al-Din, strong 32/27 chromatic"},salinas_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:`Salinas' enharmonic tuning for his 19-tone instr. "instrumentum imperfectum"`},salinas_24:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:'Salinas enharmonic system "instrumentum perfectum". Subset of Mersenne'},salinas_enh:{frequencies:[261.6255653006,272.52663052146,279.06726965397,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Salinas's and Euler's enharmonic"},salunding:{frequencies:[261.6255653006,282.38958039978,310.76686573877,390.36201910543,419.43149305958,523.2511306012],description:"Gamelan slunding, Kengetan, South-Bali. 1/1=378 Hz"},sankey:{frequencies:[261.6255653006,274.88665260982,292.54735824399,309.58527581215,327.03195662575,348.83408706747,366.73895666255,391.24894371175,412.31687950427,437.13741259348,464.79252184829,489.99465727995,523.2511306012],description:"John Sankey's Scarlatti tuning, personal evaluation based on d'Alembert's"},santur1:{frequencies:[261.6255653006,282.02765077995,319.3201344739,347.21689301951,376.46192220133,427.47393558663,475.68393915562,504.55222794679,523.2511306012],description:"Persian santur tuning. 1/1=E"},santur2:{frequencies:[261.6255653006,281.2143451833,317.48098583281,345.21700307457,375.37611551499,423.78627283082,475.68393915562,498.18106573801,523.2511306012],description:"Persian santur tuning. 1/1=E"},sanza:{frequencies:[261.6255653006,293.15632631094,308.97787266236,346.21547002486,390.18821123181,462.40922843744,524.46149515038,595.18445928535,620.10113226249],description:"African N'Gundi Sanza (idiophone; set of lamellas, thumb-plucked)"},sanza2:{frequencies:[261.6255653006,390.63923480058,465.35666077712,523.2511306012,588.68812410589,663.45725712889,702.9084786129,783.08569314515],description:"African Baduma Sanza (idiophone, like mbira)"},sauveur:{frequencies:[261.6255653006,274.85950244128,292.7026939092,313.25286195357,328.80795208256,349.69755047152,367.27338607435,391.35133250294,417.15885134862,438.29716799286,468.84228427561,491.11646492505,523.2511306012],description:"Sauveur's tempered system of the harpsichord. Trait\xEF\xBF\xBD (1697)"},sauveur2:{frequencies:[261.6255653006,278.64199172491,293.04864983565,312.10886966906,328.2456799168,349.5951549002,372.33322418948,391.58401058733,417.05308314313,438.61577206336,467.14384425417,491.2966347616,523.2511306012],description:"Sauveur's Syste^me Chromatique des Musiciens (Memoires 1701), 12 out of 55."},sauveur_17:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,489.99465727995,496.67978412536,523.2511306012],description:"Sauveur's oriental system, aft. Kitab al-adwar (Bagdad 1294) by Safi al-Din"},sauveur_ji:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Aplication des sons harmoniques aux jeux d'orgues (1702) (PB 81/80 & 128/125)"},savas_bardiat:{frequencies:[261.6255653006,282.57123920205,317.17549194805,349.22823143301,391.99543598175,423.37848741825,475.22628419761,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 12 + 10 parts"},savas_barenh:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 16 + 6 parts"},savas_chrom:{frequencies:[261.6255653006,282.57123920205,323.3415889232,349.22823143301,391.99543598175,423.37848741825,484.46499093218,523.2511306012],description:"Savas's Chromatic, Byzantine Liturgical mode, 8 + 14 + 8 parts"},savas_diat:{frequencies:[261.6255653006,288.06460709314,311.12698372208,349.22823143301,391.99543598175,431.60923940535,466.16376151809,523.2511306012],description:"Savas's Diatonic, Byzantine Liturgical mode, 10 + 8 + 12 parts"},savas_palace:{frequencies:[261.6255653006,277.18263097687,336.03572815422,349.22823143301,391.99543598175,415.30469757995,503.48470957687,523.2511306012],description:"Savas's Byzantine Liturgical mode, 6 + 20 + 4 parts"},scalatron:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:"Scalatron (tm) 19-tone scale, see manual, 1974"},scheengaas:{frequencies:[261.6255653006,273.84069463911,292.6487650037,312.74862113192,327.53979283172,350.03605285217,366.8025131876,391.54284657258,418.19337019276,437.97145880542,467.51204131067,489.62261321254,523.2511306012],description:"Scheengaas' variation"},scheffer:{frequencies:[261.6255653006,274.56546814423,292.86978442859,309.86465789076,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"H.Th. Scheffer (1748) modified 1/5-comma temperament, Sweden"},schidlof:{frequencies:[261.6255653006,264.89588486686,274.70684356563,280.31310567921,294.32876096318,305.22982618403,315.35224388912,322.99452506247,327.03195662575,348.83408706747,353.19451315581,366.27579142084,373.75080757229,392.4383479509,406.97310157871,420.46965851882,436.04260883433,457.84473927605,467.18850946536,484.4917875937,490.54793493862,523.2511306012],description:"Schidlof"},schillinger:{frequencies:[261.6255653006,262.8879410321,275.85161280553,277.18263097687,278.52007147562,292.25460328695,293.66476791741,295.08173676673,309.63296633914,311.12698372208,312.62820992379,328.04470063332,329.62755691287,331.21805066987,347.55125362114,349.22823143301,350.91330087035,368.21772660991,369.99442271164,371.77969159194,390.11309203208,391.99543598175,393.88686247394,413.31042363438,415.30469757995,417.30859414412,437.88714035463,440,442.12305445465,463.92526470026,466.16376151809,468.41305936011,491.51169649079,493.88330125613,496.26634930797,520.73850287792,523.2511306012],description:"Joseph Schillinger's double equal temperament, p.664 Mathematical Basis..."},schis41:{frequencies:[261.6255653006,266.96486255163,272.52663052146,275.21650375777,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,321.08592105074,327.03195662575,329.64821227876,336.37572681506,343.38355445704,348.83408706747,355.95315006884,363.36884069528,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,415.27867508032,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,484.4917875937,490.54793493862,497.4115685962,504.56359022259,512.78610798918,523.2511306012],description:"41&53 <<1 -8 -14 23 -15 -25 33 -10 81 113||"},schisynch17:{frequencies:[261.6255653006,275.80289341725,290.74848220557,294.25152581512,310.19683462128,327.0062098829,330.94609980123,348.87986495302,367.78544978395,387.71551660339,392.38685458718,413.65005636851,436.06549769577,441.31937388998,465.23419873014,490.4449531872,496.35401261224,523.2511306012],description:"fifth satisfies f^9 + f^8 - 64 = 0"},schlick:{frequencies:[261.6255653006,275.62199471997,293.00227310437,311.47852302926,328.14198392915,349.6228209638,367.9112241576,391.5530240856,414.36778843034,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Reconstructed temp. A. Schlick, Spiegel d. Orgelmacher und Organisten (1511)"},schlick2:{frequencies:[261.6255653006,275.31092272332,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.9112241576,391.5530240856,415.30469757995,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Schlick's temperament reconstructed by F.J. Ratte (1991)"},schlick3:{frequencies:[261.6255653006,275.31092431358,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.70355049744,391.5530240856,415.07027187895,438.51190905657,466.95405539699,491.10256480205,523.2511306012],description:"Possible well-tempered interpretation of 1555 tuning, Margo Schulter"},schlick4:{frequencies:[261.6255653006,275.29566620843,293.00166043901,311.83758337792,328.14192706649,349.6222474261,367.6987228158,391.55300599201,415.35839309639,438.51185079886,466.95962791236,491.10245700671,523.2511306012],description:"Another reconstructed Schlick's modified meantone (Poletti?)"},scholz:{frequencies:[261.6255653006,271.31540105247,299.00064605783,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Simple Tune #1 Carter Scholz"},scholz_epi:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,6802.2646978156,7063.8902631162,7325.5158284168,8372.0180896192,8633.6436549198,9156.894785521,9418.5203508216,10203.3970467234,10465.022612024,10988.2737426252,11511.5248732264,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14127.7805262324,14389.406091533,14651.0316568336,16482.4106139378,16744.0361792384,17005.661744539],description:"Carter Scholz, Epimore"},schulter:{frequencies:[261.6255653006,277.184065539,293.66520219021,311.12905403417,329.62853176407,349.23107169224,369.99606406306,391.99572582396,415.30715405467,440.00097595231,466.1672081452,493.88512703986,523.25577305438],description:`Margo Schulter's 5-limit JI virt. ET, "scintilla of Artusi" tempered 22-08-98`},schulter_17:{frequencies:[261.6255653006,272.43653907335,282.13181390574,295.15344695336,308.77608605158,319.09647917983,332.97799220076,348.34640884647,361.82138782225,375.64984936577,392.98775403209,410.26687922759,423.79017189188,443.34998408798,463.81254988138,480.53289366295,500.16624277499,523.2511306012],description:"Neo-Gothic well-temperament (14:11, 9:7 hypermeantone fifths) TL 04-09-2000"},schulter_24:{frequencies:[261.6255653006,270.06509966514,283.8170195002,292.97240722602,295.75063903546,305.22982618403,307.79478270659,317.68818643644,334.29933343966,345.08318290545,348.06842720833,359.29644098925,377.90359432309,390.09403284964,393.30161007617,406.07983174306,426.86276443782,440.63253103259,444.76346101102,458.66231916761,462.87600014722,477.80748402293,502.32108537715,518.89070451286,523.2511306012],description:'Rational intonation (RI) scale with some "17-ish" features (24 notes)'},schulter_cart34:{frequencies:[261.6255653006,270.08718526646,272.51337835337,281.3271372098,283.85429714132,293.03484945212,295.66718139806,305.22982618403,307.97166902637,317.93223698752,320.78822215662,331.16330924834,334.13814720468,344.94500399825,348.04364484358,359.30023993517,362.52783176564,374.2528814026,377.61479489998,389.82779436071,393.32961502355,406.05087076101,409.69842558521,422.94908927295,426.7484383229,440.55054172958,444.50800708553,458.88449901367,463.0066556268,477.98143975034,482.27514684959,497.87312179111,502.34551296122,518.59261334435,523.2511306012],description:'"Carthesian tuning" with two 17-tET chains 55.106 cents apart'},schulter_diat7:{frequencies:[261.6255653006,295.1673044417,332.97799220076,348.83408706747,392.4383479509,442.75095666255,499.46698830115,523.2511306012],description:"Diatonic scale, symmetrical tetrachords based on 14/11 and 13/11 triads"},schulter_ham:{frequencies:[261.6255653006,272.52663052146,283.8170195002,295.75063903546,307.79478270659,320.70230585235,334.29933343966,348.01136516401,362.25078272391,377.90359432309,393.36609818246,409.50088481833,426.86276443782,444.76346101102,462.87600014722,482.33849075995,502.32108537715,523.2511306012],description:'New rational tuning of "Hammond organ type", TL 01-03-2002'},schulter_jot17a:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.1673044417,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.75095666255,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"Just octachord tuning -- 4:3-9:8-4:3 division, 17 steps (7 + 3 + 7), Bb-Bb"},schulter_jot17bb:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.15228855401,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.72843283101,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:'"Just Octachord Tuning" (Bb-Eb, F-Bb) -- 896:891 divided into 1792:1787:1782'},schulter_jwt17:{frequencies:[261.6255653006,272.43653907335,282.34838235411,295.1673044417,308.34441624714,319.76457981184,332.97799220076,347.8430811383,362.25078272391,376.08675011961,393.55640592227,409.81906732402,425.14154361347,443.97065626768,462.87600014722,481.6288815761,500.8899711738,523.2511306012],description:'"Just well-tuned 17" circulating system'},"schulter_lin76-34":{frequencies:[261.6255653006,270.6250663876,281.88470155261,291.58108453077,295.07956188513,305.22982618403,308.89206602106,319.51745915009,332.81131277165,344.25948974019,348.39001840879,360.3740779397,375.36781334896,388.27986588625,392.93856423817,406.45502016129,423.36600317146,437.92911415628,443.18352164838,458.42832346067,463.9286840578,479.88708893184,499.85328649772,517.04744024951,523.2511306012],description:"Two 12-note chains, ~704.160 cents, 34 4ths apart (32 4ths = 7:6), TL 29-11-02"},schulter_pel:{frequencies:[261.6255653006,271.31540105247,305.22982618403,392.4383479509,406.97310157871,523.2511306012],description:"Just pelog-style Phrygian pentatonic"},schulter_pepr:{frequencies:[261.6255653006,270.64528702739,281.81099471089,291.52662303231,295.05751399041,305.22982618403,308.92668738628,319.57714790608,332.76158224462,344.23376719628,348.40303271111,360.41446953256,375.28368107222,388.22184469544,392.9238840789,406.47020586181,423.23948674937,437.83095983374,443.13385158124,458.41119660824,463.96335069158,479.95880706014,499.75992392917,516.98949183803,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},schulter_qcm62a:{frequencies:[261.6255653006,262.43934012943,267.90457886781,268.73788454005,273.37431312998,274.22463192287,279.93529690293,280.80602334765,285.65065877038,286.53916259713,292.50627485027,293.41610276971,299.52642572255,300.45808951291,305.64177427204,306.59245933664,312.977175335,313.95067836072,320.36052345918,320.48862783822,327.03195662575,328.04917632434,334.88072358477,335.92235492515,341.71789064962,342.78078913836,349.91912034749,351.00752840096,358.31717956585,359.43170941363,365.63284274659,366.77012764335,374.40803131735,375.5726110527,382.05221698715,383.2405741708,391.22147055517,392.4383479509,400.61078621746,401.85686830172,408.78994578219,410.06146948999,418.60090448096,419.90294514449,427.14736482575,428.47598794138,437.39890198442,438.75941205608,447.89647345742,449.28963835923,457.04105241293,458.46266117889,468.01003810189,469.46576276783,479.24227945773,480.73294151703,489.02683710225,490.54793493862,500.76348165392,502.32108537715,510.98743222773,512.57683571821,523.2511306012],description:"1/4-comma meantone, two 31-notes at 1/4-comma (Vicentino-like system)"},schulter_qcmlji24:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,292.50627485027,293.41610276971,306.59245933664,312.977175335,327.03195662575,328.04917632434,349.91912034749,351.00752840096,365.63284274659,366.77012764335,391.22147055517,392.4383479509,408.78994578219,410.06146948999,437.39890198442,438.75941205608,458.46266117889,468.01003810189,489.02683710225,490.54793493862,523.2511306012],description:"24-note adaptive JI (Eb-G#/F'-A#') for Lasso's Prologue to _Prophetiae_"},schulter_qcmqd8_4:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28772967674,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.22091428214,437.39890198442,465.24335632603,489.02683710225,523.2511306012],description:"F-C# in 1/4-comma meantone, other 5ths ~4.888 cents wide or (2048/2025)^(1/4)"},schulter_sq:{frequencies:[261.6255653006,271.31540105247,279.38237857051,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,419.07356785577,434.59481110969,441.49314144476,457.84473927605,465.11211608996,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:'"Sesquisexta" tuning, two 12-tone Pyth. manuals a 7/6 apart. TL 16-5-2001'},schulter_tedorian:{frequencies:[261.6255653006,295.99553712036,309.28772789022,347.85054122562,393.54796334264,442.61656607198,462.49302735707,523.2511306012],description:"Eb Dorian in temperament extraordinaire -- neo-medieval style"},schulter_zarte84:{frequencies:[261.6255653006,272.52663052146,292.24684137387,308.87634556583,326.45210604021,350.07440004945,364.66083404534,391.04793957621,410.30971075781,436.81711699543,465.03699205118,487.94322738789,523.2511306012],description:"Temperament extraordinaire, Zarlino's 2/7-comma meantone (F-C#)"},schulter_zarte84n:{frequencies:[261.6255653006,272.46997760396,292.1447183254,308.81896225817,326.44489157977,350.01709816983,364.52535053201,391.11195868293,410.09013064752,436.73596474349,465.11312402839,488.01232708701,523.2511306012],description:"Zarlino temperament extraordinaire, 1024-tET mapping"},scotbag:{frequencies:[261.6255653006,290.69507255622,327.03195662575,356.76213450082,387.59343007496,436.04260883433,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning"},scotbag2:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Scottish bagpipe tuning 2"},scotbag3:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning 3"},scotbag4:{frequencies:[261.6255653006,293.15632631094,318.58319997217,348.2210758395,392.67530119805,428.21545238314,468.59347232539,523.2511306012],description:"Scottish Higland Bagpipe by Macdonald, Edinburgh. Helmholtz/Ellis p. 515, nr.52"},scottd1:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,349.22823143301,367.9112241576,391.5530240856,413.90012676351,437.52264545758,465.63764214343,490.54829628849,523.2511306012],description:"Dale Scott's temperament 1, TL 9-6-1999"},scottd2:{frequencies:[261.6255653006,276.1828093671,292.93610587951,310.70566022736,327.9937953665,349.3071136959,368.24374600687,391.64146650178,414.27421384356,438.21489534465,466.05849010807,491.32444638706,523.2511306012],description:"Dale Scott's temperament 2, TL 9-6-1999"},scottd3:{frequencies:[261.6255653006,276.40121172404,293.16775656083,310.95136287868,328.51274831708,349.22813057195,368.53494914961,391.77416758435,414.60181737882,438.75957425603,466.42704408487,491.93513777943,523.2511306012],description:"Dale Scott's temperament 3, TL 9-6-1999"},scottd4:{frequencies:[261.6255653006,276.60439543337,293.30494246724,310.98285414553,328.78580734933,349.37474066871,369.05201453919,391.83105388699,414.77686160481,439.10664961187,466.16991430388,492.5350487994,523.2511306012],description:"Dale Scott's temperament 4, TL 9-6-1999"},scottj:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509],description:`Jeff Scott's "seven and five" tuning, fifth-repeating. TL 20-04-99`},scottj2:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,313.95067836072,348.83408706747,366.27579142084,406.97310157871,418.60090448096,428.11456140098,436.04260883433,485.87604984397,523.2511306012,566.85539148463,581.39014511244,598.00129211566,610.45965236807,680.22646978156,719.47030457665,784.8766959018],description:`Jeff Scott's "just tritone/13" tuning. TL 17-03-2001`},secor12_1:{frequencies:[261.6255653006,275.03488264166,292.74290192225,310.07362690431,327.56128791316,349.21167447253,366.91716522699,391.37968062521,412.76363757129,437.92977184699,465.61556619611,490.01645577464,523.2511306012],description:"George Secor's 12-tone temperament ordinaire #1, proportional beating"},secor12_2:{frequencies:[261.6255653006,275.62199471997,292.79557634972,310.07474405997,327.35540669465,348.83408706747,367.49599295996,391.60840570078,413.43299207996,437.83150862942,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's closed 12-tone well-temperament #2, with 7 just fifths"},secor12_3:{frequencies:[261.6255653006,274.49585366342,292.50627485027,309.76836826904,327.03195662575,349.57337698802,365.99447173417,391.22147055517,411.74378028931,437.39890198442,466.09783352473,489.02683710225,523.2511306012],description:"George Secor's closed 12-tone temperament #3 with 5 meantone, 3 just, and 2 wide fifths"},secor17htt1:{frequencies:[261.6255653006,266.21235100401,283.6936382117,294.88137067808,304.94368688875,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,435.63385416574,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #1 on C (5/4 & 7/4 exact)"},secor17htt2:{frequencies:[261.6255653006,266.21235100401,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #2 on Eo (5/4 & 7/4 exact)"},secor17htt3:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #3 on G (5/4 & 7/4 exact)"},secor17htt4:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,332.36439517321,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,420.07165483694,442.73709545768,450.49910517366,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #4 on Bo (5/4 & 7/4 exact)"},secor17wt:{frequencies:[261.6255653006,271.90848849519,284.45827635845,296.12458543709,307.25838681362,320.91221742866,335.17278980765,347.77473997341,362.0378075073,378.74746489181,393.63374363584,408.43373030454,427.2847686483,445.53990619223,462.29147990415,482.0422296857,504.29062567056,523.2511306012],description:"George Secor's well temperament with 5 pure 11/7 and 3 near just 11/6"},secor19wt:{frequencies:[261.6255653006,272.32755795875,282.27948808054,292.18583194851,304.13791554835,314.37102040472,326.31582004031,339.6640167515,350.11094753355,364.43250202589,378.27942889874,391.0071187494,407.00156221801,421.24111755476,436.68033801788,454.54308187078,469.17957429271,487.6886112017,506.92782577841,523.2511306012],description:"George Secor's 19-tone well temperament with ten 5/17-comma fifths"},secor19wt1:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.3856167727,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.33223555387,436.68095599763,454.54522431957,469.16941157468,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.1)"},secor19wt2:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.27577204952,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.20165315727,436.68095599763,454.54522431957,469.03541436973,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.2)"},secor1_4tx:{frequencies:[261.6255653006,274.52656755164,292.65557420835,309.65910769439,327.20096538886,349.14957009195,366.50113643833,391.42429537222,412.04336447213,437.62002395673,465.5327601226,489.58458498887,523.2511306012],description:"George Secor's rational 1/4-comma temperament extraordinaire"},secor1_5tx:{frequencies:[261.6255653006,275.23833828784,292.86443876933,310.12174699459,327.84546895566,349.26796031009,366.98445105045,391.462133155,412.85750743176,438.21197504744,465.69061374678,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma temperament extraordinaire (ratios supplied by G. W. Smith)"},secor1_5wt:{frequencies:[261.6255653006,275.62199471997,292.86443876933,310.07474405997,327.84546895566,348.83408706747,367.44664657419,391.462133155,413.43299207996,438.21197504744,465.11211608996,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma well-temperament (ratios supplied by G. W. Smith)"},secor1_7wt:{frequencies:[261.6255653006,276.40791719395,293.28186156416,310.6264877857,328.77715667764,349.45479875891,368.54388959194,391.74026793015,414.61187579093,439.14616729155,465.93973167855,492.29203182992,523.2511306012],description:"George Secor's 1/7-comma well-temperament (ratios supplied by G. W. Smith)"},secor22_19p3:{frequencies:[261.6255653006,266.86058412305,272.32845615788,282.28026746552,292.18610873661,304.13920677667,314.37137994881,326.31643450984,339.6657766488,350.11078170334,357.11635499175,364.43353349925,378.28077924825,391.00730395019,407.00309738029,421.28573964817,436.68095599763,454.54522431957,469.17973147781,477.89781576412,487.689760539,506.93004530576,523.2511306012],description:"George Secor's 19+3 well temperament with ten ~5/17-comma (equal-beating) fifths and 3 pure 9:11. TL 28-6-2002,26-10-2006. Aux=1,10,19"},secor22_ji29:{frequencies:[261.6255653006,272.52663052146,283.42769574232,286.15296204753,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.65828815182,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,414.24047839262,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,501.44900015948,523.2511306012],description:"George Secor's 22-tone just intonation (29-limit otonality on 4/3)"},secor29htt:{frequencies:[261.6255653006,270.55308473255,276.71069203503,283.6936382117,290.1503157249,294.88137067808,304.94368688875,310.54087273367,319.75456524059,327.03195662575,332.36439517321,343.70575469589,348.50707605838,360.3992766165,368.60172104124,377.19539564757,387.3949548402,392.80658053205,406.21042497925,415.4555026381,425.93975025566,435.63385416574,442.73709545768,457.84473927605,464.24049278842,480.08189580921,491.0082387498,499.01438878341,516.04239079678,523.2511306012],description:"George Secor's 29-tone 13-limit high-tolerance temperament (5/4 & 7/4 exact)"},secor2_11wt:{frequencies:[261.6255653006,275.91396717201,292.9984614786,310.40321306851,328.14053952957,349.20361470207,367.88528956268,391.55148162785,413.87095075801,438.50612639837,465.60481960276,491.10222639053,523.2511306012],description:"George Secor's rational 2/11-comma well-temperament"},secor41htt:{frequencies:[261.6255653006,266.21235100401,270.55308473255,276.71069203503,279.78524030783,283.6936382117,290.1503157249,294.88137067808,300.05119287674,304.94368688875,310.54087273367,315.34936221801,319.75456524059,327.03195662575,332.36439517321,338.19136297459,343.70575469589,348.50707605838,354.61705516636,360.3992766165,368.60172104124,372.69727792826,377.90358994896,387.3949548402,392.80658053205,399.69321489333,406.21042497925,415.4555026381,420.07165483694,425.93975025566,435.63385416574,442.73709545768,450.49910517366,457.84473927605,464.24049278842,473.46789104304,480.08189580921,491.0082387498,499.01438878341,507.7630447553,516.04239079678,523.2511306012],description:"George Secor's 13-limit high-tolerance temperament superset (5/4 & 7/4 exact)"},secor5_23tx:{frequencies:[261.6255653006,275.02417915696,292.7420830065,310.0721322444,327.56084927797,349.21018850905,366.91927748105,391.38056264645,412.75664067387,437.92311604224,465.61358467873,490.0190422864,523.2511306012],description:"George Secor's rational 5/23-comma temperament extraordinaire"},secor5_23wt:{frequencies:[261.6255653006,275.62199471997,292.75872440224,310.07474405997,327.56278518065,348.83408706747,367.49599295996,391.3766908411,413.43299207996,437.81158306864,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's rational 5/23-comma proportional-beating well-temperament"},secor7p:{frequencies:[261.6255653006,281.10327891957,302.03108525935,356.94582815655,383.52002471837,412.07263653985,442.75095666255,523.2511306012],description:"George Secor's pelog-like MOS with near just 11:13:15:19 tetrads (1979)"},secor_vrwt:{frequencies:[261.6255653006,276.32932769153,293.15777167588,310.55777256823,328.11844153148,349.04269216937,368.62018440632,392.00375398861,414.25255044712,438.65017260809,465.6191423793,491.6947801169,523.2511306012],description:"George Secor's Victorian rational well-temperament (based on Ellis #2)"},"secor_wt1-7":{frequencies:[261.6255653006,276.2204353545,293.2843722634,310.74798946314,328.77415062671,349.45463702831,368.55847674989,391.74146894101,414.33065282463,439.14535139523,466.13275379077,492.28548658217,523.2511306012],description:"George Secor's 1/7-comma well-temperament"},secor_wt10:{frequencies:[261.6255653006,276.4188590209,293.2843722634,310.62634254146,328.77415062671,349.45463500978,368.55847887877,391.7414712038,414.6282883241,439.14535393183,465.93951357928,492.28548942572,523.2511306012],description:"George Secor's 12-tone well-temperament, proportional beating"},"secor_wtpb-24a":{frequencies:[261.6255653006,275.62199471997,292.84836938997,310.07474405997,327.30111872997,348.83408706747,367.49599295996,391.90002374246,413.43299207996,437.54991661796,465.11211608996,490.95167809495,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24a)"},"secor_wtpb-24b":{frequencies:[261.6255653006,275.62199471997,292.56126314547,310.07474405997,327.51644841334,348.83408706747,367.49599295996,391.46936437571,413.43299207996,437.76524630133,465.11211608996,490.37746560595,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24b)"},segah:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Arabic SEGAH (Dudon) Two 4 + 3 + 3 tetrachords"},segah2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,349.22823143301,391.99543598175,425.01198472693,466.16376151809,523.2511306012],description:"Iranian mode Segah from C"},segah_rat:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Rationalized Arabic Seg\xEF\xBF\xBDh\r"},seidel974:{frequencies:[261.6255653006,262.64754016506,266.73543962288,267.75741448733,268.77938935179,273.88926367407,274.91123853852,276.95518826743,277.97716313189,280.0211128608,283.08703745416,284.10901231862,285.13098718308,287.17493691199,289.2188866409,290.24086150535,294.32876096318,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,486.4600354808,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,515.07533168556,519.16323114338,523.2511306012],description:"Dave Seidel, Base 9:7:4 Symmetry, scale for Passacaglia and Fugue State (2005)"},seikilos:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,441.49314144476,457.84473927605,504.56359022259,523.2511306012],description:"Seikilos Tuning"},sekati1:{frequencies:[261.6255653006,285.2147362526,318.99014578736,340.97107458785,383.86043226246,424.60539155549,468.56721805116,523.2511306012],description:"Gamelan sekati from Sumenep, East-Madura. 1/1=244 Hz."},sekati2:{frequencies:[261.6255653006,288.87830434024,317.34219433319,357.31261688157,393.64955765984,420.29657220667,469.35141988267,523.2511306012],description:"Gamelan Kyahi Sepuh from kraton Solo. 1/1=216 Hz."},sekati3:{frequencies:[261.6255653006,291.90272733088,308.20569577938,369.53649673407,403.69531865382,425.43272843735,475.11832680028,523.2511306012],description:"Gamelan Kyahi Henem from kraton Solo. 1/1=168.5 Hz."},sekati4:{frequencies:[261.6255653006,271.36353278789,288.89182053123,342.12578909252,379.12979967788,410.29128883625,439.50493264224,523.2511306012],description:"Gamelan Kyahi Guntur madu from kraton Jogya. 1/1=201.5 Hz."},sekati5:{frequencies:[261.6255653006,274.79663866182,311.31645994273,355.61927540077,375.97459751383,397.52718524897,433.44837981883,523.2511306012],description:"Gamelan Kyahi Naga Ilaga from kraton Jogya. 1/1=218.5 Hz."},sekati6:{frequencies:[261.6255653006,284.57524936299,310.80330758934,358.01400474517,390.79902205709,427.51850178351,468.18764285778,523.2511306012],description:"Gamelan Kyahi Munggang from Paku Alaman, Jogya. 1/1=199.5 Hz."},sekati7:{frequencies:[261.6255653006,286.67481979642,318.21831168293,371.10013445627,390.58282835584,422.12643845206,463.87524473877,523.2511306012],description:"Gamelan of Sultan Anom from Cheribon. 1/1=282 Hz."},sekati8:{frequencies:[261.6255653006,287.04067548259,315.94410704802,350.82750428678,381.72407804086,425.57749367468,447.5043967797,523.2511306012],description:"The old Sultans-gamelan Kyahi Suka rame from Banten. 1/1=262.5 Hz."},sekati9:{frequencies:[261.6255653006,280.44107893528,310.90439774384,346.74342440827,376.31071188751,412.14996063869,455.1567650372,523.2511306012],description:"Gamelan Sekati from Katjerbonan, Cheribon. 1/1=292 Hz."},selisir:{frequencies:[261.6255653006,278.78833362316,320.24370022528,380.8360868427,417.71053321823,524.76452349887],description:"Gamelan semara pagulingan, Bali. Pagan Kelod"},selisir2:{frequencies:[261.6255653006,279.59466973861,299.66214729245,376.46181130035,408.17001145418,520.23742585195],description:"Gamelan semara pagulingan, Bali. Kamasan"},selisir3:{frequencies:[261.6255653006,284.98499077387,305.5412851438,378.42269266694,406.45400323486,523.2511306012],description:"Gamelan gong, Pliatan, Bali. 1/1=280 Hz, McPhee, 1966"},selisir4:{frequencies:[261.6255653006,277.23130136276,295.59098907682,376.373620257,399.32323124828,523.2511306012],description:"Gamelan gong, Apuan, Bali. 1/1=285 Hz. McPhee, 1966"},selisir5:{frequencies:[261.6255653006,275.89605068063,309.19384990071,383.40037296022,406.23315014465,523.2511306012],description:"Gamelan gong, Sayan, Bali. 1/1=275 Hz. McPhee, 1966"},selisir6:{frequencies:[261.6255653006,282.63199755101,312.23197007902,396.25769882774,415.35445602102,523.2511306012],description:"Gamelan gong, Gianyar, Bali. 1/1=274 Hz. McPhee, 1966"},semipor1:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,353.19451315581,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"First 16/15&250/243 = 648/625&250/243 scale"},semisixths:{frequencies:[261.6255653006,264.19830736984,270.23055453212,272.88791531122,275.57140613391,281.86332858923,284.63508234504,291.13394747727,293.99686553194,300.70948316519,303.66656221886,306.65272199551,313.65430163898,316.7386758187,323.97054074552,327.15636145846,330.37351240232,337.91669168384,341.23965429995,349.03093233441,352.46319080675,360.51072564419,364.05587272954,367.63587953306,376.02984347246,379.72760059524,388.39764380609,392.21702191873,396.07395857323,405.11722624758,409.10101938242,418.44172684717,422.55654641528,426.71183224275,436.45463212963,440.74658728358,450.80983509489,455.24295209046,465.63718490681,470.21611194415,474.84006394159,485.68174342829,490.45777940536,501.656046885,506.58917188228,511.57080469686,523.2511306012],description:"Semisixths temperament, 13-limit, g=443.0"},"scalamakesrc2\\semisixths_8":{frequencies:[261.6255653006,282.20554108354,304.40437778605,337.94858305883,364.53227585368,393.20709362444,436.53702313055,470.87587163898,522.76460573117],description:"8-note MOS of Semisixths [7, 9, 13, -2, 1, 5] temperament, TOP tuning"},semisuper:{frequencies:[261.6255653006,267.78942821112,272.60119889127,277.49943141001,284.03728045772,289.141002119,295.95312328758,301.27095467792,308.36885759663,313.90977919898,321.30545111289,327.07882560827,334.78475653951,340.80033382945,348.82954357113,355.09748450744,363.46353108469,369.99442271164,378.7114412363,385.5163125912,392.44345945086,401.68937424288,408.90712663484,418.54092077997,426.06147005461,436.09942062666,443.93546710474,454.39452662825,462.55931114028,473.45714317395,481.96445416288,493.31947147471,502.18367855499,514.01505508798,523.2511306012],description:"Semisuper temperament, g=71.146064, p=600, 5-limit"},semithirds:{frequencies:[13.75,13.81661017188,13.90316796691,13.99026794524,14.07791366516,14.14611237417,14.23473442257,14.3239115844,14.41364750281,14.48347263281,14.57420816344,14.665512046,14.73655738771,14.82887834882,14.92177776458,15.01525908647,15.08799873642,15.18252139242,15.27763629821,15.37334698758,15.4478213521,15.54459820959,15.64198144101,15.73997475533,15.81622511342,15.91530993122,16.01501558389,16.11534586889,16.19341466585,16.29486248479,16.39694594444,16.47637891809,16.57959953527,16.68346670883,16.78798468204,16.86931199442,16.97499424439,17.08133847,17.18834901569,17.27161584349,17.37981843193,17.48869878298,17.59826134469,17.68351394199,17.7942969746,17.90577393328,18.01794937217,18.10523509614,18.21866011204,18.33279560295,18.42160666689,18.53701356879,18.6531435747,18.77000099922,18.86093005309,18.97908920954,19.09798871479,19.21763298632,19.3107305405,19.43170758802,19.55344264036,19.67594033402,19.77125798984,19.89512013023,20.01975835255,20.14517740386,20.24276822054,20.36958425827,20.49719488615,20.62560496443,20.72552315291,20.85536353332,20.98601745346,21.08768161561,21.21979095359,21.352727802,21.48649759166,21.59058626784,21.72584618454,21.86195334633,21.99891331359,22.10548432428,22.24396995552,22.38332303719,22.52354926226,22.63266180681,22.7744500803,22.91712649141,23.06069686887,23.17241155847,23.3175812365,23.46366023269,23.57732716458,23.72503340608,23.87366512928,24.02322785632,24.1396055475,24.29083432682,24.44301065897,24.59614033986,24.71529329517,24.87012861873,25.02593409262,25.18271565096,25.30471019771,25.46323807533,25.62275923969,25.78327976642,25.90818367164,26.07049216435,26.23381763196,26.36090411207,26.52604894185,26.69222821075,26.85944870765,26.98956598001,27.15864922771,27.32879158412,27.5],description:"Semithirds temperament, g=193.199615, 5-limit"},sensisynch19:{frequencies:[261.6255653006,272.4389540986,281.73678149918,293.38139793239,303.39395317428,313.74821628003,326.71591476706,337.86611241253,351.83064080634,363.83795665907,376.25506171692,391.80626469239,405.17787315281,421.92450060765,436.32398762558,454.35793210906,469.86431365505,485.89989602801,505.98288939536,523.2511306012],description:"Sensi[19] in synch (brat=-1) tuning, generator ~162/125 satisfies g^9-g^7-4=0"},serre_enh:{frequencies:[261.6255653006,265.7783520514,279.06726965397,348.83408706747,392.4383479509,398.6675280771,418.60090448096,523.2511306012],description:"Dorian mode of the Serre's Enharmonic"},"sev-elev":{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,336.37572681506,359.73515228832,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Seven-Eleven Blues" of Pitch Palette'},sha:{frequencies:[261.6255653006,266.96486255163,280.31310567921,284.82183961519,290.63452941521,294.32876096318,300.33547037059,305.16625703708,320.42456924675,326.96384715385,343.31203882349,348.83408706747,355.95315006884,373.75080757229,392.4383479509,400.44729382745,406.8883429195,420.46965851882,427.23275920923,435.9517939049,457.74938532681,480.63685362987,490.44577048562,498.33441009638,523.2511306012],description:"Three chains of sqrt(3/2) separated by 10/7"},shahin:{frequencies:[261.6255653006,277.01530443593,282.55561052465,294.32876096318,310.50067090621,317.47821407264,328.55303549378,348.83408706747,357.66532977804,371.78369805875,376.74081403286,392.4383479509,415.52295665389,428.11456140098,441.49314144476,463.20591889287,478.90781444856,495.71159741166,523.2511306012],description:"Mohajeri Shahin Iranian style scale, TL 9-4-2006"},shahin_wt:{frequencies:[261.6255653006,276.93928561067,294.25491037444,311.47852302926,329.62755691287,348.92163548373,370.73795561568,392.4383479509,415.30469757995,439.61371330969,467.10055427519,494.44133512215,523.2511306012],description:"Mohajeri Shahin, well temperament, TL 28-12-2006"},shalfun:{frequencies:[261.6255653006,269.43930514995,277.46904793785,285.74220762407,294.32876096318,302.80736724606,311.45900631024,320.30554027987,329.50323085718,338.98103822311,348.83408706747,359.12912189513,369.78878487717,380.87868001252,392.4383479509,404.24222079821,416.2697936366,428.68354137408,441.49314144476,454.4477424016,467.68960547122,481.19471271032,494.94053216156,508.90014647073,523.2511306012],description:"d'Erlanger vol.5, p.40. After Alexandre ^Salfun (Chalfoun)"},"sharm1c-conm":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Subharm1C-ConMixolydian"},"sharm1c-conp":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharm1C-ConPhryg"},"sharm1c-dor":{frequencies:[261.6255653006,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,479.64686971777,547.03527290125,523.2511306012],description:"Subharm1C-Dorian"},"sharm1c-lyd":{frequencies:[261.6255653006,309.19384990071,323.91736656265,340.11323489078,382.37582620857,377.90359432309,485.87604984397,503.87145909745,523.2511306012],description:"Subharm1C-Lydian"},"sharm1c-mix":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,366.27579142084,457.84473927605,488.36772189445,523.2511306012],description:"Subharm1C-Mixolydian"},"sharm1c-phr":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,392.4383479509,483.00104363188,502.32108537715,523.2511306012],description:"Subharm1C-Phrygian"},"sharm1e-conm":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,430.91269578922,443.97065626768,457.84473927605,523.2511306012],description:"Subharm1E-ConMixolydian"},"sharm1e-conp":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Subharm1E-ConPhrygian"},"sharm1e-dor":{frequencies:[261.6255653006,338.57426097725,348.83408706747,359.73515228832,383.71749577421,411.12588832951,500.50108144463,511.62332769895,523.2511306012],description:"Subharm1E-Dorian"},"sharm1e-lyd":{frequencies:[261.6255653006,323.91736656265,331.81779013735,340.11323489078,382.37582620857,377.90359432309,503.87145909745,513.37846775967,523.2511306012],description:"Subharm1E-Lydian"},"sharm1e-mix":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,366.27579142084,488.36772189445,505.20798816668,523.2511306012],description:"Subharm1E-Mixolydian"},"sharm1e-phr":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,392.4383479509,502.32108537715,512.57253609913,523.2511306012],description:"Subharm1E-Phrygian"},"sharm2c-15":{frequencies:[261.6255653006,327.03195662575,341.25073734861,356.76213450082,392.4383479509,461.69217405988,490.54793493862,523.2511306012],description:"Subharm2C-15-Harmonia"},"sharm2c-hypod":{frequencies:[261.6255653006,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,465.11211608996,492.47165233054,523.2511306012],description:"SHarm2C-Hypodorian"},"sharm2c-hypol":{frequencies:[261.6255653006,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,475.68284600109,498.33441009638,523.2511306012],description:"SHarm2C-Hypolydian"},"sharm2c-hypop":{frequencies:[261.6255653006,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,470.92601754108,495.71159741166,523.2511306012],description:"SHarm2C-Hypophrygian"},"sharm2e-15":{frequencies:[261.6255653006,341.25073734861,348.83408706747,356.76213450082,392.4383479509,490.54793493862,506.37206187213,523.2511306012],description:"Subharm2E-15-Harmonia"},"sharm2e-hypod":{frequencies:[261.6255653006,334.88072358477,341.71502406609,348.83408706747,364.00078650518,380.54627680087,492.47165233054,507.3950357345,523.2511306012],description:"SHarm2E-Hypodorian"},"sharm2e-hypol":{frequencies:[261.6255653006,327.03195662575,337.58137458142,348.83408706747,373.75080757229,402.50086969323,498.33441009638,510.48890790361,523.2511306012],description:"SHarm2E-Hypolydian"},"sharm2e-hypop":{frequencies:[261.6255653006,348.83408706747,355.41586229515,362.25078272391,376.74081403286,392.4383479509,495.71159741166,509.10920815252,523.2511306012],description:"SHarm2E-Hypophrygian"},sherwood:{frequencies:[261.6255653006,279.50101530337,292.73346657716,312.73435005323,327.54017122074,349.91920725962,366.48547573919,391.52543233055,418.27599117656,438.07873640926,468.01000025525,490.16733894289,523.65750116998],description:"Sherwood's improved meantone temperament"},shrutar:{frequencies:[261.6255653006,269.80136421624,277.49581689502,285.40970760065,294.32876096318,304.37698984459,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,368.95121675679,379.48299988042,392.4383479509,405.83598431812,417.42065019394,428.11456140098,441.49314144476,457.84473927605,470.92601754108,490.54793493862,505.97733342682,523.2511306012],description:"Paul Erlich's Shrutar tuning (from 9th fret) tempered with Dave Keenan"},shrutar_temp:{frequencies:[261.6255653006,269.67683152447,277.97586744827,286.53029793775,295.34798250635,304.4370214407,313.80576690868,327.74897996102,337.83512841993,348.23166805304,358.94815083964,369.99442271164,381.38063259971,393.11724175776,405.21503337437,417.68512248001,430.53896367224,443.78837151315,463.50705251482,477.77102045752,492.47394780842,507.62934310616,523.2511306012],description:"Shrutar temperament, 11-limit, g=52.474, 1/2 oct."},shrutart:{frequencies:[261.6255653006,269.83675183105,278.27349931787,286.14641333958,294.32706056425,305.2349557921,313.94319125793,327.02936607233,337.2932679302,348.82502010853,358.79758764604,369.99442271164,381.540672377,392.44854854484,405.86600994967,418.6042204156,436.0530078362,448.49343183014,465.11480315564,478.41198231361,491.94721442498,507.32849364948,523.2511306012],description:"Paul Erlich's 'Shrutar' tuning tempered by Dave Keenan, TL 29-12-2000"},siamese:{frequencies:[261.6255653006,269.26067151764,288.95340229325,296.22023396764,319.13574119147,352.26720984209,362.5475414329,388.79334481031,400.18585940536,429.40436513853,443.77760270734,473.98350631811,523.2511306012],description:"Siamese Tuning, after Clem Fortuna's Microtonal Guide"},silbermann1:{frequencies:[261.6255653006,275.15551885617,293.66476791741,312.53552595124,327.77163799145,349.82028288879,367.9112241576,391.99543598175,411.56972129721,438.75957425603,467.74568907204,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 1"},silbermann2:{frequencies:[261.6255653006,275.00020270933,293.00227310437,312.18279369479,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 2, 1/6 Pyth. comma meantone"},silbermann2a:{frequencies:[261.6255653006,275.00020270933,293.00227310437,310.77584116741,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Modified Silbermann's temperament nr. 2, also used by Hinsz in Midwolda"},silver:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.53543886896,349.23174545031,369.98176232374,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating chromatic scale, A.L.Leigh Silver JASA 29/4, 476-481, 1957"},silver_10:{frequencies:[261.6255653006,270.26884019355,294.27266239927,320.41022551991,330.99364634362,360.39280035711,392.40094712608,405.36462386145,441.36692569059,480.56953386201,523.2511306012],description:"Ten-tone MOS from 350.9 cents"},silver_11:{frequencies:[261.6255653006,277.73657748574,294.83971256733,315.81001885226,335.25773244276,355.90304440354,381.21644531515,404.69191411574,429.61301214396,460.16899244324,488.50639225338,523.2511306012],description:"Eleven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_11a:{frequencies:[261.6255653006,272.21316796874,283.22923537857,314.22802528801,326.94437231289,340.17533123945,377.40674067136,392.67983758722,408.5710143206,453.28817432381,471.63208149661,523.2511306012],description:"Eleven-tone MOS from 317.17 cents"},silver_11b:{frequencies:[261.6255653006,281.48899567641,302.85877036442,316.87090334834,340.92873240472,366.81310701257,383.78194911277,412.91987382947,444.27004083312,464.82473992747,500.11279777071,523.2511306012],description:"Eleven-tone MOS from 331.67 cents"},silver_7:{frequencies:[261.6255653006,277.73649727228,315.81000061035,335.2576162513,381.21640127531,404.69175048432,460.16888612163,523.2511306012],description:"Seven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_8:{frequencies:[261.6255653006,288.49477506296,306.46277751246,337.93681424842,358.98416079003,395.852196628,420.50662316693,492.57276348379,523.2511306012],description:"Eight-tone MOS from 273.85 cents"},silver_9:{frequencies:[261.6255653006,294.18258755347,307.6617709921,345.94759796409,361.79860795042,406.82129262791,425.46148093979,478.40645551359,500.32661205896,523.2511306012],description:"Nine-tone MOS from 280.61 cents"},silvermean:{frequencies:[261.6255653006,286.15296204753,327.03195662575,345.42750418595,392.4383479509,416.96574469783,474.19633710734,523.2511306012],description:"First 6 approximants to the Silver Mean, 1+ sqr(2) reduced by 2/1"},simonton:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Simonton Integral Ratio Scale, JASA 25/6 (1953): A new integral ratio scale"},sims:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Ezra Sims' 18-tone mode"},sims2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Sims II"},sims_24:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.97716313189,283.42769574232,286.15296204753,294.32876096318,302.50455987882,305.22982618403,310.68035879446,316.13089140489,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"See his article, Reflections on This and That, 1991 p.93-106"},sin:{frequencies:[261.6255653006,275.08939827539,302.09917071192,334.63165645627,369.99442271164,407.01712569342,445.10399729103,483.9175316883,523.2511306012,562.97086325858,602.98541169118,643.23087116255,683.66056756853,724.23972686276,764.94197926416,805.74682982871,846.63811574624,887.6028851904,928.63083777952,969.71346974542,1010.84345850104,1052.01529432917],description:"1/sin(2pi/n), n=4..25"},sinemod12:{frequencies:[261.6255653006,270.6035983646,282.0485507085,292.16840832754,301.82804372114,314.42520179993,326.24260278214,336.76433478807,350.4641458176,364.21811789193,375.86233664064,390.61306119732,406.50371126161,419.61372202861,435.38454314112,453.55584308858,468.551249676,485.36279478778,505.89080731022,523.2511306012],description:"Sine modulated F=12, A=-.08203754"},sinemod8:{frequencies:[261.6255653006,272.43905323978,281.98404270447,290.99567087708,301.68076007415,314.40050256998,326.99158834066,337.97331861211,348.96407538813,362.38276875396,377.76595534172,392.29216556304,405.04934945717,418.6525822649,435.418746849,453.77727371169,470.43955130022,485.47382867757,502.48255971303,523.2511306012],description:"Sine modulated F=8, A=.11364155. Deviation minimal3/2, 4/3, 5/4, 6/5, 5/3, 8/5"},singapore:{frequencies:[261.6255653006,291.46787011619,321.35550581422,354.51258839996,385.70651737906,428.95813651779,462.1422075194,523.2511306012],description:"An observed xylophone tuning from Singapore"},sintemp6:{frequencies:[261.6255653006,277.18263097687,292.42974339757,312.08834713741,327.870830746,349.91196330865,369.15973155124,391.11111150212,416.11779639122,437.6550518996,467.60417912673,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/6 Pyth, one cycle, f0=-90 degrees"},sintemp6a:{frequencies:[261.6255653006,276.17281343288,293.21211353711,310.64741311165,328.42667470471,349.22823143301,368.43838932195,391.77416758435,414.19655102258,438.82595961933,465.90062756558,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/12 Pyth, one cycle, f0= D-A"},sintemp_19:{frequencies:[261.6255653006,272.86445838226,281.30973389888,292.50627485027,304.14845459111,313.56198179795,327.03195662575,338.65502209741,350.02113164026,365.30494475029,376.98581738134,391.19763056219,407.47965586966,419.94695489748,437.42555500456,453.91586039553,468.43012697388,488.88431353627,505.29249383438,523.2511306012],description:"Sine modulated thirds, A=7.366 cents, one cycle over fifths, f0=90 degrees"},sintemp_7:{frequencies:[261.6255653006,291.06608881088,319.67397341855,351.09362859375,390.60192440975,432.07134328681,473.03044489876,523.2511306012],description:"Sine modulated fifths, A=8.12 cents, one cycle, f0=90 degrees"},slen_pel:{frequencies:[261.6255653006,261.6255653006,283.17034563789,298.45295203849,338.50336851425,364.68988616898,346.01554587335,389.06292924114,398.38689497567,420.13030572059,455.51656649021,493.31307433255,523.2511306012],description:"Pelog white, Slendro black"},slen_pel16:{frequencies:[261.6255653006,261.6255653006,285.30470202322,285.30470202322,297.93622032612,311.12698372208,339.28638158975,386.37547528213,386.37547528213,403.48177901006,421.34544350737,440,523.2511306012],description:"16-tET Slendro and Pelog"},slen_pel23:{frequencies:[261.6255653006,261.6255653006,295.14355885465,295.14355885465,286.38154466424,343.14246862785,313.47984535337,398.94762483098,398.94762483098,387.10394860926,450.05828708186,423.73315704439,523.2511306012],description:"23-tET Slendro and Pelog"},slen_pel_jc:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,279.06726965397,341.71502406609,348.83408706747,392.4383479509,392.4383479509,392.4383479509,448.50096908674,418.60090448096,523.2511306012],description:"Slendro/JC PELOG S1c,P1c#,S2d,eb,P2e,S3f,P3f#,S4g,ab,P4a,S5bb,P5b"},slen_pel_schmidt:{frequencies:[261.6255653006,261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,392.4383479509,457.84473927605,457.84473927605,490.54793493862,523.2511306012],description:"Dan Schmidt (Pelog white, Slendro black)"},slendro:{frequencies:[261.6255653006,298.45295203849,346.01554587335,398.38689497567,455.51656649021,523.2511306012],description:"Observed Javanese Slendro scale, Helmholtz/Ellis p. 518, nr.94"},slendro10:{frequencies:[261.6255653006,304.21577360535,342.24274530602,391.67780832635,463.92905474816,523.2511306012],description:"Low gender from Singaraja (banjar Lod Peken), Bali. 1/1=172 Hz. McPhee, 1966."},slendro11:{frequencies:[261.6255653006,299.11221417218,343.62760815601,387.36203100102,452.96366529656,523.2511306012],description:"Low gender from Sawan, Bali. 1/1=167.5 Hz. McPhee, 1966."},slendro2:{frequencies:[261.6255653006,299.13295468097,343.58614396263,395.91119354826,450.08870388136,523.2511306012],description:"Gamelan slendro from Ranchaiyuh, distr. Tanggerang, Batavia. 1/1=282.5 Hz"},slendro3:{frequencies:[261.6255653006,298.44694115772,339.14425131559,391.46936437571,453.48431318771,522.28214737536],description:"Gamelan kodok ngorek. 1/1=270 Hz"},slendro4:{frequencies:[261.6255653006,294.5074669504,344.54514337401,400.3014113889,467.49486258632,523.2511306012],description:"Low gender in saih lima from Kuta, Bali. 1/1=183 Hz. McPhee, 1966"},slendro5_1:{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7; from Lou Harrison"},slendro5_2:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 2"},slendro5_4:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 4"},slendro6:{frequencies:[261.6255653006,295.05549864457,341.56671025356,398.25224940202,461.478427683,523.2511306012],description:"Low gender from Klandis, Bali. 1/1=180 Hz. McPhee, 1966"},slendro8:{frequencies:[261.6255653006,309.85821141747,350.78288084997,406.32350365121,467.71050779996,523.2511306012],description:"Low gender from Tabanan, Bali. 1/1=179 Hz. McPhee, 1966."},slendro9:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Low gender from Singaraja (banjar Panataran), Bali. 1/1=175 Hz. McPhee, 1966."},slendro_7_1:{frequencies:[261.6255653006,299.00064605783,341.71502406609,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 1, From HMSL Manual, also Lou Harrison, Jacques Dudon"},slendro_7_2:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 2, From Lou Harrison, Jacques Dudon's APTOS"},slendro_7_3:{frequencies:[261.6255653006,294.32876096318,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:'Septimal Slendro 3, Harrison, Dudon, called "MILLS" after Mills Gamelan'},slendro_7_4:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:'Septimal Slendro 4, from Lou Harrison, Jacques Dudon, called "NAT"'},slendro_7_5:{frequencies:[261.6255653006,305.22982618403,343.38355445704,400.61414686654,467.3831713443,523.2511306012],description:"Septimal Slendro 5, from Jacques Dudon"},slendro_7_6:{frequencies:[261.6255653006,299.00064605783,341.71502406609,390.53145607553,455.62003208812,523.2511306012],description:"Septimal Slendro 6, from Robert Walker"},slendro_a1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:`Dudon's Slendro A1, "Seven-Limit Slendro Mutations", 1/1 8:2'94 hexany 1.3.7.21`},slendro_a2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,448.50096908674,523.2511306012],description:`Dudon's Slendro A2 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_alv:{frequencies:[261.6255653006,299.00064605783,348.83408706747,406.97310157871,465.11211608996,523.2511306012],description:"Bill Alves, slendro for Gender Barung, 1/1 vol.9 no.4, 1997. 1/1=282.86"},slendro_ang:{frequencies:[261.6255653006,299.00064605783,340.82516392797,388.43396508487,445.83123341082,523.2511306012],description:"Gamelan Angklung Sangsit, North Bali. 1/1=294 Hz"},slendro_av:{frequencies:[261.6255653006,298.97057995496,344.02264297658,395.86362945285,454.20288100724,525.67465946865],description:"Average of 30 measured slendro gamelans, W. Surjodiningrat et al., 1993."},slendro_dudon:{frequencies:[261.6255653006,305.22982618403,348.83408706747,399.70572476481,457.84473927605,523.2511306012],description:'Dudon\'s Slendro from "Fleurs de lumie`re"'},slendro_gum:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.92601754108,525.62941881859],description:"Gumbeng, bamboo idiochord from Banyumas. 1/1=440 Hz"},slendro_ky1:{frequencies:[261.6255653006,297.58776037991,344.33874539242,394.68595744625,449.52853279627,523.2511306012],description:"Kyahi Kanyut Me`sem slendro, Mangku Nagaran, Solo. 1/1=291 Hz"},slendro_ky2:{frequencies:[261.6255653006,302.42139140287,345.87786599062,395.54249276388,453.1886900261,523.2511306012],description:"Kyahi Pengawe' sari, Paku Alaman, Jogya. 1/1=295 Hz"},slendro_laras:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012,598.00129211566,697.66817413493],description:'Lou Harrison, gamelan "Si Betty"'},slendro_m:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:`Dudon's Slendro M from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_madu:{frequencies:[261.6255653006,300.52885648597,345.61604384578,394.49404533893,447.94973572445,522.94897617031],description:"Sultan's gamelan Madoe kentir, Jogjakarta, Jaap Kunst"},slendro_mat:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,455.62003208812,457.84473927605,523.2511306012],description:`Dudon's Slendro Matrix from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_pa:{frequencies:[261.6255653006,304.19649364034,353.69443592699,411.24653512154,478.16333951147,523.2511306012],description:'"Blown fifth" primitive slendro, von Hornbostel'},slendro_pas:{frequencies:[261.6255653006,300.35531433711,343.03050002254,393.12919962609,450.54468214486,523.2511306012],description:"Gamelan slendro of regent of Pasoeroean, Jaap Kunst"},slendro_pb:{frequencies:[261.6255653006,304.72408298441,342.83241505062,399.30842833955,449.24533531117,523.2511306012],description:'"Blown fifth" medium slendro, von Hornbostel'},slendro_pc:{frequencies:[261.6255653006,299.48910562989,342.83241505062,392.44854854484,449.24533531117,523.2511306012],description:'"Blown fifth" modern slendro, von Hornbostel'},slendro_pliat:{frequencies:[261.6255653006,299.73468146833,339.98478643783,393.08060743874,447.03290350508,523.2511306012,599.46936293666,679.96957287566,786.16121487749,894.06580701017],description:"Gender wayang from Pliatan, South Bali (Slendro), 1/1=305.5 Hz"},slendro_q13:{frequencies:[261.6255653006,307.00725675226,360.2608752926,400.8015646157,470.32478922042,523.2511306012],description:"13-tET quasi slendro, Blackwood"},slendro_s1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,398.6675280771,457.84473927605,523.2511306012],description:`Dudon's Slendro S1 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_s2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,455.62003208812,523.2511306012],description:"Dudon's Slendro S2"},slendro_udan:{frequencies:[261.6255653006,305.22982618403,351.32575911795,402.50086969323,465.11211608996,523.2511306012],description:"Slendro Udan Mas (approx)"},slendro_wolf:{frequencies:[261.6255653006,298.18866107946,339.86157848985,395.0032340925,450.20632964813,523.2511306012],description:"Daniel Wolf's slendro. Tuning List 30 5 1997"},slendrob1:{frequencies:[261.6255653006,307.44024341205,355.66611281954,409.9203247543,476.83364134848,523.2511306012],description:"Gamelan miring of Musadikrama, desa Katur, Bajanegara. 1/1=434 Hz"},slendrob2:{frequencies:[261.6255653006,307.55978097874,346.50416420081,398.42969909174,449.35693171058,523.2511306012],description:"Gamelan miring from Bajanegara. 1/1=262 Hz"},slendrob3:{frequencies:[261.6255653006,304.90191053936,342.27700149692,398.33972372326,447.51732140012,523.2511306012],description:"Gamelan miring from Ngumpak, Bajanegara. 1/1=266 Hz"},slendroc1:{frequencies:[261.6255653006,297.59222964268,344.42030317161,394.72197985873,449.50490455178,523.2511306012],description:"Kyahi Kanyut mesem slendro (Mangku Nagaran Solo). 1/1=291 Hz"},slendroc2:{frequencies:[261.6255653006,302.44445076078,346.01554587335,396.09235530397,453.15466093696,523.2511306012],description:"Kyahi Pengawe sari (Paku Alaman, Jogja). 1/1=295 Hz."},slendroc3:{frequencies:[261.6255653006,301.39807245198,344.42030317161,395.40657391157,451.84778706363,523.2511306012],description:"Gamelan slendro of R.M. Jayadipura, Jogja. 1/1=231 Hz"},slendroc4:{frequencies:[261.6255653006,299.14332201883,343.8239850859,396.09235530397,450.28451247858,523.2511306012],description:"Gamelan slendro, Rancha iyuh, Tanggerang, Batavia. 1/1=282.5 Hz"},slendroc5:{frequencies:[261.6255653006,299.83528893666,340.07120590121,393.12919962609,447.17417015401,523.2511306012],description:"Gender wayang from Pliatan, South Bali. 1/1=611 Hz"},slendroc6:{frequencies:[261.6255653006,296.73398952435,343.8239850859,396.7793260952,453.9405988926,527.19506190947,607.33963549452,696.44215167899,797.23415748628,918.4302691641,1071.58188326661],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},slendrod1:{frequencies:[261.6255653006,292.47977325983,340.6610152784,389.06292924114,444.85552088095,523.2511306012],description:"Gender wayang from Ubud (S. Bali). 1/1=347 Hz"},smith_eh:{frequencies:[261.6255653006,272.7117507892,292.30354792656,313.30283124826,326.5788018031,350.04044239751,364.87314355143,391.08587539224,407.65784362321,436.94425707006,468.33462614046,488.17995458879,523.2511306012],description:"Robert Smith's Equal Harmony temperament (1749)"},smith_mq:{frequencies:[261.6255653006,273.37438418823,292.50629623572,312.97714101186,327.03200500996,349.91910755601,365.63292511375,391.22148485648,408.79006910398,437.39894995248,468.01000388518,489.02693031834,523.2511306012],description:"Robert Smith approximation of quarter comma meantone fifth"},"scalamakesrc2\\smithgw-ball":{frequencies:[261.6255653006,267.07609791103,272.52663052146,274.70684356563,280.31310567921,286.15296204753,294.32876096318,300.46061014991,305.22982618403,306.59245933664,313.95067836072,320.49131749323,327.03195662575,333.84512238879,336.37572681506,343.38355445704,350.39138209902,357.69120255941,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,480.73697623985,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Ball 2 around tetrad lattice hole"},smithgw46:{frequencies:[261.6255653006,273.72380653152,313.47993226845,327.97605323154,364.46098649856,392.98113253789,436.69740466987,456.89141950378,523.2511306012],description:'Gene Ward Smith 46-tET subset "Star"'},smithgw46a:{frequencies:[261.6255653006,282.09853500802,313.47993226845,327.97605323154,375.61187043063,392.98113253789,436.69740466987,470.87026054824,523.2511306012],description:'46-tET version of "Star", alternative version'},smithgw72a:{frequencies:[261.6255653006,285.30470202322,299.37379946195,326.46944327063,342.56848033562,373.57357677338,391.99543598175,427.47405410759,435.78442404634,457.27406033445,498.66089874196,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72c:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72d:{frequencies:[261.6255653006,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72e:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72f:{frequencies:[261.6255653006,326.46944327063,349.22823143301,435.78442404634,466.16376151809,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72g:{frequencies:[261.6255653006,326.46944327063,349.22823143301,391.99543598175,419.32216217931,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72h:{frequencies:[261.6255653006,279.86396690685,314.13668154225,349.22823143301,391.99543598175,435.78442404634,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 09-01-2002"},smithgw72i:{frequencies:[261.6255653006,279.86396690685,293.66476791741,314.13668154225,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,470.6732130613,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset version of Duodene, TL 02-06-2002"},smithgw72j:{frequencies:[261.6255653006,274.52698453615,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"{225/224, 441/440} tempering of decad, 72-et version (2002)"},smithgw84:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:'Gene Ward Smith 84-tET subset, 11-limit temperament "Orwell", 2002'},smithgw_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,350.39138209902,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,490.54793493862,523.2511306012],description:"Gene Ward Smith chord analogue to periodicity blocks, TL 12-07-2002"},smithgw_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,299.00064605783,305.22982618403,320.49131749323,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,427.14378008261,448.50096908674,457.84473927605,478.40103369253,488.36772189445,512.57253609913,523.2511306012],description:"Gene Ward Smith symmetrical 7-limit JI version of Blackjack, TL 10-5-2002"},smithgw_45:{frequencies:[261.6255653006,267.02002970726,269.13627541126,274.68560334708,276.86260193655,282.57123920205,288.39758300936,290.68325478745,296.67686217097,299.02814898089,305.19382000629,311.48661940174,313.95528147508,320.42873367481,322.96826575344,329.62755691287,336.42415617173,339.09045868095,346.08217376006,348.82502010853,356.01745236555,363.35818557229,366.23795155866,373.78942366597,376.75185941212,384.52011812375,392.44854854484,395.55886785613,403.71490654806,406.9145164708,415.30469757995,423.86787605389,427.22720671064,436.03621571368,439.49198556474,448.5538823653,457.80262665414,461.43090443914,470.94516310483,474.67759826036,484.46499093218,494.45418731234,498.37294408452,508.64890891624,512.68016480935,523.2511306012],description:"Gene Ward Smith large limma repeating 5-tone MOS"},smithgw_58:{frequencies:[261.6255653006,264.89588486686,267.57160087561,269.80136421624,274.70684356563,279.06726965397,282.55561052465,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.49231810831,305.22982618403,310.07474405997,313.95067836072,317.12189733406,319.76457981184,323.76163705949,327.03195662575,332.97799220076,336.37572681506,340.54567384169,343.38355445704,348.83408706747,353.19451315581,356.76213450082,359.73515228832,366.27579142084,370.01329949656,373.75080757229,380.54627680087,383.71749577421,387.59343007496,392.4383479509,398.6675280771,401.98975747775,406.97310157871,411.12588832951,418.60090448096,423.83341578697,428.11456140098,431.68218274599,436.04260883433,441.49314144476,448.50096908674,452.23847716247,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,484.4917875937,490.54793493862,498.33441009638,507.3950357345,511.62332769895,516.79124009995,523.2511306012],description:"Gene Ward Smith 58-tone epimorphic superset of Partch's 43-tone scale"},smithgw_9:{frequencies:[261.6255653006,279.06726965397,305.22982618403,327.03195662575,348.83408706747,392.4383479509,418.60090448096,448.50096908674,490.54793493862,523.2511306012],description:'Gene Ward Smith "Miracle-Magic square" tuning, genus chromaticum of ji_12a'},"smithgw_al-baked":{frequencies:[261.6255653006,277.59364499865,293.85651796007,311.0721560172,330.05816364769,349.39467974592,369.86402907174,392.4383479509,415.42941801053,439.76742419786,466.60823379256,493.94455998605,522.88238970142],description:"Baked alaska, with beat ratios of 2 and 3/2"},"smithgw_al-fried":{frequencies:[261.6255653006,277.00141553195,293.28091128458,310.96067952124,329.23597434237,348.58531822795,369.59898601143,391.32048195179,414.31855981944,439.29480556849,465.11235566178,492.44721175277,522.13326741512],description:"Fried alaska, with octave-fifth brats of 1 and 2"},smithgw_asbru:{frequencies:[261.6255653006,275.52281548997,293.66476791741,313.00128725319,329.62755691287,351.33206601369,367.77883484915,391.99543598175,415.30469757995,440,468.97204376297,490.92584627687,523.2511306012],description:"Modified bifrost (2003)"},smithgw_bifrost:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,413.66634097248,437.39889945791,466.55882736321,489.02683710225,523.2511306012],description:"Six meantone fifths, four pure, two of sqrt(2048/2025 sqrt(5))"},smithgw_cauldron:{frequencies:[261.6255653006,275.03056468741,291.83931845209,312.58541512404,325.54230007562,350.31873582686,364.83969341757,390.77519652096,414.65779561271,435.90375768372,469.07960710644,486.243977751,523.2511306012],description:"Circulating temperament with two pure 9/7 thirds"},smithgw_ck:{frequencies:[195.99771799087,198.06437430898,200.15282320192,202.2632921446,203.72940721765,205.87758869102,208.04842120778,210.24214482145,211.76609376362,213.99901760782,216.25548480725,218.5357448459,220.11981156469,222.44081817627,224.78629944762,227.15651084977,228.80306427848,231.21563094,233.65363506284,235.34728316698,237.82885399313,240.33658984216,242.87076938222,244.63122826831,247.21069030843,249.81735238129,252.45149840587,254.28140507407,256.96262135434,259.67210915034,262.4101678886,264.31225911206,267.09924514556,269.91561641866,272.7616843206,274.73881033537,277.63573538138,280.56320805899,282.59688215652,285.57666497222,288.58786914203,291.63082264784,293.74472081062,296.84205135845,299.9720393359,303.13503255793,305.33231946532,308.55183127196,311.80529233825,315.09305703284,317.37702217863,320.72353853051,324.10533989702,327.52280172307,329.89686439088,333.37539375097,336.89059979959,339.33256534187,342.91058750208,346.52633537645,350.18021075922,352.71850659998,356.43767199462,360.19605541958,363.99406623991,366.6324923874,370.49837299068,374.40501441099,378.35285076765,381.09535716275,385.11373623244,389.17448849491,391.99543598174],description:"Catakleismic temperament, g=316.745, 11-limit"},smithgw_decab:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,439.53094970501,488.36772189445,523.2511306012],description:"(10/9) <==> (16/15) transform of decaa"},smithgw_decac:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,498.33441009638,523.2511306012],description:"inversion of decaa"},smithgw_decad:{frequencies:[261.6255653006,280.31310567921,311.45900631024,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,467.18850946536,498.33441009638,523.2511306012],description:"inversion of decab"},smithgw_diff13:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,313.95067836072,320.35783506196,336.37572681506,406.97310157871,427.32175665765,436.04260883433,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"mod 13 perfect difference set, 7-limit"},smithgw_dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},smithgw_exotic1:{frequencies:[261.6255653006,274.95996987324,293.39100498914,313.05750197389,327.96500300935,349.94905375768,367.78508905896,392.4383479509,411.12588832951,438.68435539504,468.09011223803,491.94750426812,523.2511306012],description:"Exotic temperament featuring four pure 14/11 thirds and two pure fifths"},smithgw_glumma:{frequencies:[261.6255653006,269.10058145205,299.00064605783,313.95067836072,327.03195662575,358.80077526939,373.75080757229,392.4383479509,436.04260883433,448.50096908674,457.84473927605,512.57253609913,523.2511306012],description:"Gene Smith's Glumma scale, 7-limit, 2002"},smithgw_gm:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:'Gene Ward Smith "Genesis Minus" periodicity block'},smithgw_graileq:{frequencies:[261.6255653006,274.83794140225,293.02845982215,312.42294214419,328.20064112269,350.39711148969,365.67350481015,391.53226450123,414.40482204179,438.61355268439,469.63029662389,490.10494633744,523.2511306012],description:"56% RMS grail + 44% JI grail"},smithgw_grailrms:{frequencies:[261.6255653006,274.64037495938,293.11160698959,312.82513967025,328.38692028068,350.6222941497,365.93760986436,391.94882001935,414.52240989365,438.39608269016,469.55771333591,490.068176414,523.2511306012],description:"RMS optimized Holy Grail"},smithgw_hahn12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Hahn-reduced 12 note scale, Fokker block 225/224, 126/125, 64/63"},smithgw_hahn15:{frequencies:[261.6255653006,279.06726965397,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Hahn-reduced 15 note scale"},smithgw_hahn16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Hahn-reduced 16 note scale"},smithgw_hahn19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 19 note scale"},smithgw_hahn22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 22 note scale"},smithgw_indianred:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"32805/32768 Hahn-reduced"},smithgw_klv:{frequencies:[261.6255653006,271.78681896552,282.34272472006,293.30861211826,314.10491445143,326.30440921209,338.97771913949,352.14324873572,377.11107157735,391.75765725694,406.97310157871,422.77949745352,452.75560414132,470.34014155688,488.60764618722,523.2511306012],description:"Variant of kleismic with 9/7 thirds, g=316.492"},smithgw_meandin:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,470.92601754108,504.56359022259,523.2511306012],description:"Gene Smith, inverted detempered 7-limit meantone"},smithgw_meanred:{frequencies:[261.6255653006,281.29980781121,291.99281841585,313.95067836072,325.57848126297,350.39138209902,363.36884069528,390.69417751556,420.46965851882,436.04260883433,468.83301301868,486.65469735975,523.2511306012],description:"171-et Hahn reduced rational Meantone[12]"},smithgw_meantune:{frequencies:[261.6255653006,273.55401844854,279.77233440758,292.56174910339,312.85829351777,327.16018629281,334.59705725462,349.85254391288,365.77071543428,374.29488261541,391.03456781852,418.40555295943,437.51985793188,468.14464283802,489.08159472971,500.47948461038,523.2511306012],description:"Meantune scale/temperament, Gene Ward Smith, 2003"},smithgw_mir22:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,285.40970760065,299.00064605783,305.22982618403,319.76457981184,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,428.11456140098,448.50096908674,457.84473927605,479.64686971777,490.54793493862,512.78610798918,523.2511306012],description:"11-limit Miracle[22]"},smithgw_mmt:{frequencies:[261.6255653006,273.37431312998,292.50627485027,307.38829724655,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.12588832951,437.39890198442,459.65271605653,489.02683710225,523.2511306012],description:"Modified meantone with 5/4, 14/11 and 44/35 major thirds, TL 17-03-2003"},smithgw_modmos12a:{frequencies:[261.6255653006,265.27772209197,292.31087910123,304.72408298441,326.59518553839,340.46429857933,364.90060015836,391.09077971329,407.69874723177,425.01198472693,455.51656649021,488.21056770985,523.2511306012],description:"A 12-note modmos in 50-et meantone"},smithgw_octoid:{frequencies:[261.6255653006,272.34559486824,274.88944875317,277.45706359738,280.04865972334,282.66446436432,285.30470202322,296.99497716113,299.76906949343,302.56907333554,305.39522895084,308.24778413898,311.12698372208,323.87531915696,326.90048829645,329.95391413777,333.03585868997,336.14659218049,339.28638158975,353.18853996009,356.48751029933,359.81729479041,363.17817915623,366.5704580819,369.99442271164,385.15483391523,388.75238658,392.38354231563,396.04861270515,399.74791910495,403.48177901006,420.01432465796,423.93748365756,427.89728706578,431.89407466632,435.9281969008,440,458.02886886968,462.30710409523,466.62530033172,470.98382811593,475.38306960714,479.82340237272,499.48402328631,504.14947188193,508.85849826899,513.6115065207,518.40891338474,523.2511306012],description:"Octoid temperament, g=16.096, oct=1/8, 11-limit"},smithgw_orw18r:{frequencies:[261.6255653006,269.10058145205,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,448.50096908674,457.84473927605,474.80195184183,490.54793493862,523.2511306012],description:'Rational version of two cycles of 9-tone "Orwell"'},smithgw_pel1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 1"},smithgw_pel2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 2"},smithgw_pel3:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 3"},smithgw_pk:{frequencies:[261.6255653006,271.01659746112,280.74472171431,290.822034715,313.8821415949,325.1489200649,336.82012073975,348.91025643633,376.57634157395,390.09352641046,404.09590743895,418.60090448096,451.79296003201,468.01003810189,484.80922990434,523.2511306012],description:"Parakleismic temperament, g=315.263, 5-limit"},smithgw_pris:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_prisa:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,439.53094970501,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_pum13marv:{frequencies:[261.6255653006,293.67396865289,305.56991629828,343.00138030143,326.66798000724,366.68389807519,349.22276077151,392.00157668785,407.88051296056,457.84473927605,436.04260883433,489.45661357347,549.41368713126,523.2511306012],description:"pum13 marvel tempered and in epimorphic order"},smithgw_qm3a:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode A, 72-tET, TL 04-01-2002"},smithgw_qm3b:{frequencies:[261.6255653006,279.86396690685,299.37379946195,326.46944327063,349.22823143301,373.57357677338,391.99543598175,419.32216217931,448.5538823653,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode B"},smithgw_ragasyn1:{frequencies:[261.6255653006,269.16210421872,290.69507255622,313.95067836072,322.99452506247,348.83408706747,363.36884069528,392.4383479509,403.74315632809,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Ragasyn 6561/6250 81/80 scale"},smithgw_rainbow:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.51268695591,327.03195662575,349.91912034749,365.63284274659,391.22147055517,412.03444522126,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Circulating 1/4-comma meantone, Gene Ward SMith"},smithgw_ratwell:{frequencies:[261.6255653006,275.62199471997,293.02063313667,310.07474405997,326.72451751701,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.57747881743,465.11211608996,489.99465727995,523.2511306012],description:"7-limit rational well-temperament"},smithgw_ratwolf:{frequencies:[261.6255653006,272.55669785235,292.25605339318,313.37920299881,326.47268679644,350.06888377949,364.69531895389,391.05410158062,407.39296674476,436.83777202739,468.410735204,487.98168129749,523.2511306012],description:"Eleven fifths of (418/5)^(1/11) and one 20/13 wolf, G.W. Smith 2003"},smithgw_rectoo:{frequencies:[261.6255653006,290.69507255622,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Hahn-reduced circle of fifths via <12 19 27 34| kernel"},smithgw_sc19:{frequencies:[261.6255653006,269.16210421872,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,508.60009894437,523.2511306012],description:"Fokker block from commas <81/80, 78732/78125>, Gene Ward Smith 2002"},smithgw_sch13:{frequencies:[261.6255653006,269.71217215021,278.04872701265,282.14859498561,290.86954990528,295.15846273282,304.2815407612,313.68660297237,318.31195648825,328.15068782436,332.98931632582,343.28171142549,353.89223299652,359.11042631209,370.21019888355,375.66900084958,387.28058594818,392.99109319609,405.13808832031,417.66053353744,423.81899742763,436.9188548657,443.36128543927,457.06517711961,471.19264083172,478.14044600934,492.91932687455,500.18749236202,515.64783010531,523.2511306012],description:"13-limit schismic temperament, g=704.3917, TL 31-10-2002"},smithgw_sch13a:{frequencies:[261.6255653006,266.49502311502,271.45511438723,280.18048669638,285.39529457963,294.56874561631,300.051354061,305.6360048159,315.46005229837,321.33149462105,331.66004360268,337.8330052901,344.12086009392,355.18192699392,361.79268541866,373.4217751344,380.37201938485,392.59830625439,399.90547017058,407.34863733398,420.4420328577,428.26743302475,442.03321824291,450.26048038501,458.64087358289,473.38295124548,482.19370453904,497.69284002863,506.95605959354,523.2511306012],description:"13-limit schismic temperament, g=702.660507, TL 31-10-2002"},smithgw_scj22a:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,301.39265122629,313.95067836072,327.03195662575,334.88072358477,348.83408706747,361.67118147155,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 15625/15552 = [6,5,22,37,-18,-6] catakleismic"},smithgw_scj22b:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"5120/5103 ^ 225/224 = [1,-8,-14,-10,25,-15] schismic candidate"},smithgw_scj22c:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 65625/65536 = [7,-3,827,7,-21] orwell candidate"},smithgw_secab:{frequencies:[261.6255653006,274.07613169002,291.39807132323,313.10572011471,348.73657263424,365.33268718488,392.54808236386,417.35759110361,437.21932894603,486.97408086388,523.2511306012],description:"{126/125, 176/175} tempering of decab, 328-et version"},smithgw_secac:{frequencies:[261.6255653006,281.11531641881,298.8821409504,313.10572011471,348.73657263424,374.71564313773,392.54808236386,417.35759110361,448.44857247831,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decac, 328-et version"},smithgw_secad:{frequencies:[261.6255653006,281.11531641881,313.10572011471,328.00618883132,348.73657263424,374.71564313773,392.54808236386,437.21932894603,469.78990700991,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decad, 328-et version"},smithgw_smalldi11:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,373.75080757229,423.93031414449,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Small diesic 11-note block, <10/9, 126/125, 1728/1715> commas"},smithgw_smalldi19a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,299.00064605783,305.22982618403,313.95067836072,317.94773560837,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,430.56093032327,436.04260883433,448.50096908674,457.84473927605,502.32108537715,508.71637697339,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 1728/1715> commas"},smithgw_smalldi19b:{frequencies:[261.6255653006,266.96486255163,274.70684356563,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,498.33441009638,512.78610798918,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 2401/2400> commas"},smithgw_smalldi19c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,313.95067836072,320.49131749323,327.03195662575,336.37572681506,343.38355445704,373.75080757229,381.53728273004,392.4383479509,400.61414686654,436.04260883433,448.50096908674,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"Small diesic 19-note scale containing glumma"},smithgw_smalldiglum19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,280.40333801024,286.95745534843,312.9293240034,320.24370022528,327.729041887,335.38934511627,343.22869944589,374.29355081838,383.0422478503,391.99543598175,401.15789496562,437.46578647972,447.69106452518,458.15534711532,468.86422071654,511.30005826145,523.2511306012],description:'Small diesic "glumma" variant of 19-note MOS, 31/120 version'},smithgw_smalldimos11:{frequencies:[261.6255653006,267.74077300753,305.78200836532,312.9293240034,320.24370022528,365.74467430283,374.29355081838,427.47405410759,437.46578647972,447.69106452518,511.30005826145,523.2511306012],description:"Small diesic 11-note MOS, 31/120 version"},smithgw_smalldimos19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,298.79793764201,305.78200836532,312.9293240034,320.24370022528,327.729041887,357.39105439675,365.74467430283,374.29355081838,383.0422478503,417.71053321823,427.47405410759,437.46578647972,447.69106452518,458.15534711532,499.62194879119,511.30005826145,523.2511306012],description:"Small diesic 19-note MOS, 31/120 version"},smithgw_star:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, untempered version'},smithgw_star2:{frequencies:[261.6255653006,282.55561052465,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, alternative untempered version'},starra:{frequencies:[261.6255653006,274.07613169002,294.49338559574,313.10572011471,328.00618883132,343.61575980934,374.71564313773,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrb:{frequencies:[261.6255653006,274.07613169002,287.1192112957,305.26548915336,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,479.82340237272,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrc:{frequencies:[261.6255653006,274.07613169002,287.1192112957,313.10572011471,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_tetra:{frequencies:[261.6255653006,274.84135386022,293.90210492181,314.2847539672,326.44746606412,342.93767672779,366.7210324511,392.15380743582,419.35039192746,435.57910814854,457.58200907672,489.31615916483,523.2511306012],description:"{225/224, 385/384} tempering of two-tetrachord 12-note scale"},smithgw_tr31:{frequencies:[261.6255653006,267.54129532085,292.57243455474,299.18791603519,305.95298478736,334.57791819083,342.14320575162,349.87955533643,391.26571058456,400.11279059885,409.15991580663,447.44088028055,457.55816161244,467.90420651233,511.68128147674,523.2511306012],description:"6/31 generator supermajor seconds tripentatonic scale"},smithgw_tr7_13:{frequencies:[261.6255653006,183.87449048025,346.05860897284,243.21533855007,457.74028507734,321.70694650116,605.46440189891,425.52973856044,299.06887661109,562.85871464284,395.58580335293,744.50714985079,523.2511306012],description:"81/80 ==> 28561/28672"},smithgw_tr7_13b:{frequencies:[261.6255653006,372.25357492539,395.58580335293,281.42935732142,299.06887661109,425.52973856044,302.73220094945,321.70694650116,457.74028507734,486.43067710015,346.05860897284,367.7489809605,523.2511306012],description:"reverse reduced 81/80 ==> 28561/28672"},smithgw_tr7_13r:{frequencies:[261.6255653006,367.7489809605,346.05860897284,486.43067710015,457.74028507734,321.70694650116,302.73220094945,425.52973856044,299.06887661109,281.42935732142,395.58580335293,372.25357492539,523.2511306012],description:"reduced 81/80 ==> 28561/28672"},smithgw_tra:{frequencies:[261.6255653006,128.35937755236,399.56478905052,196.03545836752,610.23096296248,299.39301413087,931.96857771927,457.24471305759,224.33452437931,698.32199734535,342.61245382262,1066.50464849657,523.2511306012],description:"81/80 ==> 1029/512"},smithgw_tre:{frequencies:[261.6255653006,256.71872396454,399.56476227799,392.07084290614,305.11544059319,299.39293769309,465.98419519089,457.24482979639,448.66910888407,349.16106442144,342.6124767791,533.2523889322,523.2511306012],description:"81/80 ==> 1029/512 ==> reduction"},smithgw_treb:{frequencies:[261.6255653006,266.6261944661,342.6124767791,349.16106442144,448.66910888407,457.24482979639,465.98419519089,299.39293769309,305.11544059319,392.07084290614,399.56476227799,513.43744792908,523.2511306012],description:"reversed 81/80 ==> 1029/512 ==> reduction"},smithgw_trx:{frequencies:[261.6255653006,490.17835855476,354.35176059633,331.954494127,479.94227969828,449.60690021487,325.02250210538,304.47902995326,285.23403465053,412.39349145653,386.32762147798,279.2776760715,523.2511306012],description:"reduced 3/2->7/6 5/4->11/6 scale"},smithgw_trxb:{frequencies:[261.6255653006,279.2776760715,386.32762147798,412.39349145653,285.23403465053,304.47902995326,325.02250210538,449.60690021487,479.94227969828,331.954494127,354.35176059633,490.17835855476,523.2511306012],description:"reversed reduced 3/2->7/6 5/4->11/6 scale"},smithgw_wa:{frequencies:[261.6255653006,273.6474362764,299.37379946195,313.13022722746,327.51877211613,349.22823143301,374.77430422696,391.99543598175,417.97870684853,437.18511000944,469.1652354389,500.26367760099,523.2511306012],description:"Wreckmeister A temperament, TL 2-6-2002"},smithgw_wa120:{frequencies:[261.6255653006,273.99891691894,298.79793764201,312.9293240034,327.729041887,349.22823143301,374.29355081838,391.99543598175,417.71053321823,437.46578647972,468.86422071654,499.62194879119,523.2511306012],description:"120-tET version of Wreckmeister A temperament"},smithgw_wb:{frequencies:[261.6255653006,280.76349612739,291.78605424516,313.13022722746,327.51877211613,349.22823143301,365.2755039332,391.99543598175,417.97870684853,437.18511000944,469.1652354389,487.58430040208,523.2511306012],description:"Wreckmeister B temperament, TL 2-6-2002"},smithgw_well1:{frequencies:[261.6255653006,275.92984511873,292.92635710626,310.42107575858,327.5229776175,349.2237102284,367.90646015831,391.734151992,413.8947676781,437.99072463899,465.63161363786,490.54194687775,523.2511306012],description:"Well-temperament, Gene Ward Smith (2005)"},smithgw_whelp1:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.05120395042,368.50381975103,390.45372436301,413.66634097248,438.25895612273,464.36382062247,491.65133958137,523.2511306012],description:"well-temperament with one pure third, Gene Ward Smith, 2003"},smithgw_whelp2:{frequencies:[261.6255653006,275.85000668176,292.43269265164,309.98104674077,327.03195662575,347.97308568611,368.21146504308,391.7894791814,413.34036955908,438.14417346548,464.48314871299,489.73685071229,523.2511306012],description:"well-temperament with two pure thirds"},smithgw_whelp3:{frequencies:[261.6255653006,275.96871294479,292.50627485027,310.03485655885,327.03195662575,349.46135677641,368.11883862276,391.73393619399,413.66634097248,436.82669499534,464.84945270756,489.66742197778,523.2511306012],description:"well-temperament with three pure thirds"},smithgw_wiz28:{frequencies:[261.6255653006,269.80136421624,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,508.71637697339,523.2511306012],description:"11-limit Wizard[28]"},smithgw_wiz34:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[34]"},smithgw_wiz38:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,285.40970760065,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,339.14425131559,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,403.65087217807,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,479.64686971777,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[38]"},smithgw_wreckpop:{frequencies:[261.6255653006,272.73569398658,292.31087910123,313.29104303136,326.59518553839,350.03605285217,364.90060015836,391.09077971329,419.16071913933,436.9606979923,455.51656649021,501.93603498211,523.2511306012],description:'"Wreckmeister" 13-limit meanpop (50-et) tempered thirds'},smithj12:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,331.11985608357,344.91651675372,363.36884069528,392.4383479509,408.78994578219,441.49314144476,459.88868900496,496.67978412536,523.2511306012],description:"J. Smith, 5-limit JI scale, MMM 21-3-2006"},smithj17:{frequencies:[261.6255653006,272.57820116223,283.17034563789,295.02492750576,308.97787266236,319.3201344739,332.68808325276,348.42227432308,363.00854876594,377.11473546037,392.90218486657,411.48414905414,425.25755219187,443.06044202496,464.01459698705,479.54632553791,499.62194879119,523.2511306012],description:"J. Smith 17-tone well temperament, MMM 12-2006"},smithrk_19:{frequencies:[261.6255653006,274.68253637698,286.11368885031,294.3308008075,305.19387818096,313.95878694534,327.0246436172,343.34529416761,348.83287827711,366.24211271841,381.48359653409,392.43970784476,406.92376081862,418.61050714007,436.03134720211,457.79213919624,470.93981233279,488.32112480698,508.64303280756,523.2511306012],description:"19 out of 612-tET by Roger K. Smith, 1978"},smithrk_mult:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:'Roger K. Smith, "Multitonic" scale, just version'},solar:{frequencies:[261.6255653006,394.58976180129,774.00176545642,2207.36533954793,5481.83445910426,34573.03685904828,65024.37680021134,105705.6559450381],description:"Solar system scale: 0=Pluto, 8=Mercury. 1/1=248.54 years period"},solemn:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Solemn 6"},songlines:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Songlines.DEM, Bill Thibault and Scott Gresham-Lancaster. 1992 ICMC (=rectsp6)"},sorge:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Sorge's Monochord (1756)"},sorge1:{frequencies:[261.6255653006,276.86979852503,293.00227310437,311.47852302926,328.88393162803,349.6228209638,369.57684148724,391.5530240856,415.30469757995,439.00737933323,466.69047534984,493.32589719545,523.2511306012],description:"Georg Andreas Sorge, 1744 (A)"},sorge2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.88393162803,348.83408706747,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Georg Andreas Sorge, 1744 (B)"},sorge3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Georg Andreas Sorge, well temperament, (1756, 1758)"},sparschuh:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,439.53094970501,465.69350623507,491.85606276513,523.2511306012],description:"Andreas Sparschuh WTC temperament, 1/1=C=250, modified Collatz sequence"},sparschuh2:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,438.48444744381,465.69350623507,491.85606276513,523.2511306012],description:"Modified Sparschuh temperament with A=419Hz by Tom Dent"},spec1_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,523.2511306012],description:"Spectrum sequence of 8/7: 1 to 27 reduced by 2/1"},spec1_17:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/6: 1 to 27 reduced by 2/1"},spec1_25:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 5/4: 1 to 25 reduced by 2/1"},spec1_33:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of 4/3: 1 to 29 reduced by 2/1"},spec1_4:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/5: 1 to 25 reduced by 2/1"},spec1_5:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 1.5: 1 to 27 reduced by 2/1"},specr2:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of sqrt(2): 1 to 29 reduced by 2/1"},specr3:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Spectrum sequence of sqrt(3): 1 to 31 reduced by 2/1"},spon_chal1:{frequencies:[261.6255653006,280.31310567921,285.40970760065,286.15296204753,348.83408706747,392.4383479509,420.46965851882,428.11456140098,429.2294430713,523.2511306012],description:"JC Spondeion, from discussions with George Kahrimanis about tritone of spondeion"},spon_chal2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,285.40970760065,348.83408706747,392.4383479509,413.43299207996,418.60090448096,428.11456140098,523.2511306012],description:"JC Spondeion II, 10 May 1997. Various tunings for the parhypatai and hence trito"},spon_mont:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Montford's Spondeion, a mixed septimal and undecimal pentatonic, 1923"},spon_terp:{frequencies:[261.6255653006,285.40970760065,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Subharm. 6-tone series, guess at Greek poet Terpander's, 6th c. BC & Spondeion, Winnington-Ingram (1928)"},stade:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.28772967674,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Organs in St. Cosmae, Stade; Magnuskerk, Anloo; H.K. Sluipwijk, modif. 1/4 mean"},stanhope:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.52264545758,465.11211608996,489.99465727995,523.2511306012],description:"Well temperament of Charles, third earl of Stanhope (1806)"},stanhope2:{frequencies:[261.6255653006,275.85537639807,293.11251278827,310.16223770573,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.66634097248,437.85193595173,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament (real version?) with 1/3 synt. comma temp."},stanhope_f:{frequencies:[261.6255653006,275.62199471997,292.46014274879,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,436.79202494356,465.11211608996,489.99465727995,523.2511306012],description:"Stanhope temperament, equal beating version by Farey (1807)"},stanhope_s:{frequencies:[261.6255653006,275.77758308753,293.11247215425,310.2497806633,327.03195662575,348.83408706747,367.7034443005,392.4383479509,413.66637442451,437.85181455341,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament, alt. version with 1/3 syntonic comma"},starling:{frequencies:[261.6255653006,278.9816419584,293.66476791741,313.14630527334,327.50195613664,349.22823143301,367.60851651046,391.99543598175,418.00016846495,437.16266336983,466.16376151809,490.69849857048,523.2511306012],description:"Starling temperament, Herman Miller (1999)"},stearns:{frequencies:[261.6255653006,299.00064605783,336.37572681506,366.27579142084,398.6675280771,448.50096908674,504.56359022259,523.2511306012],description:"Dan Stearns, guitar scale"},stearns2:{frequencies:[261.6255653006,280.31310567921,287.78812183066,299.00064605783,313.95067836072,317.68818643644,336.37572681506,340.11323489078,355.06326719367,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,429.81342870813,444.76346101102,448.50096908674,467.18850946536,470.92601754108,485.87604984397,497.08857407114,504.56359022259,523.2511306012],description:'Dan Stearns, scale for "At A Day Job" based on harmonics 10-20 and 14-28'},stearns3:{frequencies:[261.6255653006,304.11599009871,327.88291945286,364.30920726489,423.47641042702,470.52269644143,546.93995798074,607.70247408742,706.39900722312,784.8766959018],description:"Dan Stearns, trivalent version of Bohlen's Lambda scale"},stearns4:{frequencies:[261.6255653006,296.65550714972,336.37572681506,347.46339693852,393.986457405,446.73865184892,461.46412096988,523.2511306012],description:"Dan Stearns, 1/4-septimal comma temperament, tuning-math 2-12-2001"},steldek1:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,343.38355445704,353.19451315581,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 5 7 9 dekany"},steldek1s:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,339.14425131559,343.38355445704,353.19451315581,360.4025644447,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,482.88312345521,490.54793493862,494.47231841813,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated two out of 1 3 5 7 9 dekany"},steldek2:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Stellated two out of 1 3 5 7 11 dekany"},steldek2s:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,295.09524211152,299.7792935736,302.17752792219,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,349.7425091692,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,440.49202321019,449.66894036041,454.06089845559,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Superstellated two out of 1 3 5 7 11 dekany"},steleik1:{frequencies:[220,220.57291666667,224.58333333333,225,226.875,229.16666666667,232.03125,235.27777777778,238.21875,240.625,242.63020833333,243.08035714286,247.5,248.14453125,252.08333333333,252.65625,255.234375,256.66666666667,257.8125,262.5,264.6875,270.703125,272.25,275,277.29166666667,278.4375,280.72916666667,283.59375,288.75,294.09722222222,297.7734375,302.5,308.80208333333,309.375,311.953125,315,315.10416666667,317.625,320.83333333333,324.10714285714,324.84375,330,330.859375,336.11111111111,336.875,340.3125,343.75,346.5,346.61458333333,350,352.91666666667,353.57142857143,360.9375,366.66666666667,371.25,378.125,385,388.92857142857,392.12962962963,393.75,397.03125,401.04166666667,403.33333333333,412.5,415.9375,423.5,425.390625,427.77777777778,432.14285714286,433.125,440],description:"Stellated Eikosany 3 out of 1 3 5 7 9 11"},steleik1s:{frequencies:[123.47082531403,123.79236392162,125.33976847064,127.32928860509,129.9819821177,130.22313607339,131.308328874,132.59082945654,132.63467563031,133.69575303535,135.04621518722,136.42423779117,136.73429287706,138.90467847828,139.26640941182,141.47698733899,141.79852594658,143.24544968073,144.69237341488,145.8499124022,145.89814319334,147.3231438406,148.55083670594,148.82644122673,151.92699208562,154.33853164254,156.26776328807,156.6747105883,159.16161075637,160.43490364242,160.48795751267,162.05545822466,163.70908534941,165.05648522882,165.43161360434,165.73853682068,167.11969129419,168.80776898403,169.77238480679,173.63084809785,175.077771832,175.80123369908,178.26100404713,179.05681210091,180.06162024963,181.89898372156,182.31239050275,185.20623797104,185.68854588243,189.06470126211,189.41547065221,190.99393290764,192.92316455317,195.33470411009,198.06778227459,200.54362955302,202.56932278083,204.25740047067,204.63635668676,208.35701771743,208.89961411773,212.21548100849,212.69778891987,214.8681745211,216.07394429955,217.03856012232,220.07531363843,220.98471576091,222.82625505891,227.89048812843,229.19271948917,231.50779746381,233.43702910934,233.87012192772,234.4016449321,236.33087657764,238.74241613455,241.07423537553,241.15395569146,243.083187337,246.94165062806],description:"Superstellated Eikosany 3 out of 1 3 5 7 9 11"},steleik2:{frequencies:[123.47082531403,124.49974885831,126.04313417474,126.11662871362,127.68005799519,128.74405847848,129.64436657973,130.41605923794,132.04518818306,132.96858110742,133.76006075687,135.81790784543,137.94006265552,138.64744759221,140.44806379471,141.47698733899,144.0492961997,145.92006628022,146.26543921816,147.13606683255,148.16499037684,148.55083670594,151.25176100969,152.15206911093,154.33853164254,154.49287017418,155.62468607289,156.05340421634,157.14468676331,157.64578589202,158.45422581967,160.51207290824,160.9300730981,163.85607442716,164.62776708537,167.20007594608,169.77238480679,170.24007732692,171.65874463798,172.85915543964,173.88807898393,175.56007974339,176.56328019906,180.06162024963,181.09054379391,182.8317990227,183.92008354069,185.20623797104,186.74962328747,187.26408505961,190.14507098361,193.11608771773,194.02558263633,197.55332050245,198.06778227459,200.6400911353,201.66901467958,202.31209189476,203.72686176815,204.2880927923,205.78470885672,205.99049356557,208.95062745451,210.19438118936,214.01609721099,214.57343079747,216.07394429955,217.36009872991,217.87456050205,220.70410024883,224.71690207153,226.36317974239,229.30296129748,230.47887391952,234.08010632452,237.68133872951,239.0961086029,240.76810936236,243.77573203026,245.22677805425,246.94165062806],description:"Stellated Eikosany 3 out of 1 3 5 7 11 13"},steleik2s:{frequencies:[61.73541265702,61.89618196081,62.32902239411,62.70002847979,63.66464430255,64.65940436978,64.99099105886,65.83502990378,66.22690508177,66.31733781516,67.05419712422,67.52310759362,68.40003106886,68.56192463352,68.97003132776,69.45233923915,69.63320470592,70.8992629733,71.32128239576,72.34618670745,72.41853289415,72.94907159667,73.15003322642,73.66157192031,73.89646213689,74.27541835298,75.24003417574,75.43597176474,76.80753488774,77.16926582128,78.37503559973,79.58080537819,79.800036247,80.24397875634,80.46503654906,81.02772911234,81.51003702372,82.29378737972,82.71580680218,82.76403759332,84.40388449202,84.45309958502,84.8861924034,85.7024057919,86.21253915971,86.81542404893,87.05458499673,87.53888591601,87.7800398717,89.13050202357,90.52316611769,90.94949186079,92.60311898553,92.84427294122,94.05004271968,94.53235063106,94.83379307568,95.49696645383,95.7600434964,96.46158227659,96.55804385887,97.94560661931,98.52861618252,100.32004556766,100.58129568632,101.28466139042,101.88754627965,102.12870023534,103.45504699165,104.17850885872,105.33604784604,105.47988405157,106.10774050425,107.4857631082,108.03697214979,109.72504983963,111.41312752947,112.07630090762,112.86005126361,113.15395764711,114.2698743892,114.95005221294,115.75389873191,115.86965263064,116.71851455468,118.16543828883,118.23433941902,119.7000543705,120.57697784574,120.69755482359,121.54159366851,122.26505553558,123.47082531404],description:"Superstellated Eikosany 3 out of 1 3 5 7 11 13"},stelhex1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,327.03195662575,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 7 hexany, also dekatesserany, mandala, tetradekany"},stelhex2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,331.11985608357,353.19451315581,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 9 hexany"},stelhex3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,297.67175429757,339.14425131559,348.83408706747,358.80077526939,361.75386806997,372.08969287196,385.87079260796,434.10464168396,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on Archytas's Enharmonic"},stelhex4:{frequencies:[261.6255653006,269.10058145205,276.78916949353,279.06726965397,287.04062021552,297.67175429757,336.37572681506,348.83408706747,358.80077526939,361.75386806997,372.08969287196,382.72082695402,430.56093032327,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on the 1/1 35/36 16/15 4/3 tetrachord"},stelhex5:{frequencies:[261.6255653006,294.32876096318,305.22982618403,331.11985608357,343.38355445704,386.30649876417,392.4383479509,400.61414686654,441.49314144476,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 7 9 hexany, stellation is degenerate"},stelhex6:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,327.03195662575,337.2517052703,356.76213450082,359.73515228832,392.4383479509,408.78994578219,431.68218274599,449.66894036041,490.54793493862,494.63583439645,523.2511306012],description:"Stellated two out of 1 3 5 11 hexany, from The Giving, by Stephen J. Taylor"},stelpd1:{frequencies:[207.65234878997,208.19311011494,212.37172035338,214.14148468966,218.03496622947,219.00833661442,222.07265078927,222.48465941783,222.99030637105,224.84855892414,227.11975648903,229.43730502463,233.60889238872,237.93498298851,240.90917027586,242.2610735883,244.73312535961,245.28933700815,247.76700707894,249.83173213793,250.29524184505,254.84606442405,255.50972605016,256.96978162759,259.56543598746,262.81000393731,267.67685586207,272.54370778684,275.32476602956,277.59081348659,280.33067086646,281.06069865517,283.1622938045,285.52197958621,292.0111154859,297.32040849473,299.79807856552,302.82634198537,305.91640669951,306.61167126019,311.47852318496,312.28966517242,317.24664398468,317.96765908464,318.55758053007,321.21222703448,324.45679498433,327.0524493442,330.35600943859,333.10897618391,333.72698912674,340.67963473354,342.62637550345,346.08724798328,350.41333858307,356.90247448276,363.39161038245,367.09968803941,371.65051061841,374.7475982069,380.69597278161,385.45467244138,389.34815398119,392.59272193104,396.42721132631,399.73077142069,400.47238695209,401.51528379311,403.7684559805,407.88854226601,408.81556168025,415.30469757994],description:"Stellated two out of 1 3 5 7 9 11 pentadekany"},stelpd1s:{frequencies:[21.82676446456,21.88360499702,22.15715005948,22.2309638065,22.3228272933,22.50885085408,22.68892166091,22.91810268779,23.02041564622,23.14959867453,23.15196087848,23.34251199682,23.38581906917,23.43896865797,23.624449876,23.63429339678,23.87302363311,24.11662591508,24.35217522905,24.55511002263,24.61905562165,25.00983428231,25.20991295657,25.32245721084,25.46455854199,25.72440097609,25.78286552376,25.93612444091,26.04329850885,26.26032599642,26.30904645282,26.78739275196,26.85715158725,27.01062102489,27.2834555807,27.56185818867,27.62449877546,27.69643757435,28.01101439619,28.1360635676,28.29395393554,28.36115207614,28.41087110056,28.58266775121,28.64762835974,28.9399510981,29.17813999603,29.29871082246,29.46613202716,29.54286674598,29.7637697244,30.01180113877,30.06748166036,30.69388752829,30.99367756425,31.12334932909,31.25195821062,31.51239119571,31.65307151355,31.83069817748,32.15550122011,32.2285819047,32.41274522987,32.74014669684,32.82540749553,33.0742298264,33.34644570974,33.42223308636,33.48424093995,33.76327628112,34.09304532068,34.10431947588,34.37715403168,34.58149925455,34.7243980118,35.01376799523,35.07872860376,35.45144009517,35.80953544967,36.01416136652,36.17493887262,36.37794077427,36.74914425156,36.83266503394,36.92858343247,37.50234985274,37.51475142346,37.81486943485,37.88116146742,38.19683781298,38.26770393137,38.58660146413,38.90418666137,39.06494776328,39.39048899464,40.01573485169,40.28572738088,40.51593153734,40.92518337105,41.25258483802,41.26622656581,41.342787283,41.66927761416,42.01652159428,42.09447432451,42.2040953514,42.44093090331,42.61630665085,42.87400162681,42.9714425396,43.65352892912],description:"Superstellated two out of 1 3 5 7 9 11 pentadekany"},stelpent1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,406.97310157871,412.06026534844,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated one out of 1 3 5 7 9 pentany"},stelpent1s:{frequencies:[261.6255653006,271.31540105247,274.70684356563,275.93321340298,280.31310567921,282.55561052465,286.15296204753,288.32205155576,290.69507255622,294.32876096318,301.46155672497,305.22982618403,309.04519901133,313.95067836072,315.35224388912,320.35783506196,321.92208230347,327.03195662575,329.64821227876,336.37572681506,339.14425131559,343.38355445704,348.83408706747,353.19451315581,360.4025644447,366.27579142084,367.91095120397,373.75080757229,381.53728273004,386.30649876417,387.59343007496,392.4383479509,395.57785473451,403.65087217807,406.97310157871,411.88864507966,412.06026534844,420.46965851882,429.2294430713,436.04260883433,439.53094970501,441.49314144476,448.50096908674,452.19233508746,457.84473927605,470.92601754108,480.53675259294,482.88312345521,488.36772189445,490.54793493862,494.47231841813,498.33441009638,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated one out of 1 3 5 7 9 pentany"},steltet1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,436.04260883433,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 7 tetrany"},steltet1s:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,320.35783506196,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,429.2294430713,436.04260883433,439.53094970501,448.50096908674,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"Superstellated one out of 1 3 5 7 tetrany"},steltet2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,305.22982618403,327.03195662575,333.84512238879,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,436.04260883433,457.84473927605,476.92160341255,490.54793493862,523.2511306012],description:"Stellated three out of 1 3 5 7 tetrany"},steltet2s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Superstellated three out of 1 3 5 7 tetrany"},steltri1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 triany"},steltri2:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,408.78994578219,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 triany"},stevin:{frequencies:[261.6255653006,277.20445571159,293.66434538175,311.1256573916,329.66931111467,349.25319089654,369.99797100919,392.00714009679,415.41055144586,440.15068186507,466.27261682516,494.00597677606,523.2511306012],description:"Simon Stevin, monochord division of 10000 parts for 12-tET (1585)"},stopper:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767,554.79375523088,587.81844599272,622.80896314278,659.88233179115,699.16252826162,740.78092441407,784.8766959018],description:"Bernard Stopper, piano tuning with 19th root of 3 (1988)"},storbeck:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,358.80077526939,381.53728273004,387.59343007496,392.4383479509,403.65087217807,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Ulrich Storbeck, 2001"},strahle:{frequencies:[261.6255653006,278.94941459687,296.90543930973,315.65242990842,335.0021118691,355.12744448111,376.24442122187,398.15684412917,421.10213511252,444.85552088095,469.94877954106,496.17080790016,523.2511306012],description:"Strahle's Geometrical scale"},"sub24-12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharmonics 24-12"},sub24:{frequencies:[261.6255653006,10.90106522086,11.37502457829,11.89207115003,12.45836025241,13.08127826503,13.76976659477,14.53475362781,15.38973913533,16.35159783129,17.44170435337,18.68754037861,20.12504348466,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,52.32511306012,65.40639132515,87.20852176687,130.8127826503,261.6255653006],description:"Subharmonics 24-1"},sub40:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,475.68284600109,498.33441009638,523.2511306012],description:"sub 40-20"},sub48:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,502.32108537715,523.2511306012],description:"12 of sub 48 (Leven)"},sub50:{frequencies:[261.6255653006,272.52663052146,290.69507255622,311.45900631024,327.03195662575,344.24416486921,373.75080757229,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,523.2511306012],description:"12 of sub 50"},sub8:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Subharmonic series 1/16 - 1/8"},sumatra:{frequencies:[261.6255653006,266.79889483106,324.44528279699,356.96377863828,390.9602296356,474.47355835313,530.64156666967,639.28283484968,713.92755727656,784.8766959018],description:'"Archeological" tuning of Pasirah Rus orch. in Muaralakitan, Sumatra. 1/1=354 Hz'},super_10:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 10-tone scale"},super_11:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 11-tone scale"},super_12:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,494.18162334558,523.2511306012],description:"A superparticular 12-tone scale"},super_12_1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"Another superparticular 12-tone scale"},super_12_2:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,420.46965851882,448.50096908674,473.41768959156,498.33441009638,523.2511306012],description:"Another superparticular 12-tone scale"},super_13:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 13-tone scale"},super_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 14-tone scale"},super_15:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,334.29933343966,348.83408706747,363.36884069528,381.53728273004,399.70572476481,417.87416679957,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 15-tone scale"},super_17:{frequencies:[261.6255653006,274.08392555301,286.54228580542,299.00064605783,311.45900631024,323.91736656265,336.37572681506,348.83408706747,363.36884069528,377.90359432309,392.4383479509,411.12588832951,429.81342870813,448.50096908674,467.18850946536,485.87604984397,504.56359022259,523.2511306012],description:"Superparticular 17-tone scale"},super_19:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.11323489078,353.19451315581,366.27579142084,379.35706968587,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.57848126297,337.20628416522,348.83408706747,363.36884069528,377.90359432309,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Superparticular 19-tone scale"},super_22:{frequencies:[261.6255653006,270.96933548991,280.31310567921,289.65687586852,299.00064605783,308.34441624714,317.68818643644,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,406.45400323486,420.46965851882,434.48531380278,448.50096908674,463.45100138963,478.40103369253,493.35106599542,508.30109829831,523.2511306012],description:"Superparticular 22-tone scale"},super_22_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.16320258789,336.37572681506,347.58825104223,358.80077526939,370.01329949656,381.22582372373,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 22-tone scale"},super_24:{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 24-tone scale, inverse of Mans.ur 'Awad"},super_7:{frequencies:[261.6255653006,287.78812183066,313.95067836072,353.19451315581,392.4383479509,431.68218274599,470.92601754108,523.2511306012],description:"A superparticular 7-tone scale"},super_8:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"A superparticular 8 tone scale"},super_9:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 9-tone scale"},suppig:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friedrich Suppig's 19-tone JI scale. Calculus Musicus, Berlin 1722"},sur_7:{frequencies:[261.6255653006,280.40333801024,327.729041887,351.25128999693,383.0422478503,410.5345162762,479.82340237272,523.2511306012],description:"7-tone surupan"},sur_9:{frequencies:[261.6255653006,280.40333801024,305.78200836532,327.729041887,351.25128999693,383.0422478503,410.5345162762,447.69106452518,479.82340237272,523.2511306012],description:"Theoretical nine-tone surupan gamut"},sur_ajeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan ajeng"},sur_degung:{frequencies:[261.6255653006,322.09885310804,345.21700307457,396.55020354877,488.21056770985,523.2511306012],description:"Surupan degung"},sur_madenda:{frequencies:[261.6255653006,322.09885310804,345.21700307457,425.01198472693,488.21056770985,523.2511306012],description:"Surupan madenda"},sur_melog:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,410.5345162762,523.2511306012],description:"Surupan melog"},sur_miring:{frequencies:[261.6255653006,285.30470202322,305.78200836532,389.73770840504,417.71053321823,523.2511306012],description:"Surupan miring"},sur_x:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan tone-gender X (= unmodified nyorog)"},sur_y:{frequencies:[261.6255653006,280.40333801024,300.52885648597,383.0422478503,410.5345162762,523.2511306012],description:"Surupan tone-gender Y (= mode on pamiring)"},sverige:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012,554.36526195375,587.32953583482,622.25396744417,659.25511382574,698.45646286601,739.98884542327,783.9908719635,830.60939515989,880,932.32752303618,987.76660251225,1046.5022612024,1174.65907166964,1318.51022765149,1396.91292573202,1567.98174392701],description:"Scale on Swedish 50 crown banknote of some kind of violin."},syntonolydian:{frequencies:[261.6255653006,294.32876096318,331.11985608357,372.50983809402,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Greek Syntonolydian, also genus duplicatum medium, or ditonum (Al-Farabi)"},syrian:{frequencies:[261.6255653006,268.67837258085,275.62199471997,279.38237857051,286.74979536837,294.32876096318,302.10804307229,310.07474405997,314.30517589183,322.59351978942,326.6631048533,331.11985608357,339.85160932548,348.83408706747,358.05397697456,367.49599295996,372.50983809402,382.33306049116,392.4383479509,402.81072409638,413.43299207996,419.07356785577,430.12469305256,441.49314144476,453.13547910064,465.11211608996,477.40530263275,489.99465727995,496.67978412536,509.77741398822,523.2511306012],description:"After ^Sayh.'Ali ad-Darwis^ (Shaykh Darvish) from d'Erlanger vol.5, p.29"},szpak_24:{frequencies:[261.6255653006,270.98948203641,277.18263097687,287.10335517712,293.66476791741,304.17540907689,311.12698372208,322.26262012861,329.62755691287,341.42535271779,349.22823143301,361.7275606831,369.99442271164,383.23700075636,391.99543598175,406.02545869431,415.30469757995,430.16898885692,440,455.74816803176,466.16376151809,482.84836435151,493.88330125613,511.56002220218,523.2511306012],description:"Stephen Szpak's scale, TL 2-1-2004"},pagano_b:{frequencies:[261.6255653006,277.97716313189,289.55954492905,312.72430852337,333.57259575826,351.8148470888,370.63621750918,389.16802838464,416.96574469783,444.76346101102,463.29527188648,486.4600354808,523.2511306012],description:"Pat Pagano and David Beardsley, 17-limit scale, TL 27-2-2001"},palace:{frequencies:[261.6255653006,277.01530443593,294.32876096318,299.00064605783,336.37572681506,348.83408706747,373.75080757229,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Palace mode+"},palace2:{frequencies:[261.6255653006,277.01530443593,336.37572681506,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Byzantine Palace mode, 17-limit"},panpipe1:{frequencies:[261.6255653006,305.78200836532,346.61566493686,386.59871897734,424.03113209229,475.68400784708,523.2511306012],description:"Palina panpipe of Solomon Islands. 1/1=f+45c. From Ocora CD Guadalcanal"},panpipe2:{frequencies:[261.6255653006,301.39807245198,340.46429857933,389.512652082,435.70052664441,481.48922855473,540.45338572244,606.98892366383,675.83458963267,749.45240308975,819.17415016614,915.78156525194,979.24522642508,1073.44040298899,1178.73719255088,1360.28482360484],description:"Lalave panpipe of Solomon Islands. 1/1=f'+47c."},panpipe3:{frequencies:[261.6255653006,302.44445076078,341.44901934006,382.59999559751,433.19107626846,482.88183400971,542.01653249392,602.10016957865,677.78929781797,755.1012944609,822.018116801,906.30932187391,994.06270356141,1067.87449159209,1155.14617783291,1300.35790771888],description:"Tenaho panpipe of Solomon Islands. 1/1=f'+67c."},parachrom:{frequencies:[261.6255653006,274.52698453615,288.06460709314,349.22823143301,391.99543598175,411.32572372413,431.60923940535,523.2511306012],description:"Parachromatic, new genus 5 + 5 + 20 parts"},parakleismic:{frequencies:[261.6255653006,269.41173453909,271.00883762044,279.07425994419,280.72864356353,282.39283618632,290.79705467987,292.52093234567,301.22657042972,303.0122754386,312.03014360907,313.87989341557,323.22118988972,325.13728335605,327.06473376202,336.79842078181,338.79499972275,348.87778808468,350.94597487438,361.39038519337,363.53274806687,374.35175001315,376.5709514911,387.77797996035,390.07677146523,392.38919046486,404.06698135965,406.46233589795,418.55895395107,421.04021853379,433.57068509561,436.14094342919,449.12081866987,451.783257426,465.22865943552,467.98658728446,470.76086444006,484.77105399159,487.64483417146,502.15750307968,505.13434926963,520.16751901001,523.2511306012],description:"Parakleismic temperament, g=315.250913, 5-limit"},parizek:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone Linear Level tuning, 1/1=Ab"},parizek_13lqmt:{frequencies:[261.6255653006,272.70676208351,292.18581651805,313.05623198362,325.57848126297,348.83408706747,365.23227064756,391.32028997953,406.97310157871,436.04260883433,467.18850946536,486.97636086341,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_17lqmt:{frequencies:[261.6255653006,272.52663052146,291.99281841585,312.60407618638,327.03195662575,350.39138209902,364.70475555078,390.75509523297,408.78994578219,436.04260883433,467.18850946536,488.44386904122,523.2511306012],description:"To tune the scale by ear, please choose the intervals in the following order:"},parizek_7lmtd1:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"Use SET MIDDLE 62"},parizek_7lqmtd2:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,390.69417751556,418.60090448096,437.98922762377,468.83301301868,488.36772189445,523.2511306012],description:"Use SET MIDDLE 62"},parizek_cirot:{frequencies:[261.6255653006,273.76082553017,293.33333347996,307.98092841354,327.40170814054,348.04713286849,366.66693712906,392.88175996935,409.71484950008,438.01699797506,463.01593599647,491.10256480205,523.2511306012],description:"Overtempered circular tuning (1/1 is F)"},parizek_epi:{frequencies:[261.6255653006,283.42769574232,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"In The Epimoric World"},parizek_epi2:{frequencies:[261.6255653006,283.42769574232,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,523.2511306012,523.2511306012],description:"In the Epimoric World - extended (version for two keyboards)"},parizek_epi2a:{frequencies:[261.6255653006,283.42769574232,287.78812183066,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_ji1:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone septimal tuning, 2002."},parizek_jiweltmp:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,329.45441556372,348.83408706747,370.63621750918,392.4383479509,416.96574469783,440.63253103259,465.11211608996,494.18162334558,523.2511306012],description:"April 2003 - Petr Parizek"},jiwt2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,331.11985608357,348.83408706747,372.08969287196,392.4383479509,415.8649508569,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"June 2003 - Petr Parizek"},parizek_llt7:{frequencies:[261.6255653006,283.42769574232,327.03195662575,359.73515228832,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"7-tone mode of Linear Level Tuning 2000 (= wilson_helix)"},parizek_qmeb1:{frequencies:[261.6255653006,273.53155294581,293.066620053,305.25690181412,326.9069921792,350.33366042609,366.2083106197,392.1884190578,408.50877577745,437.87542071709,457.7197748295,488.61098601707,523.2511306012],description:"Equal beating quasi-meantone tuning no. 1 - F...A# (1/1 = 261.7Hz)(3/2 5/3 5/4 7/4 7/6)"},parizek_qmeb2:{frequencies:[261.6255653006,274.12423619715,293.39509530855,306.21121252767,327.1564453797,350.32795211486,366.55713600477,391.6914154272,409.44351174042,438.20041390279,457.4712730142,489.73875803795,523.2511306012],description:"Equal beating quasi-meantone tuning no. 2 - F...A# (1/1 = 262.7Hz)"},parizek_qmeb3:{frequencies:[261.6255653006,274.23252240717,293.57983281823,306.4052273004,327.28159934073,350.29865766202,366.78755898655,391.93906252094,409.53887392713,438.37260750749,457.59509656107,490.04864950866,523.2511306012],description:"Equal beating quasi-meantone tuning no. 3 - F...A#. 1/1 = 262Hz"},parizek_qmtp12:{frequencies:[261.6255653006,273.55480692456,293.00227310437,305.44101254122,326.6631048533,350.4133380576,366.39100206434,391.84790908124,408.48291326839,437.52264545758,457.47219685667,489.2574430773,523.2511306012],description:"12-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (F...A#)"},parizek_qmtp24:{frequencies:[261.6255653006,273.14323313659,280.64720643091,285.59764149034,293.00227310437,305.44101254122,313.83229199844,326.6631048533,335.63741195089,341.5578378819,350.4133380576,365.83975262993,375.89034660662,381.37064019061,391.84790908124,407.86833637529,419.07356785577,437.52264545758,448.86620556368,457.47219685667,469.33298761093,489.2574430773,502.69865025911,510.02774559919,523.2511306012],description:"24-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (Bbb...C##)"},parizek_syndiat:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,436.04260883433,441.49314144476,484.4917875937,490.54793493862,523.2511306012],description:"Petr Parizek, diatonic scale with syntonic alternatives"},parizek_syntonal:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Petr Parizek, Syntonic corrections in JI tonality, Jan. 2004"},parizek_temp19:{frequencies:[261.6255653006,276.69969455132,294.32876096318,310.68035879446,328.58088727969,349.51540364377,368.93292606842,392.4383479509,415.04954182698,438.10784970625,466.02053819169,492.87133091954,523.2511306012],description:"Petr Parizek, genus [3 3 19 19 19] well temperament"},"partch-barstow":{frequencies:[261.6255653006,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,348.83408706747,359.73515228832,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,470.92601754108,479.64686971777,490.54793493862,523.2511306012],description:"Guitar scale for Partch's Barstow (1941, 1968)"},"partch-greek":{frequencies:[261.6255653006,261.6255653006,271.31540105247,294.32876096318,279.06726965397,348.83408706747,313.95067836072,392.4383479509,392.4383479509,406.97310157871,418.60090448096,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white'},"partch-grm":{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" mixed'},"partch-indian":{frequencies:[261.6255653006,269.80136421624,277.97716313189,285.40970760065,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,383.71749577421,392.4383479509,406.97310157871,411.12588832951,428.11456140098,441.49314144476,457.84473927605,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"Partch's Indian Chromatic, Exposition of Monophony, 1933."},"partch-ur":{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch curved keyboard, published in Interval"},"partch_29-av":{frequencies:[261.6255653006,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,488.36772189445,498.33441009638,507.3950357345,523.2511306012],description:"29-tone JI scale from Partch's Adapted Viola 1928-30"},partch_29:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,523.2511306012],description:"Partch/Ptolemy 11-limit Diamond"},partch_37:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol.9(2)'},partch_39:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch Keyboard 39 tones, published in Interval"},partch_41:{frequencies:[261.6255653006,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,523.2511306012],description:"13-limit Diamond after Partch, Genesis of a Music, p 454, 2nd edition"},partch_41a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},partch_41comb:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,274.70684356563,279.06726965397,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,490.54793493862,498.33441009638,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"41-tone JI combination from Partch's 29-tone and 37-tone scales"},partch_43:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:"Harry Partch's 43-tone pure scale"},partch_43a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},patala:{frequencies:[261.6255653006,289.6217982776,320.24370022528,355.94891173479,393.58362272115,439.74591942221,480.6555937997,537.34060327431],description:"Observed patala tuning from Burma, Helmholtz/Ellis p. 518, nr.83"},pelog1:{frequencies:[261.6255653006,285.79952600623,313.83440569119,359.87690576543,393.35634555235,426.98050185716,482.04578814299,523.2511306012],description:"Gamelan Saih pitu from Ksatria, Den Pasar (South Bali). 1/1=312.5 Hz"},pelog10:{frequencies:[261.6255653006,290.16653606067,310.14521470005,342.49164912079,385.30310526088,418.60090448096,442.38504678101,523.2511306012],description:"Balinese saih 7 scale, Krobokan. 1/1=275 Hz. McPhee, 1966"},pelog11:{frequencies:[261.6255653006,289.11520789678,327.03195662575,352.6257619269,388.64667309147,441.73012112348,478.69895237627,523.2511306012],description:"Balinese saih pitu, gamelan luang, banjar Se`se'h. 1/1=276 Hz. McPhee, 1966"},pelog11i:{frequencies:[261.6255653006,267.83009854382,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,392.61532371972,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog12:{frequencies:[261.6255653006,284.41230790592,308.04300430555,358.68021049276,385.68672051706,409.31741667997,472.61392441399,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Tampak Gangsai, 1/1=310, McPhee"},pelog13:{frequencies:[261.6255653006,289.80062617913,323.61069924911,351.78575931905,394.45085229937,454.02098012766,494.27106657141,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Klungkung, 1/1=325. McPhee, 1966"},pelog14:{frequencies:[261.6255653006,287.66412867175,309.98289727559,347.18084494866,375.69927149802,402.97776645827,427.77639824032,523.2511306012],description:"Balinese saih pitu, suling gambuh, Tabanan, 1/1=211 Hz, McPhee, 1966"},pelog15:{frequencies:[261.6255653006,284.9387344858,307.6043148279,344.51683351465,375.60105909492,407.98046074103,427.4081017287,523.2511306012],description:"Balinese saih pitu, suling gambuh, Batuan, 1/1=202 Hz. McPhee, 1966"},pelog2:{frequencies:[261.6255653006,285.30470202322,314.92395982138,345.81573716922,388.6137256405,424.52127512829,466.97226207056,523.2511306012],description:"Bamboo gambang from Batu lulan (South Bali). 1/1=315 Hz"},pelog3:{frequencies:[261.6255653006,285.63448939555,315.83481057014,390.18821123181,421.34544350737,523.2511306012],description:"Gamelan Gong from Padangtegal, distr. Ubud (South Bali). 1/1=555 Hz"},pelog4:{frequencies:[261.6255653006,290.96323214696,317.29765457754,352.87817160549,385.03871768789,434.94616895528,470.49199937597,523.2511306012],description:"Hindu-Jav. demung, excavated in Banjarnegara. 1/1=427 Hz"},pelog5:{frequencies:[261.6255653006,284.64626913494,310.94732162256,358.21775774651,390.8649420513,427.47405410759,468.32288027948,523.2511306012],description:"Gamelan Kyahi Munggang (Paku Alaman, Jogja). 1/1=199.5 Hz"},pelog6:{frequencies:[261.6255653006,282.02769802256,315.83481057014,354.51258839996,386.37547528213,413.39000965417,523.2511306012],description:"Gamelan Semar pegulingan, Ubud (S. Bali). 1/1=263.5 Hz"},pelog7:{frequencies:[261.6255653006,281.2143451833,303.31920717687,353.89879686059,384.81637482457,412.43597848639,448.72664641273,523.2511306012],description:"Gamelan Kantjilbelik (kraton Jogja). Measured by Surjodiningrat, 1972."},pelog8:{frequencies:[261.6255653006,281.2143451833,305.0763174688,362.1707891162,386.59871897734,415.30469757995,456.83405152976,529.33101587613,573.91491069685,623.33318620372,730.64478690489,786.25839925218,840.74610520523,945.88853913022,1075.30214607265],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},pelog9:{frequencies:[261.6255653006,282.57123920205,305.19382000629,356.01745236555,384.52011812375,415.30469757995,448.5538823653,523.2511306012],description:"9-tET Pelog"},pelog9i:{frequencies:[261.6255653006,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog_24:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Subset of 24-tET (Sumatra?)"},pelog_a:{frequencies:[261.6255653006,280.7274598329,305.95868600104,363.84824628932,386.82209166041,411.72190027758,452.10885997356,523.2511306012],description:"Pelog, average class A. Kunst 1949"},pelog_alv:{frequencies:[261.6255653006,299.00064605783,313.95067836072,343.38355445704,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"Bill Alves JI Pelog, 1/1 vol. 9 no. 4, 1997. 1/1=293.33"},pelog_av:{frequencies:[261.6255653006,280.40333801024,305.78200836532,357.39105439675,385.26118901859,411.72190027758,452.89298412314,523.2511306012],description:'"Normalised Pelog", Kunst, 1949. Average of 39 Javanese gamelans'},pelog_b:{frequencies:[261.6255653006,280.07959041159,302.79405018898,354.30787302884,382.82105786018,408.64182041696,451.58686491179,523.2511306012],description:"Pelog, average class B. Kunst 1949"},pelog_c:{frequencies:[261.6255653006,279.91785681123,304.37225518229,350.84574289301,384.81637482457,410.29745071461,451.58686491179,523.2511306012],description:"Pelog, average class C. Kunst 1949"},pelog_he:{frequencies:[261.6255653006,283.17034563789,338.50336851425,364.68988616898,389.06292924114,420.13030572059,493.31307433255,523.2511306012],description:"Observed Javanese Pelog scale, Helmholtz/Ellis p. 518, nr.96"},pelog_jc:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"John Chalmers' Pelog, on keys C# E F# A B c#, like Olympos' Enharmonic on 4/3"},pelog_laras:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:'Lou Harrison, gamelan "Si Betty"'},pelog_me1:{frequencies:[261.6255653006,281.13654920971,305.96893643544,353.85975480175,389.33427481332,412.3928606827,454.07565526112,523.2511306012],description:"Gamelan Kyahi Kanyut Mesem pelog (Mangku Nagaran). 1/1=295 Hz"},pelog_me2:{frequencies:[261.6255653006,277.86440299076,299.96729002515,349.58586605592,383.41679241104,405.97081699752,447.47001910635,523.2511306012],description:"Gamelan Kyahi Bermara (kraton Jogja). 1/1=290 Hz"},pelog_me3:{frequencies:[261.6255653006,281.75056896146,306.90688773629,358.59164065877,385.12012728597,411.64865826518,457.38747412584,523.2511306012],description:"Gamelan Kyahi Pangasih (kraton Solo). 1/1=286 Hz"},pelog_pa:{frequencies:[261.6255653006,286.29520819723,313.29104303136,342.83241505062,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:'"Blown fifth" pelog, von Hornbostel, type a.'},pelog_pa2:{frequencies:[261.6255653006,286.29520819723,313.29104303136,353.69443592699,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:"New mixed gender Pelog"},pelog_pb:{frequencies:[261.6255653006,277.98432293805,304.19649364034,353.69443592699,387.04559340587,411.24653512154,450.02449304881,523.2511306012],description:'"Primitive" Pelog, step of blown semi-fourths, von Hornbostel, type b.'},pelog_pb2:{frequencies:[261.6255653006,277.50302994288,303.66981774726,353.69443592699,387.04559340587,410.5345162762,449.24533531117,523.2511306012],description:'"Primitive" Pelog, Kunst: Music in Java, p. 28'},pelog_schmidt:{frequencies:[261.6255653006,287.78812183066,313.95067836072,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Modern Pelog designed by Dan Schmidt and used by Berkeley Gamelan"},pelog_selun:{frequencies:[261.6255653006,281.10829462369,350.68958753059,378.52209447746,416.55977244877,523.2511306012,562.21664032682,701.37917506118,757.04418895493,833.11970794305,1046.5022612024,1124.43328065364],description:"Gamelan selunding from Kengetan, South Bali (Pelog), 1/1=141 Hz"},pelog_slen:{frequencies:[261.6255653006,289.4545544734,306.66641795878,334.42210013281,344.22141564971,354.30787302884,386.37547528213,397.69714089209,446.39994737251,459.48046426806,493.88330125613,523.2511306012],description:"W.P. Malm, pelog+slendro, Musical Cultures Of The Pacific, The Near East, And Asia. P: 1,3,5,6,8,10; S: 2,4,7,9"},pelog_str:{frequencies:[261.6255653006,282.73796785026,305.22982618403,329.86096249197,356.10146388137,384.83778957396,415.4517078616,448.97742116962,484.69365917187,523.80699136456],description:"JI Pelog with stretched 2/1 and extra tones between 2-3, 6-7. Wolf, XH 11, '87"},pelogic:{frequencies:[261.6255653006,268.93425429917,294.59920226397,322.71340889889,353.51061198674,363.38617257172,398.06486099125,436.0530078362,477.66644151787,523.2511306012],description:"Pelogic temperament, g=521.1, 5-limit"},pelogic2:{frequencies:[261.6255653006,252.56770712848,285.96465797334,276.06414495892,312.56802260838,301.74646235804,341.64630500046,386.82209166041,373.42974737602,422.80824892286,408.17001145418,462.1422075194,523.2511306012],description:"Pelogic temperament, g=677.0 in cycle of fifths order"},penta1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,331.11985608357,372.50983809402,376.74081403286,397.34382730029,423.83341578697,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Pentagonal scale 9/8 3/2 16/15 4/3 5/3"},penta2:{frequencies:[261.6255653006,267.07609791103,286.15296204753,305.22982618403,312.97980223949,333.84512238879,356.10146388137,363.36884069528,400.61414686654,436.04260883433,457.84473927605,476.92160341255,523.2511306012],description:"Pentagonal scale 7/4 4/3 15/8 32/21 6/5"},penta_opt:{frequencies:[261.6255653006,292.5084949701,327.03692214239,391.62201198054,436.95817401562,523.2511306012],description:"Optimally consonant major pentatonic, John deLaubenfels, 2001"},pentadekany:{frequencies:[261.6255653006,283.42769574232,299.7792935736,305.22982618403,327.03195662575,354.2846196779,359.73515228832,381.53728273004,389.71308164569,419.69101100305,425.14154361347,436.04260883433,457.84473927605,479.64686971777,495.99846754905,523.2511306012],description:"2)6 1.3.5.7.11.13 Pentadekany (1.3 tonic)"},pentadekany2:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,305.22982618403,327.03195662575,343.38355445704,359.73515228832,381.53728273004,392.4383479509,419.69101100305,436.04260883433,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"2)6 1.3.5.7.9.11 Pentadekany (1.3 tonic)"},pentadekany3:{frequencies:[261.6255653006,277.97716313189,278.79474302345,287.78812183066,291.4672313427,300.86940009569,305.77487944508,319.67373760167,359.73515228832,376.08675011961,405.51962621593,413.69542513157,430.86460285443,444.76346101102,506.89953276991,523.2511306012],description:"2)6 1.5.11.17.23.31 Pentadekany (1.5 tonic)"},pentatetra1:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,392.4383479509,413.09299784305,436.04260883433,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra2:{frequencies:[261.6255653006,275.39533189537,307.79478270659,327.03195662575,348.83408706747,392.4383479509,413.09299784305,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra3:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,392.4383479509,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatriad:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"4:5:6 Pentatriadic scale"},pentatriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"3:5:9 Pentatriadic scale"},pepper:{frequencies:[261.6255653006,274.70684356563,290.69507255622,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,367.91095120397,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Keenan Pepper's 17-tone jazz tuning, TL 07-06-2000"},pepper2:{frequencies:[261.6255653006,281.81099471089,295.05751399041,308.92668738628,332.76158224462,348.40303271111,375.28368107222,392.9238840789,423.23948674937,443.13385158124,463.96335069158,499.75992392917,523.2511306012],description:`Keenan Pepper's "Noble Fifth" with chromatic/diatonic semitone = Phi (12)`},peprmint:{frequencies:[261.6255653006,270.64528749638,281.81099405977,291.52662269553,295.0575145017,305.22982618403,308.92668738628,319.57714845986,332.76158147578,344.23376699744,348.40303331485,360.41446869983,375.28368085545,388.22184514393,392.92388339801,406.47020562703,423.23948723831,437.83096109824,443.13385158124,458.41119713782,463.9633498876,479.95880678291,499.75992479518,516.98949333115,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},"perkis-indian":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.01393146398,369.99442271164,377.90359432309,388.70083987518,400.13321751856,412.18367363396,425.14154361347,438.99882991118,453.48431318771,469.12170329763,485.27322596079,503.87145909745,523.2511306012],description:"Indian 22 Perkis"},"perrett-tt":{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Perrett Tierce-Tone"},perrett:{frequencies:[261.6255653006,274.70684356563,279.06726965397,348.83408706747,392.4383479509,412.06026534844,418.60090448096,523.2511306012],description:"Perrett / Tartini / Pachymeres Enharmonic"},perrett_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Perrett's 14-tone system (subscale of tierce-tone)"},perrett_chrom:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,392.4383479509,412.06026534844,441.49314144476,523.2511306012],description:"Perrett's Chromatic"},perry:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Robin Perry, Tuning List 22-9-'98"},perry2:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,415.27867508032,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Robin Perry, 7-limit scale, TL 22-10-2006"},perry3:{frequencies:[261.6255653006,277.97716313189,294.32876096318,307.79478270659,327.03195662575,348.83408706747,369.35373924791,370.63621750918,392.4383479509,418.60090448096,444.76346101102,465.11211608996,492.47165233054,523.2511306012],description:"Robin Perry, symmetrical 3,5,17 scale, TL 22-10-2006"},"persian-far":{frequencies:[261.6255653006,275.58617649731,282.84340331238,294.51413096332,310.22971009486,318.39923223688,331.53706992441,349.22823143301,362.58942698662,376.46181130035,391.99543598175,412.91271853531,423.78627283082,441.27260666252,464.81937009253,477.05982293263,496.7443381147,523.2511306012],description:"Hormoz Farhat, average of observed Persian tar and sehtar tunings (1966)"},"persian-vaz":{frequencies:[261.6255653006,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,329.62755691287,349.22823143301,359.46139971304,380.8360868427,391.99543598175,415.30469757995,427.47405410759,440,466.16376151809,479.82340237272,493.88330125613,523.2511306012],description:"Vaziri's Persian tuning, using quartertones"},persian:{frequencies:[261.6255653006,275.62199471997,282.55561052465,294.32876096318,310.07474405997,317.87506184023,331.11985608357,348.83408706747,363.36884069528,376.74081403286,392.4383479509,413.43299207996,423.83341578697,441.49314144476,465.11211608996,476.81259276034,496.67978412536,523.2511306012],description:"Persian Tar Scale, from Dariush Anooshfar, Internet Tuning List 2/10/94"},persian2:{frequencies:[261.6255653006,275.62199471997,288.32205155576,294.32876096318,310.07474405997,321.08592105074,331.11985608357,348.83408706747,367.49599295996,384.42940207435,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,489.99465727995,512.57253609913,523.2511306012],description:"Traditional Persian scale, from Mark Rankin"},phi1_13:{frequencies:[261.6255653006,272.27874348295,293.41755524936,305.36527715608,329.07281683115,342.47239171077,356.41758627629,384.088434771,399.72820043646,416.00480451705,448.3020273708,466.55651779723,502.7784067407,523.2511306012],description:"Pythagorean scale with (Phi + 1) / 2 as fifth"},phi_10:{frequencies:[261.6255653006,277.06593756944,293.41755524936,323.38703872151,342.47239171077,362.68389667063,399.72820043646,423.31898451752,448.3020273708,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_12:{frequencies:[261.6255653006,280.653851324,301.06608340242,314.41721066027,337.28508524374,352.24238645938,377.86132347501,405.34355110824,423.31898451752,454.10739278061,474.24531572837,508.73764640933,531.29821178855],description:"Non-Octave Pythagorean scale with Phi as fourth. Jacky Ligon TL 12-04-2001"},phi_13:{frequencies:[261.6255653006,277.06593756944,293.41755524936,305.36527715608,323.38703872151,342.47239171077,362.68389667063,377.45230514615,399.72820043646,423.31898451752,448.3020273708,466.55651779723,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_13a:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:"Non-Octave Pythagorean scale with Phi as fifth, Jacky Ligon TL 12-04-2001"},phi_13b:{frequencies:[261.6255653006,277.56939878091,287.90530191745,305.45065986668,316.82478268872,336.13253486432,356.61692887617,369.89633953852,392.4383479509,407.05164722964,431.8579526603,458.17598957099,475.23717379553,504.19880204444],description:"Non-Octave Pythagorean scale with 12 3/2s, Jacky Ligon, TL 12-04-2001"},phi_17:{frequencies:[261.6255653006,276.86436108535,292.99059544936,310.05629713556,328.11582814217,347.22745468775,367.4522682176,388.8548834608,411.50435256812,435.47307590797,460.83762934409,487.67984759381,516.08523529366,546.14543793146,577.9565447239,611.62018657326,647.24497389216,684.94478342154],description:"Phi + 1 equal division by 17, Brouncker (1653)"},phi_7b:{frequencies:[261.6255653006,277.06593756944,299.7954575021,323.38703872151,342.47239171077,369.42210382256,399.72820043646,423.31898451752],description:"Heinz Bohlen's Pythagorean scale with Phi as fifth (1999)"},phi_7be:{frequencies:[261.6255653006,277.18263097687,299.37379946195,323.3415889232,342.56848033562,369.99442271164,399.61607881612,423.37848741825],description:"36-tET approximation of phi_7b"},phi_8:{frequencies:[261.6255653006,280.010356995,292.01318753119,312.53354015396,325.93049860793,348.83408706747,373.34714284662,389.35091690288,416.71138708025],description:"Non-Octave Pythagorean scale with 4/3s, Jacky Ligon, TL 12-04-2001"},phi_8a:{frequencies:[261.6255653006,275.77662731691,284.90271245142,300.31281179658,310.2506767011,327.03195662575,344.72084112096,356.12824371673,375.39107678967],description:"Non-Octave Pythagorean scale with 5/4s, Jacky Ligon, TL 12-04-2001"},phillips_19:{frequencies:[261.6255653006,274.63272075836,286.12988535196,293.66476791741,305.42895910556,326.59518553839,329.62755691287,342.83241505062,349.22823143301,366.5907009274,384.81637482457,391.99543598175,407.69874723177,428.71043212875,440,457.62637091093,489.33987776603,493.88330125613,513.66823365307,523.2511306012],description:"Pauline Phillips, organ manual scale, TL 7-10-2002"},phillips_19a:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,326.62388782443,329.50688232588,342.79852229325,349.26020182051,366.55580177366,381.34192228364,391.95955371998,407.7704102616,427.96347506501,439.87918162894,457.62301915088,489.33808574423,493.65730140218,509.07699553894,523.2511306012],description:"Adaptation by Gene Ward Smith with more consonant chords, TL 25-10-2002"},phillips_22:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,343.38355445704,349.22797321314,367.91095120397,392.4383479509,407.76797091773,408.78994578219,416.96574469783,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"All-key 19-limit JI scale (2002), TL 21-10-2002"},phillips_ji:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,349.22797321314,367.91095120397,386.30649876417,392.4383479509,407.76797091773,408.78994578219,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:'Pauline Phillips, JI 0 #/b "C" scale (2002), TL 8-10-2002'},phryg_chromcon2:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Harmonic Conjunct Chromatic Phrygian"},phryg_chromconi:{frequencies:[261.6255653006,283.42769574232,348.83408706747,370.63621750918,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Conjunct Chromatic Phrygian"},phryg_chrominv:{frequencies:[261.6255653006,272.52663052146,283.42769574232,348.83408706747,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian"},phryg_chromt:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,324.77656382143,336.37572681506,362.25078272391,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,627.90135672144,649.55312764287,672.75145363011,724.50156544782,784.8766959018,819.00176963666,837.20180896192,856.22912280196,941.85203508216,1046.5022612024],description:"Phrygian Chromatic Tonos"},phryg_diat:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,392.4383479509,448.50096908674,483.00104363188,523.2511306012],description:"Schlesinger's Phrygian Harmonia, a subharmonic series through 13 from 24"},phryg_diatcon:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,448.50096908674,483.00104363188,523.2511306012],description:"A Phrygian Diatonic with its own trite synemmenon replacing paramese"},phryg_diatinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Conjunct Phrygian Harmonia with 17, the local Trite Synemmenon"},phryg_diatsinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,348.83408706747,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Schlesinger's Phrygian Harmonia, a harmonic series from 12 from 24"},phryg_enh:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the enharmonic genus"},phryg_enhcon:{frequencies:[261.6255653006,283.42769574232,288.87822835275,294.32876096318,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Harmonic Conjunct Enharmonic Phrygian"},phryg_enhinv:{frequencies:[261.6255653006,327.03195662575,337.93302184661,348.83408706747,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Schlesinger's Enharmonic Phrygian Harmonia"},phryg_enhinv2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,348.83408706747,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Inverted harmonic form of Schlesinger's Enharmonic Phrygian"},phryg_penta:{frequencies:[261.6255653006,270.64713651786,285.40970760065,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the pentachromatic genus"},phryg_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,392.4383479509,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,784.8766959018,856.22912280196,941.85203508216,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Phrygian Tonos"},phryg_tri1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the chromatic genus"},phryg_tri1inv:{frequencies:[261.6255653006,305.22982618403,327.03195662575,348.83408706747,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian Harmonia"},phryg_tri2:{frequencies:[261.6255653006,269.10058145205,285.40970760065,348.83408706747,392.4383479509,409.50088481833,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the second trichromatic genus"},phryg_tri3:{frequencies:[261.6255653006,269.10058145205,277.01530443593,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the first trichromatic genus"},phrygian:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,523.2511306012],description:"Old Phrygian ??"},phrygian_diat:{frequencies:[261.6255653006,277.01530443593,294.32876096318,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012,554.03060887186,588.65752192635,672.75145363011,697.66817413493,724.50156544782,753.48162806573,784.8766959018,856.22912280196,897.00193817349,941.85203508216,991.42319482333,1046.5022612024],description:"Phrygian Diatonic Tonos"},phrygian_enh:{frequencies:[261.6255653006,277.01530443593,294.32876096318,303.82323712328,308.80394592858,313.95067836072,348.83408706747,392.4383479509,400.78810003496,405.0976494977,409.50088481833,459.44001711325,523.2511306012],description:"Phrygian Enharmonic Tonos"},phrygian_harm:{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Phrygian Harmonia-Aliquot 24 (flute tuning)"},piano:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Enhanced Piano Total Gamut, see 1/1 vol. 8/2 January 1994"},piano7:{frequencies:[261.6255653006,275.93321340298,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Enhanced piano 7-limit"},pipedum_10:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,372.08969287196,396.89567239676,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"2048/2025 and 34171875/33554432 are homophonic intervals"},pipedum_10a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025 and 25/24, Manuel Op de Coul, 2001"},pipedum_10b:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"225/224, 64/63 and 25/24 are homophonic intervals"},pipedum_10c:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 49/48 are homophonic intervals"},pipedum_10d:{frequencies:[261.6255653006,279.06726965397,299.00064605783,318.93402246168,343.38355445704,372.08969287196,392.4383479509,425.24536328225,448.50096908674,488.36772189445,523.2511306012],description:"1029/1024, 2048/2025 and 64/63 are homophonic intervals"},pipedum_10e:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,367.91095120397,406.97310157871,429.2294430713,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025, 64/63 and 49/48 are homophonic intervals"},pipedum_10f:{frequencies:[261.6255653006,280.31310567921,294.32876096318,327.03195662575,348.83408706747,373.75080757229,392.4383479509,420.46965851882,465.11211608996,490.54793493862,523.2511306012],description:"225/224, 64/63 and 28/27 are homophonic intervals"},pipedum_10g:{frequencies:[261.6255653006,280.31310567921,299.00064605783,325.57848126297,348.83408706747,372.08969287196,398.6675280771,425.24536328225,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 2048/2025 are homophonic intervals"},pipedum_10h:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,373.75080757229,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 64/63 are homophonic intervals"},pipedum_10i:{frequencies:[261.6255653006,279.06726965397,294.32876096318,321.92208230347,343.38355445704,367.91095120397,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"225/224, 2048/2025 and 49/48 are homophonic intervals"},pipedum_10j:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"25/24, 28/27 and 49/48, Gene Ward Smith, 2002"},pipedum_10k:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.49131749323,343.38355445704,367.91095120397,394.1903048614,420.46965851882,455.80987376816,488.36772189445,523.2511306012],description:"2048/2025, 225/224 and 2401/2400"},pipedum_11:{frequencies:[261.6255653006,272.52663052146,282.55561052465,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"16/15 and 15625/15552 are homophonic intervals"},pipedum_11a:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,376.74081403286,381.53728273004,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 10/9, Gene Ward Smith, 2002"},pipedum_12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12a:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12b:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,320.49131749323,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,488.36772189445,523.2511306012],description:"64/63, 50/49 comma and 36/35 chroma"},pipedum_12c:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 36/35 are homophonic intervals"},pipedum_12d:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"50/49, 128/125 and 225/224 are homophonic intervals"},pipedum_12e:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,373.75080757229,392.4383479509,418.60090448096,439.53094970501,467.18850946536,500.55911728431,523.2511306012],description:"50/49, 225/224 and 3136/3125 are homophonic intervals"},pipedum_12f:{frequencies:[261.6255653006,273.74326726486,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,408.78994578219,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"128/125, 3136/3125 and 703125/702464 are homophonic intervals"},pipedum_12g:{frequencies:[261.6255653006,279.06726965397,286.15296204753,306.59245933664,327.03195662575,348.83408706747,366.27579142084,390.69417751556,408.78994578219,437.98922762377,457.84473927605,488.36772189445,523.2511306012],description:"50/49, 225/224 and 28672/28125 are homophonic intervals"},pipedum_12h:{frequencies:[261.6255653006,275.93321340298,291.02331101095,310.42486507835,330.74639366397,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.53496651643,465.11211608996,496.11959049595,523.2511306012],description:"2048/2025 and 67108864/66430125, Gene Ward Smith, 2004"},pipedum_12i:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,441.49314144476,465.11211608996,504.56359022259,523.2511306012],description:"64/63 and 6561/6272, Gene Ward Smith, 2004"},pipedum_12j:{frequencies:[261.6255653006,283.8170195002,285.83021674664,310.07474405997,336.37572681506,348.83408706747,378.42269266694,392.4383479509,413.43299207996,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"6561/6272 and 59049/57344"},pipedum_12k:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,523.2511306012],description:"64/63 and 729/686, Gene Ward Smith, 2004"},pipedum_12l:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,331.39238271409,348.83408706747,368.21375857121,392.4383479509,414.24047839262,441.49314144476,465.11211608996,497.08857407114,523.2511306012],description:"81/80, 361/360 and 513/512, Gene Ward Smith"},pipedum_13:{frequencies:[261.6255653006,276.76092858245,287.78812183066,309.14739649778,327.03195662575,345.95116072807,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051 are homophonic intervals. Op de Coul, 2001"},pipedum_13a:{frequencies:[261.6255653006,266.96486255163,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"15/14, 3136/3125, 2401/2400, Gene Ward Smith, 2002"},pipedum_13b:{frequencies:[261.6255653006,267.90457886781,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"15/14, 3136/3125, 6144/6125, Gene Ward Smith, 2002"},pipedum_13bp:{frequencies:[261.6255653006,282.55561052465,305.16005936662,336.45263027341,363.36884069528,392.4383479509,436.04260883433,470.92601754108,508.60009894437,545.05326104292,605.61473449213,654.0639132515,706.38902631162,784.8766959018],description:"78732/78125 and 250/243, twelfth based, Manuel Op de Coul, 2003"},pipedum_13bp2:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012,565.1112210493,627.90135672144,678.13346525916,726.73768139056,784.8766959018],description:"250/243 and 648/625, twelfth based, Manuel Op de Coul, 2003"},pipedum_13c:{frequencies:[261.6255653006,267.07609791103,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.57253609913,523.2511306012],description:"15/14, 2401/2400, 6144/6125, Gene Ward Smith, 2002"},pipedum_13d:{frequencies:[261.6255653006,281.04308772525,287.78812183066,309.14739649778,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"125/121 and 33275/32768, Joe Monzo, 2003"},pipedum_13e:{frequencies:[261.6255653006,276.76092858245,287.78812183066,304.4370214407,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051, Manuel Op de Coul, 2004"},pipedum_14:{frequencies:[261.6255653006,274.70684356563,284.76252005507,305.22982618403,320.49131749323,336.37572681506,348.83408706747,373.90653707544,392.4383479509,406.97310157871,427.14378008261,448.50096908674,480.73697623985,498.33441009638,523.2511306012],description:"81/80, 49/48 and 2401/2400, Paul Erlich, TL 17-1-2001"},pipedum_14a:{frequencies:[261.6255653006,274.70684356563,284.8811711051,305.22982618403,320.35783506196,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,427.32175665765,448.50096908674,480.53675259294,498.33441009638,523.2511306012],description:"81/80, 50/49 and 2401/2400, Paul Erlich, 2001"},pipedum_14b:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,313.95067836072,339.14425131559,353.19451315581,366.27579142084,392.4383479509,406.97310157871,418.60090448096,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 81/80 comma and 25/24 chroma"},pipedum_14c:{frequencies:[261.6255653006,280.31310567921,282.55561052465,305.22982618403,327.03195662575,336.37572681506,363.36884069528,366.27579142084,392.4383479509,403.65087217807,436.04260883433,467.18850946536,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 50/49 comma and 25/24 chroma"},pipedum_15:{frequencies:[261.6255653006,272.52663052146,290.69507255622,301.39265122629,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,454.2110508691,470.92601754108,502.32108537715,523.2511306012],description:"126/125, 128/125 and 875/864, 5-limit, Paul Erlich, 2001"},pipedum_15a:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,502.32108537715,523.2511306012],description:"Septimal version of pipedum_15, Manuel Op de Coul, 2001"},pipedum_15b:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,311.45900631024,327.03195662575,343.38355445704,357.69120255941,382.72082695402,398.6675280771,418.60090448096,439.53094970501,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"126/125, 128/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15c:{frequencies:[261.6255653006,274.70684356563,284.76252005507,299.00064605783,313.95067836072,327.03195662575,341.71502406609,358.80077526939,381.53728273004,400.61414686654,418.60090448096,436.04260883433,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"49/48, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15d:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,360.55273217989,379.68336007343,398.6675280771,418.60090448096,436.04260883433,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"64/63, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15e:{frequencies:[261.6255653006,273.37201925287,286.15296204753,299.00064605783,313.95067836072,332.22294006425,343.38355445704,358.80077526939,381.53728273004,398.6675280771,412.06026534844,436.04260883433,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"64/63, 875/864 and 1029/1024, Paul Erlich, 2001"},pipedum_15f:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,488.36772189445,490.54793493862,523.2511306012],description:"126/125, 64/63 comma and 28/27 chroma"},pipedum_15g:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"128/125 and 250/243"},pipedum_16:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,355.95315006884,373.75080757229,384.58958099188,400.61414686654,418.60090448096,439.53094970501,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"50/49, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_16a:{frequencies:[261.6255653006,272.52663052146,283.88190679319,301.39265122629,313.95067836072,327.03195662575,340.65828815182,354.85238349148,363.36884069528,385.78259356965,401.85686830172,418.60090448096,436.04260883433,454.2110508691,482.22824196207,502.32108537715,523.2511306012],description:"3125/3072 and 1990656/1953125, OdC 2004"},pipedum_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,465.11211608996,478.40103369253,508.71637697339,523.2511306012],description:"245/243, 64/63 and 525/512, Paul Erlich, 2001"},pipedum_17a:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,461.31528248922,478.40103369253,504.56359022259,523.2511306012],description:"245/243, 525/512 and 1728/1715, Paul Erlich, 2001"},pipedum_17b:{frequencies:[261.6255653006,264.89588486686,286.15296204753,294.32876096318,305.22982618403,327.03195662575,339.14425131559,343.38355445704,367.91095120397,381.53728273004,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"245/243, 64/63 comma and 25/24 chroma"},pipedum_17c:{frequencies:[261.6255653006,273.6806973752,285.83021674664,299.00064605783,310.07474405997,321.55899383997,336.37572681506,348.83408706747,364.90759650026,378.42269266694,392.4383479509,413.43299207996,428.74532511996,448.50096908674,465.11211608996,486.54346200035,504.56359022259,523.2511306012],description:"1605632/1594323 and 177147/175616, Manuel Op de Coul, 2002"},pipedum_17d:{frequencies:[261.6255653006,274.08392555301,284.23518205497,299.00064605783,308.34441624714,319.76457981184,336.37572681506,348.83408706747,365.44523407068,373.05867644715,392.4383479509,411.12588832951,426.35277308246,448.50096908674,465.11211608996,479.64686971777,504.56359022259,523.2511306012],description:"243/242, 99/98 and 64/63, Manuel Op de Coul, 2002"},pipedum_17e:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,310.07474405997,321.92208230347,336.37572681506,348.83408706747,362.16234259141,378.42269266694,395.66829320152,413.43299207996,429.2294430713,445.12682985172,465.11211608996,482.88312345521,504.56359022259,523.2511306012],description:"245/243, 1728/1715 and 32805/32768, Manuel Op de Coul, 2003"},pipedum_17f:{frequencies:[261.6255653006,269.80136421624,285.40970760065,294.32876096318,310.07474405997,319.76457981184,331.11985608357,348.83408706747,359.73515228832,380.54627680087,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,479.64686971777,507.3950357345,523.2511306012],description:"243/242 and 8192/8019, Manuel Op de Coul"},pipedum_17g:{frequencies:[261.6255653006,274.08392555301,285.40970760065,299.00064605783,305.22982618403,319.76457981184,336.37572681506,348.83408706747,359.73515228832,380.54627680087,392.4383479509,406.97310157871,428.11456140098,448.50096908674,457.84473927605,479.64686971777,499.46698830115,523.2511306012],description:"243/242, 896/891 and 99/98, Manuel Op de Coul"},pipedum_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,340.65828815182,350.39138209902,379.84156147346,390.69417751556,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 128/125, Paul Erlich, 2001"},pipedum_18a:{frequencies:[261.6255653006,269.10058145205,280.31310567921,293.02063313667,305.22982618403,313.95067836072,327.03195662575,341.85740532612,356.10146388137,366.27579142084,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 50/49, Paul Erlich, 2001"},pipedum_18b:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,346.20975655133,356.10146388137,373.75080757229,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 686/675, Paul Erlich, 2001"},pipedum_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,301.39265122629,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,401.85686830172,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"81/80 and 15625/15552 are homophonic intervals, inverse of Mandelbaum"},pipedum_19a:{frequencies:[261.6255653006,271.25338610366,282.55561052465,294.32876096318,301.39265122629,313.95067836072,327.03195662575,339.06673262958,353.19451315581,361.67118147155,376.74081403286,392.4383479509,408.78994578219,416.64520105522,434.00541776586,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"3125/3072 and 15625/15552 are homophonic intervals"},pipedum_19b:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"15625/15552 and 78732/78125, Paul Erlich, TL 19-2-2001"},pipedum_19c:{frequencies:[261.6255653006,269.10058145205,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19d:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19e:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19f:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,305.22982618403,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,448.50096908674,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19g:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,360.4025644447,379.84156147346,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19h:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,412.06026534844,415.27867508032,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"126/125, 81/80 comma and 49/48 chroma"},pipedum_19i:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.22982618403,321.92208230347,327.03195662575,343.38355445704,348.83408706747,367.91095120397,381.53728273004,392.4383479509,406.97310157871,429.2294430713,436.04260883433,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"225/224, 81/80 comma and 49/48 chroma"},pipedum_19j:{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.70607818954,358.95027559242,366.27579142084,373.75080757229,381.37837507376,410.22888639134,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"21/20, 3136/3125 and 2401/2400, Gene Ward Smith, 2002"},pipedum_19k:{frequencies:[261.6255653006,267.90457886781,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,357.69120255941,366.27579142084,373.75080757229,382.72082695402,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,510.98743222773,523.2511306012],description:"21/20, 3136/3125 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19l:{frequencies:[261.6255653006,267.07609791103,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.84512238879,358.80077526939,366.27579142084,373.75080757229,381.53728273004,410.05802887931,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.57253609913,523.2511306012],description:"21/20, 2401/2400 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19m:{frequencies:[261.6255653006,269.10058145205,293.02063313667,299.00064605783,305.22982618403,313.95067836072,317.94773560837,348.83408706747,358.80077526939,366.27579142084,373.75080757229,406.97310157871,418.60090448096,430.56093032327,436.04260883433,448.50096908674,488.36772189445,502.32108537715,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 16/15, Gene Ward Smith, 2002"},pipedum_19n:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,366.27579142084,373.75080757229,381.53728273004,392.4383479509,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"126/125, 2401/2400 and 16/15, Gene Ward Smith, 2002"},pipedum_19o:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,502.32108537715,523.2511306012],description:"225/224, 3136/3125 and 4375/4374, OdC 2000"},pipedum_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,284.8811711051,299.00064605783,305.22982618403,320.35783506196,327.03195662575,341.85740532612,348.83408706747,366.27579142084,373.75080757229,392.4383479509,400.44729382745,418.60090448096,427.32175665765,448.50096908674,457.84473927605,480.53675259294,488.36772189445,512.57253609913,523.2511306012],description:"36/35, 225/224 and 2401/2400, P. Erlich, 2001. Just PB version of miracle1"},pipedum_21a:{frequencies:[261.6255653006,265.7783520514,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,332.22294006425,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"1029/1024, 81/80 comma and 25/24 chroma"},pipedum_21b:{frequencies:[261.6255653006,267.07609791103,279.06726965397,284.8811711051,299.00064605783,305.22982618403,318.93402246168,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,398.6675280771,418.60090448096,427.32175665765,448.50096908674,457.84473927605,478.40103369253,488.36772189445,496.11959049595,523.2511306012],description:"36/35, 225/224 and 1029/1024, Gene Ward Smith, 2002"},pipedum_21c:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"First 128/125 and ampersand comma Fokker block"},pipedum_22:{frequencies:[261.6255653006,267.90457886781,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,365.77905168086,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"3125/3072 and 2109375/2097152 are homophonic intervals"},pipedum_22a:{frequencies:[261.6255653006,267.90457886781,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,381.01984550089,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"2048/2025 and 2109375/2097152 are homophonic intervals"},pipedum_22b:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,357.69120255941,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:'2025/2048, 245/243 and 64/63. P. Erlich "7-limit Indian", TL 19-12-2000'},pipedum_22b2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,448.50096908674,465.11211608996,478.40103369253,490.54793493862,504.56359022259,523.2511306012],description:"Version of pipedum_22b with other shape, Paul Erlich"},pipedum_22c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,512.57253609913,523.2511306012],description:"1728/1715, 64/63 and 50/49, Paul Erlich, 2001"},pipedum_22d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 64/63, Paul Erlich, 2001"},pipedum_22e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,384.42940207435,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 50/49, Paul Erlich, 2001"},pipedum_22f:{frequencies:[261.6255653006,269.10058145205,276.78916949353,290.69507255622,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,470.92601754108,494.58536650191,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 875/864, Paul Erlich, 2001"},pipedum_22g:{frequencies:[261.6255653006,267.07609791103,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,490.54793493862,512.57253609913,523.2511306012],description:"225/224, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_22h:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"225/224, 1728/1715 and 875/864, Paul Erlich, 2001"},pipedum_22i:{frequencies:[261.6255653006,269.10058145205,279.06726965397,288.32205155576,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,474.80195184183,490.54793493862,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 245/243, Paul Erlich, 2001"},pipedum_22j:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,299.00064605783,305.22982618403,320.35783506196,332.22294006425,336.37572681506,348.83408706747,353.19451315581,373.75080757229,387.59343007496,392.4383479509,406.97310157871,427.14378008261,436.04260883433,448.50096908674,465.11211608996,480.53675259294,498.33441009638,504.56359022259,523.2511306012],description:"50/49, 64/63 and 245/243, Gene Ward Smith, 2002"},pipedum_22k:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"121/120, 2048/2025 and 4125/4096, Manuel Op de Coul"},pipedum_22l:{frequencies:[261.6255653006,275.62199471997,284.23518205497,290.69507255622,303.18419419197,310.07474405997,319.76457981184,330.74639366397,341.08221846597,348.83408706747,363.82103303037,372.08969287196,387.59343007496,404.24559225596,413.43299207996,426.35277308246,440.99519155196,454.77629128796,465.11211608996,485.09471070715,496.11959049595,511.62332769895,523.2511306012],description:"121/120, 736/729, 100/99 and 2048/2025"},pipedum_23:{frequencies:[261.6255653006,271.25338610366,276.85245005354,287.04062021552,297.60371503945,302.80736724606,313.95067836072,325.50406332439,332.22294006425,344.44874425862,348.83408706747,363.36884069528,376.74081403286,384.51729174103,398.6675280771,413.33849311034,420.56578784176,436.04260883433,452.08897683944,461.42075008924,478.40103369253,496.00619173241,504.67894541011,523.2511306012],description:"6144/6125, 15625/1552 and 5103/5000, Manuel Op de Coul, 2003"},pipedum_24:{frequencies:[261.6255653006,267.57160087561,275.93321340298,285.40970760065,290.69507255622,299.7792935736,310.07474405997,319.76457981184,327.03195662575,338.26335715633,348.83408706747,356.76213450082,367.91095120397,380.54627680087,392.4383479509,401.35740131342,413.43299207996,426.35277308246,436.04260883433,449.66894036041,465.11211608996,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"121/120, 16384/16335 and 32805/32768. Manuel Op de Coul, 2001"},pipedum_24a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,321.92208230347,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,412.06026534844,418.60090448096,429.2294430713,436.04260883433,457.84473927605,470.92601754108,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"49/48, 81/80 and 128/125, Gene Ward Smith, 2002"},pipedum_24b:{frequencies:[261.6255653006,271.31540105247,275.62199471997,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,413.43299207996,434.59481110969,441.49314144476,457.84473927605,465.11211608996,482.33849075995,496.67978412536,515.07533168556,523.2511306012],description:"49/48, 81/80 and 531441/524288"},pipedum_25:{frequencies:[261.6255653006,268.26840191956,274.70684356563,281.29980781121,291.99281841585,299.00064605783,306.17666156322,313.95067836072,327.03195662575,335.33550239945,343.38355445704,351.62475976401,364.99102301981,373.75080757229,382.72082695402,392.4383479509,408.78994578219,418.60090448096,429.2294430713,439.53094970501,447.89271634391,467.18850946536,478.40103369253,490.54793493862,502.32108537715,523.2511306012],description:"65625/65536, 1029/1024 and 3125/3072, Manuel Op de Coul, 2003"},pipedum_26:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,292.89859205665,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,341.71502406609,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,400.61414686654,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,467.3831713443,478.40103369253,498.33441009638,512.57253609913,523.2511306012],description:"1029/1024, 1728/1715 and 50/49, Paul Erlich, 2001"},pipedum_26a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,306.59245933664,321.92208230347,325.57848126297,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,457.84473927605,459.88868900496,465.11211608996,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"50/49, 81/80 and 525/512, Gene Ward Smith, 2002"},pipedum_26b:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,290.69507255622,301.39265122629,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,446.50763144636,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"81/80 and 78125/73728, Gene Ward Smith, 2005"},pipedum_27:{frequencies:[261.6255653006,271.20240005245,278.95104005395,284.76252005507,292.89859205665,299.00064605783,307.54352165948,316.40280006119,325.44288006294,332.22294006425,341.71502406609,351.47831046798,358.80077526939,369.05222599138,379.68336007343,390.53145607553,398.6675280771,410.05802887931,418.60090448096,430.56093032327,442.86267118965,455.62003208812,468.63774729064,478.40103369253,492.06963465517,502.32108537715,516.67311638793,523.2511306012],description:"126/125, 1728/1715 and 4000/3969 are homophonic intervals, Paul Erlich"},pipedum_27a:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,508.71637697339,523.2511306012],description:"126/126, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27b:{frequencies:[261.6255653006,266.96486255163,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.22888639134,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 128/125, Paul Erlich, 2001"},pipedum_27c:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 686/675, Paul Erlich, 2001"},pipedum_27d:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 64/63, Paul Erlich, 2001"},pipedum_27e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,329.64821227876,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.27867508032,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 126/125 and 245/243, Paul Erlich, 2001"},pipedum_27f:{frequencies:[261.6255653006,267.07609791103,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.05802887931,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 128/125, Paul Erlich, 2001"},pipedum_27g:{frequencies:[261.6255653006,267.07609791103,274.59243005311,280.31310567921,290.81619550312,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.72988009104,488.36772189445,498.54204943392,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 686/675, Paul Erlich, 2001"},pipedum_27h:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27i:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.43792805463,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,329.51091606373,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.4517078616,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.69365917187,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 1728/1715 and 245/243, Paul Erlich, 2001"},pipedum_27j:{frequencies:[261.6255653006,269.16210421872,276.91574508099,282.55561052465,290.69507255622,299.06900468747,305.16005936662,313.95067836072,322.99452506247,329.57286411595,339.06673262958,348.83408706747,358.88280562497,366.19207123994,376.74081403286,387.59343007496,395.48743693914,406.88007915549,418.60090448096,423.83341578697,436.04260883433,448.60350703121,461.52624180165,470.92601754108,484.4917875937,498.44834114579,508.60009894437,523.2511306012],description:"78732/78125 and 390625000/387420489"},pipedum_27k:{frequencies:[261.6255653006,264.89588486686,275.62199471997,279.38237857051,290.69507255622,294.32876096318,298.00787047521,310.07474405997,313.95067836072,331.11985608357,344.52749339997,348.83408706747,353.19451315581,367.49599295996,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,418.60090448096,441.49314144476,447.01180571282,459.36999119996,465.11211608996,470.92601754108,496.67978412536,516.79124009995,523.2511306012],description:"67108864/66430125 and 25/24"},pipedum_28:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"393216/390625 and 16875/16384"},pipedum_29:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,288.44218574391,294.32876096318,300.33547037059,310.07474405997,316.40280006119,325.57848126297,332.22294006425,341.85740532612,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,400.44729382745,412.06026534844,420.46965851882,434.10464168396,442.96392008567,455.80987376816,465.11211608996,474.60420009179,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"5120/5103, 225/224 and 50421/50000, Manuel Op de Coul, 2003"},pipedum_29a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,317.94773560837,327.03195662575,339.14425131559,343.38355445704,348.83408706747,363.36884069528,366.27579142084,372.60080508745,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,441.49314144476,457.84473927605,470.92601754108,476.92160341255,490.54793493862,508.71637697339,515.07533168556,523.2511306012],description:"49/48, 55/54, 65/64, 91/90 and 100/99"},pipedum_31:{frequencies:[261.6255653006,271.62175694356,275.93321340298,281.68182201554,289.72987407313,294.32876096318,300.46061014991,310.42486507835,316.89204976748,321.92208230347,331.11985608357,338.01818641865,343.38355445704,356.50355598842,362.16234259141,367.91095120397,380.27045972098,386.30649876417,392.4383479509,407.43263541533,413.89982010446,422.52273302331,434.59481110969,441.49314144476,450.69091522486,465.63729761752,475.33807465122,482.88312345521,496.67978412536,507.02727962797,515.07533168556,523.2511306012],description:"81/80, 225/224 and 1029/1024 are homophonic intervals"},pipedum_31a:{frequencies:[261.6255653006,269.46602871384,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,329.20114651277,336.83253589231,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,411.50143314096,421.04066986538,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,482.22824196207,490.54793493862,502.32108537715,514.3767914262,523.2511306012],description:"393216/390625 and 2109375/2097152 are homophonic intervals"},pipedum_31b:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,327.03195662575,333.84512238879,339.14425131559,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,387.59343007496,392.4383479509,400.61414686654,406.97310157871,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"245/243, 1029/1024 comma and 25/24 chroma"},pipedum_31c:{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,334.88072358477,343.38355445704,348.83408706747,360.55273217989,366.27579142084,373.75080757229,384.58958099188,392.4383479509,398.6675280771,412.06026534844,418.60090448096,429.2294430713,439.53094970501,448.50096908674,457.84473927605,470.92601754108,480.73697623985,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"126/125, 225/224 and 1029/1024, Op de Coul"},pipedum_31d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,316.53463456122,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"1728/1715, 225/224 and 81/80"},pipedum_31e:{frequencies:[261.6255653006,267.07609791103,272.52663052146,276.85245005354,286.15296204753,290.69507255622,299.00064605783,305.22982618403,311.45900631024,317.94773560837,327.03195662575,332.22294006425,343.38355445704,348.83408706747,357.69120255941,363.36884069528,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,415.27867508032,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,476.92160341255,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:'81/80, 126/125 and 1029/1024, Gene Smith (2005) "Synstargam"'},pipedum_32:{frequencies:[261.6255653006,267.07609791103,270.30192333353,280.31310567921,286.15296204753,292.11448209019,299.00064605783,305.22982618403,311.5887808962,315.35224388912,325.57848126297,333.84512238879,337.87740416691,348.83408706747,356.10146388137,360.4025644447,367.91095120397,379.84156147346,384.42940207435,394.1903048614,406.97310157871,415.4517078616,420.46965851882,429.2294430713,443.14848838571,448.50096908674,457.84473927605,474.80195184183,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"225/224, 2048/2025 and 117649/116640"},pipedum_32a:{frequencies:[261.6255653006,268.26840191956,274.59243005311,280.31310567921,286.15296204753,292.89859205665,299.00064605783,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,341.71502406609,348.83408706747,356.10146388137,364.4960256705,372.08969287196,381.53728273004,390.53145607553,398.6675280771,406.97310157871,416.56688648057,425.24536328225,434.10464168396,438.17172313528,450.50320555588,459.88868900496,469.46970335923,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"589824/588245, 225/224 and 2048/2025"},pipedum_34:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,327.03195662575,334.88072358477,340.65828815182,348.83408706747,354.85238349148,363.36884069528,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,470.92601754108,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 393216/390625 are homophonic intervals"},pipedum_34a:{frequencies:[261.6255653006,264.89588486686,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,317.87506184023,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,441.49314144476,452.08897683944,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 2048/2025, Manuel Op de Coul, 2001"},pipedum_34b:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.7792935736,310.07474405997,313.95067836072,319.76457981184,327.03195662575,334.88072358477,342.49164912079,348.83408706747,356.76213450082,359.73515228832,367.91095120397,380.54627680087,383.71749577421,392.4383479509,399.70572476481,408.78994578219,418.60090448096,428.11456140098,436.04260883433,441.49314144476,449.66894036041,465.11211608996,470.92601754108,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"100/99, 243/242 and 5632/5625, Manuel Op de Coul"},pipedum_36:{frequencies:[261.6255653006,267.07609791103,269.10058145205,280.31310567921,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,400.61414686654,406.97310157871,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,467.3831713443,480.53675259294,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"1029/1024, 245/243 comma and 50/49 chroma, Gene Ward Smith, 2001"},pipedum_36a:{frequencies:[261.6255653006,264.89588486686,275.62199471997,275.93321340298,279.06726965397,290.69507255622,293.99679436797,294.32876096318,310.07474405997,310.42486507835,313.95067836072,327.03195662575,330.74639366397,331.11985608357,348.83408706747,349.22797321314,353.19451315581,367.91095120397,372.08969287196,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,413.89982010446,418.60090448096,436.04260883433,440.99519155196,441.49314144476,465.11211608996,465.63729761752,470.92601754108,490.54793493862,496.11959049595,496.67978412536,516.79124009995,523.2511306012],description:"1125/1024 and 531441/524288, Op de Coul"},pipedum_37:{frequencies:[261.6255653006,263.718569823,276.85245005354,279.06726965397,280.31310567921,290.69507255622,293.02063313667,299.00064605783,308.98710943476,311.45900631024,313.95067836072,325.57848126297,332.22294006425,333.70607818954,346.06556256693,348.83408706747,351.62475976401,353.19451315581,370.78453132171,373.75080757229,376.74081403286,390.69417751556,392.4383479509,400.44729382745,415.27867508032,418.60090448096,421.94971171681,436.04260883433,444.94143758605,448.50096908674,465.11211608996,467.18850946536,470.92601754108,494.37937509562,498.33441009638,502.32108537715,519.0983438504,523.2511306012],description:"250/243, 3136/3125 and 3125/3087, Gene Ward Smith, 2002"},pipedum_38:{frequencies:[261.6255653006,271.25338610366,272.52663052146,280.3771918945,282.55561052465,290.69507255622,292.95365699196,301.39265122629,302.80736724606,313.95067836072,315.42434088132,325.50406332439,327.03195662575,336.45263027341,339.06673262958,348.83408706747,350.47148986813,361.67118147155,363.36884069528,376.74081403286,378.50920905758,390.60487598927,392.4383479509,403.74315632809,406.88007915549,418.60090448096,420.56578784176,434.00541776586,436.04260883433,452.08897683944,454.2110508691,467.29531982417,470.92601754108,484.4917875937,488.25609498659,502.32108537715,504.67894541011,519.21702202686,523.2511306012],description:"81/80 and 1224440064/1220703125, Manuel Op de Coul, 2001"},pipedum_38a:{frequencies:[261.6255653006,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,294.32876096318,305.22982618403,306.59245933664,313.95067836072,321.92208230347,327.03195662575,329.64821227876,340.65828815182,343.38355445704,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,383.2405741708,390.69417751556,392.4383479509,408.78994578219,412.06026534844,418.60090448096,429.2294430713,436.04260883433,439.53094970501,457.84473927605,459.88868900496,470.92601754108,476.92160341255,488.36772189445,490.54793493862,510.98743222773,515.07533168556,523.2511306012],description:"50/49, 81/80 and 3125/3072, Gene Ward Smith, 2002"},pipedum_41:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,303.67253115248,308.34441624714,313.95067836072,320.49131749323,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.2846196779,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.40708707973,392.4383479509,400.61414686654,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"100/99 105/104 196/195 275/273 385/384, Paul Erlich, TL 3-11-2000"},pipedum_41a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,400.61414686654,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"pipedum_41 improved shape by Manuel Op de Coul, all intervals superparticular"},pipedum_41b:{frequencies:[261.6255653006,265.7783520514,271.31540105247,274.70684356563,279.06726965397,284.8811711051,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,504.56359022259,515.07533168556,523.2511306012],description:"pipedum_41 more improved shape by M. OdC, all intervals superparticular"},pipedum_41c:{frequencies:[261.6255653006,267.07609791103,271.31540105247,275.93321340298,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,315.35224388912,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,360.4025644447,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,398.6675280771,406.97310157871,410.05802887931,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,474.80195184183,480.53675259294,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"225/224, 245/243 and 1029/1024, Gene Ward Smith, 2002"},pipedum_41d:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,282.55561052465,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,317.51653791741,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,423.83341578697,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"3125/3072 and 32805/32768"},pipedum_43:{frequencies:[261.6255653006,269.10058145205,273.37201925287,274.70684356563,282.55561052465,286.15296204753,287.04062021552,290.69507255622,299.00064605783,305.22982618403,307.54352165948,313.95067836072,322.92069774245,327.03195662575,328.04642310345,332.22294006425,341.71502406609,343.38355445704,348.83408706747,358.80077526939,366.27579142084,369.05222599138,376.74081403286,379.68336007343,381.53728273004,392.4383479509,398.6675280771,410.05802887931,412.06026534844,418.60090448096,423.93031414449,430.56093032327,436.04260883433,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,492.06963465517,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 12288/12005, Gene Ward Smith, 2002"},pipedum_45:{frequencies:[261.6255653006,265.7783520514,267.07609791103,274.70684356563,279.06726965397,280.31310567921,284.8811711051,293.02063313667,294.32876096318,299.00064605783,303.74668805875,305.22982618403,313.95067836072,320.49131749323,325.57848126297,327.03195662575,336.37572681506,341.85740532612,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,372.08969287196,373.75080757229,384.58958099188,392.4383479509,398.6675280771,400.61414686654,406.97310157871,418.60090448096,420.46965851882,427.32175665765,436.04260883433,439.53094970501,448.50096908674,455.80987376816,457.84473927605,465.11211608996,478.40103369253,480.73697623985,488.36772189445,498.33441009638,512.78610798918,515.07533168556,523.2511306012],description:"81/80, 525/512 and 2401/2400, Gene Ward Smith, 2002"},scala205pipedum_45a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.99452506247,329.64821227876,336.37572681506,339.14425131559,345.98646186692,348.83408706747,356.10146388137,363.28578496026,366.27579142084,373.75080757229,376.82694590621,384.42940207435,392.4383479509,395.66829320152,403.65087217807,406.97310157871,415.27867508032,423.83341578697,427.14378008261,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 2401/2400 and 4375/4374, Gene Ward Smith"},pipedum_46:{frequencies:[261.6255653006,265.7783520514,270.41454913492,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,295.30928005711,300.46061014991,305.22982618403,310.07474405997,313.95067836072,320.49131749323,325.57848126297,327.03195662575,332.22294006425,339.14425131559,343.38355445704,348.83408706747,354.37113606854,360.55273217989,366.27579142084,372.08969287196,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.32175665765,429.2294430713,436.04260883433,442.96392008567,450.69091522486,457.84473927605,465.11211608996,470.92601754108,480.73697623985,488.36772189445,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"126/125, 1029/1024 and 5120/5103. Manuel Op de Coul, 2001"},pipedum_46a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,313.95067836072,320.35783506196,320.49131749323,327.03195662575,332.22294006425,336.37572681506,343.38355445704,348.83408706747,353.19451315581,358.80077526939,366.12324007081,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.14378008261,427.32175665765,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,470.92601754108,478.40103369253,488.36772189445,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"126/125, 1029/1024 and 245/243, Gene Ward Smith, 2002"},pipedum_46b:{frequencies:[261.6255653006,264.89588486686,271.25338610366,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,301.39265122629,302.80736724606,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,334.88072358477,339.06673262958,340.65828815182,348.83408706747,353.19451315581,361.67118147155,363.36884069528,372.08969287196,376.74081403286,381.45007420827,387.59343007496,392.4383479509,401.85686830172,403.74315632809,408.78994578219,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,452.08897683944,454.2110508691,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,508.60009894437,516.79124009995,523.2511306012],description:"2048/2025 and 78732/78125"},pipedum_46c:{frequencies:[261.6255653006,266.47048317654,271.31540105247,274.08392555301,279.06726965397,282.62020942966,287.78812183066,290.69507255622,297.67175429757,299.7792935736,306.97399661937,310.07474405997,313.95067836072,319.76457981184,325.57848126297,328.90071066361,332.22294006425,339.14425131559,342.60490694126,348.83408706747,355.29397756872,359.73515228832,363.36884069528,372.08969287196,374.72411696701,383.71749577421,387.59343007496,394.68085279633,399.70572476481,406.97310157871,411.12588832951,418.60090448096,426.35277308246,431.68218274599,436.04260883433,446.50763144636,449.66894036041,460.46099492906,465.11211608996,467.18850946536,479.64686971777,484.4917875937,496.11959049595,499.63215595601,511.62332769895,516.79124009995,523.2511306012],description:"126/125, 176/175, 385/384 and 896/891, Paul Erlich"},pipedum_46d:{frequencies:[261.6255653006,267.23182741418,272.79915715198,274.70684356563,278.36648688978,283.42769574232,287.78812183066,291.52562990638,297.59908052943,299.7792935736,303.67253115248,311.77046531655,313.95067836072,320.67819289702,324.7609013714,327.03195662575,334.03978426773,340.11323489078,343.04051394309,345.34574619679,354.2846196779,359.73515228832,366.27579142084,374.12455837986,376.74081403286,381.53728273004,389.71308164569,392.4383479509,402.90337056292,408.13588186894,411.12588832951,419.69101100305,425.14154361347,431.68218274599,439.53094970501,445.38637902364,448.50096908674,457.84473927605,467.65569797482,470.92601754108,479.64686971777,485.87604984397,490.54793493862,503.62921320365,510.16985233617,519.61744219425,523.2511306012],description:"91/90, 121/120, 126/125, 169/168 and 176/175"},pipedum_5:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"16/15 and 27/25"},pipedum_50:{frequencies:[261.6255653006,267.07609791103,269.10058145205,273.37201925287,274.70684356563,276.85245005354,284.76252005507,286.15296204753,290.69507255622,299.00064605783,300.46061014991,305.22982618403,307.54352165948,313.95067836072,316.40280006119,320.49131749323,327.03195662575,332.22294006425,333.84512238879,341.71502406609,343.38355445704,348.83408706747,358.80077526939,360.55273217989,361.60320006994,366.27579142084,373.75080757229,379.68336007343,381.53728273004,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.93031414449,427.14378008261,436.04260883433,445.12682985172,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,480.73697623985,484.4917875937,498.33441009638,500.76768358318,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 16807/16384, Gene Ward Smith, 2002"},pipedum_53:{frequencies:[261.6255653006,264.89588486686,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"15625/15552 and 32805/32768, Manuel Op de Coul, 2001"},pipedum_53a:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,276.85245005354,280.31310567921,282.55561052465,288.32205155576,290.69507255622,294.32876096318,299.00064605783,302.80736724606,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.99452506247,327.03195662575,332.22294006425,336.37572681506,339.14425131559,346.06556256693,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,387.59343007496,392.4383479509,398.6675280771,403.65087217807,406.97310157871,415.27867508032,418.60090448096,423.83341578697,430.56093032327,436.04260883433,441.49314144476,448.50096908674,454.2110508691,457.84473927605,467.18850946536,470.92601754108,480.53675259294,484.4917875937,490.54793493862,498.33441009638,504.56359022259,508.71637697339,519.0983438504,523.2511306012],description:"225/224, 1728/1715 and 4375/4374, Manuel Op de Coul, 2001"},pipedum_53b:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,274.70684356563,280.31310567921,286.03378130532,288.32205155576,290.69507255622,293.02063313667,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.92069774245,327.03195662575,333.70607818954,336.37572681506,341.85740532612,343.24053756638,348.83408706747,351.62475976401,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,389.3237578878,392.4383479509,400.44729382745,403.65087217807,406.97310157871,410.22888639134,418.60090448096,427.14378008261,430.56093032327,436.04260883433,439.53094970501,448.50096908674,457.65405008851,457.84473927605,467.18850946536,470.92601754108,478.60036745656,480.53675259294,488.36772189445,498.33441009638,502.32108537715,512.57253609913,512.78610798918,523.2511306012],description:"225/224, 1728/1715 and 3125/3087, Gene Ward Smith, 2002"},pipedum_55:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,293.02063313667,294.32876096318,296.75121990114,299.00064605783,305.22982618403,306.59245933664,313.95067836072,317.94773560837,320.49131749323,325.57848126297,327.03195662575,333.84512238879,336.37572681506,340.65828815182,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,367.91095120397,373.75080757229,376.74081403286,381.53728273004,390.69417751556,392.4383479509,400.61414686654,403.65087217807,406.97310157871,408.78994578219,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,445.12682985172,448.50096908674,457.84473927605,459.88868900496,470.92601754108,474.80195184183,476.92160341255,488.36772189445,490.54793493862,502.32108537715,504.56359022259,508.71637697339,520.92557002075,523.2511306012],description:"81/80, 686/675 and 6144/6125, Gene Ward Smith, 2002"},pipedum_58:{frequencies:[261.6255653006,264.29521392612,268.60224704195,271.31540105247,275.62199471997,277.50997462242,280.31310567921,284.8811711051,287.78812183066,292.35618725654,295.30928005711,297.33211566688,302.17752792219,305.22982618403,310.07474405997,313.23877206058,315.35224388912,320.49131749323,323.76163705949,328.90071066361,332.22294006425,337.63694353197,339.94971891247,343.38355445704,348.83408706747,352.39361856816,358.13632938927,361.75386806997,364.23184169193,370.01329949656,373.75080757229,379.84156147346,383.71749577421,389.80824967539,392.4383479509,396.44282088917,402.90337056292,406.97310157871,413.43299207996,417.65169608078,420.46965851882,427.32175665765,431.68218274599,438.53428088482,442.96392008567,445.99817350032,453.26629188329,457.84473927605,465.11211608996,469.85815809087,477.51510585235,480.73697623985,485.64245558924,493.35106599542,498.33441009638,506.45541529795,511.62332769895,515.07533168556,523.2511306012],description:"9801/9800, 2401/2400, 5120/5103 and 896/891"},pipedum_58a:{frequencies:[261.6255653006,265.65057399753,267.66008354786,270.48058443385,272.52663052146,277.4816601673,281.75060878526,285.40970760065,287.78812183066,293.02063313667,295.1673044417,297.30177875068,301.87565226992,305.22982618403,309.92566966379,313.95067836072,316.2506833304,322.00069575458,323.72860352852,327.03195662575,332.97799220076,338.10073054231,342.60490694126,344.24801655217,348.83408706747,352.18826098158,358.59168390851,362.25078272391,366.27579142084,368.95913055213,375.66747838035,379.50081999647,381.53728273004,388.47432423422,392.4383479509,399.57359064092,402.50086969323,406.97310157871,411.12588832951,418.60090448096,422.62591317789,428.25613367658,430.31002069022,436.04260883433,442.75095666255,450.80097405642,455.40098399577,457.84473927605,466.16918908107,469.58434797544,475.68284600109,483.00104363188,488.36772189445,495.88107146206,499.46698830115,503.12608711654,512.27383415502,516.54278277298,523.2511306012],description:"126/125, 144/143, 176/175, 196/195 and 364/363"},pipedum_5a:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:"27/25 and 81/80"},pipedum_64:{frequencies:[261.6255653006,267.90457886781,266.96486255163,273.37201925287,274.70684356563,273.74326726486,280.31310567921,280.42990280658,284.76252005507,286.15296204753,294.32876096318,300.05312833195,299.00064605783,300.46061014991,307.67166479351,306.59245933664,313.95067836072,312.84944830269,320.35783506196,320.49131749323,328.18310911307,327.03195662575,336.37572681506,336.5158833679,341.71502406609,343.38355445704,351.62475976401,348.83408706747,358.80077526939,358.95027559242,366.12324007081,366.27579142084,375.06641041494,373.75080757229,382.72082695402,384.58958099188,383.2405741708,392.4383479509,392.60186392921,398.6675280771,400.61414686654,412.06026534844,408.78994578219,418.60090448096,428.6473261885,427.14378008261,429.2294430713,439.53094970501,437.98922762377,448.50096908674,448.68784449053,455.62003208812,457.84473927605,468.83301301868,467.18850946536,478.40103369253,480.73697623985,488.16432009441,490.54793493862,502.32108537715,500.55911728431,512.57253609913,512.78610798918,520.70860810071,523.2511306012],description:"225/224 235298/234375 and 67108864/66706983"},pipedum_65:{frequencies:[261.6255653006,264.59711493117,267.38234771992,270.72462706642,273.0589090967,275.93321340298,279.06726965397,282.00481986086,285.20783756792,287.99181818792,291.26283636981,294.32876096318,297.67175429757,300.80514118491,303.39878788522,306.84479880935,310.42486507835,313.95067836072,317.25542234346,320.85881726391,323.62537374423,327.30111872997,331.11985608357,334.60532825287,338.40578383303,341.32363637087,345.20039866051,348.83408706747,352.79615324157,356.9123501364,360.9661694219,364.07854546226,367.91095120397,372.08969287196,376.00642648114,380.70650681216,383.98909091723,388.35044849308,392.4383479509,396.89567239676,401.07352157989,404.53171718029,409.58836364504,413.89982010446,418.60090448096,423.00722979129,427.81175635188,431.50049832564,436.89425455471,441.49314144476,446.50763144636,451.20771177737,455.09818182783,460.26719821402,465.11211608996,470.92601754108,475.8831335152,481.28822589586,485.43806061635,490.95167809495,496.11959049595,501.90799237931,507.60867574954,511.9854545563,517.80059799077,523.2511306012],description:"1216/1215, 32805/32768 and 39858075/39845888. Manuel Op de Coul, 2001"},pipedum_65a:{frequencies:[261.6255653006,264.89588486686,267.90457886781,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,286.08755565621,287.10624449997,290.69507255622,294.32876096318,298.00787047521,301.39265122629,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,319.0069383333,322.99452506247,327.03195662575,331.11985608357,334.88072358477,339.06673262958,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.60944457026,358.88280562497,363.36884069528,367.91095120397,372.08969287196,376.74081403286,381.45007420827,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,403.74315632809,408.78994578219,413.43299207996,418.60090448096,423.83341578697,429.13133348431,430.65936674996,436.04260883433,441.49314144476,446.50763144636,452.08897683944,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,478.51040749995,484.4917875937,490.54793493862,496.67978412536,502.32108537715,508.60009894437,510.98743222773,516.79124009995,523.2511306012],description:"78732/78125 and 32805/32768"},pipedum_67:{frequencies:[261.6255653006,262.79353657426,266.96486255163,267.07609791103,272.52663052146,274.70684356563,279.06726965397,280.31310567921,284.8811711051,286.15296204753,293.02063313667,294.32876096318,299.00064605783,299.12522966035,300.33547037059,305.22982618403,306.59245933664,311.45900631024,313.95067836072,320.35783506196,320.49131749323,325.57848126297,327.03195662575,332.22294006425,336.5158833679,339.00300006557,341.85740532612,343.38355445704,348.83408706747,350.39138209902,355.95315006884,360.55273217989,366.27579142084,367.91095120397,373.75080757229,373.90653707544,381.53728273004,384.58958099188,390.69417751556,392.4383479509,398.83363954714,400.44729382745,400.61414686654,406.97310157871,408.78994578219,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,439.53094970501,448.50096908674,448.68784449053,455.80987376816,457.84473927605,459.88868900496,465.11211608996,467.18850946536,474.60420009179,480.73697623985,488.36772189445,490.54793493862,498.33441009638,504.77382505185,512.78610798918,515.07533168556,520.92557002075,523.2511306012],description:"81/80, 1029/1024 and 9604/9375, Gene Ward Smith, 2002"},pipedum_68:{frequencies:[246.94165062806,250.86135936819,252.08626834948,253.99712636029,258.02882677871,259.28873315946,263.4044273366,264.58033995864,268.89201957278,272.13977824317,273.16014686758,276.57464870343,277.80935695657,282.21902928921,286.81815421096,288.0985923994,291.6998248044,292.67158592955,296.32998075367,301.03363124183,302.50352201937,307.30516522603,308.67706328508,311.01688942076,316.08531280392,317.49640795036,322.53603347338,324.11091644933,329.25553417075,333.37122834788,334.48181249092,338.66283514705,340.17472280396,345.71831087928,351.20590311546,352.77378661151,357.18345894416,358.5226927637,362.85303765756,368.76619827124,370.41247594209,376.29203905228,378.12940252422,384.13145653254,387.04324016806,388.93309973919,395.1066410049,396.87050993795,403.33802935916,409.74022030137,411.56941771343,414.86197305514,416.71403543485,423.32854393382,430.22723131644,432.1478885991,439.00737889433,441.15096961159,444.49497113051,451.55044686274,453.56629707195,460.95774783905,468.27453748728,470.36504881535,474.12796920588,476.24461192554,483.80405021008,491.68826436165,493.88330125612],description:"245/243, 2048/2025 and 2401/2400, Gene Ward Smith, 2002"},pipedum_7:{frequencies:[261.6255653006,290.69507255622,317.94773560837,347.75533582165,392.4383479509,429.2294430713,476.92160341255,523.2511306012],description:"81/80, 64/63 and 6144/6125, Manuel Op de Coul"},pipedum_72:{frequencies:[195.99771799087,198.44768946576,200.08100378235,201.59765279061,204.16428957382,205.79760389041,208.41771227328,209.06423252359,211.67753543014,214.37250405251,216.08748408493,217.77524221208,220.49743273973,222.31222642483,223.99739198957,226.79735938944,228.66400432268,231.52230437672,232.29359169288,235.19726158904,238.19167116946,240.09720453882,241.91718334873,244.99714748859,246.9571246685,250.10125472793,251.99706598826,254.07111591409,257.24700486302,258.04499557198,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,277.89028303104,279.99673998696,282.23671390685,285.83000540335,289.40288047089,290.3669896161,293.99657698631,296.41630189977,300.12150567352,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,321.55875607877,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.76148788545,342.99600648402,347.28345656507,348.44038753932,352.79589238357,357.28750675419,360.14580680822,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,385.87050729453,387.1559861548,391.99543598174],description:"225/224, 1029/1024 and 4375/4374, Gene Ward Smith, 2002"},pipedum_72a:{frequencies:[195.99771799087,197.5656997348,200.08100378235,201.59765279061,203.21043401293,205.79760389041,207.44398472154,209.99755499022,211.67753543014,213.41973736784,216.04686727389,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.84921063758,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.07883968176,240.09720453882,241.91718334873,244.99714748859,246.9571246685,248.93278166584,251.99706598826,254.07111591409,256.1036848414,259.25624072866,261.33029065449,264.65741241051,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.59197962872,279.99673998696,282.23671390685,285.83000540335,288.11664544658,290.30062001848,293.99657698631,296.3485496022,298.59492344758,302.46561418344,304.88533909691,308.7669811456,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.68405668822,342.99600648402,345.73997453589,348.36074402217,352.79589238357,355.69956227973,360.07811212314,362.95873702013,365.86240691629,370.52037737472,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"4375/4374, 2401/2400 and 15625/15552, Manuel Op de Coul, 2002"},pipedum_72b:{frequencies:[195.99771799087,197.5656997348,200.51849868858,202.12264667808,204.16428957382,205.79760389041,207.94510975112,209.60867062912,211.67753543014,213.41973736784,215.59748978996,218.74745311481,220.49743273973,222.7983318762,224.58071853121,226.79735938944,228.66400432268,230.99731048924,232.89852292125,235.19726158904,238.19167116946,240.62219842629,242.5471760137,244.99714748859,246.9571246685,249.53413170134,251.53040475495,254.07111591409,256.1036848414,259.87197430039,262.49694373777,264.59691928767,267.35799825143,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.4782275055,283.49669923679,285.83000540335,288.74663811155,291.12315365156,293.99657698631,296.3485496022,299.44095804161,301.83648570594,304.88533909691,309.37139797666,311.91766462667,314.99633248533,317.51630314521,320.82959790172,323.39623468494,326.66286331812,329.27616622466,332.71217560179,336.87107779681,340.19603908415,342.99600648402,346.49596573386,349.34778438187,352.79589238357,355.69956227973,359.32914964993,362.08404605941,367.49572123288,371.24567757199,374.30119755201,377.99559898239,381.10667387114,384.99551748207,388.16420486875,391.99543598174],description:"225/224, 3025/3024, 1375/1372 and 4375/4374"},pipedum_72b2:{frequencies:[195.99771799087,198.44768946576,200.45221158157,202.12264667808,204.16428957382,205.79760389041,207.87636756607,209.06423252359,211.67753543014,213.81569235368,215.59748978996,217.77524221208,220.49743273973,222.72467953508,223.99739198957,226.79735938944,228.66400432268,230.99731048924,233.3306166558,235.19726158904,237.57299150408,239.55276643329,241.97249134675,244.99714748859,246.39713118852,249.45164107929,251.99706598826,254.07111591409,257.24700486302,258.71698774795,261.33029065449,264.59691928767,267.2696154421,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.99673998696,282.23671390685,285.0875898049,287.46331971994,290.3669896161,293.99657698631,296.96623938011,298.66318931942,302.39647918591,304.88533909691,307.99641398565,311.81455134911,313.59634878539,317.51630314521,320.72353853051,323.39623468494,326.66286331812,329.27616622466,332.60218810572,335.99608798435,338.76148788545,342.99600648402,344.95598366393,348.44038753932,352.79589238357,356.35948725613,359.32914964993,362.95873702013,367.49572123288,369.59569678278,374.17746161893,376.31561854247,380.11678640654,383.28442629326,387.1559861548,391.99543598174],description:"Optimised version of pipedum_72b, Manuel Op de Coul"},pipedum_72c:{frequencies:[195.99771799087,197.5656997348,199.99767141926,201.59765279061,203.25689273127,205.79760389041,207.40499258293,209.99755499022,211.67753543014,213.41973736784,215.9974851328,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.79735938944,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.13304151982,239.99720570311,241.91718334873,244.99714748859,246.9571246685,248.88599109952,251.99706598826,254.07111591409,256.1036848414,259.19698215935,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.47678096998,279.99673998696,282.23671390685,285.83000540335,287.99664684373,290.3669896161,293.99657698631,296.41630189977,298.66318931942,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.32945236543,335.99608798435,338.76148788545,342.99600648402,345.59597621247,348.44038753932,352.79589238357,355.69956227973,359.99580855466,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"441/440, 2401/2400, 4375/4374 and 1375/1372"},pipedum_74:{frequencies:[174.6141157165,175.4667237034,177.38576834692,178.25190979393,182.45393315683,183.34482150233,186.25505676427,187.16450528362,187.6669026756,191.57662981467,192.51206257744,194.01568412944,194.96302633711,195.48635695375,199.55898939029,200.53339851817,202.72659239648,203.71646833592,208.51878075067,209.5369388598,210.56006844408,212.8629220163,213.90229175271,216.62558481901,218.9447197882,220.01378580279,221.73221043365,222.81488724241,228.06741644604,229.18102687791,231.68753416741,232.81882095533,233.95563160453,239.47078726834,240.6400782218,243.27191087578,244.4597620031,249.5526737115,250.2225369008,251.44432663176,253.4082404956,254.6455854199,259.95070178281,260.64847593833,261.92117357475,266.07865252038,267.37786469089,273.68089973525,275.01723225349,278.02504100089,279.3825851464,280.74675792544,285.20305567028,287.36494472201,291.02352619417,291.92629305093,292.44453950566,297.08651632321,299.33848408543,304.08988859472,305.57470250388,310.42509460711,311.94084213937,312.778171126,319.29438302446,320.85343762907,325.94634933747,328.4170796823,333.63004920107,334.22233086361,335.25910217568,339.52744722653,342.10112466906,347.53130125111,349.228231433],description:"81/80, 126/125 and 4194304/4117715, Gene Ward Smith, 2002"},pipedum_81:{frequencies:[116.54094037952,117.10998793997,118.96887663743,119.87068153322,121.77339076391,122.3679873985,122.96548733697,124.86529326377,124.9173204693,126.84728204574,127.4666535401,128.08904930934,130.12220882219,130.47149010419,131.10855792696,133.18964614802,133.83998621711,135.96443044277,136.62831926329,136.99506460939,139.16958944446,139.84912845542,140.53198552796,142.70319230145,142.76265196491,144.96832233798,145.6761754744,146.38748492496,148.71109579678,149.83835191653,152.21673845488,152.95998424812,153.70685917121,155.38792050603,156.14665058662,156.56578812502,159.82757537763,160.60798346053,163.08936263023,163.15731653133,163.95398311595,166.48705768503,167.29998277138,169.12970939431,169.95553805347,170.78539907912,173.96198680558,174.81141056928,175.66498190995,177.58619486403,178.45331495614,182.66008614586,183.55198109774,184.08675852442,184.44823100545,186.46550460723,187.37598070395,190.2709230686,191.19998031015,193.29109645065,194.23490063253,195.18331323328,199.78446922203,200.75997932566,202.95565127318,203.94664566416,204.94247889494,208.7543841667,209.77369268314,210.79797829194,213.10343383684,214.14397794737,217.45248350698,218.5142632116,218.60531082127,221.98274358004,223.06664369518,227.71386543882,228.32510768232,229.43997637218,231.94931574077,233.08188075904],description:"81/80, 126/125 and 17294403/16777216, Gene Ward Smith, 2002"},pipedum_87:{frequencies:[82.40688922822,83.34286871081,83.43697534357,84.3846545697,84.87648045204,85.84050961273,86.81548824043,86.91351598289,87.90068184343,87.99993493267,88.99944036648,90.43280025045,90.53491248218,91.56321025358,92.60318745646,92.70775038175,93.76072729966,93.86659726152,95.37834401414,96.46165360048,96.57057331432,97.66742427048,97.77770548075,98.88826707386,100.01144245297,100.59434720242,101.73690028175,101.85177654245,103.00861153527,104.17858588852,104.29621917947,105.48081821212,105.59992191921,107.30063701591,108.51936030054,108.64189497861,109.87585230429,111.12382494775,111.2493004581,112.5128727596,113.16864060272,114.45401281697,115.75398432057,115.88468797718,117.20090912458,117.3332465769,118.66592048864,120.5770670006,120.7132166429,122.0842803381,122.22213185094,123.61033384233,125.01430306622,125.15546301536,127.17112535219,128.61553813397,128.76076441909,130.22323236064,130.37027397433,131.85102276515,133.3485899373,133.49916054972,135.64920037567,135.80236872326,137.34481538037,138.90478118469,139.06162557262,140.6410909495,140.79989589228,143.06751602122,144.69248040072,144.85585997148,146.50113640572,146.66655822112,148.3324006108,150.01716367946,150.89152080363,152.60535042263,154.33864576076,154.51291730291,156.26787883277,156.4443287692,158.22122731818,160.76942266746,160.95095552387,162.7790404508,162.96284246792,164.81377845644],description:"67108864/66430125 and 15625/15552, Op de Coul"},pipedum_9:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,392.4383479509,420.46965851882,448.50096908674,490.54793493862,523.2511306012],description:"225/224, 49/48 and 36/35 are homophonic intervals"},pipedum_99:{frequencies:[41.20344461411,41.53307217102,41.72802550619,42.06184971024,42.3806858888,42.72949811834,42.92025480636,43.26361684482,43.60972577957,43.95034092172,44.14654780083,44.49972018324,44.86597302425,45.06626754668,45.407877738,45.78160512679,46.1478579678,46.35387519087,46.73538856693,47.08965098755,47.46636819545,47.68917200707,48.07068538313,48.45525086619,48.65129757643,49.0517197787,49.44413353693,49.83968660523,50.07363060743,50.47421965228,50.85682306656,51.275397742,51.50430576764,51.91634021378,52.34363519496,52.55541404861,52.975857361,53.41187264792,53.8391676291,54.07952105602,54.50191086522,54.93792615215,55.37742956136,55.62465022905,56.08246628032,56.50758118507,56.7598471725,57.22700640849,57.68482245975,58.14630103943,58.41923570866,58.86206373444,59.33296024432,59.82129736567,60.08835672891,60.56906358274,61.04214016905,61.31464972338,61.80516692116,62.29960825653,62.81236223395,63.06649685833,63.5710288332,64.0942471775,64.60700115492,64.89542526722,65.40229303827,65.92551138258,66.21982170125,66.7648408099,67.29895953638,67.80909742208,68.12738858153,68.67240769018,69.2217869517,69.77556124732,70.1030828504,70.63447648133,71.19955229318,71.53375801061,72.10602807469,72.68287629929,73.25056820286,73.57757966805,74.1662003054,74.77662170709,75.37483468075,75.67979623,76.30267521131,76.91309661301,77.25645865146,77.87451032067,78.48275164592,79.11061365909,79.4637860415,80.11780897188,80.75875144366,81.37091690649,81.75286629784,82.40688922822],description:"2401/2400, 3136/3125 and 4375/4374, Gene Ward Smith, 2002"},pipedum_9a:{frequencies:[261.6255653006,282.62020942966,305.22982618403,329.72357766794,356.10146388137,384.67750727926,415.4517078616,448.79042515914,484.69365917187,523.2511306012],description:"4375/4374, 2401/2400 and 21/20 are homophonic intervals"},pipedum_9b:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,357.20610515709,383.2405741708,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"128/125 and 2109375/2097152 are homophonic intervals"},pipedum_9c:{frequencies:[261.6255653006,285.40970760065,305.22982618403,332.97799220076,348.83408706747,392.4383479509,411.12588832951,448.50096908674,479.64686971777,523.2511306012],description:"49/48, 21/20, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9d:{frequencies:[261.6255653006,277.4816601673,308.34441624714,327.03195662575,346.85207520913,394.68085279633,418.60090448096,443.97065626768,493.35106599542,523.2511306012],description:"128/125, 36/35, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9e:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"21/20, 27/25 and 128/125"},polansky_ps:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4447.6346101102,327.03195662575,654.0639132515,981.09586987725,1308.127826503,1635.15978312875,1962.1917397545,2289.22369638025,2616.255653006,2943.28760963175,3270.3195662575,3597.35152288325,3924.383479509,4251.41543613475,4578.4473927605,4905.47934938625,5232.511306012,5559.54326263775,392.4383479509,784.8766959018,1177.3150438527,1569.7533918036,1962.1917397545,2354.6300877054,2747.0684356563,3139.5067836072,3531.9451315581,3924.383479509,4316.8218274599,4709.2601754108,5101.6985233617,5494.1368713126,5886.5752192635,6279.0135672144,6671.4519151653],description:"Three interlocking harmonic series on 1:5:3 by Larry Polansky in Psaltery"},poole:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Poole's double diatonic or dichordal scale"},porcupine:{frequencies:[261.6255653006,268.5059110196,275.56719913678,277.81869773502,285.12489766782,287.45448663717,295.01409284105,302.77250493809,305.24628043356,313.27378316024,315.83336022842,324.13928669805,332.66364612382,335.38164643474,344.20166244741,347.01393314922,356.13986022226,365.50578499276,368.49211923405,378.18288921726,381.27279846892,391.29968045081,401.5902538439,404.87141319969,415.51890206933,418.91386427268,429.93064777916,441.23715556831,444.84224659643,456.54090625717,460.27103529174,472.37544811397,484.79818817936,488.75918813348,501.6127950959,505.71118020326,519.01059820838,523.2511306012],description:"porcupine temperament, g=162.996, 5-limit"},portbag1:{frequencies:[261.6255653006,281.75060878526,311.64221749042,334.88072358477,376.74081403286,413.43299207996,457.84473927605,523.2511306012],description:"Portugese bagpipe tuning"},portbag2:{frequencies:[261.6255653006,274.70684356563,281.75060878526,310.07474405997,317.68818643644,343.38355445704,372.08969287196,392.4383479509,408.78994578219,482.37213602298,523.2511306012],description:"Portugese bagpipe tuning 2"},prelleur:{frequencies:[261.6255653006,276.42153822591,293.20376052703,310.91918875105,328.72923110101,349.43408698743,368.89538496172,391.53834819612,414.55891854195,438.90564190541,466.17878415199,492.19384741628,523.2511306012],description:"Peter Prelleur's well temperament (1731)"},preston:{frequencies:[261.6255653006,276.24946721727,293.45376109391,311.26733605541,328.91048112005,349.30075403587,368.79929095641,391.73834630677,413.67420227347,439.48064068428,466.20100528964,492.6657196346,523.2511306012],description:"Preston's equal beating temperament (1785)"},preston2:{frequencies:[261.6255653006,276.2302000593,293.37610901672,311.58628319174,328.97985807656,349.39999567988,368.9044325484,391.80273191286,413.67420227347,439.35140993827,466.62242981045,492.67053466508,523.2511306012],description:"Preston's theoretically correct well temperament"},prime_10:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,523.2511306012],description:"First 10 prime numbers reduced by 2/1"},prime_5:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,523.2511306012],description:'What Lou Harrison calls "the Prime Pentatonic", a widely used scale'},primes6:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1308.127826503,1831.3789571042,2877.8812183066,3401.1323489078],description:"First 6 primes"},prinz:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.49599295996,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Prinz well-tempermament (1808)"},prinz2:{frequencies:[261.6255653006,275.62199471997,291.81313052759,310.07474405997,327.03195662575,348.83408706747,367.49599295996,390.42584360243,413.43299207996,436.71344361716,465.11211608996,490.54793493862,523.2511306012],description:"Prinz equal beating temperament (1808)"},"prod13-2":{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"13-limit binary products [1 3 5 7 11 13]"},prod13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,331.11985608357,343.38355445704,345.42750418595,359.73515228832,367.91095120397,371.99885066179,392.4383479509,400.61414686654,404.70204632437,408.78994578219,425.14154361347,441.49314144476,449.66894036041,457.84473927605,478.28423656516,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"13-limit binary products [1 3 5 7 9 11 13]"},prod7d:{frequencies:[261.6255653006,265.7783520514,267.90457886781,273.37201925287,279.06726965397,286.15296204753,294.32876096318,299.00064605783,300.46061014991,306.59245933664,310.07474405997,318.93402246168,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,350.53737850823,357.69120255941,367.91095120397,372.08969287196,382.72082695402,390.53145607553,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,429.2294430713,441.49314144476,446.50763144636,455.62003208812,457.84473927605,465.11211608996,478.40103369253,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Double Cubic Corner 7-limit. Chalmers '96"},prod7s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Single Cubic Corner 7-limit"},prodq13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"13-limit Binary products and quotients. Chalmers '96"},prog_ennea:{frequencies:[261.6255653006,269.29177952703,285.30470202322,311.12698372208,349.22823143301,391.99543598175,403.48177901006,427.47405410759,466.16376151809,523.2511306012],description:"Progressive Enneatonic, 50+100+150+200 cents in each half (500 cents)"},prog_ennea1:{frequencies:[261.6255653006,269.10058145205,285.40970760065,310.68035879446,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prog_ennea2:{frequencies:[261.6255653006,269.55361273395,285.40970760065,321.08592105074,348.83408706747,392.4383479509,404.33041910093,428.11456140098,481.6288815761,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+200+150 cents in each half (500 cents)"},prog_ennea3:{frequencies:[261.6255653006,269.55361273395,285.40970760065,310.07474405997,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prooijen1:{frequencies:[261.6255653006,339.14425131559,366.27579142084,436.04260883433,470.92601754108,610.45965236807,726.73768139056,784.8766959018],description:"Kees van Prooijen, major mode of Bohlen-Pierce"},prooijen2:{frequencies:[261.6255653006,311.45900631024,336.37572681506,436.04260883433,470.92601754108,560.62621135843,726.73768139056,784.8766959018],description:"Kees van Prooijen, minor mode of Bohlen-Pierce"},"ps-dorian":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 4 of p. 115 based on Archytas's Enharmonic"},"ps-enh":{frequencies:[261.6255653006,266.38239376061,279.06726965397,348.83408706747,392.4383479509,399.57359064092,418.60090448096,523.2511306012],description:"Dorian mode of an Enharmonic genus found in Ptolemy's Harmonics"},"ps-hypod":{frequencies:[261.6255653006,294.32876096318,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Complex 7 of p. 115 based on Archytas's Enharmonic"},"ps-hypod2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 8 of p. 115 based on Archytas's Enharmonic"},"ps-mixol":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Complex 3 of p. 115 based on Archytas's Enharmonic"},ptolemy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Intense Diatonic Syntonon, also Zarlino's scale"},ptolemy_chrom:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,436.04260883433,523.2511306012],description:"Ptolemy Soft Chromatic"},ptolemy_ddiat:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Lyra tuning, Dorian mode, comb. of diatonon toniaion & diatonon ditoniaion"},ptolemy_diat:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ptolemy's Diatonon Ditoniaion & Archytas' Diatonic, also Lyra tuning"},ptolemy_diat2:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Dorian mode of a permutation of Ptolemy's Tonic Diatonic"},ptolemy_diat3:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,441.49314144476,470.92601754108,523.2511306012],description:"Dorian mode of the remaining permutation of Ptolemy's Intense Diatonic"},ptolemy_diat4:{frequencies:[261.6255653006,299.00064605783,310.07474405997,348.83408706747,392.4383479509,448.50096908674,465.11211608996,523.2511306012],description:"permuted Ptolemy's diatonic"},ptolemy_diat5:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Sterea lyra, Dorian, comb. of 2 Tonic Diatonic 4chords, also Archytas' diatonic"},ptolemy_diff:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,425.14154361347,490.54793493862,523.2511306012],description:"Difference tones of Intense Diatonic reduced by 2/1"},ptolemy_enh:{frequencies:[261.6255653006,267.43946675172,279.06726965397,348.83408706747,392.4383479509,401.15920012759,418.60090448096,523.2511306012],description:"Dorian mode of Ptolemy's Enharmonic"},ptolemy_exp:{frequencies:[261.6255653006,272.52663052146,275.93321340298,287.4304306281,290.69507255622,294.32876096318,306.59245933664,327.03195662575,340.65828815182,344.91651675372,348.83408706747,363.36884069528,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,431.14564594215,436.04260883433,441.49314144476,459.88868900496,490.54793493862,510.98743222773,517.37477513058,523.2511306012],description:"Intense Diatonic expanded: all interval combinations"},ptolemy_hom:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Equable Diatonic or Diatonon Homalon"},ptolemy_iast:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Ptolemy's Iastia or Lydia tuning, mixture of Tonic Diatonic & Intense Diatonic"},ptolemy_iastaiol:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,441.49314144476,465.11211608996,523.2511306012],description:"Ptolemy's kithara tuning, mixture of Tonic Diatonic and Ditone Diatonic"},ptolemy_ichrom:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,411.12588832951,448.50096908674,523.2511306012],description:"Dorian mode of Ptolemy's Intense Chromatic"},ptolemy_idiat:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Intense Diatonic (Diatonon Syntonon)"},ptolemy_imix:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ptolemy Intense Diatonic mixed with its inverse"},ptolemy_malak:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Ptolemy's Malaka lyra tuning, a mixture of Intense Chrom. & Tonic Diatonic"},ptolemy_malak2:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Malaka lyra, mixture of his Soft Chromatic and Tonic Diatonic."},ptolemy_mdiat:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,412.06026534844,457.84473927605,523.2511306012],description:"Ptolemy soft diatonic"},ptolemy_mdiat2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_mdiat3:{frequencies:[261.6255653006,299.00064605783,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_meta:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Metabolika lyra tuning, mixture of Soft Diatonic & Tonic Diatonic"},ptolemy_mix:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"All modes of Ptolemy Intense Diatonic mixed"},ptolemy_prod:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,484.4917875937,490.54793493862,523.2511306012],description:"Product of Intense Diatonic with its intervals"},ptolemy_tree:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Intense Diatonic with all their Farey parent fractions"},pygmie:{frequencies:[261.6255653006,299.00064605783,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"Pygmie scale"},pyle:{frequencies:[261.6255653006,277.19063644077,293.6461094938,311.15753660095,329.66944764997,349.23831768549,369.99228554622,391.93430587921,415.28070933274,439.96441988338,466.23108306565,493.99742571239,523.2511306012],description:"Howard Willet Pyle quasi equal temperament"},pyramid:{frequencies:[261.6255653006,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'This scale may also be called the "Wedding Cake"'},pyramid_down:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Upside-Down Wedding Cake (divorce cake)"},pyth_12:{frequencies:[261.6255653006,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747,372.50983809402,392.4383479509,419.07356785577,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"12-tone Pythagorean scale"},pyth_12s:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,326.6631048533,348.83408706747,367.49599295996,392.4383479509,419.07356785577,435.55080647107,471.45776383774,489.99465727995,523.2511306012],description:"Scale with major thirds flat by a schisma"},pyth_17:{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,471.45776383774,496.67978412536,523.2511306012],description:"17-tone Pythagorean scale"},pyth_17s:{frequencies:[261.6255653006,275.62199471997,279.06726965397,294.32876096318,310.07474405997,313.95067836072,331.11985608357,348.83408706747,367.49599295996,372.08969287196,392.4383479509,413.43299207996,418.60090448096,441.49314144476,465.11211608996,470.92601754108,496.67978412536,523.2511306012],description:"Schismatically altered 17-tone Pythagorean scale"},pyth_22:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"Pythagorean shrutis"},pyth_27:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,290.36720431405,294.32876096318,298.34436617857,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,397.79248823809,413.43299207996,419.07356785577,435.55080647107,441.49314144476,447.51654926786,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"27-tone Pythagorean scale"},pyth_31:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,283.19406633357,294.32876096318,298.34436617857,310.07474405997,314.30517589183,318.59332496145,326.6631048533,331.11985608357,335.63741195089,348.83408706747,353.59332287831,367.49599295996,372.50983809402,377.59208844475,392.4383479509,397.79248823809,413.43299207996,419.07356785577,424.79110016094,441.49314144476,447.51654926786,465.11211608996,471.45776383774,477.8899872033,489.99465727995,496.67978412536,503.45611792634,523.2511306012],description:"31-tone Pythagorean scale"},pyth_7a:{frequencies:[261.6255653006,277.97716313189,294.32876096318,312.72430852337,331.11985608357,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,469.08646278506,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided arithmetically"},pyth_7h:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided harmonically"},pyth_chrom:{frequencies:[261.6255653006,275.62199471997,294.32876096318,348.83408706747,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Dorian mode of the so-called Pythagorean chromatic, recorded by Gaudentius"},pyth_sev:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,291.47537246454,299.00064605783,306.7202061947,314.63906894008,322.76237975718,333.11471138804,341.71502406609,350.53737850823,359.58750736009,368.87129039875,380.70252730062,390.53145607553,400.61414686654,410.95715126868,421.56719060242,435.08860262928,446.32166408632,457.84473927605,469.66531573563,481.7910743145,497.2441172906,510.08190181294,523.2511306012],description:"26-tone Pythagorean scale based on 7/4"},pyth_sev_16:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,306.7202061947,314.63906894008,322.76237975718,350.53737850823,359.58750736009,368.87129039875,400.61414686654,410.95715126868,421.56719060242,457.84473927605,469.66531573563,481.7910743145,523.2511306012],description:'16-tone Pythagorean scale based on 7/4, "Armodue"'},pyth_third:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,287.66035117148,290.46272611903,297.43383186155,304.57224382623,311.88197767806,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,363.07840893547,371.79228894479,380.71530478279,389.85247209758,399.20893142792,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,453.84801015616,464.74036282794,475.89413097849,487.31559012197,499.0111642849,510.98743222773,523.2511306012],description:"Cycle of 5/4 thirds"}};o.prototype._tune=function(i,n=220){const e=new t;if(!e.isValidScale(i))throw new Error('not a valid tune.js scale name: "'+i+'". See http://abbernie.github.io/tune/scales.html');return e.loadScale(i),e.tonicize(n),this._asNumber()._withHap(r=>r.withValue(()=>e.note(r.value)).setContext(a(c({},r.context),{type:"frequency"})))};o.prototype.define("tune",(i,n)=>n.tune(i),{composable:!0,patternified:!0}); +var h=Object.defineProperty,q=Object.defineProperties;var g=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var y=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var m=(i,n,e)=>n in i?h(i,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[n]=e,c=(i,n)=>{for(var e in n||(n={}))y.call(n,e)&&m(i,e,n[e]);if(p)for(var e of p(n))b.call(n,e)&&m(i,e,n[e]);return i},a=(i,n)=>q(i,g(n));import{P as o,w as _}from"./index.5a47cda7.js";function S(i){if(!/^[1-9]+[0-9]*edo$/.test(i))throw new Error('not an edo scale: "'+i+'"');const[n,e]=i.match(/^([1-9]+[0-9]*)edo$/);return Array.from({length:e},(r,s)=>Math.pow(2,s/e))}const f={"12ji":[1/1,16/15,9/8,6/5,5/4,4/3,45/32,3/2,8/5,5/3,16/9,15/8]};function v(i,n){return n.map(e=>e*i)}const w=220;function k(i,n){if(typeof i=="string")if(/^[1-9]+[0-9]*edo$/.test(i))i=S(i);else if(f[i])i=f[i];else throw new Error('unknown scale name: "'+i+'"');return i=v(w,i),n?i.filter((e,r)=>n.includes(r)):i}function l(i,n,e=0){const r=_(e+n,i.length),s=Math.floor(n/i.length);return i[r]*Math.pow(2,s)}o.prototype._xen=function(i,n){return this._asNumber()._withHap(e=>{const r=k(i);n=n||r.length;const s=l(r,e.value);return e.withValue(()=>s).setContext(a(c({},e.context),{type:"frequency"}))})};o.prototype.tuning=function(i){return this._asNumber()._withHap(n=>{const e=l(i,n.value);return n.withValue(()=>e).setContext(a(c({},n.context),{type:"frequency"}))})};o.prototype.define("xen",(i,n)=>n.xen(i),{composable:!0,patternified:!0});function t(){this.scale=[],this.mode={output:"frequency",input:"step"},this.etmajor=[261.62558,293.664764,329.627563,349.228241,391.995422,440,493.883301,523.25116],this.tonic=440}t.prototype.tonicize=function(i){this.tonic=i};t.prototype.note=function(i,n){var e;return this.mode.output=="frequency"?e=this.frequency(i,n):this.mode.output=="ratio"?e=this.ratio(i,n):this.mode.output=="MIDI"?e=this.MIDI(i,n):e=this.frequency(i,n),e};t.prototype.frequency=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);for(var r=i%this.scale.length;r<0;)r+=this.scale.length;var s=this.tonic*this.scale[r];return s=s*Math.pow(2,e),s=Math.floor(s*1e11)/1e11,s};t.prototype.ratio=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);var r=i%this.scale.length,s=Math.pow(2,e)*this.scale[r];return s=Math.floor(s*1e11)/1e11,s};t.prototype.MIDI=function(i,n){var e=this.frequency(i,n),r=69+12*Math.log(e/440)/Math.log(2);return r=Math.floor(r*1e9)/1e9,r};t.prototype.loadScale=function(i){var n=u[i].frequencies;this.scale=[];for(var e=0;e[1, 1, -1]->[0, 1, -1]->[0, 0, -1]->[0, 0, 0]->[0, -1, 0],[0, -1, 1]->[0, -2, 1]->[-1, -2, 1]"},breedt1:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,326.6631048533,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Graham Breed's 1/4 P temperament, TL 10-06-99"},breedt2:{frequencies:[261.6255653006,276.37000081643,293.53214922797,310.91625060765,328.43856194079,349.78078158391,368.4933346061,392.4383479509,414.55500101742,439.10654054756,466.37437567834,492.65784266492,523.2511306012],description:"Graham Breed's 1/5 P temperament, TL 10-06-99"},breedt3:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,350.01785633742,368.74309237173,392.4383479509,414.83597850347,438.51190905657,466.69047534984,491.65745674141,523.2511306012],description:"Graham Breed's other 1/4 P temperament, TL 10-06-99"},brown:{frequencies:[261.6255653006,272.52663052146,275.62199471997,275.93321340298,279.38237857051,287.10624449997,290.69507255622,291.02331101095,294.32876096318,306.24666079997,306.59245933664,310.07474405997,310.42486507835,322.99452506247,327.03195662575,331.11985608357,344.52749339997,344.91651675372,348.83408706747,349.22797321314,363.36884069528,367.49599295996,367.91095120397,372.50983809402,382.80832599996,387.59343007496,388.03108134794,392.4383479509,408.78994578219,413.43299207996,413.89982010446,430.65936674996,436.04260883433,436.53496651643,441.49314144476,459.36999119996,459.88868900496,465.11211608996,465.63729761752,484.4917875937,489.99465727995,490.54793493862,496.67978412536,516.79124009995,517.37477513058,523.2511306012],description:"Tuning of Colin Brown's Voice Harmonium, Glasgow. Helmholtz/Ellis p. 470-473"},bruder:{frequencies:[261.6255653006,276.38325105256,293.66476791741,310.22971009486,327.53979283172,349.02656754477,368.60786575306,391.65594491223,414.34624765043,439.23819834286,465.62553897253,491.60634075178,523.2511306012],description:"Ignaz Bruder organ temperament (1829) according to P. Vier"},burma3:{frequencies:[261.6255653006,287.71029735626,317.68827763215,350.39147881787,389.32370520689,429.81331927092,476.14308821464,523.2511306012],description:"Burmese scale, von Hornbostel"},"burt-forks":{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Warren Burt 19-tone Forks. Interval 5(3): pp. 13+23 Winter 1986-87"},burt1:{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,415.52295665389,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"W. Burt's 13diatsub #1"},burt10:{frequencies:[261.6255653006,265.11390617127,268.69652652494,272.3773008609,276.16031892841,355.06326719367,368.21375857121,382.37582620857,386.08821287079,389.87339142835,393.73352401674,397.67085925691,523.2511306012],description:"W. Burt's 19enhsub #10"},burt11:{frequencies:[261.6255653006,344.24416486921,347.6866065179,351.12904816659,354.57148981529,358.01393146398,371.78369805875,385.55346465352,495.71159741166,502.59648070905,509.48136400643,516.36624730382,523.2511306012],description:"W. Burt's 19enhharm #11"},burt12:{frequencies:[261.6255653006,302.93486508491,316.70463167967,330.47439827444,344.24416486921,358.01393146398,371.78369805875,385.55346465352,440.63253103259,468.17206422213,495.71159741166,509.48136400643,523.2511306012],description:"W. Burt's 19diatharm #12"},burt13:{frequencies:[261.6255653006,273.51763645063,286.54228580542,293.53112204458,300.86940009569,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,523.2511306012],description:"W. Burt's 23diatsub #13"},burt14:{frequencies:[261.6255653006,264.50057151269,267.43946675172,270.4444045804,273.51763645063,334.29933343966,353.96400011258,376.08675011961,382.05638107389,388.21858076863,394.58281979763,401.15920012759,523.2511306012],description:"W. Burt's 23enhsub #14"},burt15:{frequencies:[261.6255653006,341.25073734861,346.93824963775,352.6257619269,358.31327421604,364.00078650518,386.75083566176,409.50088481833,500.50108144463,506.18859373377,511.87610602291,517.56361831206,523.2511306012],description:"W. Burt's 23enhharm #15"},burt16:{frequencies:[261.6255653006,295.75063903546,307.12566361375,318.50068819203,341.25073734861,364.00078650518,386.75083566176,409.50088481833,455.00098313148,466.37600770977,477.75103228805,500.50108144463,523.2511306012],description:"W. Burt's 23diatharm #16"},burt17:{frequencies:[261.6255653006,262.27760655527,262.77528702311,280.51080915002,281.04308772525,281.33584094163,286.12102533302,286.66394947976,306.91182648178,308.56189006502,309.14739649778,336.61297098002,337.2517052703,337.60300912996,338.42271813583,339.41807907152,363.01398831179,369.18841978454,370.27426807802,396.01525997649,398.14437427744,399.31538714296,403.93556517602,406.10726176299,434.33931739357,434.79175418253,435.61678597414,437.95881170519,475.21831197179,476.86837555503,477.77324913293,478.27092960078,479.17846457156,521.20718087229,521.75010501903,522.74014316897,523.2511306012],description:`W. Burt's "2 out of 3,5,11,17,31 dekany" CPS with 1/1=3/1. 1/1 vol. 10(1) '98`},burt18:{frequencies:[261.6255653006,268.26840191956,269.80136421624,270.50397193556,275.42222597075,281.04308772525,286.15296204753,295.09524211152,300.46061014991,306.59245933664,309.14739649778,314.76825825228,321.92208230347,324.60476632267,337.2517052703,343.38355445704,344.27778246344,354.11429053382,357.69120255941,367.91095120397,370.97687579734,375.57576268738,393.46032281536,404.70204632437,413.13333895612,421.56463158788,429.2294430713,432.80635509689,449.66894036041,463.72109474667,472.15238737843,490.54793493862,491.82540351919,500.76768358318,505.87755790546,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 1,3,5,7,11 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt19:{frequencies:[261.6255653006,268.26840191956,286.15296204753,294.32876096318,300.46061014991,306.59245933664,321.92208230347,327.03195662575,343.38355445704,357.69120255941,367.91095120397,375.57576268738,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 2,3,4,5,7 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt2:{frequencies:[261.6255653006,264.16561933264,266.75547834571,269.39662169567,272.09058791262,340.11323489078,344.41846571218,348.83408706747,353.36439988652,358.01393146398,412.25846653428,485.87604984397,523.2511306012],description:"W. Burt's 13enhsub #2"},burt20:{frequencies:[261.6255653006,269.10058145205,279.06726965397,279.38237857051,294.32876096318,298.00787047521,330.74639366397,335.25885428462,367.91095120397,376.74081403286,412.06026534844,418.60090448096,523.2511306012],description:'Warren Burt tuning for "Commas" (1993) 1/1=263. XH 16'},burt3:{frequencies:[261.6255653006,281.75060878526,332.06321749692,382.37582620857,387.40708707973,392.4383479509,397.46960882207,402.50086969323,503.12608711654,508.1573479877,513.18860885887,518.21986973003,523.2511306012],description:"W. Burt's 13enhharm #3"},burt4:{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,342.12573923925,362.25078272391,382.37582620857,402.50086969323,442.75095666255,462.87600014722,483.00104363188,503.12608711654,523.2511306012],description:"W. Burt's 13diatharm #4, see his post 3/30/94 in Tuning Digest #57"},burt5:{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,277.97716313189,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"W. Burt's 17diatsub #5"},burt6:{frequencies:[261.6255653006,265.53042448419,269.55361273395,273.7005913914,277.97716313189,370.63621750918,386.75083566176,404.33041910093,408.97789518255,413.73345210327,418.60090448096,423.58424858192,523.2511306012],description:"W. Burt's 17enhsub #6"},burt7:{frequencies:[261.6255653006,323.18452184192,327.03195662575,330.87939140958,334.72682619341,338.57426097725,353.96400011258,369.35373924791,492.47165233054,500.16652189821,507.86139146587,515.55626103354,523.2511306012],description:"W. Burt's 17enhharm #7"},burt8:{frequencies:[261.6255653006,277.01530443593,292.40504357126,307.79478270659,323.18452184192,338.57426097725,353.96400011258,369.35373924791,400.13321751856,430.91269578922,461.69217405988,492.47165233054,523.2511306012],description:"W. Burt's 17diatharm #8"},burt9:{frequencies:[261.6255653006,268.69652652494,276.16031892841,292.40504357126,310.68035879446,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"W. Burt's 19diatsub #9"},burt_fibo:{frequencies:[261.6255653006,277.97716313189,294.32876096318,311.70233365892,327.03195662575,343.38355445704,363.82305174615,385.28452389971,392.4383479509,425.14154361347,449.66894036041,476.24028683625,523.2511306012],description:'Warren Burt, 3/2+5/3+8/5+etc. "Recurrent Sequences", 2002'},burt_fibo23:{frequencies:[261.6255653006,267.05480676802,277.97716313189,282.81557538079,294.32876096318,299.5065008038,311.70233365892,327.03195662575,330.09788121912,343.38355445704,349.5792770728,363.82305174615,370.21039464899,385.28452389971,392.4383479509,408.02346463385,425.14154361347,432.10374737758,449.66894036041,457.60521391719,476.24028683625,484.61169812829,504.34459560877,523.2511306012],description:'Warren Burt, 23-tone Fibonacci scale. "Recurrent Sequences", 2002'},burt_primes:{frequencies:[261.6255653006,267.75741448733,273.88926367407,277.97716313189,280.0211128608,284.10901231862,290.24086150535,298.416660421,302.50455987882,304.54850960773,308.63640906555,310.68035879446,320.90010743902,322.94405716793,327.03195662575,333.16380581248,335.20775554139,339.29565499922,341.33960472813,351.55935337268,353.60330310159,359.73515228832,363.82305174615,365.86700147506,369.95490093288,376.08675011961,384.26254903526,390.39439822199,392.4383479509,394.48229767981,396.52624740872,402.65809659545,406.74599605328,412.87784524001,421.05364415565,425.14154361347,431.27339280021,433.31734252912,437.40524198694,445.58104090258,455.80078954714,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,519.16323114338,523.2511306012],description:'Warren Burt, primes until 251. "Some Numbers", Dec. 2002'},bushmen:{frequencies:[261.6255653006,347.0163224393,394.26624244126,453.9405988926,523.2511306012],description:"Observed scale of South-African bushmen, almost (4 notes) equal pentatonic"},dan_semantic:{frequencies:[261.6255653006,272.52663052146,275.62199471997,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,397.34382730029,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:'The Semantic Scale, from Alain Dani\xEF\xBF\xBDlou: "S\xEF\xBF\xBDmantique Musicale" (1967)'},danielou5_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.62199471997,279.06726965397,282.55561052465,285.76488412567,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division in 5-limit, symmetrized"},danielou_53:{frequencies:[261.6255653006,264.89588486686,267.43946675172,272.52663052146,275.62199471997,279.06726965397,282.55561052465,287.78812183066,290.69507255622,294.32876096318,297.67175429757,301.87565226992,306.59245933664,310.07474405997,313.95067836072,318.93402246168,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.64686971777,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division of the Octave, see p. 153"},darreg:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"This set of 19 ratios in 5-limit JI is for his megalyra family"},darreg_ennea:{frequencies:[261.6255653006,269.29177952703,277.18263097687,293.66476791741,349.22823143301,391.99543598175,403.48177901006,415.30469757995,440,523.2511306012],description:"Ivor Darreg's Mixed Enneatonic, a mixture of chromatic and enharmonic"},darreg_genus:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,523.2511306012],description:"Ivor Darreg's Mixed JI Genus (Archytas Enh, Ptolemy Soft Chrom, Didymos Chrom"},darreg_genus2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,348.83408706747,392.4383479509,406.97310157871,418.60090448096,441.49314144476,523.2511306012],description:"Darreg's Mixed JI Genus 2 (Archytas Enharmonic and Chromatic Genera)"},david11:{frequencies:[261.6255653006,269.80136421624,274.70684356563,285.40970760065,294.32876096318,305.22982618403,314.76825825228,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,374.60024122586,392.4383479509,406.97310157871,419.69101100305,428.11456140098,441.49314144476,457.84473927605,479.64686971777,490.54793493862,499.46698830115,523.2511306012],description:"11-limit system from Gary David, 1967"},david7:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,488.36772189445,523.2511306012],description:"Gary David's Constant Structure, 1967. A mode of Fokker's 7-limit scale"},ddimlim1:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"First 27/25&2048/1875 scale"},de_caus:{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"De Caus (a mode of Ellis's duodene) (1615)"},degung1:{frequencies:[261.6255653006,286.1303811777,319.28416942365,390.63652710512,420.90734643474,523.2511306012],description:"Gamelan Degung, Kabupaten Sukabumi. 1/1=363 Hz"},degung2:{frequencies:[261.6255653006,276.67939184371,325.99375993805,390.36201910543,415.27879033283,523.2511306012],description:"Gamelan Degung, Kabupaten Bandung. 1/1=252 Hz"},degung3:{frequencies:[261.6255653006,282.83850205216,320.55017368416,393.28023705203,426.95140008307,523.2511306012],description:"Gamelan Degung, Kabupaten Sumedang. 1/1=388.5 Hz"},degung4:{frequencies:[261.6255653006,284.6485709981,319.18312009646,379.88037698982,415.46137490477,523.2511306012],description:"Gamelan Degung, Kasepuhan Cheribon. 1/1=250 Hz"},degung5:{frequencies:[261.6255653006,284.24274449773,317.86283634652,388.77066331187,430.33748813761,523.2511306012],description:"Gamelan Degung, Kanoman Cheribon. 1/1=428 Hz"},degung6:{frequencies:[261.6255653006,273.29426590363,298.47415715355,379.54129348313,409.02013274169,523.2511306012],description:"Gamelan Degung, Kacherbonan Cheribon. 1/1=426 Hz"},dekany:{frequencies:[261.6255653006,299.7792935736,305.22982618403,327.03195662575,359.73515228832,381.53728273004,419.69101100305,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"2)5 Dekany 1.3.5.7.11 (1.3 tonic)"},dekany2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,348.83408706747,358.80077526939,398.6675280771,418.60090448096,448.50096908674,465.11211608996,523.2511306012],description:"3)5 Dekany 1.3.5.7.9 (1.3.5.7.9 tonic)"},dekany3:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"2)5 Dekany 1.3.5.7.9 and 3)5 Dekany 1 1/3 1/5 1/7 1/9"},dekany4:{frequencies:[261.6255653006,270.96933548991,288.48890459486,310.68035879446,321.77608589426,355.06326719367,425.14154361347,440.3251701711,474.19633710734,485.87604984397,523.2511306012],description:"2)5 Dekany 1.7.13.19.29 (1.7 tonic)"},dekany_union:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,381.53728273004,392.4383479509,412.06026534844,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Union of 2)5 and 3)5 [ 1 3 5 7 9] dekanies"},dent:{frequencies:[261.6255653006,276.73939277812,293.41671964988,311.13637945111,328.33487278761,349.18153137729,368.9858570375,391.91718148616,414.84850593482,438.82216331296,465.92281947955,491.98114271667,523.2511306012],description:"Tom Dent, well temperament with A=421 Hz. Integer Hz beat rates from A"},dent2:{frequencies:[261.6255653006,276.57667301797,293.18838124587,310.79781949647,328.55897053596,349.10502918563,369.05532299592,391.67735584266,414.54302837239,438.92977277749,465.83490899549,492.45596147139,523.2511306012],description:"Tom Dent, well-temperament, 2/32 and 5/32 comma. TL 3 & 5-9-2005"},dent3:{frequencies:[261.6255653006,276.38325105256,293.15632631094,310.94732162256,328.48713220126,349.22823143301,368.7143392539,391.76907592069,414.58565256441,438.73106346722,466.16376151809,492.17459484008,523.2511306012],description:'Tom Dent, Bach harpsichord "sine wave" temperament, TL 10-10-2005'},deporcy:{frequencies:[261.6255653006,272.52663052146,286.15296204753,299.00064605783,313.95067836072,327.03195662575,348.83408706747,358.80077526939,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,478.40103369253,502.32108537715,523.2511306012],description:"A 15-note chord-based detempering of 7-limit porcupine"},diab19_612:{frequencies:[261.6255653006,267.01398215014,280.33982809972,299.03492334906,305.19382000629,313.95883772326,320.42510414137,327.02455105776,348.83292260574,366.24210002542,373.7851897098,392.43965797471,418.61038382265,427.23204601759,436.03127668087,448.5538823653,457.79225819026,488.32116993744,512.69177642068,523.2511306012],description:"diab19a in 612-tET"},diab19_72:{frequencies:[261.6255653006,266.71173418545,279.86396690685,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,349.22823143301,366.44956000397,373.57357677338,391.99543598175,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,489.15147723638,513.27277840175,523.2511306012],description:"diab19a in 72-tET"},diablack:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,331.11985608357,372.08969287196,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Unique 256/245&2048/2025 Fokker block"},diachrome1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"First 25/24&2048/2025 scale"},diacycle13:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,360.86284869048,373.75080757229,387.59343007496,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"Diacycle on 20/13, 13/10; there are also nodes at 3/2, 4/3; 13/9, 18/13"},diaddim1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,334.88072358477,344.91651675372,357.20610515709,367.91095120397,392.4383479509,418.60090448096,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 2048/2025&2048/1875 scale"},dialim1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,353.19451315581,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 27/25&2048/2025 scale"},diamisty:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,436.53496651643,470.39487098876,496.11959049595,523.2511306012],description:"Diamisty scale 2048/2025 and 67108864/66430125"},diamond11a:{frequencies:[261.6255653006,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,523.2511306012],description:"11-limit Diamond with added 16/15 & 15/8, Zoomoozophone tuning: 1/1 = 392 Hz"},diamond11ak:{frequencies:[261.6255653006,279.72330032405,285.63317938628,287.78812183066,290.69507255622,293.86839138568,299.07491977616,305.39295512204,314.19649759716,319.76457981184,326.52043447049,333.41680553884,335.93301933283,349.10721912206,359.17247822875,366.75848641051,373.2589099097,381.14243472333,392.13131479202,407.50942884268,410.58480125643,419.25667855894,428.11456140098,435.70146034294,448.26139746089,457.73103588952,465.84075338014,470.92601754108,475.68284600109,479.27160679251,489.39746055879,523.2511306012],description:"microtempered version of diamond11a, Dave Keenan TL 11-1-2000, 225/224&385/384"},diamond11at:{frequencies:[261.6255653006,279.83704120119,285.33574350137,287.98268367985,290.84948650387,293.82121114493,299.2738827313,305.22380787491,314.19079532693,320.23980272009,326.48518221507,332.71524733285,336.02719554531,349.1122100506,359.53680125564,366.52331521885,373.4984028396,380.75621844446,392.12570885984,407.39521875769,411.45055399509,419.30194782174,427.47925671618,435.70936791853,448.50981249085,457.42672761267,465.91555560021,470.67599975252,475.36147343465,479.7712027167,489.19854301666,523.2511306012],description:"microtempered version of diamond11a, OdC"},diamond11map:{frequencies:[195.99771799087,228.66400432268,261.33029065449,293.99657698631,326.66286331812,359.32914964993,391.99543598174,457.32800864536,522.66058130899,587.99315397261,653.32572663623,718.65829929986,213.81569235368,249.45164107929,285.0875898049,320.72353853051,356.35948725613,391.99543598174,427.63138470735,498.90328215858,570.1751796098,641.44707706103,712.71897451225,783.99087196348,235.19726158904,274.39680518722,313.59634878539,352.79589238357,391.99543598174,431.19497957991,470.39452317809,548.79361037444,627.19269757078,705.59178476713,783.99087196348,862.38995915983,261.33029065449,304.88533909691,348.44038753932,391.99543598174,435.55048442416,479.10553286657,522.66058130899,609.77067819382,696.88077507865,783.99087196348,871.10096884831,958.21106573314,293.99657698631,342.99600648402,391.99543598174,440.99486547946,489.99429497718,538.99372447489,587.99315397261,685.99201296804,783.99087196348,881.98973095892,979.98858995435,1077.98744894978,335.99608798435,391.99543598174,447.99478397913,503.99413197652,559.99347997391,615.99282797131,671.9921759687,783.99087196348,895.98956795826,1007.98826395305,1119.98695994783,1231.98565594261,783.99087196348],description:"11-limit diamond on a 'centreless' map"},diamond15:{frequencies:[261.6255653006,269.80136421624,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,310.07474405997,313.95067836072,318.85615771011,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,343.38355445704,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,367.91095120397,372.08969287196,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,398.6675280771,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,429.33426100611,436.04260883433,441.49314144476,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,507.3950357345,523.2511306012],description:"15-limit Diamond + 2nd ratios. See Novaro, 1927, Sistema Natural..."},diamond17:{frequencies:[261.6255653006,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,523.2511306012],description:"17-limit Diamond"},diamond17a:{frequencies:[261.6255653006,277.01530443593,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,494.18162334558,523.2511306012],description:"17-limit, +9 Diamond"},diamond19:{frequencies:[261.6255653006,275.39533189537,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,292.40504357126,299.00064605783,302.93486508491,305.22982618403,307.79478270659,309.19384990071,310.68035879446,313.95067836072,317.68818643644,322.00069575458,327.03195662575,330.47439827444,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,355.06326719367,358.01393146398,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,382.37582620857,385.55346465352,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,414.24047839262,418.60090448096,425.14154361347,430.91269578922,436.04260883433,440.63253103259,442.75095666255,444.76346101102,448.50096908674,451.89870370104,457.84473927605,468.17206422213,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,497.08857407114,523.2511306012],description:"19-limit Diamond"},diamond7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"7-limit Diamond, also double-tie circular mirroring of 4:5:6:7"},diamond9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"9-limit Diamond"},diamond_chess:{frequencies:[261.6255653006,299.00064605783,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,457.84473927605,523.2511306012],description:"9-limit chessboard pattern diamond. OdC"},diamond_chess11:{frequencies:[261.6255653006,287.78812183066,299.00064605783,313.95067836072,319.76457981184,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,428.11456140098,436.04260883433,457.84473927605,475.68284600109,523.2511306012],description:"11-limit chessboard pattern diamond. OdC"},diamond_dup:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Two 7-limit diamonds 3/2 apart"},diamond_mod:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"13-tone Octave Modular Diamond, based on Archytas's Enharmonic"},diamond_tetr:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,523.2511306012],description:"Tetrachord Modular Diamond based on Archytas's Enharmonic"},diaphonic_10:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"10-tone Diaphonic Cycle"},diaphonic_12:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Diaphonic Cycle, conjunctive form on 3/2 and 4/3"},diaphonic_12a:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,488.36772189445,523.2511306012],description:"2nd 12-tone Diaphonic Cycle, conjunctive form on 10/7 and 7/5"},diaphonic_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"D5-tone Diaphonic Cycle"},diaphonic_7:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"7-tone Diaphonic Cycle, disjunctive form on 4/3 and 3/2"},diaschismic:{frequencies:[261.6255653006,266.61097723855,278.05603152599,283.35453458855,295.51835494038,301.14961170579,314.07733767684,320.06224556188,333.80185153667,340.16262034629,354.76509561975,369.99442271164,377.04485988831,393.23061088369,400.72382577504,417.92606548687,425.88986517773,444.17243057662,452.63636847719,472.06710558841,481.06259110609,501.71360968203,523.2511306012],description:"diaschismic temperament, g=105.446531, p=600, 5-limit"},diat13:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012],description:"This genus is from K.S's diatonic Hypodorian harmonia"},diat15:{frequencies:[261.6255653006,301.87565226992,327.03195662575,356.76213450082,373.75080757229,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Tonos-15 Diatonic and its own trite synemmenon Bb"},diat15_inv:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,366.27579142084,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"Inverted Tonos-15 Harmonia, a harmonic series from 15 from 30."},diat17:{frequencies:[261.6255653006,296.50897400735,342.12573923925,370.63621750918,386.75083566176,404.33041910093,444.76346101102,494.18162334558,523.2511306012],description:"Tonos-17 Diatonic and its own trite synemmenon Bb"},diat19:{frequencies:[261.6255653006,276.16031892841,310.68035879446,355.06326719367,368.21375857121,382.37582620857,414.24047839262,451.89870370104,523.2511306012],description:"Tonos-19 Diatonic and its own trite synemmenon Bb"},diat21:{frequencies:[261.6255653006,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Tonos-21 Diatonic and its own trite synemmenon Bb"},diat21_inv:{frequencies:[261.6255653006,299.00064605783,323.91736656265,348.83408706747,373.75080757229,398.6675280771,448.50096908674,473.41768959156,523.2511306012],description:"Inverted Tonos-21 Harmonia, a harmonic series from 21 from 42."},diat23:{frequencies:[261.6255653006,286.54228580542,300.86940009569,334.29933343966,353.96400011258,376.08675011961,429.81342870813,462.87600014722,523.2511306012],description:"Tonos-23 Diatonic and its own trite synemmenon Bb"},diat25:{frequencies:[261.6255653006,297.30177875068,327.03195662575,363.36884069528,384.74347838324,408.78994578219,467.18850946536,503.12608711654,523.2511306012],description:"Tonos-25 Diatonic and its own trite synemmenon Bb"},diat27:{frequencies:[261.6255653006,294.32876096318,336.37572681506,353.19451315581,371.78369805875,392.4383479509,441.49314144476,504.56359022259,523.2511306012],description:"Tonos-27 Diatonic and its own trite synemmenon Bb"},diat27_inv:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,377.90359432309,387.59343007496,406.97310157871,465.11211608996,523.2511306012],description:"Inverted Tonos-27 Harmonia, a harmonic series from 27 from 54"},diat29:{frequencies:[261.6255653006,291.81313052759,316.13089140489,344.87006335079,361.29244731988,379.35706968587,421.50785520652,474.19633710734,523.2511306012],description:"Tonos-29 Diatonic and its own trite synemmenon Bb"},diat31:{frequencies:[261.6255653006,289.65687586852,311.93817401225,337.93302184661,352.6257619269,368.65420565085,405.51962621593,450.57736246214,523.2511306012],description:"Tonos-31 Diatonic. The disjunctive and conjunctive diatonic forms are the same"},diat33:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,375.37581108347,392.4383479509,431.68218274599,479.64686971777,523.2511306012],description:"Tonos-33 Diatonic. The conjunctive form is 23 (Bb instead of B) 20 18 33/2"},diat_chrom:{frequencies:[261.6255653006,280.31310567921,301.87565226992,348.83408706747,392.4383479509,420.46965851882,452.81347840488,523.2511306012],description:"Diatonic- Chromatic, on the border between the chromatic and diatonic genera"},diat_dies2:{frequencies:[261.6255653006,266.71168334607,311.12698372208,349.22823143301,391.99543598175,399.61600264311,466.16376151809,523.2511306012],description:"Dorian Diatonic, 2 part Diesis"},diat_dies5:{frequencies:[261.6255653006,274.52693220706,311.12698372208,349.22823143301,391.99543598175,411.32564531909,466.16376151809,523.2511306012],description:"Dorian Diatonic, 5 part Diesis"},diat_enh:{frequencies:[261.6255653006,269.29177952703,311.12698372208,349.22823143301,391.99543598175,403.48177901006,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode"},diat_enh2:{frequencies:[261.6255653006,269.29177952703,302.26980244078,349.22823143301,391.99543598175,403.48177901006,452.89298412314,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode 3 + 12 + 15 parts"},diat_enh3:{frequencies:[261.6255653006,302.26980244078,311.12698372208,349.22823143301,391.99543598175,452.89298412314,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 3 + 12 parts"},diat_enh4:{frequencies:[261.6255653006,302.26980244078,339.28638158975,349.22823143301,391.99543598175,452.89298412314,508.3551866238,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 12 + 3 parts"},diat_enh5:{frequencies:[261.6255653006,293.66476791741,339.28638158975,349.22823143301,391.99543598175,440,508.3551866238,523.2511306012],description:"Dorian Mode, 12 + 15 + 3 parts"},diat_enh6:{frequencies:[261.6255653006,293.66476791741,302.26980244078,349.22823143301,391.99543598175,440,452.89298412314,523.2511306012],description:"Dorian Mode, 12 + 3 + 15 parts"},diat_eq:{frequencies:[261.6255653006,288.06466200271,317.1754314895,349.22823143301,391.99543598175,431.60932167676,475.22619361214,523.2511306012],description:"Equal Diatonic, Islamic form, similar to 11/10 x 11/10 x 400/363"},diat_eq2:{frequencies:[261.6255653006,287.78812183066,317.12189733406,348.83408706747,392.4383479509,431.68218274599,475.68284600109,523.2511306012],description:"Equal Diatonic, 11/10 x 400/363 x 11/10"},diat_gold:{frequencies:[261.6255653006,292.38332274669,326.75708630452,349.99258496952,391.13935185123,437.1232727958,488.51296691354,523.2511306012],description:"Diatonic scale with ratio between whole and half tone the Golden Section"},diat_hemchrom:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"Diat. + Hem. Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_smal:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:'"Smallest number" diatonic scale'},diat_sofchrom:{frequencies:[261.6255653006,271.8968348557,311.12698372208,349.22823143301,391.99543598175,407.38495184466,466.16376151809,523.2511306012],description:"Diat. + Soft Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_soft:{frequencies:[261.6255653006,274.52693220706,302.26980244078,349.22823143301,391.99543598175,411.32564531909,452.89298412314,523.2511306012],description:"Soft Diatonic genus 5 + 10 + 15 parts"},diat_soft2:{frequencies:[261.6255653006,281.2143451833,302.26980244078,349.22823143301,391.99543598175,421.34544350737,452.89298412314,523.2511306012],description:"Soft Diatonic genus with equally divided Pyknon; Dorian Mode"},diat_soft3:{frequencies:[261.6255653006,281.2143451833,324.90175210669,349.22823143301,391.99543598175,421.34544350737,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},diat_soft4:{frequencies:[261.6255653006,302.26980244078,324.90175210669,349.22823143301,391.99543598175,452.89298412314,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},dicot:{frequencies:[261.6255653006,270.35822989652,294.32876096318,320.42456924675,331.11985608357,360.47764004221,392.4383479509,405.53734464206,441.49314144476,480.63685362987,523.2511306012],description:"Dicot temperament, g=350.9775, 5-limit"},didy_chrom:{frequencies:[261.6255653006,279.06726965397,290.69507255622,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Didymus Chromatic"},didy_chrom1:{frequencies:[261.6255653006,279.06726965397,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Permuted Didymus Chromatic"},didy_chrom2:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,470.92601754108,490.54793493862,523.2511306012],description:"Didymos's Chromatic, 6/5 x 25/24 x 16/15"},didy_chrom3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,392.4383479509,408.78994578219,436.04260883433,523.2511306012],description:"Didymos's Chromatic, 25/24 x 16/15 x 6/5"},didy_diat:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,418.60090448096,465.11211608996,523.2511306012],description:"Didymus Diatonic"},didy_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Inverse Didymus Diatonic, variant of Ptolemy with 2 identical triads"},didy_enh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Dorian mode of Didymos's Enharmonic"},didy_enh2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,348.83408706747,392.4383479509,413.43299207996,418.60090448096,523.2511306012],description:"Permuted Didymus Enharmonic"},"diesic-m":{frequencies:[261.6255653006,289.62525622617,320.62153003931,354.93508703008,392.92094947462,434.97213484265,481.52372211906,523.2511306012],description:"Minimal Diesic temperament, g=176.021, 5-limit"},"diesic-t":{frequencies:[261.6255653006,272.92239980638,281.87304203955,294.04415210774,303.68749398125,316.80053726141,327.19018747082,337.92057205022,352.51178108166,364.07260143821,379.79303732838,392.24856169057,409.18561859271,422.60509148244,436.46466102477,455.31094249407,470.24311865111,490.54793493862,506.63572944675,523.2511306012],description:"Tiny Diesic temperament, g=443.017, 5-limit"},diff31_72:{frequencies:[261.6255653006,269.29177952703,274.52698453615,279.86396690685,285.30470202322,293.66476791741,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,336.03572815422,342.56848033562,352.60650301302,356.01745236555,366.44956000397,373.57357677338,384.52011812375,388.23978476841,399.61607881612,407.38487419079,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,508.3551866238,523.2511306012],description:"Diff31, 11/9, 4/3, 7/5, 3/2, 7/4, 9/5 difference diamond, tempered to 72-et"},dimteta:{frequencies:[261.6255653006,282.55561052465,307.12566361375,336.37572681506,406.97310157871,439.53094970501,477.75103228805,523.2511306012],description:"A heptatonic form on the 9/7"},dimtetb:{frequencies:[261.6255653006,294.32876096318,336.37572681506,406.97310157871,457.84473927605,523.2511306012],description:"A pentatonic form on the 9/7"},div_fifth1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #1, From Schlesinger, see Chapter 8, p. 160"},div_fifth2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #2, From Schlesinger, see Chapter 8, p. 160"},div_fifth3:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #3, From Schlesinger, see Chapter 8, p. 160"},div_fifth4:{frequencies:[261.6255653006,274.70684356563,305.22982618403,343.38355445704,392.4383479509,523.2511306012],description:"Divided Fifth #4, From Schlesinger, see Chapter 8, p. 160"},div_fifth5:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,523.2511306012],description:"Divided Fifth #5, From Schlesinger, see Chapter 8, p. 160"},dkring1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,320.49131749323,327.03195662575,366.27579142084,392.4383479509,439.53094970501,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 4:5:6:7"},dkring2:{frequencies:[261.6255653006,274.70684356563,305.22982618403,329.64821227876,336.37572681506,353.19451315581,366.27579142084,392.4383479509,406.97310157871,427.32175665765,436.04260883433,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 3:5:7:9"},dkring3:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,348.83408706747,384.42940207435,392.4383479509,398.6675280771,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"Double-tie circular mirroring of 6:7:8:9"},dkring4:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,327.03195662575,336.37572681506,367.91095120397,373.75080757229,378.42269266694,420.46965851882,467.18850946536,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 7:8:9:10"},dodeceny:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Degenerate eikosany 3)6 from 1.3.5.9.15.45 tonic 1.3.15"},dorian_chrom:{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,315.92521092903,322.00069575458,348.83408706747,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,620.14948811994,631.85042185805,644.00139150917,697.66817413493,761.09255360175,797.33505615421,816.78225264578,837.20180896192,930.22423217991,1046.5022612024],description:"Dorian Chromatic Tonos"},dorian_chrom2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the chromatic genus"},dorian_chrominv:{frequencies:[261.6255653006,273.00058987889,285.40970760065,332.97799220076,380.54627680087,404.33041910093,428.11456140098,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Dorian inverted"},dorian_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,669.76144716954,697.66817413493,728.00157301037,761.09255360175,837.20180896192,881.26506206518,930.22423217991,984.94330466108,1046.5022612024],description:"Dorian Diatonic Tonos"},dorian_diat2:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,442.75095666255,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Harmonia, a subharmonic series through 13 from 22"},dorian_diat2inv:{frequencies:[261.6255653006,285.40970760065,309.19384990071,332.97799220076,356.76213450082,380.54627680087,428.11456140098,475.68284600109,523.2511306012],description:"Inverted Schlesinger's Dorian Harmonia, a harmonic series from 11 from 22"},dorian_diatcon:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,479.64686971777,523.2511306012],description:"A Dorian Diatonic with its own trite synemmenon replacing paramese"},dorian_diatred11:{frequencies:[261.6255653006,287.78812183066,316.56693401373,348.83408706747,392.4383479509,431.68218274599,474.85040102059,523.2511306012],description:"Dorian mode of a diatonic genus with reduplicated 11/10"},dorian_enh:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,310.07474405997,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012,558.13453930795,598.00129211566,608.8740428814,614.4600432748,620.14948811994,697.66817413493,761.09255360175,778.79238042969,787.95464372887,797.33505615421,930.22423217991,1046.5022612024],description:"Dorian Enharmonic Tonos"},dorian_enh2:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the enharmonic genus"},dorian_enhinv:{frequencies:[261.6255653006,267.19206668997,273.00058987889,332.97799220076,380.54627680087,392.4383479509,404.33041910093,523.2511306012],description:"A harmonic form of Schlesinger's Dorian enharmonic inverted"},dorian_pent:{frequencies:[261.6255653006,271.49822814213,287.78812183066,359.73515228832,411.12588832951,423.21782622156,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the pentachromatic genus"},dorian_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the Dorian Tonos, a non-rep. 16 tone gamut"},dorian_schl:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Piano Tuning (Sub 22)"},dorian_tri1:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,411.12588832951,421.15334902048,431.68218274599,523.2511306012],description:"Schlesinger's Dorian Harmonia in the first trichromatic genus"},dorian_tri2:{frequencies:[261.6255653006,269.80136421624,287.78812183066,359.73515228832,411.12588832951,421.15334902048,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the second trichromatic genus"},douwes:{frequencies:[261.6255653006,273.00058987889,292.50063201309,313.39353429974,327.01933943691,350.37786403433,365.61168556196,391.72680409,408.75840577964,436.81779569448,468.01906681552,488.36772189445,523.2511306012],description:"Claas Douwes recommendation of 24/23 and 15/14 steps for clavichord (1699)"},dow_high:{frequencies:[261.6255653006,277.01530443593,278.50463402967,294.32876096318,308.34441624714,313.31771328338,327.34193952303,331.11985608357,346.88746827803,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707],description:"Highest octave of Dowlands lute tuning, strings 5,6. 1/1=G (1610)"},dow_lmh:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012,548.16785110602,557.00926805934,581.94122581871,588.65752192635,616.68883249427,620.14948811994,626.63542656676,656.62886977405,662.23971216714,693.77493655606,697.66817413493,736.51936392681,742.67902407912,784.8766959018,822.25177665903,831.04591330779,835.51390208901,882.98628288953,925.03324874141,939.95313985014,982.02581856908,993.35956825072,1040.66240483408,1046.5022612024,1108.06121774372,1114.01853611868,1177.3150438527,1233.37766498854,1253.27085313352,1309.3677580921,1324.47942433429,1387.54987311211,1395.33634826987,1477.41495699162,1569.7533918036,1671.02780417803,1765.97256577905,1850.06649748281],description:"All three octaves of Dowland's lute tuning"},dow_low:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012],description:"Lowest octave of Dowlands lute tuning, strings 1,2,3. 1/1=G. (1610)"},dow_middle:{frequencies:[261.6255653006,274.08392555301,278.50463402967,290.97061290936,294.32876096318,308.34441624714,310.07474405997,313.31771328338,328.31443488703,331.11985608357,346.88746827803,348.83408706747,368.2596819634,371.33951203956,392.4383479509,411.12588832951,415.52295665389,417.75695104451,441.49314144476,462.5166243707,469.97656992507,491.01290928454,496.67978412536,520.33120241704,523.2511306012],description:"Middle octave of Dowlands lute tuning, strings 3,4,5. 1/1=G (1610)"},dowland_12:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707,492.47165233054,523.2511306012],description:"subset of Dowland's lute tuning, lowest octave"},druri:{frequencies:[261.6255653006,285.79952600623,326.97270111135,357.18467683857,523.2511306012],description:"Scale of druri dana of Siwoli, south Nias, Jaap Kunst"},dudon_a:{frequencies:[261.6255653006,285.85015468029,319.76457981184,348.83408706747,392.4383479509,428.77523202043,479.64686971777,523.2511306012],description:"Dudon Tetrachord A"},dudon_b:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,482.37213602298,523.2511306012],description:"Dudon Tetrachord B"},dudon_c12:{frequencies:[261.6255653006,302.50455987882,327.03195662575,343.38355445704,392.4383479509,425.14154361347,474.19633710734,523.2511306012],description:"Differentially coherent scale in interval class 1 and 2"},dudon_diat:{frequencies:[261.6255653006,294.32876096318,321.08592105074,350.8160989258,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Dudon Neutral Diatonic"},dudon_moha_baya:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Mohajira + Bayati (Dudon) 3 + 4 + 3 Mohajira and 3 + 3 + 4 Bayati tetrachords"},dudon_mohajira:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Dudon's Mohajira, two 3 + 4 + 3 tetrachords, neutral diatonic"},dudon_mohajira_r:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"Jacques Dudon, JI Mohajira, Lumi\xEF\xBF\xBDres audibles"},dudon_thai:{frequencies:[261.6255653006,288.26147859917,317.63518509943,350.43752981487,386.47021463976,426.17461277719,469.97930400405,523.2511306012],description:"Dudon, coherent Thai heptatonic scale, 1/1 vol. 11/2, 2003"},dudon_thai2:{frequencies:[261.6255653006,288.02814528506,314.43072526953,347.1339209321,383.13743909274,422.44127975143,475.35895071461,523.2511306012],description:"Slightly better version, 3.685 cents deviation"},dudon_thai3:{frequencies:[261.6255653006,291.60349465796,321.58142401532,354.2846196779,394.48229767981,434.67997568173,478.96555314146,523.2511306012],description:"Dudon, Thai scale with two 704/703 = 2.46 c. deviations and simpler numbers"},duncan:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Dudley Duncan's Superparticular Scale"},duoden12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Almost equal 12-tone subset of Duodenarium"},duodenarium:{frequencies:[14.56761754744,14.73307690724,14.74971276678,14.91724036858,14.98726085128,15.00418372272,15.10370587319,15.17460161192,15.19173601925,15.34695511171,15.36428413207,15.5387920506,15.55633768372,15.71528203439,15.73302695124,15.80687667908,15.91172305982,15.92968978813,16.00446263757,16.18624171938,16.20451842054,16.38856974087,16.57471152064,16.59342686263,16.78189541465,16.86066845769,16.87970668806,16.99166910733,17.07142681341,17.26532450067,17.28481964857,17.48114105693,17.67969228869,17.69965532014,17.78273626396,17.90068844229,17.98471302153,18.00502046726,18.2095219343,18.41634613405,18.43714095848,18.64655046072,18.73407606409,18.85833844126,18.87963234148,18.9682520149,18.98967002407,19.18369388963,19.20535516508,19.42349006325,19.44542210465,19.64410254298,19.66628368904,19.88965382477,19.91211223516,20.00557829696,20.13827449758,20.23280214922,20.25564802567,20.48571217609,20.7183894008,20.74178357829,20.97736926831,21.07583557211,21.21563074642,21.23958638417,21.33928351676,21.58165562584,21.60602456072,21.85142632116,22.09961536086,22.12456915017,22.37586055287,22.48089127691,22.50627558408,22.65555880978,22.76190241787,23.02043266756,23.0464261981,23.3081880759,23.57292305158,23.59954042685,23.71031501862,23.86758458973,23.97961736204,24.00669395635,24.27936257907,24.30677763081,24.55512817873,24.5828546113,24.86206728096,24.89014029395,25.14445125502,25.17284312198,25.29100268653,25.31956003209,25.487503661,25.60714022011,25.897986751,25.92722947286,26.22171158539,26.51953843303,26.54948298021,26.67410439595,26.85103266344,26.9770695323,27.0075307009,27.31428290145,27.62451920107,27.65571143772,27.96982569108,28.10111409614,28.2875076619,28.31944851222,28.45237802234,28.77554083445,28.80803274762,29.13523509488],description:"Ellis's Duodenarium : genus [3^12 5^8]"},duodene:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Duodene : genus [33355]"},"duodene14-18-21":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"14-18-21 Duodene"},"duodene3-11_9":{frequencies:[261.6255653006,285.40970760065,294.32876096318,319.76457981184,321.08592105074,348.83408706747,359.73515228832,392.4383479509,426.35277308246,428.11456140098,479.64686971777,481.6288815761,523.2511306012],description:"3-11/9 Duodene"},"duodene3-7":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"3-7 Duodene"},"duodene6-7-9":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"6-7-9 Duodene"},duodene_min:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Minor Duodene"},"duodene_r-45":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,353.19451315581,376.74081403286,401.85686830172,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated -45 degrees"},duodene_r45:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,313.95067836072,334.88072358477,383.2405741708,408.78994578219,436.04260883433,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 45 degrees"},duodene_r90:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 90 degrees: genus [33555]"},duodene_skew:{frequencies:[261.6255653006,282.55561052465,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rotated 6/5x3/2 duodene"},duodene_t:{frequencies:[261.6255653006,279.3825857701,293.66476791741,313.59634948548,327.03195662575,349.22823143301,367.08095907728,391.99543598175,418.60090448096,436.53528831673,469.86362971679,489.99429388332,523.2511306012],description:"Duodene with equal tempered fifths"},duowell:{frequencies:[261.6255653006,278.41172412276,294.03623226919,312.90189200955,327.96500300935,349.00756672938,368.59392213143,392.24328034087,417.4100028405,437.50413894442,469.11953885575,491.70297432358,523.2511306012],description:"Ellis duodene well-tuned to fifth=(7168/11)^(1/16) third=(11/7)^(1/2)"},dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},cairo:{frequencies:[261.6255653006,269.38381929633,276.03456984659,285.15047989166,293.63138642043,300.85736580106,309.799366845,312.20234522745,320.03127253896,327.93377450564,337.66851484331,348.83408706747,357.41197445437,367.9166999024,380.21445327801,392.4383479509,401.02017979859,414.62054722758,417.26565438692,427.77234352616,440.44707963064,451.93568025669,468.86302025197,480.04690880844,491.77737838459,510.98743222773,523.2511306012],description:"P.42, of d'Erlanger, vol.5. Congress of Arabic Music, Cairo, 1932"},canright:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:`David Canright's piano tuning for "Fibonacci Suite" (2001)`},carlos_alpha:{frequencies:[261.6255653006,273.68256372566,286.29520819723,299.48910562989,313.29104303136,327.729041887,342.83241505062,358.63182625716,375.1593523779,392.44854854484,410.5345162762,429.45397474154,449.24533531117,469.94877954106,491.60634075178,514.26198936695,537.96172218451,562.75365576207,588.68812410589],description:"Wendy Carlos' Alpha scale with perfect fifth divided in nine"},carlos_alpha2:{frequencies:[261.6255653006,267.58616452957,273.68256372566,279.91785681123,286.29520819723,292.81785438923,299.48910562989,306.31234757893,313.29104303136,320.42873367481,327.729041887,335.19567257401,342.83241505062,350.6431449633,358.63182625716,366.8025131876,375.1593523779,383.7065849236,392.44854854484,401.3896797878,410.5345162762,419.88769901416,429.45397474154,439.23819834286,449.24533531117,459.48046426806,469.94877954106,480.6555937997,491.60634075178,502.8065779009,514.26198936695,525.97838877075,537.96172218451,550.21807114943,562.75365576207,575.57483783111,588.68812410589],description:"Wendy Carlos' Alpha prime scale with perfect fifth divided by eightteen"},carlos_beta:{frequencies:[261.6255653006,271.44693432634,281.63699549204,292.20958942356,303.17907632096,314.56035546319,326.36888544505,338.62070517372,351.33245565363,364.52140258903,378.2054598351,392.40321372938,407.13394833666,422.41767164147,438.27514272393,454.72789995564,471.7982902542,489.50949943583,507.88558370741,526.95150234083,546.73315157381,567.25739978343,588.55212398003],description:"Wendy Carlos' Beta scale with perfect fifth divided by eleven"},carlos_beta2:{frequencies:[261.6255653006,266.49100855797,271.44693432634,276.49502530642,281.63699549204,286.87459075215,292.20958942356,297.64380291476,303.17907632096,308.81728905054,314.56035546319,320.41022551991,326.36888544505,332.43835840072,338.62070517372,344.91802487526,351.33245565363,357.86617542024,364.52140258903,371.30039682974,378.2054598351,385.23893610237,392.40321372938,399.70072522531,407.13394833666,414.70540688852,422.41767164147,430.27336116448,438.27514272393,446.42573318931,454.72789995564,463.18446188312,471.7982902542,480.57230974851,489.50949943583,498.61289378764,507.88558370741,517.33071758003,526.95150234083,536.75120456442,546.73315157381,556.90073257014,567.25739978343,577.80666964473,588.55212398003],description:"Wendy Carlos' Beta prime scale with perfect fifth divided by twentytwo"},carlos_gamma:{frequencies:[261.6255653006,266.98388983977,272.45195763676,278.03201633122,283.72635959645,289.53732808222,295.4673103769,301.51874398927,307.69411635045,313.99596583639,320.42688281121,326.98951069203,333.68654703547,340.52074464653,347.49491271011,354.6119179457,361.87468578579,369.2862015783,376.84951181374,384.56772537748,392.44401482761,400.48161769905,408.68383783428,417.05404674148,425.59568498025,434.31226357598,443.20736546293,452.28464695708,461.547839259,471.00074998758,480.64726474513,490.49134871455,500.53704828923,510.78849273629,521.24989589392,531.92555790347],description:"Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty"},carlos_harm:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'"},carlos_super:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Super Just"},carlson:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Brian Carlson's guitar scale (or 7 is 21/16 instead) fretted by Mark Rankin"},cassandra1:{frequencies:[261.6255653006,265.52313139125,271.43629763673,275.48001908354,279.58398024378,283.7490817683,290.06813927787,294.38942683035,298.7750924519,305.42877739024,309.97889991383,314.59680966486,319.28351286859,326.39391783308,331.25637026535,336.19125912653,343.67819754196,348.79814248043,353.99435973883,359.26798967332,367.26884406885,372.74022844163,378.29312490007,386.71766674112,392.47878977853,398.32574139651,407.19640716832,413.26261206104,419.41919061043,425.66748431192,435.14704737009,441.62964923022,448.20882304357,458.19037897128,465.01626879626,471.9438445688,478.97462660712,489.64133323501,496.93576068834,504.33885972365,515.57042175735,523.2511306012],description:"Cassandra temperament (Erv Wilson), 13-limit, g=497.866"},cassandra2:{frequencies:[261.6255653006,265.34593985135,270.18130909623,275.10479273152,279.0168449367,284.10133754875,289.27848429833,293.3920895946,298.7385406747,304.18241953205,309.72550158209,314.12986807617,319.85422136322,325.68288889698,330.31417303802,336.33345109576,342.46241778116,348.70307193775,353.66170827405,360.10644584283,366.66862514012,371.88273569526,378.65951299923,385.5597827545,392.58579535013,398.16845391153,405.42423290482,412.81223314336,418.68251621245,426.31212065787,434.08075852776,440.25348482514,448.27617460765,456.44506096456,464.76280801961,471.37183998139,479.96159605313,488.70788228454,495.65741860341,504.6897280454,513.8866322474,523.2511306012],description:"Cassandra temperament, schismic variant, 13-limit, g=497.395"},catler:{frequencies:[261.6255653006,269.80136421624,279.06726965397,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,322.00069575458,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,418.60090448096,425.14154361347,436.04260883433,441.49314144476,457.84473927605,465.11211608996,483.00104363188,490.54793493862,523.2511306012],description:'Catler 24-tone JI from "Over and Under the 13 Limit", 1/1 3(3)'},cbrat19:{frequencies:[261.6255653006,272.05448646742,281.65887246066,291.7164960911,303.76422848609,314.23522436032,325.78124145721,339.14379232251,350.05979530932,364.18597952318,377.95660802413,389.93691761381,406.2330981776,420.87727247778,436.65546295526,454.14747622901,467.92430113657,486.684954898,506.27371414348,523.2511306012],description:"brats = -1 -1 -1 -1 -1 -1 -1 -1 0 3/7 390808/591947 1/2 1/2 1/2 1/2 1/4 0 0 -1"},ceb88f:{frequencies:[261.6255653006,275.30280934529,289.60851057007,304.80308899558,320.69584574771,337.31885569235,354.97473368038,373.44187862432,393.05647479461,413.57234190108,435.03089105397,457.82276134277,481.66189358475,506.59641128799],description:"88 cents steps with equal beating fifths"},ceb88s:{frequencies:[261.6255653006,275.27750547448,289.60710371138,304.74878776577,320.64207659236,337.32428016541,354.95189689869,373.45451504132,392.8755714351,413.39725679488,434.93759942207,457.54716438978,481.43806014345,506.51485544552,533.01280425363],description:"88 cents steps with equal beating sevenths"},ceb88t:{frequencies:[261.6255653006,275.20384442973,289.60910777612,304.54100616185,320.3823320487,337.18847246966,354.60902163481,373.09056856306,392.69773188536,413.02170471677,434.58350960486,457.45853552679,481.16983689269,506.32527343025,533.01280425363],description:"88 cents steps with equal beating 7/6 thirds"},cet105:{frequencies:[261.6255653006,277.98437592617,295.36606150822,313.83458334354,333.45789502888,354.30820661869,376.46223533368,400.00150378562,425.01262301844,451.58762919357,479.82430313337,509.82655042708,541.70476218406,575.57624366132],description:"Equal temperament with very good 6/5 and 13/8"},cet105a:{frequencies:[261.6255653006,278.09098920184,295.59266404146,314.19580976213,333.96974580612,354.98815389674,377.32935907335,401.07660961589,426.31839262878,453.14877154631,481.66772230429,511.98151233648,544.20310589723,578.45256778249,614.85751848055,653.5536209391,694.68506540856,738.40511604959,784.8766959018],description:"18th root of 3"},cet111:{frequencies:[261.6255653006,279.02234237845,297.57591715819,317.3632108372,338.46625752841,360.97255206362,384.97540137331,410.57431878206,437.87543474729,466.99193686517,498.04453913461,531.16197935691,566.48156495049,604.14972437838,644.32262592407,687.16682227215,732.8599410185,781.59142109591,833.56329335333,888.99103711409,948.10444554232,1011.14859670036,1078.38486510237,1150.09200534594,1226.56730779978,1308.127826503],description:'25th root of 5, Karlheinz Stockhausen in "Studie II" (1954)'},cet111a:{frequencies:[261.6255653006,279.09119608948,297.72279782842,317.59821198502,338.80046946076,361.41815173468,385.54574794778,411.2840547398,438.74060487161,468.03009995854,499.27490936609,532.60556349815,568.16130614457,606.09068659426,646.55215742719,689.71476370538,735.75882016749,784.8766959018],description:"17th root of 3. McLaren 'Microtonal Music', volume 1, track 8"},cet112:{frequencies:[261.6255653006,279.13807488234,297.82282461384,317.75828292395,339.02816520012,361.72179601836,385.93447726538,411.76789245756,439.33052439618,468.73812456399,500.11419015728,533.59048802364,569.30759588159,607.4155105893,648.07426630787,691.45461344743,737.73872000797,787.12095980595,839.80871352279,896.02324851892,956.00062766807,1019.99273078287,1088.26829265547,1161.11404316696,1238.83588500259,1321.76021726874,1410.23528064063,1504.63263477595,1605.34868446028,1712.8063948195,1827.45703443292,1949.78208984359,2080.29524321777,2219.54459500735,2368.11492276755,2526.63016208001,2695.75596930795,2876.20260183901,3068.72784518,3274.14022786751,3493.30234242079,3727.13457771193,3976.61891204907,4242.80307922676,4526.8048719912,4829.81697864182,5153.11189830808,5498.04733953642,5866.07179694692,6258.73081875602,6677.6733762505,7124.65885956048,7601.56430418436,8110.3925243186],description:"53rd root of 31. McLaren 'Microtonal Music', volume 4, track 16"},cet114:{frequencies:[261.6255653006,279.47933554513,298.55147893584,318.92513586406,340.68912750315,363.93832870511,388.77409689134,415.30469757995,443.64579124771,473.92093172942,506.26209616971,540.81027939262,577.71608583803,617.1404103833,659.25511382574,704.24379572788,752.30258557703,803.64098403142,858.48280642307,917.06712239825,979.64933665453,1046.5022612024],description:"21st root of 4"},cet115:{frequencies:[261.6255653006,279.68949451567,299.00064605783,319.64513593742,341.71502406609,365.30872604057,390.53145607553,417.49568846357,446.32166408632,477.13792869952,510.08190181294],description:"2nd root of 8/7. Werner Linden, Musiktheorie, 2003 no.1 midi 15.Eb=19.44544 Hz"},cet117:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82340237272,513.27277840175,549.0539690723,587.32953583482,628.27336308449,672.07145630843,718.92279942609,769.0402362475,822.65144744826,880,941.34642612261,1006.96941915374,1077.1671181081,1152.25842837255,1232.58448551457,1318.51022765149,1410.42601205207,1508.74940691646,1613.92711604023,1726.4369576214,1846.79005749489,1975.53320502451,2113.25127526858,2260.56991361642,2418.15841952625,2586.73271138559,2767.05861265008,2959.95538169309],description:"72nd root of 128, step = generator of Miracle"},cet118:{frequencies:[261.6255653006,280.22072913446,300.13755324878,321.46997343155,344.3186075731,368.79121945838,395.0032340925,423.07827792492,453.14877154631,485.35654007358,519.85349135637,556.8023269521,596.37732215892,638.76512932755,684.16567043124,732.79307276157,784.8766959018],description:"16th root of 3. McLaren 'Microtonal Music', volume 1, track 7"},cet126:{frequencies:[261.6255653006,281.50639381697,302.89795903081,325.91506125677,350.68122444233,377.32935907335,406.00247545366,436.85445118639,470.05085697597,505.76984518255,544.20310589723,585.55689566922,630.05314440547,677.93064638327,729.44634176744,784.8766959018],description:"15th root of 3. McLaren 'Microtonal Music', volume 1, track 6"},cet126a:{frequencies:[261.6255653006,281.42815779395,302.72962012827,325.64340264099,350.29154279212,376.80531512858,405.32593044476,436.00528786292,469.00678383895,504.50618240233,542.69254813034,583.76926541313,627.95510352048,675.48539363125,726.61327927927,781.61106458091,840.77166451082,904.41016494992,972.86550081423,1046.5022612024],description:"19th root of 4"},cet133:{frequencies:[261.6255653006,282.54488373859,305.13688994853,329.53533037111,355.88464567857,384.34082587483,415.07233376839,448.26110228542,484.10361152681,522.81205194575,564.61558053174,609.76167743791,658.5176110828,711.17202040031],description:"13th root of e"},cet140:{frequencies:[261.6255653006,283.72172983292,307.68407293041,333.67021037701,361.85106232365,392.4119924075,425.55401329039,461.49511402661,500.47170241421,542.7401414615,588.57845795114,638.28815062634,692.19618110881,750.65713728047,814.05554253056,882.80839491877,957.36792629418,1038.22454144983,1125.91008648826,1221.00130775733,1324.12366033919,1435.95544645068,1557.23222387914,1688.75170820144,1831.3789571042],description:"24th root of 7"},cet141:{frequencies:[261.6255653006,283.85429714132,307.97166902637,334.13814720468,362.52783176564,393.32961502355,426.7484383229,463.0066556268,502.34551296122,545.02675670673,591.33436279611,641.57644431325,696.08728968715,755.22958979995,819.39685117042,889.01601417107,964.55029369918,1046.5022612024],description:"17th root of 4"},cet146:{frequencies:[261.6255653006,284.69629445872,309.80145226022,337.12043918596,366.84847565362,399.19799705513,434.40017432099,472.70655602525,514.39088038704,559.75102196641,609.11112257023,662.82390755693,721.27320639821,784.8766959018],description:"13th root of 3, Bohlen-Pierce approximation"},cet148:{frequencies:[261.6255653006,284.92791524313,310.30575035912,337.94392545772,368.04376529149,400.82452432448,436.52498800167,475.40520223986,517.74838217475,563.86296895784,614.08486606944,668.77990486322,728.34649714081,793.21854485147,863.86858278563,940.81124699851,1024.60701225804,1115.86625569541,1215.25373699679,1323.49342609599,1441.37375222579,1569.7533918036],description:"21th root of 6, Moreno's C-21"},cet152:{frequencies:[261.6255653006,285.70808394691,312.0073878821,340.72733440875,372.0911362405,406.34196228781,443.74556186468,484.59214639302,529.19833545193,577.91081034511,631.10724720728,689.20039277289,752.64098693245,821.92125998587],description:"13th root of pi"},cet158:{frequencies:[261.6255653006,286.70831230381,314.19580976213,344.3186075731,377.32935907335,413.50494015483,453.14877154631,496.5933637384,544.20310589723,596.37732215892,653.5536209391,716.21156534988,784.8766959018],description:`12th root of 3, Moreno's A-12, see dissertation "Embedding Equal Pitch Spaces.`},cet159:{frequencies:[261.6255653006,286.82842069679,314.45911373416,344.75151869218,377.96204482418,414.37180231943,454.28897403052,498.05144066897,546.02962057131],description:"4e-th root of e. e-th root of e is highest x-th root of x"},cet160:{frequencies:[261.6255653006,286.95745534843,314.74210513576,345.21700307457,378.64263238751,415.30469757995,455.51656649021,499.62194879119,547.99783383788,601.05771297194,659.25511382574,723.0874768355,793.10040709753,869.89233791055,954.11964586525,1046.5022612024],description:'15th root of 4, Rudolf Escher in "The Long Christmas Dinner" (1960)'},cet160a:{frequencies:[261.6255653006,287.06963246392,314.98822873932,345.62201499981,379.23505183234,416.11708252541,456.58602635137,500.99072933585,549.71395617638,603.17569602575,661.83679400878,726.20290371434,796.8288589228,874.32344802967,959.35468153537,1052.65552131526,1155.03021091382,1267.36122959081,1390.6168610076,1525.85955590014,1674.2551187631,1837.08270650821,2015.74588766663,2211.78472029595,2426.88907720145,2662.91313932742,2921.89140956529,3206.0563044734,3517.85730085803,3859.98211320646,4235.37982185266,4647.28638964387,5099.2524155536,5595.17379976366,6139.32543031277,6736.39784717273,7391.53779523322,8110.3925243186],description:"37th root of 31. McLaren 'Microtonal Music', volume 2, track 7"},cet163:{frequencies:[261.6255653006,287.45276480522,315.82957660097,347.00769742017,381.26366336311,418.90131810157,460.25449359467,505.68997636603,555.61077020009,610.45965236807],description:'9th root of 7/3. Jeff Scott in "Quiet Moonlight" (2001)'},cet163a:{frequencies:[261.6255653006,287.41152361975,315.7389582221,346.85836204295,381.04491126651,418.60090448096,459.85843616195,505.18233428314,554.97338050766],description:"5th root of 8/5"},cet166:{frequencies:[261.6255653006,287.95619440582,316.93680165166,348.83408706747],description:"3rd root of 4/3"},cet173:{frequencies:[261.6255653006,289.10449173793,319.46957112932,353.02394045842,390.10257564198,431.07563562091,476.35215768611,526.38414093011,581.67105858963,642.7648443263,710.27540222401,784.8766959018],description:"11th root of 3, Moreno's A-11"},cet175:{frequencies:[261.6255653006,289.48414624674,320.30918244523,354.41654988346,392.15575985798,433.91353804458,480.11779720922,531.2420078798,587.8100594825,650.40162657281,719.65810898332,796.28920449429,881.08018137935,974.89992535123,1078.70983713651,1193.57370864212,1320.66858845324,1461.29686662697,1616.89961515233,1789.07135516847,1979.57639663535,2190.36691789568,2423.60297039629,2681.67459807517,2967.22638952895,3283.18448966052,3632.78664249769,4019.61535560076,4447.6346101102],description:"28th root of 7. McLaren 'Microtonal Music', volume 6, track 3"},cet175a:{frequencies:[261.6255653006,289.53628281337,320.42456924675,354.60807736883,392.4383479509,434.30442400296,480.63685362987,531.91211578736],description:"4th root of 3/2"},cet178:{frequencies:[261.6255653006,289.91935960089,321.27301846367,356.01745236555,394.51936464224,437.18511000944,484.46499093218,536.85800524663,594.91712478053,659.25511382574,730.5510078664,809.55727745129,897.10776473059,994.12650420781,1101.63744560301,1220.77528002516,1352.79740322961,1499.09721690784,1661.21879031979,1840.87318566558,2039.95650991293,2260.56991361642,2505.04181781964,2775.9524141353,3076.16094499002,3408.83584914421,3777.48827884202,4186.0090448096],description:"27th root of 16"},cet181:{frequencies:[261.6255653006,290.48091212946,322.51878830959,358.09020513941,397.58488163802,441.43552612833,490.12256936272,544.17943316245,604.19836236377,670.83693141722,744.82523718317,826.97390553231,918.18295398723,1019.45167961503,1131.88958971281,1256.72856920928,1395.33634826987],description:"6.625 tET. The 16/3 is the so-called Kidjel Ratio promoted by Maurice Kidjel in 1958"},cet182:{frequencies:[261.6255653006,290.70585738945,323.0184918031,358.92275093366,398.81785224951,443.14738973192,492.40425618917,547.1361382945,607.95159681319,675.52683545966,750.61321956915,834.04563048717,926.75174856904,1029.76237395443,1144.22286477952,1271.40590625444,1412.7256395721,1569.7533918036],description:"17th root of 6, Moreno's C-17"},cet195:{frequencies:[261.6255653006,292.81795587218,327.72927094457,366.80289667873,410.53509014096,459.48126579586,514.26306468681,575.57624366132],description:"7th root of 11/5"},cet21k:{frequencies:[261.6255653006,264.89588486686,268.20708342769,271.55967197054,274.95416787017,278.3910952928,281.87098404962,285.39437141672,288.96180112674,292.57382370898,296.23099657435,299.9338841014,303.68305772341,307.47909424051,311.32258299104,315.21411535185,319.1542918681,323.14372059172,327.18301717534,331.2728049672,335.41371510742,339.60638662537,343.85146653829,348.14960995112,352.50148015762,356.90774874273,361.36909568619,365.8862094675,370.45978717215,375.09053459917,379.77916637013,384.52640603933,389.33298620552,394.19964862491,399.1271443257,404.11623372391,409.16768674077,414.28228292154,419.46080913287,424.70406934596,430.01287031296,435.38803129329,440.83038178715,446.34076166346,451.92002128953,457.56902166224,463.28863454093,469.07974258197,474.94323947488,480.88003008033,486.89103056976,492.97716856672,499.13938329007,505.37862569893,511.69585863936,518.09205699304,524.56820782765],description:"scale of syntonic comma's, almost 56-tET"},cet222:{frequencies:[261.6255653006,297.3462123974,337.94392545772,384.08458333231,436.52498800167,496.12526073276,563.86296895784,640.8491384935,728.34649714081,827.79017883768,940.81124699851,1069.2634803114,1215.25373699679,1381.1765584523,1569.7533918036],description:"14th root of 6, Moreno's C-14"},cet233:{frequencies:[261.6255653006,299.41460910537,342.66187834083,392.15575985798,448.79850611373,513.6227001391,587.8100594825,672.71300106294,769.87926947615,881.08018137935,1008.34288220748,1153.98733901804,1320.66858845324,1511.42518780658,1729.7345489351,1979.57639663535,2265.50524176842,2592.73349533282,2967.22638952895,3395.81083571538,3886.29974647262,4447.6346101102],description:"21st root of 17. McLaren 'Microtonal Music', volume 2, track 15"},cet24:{frequencies:[261.6255653006,265.3411057651,269.1094134006,272.9312375932,276.80733837157,280.73848655813,284.72546392233,288.7690633361,292.87008893155,297.02935626086,301.24769245848,305.52593640563,309.86493889709,314.26556281043,318.72868327757,323.25518785885,327.84597671953,332.50196280875,337.22407204116,342.01324348101,346.8704295289,351.79659611118,356.79272287204,361.85980336835,366.9988452672,372.21087054633,377.49691569736,382.85803193188,388.29528539052,393.80975735501,399.40254446313,405.07475892685,410.82752875349,416.66199797006,422.57932685074,428.58069214763,434.66728732478,440.84032279551,447.10102616311,453.45064246502,459.89043442035,466.42168268106,473.04568608657,479.76376192214,486.57724618073,493.48749382879,500.49587907561,507.6037956467,514.81265706088,522.12389691142,529.53896915113],description:"least squares fit primes 2-13"},cet258:{frequencies:[261.6255653006,303.75687573192,352.67287219582,409.46613795376,475.40520223986,551.96287401486,640.8491384935,744.04935121924,863.86858278563,1002.98310468409,1164.50016626124,1352.0273979586,1569.7533918036],description:"12th root of 6, Moreno's C-12"},cet29:{frequencies:[51.91308719749,52.80006242627,53.70219231256,54.6197354699,55.55295587693,56.50212107609,57.46750349647,58.44938022184,59.44803272677,60.46374832519,61.49681820986,62.54753889218,63.61621194966,64.70314373878,65.80864697157,66.93303858176,68.07664129187,69.2397833384,70.42279815925,71.62602610967,72.84981213985,74.09450750046,75.36046944358,76.64806088248,77.95765225928,79.28961901721,80.64434345693,82.02221441105,83.42362735565,84.84898403373,86.29869452271,87.77317443616,89.27284697886,90.79814258634,92.34949851506,93.9273610926,95.53218267212,97.16442386902,98.82455316866,100.51304648023,102.230389586,103.97707482641,105.75360353451,107.56048560902,109.39823902877,111.26739251837,113.16848194039,115.10205294491,117.06866050489,119.06886838764,121.10325205621,123.17239474253,125.2768903313,127.4173428542,129.59436591466,131.80858584574,134.06063743615,136.35116706905,138.68083217153,141.05030058861,143.46025402018,145.91138336926,148.40439215824,150.93999592972,153.51892156515,156.14191102559,158.8097162888,161.52310306741,164.28285015685,167.08974869373,169.94460622727,172.84824120887,175.80148703892,178.80519135714,181.8602162858,184.96743760879,188.12774927869,191.34205731671,194.61128429254,197.93636853869,201.31826325695,204.75794142387,208.2563891515,211.8146105632,215.43362693858,219.11447574094,222.85821595641,226.66592086774,230.53868336123,234.47761499594,238.48384494529,242.55852580808,246.70282574354,250.91793424736,255.20506113867,259.56543598745],description:"95th root of 5"},cet39:{frequencies:[261.6255653006,267.55763511324,273.62420803617,279.82833216202,286.17312954462,292.66178817784,299.29756995616,306.08381073387,313.02392200207,320.12139075456,327.37978859613,334.80276256646,342.39404424694,350.15744982839,358.09687996112,366.21632994368,374.51987945827,383.01170275779,391.6960687417,400.57734310204,409.65998815178,418.94857448076,428.44776921301,438.16234766073,448.09719341103,458.25729813392,468.64777462103,479.27384364987,490.14084702027,501.25424765147,512.61963232837,524.24271148185,536.12933410494,548.28547272565,560.71723832061,573.43088042607,586.43278689221,599.72950056876,613.32770249519,627.23422858353,641.45606974252,656.00037539202,670.87445318194,686.08578808043,701.64202314362,717.55097860059,733.82065199545,750.45921787297,767.47504913108,784.8766959018],description:"49th root of 3"},cet39a:{frequencies:[261.6255653006,267.54999903763,273.60843178624,279.80421399945,286.14029787289,292.61969147246,299.24597805224,306.02231493662,312.9519192023,320.03862308027,327.28580327671,334.69690040195,342.27601296361,350.02675229311,357.95279806627,366.05853356918,374.34782106107,382.82459589435,391.49354592099,400.35880176332,409.42457221564,418.6958708581,428.17711532294,437.87280684605,447.78830736843,457.9283414747,468.29772316218,478.90218693807,489.74678566745,500.83666784082,512.17796641877,523.77608535691],description:"31-tET with least squares octave; equal weight to 5/4, 3/2, 7/4 and 2/1"},cet39b:{frequencies:[261.6255653006,267.54443554965,273.59736903996,279.78708267123,286.11699418435,292.58994480246,299.2095086599,305.97865699219,312.90112748358,319.98002733127,327.21907624411,334.6220906301,342.19239338178,349.93416455252,357.85087908811,365.94690831825,374.22588619981,382.6921630398,391.3502022376,400.20389001205,409.25811505631,418.51694141988,427.98548149913,437.66798531163,447.56979919346,457.69536764001,468.05001127562,478.63918904181,489.46765396188,500.54138513107,511.86535306771,523.4458104663],description:"31-tET with l.s. 8/7, 5/4, 4/3, 3/2, 8/5, 7/4, 2/1; equal weights"},cet39c:{frequencies:[261.6255653006,267.52919373065,273.56603860918,279.73910598956,286.05147140959,292.50627485027,299.10673210371,305.85612987468,312.75782903301,319.8152662872,327.03195662575,334.41149334841,341.95754947331,349.67388372612,357.56433846376,365.63284274659,373.88341429498,382.32016148985,390.94728541851,399.7690842757,408.78994578219,418.01436575232,427.44693588739,437.09235368188,446.9554220819,457.04105241293,467.35426952494,477.9002035559,488.68410850494,499.71135422907,510.98743222773,522.51795602393],description:"10th root of 5/4"},cet39d:{frequencies:[261.6255653006,267.55786538889,273.62467903016,279.82905628857,286.1741163878,292.66304927922,299.29911724561,306.08565654127,313.02607906932,320.12387409698,327.38261000985,334.80593610581,342.39758442978,350.16137164992,358.1012009765,366.22106412416,374.52504331879,383.0173133498,391.70214366901,400.58390053708,409.66704921865,418.95615622721,428.45589162089,438.17103135034,448.1064596598,458.26717154264,468.65827525256,479.28499487175,490.15267293726,501.26677312698,512.63288300643,524.25671683791],description:"31-tET with l.s. 5/4, 3/2, 7/4"},cet39e:{frequencies:[261.6255653006,267.56053134626,273.63013029147,279.83741943955,286.18551905392,292.67762672082,299.3170076044,306.10700082387,313.05102655064,320.15257723818,327.41522444303,334.84262641603,342.43851674365,350.20672153383,358.15114775562,366.27579142084],description:"15th root of 7/5, X.J. Scott"},cet44:{frequencies:[261.6255653006,268.36512159638,275.27829096782,282.369545742,289.64347345451,297.10477981732,304.75829176301,312.60896056742,320.66186505284,328.92221487359,337.3953538863,346.08676360706,355.00206675748,364.14703090225,373.52757218034,383.14975913231,393.01981662619,403.14412988459,413.52924861543,424.18189124916,435.1089492851,446.31749174973,457.81476976988,469.60822126365,481.70547575226,494.11435929576,506.84289955596,519.89933098975,533.2921001762],description:"least maximum error of 10.0911 cents to a set of 11-limit consonances"},cet45:{frequencies:[261.6255653006,268.55812265554,275.67437899809,282.97903853108,290.47742047479,298.17449463282,306.07552595385,314.18591889722,322.51122112969,331.05693609414,339.82928674186,348.83408706747],description:"11th root of 4/3"},cet45a:{frequencies:[261.6255653006,268.48547646737,275.52525683447,282.74962263341,290.1634137569,297.77159700127,305.57926939395,313.59166160814,321.8141414671,330.2522175402,338.9115428334,347.79791857637,356.91729810903,366.27579142084],description:"13th root of 7/5, X.J. Scott"},cet49:{frequencies:[261.6255653006,269.10883825956,276.80615518671,284.72363837915,292.86758524998,301.24447333711,309.86096545541,318.72391499615,327.84037137809,337.21758565441,346.86301628009,356.78433504421,366.98943317194,377.48642760107,388.28366743806,399.38974059878,410.81348063915,422.56397378117,434.65056613995,447.08287115744,459.87077724873,473.02445566714,486.55436859423,500.47127746122,514.78625150841,529.51067658945],description:"least squares fit primes 3-13"},cet49a:{frequencies:[261.6255653006,269.10939785623,276.80730639354,284.72541458317,292.8700212642,301.24760545475,309.86483150611,318.72855440416,327.84582522255,337.22389673177,346.87022916874,356.7924961714,366.99859088307,377.49663223147,388.29497138724,399.40219840734,410.82714906841,422.57891189558,434.66683539241,447.10053547759,459.8899031344,473.04511227892,486.57662785344,500.49521415122,514.81194337949,529.53820446742],description:"least squares fit primes 5-13"},cet49b:{frequencies:[261.6255653006,269.11089011973,276.81037630182,284.73015118141,292.87651740119,301.25595792767,309.87514121046,318.74092648901,327.86036925135,337.24072684885,346.88946427176,356.81426008988,367.0230125633,377.52384592787,388.3251168606,399.43542112995,410.86360043647,422.61874944911,434.71022304287,447.14764374346,459.94090938509,473.10020098719,486.63599085665,500.55905092174,514.88046130456,529.61161913871],description:"least squares fit primes 3-11"},cet51:{frequencies:[261.6255653006,269.45730810595,277.52349357863,285.8311397433,294.38747470873,303.19994295657,312.27621181854,321.62417814738,331.25197518754,341.1679796516,351.38081900843,361.89937898954,372.73281132023,383.89054168203,395.38227791356,407.21801845694,419.40806105693,431.96301172054,444.89379394488,458.21165822114,471.92819182319,486.05532888913,500.60536080461,515.59094689708,531.0251223827,546.92132188791,563.29337300176,580.1555203085,597.52243480304,615.40922665547,633.83145835774,652.80515826392,672.34683453572,692.47348950549,713.20263446921,734.55230492227,756.54107625132,779.18807989593,802.51301999392,826.53619052513,851.2784929682,876.7614544861,903.00724665589,930.0387047592,957.87934765022,986.55339821839,1016.08580446361,1046.5022612024],description:"47nd root of 4"},cet53:{frequencies:[261.6255653006,269.81714175785,278.26519897904,286.97776745533,295.963129115,305.22982618403],description:"5th root of 7/6, X.J. Scott"},cet54:{frequencies:[261.6255653006,269.96706985652,278.57452968396,287.45642599351,296.6215054241,306.0787984682,315.83762188043,325.9075894649,336.29862154621,347.0209567468,358.08515411748,369.5021153806,381.28308783765,393.43967739203,405.98385998242,418.92799580061,432.28483186346,446.06752886518,460.28966468743,474.96525012045,490.10874266572,505.73506369981,521.85960157932,538.49824405725,555.66738252045,573.38393096839,591.66534267587,610.52963091344,629.99537269573,650.08174791487,670.80854445602,692.19618110881,714.26572768264,737.03893002078,760.53821452531,784.78673539949,809.80838082331,835.62780061242,862.2704354823,889.76252234217,918.13114956434,947.40426420901,977.61070438283,1008.78022764847,1040.94354635268,1074.13233401713,1108.37929206026,1143.71815851921,1180.1837471134,1217.81198154093,1256.63993812708,1296.7058535394,1338.04920533515,1380.71072249048,1424.73243255855,1470.15770307252,1517.03129303135,1565.39936221354,1615.30956841503,1666.81108016015,1719.95463363144,1774.79258265191,1831.3789571042],description:"62nd root of 7"},cet54a:{frequencies:[36.70809598968,37.88151295543,39.09243955873,40.34207507177,41.63165640381,42.96246070241,44.33580570763,45.75305128262,47.21560103286,48.72490261351,50.28245077394,51.88978777214,53.5485051662,55.26024570942,57.02670371,58.84962859429,60.73082539186,62.67215683218,64.67554556259,66.74297456936,68.87649134796,71.07820847085,73.35030604133,75.69503428946,78.11471406483,80.61174171737,83.18858976192,85.8478097501,88.59203530858,91.42398271579,94.34645661434,97.36235078878,100.47465152683,103.6864411753,107.00089881505,110.42130694669,113.95105240089,117.59363027227,121.3526480812,125.23182656372,129.23500749643,133.36615476182,137.62935895249,142.02884224198,146.56895930934,151.25420649717,156.08922305851,161.0787965455,166.22786851013,171.54153558634,177.0250602084,182.68387207023,188.52357443227,194.5499507934,200.76896615752,207.18677957808,213.80974586608,220.64442297146,227.69757979185,234.97619765489,242.48748500016,250.23887937817,258.23805608937,266.49293732345,275.01169389411,283.8027624226,292.87484767725,302.23693268442,311.89828942495,321.86848086456,332.15738106504,342.77517792247,353.73238500089,365.03985405114,376.70877738729,388.75071142436,401.17757988308,414.00168763976,427.23573537822,440.89282237095,454.98647402737,469.53064564449,484.53973861665,500.02861758376,516.01261368641,532.50755680773,549.52977996323,567.09613827221,585.22402902787,603.93139550692,623.23676470498,643.1592524742,663.71858572717,684.9351219702,706.82987354375,729.42451222373,752.74141479803,776.80366927173,801.63510168485,827.26030448295,853.70464190233,880.99430375232],description:"101st root of 24"},cet54b:{frequencies:[261.6255653006,269.96795403263,278.5763544202,287.45924871019,296.62539133416,306.08381073387,315.84382837889,325.91506125677,336.30743300953,347.03118371184,358.09687996112,369.51542742358,381.29807310848,393.45642905887,406.00247545366,418.94857448076,432.30748251802,446.09236270275,460.31680056078,474.99480683953,490.14084702027,505.76984518255,521.89720128632,538.53880634615,555.71105808945,573.43088042607,591.71572697754,610.58361784146,630.05314440547,650.14349087612,670.87445318194,692.26646247798,714.3405894063,737.11858847932,760.62290389144,784.8766959018],description:"35th root of 3 or shrunk 22-tET"},cet55:{frequencies:[261.6255653006,270.01349691657,278.67035254505,287.60475577316,296.82560168354,306.34207552634,316.16365537714,326.30012507123,336.76157646737,347.55843063202,358.70144085484,370.20170518484,382.07067969055,394.32018111076,406.96241165943,420.00996255663,433.47583121124,447.37342422819,461.71658555081,476.51960046685,491.79721226214,507.56463983627,523.83758122386,540.63224654693,557.96536270557,575.85419620437,594.31655714751,613.37083662462,633.03601203256,653.33166919923,674.2780257851,695.8959359612,718.20693418482,741.23324143097,764.99779551626,789.52425640623,814.83705588084,840.96140460432,867.92332151557,895.74966491622,924.46813868508,954.10735043232,984.69681977767,1016.26701863443,1048.84937826003,1082.47635523452,1117.18144085251,1152.9992001672,1189.96531328939,1228.1165836432,1267.49101522141,1308.127826503],description:"51th root of 5"},cet55a:{frequencies:[261.6255653006,270.1234331478,278.89732210685,287.95619440582,297.30930820811,306.96622255393,316.93680165166,327.23123542864,337.86004496999,348.83408706747],description:"9th root of 4/3"},cet63:{frequencies:[261.6255653006,271.38398887572,281.50639381697,292.00635633712,302.89795903081,314.19580976213,325.91506125677,338.07143142496,350.68122444233,363.76135261718,377.32935907335,391.4034412791,406.00247545366,421.14604188408,436.85445118639,453.14877154631,470.05085697597,487.58337662462,505.76984518255,524.63465441916,544.20310589723,564.50144490757,585.55689566922,607.39769784277,630.05314440547,653.5536209391,677.93064638327,703.21691530872,729.44634176744,756.65410477833,784.8766959018],description:"30th root of 3 or stretched 19-tET"},cet63a:{frequencies:[261.6255653006,271.37251603396,281.48259278098,291.96932561311,302.84674360983,314.12940356828,325.83240291761,337.9714015469,350.5626427598,363.62297711023,377.1698766242,391.22147055517,405.79656146784,420.91465242294,436.59597307447,452.86150935499,469.73302118774,487.23308701689,505.38512383853,524.21342105699,543.74317298677,564.00051582303,585.01254970054,606.80739415229,629.41421305643,652.8632568014,677.18590276436,702.41470135475,728.58340348685,755.72702964881,783.88190097186,813.08569174348,843.37747981977,874.79780396885,907.38869808556,941.19377721109,976.25827622702,1012.62911525602,1050.35496244617,1089.48630538731,1130.07549372248,1172.17684627813,1215.84669925421,1261.14348767523,1308.127826503],description:"44th root of 5"},cet67:{frequencies:[261.6255653006,271.89449162354,282.56647812794,293.65734341902,305.18353207836,317.16212905639,329.61089159214,342.54827390456,355.99345454941,369.96636271272,384.48771622149,399.57903967613,415.26270466472,431.56196087069,448.50096908674],description:"14th root of 12/7, X.J. Scott"},cet70:{frequencies:[261.6255653006,272.49048247121,283.80660334964,295.59266404146,307.86818385681,320.65348759128,333.96974580612,347.83900623503,362.28423824861,377.32935907335,392.99928119148,409.31995166322,426.31839262878,444.02275580482,462.46235461904,481.66772230429,501.67065719504,522.50428685614,544.20310589723,566.80304433509,590.34152430617,614.85751848055,640.39162865951,666.98613212152,694.68506540856,723.53429383412,753.58158307649,784.8766959018],description:"27th root of 3"},cet78:{frequencies:[261.6255653006,273.68177330057,286.29355449603,299.48651076576,313.28742377221,327.72430932822,342.82647426905,358.62457594514,375.15068445646,392.4383479509],description:"9th root of 3/2"},cet79:{frequencies:[261.6255653006,273.87994580863,286.70831230381,300.13755324878,314.19580976213,328.91254817579,344.3186075731,360.44627930254,377.32935907335,395.0032340925,413.50494015483,432.87325713404,453.14877154631,474.3739811962,496.5933637384,519.85349135637,544.20310589723,569.69324454502,596.37732215892,624.31126899512,653.5536209391,684.16567043124,716.21156534988,749.7584744066,784.8766959018],description:"24th root of 3, James Heffernan (1906)."},cet80:{frequencies:[261.6255653006,273.93704112612,286.82786567404,300.32530171503,314.4578949408,329.25553433534,344.74951538696,360.97260627516,377.95911717185,395.74497280393,414.36778843034,433.8669493945,454.28369442026,475.66120282759,498.04439817054,521.48118104407,546.02084308555,571.71528316122,598.61884237431,626.7884189909,656.28358877393,687.16673097983,719.50316028422,753.36126491573,788.81265129014,825.93229545055,864.79870163404,905.49406830005,948.10446197172,992.7199992577,1039.43503743958,1088.34837402783,1139.56345570838,1193.18859712177,1249.33720993748,1308.127826503],description:"35th root of 5"},cet84:{frequencies:[261.6255653006,274.70153691096,288.43104187674,302.84674360983,317.98293803021,333.87563322966,350.5626427598,368.08366429725,386.48038152577,405.79656146784,426.0781586093,447.37342422819,469.73302118774,493.21014446673,517.86064472263,543.74317298677,570.91930267857,599.45368763079,629.41421305643,660.87215705217,693.9023601738,728.58340348685,764.99779551626,803.23216389999,843.37747981977,885.52924725223,929.78774807537,976.25827622702,1025.05138820617,1076.28316609431,1130.07549372248,1186.55634664103,1245.86008938569,1308.127826503],description:"33rd root of 5"},cet87:{frequencies:[261.6255653006,275.05808287728,289.18026151691,304.0275068203,319.63704721237,336.04802279017,353.30157737897,371.44097305523,390.51169339433,410.56155044631,431.64081781968,453.80235066263,477.10170997643,501.59731726833,527.35059397819,554.42610593952],description:"Least-squares stretched ET to telephone dial tones. 1/1=697 Hz"},cet88:{frequencies:[261.6255653006,275.26799068863,289.6217982776,304.72408298441,320.61387403473,337.33223582731,354.92237405774,373.42974737602,392.90218486657,413.39000965417,434.94616895528,457.62637091093,481.48922855473,506.59641128799,533.01280425363],description:"88 cents steps by Gary Morrison"},cet88_appr:{frequencies:[261.6255653006,275.62199471997,290.69507255622,305.22982618403,320.49131749323,336.37572681506,354.37113606854,373.75080757229,392.4383479509,413.43299207996,436.04260883433,457.84473927605,482.33849075995,504.56359022259,531.55670410281,560.62621135843,588.65752192635,620.14948811994,654.0639132515,686.76710891407,723.50773613993,763.07456546008,801.22829373309],description:"88 cents scale approximated"},cet88b:{frequencies:[261.6255653006,275.26385669298,289.61326650562,304.7105300898,320.59498481995,337.30729585456,354.89100872976,373.39113880701,392.85588995712,413.33509311257,434.8821088097,457.55209870333,481.40413163568,506.49927024418,532.9029023296],description:"87.9745 cents steps. Least squares of 7/6, 11/9, 10/7, 3/2, 7/4."},cet88bis:{frequencies:[261.6255653006,289.53272725508,320.41669955092,337.26306895804,373.23835706057,392.86190344834,434.76782633734,457.62637091093],description:"Bistep approximation of 2212121 mode in 7/4 to 11/9 9/7 10/7 3/2"},cet88bm:{frequencies:[261.6255653006,275.22889829239,289.53954239223,304.59427454323,320.43178392135,337.09277136281,354.62005396115,373.05867644715,392.45602022512,412.86193859025,434.32887139488,456.91198653787,480.66932039657,505.66192697453,531.95403480429],description:"87.75412 cents steps. Minimal highest deviation for 7/6, 11/9, 10/7, 3/2, 7/4."},cet88c:{frequencies:[261.6255653006,275.37188725148,289.84046967782,305.06925821769,321.09819727018,337.96933026971,355.72690383892,374.4174952616,394.09012940783,414.79640018179,436.59061916193,459.52995194191,483.67455974508,509.0877727469,535.83624905561,563.99013984227,593.62329144382,624.813430743,657.64235771869,692.19618110881,728.56553457307,766.84580121693,807.13738838693,849.54597972796,894.18279699007,941.16492045434,990.61558284509,1042.66447461031,1097.44811755542,1155.11020756021,1215.8019705522,1279.68259818323,1346.91964745566,1417.68945580607,1492.17764912727,1570.57960775359,1653.10095047047,1739.95812689496,1831.3789571042],description:"38th root of 7. McLaren 'Microtonal Music', volume 3, track 7"},cet89:{frequencies:[261.6255653006,275.56724848068,290.25186566903,305.71900507847,322.01036982349,339.16988002511,357.2437980159,376.28084921395,396.33236207144,417.45239374596,439.69788420361,463.12880499146,487.80833148705,513.80299757552,541.1828853206,570.0218080747,600.39752248465,632.39191886931,666.09125466774,701.58637981228,738.97299766656,778.35189934333,819.82925103406,863.51687139942,909.53255273344,958.00034936337,1009.05093129669,1062.82192563509,1119.45831186524,1179.11277682321,1241.94614996535,1308.127826503],description:"31st root of 5. McLaren 'Microtonal Music', volume 2, track 22"},cet90:{frequencies:[261.6255653006,275.62199471997,290.36720431405,305.90125228146,322.26633935092,339.50692625527,357.66984706396,376.80444887746,396.96271256675,418.19939952297,440.572208006,464.1419130862,488.97255163391,515.13157534193,542.69005603758,571.72285881831,602.3088534069,634.53113933145],description:"Scale with limma steps"},cet93:{frequencies:[261.6255653006,275.99488223824,291.15340824655,307.14448922429,324.01384989472,341.80973194459,360.58302103444,380.38739950036,401.27949808494,423.31905787312],description:"Tuning used in John Chowning's STRIA, 9th root of Phi"},cet98:{frequencies:[261.6255653006,276.83245825991,292.92324815749,309.94930780463,327.96500300935,347.02785219778,367.1987248383,388.54202015806,411.12588832951],description:"8th root of 11/7, X.J. Scott"},chahargah:{frequencies:[261.6255653006,277.18263097687,283.66146785671,311.12698372208,326.97270111135,348.82502010853,367.86341164695,392.44854854484,415.30469757995,425.01198472693,466.16376151809,493.88330125613,523.2511306012],description:"Chahargah in C"},chahargah2:{frequencies:[261.6255653006,283.66146785671,327.729041887,348.82502010853,392.44854854484,425.01198472693,493.88330125613,523.2511306012],description:"Dastgah Chahargah in C, Mohammad Reza Gharib"},chalmers:{frequencies:[261.6255653006,274.70684356563,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,515.07533168556,523.2511306012],description:"Chalmers' 19-tone with more hexanies than Perrett's Tierce-Tone"},chalmers_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,313.95067836072,327.03195662575,336.37572681506,343.38355445704,376.74081403286,384.42940207435,392.4383479509,400.61414686654,408.78994578219,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"7-limit figurative scale, Chalmers '96 Adnexed S&H decads"},chalmers_19:{frequencies:[261.6255653006,269.10058145205,290.69507255622,294.32876096318,305.22982618403,313.95067836072,336.37572681506,348.83408706747,356.10146388137,363.36884069528,376.74081403286,384.42940207435,392.4383479509,406.97310157871,436.04260883433,448.50096908674,465.11211608996,470.92601754108,508.71637697339,523.2511306012],description:"7-limit figurative scale. Reversed S&H decads"},chalmers_csurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,315.80837468238,323.38635505005,348.83408706747,357.38803216938,383.0466618906,392.4383479509,423.31690179539,433.47765231178,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Combined Surd Scale, combination of Surd and Inverted Surd, JHC, 26-6-97"},chalmers_isurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,323.38635505005,348.83408706747,383.0466618906,433.47765231178,523.2511306012],description:"Inverted Surd Scale, of the form 4/(SQRT(N)+1, JHC, 26-6-97"},chalmers_ji1:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji3:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"15 16 17 18 19 20 21 on 1/1, 15-20 on 3/2, May 2, 1997. See other scales"},chalmers_ji4:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,496.11959049595,523.2511306012],description:"15 16 17 18 19 20 on 1/1, same on 4/3, + 16/15 on 16/9"},chalmers_surd:{frequencies:[261.6255653006,315.80837468238,357.38803216938,392.4383479509,423.31690179539,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/2, JHC, 26-6-97"},chalmers_surd2:{frequencies:[261.6255653006,272.2395613933,282.33485096279,291.98077704337,301.23248980765,310.13469895524,318.72425558532,327.03195662575,335.08385052998,342.90220911983,350.50624086893,357.91266581346,365.13613061818,372.18956061116,379.08442465499,385.8309605564,392.4383479509,398.91485744029,405.26796981327,411.50448329997,417.63058822561,423.65195171798,429.57376586736,435.40081471708,441.13750301549,446.78791303515,452.35581962987,457.84473927605,463.2579384726,468.59846621725,473.86917438523,479.07273156015,484.21164154672,489.28825377326,494.3047826718,499.26331035461,504.16580309972,509.01411882861,513.81001953884,518.55516185524,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/4"},chalung:{frequencies:[261.6255653006,328.09251713275,362.03316295439,390.31715077734,479.41117101029,527.4935758042,647.70012555753,728.30917696308,823.06004869243,961.65052057178,1054.9871516084,1301.05663342451],description:'Tuning of chalung from Tasikmalaya. "slendroid". 1/1=185 Hz'},chaumont:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.49749487796,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.40109831725,489.02683710225,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 1st interpretation"},chaumont2:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.30531842668,327.84547867349,349.70184487387,366.99801003998,391.46454285105,410.8262805401,438.2147004401,465.11211608996,490.54793493862,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 2nd interpretation"},chimes:{frequencies:[261.6255653006,288.69027895239,130.8127826503,144.34513947619],description:"Heavenly Chimes"},chimes_peck:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,1046.5022612024],description:"Kris Peck, 9-tone windchime tuning. TL 7-3-2001"},chin_12:{frequencies:[261.6255653006,277.05457499359,293.57996645301,310.53449241474,329.24697610111,347.79893712036,368.97000115401,391.76907592069,413.1274313058,439.00991514661,462.11551390967,491.43599249807,523.2511306012],description:"Chinese scale, 4th cent."},chin_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,441.49314144476,523.2511306012],description:"Chinese pentatonic from Zhou period"},chin_60:{frequencies:[261.6255653006,262.17244551937,265.19499215873,268.81311753311,272.48060600886,276.1981310001,279.38237857051,283.19406633357,287.05775848811,290.97416342694,294.32876096318,294.94400091442,298.34436617857,302.41475692242,306.54068145351,310.72289706448,314.30517589183,318.59332496145,322.93997797627,327.34593352805,331.11985608357,331.812000697,335.63741195089,340.21660119759,344.85826629043,349.56326086722,353.59332287831,358.41749022331,363.30747486009,368.26417485089,372.50983809402,373.28850041093,377.59208844475,382.74367817547,387.96555142985,392.4383479509,393.25866808247,397.79248823809,403.21967609811,408.72090880899,414.29719629306,419.07356785577,424.79110016094,430.58663751693,436.46124492224,441.49314144476,442.41600115048,447.51654926786,453.62213515688,459.81102195042,466.08434536373,471.45776383774,477.8899872033,484.40996672226,491.01890004663,496.67978412536,497.7180007967,503.45611792634,510.32490448905,517.28740216504,523.2511306012],description:'Chinese scale of fifths (the 60 lu")'},chin_7:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Chinese heptatonic scale and tritriadic of 64:81:96 triad"},chin_bianzhong:{frequencies:[261.6255653006,277.82379926216,312.56802260838,375.1593523779,420.13030572059,469.40618689596,506.59641128799,563.72967895209,627.66881138238,764.75812197709,849.53311813274,949.1724262561,1225.95732655636],description:"Pitches of Bianzhong bells (Xinyang). 1/1=b, Liang Mingyue, 1975."},chin_bianzhong2a:{frequencies:[261.6255653006,284.81073476233,312.56802260838,372.56793743951,413.39000965417,447.94973572445,491.60634075178,562.75365576207,652.05945856061,695.63805470995,863.88355261715,960.75607282217,1173.30283584026],description:"A-tones (GU) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=d#=619 Hz"},chin_bianzhong2b:{frequencies:[261.6255653006,279.59231184543,312.74738729016,375.37536096215,418.43048063126,468.86028020615,505.12945327459,562.08698385796,624.42058858709,762.97988553915,849.53425657971,936.08862980659,1215.37624187632],description:"B-tones (SUI) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=b+=506.6 Hz"},chin_bianzhong3:{frequencies:[261.6255653006,508.3551866238,542.32970395878,608.04166718582,619.02750937577,673.88551872153,729.80120031671,739.56153452917,812.57643344187,881.52624580654,911.03313298042,978.11461117351,982.0774855146,1059.88575280263,1092.20381072382,1163.18085489566,1213.27682870749,1331.52122774489,1483.40111876828,1542.82606951623,1645.93659621657,1649.74391394557,1818.91159982256,2044.01922018919,2273.22753490632,2362.92760489328,2776.13057951436],description:"A and B-tones of 13 Xinyang bells (Ma Cheng-Yuan) abs. pitches wrt middle-C"},chin_bronze:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:`Scale found on ancient Chinese bronze instrument 3rd c.BC & "Scholar's Lute"`},chin_chime:{frequencies:[261.6255653006,248.6592656401,341.74499057264,392.56190849927,548.78974538591,648.86582834888,714.36935367713,785.57745330134,889.7110417619,886.88898199546,992.62825668803,1044.08711871947,1326.14827969763],description:"Pitches of 12 stone chimes, F. Kuttner, 1951, ROMA Toronto. %1=b4"},chin_ching:{frequencies:[261.6255653006,276.1981310001,294.32876096318,310.72289706448,331.11985608357,349.56326086722,368.26417485089,392.4383479509,414.29719629306,441.49314144476,466.08434536373,496.67978412536,524.34489103873],description:"Scale of Ching Fang, c.45 BC. Pyth.steps 0 1 2 3 4 5 47 48 49 50 51 52 53"},chin_di:{frequencies:[261.6255653006,298.70635408336,316.56004827153,360.50766037677,409.94872043165,433.75364775074,527.37121036213],description:"Chinese di scale"},chin_di2:{frequencies:[261.6255653006,289.95657583698,318.21537073485,338.89464890898,383.48501130814,436.9606979923,494.73987775324,522.04355935974],description:"Observed tuning from Chinese flute dizi, Helmholtz/Ellis p. 518, nr.103"},chin_huang:{frequencies:[261.6255653006,331.11985608357,392.4383479509,441.49314144476,523.2511306012,588.65752192635,662.23971216714],description:"Huang Zhong qin tuning"},"chin_liu-an":{frequencies:[261.6255653006,278.83777354406,294.32876096318,311.64221749042,331.11985608357,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067],description:'Scale of Liu An, in: "Huai Nan Tzu", c.122 BC, 1st known corr. to Pyth. scale'},chin_lu:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,495.71159741166,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Huai Nan zi, Han era. P\xEF\xBF\xBDre Amiot 1780, Kurt Reinhard"},chin_lu2:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Chinese L\xEF\xBF\xBD (Lushi chunqiu, by Lu Buwei). Mingyue: Music of the billion, p.67"},chin_lu3:{frequencies:[261.6255653006,277.34278419245,293.66476791741,310.58830860439,329.24697610111,347.81902735497,369.14054089803,391.76907592069,413.1512951712,439.23819834286,462.1422075194,491.60634075178,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, reported in Sung Shu (500 AD)"},chin_lu3a:{frequencies:[261.6255653006,277.06033146978,293.58830182213,310.53780743131,329.25144446584,347.79484055318,368.74579520635,391.78066943209,413.13681807919,438.99947255393,462.1072190611,491.17907538715,523.2511306012],description:`Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, calc. basis is "big number" 177147`},chin_lu4:{frequencies:[261.6255653006,276.78521684908,293.5444075184,310.55356739316,329.35741152087,348.44172229085,369.5396750577,391.9150968203,414.62425518576,439.72952246257,465.20924434298,493.37740286979,523.2511306012],description:'Chinese L\xEF\xBF\xBD "749-Temperament"'},chin_lu5:{frequencies:[261.6255653006,277.35401920913,293.41471131112,311.37240624271,329.40299530711,349.20610523279,369.80535913035,392.03738806826,415.16320853113,440.12206674667,466.08434536373,494.10449271367,522.71643616375],description:"Chinese L\xEF\xBF\xBD scale by Ch'ien Lo-Chih, c.450 AD Pyth.steps 0 154 255 103 204 etc."},chin_lusheng:{frequencies:[261.6255653006,316.38258506467,348.82502010853,389.28772571905,466.97226207056,520.53801357752],description:"Observed tuning of a small Lusheng, 1/1=d, OdC '97"},chin_pan:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Pan Huai-su pure system, in: Sin-Yan Shen, 1991"},chin_pipa:{frequencies:[261.6255653006,284.4818984792,320.42873367481,380.17671965621,433.44136952667,521.74210224793],description:"Observed tuning from Chinese balloon lute p'i-p'a, Helmholtz/Ellis p. 518, nr.109"},chin_sheng:{frequencies:[261.6255653006,295.36595061166,318.03161540472,348.82502010853,395.40657391157,442.03793673691,477.05982293263,522.94897617031],description:"Observed tuning from Chinese sheng or mouth organ, Helmholtz/Ellis p. 518, nr.105"},chin_sientsu:{frequencies:[261.6255653006,291.80478157373,326.97270111135,392.44854854484,438.22451411849,523.2511306012],description:"Observed tuning from Chinese tamboura sienzi, Helmholtz/Ellis p. 518, nr.108"},chin_sona:{frequencies:[261.6255653006,284.4818984792,310.58830860439,337.33223582731,377.98706287655,418.43499793376,469.94877954106,528.10941333272],description:"Observed tuning from Chinese oboe (so-na), Helmholtz/Ellis p. 518, nr.104"},"chin_wang-po":{frequencies:[261.6255653006,294.32876096318,330.24264909897,371.97947673071,392.4383479509,440.94196398978,495.71159741166,517.50111817701],description:"Scale of Wang Po, 958 AD. H. Pischner: Musik in China, Berlin, 1955, p.20"},chin_yangqin:{frequencies:[261.6255653006,288.45311779165,306.48933163909,347.41744306689,383.26356564167,434.44398956347,465.08793784701,522.64699622026],description:"Observed tuning from Chinese dulcimer yangqin, Helmholtz/Ellis p. 518, nr.107"},chin_yunlo:{frequencies:[261.6255653006,288.45311779165,323.40385076956,367.0144478307,386.1523605003,409.35055662695,483.1608380663,525.67465946865],description:"Observed tuning from Chinese gong-chime (y\xEF\xBF\xBDn-lo), Helmholtz/Ellis p. 518, nr.106"},choquel:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,475.68284600109,490.54793493862,523.2511306012],description:"Choquel/Barbour/Marpurg?"},chordal:{frequencies:[261.6255653006,392.4383479509,327.03195662575,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,981.09586987725,490.54793493862,555.95432626377,621.36071758893,310.68035879446,523.2511306012,348.83408706747,418.60090448096,299.00064605783,465.11211608996,380.54627680087,322.00069575458,279.06726965397,610.45965236807,915.6894785521,872.08521766867,697.66817413493,654.0639132515,627.90135672144,448.50096908674,319.76457981184,377.90359432309,444.76346101102,889.52692202204,336.37572681506,294.32876096318,465.11211608996,411.12588832951,305.22982618403,366.27579142084,373.75080757229,313.95067836072,470.92601754108],description:"Chordal Notes S&H"},chrom15:{frequencies:[261.6255653006,280.31310567921,301.87565226992,356.76213450082,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Tonos-15 Chromatic"},chrom15_inv:{frequencies:[261.6255653006,313.95067836072,331.39238271409,348.83408706747,383.71749577421,453.48431318771,488.36772189445,523.2511306012],description:"Inverted Chromatic Tonos-15 Harmonia"},chrom15_inv2:{frequencies:[261.6255653006,279.06726965397,296.50897400735,348.83408706747,383.71749577421,401.15920012759,418.60090448096,523.2511306012],description:"A harmonic form of the Chromatic Tonos-15 inverted"},chrom17:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Tonos-17 Chromatic"},chrom17_con:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,386.75083566176,404.33041910093,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Chromatic"},chrom19:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,382.37582620857,397.67085925691,414.24047839262,523.2511306012],description:"Tonos-19 Chromatic"},chrom19_con:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,368.21375857121,382.37582620857,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Chromatic"},chrom21:{frequencies:[261.6255653006,274.70684356563,289.16509849014,343.38355445704,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Tonos-21 Chromatic"},chrom21_inv:{frequencies:[261.6255653006,323.91736656265,336.37572681506,348.83408706747,398.6675280771,473.41768959156,498.33441009638,523.2511306012],description:"Inverted Chromatic Tonos-21 Harmonia"},chrom21_inv2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,398.6675280771,423.58424858192,448.50096908674,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-21"},chrom23:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,376.08675011961,401.15920012759,429.81342870813,523.2511306012],description:"Tonos-23 Chromatic"},chrom23_con:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,353.96400011258,376.08675011961,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Chromatic"},chrom25:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,408.78994578219,436.04260883433,467.18850946536,523.2511306012],description:"Tonos-25 Chromatic"},chrom25_con:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,384.74347838324,408.78994578219,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Chromatic"},chrom27:{frequencies:[261.6255653006,277.01530443593,294.32876096318,353.19451315581,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Tonos-27 Chromatic"},chrom27_inv:{frequencies:[261.6255653006,310.07474405997,329.45441556372,348.83408706747,387.59343007496,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Chromatic Tonos-27 Harmonia"},chrom27_inv2:{frequencies:[261.6255653006,271.31540105247,281.00523680435,348.83408706747,387.59343007496,406.97310157871,436.04260883433,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-27"},chrom29:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,379.35706968587,399.32323124828,421.50785520652,523.2511306012],description:"Tonos-29 Chromatic"},chrom29_con:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,361.29244731988,379.35706968587,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Chromatic"},chrom31:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,405.51962621593,523.2511306012],description:"Tonos-31 Chromatic. Tone 24 alternates with 23 as MESE or A"},chrom31_con:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Chromatic"},chrom33:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,392.4383479509,411.12588832951,431.68218274599,523.2511306012],description:"Tonos-33 Chromatic. A variant is 66 63 60 48"},chrom33_con:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,375.37581108347,392.4383479509,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Chromatic"},chrom_new:{frequencies:[261.6255653006,273.20871865617,297.93622032612,349.22823143301,391.99543598175,409.35055662695,446.39994737251,523.2511306012],description:"New Chromatic genus 4.5 + 9 + 16.5"},chrom_new2:{frequencies:[261.6255653006,273.6474710507,299.37374239667,349.22823143301,391.99543598175,410.00794244467,448.55379686399,523.2511306012],description:"New Chromatic genus 14/3 + 28/3 + 16 parts"},chrom_soft:{frequencies:[261.6255653006,271.68808704293,282.55561052465,348.83408706747,392.4383479509,407.5321305644,423.83341578697,523.2511306012],description:"100/81 Chromatic. This genus is a good approximation to the soft chromatic"},chrom_soft2:{frequencies:[261.6255653006,268.42893440103,282.57118533961,349.22823143301,391.99543598175,402.18897205153,423.37840671577,523.2511306012],description:"1:2 Soft Chromatic"},chrom_soft3:{frequencies:[261.6255653006,271.31540105247,281.75060878526,348.83408706747,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Soft chromatic genus is from K. Schlesinger's modified Mixolydian Harmonia"},cifariello:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"F. Cifariello Ciardi, ICMC 86 Proc. 15-tone 5-limit tuning"},ckring1:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring with common pivot of 4:5:6:7 = square 1 3 5 7"},ckring2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,448.50096908674,470.92601754108,523.2511306012],description:"Double-tie circular mirroring with common pivot of 3:5:7:9"},"clampitt-phi":{frequencies:[261.6255653006,289.46753582364,320.2724252102,340.92857683151,377.20990650852,444.26963537301,491.54843559637,523.2511306012],description:'David Clampitt, phi+1 mod 3phi+2, from "Pairwise Well-Formed Scales", 1997'},classr:{frequencies:[261.6255653006,275.93321340298,287.4304306281,313.95067836072,327.03195662575,344.91651675372,367.91095120397,392.4383479509,408.78994578219,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"Marvel projection to the 5-limit of class"},cluster:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"13-tone 5-limit Tritriadic Cluster"},cluster6a:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:6"},cluster6b:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:6:5"},cluster6c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,418.60090448096,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:4:5"},cluster6d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:5:4"},cluster6e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:8"},cluster6f:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:8:6"},cluster6g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:7"},cluster6h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:7:5"},cluster6i:{frequencies:[261.6255653006,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:7"},cluster6j:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,436.04260883433,439.53094970501,523.2511306012],description:"Six-Tone Triadic Cluster 5:7:6"},cluster8a:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:6"},cluster8b:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,392.4383479509,408.78994578219,418.60090448096,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:6:5"},cluster8c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,363.36884069528,418.60090448096,436.04260883433,484.4917875937,523.2511306012],description:"Eight-Tone Triadic Cluster 3:4:5"},cluster8d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Eight-Tone Triadic Cluster 3:5:4"},cluster8e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,334.88072358477,392.4383479509,401.85686830172,418.60090448096,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:8"},cluster8f:{frequencies:[261.6255653006,301.39265122629,313.95067836072,348.83408706747,376.74081403286,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:8:6"},cluster8g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:7"},cluster8h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,457.84473927605,523.2511306012],description:"Eight-Tone Triadic Cluster 4:7:5"},cluster8i:{frequencies:[261.6255653006,307.67166479351,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:7"},cluster8j:{frequencies:[261.6255653006,263.718569823,305.22982618403,313.95067836072,366.27579142084,376.74081403286,436.04260883433,439.53094970501,523.2511306012],description:"Eight-Tone Triadic Cluster 5:7:6"},cohenf_11:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:`Flynn Cohen, 7-limit scale of "Rameau's nephew", 1996`},coleman:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,491.89038573682,523.2511306012],description:"Jim Coleman's ModX piano temperament. TL 16 Mar 1999"},collengettes:{frequencies:[261.6255653006,269.10058145205,275.62199471997,285.40970760065,294.32876096318,302.73815413355,310.07474405997,321.08592105074,331.11985608357,340.58042340025,348.83408706747,358.80077526939,367.49599295996,380.54627680087,392.4383479509,403.65087217807,413.43299207996,428.11456140098,441.49314144476,454.10723120033,465.11211608996,478.40103369253,496.67978412536,507.3950357345,523.2511306012],description:"R.P. Collengettes, from p.23 of d'Erlanger, vol 5. 24 tone Arabic system"},colonna1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,308.86351459099,327.03195662575,348.83408706747,363.36884069528,392.4383479509,399.70572476481,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Colonna 1"},colonna2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Colonna 2"},concertina:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"English Concertina, Helmholtz/Ellis, p. 470"},cons11:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 11 not exceeding 2/1"},cons12:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 12 not exceeding 2/1"},cons13:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 13 not exceeding 2/1"},cons14:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 14 not exceeding 2/1"},cons15:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 15 not exceeding 2/1"},cons16:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 16 not exceeding 2/1"},cons17:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 17 not exceeding 2/1"},cons18:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 18 not exceeding 2/1"},cons19:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 19 not exceeding 2/1"},cons20:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 20 not exceeding 2/1"},cons21:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 21 not exceeding 2/1"},cons8:{frequencies:[261.6255653006,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 8 not exceeding 2/1"},cons9:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 9 not exceeding 2/1"},cons_5:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Set of consonant 5-limit intervals within the octave"},cons_7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals of tetrad 4:5:6:7 and inverse"},cons_7a:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals, harmonic entropy minima"},cont_frac1:{frequencies:[261.6255653006,264.29672053658,267.01859068163,284.39991302433,288.64312378534,304.51680721446,328.36325429535,342.47239171077,368.24757473349,390.36247006958,408.23697512781,419.80330474394,448.3033221197,488.42606438843,498.20005830409],description:"Continued fraction scale 1, see McLaren in Xenharmonikon 15, pp.33-38"},cont_frac2:{frequencies:[261.6255653006,268.67076720771,283.00159623424,287.78825007941,303.56038377389,306.30898587133,329.63288816559,333.85601282718,352.97051886932,380.09613548074,393.10104267352,426.45795861378,432.83315799354,472.91012288255,483.94654132265,519.4303061261],description:"Continued fraction scale 2, see McLaren in Xenharmonikon 15, pp.33-38"},cordier:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Serge Cordier, piano tuning, 1975 (Piano bien temp\xEF\xBF\xBDr\xEF\xBF\xBD et justesse orchestrale)"},corner11:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,343.38355445704,359.73515228832,392.4383479509,400.61414686654,408.78994578219,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 11-limit. Chalmers '96"},corner13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 13-limit. Chalmers '96"},corner17:{frequencies:[261.6255653006,265.71346475842,269.80136421624,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,347.47145391486,359.73515228832,371.99885066179,382.21859930635,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,449.66894036041,451.71289008932,457.84473927605,486.4600354808,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 17-limit."},corner17a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,275.93321340298,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,306.59245933664,312.72430852337,314.76825825228,318.85615771011,327.03195662575,331.11985608357,337.2517052703,343.38355445704,345.42750418595,347.47145391486,359.73515228832,367.91095120397,371.99885066179,382.21859930635,392.4383479509,398.57019713763,400.61414686654,404.70204632437,408.78994578219,416.96574469783,425.14154361347,429.2294430713,441.49314144476,449.66894036041,451.71289008932,457.84473927605,459.88868900496,478.28423656516,486.4600354808,490.54793493862,494.63583439645,515.07533168556,521.20718087229,523.2511306012],description:"Quadratic Corner 17 odd limit."},corner7:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,392.4383479509,400.61414686654,408.78994578219,457.84473927605,490.54793493862,523.2511306012],description:"Quadratic corner 7-limit. Chalmers '96"},corner9:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"First 9 harmonics of 5th through 9th harmonics"},corners11:{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,286.15296204753,294.32876096318,299.00064605783,304.4370214407,314.76825825228,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,434.91003062957,449.66894036041,457.84473927605,465.11211608996,478.40103369253,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Quadratic Corners 11-limit. Chalmers '96"},corners13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,398.6675280771,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"Quadratic Corners 13-limit. Chalmers '96"},corners7:{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Quadratic Corners 7-limit. Chalmers '96"},corrette:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.33704984564,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Corrette temperament"},corrette2:{frequencies:[261.6255653006,272.8349596094,292.34127285051,310.42509491746,326.6631048533,350.01785633742,365.01443422269,391.11111150212,409.71484950008,437.02884834934,466.16376151809,488.33748205014,523.2511306012],description:"Michel Corrette, modified meantone temperament (1753)"},coul_12:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,340.65828815182,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 5/4 3/2 2 successively split largest intervals by smallest interval"},coul_12a:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 6/5 3/2 2 successively split largest intervals by smallest interval"},coul_12sup:{frequencies:[261.6255653006,280.31310567921,294.32876096318,310.68035879446,331.39238271409,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,466.02053819169,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean scale. Op de Coul, 2003"},coul_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical 13-tone 5-limit just system"},coul_17sup:{frequencies:[261.6255653006,276.16031892841,279.06726965397,294.57100685697,310.07474405997,313.95067836072,331.39238271409,348.83408706747,368.21375857121,372.08969287196,392.76134247596,413.43299207996,418.60090448096,441.85651028546,465.11211608996,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean 17-tone scale. Op de Coul, 2003"},coul_20:{frequencies:[261.6255653006,277.18263097687,282.2367833559,293.66476791741,305.55548036855,311.12698372208,329.62755691287,335.63799088232,349.22823143301,363.36884069528,369.99442271164,391.99543598175,399.14308682247,415.30469757995,432.12070439462,440,466.16376151809,474.66379875343,493.88330125613,513.88101620607,523.2511306012],description:"Tuning for a 3-row symmetrical keyboard, Op de Coul, 1989"},coul_27:{frequencies:[261.6255653006,275.62199471997,275.93321340298,279.06726965397,293.99679436797,294.32876096318,310.07474405997,310.42486507835,327.03195662575,330.74639366397,331.11985608357,348.83408706747,367.49599295996,367.91095120397,372.08969287196,372.50983809402,392.4383479509,413.43299207996,413.89982010446,418.60090448096,440.99519155196,441.49314144476,465.11211608996,465.63729761752,490.54793493862,496.11959049595,496.67978412536,523.2511306012],description:"Symmetrical 27-tone 5-limit just system, 67108864/66430125 and 25/24"},counterschismic:{frequencies:[261.6255653006,265.12640119254,268.67408364533,272.2692364133,275.65170316539,279.34022410565,283.07810312094,286.865997406,290.70457953408,294.3160713245,298.25434362449,302.24531258767,306.28968684494,310.09479611189,314.24420508029,318.4491358588,322.71033506911,327.0285519162,331.0913069245,335.5216703313,340.01131880467,344.56104171562,348.84160709651,353.50948891197,358.2398341551,363.03347451625,367.54352740958,372.46166135084,377.44560747755,382.49624206822,387.61445966759,392.4298881006,397.68103103357,403.0024376988,408.3950505989,413.46864135256,419.00130591222,424.60800114791,430.28972009123,436.04746916004,441.46459261549,447.37187116862,453.35819556254,459.4246261707,465.13216971689,471.35614630867,477.663406507,484.05506753352,490.06860102591,496.62625431187,503.27165616309,510.00598369715,516.83042094502,523.2511306012],description:"Counterschismic temperament, g=498.082318, 5-limit"},couperin:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28785294636,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.24345038333,489.02683710225,523.2511306012],description:"Couperin modified meantone"},cross13:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,322.00069575458,332.97799220076,336.37572681506,366.27579142084,373.75080757229,406.97310157871,411.12588832951,425.14154361347,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"13-limit harmonic/subharmonic cross"},cross2:{frequencies:[261.6255653006,282.55561052465,339.14425131559,366.27579142084,436.04260883433,470.92601754108,560.62621135843,605.4763082671,726.73768139056,784.8766959018],description:"Pusey's double 5-7 cross reduced by 3/1"},cross2_5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5 cross reduced by 2/1"},cross2_7:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,348.83408706747,392.4383479509,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"longer 3-5-7 cross reduced by 2/1"},cross3:{frequencies:[261.6255653006,282.55561052465,311.45900631024,336.37572681506,363.28578496026,403.74315632809,436.04260883433,470.92601754108,508.60009894437,565.24041885932,610.45965236807,659.29642455751,726.73768139056,784.8766959018],description:"Pusey's triple 5-7 cross reduced by 3/1"},cross_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"3-5-7 cross reduced by 2/1, quasi diatonic, similar to Zalzal's, Flynn Cohen"},cross_72:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,313.95067836072,343.38355445704,348.83408706747,392.4383479509,398.6675280771,436.04260883433,448.50096908674,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5-7 cross reduced by 2/1"},cross_7a:{frequencies:[261.6255653006,336.37572681506,392.4383479509,436.04260883433,470.92601754108,523.2511306012,610.45965236807,784.8766959018],description:"2-5-7 cross reduced by 3/1"},cruciform:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Cruciform Lattice"},galilei:{frequencies:[261.6255653006,277.66336828161,293.32570896007,311.30674962848,328.86683469969,348.2210758395,368.7143392539,390.41365788584,413.39000965417,437.71854962063,463.47885582013,490.75518955849,523.2511306012],description:"Vincenzo Galilei's approximation"},gamelan_om:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other Music gamelan (7 limit black keys)"},gamelan_udan:{frequencies:[261.6255653006,261.6255653006,290.69507255622,305.22982618403,334.88072358477,351.32575911795,364.00078650518,392.4383479509,402.50086969323,465.11211608996,465.11211608996,501.44900015948,523.2511306012],description:"Gamelan Udan Mas (approx) s6,p6,p7,s1,p1,s2,p2,p3,s3,p4,s5,p5"},ganassi:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Sylvestro Ganassi's temperament (1543)"},gann_custer:{frequencies:[261.6255653006,269.80136421624,274.70684356563,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"Kyle Gann, scale from Custer's Ghost to Sitting Bull, 1/1=G"},gann_frac:{frequencies:[261.6255653006,264.89588486686,294.32876096318,305.22982618403,309.04519901133,313.95067836072,348.83408706747,353.19451315581,366.27579142084,392.4383479509,397.34382730029,412.06026534844,418.60090448096,423.83341578697,457.84473927605,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Fractured Paradise, 1/1=B"},gann_ghost:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Kyle Gann, scale from Ghost Town, 1/1=E"},gann_super:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Superparticular Woman (1992), 1/1=G"},gann_things:{frequencies:[261.6255653006,266.47048317654,272.52663052146,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,387.59343007496,392.4383479509,406.97310157871,408.78994578219,436.04260883433,448.50096908674,465.11211608996,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Kyle Gann, scale from How Miraculous Things Happen, 1/1=A"},garcia:{frequencies:[261.6255653006,268.33391312882,271.68808704293,279.06726965397,286.22284067074,294.32876096318,301.87565226992,310.07474405997,313.95067836072,322.00069575458,331.11985608357,339.61010880366,348.83408706747,357.77855083843,362.25078272391,372.08969287196,381.63045422766,392.4383479509,402.50086969323,407.5321305644,418.60090448096,429.33426100611,441.49314144476,452.81347840488,465.11211608996,470.92601754108,483.00104363188,496.11959049595,509.4151632055,523.2511306012],description:"Linear 29-tone scale by Jos\xEF\xBF\xBD L. Garcia, 1988 15/13-52/45 alternating"},garibaldi24:{frequencies:[261.6255653006,271.45160478635,275.48458787532,290.07776082447,294.38747453868,305.44397410364,309.9819851541,326.40257969757,331.25197480486,343.69301829526,348.79929894143,361.89937857146,367.27615309757,386.73177659938,392.47748849606,407.21801775129,413.26809573999,435.16003837828,441.62525370518,458.21165716245,465.0193526482,489.65270106975,496.92751922541,515.59094540799,523.2511306012],description:"Garibaldi[24] in 94-tET tuning."},genovese:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Denny Genovese's 65-note scale. 3/2=384 Hz"},genovese_12:{frequencies:[261.6255653006,285.40970760065,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Denny Genovese's superposition of harmonics 8-16 and subharmonics 6-12"},genovese_38:{frequencies:[261.6255653006,280.31310567921,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Denny Genovese's 38-note scale. Harm 1..16 x Subh. 1..12"},"gf1-2":{frequencies:[261.6255653006,269.29177952703,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,339.28638158975,349.22823143301,359.46139971304,380.8360868427,403.48177901006,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"16-note scale with all possible quadruplets of 50 & 100 c. Galois Field GF(2)"},"gf2-3":{frequencies:[261.6255653006,270.85177093588,280.40333801024,290.29174037004,300.52885648597,316.56538760238,327.729041887,345.21700307457,357.39105439675,369.99442271164,389.73770840504,410.5345162762,425.01198472693,447.69106452518,471.58032351597,496.7443381147,523.2511306012],description:"16-note scale with all possible quadruplets of 60 & 90 c. Galois Field GF(2)"},gilson7:{frequencies:[261.6255653006,261.6255653006,299.00064605783,313.95067836072,327.03195662575,392.4383479509,373.75080757229,392.4383479509,408.78994578219,408.78994578219,467.18850946536,490.54793493862,523.2511306012],description:"Gilson septimal"},gilson7a:{frequencies:[261.6255653006,261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,373.75080757229,373.75080757229,392.4383479509,418.60090448096,470.92601754108,470.92601754108,523.2511306012],description:"Gilson septimal 2"},golden_10:{frequencies:[261.6255653006,287.58715183149,304.90466328003,323.26497397694,342.73087946949,376.74069565061,399.42672527674,423.47882962254,465.50141625349,493.53231135469,523.2511306012],description:"Golden version of Rapoport's Major 10 out of 13"},golden_5:{frequencies:[261.6255653006,327.03195662575,343.38355445704,392.4383479509,425.14154361347,523.2511306012],description:"Golden pentatonic"},gradus10:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,490.54793493862,882.98628288953,930.22423217991,941.85203508216,1220.91930473613,1255.80271344288,1674.40361792384,2747.0684356563,3270.3195662575,3488.34087067467,5886.5752192635,10595.8353946743,10988.2737426252,11162.69078615893,13081.27826503,14651.0316568336,23546.300877054,31395.067836072,41860.090448096,42383.3415786972,56511.1221049296,75348.1628065728,100464.2170754304,133952.2894339072],description:"Intervals > 1 with Gradus = 10"},gradus3:{frequencies:[261.6255653006,784.8766959018,1046.5022612024],description:"Intervals > 1 with Gradus = 3"},gradus4:{frequencies:[261.6255653006,392.4383479509,1569.7533918036,2093.0045224048],description:"Intervals > 1 with Gradus = 4"},gradus5:{frequencies:[261.6255653006,348.83408706747,1308.127826503,2354.6300877054,3139.5067836072,4186.0090448096],description:"Intervals > 1 with Gradus = 5"},gradus6:{frequencies:[261.6255653006,654.0639132515,697.66817413493,1177.3150438527,2616.255653006,4709.2601754108,6279.0135672144,8372.0180896192],description:"Intervals > 1 with Gradus = 6"},gradus7:{frequencies:[261.6255653006,327.03195662575,436.04260883433,588.65752192635,1395.33634826987,1831.3789571042,3924.383479509,5232.511306012,7063.8902631162,9418.5203508216,12558.0271344288,16744.0361792384],description:"Intervals > 1 with Gradus = 7"},gradus8:{frequencies:[261.6255653006,294.32876096318,313.95067836072,418.60090448096,872.08521766867,915.6894785521,1962.1917397545,2790.67269653973,3531.9451315581,3662.7579142084,7848.766959018,10465.022612024,14127.7805262324,18837.0407016432,25116.0542688576,33488.0723584768],description:"Intervals > 1 with Gradus = 8"},gradus9:{frequencies:[261.6255653006,457.84473927605,465.11211608996,470.92601754108,610.45965236807,627.90135672144,837.20180896192,981.09586987725,1744.17043533733,1765.97256577905,5494.1368713126,5581.34539307947,6540.639132515,7325.5158284168,11773.150438527,15697.533918036,20930.045224048,21191.6707893486,28255.5610524648,37674.0814032864,50232.1085377152,66976.1447169536],description:"Intervals > 1 with Gradus = 9"},grady11:{frequencies:[261.6255653006,277.4816601673,290.69507255622,305.22982618403,332.97799220076,356.76213450082,378.42269266694,392.4383479509,420.46965851882,458.69417292962,481.6288815761,504.56359022259,523.2511306012],description:"Kraig Grady's dual [5 7 9 11] hexany scale"},grady7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Kraig Grady's 7-limit "Centaur" scale (1987), see Xenharmonikon 16`},grady7t:{frequencies:[261.6255653006,274.79177208104,293.65339461903,305.54250820508,326.68804977983,349.10444036529,366.6627351378,392.00975085961,407.77240291308,436.0718257558,457.96530027286,489.37179607373,523.2511306012],description:"Tempered version of grady7 with egalised 225/224"},grady_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Kraig Grady, letter to Lou Harrison, published in 1/1 7 (1) 1991 p 5."},grammateus:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"H. Grammateus (Heinrich Schreiber) (1518). B-F# and Bb-F 1/2 P. Also Marpurg temp.nr.6"},graupner:{frequencies:[261.6255653006,277.083518473,293.59062125964,310.9808189359,329.55130849159,349.11528328816,370.00708353276,392.01655298731,415.20348378516,439.96413779539,466.04943410823,493.90517116572,523.2511306012],description:"Johann Gottlieb Graupner's temperament (1819)"},groenewald_21:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"J\xEF\xBF\xBDrgen Gr\xEF\xBF\xBDnewald, new meantone temperament I (2000)"},gross:{frequencies:[13.75,13.83042567154,13.91662997964,13.99803029322,14.07990672861,14.1622619889,14.24509903843,14.32842061343,14.41222946472,14.49652860895,14.58132083065,14.67220542837,14.75802520833,14.84434696019,14.93117353378,15.01850805439,15.10635340681,15.19471249121,15.28358848801,15.37298433293,15.46880332718,15.55928251958,15.65029093742,15.74183158529,15.83390775812,15.92652249736,16.01967895316,16.113380201,16.20762961362,16.30865090754,16.4040424858,16.49999202274,16.59650278193,16.69357794961,16.79122101993,16.88943521823,16.98822378696,17.08759028197,17.18753798549,17.29466699621,17.39582592037,17.49757653721,17.59992220598,17.70286661052,17.80641315127,17.91056524676,18.01532664586,18.12070080902,18.23364617402,18.34029731861,18.44757228066,18.55547460176,18.66400816581,18.77317655783,18.88298349104,18.99343259063,19.10452783216,19.2236053387,19.33604689279,19.44914613325,19.56290690697,19.67733296969,19.79242844011,19.90819712001,20.02464283144,20.14176976577,20.26731246322,20.38585868839,20.50509842475,20.62503561099,20.74567420676,20.86701855437,20.98907266203,21.11184068121,21.23532666504,21.36768545088,21.49266790503,21.61838152318,21.74483045784,21.87201888365,21.99995137868,22.12863216875,22.25806563075,22.38825603783,22.52780097787,22.65956910312,22.79210808945,22.92542231482,23.05951631373,23.1943945132,23.33006176809,23.46652255971,23.60378139323,23.75090264526,23.88982499399,24.02955978014,24.17011203339,24.3114863964,24.45368753658,24.59672057234,24.74059022832,24.88530139802,25.04041015894,25.18687501732,25.33419642278,25.48237967807,25.63142967793,25.78135134315,25.93215007005,26.08383083979,26.23639881154,26.39992889083,26.55434576426,26.70966568928,26.86589425653,27.0230366265,27.18109814415,27.34008402779,27.5],description:"Gross temperament, g=91.531021, 5-limit"},groven:{frequencies:[261.6255653006,264.7464578752,272.5650766677,275.81646505128,279.10663876478,290.77709705464,294.24573392894,297.75574765819,306.54921255625,310.20599265769,313.90639394672,327.03195662575,330.93307160522,334.88072358477,344.77058253591,348.88329767713,353.04507480266,363.47137260637,367.80716871461,372.19468374184,387.75749219625,392.38299382393,397.06367008113,408.78994578219,413.66634097248,418.60090448096,436.10412364188,441.30634506723,446.57062302059,459.75895986689,465.24335632603,470.79317533731,484.69686416326,490.47874118496,496.32958936031,517.08292506126,523.2511306012],description:"Eivind Groven's 36-tone scale with 1/8-schisma temp. fifths and 5/4 (1948)"},groven_ji:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,517.37477513058,523.2511306012],description:"Untempered version of Groven's 36-tone scale"},gumbeng:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.9259392365,525.62941881859],description:"Scale of gumbeng ensemble, Java. 1/1=440 Hz."},gunkali:{frequencies:[261.6255653006,275.93321340298,282.55561052465,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Indian mode Gunkali, see Dani\xEF\xBF\xBDlou: Intr. to the Stud. of Mus. Scales, p.175"},gyaling:{frequencies:[261.6255653006,283.49766588023,307.55338551939,339.28638158975,347.81902735497,393.58362272115,435.9522698367],description:'Tibetan Buddhist Gyaling tones measured from CD "The Diamond Path", Ligon 2002'},far12_104:{frequencies:[261.6255653006,276.7193479141,294.32876096318,311.93817401225,329.54758706133,349.67263054599,369.79767403066,392.4383479509,415.07902187114,440.23532622697,465.3916305828,493.06356537421,523.2511306012],description:"Farey approximation to 12-tET with den=104"},far12_65:{frequencies:[261.6255653006,277.72560008833,293.82563487606,309.92566966379,330.05071314845,350.17575663311,370.30080011777,390.42584360243,414.57589578403,438.72594796562,466.90100884415,495.07606972267,523.2511306012],description:"Farey approximation to 12-tET with den=65"},far12_80:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,330.30227619201,349.92419358955,369.5461109871,392.4383479509,415.3305849147,441.49314144476,467.65569797482,493.81825450488,523.2511306012],description:"Farey approximation to 12-tET with den=80"},farey3:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"Farey fractions between 0 and 1 until 3rd level, normalised by 2/1"},farey4:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Farey fractions between 0 and 1 until 4th level, normalised by 2/1"},farey5:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,348.83408706747,366.27579142084,373.75080757229,380.54627680087,392.4383479509,402.50086969323,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Farey fractions between 0 and 1 until 5th level, normalised by 2/1"},farnsworth:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Farnsworth's scale"},fibo_9:{frequencies:[261.6255653006,277.97716313189,327.03195662575,343.38355445704,363.82305174615,392.4383479509,425.14154361347,449.66894036041,523.2511306012],description:"First 9 Fibonacci terms reduced by 2/1, B. McLaren, XH 13, 1991"},finnamore:{frequencies:[261.6255653006,277.97716313189,310.68035879446,348.83408706747,392.4383479509,416.96574469783,457.84473927605,466.02053819169,523.2511306012],description:"David J. Finnamore, Tuning List 9 May '97. Tetrachordal scale, 17/16x19/17x64/57"},finnamore53:{frequencies:[261.6255653006,286.15296204753,310.68035879446,327.03195662575,343.38355445704,359.73515228832,367.91095120397,376.08675011961,392.4383479509,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,457.84473927605,474.19633710734,523.2511306012],description:'David J. Finnamore, tuning for "Crawlspace", 53-limit, 1998.'},finnamore_11:{frequencies:[261.6255653006,287.78812183066,294.32876096318,305.22982618403,323.76163705949,331.11985608357,343.38355445704,348.83408706747,392.4383479509,431.68218274599,441.49314144476,457.84473927605,485.64245558924,515.07533168556,523.2511306012],description:"David J. Finnamore, 11-limit scale, Tuning List 3 Sept '98"},finnamore_7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,309.04519901133,331.11985608357,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,463.567798517,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 21/20 &15/14"},finnamore_7a:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,331.11985608357,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,473.02836583367,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 15/14 &21/20"},finnamore_jc:{frequencies:[261.6255653006,276.16031892841,310.68035879446,348.83408706747,392.4383479509,414.24047839262,466.02053819169,523.2511306012],description:"Chalmers' modification of Finnamore. Tuning List 9-5-97 19/18 x 9/8 x 64/57"},fisher:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.67535808973,327.03195662575,349.71841093413,365.63284485857,391.22147055517,410.55062036439,437.39890198442,467.47330218196,489.02683992698,523.2511306012],description:"Alexander Metcalf Fisher's modified meantone temperament (1818)"},"fj-10tet":{frequencies:[261.6255653006,280.31310567921,300.51585203447,322.00069575458,345.20039866051,370.01329949656,396.52624740872,425.14154361347,455.42228033808,488.36772189445,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 10-tet"},"fj-12tet":{frequencies:[261.6255653006,277.19851561611,293.6613488068,311.12229387098,329.64821227876,348.83408706747,370.01329949656,391.99491478937,415.52295665389,440.00663255101,466.16918908107,490.54793493862,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 12-tet"},"fj-13tet":{frequencies:[261.6255653006,275.96121271433,291.05844139692,306.97399661937,323.91736656265,341.56671025356,360.27127025001,379.97998769849,400.78810003496,422.62591317789,445.95266812602,41.6222490251,496.18641694941,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 13-tet"},"fj-14tet":{frequencies:[261.6255653006,274.92856014639,288.87822835275,303.4856557487,318.85615771011,335.0643204727,352.18826098158,370.01329949656,388.70083987518,408.5030756448,429.33426100611,451.0785608631,473.88781639354,497.93252750759,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 14-tet"},"fj-15tet":{frequencies:[261.6255653006,274.08392555301,286.94416839421,300.51585203447,314.76825825228,329.64821227876,345.20039866051,361.51896296083,378.66858135613,396.52624740872,415.52295665389,392.4383479509,455.42228033808,477.08191319521,499.46698830115,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 15-tet"},"fj-16tet":{frequencies:[261.6255653006,273.25336820285,285.40970760065,297.96244937013,311.12229387098,324.92207303462,339.29565499922,354.2846196779,370.01329949656,386.4008349055,403.52417698906,421.50785520652,440.00663255101,459.44001711325,479.64686971777,500.9851250437,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 16-tet"},"fj-17tet":{frequencies:[261.6255653006,272.52663052146,283.8915708581,295.75063903546,307.98958953109,320.70230585235,334.29933343966,348.03400888612,362.53828334512,373.75080757229,392.4383479509,409.71550792358,426.86276443782,444.76346101102,462.87600014722,482.37213602298,502.32108537715,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 17-tet"},"fj-18tet":{frequencies:[261.6255653006,271.88539139082,282.55561052465,293.6613488068,305.22982618403,317.12189733406,329.64821227876,342.60490694126,355.98232655655,370.01329949656,384.51030051755,399.57359064092,415.52295665389,431.68218274599,448.50096908674,466.16918908107,484.4917875937,503.12608711654,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 18-tet"},"fj-19tet":{frequencies:[261.6255653006,271.31540105247,281.44568388398,291.81313052759,302.73815413355,313.95067836072,325.69713231299,337.73482066077,350.31219760589,363.36884069528,376.74081403286,390.78248994267,405.26313056367,420.46965851882,436.04260883433,451.89870370104,468.95148497277,485.87604984397,504.56359022259,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 19-tet"},"fj-20tet":{frequencies:[261.6255653006,270.8594087818,280.31310567921,290.29686012806,300.51585203447,311.12229387098,322.00069575458,333.44434793214,345.20039866051,357.34223553253,370.01329949656,383.09457776159,396.52624740872,410.48149038542,425.14154361347,440.00663255101,455.42228033808,470.92601754108,488.36772189445,505.41302387616,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 20-tet"},"fj-21tet":{frequencies:[261.6255653006,270.34641747729,279.46367202564,288.87822835275,298.56093922539,308.58400009814,318.85615771011,329.64821227876,340.72166643799,352.18826098158,364.00078650518,376.08675011961,388.70083987518,401.78211814021,415.52295665389,429.33426100611,443.62595855319,457.84473927605,473.88781639354,489.85212226495,506.18859373377,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 21-tet"},"fj-22tet":{frequencies:[261.6255653006,270.06509966514,278.68810216803,287.55242312318,296.76929795292,306.29334474217,316.13089140489,326.18252297218,336.37572681506,347.40443916965,358.52392281934,370.01329949656,381.83190611439,392.4383479509,392.4383479509,419.69101100305,433.03541842858,446.94367405519,461.28718092474,475.68284600109,491.34557385722,506.89953276991,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 22-tet"},"fj-23tet":{frequencies:[261.6255653006,269.55361273395,277.97716313189,286.37392958579,295.1673044417,304.21577360535,313.47928094576,323.18452184192,332.97799220076,343.1154954762,353.6790049434,364.40703738298,375.66747838035,387.20583664489,398.97898708342,411.12588832951,423.58424858192,436.04260883433,449.99597231703,463.79077485106,477.96978276071,492.47165233054,507.86139146587,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 23-tet"},"fj-24tet":{frequencies:[261.6255653006,269.32043486826,277.19851561611,285.40970760065,293.6613488068,302.32287545847,311.12229387098,320.2657782128,329.64821227876,339.29565499922,348.83408706747,348.83408706747,370.01329949656,380.54627680087,391.99491478937,403.52417698906,415.52295665389,427.53446036927,440.00663255101,452.81347840488,466.16918908107,479.64686971777,490.54793493862,508.30109829831,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 24-tet"},"fj-26tet":{frequencies:[261.6255653006,268.69652652494,275.96121271433,283.42769574232,291.05844139692,299.00064605783,306.97399661937,315.29234792636,323.91736656265,332.57487114483,341.56671025356,350.8160989258,360.27127025001,370.01329949656,379.97998769849,390.22118214327,400.78810003496,411.12588832951,422.62591317789,434.18710837121,445.95266812602,457.84473927605,457.84473927605,483.00104363188,496.18641694941,509.48136400643,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 26-tet"},"fj-30tet":{frequencies:[261.6255653006,267.70988077271,274.08392555301,280.31310567921,286.94416839421,293.6613488068,300.51585203447,307.52478728316,314.76825825228,322.00069575458,329.64821227876,337.35928157183,345.20039866051,353.19451315581,361.51896296083,370.01329949656,378.66858135613,387.59343007496,396.52624740872,405.78659107848,415.52295665389,425.14154361347,392.4383479509,444.76346101102,455.42228033808,466.16918908107,477.08191319521,488.36772189445,499.46698830115,511.35905945117,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 30-tet"},"fj-31tet":{frequencies:[261.6255653006,267.57160087561,273.51763645063,279.79400733536,286.15296204753,292.60754013883,299.00064605783,305.96888145324,312.81317590289,319.76457981184,327.03195662575,334.53760808929,342.12573923925,349.884792149,357.81143489641,366.27579142084,373.75080757229,382.37582620857,391.25985441351,400.13321751856,409.20921752145,418.60090448096,428.11456140098,437.54620403721,447.51741432997,457.84473927605,467.90726101838,478.40103369253,489.12605686634,500.50108144463,511.62332769895,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 31-tet"},"fj-36tet":{frequencies:[261.6255653006,266.75547834571,271.88539139082,277.19851561611,282.55561052465,288.08208313999,293.6613488068,299.00064605783,305.22982618403,311.12229387098,317.12189733406,323.18452184192,329.64821227876,327.03195662575,342.60490694126,348.83408706747,355.98232655655,362.89997767503,370.01329949656,377.22755927063,384.51030051755,391.99491478937,399.57359064092,406.97310157871,415.52295665389,423.35773294097,431.68218274599,440.00663255101,448.50096908674,436.04260883433,466.16918908107,475.19745534191,484.4917875937,490.54793493862,503.12608711654,513.18860885887,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 36-tet"},"fj-41tet":{frequencies:[261.6255653006,266.05989691586,270.64713651786,275.21650375777,279.87851171692,284.71017400359,289.532292266,294.32876096318,299.49242343621,304.63250754179,309.81974838229,315.13988547572,320.49131749323,325.95972070239,331.39238271409,337.09447836808,342.81970625596,348.83408706747,354.64798851859,360.72615821749,366.27579142084,373.13810133036,379.35706968587,386.00493241072,392.4383479509,399.32323124828,405.97070477679,413.09299784305,419.97788114044,427.14378008261,434.48531380278,441.85651028546,449.45930449077,436.04260883433,465.11211608996,472.93852188955,480.82536325516,489.12605686634,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 41-tet"},"fj-42tet":{frequencies:[261.6255653006,265.98599138894,270.34641747729,274.92856014639,279.46367202564,284.05061375494,288.87822835275,293.6613488068,298.56093922539,303.4856557487,308.58400009814,313.7026920429,318.85615771011,324.18820048118,329.64821227876,335.0643204727,340.72166643799,346.37750898953,352.18826098158,358.01393146398,364.00078650518,370.01329949656,376.08675011961,382.37582620857,388.70083987518,395.22159864559,401.78211814021,408.5030756448,415.52295665389,422.16852582597,429.33426100611,436.04260883433,443.62595855319,451.0785608631,457.84473927605,466.16918908107,473.88781639354,481.94183081689,489.85212226495,497.93252750759,506.18859373377,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 42-tet"},"fj-43tet":{frequencies:[261.6255653006,265.84533248287,270.2034526875,274.70684356563,279.06726965397,283.42769574232,288.1672893166,292.86443876933,297.71185016965,302.50455987882,307.4100392282,312.38873468728,317.43901923139,322.67153053741,327.85988562987,332.97799220076,338.57426097725,344.24416486921,348.83408706747,355.41586229515,361.11697745717,367.05676325756,372.95559308809,379.09010482332,385.17097113699,391.45479319413,397.88888056133,404.33041910093,392.4383479509,417.48760420309,424.25767346043,431.1976909584,438.2228218785,445.32011114996,452.54151835779,459.82675113439,467.18850946536,475.05694751951,483.00104363188,490.54793493862,498.33441009638,506.89953276991,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 43-tet"},"fj-53tet":{frequencies:[261.6255653006,265.06800694929,268.51044859798,272.09058791262,275.69145590816,279.30296836145,282.98275430473,286.71294827463,290.48132617934,294.32876096318,298.13145813324,302.11523612093,306.05254808749,310.07474405997,313.95067836072,318.31110444906,322.46872002167,326.7649917632,331.03642956402,335.41739141103,336.37572681506,344.24416486921,348.83408706747,353.42400926572,358.01393146398,362.89997767503,367.52162744608,372.31330446624,377.3445653374,382.37582620857,387.20583664489,392.4383479509,397.67085925691,402.82031482791,408.13588186894,413.53718386224,418.60090448096,424.41480593208,429.81342870813,436.04260883433,441.49314144476,447.29532132038,453.1728541814,459.07882213124,465.11211608996,470.92601754108,477.46665667359,483.76047923507,485.87604984397,496.55464434604,503.12608711654,509.83443494476,516.36624730382,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 53-tet"},"fj-54tet":{frequencies:[261.6255653006,265.02329991489,268.42103452919,271.88539139082,275.39533189537,279.06726965397,282.55561052465,286.15296204753,289.90941019796,293.6613488068,297.46468383493,301.26580246736,305.22982618403,309.19384990071,313.15787361738,317.12189733406,321.29455387793,325.43667878855,329.64821227876,333.91683992313,338.19890148614,342.60490694126,346.93824963775,351.55935337268,355.98232655655,360.61902244137,365.28852513669,370.01329949656,374.76094489005,379.61356533813,384.51030051755,389.53139722534,394.5147413263,399.57359064092,404.77917650282,409.88005230427,415.52295665389,420.652869699,426.07592063241,431.68218274599,436.04260883433,442.75095666255,448.50096908674,454.40229762736,460.26719821402,466.16918908107,472.20223981084,478.40103369253,484.4917875937,490.54793493862,497.08857407114,503.12608711654,510.16985233617,516.54278277298,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 54-tet"},"fj-55tet":{frequencies:[261.6255653006,264.93728131706,268.33391312882,271.68808704293,275.15792212649,278.68810216803,282.14521748104,285.77561748219,289.37373131733,293.02063313667,296.76929795292,300.51585203447,304.33994330886,308.21641939523,312.11470948142,316.13089140489,319.76457981184,324.10331223806,328.22116374075,332.33517754401,336.37572681506,340.90603963412,345.20039866051,348.83408706747,353.96400011258,358.52392281934,363.07221307022,367.68998366571,372.31330446624,377.04860881557,381.83190611439,386.75083566176,391.58336244338,396.52624740872,401.56482115906,406.65712867376,411.81801945465,416.96574469783,418.60090448096,427.65717404906,433.03541842858,438.60756535689,444.15502946381,449.8123754291,455.42228033808,461.28718092474,467.18850946536,472.93852188955,479.03272519828,485.0974023282,491.34557385722,497.60156537565,503.87145909745,510.16985233617,516.71049146868,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 55-tet"},"fj-5tet":{frequencies:[261.6255653006,300.51585203447,345.20039866051,396.52624740872,455.42228033808,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 5-tet"},"fj-60tet":{frequencies:[261.6255653006,264.66772303665,267.70988077271,270.8594087818,274.08392555301,277.19851561611,280.31310567921,283.6903720127,286.94416839421,290.29686012806,293.6613488068,297.10021822272,300.51585203447,304.05133264664,307.52478728316,311.12229387098,314.76825825228,318.50068819203,322.00069575458,325.79787377056,329.64821227876,333.44434793214,337.35928157183,341.25073734861,345.20039866051,348.83408706747,353.19451315581,357.34223553253,361.51896296083,365.74186169574,370.01329949656,374.3258088147,378.66858135613,383.09457776159,387.59343007496,391.99491478937,396.52624740872,401.15920012759,405.78659107848,410.48149038542,415.52295665389,420.18651396763,425.14154361347,429.81342870813,434.91003062957,440.00663255101,444.76346101102,450.23934493592,455.42228033808,460.95932933915,466.16918908107,470.92601754108,477.08191319521,482.55382044333,488.36772189445,490.54793493862,499.46698830115,505.41302387616,511.35905945117,517.30509502619,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 60-tet"},"fj-66tet":{frequencies:[261.6255653006,264.37951861955,267.19206668997,270.06509966514,272.83808952777,275.76748774928,278.68810216803,281.58005756929,284.57517629188,287.55242312318,290.69507255622,293.6613488068,296.76929795292,299.91223339337,302.93486508491,306.29334474217,309.48390041656,312.81317590289,316.13089140489,319.38705374359,322.78478835788,326.18252297218,329.64821227876,332.97799220076,336.37572681506,340.11323489078,343.8507429665,347.40443916965,351.12904816659,354.74652922115,358.52392281934,362.25078272391,366.27579142084,370.01329949656,373.75080757229,377.90359432309,381.83190611439,385.89770881839,389.97018224052,392.4383479509,398.12586024004,402.50086969323,406.65712867376,411.12588832951,415.52295665389,419.69101100305,424.01384721132,428.62060698183,433.03541842858,437.71969579139,442.27178896054,446.94367405519,451.89870370104,456.45311392871,461.28718092474,466.16918908107,470.92601754108,475.68284600109,481.05345877852,485.87604984397,491.34557385722,496.41773928832,501.44900015948,506.89953276991,512.35006538034,517.80059799077,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 66-tet"},"fj-72tet":{frequencies:[195.99771799087,197.9006084568,199.84081050049,201.76235675531,203.68390301012,205.67661764474,207.66424882366,209.67197738558,211.67753543014,213.81569235368,215.817711945,217.77524221208,219.99743856118,222.13074705632,223.99739198957,226.48625190056,228.66400432268,230.8417567448,233.07836734049,235.19726158904,237.57299150408,239.92824098882,242.11482810637,244.5635242187,246.9571246685,249.45164107929,251.74018824515,254.18454051941,256.66367832138,259.11562717437,261.33029065449,264.17083729204,266.68541956135,269.28382123963,271.86780237443,274.39680518722,277.19677258709,279.99673998696,282.60136082405,285.0875898049,288.0572521987,290.83532347032,293.66437746429,296.5093682426,299.34196929515,302.30156503677,304.88533909691,307.99641398565,311.29049327962,313.59634878539,317.15994365795,320.28895378996,323.39623468494,326.46784071315,329.63252571192,332.8263135694,335.99608798435,339.22681959958,342.55457018224,345.87832586624,349.232297511,352.79589238357,355.99585512627,359.32914964993,362.95873702013,366.4305162438,367.49572123288,373.6206499201,376.91868844398,380.79556638226,384.45706221286,388.2262490973,391.99543598174],description:"Franck Jedrzejewski continued fractions approx. of 72-tet"},"fj-78tet":{frequencies:[138.59131548844,139.82873794816,141.06616040788,142.33702671786,143.60064014465,144.89092073791,146.18536017274,147.4753741736,148.781853392,150.14059177914,151.48353088271,152.80580938469,154.18283848089,155.56168065029,156.95883922787,158.39007484393,159.76498868806,161.21846903757,162.6138101731,164.12129465736,165.53962683341,167.02030328094,168.55700532378,170.00534699915,171.58924774759,173.06676710248,174.62505751543,176.17540104463,177.75842638735,179.35346710269,180.93866188769,182.53490332624,184.15558359423,185.8383548595,187.50589742554,188.98815748424,190.84705739392,192.48793817839,194.02784168382,196.00771761937,197.74614527009,199.57149430335,201.28738678083,203.10796235375,204.87411854813,206.71247055903,207.88697323266,210.45347907504,212.31010032272,214.18657848213,216.10849194808,217.78635291041,220.11561871693,221.7461047815,223.87827886594,225.96410133985,228.00506741647,230.00260868294,232.05987709692,234.17153306667,236.2351968553,238.37706264012,240.41350645954,242.53480210477,244.7463656498,246.9445257794,249.1343885566,251.39820018833,253.59261982991,255.8608901325,258.1602935569,260.55167311827,262.84559834014,265.13121223875,267.51346943117,269.88835121433,272.23294113801,274.70778605744,277.18263097688],description:"Franck Jedrzejewski continued fractions approx. of 78-tet"},"fj-7tet":{frequencies:[261.6255653006,288.87822835275,318.85615771011,352.18826098158,388.70083987518,429.33426100611,473.88781639354,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 7-tet"},"fj-84tet":{frequencies:[97.99885899544,98.81551615374,99.63217331203,100.44883047033,101.26548762862,102.12512674262,102.98185182572,103.83212441184,104.68059938149,105.53723276432,106.39876119505,107.33208366167,108.20707347413,109.09306944775,109.9987192806,110.89344570537,111.83399203009,112.76581035092,113.67867643471,114.64017467391,115.58839778949,116.53918367025,117.50574088079,118.47623251688,119.43610940069,120.45693084856,121.43336875522,122.4985737443,123.47856233425,124.48503710232,125.50731064328,126.58185953578,127.62642101732,128.62350243151,129.74496824748,130.66514532725,131.9215409554,132.99845149381,134.10370178323,135.17083999371,136.34623860235,137.19840259362,138.59838629355,139.73911375276,140.87335980595,142.09834554339,143.22910160872,144.41937115117,145.59830479323,146.83218873215,148.0408295463,149.25980062382,150.498247743,151.74016876713,153.01576229113,154.29607586516,155.64524663982,156.7981743927,158.13452246991,159.45577056885,160.81864040277,162.07503603092,163.33143165907,164.81626285597,166.17197829662,167.54643634704,168.96354999214,170.33135015874,171.49800324202,173.20728566636,174.61614875551,176.03498745477,177.50736723702,178.95443816559,180.52421393897,181.99788099153,183.48722535316,183.74786061645,186.51395744293,188.05186455882,189.60648805639,191.21728584476,192.8364644749,194.36440367429,195.99771799088],description:"Franck Jedrzejewski continued fractions approx. of 84-tet"},"fj-8tet":{frequencies:[261.6255653006,285.40970760065,311.12229387098,339.29565499922,370.01329949656,403.52417698906,440.00663255101,479.64686971777,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 8-tet"},"fj-90tet":{frequencies:[69.29565774422,69.83283338565,70.37840239647,70.9071846685,71.46114704873,72.0131345185,72.59545097014,73.14541650779,73.69538204544,74.24534758309,74.83931036376,75.40998048636,76.00168913882,76.58993750677,77.19009976571,77.78084032514,78.38361285822,78.99704982841,79.59636362512,80.23707738804,80.84493403492,81.4527906818,82.08870225085,82.70772053342,83.37133822351,83.99473665966,84.69469279849,85.2869633775,85.97794571968,86.61957218027,87.31252875772,87.95218098305,88.65767976099,89.35492709123,90.08435506749,90.74431371267,91.43177063473,92.14038007748,92.85618137725,93.5491379547,94.28753430771,95.03404490636,95.75399979201,96.51895185802,97.25706350066,98.00385880968,98.74631228551,99.50145727375,100.29634673506,101.05616754365,101.84361819984,102.66023369514,103.42635484212,103.94348661633,105.02623126858,105.83336819117,106.60870422188,107.47897935838,108.27446522534,109.14066094715,110.05780935847,110.87305239075,111.72157064884,112.60544383436,113.39289449054,114.33783527796,115.19278170468,116.11704811194,116.93642244337,117.80261816517,118.79255613295,119.69249974002,120.62577459179,121.5942673625,122.52275717094,123.4722628897,124.41720367712,125.39214258478,126.36267000417,127.35418180019,128.32529211893,129.35189445588,130.27583655913,131.29703572589,132.29171023897,133.26088027735,134.39157865546,135.4415128637,136.49144707195,137.52522844622,138.59131548844],description:"Franck Jedrzejewski continued fractions approx. of 90-tet"},"fj-96tet":{frequencies:[48.99942949772,49.35708956705,49.70956615711,50.0646344868,50.44058918883,50.81422318282,51.17718191984,51.5338827476,51.91606220592,52.2660581309,52.67438671005,53.04896912563,53.45392308842,53.81904551389,54.21213476343,54.59936429746,54.9993596403,55.39065943221,55.80490581685,56.20522795327,56.62156297514,57.01751796098,57.44760699733,57.85474808165,58.26959183513,58.69162434342,59.11042288614,59.54361052887,59.98206024721,60.41025554513,60.85413018265,61.24928687215,61.73928116713,62.19158359326,62.61038213598,63.09515579158,63.54613512986,63.99925485416,64.47293354963,64.92424408448,65.33257266363,65.89578449693,66.3533941115,66.81740386053,67.32095530991,67.84536391992,68.30223505743,68.78766064103,69.29919314678,69.78706625433,70.30352927934,70.77695371893,71.27189745123,71.86582992999,72.36838818125,72.90159022832,73.41609436608,73.94459360565,74.47913283653,75.03037641838,75.5753912592,76.10549687944,76.66039776256,77.21122223883,77.82262331991,78.34524166943,78.94352530188,79.48796340741,80.07223844749,80.64489438166,81.23589627254,81.66571582953,82.40813142798,82.999033639,83.58726208435,84.21776944921,84.8067048999,85.43490271397,86.04777863014,86.69129834212,87.30807437776,87.94769397027,88.57589178434,89.20408959841,89.83228741249,90.46048522656,91.16172929808,91.87393030822,92.49330511929,93.09891604567,93.82869478287,94.4988997456,95.19889159557,95.91377688915,96.59887529551,97.28872233605,97.99885899544],description:"Franck Jedrzejewski continued fractions approx. of 96-tet"},"fj-9tet":{frequencies:[261.6255653006,282.55561052465,305.22982618403,329.64821227876,355.98232655655,384.51030051755,415.52295665389,448.50096908674,484.4917875937,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 9-tet"},flavel:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Bill Flavel's just tuning. Tuning List 6-5-98"},fogliano:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord with D-/D and Bb-/Bb"},fogliano1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.1, Musica theorica (1529)"},fogliano2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.2"},"fokker-h":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker-H 5-limit per.bl. synt.comma&small diesis, KNAW B71, 1968"},"fokker-ht":{frequencies:[261.6255653006,272.31140503734,279.67242998298,290.89121260742,305.67073265504,313.92185180985,326.66733279836,335.5942968927,349.22294231864,363.36596605244,376.74379448613,392.00137290182,407.92073675044,419.068143928,436.08264938702,447.85404100892,470.60848490625,489.4864783277,502.71810253025,523.2511306012],description:"Tempered version of Fokker-H per.bl. with better 6 tetrads, OdC"},"fokker-k":{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Fokker-K 5-limit per.bl. of 225/224 & 81/80 & 10976/10935, KNAW B71, 1968"},"fokker-l":{frequencies:[261.6255653006,271.31540105247,282.62020942966,291.99281841585,301.39265122629,313.95067836072,325.57848126297,339.14425131559,350.39138209902,363.36884069528,376.74081403286,390.69417751556,403.65087217807,420.46965851882,436.04260883433,454.2110508691,468.83301301868,484.38104661368,504.56359022259,523.2511306012],description:"Fokker-L 7-limit periodicity block 10976/10935 & 225/224 & 15625/15552, 1969"},"fokker-lt":{frequencies:[261.6255653006,272.07297743248,282.57734531132,291.77233860052,302.20925621315,313.90139500947,326.42149564976,339.58797317787,349.9403315901,363.14714144228,376.97081214523,391.19775936204,403.12344267272,419.38375585596,436.11106867998,452.98371913917,469.18728997524,484.4545223075,503.15865298196,523.2511306012],description:"Tempered version of Fokker-L per.bl. with more triads"},"fokker-m":{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker-M 7-limit periodicity block 81/80 & 225/224 & 1029/1024, KNAW B72, 1969"},"fokker-n":{frequencies:[261.6255653006,265.7783520514,273.37201925287,277.71125765371,286.15296204753,290.69507255622,299.00064605783,303.74668805875,313.95067836072,318.93402246168,328.62879235146,333.84512238879,343.38355445704,348.83408706747,358.80077526939,364.4960256705,375.57576268738,381.53728273004,392.4383479509,398.6675280771,410.05802887931,416.56688648057,429.2294430713,436.04260883433,450.69091522486,457.84473927605,470.92601754108,478.40103369253,492.94318852719,500.76768358318,515.07533168556,523.2511306012],description:"Fokker-N 7-limit periodicity block 81/80 & 2100875/2097152 & 1029/1024, 1969"},"fokker-n2":{frequencies:[261.6255653006,265.7783520514,272.52663052146,279.06726965397,286.15296204753,290.69507255622,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"Fokker-N different block shape"},"fokker-p":{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.31310567921,286.15296204753,290.69507255622,299.00064605783,306.17666156322,312.97980223949,320.35783506196,327.03195662575,334.88072358477,341.85740532612,350.39138209902,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.69417751556,400.44729382745,408.78994578219,418.60090448096,427.32175665765,437.39523080459,447.11400319927,457.84473927605,470.92601754108,478.40103369253,488.36772189445,500.76768358318,510.98743222773,523.2511306012],description:"Fokker-P 7-limit periodicity block 65625/65536 & 6144/6125 & 2401/2400, 1969"},"fokker-q":{frequencies:[261.6255653006,265.7783520514,269.10058145205,272.52663052146,274.70684356563,279.06726965397,284.76252005507,286.15296204753,290.69507255622,294.32876096318,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,318.93402246168,321.92208230347,327.03195662575,332.22294006425,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,381.53728273004,387.59343007496,392.4383479509,398.6675280771,401.85686830172,408.78994578219,412.06026534844,418.60090448096,425.24536328225,429.2294430713,436.04260883433,439.53094970501,448.50096908674,454.2110508691,457.84473927605,465.11211608996,470.92601754108,478.40103369253,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-Q 7-limit per.bl. 225/224 & 4000/3969 & 6144/6125, KNAW B72, 1969"},"fokker-r":{frequencies:[261.6255653006,264.95644634031,268.26840191956,272.52663052146,275.55899540689,279.06726965397,282.62020942966,287.04062021552,290.69507255622,294.32876096318,298.07600213285,301.80195215951,306.17666156322,310.07474405997,313.95067836072,317.94773560837,322.92069774245,327.03195662575,331.19555792538,334.88072358477,340.1962906258,344.44874425862,348.83408706747,353.19451315581,357.69120255941,363.36884069528,367.91095120397,372.08969287196,376.74081403286,382.72082695402,387.59343007496,392.4383479509,397.43466951046,402.40260287934,408.78994578219,413.33849311034,418.60090448096,423.93031414449,430.56093032327,436.04260883433,441.49314144476,447.11400319927,453.59505416773,459.26499234482,465.11211608996,470.92601754108,476.92160341255,484.38104661368,490.54793493862,496.79333688808,502.32108537715,510.29443593869,516.67311638793,523.2511306012],description:"Fokker-R 7-limit per.bl. 4375/4374 & 65625/65536 & 6144/6125, 1969"},"fokker-s":{frequencies:[261.6255653006,265.7783520514,269.10058145205,273.37201925287,273.85732695955,278.20426865732,282.55561052465,286.15296204753,290.69507255622,295.2417807931,299.00064605783,303.74668805875,304.28591884395,309.04519901133,313.95067836072,317.94773560837,322.92069774245,328.04642310345,332.22294006425,333.84512238879,338.01818641865,343.38355445704,348.83408706747,353.19451315581,358.80077526939,364.4960256705,369.13660007139,370.8542388136,375.57576268738,381.53728273004,387.59343007496,392.4383479509,398.6675280771,404.99558407833,410.05802887931,412.06026534844,417.30640298598,423.93031414449,430.56093032327,436.04260883433,442.96392008567,449.89223739901,450.69091522486,457.84473927605,463.67378109554,470.92601754108,478.40103369253,484.4917875937,492.06963465517,499.88026377668,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-S 7-limit per.bl. 4375/4374 & 323/322 & 64827/65536, 1969"},fokker_12:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Fokker's 7-limit 12-tone just scale"},fokker_12a:{frequencies:[261.6255653006,274.70684356563,293.02063313667,309.04519901133,327.03195662575,348.83408706747,367.91095120397,390.69417751556,412.06026534844,439.53094970501,465.11211608996,490.54793493862,523.2511306012],description:"Fokker's 7-limit periodicity block of 2048/2025 & 3969/4000 & 225/224"},fokker_12b:{frequencies:[261.6255653006,275.93321340298,293.02063313667,309.04519901133,332.22294006425,348.83408706747,367.91095120397,392.4383479509,412.06026534844,439.53094970501,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit semitone scale KNAW B72, 1969"},fokker_12c:{frequencies:[261.6255653006,275.93321340298,293.02063313667,311.45900631024,332.22294006425,348.83408706747,372.08969287196,392.4383479509,412.06026534844,442.96392008567,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit complementary semitone scale, KNAW B72, 1969"},fokker_12t:{frequencies:[261.6255653006,279.53180800295,293.53544531438,305.4439412874,326.66157401657,349.08351368992,366.63408494061,391.81886165309,419.06057467847,436.03416050506,457.88164994338,489.21957814041,523.2511306012],description:"Tempered version of fokker_12 with egalised 225/224, see also lumma"},fokker_12t2:{frequencies:[261.6255653006,279.53060025556,293.5302824794,305.44678713816,326.66192308793,349.10467831311,366.62831408589,391.81689264402,419.03095498017,436.04260883433,457.88067400285,489.21694446174,523.2511306012],description:"Another tempered version of fokker_12 with egalised 225/224"},fokker_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 3125/3072. KNAW B71, 1968"},fokker_22a:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 2109375/2097152 = semicomma"},fokker_31:{frequencies:[261.6255653006,265.7783520514,275.93321340298,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,315.35224388912,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,482.88312345521,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone just system"},fokker_31a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,476.92160341255,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone first alternate septimal tuning"},fokker_31b:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,480.53675259294,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone second alternate septimal tuning"},fokker_31c:{frequencies:[261.6255653006,269.46602871384,272.52663052146,279.06726965397,287.4304306281,294.32876096318,297.67175429757,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,383.2405741708,392.4383479509,396.89567239676,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,465.11211608996,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & 2109375/2097152 = semicomma"},fokker_31d:{frequencies:[261.6255653006,266.13928761861,272.52663052146,279.06726965397,287.4304306281,294.32876096318,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,399.20893142792,408.78994578219,418.60090448096,425.82286018978,436.04260883433,443.56547936435,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & W\xEF\xBF\xBDrschmidt's comma"},fokker_31d2:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Reduced version of fokker_31d by Prooijen expressibility"},fokker_41:{frequencies:[261.6255653006,264.89588486686,271.31540105247,274.70684356563,280.31310567921,283.8170195002,290.69507255622,294.32876096318,300.33547037059,305.22982618403,311.45900631024,313.95067836072,321.55899383997,325.57848126297,329.64821227876,336.37572681506,341.85740532612,348.83408706747,353.19451315581,361.75386806997,366.27579142084,373.75080757229,378.42269266694,387.59343007496,392.4383479509,400.44729382745,406.97310157871,415.27867508032,420.46965851882,425.72552925031,436.04260883433,439.53094970501,448.50096908674,455.80987376816,465.11211608996,470.92601754108,482.33849075995,488.36772189445,498.33441009638,504.56359022259,516.79124009995,523.2511306012],description:"Fokker's 7-limit supracomma per.bl. 10976/10935 & 225/224 & 496125/262144"},fokker_41a:{frequencies:[261.6255653006,264.59711493117,272.83435407277,275.93321340298,279.06726965397,287.4304306281,291.02331101095,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.77913876369,367.91095120397,372.08969287196,376.315896791,388.03108134794,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 34171875/33554432"},fokker_41b:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,287.4304306281,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,340.65828815182,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,383.2405741708,388.03108134794,392.4383479509,397.34382730029,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,454.2110508691,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.67978412536,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 3125/3072"},fokker_53:{frequencies:[261.6255653006,263.718569823,268.26840191956,272.52663052146,274.70684356563,279.06726965397,282.55561052465,286.15296204753,290.69507255622,294.32876096318,299.00064605783,300.46061014991,305.22982618403,309.04519901133,313.95067836072,317.87506184023,321.92208230347,327.03195662575,329.64821227876,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,357.69120255941,360.55273217989,366.27579142084,373.75080757229,376.74081403286,381.53728273004,386.30649876417,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.83341578697,429.2294430713,436.04260883433,439.53094970501,448.50096908674,450.69091522486,457.84473927605,465.11211608996,470.92601754108,476.92160341255,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker's 53-tone system, degree 37 has alternatives"},fokker_53a:{frequencies:[261.6255653006,264.89588486686,269.46602871384,272.52663052146,275.93321340298,279.38237857051,283.88190679319,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.42486507835,313.95067836072,319.36714514233,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,359.28803828513,363.36884069528,367.91095120397,372.50983809402,378.50920905758,383.2405741708,388.03108134794,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,425.82286018978,431.14564594215,436.04260883433,441.49314144476,447.01180571282,454.2110508691,459.88868900496,465.63729761752,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,504.67894541011,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & kleisma"},fokker_53b:{frequencies:[261.6255653006,264.59711493117,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,388.03108134794,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.35538388988,431.14564594215,436.04260883433,441.49314144476,446.50763144636,451.5790761492,459.88868900496,465.11211608996,470.92601754108,476.27480687611,485.03885168492,490.54793493862,496.11959049595,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & 2109375/2097152"},fokker_av:{frequencies:[261.6255653006,267.53238172257,273.57240048543,279.74894499065,286.06477437084,292.52336378682,299.12777114678,305.88111195206,312.78710209553,319.84901131344,327.07017092477,334.45455423048,342.00545991849,349.72704272607,357.62295854304,365.69693211485,373.95340598657,382.39606841888,391.02956482064,399.85798283974,408.88548711149,418.11704484248,427.5567798744,437.20988623572,447.08093432269,457.17458061119,467.49637893146,478.0512162812,488.84407170063,499.88088374606,511.16658268681,522.70737825664],description:"Fokker's suggestion for a shrinked octave by averaging approximations"},fokker_bosch:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Scale of "Naar Den Bosch toe", genus diatonicum cum septimis. 1/1=D'},fokker_sr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,296.75121990114,305.22982618403,315.35224388912,325.57848126297,336.37572681506,347.28371334717,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,446.50763144636,461.31528248922,474.80195184183,490.54793493862,506.45541529795,523.2511306012],description:"Fokker's 7-limit sruti scale, KNAW B72, 1969"},fokker_sr2:{frequencies:[261.6255653006,270.30192333353,279.06726965397,288.32205155576,296.75121990114,306.59245933664,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,372.08969287196,381.53728273004,394.1903048614,406.97310157871,420.46965851882,434.10464168396,448.50096908674,461.31528248922,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Fokker's complementary 7-limit sruti scale, KNAW B72, 1969"},fokker_sra:{frequencies:[261.6255653006,269.76956886185,278.7476190342,287.42460593148,296.37169586701,305.59729331129,315.11006948887,325.59707150921,336.43308557971,346.90573279191,357.7043774887,368.83916960349,381.11429755927,392.97780480816,406.05627704035,419.57000893919,433.5334812886,447.02871783796,460.94403787128,475.29252052682,490.08765232515,506.39798251136,523.2511306012],description:"Two-step approximation 9-13 to Fokker's 7-limit sruti scale"},fokker_srb:{frequencies:[261.6255653006,269.31534001393,278.64197723942,286.83190328195,296.76515515861,305.48776291796,316.06708432391,325.35701999957,336.62443200122,346.51859521924,358.51885197895,369.0565423573,381.83730669135,393.06038214356,406.67242132093,418.62545783369,433.12283887627,445.85331391262,461.29362042034,474.85209942927,491.29666030217,505.73699464332,523.2511306012],description:"Two-step maximally even approximation 11-11 to Fokker's 7-limit sruti scale"},fokker_uv:{frequencies:[220,220.05029721079,220.09166666667,220.14198483463,220.15668113546,220.24841308594,220.29876708984,220.3905582428,220.5253936656,220.68244897959,220.7744,220.82487425697,220.98214285714,221.03266460905,221.0236875,221.07421875,221.28224372864,221.41762468656,221.66763848397,221.71831695641,221.76,221.81069958848,222.01040039062,222.06115722656,222.40609622534,222.44790857143,222.4987654321,222.65722615577,222.75,222.80092592593,223.00151824951,223.05250167847,223.14544022083,223.18896568405,223.23999196793,223.44097959184,223.49206349206,223.58518518519,223.79557291667,223.88882107205,224.18534499514,224.23659907493,224.33003099121,224.48979591837,224.58333333333,224.79466029576,224.83692169189,224.88832473755,225.18617242815,225.28,225.33150434385,225.49198250729,225.5859375,225.67993164062,225.9788277551,226.03049186753,226.28571428571,226.4317558299,226.68743133545,227.08224,227.1341563786,227.29591836735,227.390625,227.44261188272,228.096,228.14814814815,229.16666666667,231,232.03125,233.6237037037,233.84353741497],description:"Table of Unison Vectors, Microsons and Minisons, from article KNAW, 1969"},foote:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,492.17459484008,523.2511306012],description:"Ed Foote, piano temperament. TL 9 Jun 1999, almost equal to Coleman"},forster:{frequencies:[261.6255653006,279.06726965397,283.42769574232,287.78812183066,299.00064605783,309.19384990071,319.76457981184,327.03195662575,336.37572681506,340.11323489078,343.38355445704,353.19451315581,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,387.59343007496,392.4383479509,398.6675280771,402.50086969323,406.97310157871,418.60090448096,428.11456140098,441.49314144476,442.75095666255,448.50096908674,457.84473927605,465.11211608996,483.00104363188,490.54793493862,507.3950357345,523.2511306012],description:"Cris Forster's Chrysalis tuning, XH 7+8"},fortuna11:{frequencies:[261.6255653006,274.70684356563,299.00064605783,305.22982618403,332.97799220076,343.38355445704,373.75080757229,398.6675280771,411.12588832951,448.50096908674,457.84473927605,498.33441009638,523.2511306012],description:"11-limit scale from Clem Fortuna"},fortuna_a1:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,320.24370022528,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,479.82340237272,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or G major, superset of Basandida, trivalent"},fortuna_a2:{frequencies:[261.6255653006,277.18263097687,285.30470202322,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,428.11456140098,440,466.16376151809,493.88330125613,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or F minor"},fortuna_bag:{frequencies:[261.6255653006,266.17557513191,291.58269109838,303.42373253797,318.96815495553,348.01136516401,359.18086083642,388.55281975337,398.8194592997,432.92801877123,462.35552488468,479.64686971777,523.2511306012],description:"Bagpipe tuning from Fortuna, try key of G with F natural"},fortuna_eth:{frequencies:[261.6255653006,280.31310567921,288.69027895239,305.7551787248,323.91736656265,346.02090894595,368.95913055213,385.17097113699,414.24047839262,422.62591317789,469.58434797544,484.00729580611,523.2511306012],description:"Ethiopian Tunings from Fortuna"},fortuna_sheng:{frequencies:[261.6255653006,275.29257244317,286.94416839421,312.81317590289,320.2657782128,348.83408706747,367.19377586049,382.62738925213,417.81993264424,433.74764773521,467.75479856774,484.77678276288,523.2511306012],description:"Sheng scale on naturals starting on d, from Fortuna"},"francis_r12-14p":{frequencies:[261.6255653006,277.2273508585,293.19140419912,311.27759533081,328.56574776048,349.51003591412,369.636465861,391.67937618637,415.43871422078,438.93656251816,466.46466724696,492.84862139436,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cornet-ton"},"francis_r12-2":{frequencies:[261.6255653006,277.2831963903,293.15801965318,311.35818177599,328.6319369554,349.45847225471,369.71092870521,391.50168688506,415.45657533448,438.80025285527,466.56783666625,492.94847466277,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R12-2, fifths beat ratios 0, 1, 2. C=279.331 Cornet-ton"},"francis_r2-1":{frequencies:[261.6255653006,276.41735337657,293.40958958006,310.96959408698,328.77281747949,349.18425877583,368.55655650762,391.91325216238,414.62612565656,439.06418506387,465.92902003736,492.10921220871,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R2-1, fifths beat ratios 0, 1, 2. C=249.072 Cammerton"},"francis_r2-14p":{frequencies:[261.6255653006,276.42350693124,293.47533146651,310.97644498676,328.88393162803,349.17189700163,368.56467609256,392.05867944486,414.6352601896,439.36162975058,466.01338145177,492.37181018521,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cammerton"},francis_seal:{frequencies:[261.6255653006,275.89934348748,293.01242796531,310.38672525582,327.92787107993,349.18506556371,367.865749003,391.38524198103,413.84896721463,437.93907827641,465.58008765101,490.83740312498,523.2511306012],description:"J. Charles Francis, Bach tuning interpretion as beats/sec. from seal"},francis_suppig:{frequencies:[261.6255653006,276.33536163417,293.13939342657,310.64213412049,328.58201670643,349.47038191026,368.45885450371,391.47500324588,414.51381656966,438.73106346722,465.97531289569,491.91879926026,523.2511306012],description:"J. Charles Francis, Suppig Calculus musicus, 5ths beat ratios 0, 1, 2."},efg333:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,523.2511306012],description:"Genus primum [333]"},efg333333333337:{frequencies:[261.6255653006,275.01702890535,279.38237857051,289.72987407313,294.32876096318,309.39415751852,314.30517589183,325.94610833227,331.11985608357,343.38355445704,353.59332287831,366.6893718738,372.50983809402,386.30649876417,392.4383479509,412.52554335802,419.07356785577,434.59481110969,441.49314144476,457.84473927605,471.45776383774,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:"Genus [333333333337]"},efg333333355:{frequencies:[261.6255653006,264.89588486686,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.42486507835,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,397.34382730029,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Genus [333333355]"},efg33335:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Genus [33335]"},efg3333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Genus [3333555]"},efg33335555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Genus bis-ultra-chromaticum [33335555]"},efg333355577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,278.20426865732,279.06726965397,281.68182201554,284.8811711051,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,317.94773560837,320.49131749323,321.92208230347,325.57848126297,327.03195662575,333.84512238879,343.38355445704,348.83408706747,352.10227751942,356.10146388137,357.69120255941,360.55273217989,363.36884069528,366.27579142084,367.91095120397,372.08969287196,375.57576268738,381.53728273004,392.4383479509,400.61414686654,402.40260287934,406.97310157871,408.78994578219,412.06026534844,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,445.12682985172,450.69091522486,457.84473927605,459.88868900496,465.11211608996,469.46970335923,470.92601754108,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Genus [333355577]"},efg33337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,386.30649876417,392.4383479509,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33337]"},efg3335:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonicum veterum correctum [3335]"},efg33355:{frequencies:[261.6255653006,272.52663052146,290.69507255622,310.07474405997,327.03195662575,348.83408706747,363.36884069528,387.59343007496,408.78994578219,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Genus diatonico-chromaticum hodiernum correctum [33355]"},efg333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonico-hyperchromaticum [333555]"},efg33355555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,319.36714514233,327.03195662575,340.65828815182,348.83408706747,359.28803828513,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,425.82286018978,436.04260883433,459.88868900496,470.92601754108,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"Genus [33355555]"},efg333555777:{frequencies:[261.6255653006,262.79353657426,267.07609791103,268.26840191956,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,281.68182201554,286.15296204753,294.32876096318,299.00064605783,300.46061014991,305.22982618403,306.59245933664,311.45900631024,312.97980223949,313.95067836072,318.93402246168,320.49131749323,321.92208230347,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,350.39138209902,352.10227751942,357.69120255941,358.80077526939,360.55273217989,366.27579142084,367.91095120397,373.75080757229,375.57576268738,381.53728273004,392.4383479509,398.6675280771,400.61414686654,402.40260287934,408.78994578219,412.06026534844,417.30640298598,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,448.50096908674,450.69091522486,457.84473927605,459.88868900496,467.18850946536,469.46970335923,470.92601754108,476.92160341255,478.40103369253,480.73697623985,488.36772189445,490.54793493862,498.33441009638,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333555777]"},efg333557:{frequencies:[261.6255653006,265.7783520514,279.06726965397,280.31310567921,290.69507255622,299.00064605783,313.95067836072,318.93402246168,327.03195662575,332.22294006425,348.83408706747,358.80077526939,372.08969287196,373.75080757229,392.4383479509,398.6675280771,418.60090448096,425.24536328225,436.04260883433,448.50096908674,465.11211608996,478.40103369253,490.54793493862,498.33441009638,523.2511306012],description:"Genus diatonico-enharmonicum [333557]"},efg33357:{frequencies:[261.6255653006,274.70684356563,279.06726965397,305.22982618403,313.95067836072,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,406.97310157871,418.60090448096,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Genus diatonico-enharmonicum [33357]"},efg3335711:{frequencies:[261.6255653006,265.58571790036,269.80136421624,275.93321340298,286.15296204753,294.32876096318,295.09524211152,303.52653474327,314.76825825228,321.92208230347,327.03195662575,331.98214737546,337.2517052703,343.38355445704,354.11429053382,359.73515228832,367.91095120397,379.40816842909,386.30649876417,392.4383479509,393.46032281536,404.70204632437,429.2294430713,441.49314144476,442.64286316727,449.66894036041,457.84473927605,472.15238737843,482.88312345521,490.54793493862,505.87755790546,515.07533168556,523.2511306012],description:"Genus [3 3 3 5 7 11], expanded hexany 1 3 5 7 9 11"},efg333577:{frequencies:[261.6255653006,267.07609791103,281.68182201554,286.15296204753,294.32876096318,300.46061014991,305.22982618403,321.92208230347,327.03195662575,333.84512238879,343.38355445704,348.83408706747,367.91095120397,375.57576268738,381.53728273004,392.4383479509,400.61414686654,429.2294430713,436.04260883433,450.69091522486,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333577]"},efg3337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus [3337]"},efg33377:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33377] Bi-enharmonicum simplex"},efg335:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Genus secundum [335]"},efg3355:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Genus chromaticum veterum correctum [3355]"},efg33555:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,367.91095120397,392.4383479509,408.78994578219,418.60090448096,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Genus bichromaticum [33555]"},efg335555577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,320.49131749323,327.03195662575,333.84512238879,334.88072358477,341.85740532612,343.38355445704,348.83408706747,357.69120255941,366.27579142084,375.57576268738,381.53728273004,384.58958099188,390.69417751556,392.4383479509,400.61414686654,408.78994578219,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,446.50763144636,457.84473927605,469.46970335923,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,502.32108537715,512.78610798918,523.2511306012],description:"Genus [335555577]"},efg33557:{frequencies:[261.6255653006,274.70684356563,279.06726965397,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,429.2294430713,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Genus chromatico-enharmonicum [33557]"},efg335577:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Genus chromaticum septimis triplex [335577]"},efg3357:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,343.38355445704,348.83408706747,381.53728273004,392.4383479509,429.2294430713,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum vocale [3357]"},efg33577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,523.2511306012],description:"Genus [33577]"},efg337:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus quintum [337]"},efg3377:{frequencies:[261.6255653006,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [3377]"},efg33777:{frequencies:[261.6255653006,267.07609791103,299.00064605783,300.46061014991,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777]"},efg33777a:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777] with comma discarded which disappears in 31-tET"},efg355:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Genus tertium [355]"},efg3555:{frequencies:[261.6255653006,306.59245933664,327.03195662575,383.2405741708,392.4383479509,408.78994578219,490.54793493862,510.98743222773,523.2511306012],description:"Genus enharmonicum veterum correctum [3555]"},efg35555:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,334.88072358477,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Genus [35555]"},efg35557:{frequencies:[261.6255653006,268.26840191956,274.70684356563,286.15296204753,306.59245933664,313.95067836072,327.03195662575,343.38355445704,357.69120255941,366.27579142084,392.4383479509,408.78994578219,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus [35557]"},efg3557:{frequencies:[261.6255653006,274.70684356563,286.15296204753,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum instrumentale [3557]"},efg35577:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,358.80077526939,366.27579142084,373.75080757229,392.4383479509,418.60090448096,429.2294430713,448.50096908674,457.84473927605,478.40103369253,490.54793493862,523.2511306012],description:"Genus [35577]"},efg357:{frequencies:[261.6255653006,286.15296204753,327.03195662575,343.38355445704,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus sextum [357] & 7-limit Octony, see ch.6 p.118"},efg35711:{frequencies:[261.6255653006,269.80136421624,286.15296204753,295.09524211152,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,392.4383479509,393.46032281536,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,523.2511306012],description:"Genus [3 5 7 11]"},efg3571113:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.01701053212,278.99913799634,286.15296204753,292.28481123426,295.09524211152,314.76825825228,318.85615771011,319.68651228748,327.03195662575,337.2517052703,343.38355445704,348.74892249543,359.73515228832,365.35601404283,371.99885066179,383.62381474497,392.4383479509,393.46032281536,398.57019713763,425.14154361347,429.2294430713,438.4272168514,449.66894036041,457.84473927605,464.99856332724,472.15238737843,479.52976843121,490.54793493862,511.49841965996,523.2511306012],description:"Genus [3 5 7 11 13]"},efg3577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,429.2294430713,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Genus [3577]"},efg35777:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,300.46061014991,327.03195662575,343.38355445704,373.75080757229,375.57576268738,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777]"},efg35777a:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777] with comma discarded which disappears in 31-tET"},efg377:{frequencies:[261.6255653006,300.46061014991,343.38355445704,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus octavum [377]"},efg3777:{frequencies:[261.6255653006,262.90303388117,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus [3777]"},efg37777:{frequencies:[261.6255653006,262.90303388117,299.00064605783,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777]"},efg37777a:{frequencies:[261.6255653006,299.00064605783,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777] with comma discarded that disappears in 31-tET"},efg555:{frequencies:[261.6255653006,327.03195662575,408.78994578219,510.98743222773,523.2511306012],description:"Genus quartum [555]"},efg55557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [55557]"},efg5557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,408.78994578219,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [5557]"},efg55577:{frequencies:[261.6255653006,286.15296204753,291.99281841585,299.00064605783,327.03195662575,357.69120255941,373.75080757229,408.78994578219,447.11400319927,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"Genus [55577]"},efg557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Genus septimum [557]"},efg5577:{frequencies:[261.6255653006,293.02063313667,320.49131749323,334.88072358477,366.27579142084,400.61414686654,418.60090448096,457.84473927605,512.78610798918,523.2511306012],description:"Genus [5577]"},efg55777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,320.49131749323,327.03195662575,366.27579142084,373.75080757229,400.61414686654,418.60090448096,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"Genus [55777]"},efg577:{frequencies:[261.6255653006,286.15296204753,327.03195662575,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus nonum [577]"},efg5777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus [5777]"},efg57777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,350.53737850823,373.75080757229,400.61414686654,438.17172313528,457.84473927605,500.76768358318,523.2511306012],description:"Genus [57777]"},efg777:{frequencies:[261.6255653006,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus decimum [777]"},efg77777:{frequencies:[261.6255653006,299.00064605783,341.71502406609,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus [77777]"},eikohole1:{frequencies:[261.6255653006,277.4816601673,305.22982618403,332.97799220076,436.04260883433,475.68284600109,523.2511306012],description:"First eikohole ball <6 9 13 17 20|-epimorphic"},eikohole2:{frequencies:[261.6255653006,266.38239376061,274.70684356563,285.40970760065,299.68019298069,313.95067836072,332.97799220076,348.83408706747,366.27579142084,380.54627680087,392.4383479509,399.57359064092,418.60090448096,428.11456140098,443.97065626768,470.92601754108,488.36772189445,499.46698830115,523.2511306012],description:"Second eikohole ball"},eikohole4:{frequencies:[261.6255653006,274.70684356563,279.79400733536,287.78812183066,305.22982618403,313.95067836072,319.76457981184,335.75280880244,348.83408706747,359.73515228832,366.27579142084,373.05867644715,383.71749577421,392.4383479509,406.97310157871,418.60090448096,419.69101100305,431.68218274599,447.67041173658,457.84473927605,470.92601754108,479.64686971777,488.36772189445,503.62921320365,523.2511306012],description:"Fourth eikohole ball"},eikohole5:{frequencies:[261.6255653006,266.38239376061,274.70684356563,279.06726965397,285.40970760065,287.78812183066,294.32876096318,295.98043751179,299.68019298069,305.22982618403,313.95067836072,321.08592105074,325.57848126297,332.97799220076,342.49164912079,348.83408706747,353.19451315581,355.17652501415,363.24871876447,366.27579142084,374.60024122586,380.54627680087,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Fifth eikohole ball"},eikohole6:{frequencies:[261.6255653006,266.38239376061,272.43653907335,274.70684356563,279.06726965397,285.40970760065,287.78812183066,293.02063313667,294.32876096318,295.98043751179,299.00064605783,299.68019298069,305.22982618403,310.77945938738,313.95067836072,317.12189733406,321.08592105074,325.57848126297,329.64821227876,332.97799220076,336.37572681506,342.49164912079,348.83408706747,349.6268918108,353.19451315581,355.17652501415,356.76213450082,363.24871876447,366.27579142084,374.60024122586,380.54627680087,383.71749577421,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,431.68218274599,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,484.33162501929,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Sixth eikohole ball"},eikosany:{frequencies:[261.6255653006,269.80136421624,274.70684356563,287.78812183066,294.32876096318,305.22982618403,323.76163705949,335.75280880244,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,412.06026534844,419.69101100305,431.68218274599,457.84473927605,470.92601754108,479.64686971777,503.62921320365,523.2511306012],description:"3)6 1.3.5.7.9.11 Eikosany (1.3.5 tonic)"},ekring1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,376.74081403286,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Single-tie circular mirroring of 3:4:5"},ekring2:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,384.42940207435,400.61414686654,448.50096908674,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Single-tie circular mirroring of 6:7:8"},ekring3:{frequencies:[261.6255653006,266.96486255163,299.00064605783,305.10270005901,327.03195662575,333.70607818954,341.71502406609,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,523.2511306012],description:"Single-tie circular mirroring of 4:5:7"},ekring4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,376.74081403286,392.4383479509,401.85686830172,436.04260883433,446.50763144636,465.11211608996,502.32108537715,523.2511306012],description:"Single-tie circular mirroring of 4:5:6"},ekring5:{frequencies:[261.6255653006,263.718569823,269.10058145205,305.22982618403,322.92069774245,366.27579142084,373.75080757229,376.74081403286,384.42940207435,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Single-tie circular mirroring of 3:5:7"},ekring5bp:{frequencies:[261.6255653006,282.55561052465,336.37572681506,363.28578496026,366.27579142084,395.57785473451,432.48307733364,512.78610798918,560.62621135843,605.4763082671,610.45965236807,659.29642455751,784.8766959018],description:"Single-tie BP circular mirroring of 3:5:7"},ekring6:{frequencies:[261.6255653006,288.32205155576,299.00064605783,336.37572681506,348.83408706747,384.42940207435,392.4383479509,406.97310157871,432.48307733364,465.11211608996,494.26637409559,512.57253609913,523.2511306012],description:"Single-tie circular mirroring of 6:7:9"},ekring7:{frequencies:[261.6255653006,266.96486255163,290.69507255622,296.62762505737,322.99452506247,336.37572681506,343.24053756638,406.97310157871,415.27867508032,432.48307733364,470.92601754108,480.53675259294,523.2511306012],description:"Single-tie circular mirroring of 5:7:9"},ekring7bp:{frequencies:[261.6255653006,311.45900631024,336.37572681506,400.44729382745,432.48307733364,436.04260883433,470.92601754108,514.86080634958,610.45965236807,667.41215637908,720.80512888941,726.73768139056,784.8766959018],description:"Single-tie BP circular mirroring of 5:7:9"},ellis:{frequencies:[261.6255653006,277.10015133873,293.57875905702,310.98767008297,329.52610437773,349.11112716429,369.96685849926,391.93834696391,415.15022554673,439.86813926913,465.98150356841,493.78915701915,523.2511306012],description:"Alexander John Ellis' imitation equal temperament (1875)"},ellis_24:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,294.32876096318,298.00787047521,306.59245933664,310.42486507835,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,397.34382730029,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,523.2511306012],description:"Ellis, from p.421 of Helmholtz, 24 tones of JI for 1 manual harmonium"},ellis_eb:{frequencies:[261.6255653006,277.21587437848,293.6537610003,311.19285946782,329.68548178616,349.2169654334,370.02116610622,391.93834696391,415.32381240723,439.98064151826,466.28928903228,494.02822100775,523.2511306012],description:"Ellis' new equal beating temperament for pianofortes (1885)"},ellis_harm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Just Harmonium"},ellis_mteb:{frequencies:[261.6255653006,273.31920907322,292.34465012884,313.05587813274,326.9349299255,350.18846153218,365.78692922515,391.15004079048,408.78346942429,437.23842445073,468.2723780569,489.17031487243,523.2511306012],description:"Ellis' equal beating meantone tuning (1885)"},enh14:{frequencies:[261.6255653006,267.70988077271,274.08392555301,348.83408706747,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"14/11 Enharmonic"},enh15:{frequencies:[261.6255653006,270.64713651786,280.31310567921,356.76213450082,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Tonos-15 Enharmonic"},enh15_inv:{frequencies:[261.6255653006,331.39238271409,340.11323489078,348.83408706747,383.71749577421,488.36772189445,505.80942624783,523.2511306012],description:"Inverted Enharmonic Tonos-15 Harmonia"},enh15_inv2:{frequencies:[261.6255653006,270.34641747729,279.06726965397,348.83408706747,383.71749577421,392.4383479509,401.15920012759,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-15"},enh17:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,404.33041910093,413.73345210327,423.58424858192,523.2511306012],description:"Tonos-17 Enharmonic"},enh17_con:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,378.52209447746,386.75083566176,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Enharmonic"},enh19:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,382.37582620857,389.87339142835,397.67085925691,523.2511306012],description:"Tonos-19 Enharmonic"},enh19_con:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,361.51896296083,368.21375857121,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Enharmonic"},enh2:{frequencies:[261.6255653006,266.71168334607,277.18263097687,349.22823143301,391.99543598175,399.61600264311,415.30469757995,523.2511306012],description:"1:2 Enharmonic. New genus 2 + 4 + 24 parts"},enh21:{frequencies:[261.6255653006,268.0066766494,274.70684356563,343.38355445704,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Tonos-21 Enharmonic"},enh21_inv:{frequencies:[261.6255653006,336.37572681506,342.60490694126,348.83408706747,398.6675280771,498.33441009638,510.79277034879,523.2511306012],description:"Inverted Enharmonic Tonos-21 Harmonia"},enh21_inv2:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,398.6675280771,411.12588832951,423.58424858192,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-21"},enh23:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,376.08675011961,388.21858076863,401.15920012759,523.2511306012],description:"Tonos-23 Enharmonic"},enh23_con:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,343.8507429665,353.96400011258,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Enharmonic"},enh25:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,408.78994578219,421.97671822677,436.04260883433,523.2511306012],description:"Tonos-25 Enharmonic"},enh25_con:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,373.75080757229,384.74347838324,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Enharmonic"},enh27:{frequencies:[261.6255653006,269.10058145205,277.01530443593,353.19451315581,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Tonos-27 Enharmonic"},enh27_inv:{frequencies:[261.6255653006,329.45441556372,339.14425131559,348.83408706747,387.59343007496,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Enharmonic Tonos-27 Harmonia"},enh27_inv2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,387.59343007496,397.28326582684,406.97310157871,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-27"},enh29:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,379.35706968587,389.08417403679,399.32323124828,523.2511306012],description:"Tonos-29 Enharmonic"},enh29_con:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,352.8902973822,361.29244731988,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Enharmonic"},enh31:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,368.65420565085,377.22755927063,386.2091678247,523.2511306012],description:"Tonos-31 Enharmonic. Tone 24 alternates with 23 as MESE or A"},enh31_con:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,360.46188996972,368.65420565085,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Enharmonic"},enh33:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"Tonos-33 Enharmonic"},enh33_con:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,367.38909169871,375.37581108347,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Enharmonic"},enh_invcon:{frequencies:[261.6255653006,283.42769574232,370.63621750918,381.53728273004,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Enharmonic Conjunct Phrygian Harmonia"},enh_mod:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Enharmonic After Wilson's Purvi Modulations, See page 111"},enh_perm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Permuted Enharmonic, After Wilson's Marwa Permutations, See page 110."},enn45ji:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.92069774245,329.64821227876,336.37572681506,339.14425131559,346.06556256693,348.83408706747,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,392.4383479509,395.57785473451,403.65087217807,406.97310157871,415.27867508032,423.93031414449,427.32175665765,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.78610798918,523.2511306012],description:"Detempered Ennealimma[45], Hahn reduced"},enn72synch:{frequencies:[195.99771799087,197.54967854522,199.11392792408,201.62391554947,203.22042578925,204.82957760946,207.41161549338,209.05395423619,211.68924370912,213.36545381699,215.05493658943,217.76587316352,219.49019959291,221.22817968434,224.01693484168,225.790758792,228.63703016722,230.44743589451,232.27217821307,235.20015301436,237.06252857463,238.93964952543,241.95167308427,243.86750892427,246.94165062806,248.89699839908,250.8678291188,254.03021536301,256.04169222048,258.06909647124,261.3222603528,263.39147750593,266.71173418544,268.8236265844,270.95224149283,274.36780754746,276.54032271274,278.73004041423,282.24365173996,284.47852987378,288.0646054292,290.34557537779,292.64460663558,296.33362372129,298.68006816723,301.0450940916,304.84000597616,307.25380610435,311.12698372207,313.59056753865,316.0736586482,320.05801564518,322.59231767928,325.14668697146,329.24541662461,331.85246687263,336.03572815421,338.69654584276,341.37843257302,345.68177614255,348.4189737305,351.17784515594,355.60471802638,358.42048803112,362.93866010991,365.81250216232,368.70910003837,373.35696816148,376.31330506793,379.29305101359,384.07434037944,387.11553797119,391.99543598174],description:"Poptimal synchonized beating ennealimmal tuning, TM 10-10-2005"},ennea45:{frequencies:[261.6255653006,267.02028728287,269.13615104392,274.68574138534,276.8623300691,282.57123430547,288.39787286736,290.68311542614,296.67700440585,299.02785016604,305.1938252949,311.48692526882,313.95512370264,320.42888174436,322.96795420876,329.62755691287,336.42448069667,339.09030198792,346.08234767737,348.824677577,356.01744619623,363.3585507705,366.23777597441,373.78960287068,376.751482929,384.52012478698,392.44893391322,395.5586690753,403.715093104,406.91412394911,415.30469757995,423.86828492968,427.22700928979,436.03643483576,439.49155400205,448.55387459245,457.80308677504,461.43068321685,470.94538888861,474.67712392136,484.46499932732,494.45467284607,498.37269363637,508.649143962,512.67967026301,523.2511306012],description:"Ennealimmal-45, in a 7-limit least-squares tuning, g=48.999, G.W. Smith"},epimore_enh:{frequencies:[261.6255653006,265.11390617127,279.06726965397,348.83408706747,392.4383479509,397.67085925691,418.60090448096,523.2511306012],description:"New Epimoric Enharmonic, Dorian mode of the 4th new Enharmonic on Hofmann's list"},eratos_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Dorian mode of Eratosthenes's Chromatic. same as Ptol. Intense Chromatic"},eratos_diat:{frequencies:[261.6255653006,275.62199471997,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Dorian mode of Eratosthenes's Diatonic, Pythagorean"},eratos_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Dorian mode of Eratosthenes's Enharmonic"},erlangen:{frequencies:[261.6255653006,275.62199471997,293.99679436797,310.07474405997,327.03195662575,348.83408706747,367.49599295996,392.4383479509,413.43299207996,440.99519155196,465.11211608996,490.54793493862,523.2511306012],description:"Anonymus: Pro clavichordiis faciendis, Erlangen 15th century"},erlangen2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Revised Erlangen"},erlich1:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,433.12277132725,461.29357245868,491.2966347616,523.2511306012],description:"Asymmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich10:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Canonical JI interpretation of the Pentachordal decatonic mode of 22-tET"},erlich10s1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Superparticular version of erlich10 using 50/49 decatonic comma"},erlich10s2:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Other superparticular version of erlich10 using 50/49 decatonic comma"},erlich11:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Canonical JI interpretation of the Symmetrical decatonic mode of 22-tET"},erlich11s1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Superparticular version of erlich11 using 50/49 decatonic comma"},erlich11s2:{frequencies:[261.6255653006,280.31310567921,305.22982618403,311.45900631024,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other superparticular version of erlich11 using 50/49 decatonic comma"},erlich12:{frequencies:[261.6255653006,267.01308914069,282.57123920205,288.39008844866,305.19382000629,311.47852302926,329.62755691287,336.41541160581,356.01745236555,363.34874301751,384.52011812375,392.4383479509,415.30469757995,423.85685859121,448.5538823653,457.7907297806,484.46499093218,494.44133512215,523.2511306012],description:"Two 9-tET scales 3/2 shifted, Paul Erlich, TL 5-12-2001"},erlich13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Just scale by Paul Erlich (2002)"},erlich2:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,476.05893615592,523.2511306012],description:"Asymmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich3:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,419.68935090103,461.29357245868,491.2966347616,523.2511306012],description:"Symmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich4:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,491.2966347616,523.2511306012],description:"Symmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich5:{frequencies:[261.6255653006,269.33066959279,278.10477655849,287.16472157287,295.62197660533,306.17967660611,315.19693888202,326.45372959864,335.05049156411,348.07025322573,357.23626005287,368.87410717392,380.89108570115,393.29954676976,406.11224388345,419.34234602259,433.00345117936,444.40607048653,461.67529188567,473.83294924974,490.75518955849,505.2083639382,523.2511306012],description:"Unequal 22-note compromise between decatonic & Indian srutis, Paul Erlich"},erlich6:{frequencies:[261.6255653006,274.70684356563,280.31310567921,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Scale of consonant tones against 1/1-3/2 drone. TL 23-9-1998"},erlich7:{frequencies:[261.6255653006,272.64118737561,277.98432293805,281.84855879469,292.47977325983,303.51199286577,307.73108663824,313.76190292287,326.97270111135,337.05955506058,340.85784563832,350.05627231138,365.1325261687,373.60234843661,378.13992750117,391.18115131013,406.9458559663,413.62886206386,420.42161880722,437.36472209676,452.44848028305,457.94368329907,468.56640608675,488.7466646507,501.93603498211,507.59230220159,523.2511306012],description:"Meantone-like circle of sinuoidally varying fifths, TL 08-12-99"},erlich8:{frequencies:[261.6255653006,263.902226729,277.18263097687,279.59466973861,293.66476791741,296.22023396764,311.12698372208,313.83440569119,329.62755691287,332.49597057,349.22823143301,352.26720984209,369.99442271164,373.21410818061,391.99543598175,395.40657391157,415.30469757995,418.91867232636,440,443.82887286778,466.16376151809,470.22031101449,493.88330125613,498.18106573801,523.2511306012],description:"Two 12-tET scales 15 cents shifted, Paul Erlich"},erlich9:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,302.70726563706,308.34441624714,319.76457981184,332.97799220076,345.34574619679,356.76213450082,369.97554688974,383.71749577421,396.40237166758,411.12588832951,428.11456140098,436.04260883433,452.23847716247,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"11-limit periodicity block, u.v.: 9801/9800 243/242 126/125 100/99"},erlich_bpf:{frequencies:[261.6255653006,269.93113880221,277.4816601673,282.55561052465,293.6613488068,301.87565226992,311.45900631024,319.76457981184,328.70904358281,336.37572681506,347.05432131712,356.76213450082,366.27579142084,377.90359432309,388.47432423422,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,591.67627844905,610.45965236807,624.69777837082,642.17184210147,659.29642455751,680.22646978156,699.2537836216,726.73768139056,740.02659899313,760.72664372021,784.8766959018],description:"Erlich's 39-tone Triple Bohlen-Pierce scale"},erlich_bpp:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.6613488068,299.68019298069,311.45900631024,319.76457981184,323.65460841914,336.37572681506,345.34574619679,356.76213450082,366.27579142084,380.67211882362,385.30310526088,400.44729382745,411.12588832951,419.55227017296,436.04260883433,447.67041173658,458.69417292962,470.92601754108,489.43558134466,499.46698830115,512.78610798918,528.59042785223,539.42434736524,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.27431887171,642.17184210147,659.29642455751,685.20981388252,699.2537836216,720.80512888941,740.02659899313,764.49028821604,784.8766959018],description:"Periodicity block for erlich_bpf, 1625/1617 1331/1323 275/273 245/243"},erlich_bpp2:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.92501780685,299.68019298069,311.45900631024,319.76457981184,326.02570445152,336.37572681506,345.34574619679,356.76213450082,366.27579142084,377.90359432309,385.30310526088,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.83932387181,642.17184210147,659.29642455751,685.20981388252,698.62650953896,726.73768139056,740.02659899313,764.49028821604,784.8766959018],description:"Improved shape for erlich_bpp"},erlich_bppe:{frequencies:[261.6255653006,269.03526454087,276.77324548748,284.61195549492,292.79795257063,301.09050901183,309.7504615497,318.52314490095,327.68449417797,337.10934179701,346.6568752383,356.62740568226,366.72772736951,377.27553481706,387.96064596243,399.11915372018,410.59860200806,422.22748385656,434.37157296247,446.67374500165,459.5209564409,472.53540627884,486.12644973042,499.89441151621,514.27235352402,529.06383329425,544.0478609495,559.69574261012,575.54731703113,592.10118472076,608.870542156,626.38285104305,644.39884822068,662.64936456684,681.70845767885,701.01565227402,721.17823493702,741.60327945962,762.93324174612,784.8766959018],description:"LS optimal 3:5:7:11:13 tempering, virtually equal, g=780.2702 cents"},erlich_bppm:{frequencies:[261.6255653006,269.3148593258,276.83859227209,284.97500405989,292.93622770824,301.54575630263,309.96990811138,319.08006614158,327.99406628962,337.15709295818,347.06629484351,356.76213450082,367.24753706379,377.50717076432,388.60227773252,399.45849178361,410.61798882758,422.6862401977,434.49464068244,447.26463523836,459.75967424319,473.27221959449,486.49381977384,500.79209531182,514.78250488433,529.16376146212,544.7161244152,559.93362036345,576.39032675477,592.49269103014,609.9063234692,626.94500947499,644.45969779399,663.40066444061,681.93379843592,701.97614206495,721.5869464624,742.79471409673,763.54584931731,784.8766959018],description:"MM optimal 3:5:7:11:13 tempering, g=780.352 cents"},erlich_paj:{frequencies:[261.6255653006,269.74106841426,278.59741216196,287.23937405609,296.67040683594,305.87298460253,315.91563888094,325.71519477697,336.4093235789,346.84458402385,358.23265591403,369.99442271164,381.47147728046,393.99623872149,406.21781843768,419.55531290213,432.56972318844,446.77218107119,460.63084592459,475.75462791404,490.51231476219,506.61748047856,523.2511306012],description:"Erlich's Pajara or Twintone, with RMS optimal generator"},erlich_paj2:{frequencies:[261.6255653006,270.25447814202,278.68577354399,287.87753105276,296.85845221806,306.64959036092,316.21614384055,326.645747324,336.83612131731,347.94582350257,358.80069640371,369.99442271164,382.1975482805,394.12120058634,407.1203087173,419.82124923186,433.66800958456,447.19715926063,461.9468459571,476.35821106408,492.06970256841,507.42081104304,523.2511306012],description:"Erlich's Pajara or Twintone with minimax optimal generator"},escapade:{frequencies:[261.6255653006,270.11362843741,278.8770761192,287.9248395776,297.26614463769,306.91051483225,316.86778450163,327.1481015562,337.76194863153,348.72014864112,360.03386958939,371.71464785337,383.77439429365,392.56657056143,405.30282760495,418.45229174958,432.02837124332,446.04490958069,460.51619165905,475.45697355792,490.88248752006,506.80846290374,523.2511306012],description:"Escapade temperament, g=55.275493, 5-limit"},"et-mix6":{frequencies:[261.6255653006,293.66476791741,300.52885648597,311.12698372208,329.62755691287,345.21700307457,369.99442271164,396.55020354877,415.30469757995,440,455.51656649021,466.16376151809,523.2511306012],description:"Mix of equal temperaments from 1-6 (= 4-6)"},euler:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Euler's Monochord (a mode of Ellis's duodene) (1739), genus [33355]"},euler20:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,489.33808574423,509.07699553894,513.57043963064,523.2511306012],description:"Genus [3333555] tempered by 225/224-planar"},euler24:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,308.1508239679,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,384.70789368407,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,480.28481865546,489.33808574423,493.65730140218,509.07699553894,513.57043963064,523.2511306012],description:"Genus [33333555] tempered by 225/224-planar"},euler_diat:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Euler's genus diatonicum veterum correctum"},euler_enh:{frequencies:[261.6255653006,267.90457886781,275.62199471997,348.83408706747,392.4383479509,401.85686830172,413.43299207996,523.2511306012],description:"Euler's Old Enharmonic, From Tentamen Novae Theoriae Musicae"},euler_gm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,348.83408706747,361.75386806997,372.08969287196,385.87079260796,523.2511306012],description:"Euler's Genus Musicum, Octony based on Archytas's Enharmonic"},exptriad2:{frequencies:[261.6255653006,306.59245933664,327.03195662575,367.91095120397,392.4383479509,459.88868900496,490.54793493862,523.2511306012],description:"Two times expanded major triad"},exptriad3:{frequencies:[261.6255653006,269.46602871384,275.93321340298,279.06726965397,287.4304306281,294.32876096318,297.67175429757,303.14928230307,306.59245933664,313.95067836072,323.35923445661,327.03195662575,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,378.93660287884,383.2405741708,392.4383479509,404.19904307077,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,490.54793493862,505.24880383846,517.37477513058,523.2511306012],description:"Three times expanded major triad"},iivv17:{frequencies:[261.6255653006,269.80136421624,277.97716313189,283.42769574232,294.32876096318,305.22982618403,318.85615771011,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,370.63621750918,392.4383479509,416.96574469783,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"17-limit IIVV"},"indian-ayyar":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Carnatic sruti system, C.Subrahmanya Ayyar, 1976. alt:21/20 25/16 63/40 40/21"},"indian-dk":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,465.11211608996,523.2511306012],description:"Raga Darbari Kanada"},"indian-ellis":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,367.68998366571,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Ellis's Indian Chromatic, theoretical #74 of App.XX, p.517 of Helmholtz"},"indian-hahn":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Indian shrutis Paul Hahn proposal"},"indian-hrdaya1":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,328.55303549378,348.83408706747,375.07381928051,392.4383479509,428.11456140098,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Bhatkande's interpretation"},"indian-hrdaya2":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,330.47439827444,348.83408706747,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Levy's interpretation"},"indian-invrot":{frequencies:[261.6255653006,267.90457886781,279.06726965397,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Inverted and rotated North Indian gamut"},"indian-magrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Ma-grama (Sa Ri Ga Ma Pa Dha Ni Sa)"},"indian-newbengali":{frequencies:[261.6255653006,269.13627541126,277.02257024271,285.46954808622,294.32876096318,303.84527498141,313.95067836072,324.71413568646,336.35938765066,348.83408706747,358.01090280364,367.91095120397,377.98706287655,388.6137256405,400.23209335925,412.19781491431,425.25755219187,438.98455767189,453.41648894489,469.13512554326,485.39868175205,503.9696508909,523.2511306012],description:"Modern Bengali scale,S.M. Tagore: The mus. scales of the Hindus,Calcutta 1884"},"indian-old2ellis":{frequencies:[261.6255653006,270.06509966514,277.97716313189,285.40970760065,294.32876096318,305.22982618403,316.13089140489,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,415.52295665389,428.11456140098,441.49314144476,457.84473927605,474.19633710734,490.54793493862,505.80942624783,523.2511306012],description:"Ellis Old Indian Chrom2, Helmholtz, p. 517. This is a 4 cent appr. to #73"},"indian-oldellis":{frequencies:[261.6255653006,269.44737349144,277.4816601673,285.79952600623,294.32876096318,304.84150796353,315.71315096976,327.03195662575,337.72216249472,348.83408706747,359.25382662183,369.99442271164,381.0561299374,392.4383479509,404.18156579781,416.22249025095,428.71043212875,441.49314144476,457.27414749797,473.58203588493,490.54793493862,506.59641128799,523.2511306012],description:"Ellis Old Indian Chromatic, Helmholtz, p. 517. This is a 0.5 cent appr. to #73"},"indian-raja":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:"A folk scale from Rajasthan, India"},"indian-sagrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Sa-grama (Sa Ri Ga Ma Pa Dha Ni Sa), inverse of Didymus' diatonic"},"indian-srutiharm":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"B. Chaitanya Deva's sruti harmonium. The Music of India, 1981, p. 109"},"indian-srutivina":{frequencies:[261.6255653006,268.56758546278,278.98051393788,288.52577197574,297.52863491406,305.33829130574,314.01573591759,327.57422802312,336.57725592546,350.35262131413,358.2707318239,366.40588882483,378.77125721528,394.82459335461,403.28512412878,416.95215854696,428.77531684666,444.28620821491,453.93981227417,469.5594057965,487.34812384257,504.37765306036,529.32520658991],description:"Raja S.M. Tagore's sruti vina, measured by Ellis and Hipkins, 1886. 1/1=241.2"},"indian-srutivina2":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"S. Ramanathan's sruti vina, 1973. In B.C. Deva, The Music of India, p. 110"},"indian-vina":{frequencies:[261.6255653006,276.70272600503,292.81785438923,313.29104303136,329.05685050583,352.26720984209,369.14054089803,390.18821123181,411.0090584005,435.70052664441,465.35666077712,491.60634075178,525.37110555681],description:"Observed South Indian tuning of a vina, Ellis"},"indian-vina2":{frequencies:[261.6255653006,277.02257024271,292.81785438923,308.97787266236,326.21810583671,344.81842302716,363.84824628932,386.37547528213,409.11417474979,432.19134773437,455.25352578019,480.93331155807,507.76825077597,539.82938999168,571.59905201246,602.44805673853,637.90290877605,678.5727631795,715.19510239543,756.4109196702,799.53998816902,846.10508618474,890.73947019126,943.16064703194,1001.55531043729],description:"Observed tuning of old vina in Tanjore Palace, Ellis and Hipkins. 1/1=210.7 Hz"},"indian-vina3":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Tuning of K.S. Subramanian's vina (1983)"},indian:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale"},indian2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale with tritone 64/45 schisma lower (Mr.Devarajan, Madurai)"},indian2_sm:{frequencies:[261.6255653006,275.80107697063,279.12844116922,290.7446524607,294.25230137258,310.19560923413,313.9379197281,327.00276442799,330.9478443499,348.87940629173,353.08841191408,367.78254402461,372.21960384438,392.38737044642,413.64787586584,418.63827382983,436.06032987759,441.3211172644,465.23297251763,470.84571179248,490.44043044945,496.35728163707,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 289-equal (schismic) temperament"},indian3:{frequencies:[261.6255653006,270.06509966514,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"Indian shruti scale with 32/31 and 31/16 and tritone schisma lower"},indian4:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"Indian shruti scale according to Firoze Framjee: Text book of Indian music"},indian5:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"23 Shrutis, Amit Mitra, 1/1 no. 12:2, Table C."},indian6:{frequencies:[146.8323839587,148.66778875818,150.35636117371,151.0621234143,152.23581568838,152.95039995698,154.68761437624,154.86227995644,156.62120955595,158.5789746754,159.32333328852,163.14709328744,165.18643195354,167.06262352634,169.15090632042,169.94488884109,172.0691999516,174.02356617327,176.19886075044,178.40134650982,179.23874994958,180.42763340845,181.27454809716,183.54047994838,185.62513725149,185.83473594773,187.94545146714,188.82765426788,190.29476961048,191.18799994622,193.3595179703,193.57784994555,195.77651194493,198.22371834425,200.47514823161,202.98108758451,203.93386660931,206.48303994192,208.82827940793,209.0640779412,211.43863290053,212.43111105136,214.08161581178,215.0864999395,217.52945771659,220.24857593805,223.00168313728,225.53454176056,226.59318512145,228.35372353257,229.42559993547,232.03142156437,232.29341993466,234.93181433392,237.86846201309,238.98499993278,240.57017787793,241.69939746288,244.72063993117,247.77964793031,250.59393528951,253.72635948063,254.91733326163,258.1037999274,261.03534925991,264.29829112566,267.60201976473,270.64145011268,271.91182214574,275.31071992256,278.43770587724,278.75210392159,281.9181772007,283.24148140181,285.44215441571,286.78199991934,290.03927695546,293.6647679174],description:"Shrutis calculated by generation method, Amit Mitra, 1/1 no. 12:2, Table B."},indian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"North Indian Gamut, modern Hindustani gamut out of 22 or more shrutis"},indian_12c:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"Carnatic gamut. Kuppuswami: Carnatic music and the Tamils, p. v"},indian_a:{frequencies:[261.6255653006,290.79521372391,318.76727400207,355.94891173479,388.6137256405,432.69092326853,486.52148746092,523.2511306012],description:"One observed indian mode"},indian_b:{frequencies:[261.6255653006,290.79521372391,305.95868600104,356.15457528086,388.83826257328,432.94092754357,461.60862817266,523.2511306012],description:"Observed Indian mode"},indian_c:{frequencies:[261.6255653006,278.94941459687,313.65318017499,356.15457528086,388.83826257328,422.07621250312,470.76384471612,523.2511306012],description:"Observed Indian mode"},indian_d:{frequencies:[261.6255653006,289.28740724512,320.24370022528,344.61930560862,391.31674786192,442.03793673691,485.39868175205,523.2511306012],description:"Indian D (Ellis, correct)"},indian_e:{frequencies:[261.6255653006,275.58617649731,323.21709932123,347.81902735497,393.58362272115,410.77171881178,488.21056770985,523.2511306012],description:"Observed Indian mode"},indian_g:{frequencies:[261.6255653006,275.48458755707,279.57748987366,290.07776015425,294.38747470873,309.98198497505,314.58741860623,326.40257913196,331.25197518754,348.79929894143,353.98144532328,367.27615246113,372.73281132023,392.47748849606,413.26809526256,419.40806105693,435.16003737285,441.62525396027,465.0193523796,471.92819182319,489.65270022124,496.92751979948,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 94-et (garibaldi) temperament"},indian_rat:{frequencies:[261.6255653006,269.55361273395,277.4816601673,285.40970760065,294.32876096318,302.93486508491,315.75499260417,327.03195662575,337.58137458142,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,416.22249025095,428.77523202043,441.49314144476,457.84473927605,473.41768959156,490.54793493862,506.37206187213,523.2511306012],description:"Indian Raga, From Fortuna, after Helmholtz, ratios by JC"},indian_rot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,510.98743222773,523.2511306012],description:"Rotated North Indian Gamut"},ionic:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ancient greek Ionic"},iran_diat:{frequencies:[261.6255653006,297.21429859784,337.6441411202,347.13660997509,394.35734781054,448.00148789644,460.59652406882,523.2511306012],description:"Iranian Diatonic from Dariush Anooshfar, Safi-a-ddin Armavi's scale from 125 ET"},iraq:{frequencies:[261.6255653006,290.3675288125,326.6631048533,348.83408706747,387.1561215731,435.55129321875,465.11211608996,516.20736538157,523.2511306012],description:"Iraq 8-tone scale, Ellis"},isfahan_5:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,523.2511306012],description:"Isfahan (IG #2, DF #8), from Rouanet"},islamic:{frequencies:[261.6255653006,283.42769574232,305.22982618403,330.6656450327,348.83408706747,523.2511306012],description:"Islamic Genus (DF#7), from Rouanet"},italian:{frequencies:[261.6255653006,274.68983337859,292.34127285051,309.02606224197,326.6631048533,348.44038788768,366.66693712906,391.11111150212,411.56972129721,437.02884834934,464.06284405662,489.44164088633,523.2511306012],description:"Italian organ temperament, G.C. Klop (1974), 1/12 P.comma, also d'Alembert/Rousseau (1752/67)"},iter1:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,631.61998662719],description:"McLaren style, IE= 2.414214, PD=5, SD=0"},iter10:{frequencies:[261.6255653006,277.06070189651,293.38358189778,297.59908052943,301.91391280887,310.68035879446,328.97472072452,338.5155215149,348.35227203008,368.89204707385,413.65123162392,438.0707139917,463.89070822207,520.1365405381,535.27989222422,550.79066379074,583.29634230953,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter11:{frequencies:[261.6255653006,278.87608544381,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #2"},iter12:{frequencies:[261.6255653006,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #4"},iter13:{frequencies:[261.6255653006,297.26403435806,337.75715313333,383.76621672426,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #6"},iter14:{frequencies:[261.6255653006,280.22072913446,300.13755324878,344.3186075731,368.79121945838,395.0032340925,453.14877154631,519.85349135637,596.37732215892,638.76512932755,684.16567043124,784.8766959018],description:"Binary Divided 3/1 Scale #2"},iter15:{frequencies:[261.6255653006,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale"},iter16:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale 4+2"},iter17:{frequencies:[261.6255653006,278.49896488475,296.46060526524,301.12918013362,305.87127435301,315.58067012184,335.93387506143,346.5975621448,357.59974896504,380.66295170881,431.34763334053,459.16716607109,488.78090454553,553.8613271114,571.44277158458,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #2"},iter18:{frequencies:[261.6255653006,296.46060526524,335.93387506143,357.59974896504,380.66295170881,431.34763334053,488.78090454553,553.8613271114,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #4"},iter19:{frequencies:[261.6255653006,322.51878830959,331.06584352035,339.83940187549,358.09020513941,397.58488163802,418.936859706,441.43552612833,490.12256936272,604.19836236377,670.83693141722,744.82523718317,918.18295398723,967.49323514067,1019.45167961503,1131.88958971281,1395.33634826987],description:"Binary Kidjel Ratio scale #2, IE=16/3"},iter2:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,466.76379263857,529.06503205232,631.63886479716],description:"Iterated 1 + SQR(2) Scale, IE=2.414214, PD=5, SD=1"},iter20:{frequencies:[261.6255653006,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale #2"},iter21:{frequencies:[261.6255653006,265.58958666715,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale 5+2 #2"},iter22:{frequencies:[261.6255653006,301.8727519909,307.3207469799,312.86706369289,324.26179396336,348.311367392,360.99698978488,374.14462916403,401.89387036212,463.7192413329,498.11197631533,535.05552246568,617.36582527423,639.85050556571,663.15408964479,712.33833913185,821.92095613931],description:"Binary PI Scale #2"},iter23:{frequencies:[261.6255653006,280.22072913446,282.63618845904,285.07246866924,290.00821285991,300.13755151512,305.33413252207,310.62068712289,321.46997343155,344.3186075731,356.34488692223,368.79121945838,395.00323181087,401.84231702948,408.7998141568,423.07827792492,453.14877154631],description:"Binary SQR(3) Scale #2"},iter24:{frequencies:[261.6255653006,289.31157243481,292.97226416221,296.67927674571,304.23460945445,319.92739457651,328.07477344771,336.42963427227,353.78307729046,391.22147055517,411.40114203819,432.62170761687,478.4030399831,490.58621022536,503.07964402145,529.02909391167,585.01254970054],description:"Binary SQR(5) Scale #2"},iter25:{frequencies:[261.6255653006,295.4600775297,299.98610231105,304.581459303,313.98443628203,333.67021037701,343.97120738708,354.59021667251,376.82183739983,425.55401329039,452.23482674104,480.58843796626,542.7401414615,559.49550492793,576.76813324226,612.92956630767,692.19618110881],description:"Binary SQR(7) Scale #2"},iter26:{frequencies:[261.6255653006,266.56189672137,275.04226095704,276.16031892841,278.32506946872,283.8915708581,299.68019298069,302.93486508491,309.19384990071,326.13597866239,377.90359432309,389.87339142835,411.92110281371,477.08191319521,486.74523776856,503.12608711654,552.32063785682,711.29450566101],description:"E Scale"},iter27:{frequencies:[261.6255653006,264.53251602616,264.59858308811,264.97973921471,266.91093025617,277.4816601673,277.93638607994,279.98525409362,291.05844139692,358.0999925052,361.3330282979,375.61956161015,462.09190754392,465.48964215821,480.4396744611,568.53247844169,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=3"},iter28:{frequencies:[261.6255653006,265.20947715403,272.47639519786,295.60291144354,377.3445653374,784.8766959018],description:"McLaren 3-Division Scale"},iter29:{frequencies:[261.6255653006,264.46932144517,267.35459227799,273.20191774753,285.29018929764,311.12229387098,370.01329949656,523.2511306012],description:"Iterated Binary Division of the Octave, IE=2, PD=6, SD=0"},iter3:{frequencies:[261.6255653006,291.72408166262,314.40967058055,328.65360269166,338.82655178274,356.71329642628,384.4758307461,404.77917650282,417.30358762823,426.15298265459,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter30:{frequencies:[261.6255653006,263.40533105094,266.47048317654,274.97380842818,299.54231389489,377.98194879009,711.1793535636],description:"Iterated E-scale, IE= 2.71828, PD=5, SD=0"},iter31:{frequencies:[261.6255653006,264.53251602616,277.4816601673,358.0999925052,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=0"},iter32:{frequencies:[261.6255653006,264.32273607689,265.98599138894,268.74462830198,273.21657135822,280.65287914064,293.09931751721,314.43072526953,352.25402909754,423.30428543018],description:"Iterated PHI scale, IE= 1.61803339, PD=8, SD=0"},iter33:{frequencies:[261.6255653006,264.70351312767,271.46111286829,293.79264300149,376.62581378438,821.87425059077],description:"Iterated PI Scale, IE= 3.14159, PD=4, SD=0"},iter34:{frequencies:[261.6255653006,263.41752122732,264.70351312767,267.00143308075,271.01725226011,278.10591587072,290.81088732616,314.21361862735,359.24704489038,453.1728541814],description:"Iterated SQR3 Scale, IE= 1.73205, PD=8, SD=0"},iter35:{frequencies:[261.6255653006,263.32443260775,265.41724016003,270.17542037578,281.14986121856,307.30621955943,374.94109676838,585.0238335194],description:"Iterated SQR 5 Scale, IE= 2.23607, PD=6, SD=0"},iter36:{frequencies:[261.6255653006,263.60757715894,266.85807660661,275.72514666411,300.63990398578,377.90359432309,692.2176415245],description:"Iterated SQR 7 Scale, IE= 2.64575, PD=5, SD=0"},iter37:{frequencies:[261.6255653006,295.02271214403,313.28742377221,326.0879260201,332.68289475257,342.82647426905,364.05069339959,375.15068445646,382.73792346942,386.58911684499,392.4383479509],description:"Iterated 3/2 scale, IE=3/2, PD=3, SD=2"},iter4:{frequencies:[261.6255653006,267.82522324611,277.41331493081,278.97828136646,281.37089098366,287.35922746131,302.93486508491,307.2300216374,313.76772341995,330.79094463294,377.42704502382,390.96854140427,412.14986314478,470.26367433779,480.2976795817,495.79659597089,536.59937372878,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter5:{frequencies:[261.6255653006,292.148547919,314.45380444784,328.62723446295,338.43307070995,355.46951807147,382.59222452561,401.8431885336,413.81298563886,422.03832066739,436.04260883433],description:"Iterated 5/3 Scale, analog of Hexachord, IE=5/3, PD=3, SD=2"},iter6:{frequencies:[261.6255653006,276.4345595629,292.10621368514,326.13597866239,344.58001283494,364.1180547998,406.52587839016,453.84026633778,506.69255051888,535.41976154541,565.73733351326,631.63886479716],description:"Iterated binary 1+SQR(2) scale, IE= 2.414214, G=2, PD=4, SD=2"},iter7:{frequencies:[261.6255653006,279.30296836145,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter8:{frequencies:[261.6255653006,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=2"},iter9:{frequencies:[261.6255653006,298.19688088025,339.84351781315,387.34174602946,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=12"},ives:{frequencies:[261.6255653006,302.26980244078,349.22823143301,375.37611551499,433.69180740168,501.06699929295,578.9091089468,622.25396744417],description:`Charles Ives' stretched major scale, "Scrapbook" pp. 108-110`},ives2a:{frequencies:[261.6255653006,303.72829164664,352.60650301302,379.92060676531,441.0602510811,512.03893786214,594.44004134205,640.48740045057],description:"Speculation by Joe Monzo for Ives' other stretched scale"},ives2b:{frequencies:[261.6255653006,300.81831683262,345.88232658126,370.885984045,426.44646246473,490.3301667422,563.78395315523,604.53960488156],description:"Alt. speculation by Joe Monzo for Ives' other stretched scale"},abell1:{frequencies:[261.6255653006,273.68256372566,292.6487650037,305.95868600104,327.16162250699,342.04121835587,365.95599773772,391.31674786192,409.35055662695,437.71854962063,457.62637091093,489.33987776603,523.2511306012],description:"Ross Abell's French Baroque Meantone 1, a'=520"},abell2:{frequencies:[261.6255653006,275.90473010106,294.68429813772,308.79945157961,330.00857764288,348.01999353916,369.14054089803,392.90218486657,412.67427966689,441.52756934418,463.21121723949,493.59810545034,523.2511306012],description:"Ross Abell's French Baroque Meantone 2, a'=520"},abell3:{frequencies:[261.6255653006,275.90505521365,293.49576926806,308.08682543008,329.24698751194,350.03632176331,368.71497179837,392.44893164635,412.28324979826,440.25465969448,462.14293627657,492.7440237889,523.2511306012],description:"Ross Abell's French Baroque Meantone 3, a' = 520"},abell4:{frequencies:[261.6255653006,274.95017225036,292.98704147282,308.2648062752,328.10786809908,346.01554587335,367.43868454848,391.54284657258,411.48414905414,438.47771564426,461.87534079415,491.0387427573,523.2511306012],description:"Ross Abell's French Baroque Meantone 4, a'=520"},abell5:{frequencies:[261.6255653006,277.98432293805,295.87822452474,311.66659310186,331.15428443044,349.43001184052,371.27895029721,395.6350356808,416.26536455926,442.29334161825,466.70260620202,495.88429116026,523.2511306012],description:"Ross Abell's French Baroque Meantone 5, a'=520"},abell6:{frequencies:[261.6255653006,277.02257024271,293.32570896007,311.66659310186,330.00857764288,349.43001184052,369.99442271164,391.76907592069,414.82519580403,440.76312290327,466.70260620202,494.16866184506,523.2511306012],description:"Ross Abell's French Baroque Meantone 6, a'=520"},abell7:{frequencies:[261.6255653006,277.50302994288,294.34406205295,310.05056613125,328.86683469969,348.82502010853,369.99442271164,392.44854854484,416.26536455926,438.47771564426,465.08793784701,493.31307433255,523.2511306012],description:"Ross Abell's French Baroque Meantone 7, a'=520"},abell8:{frequencies:[261.6255653006,277.82379926216,294.68429813772,311.48661940174,329.62755691287,350.03605285217,371.27895029721,392.44854854484,415.30469757995,441.01779121056,467.78216486233,494.45418731234,523.2511306012],description:"Ross Abell's French Baroque Meantone 8, a'=520"},abell9:{frequencies:[261.6255653006,276.06414495892,293.32570896007,309.69258848748,330.19925313612,348.62358905703,369.14054089803,391.99543598175,412.67427966689,440,464.55095742407,493.88330125613,523.2511306012],description:"Ross Abell's French Baroque Meantone 9, a'=520"},"ad-dik":{frequencies:[261.6255653006,269.0348830679,275.62199471997,285.40970760065,294.32876096318,300.46061014991,310.07474405997,321.08592105074,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.49599295996,378.42269266694,392.4383479509,400.61414686654,413.43299207996,428.11456140098,441.49314144476,453.48431318771,470.92601754108,479.64686971777,490.54793493862,508.71637697339,523.2511306012],description:"Amin Ad-Dik, d'Erlanger, vol 5, p.42"},adjeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Soeroepan adjeng"},aeolic:{frequencies:[261.6255653006,294.32876096318,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Ancient Greek Aeolic, also tritriadic scale of the 54:64:81 triad"},agricola:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,331.11985608357,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Agricola's Monochord, Rudimenta musices (1539)"},"al-din":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012,551.24398943995,580.73440862809,588.65752192635,620.14948811994,653.3262097066,688.27781763329,697.66817413493,734.99198591993,774.31254483746,784.8766959018,826.86598415992,871.10161294214,917.70375684439,930.22423217991,979.98931455991,1032.41672644994,1046.5022612024,1102.48797887989],description:"Safi al-Din's complete lute tuning on 5 strings 4/3 apart"},"al-din_19":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic scale by Safi al-Din"},"al-farabi":{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Al-Farabi Syn Chrom"},"al-farabi_19":{frequencies:[261.6255653006,275.62199471997,285.40970760065,294.32876096318,310.07474405997,326.6631048533,331.11985608357,336.87132687997,348.83408706747,367.49599295996,380.54627680087,392.4383479509,413.43299207996,435.55080647107,441.49314144476,455.28980211491,465.11211608996,489.99465727995,507.3950357345,523.2511306012],description:"Arabic scale by Al Farabi"},"al-farabi_22":{frequencies:[261.6255653006,275.62199471997,277.01530443593,285.40970760065,294.32876096318,310.07474405997,321.08592105074,326.6631048533,331.11985608357,348.83408706747,367.49599295996,369.35373924791,380.54627680087,392.4383479509,413.43299207996,428.11456140098,435.55080647107,441.49314144476,465.11211608996,489.99465727995,492.47165233054,507.3950357345,523.2511306012],description:"Al-Farabi 22 note ud scale"},"al-farabi_9":{frequencies:[261.6255653006,294.32876096318,321.08592105074,331.11985608357,348.83408706747,392.4383479509,428.11456140098,441.49314144476,465.11211608996,523.2511306012],description:"Al-Farabi 9 note ud scale"},"al-farabi_blue":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.81054504865,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Another tuning from Al Farabi, c700 AD"},"al-farabi_chrom":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Al Farabi's Chromatic c700 AD"},"al-farabi_chrom2":{frequencies:[261.6255653006,279.06726965397,325.57848126297,348.83408706747,392.4383479509,418.60090448096,488.36772189445,523.2511306012],description:"Al-Farabi's Chromatic permuted"},"al-farabi_diat":{frequencies:[261.6255653006,299.00064605783,341.71502406609,348.83408706747,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Diatonic"},"al-farabi_diat2":{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Old Phrygian, permuted form of Al-Farabi's reduplicated 10/9 diatonic genus, same as ptolemy_diat"},"al-farabi_div":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al Farabi's 10 intervals for the division of the tetrachord"},"al-farabi_div2":{frequencies:[261.6255653006,275.62199471997,277.01530443593,279.38237857051,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,314.30517589183,321.08592105074,331.11985608357,348.83408706747],description:"Al-Farabi's tetrachord division, incl. extra 2187/2048 & 19683/16384"},"al-farabi_divo":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747,367.49599295996,369.35373924791,379.26927587201,392.4383479509,413.43299207996,415.52295665389,426.67793535601,432.48307733364,441.49314144476,465.11211608996,467.46332623563,481.6288815761,496.67978412536,523.2511306012],description:"Al Farabi's theoretical octave division with identical tetrachords, 10th c."},"al-farabi_dor":{frequencies:[261.6255653006,282.55561052465,313.95067836072,348.83408706747,392.4383479509,423.83341578697,470.92601754108,523.2511306012],description:"Dorian mode of Al-Farabi's 10/9 Diatonic"},"al-farabi_dor2":{frequencies:[261.6255653006,267.07609791103,305.22982618403,348.83408706747,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Dorian mode of Al-Farabi's Diatonic"},"al-farabi_g1":{frequencies:[261.6255653006,294.32876096318,331.11985608357,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus conjunctum medium, Land"},"al-farabi_g10":{frequencies:[261.6255653006,294.32876096318,343.38355445704,367.91095120397,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus chromaticum forte"},"al-farabi_g11":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,496.67978412536,523.2511306012],description:"Al-Farabi's Greek genus chromaticum mollissimum"},"al-farabi_g12":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.17464957743,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Al-Farabi's Greek genus mollissimum ordinantium"},"al-farabi_g3":{frequencies:[261.6255653006,294.32876096318,336.37572681506,378.42269266694,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus conjunctum primum"},"al-farabi_g4":{frequencies:[261.6255653006,294.32876096318,336.37572681506,384.42940207435,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Greek genus forte duplicatum primum"},"al-farabi_g5":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Al-Farabi's Greek genus conjunctum tertium, or forte aequatum"},"al-farabi_g6":{frequencies:[261.6255653006,294.32876096318,336.37572681506,373.75080757229,392.4383479509,448.50096908674,498.33441009638,523.2511306012],description:"Al-Farabi's Greek genus forte disjunctum primum"},"al-farabi_g7":{frequencies:[261.6255653006,294.32876096318,343.38355445704,374.60024122586,392.4383479509,457.84473927605,499.46698830115,523.2511306012],description:"Al-Farabi's Greek genus non continuum acre"},"al-farabi_g8":{frequencies:[261.6255653006,294.32876096318,353.19451315581,378.42269266694,392.4383479509,470.92601754108,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus non continuum mediocre"},"al-farabi_g9":{frequencies:[261.6255653006,294.32876096318,367.91095120397,383.71749577421,392.4383479509,490.54793493862,511.62332769895,523.2511306012],description:"Al-Farabi's Greek genus non continuum laxum"},"al-hwarizmi":{frequencies:[261.6255653006,294.32876096318,302.73815413355,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al-Hwarizmi's tetrachord division"},"al-kindi":{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747],description:"Al-Kindi's tetrachord division"},"al-kindi2":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,523.2511306012],description:"Arabic mode by al-Kindi"},"al-mausili":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Arabic mode by Ishaq al-Mausili, ? - 850 AD"},albion:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Terry Riley's Harp of New Albion scale, inverse Malcolm's Monochord, 1/1 on C#"},alembert:{frequencies:[261.6255653006,273.70610837433,292.50627485027,307.8325111191,327.03195662575,347.99121610009,365.92863081328,391.22147055517,409.45161370755,437.39890198442,462.86717295458,489.22460251523,523.2511306012],description:"Jean-Le Rond d'Alembert modified meantone (1752)"},alembert2:{frequencies:[261.6255653006,274.99999938609,292.5775112526,309.28790118232,327.03195662575,348.53877105022,367.08095907728,391.31674786192,412.03444522126,437.50542525192,464.32494005553,489.99429388332,523.2511306012],description:"d'Alembert (?)"},alves:{frequencies:[261.6255653006,267.07609791103,294.32876096318,305.22982618403,327.03195662575,336.37572681506,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:'Bill Alves, tuning for "Instantaneous Motion", 1/1 vol. 6/3'},alves_22:{frequencies:[261.6255653006,269.80136421624,279.06726965397,287.78812183066,297.30177875068,305.22982618403,317.12189733406,327.03195662575,336.37572681506,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,406.97310157871,418.60090448096,431.68218274599,448.50096908674,460.46099492906,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"11-limit rational interpretation of 22-tET, Bill Alves, tuning list 9-1-98"},amity:{frequencies:[261.6255653006,265.19165427121,275.22357733525,278.97501409741,282.77758484276,286.63198489776,290.53892403345,294.49911672845,305.63971046081,309.80573452349,314.02854360428,318.30891171173,322.64762154083,327.04547204619,339.41726037801,344.04368955469,348.73317930436,353.48658917459,358.304790429,371.85908609843,376.92771379174,382.0654272409,387.27317253358,392.55190203235,397.90258328792,412.95482206782,418.58360545772,424.28911201625,430.07238503487,435.93448947821,452.42543551278,458.59222335614,464.84306764133,471.17911410024,477.60152408164,484.11147196776,502.42490579041,509.27320879713,516.21486058423,523.2511306012],description:"Amity temperament, g=339.508826, 5-limit"},angklung:{frequencies:[261.6255653006,294.70472480469,326.28010551578,372.13971319976,421.00655337609,533.77627782773,589.40944960937,672.10704388342,757.81210779894],description:"Scale of an anklung set from Tasikmalaya. 1/1=174 Hz"},appunn:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.38237857051,287.10624449997,290.69507255622,294.32876096318,302.46583782713,306.24666079997,310.07474405997,322.99452506247,327.03195662575,331.11985608357,340.27406755552,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.50983809402,382.80832599996,387.59343007496,392.4383479509,408.78994578219,413.89982010446,419.07356785577,430.65936674996,436.04260883433,441.49314144476,453.6987567407,459.36999119996,465.11211608996,484.4917875937,490.54793493862,496.67978412536,510.41110133328,516.79124009995,523.2511306012],description:"Probable tuning of A. Appunn's 36-tone harmonium w. 3 manuals 80/81 apart,1887"},arabic:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic 17-tone Pythagorean mode, Safi al-Din"},arabic_s:{frequencies:[261.6255653006,275.62199471997,290.69507255622,294.32876096318,310.07474405997,327.03195662575,331.11985608357,348.83408706747,367.91095120397,387.59343007496,392.4383479509,413.43299207996,436.04260883433,441.49314144476,465.11211608996,490.54793493862,516.79124009995,523.2511306012],description:"Schimatically altered Arabic 17-tone Pythagorean mode"},arch_chrom:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,441.49314144476,523.2511306012],description:"Archytas' Chromatic"},arch_chromc2:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,331.11985608357,343.38355445704,348.83408706747,361.75386806997,392.4383479509,406.97310157871,422.04617941496,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:"Product set of 2 of Archytas' Chromatic"},arch_dor:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,465.11211608996,441.49314144476,523.2511306012],description:"Dorian mode of Archytas' Chromatic with added 16/9"},arch_enh:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Archytas' Enharmonic"},arch_enh2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,418.60090448096,523.2511306012],description:"Archytas' Enharmonic with added 16/9"},arch_enh3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,358.80077526939,448.50096908674,523.2511306012],description:"Complex 9 of p. 113 based on Archytas's Enharmonic"},arch_enhp:{frequencies:[261.6255653006,269.10058145205,279.06726965397,348.83408706747,392.4383479509,403.65087217807,418.60090448096,523.2511306012],description:"Permutation of Archytas's Enharmonic with the 36/35 first"},arch_enht:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 113 based on Archytas's Enharmonic"},arch_enht2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,490.54793493862,508.71637697339,523.2511306012],description:"Complex 5 of p. 113 based on Archytas's Enharmonic"},arch_enht3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 113 based on Archytas's Enharmonic"},arch_enht4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,339.14425131559,348.83408706747,436.04260883433,523.2511306012],description:"Complex 8 of p. 113 based on Archytas's Enharmonic"},arch_enht5:{frequencies:[261.6255653006,263.77886213435,271.31540105247,279.06726965397,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 10 of p. 113 based on Archytas's Enharmonic"},arch_enht6:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,297.67175429757,348.83408706747,372.08969287196,523.2511306012],description:"Complex 2 of p. 113 based on Archytas's Enharmonic"},arch_enht7:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,287.04062021552,348.83408706747,358.80077526939,523.2511306012],description:"Complex 11 of p. 113 based on Archytas's Enharmonic"},arch_mult:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,523.2511306012],description:"Multiple Archytas"},arch_ptol:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"Archytas/Ptolemy Hybrid 1"},arch_ptol2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Archytas/Ptolemy Hybrid 2"},arch_sept:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,465.11211608996,523.2511306012],description:"Archytas Septimal"},ariel1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 1"},ariel2:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 2"},ariel3:{frequencies:[261.6255653006,279.06726965397,290.69507255622,310.07474405997,322.99452506247,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Ariel's 12-tone JI scale"},ariel_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,302.80736724606,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Ariel 19-tone scale"},ariel_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Ariel's 31-tone system"},arist_archenh:{frequencies:[261.6255653006,271.89678302796,279.86396690685,349.22823143301,391.99543598175,407.38487419079,419.32216217931,523.2511306012],description:"PsAristo Arch. Enharmonic, 4 + 3 + 23 parts, similar to Archytas' enharmonic"},arist_chrom:{frequencies:[261.6255653006,277.18263097687,329.62755691287,349.22823143301,391.99543598175,415.30469757995,493.88330125613,523.2511306012],description:"Dorian, Neo-Chromatic,6+18+6 parts = Athanasopoulos' Byzant.liturg. 2nd chromatic"},arist_chrom2:{frequencies:[261.6255653006,282.57123920205,336.03572815422,349.22823143301,391.99543598175,423.37848741825,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 18 + 4 parts"},arist_chrom3:{frequencies:[261.6255653006,279.86388595857,299.37253740865,349.22869576324,391.99491478937,419.32387668214,448.55625766774,523.2511306012],description:"PsAristo 3 Chromatic, 7 + 7 + 16 parts"},arist_chrom4:{frequencies:[261.6255653006,275.85166538713,290.85115308106,349.22823143301,391.99543598175,413.31050241775,435.7843409791,523.2511306012],description:"PsAristo Chromatic, 5.5 + 5.5 + 19 parts"},arist_chromenh:{frequencies:[261.6255653006,269.29177952703,293.66476791741,349.22823143301,391.99543598175,403.48177901006,440,523.2511306012],description:"Aristoxenos' Chromatic/Enharmonic, 3 + 9 + 18 parts"},arist_chrominv:{frequencies:[261.6255653006,311.12698372208,329.62755691287,349.22823143301,391.99543598175,466.16376151809,493.88330125613,523.2511306012],description:"Aristoxenos' Inverted Chromatic, Dorian mode, 18 + 6 + 6 parts"},arist_chromrej:{frequencies:[261.6255653006,277.18263097687,285.30470202322,349.22823143301,391.99543598175,415.30469757995,427.47405410759,523.2511306012],description:"Aristoxenos Rejected Chromatic, 6 + 3 + 21 parts"},arist_chromunm:{frequencies:[261.6255653006,273.20871865617,282.57118533961,349.22823143301,391.99543598175,409.35055662695,423.37840671577,523.2511306012],description:"Unmelodic Chromatic, genus of Aristoxenos, Dorian Mode, 4.5 + 3.5 + 22 parts"},arist_diat:{frequencies:[261.6255653006,293.66476791741,311.12698372208,349.22823143301,391.99543598175,440,466.16376151809,523.2511306012],description:"Phrygian octave species on E, 12 + 6 + 12 parts"},arist_diat2:{frequencies:[261.6255653006,279.86396690685,311.12698372208,349.22823143301,391.99543598175,419.32216217931,466.16376151809,523.2511306012],description:"PsAristo 2 Diatonic, 7 + 11 + 12 parts"},arist_diat3:{frequencies:[261.6255653006,286.68133251996,314.13668154225,349.22823143301,391.99543598175,429.53666932309,470.6732130613,523.2511306012],description:"PsAristo Diat 3, 9.5 + 9.5 + 11 parts"},arist_diat4:{frequencies:[261.6255653006,282.57123920205,305.19382000629,349.22823143301,391.99543598175,423.37848741825,457.27406033445,523.2511306012],description:"PsAristo Diatonic, 8 + 8 + 14 parts"},arist_diatdor:{frequencies:[261.6255653006,299.37379946195,305.19382000629,349.22823143301,391.99543598175,448.5538823653,457.27406033445,523.2511306012],description:"PsAristo Redup. Diatonic, 14 + 2 + 14 parts"},arist_diatinv:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,493.88330125613,523.2511306012],description:"Lydian octave species on E, major mode, 12 + 12 + 6 parts"},arist_diatred:{frequencies:[261.6255653006,299.37379946195,342.56848033562,349.22823143301,391.99543598175,448.5538823653,513.27277840175,523.2511306012],description:"Aristo Redup. Diatonic, Dorian Mode, 14 + 14 + 2 parts"},arist_diatred2:{frequencies:[261.6255653006,271.89678302796,308.14612137864,349.22823143301,391.99543598175,407.38487419079,461.69751437372,523.2511306012],description:"PsAristo 2 Redup. Diatonic 2, 4 + 13 + 13 parts"},arist_diatred3:{frequencies:[261.6255653006,282.57123920205,314.13668154225,349.22823143301,391.99543598175,423.37848741825,470.6732130613,523.2511306012],description:"PsAristo 3 Redup. Diatonic, 8 + 11 + 11 parts"},arist_enh:{frequencies:[261.6255653006,269.29177952703,277.18263097687,349.22823143301,391.99543598175,403.48177901006,415.30469757995,523.2511306012],description:"Aristoxenos' Enharmonion, Dorian mode"},arist_enh2:{frequencies:[261.6255653006,270.59109411209,279.86402025325,349.22823143301,391.99543598175,405.42855124795,419.32224210861,523.2511306012],description:"PsAristo 2 Enharmonic, 3.5 + 3.5 + 23 parts"},arist_enh3:{frequencies:[261.6255653006,267.99870394401,274.52693220706,349.22823143301,391.99543598175,401.54435471309,411.32564531909,523.2511306012],description:"PsAristo Enharmonic, 2.5 + 2.5 + 25 parts"},arist_hemchrom:{frequencies:[261.6255653006,273.20871865617,285.30470202322,349.22823143301,391.99543598175,409.35055662695,427.47405410759,523.2511306012],description:"Aristoxenos's Chromatic Hemiolion, Dorian Mode"},arist_hemchrom2:{frequencies:[261.6255653006,273.20871865617,293.66476791741,349.22823143301,391.99543598175,409.35055662695,440,523.2511306012],description:"PsAristo C/H Chromatic, 4.5 + 7.5 + 18 parts"},arist_hemchrom3:{frequencies:[261.6255653006,271.81876914348,282.83844897362,348.83408706747,392.4383479509,407.72815371522,424.25767346043,523.2511306012],description:"Dorian mode of Aristoxenos' Hemiolic Chromatic according to Ptolemy's interpret"},arist_hypenh2:{frequencies:[261.6255653006,267.3544191957,273.20871865617,349.22823143301,391.99543598175,400.57901831518,409.35055662695,523.2511306012],description:"PsAristo 2nd Hyperenharmonic, 37.5 + 37.5 + 425 cents"},arist_hypenh3:{frequencies:[261.6255653006,265.43099677612,269.29177952703,349.22823143301,391.99543598175,397.69714089209,403.48177901006,523.2511306012],description:"PsAristo 3 Hyperenharmonic, 1.5 + 1.5 + 27 parts"},arist_hypenh4:{frequencies:[261.6255653006,266.71168334607,271.8968348557,349.22823143301,391.99543598175,399.61600264311,407.38495184466,523.2511306012],description:"PsAristo 4 Hyperenharmonic, 2 + 2 + 26 parts"},arist_hypenh5:{frequencies:[261.6255653006,265.12453591719,268.67030163715,349.22823143301,391.99543598175,397.23796841836,402.55061428954,523.2511306012],description:"PsAristo Hyperenharmonic, 23 + 23 + 454 cents"},arist_intdiat:{frequencies:[261.6255653006,275.39533189537,307.79478270659,348.83408706747,392.4383479509,413.09299784305,461.69217405988,523.2511306012],description:"Dorian mode of Aristoxenos's Intense Diatonic according to Ptolemy"},arist_penh2:{frequencies:[261.6255653006,269.29177952703,339.28638158975,349.22823143301,391.99543598175,403.48177901006,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 3 + 24 + 3 parts"},arist_penh3:{frequencies:[261.6255653006,329.62755691287,339.28638158975,349.22823143301,391.99543598175,493.88330125613,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 24 + 3 + 3 parts"},arist_pschrom2:{frequencies:[261.6255653006,278.52001838539,296.50560089735,349.22823143301,391.99543598175,417.30851459865,444.25644015807,523.2511306012],description:"PsAristo 2 Chromatic, 6.5 + 6.5 + 17 parts"},arist_softchrom:{frequencies:[261.6255653006,271.89678302796,282.57123920205,349.22823143301,391.99543598175,407.38487419079,423.37848741825,523.2511306012],description:"Aristoxenos's Chromatic Malakon, Dorian Mode"},arist_softchrom2:{frequencies:[261.6255653006,277.18263097687,324.90175210669,349.22823143301,391.99543598175,415.30469757995,486.80259447109,523.2511306012],description:"Aristoxenos' Soft Chromatic, 6 + 16.5 + 9.5 parts"},arist_softchrom3:{frequencies:[261.6255653006,281.2143451833,329.62755691287,349.22823143301,391.99543598175,421.34544350737,493.88330125613,523.2511306012],description:"Aristoxenos's Chromatic Malakon, 9.5 + 16.5 + 6 parts"},arist_softchrom4:{frequencies:[261.6255653006,277.18263097687,297.93622032612,349.22823143301,391.99543598175,415.30469757995,446.39994737251,523.2511306012],description:"PsAristo S. Chromatic, 6 + 7.5 + 16.5 parts"},arist_softchrom5:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,392.4383479509,405.97070477679,420.46965851882,523.2511306012],description:"Dorian mode of Aristoxenos' Soft Chromatic according to Ptolemy's interpretati"},arist_softdiat:{frequencies:[261.6255653006,277.18263097687,302.26980244078,349.22823143301,391.99543598175,415.30469757995,452.89298412314,523.2511306012],description:"Aristoxenos's Diatonon Malakon, Dorian Mode"},arist_softdiat2:{frequencies:[261.6255653006,277.18263097687,320.24370022528,349.22823143301,391.99543598175,415.30469757995,479.82340237272,523.2511306012],description:"Dorian Mode, 6 + 15 + 9 parts"},arist_softdiat3:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Dorian Mode, 9 + 15 + 6 parts"},arist_softdiat4:{frequencies:[261.6255653006,285.30470202322,302.26980244078,349.22823143301,391.99543598175,427.47405410759,452.89298412314,523.2511306012],description:"Dorian Mode, 9 + 6 + 15 parts"},arist_softdiat5:{frequencies:[261.6255653006,302.26980244078,320.24370022528,349.22823143301,391.99543598175,452.89298412314,479.82340237272,523.2511306012],description:"Dorian Mode, 15 + 6 + 9 parts"},arist_softdiat6:{frequencies:[261.6255653006,302.26980244078,329.62755691287,349.22823143301,391.99543598175,452.89298412314,493.88330125613,523.2511306012],description:"Dorian Mode, 15 + 9 + 6 parts"},arist_softdiat7:{frequencies:[261.6255653006,275.39533189537,299.00064605783,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Dorian mode of Aristoxenos's Soft Diatonic according to Ptolemy"},arist_synchrom:{frequencies:[261.6255653006,277.18263097687,293.66476791741,349.22823143301,391.99543598175,415.30469757995,440,523.2511306012],description:"Aristoxenos's Chromatic Syntonon, Dorian Mode"},arist_syndiat:{frequencies:[261.6255653006,277.18263097687,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Aristoxenos's Diatonon Syntonon, Dorian Mode"},arist_unchrom:{frequencies:[261.6255653006,271.89678302796,293.66476791741,349.22823143301,391.99543598175,407.38487419079,440,523.2511306012],description:"Aristoxenos's Unnamed Chromatic, Dorian Mode, 4 + 8 + 18 parts"},arist_unchrom2:{frequencies:[261.6255653006,282.57123920205,293.66476791741,349.22823143301,391.99543598175,423.37848741825,440,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 4 + 18 parts"},arist_unchrom3:{frequencies:[261.6255653006,311.12698372208,323.3415889232,349.22823143301,391.99543598175,466.16376151809,484.46499093218,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 4 + 8 parts"},arist_unchrom4:{frequencies:[261.6255653006,311.12698372208,336.03572815422,349.22823143301,391.99543598175,466.16376151809,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 8 + 4 parts"},arith13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,318.85615771011,327.03195662575,343.38355445704,367.91095120397,371.99885066179,392.4383479509,449.66894036041,457.84473927605,490.54793493862,523.2511306012],description:"The first 13 terms of the arithmetic series, octave reduced"},arith22:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,312.72430852337,318.85615771011,327.03195662575,343.38355445704,349.51540364377,367.91095120397,371.99885066179,388.35044849308,392.4383479509,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,517.11928141447,523.2511306012],description:"The first 22 terms of the arithmetic series, octave reduced"},arnautoff_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,523.2511306012],description:"Philip Arnautoff, transposed Archytas enharmonic (2005), 1/1 vol 12/1"},"aron-neidhardt":{frequencies:[261.6255653006,275.62199471997,292.53519855339,310.07474405997,327.04005607367,348.83408706747,367.49599295996,391.42133845759,413.43299207996,437.43855491017,465.11211608996,489.99465727995,523.2511306012],description:"Aron-Neidhardt equal beating well temperament"},art_nam:{frequencies:[261.6255653006,287.78812183066,317.68818643644,324.77656382143,348.83408706747,353.19451315581,392.4383479509,431.68218274599,473.41768959156,523.2511306012],description:"Artificial Nam System"},artusi:{frequencies:[261.6255653006,276.63528606528,292.50629850443,309.28767786778,327.03195662575,349.91920725962,369.99442271164,391.22137338448,413.66637442451,437.39882871549,462.49310482954,489.02679755603,523.2511306012],description:"Lute tuning of Giovanni Maria Artusi (1603). 1/4-comma w. acc. 1/2-way naturals"},astro:{frequencies:[13.75,13.8316453704,13.91377553836,13.99639338254,14.07098381034,14.15453513289,14.23858257025,14.32312915102,14.40817767355,14.49373120103,14.57979273211,14.66636528323,14.75345188876,14.84105560105,14.92917949063,15.01782664621,15.10700017487,15.1875093157,15.27769039377,15.36840704189,15.45966226264,15.55145934276,15.64380149972,15.73669197012,15.83013400973,15.92413089371,16.01868591662,16.11380239262,16.20948365552,16.30573305894,16.39263055969,16.48996755631,16.58788242969,16.68637870643,16.78545983879,16.88512929958,16.98539058219,17.08624720077,17.18770269033,17.28976060687,17.39242452751,17.49569805061,17.59958489756,17.69337767194,17.7984382082,17.90412257766,18.01043448453,18.11737765504,18.22495583753,18.33317280261,18.44203234327,18.55153827502,18.66169443603,18.77250468726,18.88397302169,18.99610312873,19.09733831271,19.21073534981,19.32480572095,19.43955342429,19.55498248173,19.67109693902,19.78790086598,19.90539835657,20.02359352906,20.14249064253,20.26209363229,20.38240680608,20.50343438087,20.62518059864,20.73509756099,20.85821935885,20.98207223488,21.1066605301,21.23198861133,21.35806087129,21.4848817288,21.61245575376,21.74078716869,21.86988059568,21.99974055944,22.13037161156,22.26177833063,22.38041714879,22.51330859954,22.64698913914,22.78146345308,22.91673625467,23.0528122852,23.18969644807,23.32739327396,23.46590772227,23.60524464792,23.74540893465,23.88640549521,24.02823927151,24.15629202037,24.29972834105,24.44401636439,24.58916114767,24.73516777819,24.8820415172,25.02978722599,25.17841022592,25.32791572621,25.478308967,25.62959521956,25.78177978645,25.93486800174,26.07308167197,26.22789959273,26.38363679833,26.54029874734,26.69789108494,26.85641902723,27.01588828389,27.17630444429,27.33767313101,27.5],description:"Astro temperament, g=132.194511, 5-limit"},athan_chrom:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,493.88330125613,523.2511306012],description:"Athanasopoulos's Byzantine Liturgical mode Chromatic"},auftetf:{frequencies:[261.6255653006,264.29521392612,269.80136421624,287.78812183066,359.73515228832,380.54627680087,384.42940207435,392.4383479509,418.60090448096],description:"5/4 C.I. again"},augmented:{frequencies:[261.6255653006,312.71213182188,329.62755691287,393.99259743989,415.30469757995,496.39956701727,523.2511306012],description:"Augmented temperament, g=91.2, oct=1/3, 5-limit"},augteta:{frequencies:[261.6255653006,280.76889934699,302.93486508491,328.90071066361,359.73515228832,380.54627680087,408.39112632289,440.63253103259,478.40103369253],description:"Linear Division of the 11/8, duplicated on the 16/11"},augteta2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,373.75080757229,402.50086969323,436.04260883433,475.68284600109],description:"Linear Division of the 7/5, duplicated on the 10/7"},augtetb:{frequencies:[261.6255653006,270.8594087818,280.76889934699,302.93486508491,359.73515228832,380.54627680087,295.48299139832,408.39112632289,440.63253103259],description:"Harmonic mean division of 11/8"},augtetc:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,359.73515228832,380.54627680087,407.72815371522,439.09185784716,475.68284600109],description:"11/10 C.I."},augtetd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,359.73515228832,380.54627680087,395.18267206244,410.98997894494,428.11456140098],description:"11/9 C.I."},augtete:{frequencies:[261.6255653006,269.80136421624,278.50463402967,287.78812183066,359.73515228832,380.54627680087,392.4383479509,405.0976494977,418.60090448096],description:"5/4 C.I."},augtetg:{frequencies:[261.6255653006,278.50463402967,297.71185016965,319.76457981184,359.73515228832,380.54627680087,405.0976494977,433.03541842858,465.11211608996],description:"9/8 C.I."},augteth:{frequencies:[261.6255653006,278.50463402967,287.78812183066,319.76457981184,359.73515228832,380.54627680087,405.0976494977,418.60090448096,465.11211608996],description:"9/8 C.I. A gapped version of this scale is called AugTetI"},augtetj:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. comprised of 11:10:9:8 subharmonic series on 1 and 8:9:10:11 on 16/11"},augtetk:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,418.60090448096,465.11211608996],description:"9/8 C.I. This is the converse form of AugTetJ"},augtetl:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. This is the harmonic form of AugTetI"},avg_bac:{frequencies:[261.6255653006,290.69507255622,307.79478270659,348.83408706747,392.4383479509,436.04260883433,461.69217405988,523.2511306012],description:"Average Bac System"},avicenna:{frequencies:[261.6255653006,290.69507255622,299.00064605783,348.83408706747,392.4383479509,436.04260883433,448.50096908674,523.2511306012],description:"Soft diatonic of Avicenna (Ibn Sina)"},avicenna_17:{frequencies:[261.6255653006,278.99913799634,283.42769574232,294.32876096318,310.07474405997,318.85615771011,331.11985608357,348.83408706747,371.99885066179,377.90359432309,392.4383479509,413.43299207996,425.14154361347,441.49314144476,465.11211608996,495.99846754905,503.87145909745,523.2511306012],description:"Tuning by Avicenna (Ibn Sina), Ahmed Mahmud Hifni, Cairo, 1977"},avicenna_19:{frequencies:[261.6255653006,275.62199471997,283.49690885483,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,358.80077526939,372.50983809402,377.99587847311,392.4383479509,413.43299207996,425.24536328225,441.49314144476,465.11211608996,478.40103369253,496.67978412536,503.45611792634,523.2511306012],description:"Arabic scale by Ibn Sina"},avicenna_chrom:{frequencies:[261.6255653006,269.10058145205,299.00064605783,348.83408706747,392.4383479509,403.65087217807,448.50096908674,523.2511306012],description:"Dorian mode a chromatic genus of Avicenna"},avicenna_chrom2:{frequencies:[261.6255653006,271.8968348557,323.34165055711,349.22823143301,391.99543598175,407.38495184466,484.46508327871,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 4 + 18 + 8 parts"},avicenna_chrom3:{frequencies:[261.6255653006,290.69507255622,339.14425131559,348.83408706747,392.4383479509,436.04260883433,508.71637697339,523.2511306012],description:"Avicenna's Chromatic permuted"},avicenna_diat:{frequencies:[261.6255653006,281.75060878526,305.22982618403,348.83408706747,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Dorian mode a soft diatonic genus of Avicenna"},avicenna_diff:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,310.68035879446,343.38355445704,367.91095120397,392.4383479509,400.61414686654,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Difference tones of Avicenna's Soft diatonic reduced by 2/1"},avicenna_enh:{frequencies:[261.6255653006,268.33391312882,279.06726965397,348.83408706747,392.4383479509,402.50086969323,418.60090448096,523.2511306012],description:"Dorian mode of Avicenna's (Ibn Sina) Enharmonic genus"},awad:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,358.80077526939,369.35373924791,380.54627680087,392.4383479509,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"d'Erlanger vol.5, p.37, after Mans.ur 'Awad"},awraamoff:{frequencies:[261.6255653006,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Awraamoff Septimal Just"},ayers:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,537.78588422901,569.42034800719,605.00911975764,645.34306107481,691.43899400873,744.62660893248,806.67882634352,880.01326510202,968.01459161222,1075.57176845802,1210.01823951527,1382.87798801746,1613.35765268703,1936.02918322444,2420.03647903055,3226.71530537407,4840.0729580611,9680.1459161222],description:"Lydia Ayers, algorithmic composition, subharmonics 1-37"},ayers_19:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,523.2511306012],description:"Scale for NINETEEN, for 19 for the 90's CD. Repeats at 37/19 (or 2/1)"},ayers_ap:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Lydia Ayers' Appetizer, ICMC 96, Balinese Slendro from Singaraja,"},ayers_me:{frequencies:[261.6255653006,280.31310567921,299.00064605783,308.34441624714,336.37572681506,392.4383479509,420.46965851882,448.50096908674,504.56359022259,523.2511306012],description:"Scale for Merapi (1996), Lydia Ayers. Slendro 0 2 4 5 7 9, Pelog 0 1 3 6 8 9"},h10_27:{frequencies:[261.6255653006,281.00523680435,300.3849083081,319.76457981184,348.83408706747,368.21375857121,397.28326582684,426.35277308246,455.42228033808,484.4917875937,523.2511306012],description:"10-tET harmonic approximation, fundamental=27"},h12_24:{frequencies:[261.6255653006,272.52663052146,294.32876096318,316.13089140489,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,468.74580449691,490.54793493862,523.2511306012],description:"12-tET harmonic approximation, fundamental=24"},h14_27:{frequencies:[261.6255653006,271.31540105247,290.69507255622,300.3849083081,319.76457981184,339.14425131559,348.83408706747,368.21375857121,387.59343007496,406.97310157871,426.35277308246,455.42228033808,474.80195184183,494.18162334558,523.2511306012],description:"14-tET harmonic approximation, fundamental=27"},h15_24:{frequencies:[261.6255653006,272.52663052146,283.42769574232,305.22982618403,316.13089140489,327.03195662575,348.83408706747,359.73515228832,381.53728273004,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"15-tET harmonic approximation, fundamental=24"},hahn9:{frequencies:[261.6255653006,286.15296204753,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,457.84473927605,490.54793493862,523.2511306012],description:"Paul Hahn's just version of 9 out of 31 scale. TL 6-8-'98"},hahn_7:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Paul Hahn's scale with 32 consonant 7-limit dyads. TL '99, see also smithgw_hahn12"},hahn_g:{frequencies:[261.6255653006,280.50183143454,294.66523452594,309.54379154736,331.87735433448,348.63486612079,373.78884718875,392.66259958718,420.99317852788,442.25042328711,464.58101193362,498.10049926644,523.2511306012],description:'fourth of sqrt(2)-1 octave "recursive" meantone, Paul Hahn'},hahnmaxr:{frequencies:[261.6255653006,275.93321340298,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Paul Hahn's hahn_7 marvel projected to the 5-limit"},halfefg357777:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.35783506196,341.71502406609,375.57576268738,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Half genus [357777]"},hamilton:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,479.64686971777,523.2511306012],description:"Elsie Hamilton's gamut, from article The Modes of Ancient Greek Music (1953)"},hamilton_jc:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,338.57426097725,411.12588832951,383.71749577421,442.75095666255,426.35277308246,479.64686971777,523.2511306012],description:"Chalmers' permutation of Hamilton's gamut. Diatonic notes on white"},hamilton_jc2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"EH gamut, diatonic notes on white and drops 17 for 25. JC Dorian Harmonia on C"},hammond:{frequencies:[261.6255653006,226.52945288223,240.12209418,254.35818848669,269.43528366778,285.40970760065,302.50455987882,320.49131749323,339.40613876835,359.73515228832,381.06332337261,403.65087217807,427.65717404906,453.05890576445],description:'Hammond organ pitch wheel ratios, 1/1=320 Hz. Do "del 0" to get 12-tone scale'},hammond12:{frequencies:[261.6255653006,277.32410877127,293.76579515365,311.17877832054,329.62811300357,349.37146352202,370.1449018936,391.99018843668,415.46876743159,440.10130305006,466.18833124791,493.91391932426,523.2511306012],description:"Hammond organ scale, 1/1=277.0731707 Hz, A=440, see hammond for the ratios"},handblue:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Handy Blues" of Pitch Palette, 7-limit'},handel:{frequencies:[261.6255653006,276.07055536165,292.89641271707,310.57937447136,328.79480940231,349.02322090701,368.4933346061,391.37619916626,414.10583283548,438.86859125239,465.61660972366,492.3908742288,523.2511306012],description:"Well temperament according to Georg Friedrich H\xEF\xBF\xBDndel's rules (c. 1780)"},hanson_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"JI version of Hanson's 19 out of 53-tET scale"},"harm-doreninv1":{frequencies:[261.6255653006,321.08592105074,327.03195662575,332.97799220076,380.54627680087,499.46698830115,511.35905945117,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Dorian Harmonia"},"harm-dorinv1":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Dorian Harmonia"},"harm-lydchrinv1":{frequencies:[261.6255653006,322.00069575458,342.12573923925,362.25078272391,402.50086969323,483.00104363188,503.12608711654,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Lydian Harmonia"},"harm-lydeninv1":{frequencies:[261.6255653006,342.12573923925,352.18826098158,362.25078272391,402.50086969323,503.12608711654,513.18860885887,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Lydian Harmonia"},"harm-mixochrinv1":{frequencies:[261.6255653006,336.37572681506,355.06326719367,373.75080757229,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Mixolydian Harmonia"},"harm-mixoeninv1":{frequencies:[261.6255653006,355.06326719367,364.40703738298,373.75080757229,411.12588832951,504.56359022259,513.90736041189,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Mixolydian Harmonia"},harm10:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"6/7/8/9/10 harmonics"},harm11s:{frequencies:[261.6255653006,65.40639132515,95.13656920022,104.65022612024,116.27802902249,130.8127826503,149.50032302891,174.41704353373,196.21917397545,209.30045224048,261.6255653006,327.03195662575,348.83408706747,392.4383479509,457.84473927605,523.2511306012,588.65752192635,654.0639132515,719.47030457665,1046.5022612024],description:"Harm. 1/4-11/4 and subh. 4/1-4/11. Joseph Pehrson 1999"},harm12s:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,348.83408706747,359.73515228832,380.54627680087,392.4383479509,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"Harmonics 1 to 12 and subharmonics mixed"},"harm15-30":{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,383.71749577421,418.60090448096,436.04260883433,453.48431318771,488.36772189445,523.2511306012],description:"Harmonics 15 to 30"},harm15:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991],description:"Fifth octave of the harmonic overtone series"},"harm16-32":{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Harmonics 16-32 & Tom Stone's Guitar Scale"},harm16:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,2093.0045224048,1395.33634826987,1046.5022612024,837.20180896192,697.66817413493,598.00129211566,523.2511306012,465.11211608996,418.60090448096,380.54627680087,348.83408706747,322.00069575458,299.00064605783,279.06726965397,261.6255653006],description:"First 16 harmonics and subharmonics"},"harm1c-dorian":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"Harm1C-Dorian"},"harm1c-hypod":{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"HarmC-Hypodorian"},"harm1c-hypol":{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"HarmC-Hypolydian"},"harm1c-lydian":{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,382.37582620857,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"Harm1C-Lydian"},"harm1c-mix":{frequencies:[261.6255653006,299.00064605783,373.75080757229,392.4383479509,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"Harm1C-Con Mixolydian"},"harm1c-mixolydian":{frequencies:[261.6255653006,280.31310567921,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"Harm1C-Mixolydian"},harm24:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"Harmonics 12 to 24"},harm24_2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 12 to 24, mode 9"},harm3:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605],description:"Third octave of the harmonic overtone series"},"harm30-60":{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,357.55493924415,366.27579142084,374.99664359753,383.71749577421,392.4383479509,401.15920012759,409.88005230427,418.60090448096,427.32175665765,436.04260883433,444.76346101102,453.48431318771,462.20516536439,470.92601754108,479.64686971777,488.36772189445,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Harmonics 30-60"},harm30:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,310.07474405997,322.00069575458,334.88072358477,348.83408706747,364.00078650518,398.6675280771,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024,1196.00258423131,1395.33634826987,1674.40361792384,2093.0045224048,2790.67269653973,4186.0090448096,8372.0180896192,8633.6436549198,8895.2692202204,9156.894785521,9418.5203508216,9680.1459161222,9941.7714814228,10203.3970467234,10465.022612024,10726.6481773246,10988.2737426252,11249.8993079258,11511.5248732264,11773.150438527,12034.7760038276,12296.4015691282,12558.0271344288,12819.6526997294,13081.27826503,13342.9038303306,13604.5293956312,13866.1549609318,14127.7805262324,14389.406091533,14651.0316568336,14912.6572221342,15174.2827874348,15435.9083527354,15697.533918036,15959.1594833366,16220.7850486372],description:"First 30 harmonics and subharmonics"},"harm32-64":{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,335.20775554139,343.38355445704,351.55935337268,359.73515228832,367.91095120397,376.08675011961,384.26254903526,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,449.66894036041,457.84473927605,466.02053819169,474.19633710734,482.37213602298,490.54793493862,498.72373385427,506.89953276991,515.07533168556,523.2511306012],description:"Harmonics 32-64"},harm37odd:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Odd harmonics until 37"},harm4:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862],description:"Fourth octave of the harmonic overtone series"},"harm6-12":{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,331.11985608357,343.38355445704,359.73515228832,367.91095120397,392.4383479509,400.61414686654,404.70204632437,408.78994578219,441.49314144476,449.66894036041,457.84473927605,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"First 12 harmonics of 6th through 12th harmonics"},harm6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:"Harmonics 6-12"},"harm60-30":{frequencies:[261.6255653006,280.31310567921,290.69507255622,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,413.09299784305,436.04260883433,448.50096908674,490.54793493862,523.2511306012],description:"Harmonics 60 to 30 (Perkis)"},harm7lim:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,3139.5067836072,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,7325.5158284168,7848.766959018,8372.0180896192,9156.894785521,9418.5203508216,10465.022612024,10988.2737426252,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14651.0316568336,15697.533918036,16482.4106139378,16744.0361792384,18313.789571042,18837.0407016432,19621.917397545,20930.045224048,21191.6707893486,21976.5474852504,23546.300877054,25116.0542688576,25639.3053994588,26162.55653006,27470.684356563,29302.0633136672,31395.067836072],description:"7-limit harmonics"},harm8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 8-16"},harm9:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,356.10146388137,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"6/7/8/9 harmonics, First 9 overtones of 5th through 9th harmonics"},harm_bastard:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:`Schlesinger's "Bastard" Hypodorian Harmonia & inverse 1)7 from 1.3.5.7.9.11.13`},harm_bastinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,523.2511306012],description:`Inverse Schlesinger's "Bastard" Hypodorian Harmonia & 1)7 from 1.3.5.7.9.11.13`},harm_darreg:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,5232.511306012,6279.0135672144,7325.5158284168,8372.0180896192,9418.5203508216,10465.022612024,11511.5248732264,12558.0271344288,13604.5293956312,14651.0316568336,15697.533918036],description:"Darreg Harmonics 4-15"},harm_mean:{frequencies:[261.6255653006,270.06509966514,279.06726965397,299.00064605783,348.83408706747,392.4383479509,405.0976494977,418.60090448096,448.50096908674,523.2511306012],description:"Harm. Mean 9-tonic 8/7 is HM of 1/1 and 4/3, etc."},"harmc-hypop":{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,363.36884069528,377.90359432309,406.97310157871,465.11211608996,494.18162334558,523.2511306012],description:"HarmC-Hypophrygian"},"harmd-15":{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"HarmD-15-Harmonia"},"harmd-conmix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-ConMixolydian"},"harmd-hypod":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"HarmD-Hypodorian"},"harmd-hypol":{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"HarmD-Hypolydian"},"harmd-hypop":{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,406.97310157871,436.04260883433,465.11211608996,523.2511306012],description:"HarmD-Hypophrygian"},"harmd-lyd":{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"HarmD-Lydian"},"harmd-mix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-Mixolydian. Harmonics 7-14"},"harmd-phr":{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,348.83408706747,327.03195662575,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"HarmD-Phryg (with 5 extra tones)"},"harme-hypod":{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,376.08675011961,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"HarmE-Hypodorian"},"harme-hypol":{frequencies:[261.6255653006,281.24748269815,274.70684356563,340.11323489078,366.27579142084,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"HarmE-Hypolydian"},"harme-hypop":{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,363.36884069528,377.90359432309,406.97310157871,494.18162334558,508.71637697339,523.2511306012],description:"HarmE-Hypophrygian"},"harmjc-15":{frequencies:[261.6255653006,280.31310567921,301.87565226992,313.95067836072,327.03195662575,356.76213450082,373.75080757229,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Rationalized JC Sub-15 Harmonia on C. MD=15, No planetary assignment."},"harmjc-17-2":{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-17":{frequencies:[261.6255653006,269.55361273395,277.97716313189,296.50897400735,317.68818643644,342.12573923925,355.81076880882,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-19-2":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-19":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,414.24047839262,432.2509339749,451.89870370104,473.41768959156,497.08857407114,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-21":{frequencies:[261.6255653006,268.0066766494,274.70684356563,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,406.97310157871,422.62591317789,439.53094970501,457.84473927605,523.2511306012],description:"Rationalized JC Sub-21 Harmonia on C. MD=21, No planetary assignment."},"harmjc-23-2":{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,462.87600014722,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-23":{frequencies:[261.6255653006,273.51763645063,300.86940009569,316.70463167967,334.29933343966,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,481.3910401531,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-25":{frequencies:[261.6255653006,272.52663052146,297.30177875068,311.45900631024,327.03195662575,363.36884069528,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,503.12608711654,523.2511306012],description:"Rationalized JC Sub-25 Harmonia on C. MD=25, No planetary assignment."},"harmjc-27":{frequencies:[261.6255653006,271.68808704293,294.32876096318,307.12566361375,321.08592105074,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,504.56359022259,523.2511306012],description:"Rationalized JC Sub-27 Harmonia on C. MD=27, No planetary assignment."},"harmjc-hypod16":{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,418.60090448096,440.63253103259,465.11211608996,523.2511306012],description:"Rationalized JC Hypodorian Harmonia on C. Saturn Scale on C, MD=16. (Steiner)"},"harmjc-hypol20":{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,455.00098313148,575.57624366132,523.2511306012],description:"Rationalized JC Hypolydian Harmonia on C. Mars scale on C., MD=20"},"harmjc-hypop18":{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Rationalized JC Hypophrygian Harmonia on C. Jupiter scale on C, MD =18"},"harmjc-lydian13":{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,400.13321751856,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"Rationalized JC Lydian Harmonia on C. Mercury scale on C, MD = 26 or 13"},"harmjc-mix14":{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,332.97799220076,348.83408706747,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Rationalized JC Mixolydian Harmonia on C. Moon Scale on C, MD = 14"},"harmjc-phryg12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Rationalized JC Phrygian Harmonia on C. Venus scale on C, MD = 24 or 12"},harmonical:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"See pp 17 and 466-468 Helmholtz. lower 4 oct. Instr. designed & tuned by Ellis"},harmonical_up:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,457.84473927605,392.4383479509,408.78994578219,425.14154361347,474.19633710734,490.54793493862,523.2511306012],description:"Upper 2 octaves of Ellis's Harmonical"},harmsub16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,301.87565226992,327.03195662575,356.76213450082,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"16 harmonics on 1/1 and 16 subharmonics on 15/8"},harrison_16:{frequencies:[261.6255653006,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:'Lou Harrison 16-tone superparticular "Ptolemy Duple"'},harrison_5:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_3:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,406.97310157871,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,490.54793493862,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_8:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,367.91095120397,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:'Lou Harrison 8-tone tuning for "Serenade for Guitar"'},harrison_cinna:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,343.38355445704,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Lou Harrison, "Incidental Music for Corneille's Cinna" (1955-56) 1/1=C`},harrison_diat:{frequencies:[261.6255653006,274.70684356563,313.95067836072,348.83408706747,392.4383479509,412.06026534844,470.92601754108,523.2511306012],description:"From Lou Harrison, a soft diatonic"},harrison_joy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Lou Harrison's Joyous 6"},harrison_mid:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Lou Harrison mid mode"},harrison_mid2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"Lou Harrison mid mode 2"},harrison_min:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"From Lou Harrison, a symmetrical pentatonic with minor thirds"},harrison_mix1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,425.14154361347,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix2:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix3:{frequencies:[261.6255653006,313.95067836072,336.37572681506,392.4383479509,418.60090448096,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix4:{frequencies:[261.6255653006,280.31310567921,327.03195662575,392.4383479509,448.50096908674,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_songs:{frequencies:[261.6255653006,271.31540105247,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'Shared gamut of "Four Strict Songs" (1951-55), each pentatonic'},harrisonj:{frequencies:[261.6255653006,272.17712546173,292.13970819848,313.56642833783,326.21280531667,350.13858362887,364.25994396351,390.97625694066,406.744629928,436.57694340361,468.59728067062,487.49616921257,523.2511306012],description:"John Harrison's temperament (1775), almost 3/10-comma. Third = 1200/pi"},harrisonm_rev:{frequencies:[261.6255653006,257.53766584278,294.32876096318,289.72987407313,331.11985608357,343.38355445704,372.50983809402,392.4383479509,386.30649876417,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:'Michael Harrison, piano tuning for "Revelation" (2001), 1/1=F'},haverstick13:{frequencies:[261.6255653006,283.85429714132,301.75671459889,307.97166902637,320.78822215662,341.02002673508,362.52783176564,377.61479489998,401.43059675514,426.7484383229,444.50800708553,482.27514684959,502.34551296122,523.2511306012],description:"Neil Haverstick, scale in 34-tET, MMM 21-5-2006"},hawkes:{frequencies:[261.6255653006,274.56549986328,292.86986732103,310.24975557428,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901507992,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1807)"},hawkes2:{frequencies:[261.6255653006,275.15193010334,293.04845178801,312.10900487995,328.24542585003,349.59527202198,367.66978141816,391.58387939843,411.8292495232,438.61558204759,467.14415995873,491.2960898965,523.2511306012],description:"Meantone with fifth tempered 1/6 of 53-tET step by William Hawkes (1808)"},hawkes3:{frequencies:[261.6255653006,274.56549986328,292.86986732103,311.6193417424,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1811)"},hbarnes:{frequencies:[261.6255653006,276.71351472429,293.33333347996,310.95136287868,328.88393162803,349.42547049952,369.15973155124,391.77416758435,414.83597850347,439.25532436715,466.16376151809,493.04743111995,523.2511306012],description:"Variation on Barnes with 1/6P -> 1/8P. OdC '99"},hebdome1:{frequencies:[261.6255653006,265.71346475842,267.23182741418,269.80136421624,273.30527803723,280.31310567921,283.42769574232,287.78812183066,289.07289023169,292.28481123426,294.32876096318,300.63580584096,303.67253115248,308.34441624714,311.77046531655,315.35224388912,318.85615771011,323.76163705949,327.03195662575,334.03978426773,336.37572681506,340.11323489078,341.63159754654,346.88746827803,350.74177348112,359.73515228832,364.40703738298,367.91095120397,370.01329949656,375.7947573012,382.62738925213,385.43052030892,389.71308164569,392.4383479509,400.84774112128,404.70204632437,409.95791705585,411.12588832951,417.54973033466,420.46965851882,425.14154361347,431.68218274599,437.28844485957,441.49314144476,445.38637902364,449.66894036041,455.50879672872,462.5166243707,467.65569797482,470.92601754108,478.28423656516,479.64686971777,485.87604984397,490.54793493862,501.0596764016,504.56359022259,510.16985233617,513.90736041189,523.2511306012],description:"Wilson 1.3.5.7.9.11.13.15 hebdomekontany, 1.3.5.7 tonic"},helmholtz:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Helmholtz's Chromatic scale and Gipsy major from Slovakia"},helmholtz_24:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,331.11985608357,344.91651675372,348.83408706747,367.91095120397,372.50983809402,388.03108134794,392.4383479509,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,517.37477513058,523.2511306012],description:"Simplified Helmholtz 24"},helmholtz_hd:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Helmholtz Harmonic Decad"},helmholtz_pure:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,330.74639366397,344.91651675372,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,413.43299207996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,496.11959049595,516.79124009995,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning untempered"},helmholtz_temp:{frequencies:[261.6255653006,275.81645389904,279.10671937395,290.77707354032,294.24580701304,306.54917537161,310.20605716322,327.03195662575,330.9330448436,344.77062435684,348.88325535732,367.80710710303,372.19474608839,387.75741156435,392.38304142029,408.78994578219,413.66637442451,436.10414127513,441.30625330017,459.75895986689,465.24324076996,490.4788828408,496.3296094287,517.08305349316,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning"},hem_chrom:{frequencies:[261.6255653006,269.55361273395,285.40970760065,348.83408706747,392.4383479509,404.33041910093,428.11456140098,523.2511306012],description:"Hemiolic Chromatic genus has the strong or 1:2 division of the 12/11 pyknon"},hem_chrom11:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"11'al Hemiolic Chromatic genus with a CI of 11/9, Winnington-Ingram"},hem_chrom13:{frequencies:[261.6255653006,272.09058791262,283.42769574232,348.83408706747,392.4383479509,408.13588186894,425.14154361347,523.2511306012],description:"13'al Hemiolic Chromatic or neutral-third genus has a CI of 16/13"},hem_chrom2:{frequencies:[261.6255653006,269.29177952703,285.30470202322,349.22823143301,391.99543598175,403.48177901006,427.47405410759,523.2511306012],description:"1:2 Hemiolic Chromatic genus 3 + 6 + 21 parts"},hemiwuer24:{frequencies:[261.6255653006,274.60778382002,280.48822448524,286.49458884928,292.62957327549,307.15025309186,313.72755695954,320.44570714783,327.30771955335,350.90592546776,358.42021185082,366.09540888186,373.9349620795,392.49012653442,400.89489544613,409.47964376542,418.24822532303,439.00227453173,448.4030528436,458.00513880662,467.8128437444,491.02635713596,501.54117720983,512.28116095218,523.2511306012],description:"Hemiw\xEF\xBF\xBDrschmidt[24] in 229-tET tuning."},hen12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Adjusted Hahn12"},hen22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,415.27867508032,418.60090448096,436.04260883433,448.50096908674,457.84473927605,484.4917875937,490.54793493862,508.71637697339,523.2511306012],description:"Adjusted Hahn22"},hept_diamond:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,316.53463456122,325.57848126297,327.03195662575,334.88072358477,336.37572681506,348.83408706747,392.4383479509,406.97310157871,408.78994578219,418.60090448096,420.46965851882,432.48307733364,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Inverted-Prime Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondi:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,281.36411960997,289.40309445597,294.32876096318,297.67175429757,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,459.88868900496,465.11211608996,473.02836583367,486.54346200035,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Prime-Inverted Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondp:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,361.75386806997,367.91095120397,372.08969287196,378.42269266694,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Heptatonic Diamond based on Archytas's Enharmonic, 27 tones"},herf:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Sims:Reflections on This and That, 1991. Used by Herf in Ekmelischer Gesang"},heun:{frequencies:[261.6255653006,275.15237829755,293.0485888979,312.10878854255,328.24573110938,349.59519124833,367.67029324081,391.58396987353,411.83001550364,438.61588607285,467.14394139401,491.29666030217,523.2511306012],description:"Well temperament for organ of Jan Heun (1805), subset of 55-tET"},hexagonal13:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 13-tone scale"},hexagonal37:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,313.95067836072,322.99452506247,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 37-tone scale"},hexany1:{frequencies:[261.6255653006,305.22982618403,327.03195662575,381.53728273004,436.04260883433,457.84473927605,523.2511306012],description:"Two out of 1 3 5 7 hexany on 1.3"},hexany10:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"1.3.5.9 Hexany"},hexany11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"1.3.7.9 Hexany on 1.3"},hexany12:{frequencies:[261.6255653006,290.69507255622,305.22982618403,339.14425131559,406.97310157871,436.04260883433,523.2511306012],description:"3.5.7.9 Hexany on 3.9"},hexany13:{frequencies:[261.6255653006,285.40970760065,327.03195662575,356.76213450082,392.4383479509,475.68284600109,523.2511306012],description:"1.3.5.11 Hexany on 1.11"},hexany14:{frequencies:[261.6255653006,287.78812183066,340.11323489078,383.71749577421,453.48431318771,498.83274450648,523.2511306012],description:"5.11.13.15 Hexany (5.15), used in The Giving, by Stephen J. Taylor"},hexany15:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"1.3.5.15 2)4 hexany (1.15 tonic) degenerate, symmetrical pentatonic"},hexany16:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,465.11211608996,523.2511306012],description:"1.3.9.27 Hexany, a degenerate pentatonic form"},hexany17:{frequencies:[261.6255653006,327.03195662575,334.88072358477,408.78994578219,418.60090448096,523.2511306012],description:"1.5.25.125 Hexany, a degenerate pentatonic form"},hexany18:{frequencies:[261.6255653006,299.00064605783,341.71502406609,400.61414686654,457.84473927605,523.2511306012],description:"1.7.49.343 Hexany, a degenerate pentatonic form"},hexany19:{frequencies:[261.6255653006,299.00064605783,327.03195662575,418.60090448096,457.84473927605,523.2511306012],description:"1.5.7.35 Hexany, a degenerate pentatonic form"},hexany2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 2"},hexany20:{frequencies:[261.6255653006,279.06726965397,305.22982618403,398.6675280771,436.04260883433,465.11211608996,523.2511306012],description:"3.5.7.105 Hexany"},hexany21:{frequencies:[261.6255653006,279.06726965397,310.07474405997,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany"},hexany21a:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany + 4/3. Is Didymos Diatonic tetrachord on 1/1 and inv. on 3/2"},hexany22:{frequencies:[261.6255653006,276.76092858245,359.73515228832,380.54627680087,494.63583439645,523.2511306012],description:"1.11.121.1331 Hexany, a degenerate pentatonic form"},hexany23:{frequencies:[261.6255653006,348.83408706747,359.73515228832,380.54627680087,392.4383479509,523.2511306012],description:"1.3.11.33 Hexany, degenerate pentatonic form"},hexany24:{frequencies:[261.6255653006,327.03195662575,359.73515228832,380.54627680087,418.60090448096,523.2511306012],description:"1.5.11.55 Hexany, a degenerate pentatonic form"},hexany25:{frequencies:[261.6255653006,299.00064605783,359.73515228832,380.54627680087,457.84473927605,523.2511306012],description:"1.7.11.77 Hexany, a degenerate pentatonic form"},hexany26:{frequencies:[261.6255653006,294.32876096318,359.73515228832,380.54627680087,465.11211608996,523.2511306012],description:"1.9.11.99 Hexany, a degenerate pentatonic form"},hexany3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 3"},hexany4:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 4"},hexany49:{frequencies:[261.6255653006,299.00064605783,305.22982618403,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"1.3.21.49 2)4 hexany (1.21 tonic)"},hexany5:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 5"},hexany6:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 6"},hexany7:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 7"},hexany8:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,340.65828815182,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 8"},hexany9:{frequencies:[261.6255653006,299.00064605783,313.95067836072,358.80077526939,418.60090448096,448.50096908674,523.2511306012],description:"1.3.5.7 Hexany on 5.7"},hexany_cl:{frequencies:[261.6255653006,294.32876096318,301.39265122629,313.95067836072,327.03195662575,348.83408706747,353.19451315581,376.74081403286,392.4383479509,418.60090448096,470.92601754108,502.32108537715,523.2511306012],description:"Hexany Cluster 1"},hexany_cl2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Composed of 1.3.5.45, 1.3.5.75, 1.3.5.9, and 1.3.5.25 hexanies"},hexany_flank:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,327.03195662575,348.83408706747,373.75080757229,381.53728273004,427.14378008261,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Hexany Flanker, 7-limit, from Wilson"},hexany_tetr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,336.37572681506,348.83408706747,358.80077526939,523.2511306012],description:"Complex 12 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,339.14425131559,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,358.80077526939,372.08969287196,523.2511306012],description:"Complex 2 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,523.2511306012],description:"Complex 9 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_u2:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Hexany union = genus [335577] minus two corners"},hexany_union:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"The union of all of the pitches of the 1.3.5.7 hexany on each tone as 1/1"},hexany_urot:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,333.84512238879,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,392.4383479509,400.61414686654,406.97310157871,436.04260883433,445.12682985172,448.50096908674,457.84473927605,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Aggregate rotations of 1.3.5.7 hexany, 1.3 = 1/1"},hexanys:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Hexanys 1 3 5 7 9"},hexanys2:{frequencies:[261.6255653006,314.76825825228,425.14154361347,457.84473927605,269.80136421624,371.99885066179,392.4383479509,472.15238737843,318.85615771011,359.73515228832,343.38355445704,292.28481123426,523.2511306012],description:"Hexanys 1 3 7 11 13"},higgs:{frequencies:[261.6255653006,392.4383479509,418.60090448096,422.62591317789,423.58424858192,425.14154361347,436.04260883433,523.2511306012],description:"From Greg Higgs announcement of the formation of an Internet Tuning list"},hinsz_gr:{frequencies:[261.6255653006,274.68983337859,292.34127285051,310.07474405997,326.6631048533,348.83408706747,366.25311135453,391.11111150212,412.03474986192,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Reconstructed Hinsz temperament, organ Pelstergasthuiskerk Groningen. Ortgies,2002"},hipkins:{frequencies:[261.6255653006,275.62199471997,299.00064605783,348.83408706747,392.4383479509,413.43299207996,448.50096908674,523.2511306012],description:"Hipkins' Chromatic"},hirajoshi:{frequencies:[261.6255653006,291.13134764929,317.84796618517,388.16504068057,412.91271853531,523.2511306012],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.112"},hirajoshi2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"Japanese pentatonic koto scale, theoretical. Helmholz/Ellis p.519, nr.110"},hirajoshi3:{frequencies:[261.6255653006,292.47977325983,321.54118165335,396.32121331049,415.54465627623,522.94897617031],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.111"},hirashima:{frequencies:[261.6255653006,277.33928225406,292.50627485027,312.00669222389,327.03195662575,349.91912034749,369.78570985692,391.22147055517,416.00892317314,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Tatsushi Hirashima, temperament of chapel organ of Kobe Shoin Women's Univ."},hjelmboogie:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:`Paul Hjelmstad's "Boogie Woogie" scale, TL 20-3-2006`},ho_mai_nhi:{frequencies:[261.6255653006,287.78812183066,348.83408706747,392.4383479509,431.68218274599,523.2511306012],description:"Ho Mai Nhi (Nam Hue) dan tranh scale, Vietnam"},hochgartz:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.86458629683,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.49999887294,438.2147004401,465.53241962975,490.54793493862,523.2511306012],description:"Michael Hochgartz, modified 1/5-comma meantone temperament"},hofmann1:{frequencies:[261.6255653006,262.65154790962,279.06726965397,348.83408706747,392.4383479509,393.97732186443,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #1, Dorian mode"},hofmann2:{frequencies:[261.6255653006,263.56353245097,279.06726965397,348.83408706747,392.4383479509,395.34529867646,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #2, Dorian mode"},hofmann_chrom:{frequencies:[261.6255653006,264.26824777838,290.69507255622,348.83408706747,392.4383479509,396.40237166758,436.04260883433,523.2511306012],description:"Hofmann's Chromatic"},holder:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,409.94826565972,437.46806069696,467.28984664562,489.70152554512,523.2511306012],description:"William Holder's equal beating meantone temperament (1694). 3/2 beats 2.8 Hz"},holder2:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,410.64811919433,437.46806069696,467.46154552107,489.70152554512,523.2511306012],description:"Holder's irregular e.b. temperament with improved Eb and G#"},hummel:{frequencies:[261.6255653006,277.1703574486,293.54676487235,311.03465677994,329.45811370906,349.13199096171,369.8583804246,391.99149393462,415.308682162,439.8732919971,466.10512967869,493.74031485884,523.2511306012],description:"Johann Nepomuk Hummel's quasi-equal temperament (1829)"},hummel2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"Johann Nepomuk Hummel's temperament according to the second bearing plan"},husmann:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747],description:"Tetrachord division according to Husmann"},hwerck3:{frequencies:[261.6255653006,276.40121172404,293.00227310437,310.60041853231,328.69828757761,349.03110370139,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Variation on Werckmeister III with 1/4P -> 1/6P and 0P -> 1/24P. OdC '99"},hyper_enh:{frequencies:[261.6255653006,264.93728131706,268.33391312882,348.83408706747,392.4383479509,397.40592197559,402.50086969323,523.2511306012],description:"13/10 HyperEnharmonic. This genus is at the limit of usable tunings"},hyper_enh2:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Hyperenharmonic genus from Kathleen Schlesinger's enharmonic Phrygian Harmonia"},hypo_chrom:{frequencies:[261.6255653006,275.39533189537,282.83844897362,290.69507255622,348.83408706747,373.75080757229,387.59343007496,402.50086969323,418.60090448096,427.14378008261,436.04260883433,455.00098313148,523.2511306012],description:"Hypolydian Chromatic Tonos"},hypo_diat:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012],description:"Hypolydian Diatonic Tonos"},hypo_enh:{frequencies:[261.6255653006,268.33391312882,271.81876914348,275.39533189537,348.83408706747,373.75080757229,387.59343007496,402.50086969323,410.39304360878,414.45634107026,418.60090448096,465.11211608996,523.2511306012],description:"Hypolydian Enharmonic Tonos"},hypod_chrom:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012],description:"Hypodorian Chromatic Tonos"},hypod_chrom2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chrom2inv:{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chromenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Hypodorian Harmonia in a mixed chromatic-enharmonic genus"},hypod_chrominv:{frequencies:[261.6255653006,277.97716313189,294.32876096318,359.73515228832,392.4383479509,408.78994578219,425.14154361347,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypodorian Inverted"},hypod_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012],description:"Hypodorian Diatonic Tonos"},hypod_diat2:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Schlesinger's Hypodorian Harmonia, a subharmonic series through 13 from 16"},hypod_diatcon:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,418.60090448096,465.11211608996,523.2511306012],description:"A Hypodorian Diatonic with its own trite synemmenon replacing paramese"},hypod_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Hypodorian Harmonia, a harmonic series from 8 from 16"},hypod_enh:{frequencies:[261.6255653006,270.06509966514,274.49239638096,279.06726965397,310.07474405997,348.83408706747,364.00078650518,380.54627680087,389.39619021485,393.97732186443,398.6675280771,452.54151835779,523.2511306012],description:"Hypodorian Enharmonic Tonos"},hypod_enhinv:{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypodorian Harmonia"},hypod_enhinv2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,359.73515228832,392.4383479509,400.61414686654,408.78994578219,523.2511306012],description:"A harmonic form of Schlesinger's Hypodorian enharmonic inverted"},hypodorian_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,784.8766959018,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the Hypodorian Tonos"},hypol_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the chromatic genus"},hypol_chrominv:{frequencies:[261.6255653006,313.95067836072,327.03195662575,340.11323489078,366.27579142084,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypolydian Harmonia"},hypol_chrominv2:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,523.2511306012],description:"harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_chrominv3:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_diat:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"Schlesinger's Hypolydian Harmonia, a subharmonic series through 13 from 20"},hypol_diatcon:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"A Hypolydian Diatonic with its own trite synemmenon replacing paramese"},hypol_diatinv:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Inverted Schlesinger's Hypolydian Harmonia, a harmonic series from 10 from 20"},hypol_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the enharmonic genus"},hypol_enhinv:{frequencies:[261.6255653006,327.03195662575,333.57259575826,340.11323489078,366.27579142084,392.4383479509,497.08857407114,510.16985233617,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypolydian Harmonia"},hypol_enhinv2:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,366.27579142084,379.35706968587,392.4383479509,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_enhinv3:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_pent:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,373.75080757229,402.50086969323,415.27867508032,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the pentachromatic genus"},hypol_tri:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,373.75080757229,402.50086969323,413.09299784305,424.25767346043,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the first trichromatic genus"},hypol_tri2:{frequencies:[261.6255653006,270.64713651786,290.69507255622,348.83408706747,373.75080757229,402.50086969323,413.09299784305,436.04260883433,2093.0045224048],description:"Schlesinger's Hypolydian Harmonia in the second trichromatic genus"},hypolydian_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,406.97310157871,457.84473927605,488.36772189445,523.2511306012,563.50121757052,610.45965236807,665.95598440153,732.55158284168,813.94620315742,915.6894785521,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypolydian Tonos"},hypop_chrom:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012],description:"Hypophrygian Chromatic Tonos"},hypop_chromenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia in a mixed chromatic-enharmonic genus"},hypop_chrominv:{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,377.90359432309,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypophrygian Harmonia"},hypop_chrominv2:{frequencies:[261.6255653006,276.16031892841,290.69507255622,348.83408706747,377.90359432309,406.97310157871,436.04260883433,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypophrygian inverted"},hypop_diat:{frequencies:[261.6255653006,294.32876096318,303.82323712328,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"Hypophrygian Diatonic Tonos"},hypop_diat2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia"},hypop_diat2inv:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,436.04260883433,465.11211608996,523.2511306012],description:"Inverted Schlesinger's Hypophrygian Harmonia, a harmonic series from 9 from 18"},hypop_diatcon:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012],description:"A Hypophrygian Diatonic with its own trite synemmenon replacing paramese"},hypop_enh:{frequencies:[261.6255653006,269.10058145205,273.00058987889,277.01530443593,313.95067836072,362.25078272391,376.74081403286,392.4383479509,400.78810003496,405.0976494977,409.50088481833,470.92601754108,523.2511306012],description:"Hypophrygian Enharmonic Tonos"},hypop_enhinv:{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,377.90359432309,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypophrygian Harmonia"},hypop_enhinv2:{frequencies:[261.6255653006,268.89294211451,276.16031892841,348.83408706747,377.90359432309,392.4383479509,406.97310157871,523.2511306012],description:"A harmonic form of Schlesinger's Hypophrygian enharmonic inverted"},hypophryg_pis:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,377.90359432309,425.14154361347,453.48431318771,523.2511306012,544.18117582525,566.85539148463,618.38769980142,680.22646978156,755.80718864618,850.28308722695,971.75209968794,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypophrygian Tonos"},kanzelmeyer_11:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 11 harmonics from 16 to 32. Base 388.3614815 Hz"},kanzelmeyer_18:{frequencies:[261.6255653006,277.97716313189,302.50455987882,310.68035879446,327.03195662575,335.20775554139,351.55935337268,359.73515228832,376.08675011961,384.26254903526,392.4383479509,425.14154361347,433.31734252912,457.84473927605,474.19633710734,482.37213602298,498.72373385427,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 18 harmonics from 32 to 64. Base 388.3614815 Hz"},kayolonian:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"19-tone 5-limit scale of the Kayenian Imperium on Kayolonia (reeks van Sjauriek)"},kayolonian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"See Barnard: De Keiaanse Muziek, p. 11. (uitgebreide reeks)"},kayolonian_40:{frequencies:[261.6255653006,267.90457886781,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,319.36714514233,327.03195662575,331.11985608357,334.88072358477,340.65828815182,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,401.85686830172,408.78994578219,413.43299207996,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,496.11959049595,502.32108537715,510.98743222773,523.2511306012],description:"See Barnard: De Keiaanse Muziek"},kayolonian_f:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"Kayolonian scale F and periodicity block (128/125, 16875/16384)"},kayolonian_p:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale P"},kayolonian_s:{frequencies:[261.6255653006,287.4304306281,306.59245933664,327.03195662575,359.28803828513,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale S"},kayolonian_t:{frequencies:[261.6255653006,279.06726965397,297.67175429757,317.51653791741,348.83408706747,381.01984550089,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale T"},kayolonian_z:{frequencies:[261.6255653006,279.06726965397,297.67175429757,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale Z"},kayoloniana:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"Amendment by Rasch of Kayolonian scale's note 9"},"kebyar-b":{frequencies:[261.6255653006,280.40333801024,299.48910562989,384.37207420335,402.78320381033,523.2511306012],description:"Gamelan Kebyar tuning begbeg, Andrew Toth, 1993"},"kebyar-s":{frequencies:[261.6255653006,283.00682726281,309.51375468789,385.26118901859,416.26536455926,523.2511306012],description:"Gamelan kebyar tuning sedung, Andrew Toth, 1993"},"kebyar-t":{frequencies:[261.6255653006,293.15632631094,325.27731021818,397.46748834812,422.07621250312,523.2511306012],description:"Gamelan kebyar tuning tirus, Andrew Toth, 1993"},keenan:{frequencies:[261.6255653006,279.77706779472,292.57243455474,305.95298478736,327.17991022208,349.87955533643,365.88099775759,391.26571058456,418.41160951721,437.54730686196,457.55816161244,489.30340830564,523.2511306012],description:"Dave Keenan 31-ET mode has 3 4:5:6:7 tetrads + 3 inv. is Fokker's 12-tone mode"},keenan2:{frequencies:[261.6255653006,278.14493936283,295.70736791055,306.84360659709,326.21810583671,346.81593583087,369.99442271164,393.35634555235,418.19337019276,433.94238997708,461.34206956593,490.47180009913,523.2511306012],description:"Dave Keenan strange 9-limit temperament TL 19-11-98"},keenan3:{frequencies:[261.6255653006,272.10155294862,282.99701916355,314.19580976213,326.77681046955,339.86157848985,377.32935907335,392.4383479509,408.1523292189,453.14877154631,471.29371440761,523.2511306012],description:"Chain of 1/6 kleisma tempered 6/5s, 10 tetrads, Dave Keenan, 30-Jun-99, TD235"},keenan3eb:{frequencies:[261.6255653006,272.52625793573,283.88113057344,314.31833892864,327.41448875753,341.05629284549,377.62371824792,393.35750206077,409.74683779238,453.67913385439,472.5817850056,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 same"},keenan3eb2:{frequencies:[261.6255653006,271.88912362492,282.55531921581,314.13446783,326.45794787121,339.26487744082,377.18204004818,391.97887331053,407.35618327602,452.88341485066,470.6500094,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 opposite"},keenan3j:{frequencies:[261.6255653006,291.88463270656,302.72962012827,313.97755176024,350.29154279212,363.30663963964,405.32593044476,420.38583225541,436.00528786292,486.43275040712,504.50618240233,523.2511306012],description:"Chain of 11 nearly just 19-tET minor thirds, Dave Keenan, 1-Jul-99"},keenan7:{frequencies:[261.6255653006,269.29177952703,279.86396690685,288.06460709314,296.5055443788,305.19382000629,314.13668154225,326.46944327063,336.03572815422,349.22823143301,359.46139971304,369.99442271164,380.8360868427,391.99543598175,407.38487419079,419.32216217931,435.78442404634,448.5538823653,461.69751437372,475.22628419761,489.15147723638,508.3551866238,523.2511306012],description:"Dave Keenan, 22 out of 72-tET periodicity block. TL 29-04-2001"},keenanmt:{frequencies:[261.6255653006,279.93529690293,292.50627485027,305.64177427204,327.03195662575,349.91912034749,365.63284274659,391.22147055517,418.60090448096,437.39890198442,457.04105241293,489.02683710225,523.2511306012],description:"Dave Keenan 1/4-comma tempered version of keenan with 6 7-limit tetrads"},keenanst:{frequencies:[261.6255653006,268.50609092997,277.46533822773,286.72352888229,294.26410920268,304.08282473376,314.22916151277,322.49311613356,333.25374941849,342.01803421352,353.43015577174,365.22306367425,374.82811589307,387.33500976677,397.52158713557,410.7856943143,424.4923875554,435.65616946139,450.19271626925,462.0323945472,477.44903730562,493.38008744487,506.35555615636,523.2511306012],description:"Dave Keenan, 7-limit temperament, g=260.353"},kelletat:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,327.14272545641,348.82502010853,367.43868454848,391.99543598175,413.39000965417,437.97145880542,465.08793784701,489.90551202062,523.2511306012],description:"Herbert Kelletat's Bach-tuning (1967)"},kellner:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,491.32444638706,523.2511306012],description:"Herbert Anton Kellner's Bach tuning. 5 1/5 Pyth. comma and 7 pure fifths"},kellners:{frequencies:[261.6255653006,275.84425785506,292.86986732103,310.2247482054,327.84547867349,348.89032888179,367.85164222246,391.46454285105,413.69968681881,438.2147004401,465.26210635182,491.68894399626,523.2511306012],description:"Kellner's temperament with 1/5 synt. comma instead of 1/5 Pyth. comma"},kepler1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.1, Harmonices Mundi (1619)"},kepler2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.2"},kepler3:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Kepler's choice system, Harmonices Mundi, Liber III (1619)"},kilroy:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Kilroy"},kimball:{frequencies:[261.6255653006,272.52663052146,275.93321340298,290.69507255622,294.32876096318,306.59245933664,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Buzz Kimball 18-note just scale"},kimball_53:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,281.75060878526,283.42769574232,285.40970760065,287.78812183066,296.50897400735,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,461.69217405988,475.68284600109,479.64686971777,483.00104363188,485.87604984397,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Buzz Kimball 53-note just scale"},kirkwood:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Scale based on Kirkwood gaps of the asteroid belt"},"kirn-stan":{frequencies:[261.6255653006,276.16031892841,292.60754013883,310.68035879446,327.03195662575,348.83408706747,368.21375857121,392.4383479509,414.24047839262,437.1900893839,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger temperament improved by Charles Earl Stanhope (1806)"},kirnberger:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's well-temperament, also called Kirnberger III, letter to Forkel 1779"},kirnberger1:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,438.75944753732,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's temperament 1 (1766)"},kirnberger2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,438.75941205608,465.11211608996,490.54793493862,523.2511306012],description:'Kirnberger 2: 1/2 synt. comma. "Die Kunst des reinen Satzes" (1774)'},kirnberger3:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.89982010446,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger 3: 1/4 synt. comma (1744)"},kirnberger3v:{frequencies:[261.6255653006,275.93321340298,292.50063201309,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.21579858034,413.43299207996,437.39258595147,465.11211608996,490.54793493862,523.2511306012],description:"Variant well-temperament like Kirnberger 3, Kenneth Scholz, MTO 4.4, 1998"},klais:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,327.21690075602,348.83408706747,367.49599295996,391.99543598175,413.43299207996,438.01699797506,465.11211608996,489.99465727995,523.2511306012],description:"Johannes Klais, Bach temperament"},klonaris:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Johnny Klonaris, 19-limit harmonic scale"},knot:{frequencies:[261.6255653006,268.26840191956,280.31310567921,286.15296204753,294.32876096318,299.00064605783,306.59245933664,327.03195662575,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,459.88868900496,476.92160341255,478.40103369253,490.54793493862,523.2511306012],description:"Smallest knot in 3-D, American Scientist, Nov-Dec '97 p506-510, trefoil knot"},koepf_36:{frequencies:[261.6255653006,272.26348829648,274.95017225036,277.18263097687,288.45311779165,291.29956028699,293.66476791741,305.60543275312,308.62113352716,311.12698372208,323.77767743764,326.97270111135,329.62755691287,343.03050002254,346.41550969045,349.22823143301,363.4281550135,367.0144478307,369.99442271164,385.03871768789,388.83826257328,391.99543598175,407.93431128975,411.95978887118,415.30469757995,432.19134773437,436.45619266906,440,457.89078262597,462.40922843744,466.16376151809,485.11838543951,489.90551202062,493.88330125613,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 36-tone subset of 48-tone scale (1991)"},koepf_48:{frequencies:[261.6255653006,269.44737349144,272.26348829648,274.95017225036,277.18263097687,285.46954808622,288.45311779165,291.29956028699,293.66476791741,302.44445076078,305.60543275312,308.62113352716,311.12698372208,320.42873367481,323.77767743764,326.97270111135,329.62755691287,339.48241770075,343.03050002254,346.41550969045,349.22823143301,359.66909273781,363.4281550135,367.0144478307,369.99442271164,381.0561299374,385.03871768789,388.83826257328,391.99543598175,403.71490654806,407.93431128975,411.95978887118,415.30469757995,427.72104413038,432.19134773437,436.45619266906,440,453.15466093696,457.89078262597,462.40922843744,466.16376151809,480.10063929961,485.11838543951,489.90551202062,493.88330125613,508.64890891624,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 48-tone scale (1991)"},kolinsky:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Kolinsky's 7th root of 3/2, also invented by Augusto Novaro"},kora1:{frequencies:[261.6255653006,293.66476791741,326.78388880949,349.22823143301,391.99543598175,440,489.62261321254,523.2511306012],description:"Kora tuning Tomora Ba, also called Silaba, 1/1=F, R. King"},kora2:{frequencies:[261.6255653006,298.79793764201,315.65242990842,349.22823143301,391.99543598175,447.69106452518,472.94426956511,523.2511306012],description:"Kora tuning Tomora Mesengo, also called Tomora, 1/1=F, R. King"},kora3:{frequencies:[261.6255653006,291.13134764929,330.58093469714,349.22823143301,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Hardino, 1/1=F, R.King"},kora4:{frequencies:[261.6255653006,291.13134764929,330.58093469714,371.06455309218,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Sauta, 1/1=F, R. King"},korea_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:'According to Lou Harrison, called "the Delightful" in Korea'},kornerup:{frequencies:[261.6255653006,272.97226153513,280.22976278938,292.38332274669,305.0639823888,313.17470478367,326.75708630452,340.92853547661,349.99278713323,365.17196824772,374.88056242272,391.13935185123,408.10305876469,418.95303445734,437.12302030357,456.08130156398,468.2068441924,488.51296691354,509.70006023951,523.2511306012],description:"Kornerup's temperament with fifth of (15 - sqrt 5) / 22 octaves"},kornerup_11:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Kornerup's doric minor"},kraeh_22:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,320.49131749323,336.37572681506,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,400.61414686654,412.06026534844,436.04260883433,441.49314144476,457.84473927605,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Kraehenbuehl & Schmidt 7-limit 22-tone tuning"},kraeh_22a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,318.93402246168,320.49131749323,327.03195662575,336.37572681506,343.38355445704,348.83408706747,350.39138209902,353.19451315581,358.80077526939,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,400.61414686654,403.65087217807,408.78994578219,412.06026534844,418.60090448096,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,478.40103369253,488.36772189445,490.54793493862,498.33441009638,504.56359022259,523.2511306012],description:'Kraehenbuehl & Schmidt 7-limit 22-tone tuning with "inflections" for some tones'},kraeh_22b:{frequencies:[261.6255653006,269.10058145205,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,448.50096908674,457.84473927605,476.92160341255,490.54793493862,504.56359022259,523.2511306012],description:"Best 22-tET approximation of KRAEH_22A"},kring1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Double-tie circular mirroring of 4:5:6 and Partch's 5-limit tonality Diamond"},kring1p3:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,310.07474405997,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,441.49314144476,446.50763144636,454.2110508691,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Third carthesian power of double-tie mirroring of 4:5:6 with kleismas removed"},kring2:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,392.4383479509,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 6:7:8"},kring2p3:{frequencies:[261.6255653006,265.7783520514,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,515.07533168556,523.2511306012],description:"Third power of 6:7:8 mirroring with 1029/1024 intervals removed"},kring3:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,373.75080757229,436.04260883433,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 3:5:7"},kring3bp:{frequencies:[261.6255653006,336.37572681506,366.27579142084,436.04260883433,470.92601754108,560.62621135843,610.45965236807,784.8766959018],description:"Double-tie BP circular mirroring of 3:5:7"},kring4:{frequencies:[261.6255653006,299.00064605783,327.03195662575,366.27579142084,373.75080757229,418.60090448096,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 4:5:7"},kring4p3:{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.42990280658,286.15296204753,293.02063313667,299.00064605783,305.10270005901,320.49131749323,327.03195662575,334.88072358477,341.71502406609,350.53737850823,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.53145607553,400.61414686654,408.78994578219,418.60090448096,427.14378008261,448.68784449053,457.84473927605,467.18850946536,478.40103369253,488.16432009441,500.76768358318,510.98743222773,523.2511306012],description:"Third power of 4:5:7 mirroring with 3136/3125 intervals removed"},kring5:{frequencies:[261.6255653006,290.69507255622,336.37572681506,366.27579142084,373.75080757229,406.97310157871,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 5:7:9"},kring5p3:{frequencies:[261.6255653006,266.96486255163,272.4643387202,278.02483542877,284.8811711051,290.69507255622,296.68339105088,302.73815413355,308.91648380975,316.53463456122,322.99452506247,329.64821227876,336.37572681506,343.24053756638,351.70514951247,358.88280562497,366.27579142084,373.75080757229,381.45007420827,389.23476960028,398.83363954714,406.97310157871,415.27867508032,423.83341578697,432.48307733364,443.14848838571,452.19233508746,461.42075008924,470.92601754108,480.53675259294,492.38720931745,502.43592787495,512.78610798918,523.2511306012],description:"Third power of 5:7:9 mirroring with 250047/250000 intervals removed"},kring6:{frequencies:[261.6255653006,305.22982618403,336.37572681506,348.83408706747,392.4383479509,406.97310157871,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 6:7:9"},kring6p3:{frequencies:[261.6255653006,267.07609791103,271.31540105247,276.96780524107,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,316.53463456122,324.36230800023,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,361.75386806997,369.29040698809,378.42269266694,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,422.04617941496,432.48307733364,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,494.26637409559,504.56359022259,512.57253609913,523.2511306012],description:"Third power of 6:7:9 mirroring with 118098/117649 intervals removed"},krousseau:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,343.38355445704,348.83408706747,366.27579142084,392.4383479509,406.97310157871,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Kami Rousseau's tri-blues scale"},krousseau2:{frequencies:[261.6255653006,271.34627406517,291.88463270656,302.72962012827,337.74269681563,350.29154279212,363.30663963964,390.80553229045,405.32593044476,452.20508247496,469.00678383895,486.43275040712,523.2511306012],description:"19-tET version of Kami Rousseau's tri-blues scale"},kukuya:{frequencies:[261.6255653006,307.37578701508,361.96165147221,412.67427966689,460.80941404108],description:"African Kukuya Horns (aerophone, ivory, one note only)"},kurzw_arab:{frequencies:[261.6255653006,282.02769802256,290.29174037004,302.26980244078,321.16993719469,349.63190883464,374.94271441196,393.35634555235,411.95978887118,429.20598402782,447.69106452518,496.7443381147,523.2511306012],description:'Kurzweil "Empirical Arabic"'},kurzw_harmp:{frequencies:[261.6255653006,285.46954808622,287.62123438446,306.48933163909,308.79945157961,324.90175210669,345.81573716922,348.42227432308,427.72104413038,430.94493093825,458.94995811222,462.40922843744,523.2511306012],description:'Kurzweil "Empirical Bali/Java Harmonic Pelog"'},kurzw_melp:{frequencies:[261.6255653006,281.53940445957,283.98935579354,303.66981774726,307.02089761314,323.96475278212,344.02264297658,347.0163224393,421.10213511252,424.76655906637,451.06547253417,454.99063696457,523.2511306012],description:'Kurzweil "Empirical Bali/Java Melodic Pelog"'},kurzw_slen:{frequencies:[261.6255653006,266.96862289802,288.95340229325,306.66641795878,318.95145438803,352.26720984209,352.26720984209,389.06292924114,404.41509766528,429.20598402782,464.81937009253,474.03826620294,523.2511306012],description:'Kurzweil "Empirical Bali/Java Slendro, Siam 7"'},kurzw_tibet:{frequencies:[261.6255653006,270.53905136894,299.14332201883,312.9293240034,325.46525203475,353.69443592699,373.86139962101,397.69714089209,408.87792937274,438.98455767189,471.30800669535,489.90551202062,523.2511306012],description:'Kurzweil "Empirical Tibetian Ceremonial"'},kwazy:{frequencies:[13.75,13.8425266748,13.92142234948,14.00076777204,14.0805654254,14.16081788707,14.25610896047,14.337361936,14.41907801447,14.50125983535,14.58391005315,14.66703125278,14.76572882594,14.84988638999,14.93452361174,15.01964313826,15.10524789197,15.20689431811,15.29356631363,15.38073220905,15.46839499707,15.55655742089,15.66124080485,15.75050226619,15.84027256598,15.93055451337,16.0213510245,16.11266503216,16.22109048883,16.31354291552,16.40652227664,16.50003157548,16.59407373656,16.70573878851,16.80095347779,16.89671084507,16.99301388521,17.08986590459,17.18726993397,17.30292672931,17.40154500258,17.50072545316,17.60047118468,17.70078541898,17.81989766631,17.92146252619,18.023606257,18.12633215803,18.22964354736,18.35231459047,18.45691397115,18.56210951808,18.66790462912,18.77430261304,18.88130712282,19.00836345475,19.11670199894,19.22565790976,19.335234928,19.44543648263,19.57628896102,19.68786429416,19.80007566685,19.91292659048,20.02642071019,20.16118263857,20.27609169854,20.39165568498,20.50787833065,20.62476338959,20.74231451743,20.88189396397,21.00091073243,21.12060583931,21.24098302814,21.36204643183,21.50579618625,21.62836889778,21.75164008927,21.875613993,22.00029448845,22.14833914981,22.27457391904,22.40152829449,22.52920624893,22.65761190639,22.78674941445,22.94008616579,23.07083364148,23.202326315,23.33456843363,23.46756413327,23.62548236417,23.76013626908,23.89555763659,24.03175070206,24.16872014141,24.30647024079,24.47003364934,24.60950094889,24.74976328722,24.89082505353,25.03269080417,25.2011409598,25.3447753621,25.48922841152,25.63450477396,25.78060914191,25.95409219477,26.10201805756,26.25078702673,26.40040390759,26.55087337946,26.70220060843,26.88188539622,27.03509923475,27.18918616153,27.34415146685,27.5],description:"Kwazy temperament, g=162.741892, p=600, 5-limit"},lambdoma5_12:{frequencies:[261.6255653006,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,47.56828460011,52.32511306012,58.13901451124,65.40639132515,71.35242690016,74.75016151446,78.48766959018,87.20852176687,95.13656920022,98.10958698772,104.65022612024,109.01065220858,112.12524227169,116.27802902249,118.92071150027,130.8127826503,145.34753627811,149.50032302891,156.97533918036,163.51597831288,174.41704353373,186.87540378614,196.21917397545,209.30045224048,218.02130441717,261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012,654.0639132515,784.8766959018,1046.5022612024,1308.127826503],description:"5x12 Lambdoma"},lambdoma_prim:{frequencies:[261.6255653006,8.43953436454,9.02157121726,11.37502457829,13.76976659477,15.38973913533,16.87906872907,18.04314243452,20.12504348466,22.75004915657,23.78414230005,25.31860309361,27.06471365179,27.53953318954,30.77947827066,34.12507373486,37.37508075723,40.25008696932,41.30929978431,42.19767182268,45.10785608631,46.16921740599,47.56828460011,52.32511306012,56.87512289143,59.07674055175,60.37513045398,63.15099852083,68.84883297384,71.35242690016,74.75016151446,76.94869567665,79.62517204801,87.20852176687,96.38836616338,100.62521742331,104.65022612024,107.72817394731,112.12524227169,118.92071150027,130.8127826503,140.87530439263,156.97533918036,166.48899610038,174.41704353373,186.87540378614,261.6255653006,366.27579142084,392.4383479509,436.04260883433,523.2511306012,610.45965236807,654.0639132515,784.8766959018,915.6894785521,1308.127826503,1831.3789571042],description:"Prime Lambdoma"},lambert:{frequencies:[261.6255653006,276.15600972046,293.19138048956,310.67551062492,328.56569462012,349.50994910362,368.20801314466,391.67947347082,414.23401437362,438.93663604468,466.01326570444,491.89550004992,523.2511306012],description:"Lambert's temperament (1774) 1/7 Pyth. comma, 5 pure"},lara:{frequencies:[261.6255653006,286.4606265643,298.28060863281,313.11013128311,341.05478972476,377.11473546037,395.40657391157,420.13030572059,450.02449304881,492.74350578058,523.2511306012,577.23956595248,599.67057787333],description:"Sundanese 'multi-laras' gamelan Ki Barong tuning, Weintraub, TL 15-2-99 1/1=497"},lebanon:{frequencies:[261.6255653006,285.30470202322,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Lebanese scale? Dastgah Shur"},leedy:{frequencies:[261.6255653006,269.80136421624,290.69507255622,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:'Douglas Leedy, scale for "Pastorale" (1987), 1/1=f, 10/9 only in vocal parts'},leeuw1:{frequencies:[261.6255653006,311.12698372208,349.22823143301,380.8360868427,415.30469757995,466.16376151809,508.3551866238,554.36526195375,604.53960488156,659.25511382574,739.98884542327,806.96355802011,880,987.76660251225],description:'Ton de Leeuw: non-oct. mode from "Car nos vignes sont en fleurs",part 5. 1/1=A'},leftpistol:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Left Pistol"},legros1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.49749487796,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 3 just major thirds"},legros2:{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.49749487796,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 2 just major thirds"},"lehman-bach":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.77584116741,328.14198392915,349.6228209638,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Brad Lehman's Bach keyboard temperament"},lemba10:{frequencies:[261.6255653006,283.65327551057,298.9489942119,324.1191713102,341.59697290141,370.35792032269,401.5404117335,423.19307614937,458.82405293702,483.56568031466,524.27976214079],description:"10-note Lemba scale, Herman Miller"},lemba12:{frequencies:[261.6255653006,276.1173031791,283.29759227608,298.9897683987,323.75689816556,341.69016129748,369.99442271164,390.48883496177,400.64329718448,422.83538548023,457.86139629758,483.22286023634,523.2511306012],description:"Lemba[12] in 270-et (poptimal)"},lemba22:{frequencies:[261.6255653006,268.42900262332,276.1173031791,283.29759227608,298.9897683987,306.76484424299,315.55115201964,323.75689816556,341.69016129748,350.57563899649,360.61677037127,369.99442271164,379.61593604418,390.48883496177,400.64329718448,422.83538548023,433.83100318771,446.25671880862,457.86139629758,483.22286023634,495.78882330645,509.98912747823,523.2511306012],description:"Lemba[22] in 270-et (poptimal)"},lemba24:{frequencies:[261.6255653006,275.73346179752,283.65327551057,290.60211247891,298.9489942119,307.53562105228,315.06951922004,324.1191713102,332.05932738876,341.59697290141,351.40856549044,360.01724743313,370.35792032269,390.32910012969,401.5404117335,411.37720579947,423.19307614937,435.34833037897,446.01333880095,458.82405293702,470.06416125332,483.56568031466,497.45499966368,509.64147516102,524.27976214079],description:"24-note Lemba scale for mapping millerlemba24.kbm"},lemba8:{frequencies:[261.6255653006,275.73334871592,283.6533803711,298.94898212432,307.53584843097,324.11927802481,341.59694330429,351.4088110982,370.358025147],description:"Lemba temperament (4 down, 3 up) TOP tuning, Herman Miller, TL 22-11-2004"},leusden:{frequencies:[261.6255653006,275.54404190554,292.50627485027,310.51268695591,327.03195662575,349.91912034749,367.08095907728,391.22147055517,413.66634097248,437.39890198442,466.16376151809,489.02683710225,523.2511306012],description:"Organ in Gereformeerde kerk De Koningshof, Henk van Eeken, 1984, a'=415, modif. 1/4 mean"},leven:{frequencies:[261.6255653006,279.06726965397,298.97057995496,313.95067836072,330.39003879965,348.83408706747,369.35382642901,392.4383479509,418.60090448096,448.46752658184,465.11211608996,502.32108537715,523.2511306012],description:"Leven's monochord ?"},ligon:{frequencies:[261.6255653006,279.66870773512,292.40504357126,309.19384990071,329.87571277032,342.12573923925,366.27579142084,392.4383479509,411.12588832951,436.04260883433,462.87600014722,485.87604984397,523.2511306012],description:"Jacky Ligon, strictly proper all prime scale, TL 08-09-2000"},ligon2:{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,411.78935130154,441.2028763945,470.61640148747,500.02992658044,529.4434516734,558.85697676637],description:"Jacky Ligon, 19-limit symmetrical non-octave scale, 2001"},ligon3:{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,341.25073734861,376.08675011961,401.15920012759,427.90314680276,471.58492637221,481.3910401531,508.13498682828,534.87893350345,561.62288017862,588.36682685379,615.11077352897],description:"Jacky Ligon, 23-limit non-octave scale (2001)"},ligon4:{frequencies:[261.6255653006,278.49926570678,289.46759601673,308.13698517552,320.27237341115,340.92853547661,362.91692931321,386.32347802158,401.53832428939,427.43578342293,444.26952759254,472.92296174596,491.54841572131,523.2511306012,556.99853141357,592.92249142473,616.27397035104,640.54474682231,681.85707095323,725.83385862642,754.41987838254,803.07664857879],description:"Jacky Ligon, 2/1 Phi Scale, TL 12-04-2001"},ligon5:{frequencies:[261.6255653006,273.22765669781,280.653851324,293.09977429907,314.41721066027,328.36040925687,337.28508524374,352.24238645938,377.86132347501,394.61802538749,405.34378524393,423.31898451752,454.1076550834,474.24531572837,487.13535379632,508.73764640933,545.73895363303],description:'Jacky Ligon, scale for "Two Golden Flutes" (2001)'},ligon6:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:'Jacky Ligon, "Primal Golden Tuning" (2001)'},ligon7:{frequencies:[261.6255653006,294.32876096318,321.08592105074,361.22166118208,394.05999401681,443.31749326891,483.61908356609,527.58445479937],description:"Jacky Ligon, 7 tone, 27/22=generator, MMM 22-01-2002"},lindley_ea:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Mark Lindley +J. de Boer +W. Drake (1991), for organ Grosvenor Chapel, London"},lindley_sf:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.07474405997,328.14198392915,349.6228209638,368.32692341742,391.5530240856,413.90012676351,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Lindley (1988) suggestion nr. 2 for Stanford Fisk organ"},"ling-lun":{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Scale of Ling Lun from C"},liu_major:{frequencies:[261.6255653006,290.69507255622,322.99452506247,348.83408706747,392.4383479509,436.04260883433,484.4917875937,523.2511306012],description:`Linus Liu's Major Scale, see his 1978 book, "Intonation Theory"`},liu_mel:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,423.83341578697,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Linus Liu's Melodic Minor, use 5 and 7 descending and 6 and 8 ascending"},liu_minor:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,387.59343007496,418.60090448096,484.4917875937,523.2511306012],description:"Linus Liu's Harmonic Minor"},liu_pent:{frequencies:[261.6255653006,294.32876096318,331.11985608357,353.19451315581,392.4383479509,441.49314144476,496.67978412536,529.79176973372],description:`Linus Liu's "pentatonic scale"`},lorina:{frequencies:[261.6255653006,271.31540105247,293.02063313667,305.22982618403,313.95067836072,348.83408706747,348.83408706747,385.55346465352,406.97310157871,457.84473927605,457.84473927605,465.11211608996,523.2511306012],description:"Lorina"},lt46a:{frequencies:[261.6255653006,265.62583852249,273.73233506765,277.91772325275,286.39934942254,290.77841553921,299.65253047503,308.79746990018,313.51900484808,323.08712797864,328.02715279963,338.03804253716,348.35444940179,353.68081538041,364.47461587782,370.04745828823,381.3407438317,387.1714705201,398.98735486934,411.16384203565,417.45056598488,430.19052226982,436.76816801564,450.09766813034,463.83396431287,470.92601754108,485.29796386361,492.71820372913,507.75521382755,523.2511306012],description:"13-limit temperament, minimax g=495.66296 cents"},lucy_19:{frequencies:[261.6255653006,272.17716319349,280.81422591737,292.13972001074,301.4102593031,313.56641022552,326.2128298123,336.56461921066,350.13857756143,364.25998604447,375.81913491042,390.97626371576,406.74469336313,419.65201956185,436.57696862128,450.43096951372,468.59726172356,487.49621708267,502.96605061019,523.2511306012],description:"Lucy's 19-tone scale"},lucy_24:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,292.13970819848,301.41031849758,303.92192719902,313.56642833783,326.21280343239,336.56467170065,339.36921655583,350.13858362887,364.25994396351,375.81917832675,390.97625694066,403.38329512334,406.744629928,419.65205349792,436.57694340361,450.43105016925,454.18442712942,468.59728067062,487.49616921257,502.96612033609,523.2511306012],description:"Lucy/Harrison, meantone tuning from Bbb to Cx, third=1200.0/pi, 1/1=A"},lucy_31:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,283.15423815518,292.13970819848,301.41031849758,303.92192719902,313.56642833783,323.51698308414,326.21280343239,336.56467170065,339.36921655583,350.13858362887,361.24970022276,364.25994396351,375.81917832675,378.95082751155,390.97625694066,403.38329512334,406.744629928,419.65205349792,432.96907456701,436.57694340361,450.43105016925,454.18442712942,468.59728067062,483.46750424654,487.49616921257,502.96612033609,507.15726445705,523.2511306012],description:"Lucy/Harrison's meantone tuning, 1/1=A"},lucy_7:{frequencies:[261.6255653006,292.13972001074,326.2128298123,350.13857756143,390.97626371576,436.57696862128,487.49621708267,523.2511306012],description:"Diatonic Lucy's scale"},lumma5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Carl Lumma's 5-limit version of lumma7, also Fokker 12-tone just."},lumma7:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,390.69417751556,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Carl Lumma's 7-limit 12-tone scale, a.k.a GW Smith's Prism. TL 21-11-98"},lumma7t:{frequencies:[261.6255653006,279.68948643792,293.67396186758,305.56991806333,326.66797434652,349.22276480589,366.68390442934,392.00157215927,419.06732091375,436.04260883433,457.84473927605,489.45662770953,523.2511306012],description:"Tempered lumma7, 6 tetrads + 4 triads within 2c of Just, TL 19-2-99"},lumma7t72:{frequencies:[261.6255653006,279.86396690685,293.66476791741,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"72-tET version of lumma7t"},lumma7t_keen:{frequencies:[261.6255653006,279.95098841649,293.39965821869,305.14186035122,326.51537799354,349.38597341375,366.17023517096,391.81845653432,419.26317124465,436.04260556019,456.98979229899,488.99939844699,523.2511306012],description:"Dave Keenan's adaptation of lumma7t to include 6:8:11, TL 17-04-9"},lumma_10:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,375.37611551499,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:"Carl Lumma's 10-tone 125 cent Pyth. scale, TL 29-12-1999"},lumma_12_fun:{frequencies:[261.6255653006,276.16031892841,293.246794009,310.68035879446,327.94037872749,348.23056788569,368.93292606842,390.99572534534,413.52379936426,439.8701910135,464.30742384759,491.05951174505,522.34585182853],description:"Rational well temperament based on 577/289, 3/2, and 19/16."},"lumma_12_moh-ha-ha":{frequencies:[261.6255653006,276.16031892841,293.42033886144,310.68035879446,330.09788121912,349.51540364377,368.93292606842,391.72740891476,414.24047839262,440.13050829216,466.02053819169,493.4335110265,523.2511306012],description:"Rational well temperament."},lumma_12_strangeion:{frequencies:[261.6255653006,277.97716313189,292.40504357126,310.68035879446,330.09788121912,349.23197505989,368.93292606842,391.9912339477,414.71297038361,440.63253103259,468.17206422213,492.47165233054,523.2511306012],description:'19-limit "dodekaphonic" scale.'},lumma_22:{frequencies:[261.6255653006,263.29318697558,262.98919438538,262.83732973433,262.68555277841,262.53386346698,263.29318697558,262.38226174944,262.98919438538,262.23074757519,263.29318697558,262.68555277841,262.07932089369,263.29318697558,262.83732973433,263.59753095473,262.38226174944,263.44531501617,262.68555277841,262.98919438538,263.29318697558,263.902226729,261.92798165442],description:"Carl Lumma, intervals of attraction by trial and error, 1999."},lumma_5151:{frequencies:[261.6255653006,276.7826524273,292.81785438923,309.78204413166,327.729041887,346.71578592374,369.67398581173,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Carl Lumma's 5151 temperament III (1197/709.5/696). June 2003"},lumma_al1:{frequencies:[261.6255653006,274.63272075836,292.81785438923,309.78204413166,327.729041887,346.71578592374,366.8025131876,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Alaska I (1197/709.5/696), Carl Lumma, 6 June 2003."},lumma_al2:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,347.216824829,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska II (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al3:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,349.32910706765,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska III (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al4:{frequencies:[261.6255653006,276.38325105256,293.32570896007,309.87152561537,328.86683469969,349.02656754477,368.7143392539,391.31674786192,413.39000965417,438.73106346722,464.55095742407,491.89038573682,522.04355935974],description:"Alaska IV (1196/701/697), Carl Lumma, 6 June 2003."},lumma_al5:{frequencies:[261.6255653006,276.84261239447,293.89809826895,310.99222741882,329.08061019985,349.35433052883,369.67398581173,391.17550247358,415.27471248744,439.42852501549,464.98720675925,493.63374591774,522.3451906503],description:"Alaska V (1197/702/696.375), Carl Lumma, 6 June 2003."},lumma_al6:{frequencies:[261.6255653006,276.86260193655,293.83444433876,310.94732162256,329.05685050583,349.22823143301,369.56723519412,391.09077971329,415.06487744922,439.23819834286,464.81937009253,493.31307433255,522.04355935974],description:"Alaska VI (1196/701/696), Carl Lumma, 6 June 2003."},lumma_al7:{frequencies:[261.6255653006,276.11677207256,293.26810788146,310.16878953668,328.73958549954,348.42227432308,368.499294457,391.39134599911,413.94674961638,438.72852926454,464.99660740427,491.79379203259,522.3451906503],description:"Alaska VII, Carl Lumma, 27 Jan 2004"},lumma_dec1:{frequencies:[261.6255653006,286.10322937235,299.18791603519,327.17991022208,342.14320575162,374.15409293384,391.26571058456,427.87249484695,457.55816161244,489.30340830564,523.2511306012],description:"Carl Lumma, two 5-tone 7/4-chains, 5/4 apart in 31-tET, TL 9-2-2000"},lumma_dec2:{frequencies:[261.6255653006,286.10322937235,292.57243455474,327.17991022208,342.14320575162,382.6142546815,391.26571058456,437.54730686196,457.55816161244,511.68128147674,523.2511306012],description:"Carl Lumma, two 5-tone 3/2-chains, 7/4 apart in 31-tET, TL 9-2-2000"},lumma_magic:{frequencies:[261.6255653006,293.02063313667,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,418.60090448096,436.04260883433,457.84473927605,467.18850946536,523.2511306012],description:"Magic chord test, Carl Lumma, TL 24-06-99"},"lumma_synchtrines+2":{frequencies:[261.6255653006,277.1478691313,293.59111644706,311.009943641,329.46223568632,349.00930447981,369.71610741159,391.65144749868,414.88821865981,439.50363030131,465.57948255979,493.20241832805,522.46423212702],description:"The 12-tone equal temperament with 2:3:4 brats of +2"},"lumma_synchtrines-2":{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338321153,392.13011885309,415.46777761785,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"The 12-tone equal temperament with 2:3:4 brats of -2"},lydian_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,317.12189733406,327.03195662575,373.75080757229,402.50086969323,418.60090448096,427.14378008261,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,615.58956541318,634.24379466812,654.0639132515,747.50161514457,805.00173938646,837.20180896192,854.28756016522,872.08521766867,951.36569200218,1046.5022612024],description:"Lydian Chromatic Tonos"},lydian_chrom2:{frequencies:[261.6255653006,272.09058791262,283.42769574232,340.11323489078,377.90359432309,400.13321751856,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the chromatic genus"},lydian_chrominv:{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Lydian inverted"},lydian_diat:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,697.66817413493,747.50161514457,852.70554616492,805.00173938646,872.08521766867,910.00196626296,951.36569200218,996.66882019276,1046.5022612024],description:"Lydian Diatonic Tonos"},lydian_diat2:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,377.90359432309,425.14154361347,485.87604984397,523.2511306012],description:"Schlesinger's Lydian Harmonia, a subharmonic series through 13 from 26"},lydian_diat2inv:{frequencies:[261.6255653006,281.75060878526,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"Inverted Schlesinger's Lydian Harmonia, a harmonic series from 13 from 26"},lydian_diatcon:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,425.14154361347,485.87604984397,523.2511306012],description:"A Lydian Diatonic with its own trite synemmenon replacing paramese"},lydian_enh:{frequencies:[261.6255653006,275.39533189537,290.69507255622,299.00064605783,303.33398875432,307.79478270659,373.75080757229,402.50086969323,410.39304360878,414.45634107026,418.60090448096,475.68284600109,523.2511306012,550.79066379074,581.39014511244,598.00129211566,606.66797750864,615.58956541318,747.50161514457,805.00173938646,820.78608721757,828.91268214051,837.20180896192,951.36569200218,1046.5022612024],description:"Lydian Enharmonic Tonos"},lydian_enh2:{frequencies:[261.6255653006,266.75547834571,272.09058791262,340.11323489078,377.90359432309,388.70083987518,400.13321751856,523.2511306012],description:"Schlesinger's Lydian Harmonia in the enharmonic genus"},lydian_enhinv:{frequencies:[261.6255653006,266.65682617177,271.68808704293,362.25078272391,402.50086969323,412.56339143556,422.62591317789,523.2511306012],description:"A harmonic form of Schlesinger's Enharmonic Lydian inverted"},lydian_pent:{frequencies:[261.6255653006,269.93113880221,283.42769574232,340.11323489078,377.90359432309,395.48050568695,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the pentachromatic genus"},lydian_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,805.00173938646,872.08521766867,951.36569200218,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Lydian Tonos"},lydian_tri:{frequencies:[261.6255653006,268.51044859798,275.76748774928,340.11323489078,377.90359432309,392.4383479509,408.13588186894,523.2511306012],description:"Schlesinger's Lydian Harmonia in the first trichromatic genus"},lydian_tri2:{frequencies:[261.6255653006,268.51044859798,283.42769574232,340.11323489078,377.90359432309,392.4383479509,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the second trichromatic genus"},nachbaur_6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:`Fred Nachbaur's harmonic hexatonic, as used in "Void of Sensation"`},nassarre:{frequencies:[261.6255653006,277.66336828161,294.34406205295,311.66659310186,331.15428443044,350.6431449633,372.56793743951,394.49404533893,419.16071913933,443.82887286778,471.58032351597,495.88429116026,523.2511306012],description:"Nassarre's Equal Semitones"},negri5_19:{frequencies:[261.6255653006,271.22480440713,281.41555648081,291.74090527404,302.70251050738,313.80889368201,325.59966315504,337.54616011163,350.22880998446,363.07896889448,376.72096510961,390.54314115106,405.21705098851,420.08476989056,435.86864979507,451.86099895106,468.83881245397,486.04086171852,504.30291533224,523.2511306012],description:"Negri temperament, g=126.238272, 5-limit"},negri_19:{frequencies:[261.6255653006,269.02825605326,281.18681366715,289.14299126725,302.21061955257,310.76166549402,324.80633749066,333.99672707734,349.09149261831,358.96903024071,375.19240283292,392.14898023137,403.24482870584,421.46921730446,433.39468387282,452.98167562873,465.79878414581,486.85025820508,500.62567766841,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},negri_29:{frequencies:[261.6255653006,269.02825605326,276.64040740805,281.18681366715,289.14299126725,297.32428710198,302.21061955257,310.76166549402,319.55466133443,324.80633749066,333.99672707734,343.44715857517,349.09149261831,358.96903024071,369.1260526158,375.19240283292,385.80846524917,392.14898023137,403.24482870584,414.65463641221,421.46921730446,433.39468387282,445.65757880387,452.98167562873,465.79878414581,478.97855252217,486.85025820508,500.62567766841,514.79087238232,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},"neid-mar-morg":{frequencies:[261.6255653006,277.49581689502,293.99657683935,311.12698372208,329.99999983505,349.6228209638,369.99442271164,392.4383479509,415.77394625748,440,466.69047534984,494.44133512215,523.2511306012],description:"Neidhardt-Marpurg-de Morgan temperament (1858)"},neidhardt1:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,348.83408706747,368.32692341742,391.5530240856,414.36778843034,438.51190905657,465.11211608996,491.65745674141,523.2511306012],description:"Neidhardt I temperament (1724)"},neidhardt2:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,349.22823143301,369.15973155124,391.5530240856,414.36778843034,438.51190905657,466.16376151809,492.7691222293,523.2511306012],description:"Neidhardt II temperament (1724)"},neidhardt3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Neidhardt III temperament (1724) 'Grosse Stadt'"},neidhardt4:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"Neidhardt IV temperament (1724), equal temperament"},neidhardtn:{frequencies:[261.6255653006,276.86979852503,293.66476791741,310.77584116741,329.62755691287,348.83408706747,369.99442271164,391.5530240856,415.30469757995,439.50340943686,466.16376151809,493.32589719545,523.2511306012],description:"Johann Georg Neidhardt's temperament (1732), alt. 1/6 & 0 P, also Marpurg nr.10"},neogeb24:{frequencies:[261.6255653006,270.11478301563,282.39420473706,291.55732426372,295.23185084282,304.81152420286,308.65309481038,318.66826025208,333.15492371116,343.96512368902,348.30015108876,359.6017829051,375.94928703407,388.14807710176,393.03994675222,405.79329398283,424.24066266408,438.00640969567,443.52664897728,457.91818970179,463.68937649142,478.73515685363,500.49846361623,516.73862125829,523.2511306012],description:"Neo-Gothic e-based lineotuning (T/S or Blackwood's R=e, ~2.71828), 24 notes"},neogji12:{frequencies:[261.6255653006,282.52678126125,294.32876096318,317.84262891891,332.97799220076,348.83408706747,374.60024122586,392.4383479509,423.79017189188,441.49314144476,443.97065626768,499.46698830115,523.2511306012],description:"M. Schulter, neo-Gothic 12-note JI (prim. 2/3/7/11) 1/1=F with Eb key as D+1"},neogp16a:{frequencies:[261.6255653006,274.38778799819,281.28352228595,295.02457363685,309.19384990071,317.19205704586,332.33517754401,348.83408706747,366.27579142084,374.86334014511,392.4383479509,411.12588832951,422.62591317789,442.75095666255,464.34856430463,498.91386871277,523.2511306012],description:"M. Schulter, scale from mainly prime-to-prime ratios and octave complements (Gb-D#)"},neutr_diat:{frequencies:[261.6255653006,294.32876096318,320.24370022528,348.83408706747,392.4383479509,427.47405410759,479.82340237272,523.2511306012],description:"Neutral Diatonic, 9 + 9 + 12 parts, geometric mean of major and minor"},neutr_pent1:{frequencies:[261.6255653006,302.32287545847,348.83408706747,392.4383479509,453.48431318771,523.2511306012],description:"Quasi-Neutral Pentatonic 1, 15/13 x 52/45 in each trichord, after Dudon"},neutr_pent2:{frequencies:[261.6255653006,301.87565226992,348.83408706747,392.4383479509,452.81347840488,523.2511306012],description:"Quasi-Neutral Pentatonic 2, 15/13 x 52/45 in each trichord, after Dudon"},new_enh:{frequencies:[261.6255653006,264.89588486686,279.06726965397,348.83408706747,392.4383479509,397.34382730029,418.60090448096,523.2511306012],description:"New Enharmonic"},new_enh2:{frequencies:[261.6255653006,327.03195662575,331.11985608357,348.83408706747,392.4383479509,490.54793493862,496.67978412536,523.2511306012],description:"New Enharmonic permuted"},newcastle:{frequencies:[261.6255653006,273.65745935891,291.9012907804,312.65334602246,327.03195662575,350.28154752005,366.3906401674,390.81668391305,410.48618883318,436.04260883433,467.04206359353,490.54793493862,523.2511306012],description:"Newcastle modified 1/3-comma meantone"},norden:{frequencies:[261.6255653006,274.87601291722,292.73769384471,310.07474405997,327.54963108844,349.78078158391,366.5013507395,391.37619916626,412.31401916973,437.91808280662,466.37437567834,489.99465727995,523.2511306012],description:"Reconstructed Schnitger temperament, organ in Norden. Ortgies, 2002"},novaro:{frequencies:[261.6255653006,274.70684356563,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,498.33441009638,523.2511306012],description:"9-limit diamond with 21/20, 16/15, 15/8 and 40/21 added for evenness"},novaro15:{frequencies:[261.6255653006,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,523.2511306012],description:"1-15 diamond, see Novaro, 1927, Sistema Natural base del Natural-Aproximado, p"},novaro_eb:{frequencies:[261.6255653006,277.27733921611,293.70273468471,311.34510173929,329.85947563084,349.74559786079,370.61463194963,392.51515715445,416.03831243363,440.72414616847,467.23897542105,495.06435356607,524.26505360912],description:"Novaro (?) equal beating 4/3 with strectched octave, almost pure 3/2"},janke1:{frequencies:[261.6255653006,276.38325105256,293.32570896007,310.58830860439,328.86683469969,349.02656754477,368.7143392539,391.76907592069,414.34624765043,439.23819834286,465.62553897253,492.45896815637,523.2511306012],description:"Rainer Janke, Temperatur I"},janke2:{frequencies:[261.6255653006,276.38325105256,292.98704147282,310.58830860439,328.48713220126,349.02656754477,368.7143392539,391.54284657258,414.34624765043,438.73106346722,465.62553897253,491.89038573682,523.2511306012],description:"Rainer Janke, Temperatur II"},janke3:{frequencies:[261.6255653006,276.22365192501,292.98704147282,310.40895756597,328.29744538229,349.02656754477,368.50142299854,391.54284657258,414.10698098223,438.47771564426,465.62553897253,491.60634075178,523.2511306012],description:"Rainer Janke, Temperatur III"},janke4:{frequencies:[261.6255653006,275.90473010106,292.98704147282,310.76776326996,328.10786809908,349.22823143301,368.07595926604,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.32245979018,523.2511306012],description:"Rainer Janke, Temperatur IV"},janke5:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,328.10786809908,348.82502010853,367.43868454848,391.54284657258,413.39000965417,438.47771564426,465.08793784701,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur V"},janke6:{frequencies:[261.6255653006,275.74540729824,292.98704147282,310.58830860439,328.10786809908,349.43001184052,367.65098676472,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur VI"},janke7:{frequencies:[261.6255653006,275.42703764514,292.81785438923,311.12698372208,327.91840028839,349.63190883464,367.0144478307,391.54284657258,413.62886206386,438.22451411849,467.24207374344,490.75518955849,523.2511306012],description:"Rainer Janke, Temperatur VII"},jemblung1:{frequencies:[261.6255653006,298.87388797409,337.89601991959,388.44742741354,452.30188977628,523.2511306012],description:"Scale of bamboo gamelan jemblung from Kalijering, slendro-like. 1/1=590 Hz."},jemblung2:{frequencies:[261.6255653006,300.03885820455,355.06324470257,391.40016308218,451.61555914985,523.2511306012],description:"Bamboo gamelan jemblung at Royal Batavia Society. 1/1=504 Hz."},ji_10coh:{frequencies:[261.6255653006,283.42769574232,299.7792935736,327.03195662575,348.83408706747,370.63621750918,392.4383479509,436.04260883433,457.84473927605,485.0974023282,523.2511306012],description:"Differentially coherent 10-tone scale"},ji_10coh2:{frequencies:[261.6255653006,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Other diff. coherent 10-tone scale"},ji_11:{frequencies:[261.6255653006,276.96780524107,294.32876096318,316.53463456122,336.37572681506,356.10146388137,384.42940207435,406.97310157871,432.48307733364,465.11211608996,494.26637409559,523.2511306012],description:"3 and 7 prime rational interpretation of 11-tET. OdC 2000"},ji_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Basic JI with 7-limit tritone"},ji_12a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"7-limit 12-tone scale"},ji_12b:{frequencies:[261.6255653006,272.52663052146,290.69507255622,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"alternate 7-limit 12-tone scale"},ji_12c:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Kurzweil "Just with natural b7th", is Sauveur Just with 7/4'},ji_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"5-limit 12-tone symmetrical scale with two tritones"},ji_17:{frequencies:[261.6255653006,271.31540105247,283.8170195002,294.32876096318,310.07474405997,321.55899383997,336.37572681506,348.83408706747,361.75386806997,378.42269266694,392.4383479509,406.97310157871,425.72552925031,441.49314144476,465.11211608996,482.33849075995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 17-tET. OdC"},ji_17a:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,310.07474405997,321.08592105074,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,426.35277308246,441.49314144476,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_17b:{frequencies:[261.6255653006,272.52663052146,285.40970760065,294.32876096318,310.07474405997,319.76457981184,334.88072358477,348.83408706747,359.73515228832,380.54627680087,392.4383479509,408.78994578219,428.11456140098,441.49314144476,465.11211608996,479.64686971777,502.32108537715,523.2511306012],description:"Alt. 3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_19:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"5-limit 19-tone scale"},ji_20:{frequencies:[261.6255653006,271.31540105247,279.38237857051,288.32205155576,299.00064605783,310.07474405997,321.55899383997,331.11985608357,348.83408706747,356.10146388137,372.50983809402,384.42940207435,392.4383479509,413.43299207996,425.72552925031,441.49314144476,457.84473927605,474.80195184183,489.99465727995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 20-tET. OdC"},ji_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"7-limit 21-tone just scale, Op de Coul, 2001"},ji_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"5-limit 22-tone scale (Zarlino?)"},ji_27:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,331.11985608357,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,413.43299207996,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"7-limit rational interpretation of 27-tET, OdC"},ji_29:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,287.78812183066,294.32876096318,301.39265122629,310.07474405997,317.12189733406,323.76163705949,331.11985608357,340.65828815182,348.83408706747,356.76213450082,367.91095120397,372.08969287196,383.71749577421,392.4383479509,401.85686830172,413.43299207996,422.82919644541,431.68218274599,441.49314144476,454.2110508691,465.11211608996,475.68284600109,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"3,5,11-prime rational interpretation of 29-tET, OdC"},ji_30:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,313.95067836072,321.92208230347,329.64821227876,336.37572681506,344.91651675372,353.19451315581,360.81424763342,370.01329949656,379.40816842909,387.59343007496,396.89567239676,406.97310157871,415.27867508032,425.24536328225,436.04260883433,443.97065626768,456.65553216105,465.11211608996,478.40103369253,488.36772189445,498.33441009638,511.62332769895,523.2511306012],description:"11-limit rational interpretation of 30-tET"},ji_31:{frequencies:[261.6255653006,267.57160087561,274.08392555301,280.31310567921,285.40970760065,293.02063313667,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,356.76213450082,366.27579142084,373.75080757229,383.71749577421,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,467.18850946536,479.64686971777,490.54793493862,499.46698830115,512.78610798918,523.2511306012],description:"A just 11-limit 31-tone scale, optimized for Mann complexity"},ji_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 7-limit 31-tone scale"},ji_31b:{frequencies:[261.6255653006,267.90457886781,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 5-limit 31-tone scale, corner clipped genus"},ji_31c:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"A just 11-limit 31-tone scale"},ji_5coh:{frequencies:[261.6255653006,305.22982618403,348.83408706747,381.53728273004,446.94367405519,523.2511306012],description:"Differential fully coherent pentatonic scale"},ji_6coh:{frequencies:[261.6255653006,294.32876096318,330.74639366397,372.08969287196,418.60090448096,465.11211608996,523.2511306012],description:"Differential coherent 6-tone scale, OdC 2003"},ji_7:{frequencies:[261.6255653006,290.69507255622,318.93402246168,348.83408706747,392.4383479509,429.2294430713,470.92601754108,523.2511306012],description:"7-limit rational interpretation of 7-tET. OdC"},ji_7a:{frequencies:[261.6255653006,287.78812183066,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Superparticular approximation to 7-tET. Op de Coul, 1998"},ji_8coh:{frequencies:[261.6255653006,286.99041781007,312.35527031954,339.96223546814,370.00947616612,405.83764015148,441.71144237774,480.75585116768,523.2511306012],description:"Differential coherent 8-tone scale, OdC, 2003"},ji_8coh3:{frequencies:[261.6255653006,277.97716313189,302.50455987882,327.03195662575,359.73515228832,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Differential fully coherent 8-tone scale, OdC, 2003"},ji_9coh:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Differentially coherent 9-tone scale"},ji_ri24a:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,301.87565226992,310.68035879446,319.76457981184,329.87571277032,340.11323489078,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,402.50086969323,414.99227599406,428.11456140098,440.63253103259,453.48431318771,465.11211608996,479.64686971777,494.18162334558,508.71637697339,523.2511306012],description:"M. Schulter, just/rational intonation system - with circulating 24-note set"},jioct12:{frequencies:[261.6255653006,272.52663052146,282.55561052465,302.80736724606,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"12-tone JI version of Messiaen's octatonic scale, Erlich & Par\xEF\xBF\xBDzek"},"jobin-bach":{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.76836826904,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,464.6525521713,489.02683710225,523.2511306012],description:"Emile Jobin, WTC temperament after Bach's signet"},"johnson-secor_rwt":{frequencies:[261.6255653006,276.16031892841,293.03678286293,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.52992584916,414.24047839262,438.40450629885,465.11211608996,490.95167809495,523.2511306012],description:"Johnson/Secor proportional-beating well-temperament with five 24/19s."},johnson_44:{frequencies:[261.6255653006,265.7783520514,269.99705605222,274.2827236086,278.63641763414,283.05921791404,287.55222124002,292.11654190835,296.75331210627,301.46368356757,306.24882108355,311.17820103386,316.11753722951,321.13527558179,326.23266245367,331.4109583385,336.67144939063,342.01544029518,347.44425644654,352.9592442771,358.56177366235,364.2532300084,370.03502692537,375.90859839047,381.87540114246,387.93691728375,394.09464571975,400.35011587045,406.70487919155,413.16051176499,419.71861468993,426.38081694263,433.14876596753,440.02414274758,447.00865248514,454.10402744924,461.31203006992,468.63444275836,476.07308421189,483.62979961065,491.30646309654,499.10497838378,507.02727962797,515.07533168556,523.2511306012],description:"Aaron Johnson, 44-tET approximation"},johnson_7:{frequencies:[261.6255653006,288.83389952765,318.87182567809,352.10227751942,388.71994014354,429.2294430713,473.86811641255,523.2511306012],description:"Aaron Johnson, 7-tET approximation"},johnson_eb:{frequencies:[261.6255653006,273.1678696521,292.40504357126,312.71949922989,327.03195662575,349.65487315468,365.50630446407,390.89937403737,408.78994578219,437.06859144336,467.84806971401,488.62421754671,523.2511306012],description:'Aaron Johnson, "1/4-comma tempered" equal beating C-G-D-A-E plus just thirds'},johnson_ratwell:{frequencies:[261.6255653006,276.16031892841,292.90688289089,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.49724879514,414.24047839262,438.30776524386,465.11211608996,490.95167809495,523.2511306012],description:"Aaron Johnson, rational well-temperament with five 24/19's"},johnson_temp:{frequencies:[261.6255653006,275.52965735686,292.50638298357,309.88336774144,327.03195662575,348.76230617841,367.55223824197,391.22154286826,413.09299784305,437.39914452994,464.92072007996,490.30891677011,523.2511306012],description:"Aaron Johnson, temperament with just 5/4, 24/19 and 19/15"},johnston:{frequencies:[261.6255653006,275.93321340298,294.32876096318,315.35224388912,327.03195662575,359.73515228832,367.91095120397,392.4383479509,401.35740131342,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Ben Johnston's combined otonal-utonal scale"},johnston_21:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Johnston 21-note just enharmonic scale"},johnston_22:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,353.19451315581,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Johnston 22-note scale from end of string quartet nr. 4"},johnston_25:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Johnston 25-note just enharmonic scale"},"johnston_6-qt":{frequencies:[261.6255653006,262.79353657426,266.47048317654,267.57160087561,271.31540105247,272.52663052146,277.4816601673,280.31310567921,284.23518205497,290.69507255622,294.32876096318,297.30177875068,299.7792935736,300.33547037059,305.22982618403,306.59245933664,310.07474405997,311.45900631024,316.53463456122,317.12189733406,319.76457981184,322.99452506247,327.03195662575,334.46450109452,339.14425131559,342.60490694126,348.83408706747,350.39138209902,355.29397756872,356.76213450082,361.75386806997,363.36884069528,367.91095120397,373.75080757229,381.53728273004,382.24514410802,387.59343007496,390.82337532559,392.4383479509,396.40237166758,399.70572476481,406.97310157871,408.78994578219,413.43299207996,420.46965851882,426.35277308246,436.04260883433,445.95266812602,452.19233508746,459.88868900496,465.11211608996,467.18850946536,475.68284600109,479.64686971777,484.4917875937,486.49381977384,490.54793493862,248.7057842981,498.33441009638,508.71637697339,516.79124009995,523.2511306012],description:"11-limit complete system from Ben Johnston's _6th Quartet_"},"johnston_6-qt_row":{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,350.39138209902,363.36884069528,399.70572476481,408.78994578219,436.04260883433,445.95266812602,490.54793493862,508.71637697339],description:`11-limit 'prime row' from Ben Johnston's "6th Quartet"`},johnston_81:{frequencies:[116.54094037952,117.99770213426,119.33792294863,119.89808681021,120.82964698549,121.39681289533,122.77564089365,122.91427305652,124.31033640482,124.45070146973,125.86421560988,127.43751830501,127.89129259755,128.03570110055,129.48993375502,131.10855792696,132.74741490105,134.25516331721,134.88534766148,135.93335285867,136.57141450725,138.12259600536,138.27855718859,139.84912845542,141.59724256112,142.26189011172,143.87770417225,145.6761754744,147.49712766783,149.17240368579,151.03705873186,151.74601611917,153.46955111706,155.38792050603,157.33026951235,159.11723059817,159.29689788126,161.10619598065,161.86241719378,163.70085452487,163.8856974087,165.74711520643,165.93426862631,167.81895414651,169.91669107334,170.71426813406,172.6532450067,174.81141056928,176.9965532014,179.00688442294,179.84713021531,181.24447047823,182.095219343,184.16346134048,184.37140958479,186.46550460723,188.79632341482,189.68252014896,191.15627745751,191.83693889633,194.23490063253,196.66283689044,198.89653824771,199.12112235157,199.83014468368,201.38274497581,202.32802149222,204.62606815608,204.85712176088,207.18389400804,207.41783578289,209.77369268314,212.39586384168,213.39283516758,215.81655625837,218.5142632116,221.24569150175,223.75860552868,226.55558809779,227.61902417875,230.2043266756,233.08188075904],description:"Johnston 81-note 5-limit scale of Sonata for Microtonal Piano"},jorgensen:{frequencies:[261.6255653006,269.51415085551,288.85811466493,309.59046173614,318.92511007349,352.12195684808,355.62605411908,388.77403176757,408.50706336067,429.24143792307,469.25139168707,473.92081401802,523.2511306012],description:"Jorgensen's 5&7 temperament"},jousse:{frequencies:[261.6255653006,276.90198715646,293.15566421679,311.51473523959,328.62702621286,349.28097970329,369.20264759391,391.76800554826,415.35298052707,439.0631553946,466.60176257857,492.27019703794,523.2511306012],description:"Temperament of Jean Jousse (1832)"},jousse2:{frequencies:[261.6255653006,277.21176919085,293.63180098233,311.16627887077,329.63881547742,349.36510452864,370.14670828388,392.04008509316,415.41939014292,440.0494382652,466.3511549761,494.0599599767,523.2511306012],description:"Jean Jousse's quasi-equal temperament"},quasi_5:{frequencies:[261.6255653006,302.26980244078,349.22823143301,391.99543598175,452.89298412314,523.2511306012],description:"Quasi-Equal 5-Tone in 24-tET, 5 5 4 5 5 steps"},quasi_9:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:'Quasi-Equal Enneatonic, Each "tetrachord" has 125 + 125 + 125 + 125 cents'},quint_chrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,348.83408706747,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Aristides Quintilianus' Chromatic genus"},oconnell:{frequencies:[261.6255653006,267.57429119961,272.27874977392,278.46970304972,283.3657217904,288.34782337261,294.90414810658,300.08911516052,305.36524364276,312.30850472426,317.79947295261,323.38698268281,330.74001416845,336.55504284097,344.20748191927,350.25929591231,356.41751010259,364.52157313929,370.93054700815,377.45220049416,386.03454097812,392.82175095637,399.72829510222,408.81713953112,416.00491024634,423.31905787312],description:"Walter O'Connell, Pythagorean scale of 25 octaves reduced by Phi. XH 15 (1993)"},oconnell_11:{frequencies:[261.6255653006,272.27874977392,288.34782337261,300.08911516052,312.30850472426,323.38698268281,344.20748191927,356.41751010259,370.93054700815,386.03454097812,408.81713953112,423.31905787312],description:"Walter O'Connell, 11-note mode of 25-tone scale"},oconnell_14:{frequencies:[261.6255653006,272.27874977392,283.3657217904,288.34782337261,300.08911516052,312.30850472426,323.38698268281,336.55504284097,344.20748191927,356.41751010259,370.93054700815,386.03454097812,399.72829510222,408.81713953112,423.31905787312],description:"Walter O'Connell, 14-note mode of 25-tone scale"},oconnell_7:{frequencies:[261.6255653006,283.3657217904,300.08911516052,323.38698268281,344.20748191927,370.93054700815,392.82175095637,423.31905787312],description:"Walter O'Connell, 7-note mode of 25-tone scale"},oconnell_9:{frequencies:[261.6255653006,278.46970304972,294.90414810658,305.36524364276,323.38698268281,344.20748191927,364.52157313929,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 9-tone mode of 25-tone scale"},oconnell_9a:{frequencies:[261.6255653006,272.27874977392,288.34782337261,305.36524364276,323.38698268281,344.20748191927,356.41751010259,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 7+2 major mode analogy for 25-tone scale"},octony_min:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Octony on Harmonic Minor, from Palmer on an album of Turkish music"},octony_rot:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Rotated Octony on Harmonic Minor"},octony_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,408.78994578219,420.46965851882,436.04260883433,523.2511306012],description:"Complex 10 of p. 115, an Octony based on Archytas's Enharmonic,"},octony_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,315.35224388912,324.36230800023,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,306.59245933664,315.35224388912,327.03195662575,348.83408706747,490.54793493862,523.2511306012],description:"Complex 5 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,420.46965851882,432.48307733364,448.50096908674,523.2511306012],description:"Complex 11 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans5:{frequencies:[261.6255653006,271.31540105247,279.06726965397,317.94773560837,327.03195662575,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 15 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans6:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,345.98646186692,348.83408706747,358.80077526939,523.2511306012],description:"Complex 14 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_u:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,356.76213450082,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"7)8 octony from 1.3.5.7.9.11.13.15, 1.3.5.7.9.11.13 tonic (subharmonics 8-16)"},odd1:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"ODD-1"},odd2:{frequencies:[261.6255653006,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"ODD-2"},oettingen:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,301.39265122629,306.59245933664,310.42486507835,313.95067836072,317.87506184023,323.35923445661,327.03195662575,331.11985608357,334.88072358477,339.06673262958,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.50983809402,376.74081403286,383.2405741708,388.03108134794,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,452.08897683944,459.88868900496,465.11211608996,470.92601754108,476.81259276034,485.03885168492,490.54793493862,496.67978412536,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"von Oettingen's Orthotonophonium tuning"},oettingen2:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"von Oettingen's Orthotonophonium tuning with central 1/1"},ogr10:{frequencies:[261.6255653006,264.15640940857,271.89678302796,296.5055443788,342.56848033562,359.46139971304,411.32572372413,440,484.46499093218,513.27277840175,523.2511306012],description:"Optimal Golomb Ruler of 10 segments, length 72"},ogr10a:{frequencies:[261.6255653006,264.15640940857,285.30470202322,314.13668154225,329.62755691287,352.60650301302,431.60923940535,448.5538823653,457.27406033445,508.3551866238,523.2511306012],description:"2nd Optimal Golomb Ruler of 10 segments, length 72"},ogr11:{frequencies:[261.6255653006,265.92749183559,274.74472021414,318.1829357186,331.4244391468,362.52783176564,371.50609336774,409.69842558521,455.51656649021,482.27514684959,486.22402266421,523.2511306012],description:"Optimal Golomb Ruler of 11 segments, length 85"},ogr12:{frequencies:[261.6255653006,265.06964174786,270.3209511875,308.09015504092,333.2396629384,346.57411320722,384.79959982017,413.49815209867,456.11269186454,468.20039948765,496.58195036371,499.83980314828,523.2511306012],description:"Optimal Golomb Ruler of 12 segments, length 106"},ogr2:{frequencies:[261.6255653006,329.62755691287,523.2511306012],description:"Optimal Golomb Ruler of 2 segments, length 3"},ogr3:{frequencies:[261.6255653006,293.66476791741,415.30469757995,523.2511306012],description:"Optimal Golomb Ruler of 3 segments, length 6"},ogr4:{frequencies:[261.6255653006,278.64197723942,336.62443200122,461.29362042034,523.2511306012],description:"Optimal Golomb Ruler of 4 segments, length 11"},ogr4a:{frequencies:[261.6255653006,296.76515515861,406.67242132093,433.12283887627,523.2511306012],description:"2nd Optimal Golomb Ruler of 4 segments, length 11"},ogr5:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,426.7484383229,523.2511306012],description:"Optimal Golomb Ruler of 5 segments, length 17"},ogr5a:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,482.27514684959,523.2511306012],description:"2nd Optimal Golomb Ruler of 5 segments, length 17"},ogr5b:{frequencies:[261.6255653006,272.51337835337,362.52783176564,426.7484383229,463.0066556268,523.2511306012],description:"3rd Optimal Golomb Ruler of 5 segments, length 17"},ogr5c:{frequencies:[261.6255653006,272.51337835337,362.52783176564,409.69842558521,444.50800708553,523.2511306012],description:"4th Optimal Golomb Ruler of 5 segments, length 17"},ogr6:{frequencies:[261.6255653006,268.98086109226,292.31087910123,345.21700307457,430.94493093825,495.02573326308,523.2511306012],description:"Optimal Golomb Ruler of 6 segments, length 25"},ogr6a:{frequencies:[261.6255653006,276.5429423948,284.31762274025,345.21700307457,407.69874723177,468.32288027948,523.2511306012],description:"2nd Optimal Golomb Ruler of 6 segments, length 25"},ogr6b:{frequencies:[261.6255653006,268.98086109226,354.92237405774,407.69874723177,443.06044202496,495.02573326308,523.2511306012],description:"3rd Optimal Golomb Ruler of 6 segments, length 25"},ogr6c:{frequencies:[261.6255653006,268.98086109226,317.66442301495,354.92237405774,455.51656649021,495.02573326308,523.2511306012],description:"4th Optimal Golomb Ruler of 6 segments, length 25"},ogr6d:{frequencies:[261.6255653006,276.5429423948,317.66442301495,375.1593523779,468.32288027948,481.48922855473,523.2511306012],description:"5th Optimal Golomb Ruler of 6 segments, length 25"},ogr7:{frequencies:[261.6255653006,267.01398215014,283.85429714132,314.3146261019,355.21191871351,409.69842558521,502.34551296122,523.2511306012],description:"Optimal Golomb Ruler of 7 segments, length 34"},ogr8:{frequencies:[261.6255653006,265.77967818767,283.06627815664,316.06708432391,387.90015179087,400.3161696196,454.08364189083,499.09751029017,523.2511306012],description:"Optimal Golomb Ruler of 8 segments, length 44"},ogr9:{frequencies:[261.6255653006,264.94361147373,282.17583275232,296.76515515861,349.59519124833,363.06573983159,401.57942110183,438.61588607285,510.2272282764,523.2511306012],description:"Optimal Golomb Ruler of 9 segments, length 55"},oldani:{frequencies:[261.6255653006,272.52663052146,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"This scale by Norbert L. Oldani appeared in Interval 5(3), p.10-11"},oljare:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Tampere" (2001)'},oljare17:{frequencies:[261.6255653006,272.51337835337,320.78822215662,334.13814720468,393.32961502355,409.69842558521,426.7484383229,502.34551296122,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Fafner" (2001), MOS in 17-tET'},olympos:{frequencies:[261.6255653006,279.06726965397,348.83408706747,372.08969287196,465.11211608996,523.2511306012],description:"Scale of ancient Greek flutist Olympos, 6th century BC as reported by Partch"},opelt:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friederich Wilhelm Opelt 19-tone"},organ1373a:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 ficta semitones (Eb-G#)"},organ1373b:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 accidental semitones (Eb-G#)"},ragib:{frequencies:[261.6255653006,269.99542342683,281.01564479119,288.12007609225,294.32876096318,303.49446183192,311.45900631024,323.77767743764,335.77702597132,341.99420300732,348.83408706747,360.36579242507,371.06455309218,381.37837507376,392.4383479509,407.46331920162,417.22825371678,432.79663407874,450.28451247858,458.15534711532,465.11211608996,476.50902003141,487.19844562495,503.12608711654,523.2511306012],description:"Idris Ragib Bey, vol.5 d'Erlanger, p 40. Idris Rag'ib Bey"},ragib7:{frequencies:[261.6255653006,270.30192333353,281.29980781121,288.32205155576,294.32876096318,303.74668805875,311.45900631024,324.36230800023,336.37572681506,341.71502406609,348.83408706747,360.4025644447,370.6997805717,381.53728273004,392.4383479509,406.97310157871,417.13259773693,432.48307733364,450.69091522486,457.84473927605,465.11211608996,476.92160341255,486.65469735975,502.32108537715,523.2511306012],description:"7-limit version of Idris Rag'ib Bey scale"},"rameau-flat":{frequencies:[261.6255653006,276.01120901503,292.50629850443,312.00666699279,327.03195662575,349.91920725962,366.20974703841,391.22137338448,415.30469757995,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:'Rameau bemols, see Pierre-Yves Asselin in "Musique et temperament"'},"rameau-gall":{frequencies:[261.6255653006,274.65078342868,292.50627485027,310.49874388777,327.03195662575,349.91912034749,366.20104475463,391.22147055517,412.61639318626,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Rameau's temperament, after Gallimard (1st solution)"},"rameau-merc":{frequencies:[261.6255653006,273.37431312998,292.50627485027,308.72950296259,327.03195662575,348.83408706747,365.63284274659,391.22147055517,409.55238583376,437.39890198442,464.53468854848,489.02683710225,523.2511306012],description:"Rameau's temperament, after Mercadier"},"rameau-minor":{frequencies:[261.6255653006,294.32876096318,313.95067836072,353.19451315581,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Rameau's systeme diatonique mineur on E. Asc. 4-6-8-9, desc. 9-7-5-4"},"rameau-nouv":{frequencies:[261.6255653006,275.98004852257,292.50627485027,311.49614460359,327.03195662575,349.91912034749,367.37127028704,391.22147055517,414.64857675456,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Temperament by Rameau in Nouveau Systeme (1726)"},"rameau-sharp":{frequencies:[261.6255653006,273.37431312998,292.50629850443,308.54983514133,327.03195662575,348.83408706747,365.63293356166,391.22137338448,409.42528169498,437.39882871549,464.33633889105,489.02679755603,523.2511306012],description:'Rameau dieses, see Pierre-Yves Asselin in "Musique et temperament"'},rameau:{frequencies:[261.6255653006,275.07757335026,292.50629850443,310.73186404381,327.03195662575,349.91920725962,366.77009798369,391.22137338448,412.61635981914,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:"Rameau's modified meantone temperament (1725)"},ramis:{frequencies:[261.6255653006,275.93321340298,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monochord of Ramos de Pareja (Ramis de Pareia), Musica practica (1482). Carlos: Switched on Bach"},rapoport_8:{frequencies:[261.6255653006,297.86386736488,316.53463456122,336.37572681506,382.96782946913,406.97310157871,432.48307733364,492.38720931745,523.2511306012],description:"Paul Rapoport, cycle of 14/9 close to 8 out of 11-tET, XH 13, 1991"},rast_moha:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Rast + Mohajira (Dudon) 4 + 3 + 3 Rast and 3 + 4 + 3 Mohajira tetrachords"},rat_dorenh:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,418.60090448096,426.35277308246,523.2511306012],description:"Rationalized Schlesinger's Dorian Harmonia in the enharmonic genus"},rat_hypodenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,389.39619021485,398.6675280771,523.2511306012],description:"1+1 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh2:{frequencies:[261.6255653006,270.06509966514,288.69027895239,348.83408706747,380.54627680087,389.39619021485,408.39112632289,523.2511306012],description:"1+2 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh3:{frequencies:[261.6255653006,270.06509966514,299.00064605783,348.83408706747,380.54627680087,389.39619021485,418.60090448096,523.2511306012],description:"1+3 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,380.54627680087,386.4008349055,392.4383479509,523.2511306012],description:"1+1 rationalized hexachromatic/hexenharmonic genus derived from K.S.'Bastard'"},rat_hypodhex2:{frequencies:[261.6255653006,267.19206668997,279.06726965397,348.83408706747,380.54627680087,386.4008349055,398.6675280771,523.2511306012],description:"1+2 rat. hexachromatic/hexenharmonic genus derived from K.S.'s 'Bastard' Hypodo"},rat_hypodhex3:{frequencies:[261.6255653006,267.19206668997,285.40970760065,348.83408706747,380.54627680087,386.4008349055,405.0976494977,523.2511306012],description:"1+3 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex4:{frequencies:[261.6255653006,267.19206668997,292.04714266113,348.83408706747,380.54627680087,386.4008349055,411.73859457144,523.2511306012],description:"1+4 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex5:{frequencies:[261.6255653006,267.19206668997,299.00064605783,348.83408706747,380.54627680087,386.4008349055,418.60090448096,523.2511306012],description:"1+5 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex6:{frequencies:[261.6255653006,273.00058987889,292.04714266113,348.83408706747,380.54627680087,392.4383479509,411.73859457144,523.2511306012],description:"2+3 rationalized hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' hypod"},rat_hypodpen:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,380.54627680087,387.59343007496,394.90651366128,523.2511306012],description:"1+1 rationalized pentachromatic/pentenharmonic genus derived from K.S.'s 'Bastar"},rat_hypodpen2:{frequencies:[261.6255653006,268.33391312882,282.83844897362,348.83408706747,380.54627680087,387.59343007496,402.50086969323,523.2511306012],description:"1+2 rationalized pentachromatic/pentenharmonic genus from K.S.'s 'Bastard' hyp"},rat_hypodpen3:{frequencies:[261.6255653006,268.33391312882,290.69507255622,348.83408706747,380.54627680087,387.59343007496,410.39304360878,523.2511306012],description:"1+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen4:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,387.59343007496,418.60090448096,523.2511306012],description:"1+4 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen5:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,380.54627680087,394.90651366128,410.39304360878,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen6:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,394.90651366128,418.60090448096,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodtri:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,380.54627680087,392.4383479509,405.0976494977,523.2511306012],description:"rationalized first (1+1) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypodtri2:{frequencies:[261.6255653006,273.00058987889,299.00064605783,348.83408706747,380.54627680087,392.4383479509,418.60090448096,523.2511306012],description:"rationalized second (1+2) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypolenh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,410.39304360878,418.60090448096,523.2511306012],description:"Rationalized Schlesinger's Hypolydian Harmonia in the enharmonic genus"},rat_hypopchrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the chromatic genus"},rat_hypopenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the enharmonic genus"},rat_hypoppen:{frequencies:[261.6255653006,273.79419624481,294.32876096318,362.25078272391,392.4383479509,405.97070477679,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the pentachromatic genus"},rat_hypoptri:{frequencies:[261.6255653006,271.68808704293,282.55561052465,362.25078272391,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in first trichromatic genus"},rat_hypoptri2:{frequencies:[261.6255653006,271.68808704293,294.32876096318,362.25078272391,392.4383479509,403.65087217807,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in second trichromatic genus"},rectsp10:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,340.11323489078,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10"},rectsp10a:{frequencies:[261.6255653006,275.39533189537,277.01530443593,279.06726965397,281.75060878526,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10 union with inversion"},rectsp11:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,523.2511306012],description:"Rectangle minimal beats spectrum of order 11"},rectsp12:{frequencies:[261.6255653006,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,414.24047839262,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,501.44900015948,523.2511306012],description:"Rectangle minimal beats spectrum of order 12"},rectsp6:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 (=songlines)"},rectsp6a:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 union with inversion"},rectsp7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7"},rectsp7a:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7 union with inversion"},rectsp8:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8"},rectsp8a:{frequencies:[261.6255653006,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8 union with inversion"},rectsp9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9"},rectsp9a:{frequencies:[261.6255653006,277.01530443593,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9 union with inversion"},redfield:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Redfield New Diatonic"},reinhard:{frequencies:[261.6255653006,277.01530443593,294.32876096318,309.81974838229,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Reinhard 19-limit superparticular"},reinhard17:{frequencies:[261.6255653006,277.01530443593,277.97716313189,286.94416839421,292.40504357126,296.50897400735,307.79478270659,317.68818643644,338.57426097725,342.12573923925,369.35373924791,400.13321751856,404.33041910093,430.91269578922,444.76346101102,477.08191319521,492.47165233054,523.2511306012],description:`Reinhard's Harmonic-17 tuning for "Tresspass", 1998`},renteng1:{frequencies:[261.6255653006,285.40970760065,313.15788183285,391.64553850062,426.52890806662,523.2511306012],description:"Gamelan Renteng from Chileunyi (Tg. Sari). 1/1=330 Hz"},renteng2:{frequencies:[261.6255653006,294.32876096318,311.77048523333,396.07199334683,425.86840190162,523.2511306012],description:"Gamelan Renteng from Chikebo (Tg. Sari). 1/1=360 Hz"},renteng3:{frequencies:[261.6255653006,278.97471276149,312.97903559457,379.60005211265,409.44065404912,468.42785143649,523.2511306012],description:"Gamelan Renteng from Lebakwangi (Pameungpeuk). 1/1=377 Hz"},renteng4:{frequencies:[261.6255653006,296.45730715573,311.93819010347,397.0826586675,424.17395032031,523.2511306012],description:"Gamelan Renteng Bale` bandung from Kanoman (Cheribon). 1/1=338 Hz"},robot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Dead Robot (see lattice)"},robot_live:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,376.74081403286,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Live Robot"},romieu:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu's Monochord, Memoire theorique & pratique (1758)"},romieu_inv:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu inverted, Pure (just) C minor in Wilkinson: Tuning In"},rosati_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Dante Rosati, JI guitar tuning"},rosati_21a:{frequencies:[261.6255653006,280.31310567921,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,488.36772189445,523.2511306012],description:"Alternative version of rosati_21 with more tetrads"},rousseau:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Rousseau's Monochord, Dictionnaire de musique (1768)"},rousseauw:{frequencies:[261.6255653006,276.81658657456,293.31219032635,311.14941643136,328.83652403056,349.33732971591,369.19521129916,391.76004912942,415.1051791302,439.20783490896,466.32059269121,492.40223109551,523.2511306012],description:"Jean-Jacques Rousseau's temperament (1768)"},rsr_12:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"RSR - 7 limit JI"},"rvf-1":{frequencies:[261.6255653006,272.14556467328,280.20095193414,292.09989854643,304.19649364034,313.29104303136,326.0297292803,340.21856244106,350.08660369014,364.11104988921,374.67209286633,390.97784457618,406.87534373272,419.03967825638,436.39317047385,454.92493848389,468.39051363853,487.22455955444,508.94280091833,523.2511306012],description:"D-A 695 cents, the increment is 0.25 cents, interval range 49.5 to 75.5"},"rvf-2":{frequencies:[261.6255653006,272.87751533003,278.75612859219,292.27711197479,305.71136588092,312.51386339015,326.29348693151,342.97106251658,349.87433921674,364.79522794952,372.13777859784,391.13596290168,408.38225803817,417.4934384938,436.65792486176,457.83788806384,467.7011114131,487.81592522452,513.9947144098,523.2511306012],description:"695 cents, 0.607 cents, 31-90 cents, C-A# is 7/4."},"rvf-3":{frequencies:[261.6255653006,272.98787180262,278.19314238431,292.29399505039,306.11778315204,312.24320803046,326.25579420701,343.90343447252,349.81371586656,364.81629995674,371.08598724028,391.15855645336,408.71263878415,416.89098941754,436.60748307387,458.73792719255,467.48503753613,487.78774868553,515.83876338215,523.2511306012],description:"694.737, 0.082, 25-97, the fifth E#-B# is 3/2."},majmin:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Malcolm & Marpurg 4 (Yamaha major & minor) mixed. Mersenne/Ban without D#"},major_clus:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Chalmers' Major Mode Cluster"},major_wing:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Chalmers' Major Wing with 7 major and 6 minor triads"},malcolm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Malcolm's Monochord (1721), and C major in Yamaha synths, Wilkinson: Tuning In"},malcolm2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Malcolm 2"},malcolm_ap:{frequencies:[261.6255653006,279.47938236087,293.66476791741,313.97746652079,326.1838132033,349.22823143301,369.99442271164,391.99543598175,419.68935090103,436.0054062308,466.16376151809,489.82458627646,523.2511306012],description:"Best approximations in mix of all ETs from 12-23 to Malcolm's Monochord"},malcolm_me:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Malcolm's Mid-East"},malcolme:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,496.11959049595,523.2511306012],description:"Most equal interval permutation of Malcolm's Monochord"},malcolme2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Inverse most equal interval permutation of Malcolm's Monochord"},malcolms:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,369.99442271164,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical version of Malcolm's Monochord and Albion scale"},malerbi:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Luigi Malerbi's well-temperament nr.1 (1794) (nr.2 = Young)"},malgache:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,353.19451315581,376.74081403286,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,392.4383479509,408.78994578219,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malkauns:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"Raga Malkauns, inverse of prime_5"},mambuti:{frequencies:[261.6255653006,294.34406205295,331.72862856444,394.26624244126,466.16376151809,525.06772693396,590.39077962608,792.18471060794,999.82182774046],description:"African Mambuti Flutes (aerophone; vertical wooden; one note each)"},mandelbaum5:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,454.2110508691,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Mandelbaum's 5-limit 19-tone scale, kleismic detempered circle of minor thirds"},mandelbaum7:{frequencies:[261.6255653006,272.52663052146,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Mandelbaum's 7-limit 19-tone scale"},marimba1:{frequencies:[261.6255653006,284.4818984792,319.50463429683,342.83241505062,371.92288545737,411.72190027758,457.09800545097,500.48847822777,547.68138927822,612.97866327818,651.68292300609,728.11694797601,807.8963375694,903.69557412727,1013.19282257599,1069.7265813247,1225.95732655636,1303.36584601218],description:"Marimba of the Bakwese, SW Belgian Congo (Zaire). 1/1=140.5 Hz"},marimba2:{frequencies:[261.6255653006,279.11058864149,318.03161540472,343.03050002254,379.95718438213,421.58889248327,458.6849347701,519.33670373121,571.2689787911,613.68721319418,694.83488613378,761.23234162637,846.59395682498,953.56868388592,1049.52904699774,1145.8425062572,1271.3918647407,1389.66977226756],description:"Marimba of the Bakubu, S. Belgian Congo (Zaire). 1/1=141.5 Hz"},marimba3:{frequencies:[261.6255653006,296.73398952435,348.2210758395,420.13030572059,476.50902003141,518.73708886244,603.49292471609,696.44215167899,840.26061144117,953.01804006282,1037.47417772488],description:"Marimba from the Yakoma tribe, Zaire. 1/1=185.5 Hz"},marion:{frequencies:[261.6255653006,269.91407136119,278.46532473603,287.28749371714,296.38899008685,305.77900572762,315.46632790985,325.46074015958,335.7715953476,346.4093067252,357.3838291689,368.70624618807,380.38737313392,392.4383479509,411.71310103548,431.93429139282,453.14890242083,475.40520223986,498.75490298644,523.2511306012],description:"scale with two different ET step sizes"},marion1:{frequencies:[261.6255653006,262.79353657426,272.52663052146,280.31310567921,286.15296204753,294.32876096318,305.22982618403,311.45900631024,327.03195662575,336.37572681506,343.38355445704,350.39138209902,367.91095120397,373.75080757229,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,476.92160341255,490.54793493862,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 1"},marion10:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,290.69507255622,296.75121990114,305.22982618403,317.94773560837,327.03195662575,339.14425131559,356.10146388137,363.36884069528,370.93902487643,381.53728273004,400.61414686654,406.97310157871,408.78994578219,423.93031414449,436.04260883433,445.12682985172,457.84473927605,474.80195184183,476.92160341255,484.4917875937,508.71637697339,523.2511306012],description:"Marion's 7-limit Scale # 10"},marion15:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,299.00064605783,313.95067836072,320.35783506196,327.03195662575,336.37572681506,353.19451315581,358.80077526939,360.4025644447,373.75080757229,384.42940207435,392.4383479509,403.65087217807,418.60090448096,420.46965851882,427.14378008261,448.50096908674,461.31528248922,470.92601754108,480.53675259294,504.56359022259,523.2511306012],description:"Marion's 7-limit Scale # 15"},marion19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,309.04519901133,313.95067836072,315.35224388912,327.03195662575,336.37572681506,343.38355445704,353.19451315581,366.27579142084,367.91095120397,373.75080757229,392.4383479509,403.65087217807,412.06026534844,420.46965851882,441.49314144476,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 19"},marion26:{frequencies:[261.6255653006,271.31540105247,279.06726965397,284.8811711051,293.02063313667,303.87324917877,305.22982618403,310.07474405997,325.57848126297,334.88072358477,341.85740532612,348.83408706747,366.27579142084,379.84156147346,390.69417751556,406.97310157871,418.60090448096,427.32175665765,434.10464168396,455.80987376816,465.11211608996,474.80195184183,488.36772189445,512.78610798918,523.2511306012],description:"Marion's 7-limit Scale # 26"},marissing:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Peter van Marissing, just scale, Mens en Melodie, 1979"},"marpurg-1":{frequencies:[261.6255653006,276.86979852503,294.32876096318,311.47852302926,329.62755691287,348.83408706747,370.83100115625,392.4383479509,415.30469757995,439.50340943686,467.21778431035,494.44133512215,523.2511306012],description:"Other temperament by Marpurg, 3 fifths 1/3 Pyth. comma flat"},"marpurg-t1":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg's temperament nr.1, Kirnbergersche Temperatur (1766)"},"marpurg-t11":{frequencies:[261.6255653006,278.12325072816,294.32876096318,311.47852302926,331.11985608357,348.83408706747,371.66947115233,392.4383479509,416.24372513446,441.49314144476,466.16376151809,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.11, 6 tempered fifths"},"marpurg-t12":{frequencies:[261.6255653006,279.06706247425,294.66131982972,310.42509491746,330.74614861362,349.22823143301,372.08941681833,392.88175996935,418.60059350213,441.99197952365,465.63764214343,496.11922267243,523.2511306012],description:"Marpurg's temperament nr.12, 4 tempered fifths"},"marpurg-t2":{frequencies:[261.6255653006,278.75210322491,294.32876096318,313.59611581451,331.11985608357,348.83408706747,371.66947115233,392.4383479509,418.12815462835,441.49314144476,470.39417348663,495.55929511749,523.2511306012],description:"Marpurg's temperament nr.2, 2 tempered fifths, Neue Methode (1790)"},"marpurg-t3":{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,331.11985608357,348.83408706747,368.74309237173,392.4383479509,414.83597850347,441.49314144476,465.11211608996,491.65745674141,523.2511306012],description:"Marpurg's temperament nr.3, 2 tempered fifths"},"marpurg-t4":{frequencies:[261.6255653006,276.86979852503,294.32876096318,310.07474405997,331.11985608357,348.83408706747,369.15973155124,392.4383479509,415.30469757995,441.49314144476,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.4, 2 tempered fifths"},"marpurg-t5":{frequencies:[261.6255653006,277.80935667884,294.32876096318,312.53552595124,331.11985608357,348.83408706747,370.41247575694,392.4383479509,416.71403480995,441.49314144476,468.80328869252,493.88330125613,523.2511306012],description:"Marpurg's temperament nr.5, 2 tempered fifths"},"marpurg-t7":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.07474405997,329.62755691287,348.83408706747,369.15973155124,390.66969766777,415.30469757995,439.50340943686,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.7, 3 tempered fifths"},"marpurg-t8":{frequencies:[261.6255653006,277.49581689502,293.33333347996,311.12698372208,329.99999983505,348.83408706747,369.99442271164,391.11111150212,414.83597850347,440,466.69047534984,493.32589719545,523.2511306012],description:"Marpurg's temperament nr.8, 4 tempered fifths"},"marpurg-t9":{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,350.01785633742,371.24999944327,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.9, 4 tempered fifths"},marpurg:{frequencies:[261.6255653006,277.49581689502,293.83071040301,311.12698372208,329.99999983505,349.42557141756,369.99442271164,392.4383479509,415.53937569366,440,466.69047534984,494.16238213869,523.2511306012],description:"Marpurg, Versuch ueber die musikalische Temperatur (1776), p. 153"},marpurg1:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg's Monochord no.1 (1776)"},marpurg3:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg 3"},marpurg4:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg 4, also Yamaha Pure Minor"},marsh:{frequencies:[261.6255653006,275.50659558095,293.15632631094,311.93674864629,328.48713220126,349.53094576004,368.07595926604,391.65594491223,412.43597848639,438.85779226656,466.97226207056,491.74834273545,523.2511306012],description:"John Marsh's meantone temperament (1809)"},marsh2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"John Marsh's quasi-equal temperament (1840)"},mavila12:{frequencies:[261.6255653006,256.98292999787,287.53945699376,321.72930260925,316.02010771872,353.59644178868,347.32175377489,388.62000642034,381.72381344999,427.11263899087,477.89842030218,469.41794908116,525.2340355968],description:"A 12-note mavila scale (for warping meantone-based music)"},mavila9:{frequencies:[261.6255653006,287.53945699376,316.02010771872,321.72930260925,353.59644178868,388.62000642034,427.11263899087,434.82882549415,477.89842030218,525.2340355968],description:"9-note scale of mavila temperament (TOP tuning)"},mavlim1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"First 27/25&135/128 scale"},mbira_banda:{frequencies:[261.6255653006,291.13134764929,327.53979283172,368.50142299854,404.88256627495,443.57258128492,480.10063929961,555.00605988575],description:"Mubayiwa Bandambira's tuning of keys R2-R9 from Berliner: The soul of mbira."},mbira_banda2:{frequencies:[261.6255653006,321.16993719469,360.29289210659,380.8360868427,422.32008370967,461.34206956593,587.32953583482,513.96502576833,761.67217368541,711.48673390068,849.04255025658,936.10488897708,1046.50286568598,633.49659152295,1055.60951665979,1174.65975017952,1321.5609185619,1486.83332446121,1633.62433483289,1789.73120457747,1937.11498804338,2239.34414798534],description:"Mubayiwa Bandambira's Mbira DzaVadzimu tuning B1=114 Hz"},mbira_gondo:{frequencies:[261.6255653006,315.28798447451,345.21700307457,379.51849407657,422.56409582244,461.07566488503,564.05539604512,516.94239487354,778.57545143809,697.24717811406,842.69088701475,926.42243447898,1029.11884353824,628.3943418294,1040.47545270591,1153.813137635,1308.64724593201,1415.59600512246,1572.51770682594,1715.83353717518,1883.05646656025,2103.91477035149],description:"John Gondo's Mbira DzaVadzimu tuning B1=122 Hz"},mbira_kunaka:{frequencies:[261.6255653006,292.98704147282,325.27731021818,350.44066402496,386.59871897734,434.19311733646,479.82340237272,507.76825077597],description:"John Kunaka's mbira tuning of keys R2-R9"},mbira_kunaka2:{frequencies:[261.6255653006,340.26769547546,358.83903996308,405.11650317313,448.98591596033,490.75518955849,622.61349925697,541.70354187177,817.28364083393,724.3415782324,907.35693646861,997.5144154576,1094.73088724383,673.88551872153,1085.91380691742,1216.08403680913,1350.10935126711,1454.55340013417,1604.63250673428,1802.17976955899,1991.5747030301,2107.56373750553],description:"John Kunaka's Mbira DzaVadzimu tuning B1=113 Hz"},mbira_mude:{frequencies:[261.6255653006,289.28740724512,309.15639683494,364.68988616898,372.56793743951,408.17001145418,507.1819925915,459.74594725879,689.63684605432,610.50517472746,760.79276355093,824.39562982862,887.65774573556,562.75365576207,888.68380073365,1015.53708814899,1126.80895076279,1206.28956516212,1365.00817887311,1507.58874420517,1666.02447560859,1935.99638964471],description:"Hakurotwi Mude's Mbira DzaVadzimu tuning B1=132 Hz"},mbira_mujuru:{frequencies:[261.6255653006,281.37682788104,301.05008478933,329.43721154897,394.9500460767,419.64523240241,533.01280425363,488.77489658044,700.88132804992,602.10016957865,765.19999119503,809.29752893,942.6160133907,577.57308891646,937.72844143307,1046.50286568598,1145.18149427149,1243.7900049313,1411.51350174391,1540.15576038017,1658.34356815416,1904.9365287586],description:"Ephat Mujuru's Mbira DzaVadzimu tuning, B1=106 Hz"},mbira_zimb:{frequencies:[261.6255653006,276.86260193655,305.95868600104,343.62544191138,379.08031027329,408.40584780369,453.41648894489,507.76825077597],description:"Shona mbira scale"},mboko_bow:{frequencies:[261.6255653006,347.61817721989,375.37611551499],description:"African Mboko Mouth Bow (chordophone, single string, plucked)"},mboko_zither:{frequencies:[261.6255653006,294.68429813772,319.3201344739,354.92237405774,396.55020354877,418.67676528474,472.67116512585,513.07516347663],description:"African Mboko Zither (chordophone; idiochordic palm fibre, plucked)"},mcclain:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,331.11985608357,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,510.98743222773,523.2511306012],description:"McClain's 12-tone scale, see page 119 of The Myth of Invariance"},mcclain_18:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,319.36714514233,327.03195662575,331.11985608357,344.91651675372,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,441.49314144476,459.88868900496,490.54793493862,496.67978412536,510.98743222773,523.2511306012],description:"McClain's 18-tone scale, see page 143 of The Myth of Invariance"},mcclain_8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,523.2511306012],description:"McClain's 8-tone scale, see page 51 of The Myth of Invariance"},mccoskey_22:{frequencies:[261.6255653006,270.06509966514,279.06726965397,287.78812183066,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,382.37582620857,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"31-limit rational interpretation of 22-tET, Marion McCoskey"},mclaren_bar:{frequencies:[261.6255653006,281.77400528964,292.14326370913,304.76756192248,325.50548568708,328.66136118639,353.45752508165,360.67039921732,379.1552038283,397.63971531932,405.75513620619,436.411067852,476.98680497297,521.16951219839],description:"Metal bar scale. see McLaren, Xenharmonicon 15, pp.31-33"},mclaren_cps:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,367.91095120397,392.4383479509,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"2)12 [1,2,3,4,5,6,8,9,10,12,14,15] a degenerate CPS"},mclaren_harm:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012],description:'from "Wilson part 9", claimed to be Schlesingers Dorian Enharmonic, prov. unkn'},mclaren_rath1:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,372.08969287196,380.54627680087,389.39619021485,398.6675280771,492.47165233054,507.3950357345,523.2511306012],description:"McLaren Rat H1"},mclaren_rath2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,380.54627680087,389.39619021485,398.6675280771,440.63253103259,452.54151835779,465.11211608996,523.2511306012],description:"McLaren Rat H2"},mean10:{frequencies:[261.6255653006,272.18829429226,292.14313377277,313.56091500001,326.220453695,350.13653284039,364.27275363262,390.97854693193,406.76370320307,436.58461973079,468.59178605305,487.51045723915,523.2511306012],description:"3/10-comma meantone scale"},mean11:{frequencies:[261.6255653006,272.83457350033,292.34115464648,313.24237654315,326.6628419965,350.01792709981,365.01399145768,391.11103243201,407.86767761879,437.02858581415,468.2743796482,488.33699124025,523.2511306012],description:"3/11-comma meantone scale. A.J. Ellis no. 10"},mean11ls_19:{frequencies:[261.6255653006,272.93479580544,280.25721516838,292.37183188538,305.01012622427,313.1930753928,326.73140514978,340.85495140859,349.99956372811,365.12891753666,374.92476290643,391.13155279262,408.03891236124,418.98596425085,437.09738047696,455.99169236578,468.2252457596,488.46511500326,509.57988860269,523.2511306012],description:"Least squares appr. to 3/2, 5/4, 7/6, 15/14 and 11/8, Petr Par\xEF\xBF\xBDzek"},mean13:{frequencies:[261.6255653006,273.83184954717,292.64606374809,312.75295135888,327.34460995374,349.8355370417,366.15730590163,391.31494185909,409.57195510156,437.7124891801,467.78648270341,489.61131479929,523.2511306012],description:"3/13-comma meantone scale"},mean14:{frequencies:[261.6255653006,274.22463192287,292.76593693997,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"3/14-comma meantone scale (Giordano Riccati, 1762)"},mean14_15:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,417.8586951835,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"15 of 3/14-comma meantone scale"},mean14_19:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,343.38964426558,349.76390952171,366.60744235102,373.41269440635,391.39507854003,410.24343789088,417.8586951835,437.98145930734,459.07327263526,467.59494724206,490.11285326462,513.71515101261,523.2511306012],description:"19 of 3/14-comma meantone scale"},mean14_7:{frequencies:[261.6255653006,292.76593693997,327.61283758281,349.76390952171,391.39507854003,437.98145930734,490.11285326462,523.2511306012],description:"Least squares appr. of 5L+2S to Ptolemy's Intense Diatonic scale"},mean14a:{frequencies:[261.6255653006,274.24690838881,292.77273178776,312.55000460003,327.62804498858,349.75985073129,366.63296888199,391.39962048672,410.28152481852,437.9967071602,467.58409501387,490.1412915133,523.2511306012],description:'fifth of sqrt(5/2)-1 octave "recursive" meantone, Paul Hahn'},mean16:{frequencies:[261.6255653006,274.864106667,292.9608347655,312.24903186879,328.04917632434,349.64754658398,367.34009701877,391.52533508436,411.33694767869,438.41888642025,467.28387071703,490.92894854125,523.2511306012],description:"3/16-comma meantone scale"},mean17:{frequencies:[261.6255653006,273.72412433093,292.61316553779,312.80569569783,327.2710181906,349.85520131118,366.03383354947,391.29294726693,409.38781813791,437.63868343995,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean17_17:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},mean17_19:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,342.40527209253,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,512.10885267608,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean18:{frequencies:[261.6255653006,272.71477685134,292.30447317753,313.30134186202,326.58087306932,350.03988839382,364.87661266094,391.0864943589,407.66301227525,436.94633423564,468.33314368944,488.18382342185,523.2511306012],description:"5/18-comma meantone scale (Smith). 3/2 and 5/3 eq. beat. A.J. Ellis no. 9"},mean19:{frequencies:[261.6255653006,273.06170311607,292.41066686775,313.13068664042,326.81820677503,349.97632128221,365.27443420834,391.15752841841,408.25574814862,437.18446858874,468.16306089008,488.62733218513,523.2511306012],description:"5/19-comma meantone scale, fifths beats three times third. A.J. Ellis no. 11"},mean19r:{frequencies:[261.6255653006,273.04332227389,292.40504357126,313.13971948727,326.80563693258,349.97968716666,365.25335892465,391.15376651139,408.22434232755,437.17185753972,468.17206422213,488.60384173026,523.2511306012],description:"Approximate 5/19-comma meantone with 19/17 tone, Petr Parizek, 2002"},mean23:{frequencies:[261.6255653006,274.15058593695,292.74334833321,312.59706303545,327.56228503462,349.77740346966,366.52259116395,391.37997903742,410.11684180717,437.93077103284,467.63102771476,490.01832104213,523.2511306012],description:"5/23-comma meantone scale, A.J. Ellis no. 4"},mean23six:{frequencies:[261.6255653006,273.11604376732,292.42729246507,313.10398392891,326.85537164611,349.96637341293,365.33674088125,391.16864715511,408.34860251967,437.22175336101,468.13644404983,488.69678846289,523.2511306012],description:"6/23-comma meantone scale"},mean25:{frequencies:[261.6255653006,272.66208311698,292.28833573479,313.32728859832,326.54481265413,350.04955123355,364.81618195011,391.07569872695,407.57299290994,436.91015056532,468.35900068872,488.11644468937,523.2511306012],description:"7/25-comma meantone scale, least square weights 3/2:0 5/4:1 6/5:1"},mean26:{frequencies:[261.6255653006,272.91754119498,292.36655103694,313.20156187458,326.7196004604,350.00272362315,365.10913291207,391.12802157824,408.00943064927,437.08553692506,468.23370304224,488.44305713046,523.2511306012],description:"7/26-comma meantone scale (Woolhouse 1835). Almost equal to meaneb742"},mean26_21:{frequencies:[261.6255653006,272.91754592428,280.26986822267,292.36655272572,304.98534036063,313.20156006546,326.71960423481,335.52133892506,340.8210986211,350.00272362315,365.10913712997,374.9450750913,391.12802157824,408.00943771953,419.00109777107,437.08553944976,455.95052092314,468.23370033762,488.44306277317,501.60158217053,509.52467838008,523.2511306012],description:"21 of 7/26-comma meantone scale (Woolhouse 1835)"},mean27:{frequencies:[261.6255653006,273.15429014256,292.43899158768,313.08519355925,326.88152513903,349.9593710588,365.38059276675,391.17647406766,408.41395592075,437.24799400905,468.11771609009,488.74567091648,523.2511306012],description:"7/27-comma meantone scale, least square weights 3/2:2 5/4:1 6/5:1"},mean29:{frequencies:[261.6255653006,273.57932033947,292.56893127899,312.87664195194,327.1720749345,349.88164908166,365.86785468743,391.26336919078,409.14031659695,437.53944680455,467.90980928584,489.28875967044,523.2511306012],description:"7/29-comma meantone scale, least square weights 3/2:4 5/4:1 6/5:1"},mean2sev:{frequencies:[261.6255653006,272.52663052146,292.24684137387,313.39402123097,326.45210604021,350.07440004945,364.66083404534,391.04793957621,407.34160211012,436.81711699543,468.42550014967,487.94322738789,523.2511306012],description:"2/7-comma meantone scale. Zarlino's temperament (1558). See also meaneb371"},mean2sev_15:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,350.07447082328,364.66081719444,391.04786051887,407.34165622677,419.34452602299,436.81710690282,468.42541627199,487.94330348661,523.2511306012],description:"15 of 2/7-comma meantone scale"},mean2sev_19:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,340.0543130973,350.07447082328,364.66081719444,375.40603866065,391.04786051887,407.34165622677,419.34452602299,436.81710690282,455.01770749831,468.42541627199,487.94330348661,508.27414914183,523.2511306012],description:"19 of 2/7-comma meantone scale"},mean2sev_31:{frequencies:[261.6255653006,264.72620698393,272.52663052146,280.55692507618,283.88190679319,292.24689370448,300.8583415146,304.42377254813,313.39402847191,317.10820138491,326.45203249943,336.07138073182,340.0543130973,350.07447082328,354.22315547012,364.66081719444,375.40603866065,379.85514366424,391.04786051887,395.6823437549,407.34165622677,419.34452602299,424.31412061457,436.81710690282,449.68851049921,455.01770749831,468.42541627199,473.97693555703,487.94330348661,502.32108537715,508.27414914183,523.2511306012],description:"31 of 2/7-comma meantone scale"},mean2seveb:{frequencies:[261.6255653006,274.26749945295,292.59076110537,312.44357330613,327.42660602987,349.76102048238,366.6169314736,391.04794861134,410.01084835752,437.49574139527,467.27496094916,489.74950989452,523.2511306012],description:'"2/7-comma" meantone with equal beating fifths. A.J. Ellis no. 8'},mean2sevr:{frequencies:[261.6255653006,272.52663052146,292.24289114742,313.39346366789,326.45152465405,350.07234194042,364.65868952128,391.04531121882,407.33886585294,436.81651812993,468.41855142334,487.93599106598,523.2511306012],description:"Rational approximation to 2/7-comma meantone, 1/1 = 262.9333"},mean9:{frequencies:[261.6255653006,274.03547926168,292.70827332867,306.59245933664,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"2/9-comma meantone scale, Lemme Rossi, Sistema musico (1666)"},mean94:{frequencies:[261.6255653006,268.79084150406,291.09659021292,315.25339315665,323.88740273232,350.76536842075,360.37196303797,390.27761906502,400.96635635801,434.24075936811,470.27645613296,483.15616342113,523.2511306012],description:"4/9-comma meantone scale"},mean9_15:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,418.0235894185,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"15 of 2/9-comma meantone scale"},mean9_19:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,343.0174228875,349.79835961887,366.39065074918,373.63364091796,391.35653176554,409.92008797511,418.0235894185,437.85206746661,458.62082212371,467.68706357679,489.87127257422,513.10776453427,523.2511306012],description:"19 of 2/9-comma meantone scale"},mean9_31:{frequencies:[261.6255653006,268.72322665693,274.03547926168,279.45274708261,287.03404351137,292.70827332867,298.49467410529,306.59245933664,312.65343270838,321.13524775754,327.48360691354,333.95746354843,343.0174228875,349.79835961887,359.28803828513,366.39065074918,373.63364091796,383.76997851754,391.35653176554,401.97367512027,409.92008797511,418.0235894185,429.36393755067,437.85181455341,446.50763144636,458.62082212371,467.68706357679,480.3749841712,489.87127257422,499.55528826613,513.10776453427,523.2511306012],description:"31 of 2/9-comma meantone scale"},meaneb1071:{frequencies:[261.6255653006,273.45959631537,292.5323192343,305.76452283047,327.09038632535,349.9034421565,365.73073124967,391.23900009103,408.93579686983,437.45744778434,457.24482979639,489.13584427285,523.2511306012],description:"Equal beating 7/4 = 3/2 same."},meaneb1071a:{frequencies:[261.6255653006,273.94115519525,292.67936294368,306.45675889694,327.41929816594,349.81553441422,366.28252094772,391.33731744348,409.75863641311,437.78732645584,458.39517452459,489.75074612717,523.2511306012],description:"Equal beating 7/4 = 3/2 opposite."},meaneb341:{frequencies:[261.6255653006,272.43747957464,292.21954801903,313.43802026715,326.39113133433,350.09085029289,364.55867287416,391.02956482064,407.18921698842,436.75579855003,468.46925117002,487.82916876009,523.2511306012],description:"Equal beating 6/5 = 5/4 same. Almost 4/15 Pyth. comma"},meaneb371:{frequencies:[261.6255653006,272.52577151658,292.24657972098,313.39444482621,326.45151771442,350.07455777399,364.65985037488,391.0477633913,407.34013625771,436.81652657765,468.42591953828,487.94213100406,523.2511306012],description:"Equal beating 6/5 = 3/2 same. Practically 2/7-comma (Zarlino)"},meaneb371a:{frequencies:[261.6255653006,269.83862220337,291.42039690163,314.72828847419,324.6081803116,350.57044084899,361.57569171511,390.49462500658,421.72650333798,434.96526321606,469.75391665508,484.50062400899,523.2511306012],description:"Equal beating 6/5 = 3/2 opposite. Almost 2/5-comma"},meaneb381:{frequencies:[261.6255653006,275.92799893014,293.28437056932,311.73248946737,328.77414682856,349.45463702831,368.55847249214,391.74146894101,416.38271791821,439.14534885862,466.76838786866,492.28548089506,523.2511306012],description:"Equal beating 6/5 = 8/5 same. Almost 1/7-comma"},meaneb451:{frequencies:[261.6255653006,274.36682021224,292.8092284668,312.49148032108,327.70992276921,349.73795145032,366.77030983847,391.42412846541,410.48661799548,438.07873640926,467.5258138363,490.29448158868,523.2511306012],description:"Equal beating 5/4 = 4/3 same, 5/24 comma meantone. A.J. Ellis no. 6"},meaneb471:{frequencies:[261.6255653006,272.3284467197,292.18612898941,313.49179640307,326.31648163178,350.11087068539,364.43361138613,391.00720457415,407.00321492741,436.68087780422,468.52283272721,487.68970701588,523.2511306012],description:"Equal beating 5/4 = 3/2 same. Almost 5/17-comma"},meaneb471a:{frequencies:[261.6255653006,274.14912748586,292.7429036132,312.59777626068,327.56128980523,349.7776701617,366.52092076205,391.37968062521,410.11434970273,437.92977184699,467.63173811584,490.01645860508,523.2511306012],description:"Equal beating 5/4 = 3/2 opposite. Almost 1/5 Pyth. Gottfried Keller (1707)"},meaneb471b:{frequencies:[261.6255653006,272.31089540773,292.18072491748,313.50040506268,326.30440921209,350.11400731728,364.41338872146,391.00370158472,406.97310157871,436.668886633,468.53149836075,487.66729542944,523.2511306012],description:"21/109-comma meantone with 9/7 major thirds, almost equal beating 5/4 and 3/2"},meaneb472:{frequencies:[261.6255653006,270.83769079127,291.72826852127,314.23020335825,325.29440843388,350.38540704884,362.72286472858,390.7008399429,404.45761497645,435.65472502222,469.25816799182,485.78126704788,523.2511306012],description:"Beating of 5/4 = twice 3/2 same. Almost 5/14-comma"},meaneb472_19:{frequencies:[261.6255653006,270.8378472333,281.80541953687,291.72826852127,302.00051792575,314.23002185182,325.29459633135,336.74877333101,350.38540704884,362.72307424558,377.41153667283,390.7008399429,404.45808222448,420.83660282593,435.65497666633,450.99513069838,469.25816799182,485.78154764623,502.88674365212,523.2511306012],description:"Beating of 5/4 = twice 3/2 same, 19 tones"},meaneb472a:{frequencies:[261.6255653006,274.74648495017,292.92493846141,312.30633997417,327.96897748493,349.66886860972,367.20529370531,391.50146074488,411.13561642091,438.33843670622,467.34113372786,490.7787182415,523.2511306012],description:"Beating of 5/4 = twice 3/2 opposite. Almost 3/17-comma"},meaneb591:{frequencies:[261.6255653006,273.06215106005,292.41085266114,313.13038820279,326.81843330822,349.97621009739,365.27491737756,391.15765268623,418.87439289145,437.18488525956,468.16276342643,488.62782610925,523.2511306012],description:"Equal beating 4/3 = 5/3 same."},meaneb732:{frequencies:[261.6255653006,272.00548436883,292.08705896894,313.65121264041,326.09523618955,350.1701397801,364.06303937825,390.94102347986,406.4514961644,436.45893055948,468.68174619223,487.27655969467,523.2511306012],description:"Beating of 3/2 = twice 6/5 same. Almost 4/13-comma"},meaneb732_19:{frequencies:[261.6255653006,272.00553778846,280.94077405591,292.08707584055,303.67560621907,313.65118727632,326.09527197795,339.03307470248,350.17012966679,364.06310036266,376.02237826726,390.94103477068,406.45158772689,419.80330474394,436.45896585468,453.77543893118,468.68171912011,487.27662724555,506.60928680033,523.2511306012],description:"Beating of 3/2 = twice 6/5 same, 19 tones"},meaneb732a:{frequencies:[261.6255653006,270.68848625127,291.6822692306,314.3042667302,325.1920204578,350.41293324447,362.5515203525,390.67014898736,404.20304509584,435.55206635241,469.33217160858,485.59021720901,523.2511306012],description:"Beating of 3/2 = twice 6/5 opposite. Almost 1/3 Pyth. comma"},meaneb742:{frequencies:[261.6255653006,272.89343543801,292.35917287023,313.21341909223,326.70311046689,350.00714105462,365.08148980199,391.12308516115,407.96824372307,437.06899032128,468.24551969328,488.41224041213,523.2511306012],description:"Beating of 3/2 = twice 5/4 same."},meaneb742a:{frequencies:[261.6255653006,273.78850133971,292.63287562287,312.77409391616,327.31510698093,349.84341999552,366.10759179471,391.30612443552,409.49789158088,437.68290117536,467.80756449982,489.55615570194,523.2511306012],description:"Beating of 3/2 = twice 5/4 opposite. Almost 3/13-comma, 3/14 Pyth. comma"},meaneb781:{frequencies:[261.6255653006,273.88372205101,292.66195046404,312.72748571568,327.38015167213,349.82604176358,366.21672762941,391.32556326448,418.15568884829,437.74813244966,467.76108961433,489.67748280644,523.2511306012],description:"Equal beating 3/2 = 8/5 same."},meaneb891:{frequencies:[261.6255653006,272.7426257605,292.31307409948,313.28760473417,326.59990179186,350.03483972175,364.90860969063,391.092135133,419.1546662649,436.96549358815,468.31936361194,488.21959184068,523.2511306012],description:"Equal beating 8/5 = 5/3 same. Almost 5/18-comma"},meaneight:{frequencies:[261.6255653006,276.08926119362,293.33333347996,311.65444160511,328.88393162803,349.42547049952,368.74309237173,391.77416758435,413.43299207996,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8 Pyth. comma meantone scale"},meanfifth:{frequencies:[261.6255653006,274.56546814423,292.86978442859,312.39456569414,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"1/5-comma meantone scale (Verheijen)"},meanfifth2:{frequencies:[261.6255653006,279.06726965397,292.86986732103,312.39452419152,327.84547867349,349.70184487387,366.99801003998,391.46454285105,417.56218018201,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"1/5-comma meantone by John Holden (1770)"},meanfifth_19:{frequencies:[261.6255653006,274.56546814423,279.06726965397,292.86978442859,307.35519222791,312.39456569414,327.84548435462,344.06059968708,349.70179235499,366.99791252626,373.01539917593,391.46460164194,410.82629477826,417.56217294621,438.21464222188,459.88868900496,467.42914467878,490.54793493862,514.81033759999,523.2511306012],description:"19 of 1/5-comma meantone scale"},meanfifth_43:{frequencies:[261.6255653006,265.91515911649,270.13633240739,274.56546814423,279.06726965397,283.49717461664,288.14537375445,292.86978442859,297.67175429757,302.39711110066,307.35519222791,312.39456569414,317.35355938713,322.556865357,327.84548435462,333.22081516619,338.51040756711,344.06059968708,349.70179235499,355.43547760922,361.07770857381,366.99791252626,373.01539917593,378.93660287884,385.14971481892,391.46460164194,397.88302689184,404.19904307077,410.82629477826,417.56217294621,424.19061149626,431.14564594215,438.21464222188,445.39957775044,452.46991103879,459.88868900496,467.42914467878,475.09307907327,482.63477102771,490.54793493862,498.59100550039,506.50570672499,514.81033759999,523.2511306012],description:"Complete 1/5-comma meantone scale"},meanfiftheb:{frequencies:[261.6255653006,275.80023422757,293.11157312801,311.73372470712,328.53333183909,349.48325286892,368.3828117434,391.46459711956,412.7266004334,438.69360944226,466.62683936965,491.82624824197,523.2511306012],description:'"1/5-comma" meantone with equal beating fifths'},meangold:{frequencies:[261.6255653006,272.97231199113,292.38331430233,313.17462880702,326.75706743029,349.99269211627,365.17193449866,391.13923210785,408.10300926149,437.12312635029,468.20685771475,488.51307131873,523.2511306012],description:"Meantone scale with Blackwood's R = phi, and diat./chrom. ST = phi, ~4/15-comma"},meanhalf:{frequencies:[261.6255653006,267.49544939623,290.69507255622,315.90677595028,322.99452506247,351.00752840096,358.88280562497,390.00836666198,398.75867291663,433.34262909025,470.92601754108,481.49180950675,523.2511306012],description:"1/2-comma meantone scale"},meanhar2:{frequencies:[261.6255653006,273.08769296879,292.41861893027,305.22982618403,326.83598255713,349.97156260351,365.30423365264,391.16284711627,408.30015740759,437.20230245522,456.35665612784,488.66055322307,523.2511306012],description:"1/9-Harrison's comma meantone scale"},meanhar3:{frequencies:[261.6255653006,274.22153683641,292.76499331753,306.86017365004,327.61072570921,343.38355445704,366.60389537541,391.39444778107,410.23814647641,437.9793418028,459.06587176894,490.10890120058,523.2511306012],description:"1/11-Harrison's comma meantone scale"},meanharris:{frequencies:[261.6255653006,273.71072489962,292.60907359238,306.12544311476,327.26186315247,349.85764856047,366.01847563765,391.29021017831,409.36491649663,437.62950220286,457.84473927605,489.45661357347,523.2511306012],description:"1/10-Harrison's comma meantone scale"},meanhsev:{frequencies:[261.6255653006,265.69493617871,271.18768033644,275.4057836544,279.68949451567,284.03983498254,289.91182549392,294.4211659268,299.00064605783,305.1819244006,309.92877868547,314.74946639166,321.25632089757,326.25319922315,331.32779988873,336.4813337451,343.43745382287,348.77934146077,354.20431777528,361.52682728594,367.15008027699,372.86080050545,378.66034414493,386.48843610249,392.49994642563,398.60496085649,406.84537033315,413.17351844213,419.60009331305,426.12662827999,434.93599657884,441.70106893056,448.57136642871,457.84473927605,464.96613926104,472.19830582795,481.96011959425,489.45661357347,497.06970936204,504.80122352123,515.23704142273,523.2511306012],description:"1/14-septimal schisma tempered meantone scale"},meanhskl:{frequencies:[261.6255653006,275.0605216927,293.02063313667,312.15345277639,328.18310911307,349.61186736411,367.56508220664,391.56529173291,411.67289207144,438.55312706018,467.18850946536,491.17950266504,523.2511306012],description:"Half septimal kleisma meantone"},meanlst357_19:{frequencies:[261.6255653006,273.71260157103,279.68803244686,292.60971924044,306.12821574316,312.81131320311,327.26311833974,342.38279105966,349.85736361975,366.02068710341,374.01129952811,391.29052886394,409.36829077259,418.30522648629,437.63082426891,457.84952434322,467.84458559023,489.45917220726,512.07206464598,523.2511306012],description:"19 of mean-tone scale, least square error in 3/2, 5/4 and 7/4"},meanmalc:{frequencies:[261.6255653006,279.16226462633,292.82999876562,312.45832383396,327.75622702832,349.72564885805,366.84815356577,391.43789792004,417.67588698136,438.12522309524,467.49265244264,490.38100841085,523.2511306012],description:"Meantone approximation to Malcolm's Monochord, 3/16 Pyth. comma"},meannkleis:{frequencies:[261.6255653006,277.55670411237,293.77792781181,311.66693695111,329.88161264913,349.96913477239,370.42222384066,392.07096746411,415.94530241673,440.25439013544,467.06275302556,494.35929617392,523.2511306012],description:"1/5 kleisma tempered meantone scale"},meanpi:{frequencies:[261.6255653006,275.38456311745,294.43027471344,309.91448590794,326.2128298123,348.77404705732,367.11600789597,392.50613131028,413.14795414706,434.87532652316,464.95175460796,489.40347900327,523.2511306012],description:"Pi-based meantone with Harrison's major third by Erv Wilson"},meanpi2:{frequencies:[261.6255653006,287.5806999253,296.7710142931,326.2128298123,336.6377243117,370.0346037192,381.85992557156,394.06315326167,433.15704755212,446.99959483943,491.34516423327,507.04724898227,523.2511306012],description:"Pi-based meantone by Erv Wilson analogous to 22-tET"},meanpkleis:{frequencies:[261.6255653006,274.33428876064,294.88060759996,309.2047285643,324.22465805628,348.50752497012,365.43662717622,392.80607455881,411.88702081614,442.73537947933,464.24169412807,486.7926967469,523.2511306012],description:"1/5 kleisma positive temperament"},meanquar:{frequencies:[261.6255653006,273.37431312998,292.50627485027,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale. Pietro Aaron's temp. (1523). 6/5 beats twice 3/2"},meanquar_14:{frequencies:[261.6255653006,273.37431312998,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split D#/Eb and G#/Ab, Otto Gibelius (1666)"},meanquar_15:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb and G#/Ab"},meanquar_16:{frequencies:[261.6255653006,273.37431312998,279.93548123753,292.50629850443,305.64179898843,312.97722776199,327.03195662575,349.91920725962,365.63293356166,391.22137338448,408.78994578219,418.60090448096,437.39882871549,457.04097849371,468.01000025525,489.02679755603,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, G#/Ab and A#/Bb"},meanquar_17:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177250659,312.977175335,327.03195662575,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39889945791,457.04105241293,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},meanquar_19:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,341.71789064962,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39890198442,457.04105241293,468.01003810189,489.02683710225,510.98743222773,523.2511306012],description:"19 of 1/4-comma meantone scale"},meanquar_27:{frequencies:[261.6255653006,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,327.03195662575,334.88072358477,341.71789064962,349.91912034749,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"27 of 1/4-comma meantone scale"},meanquar_31:{frequencies:[261.6255653006,267.90457886781,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,320.48862783822,327.03195662575,334.88072358477,341.71789064962,349.91912034749,358.31717956585,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,479.24227945773,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"31 of 1/4-comma meantone scale"},meanquareb:{frequencies:[261.6255653006,274.90575459855,292.80763523599,312.14798050979,327.88746490679,349.6453532581,367.3522744581,391.22144795733,411.14173398328,437.99455416256,467.00507093977,490.61429903129,523.2511306012],description:"Variation on 1/4-comma meantone with equal beating fifths"},meanquarm23:{frequencies:[261.6255653006,273.51763645063,292.40504357126,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,408.78994578219,436.04260883433,468.17206422213,489.12605686634,523.2511306012],description:"1/4-comma meantone approximation with minimal order 23 beatings"},meanquarr:{frequencies:[261.6255653006,273.37036621967,292.50063201309,312.98169478553,327.03195662575,349.92419358955,365.62579001637,391.21579858034,408.78994578219,437.39258595147,468.01906681552,489.01974822542,523.2511306012],description:"Rational approximation to 1/4-comma meantone, Kenneth Scholz, MTO 4.4, 1998"},meansabat:{frequencies:[261.6255653006,279.13726386405,294.25495796556,313.95067836072,330.95382015833,348.87783040382,372.229687597,392.38914286775,418.65339720992,441.32709511026,470.8669722571,496.36848628125,523.2511306012],description:"1/9-schisma meantone scale of Eduard Sa'bat-Garibaldi"},meansabat_53:{frequencies:[261.6255653006,264.79625752493,268.00537599851,271.25338610366,275.79485124716,279.13726386405,282.52018221184,285.94410045135,290.73152483281,294.25495796556,297.82109228474,301.4304452945,305.08354077075,310.19140758515,313.95067836072,317.75550958044,321.60645175541,326.99095182327,330.95382015833,334.96471528237,339.02421924159,343.13292113612,348.87783040382,353.10595017045,357.38531136087,361.71653498009,367.77258074571,372.229687597,376.74081403286,381.30660995465,385.92774054592,392.38914286775,397.14458487807,401.95765903525,406.82906379475,413.640406907,418.65339720992,423.72714093867,428.86237189887,436.04260883433,441.32709511026,446.67562589029,452.08897683944,457.56793273834,465.22877230071,470.8669722571,476.57350267936,482.349191678,490.42492909292,496.36848628125,502.38407462043,508.4725670703,514.63484717027,523.2511306012],description:"53-tone 1/9-schisma meantone scale"},meanschis:{frequencies:[261.6255653006,275.81646505128,294.24573392894,310.20599265769,327.03195662575,348.88329767713,367.80716871461,392.38299382393,413.66634097248,436.10412364188,465.24335632603,490.47874118496,523.2511306012],description:"1/8-schisma temperament, Helmholtz"},meanschis7:{frequencies:[261.6255653006,275.84425785506,294.23387584933,310.2247482054,327.0846843223,348.89032888179,367.85164222246,392.37508610937,413.69968681881,436.18322603255,465.26210635182,490.54793493862,523.2511306012],description:"1/7-schisma linear temperament"},meanschis_17:{frequencies:[261.6255653006,275.81646505128,290.77709705464,294.24573392894,310.20599265769,327.03195662575,330.93307160522,348.88329767713,367.80716871461,372.19468374184,392.38299382393,413.66634097248,436.10412364188,441.30634506723,465.24335632603,490.47874118496,496.32958936031,523.2511306012],description:"17-tone 1/8-schisma linear temperament"},meansept:{frequencies:[261.6255653006,273.93523095528,292.67762672082,312.70235991264,327.41522444303,349.81667202162,366.27579142084,391.33604481052,409.74867679276,437.78330574787,467.73603562223,489.74334292241,523.2511306012],description:"Meantone scale with septimal diminished fifth"},meansept2:{frequencies:[261.6255653006,273.61459551034,286.15296204753,292.57963558274,305.98714063953,320.00886175336,327.19620693615,342.18982383643,349.87514759905,365.9082279648,382.67602660872,391.27063976147,409.20043831214,427.95210889573,437.56358849756,457.61500463173,478.58500343311,489.333659422,511.75744671018,523.2511306012],description:"Meantone scale with septimal neutral second"},meansept3:{frequencies:[261.6255653006,267.11515986718,271.23581508831,275.42019673559,281.19923906193,285.53716249988,289.94217244295,296.02592413073,300.59257160392,305.22982618403,309.9384746623,316.44180152381,321.32358037849,326.28048244956,333.12670774706,338.26588629419,343.48414905091,348.7829114007,356.10146388137,361.59490682213,367.17305499414,374.87731434423,380.66058361349,386.53284867747,394.643327573,400.73152907611,406.91341882127,413.19091223118,421.86074762795,428.36858751681,434.97682067587,444.1040384307,450.95501471222,457.91167766162,464.97592623609,474.73234784313,482.05581210758,489.49253462334,499.76337935275,507.47298512535,515.30182087389,523.2511306012],description:"Pythagorean scale with septimal minor third"},meansept4:{frequencies:[261.6255653006,266.94086705872,271.13211808455,275.38917613856,280.98410555769,285.39585012732,289.87686370457,295.76613145071,300.40996929954,305.12672026341,309.91752915454,316.21395200486,321.17884203959,326.22168604472,332.8493514236,338.07543464185,343.38355445704,348.77505435772,355.86092403367,361.44831302863,367.12342987925,374.58207334188,380.46340397682,386.43730087372,394.28810581018,400.47907310734,406.76701374557,413.15368163355,421.54749623588,428.16623317002,434.88889120201,443.72428802318,450.69091522486,457.76754776364,464.95497741911,474.40121026751,481.84980583512,489.41535214975,499.35853288878,507.19898454493,515.16253949886,523.2511306012],description:"Pythagorean scale with septimal narrow fourth"},meansev:{frequencies:[261.6255653006,275.93321340298,293.28595453555,311.72996498387,328.77769811601,349.45369437647,368.5644419122,391.74252566418,413.16594588103,439.14890519043,466.76586696593,492.29212632197,523.2511306012],description:"1/7-comma meantone scale, Jean-Baptiste Romieu (1755)"},meansev2:{frequencies:[261.6255653006,273.98141462199,292.76593693997,312.83835055233,327.61283758281,350.07440004945,366.60744235102,391.74252566418,410.24343789088,438.37026184168,468.42550014967,490.54793493862,524.18054130269],description:"Meantone scale with 1/7-comma stretched octave (stretched meansept)"},meansev_19:{frequencies:[261.6255653006,275.93321340298,278.07859353335,293.28589524255,309.32501829942,311.72996858511,328.77775508885,346.75764506664,349.4536277652,368.56443339655,371.42996022741,391.74260033637,413.16585280598,416.37814821359,439.14890011719,463.16493144882,466.76596133102,492.29202110912,496.11959049595,523.2511306012],description:"19 of 1/7-comma meantone scale"},meanseveb:{frequencies:[261.6255653006,276.822915312,293.45907344559,311.2600957924,329.2717708679,349.29792128041,369.56105314287,391.74259807358,414.53862252605,439.49286138442,466.19439430972,493.21190508606,523.2511306012],description:'"1/7-comma" meantone with equal beating fifths'},meansixth:{frequencies:[261.6255653006,275.36245350283,293.11247215425,312.00666699279,328.38886075091,349.55699144229,367.91095120397,391.62676241399,412.18948168074,438.75944753732,467.04212833931,491.56459996916,523.2511306012],description:"1/6-comma meantone scale (tritonic temperament of Salinas)"},meansixth_19:{frequencies:[261.6255653006,275.36245350283,278.49009641114,293.11247215425,308.50278723002,312.00666699279,328.38886075091,345.6314161331,349.55699144229,367.91095120397,372.08969287196,391.62676241399,412.18948168074,416.87124381956,438.75944753732,461.79691129422,467.04212833931,491.56459996916,517.37477513058,523.2511306012],description:"19 of 1/6-comma meantone scale"},meansixtheb:{frequencies:[261.6255653006,276.39673661379,293.31426069206,311.4574698476,328.96404447481,349.37515437283,369.07004939896,391.62674884124,413.78350416977,439.15979251365,466.37460465854,492.63446576705,523.2511306012],description:'"1/6-comma" meantone with equal beating fifths'},meansixthm:{frequencies:[261.6255653006,275.36250599118,293.11251278827,312.00669222389,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52369088643,438.75941205608,467.04206359353,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 2 fifths"},meansixthm2:{frequencies:[261.6255653006,276.14113065853,293.11251278827,310.24975557428,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52380581681,438.75941205608,465.72523006308,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 4 fifths"},meansixthpm:{frequencies:[261.6255653006,275.00020270933,293.00227310437,309.72478954314,328.14198392915,348.83408706747,367.49599295996,391.5530240856,412.50030385781,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"modified 1/6P-comma temperament, French 18th century"},meansixthso:{frequencies:[261.6255653006,273.09145986506,292.50627485027,313.30134186202,327.03195662575,350.28154752005,365.63284274659,391.62667645325,408.78994578219,437.85193595173,468.98001879925,489.53334447372,524.3356019912],description:"1/6-comma meantone scale with 1/6-comma stretched oct, Dave Keenan TL 13-12-99"},meanstr:{frequencies:[261.6255653006,272.52663052146,292.30447317753,313.51763757869,326.58087306932,350.28154752005,364.87661266094,391.35649333595,407.66301227525,437.24799400905,468.98001879925,488.52085380073,523.97386302914],description:"Meantone with 1/9-comma stretched octave, Petr Parizek (2006)"},meanten:{frequencies:[261.6255653006,276.96346718799,293.59840699152,311.2324721493,329.47860040677,349.26769656434,369.74365294187,391.95114287501,414.92943551322,439.85086739936,466.26912673157,493.60433806962,523.2511306012],description:"1/10-comma meantone scale"},meanthird:{frequencies:[261.6255653006,271.40047399919,291.9012907804,313.95067836072,325.68056936328,350.28154752005,363.36884069528,390.81668391305,405.4184580124,436.04260883433,468.98001879925,486.50215045777,523.2511306012],description:"1/3-comma meantone scale (Salinas)"},meanthird_19:{frequencies:[261.6255653006,271.40047399919,281.38801176707,291.9012907804,302.80736724606,313.95067836072,325.68056936328,337.848714425,350.28154752005,363.36884069528,376.74081403286,390.81668391305,405.4184580124,420.33785775232,436.04260883433,452.33412516107,468.98001879925,486.50215045777,504.40543017669,523.2511306012],description:"Complete 1/3-comma meantone scale"},meanthirdeb:{frequencies:[261.6255653006,273.41679662438,292.30169912182,312.83755546226,326.81234905863,349.91518709086,365.63683018302,390.81669745772,408.5035451685,436.83089868331,467.63468237516,488.59687355467,523.2511306012],description:'"1/3-comma" meantone with equal beating fifths'},meanvar1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,312.00669222389,327.03195662575,349.55706816887,366.3906401674,391.22147055517,410.48618883318,437.39890198442,467.04206359353,489.53334447372,523.2511306012],description:"Variable meantone 1: C-G-D-A-E 1/4, others 1/6"},meanvar2:{frequencies:[261.6255653006,274.19219069011,292.50627485027,312.04360750473,327.03195662575,349.70184487387,366.23895640989,391.22147055517,410.65012590831,437.39890198442,467.23549927892,489.3306802979,523.2511306012],description:"Variable meantone 2: C..E 1/4, 1/5-1/6-1/7-1/8 outward both directions"},meanvar3:{frequencies:[261.6255653006,275.36250599118,292.50627485027,310.71739423852,327.03195662575,349.55706816887,367.15000817177,391.22147055517,413.04376116614,437.39890198442,466.0760911248,489.53334447372,523.2511306012],description:"Variable meantone 3: C..E 1/4, 1/6 next, then Pyth."},meanvar4:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,412.61639318626,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Variable meantone 4: naturals 1/4-comma, accidentals Pyth."},mediant16:{frequencies:[261.6255653006,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Mediant doubling of octave done four times"},mercadier:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,349.22823143301,368.74309237173,391.5530240856,413.90012676351,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Mercadier's well-temperament (1777), 1/12 and 1/6 Pyth. comma"},mercadier2:{frequencies:[261.6255653006,276.14388692511,292.95319623755,310.40895756597,328.03206784165,349.20805980193,368.45885450371,391.49761638186,413.86785247997,438.37641748302,465.57175090792,491.63473786767,523.2511306012],description:"Mercadier de Belestas (1776)"},mercator:{frequencies:[261.6255653006,272.09448029963,279.3054110864,290.48161516351,306.08206748155,318.32990397837,326.76614606023,335.42596179815,348.84778913489,362.80689075348,372.42184279259,387.32403355801,408.12545368833,418.94141877379,435.70530841001,453.13974129598,465.14865565404,490.12996697565,509.74216322321,523.2511306012],description:"19 out of 53-tET, see Mandelbaum p. 331"},merrick:{frequencies:[261.6255653006,278.62147458377,295.28844751169,312.94924079019,329.91874474504,349.29981986967,371.62722343835,394.01440557319,416.60121863153,438.96906929631,468.0242659544,493.6331420766,523.2511306012],description:"A. Merrick's melodically tuned equal temperament (1811)"},mersen_l1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 1"},mersen_l2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 2"},mersen_s1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 1"},mersen_s2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 2"},mersenmt1:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.03921839762,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 1"},mersenmt2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 2"},mersenne:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,340.65828815182,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,510.98743222773,523.2511306012],description:"31-note choice system of Mersenne, Harmonie universelle (1636)"},meyer:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},meyer_29:{frequencies:[261.6255653006,268.26840191956,275.93321340298,286.15296204753,289.72987407313,294.32876096318,306.59245933664,321.92208230347,327.03195662575,331.11985608357,343.38355445704,344.91651675372,357.69120255941,367.91095120397,372.50983809402,383.2405741708,386.30649876417,392.4383479509,408.78994578219,413.89982010446,429.2294430713,441.49314144476,457.84473927605,459.88868900496,482.88312345521,490.54793493862,496.67978412536,510.98743222773,515.07533168556,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},mid_enh1:{frequencies:[261.6255653006,269.10058145205,336.37572681506,348.83408706747,392.4383479509,403.65087217807,504.56359022259,523.2511306012],description:"Mid-Mode1 Enharmonic, permutation of Archytas's with the 5/4 lying medially"},mid_enh2:{frequencies:[261.6255653006,271.31540105247,339.14425131559,348.83408706747,392.4383479509,406.97310157871,508.71637697339,523.2511306012],description:"Permutation of Archytas' Enharmonic with the 5/4 medially and 28/27 first"},miller19:{frequencies:[261.6255653006,271.16557874802,283.07475767856,293.39690257971,304.09543631541,315.18408718336,326.67707691855,338.58915326012,350.93559605343,363.73224209988,376.99551198295,390.74241649248,407.9032302438,422.77716528297,438.1934715504,454.17192383337,470.73301771751,487.89800430439,505.68889852562,524.12852955557],description:"TOP tempered nr. 64 [1202.9, 570.4479508], 7-limit {225/224, 1029/1000}"},miller7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,313.95067836072,329.64821227876,353.19451315581,366.27579142084,392.4383479509,412.06026534844,439.53094970501,470.92601754108,494.47231841813,523.2511306012],description:"Herman Miller, 7-limit JI. mode of parizek_ji1"},miller_12:{frequencies:[261.6255653006,273.36657578691,291.63627719304,313.29104303136,327.35065305942,349.22823143301,364.90060015836,391.99543598175,418.19337019276,436.9606979923,456.57025003029,487.08386390194,523.2511306012],description:"Herman Miller, scale with appr. to three 7/4 and one 11/8. Tuning List 19-11-99"},miller_12a:{frequencies:[261.6255653006,273.46133384191,291.68681828778,313.23675853409,327.40738352015,349.22823143301,365.02708698668,391.99543598175,418.12090908234,437.03642407223,456.80766452229,487.25270356141,523.85596330884],description:'Herman Miller, "Starling" scale, alternative version TL 25-11-99'},miller_12r:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,484.4917875937,523.2511306012],description:'Herman Miller, "Starling" scale rational version'},miller_ar1:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.07474405997,327.9937953665,348.83408706747,368.24374600687,391.64146650178,414.27421384356,438.21489534465,465.11211608996,490.99166158792,523.2511306012],description:'Herman Miller, "Arrow I" well-temperament'},miller_ar2:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.2849072826,328.2161033156,349.07052034394,368.24374600687,391.64146650178,414.27421384356,438.51190905657,465.42736069124,491.32444638706,523.2511306012],description:'Herman Miller, "Arrow II" well-temperament'},miller_b1:{frequencies:[261.6255653006,276.37000081643,292.93610587951,310.49521248455,328.2161033156,348.83408706747,368.4933346061,391.64146650178,413.993616853,438.80912407872,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Butterfly I" well-temperament'},miller_b2:{frequencies:[261.6255653006,276.55731914056,293.13465239421,310.70566022736,328.2161033156,349.07052034394,368.74309237173,392.17254067411,414.27421384356,439.10654054756,465.42736069124,491.99069280383,523.2511306012],description:'Herman Miller, "Butterfly II" well-temperament'},miller_bug:{frequencies:[261.6255653006,275.99574470663,292.73769384471,310.49521248455,327.54963108844,348.83408706747,368.4933346061,391.64146650178,413.993616853,437.62147130622,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Bug I" well-temperament'},miller_dim:{frequencies:[261.6255653006,272.37088095799,275.97178311718,291.10467300644,307.06737543415,311.12698372208,323.9053895548,328.18760802294,346.1837483498,365.1667076515,369.99442271164,385.1905938463,390.2830385166,411.68417663589,434.25884690128,440,458.07139483414,464.12736626882,489.57775198944,516.42371048788,523.2511306012],description:"Diminished temperament, g=92.421, oct=1/4, 7-limit"},miller_nikta:{frequencies:[261.6255653006,272.78230567952,282.82337239762,292.30660227893,305.1368529352,315.1779191367,326.89249731477,341.39626079795,349.76381456689,364.82541608424,379.88701473,391.60159255926,407.77886614283,422.28262813098,436.22855406869,456.86852448015,469.69877536137,488.10739794888,508.74736733766,523.2511306012],description:'Herman Miller, 19-tone scale of "Nikta". Tuning List 22-1-99'},miller_sp:{frequencies:[261.6255653006,276.74268633071,292.73329748773,304.15432597486,321.72882314722,340.31880135827,353.5963846,374.02771873076,395.63960626236,411.07553805605,434.82810464551,459.95313047266,477.89826295658,505.51194770063,525.23456349057],description:"Herman Miller, Superpelog temperament, TOP tuning"},minor_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"A minor pentatonic"},minor_clus:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,353.19451315581,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,523.2511306012],description:"Chalmers' Minor Mode Cluster, Genus [333335]"},minor_wing:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Chalmers' Minor Wing with 7 minor and 6 major triads"},minortone:{frequencies:[261.6255653006,264.87670583656,269.18630372462,273.56601964703,276.96554054138,281.47182622933,286.05143175444,290.70554674078,294.31805527354,299.10666990622,303.97319627313,307.75057781118,312.75774231814,317.84637624619,323.01780144749,327.03184444407,332.35271908155,337.76016543181,341.95740725719,347.52112383796,353.17536321933,358.9216002989,363.3818066762,369.29410472703,375.30259493676,379.96636500161,386.14849505708,392.43120962619,398.81614754309,403.7721109712,410.34156772664,417.0179085097,422.20006196255,429.06934285921,436.05038835349,443.14501943782,448.65184388114,455.95150328441,463.36992699746,469.12808274602,476.76089208744,484.51788878959,492.4010934061,498.52001054206,506.63103252794,514.8740254656,523.2511306012],description:"Minortone temperament, g=182.466089, 5-limit"},miracle1:{frequencies:[261.6255653006,266.71173418545,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,479.82340237272,489.15147723638,513.27277840175,523.2511306012],description:'21 out of 72-tET Pyth. scale "Miracle/Blackjack", Keenan & Erlich, TL 2-5-2001'},miracle1a:{frequencies:[261.6255653006,266.57640943865,279.87817034289,285.17441410431,299.40418912991,305.0699313594,320.29246281951,326.35348199782,342.63803067389,349.1219037468,366.54256247747,373.47879032775,392.11482112276,399.53496279579,419.47115746916,427.40897376302,448.73603972606,457.22764679928,480.04261976898,489.12665346498,513.5333359992,523.2511306012],description:"Version of Blackjack with just 11/8 intervals"},miracle2:{frequencies:[261.6255653006,266.71172956369,274.52699087907,279.86396690685,285.30469707927,293.66477470251,299.3738011912,305.19381471768,314.13668880034,320.24370207508,326.46943949911,336.03573785931,342.56848231438,349.22822739856,359.4614100947,366.44956423737,373.57357245769,380.83607584373,391.99544051026,399.61607650784,407.38486242506,419.32216702351,427.4740516384,435.78441397758,448.55389013814,457.27405769313,466.16375074742,479.82341068742,489.15147723638,498.66088722045,513.27278729609,523.2511306012],description:'31 out of 72-tET Pythagorean scale "Miracle/Canasta", tempered Fokker-M, 36 7-limit tetrads'},miracle24:{frequencies:[261.6255653006,266.71173418545,274.52698453615,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,513.27277840175,523.2511306012],description:"Miracle[24] in 72-tET tuning."},miracle2a:{frequencies:[261.6255653006,266.57640943865,274.68028654691,279.87817034289,285.17441410431,293.84366906071,299.40418912991,305.0699313594,314.34400674513,320.29246281951,326.35348199782,336.27457379784,342.63803067389,349.1219037468,359.73515228832,366.54256247747,373.47879032775,380.54627680087,392.11482112276,399.53496279579,407.09552105481,419.47115746916,427.40897376302,435.49700296564,448.73603972606,457.22764679928,465.87994655565,480.04261976898,489.12665346498,498.38259075187,513.5333359992,523.2511306012],description:"Version of Canasta with just 11/8 intervals"},miracle3:{frequencies:[261.6255653006,266.71172956369,271.8967720342,274.52699087907,279.86396690685,285.30469707927,290.85119844166,293.66477470251,299.3738011912,305.19381471768,311.12697293924,314.13668880034,320.24370207508,326.46943949911,332.81620914398,336.03573785931,342.56848231438,349.22822739856,356.01744208336,359.4614100947,366.44956423737,373.57357245769,380.83607584373,384.52012922913,391.99544051026,399.61607650784,407.38486242506,411.32573797959,419.32216702351,427.4740516384,435.78441397758,440.00001524924,448.55389013814,457.27405769313,466.16375074742,470.67322937359,479.82341068742,489.15147723638,498.66088722045,503.48472993456,513.27278729609,523.2511306012],description:'41 out of 72-tET Pythagorean scale "Miracle/Studloco", Erlich/Keenan 2001'},miracle31s:{frequencies:[261.6255653006,266.63636836248,274.61234258734,279.87187586531,285.23214274484,293.7643779857,299.39072204343,305.12482507342,314.2521161294,320.27085311289,326.40486440328,336.1687117034,342.60720791066,349.16901789451,359.61381619398,366.50134650551,373.52079096839,380.6746756467,392.06191220286,399.57090708206,407.22371854314,419.40512463865,427.43781242392,435.62434685833,448.6553095271,457.24821364991,466.00569400686,479.94546308962,489.13765420145,498.50589943595,513.41785698047,523.2511306012],description:"Canasta with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle3a:{frequencies:[261.6255653006,266.57640943865,271.6209387912,274.68028654691,279.87817034289,285.17441410431,290.57088243021,293.84366906071,299.40418912991,305.0699313594,310.84289043406,314.34400674513,320.29246281951,326.35348199782,332.52919812642,336.27457379784,342.63803067389,349.1219037468,355.72847573316,359.73515228832,366.54256247747,373.47879032775,380.54627680087,384.83248369581,392.11482112276,399.53496279579,407.09552105481,411.6807594913,419.47115746916,427.40897376302,435.49700296564,440.40213577526,448.73603972606,457.22764679928,465.87994655565,471.12729153307,480.04261976898,489.12665346498,498.38259075187,503.99602271809,513.5333359992,523.2511306012],description:"Version of Studloco with just 11/8 intervals"},miracle3ls:{frequencies:[261.6255653006,266.8561524992,272.19132869617,274.36355553357,279.84880885615,285.44374339214,291.1505189834,293.47406686496,299.34138986722,305.32601617869,311.43030899178,313.91568307924,320.1916880693,326.59318586748,333.12264767748,335.78115718319,342.4943108472,349.34167821305,356.32594256772,359.16962765504,366.35037871957,373.67471357934,381.14545968569,384.18721873359,391.86813762951,399.70261841457,407.69373119716,410.94736065575,419.16328558448,427.54349328421,436.09121881038,439.57145109254,448.35967321435,457.32356924795,466.46667727785,470.18934850506,479.58967749961,489.177972196,498.95793401383,502.93987502638,512.99500332159,523.2511306012],description:"Miracle-41 in a 7-limit least-squares tuning, Gene Ward Smith, 2001"},miracle3p:{frequencies:[261.6255653006,266.34679554672,270.06721067987,274.94077677072,279.90228841312,284.95333588433,290.09553330897,294.14767822015,299.45579274291,304.85969791727,310.36112062791,314.69634158508,320.37527393455,326.15668500873,332.04242788125,336.6805001021,342.75615313904,348.94144590806,355.2383548887,360.20043713509,366.70052302062,373.3179099666,380.0547104455,385.36343543368,392.31760641523,399.39727291251,406.60469732047,412.28427858225,419.7242587073,427.29849640545,435.00941939202,441.0857666732,449.04549132915,457.14885520764,465.39844769831,471.89927840742,480.41505607532,489.08450736089,497.91040254418,504.86537329764,513.97604599191,523.2511306012],description:"Least squares Pythagorean approximation to partch_43"},miracle41s:{frequencies:[261.6255653006,266.63636836248,269.45164985995,274.61234258734,279.87187586531,285.23214274484,290.69507255622,293.7643779857,299.39072204343,305.12482507342,310.96875093738,314.2521161294,320.27085311289,326.40486440328,332.65635780028,336.1687117034,342.60720791066,349.16901789451,355.85650343121,359.61381619398,366.50134650551,373.52079096839,380.6746756467,384.69403121132,392.06191220286,399.57090708206,407.22371854314,411.52339231679,419.40512463865,427.43781242392,435.62434685833,440.22388881539,448.6553095271,457.24821364991,466.00569400686,470.92601754108,479.94546308962,489.13765420145,498.50589943595,503.76937659657,513.41785698047,523.2511306012],description:"StudLoco with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle_12:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,336.03572815422,342.56848033562,359.46139971304,366.44956000397,384.52011812375,411.32572372413,440,470.6732130613,523.2511306012],description:"A 12-tone subset of Blackjack with six 4-7-9-11 tetrads"},miracle_12a:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82339960115,489.15147723638,513.27277840175,523.2511306012],description:"A 12-tone chain of Miracle generators and subset of Blackjack"},"24erlich-keenan":{frequencies:[261.6255653006,266.71173469898,279.86396636799,285.30470202322,290.8512090818,299.37380003836,305.19381941867,320.24370022528,326.46944389922,342.56847967604,349.22823143301,356.01745305102,366.44956070954,373.5735760541,391.99543598175,399.61607958554,407.38487340641,419.32216137194,427.47405410759,448.55388322895,457.27405945401,479.82340237272,489.15147817819,498.66089778183,523.2511306012],description:"24 note mapping for Erlich/Keenan Miracle scale low version, tuned to 72-equal"},miracle_8:{frequencies:[261.6255653006,279.86396690685,314.13668154225,336.03572815422,366.44956000397,391.99543598175,419.32216217931,448.5538823653,523.2511306012],description:"tet3a in 72-et"},miring1:{frequencies:[261.6255653006,285.29448470177,307.6953604706,387.15515639797,420.96788906714,523.2511306012],description:"Gamelan Miring from Serdang wetan, Tangerang. 1/1=309.5 Hz"},miring2:{frequencies:[261.6255653006,279.34865171253,304.66723527068,384.42070010042,412.69311132744,523.2511306012],description:"Gamelan Miring (Melog gender) from Serdang wetan"},misca:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,348.83408706747,392.4383479509,412.06026534844,433.74764773521,457.84473927605,523.2511306012],description:"21/20 x 20/19 x 19/18=7/6 7/6 x 8/7=4/3"},miscb:{frequencies:[261.6255653006,269.80136421624,278.50463402967,319.76457981184,348.83408706747,392.4383479509,404.70204632437,417.75695104451,479.64686971777,523.2511306012],description:"33/32 x 32/31x 31/27=11/9 11/9 x 12/11=4/3"},miscc:{frequencies:[261.6255653006,276.00059636107,292.04714266113,310.07474405997,348.83408706747,392.4383479509,414.00089454161,438.0707139917,465.11211608996,523.2511306012],description:"96/91 x 91/86 x 86/54=32/27. 32/27 x 9/8=4/3."},miscd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,348.83408706747,392.4383479509,407.5321305644,423.83341578697,441.49314144476,523.2511306012],description:"27/26 x 26/25 x 25/24=9/8. 9/8 x 32/27=4/3."},misce:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,348.83408706747,392.4383479509,420.46965851882,452.81347840488,490.54793493862,523.2511306012],description:"15/14 x 14/13 x 13/12=5/4. 5/4 x 16/15= 4/3."},miscf:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,378.42269266694,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh1"},miscg:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh 2"},misch:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,490.54793493862,504.56359022259,523.2511306012],description:"SupraEnh 3"},misty:{frequencies:[261.6255653006,268.57642185399,270.57706033988,272.59260010205,274.62315370363,276.66883458144,284.01936005382,286.13503371773,288.26646546986,290.41377434565,292.57708030445,300.35025535204,302.58757688062,304.84156607104,307.11234355974,309.40003795144,311.70477168653,319.9861304005,322.36972224007,324.77106769218,327.19030275625,329.62755691287,338.38508739928,340.90573394089,343.44515491415,346.00349213972,348.58088853904,357.84197030948,360.50755209334,363.19298782427,365.89842747751,368.62402219236,378.41760905933,381.23645754858,384.07630597582,386.93730633346,389.81962065329,392.72340320054,403.157261366,406.16039889903,409.18590458221,412.23394976407,415.30469757995,426.33849458487,429.51431022199,432.71378016074,435.93708308397,439.18439906139,450.85263092877,454.21105352848,457.59449053401,461.00313090234,464.43716505707,476.77631130474,480.3278378528,483.9058226648,487.51045723915,491.14194572312,494.80048247871,507.94632001299,511.73003620658,515.54193450341,519.38223078906,523.2511306012],description:"Misty temperament, g=96.787939, p=400, 5-limit"},mistyschism:{frequencies:[261.6255653006,278.75251614148,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,418.12877421223,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Mistyschism scale 32805/32768 and 67108864/66430125"},mixed9_3:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,349.22823143301,391.99543598175,409.35055662695,427.47405410759,466.16376151809,523.2511306012],description:"A mixture of the hemiolic chromatic and diatonic genera, 75 + 75 + 150 + 200 c"},mixed9_4:{frequencies:[261.6255653006,271.89678302796,282.57123920205,305.19382000629,349.22823143301,391.99543598175,407.38487419079,423.37848741825,457.27406033445,523.2511306012],description:'Mixed enneatonic 4, each "tetrachord" contains 67 + 67 + 133 + 233 cents.'},mixed9_5:{frequencies:[261.6255653006,277.18263097687,293.66476791741,329.62755691287,349.22823143301,391.99543598175,415.30469757995,440,493.88330125613,523.2511306012],description:"A mixture of the intense chromatic genus and the permuted intense diatonic"},mixed9_6:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,349.22823143301,391.99543598175,415.30469757995,440,466.16376151809,523.2511306012],description:"Mixed 9-tonic 6, Mixture of Chromatic and Diatonic"},mixed9_7:{frequencies:[261.6255653006,277.18263097687,311.12698372208,329.62755691287,349.22823143301,391.99543598175,415.30469757995,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 7, Mixture of Chromatic and Diatonic"},mixed9_8:{frequencies:[261.6255653006,293.66476791741,311.12698372208,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 8, Mixture of Chromatic and Diatonic"},mixol_chrom:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,311.12229387098,319.76457981184,359.73515228832,411.12588832951,426.35277308246,434.39716502741,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,605.86973016981,622.24458774197,639.52915962369,719.47030457665,822.25177665903,852.70554616492,868.79433005482,885.50191332511,959.29373943553,1046.5022612024],description:"Mixolydian chromatic tonos"},mixol_chrom2:{frequencies:[261.6255653006,271.31540105247,281.75060878526,332.97799220076,366.27579142084,385.55346465352,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the chromatic genus"},mixol_chrominv:{frequencies:[261.6255653006,279.06726965397,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Mixolydian inverted"},mixol_diat:{frequencies:[261.6255653006,274.08392555301,287.78812183066,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,500.50108144463,523.2511306012,548.16785110602,575.57624366132,639.52915962369,677.14852195449,719.47030457665,767.43499154843,822.25177665903,885.50191332511,920.92198985811,959.29373943553,1001.00216288925,1046.5022612024],description:"Mixolydian diatonic tonos"},mixol_diat2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,348.83408706747,366.27579142084,406.97310157871,457.84473927605,523.2511306012],description:"Schlesinger's Mixolydian Harmonia, a subharmonic series though 13 from 28"},mixol_diatcon:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv2:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"Inverted Schlesinger's Mixolydian Harmonia, a harmonic series from 14 from 28"},mixol_enh:{frequencies:[261.6255653006,274.08392555301,287.78812183066,295.1673044417,299.00064605783,302.93486508491,348.83408706747,411.12588832951,418.60090448096,422.44127975143,426.35277308246,469.85815809087,523.2511306012,548.16785110602,575.57624366132,590.33460888341,598.00129211566,605.86973016981,697.66817413493,822.25177665903,837.20180896192,844.88255950285,852.70554616492,939.71631618175,1046.5022612024],description:"Mixolydian Enharmonic Tonos"},mixol_enh2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,332.97799220076,366.27579142084,375.66747838035,385.55346465352,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the enharmonic genus"},mixol_enhinv:{frequencies:[261.6255653006,270.34641747729,279.06726965397,373.75080757229,411.12588832951,420.46965851882,429.81342870813,523.2511306012],description:"A harmonic form of Schlesinger's Mixolydian inverted"},mixol_penta:{frequencies:[261.6255653006,269.32043486826,281.75060878526,332.97799220076,366.27579142084,381.53728273004,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the pentachromatic genus"},mixol_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,822.25177665903,885.50191332511,959.29373943553,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Mixolydian Tonos"},mixol_tri1:{frequencies:[261.6255653006,268.0066766494,274.70684356563,332.97799220076,366.27579142084,378.90599112501,392.4383479509,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the first trichromatic genus"},mixol_tri2:{frequencies:[261.6255653006,268.0066766494,281.75060878526,332.97799220076,366.27579142084,378.90599112501,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the second trichromatic genus"},mmmgeo1:{frequencies:[261.6255653006,291.52662303231,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo2:{frequencies:[261.6255653006,295.05751399041,323.4477810403,352.62279726972,392.9238840789,430.73079539701,485.77193724523,529.58860866211],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo3a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,477.32335087626,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4b:{frequencies:[261.6255653006,295.05751399041,323.4477810403,348.40303271111,392.9238840789,430.73079539701,485.77193724523,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmswap:{frequencies:[261.6255653006,251.16054268858,294.32876096318,282.55561052465,313.95067836072,348.83408706747,353.19451315581,392.4383479509,376.74081403286,418.60090448096,423.83341578697,470.92601754108,523.2511306012],description:"Swapping major and minor in 5-limit JI"},mokhalif:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,425.01198472693,477.05982293263,523.2511306012],description:"Iranian mode Mokhalif from C"},montvallon:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Montvallon's Monochord, Nouveau sisteme de musique (1742)"},monzismic:{frequencies:[261.6255653006,265.20988799749,268.52946324281,272.20837072565,275.61554447717,279.39153269358,282.88861654172,286.76424730356,290.69297498385,294.33151655947,298.3639173457,302.09847446042,306.23728412706,310.07039048391,314.31841699833,318.25267316085,322.61279858837,327.03265671938,331.12605620426,335.66254762155,339.86396564906,344.52016812641,348.83245514045,353.61152766937,358.03760933268,362.94279426564,367.48567344471,372.52029869489,377.62390147213,382.35053879638,387.58881783384,392.44018387738,397.81669307529,402.79607923799,408.31446627855,413.42525081527,419.08925963743,424.33490995001,430.14838328955,436.04150237937,441.49934027584,447.54796975207,453.14983163098,459.35807517454,465.10776160818,471.47983118983,477.38124304179,483.92146177974,489.97860285142,496.69140794435,503.49617981289,509.7983334288,516.78267280423,523.2511306012],description:"Monzismic temperament, g=249.018448, 5-limit"},sevengroups:{frequencies:[261.6255653006,261.6255653006,275.62199471997,265.19499215873,270.69536599394,266.7406479561],description:"Here are some suggestions for a logical system encompassing intervals into seven broad groups: skhisma, kleisma, comma,"},"monzo-sym-11":{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,285.40970760065,286.15296204753,287.78812183066,294.32876096318,299.00064605783,304.4370214407,305.22982618403,313.95067836072,314.76825825228,327.03195662575,332.97799220076,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,411.12588832951,418.60090448096,434.91003062957,436.04260883433,448.50096908674,449.66894036041,457.84473927605,465.11211608996,475.68284600109,478.40103369253,479.64686971777,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Monzo symmetrical system: 11-limit"},"monzo-sym-5":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 5-limit"},"monzo-sym-7":{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 7-limit"},monzo_sumerian_2place12:{frequencies:[261.6255653006,277.17835052447,293.68632213351,311.15032543183,329.66469551353,349.22211163595,369.93402791915,391.94841243536,415.27867508032,439.91220695103,466.03267445926,493.6331420766,523.2511306012],description:"Monzo - most accurate 2-place sexagesimal 12-tET approximation"},monzo_sumerian_simp12:{frequencies:[261.6255653006,277.34158865788,293.41184893525,310.84225580269,329.78012432849,348.83408706747,370.22485655745,392.4383479509,415.27867508032,440.11777340288,466.26338370404,493.6331420766,523.2511306012],description:"Monzo - simplified 2-place sexagesimal 12-tET approximation"},morgan:{frequencies:[261.6255653006,277.18263097687,294.07958763262,310.86358783941,330.18637907377,349.03110370139,370.30791823326,392.32757291716,415.07027187895,440.74593809176,465.76911360306,494.58094207912,523.2511306012],description:"Augustus de Morgan's temperament (1843)"},"mos11-34":{frequencies:[261.6255653006,272.51337835337,301.75671459889,314.3146261019,348.04364484358,362.52783176564,377.61479489998,418.13653788176,435.53771116377,453.66305442345,502.34551296122,523.2511306012],description:"Wilson 11 of 34-tET, G=9, Chain of minor & major thirds with Kleismatic fusion"},"mos12-17":{frequencies:[261.6255653006,272.51337835337,283.85429714132,307.97166902637,320.78822215662,348.04364484358,362.52783176564,377.61479489998,409.69842558521,426.7484383229,463.0066556268,482.27514684959,523.2511306012],description:"MOS 12 of 17, generator 7"},"mos12-22":{frequencies:[261.6255653006,287.56082683758,296.76515515861,326.18384711731,336.62443200122,347.39920007397,381.83730669135,394.05926325844,433.12283887627,446.9863572706,491.29666030217,507.02222283506,523.2511306012],description:"MOS 12 of 22, contains nearly just, recognizable diatonic, and pentatonic scales"},"mos13-22":{frequencies:[261.6255653006,278.64197723942,296.76515515861,316.06708432391,326.18384711731,347.39920007397,369.99442271164,381.83730669135,406.67242132093,433.12283887627,446.9863572706,476.05883716226,507.02222283506,523.2511306012],description:"MOS 13 of 22, contains 5 and 9 tone MOS as well. G=5 or 17"},"mos15-22":{frequencies:[261.6255653006,278.64197723942,287.56082683758,306.26409645618,316.06708432391,336.62443200122,347.39920007397,369.99442271164,381.83730669135,406.67242132093,419.68930726506,446.9863572706,461.29362042034,491.29666030217,507.02222283506,523.2511306012],description:"MOS 15 in 22, contains 7 and 8 tone MOS as well. G= 3 or 19"},moscow:{frequencies:[261.6255653006,277.4816141504,293.64820765919,311.48626315692,329.67368081467,349.7414907984,370.88289054572,392.4383479509,416.22242101754,440.4723112686,467.22939450183,494.51052097482,523.2511306012],description:"Charles E. Moscow's equal beating piano tuning (1895)"},mundeuc45:{frequencies:[261.6255653006,267.57160087561,269.80136421624,271.31540105247,274.70684356563,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,499.46698830115,504.56359022259,507.3950357345,513.90736041189,523.2511306012],description:"Euclidean reduced detempered Miracle[45] with Tenney tie-breaker"},musaqa:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Egyptian scale by Miha'il Musaqa"},musaqa_24:{frequencies:[261.6255653006,269.02051582234,276.67624041581,284.6011815168,292.80374147632,300.29158209195,310.07474405997,319.15917884888,328.55303549378,338.26335715633,348.29659232622,358.65845048745,369.35373924791,380.38618160659,391.75821216589,403.47075130695,415.52295665389,427.91195157543,440.63253103259,453.67684579974,467.03406698289,480.69003385373,494.62688932105,508.8227088795,523.2511306012],description:"from d'Erlanger vol.5, p.34, after Mih.a'il Mu^saqah, 1899, a Lebanese scholar"},myna23:{frequencies:[261.6255653006,267.85369360167,274.23008563259,291.58574485564,298.52709031489,305.63367799752,312.90944157785,320.35840837329,327.98470157359,348.7424193045,357.04440817535,365.54403007102,374.24598974517,383.15510395049,392.27630410488,417.10295228105,427.03229805648,437.19801690717,447.60573581317,458.26121570764,469.17035466565,498.86352554567,510.73922293119,522.89762727195],description:"23 notes of Myna temperament, 7-limit TOP tuning (Paul Erlich)"},"mystic-r":{frequencies:[261.6255653006,367.91095120397,465.11211608996,654.0639132515,872.08521766867,1177.3150438527],description:"Skriabin's mystic chord, op. 60 rationalised"},mystic:{frequencies:[261.6255653006,369.99442271164,466.16376151809,659.25511382574,880,1174.65907166964],description:"Skriabin's mystic chord, op. 60"},urmawi:{frequencies:[261.6255653006,294.32876096318,326.6631048533,348.83408706747,392.4383479509,441.49314144476,471.45776383774,523.2511306012],description:"al-Urmawi, one of twelve maqam rows. First tetrachord is Rast"},valentine:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,330.47439827444,348.83408706747,371.78369805875,392.4383479509,414.24047839262,440.63253103259,466.02053819169,495.71159741166,523.2511306012],description:"Robert Valentine, tuning with primes 3 & 19, TL 7-2-2002"},valentine2:{frequencies:[261.6255653006,286.10322937235,312.87102146627,349.87955533643,382.6142546815,418.41160951721,467.90420651233,511.68128147674,559.55413558945,625.74204293254,684.28641150324,748.30818586768,782.53142116911,855.74498969389,935.80841302466,1046.5022612024],description:"Robert Valentine, two octave 31-tET subset for guitar, TL 10-5-2002"},vallotti:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.6228209638,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Vallotti & Young scale (Vallotti version)"},vavoom:{frequencies:[164.81377845643,165.83014536684,167.75567809608,168.79018601865,170.75008918846,172.7327497266,173.79795102719,175.81600173949,176.90021569146,178.95428827501,180.05785630665,182.14859375797,184.26360775673,185.39991601304,187.55268266167,188.70927492235,190.90046811205,192.07770535997,194.30800987601,196.56421264146,197.77637683895,200.07285246365,201.3066535986,203.64411977036,206.00872855044,207.27913480479,209.68595147418,210.9790342774,213.42881100738,214.74497512464,217.23848121866,219.76094059848,221.11615343515,223.68363702025,225.06304018178,227.6763542391,229.0803795269,231.74034082302,234.43118684139,235.87686755635,238.61574610914,240.08723199411,242.87499909192,244.37274935352,247.21027763268,250.08075380295,251.62294163139,254.54465534315,256.1143694988,259.0882353168,260.68597011615,263.71291896434,266.77501515601,268.42015092639,271.53690502834,273.21140777811,276.38379544331,278.08818779989,281.31720045362,284.58370833477,286.33866758091,289.66348210637,291.44976709494,294.83392732599,296.65209720599,300.09666587055,303.58123106099,305.45334345815,309.00010579622,310.90563508986,314.51570836542,316.45525105281,320.12976356015,323.84694071013,325.84402686189,329.62755691286],description:"Vavoom temperament, g=111.875426, 5-limit"},veroli:{frequencies:[261.6255653006,276.87699530057,293.57148765354,310.97965314221,329.42008585855,349.28270065725,369.64409253099,391.93430587921,414.97617910427,439.79164309579,466.09106516521,493.49262474744,523.2511306012],description:"Claudio di Veroli's well temperament (1978)"},vertex_chrom:{frequencies:[261.6255653006,271.89678302796,317.17549194805,349.22823143301,391.99543598175,407.38487419079,448.5538823653,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 266.7 + 166.7 cents"},vertex_chrom2:{frequencies:[261.6255653006,274.52698453615,323.3415889232,349.22823143301,391.99543598175,411.32572372413,484.46499093218,523.2511306012],description:"A vertex tetrachord from Chapter 5, 83.3 + 283.3 + 133.3 cents"},vertex_chrom3:{frequencies:[261.6255653006,275.18850165466,324.90175210669,349.22823143301,391.99543598175,412.31687950427,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 287.5 + 125 cents"},vertex_chrom4:{frequencies:[261.6255653006,275.40936140075,325.42347822215,349.22823143301,391.99543598175,412.64779522483,487.58430040208,523.2511306012],description:"A vertex tetrachord from Chapter 5, 88.9 + 288.9 + 122.2 cents"},vertex_chrom5:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 133.3 + 266.7 + 100 cents"},vertex_diat:{frequencies:[261.6255653006,299.37379946195,323.3415889232,349.22823143301,391.99543598175,448.5538823653,484.46499932732,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 133.3 + 133.3 cents"},vertex_diat10:{frequencies:[261.6255653006,295.79278388132,324.90175210669,349.22823143301,391.99543598175,443.18842137843,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 162.5 + 125 cents"},vertex_diat11:{frequencies:[261.6255653006,295.79278388132,306.66641795878,349.22823143301,391.99543598175,443.18842137843,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 62.5 + 225 cents"},vertex_diat12:{frequencies:[261.6255653006,293.66476791741,315.65242990842,349.22823143301,391.99543598175,440,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 125 + 175 cents"},vertex_diat2:{frequencies:[261.6255653006,299.37379946195,329.62755691287,349.22823143301,391.99543598175,448.5538823653,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 166.7 + 100 cents"},vertex_diat3:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 225 + 200 cents"},vertex_diat4:{frequencies:[261.6255653006,297.93622032612,329.62755691287,349.22823143301,391.99543598175,446.39994737251,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 225 + 175 + 100 cents"},vertex_diat5:{frequencies:[261.6255653006,275.18850165466,315.65242990842,349.22823143301,391.99543598175,412.31687950427,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 237.5 + 175 cents"},vertex_diat7:{frequencies:[261.6255653006,293.66476791741,306.66641795878,349.22823143301,391.99543598175,440,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 75 + 225 cents"},vertex_diat8:{frequencies:[261.6255653006,277.18263097687,306.66641795878,349.22823143301,391.99543598175,415.30469757995,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 100 + 175 + 225 cents"},vertex_diat9:{frequencies:[261.6255653006,295.79278388132,320.24370022528,349.22823143301,391.99543598175,443.18842137843,479.82340237272,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 137.5 + 150 cents"},vertex_sdiat:{frequencies:[261.6255653006,275.18850165466,306.66641795878,349.22823143301,391.99543598175,412.31687950427,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 187.5 + 225 cents"},vertex_sdiat2:{frequencies:[261.6255653006,273.20871865617,302.26980244078,349.22823143301,391.99543598175,409.35055662695,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 175 + 250 cents"},vertex_sdiat3:{frequencies:[261.6255653006,265.43099677612,302.26980244078,349.22823143301,391.99543598175,397.69714089209,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 25 + 225 + 250 cents"},vertex_sdiat4:{frequencies:[261.6255653006,271.8968348557,302.26980244078,349.22823143301,391.99543598175,407.38495184466,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 183.3 + 250 cents"},vertex_sdiat5:{frequencies:[261.6255653006,299.37374239667,302.26980244078,349.22823143301,391.99543598175,448.55379686399,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.33 + 16.67 + 250 cents"},vicentino1:{frequencies:[261.6255653006,267.54129532085,273.59078691818,279.77706779472,286.10322937235,292.57243455474,295.8616864168,299.18791603519,305.95298478736,312.87102146627,319.94548489658,327.17991022208,330.85823737058,334.57791819083,342.14320575162,349.87955533643,357.79083283678,365.88099775759,374.15409293384,382.6142546815,391.26571058456,395.66452371628,400.11279059885,409.15991580663,418.41160951721,427.87249484695,437.54730686196,442.46644183113,447.44088028055,457.55816161244,467.90420651233,478.48419305869,489.30340830564,494.80441235385,500.36726155789,511.68128147674,523.2511306012],description:"Usual Archicembalo tuning, 31-tET plus D,E,G,A,B a 10th tone higher"},vicentino2:{frequencies:[261.6255653006,262.40966637115,273.59078691818,274.41074818102,279.77706779472,280.61556956011,292.57243455474,293.44928279173,305.95298478736,306.86993670158,312.87102146627,313.80870698104,327.17991022208,328.16047998243,342.14320575162,343.16862103779,349.87955533643,350.92815470883,365.88099775759,366.97755604579,374.15409293384,391.26571058456,392.4383479509,409.15991580663,410.38618254261,418.41160951721,419.66560148231,437.54730686196,438.85865161274,457.55816161244,458.92947695163,467.90420651233,469.30653196482,489.30340830564,490.7698679226,511.68128147674,523.2511306012],description:"Alternative Archicembalo tuning, lower 3 rows the same upper 3 rows 3/2 higher"},vicentino2q217:{frequencies:[261.6255653006,262.46259217279,273.59078691818,274.46609608433,279.77706779472,280.67216895906,292.57243455474,293.50847071582,305.95298478736,306.93183153514,312.87102146627,313.87199953275,327.17991022208,328.2266690608,342.14320575162,343.23783523487,349.87955533643,350.99893596542,365.88099775759,367.05157442308,374.15409293384,391.26571058456,392.51750150462,409.15991580663,410.46895395112,418.41160951721,419.7502468954,437.54730686196,438.9471656765,457.55816161244,459.02204178186,467.90420651233,469.40118981889,489.30340830564,490.86885203792,511.68128147674,523.2511306012],description:"Vicentino's second tuning, 217-tET version"},vicentino36:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,279.93529690293,280.80602334765,292.50627485027,293.41610276971,305.64177427204,306.59245933664,312.97717714283,313.95067836072,327.03195662575,328.04917632434,341.71789064962,349.91912034749,351.00752840096,365.63284274659,366.77012764335,374.40803131735,375.5726110527,391.22147055517,392.4383479509,408.78994578219,410.06146948999,418.60090448096,419.90294514449,437.39889945791,438.75941205608,457.04105505291,458.46266117889,468.01003810189,469.46576276783,489.02683710225,490.54793493862,510.98743222773,523.2511306012],description:"Vicentino's second tuning of 1555"},victor_eb:{frequencies:[261.6255653006,276.45300885359,293.16631378471,311.00963644582,328.52867116285,348.83408706747,368.60401198904,391.83966133014,414.6795130731,439.03603741286,465.77732204887,492.79300649794,523.2511306012],description:"Equal beating Victorian piano temperament, interpr. by Bill Bremmer (improved)"},victorian:{frequencies:[261.6255653006,276.5429423948,293.32570896007,310.76776326996,328.29744538229,349.22823143301,368.92737853004,391.99543598175,414.58565256441,438.73106346722,465.89457252293,492.17459484008,523.2511306012],description:"Form of Victorian temperament (1885)"},vitale1:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,457.84473927605,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Rami Vitale's 7-limit just scale"},vitale2:{frequencies:[261.6255653006,274.70684356563,294.32876096318,299.00064605783,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,448.50096908674,457.84473927605,470.92601754108,504.56359022259,523.2511306012],description:"Rami Vitale, inverse mode of vitale1"},vitale3:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,412.06026534844,420.46965851882,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Superset of several Byzantine scales by Rami Vitale, TL 29-Aug-2001"},vogel_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,310.07474405997,313.95067836072,321.55899383997,330.74639366397,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,413.43299207996,418.60090448096,428.74532511996,440.99519155196,465.11211608996,482.33849075995,496.11959049595,523.2511306012],description:"Martin Vogel's 21-tone Archytas system, see Divisions of the tetrachord"},vogelh_b:{frequencies:[261.6255653006,276.37000081643,292.73769384471,310.07474405997,327.54963108844,349.78078158391,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Harald Vogel's temperament, van Eeken organ in Bunschoten, Immanuelkerk, 1992"},vogelh_fisk:{frequencies:[261.6255653006,274.01856817608,292.73769384471,312.85332572834,327.54963108844,349.78078158391,366.49445363528,391.37619916626,409.75340805561,437.91808280662,467.82492621575,489.99465727995,523.2511306012],description:"Modified meantone tuning of Fisk organ in Memorial Church at Stanford"},vogelh_hb:{frequencies:[261.6255653006,276.50527247638,293.79744652436,312.85332572834,329.92547760025,349.78078158391,369.82037393809,392.08397832814,413.47189899094,440.29822362186,467.82492621575,494.44133512215,523.2511306012],description:"Harald Vogel hybrid meantone (1984)"},vogelh_jakobi:{frequencies:[261.6255653006,275.2485073924,292.86986732103,310.4251397446,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.87276088221,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Harald Vogel's temperament for the Schnitger organ in St. Jakobi, Hamburg"},volans:{frequencies:[261.6255653006,288.78654445823,322.09885310804,352.06379107796,388.6137256405,429.95038611107,482.60299106564,523.2511306012],description:"African scale according to Kevin Volans 1/1=G"},vong:{frequencies:[261.6255653006,287.78812183066,324.77656382143,353.19451315581,392.4383479509,431.68218274599,476.53227965466,523.2511306012],description:"Vong Co Dan Tranh scale, Vietnam"},"vries19-72":{frequencies:[261.6255653006,271.89678302796,282.57123920205,293.66476791741,305.19382000629,314.13668154225,326.46944327063,339.28638158975,352.60650301302,366.44956000397,377.18735172911,391.99543598175,407.38487419079,423.37848741825,452.89298412314,470.6732130613,489.15147723638,508.3551866238,523.2511306012],description:"Leo de Vries 19/72 Through-Transposing-Tonality 18 tone scale"},"vries35-72":{frequencies:[261.6255653006,320.24370022528,326.46944327063,332.81622067851,339.28638158975,345.88232658126,352.60650301302,359.46139971304,366.44956000397,448.5538823653,457.27406033445,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Leo de Vries 35/72 Through-Transposing-Tonality 17 tone scale"},"vries5-72":{frequencies:[261.6255653006,269.29177952703,274.52698453615,282.57123920205,288.06460709314,296.5055443788,302.26980244078,317.17549194805,332.81622067851,349.22823143301,366.44956000397,384.52011812375,403.48177901006,423.37848741825,444.25635547592,466.16376151809,489.15147723638,513.27277840175,523.2511306012],description:"Leo de Vries 5/72 Through-Transposing-Tonality 18 tone scale"},"vries6-31":{frequencies:[261.6255653006,292.57243455474,299.18791603519,334.57791819083,342.14320575162,382.6142546815,391.26571058456,437.54730686196,447.44088028055,500.36726155789,511.68128147674,523.2511306012],description:'Leo de Vries 6/31 TTT used in "For 31-tone organ" (1995)'},vulture:{frequencies:[261.6255653006,265.58852967049,269.02996542365,272.51599294435,276.04719319079,279.62414831161,283.24745441839,286.9177088442,290.63552324927,294.40151054717,298.21629835234,302.73351960911,306.6562716924,310.62985211059,314.65492307423,318.73214815075,322.86220682342,327.0457799678,331.28356479042,335.57625992643,339.9245807679,344.32924417279,349.54496173019,354.07428378691,358.66229781376,363.30976018416,368.01744541334,372.78612960355,377.61660747204,382.50967536449,387.46614872711,392.486844677,398.43202813578,403.59481739244,408.82450722915,414.12195980508,419.48805795853,424.92368633675,430.42975080549,436.00715908665,441.65684067409,447.37972696622,453.17677170128,460.0412514682,466.0023613576,472.04071122634,478.15730738573,484.35315820906,490.6292962557,496.98675620078,503.42659462849,509.94988192555,516.55769649554,523.2511306012],description:"Vulture temperament, g=475.542233, 5-limit"},walker_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:'Douglas Walker, 1977, for "out of the fathomless dark/into the limitless light'},walkerr_11:{frequencies:[261.6255653006,291.47537246454,299.00064605783,333.11471138804,341.71502406609,380.70252730062,390.53145607553,435.08860262928,484.72943438718,497.2441172906,510.08190181294,523.2511306012],description:'Robert Walker, "Seven to Pi" scale, TL 09-07-2002'},wauchope:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Symmetrical 7-limit JI whole-half step scale, Ken Wauchope"},wendell1:{frequencies:[261.6255653006,276.25045813601,293.35468319005,310.78176509232,328.42642049784,348.83408706747,369.47972269069,391.8804287311,414.37568699689,438.92294511207,466.17264740545,492.63963050051,523.2511306012],description:"Robert Wendell's Natural Synchronous well-temperament (2003)"},wendell1r:{frequencies:[261.6255653006,276.25560153172,293.36810129327,310.78755172318,328.43721515437,348.83408706747,369.49186704867,391.89926583958,414.38340229758,438.93945576706,466.18132758477,492.65582273156,523.2511306012],description:"Rational version of wendell1 by Gene Ward Smith"},wendell2:{frequencies:[261.6255653006,276.37223575148,293.46077701205,310.91876490958,328.50868755512,348.91469434159,369.57235851938,392.00856887742,414.55835341999,438.92345217603,466.37814713124,492.76314493882,523.2511306012],description:"Robert Wendell's Very Mild Synchronous well-temperament (2003)"},werck1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Werckmeister I (just intonation)"},werck3:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,491.65745674141,523.2511306012],description:"Andreas Werckmeister's temperament III (the most famous one, 1681)"},werck3_eb:{frequencies:[261.6255653006,275.62199471997,292.52927773082,310.07474405997,328.06371231954,348.83408706747,367.49599295996,391.41011079897,413.43299207996,437.41828331138,465.11211608996,492.10978071589,523.2511306012],description:"Werckmeister III equal beating version, 5/4 beats twice 3/2"},werck3_mod:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,490.82535372381,523.2511306012],description:"Modified Werckmeister III with B between E and F#, Nijsse (1997), organ Soest"},werck4:{frequencies:[261.6255653006,274.37997440822,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,390.66969766777,411.5699614066,437.52264545758,467.21778431035,489.99465727995,523.2511306012],description:"Andreas Werckmeister's temperament IV"},werck5:{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,328.88393162803,350.01785633742,369.99442271164,392.4383479509,413.43299207996,440,466.69047534984,493.32589719545,523.2511306012],description:"Andreas Werckmeister's temperament V"},werck6:{frequencies:[261.6255653006,275.69145590816,291.35574317567,310.77945938738,328.70904358281,348.83408706747,368.91086905696,391.43977709097,413.53718386224,438.27872477707,466.16918908107,493.06356537421,523.2511306012],description:`Andreas Werckmeister's "septenarius" tuning VI`},werck6_dup:{frequencies:[261.6255653006,275.62199471997,291.49363009634,310.67551062492,328.56569462012,348.83408706747,368.92162485303,391.67947347082,413.43299207996,438.08759304581,466.01326570444,492.84854168382,523.2511306012],description:"Andreas Werckmeister's VI in the interpretation by Dupont (1935)"},werck_cl5:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.97737261399,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.14811800305,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/5-comma"},werck_cl6:{frequencies:[261.6255653006,275.36250599118,293.11251278827,310.35057963607,328.38895179964,349.55706816887,367.91095120397,391.62667645325,413.31226430431,438.75941205608,466.0760911248,491.56462836305,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/6-comma"},werck_puzzle:{frequencies:[261.6255653006,272.52663052146,291.60349465796,306.59245933664,327.03195662575,347.47145391486,365.18568489875,389.71308164569,408.78994578219,436.04260883433,461.93263873387,490.54793493862,523.2511306012],description:"From Hypomnemata Musica, 1697, p. 49, 1/1=192, fifths tempered superparticular"},white:{frequencies:[261.6255653006,275.93321340298,289.72987407313,294.32876096318,305.22982618403,310.42486507835,327.03195662575,331.11985608357,343.38355445704,348.83408706747,367.91095120397,386.30649876417,392.4383479509,406.97310157871,413.89982010446,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"Justin White's 22-tone scale based on Al-Farabi's tetrachord"},wicks:{frequencies:[261.6255653006,276.65728054629,293.45376109391,310.36444075595,329.26048109616,348.28499607284,369.54304125029,391.93835601961,414.48592121967,439.68064187634,465.04666232412,493.39072329352,523.2511306012],description:"Mark Wicks' equal beating temperament for organs (1887)"},wier_cl:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Danny Wier, ClownTone (2003)"},wiesse:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Von Wiesse's 1/2 Pyth. comma tuning"},wilson1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 19-tone Scott scale (1976)"},wilson11:{frequencies:[261.6255653006,271.31540105247,277.4816601673,291.35574317567,305.22982618403,312.16686768822,325.57848126297,332.97799220076,348.83408706747,366.27579142084,374.60024122586,392.4383479509,406.97310157871,416.22249025095,437.0336147635,457.84473927605,468.25030153232,488.36772189445,499.46698830115,523.2511306012],description:"Wilson 11-limit 19-tone scale, 1977"},wilson1t:{frequencies:[261.6255653006,273.34666024156,279.64601698606,292.92954243175,306.05308604033,313.10617410217,327.13365148064,334.67254769546,349.66622272551,366.27579142084,374.71672979763,391.50442319155,409.04422481132,418.47077311482,437.21869500104,457.98711402938,468.54156606881,489.53271107931,500.81414097667,523.2511306012],description:"Wilson's Scott scale, wilson1, in minimax minerva tempering"},wilson2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,418.60090448096,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 19-tone, 1975"},wilson3:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Wilson 19-tone"},wilson5:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 22-tone 5-limit scale"},wilson7:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson's 22-tone 7-limit 'marimba' scale"},wilson7_2:{frequencies:[261.6255653006,263.718569823,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,329.64821227876,343.38355445704,353.19451315581,366.27579142084,376.74081403286,392.4383479509,408.78994578219,412.06026534844,436.04260883433,439.53094970501,457.84473927605,470.92601754108,490.54793493862,494.47231841813,523.2511306012],description:"Wilson 7-limit scale"},wilson7_3:{frequencies:[261.6255653006,267.90457886781,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson 7-limit scale"},wilson7_4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,387.59343007496,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 7-limit 22-tone scale XH 3, 1975"},wilson_17:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,310.42486507835,327.03195662575,331.11985608357,348.83408706747,367.91095120397,372.50983809402,392.4383479509,413.89982010446,436.04260883433,441.49314144476,465.11211608996,490.54793493862,496.67978412536,523.2511306012],description:"Wilson's 17-tone 5-limit scale"},wilson_31:{frequencies:[261.6255653006,265.7783520514,271.31540105247,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.08592105074,327.03195662575,332.22294006425,339.14425131559,348.83408706747,354.37113606854,361.75386806997,372.08969287196,380.54627680087,392.4383479509,398.6675280771,406.97310157871,418.60090448096,428.11456140098,441.49314144476,448.50096908674,457.84473927605,470.92601754108,481.6288815761,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Wilson 11-limit 31-tone scale XH 3, 1975"},wilson_41:{frequencies:[261.6255653006,265.7783520514,271.31540105247,275.62199471997,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,321.08592105074,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.37113606854,361.75386806997,367.49599295996,372.08969287196,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,413.43299207996,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,481.6288815761,490.54793493862,496.67978412536,504.56359022259,515.07533168556,523.2511306012],description:"Wilson 11-limit 41-tone scale XH 3, 1975"},wilson_alessandro:{frequencies:[261.6255653006,265.58571790036,269.80136421624,270.50397193556,275.93321340298,278.232656848,284.55612632182,286.15296204753,288.53757006459,294.32876096318,295.09524211152,303.52653474327,304.3169684275,305.22982618403,309.14739649778,314.76825825228,321.92208230347,324.60476632267,327.03195662575,331.98214737546,337.2517052703,340.06213614756,343.38355445704,347.79082106,351.18772614924,354.11429053382,359.73515228832,365.180362113,367.91095120397,370.97687579734,379.40816842909,386.30649876417,391.2646736925,392.4383479509,393.46032281536,404.70204632437,405.75595790334,413.89982010446,417.348985272,419.69101100305,429.2294430713,432.80635509689,441.49314144476,442.64286316727,449.66894036041,456.47545264125,457.84473927605,463.72109474667,472.15238737843,482.88312345521,486.907149484,490.54793493862,494.63583439645,505.87755790546,515.07533168556,521.68623159,523.2511306012],description:"D'Alessandro, genus [3 3 3 5 7 11 11] plus 8 pigtails, XH 12, 1989"},wilson_bag:{frequencies:[261.6255653006,294.32876096318,318.85615771011,349.51540364377,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Erv's bagpipe, mar '97, after Theodore Podnos (37-39)."},wilson_class:{frequencies:[261.6255653006,272.52663052146,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,381.53728273004,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Class Scale, Erv Wilson, 9 july 1967"},wilson_dia1:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,362.25078272391,371.78369805875,381.83190611439,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycles, tetrachordal form"},wilson_dia2:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle, conjunctive form"},wilson_dia3:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycle on 3/2"},wilson_dia4:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,381.83190611439,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle on 4/3"},wilson_duo:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 'duovigene'"},wilson_enh:{frequencies:[261.6255653006,264.37951861955,279.06726965397,348.83408706747,392.4383479509,396.56927792933,418.60090448096,523.2511306012],description:"Wilson's Enharmonic & 3rd new Enharmonic on Hofmann's list of superp. 4chords"},wilson_enh2:{frequencies:[261.6255653006,265.7783520514,275.62199471997,348.83408706747,392.4383479509,398.6675280771,413.43299207996,523.2511306012],description:"Wilson's 81/64 Enharmonic, a strong division of the 256/243 pyknon"},wilson_facet:{frequencies:[261.6255653006,271.31540105247,274.70684356563,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,366.27579142084,387.59343007496,392.4383479509,406.97310157871,412.06026534844,436.04260883433,452.19233508746,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson study in 'conjunct facets', Hexany based"},wilson_gh1:{frequencies:[261.6255653006,286.54684077898,313.84200313831,343.73718179912,398.2573899082,436.19359890902,477.74343791599,523.2511306012],description:"Golden Horagram nr.1: 1phi+0 / 7phi+1"},wilson_gh11:{frequencies:[261.6255653006,294.51148904212,316.87124012705,356.70145865606,383.78276711707,432.02365977685,464.82353976398,523.2511306012],description:"Golden Horagram nr.11: 1phi+0 / 3phi+1"},wilson_gh2:{frequencies:[261.6255653006,290.51361927671,322.59142140135,358.21117585067,382.16527586729,424.3630293795,471.22015545621,523.2511306012],description:"Golden Horagram nr.2: 1phi+0 / 6phi+1"},wilson_gh50:{frequencies:[261.6255653006,270.80964219588,280.31611759965,306.81496952381,317.58537244461,347.60736272384,359.80973785756,372.44046183271,407.64801512355,421.95805149354,461.8466031062,478.05922145,523.2511306012],description:"Golden Horagram nr.50: 7phi+2 / 17phi+5"},wilson_helix:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Wilson's Helix Song, see David Rosenthal, Helix Song, XH 7&8, 1979. Also Secor, 1964"},wilson_hypenh:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Wilson's Hyperenharmonic, this genus has a CI of 9/7"},wilson_l1:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,404.70204632437,419.69101100305,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l2:{frequencies:[261.6255653006,267.07609791103,279.79400733536,287.78812183066,294.32876096318,305.22982618403,314.76825825228,327.03195662575,335.75280880244,348.83408706747,359.73515228832,373.05867644715,381.53728273004,392.4383479509,411.12588832951,419.69101100305,436.04260883433,447.67041173658,457.84473927605,479.64686971777,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l3:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 11-limit scale"},wilson_l4:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l5:{frequencies:[261.6255653006,267.07609791103,279.79400733536,285.40970760065,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,479.64686971777,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l6:{frequencies:[261.6255653006,267.57160087561,277.4816601673,285.40970760065,294.32876096318,305.22982618403,312.16686768822,327.03195662575,332.97799220076,348.83408706747,356.76213450082,369.97554688974,381.53728273004,392.4383479509,406.97310157871,416.22249025095,436.04260883433,443.97065626768,457.84473927605,475.68284600109,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 1 3 7 9 11 15 eikosany plus 9/8 and tritone. Used Stearns: Jewel"},window:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,297.67175429757,306.59245933664,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,446.50763144636,459.88868900496,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Window lattice"},wonder1:{frequencies:[261.6255653006,272.72256190885,277.86237426839,283.09905309511,288.43442562998,293.8703485525,299.4087202614,312.10830899518,317.99039712482,323.98334274799,330.08923137594,336.31019538088,342.64839962317,357.18202566262,363.91358676728,370.77201292014,377.75969724053,384.87907140314,392.13262172187,408.76514672187,416.46885901676,424.31776026786,432.3145818485,440.46211650535,448.76319953449,467.79774494453,476.61400354229,485.59641603135,494.74811665626,504.07229015717,513.57219283465,523.2511306012],description:"Wonder Scale, gen=~233.54 cents, 8/7+1029/1024^7/25, LS 12:14:18:21, M.Schulter"},wonder36:{frequencies:[261.6255653006,271.89678302796,277.18263097687,282.57123920205,288.06460709314,293.66476791741,299.37379946195,311.12698372208,317.17549194805,323.3415889232,329.62755691287,336.03572815422,342.56848033562,356.01745236555,362.93866220634,369.99442271164,377.18735172911,384.52011812375,391.99543598175,407.38487419079,415.30469757995,423.37848741825,431.60923940535,440,448.5538823653,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Wonder Scale, 36-tET version"},wronski:{frequencies:[261.6255653006,277.97716313189,294.32876096318,308.86351459099,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,463.29527188648,494.18162334558,523.2511306012],description:`Wronski's scale, from Jocelyn Godwin, "Music and the Occult", p. 105.`},wurschmidt:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,331.11985608357,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's normalised 12-tone system"},wurschmidt1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-1 19-tone scale"},wurschmidt2:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-2 19-tone scale"},wurschmidt_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system"},wurschmidt_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,372.08969287196,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system with alternative tritone"},wurschmidt_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,319.36714514233,321.48549464138,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,425.82286018978,428.6473261885,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 53-tone system"},wurschmidt_temp:{frequencies:[261.6255653006,270.6876810201,276.46178051834,282.35904862511,288.38211267756,294.53365605714,300.81641938515,307.23320174366,313.78686192261,320.48031969341,327.31655710978,338.6540596739,345.87796520471,353.25596548096,360.79134753214,368.48746850413,376.34775715481,384.37571538166,392.57491978195,400.94902556208,409.5017589506,423.68596790742,432.72370810117,441.95423435346,451.38165902684,461.01018486849,470.84409628664,480.88777706987,491.14570185547,501.62244073019,512.32266126632,523.2511306012],description:"W\xEF\xBF\xBDrschmidt temperament, 5-limit, g=387.744375, 5-limit"},"t-side":{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Tau-on-Side"},"t-side2":{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Tau-on-Side opposite"},tagawa_55:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Rick Tagawa, 17-limit diamond subset with good 72-tET approximation, 2003"},tamil:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,372.50983809402,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Possible Tamil sruti scale. Alternative 11th sruti is 45/32 or 64/45"},tamil_vi:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale in Tamil music, Vidyasankar Sundaresan"},tamil_vi2:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.49599295996,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale with 1024/729 tritone"},tanaka:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"26-note choice system of Shoh\xEF\xBF\xBD Tanaka, Studien i.G.d. reinen Stimmung (1890)"},tanbur:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,306.66732929008,314.73752216614,323.24394168414,332.22294006425,341.71502406609,351.76546595039,523.2511306012],description:"Sub-40 tanbur scale"},tansur:{frequencies:[261.6255653006,275.71279889585,293.19126194179,310.07474405997,328.21516866261,348.83408706747,367.61706537823,391.78834765065,413.56919813705,438.48689188122,465.11211608996,491.022754507,523.2511306012],description:"William Tans'ur temperament from A New Musical Grammar (1746) p. 73"},tartini_7:{frequencies:[261.6255653006,294.32876096318,313.95067836072,367.91095120397,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Tartini (1754) with 2 neochromatic tetrachords, 1/1=d, Minor Gipsy (Slovakia)"},taylor_g:{frequencies:[261.6255653006,274.70684356563,287.78812183066,294.32876096318,313.95067836072,353.19451315581,366.27579142084,392.4383479509,412.06026534844,418.60090448096,431.68218274599,470.92601754108,523.2511306012],description:"Gregory Taylor's Dutch train ride scale based on pelog_schmidt"},taylor_n:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,348.83408706747,367.9112241576,391.33200541501,413.90012676351,437.76975193523,465.63764214343,491.10256480205,523.2511306012],description:"Nigel Taylor's Circulating Balanced temperament (20th cent.)"},telemann:{frequencies:[261.6255653006,264.94361147373,271.70648167539,275.15237829755,278.64197723942,282.17583275232,289.3785657319,293.0485888979,296.76515515861,300.52885648597,304.34029066685,308.20006306951,312.10878854255,316.06708432391,324.13491490251,328.24573110938,332.40868242763,336.62443200122,345.21700307457,349.59519124833,354.02890545793,363.06573983159,367.67029324081,372.33324354561,377.05533136015,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,417.05301810033,422.34226102699,433.12283887627,438.61588607285,444.17860098504,449.81186203693,461.29362042034,467.14394139401,473.06846134744,485.14386048744,491.29666030217,497.52749252881,503.83734680745,516.69814597997,523.2511306012],description:"G.Ph. Telemann (1767). 55-tET interpretation of Klang- und Intervallen-Tafel"},telemann_28:{frequencies:[261.6255653006,264.94361147373,275.15237829755,278.64197723942,293.0485888979,296.76515515861,308.20006306951,312.10878854255,328.24573110938,332.40868242763,345.21700307457,349.59519124833,354.02890545793,367.67029324081,372.33324354561,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,438.61588607285,444.17860098504,461.29362042034,467.14394139401,473.06846134744,491.29666030217,497.52749252881,516.69814597997,523.2511306012],description:"Telemann's tuning as described on Sorge's monochord, 1746, 1748, 1749"},"temes-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,378.62819763364,399.72843132859,423.31905787312,446.91000942727,523.2511306012],description:"Temes' 5-tone Phi scale mixed with its octave inverse"},"temes-ur":{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312],description:"Temes' Ur 5-tone phi scale"},temes:{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312,495.63057556553,523.2511306012,554.13187513888,585.01259700885,684.94462120932],description:"Temes' 5-tone Phi scale / 2 cycle"},"temes2-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,399.72843132859,423.31905787312,468.0102705885,495.63057556553,523.2511306012,552.41124604023,585.01259700885,646.77396536561,684.94438778203,757.25639526728,799.45686265718,846.63811574624,893.82001885454,1046.5022612024],description:"Temes' 2 cycle Phi scale mixed with its 4/1 inverse"},temp10coh:{frequencies:[261.6255653006,279.06726965397,299.10339764541,320.57805584394,343.5945271479,368.2635494613,394.70435354475,423.05284121745,453.57582505819,488.36772189445,523.2511306012],description:"Differential coherent 10-tone scale, OdC, 2003"},temp10ebss:{frequencies:[261.6255653006,280.43397904206,300.58585223371,322.17714382919,345.31067040124,370.09659148016,396.65293718743,425.1061627261,455.59176355181,488.25490599611,523.2511306012],description:`Cycle of 10 equal "beating" 15/14's`},temp11ebst:{frequencies:[261.6255653006,278.68301283272,296.80966039395,316.07252488244,336.70993118161,358.64093492832,381.94662420398,406.71316497313,433.24697173408,461.44397806515,491.40843569917,523.2511306012],description:"Cycle of 11 equal beating 9/7's"},temp12coh3:{frequencies:[261.6255653006,279.8393060116,294.68135606466,311.32770136359,332.21069717879,353.56473801237,370.2386298036,397.61708850394,418.97112933752,440.1984563065,471.2874275201,496.80305467842,523.2511306012],description:"Differential coherent scale, interval=3, OdC, 2003"},temp12ebf:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.5354160273,349.23174343306,369.98176018664,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating temperament tuned by The Best Factory Tuners (1840)"},temp12ebf4:{frequencies:[261.6255653006,276.98801737971,293.51517393789,310.79793252689,329.39098365485,348.83408706747,369.75126958642,391.78747833067,414.83115644933,439.62189128662,465.54602917011,493.43560586205,523.2511306012],description:"Eleven equal beating fifths and just fourth"},temp12ebfo:{frequencies:[261.6255653006,277.20265787963,293.64844512428,311.16011036869,329.64835309433,349.33484978517,370.11921182839,392.06266066657,415.42830219132,440.09698059047,466.36447845344,494.0968438935,523.62658899088],description:"Equal beating fifths and fifth beats twice octave at C"},temp12ebfp:{frequencies:[261.6255653006,277.75307788644,293.77513637875,310.82931496301,329.94340332986,349.12935317325,370.63270249518,391.99544730302,416.18671544528,440.21980402758,465.80107112682,494.47220378931,523.2511306012],description:"All fifths except G#-Eb beat same as 700 c. C-G"},temp12ebfr:{frequencies:[261.6255653006,277.1880780098,293.58315312731,311.09097992515,329.53543943235,349.23174457993,369.98176152553,391.84186168221,415.185630746,439.77824342227,466.03998361904,493.70667287983,523.2511306012],description:"Exact values of equal beating temperament of Best Factory Tuners (1840)"},temp12ep:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767],description:"Pythagorean comma distributed equally over octave and fifth: 1/19-Pyth comma"},temp12fo1o:{frequencies:[261.6255653006,277.20349049726,293.7089710611,311.19723286579,329.72679517909,349.35966199273,370.1615231373,392.20198585541,415.5548023839,440.29810917508,466.51470234738,494.29230838881,523.72386870485],description:"Fifth beats same octave opposite"},temp12fo2o:{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338107372,392.13011658806,415.46777521802,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"Fifth beats twice octave opposite"},temp12p10:{frequencies:[261.6255653006,277.12003622197,293.53214922797,310.91625060765,329.32990524605,349.3071136959,369.493381814,391.90691363044,415.11714643072,439.70197837153,465.74281849401,493.32589719545,523.2511306012],description:"1/10-Pyth. comma well temperament"},temp12p6:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Modified 1/6-Pyth. comma temperament"},temp12p8:{frequencies:[261.6255653006,277.02617059261,293.33333347996,310.60041853231,328.88393162803,349.42547049952,369.36822764145,391.77416758435,414.83597850347,439.25532436715,465.90062756558,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament"},temp12p8a:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,349.42547049952,368.74309237173,391.77416758435,414.83597850347,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament, consecutive just fifths"},temp12s17:{frequencies:[261.6255653006,275.41266079541,292.61316553779,309.9334225479,327.2710181906,348.78108411875,367.16108497228,391.29294726693,413.18177371806,437.63868343995,464.97078294553,490.98112850332,523.2511306012],description:'4/17th synt. comma "well"-temperament. OdC 1999'},temp12s3:{frequencies:[261.6255653006,275.79485124716,293.07576161921,310.19140758515,326.99095182327,348.87783040382,367.77258074571,390.81668391305,413.640406907,437.79703699716,465.22877230071,490.42492909292,523.2511306012],description:'1/3 synt. comma "well"-temperament. OdC 1999'},temp12septendec:{frequencies:[261.6255653006,277.01530443593,293.31032234393,310.5638707171,328.83233370046,348.17541215342,368.65631875068,390.34198455955,413.30334035457,437.61515184999,463.35732874365,494.18162334558,523.2511306012],description:"Scale with 18/17 steps"},temp12w2b:{frequencies:[261.6255653006,276.80621914251,293.38957467182,310.9374037046,329.12408537692,349.33498699812,369.32540968366,391.68699838314,414.83365420901,439.33301386008,466.03043161756,492.93477894539,523.2511306012],description:"The fifths on white keys beat twice the amount of fifths on black keys"},temp15coh:{frequencies:[261.6255653006,273.98642352939,286.93424587686,300.52595924487,314.76156220527,329.6715499436,345.28562122078,360.48992106995,377.61407292725,395.54746439596,414.33033691342,434.93480826785,455.53927928881,477.11963158959,499.65025190386,523.2511306012],description:"Differential coherent 15-tone scale, OdC, 2003"},temp15ebmt:{frequencies:[261.6255653006,274.13344448045,287.10161388969,300.54701305042,315.02372625978,330.03318193885,345.59498492211,361.72946206059,379.10151766291,397.1128647533,415.78702800292,435.14840215297,455.99486887387,477.60848441971,500.01748339385,523.2511306012],description:"Cycle of 15 equal beating minor thirds"},temp15ebsi:{frequencies:[261.6255653006,274.09084013406,287.01483652929,300.41443756554,314.84183942382,329.80016763418,345.30896502873,361.38848559819,378.7013656391,396.65136316555,415.2619179078,434.55734100747,455.33280077531,476.87279531786,499.20546063174,523.2511306012],description:"Cycle of 15 equal beating major sixths"},temp15mt:{frequencies:[261.6255653006,272.10155294862,290.46827626332,302.09918118188,314.19580976213,326.77681046955,348.83408706747,362.80207077951,377.32935907335,392.4383479509,418.92774655891,435.70241417719,453.14877154631,471.29371440761,503.10581234929,523.2511306012],description:"Cycle of 15 minor thirds, Petr Parizek"},temp16d3:{frequencies:[261.6255653006,272.52663052146,287.69189096389,299.67905363019,312.16568143019,325.17258353382,338.72144179457,352.83483584176,372.46899992671,387.98854005196,404.15472995283,420.99451113006,438.53594735503,462.93911228358,482.22824196207,502.32108537715,523.2511306012],description:"Cycle of 16 thirds tempered by 1/3 small diesis"},temp16d4:{frequencies:[261.6255653006,271.36369423603,291.82218013836,302.68427617679,313.95067836072,325.63643364742,337.75715313333,350.32902355546,376.74081403286,390.76372105392,405.30858212106,420.39482899491,436.04260883433,468.91646607712,486.37029938793,504.47379566792,523.2511306012],description:"Cycle of 16 thirds tempered by 1/4 small diesis"},temp16ebs:{frequencies:[261.6255653006,273.35566334732,285.38860666159,297.73221513295,311.13803992337,324.88997598926,338.996955196,354.31789928052,370.0343963911,386.15666093499,403.66631166114,421.62802297921,440.05346707662,460.0644954801,480.59216613216,501.64981691394,523.2511306012],description:"Cycle of 16 equal beating sevenths"},temp16ebt:{frequencies:[261.6255653006,273.54317752885,285.74681450472,298.24333695649,311.03977535434,324.14332902314,339.04034606654,354.29488987405,369.91554384313,385.91109319424,402.29053605603,420.91180538217,439.97998583037,459.50580330844,479.50024102158,499.97454326842,523.2511306012],description:"Cycle of 16 equal beating thirds"},temp16l4:{frequencies:[261.6255653006,278.81939890042,286.59644689091,305.43134787805,313.95067836072,322.70763593891,343.91573686494,353.50850469302,376.74081403286,387.24916379762,412.69888495295,424.21020636659,436.04260883433,464.69899736225,477.66074674968,509.05224558146,523.2511306012],description:"Cycle of 16 fifths tempered by 1/4 major limma"},temp17c10:{frequencies:[261.6255653006,278.13248184697,287.25399162485,296.67464640038,315.39293803189,325.73642523995,336.41913481987,347.45218787195,369.37422084479,381.48805431277,393.9991677018,418.85802036446,432.59470262079,446.78188702878,474.97099505857,490.54793493862,506.63572944675,523.2511306012],description:'Cycle of 17 fifths tempered by 1/10 of "17-tET comma"'},temp17c11:{frequencies:[261.6255653006,276.93071634298,286.5293181416,296.46061382736,313.80362259461,324.68026371274,335.93389640617,347.57758745223,367.91095120397,380.66298908833,393.8570200719,416.89773925535,431.34769064645,446.29848691039,472.40704302301,488.78098359819,505.72245578392,523.2511306012],description:'Cycle of 17 fifths tempered by 1/11 of "17-tET comma"'},temp17c12:{frequencies:[261.6255653006,275.93321340298,285.92682111936,296.28237159295,312.48531442823,323.80274674587,335.53006800342,347.68212334757,366.69599021774,379.97679689512,393.73860099464,415.27118158544,430.3112595477,445.8960513142,470.2809925818,487.31338757149,504.96265307831,523.2511306012],description:'Cycle of 17 fifths tempered by 1/12 of "17-tET comma"'},temp17c13:{frequencies:[261.6255653006,275.09197878886,285.41800532755,296.13163442011,311.37414725128,323.06208421743,335.18874504319,347.77059980835,365.67107999768,379.3971387881,393.63842979584,413.89982010446,429.43622376713,445.55581352332,468.48950048969,486.07501593832,504.32063522708,523.2511306012],description:'Cycle of 17 fifths tempered by 1/13 of "17-tET comma"'},temp17c14:{frequencies:[261.6255653006,274.37296298479,284.98259752889,296.00249241327,310.42486507835,322.42857866752,334.89645942743,347.84645641687,364.79486552165,378.90099378095,393.5525871037,412.72797362103,428.68761089217,445.26438593469,466.95936897503,485.01606158014,503.77098227424,523.2511306012],description:'Cycle of 17 fifths tempered by 1/14 of "17-tET comma"'},temp17c15:{frequencies:[261.6255653006,273.75133628611,284.60578240525,295.8906154666,309.60449456672,321.88054534371,334.64335075548,347.91221098893,364.0371787025,378.47152629398,393.47820661021,411.71505587788,428.03986711385,445.01196937812,465.63729761752,484.10016650719,503.29510175355,523.2511306012],description:'Cycle of 17 fifths tempered by 1/15 of "17-tET comma"'},temp17ebf:{frequencies:[261.6255653006,272.44226039746,283.83762774933,295.84262353625,308.01140541539,320.83119298602,334.33681303028,348.02669374128,362.44895565855,377.64277622383,393.64943714798,409.87448211667,426.96753159265,444.97502525992,463.22819966593,482.45788080796,502.71631088044,523.2511306012],description:"Cycle of 17 equal beating fifths"},temp17ebs:{frequencies:[261.6255653006,272.25303191034,284.09302419378,294.99486987374,307.14054534497,320.67196534338,333.1312181383,347.01199086095,362.47647062671,376.71561430061,392.57935523584,410.25304697073,426.52635565248,444.65634289229,464.854847056,483.45291583119,504.17290303449,523.2511306012],description:"Cycle of 17 equal beating sevenths"},temp17fo2:{frequencies:[261.6255653006,272.49443630436,283.81483782984,295.60553136463,307.88605111976,320.67674980257,333.99881838086,347.87433573796,362.32629011314,377.37863296804,393.05630224552,409.38528080469,426.39262165238,444.10651133426,462.55629730628,481.77255670213,501.78712602614,522.6331757532],description:"Fifth beats twice octave"},temp17nt:{frequencies:[261.6255653006,272.67141175251,283.62400127587,295.59862296305,308.07881564783,321.08592105074,333.98321109015,348.08400151932,362.78013022893,377.35217954558,393.28401259522,409.88848628312,426.35277308246,444.35341180422,463.11404114636,482.66674266598,502.05436630802,523.2511306012],description:"17-tone temperament with 27/22 neutral thirds"},temp17s:{frequencies:[261.6255653006,272.47577100117,283.83144686231,295.66037914716,307.98229466369,320.75501909295,334.12277657932,348.04764753103,362.48197303348,377.58873713905,393.32509157531,409.63717539588,426.70917767843,444.49267120113,463.01730800927,482.21968335939,502.31662775181,523.2511306012],description:"Cycle of 17 fifths tempered by 2 schismas. Schulter, Tuning List 10-9-98"},temp19d5:{frequencies:[261.6255653006,270.66831710441,280.02362001571,289.70227696231,304.50185643804,315.02657220273,325.91506125677,337.17989695691,348.83408706747,360.89108965294,379.3273836973,392.4383479509,406.00247545366,420.03542981361,434.55341522625,449.57319616728,472.53985806789,488.87259164079,505.76984518255,523.2511306012],description:"Cycle of 19 thirds tempered by 1/5 small diesis. Third = 3\\5"},temp19ebf:{frequencies:[261.6255653006,271.21349495395,281.45216719787,291.55303152151,302.33945232218,313.85796000757,325.22143162672,337.35615460362,350.31447634238,363.09838134063,376.74994653359,390.21776437961,404.59965986997,419.95766938963,435.10896436483,451.288596451,468.56635736893,485.61156561298,503.81364896584,523.2511306012],description:"Cycle of 19 equal beating fifths"},temp19ebmt:{frequencies:[261.6255653006,271.3515811897,281.43551369743,291.89053542337,302.73030209663,313.98726376766,325.65848288741,337.75920164946,350.30522706536,363.3129458114,376.82130195458,390.82676353803,405.34762742982,420.40285701732,436.01212051281,452.22214724761,469.0287008844,486.45373685079,504.52001310976,523.2511306012],description:"Cycle of 19 equal beating minor thirds"},temp19ebo:{frequencies:[261.6255653006,277.22364042749,293.65618047886,311.2040149966,329.6906225544,349.43193638686,370.22936988938,392.1394232912,415.53653598153,440.18534605859,466.50709783521,494.2370091719,523.84897992059,555.04513017437,587.91021027711,623.0058793126,659.97909442818,699.46172209312,741.05658909815,784.8766959018],description:"Cycle of 19 equal beating octaves in twelfth"},temp19ebt:{frequencies:[261.6255653006,271.59402175166,281.80172126331,292.25440577595,302.95795550425,313.91838845704,325.14187338321,337.60244413755,350.36206814823,363.42792409681,376.80735887968,390.50790160795,404.53725818867,420.11297167574,436.06250107414,452.39482160095,469.11911613638,486.2447950704,503.78149001575,523.2511306012],description:"Cycle of 19 equal beating thirds"},temp19k10:{frequencies:[261.6255653006,271.76196854941,282.29109592175,293.22816309454,304.58897525989,314.09773337131,326.2671147593,338.90798583865,352.03861397416,365.67797428016,377.09383089344,391.70392883316,406.88007915549,422.6442137645,439.01911266466,452.72455471179,470.26488431194,488.48479525859,507.41061720556,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/10 kleisma"},temp19k3:{frequencies:[261.6255653006,272.95237156345,284.76956174698,297.09836322231,309.96092731219,314.44113201634,328.05453510669,342.25731432435,357.07498823553,372.53417996774,377.91882441317,394.28042610165,411.35038641496,429.15937528906,447.73938330242,454.2110508691,473.87564511273,494.39160029408,515.79576952378,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/3 kleisma"},temp19k4:{frequencies:[261.6255653006,272.52663052146,283.88190679319,295.71031957624,308.03158289191,314.31844786309,327.4150485592,341.05734286691,355.26806612985,370.07090075127,377.62397563434,393.35830866491,409.74823893478,426.8210805314,444.6052930255,453.67960031314,472.58291784883,492.27387080735,512.78528301977,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/4 kleisma"},temp19k5:{frequencies:[261.6255653006,272.27150423996,283.35064249518,294.88062803952,306.8797443789,314.24485853342,327.03195662575,340.33937954017,354.18830437416,368.6007608062,377.44717941318,392.80607455881,408.78994578219,425.42422593284,442.73537947933,453.36102900438,471.8089732132,491.00759210237,510.98743222773,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/5 kleisma"},temp19k6:{frequencies:[261.6255653006,272.10155294862,282.99701916355,294.32876096318,306.11424676116,314.19580976213,326.77681046955,339.86157848985,353.47028562902,367.62391141072,377.32935907335,392.4383479509,408.1523292189,424.49552853314,441.49314144476,453.14877154631,471.29371440761,490.16521545931,509.79236747994,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/6 kleisma"},temp19k7:{frequencies:[261.6255653006,271.9802243463,282.7447017667,293.93521741989,305.56863311614,314.16077935352,326.59468561952,339.52070304385,352.95830848174,366.92774752709,377.24522513926,392.17589782962,407.69749910471,423.83341578697,440.60837682578,452.99722066906,470.92601754108,489.56440442681,508.94046380742,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/7 kleisma"},temp19k8:{frequencies:[261.6255653006,271.88926339885,282.55561052465,293.64040364533,305.16005936662,314.13450956378,326.45815718343,339.26526937521,352.57481080357,366.4064920117,377.18213591051,391.97917444376,407.35670799125,423.33750965456,439.94524339387,452.88359011983,470.65043349884,489.11427877975,508.30246674991,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/8 kleisma"},temp19k9:{frequencies:[261.6255653006,271.81853598083,282.40862793607,293.41130980736,304.84265779003,314.11407882217,326.35200974457,339.06673262958,352.27682225125,366.00158141044,377.13307501509,391.82623534045,407.09184571451,422.95220417284,439.43048454013,452.79523167251,470.4362008006,488.76446469244,507.80680338678,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/9 kleisma"},temp19lst:{frequencies:[261.6255653006,270.56149416036,279.80263334807,289.3594074481,304.78245180412,315.19242188443,325.95794877725,337.09117667186,348.60466454729,360.5114003397,379.7268899367,392.69661814622,406.10933276067,419.98016416303,434.32475952075,449.15930043669,473.09978287909,489.25870067642,505.96953296163,523.2511306012],description:"Cycle of 19 least squares thirds 5/4^5 = 3/2"},temp19lst2:{frequencies:[261.6255653006,270.86681403244,280.43448605562,290.34011310859,303.98143643885,314.71879896063,325.83542931914,337.34472599098,349.26055890156,361.59728998429,378.58655645252,391.95915298383,405.80409975455,420.1380835834,434.97837844393,450.34287106955,471.50175486263,488.15634183652,505.39920634693,523.2511306012],description:"Cycle of 19 least squares thirds 5/4, 3/2 (5), 6/5 (4)"},temp21ebs:{frequencies:[261.6255653006,270.48603901573,279.57527100587,288.89916626223,298.46378542286,308.59004184051,318.97773454914,329.63361550747,340.56460989801,352.13747205507,364.00912264098,376.18727282918,388.67983604901,401.90596519454,415.47356606258,429.3914526989,443.66866815503,458.78424493347,474.29007331382,490.19622772738,506.51304733863,523.2511306012],description:"Cycle of 21 equal beating sevenths"},temp22ebf:{frequencies:[261.6255653006,269.81217946012,278.43675961795,287.52273893052,297.09479717246,306.30473778727,316.00739221221,326.22911792828,336.99768333647,347.35886661388,358.27435338478,369.77379349451,381.88843101834,394.65117841871,406.93109909525,419.8679691216,433.49693671533,447.85502662133,461.66993710068,476.2239184443,491.55650493929,507.70935693135,523.2511306012],description:"Cycle of 22 equal beating fifths"},temp22ebt:{frequencies:[261.6255653006,270.16401944699,278.90739732088,287.86061708193,297.02871287074,306.4168425362,316.03028815926,325.87445510174,336.54752540671,347.4767459334,358.66827061689,370.12838991426,381.86355177507,393.88036006393,406.18556836568,419.52690380046,433.1884314408,447.17783799964,461.50298590676,476.17193984405,491.19294816955,506.57446222015,523.2511306012],description:"Cycle of 22 equal beating thirds"},temp22fo2:{frequencies:[261.6255653006,269.97341665226,278.58762814388,287.47669703533,296.64939669548,306.114775449,315.88217199169,325.96122111215,336.36187067071,347.09438029185,358.16933884319,369.59767092309,381.39065611261,393.55992749281,406.11749146369,419.07573510033,432.44744798202,446.24582051114,460.48446638525,475.17743368268,490.33921589034,505.98477744485,522.12955176559],description:"Fifth beats twice opposite rate as octave"},temp23ebs:{frequencies:[261.6255653006,269.54528659271,277.75645349026,286.26979186473,295.09642104593,304.24787054065,313.41421505132,322.9178815064,332.77128133421,342.98728793362,353.5792427091,364.56098080918,375.56059498003,386.96499273375,398.78907363541,411.04828247111,423.75862731373,436.93671323096,450.13624919654,463.82153026575,478.01042762353,492.72147385367,507.97388874722,523.2511306012],description:"Cycle of 23 equal beating major sixths"},temp24ebaf:{frequencies:[261.6255653006,269.28287293678,277.23083697142,285.33112867981,293.73889258015,302.30779732819,311.20195864933,320.26658492056,329.67528611807,339.26431305611,349.21731641877,359.36108127338,369.88988063787,380.8183283077,391.95623237686,403.5169050439,415.29914897519,427.52862168357,439.9924847314,452.92944495636,466.1143590732,479.79973930305,493.74741628009,508.22451419243,523.2511306012],description:"Cycle of 24 equal beating 11/8's"},temp24ebf:{frequencies:[261.6255653006,269.29177952703,277.18807786937,285.37455545576,293.58315284916,302.20762754558,311.09098010692,320.17688686519,329.5354160273,339.23795459232,349.23174343306,359.45337270909,369.98176018664,380.89707445632,391.84186131702,403.3411703213,415.18563115404,427.4653330282,439.77824302677,452.71493931339,466.03998256716,479.66882917609,493.70667148145,508.26043277122,523.2511306012],description:"24-tone ET with 23 equal beatings fifths. Fifth on 17 slightly smaller."},temp25ebt:{frequencies:[261.6255653006,269.07040607882,276.69392272178,284.50040351526,292.49424189123,300.67993013952,309.06207502162,317.64539198503,326.43470939254,335.74076076764,345.27015661764,355.02825763358,365.02055286832,375.25266439783,385.73034580726,396.45949385543,407.44613828076,419.07870286007,430.99044652419,443.18807578441,455.67844358274,468.46858279232,481.56568677979,494.97711759939,508.71042703507,523.2511306012],description:"Cycle of 25 equal beating thirds"},temp26eb3:{frequencies:[261.6255653006,268.53506427639,276.23413316293,283.52944261778,291.01742029734,298.70315454572,307.26715974579,315.38204761281,323.71124866952,332.26042290088,341.78653782772,350.81307822085,360.07800843467,370.40166886388,380.18393134541,390.22454217496,400.5303243006,412.0137801623,422.89501338113,434.06361862988,445.5271853685,458.30072684004,470.40439262311,482.82771472967,495.57913524385,509.78770018956,523.2511306012],description:"Cycle of 26 fifths, 5/4 beats three times 3/2"},temp26ebf:{frequencies:[261.6255653006,268.42568455944,275.6873347244,283.44184249631,290.6057533496,298.25588724353,306.42524452376,315.14906491362,323.2084665433,331.81486605817,341.00539333861,350.8196903474,359.88651586494,369.56871668171,379.90806097321,389.45994242989,399.66012078319,410.55259814459,422.18435687733,432.93022440227,444.40542617247,456.65946119637,469.74519313893,481.83429211771,494.74389287961,508.52968420524,523.2511306012],description:"Cycle of 26 equal beating fifths"},temp26ebmt:{frequencies:[261.6255653006,268.65375733515,276.22103845862,283.50786797993,291.35362426947,298.90860888253,307.04308924768,315.80151824033,324.23534814673,333.31608510092,342.06028051348,351.47518831899,360.54116941247,370.30254728737,380.81265974123,390.93325547321,401.83014055422,412.32317421544,423.62106542614,434.50024245702,446.21389528982,458.82603004394,470.97074536855,484.04700949484,496.63864979835,510.1961187079,523.2511306012],description:"Cycle of 26 equal beating minor thirds"},temp26ebs:{frequencies:[261.6255653006,268.70854008298,275.97438147252,283.42781183148,291.07367309004,298.91693448926,307.01176285104,315.31558194419,323.83378869523,332.57191674,341.53564330438,350.78687613393,360.27695513986,370.01204624828,379.9984780646,390.24273934583,400.81557597059,411.66137956276,422.7871998129,434.200265189,445.90799193987,457.99123299379,470.38643795716,483.10166179174,496.14516363988,509.5254229925,523.2511306012],description:"Cycle of 26 equal beating sevenths"},temp27c8:{frequencies:[261.6255653006,268.8683660761,273.88218275531,281.46429379013,289.25630678777,297.26403435806,305.49344487497,313.95067836072,319.80518189674,328.65861797738,337.75715313333,347.10756874671,356.7168418477,363.36884069528,373.42828707985,383.76621672426,394.39034225616,405.30858212106,412.86671295557,424.29645219584,436.04260883433,448.1139452722,460.51946086698,473.26841152735,482.09384659572,495.44005640506,509.15574351714,523.2511306012],description:"Cycle of 27 fifths tempered by 1/8 of difference between augm. 2nd and 5/4"},temp27eb2:{frequencies:[261.6255653006,268.46319812592,275.47953375729,282.6792426258,290.06711722511,297.6480770209,305.21714541248,313.19405229436,321.37943712173,329.77875040935,338.39757940759,347.00289091411,356.07187808578,365.37788286775,374.92710181611,384.72589137834,394.78077412888,404.81988946592,415.39993259502,426.25648711974,437.39677971686,448.82822593369,460.24174609969,472.27024976331,484.61312060812,497.27857467888,510.27504274822,523.2511306012],description:"Cycle of 27 fourths, 5/4 beats twice 4/3"},temp28ebt:{frequencies:[261.6255653006,268.20719354764,274.94677993062,281.84811597329,288.91508487862,296.15166190523,303.56191452522,311.15001492268,318.92023016627,326.87692943437,335.10396312415,343.5284476344,352.15511767098,360.98882840285,370.03454814671,379.29736707683,388.78249121135,398.49525813745,408.44113355924,418.72492751128,429.25553103998,440.03886948281,451.08100913788,462.38815755283,473.96667987616,485.82308640697,497.96404651665,510.39638953936,523.2511306012],description:"Cycle of 28 equal beating thirds"},temp29c14:{frequencies:[261.6255653006,268.03384168485,274.59908446169,281.12309545065,288.00894581307,294.85155418799,302.07367045706,309.47268578827,316.82523654187,324.58557784847,332.29718551084,340.4364979057,348.77517523396,357.06148706459,365.80737813473,374.49834647311,383.67133729641,392.78672100419,402.40767098088,412.26427490957,422.0589810157,432.39692561869,442.66994710331,453.51274088813,464.62111626441,475.65973015548,487.31057837675,498.88825560972,511.10806227553,523.2511306012],description:"Cycle of 29 fifths 1/14 comma positive"},temp29ebf:{frequencies:[261.6255653006,267.97141371953,274.40384216744,281.08918054527,287.86573007783,294.90872015661,302.04780073409,309.28428172011,316.80528774769,324.42890571749,332.35226986162,340.383734589,348.52477529448,356.98590767403,365.56247629567,374.47626314535,383.51165984234,392.90231649713,402.42108995343,412.06973029551,422.09773822292,432.26256191617,442.8270465847,453.53566813958,464.39038927288,475.67189906986,487.10732348594,498.99237046175,511.03956815915,523.2511306012],description:"Cycle of 29 equal beating fifths"},temp29fo:{frequencies:[261.6255653006,267.94780983951,274.42283293416,281.05432651499,287.84607006616,294.80193939197,301.92589896847,309.2220107369,316.69443479624,324.34743177532,332.18536334326,340.21270232633,348.43402388135,356.85401564372,365.47747852664,374.30932945854,383.35460418662,392.61845788025,402.10617708826,411.82316930666,421.77497497272,431.96726840975,442.4058610624,453.0967048103,464.04589268124,475.25967298378,486.74443697706,498.50673304697,510.55326782272,522.89091000079],description:"Fifth beats with opposite equal rate as octave"},temp31c51:{frequencies:[261.6255653006,267.17944246504,273.80687224646,279.61933836952,286.55534345926,292.63843680803,298.85066583755,306.26370726525,312.76517639908,319.40466275447,327.32754956004,334.27616903285,342.56794607269,349.84009583671,357.26662128823,366.1286782788,373.90098334082,383.17565840352,391.30984260196,399.61670205031,409.52926208827,418.22288720188,428.59697681668,437.69538032917,446.98692528774,458.07451174337,467.79867446983,477.72926229583,489.57941763243,499.97237729845,512.37427391379,523.2511306012],description:"Cycle of 31 51/220-comma tempered fifths (twice diff. of 31-tET and 1/4-comma)"},temp31coh:{frequencies:[261.6255653006,267.17903658035,272.71444919697,278.8328003927,286.67318542907,292.31259119845,298.22448926086,305.9625493141,312.79375273624,319.37019903425,325.99008611032,333.53448283298,342.55073731576,349.35067604096,356.49690427728,365.94514964733,373.94225818849,381.74854907994,389.68867781295,401.66236977474,409.34549662494,417.52928752537,426.20510506248,437.61344561246,447.02040600938,456.30467151405,466.17931462488,479.8608061495,489.18804557359,499.02680928636,509.58872491278,523.2511306012],description:"Differential coherent 31-tone scale, interval=8, OdC, 2003"},temp31eb1:{frequencies:[261.6255653006,267.35556661283,273.21106374578,279.19480525048,287.36432599524,293.65804565963,300.08960744161,306.66203029506,313.37839929357,320.24186707858,327.25565533923,334.42305632458,341.74743438901,349.23222958864,356.8809512704,367.32364464292,375.36859607341,383.58974428421,391.99094825517,400.57615379751,409.34938620036,418.31476585427,427.47650107887,436.83889236244,446.40633438056,459.46863260649,469.5317006585,479.81516534138,490.32385367952,501.06269841655,512.03674033076,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats equal 5/4. Third 1/18 synt. comma higher"},temp31eb1a:{frequencies:[261.6255653006,267.52830363402,273.56421824856,279.73631545395,286.19123047598,292.64821393201,299.25087842544,306.00251077972,312.90647197491,319.96619882071,327.18520755731,334.56708808783,342.11551697966,349.83425186023,357.90667665031,365.98168819447,374.23888853079,382.68238383924,391.31637942763,400.14517332125,409.17316051655,418.40483516889,427.84479530109,437.49773526159,447.36846272566,457.69148927209,468.01782376277,478.57713873597,489.37469064597,500.41585743254,511.7061296998,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats equal 7/4"},temp31eb2:{frequencies:[261.6255653006,267.43633367564,273.37616065041,279.44791264824,286.8151286113,293.18536340431,299.69708268426,306.35342885652,313.15761412007,320.11292201761,327.22270902014,334.4904061467,341.91952062013,349.51363755953,357.2764217104,366.69546492458,374.83986170174,383.16514754137,391.67534003419,400.37454600262,409.26696348258,418.35688374945,427.64869338884,437.14687641357,446.85601642745,458.63669049374,468.82312458207,479.23580188553,489.87974732177,500.7600974131,511.88210276525,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats twice 5/4"},temp31eb2a:{frequencies:[261.6255653006,267.30377559621,273.10522335955,279.03258328435,287.71713441117,293.9616250555,300.34164347605,306.86013111019,313.520093235,320.3246003528,327.27678960683,334.37986622751,341.63710501026,349.05185182525,356.62752721996,367.72712485201,375.70811839104,383.86232802855,392.19351543866,400.70551714108,409.40225971792,418.28775270674,427.36609266644,436.64146506587,446.11814621352,460.00303307438,469.98674378481,480.18713671772,490.60891465214,501.25688243424,512.13594919255,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 3/2"},temp31eb2b:{frequencies:[261.6255653006,267.52098517401,273.5492512983,279.71335720518,286.24081966732,292.69091492047,299.28635537219,306.03041620307,312.92644639599,319.97787039914,327.18818982659,334.56098519707,342.09991771207,349.80873107384,357.97195918064,366.0384300542,374.28666922186,382.72077261519,391.34492846269,400.16341936959,409.18062444454,418.40102147414,427.82918914659,437.46980932536,447.32766937413,457.76662230541,468.08184681118,478.62951259033,489.41485742956,500.44323714283,511.72012823096,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 7/4 (7/4 beats twice 5/4 gives 31-tET)"},temp31ebf:{frequencies:[261.6255653006,267.58895287558,273.47207673981,279.84020613447,286.1226232561,292.32048149598,299.02929415269,305.64780689513,312.81195283539,319.87967238294,326.85226402826,334.39967773649,341.84550545999,349.90516819854,357.85635261941,365.7005167875,374.19135817901,382.56791460144,390.83172556312,399.77680617055,408.60149248083,418.153686518,427.57731316062,436.87410111252,446.93731687602,456.86508723973,467.61130449655,478.21288647115,488.67177324268,499.99289085438,511.16163412976,523.2511306012],description:"Cycle of 31 equal beating fifths"},temp31ebf2:{frequencies:[261.6255653006,268.47208070676,273.9410776603,281.1098810272,286.83632036086,292.67941197057,300.33857976184,306.45672349367,312.69950064833,320.88257689406,327.41921873353,335.98749730659,342.8318387903,349.81560715632,358.96997989875,366.28249344322,375.86779039798,383.5245262314,391.33723606718,401.57819634767,409.75867428285,420.48170539436,429.04726334649,437.78730875453,449.24382765192,458.39529367535,467.73318258368,479.97335657757,489.75080836323,502.56716753771,512.80487382351,523.2511306012],description:"Cycle of 31 fifths, 3/2 beats equal 7/4"},temp31ebs:{frequencies:[261.6255653006,267.49970467488,273.5255021102,279.70687352555,286.04783307233,292.55250379055,299.22511217624,305.93841412724,312.82503848113,319.88946348152,327.13627425327,334.57018402367,342.19602042672,349.86836735032,357.73879552978,365.81242398075,374.09449397971,382.59039112658,391.30563169636,400.0740276901,409.06880268892,418.29580572823,427.76103041037,437.4706255228,447.4309015606,457.4519243295,467.73166961576,478.27681510244,489.09421437332,500.19089295757,511.57406697079,523.2511306012],description:"Cycle of 31 equal beating sevenths"},temp31ebs1:{frequencies:[261.6255653006,267.15774161678,272.80689957055,278.57550963341,287.00766304701,293.07655388437,299.27377555355,305.60203820353,312.06411627904,318.6628357552,328.30838543699,335.25059642555,342.33960321815,349.5785118895,356.97048813578,364.51877275634,375.55232561156,383.49353066309,391.60265342908,399.88324912115,408.33893898267,416.9734277591,429.59472356821,438.6786743379,447.954711436,457.42689142912,467.09936712211,476.97636845082,491.41388278482,501.80502418824,512.41589335668,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats equal 7/4. 17/9 schisma fifth"},temp31ebs2:{frequencies:[261.6255653006,267.52957387699,273.56681763873,279.74030009523,286.13080593576,292.58781532731,299.19053769144,305.94226304679,312.84635035505,319.90623967996,327.21431324819,334.59843914397,342.14920188821,349.87035796113,357.76575454309,365.83932576918,374.19671203989,382.64107477964,391.27599615891,400.10577865514,409.13482199124,418.3676180873,427.92498506647,437.58181190976,447.45656083737,457.55415226032,467.87960969795,478.43807796233,489.36771995709,500.41110255739,511.70370009509,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats twice 7/4. Almost 31-tET"},temp31ebsi:{frequencies:[261.6255653006,267.31506098272,273.2139312212,279.32987994092,285.67089487749,292.24525964349,299.06156112772,306.12870201667,312.71376833043,319.5411631371,326.61980701828,333.95894503443,341.56816427739,349.45740040562,357.63696227352,366.11753111539,374.01961057916,382.2124855973,390.7068565555,399.51382386635,408.64488423766,418.11197066674,427.92744450622,438.10412760018,447.58662182594,457.41807184609,467.61131789159,478.17967690081,489.136951815,500.49745466086,512.27602199232,523.2511306012],description:"Cycle of 31 equal beating major sixths"},temp31ebt:{frequencies:[261.6255653006,267.508686718,273.53300221315,279.70190221389,286.0188552526,292.48741633838,299.11122072338,305.89399777728,312.83956126154,319.95181832117,327.23477005018,334.588671338,342.11906613961,349.83019225353,357.72638299858,365.81208378543,374.09184045976,382.57031224079,391.25226584136,400.14258695229,409.24627647794,418.43865241641,427.85164834976,437.49055334209,447.36079317794,457.46791872903,467.81761394993,478.41570188597,489.26814549043,500.38104816704,511.76065992154,523.2511306012],description:"Cycle of 31 equal beating thirds"},temp31g3:{frequencies:[261.6255653006,266.21023205793,270.87523947024,275.62199471997,289.25983723073,294.32876096318,299.48651076576,304.73464409936,310.07474405997,315.5084236529,331.11985608357,336.92232427465,342.82647426905,348.83408706747,354.94697625466,361.16698614085,379.03761443004,385.6797831671,392.4383479509,399.31534788729,406.31285900225,413.43299207996,433.88975562921,441.49314144476,449.22976592409,457.10196592055,465.11211608996,473.26263524279,496.67978412536,505.38348615935,514.23971114652,523.2511306012],description:"Wonder Scale, cycle of 31 sevenths tempered by 1/3 gamelan residue, s.wonder1"},temp31g4:{frequencies:[261.6255653006,266.75106828164,271.97698492363,277.30528403104,287.97116616014,293.61280545832,299.36497003718,305.22982618403,311.20958045219,317.30648321666,329.51091606373,335.96636137331,342.54827390456,349.25913259695,356.10146388137,363.07784268567,377.0427625798,384.42940207435,391.96075366681,399.63965159508,407.46898671086,415.4517078616,431.43106138252,439.88322158593,448.50096908674,457.28754710584,466.24626137824,475.38048570318,493.66485502092,503.33623955776,513.19709315346,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/4 gamelan residue"},temp31g5:{frequencies:[261.6255653006,267.07609791103,272.64018328418,278.3201871026,287.20071989568,293.1840695693,299.2920706603,305.52732176658,311.89247392994,318.39023342226,328.54930692245,335.39408374843,342.38146206091,349.5144087687,356.79595852417,364.22920722399,375.85089312601,383.68111960674,391.67447579625,399.83436022994,408.16424460367,416.66766586736,429.96253800336,438.92009035289,448.06425836543,457.39892986705,466.92807368021,476.65574406444,491.86469103391,502.11187209711,512.57253609913,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/5 gamelan residue"},temp31g6:{frequencies:[261.6255653006,267.29300481931,273.08321314304,278.9988528944,286.68823620156,292.89859205665,299.24348036203,305.72581270733,312.34856974117,319.11478979112,327.9097940226,335.01310892782,342.27029731995,349.68469585889,357.2597060542,364.99881126821,375.05840734677,383.18307527508,391.48374080678,399.96422099622,408.62840644009,417.48028065389,428.98629965513,438.27917301224,447.77335490729,457.47320099372,467.3831713443,477.50781354513,490.66822826519,501.2972832058,512.15658610391,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/6 gamelan residue"},temp31g7:{frequencies:[261.6255653006,267.44804485495,273.40010374961,279.48462577409,286.32273545638,292.69485077785,299.20877758909,305.86767190621,312.6747599825,319.63333987564,327.45376040978,334.74124806474,342.19091885571,349.80638115363,357.59132564064,365.54952414453,374.49336901227,382.82772265927,391.34755742947,400.0570012071,408.96027492626,418.06169111145,428.2903432132,437.821949061,447.565680886,457.52625955954,467.70851101039,478.11736856842,489.81539667363,500.71624319167,511.85968815724,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/7 gamelan residue"},temp31h10:{frequencies:[261.6255653006,267.8597617245,273.71072489962,279.68949451567,286.35413084244,292.60907359238,299.00064605783,306.12544311476,312.81225819702,320.26616683613,327.26186315247,334.41036913783,342.37893460431,349.85764856047,358.19430059608,366.01847563765,374.01355928612,382.92581520849,391.29021017831,400.61414686654,409.36491649663,418.30683086326,428.27453775026,437.62950220286,447.18881072031,457.84473927605,467.84561789912,478.99376955124,489.45661357347,500.14800438647,512.06587983104,523.2511306012],description:"Cycle of 31 fifths tempered by 1/10 Harrison's comma"},temp31h11:{frequencies:[261.6255653006,269.21878403965,274.22153683641,279.31725480271,287.42394184039,292.76499331753,298.20529308835,306.86017365004,312.56239683413,321.63396690808,327.61072570921,333.69854562169,343.38355445704,349.7644731902,359.91576765193,366.60389537541,373.41630725864,384.25405432087,391.39444778107,402.75397853578,410.23814647641,417.86138882164,429.98907567166,437.9793418028,446.11808436842,459.06587176894,467.59645436585,481.16761342105,490.10890120058,499.21634316923,513.70521350358,523.2511306012],description:"Cycle of 31 fifths tempered by 1/11 Harrison's comma"},temp31h12:{frequencies:[261.6255653006,270.35656674398,274.64794212014,279.0074329748,288.31850430385,292.89498819461,297.54411640065,307.47379627264,312.35433239663,322.77826253379,327.90172667751,333.10651564349,344.2229903876,349.68684701428,361.35664068489,367.0924599966,372.91932620731,385.3644371109,391.48133253101,404.54589939324,410.96726244836,417.49055189439,431.4231018689,438.27108715714,445.22777061734,460.08596806997,467.38892215786,482.98668436162,490.65313915878,498.44128370652,515.07533168556,523.2511306012],description:"Cycle of 31 fifths tempered by 1/12 Harrison's comma"},temp31h8:{frequencies:[261.6255653006,264.15772162327,272.31089540773,280.71571360382,283.4326348965,292.18072491748,301.19882119914,304.11398928909,313.50040506268,316.53463456122,326.30440921209,336.37572681506,339.63135730234,350.11400731728,353.50260556257,364.41338872146,375.66093089504,379.29678648678,391.00370158472,394.788050771,406.97310157871,419.5342415638,423.59472503043,436.668886633,450.14658206855,454.50334862767,468.53149836075,473.06620699858,487.66729542944,502.71904336675,507.58463809481,523.2511306012],description:"Cycle of 31 fifths tempered by 1/8 Harrison's comma"},temp31h9:{frequencies:[261.6255653006,266.20804854623,273.08769296879,280.14512719472,285.05198845745,292.41861893027,299.97562432697,305.22982618403,313.11791376428,318.60230743232,326.83598255713,335.28243953396,341.15505431438,349.97156260351,356.10146388137,365.30423365264,374.74482972428,381.30864508241,391.16284711627,398.01423104415,408.30015740759,418.85190169901,426.18827121524,437.20230245522,448.50096908674,456.35665612784,468.15032961482,476.35018210031,488.66055322307,501.28905975035,510.06935121341,523.2511306012],description:"Cycle of 31 fifths tempered by 1/9 Harrison's comma"},temp31ms:{frequencies:[261.6255653006,267.90457886781,273.56603860918,280.13162379381,286.05147140959,292.91670530125,299.10673210371,306.2852939563,312.75782903301,320.26401722477,327.03195662575,334.88072358477,341.95754947331,350.16453098318,357.56433846376,366.14588292411,373.88341429498,382.85661659068,390.94728541851,400.33002063726,408.78994578219,418.60090448096,427.44693588739,437.70566275183,446.9554220819,457.68235263341,467.35426952494,478.57076966998,488.68410850494,500.41252756995,510.98743222773,523.2511306012],description:"Cycle of 31 5th root of 5/4 chromatic semitones"},temp31mt:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,285.65057792122,292.50627485027,299.52642572255,306.71505845072,314.07622014281,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,365.63273925968,374.40803131735,383.39382442208,392.5952765698,402.01756125559,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,457.04092569426,468.01003810189,479.24227945773,490.7440946167,502.52195335034,510.98743222773,523.2511306012],description:"Cycle of 31 square root of 5/4 meantones"},temp31to:{frequencies:[261.6255653006,267.53589118464,273.57973594714,279.76011588387,286.08011543105,292.54288870475,299.15166280294,305.90973254237,312.82047235615,319.88733118052,327.11383586587,334.50359293692,342.06029039257,349.78769954651,357.68967690936,365.77016611333,374.03319988033,382.48290424395,391.12349182016,399.95927701915,408.9946695077,418.23417857039,427.68241536008,437.34409519915,447.22403993284,457.32718033558,467.65855857191,478.22333071276,489.02676930874,500.07426891005,511.37133726836,522.92361522538],description:"Third beats with opposite equal rate as octave"},temp31w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,356.97015906904,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 31 thirds tempered by 1/10 Wuerschmidt comma"},temp31w11:{frequencies:[261.6255653006,267.42197848694,273.34681181717,279.40291364591,286.91265577589,293.26931399985,299.76680465545,306.40825140143,313.19684009872,320.13583435099,327.22856275086,334.47843511672,341.88893114233,349.46360748692,357.20610515709,366.80702823839,374.93377645155,383.2405741708,391.73141324262,400.41036830387,409.28161120445,418.34939984118,427.61808628905,437.09212645494,446.77606497733,458.78443573652,468.94897543376,479.33871705477,489.95864449434,500.81386326642,511.90958055231,523.2511306012],description:"Cycle of 31 thirds tempered by 1/11 Wuerschmidt comma"},temp31w12:{frequencies:[261.6255653006,267.46216197987,273.42896553533,279.52888390694,286.63976159726,293.03439921138,299.57169286871,306.25482853931,313.08705807777,320.0717057658,327.2121755928,334.51194000906,341.9745565771,349.60365642833,357.40295156876,366.49485373999,374.67097398132,383.02949720151,391.57448819698,400.31011139524,409.24061734241,418.37035125513,427.70376253715,437.24539007841,446.99988402026,458.37102198078,468.59680699416,479.0507177135,489.73784363297,500.66339010461,511.83267129957,523.2511306012],description:"Cycle of 31 thirds tempered by 1/12 Wuerschmidt comma"},temp31w13:{frequencies:[261.6255653006,267.49616787535,273.49850059869,279.63551774138,286.40905375482,292.83577174957,299.40669857094,306.12507001426,312.99419468163,320.01745343487,327.19830857776,334.54029455907,342.04702698539,349.72220057363,357.56974544479,366.23091133098,374.44874787361,382.85098402684,391.44175752404,400.22529663315,409.2059314354,418.38808223908,427.77627085136,437.37511801764,447.18935574711,458.02150335998,468.29902426597,478.80716193382,489.55109116118,500.53609997149,511.7676037195,523.2511306012],description:"Cycle of 31 thirds tempered by 1/13 Wuerschmidt comma"},temp31w14:{frequencies:[261.6255653006,267.52531966849,273.55811412425,279.72695193191,286.21145362846,292.66562728487,299.26534666214,306.01389218024,312.91461811683,319.97095981222,327.18642276261,334.56459899164,342.10915585471,349.82384327668,357.71250180664,366.00482869479,374.25837321367,382.69803863807,391.32802257119,400.15261355898,409.17620468607,418.4030501472,427.83842920638,437.48634583318,447.35182400506,457.72212848121,468.04393370572,478.5984967348,489.39107187298,500.42702361787,511.71183724724,523.2511306012],description:"Cycle of 31 thirds tempered by 1/14 Wuerschmidt comma"},temp31w15:{frequencies:[261.6255653006,267.55058630145,273.60979095449,279.80621811014,286.0403087015,292.51824916652,299.142895223,305.91756930507,312.84566908988,319.93066920159,327.176122954,334.58566413263,342.16300881716,349.91195724514,357.83639571789,365.80900091179,374.09345893182,382.56553686518,391.22947931103,400.08963362509,409.15044340767,418.41645289306,427.89230922859,437.58276480531,447.49267964143,457.46282942114,467.82296651709,478.41773025336,489.25243249537,500.33250769337,511.66351279634,523.2511306012],description:"Cycle of 31 thirds tempered by 1/15 Wuerschmidt comma, almost 31-tET"},temp31w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,278.83674800471,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,356.32163474066,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,445.77026919414,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 31 thirds tempered by 1/8 Wuerschmidt comma"},temp31w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,356.68171037974,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,446.1797636563,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 31 thirds tempered by 1/9 Wuerschmidt comma"},temp32ebf:{frequencies:[261.6255653006,266.99024669658,272.64192755012,278.59596223891,284.86852586219,291.47665855944,298.4383110444,304.47357861204,310.83171904039,317.53000821614,324.58664278196,332.02079024875,339.85265231199,346.64232633314,353.79523650997,361.33080945807,369.26952339658,377.6329406438,386.44378308989,395.72598875513,403.77301123196,412.25053247262,421.18158418009,430.59042797451,440.50262726312,450.945108697,459.9980085603,469.53522100534,479.58265227668,490.16760508681,501.31882698223,513.0666164148,523.2511306012],description:"Cycle of 32 equal beating fifths"},temp33a12:{frequencies:[261.6255653006,266.94139439278,272.36523138282,277.89927397158,284.73748648557,290.5229142688,296.42589304627,302.44880952638,308.5941041528,316.1876182869,322.61206437627,329.16704532903,335.85521147284,342.67927280589,351.11151394887,358.24555988319,365.52455654698,372.95145333883,382.12859604556,389.89286138208,397.81488464837,405.89786889835,414.14508930077,424.3358756666,432.95772800787,441.75476312782,450.73053786756,459.88868900496,471.20507923536,480.77924170569,490.54793493862,500.51511311891,512.83118959171,523.2511306012],description:'Cycle of 33 fifths tempered by 1/12 "11 fifths" comma'},temp34eb2a:{frequencies:[261.6255653006,267.30377714022,273.10522651459,279.03258811962,285.08859470169,291.27603831759,293.96161656556,300.34163653669,306.86012579271,313.52008961307,320.32459850253,327.27678960683,334.37986815896,341.63710895701,349.05185787385,356.62753339984,364.36762821878,372.27571081823,375.70810971034,383.86232137672,392.19350864246,400.70551251195,409.40225735312,418.28775270674,427.36609513501,436.64147011015,446.11815394416,455.80051576031,465.69301950749,469.98673021106,480.18712562304,490.60890615053,501.2568766435,512.13594623433,523.2511306012],description:"Cycle of 34 thirds, 5/4 beats twice 3/2"},temp34ebsi:{frequencies:[261.6255653006,266.99788221884,272.57696520339,278.14698300137,283.93137567849,289.70637009331,295.70363067102,301.69114426564,307.90910207865,314.36637542255,320.81315450625,327.50805511637,334.19207543599,341.13334896852,348.06334108321,355.26005273528,362.44506998142,369.90662102486,377.65534755435,385.39148338011,393.42536256589,401.44618836017,409.77571602141,418.09170597447,426.72775997548,435.3497813463,444.30364141769,453.60211446558,462.88547695756,472.52613162558,482.15112257833,492.14655599832,502.125745683,512.48900933996,523.2511306012],description:"Cycle of 34 equal beating major sixths"},temp34ebt:{frequencies:[261.6255653006,266.93199967636,272.36578831151,277.92998813547,283.62773001764,289.46221547291,295.43672985114,301.55463262869,307.81936583026,314.23445063866,320.80349820247,327.5302045997,334.16324661664,340.95548417522,347.91073392156,355.03290870525,362.32601803901,369.79415983503,377.44153922514,385.2724539348,393.29131162714,401.50262139782,409.91100286066,418.20230551726,426.69260242977,435.3866631899,444.28938530291,453.40576935587,462.74094691381,472.3001707563,482.08881469934,492.11238732973,502.37652397446,512.8870010249,523.2511306012],description:"Cycle of 34 equal beating thirds"},temp34w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,281.06516151868,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,351.5637974276,359.28803828513,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,449.40705529895,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 34 thirds tempered by 1/10 Wuerschmidt comma"},temp34w5:{frequencies:[261.6255653006,266.84400329087,272.16653090376,277.59522118835,285.18293865736,290.87125860088,296.67303727804,302.5905394405,308.62607485572,314.78199505921,321.06070411799,327.46464776022,333.99632772474,340.65828815182,347.45313114562,356.95032497057,364.07013256472,371.33195122039,378.73861781039,386.29301712643,393.99809806388,401.85686830172,409.8723892274,418.04779164423,426.38625992488,434.89105154177,443.56547936435,455.68978545099,464.77906877635,474.04965097839,483.50514461458,493.14924173292,502.98569917153,513.01835960126,523.2511306012],description:"Cycle of 34 thirds tempered by 1/5 Wuerschmidt comma"},temp34w6:{frequencies:[261.6255653006,267.02047390967,272.52663052146,278.06968704778,283.80368699438,289.65592453275,295.6288411546,301.72492193478,307.94670831505,314.29679425134,320.77782174252,327.39249271371,334.14356492035,341.03384719449,348.06621207862,355.14570764395,362.46906930947,369.94344613252,377.57194788125,385.35775486011,393.30411308867,401.41432870635,409.69178284295,418.13992649314,426.76227456772,435.56242170336,444.42154779224,453.58584388327,462.93911228358,472.48525217168,482.22824196207,492.17213857029,502.32108537715,512.67931193931,523.2511306012],description:"Cycle of 34 thirds tempered by 1/6 Wuerschmidt comma"},temp34w7:{frequencies:[261.6255653006,267.14659557842,272.78413659373,276.97759061533,282.82259314675,288.79093992594,294.88523549471,301.10813946365,307.46236235072,313.95067836072,320.57591524951,327.34096447962,334.24877325582,341.30235609413,348.50479124753,353.86228320674,361.3297679824,368.9548354601,376.74081403286,384.69109896591,392.80915578714,401.0985286019,409.56282802254,418.20574780595,427.03105980737,436.04260883433,442.74580331919,452.08897683944,461.62931955889,471.37098776125,481.31823237599,491.47539447856,501.84689823661,512.43727265667,523.2511306012],description:"Cycle of 34 thirds tempered by 1/7 Wuerschmidt comma"},temp34w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,276.16133434798,282.08899791039,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,352.90276052629,360.47764004221,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,441.49314144476,450.96957067185,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 34 thirds tempered by 1/8 Wuerschmidt comma"},temp34w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,281.5197407082,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,352.15826244648,359.81626391233,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,440.52130132575,450.10083737825,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 34 thirds tempered by 1/9 Wuerschmidt comma"},temp35ebsi:{frequencies:[261.6255653006,266.57889315685,271.71450319234,277.03910343536,282.55964921963,288.28335166643,294.21768457231,300.3704033182,306.74954035112,312.48255822683,318.42655208483,324.58928450704,330.97880464114,337.6034601246,344.47190142434,351.59310182482,358.97636423712,366.63132974323,373.51095055492,380.64374131787,388.03901984907,395.70644562254,403.65603146762,411.89816253905,420.4436041444,429.30351656419,438.48947534443,446.74502047858,455.30437022365,464.17870575399,473.37961532931,482.91911915131,492.80967579032,503.06420520117,513.69610107468,523.2511306012],description:"Cycle of 35 equal beating major sixths"},temp37ebs:{frequencies:[261.6255653006,266.54882370674,271.76117582243,276.81154351547,282.15846820925,287.3392230449,292.82419544994,298.13870690002,303.76528724985,309.7222634282,315.49411047005,321.60488016898,327.52574544851,333.79428377068,339.86801168664,346.29839044807,353.1063601343,359.70275861181,366.68649693083,373.45319917734,380.61724149647,387.55864668979,394.907650003,402.68818871569,410.22692643911,418.2083422233,425.94171605945,434.12919568644,442.06222705415,450.46108885682,459.35313199837,467.96883572953,477.09045247204,485.92859505436,495.28571063961,504.35203618851,513.95073426779,523.2511306012],description:"Cycle of 37 equal beating sevenths"},temp37ebt:{frequencies:[261.6255653006,266.44794669373,271.38606435347,276.44269655507,281.62068893017,286.92295259461,292.35247205526,297.91229840101,303.60556084342,309.43546158348,315.40528084,321.51837488336,327.7781831369,333.8061589736,339.9788066307,346.29959662983,352.77208770341,359.39991652139,366.18681567584,373.13659908053,380.25317623321,387.54055229398,395.00282568127,402.64419215928,410.46895395112,418.00392297279,425.71973353547,433.62072344005,441.71133574434,449.99612361773,458.47974493329,467.16697490003,476.06269518051,485.17191513214,494.49975815874,504.05146656861,513.83241864047,523.2511306012],description:"Cycle of 37 equal beating thirds"},temp3ebt:{frequencies:[261.6255653006,330.24866439584,416.02753826489,523.2511306012],description:"Cycle of 3 equal beating thirds"},temp4ebmt:{frequencies:[261.6255653006,310.36356181711,368.84915763691,439.03187262068,523.2511306012],description:"Cycle of 4 equal beating minor thirds"},temp4ebsi:{frequencies:[261.6255653006,310.92686529443,370.08842528703,441.08229727815,523.2511306012],description:"Cycle of 4 equal beating major sixths"},temp53ebs:{frequencies:[261.6255653006,264.97369574946,268.51842903659,272.2713107977,275.7058824095,279.342132921,283.19190440533,286.71515038985,290.44528277978,294.39444663109,298.00865518834,301.83509073593,305.88621462445,310.17522146598,314.10044576101,318.25616227247,322.65590013911,326.68246801001,330.94547393755,335.45880590636,339.58933056423,343.96239778214,348.59225483118,353.4939765515,357.97994689961,362.72933676467,367.75761084241,372.35940104854,377.23140801172,382.38950169412,387.11009989437,392.10789272021,397.3991578827,403.00112480292,408.12795020911,413.55582307376,419.3024201087,424.56160969567,430.12961973912,436.02458225248,441.41955172249,447.13131541518,453.17847579573,459.58072182695,465.43995070361,471.64323472325,478.21077610462,484.22127701861,490.5847168482,497.32181757346,503.48749858841,510.01522804676,516.92626488088,523.2511306012],description:"Cycle of 53 equal beating harmonic sevenths"},temp53ebsi:{frequencies:[261.6255653006,265.08815342092,268.54511416675,272.14096825888,275.73097879106,279.31515577755,283.04333763043,286.76545980208,290.48153462492,294.34691329876,298.20601137227,302.05883614112,306.06646174912,310.06757319581,314.22944103195,318.38454699407,322.53289853772,326.84792360782,331.1559371129,335.45694960827,339.93076775401,344.39731584765,348.85660497561,353.49505873963,358.12597594237,362.74936749482,367.55851619873,372.35985057275,377.35409330215,382.34021841275,387.3182413058,392.49627136254,397.66588656991,402.8271015422,408.19568270781,413.55554119639,418.90668980097,424.47283359145,430.02993471298,435.57800299537,441.34898312942,447.11058430799,453.10367443873,459.08702461554,465.06065502782,471.27428848056,477.47782740925,483.67128540638,490.11358366391,496.54541154487,502.96678854317,509.64616466331,516.31468511822,523.2511306012],description:"Cycle of 53 equal beating major sixths"},temp53ebt:{frequencies:[261.6255653006,265.06408390481,268.61942739596,272.14046995187,275.78114176924,279.3866896354,283.11473715719,286.8068186786,290.62433945466,294.40503066492,298.31417332138,302.18560037327,306.18856199636,310.15290198883,314.25193588094,318.31142144389,322.50883104059,326.66574402863,330.9638909587,335.40807143415,339.80937339101,344.36021509659,348.86714800611,353.52720940583,358.14231011275,362.91421253104,367.64007568808,372.5265022753,377.36578530136,382.3694885676,387.32491504393,392.44870495902,397.52306357866,402.76982394565,407.96596497751,413.33865052838,418.89387526617,424.39550434456,430.08405345947,435.71772111176,441.54279782575,447.31167294612,453.27655186057,459.18388087721,465.29191391782,471.34101945319,477.59564801313,483.78993007475,490.19466758193,496.53761595054,503.09606844751,509.59124455492,516.30709807412,523.2511306012],description:"Cycle of 53 equal beating thirds"},temp57ebs:{frequencies:[261.6255653006,264.8277951114,268.04955507264,271.33445958124,274.63939933433,278.00911284632,281.39937814535,284.85609135359,288.33388628378,291.8798428433,295.4474281527,299.08493440323,302.74462553584,306.42663750246,310.18081323211,313.95788745209,317.80898926922,321.68357852782,325.63410692083,329.60872876069,333.66125215256,337.73849074816,341.89564167341,346.07814569972,350.28615866377,354.57664765081,358.89330206442,363.2945606359,367.72266219717,372.23755268366,376.77997919433,381.41143316036,386.07113633698,390.82216502962,395.60217018381,400.41132814233,405.3147417445,410.24806349136,415.27807310888,420.33876095689,425.4986359826,430.68997922537,435.98307052812,441.30844296951,446.73819252663,452.20105472878,457.69723413281,463.30113726238,468.93921588924,474.68780077646,480.47144432851,486.36844238798,492.30140788993,498.35065469266,504.4367956254,510.6422225112,516.88549425379,523.2511306012],description:"Cycle of 57 equal beating harmonic sevenths"},temp59ebt:{frequencies:[261.6255653006,264.71774803536,267.84005552541,271.00645194849,274.20369404321,277.44608402629,280.72006081878,284.04026812198,287.39281927261,290.79271098314,294.22572486522,297.70721418515,301.22261902261,304.78766466692,308.38743972219,312.03804524126,315.72421513091,319.46243532331,323.23707283878,327.06501147453,330.93024062011,334.83312418563,338.79111909993,342.78767359614,346.84065928187,350.93313112856,355.08338946648,359.27407840069,363.52394351295,367.81521017702,372.16707169716,376.56132871014,381.01763522853,385.51735474883,390.08061088885,394.68832388107,399.36109834092,404.07939600279,408.86431870994,413.69585627072,418.57446131049,423.52195428502,428.51764625978,433.58387848862,438.69946807471,443.88729218006,449.12565432864,454.4379830027,459.80206875391,465.24189440938,470.73471441434,476.30509804765,481.92974808423,487.63381799831,493.39345924022,499.23442935246,505.13230099895,511.11345315981,517.15287439575,523.2511306012],description:"Cycle of 59 equal beating thirds"},temp5ebf:{frequencies:[261.6255653006,300.99242152138,345.28013476976,397.76927639746,456.81956072863,523.2511306012],description:"Cycle of 5 equal beating fifths"},temp5ebs:{frequencies:[261.6255653006,300.72264357012,345.40501873528,396.4705903526,454.83124362955,523.2511306012],description:"Cycle of 5 equal beating harmonic sevenths"},temp6:{frequencies:[261.6255653006,292.50629174609,327.17562781541,373.91502405318,418.23333786749,467.5991148023,523.2511306012],description:"Tempered wholetone scale with approximations to 5/4 (4), 7/5 (4) and 7/4 (1)"},temp65ebf:{frequencies:[261.6255653006,264.41601755103,267.24454169377,270.11165630441,273.01788702098,275.96376822181,278.903505094,281.88335012505,284.90384796088,287.96555727487,291.06903608099,294.16604397209,297.30530343106,300.48739162418,303.71289539257,306.98240612292,310.29652144782,313.60372560746,316.95605020285,320.35411162765,323.7985328567,327.28994911888,330.77408078649,334.30574717623,337.88559766085,341.51429052286,345.19248907458,348.92086961342,352.64147345074,356.41283883338,360.23565716142,364.11063345825,368.0384739541,371.95812372083,375.93124824951,379.95858022583,384.04085801267,388.17883226226,392.30817269042,396.49385281186,400.73664000181,405.03730976228,409.39665754461,413.81548025993,418.22508312451,422.69484912531,427.22559773342,431.81816208034,436.47338166162,441.11888946365,445.82778005125,450.60091414809,455.43916939942,460.34343547357,465.31460883154,470.27541574397,475.30390033467,480.4009926512,485.56762723834,490.80474851567,496.03094699932,501.32844669322,506.69822455894,512.14126217109,517.65855736571,523.2511306012],description:"Cycle of 65 equal beating fifths"},temp65ebt:{frequencies:[261.6255653006,264.43406811535,267.2034679247,270.07937559507,272.91523803531,275.86016780291,278.76409255008,281.77970028627,284.75331888701,287.84130158502,290.886287826,294.04838131756,297.16644728835,300.4044304772,303.59732911309,306.91302510559,310.18255295306,313.57782661988,316.92582314139,320.40258196387,323.83093239735,327.39113302053,330.90176198948,334.36350914498,337.95839429282,341.50322405771,345.18438591943,348.81429298672,352.58380229516,356.30082494405,360.1608038988,363.96703524466,367.91965255368,371.81723365001,375.86471396542,379.85583700975,384.00045811272,388.08736764479,392.33145942297,396.5164558179,400.86240365726,405.1478399234,409.59809307723,413.98637838791,418.31356254814,422.80716945583,427.23820566351,431.83965831621,436.37704077554,441.08892851835,445.73520856761,450.56017999004,455.31796985254,460.25874195194,465.13071889642,470.19006822446,475.1789734801,480.35974823468,485.46838574269,490.77349931217,496.0047455553,501.43718079349,506.7939752079,512.35679191473,517.84214996629,523.2511306012],description:"Cycle of 65 equal beating thirds"},temp6eb2:{frequencies:[261.6255653006,293.46010680596,329.2739659995,369.56455759223,414.89147313404,465.88425311859,523.2511306012],description:"Cycle of 6 equal beating 9/8 seconds"},temp6s:{frequencies:[261.6255653006,271.93638072959,309.96730300827,353.31693843766,402.72911708552,459.05170412301,523.2511306012],description:"Cycle of 6 tempered harmonic sevenths, 6/5 and 4/3 minimax, Op de Coul, 2002"},temp6teb:{frequencies:[261.6255653006,314.31996068356,377.55323514312,453.43316449459,544.48907971635,653.75617798246,784.8766959018],description:"Cycle of 6 equal beating 6/5's in a twelfth"},"temp7-5ebf":{frequencies:[261.6255653006,272.53310095338,288.29512120063,313.54121701986,318.29837158817,352.05202827415,359.67534615791,387.61143614087,414.35283422339,427.61576999092,475.86500581459,472.62064557223,523.2511306012],description:"7 equal beating fifths on white, 5 equal beating fifths on black"},temp7ebf:{frequencies:[261.6255653006,288.29512120063,318.29837158817,352.05202827415,387.61143614087,427.61576999092,472.62064557223,523.2511306012],description:"Cycle of 7 equal beating fifths"},temp7ebnt:{frequencies:[261.6255653006,288.84289825546,318.65722544634,351.9228541964,388.36258888271,429.02057812008,473.55803233064,523.2511306012],description:"Cycle of 7 equal beating 11/9 neutral thirds"},temp8eb3q:{frequencies:[261.6255653006,285.27029088455,311.06453578321,339.20371183191,369.9009952302,403.38894083349,439.92124473489,479.77466958441,523.2511306012],description:`Cycle of 8 equal "beating" 12/11's`},temp9ebmt:{frequencies:[261.6255653006,282.57058469242,305.18178513943,329.6176429161,355.99737593287,384.50587463168,415.28223014648,448.54214811156,484.4478959333,523.2511306012],description:"Cycle of 9 equal beating 7/6 septimal minor thirds"},tenney_11:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,523.2511306012],description:`Scale of James Tenney's "Spectrum II" for wind quintet`},tertiadia:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"Tertiadia 2048/2025 and 262144/253125 scale"},tertiadie:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,383.2405741708,408.78994578219,436.04260883433,476.27480687611,490.54793493862,523.2511306012],description:"First Tertiadie 262144/253125 and 128/125 scale"},tet3a:{frequencies:[261.6255653006,280.31310567921,313.95067836072,336.37572681506,366.27579142084,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Eight notes, two major one minor tetrad"},tetracot:{frequencies:[261.6255653006,266.81074454173,272.09868928948,277.49143626213,289.66902367154,295.4099985897,301.26475437609,307.23554606336,320.71844041089,327.07478634962,333.55710924695,340.16790585091,355.09602205939,362.13370020095,369.31085868177,376.6302618745,393.15851224787,400.95055410677,408.89702710335,417.00099192139,435.30089370336,443.92815899023,452.72640877864,461.69903182491,481.96048707062,491.51250279099,501.25383072009,523.2511306012],description:"tetracot temperament, g=176.28227, 5-limit"},"tetragam-di":{frequencies:[261.6255653006,279.06726965397,290.69507255622,290.69507255622,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,436.04260883433,457.84473927605,523.2511306012],description:"Tetragam Dia2"},"tetragam-enh":{frequencies:[261.6255653006,271.31540105247,279.06726965397,279.06726965397,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,418.60090448096,418.60090448096,457.84473927605,523.2511306012],description:"Tetragam Enharm."},"tetragam-hex":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Tetragam/Hexgam"},"tetragam-py":{frequencies:[261.6255653006,275.62199471997,294.32876096318,294.32876096318,331.11985608357,348.83408706747,372.50983809402,392.4383479509,413.43299207996,441.49314144476,441.49314144476,465.11211608996,523.2511306012],description:"Tetragam Pyth."},"tetragam-slpe":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,279.06726965397,345.21700307457,348.83408706747,396.55020354877,455.51656649021,392.4383479509,455.51656649021,418.60090448096,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-slpe2":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,286.29520819723,345.21700307457,313.29104303136,396.55020354877,396.55020354877,387.04559340587,455.51656649021,423.54155496477,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-sp":{frequencies:[261.6255653006,271.31540105247,271.31540105247,271.31540105247,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,406.97310157871,406.97310157871,457.84473927605,523.2511306012],description:"Tetragam Septimal"},"tetragam-un":{frequencies:[261.6255653006,269.80136421624,285.40970760065,285.40970760065,319.76457981184,348.83408706747,359.73515228832,392.4383479509,404.70204632437,428.11456140098,428.11456140098,479.64686971777,523.2511306012],description:"Tetragam Undecimal"},tetragam13:{frequencies:[261.6255653006,275.95382006469,307.00724256551,307.00724256551,341.55514486295,341.55514486295,400.80167111126,400.80167111126,445.90437572008,445.90437572008,445.90437572008,496.08254310677,523.2511306012],description:"Tetragam (13-tET)"},tetragam5:{frequencies:[261.6255653006,300.52885648597,300.52885648597,300.52885648597,300.52885648597,345.21700307457,345.21700307457,396.55020354877,455.51656649021,455.51656649021,455.51656649021,455.51656649021,523.2511306012],description:"Tetragam (5-tET)"},tetragam7:{frequencies:[261.6255653006,288.85811466493,288.85811466493,288.85811466493,318.92511007349,352.12195684808,352.12195684808,388.77403176757,429.24143792307,429.24143792307,429.24143792307,473.92081401802,523.2511306012],description:"Tetragam (7-tET)"},tetragam8:{frequencies:[261.6255653006,285.30470202322,311.12698372208,311.12698372208,339.28638158975,339.28638158975,403.48177901006,403.48177901006,440,440,440,440,523.2511306012],description:"Tetragam (8-tET)"},tetragam9a:{frequencies:[261.6255653006,282.57118533961,305.19387818096,305.19387818096,329.62755691287,356.01738450312,415.30469757995,415.30469757995,448.55379686399,448.55379686399,448.55379686399,484.46508327871,523.2511306012],description:"Tetragam (9-tET) A"},tetragam9b:{frequencies:[261.6255653006,282.57118533961,282.57118533961,282.57118533961,305.19387818096,305.19387818096,384.52019141924,384.52019141924,415.30469757995,415.30469757995,415.30469757995,448.55379686399,523.2511306012],description:"Tetragam (9-tET) B"},tetraphonic_31:{frequencies:[261.6255653006,266.96486255163,272.52663052146,278.32506946872,284.37561445717,290.69507255622,297.30177875068,304.21577360535,311.45900631024,319.05556743976,327.03195662575,333.99008336247,341.25073734861,348.83408706747,356.76213450082,365.05892832642,373.75080757229,382.86668092771,392.4383479509,400.61414686654,409.13785211902,418.03215325205,427.32175665765,437.0336147635,447.19718719986,457.84473927605,467.58611670746,477.75103228805,488.36772189445,499.46698830115,511.08249965699,523.2511306012],description:"31-tone Tetraphonic Cycle, conjunctive form on 5/4, 6/5, 7/6 and 8/7"},tetratriad:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"4:5:6 Tetratriadic scale"},tetratriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"3:5:9 Tetratriadic scale"},tetratriad2:{frequencies:[261.6255653006,296.75121990114,305.22982618403,356.10146388137,373.75080757229,415.4517078616,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"3:5:7 Tetratriadic scale"},thailand:{frequencies:[261.6255653006,281.86483947605,307.02089761314,350.84574289301,397.92692612688,408.40584780369,474.03826620294,539.82938999168],description:"Observed ranat tuning from Thailand, Helmholtz/Ellis p. 518, nr.85"},thailand2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,356.77227917518,391.76907592069,435.19747628762,477.88722128969,525.37110555681],description:"Observed ranat t'hong tuning, Helmholtz/Ellis p. 518"},thailand3:{frequencies:[261.6255653006,293.32570896007,322.47117131255,354.92237405774,396.55020354877,437.46578647972,488.21056770985,538.58355905405],description:"Observed tak'hay tuning. Helmholtz, p. 518"},thailand4:{frequencies:[261.6255653006,281.88044777549,304.38587215019,332.5176539627,392.71966479735,416.35036198375,461.923848369,523.2511306012,563.76089555097,608.77174430039,665.59794246809,786.00196746963,831.57545378481,924.97296635309,1046.5022612024,1127.52179110194],description:"Khong mon (bronze percussion vessels) tuning, Gemeentemuseum Den Haag 1/1=465"},thirds:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,502.32108537715,523.2511306012],description:"Major and minor thirds parallellogram"},thomas:{frequencies:[261.6255653006,280.80530480292,294.66217084622,313.95044496966,332.05645032639,350.21604710412,374.62015588545,391.99543598175,420.73257541073,441.99197952365,468.79922683914,499.49209883845,523.2511306012],description:"Tuning of the Thomas/Philpott organ, Gereformeerde Kerk, St. Jansklooster"},tiby1:{frequencies:[261.6255653006,295.66718139806,337.56154978455,348.04364484358,393.32961502355,444.50800708553,507.49227916989,523.2511306012],description:"Tiby's 1st Byzantine Liturgical genus, 12 + 13 + 3 parts"},tiby2:{frequencies:[261.6255653006,295.66718139806,311.12698372208,348.04364484358,393.32961502355,444.50800708553,467.75037672729,523.2511306012],description:"Tiby's second Byzantine Liturgical genus, 12 + 5 + 11 parts"},tiby3:{frequencies:[261.6255653006,295.66718139806,324.07484847125,348.04364484358,393.32961502355,444.50800708553,487.21628271135,523.2511306012],description:"Tiby's third Byzantine Liturgical genus, 12 + 9 + 7 parts"},tiby4:{frequencies:[261.6255653006,286.76251801126,324.07484847125,348.04364484358,393.32961502355,431.12067692221,487.21628271135,523.2511306012],description:"Tiby's fourth Byzantine Liturgical genus, 9 + 12 + 7 parts"},todi_av:{frequencies:[261.6255653006,276.38325105256,310.05056613125,371.27895029721,392.44854854484,413.39000965417,495.88429116026,523.2511306012],description:"Average of 8 interpretations of raga Todi, in B. Bel, 1988."},tonos15_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,767.43499154843,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-15"},tonos17_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,738.70747849581,784.8766959018,897.00193817349,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-17"},tonos19_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,385.55346465352,406.97310157871,457.84473927605,523.2511306012,542.63080210495,563.50121757052,610.45965236807,665.95598440153,771.10692930703,813.94620315742,915.6894785521,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-19"},tonos21_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,398.6675280771,440.63253103259,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,797.33505615421,881.26506206518,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-21"},tonos23_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,409.50088481833,448.50096908674,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,819.00176963666,897.00193817349,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-23"},tonos25_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,753.48162806573,856.22912280196,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-25"},tonos27_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,387.59343007496,436.04260883433,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,775.18686014993,872.08521766867,996.66882019276,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-27"},tonos29_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,396.94913355953,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,793.89826711906,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-29"},tonos31_pis:{frequencies:[261.6255653006,273.51763645063,300.86940009569,334.29933343966,388.21858076863,429.81342870813,462.87600014722,501.44900015948,523.2511306012,547.03527290125,601.73880019138,668.59866687931,776.43716153726,859.62685741626,925.75200029443,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31"},tonos31_pis2:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,405.0976494977,448.50096908674,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,810.19529899541,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31B"},tonos33_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-33"},top31:{frequencies:[261.6255653006,267.49189720203,273.48976766293,279.62212612306,285.89198815637,292.30243695391,298.85662483994,305.55777482212,312.40918217641,319.41421606749,326.57632120555,333.89901954025,341.38591199258,349.04068022565,358.99452880887,367.04412845091,375.2742212459,383.6888543241,392.29216556304,401.08838562235,410.08184002413,419.27695128006,428.67824106611,438.29033244612,448.11795214515,458.16593287385,468.4392157049,478.94285250284,489.68200840824,500.66196437769,511.88811978069,523.36599505479],description:"Top temperament, 11-limit, {225/224, 385/384, 1331/1323}, Gene Ward Smith"},trab19:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,5,45,75,225}"},trab19a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,9,15,675}"},tranh:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Bac Dan Tranh scale, Vietnam"},tranh2:{frequencies:[261.6255653006,290.69507255622,307.79478270659,392.4383479509,436.04260883433,523.2511306012],description:"Dan Ca Dan Tranh Scale"},tranh3:{frequencies:[261.6255653006,317.68818643644,348.83408706747,392.4383479509,473.41768959156,476.53227965466,523.2511306012],description:"Sa Mac Dan Tranh scale"},"tri12-1":{frequencies:[261.6255653006,264.29521392612,275.21650375777,319.76457981184,323.02748368748,332.97799220076,336.37572681506,406.97310157871,411.12588832951,428.11456140098,432.48307733364,502.48719684718,523.2511306012],description:"12-tone Tritriadic of 7:9:11"},"tri12-2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,504.56359022259,523.2511306012],description:"12-tone Tritriadic of 6:7:9"},"tri19-1":{frequencies:[261.6255653006,266.96486255163,269.10058145205,305.22982618403,311.45900631024,313.95067836072,320.35783506196,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,427.32175665765,436.04260883433,439.53094970501,448.50096908674,508.71637697339,512.78610798918,523.2511306012],description:"3:5:7 Tritriadic 19-Tone Matrix"},"tri19-2":{frequencies:[261.6255653006,282.55561052465,290.69507255622,294.32876096318,313.95067836072,322.99452506247,327.03195662575,348.83408706747,353.19451315581,363.36884069528,376.74081403286,387.59343007496,392.4383479509,418.60090448096,423.83341578697,436.04260883433,465.11211608996,470.92601754108,484.4917875937,523.2511306012],description:"3:5:9 Tritriadic 19-Tone Matrix"},"tri19-3":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"4:5:6 Tritriadic 19-Tone Matrix"},"tri19-4":{frequencies:[261.6255653006,264.89588486686,290.69507255622,294.32876096318,322.99452506247,327.03195662575,331.11985608357,334.88072358477,363.36884069528,367.91095120397,372.08969287196,376.74081403286,408.78994578219,413.43299207996,418.60090448096,423.83341578697,465.11211608996,470.92601754108,516.79124009995,523.2511306012],description:"4:5:9 Tritriadic 19-Tone Matrix"},"tri19-5":{frequencies:[261.6255653006,266.96486255163,284.8811711051,290.69507255622,302.73815413355,316.53463456122,322.99452506247,329.64821227876,336.37572681506,366.27579142084,373.75080757229,406.97310157871,415.27867508032,423.83341578697,432.48307733364,452.19233508746,470.92601754108,480.53675259294,512.78610798918,523.2511306012],description:"5:7:9 Tritriadic 19-Tone Matrix"},"tri19-6":{frequencies:[261.6255653006,267.07609791103,294.32876096318,299.00064605783,305.22982618403,336.37572681506,341.71502406609,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,400.61414686654,406.97310157871,448.50096908674,457.84473927605,465.11211608996,512.57253609913,523.2511306012],description:"6:7:8 Tritriadic 19-Tone Matrix"},"tri19-7":{frequencies:[261.6255653006,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,316.53463456122,336.37572681506,348.83408706747,356.10146388137,384.42940207435,392.4383479509,406.97310157871,432.48307733364,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,523.2511306012],description:"6:7:9 Tritriadic 19-Tone Matrix"},"tri19-8":{frequencies:[261.6255653006,264.29521392612,272.43653907335,275.21650375777,316.53463456122,319.76457981184,323.02748368748,332.97799220076,336.37572681506,350.27555023717,390.82337532559,406.97310157871,411.12588832951,423.79017189188,428.11456140098,432.48307733364,497.4115685962,502.48719684718,517.96576564563,523.2511306012],description:"7:9:11 Tritriadic 19-Tone Matrix"},"tri19-9":{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,341.71502406609,366.27579142084,373.75080757229,400.61414686654,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"4:5:7 Tritriadic 19-Tone Matrix"},triang11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"11-limit triangular diamond lattice with 64/63 intervals removed"},triaphonic_12:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,367.19377586049,387.59343007496,410.39304360878,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Triaphonic Cycle, conjunctive form on 4/3, 5/4 and 6/5"},triaphonic_17:{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,390.69417751556,406.97310157871,422.62591317789,439.53094970501,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"17-tone Triaphonic Cycle, conjunctive form on 4/3, 7/6 and 9/7"},trichord7:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Trichordal undecatonic, 7-limit"},tricot:{frequencies:[261.6255653006,264.94025538413,268.70564228797,272.11003565477,275.55755973666,279.4738436282,283.01466417842,286.6003471482,290.673570175,294.35628843049,298.08566525814,302.32211998602,306.15242072385,310.03124984507,314.43747949204,318.42127516569,322.45554578164,327.03835025925,331.18179578139,335.37773516927,339.62683737367,344.45368576554,348.81777463097,353.23715677741,358.25743790514,362.79641682209,367.39290067029,372.61436622199,377.33523951767,382.11592657559,387.54663888312,392.45669803325,397.4289679423,403.0773124301,408.18413893183,413.35566924724,419.23036738005,424.541846554,429.92062250389,436.03074525334,441.55507841911,447.14940523431,453.50438708518,459.25010687752,465.06861996272,470.9608512551,477.65424916833,483.70593529179,489.8342966599,496.79592520903,503.09012862502,509.46407999504,516.70469117363,523.2511306012],description:"Tricot temperament, g=565.988015, 5-limit"},tritriad:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Tritriadic scale of the 10:12:15 triad, natural minor mode"},tritriad10:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,366.27579142084,392.4383479509,488.36772189445,523.2511306012],description:"Tritriadic scale of the 10:14:15 triad"},tritriad11:{frequencies:[261.6255653006,309.19384990071,356.76213450082,383.71749577421,421.62797713733,453.48431318771,486.49381977384,523.2511306012],description:"Tritriadic scale of the 11:13:15 triad"},tritriad13:{frequencies:[261.6255653006,294.32876096318,340.11323489078,348.83408706747,392.4383479509,453.48431318771,510.16985233617,523.2511306012],description:"Tritriadic scale of the 10:13:15 triad"},tritriad14:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Tritriadic scale of the 14:18:21 triad"},tritriad18:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,426.35277308246,479.64686971777,523.2511306012],description:"Tritriadic scale of the 18:22:27 triad"},tritriad22:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Tritriadic scale of the 22:27:33 triad"},tritriad26:{frequencies:[261.6255653006,294.32876096318,301.87565226992,348.83408706747,392.4383479509,402.50086969323,452.81347840488,523.2511306012],description:"Tritriadic scale of the 26:30:39 triad"},tritriad3:{frequencies:[261.6255653006,305.22982618403,356.10146388137,373.75080757229,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Tritriadic scale of the 3:5:7 triad. Possibly Mathews's 3.5.7a"},tritriad32:{frequencies:[261.6255653006,294.32876096318,322.00069575458,348.83408706747,392.4383479509,429.33426100611,483.00104363188,523.2511306012],description:"Tritriadic scale of the 26:32:39 triad"},tritriad3c:{frequencies:[261.6255653006,305.22982618403,366.27579142084,373.75080757229,427.32175665765,436.04260883433,512.78610798918,523.2511306012],description:"From 1/1 7/6 7/5, a variant of the 3.5.7 triad"},tritriad3d:{frequencies:[261.6255653006,305.22982618403,313.95067836072,363.36884069528,366.27579142084,436.04260883433,508.71637697339,523.2511306012],description:"From 1/1 7/6 5/3, a variant of the 3.5.7 triad"},tritriad5:{frequencies:[261.6255653006,290.69507255622,329.64821227876,366.27579142084,406.97310157871,423.83341578697,470.92601754108,523.2511306012],description:"Tritriadic scale of the 5:7:9 triad. Possibly Mathews's 5.7.9a."},tritriad68:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Tritriadic scale of the 6:7:8 triad"},tritriad68i:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,398.6675280771,448.50096908674,465.11211608996,523.2511306012],description:"Tritriadic scale of the subharmonic 6:7:8 triad"},tritriad69:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Tritriadic scale of the 6:7:9 triad, septimal natural minor"},tritriad7:{frequencies:[261.6255653006,264.29521392612,323.02748368748,332.97799220076,336.37572681506,411.12588832951,428.11456140098,523.2511306012],description:"Tritriadic scale of the 7:9:11 triad"},tritriad9:{frequencies:[261.6255653006,272.93037367779,319.76457981184,362.25078272391,377.90359432309,442.75095666255,461.88217083933,523.2511306012],description:"Tritriadic scale of the 9:11:13 triad"},tsjerepnin:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,470.92601754108,490.54793493862,523.2511306012],description:"Scale from Ivan Tsjerepnin's Santur Opera (1977) & suite from it Santur Live!"},tsuda13:{frequencies:[261.6255653006,281.75060878526,283.42769574232,322.00069575458,340.11323489078,362.25078272391,377.90359432309,402.50086969323,425.14154361347,442.75095666255,485.87604984397,518.26778650024,523.2511306012],description:"Mayumi Tsuda's Harmonic-13 scale. 1/1=440 Hz."},tuneable3:{frequencies:[36.70809598968,41.95210970249,42.82611198796,43.59086398774,44.04971518762,44.86545065405,45.8851199871,46.71939489596,47.1961234153,47.72052478658,48.94412798624,49.55592958607,50.47363198581,51.39133438555,52.00313598538,52.44013712811,53.02280531843,53.39359416681,55.06214398452,57.10148265061,57.68415084093,58.73295358349,59.65065598323,61.1801599828,62.40376318246,62.92816455374,64.23916798194,66.07457278142,66.74199270851,67.29817598108,68.17217826655,68.82767998065,70.35718398022,73.41619197936,79.53420797764,80.7578111773,82.59321597678,85.65222397592,87.18172797549,88.09943037523,89.14823311779,89.73090130811,90.10169015649,91.7702399742,94.39224683061,95.44104957317,96.35875197291,97.88825597248,100.94726397162,102.7826687711,104.00627197076,104.88027425623,105.53577597033,110.12428796904,114.20296530123,114.71279996775,115.36830168185,116.24230396732,117.46590716698,119.30131196646,120.61231539466,122.3603199656,123.88982396517,124.80752636491,125.85632910747,128.47833596388,132.14914556285,134.59635196216,137.6553599613,139.49076476078,140.71436796044,141.58837024591,146.83238395872,152.950399957,154.17400315666,156.00940795614,159.06841595528,161.51562235459,165.18643195356,168.85724155253,171.30444795184,174.36345595098,176.19886075046,183.5404799484,190.88209914634,192.71750394582,195.77651194496,201.89452794324,205.56533754221,208.01254394152,211.07155194066,220.24857593808,229.4255999355,232.48460793464,238.60262393292,244.7206399312,247.77964793034,256.95667192776,269.19270392432,275.3107199226,281.42873592088,293.66476791744],description:"Marc Sabat, 3 octaves of intervals tuneable by ear"},tuners1:{frequencies:[261.6255653006,276.50456653385,293.15590636358,311.0676370396,328.627540632,349.28088891463,369.11955599459,391.76814585061,414.75684959346,439.06365754828,466.60145532616,492.6062100846,523.2511306012],description:"The Tuner's Guide well temperament no. 1 (1840)"},tuners2:{frequencies:[261.6255653006,276.9861853325,293.55936848273,311.27971878774,329.48489606404,349.42029142443,369.90111701824,391.99869425741,415.03962525779,439.89939957166,466.4799232208,493.78769382322,523.2511306012],description:"The Tuner's Guide well temperament no. 2 (1840)"},tuners3:{frequencies:[261.6255653006,276.9180796764,293.64050032496,311.25753558078,329.38199580693,349.20116137147,369.59117881045,391.8877401954,415.37711930697,439.91014033466,466.33569310799,493.52238512763,523.2511306012],description:"The Tuner's Guide well temperament no. 3 (1840)"},turkish:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Turkish, 5-limit from Palmer on a Turkish music record, harmonic minor inverse"},turkish_24:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Ra'uf Yekta, 24-tone Pythagorean Turkish Theoretical Gamut, 1/1=D (perde yegah) at 294 Hz"},turkish_24a:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,344.52749339997,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,459.36999119996,465.11211608996,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:"Turkish gamut with schismatic simplifications"},turkish_41:{frequencies:[261.6255653006,266.80864394988,272.09440643071,275.67629620338,281.13773466533,286.70737164501,290.48162858661,294.30556868769,300.13607443832,306.08208692954,310.11139540064,316.25503135793,322.52037740267,326.76608188608,333.2396629384,339.84149442859,344.31521657963,348.8478314504,355.75887527351,362.80683626646,367.58287746967,374.8650823332,382.29155536296,387.32409620162,392.42288612931,400.19720009986,408.12552912594,413.49815209867,421.6899870258,430.04411333507,435.70527569249,441.44096240275,450.1863739015,459.10504388656,465.14876849982,474.36385666592,483.76150545705,490.12981126508,499.83980314828,509.74215733443,516.45247616827,523.2511306012],description:"Abd\xEF\xBF\xBDlkadir T\xEF\xBF\xBDre and M. Ekrem Karadeniz theoretical Turkish gamut"},turkish_41a:{frequencies:[261.6255653006,268.5590565112,272.09440643071,275.67629620338,279.3053384865,286.70737164501,290.48162858661,294.30556868769,298.17984938441,306.08208692954,310.11139540064,314.19374626607,322.52037740267,326.76608188608,335.42589979828,339.84149442859,344.31521657963,348.8478314504,353.4401143131,362.80683626646,367.58287746967,377.32440283229,382.29155536296,387.32409620162,392.42288612931,402.82271318249,408.12552912594,413.49815209867,424.45650702809,430.04411333507,435.70527569249,441.44096240275,453.1398459935,459.10504388656,465.14876849982,477.47594368525,483.76150545705,490.12981126508,503.11902634639,509.74215733443,516.45247616827,523.2511306012],description:"Karadeniz's theoretical Turkish gamut, quantized to subset of 53-tET"},turkish_aeu:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Arel-Ezgi-Uzdilek (AEU) 24 tone theoretical system"},turkish_bagl:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,311.64221749042,321.08592105074,331.11985608357,348.83408706747,369.35373924791,380.54627680087,392.4383479509,415.52295665389,428.11456140098,441.49314144476,465.11211608996,492.47165233054,507.3950357345,523.2511306012],description:'Ratios of the 17 frets on the neck of "Baglama" ("saz") according to Yal\xEF\xBF\xBD\xEF\xBF\xBDn Tura'},two29:{frequencies:[261.6255653006,265.43099677612,267.95417262175,271.85165581044,274.43586616969,278.42762776199,281.0743490329,285.16266958193,287.87341387594,292.06062910037,294.83694510625,299.12544722478,301.96892109338,306.36116019141,309.2734164419,313.77190187131,316.75460431924,321.36190613206,324.41675883995,329.13550925662,332.26425750751,337.09715242073,340.3015837153,345.25138423021,348.53332930799,353.60286331966,356.96419720496,362.15636101402,365.59900408717,370.91676405444,374.44268531179,379.88907958456,383.50028913155,389.07842928561,392.77699240278,398.49006531303,402.2780950448,408.12936467525,412.00902517967,418.00183444819,421.97534223334,428.1131149215,432.1827401118,438.46898282094,442.63705045414,449.07535460876,453.34424596425,459.9382898638,464.31044382305,471.06399474345,475.54190918343,482.45882552933,487.04505874954,494.12929225872,498.82646444278,506.0820624438,510.89285715645,518.32396488098,523.2511306012],description:"Two 29-tET scales 25 cents shifted, many near just intervals"},two29a:{frequencies:[261.6255653006,264.02813680074,267.95417262175,270.41486126945,274.43586616969,276.95607779319,281.0743490329,283.65552346679,287.87341387594,290.51702578379,294.83694510625,297.54450482308,301.96892109338,304.74197548856,309.2734164419,312.11354980287,316.75460431924,319.66343925668,324.41675883995,327.39595721478,332.26425750751,335.31552138031,340.3015837153,343.42665631876,348.53332930799,351.73399604284,356.96419720496,360.24228665998,365.59900408717,368.95638908389,374.44268531179,377.88128181162,383.50028913155,387.02206376789,392.77699240278,396.38395721814,402.2780950448,405.97231075214,412.00902517967,415.79260233969,421.97534223334,425.85044246025,432.1827401118,436.15157730833,442.63705045414,446.70189207635,453.34424596425,457.50741431695,464.31044382305,468.5743173866,475.54190918343,479.90892674463,487.04505874954,491.51771254425,498.82646444278,503.40730976502,510.89285715645,515.58451111167,523.2511306012],description:"Two 29-tET scales 15.826 cents shifted, 13-limit chords, Mystery temperament, Gene Ward Smith"},xenakis_chrom:{frequencies:[261.6255653006,274.52698453615,329.62755691287,349.22823143301,391.99543598175,411.32572372413,493.88330125613,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 5 + 19 + 6 parts"},xenakis_diat:{frequencies:[261.6255653006,293.66476791741,326.46944327063,349.22823143301,391.99543598175,440,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 12 + 11 + 7 parts"},xenakis_schrom:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 7 + 16 + 7 parts"},xenoga24:{frequencies:[261.6255653006,265.7783520514,279.38237857051,283.8170195002,294.32876096318,299.00064605783,310.07474405997,314.99656539426,331.11985608357,336.37572681506,348.83408706747,354.37113606854,372.50983809402,378.42269266694,392.4383479509,398.6675280771,419.07356785577,425.72552925031,441.49314144476,448.50096908674,465.11211608996,472.49484809138,496.67978412536,504.56359022259,523.2511306012],description:"M. Schulter, 3+7 ratios Xeno-Gothic adaptive tuning (keyboards 64:63 apart)"},xylophone2:{frequencies:[261.6255653006,295.19538981304,332.68808325276,388.83826257328,446.65787257783,506.59641128799,527.19506190947,579.57827742703,633.13077520476,751.1860077911,842.69088701475],description:"African Yaswa xylophones (idiophone; calbash resonators with membrane)"},xylophone3:{frequencies:[261.6255653006,292.47977325983,348.01999353916,392.4383479509,442.29334161825,523.2511306012],description:"African Banyoro xylophone (idiophone; loose log)"},xylophone4:{frequencies:[261.6255653006,281.70207497315,314.1971709147,349.63190883464,391.76907592069,436.9606979923,505.71930677521,568.9637969584,597.94115990992,660.7800775993,716.43551549302],description:"African Bapare xylophone (idiophone, loose-log)"},zalzal:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,465.11211608996,523.2511306012],description:"Tuning of popular flute by Al Farabi & Zalzal. First tetrachord is modern Rast"},zalzal2:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,387.59343007496,419.89288258121,465.11211608996,523.2511306012],description:"Zalzal's Scale, a medieval Islamic with Ditone Diatonic & 10/9 x 13/12 x 72/65"},zarlino:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Ptolemy's Intense Diatonic Systonon, also Zarlino's scale"},zarlino2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"16-note choice system of Zarlino, Sopplimenti musicali (1588)"},zartehijaz1:{frequencies:[261.6255653006,280.55696721076,336.07142343876,350.07440004945,375.4060213132,393.89732161404,446.43551156053,468.42549744394,502.32108537715,523.2511306012],description:"Scale from Zarlino temperament extraordinaire -- lower Hijaz tetrachord"},zesster_a:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Harmonic six-star, group A, from Fokker"},zesster_b:{frequencies:[261.6255653006,293.02063313667,299.00064605783,334.88072358477,366.27579142084,418.60090448096,457.84473927605,478.40103369253,523.2511306012],description:"Harmonic six-star, group B, from Fokker"},zesster_c:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,398.6675280771,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Harmonic six-star, group C on Eb, from Fokker"},zesster_mix:{frequencies:[261.6255653006,274.70684356563,279.06726965397,293.02063313667,299.00064605783,313.95067836072,334.88072358477,348.83408706747,358.80077526939,366.27579142084,392.4383479509,418.60090448096,457.84473927605,478.40103369253,488.36772189445,502.32108537715,523.2511306012],description:"Harmonic six-star, groups A, B and C mixed, from Fokker"},zest24:{frequencies:[261.6255653006,269.33468959023,272.52663052146,280.55696721076,292.24684137387,300.8582598368,308.87634556583,317.97777315513,326.45210604021,336.07142343876,350.07440004945,360.38977980792,364.66083404534,375.4060213132,391.04793957621,402.57065589001,410.30971075781,422.39999923493,436.81711699543,449.68847932918,465.03699205118,478.73988827571,487.94322738789,502.32108537715,523.2511306012],description:"Zarlino Extraordinaire Spectrum Temperament (two circles at ~50.28c apart)"},zir_bouzourk:{frequencies:[261.6255653006,281.75060878526,305.22982618403,313.95067836072,353.19451315581,392.4383479509,523.2511306012],description:"Zirafkend Bouzourk (IG #3, DF #9), from both Rouanet and Safi al-Din"},zwolle:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Henri Arnaut De Zwolle. Pythagorean on G flat."},zwolle2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.68386704488,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,467.04206359353,489.02683710225,523.2511306012],description:"Henri Arnaut De Zwolle's modified meantone tuning (c. 1440)"},yarman12:{frequencies:[261.6255653006,283.42769574232,294.32876096318,309.19384990071,332.97799220076,348.83408706747,377.90359432309,392.4383479509,411.12588832951,442.75095666255,465.11211608996,499.46698830115,523.2511306012],description:"Detempered Yarman 13-limit, [<1 1 -20 -6 -3 -1|, <0 1 38 15 11 8|]"},yarman12_80:{frequencies:[261.6255653006,282.84340331238,295.36595061166,319.3201344739,333.45764463229,348.2210758395,376.46181130035,393.12919962609,425.01198472693,443.82887286778,479.82340237272,501.06699929295,523.2511306012],description:"Ozan Yarman MOS, 80-et version"},yarman17:{frequencies:[261.6255653006,274.08392555301,283.42769574232,294.32876096318,309.19384990071,322.00069575458,332.97799220076,348.83408706747,362.25078272391,377.90359432309,392.4383479509,411.12588832951,425.14154361347,442.75095666255,465.11211608996,485.87604984397,499.46698830115,523.2511306012],description:"80-et commas 13-limit detempering of a chain of 16 fifths"},"yarman_ney-ahengs":{frequencies:[261.6255653006,275.39533189537,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Well Temperament for piano by Ozan Yarman from Ney Ahengs"},yasser_6:{frequencies:[261.6255653006,291.88463270656,325.64340264099,363.30663963964,405.32593044476,452.20508247496,523.2511306012],description:"Yasser Hexad, 6 of 19 as whole tone scale"},yasser_diat:{frequencies:[261.6255653006,281.42815779395,291.88463270656,313.97755176024,325.64340264099,350.29154279212,376.80531512858,390.80553229045,420.38583225541,436.00528786292,469.00678383895,486.43275040712,523.2511306012],description:"Yasser's Supra-Diatonic, the flat notes are V,W,X,Y,and Z"},yasser_ji:{frequencies:[261.6255653006,282.64904822654,294.32876096318,304.39128270551,327.03195662575,347.87575166344,359.73515228832,391.36022062136,425.14154361347,434.84468957929,457.84473927605,478.32915853722,523.2511306012],description:"Yasser's just scale, 2 Yasser hexads, 121/91 apart"},yekta:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rauf Yekta's 12-tone tuning suggested in 1922 Lavignac Music Encyclopedia"},"young-g":{frequencies:[261.6255653006,299.07507698093,319.76457981184,341.88537054616,390.82337532559,446.76650366117,477.67301428683,510.71739232152,583.82257301724,667.39198333921,713.56092257662,762.92356430953,872.13001648254,996.96833978235,1065.93668681199,1139.67601990796,1302.81150610354,1489.29848625885,1592.32474578757,1702.47910946196,1946.17475603251,2224.75468143463,2378.65811671778,2543.20970830682,2907.24890901465,3323.39919648924,3553.30434397593,3799.11599765247,4342.92768045015],description:"Gayle Young's Harmonium, see PNM 26(2): 204-212 (1988)"},"young-lm_guitar":{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"LaMonte Young, Tuning of For Guitar '58. 1/1 March '92, inv.of Mersenne lute 1"},"young-lm_piano":{frequencies:[261.6255653006,289.72987407313,294.32876096318,300.46061014991,343.38355445704,338.01818641865,386.30649876417,392.4383479509,400.61414686654,457.84473927605,450.69091522486,515.07533168556,523.2511306012],description:"LaMonte Young's Well-Tempered Piano"},"young-w10":{frequencies:[261.6255653006,277.18263097687,302.26980244078,320.24370022528,349.22823143301,369.99442271164,391.99543598175,427.47405410759,452.89298412314,493.88330125613,523.2511306012],description:"William Lyman Young 10 out of 24-tET (1961)"},"young-w14":{frequencies:[261.6255653006,277.18263097687,293.66476791741,302.26980244078,320.24370022528,339.28638158975,359.46139971304,369.99442271164,391.99543598175,415.30469757995,427.47405410759,452.89298412314,479.82340237272,508.3551866238,523.2511306012],description:"William Lyman Young 14 out of 24-tET (1961)"},"young-wt":{frequencies:[261.6255653006,285.40970760065,309.19384990071,348.83408706747,392.4383479509,428.11456140098,463.79077485106,523.2511306012],description:'William Lyman Young "exquisite 3/4 tone Hellenic Lyre" dorian'},young:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,391.5530240856,413.43299207996,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"Thomas Young well temperament (1807), also Luigi Malerbi nr.2 (1794)"},young2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.22823143301,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.65745674141,523.2511306012],description:"Thomas Young well temperament no.2 (1799)"},yugo_bagpipe:{frequencies:[261.6255653006,277.02257024271,294.00421879736,322.47117131255,341.84370465044,381.9375744369,404.41509766528,430.1988069325,452.63145841613,463.74664903953,478.99265177484,502.22604835608,523.2511306012],description:"Yugoslavian Bagpipe"},yves:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:`St Yves's scale II from Jocelyn Godwin, "Music and the Occult", 1995.`},saba_sup:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular version of maqam Sab"},sabagh:{frequencies:[261.6255653006,275.67629620338,279.3053384865,286.70737164501,294.30556868769,310.11139540064,314.19374626607,322.52037740267,326.76608188608,331.06767743197,348.8478314504,362.80683626646,367.58287746967,372.42178901277,392.42288612931,413.49815209867,418.94150105041,430.04411333507,441.44096240275,465.14876849982,471.27205084813,483.76150545705,490.12981126508,496.58195036371,523.2511306012],description:"Twfiq Al-Sabagh, Arabic master musical scale in 53-tET (1954)"},sabbagh:{frequencies:[261.6255653006,294.30556868769,321.46759848648,348.8478314504,392.42288612931,428.64035280622,465.14876849982,523.2511306012],description:"Tawfiq as-Sabbagh, a composer from Syria. 1/1=G"},safi_diat:{frequencies:[261.6255653006,276.16031892841,305.22982618403,348.83408706747,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:"Safi al-Din's Diatonic, also the strong form of Avicenna's 8/7 diatonic"},safi_diat2:{frequencies:[261.6255653006,283.79722337692,310.07474405997,348.83408706747,392.4383479509,425.69583506538,465.11211608996,523.2511306012],description:"Safi al-Din's 2nd Diatonic, a 3/4 tone diatonic like Ptolemy's Equable Diatonic"},safi_major:{frequencies:[261.6255653006,281.75060878526,322.00069575458,348.83408706747,375.66747838035,392.4383479509,523.2511306012],description:"Singular Major (DF #6), from Safi al-Din, strong 32/27 chromatic"},salinas_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:`Salinas' enharmonic tuning for his 19-tone instr. "instrumentum imperfectum"`},salinas_24:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:'Salinas enharmonic system "instrumentum perfectum". Subset of Mersenne'},salinas_enh:{frequencies:[261.6255653006,272.52663052146,279.06726965397,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Salinas's and Euler's enharmonic"},salunding:{frequencies:[261.6255653006,282.38958039978,310.76686573877,390.36201910543,419.43149305958,523.2511306012],description:"Gamelan slunding, Kengetan, South-Bali. 1/1=378 Hz"},sankey:{frequencies:[261.6255653006,274.88665260982,292.54735824399,309.58527581215,327.03195662575,348.83408706747,366.73895666255,391.24894371175,412.31687950427,437.13741259348,464.79252184829,489.99465727995,523.2511306012],description:"John Sankey's Scarlatti tuning, personal evaluation based on d'Alembert's"},santur1:{frequencies:[261.6255653006,282.02765077995,319.3201344739,347.21689301951,376.46192220133,427.47393558663,475.68393915562,504.55222794679,523.2511306012],description:"Persian santur tuning. 1/1=E"},santur2:{frequencies:[261.6255653006,281.2143451833,317.48098583281,345.21700307457,375.37611551499,423.78627283082,475.68393915562,498.18106573801,523.2511306012],description:"Persian santur tuning. 1/1=E"},sanza:{frequencies:[261.6255653006,293.15632631094,308.97787266236,346.21547002486,390.18821123181,462.40922843744,524.46149515038,595.18445928535,620.10113226249],description:"African N'Gundi Sanza (idiophone; set of lamellas, thumb-plucked)"},sanza2:{frequencies:[261.6255653006,390.63923480058,465.35666077712,523.2511306012,588.68812410589,663.45725712889,702.9084786129,783.08569314515],description:"African Baduma Sanza (idiophone, like mbira)"},sauveur:{frequencies:[261.6255653006,274.85950244128,292.7026939092,313.25286195357,328.80795208256,349.69755047152,367.27338607435,391.35133250294,417.15885134862,438.29716799286,468.84228427561,491.11646492505,523.2511306012],description:"Sauveur's tempered system of the harpsichord. Trait\xEF\xBF\xBD (1697)"},sauveur2:{frequencies:[261.6255653006,278.64199172491,293.04864983565,312.10886966906,328.2456799168,349.5951549002,372.33322418948,391.58401058733,417.05308314313,438.61577206336,467.14384425417,491.2966347616,523.2511306012],description:"Sauveur's Syste^me Chromatique des Musiciens (Memoires 1701), 12 out of 55."},sauveur_17:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,489.99465727995,496.67978412536,523.2511306012],description:"Sauveur's oriental system, aft. Kitab al-adwar (Bagdad 1294) by Safi al-Din"},sauveur_ji:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Aplication des sons harmoniques aux jeux d'orgues (1702) (PB 81/80 & 128/125)"},savas_bardiat:{frequencies:[261.6255653006,282.57123920205,317.17549194805,349.22823143301,391.99543598175,423.37848741825,475.22628419761,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 12 + 10 parts"},savas_barenh:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 16 + 6 parts"},savas_chrom:{frequencies:[261.6255653006,282.57123920205,323.3415889232,349.22823143301,391.99543598175,423.37848741825,484.46499093218,523.2511306012],description:"Savas's Chromatic, Byzantine Liturgical mode, 8 + 14 + 8 parts"},savas_diat:{frequencies:[261.6255653006,288.06460709314,311.12698372208,349.22823143301,391.99543598175,431.60923940535,466.16376151809,523.2511306012],description:"Savas's Diatonic, Byzantine Liturgical mode, 10 + 8 + 12 parts"},savas_palace:{frequencies:[261.6255653006,277.18263097687,336.03572815422,349.22823143301,391.99543598175,415.30469757995,503.48470957687,523.2511306012],description:"Savas's Byzantine Liturgical mode, 6 + 20 + 4 parts"},scalatron:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:"Scalatron (tm) 19-tone scale, see manual, 1974"},scheengaas:{frequencies:[261.6255653006,273.84069463911,292.6487650037,312.74862113192,327.53979283172,350.03605285217,366.8025131876,391.54284657258,418.19337019276,437.97145880542,467.51204131067,489.62261321254,523.2511306012],description:"Scheengaas' variation"},scheffer:{frequencies:[261.6255653006,274.56546814423,292.86978442859,309.86465789076,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"H.Th. Scheffer (1748) modified 1/5-comma temperament, Sweden"},schidlof:{frequencies:[261.6255653006,264.89588486686,274.70684356563,280.31310567921,294.32876096318,305.22982618403,315.35224388912,322.99452506247,327.03195662575,348.83408706747,353.19451315581,366.27579142084,373.75080757229,392.4383479509,406.97310157871,420.46965851882,436.04260883433,457.84473927605,467.18850946536,484.4917875937,490.54793493862,523.2511306012],description:"Schidlof"},schillinger:{frequencies:[261.6255653006,262.8879410321,275.85161280553,277.18263097687,278.52007147562,292.25460328695,293.66476791741,295.08173676673,309.63296633914,311.12698372208,312.62820992379,328.04470063332,329.62755691287,331.21805066987,347.55125362114,349.22823143301,350.91330087035,368.21772660991,369.99442271164,371.77969159194,390.11309203208,391.99543598175,393.88686247394,413.31042363438,415.30469757995,417.30859414412,437.88714035463,440,442.12305445465,463.92526470026,466.16376151809,468.41305936011,491.51169649079,493.88330125613,496.26634930797,520.73850287792,523.2511306012],description:"Joseph Schillinger's double equal temperament, p.664 Mathematical Basis..."},schis41:{frequencies:[261.6255653006,266.96486255163,272.52663052146,275.21650375777,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,321.08592105074,327.03195662575,329.64821227876,336.37572681506,343.38355445704,348.83408706747,355.95315006884,363.36884069528,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,415.27867508032,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,484.4917875937,490.54793493862,497.4115685962,504.56359022259,512.78610798918,523.2511306012],description:"41&53 <<1 -8 -14 23 -15 -25 33 -10 81 113||"},schisynch17:{frequencies:[261.6255653006,275.80289341725,290.74848220557,294.25152581512,310.19683462128,327.0062098829,330.94609980123,348.87986495302,367.78544978395,387.71551660339,392.38685458718,413.65005636851,436.06549769577,441.31937388998,465.23419873014,490.4449531872,496.35401261224,523.2511306012],description:"fifth satisfies f^9 + f^8 - 64 = 0"},schlick:{frequencies:[261.6255653006,275.62199471997,293.00227310437,311.47852302926,328.14198392915,349.6228209638,367.9112241576,391.5530240856,414.36778843034,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Reconstructed temp. A. Schlick, Spiegel d. Orgelmacher und Organisten (1511)"},schlick2:{frequencies:[261.6255653006,275.31092272332,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.9112241576,391.5530240856,415.30469757995,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Schlick's temperament reconstructed by F.J. Ratte (1991)"},schlick3:{frequencies:[261.6255653006,275.31092431358,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.70355049744,391.5530240856,415.07027187895,438.51190905657,466.95405539699,491.10256480205,523.2511306012],description:"Possible well-tempered interpretation of 1555 tuning, Margo Schulter"},schlick4:{frequencies:[261.6255653006,275.29566620843,293.00166043901,311.83758337792,328.14192706649,349.6222474261,367.6987228158,391.55300599201,415.35839309639,438.51185079886,466.95962791236,491.10245700671,523.2511306012],description:"Another reconstructed Schlick's modified meantone (Poletti?)"},scholz:{frequencies:[261.6255653006,271.31540105247,299.00064605783,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Simple Tune #1 Carter Scholz"},scholz_epi:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,6802.2646978156,7063.8902631162,7325.5158284168,8372.0180896192,8633.6436549198,9156.894785521,9418.5203508216,10203.3970467234,10465.022612024,10988.2737426252,11511.5248732264,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14127.7805262324,14389.406091533,14651.0316568336,16482.4106139378,16744.0361792384,17005.661744539],description:"Carter Scholz, Epimore"},schulter:{frequencies:[261.6255653006,277.184065539,293.66520219021,311.12905403417,329.62853176407,349.23107169224,369.99606406306,391.99572582396,415.30715405467,440.00097595231,466.1672081452,493.88512703986,523.25577305438],description:`Margo Schulter's 5-limit JI virt. ET, "scintilla of Artusi" tempered 22-08-98`},schulter_17:{frequencies:[261.6255653006,272.43653907335,282.13181390574,295.15344695336,308.77608605158,319.09647917983,332.97799220076,348.34640884647,361.82138782225,375.64984936577,392.98775403209,410.26687922759,423.79017189188,443.34998408798,463.81254988138,480.53289366295,500.16624277499,523.2511306012],description:"Neo-Gothic well-temperament (14:11, 9:7 hypermeantone fifths) TL 04-09-2000"},schulter_24:{frequencies:[261.6255653006,270.06509966514,283.8170195002,292.97240722602,295.75063903546,305.22982618403,307.79478270659,317.68818643644,334.29933343966,345.08318290545,348.06842720833,359.29644098925,377.90359432309,390.09403284964,393.30161007617,406.07983174306,426.86276443782,440.63253103259,444.76346101102,458.66231916761,462.87600014722,477.80748402293,502.32108537715,518.89070451286,523.2511306012],description:'Rational intonation (RI) scale with some "17-ish" features (24 notes)'},schulter_cart34:{frequencies:[261.6255653006,270.08718526646,272.51337835337,281.3271372098,283.85429714132,293.03484945212,295.66718139806,305.22982618403,307.97166902637,317.93223698752,320.78822215662,331.16330924834,334.13814720468,344.94500399825,348.04364484358,359.30023993517,362.52783176564,374.2528814026,377.61479489998,389.82779436071,393.32961502355,406.05087076101,409.69842558521,422.94908927295,426.7484383229,440.55054172958,444.50800708553,458.88449901367,463.0066556268,477.98143975034,482.27514684959,497.87312179111,502.34551296122,518.59261334435,523.2511306012],description:'"Carthesian tuning" with two 17-tET chains 55.106 cents apart'},schulter_diat7:{frequencies:[261.6255653006,295.1673044417,332.97799220076,348.83408706747,392.4383479509,442.75095666255,499.46698830115,523.2511306012],description:"Diatonic scale, symmetrical tetrachords based on 14/11 and 13/11 triads"},schulter_ham:{frequencies:[261.6255653006,272.52663052146,283.8170195002,295.75063903546,307.79478270659,320.70230585235,334.29933343966,348.01136516401,362.25078272391,377.90359432309,393.36609818246,409.50088481833,426.86276443782,444.76346101102,462.87600014722,482.33849075995,502.32108537715,523.2511306012],description:'New rational tuning of "Hammond organ type", TL 01-03-2002'},schulter_jot17a:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.1673044417,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.75095666255,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"Just octachord tuning -- 4:3-9:8-4:3 division, 17 steps (7 + 3 + 7), Bb-Bb"},schulter_jot17bb:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.15228855401,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.72843283101,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:'"Just Octachord Tuning" (Bb-Eb, F-Bb) -- 896:891 divided into 1792:1787:1782'},schulter_jwt17:{frequencies:[261.6255653006,272.43653907335,282.34838235411,295.1673044417,308.34441624714,319.76457981184,332.97799220076,347.8430811383,362.25078272391,376.08675011961,393.55640592227,409.81906732402,425.14154361347,443.97065626768,462.87600014722,481.6288815761,500.8899711738,523.2511306012],description:'"Just well-tuned 17" circulating system'},"schulter_lin76-34":{frequencies:[261.6255653006,270.6250663876,281.88470155261,291.58108453077,295.07956188513,305.22982618403,308.89206602106,319.51745915009,332.81131277165,344.25948974019,348.39001840879,360.3740779397,375.36781334896,388.27986588625,392.93856423817,406.45502016129,423.36600317146,437.92911415628,443.18352164838,458.42832346067,463.9286840578,479.88708893184,499.85328649772,517.04744024951,523.2511306012],description:"Two 12-note chains, ~704.160 cents, 34 4ths apart (32 4ths = 7:6), TL 29-11-02"},schulter_pel:{frequencies:[261.6255653006,271.31540105247,305.22982618403,392.4383479509,406.97310157871,523.2511306012],description:"Just pelog-style Phrygian pentatonic"},schulter_pepr:{frequencies:[261.6255653006,270.64528702739,281.81099471089,291.52662303231,295.05751399041,305.22982618403,308.92668738628,319.57714790608,332.76158224462,344.23376719628,348.40303271111,360.41446953256,375.28368107222,388.22184469544,392.9238840789,406.47020586181,423.23948674937,437.83095983374,443.13385158124,458.41119660824,463.96335069158,479.95880706014,499.75992392917,516.98949183803,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},schulter_qcm62a:{frequencies:[261.6255653006,262.43934012943,267.90457886781,268.73788454005,273.37431312998,274.22463192287,279.93529690293,280.80602334765,285.65065877038,286.53916259713,292.50627485027,293.41610276971,299.52642572255,300.45808951291,305.64177427204,306.59245933664,312.977175335,313.95067836072,320.36052345918,320.48862783822,327.03195662575,328.04917632434,334.88072358477,335.92235492515,341.71789064962,342.78078913836,349.91912034749,351.00752840096,358.31717956585,359.43170941363,365.63284274659,366.77012764335,374.40803131735,375.5726110527,382.05221698715,383.2405741708,391.22147055517,392.4383479509,400.61078621746,401.85686830172,408.78994578219,410.06146948999,418.60090448096,419.90294514449,427.14736482575,428.47598794138,437.39890198442,438.75941205608,447.89647345742,449.28963835923,457.04105241293,458.46266117889,468.01003810189,469.46576276783,479.24227945773,480.73294151703,489.02683710225,490.54793493862,500.76348165392,502.32108537715,510.98743222773,512.57683571821,523.2511306012],description:"1/4-comma meantone, two 31-notes at 1/4-comma (Vicentino-like system)"},schulter_qcmlji24:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,292.50627485027,293.41610276971,306.59245933664,312.977175335,327.03195662575,328.04917632434,349.91912034749,351.00752840096,365.63284274659,366.77012764335,391.22147055517,392.4383479509,408.78994578219,410.06146948999,437.39890198442,438.75941205608,458.46266117889,468.01003810189,489.02683710225,490.54793493862,523.2511306012],description:"24-note adaptive JI (Eb-G#/F'-A#') for Lasso's Prologue to _Prophetiae_"},schulter_qcmqd8_4:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28772967674,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.22091428214,437.39890198442,465.24335632603,489.02683710225,523.2511306012],description:"F-C# in 1/4-comma meantone, other 5ths ~4.888 cents wide or (2048/2025)^(1/4)"},schulter_sq:{frequencies:[261.6255653006,271.31540105247,279.38237857051,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,419.07356785577,434.59481110969,441.49314144476,457.84473927605,465.11211608996,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:'"Sesquisexta" tuning, two 12-tone Pyth. manuals a 7/6 apart. TL 16-5-2001'},schulter_tedorian:{frequencies:[261.6255653006,295.99553712036,309.28772789022,347.85054122562,393.54796334264,442.61656607198,462.49302735707,523.2511306012],description:"Eb Dorian in temperament extraordinaire -- neo-medieval style"},schulter_zarte84:{frequencies:[261.6255653006,272.52663052146,292.24684137387,308.87634556583,326.45210604021,350.07440004945,364.66083404534,391.04793957621,410.30971075781,436.81711699543,465.03699205118,487.94322738789,523.2511306012],description:"Temperament extraordinaire, Zarlino's 2/7-comma meantone (F-C#)"},schulter_zarte84n:{frequencies:[261.6255653006,272.46997760396,292.1447183254,308.81896225817,326.44489157977,350.01709816983,364.52535053201,391.11195868293,410.09013064752,436.73596474349,465.11312402839,488.01232708701,523.2511306012],description:"Zarlino temperament extraordinaire, 1024-tET mapping"},scotbag:{frequencies:[261.6255653006,290.69507255622,327.03195662575,356.76213450082,387.59343007496,436.04260883433,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning"},scotbag2:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Scottish bagpipe tuning 2"},scotbag3:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning 3"},scotbag4:{frequencies:[261.6255653006,293.15632631094,318.58319997217,348.2210758395,392.67530119805,428.21545238314,468.59347232539,523.2511306012],description:"Scottish Higland Bagpipe by Macdonald, Edinburgh. Helmholtz/Ellis p. 515, nr.52"},scottd1:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,349.22823143301,367.9112241576,391.5530240856,413.90012676351,437.52264545758,465.63764214343,490.54829628849,523.2511306012],description:"Dale Scott's temperament 1, TL 9-6-1999"},scottd2:{frequencies:[261.6255653006,276.1828093671,292.93610587951,310.70566022736,327.9937953665,349.3071136959,368.24374600687,391.64146650178,414.27421384356,438.21489534465,466.05849010807,491.32444638706,523.2511306012],description:"Dale Scott's temperament 2, TL 9-6-1999"},scottd3:{frequencies:[261.6255653006,276.40121172404,293.16775656083,310.95136287868,328.51274831708,349.22813057195,368.53494914961,391.77416758435,414.60181737882,438.75957425603,466.42704408487,491.93513777943,523.2511306012],description:"Dale Scott's temperament 3, TL 9-6-1999"},scottd4:{frequencies:[261.6255653006,276.60439543337,293.30494246724,310.98285414553,328.78580734933,349.37474066871,369.05201453919,391.83105388699,414.77686160481,439.10664961187,466.16991430388,492.5350487994,523.2511306012],description:"Dale Scott's temperament 4, TL 9-6-1999"},scottj:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509],description:`Jeff Scott's "seven and five" tuning, fifth-repeating. TL 20-04-99`},scottj2:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,313.95067836072,348.83408706747,366.27579142084,406.97310157871,418.60090448096,428.11456140098,436.04260883433,485.87604984397,523.2511306012,566.85539148463,581.39014511244,598.00129211566,610.45965236807,680.22646978156,719.47030457665,784.8766959018],description:`Jeff Scott's "just tritone/13" tuning. TL 17-03-2001`},secor12_1:{frequencies:[261.6255653006,275.03488264166,292.74290192225,310.07362690431,327.56128791316,349.21167447253,366.91716522699,391.37968062521,412.76363757129,437.92977184699,465.61556619611,490.01645577464,523.2511306012],description:"George Secor's 12-tone temperament ordinaire #1, proportional beating"},secor12_2:{frequencies:[261.6255653006,275.62199471997,292.79557634972,310.07474405997,327.35540669465,348.83408706747,367.49599295996,391.60840570078,413.43299207996,437.83150862942,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's closed 12-tone well-temperament #2, with 7 just fifths"},secor12_3:{frequencies:[261.6255653006,274.49585366342,292.50627485027,309.76836826904,327.03195662575,349.57337698802,365.99447173417,391.22147055517,411.74378028931,437.39890198442,466.09783352473,489.02683710225,523.2511306012],description:"George Secor's closed 12-tone temperament #3 with 5 meantone, 3 just, and 2 wide fifths"},secor17htt1:{frequencies:[261.6255653006,266.21235100401,283.6936382117,294.88137067808,304.94368688875,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,435.63385416574,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #1 on C (5/4 & 7/4 exact)"},secor17htt2:{frequencies:[261.6255653006,266.21235100401,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #2 on Eo (5/4 & 7/4 exact)"},secor17htt3:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #3 on G (5/4 & 7/4 exact)"},secor17htt4:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,332.36439517321,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,420.07165483694,442.73709545768,450.49910517366,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #4 on Bo (5/4 & 7/4 exact)"},secor17wt:{frequencies:[261.6255653006,271.90848849519,284.45827635845,296.12458543709,307.25838681362,320.91221742866,335.17278980765,347.77473997341,362.0378075073,378.74746489181,393.63374363584,408.43373030454,427.2847686483,445.53990619223,462.29147990415,482.0422296857,504.29062567056,523.2511306012],description:"George Secor's well temperament with 5 pure 11/7 and 3 near just 11/6"},secor19wt:{frequencies:[261.6255653006,272.32755795875,282.27948808054,292.18583194851,304.13791554835,314.37102040472,326.31582004031,339.6640167515,350.11094753355,364.43250202589,378.27942889874,391.0071187494,407.00156221801,421.24111755476,436.68033801788,454.54308187078,469.17957429271,487.6886112017,506.92782577841,523.2511306012],description:"George Secor's 19-tone well temperament with ten 5/17-comma fifths"},secor19wt1:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.3856167727,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.33223555387,436.68095599763,454.54522431957,469.16941157468,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.1)"},secor19wt2:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.27577204952,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.20165315727,436.68095599763,454.54522431957,469.03541436973,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.2)"},secor1_4tx:{frequencies:[261.6255653006,274.52656755164,292.65557420835,309.65910769439,327.20096538886,349.14957009195,366.50113643833,391.42429537222,412.04336447213,437.62002395673,465.5327601226,489.58458498887,523.2511306012],description:"George Secor's rational 1/4-comma temperament extraordinaire"},secor1_5tx:{frequencies:[261.6255653006,275.23833828784,292.86443876933,310.12174699459,327.84546895566,349.26796031009,366.98445105045,391.462133155,412.85750743176,438.21197504744,465.69061374678,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma temperament extraordinaire (ratios supplied by G. W. Smith)"},secor1_5wt:{frequencies:[261.6255653006,275.62199471997,292.86443876933,310.07474405997,327.84546895566,348.83408706747,367.44664657419,391.462133155,413.43299207996,438.21197504744,465.11211608996,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma well-temperament (ratios supplied by G. W. Smith)"},secor1_7wt:{frequencies:[261.6255653006,276.40791719395,293.28186156416,310.6264877857,328.77715667764,349.45479875891,368.54388959194,391.74026793015,414.61187579093,439.14616729155,465.93973167855,492.29203182992,523.2511306012],description:"George Secor's 1/7-comma well-temperament (ratios supplied by G. W. Smith)"},secor22_19p3:{frequencies:[261.6255653006,266.86058412305,272.32845615788,282.28026746552,292.18610873661,304.13920677667,314.37137994881,326.31643450984,339.6657766488,350.11078170334,357.11635499175,364.43353349925,378.28077924825,391.00730395019,407.00309738029,421.28573964817,436.68095599763,454.54522431957,469.17973147781,477.89781576412,487.689760539,506.93004530576,523.2511306012],description:"George Secor's 19+3 well temperament with ten ~5/17-comma (equal-beating) fifths and 3 pure 9:11. TL 28-6-2002,26-10-2006. Aux=1,10,19"},secor22_ji29:{frequencies:[261.6255653006,272.52663052146,283.42769574232,286.15296204753,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.65828815182,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,414.24047839262,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,501.44900015948,523.2511306012],description:"George Secor's 22-tone just intonation (29-limit otonality on 4/3)"},secor29htt:{frequencies:[261.6255653006,270.55308473255,276.71069203503,283.6936382117,290.1503157249,294.88137067808,304.94368688875,310.54087273367,319.75456524059,327.03195662575,332.36439517321,343.70575469589,348.50707605838,360.3992766165,368.60172104124,377.19539564757,387.3949548402,392.80658053205,406.21042497925,415.4555026381,425.93975025566,435.63385416574,442.73709545768,457.84473927605,464.24049278842,480.08189580921,491.0082387498,499.01438878341,516.04239079678,523.2511306012],description:"George Secor's 29-tone 13-limit high-tolerance temperament (5/4 & 7/4 exact)"},secor2_11wt:{frequencies:[261.6255653006,275.91396717201,292.9984614786,310.40321306851,328.14053952957,349.20361470207,367.88528956268,391.55148162785,413.87095075801,438.50612639837,465.60481960276,491.10222639053,523.2511306012],description:"George Secor's rational 2/11-comma well-temperament"},secor41htt:{frequencies:[261.6255653006,266.21235100401,270.55308473255,276.71069203503,279.78524030783,283.6936382117,290.1503157249,294.88137067808,300.05119287674,304.94368688875,310.54087273367,315.34936221801,319.75456524059,327.03195662575,332.36439517321,338.19136297459,343.70575469589,348.50707605838,354.61705516636,360.3992766165,368.60172104124,372.69727792826,377.90358994896,387.3949548402,392.80658053205,399.69321489333,406.21042497925,415.4555026381,420.07165483694,425.93975025566,435.63385416574,442.73709545768,450.49910517366,457.84473927605,464.24049278842,473.46789104304,480.08189580921,491.0082387498,499.01438878341,507.7630447553,516.04239079678,523.2511306012],description:"George Secor's 13-limit high-tolerance temperament superset (5/4 & 7/4 exact)"},secor5_23tx:{frequencies:[261.6255653006,275.02417915696,292.7420830065,310.0721322444,327.56084927797,349.21018850905,366.91927748105,391.38056264645,412.75664067387,437.92311604224,465.61358467873,490.0190422864,523.2511306012],description:"George Secor's rational 5/23-comma temperament extraordinaire"},secor5_23wt:{frequencies:[261.6255653006,275.62199471997,292.75872440224,310.07474405997,327.56278518065,348.83408706747,367.49599295996,391.3766908411,413.43299207996,437.81158306864,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's rational 5/23-comma proportional-beating well-temperament"},secor7p:{frequencies:[261.6255653006,281.10327891957,302.03108525935,356.94582815655,383.52002471837,412.07263653985,442.75095666255,523.2511306012],description:"George Secor's pelog-like MOS with near just 11:13:15:19 tetrads (1979)"},secor_vrwt:{frequencies:[261.6255653006,276.32932769153,293.15777167588,310.55777256823,328.11844153148,349.04269216937,368.62018440632,392.00375398861,414.25255044712,438.65017260809,465.6191423793,491.6947801169,523.2511306012],description:"George Secor's Victorian rational well-temperament (based on Ellis #2)"},"secor_wt1-7":{frequencies:[261.6255653006,276.2204353545,293.2843722634,310.74798946314,328.77415062671,349.45463702831,368.55847674989,391.74146894101,414.33065282463,439.14535139523,466.13275379077,492.28548658217,523.2511306012],description:"George Secor's 1/7-comma well-temperament"},secor_wt10:{frequencies:[261.6255653006,276.4188590209,293.2843722634,310.62634254146,328.77415062671,349.45463500978,368.55847887877,391.7414712038,414.6282883241,439.14535393183,465.93951357928,492.28548942572,523.2511306012],description:"George Secor's 12-tone well-temperament, proportional beating"},"secor_wtpb-24a":{frequencies:[261.6255653006,275.62199471997,292.84836938997,310.07474405997,327.30111872997,348.83408706747,367.49599295996,391.90002374246,413.43299207996,437.54991661796,465.11211608996,490.95167809495,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24a)"},"secor_wtpb-24b":{frequencies:[261.6255653006,275.62199471997,292.56126314547,310.07474405997,327.51644841334,348.83408706747,367.49599295996,391.46936437571,413.43299207996,437.76524630133,465.11211608996,490.37746560595,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24b)"},segah:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Arabic SEGAH (Dudon) Two 4 + 3 + 3 tetrachords"},segah2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,349.22823143301,391.99543598175,425.01198472693,466.16376151809,523.2511306012],description:"Iranian mode Segah from C"},segah_rat:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Rationalized Arabic Seg\xEF\xBF\xBDh\r"},seidel974:{frequencies:[261.6255653006,262.64754016506,266.73543962288,267.75741448733,268.77938935179,273.88926367407,274.91123853852,276.95518826743,277.97716313189,280.0211128608,283.08703745416,284.10901231862,285.13098718308,287.17493691199,289.2188866409,290.24086150535,294.32876096318,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,486.4600354808,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,515.07533168556,519.16323114338,523.2511306012],description:"Dave Seidel, Base 9:7:4 Symmetry, scale for Passacaglia and Fugue State (2005)"},seikilos:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,441.49314144476,457.84473927605,504.56359022259,523.2511306012],description:"Seikilos Tuning"},sekati1:{frequencies:[261.6255653006,285.2147362526,318.99014578736,340.97107458785,383.86043226246,424.60539155549,468.56721805116,523.2511306012],description:"Gamelan sekati from Sumenep, East-Madura. 1/1=244 Hz."},sekati2:{frequencies:[261.6255653006,288.87830434024,317.34219433319,357.31261688157,393.64955765984,420.29657220667,469.35141988267,523.2511306012],description:"Gamelan Kyahi Sepuh from kraton Solo. 1/1=216 Hz."},sekati3:{frequencies:[261.6255653006,291.90272733088,308.20569577938,369.53649673407,403.69531865382,425.43272843735,475.11832680028,523.2511306012],description:"Gamelan Kyahi Henem from kraton Solo. 1/1=168.5 Hz."},sekati4:{frequencies:[261.6255653006,271.36353278789,288.89182053123,342.12578909252,379.12979967788,410.29128883625,439.50493264224,523.2511306012],description:"Gamelan Kyahi Guntur madu from kraton Jogya. 1/1=201.5 Hz."},sekati5:{frequencies:[261.6255653006,274.79663866182,311.31645994273,355.61927540077,375.97459751383,397.52718524897,433.44837981883,523.2511306012],description:"Gamelan Kyahi Naga Ilaga from kraton Jogya. 1/1=218.5 Hz."},sekati6:{frequencies:[261.6255653006,284.57524936299,310.80330758934,358.01400474517,390.79902205709,427.51850178351,468.18764285778,523.2511306012],description:"Gamelan Kyahi Munggang from Paku Alaman, Jogya. 1/1=199.5 Hz."},sekati7:{frequencies:[261.6255653006,286.67481979642,318.21831168293,371.10013445627,390.58282835584,422.12643845206,463.87524473877,523.2511306012],description:"Gamelan of Sultan Anom from Cheribon. 1/1=282 Hz."},sekati8:{frequencies:[261.6255653006,287.04067548259,315.94410704802,350.82750428678,381.72407804086,425.57749367468,447.5043967797,523.2511306012],description:"The old Sultans-gamelan Kyahi Suka rame from Banten. 1/1=262.5 Hz."},sekati9:{frequencies:[261.6255653006,280.44107893528,310.90439774384,346.74342440827,376.31071188751,412.14996063869,455.1567650372,523.2511306012],description:"Gamelan Sekati from Katjerbonan, Cheribon. 1/1=292 Hz."},selisir:{frequencies:[261.6255653006,278.78833362316,320.24370022528,380.8360868427,417.71053321823,524.76452349887],description:"Gamelan semara pagulingan, Bali. Pagan Kelod"},selisir2:{frequencies:[261.6255653006,279.59466973861,299.66214729245,376.46181130035,408.17001145418,520.23742585195],description:"Gamelan semara pagulingan, Bali. Kamasan"},selisir3:{frequencies:[261.6255653006,284.98499077387,305.5412851438,378.42269266694,406.45400323486,523.2511306012],description:"Gamelan gong, Pliatan, Bali. 1/1=280 Hz, McPhee, 1966"},selisir4:{frequencies:[261.6255653006,277.23130136276,295.59098907682,376.373620257,399.32323124828,523.2511306012],description:"Gamelan gong, Apuan, Bali. 1/1=285 Hz. McPhee, 1966"},selisir5:{frequencies:[261.6255653006,275.89605068063,309.19384990071,383.40037296022,406.23315014465,523.2511306012],description:"Gamelan gong, Sayan, Bali. 1/1=275 Hz. McPhee, 1966"},selisir6:{frequencies:[261.6255653006,282.63199755101,312.23197007902,396.25769882774,415.35445602102,523.2511306012],description:"Gamelan gong, Gianyar, Bali. 1/1=274 Hz. McPhee, 1966"},semipor1:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,353.19451315581,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"First 16/15&250/243 = 648/625&250/243 scale"},semisixths:{frequencies:[261.6255653006,264.19830736984,270.23055453212,272.88791531122,275.57140613391,281.86332858923,284.63508234504,291.13394747727,293.99686553194,300.70948316519,303.66656221886,306.65272199551,313.65430163898,316.7386758187,323.97054074552,327.15636145846,330.37351240232,337.91669168384,341.23965429995,349.03093233441,352.46319080675,360.51072564419,364.05587272954,367.63587953306,376.02984347246,379.72760059524,388.39764380609,392.21702191873,396.07395857323,405.11722624758,409.10101938242,418.44172684717,422.55654641528,426.71183224275,436.45463212963,440.74658728358,450.80983509489,455.24295209046,465.63718490681,470.21611194415,474.84006394159,485.68174342829,490.45777940536,501.656046885,506.58917188228,511.57080469686,523.2511306012],description:"Semisixths temperament, 13-limit, g=443.0"},"scalamakesrc2\\semisixths_8":{frequencies:[261.6255653006,282.20554108354,304.40437778605,337.94858305883,364.53227585368,393.20709362444,436.53702313055,470.87587163898,522.76460573117],description:"8-note MOS of Semisixths [7, 9, 13, -2, 1, 5] temperament, TOP tuning"},semisuper:{frequencies:[261.6255653006,267.78942821112,272.60119889127,277.49943141001,284.03728045772,289.141002119,295.95312328758,301.27095467792,308.36885759663,313.90977919898,321.30545111289,327.07882560827,334.78475653951,340.80033382945,348.82954357113,355.09748450744,363.46353108469,369.99442271164,378.7114412363,385.5163125912,392.44345945086,401.68937424288,408.90712663484,418.54092077997,426.06147005461,436.09942062666,443.93546710474,454.39452662825,462.55931114028,473.45714317395,481.96445416288,493.31947147471,502.18367855499,514.01505508798,523.2511306012],description:"Semisuper temperament, g=71.146064, p=600, 5-limit"},semithirds:{frequencies:[13.75,13.81661017188,13.90316796691,13.99026794524,14.07791366516,14.14611237417,14.23473442257,14.3239115844,14.41364750281,14.48347263281,14.57420816344,14.665512046,14.73655738771,14.82887834882,14.92177776458,15.01525908647,15.08799873642,15.18252139242,15.27763629821,15.37334698758,15.4478213521,15.54459820959,15.64198144101,15.73997475533,15.81622511342,15.91530993122,16.01501558389,16.11534586889,16.19341466585,16.29486248479,16.39694594444,16.47637891809,16.57959953527,16.68346670883,16.78798468204,16.86931199442,16.97499424439,17.08133847,17.18834901569,17.27161584349,17.37981843193,17.48869878298,17.59826134469,17.68351394199,17.7942969746,17.90577393328,18.01794937217,18.10523509614,18.21866011204,18.33279560295,18.42160666689,18.53701356879,18.6531435747,18.77000099922,18.86093005309,18.97908920954,19.09798871479,19.21763298632,19.3107305405,19.43170758802,19.55344264036,19.67594033402,19.77125798984,19.89512013023,20.01975835255,20.14517740386,20.24276822054,20.36958425827,20.49719488615,20.62560496443,20.72552315291,20.85536353332,20.98601745346,21.08768161561,21.21979095359,21.352727802,21.48649759166,21.59058626784,21.72584618454,21.86195334633,21.99891331359,22.10548432428,22.24396995552,22.38332303719,22.52354926226,22.63266180681,22.7744500803,22.91712649141,23.06069686887,23.17241155847,23.3175812365,23.46366023269,23.57732716458,23.72503340608,23.87366512928,24.02322785632,24.1396055475,24.29083432682,24.44301065897,24.59614033986,24.71529329517,24.87012861873,25.02593409262,25.18271565096,25.30471019771,25.46323807533,25.62275923969,25.78327976642,25.90818367164,26.07049216435,26.23381763196,26.36090411207,26.52604894185,26.69222821075,26.85944870765,26.98956598001,27.15864922771,27.32879158412,27.5],description:"Semithirds temperament, g=193.199615, 5-limit"},sensisynch19:{frequencies:[261.6255653006,272.4389540986,281.73678149918,293.38139793239,303.39395317428,313.74821628003,326.71591476706,337.86611241253,351.83064080634,363.83795665907,376.25506171692,391.80626469239,405.17787315281,421.92450060765,436.32398762558,454.35793210906,469.86431365505,485.89989602801,505.98288939536,523.2511306012],description:"Sensi[19] in synch (brat=-1) tuning, generator ~162/125 satisfies g^9-g^7-4=0"},serre_enh:{frequencies:[261.6255653006,265.7783520514,279.06726965397,348.83408706747,392.4383479509,398.6675280771,418.60090448096,523.2511306012],description:"Dorian mode of the Serre's Enharmonic"},"sev-elev":{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,336.37572681506,359.73515228832,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Seven-Eleven Blues" of Pitch Palette'},sha:{frequencies:[261.6255653006,266.96486255163,280.31310567921,284.82183961519,290.63452941521,294.32876096318,300.33547037059,305.16625703708,320.42456924675,326.96384715385,343.31203882349,348.83408706747,355.95315006884,373.75080757229,392.4383479509,400.44729382745,406.8883429195,420.46965851882,427.23275920923,435.9517939049,457.74938532681,480.63685362987,490.44577048562,498.33441009638,523.2511306012],description:"Three chains of sqrt(3/2) separated by 10/7"},shahin:{frequencies:[261.6255653006,277.01530443593,282.55561052465,294.32876096318,310.50067090621,317.47821407264,328.55303549378,348.83408706747,357.66532977804,371.78369805875,376.74081403286,392.4383479509,415.52295665389,428.11456140098,441.49314144476,463.20591889287,478.90781444856,495.71159741166,523.2511306012],description:"Mohajeri Shahin Iranian style scale, TL 9-4-2006"},shahin_wt:{frequencies:[261.6255653006,276.93928561067,294.25491037444,311.47852302926,329.62755691287,348.92163548373,370.73795561568,392.4383479509,415.30469757995,439.61371330969,467.10055427519,494.44133512215,523.2511306012],description:"Mohajeri Shahin, well temperament, TL 28-12-2006"},shalfun:{frequencies:[261.6255653006,269.43930514995,277.46904793785,285.74220762407,294.32876096318,302.80736724606,311.45900631024,320.30554027987,329.50323085718,338.98103822311,348.83408706747,359.12912189513,369.78878487717,380.87868001252,392.4383479509,404.24222079821,416.2697936366,428.68354137408,441.49314144476,454.4477424016,467.68960547122,481.19471271032,494.94053216156,508.90014647073,523.2511306012],description:"d'Erlanger vol.5, p.40. After Alexandre ^Salfun (Chalfoun)"},"sharm1c-conm":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Subharm1C-ConMixolydian"},"sharm1c-conp":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharm1C-ConPhryg"},"sharm1c-dor":{frequencies:[261.6255653006,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,479.64686971777,547.03527290125,523.2511306012],description:"Subharm1C-Dorian"},"sharm1c-lyd":{frequencies:[261.6255653006,309.19384990071,323.91736656265,340.11323489078,382.37582620857,377.90359432309,485.87604984397,503.87145909745,523.2511306012],description:"Subharm1C-Lydian"},"sharm1c-mix":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,366.27579142084,457.84473927605,488.36772189445,523.2511306012],description:"Subharm1C-Mixolydian"},"sharm1c-phr":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,392.4383479509,483.00104363188,502.32108537715,523.2511306012],description:"Subharm1C-Phrygian"},"sharm1e-conm":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,430.91269578922,443.97065626768,457.84473927605,523.2511306012],description:"Subharm1E-ConMixolydian"},"sharm1e-conp":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Subharm1E-ConPhrygian"},"sharm1e-dor":{frequencies:[261.6255653006,338.57426097725,348.83408706747,359.73515228832,383.71749577421,411.12588832951,500.50108144463,511.62332769895,523.2511306012],description:"Subharm1E-Dorian"},"sharm1e-lyd":{frequencies:[261.6255653006,323.91736656265,331.81779013735,340.11323489078,382.37582620857,377.90359432309,503.87145909745,513.37846775967,523.2511306012],description:"Subharm1E-Lydian"},"sharm1e-mix":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,366.27579142084,488.36772189445,505.20798816668,523.2511306012],description:"Subharm1E-Mixolydian"},"sharm1e-phr":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,392.4383479509,502.32108537715,512.57253609913,523.2511306012],description:"Subharm1E-Phrygian"},"sharm2c-15":{frequencies:[261.6255653006,327.03195662575,341.25073734861,356.76213450082,392.4383479509,461.69217405988,490.54793493862,523.2511306012],description:"Subharm2C-15-Harmonia"},"sharm2c-hypod":{frequencies:[261.6255653006,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,465.11211608996,492.47165233054,523.2511306012],description:"SHarm2C-Hypodorian"},"sharm2c-hypol":{frequencies:[261.6255653006,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,475.68284600109,498.33441009638,523.2511306012],description:"SHarm2C-Hypolydian"},"sharm2c-hypop":{frequencies:[261.6255653006,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,470.92601754108,495.71159741166,523.2511306012],description:"SHarm2C-Hypophrygian"},"sharm2e-15":{frequencies:[261.6255653006,341.25073734861,348.83408706747,356.76213450082,392.4383479509,490.54793493862,506.37206187213,523.2511306012],description:"Subharm2E-15-Harmonia"},"sharm2e-hypod":{frequencies:[261.6255653006,334.88072358477,341.71502406609,348.83408706747,364.00078650518,380.54627680087,492.47165233054,507.3950357345,523.2511306012],description:"SHarm2E-Hypodorian"},"sharm2e-hypol":{frequencies:[261.6255653006,327.03195662575,337.58137458142,348.83408706747,373.75080757229,402.50086969323,498.33441009638,510.48890790361,523.2511306012],description:"SHarm2E-Hypolydian"},"sharm2e-hypop":{frequencies:[261.6255653006,348.83408706747,355.41586229515,362.25078272391,376.74081403286,392.4383479509,495.71159741166,509.10920815252,523.2511306012],description:"SHarm2E-Hypophrygian"},sherwood:{frequencies:[261.6255653006,279.50101530337,292.73346657716,312.73435005323,327.54017122074,349.91920725962,366.48547573919,391.52543233055,418.27599117656,438.07873640926,468.01000025525,490.16733894289,523.65750116998],description:"Sherwood's improved meantone temperament"},shrutar:{frequencies:[261.6255653006,269.80136421624,277.49581689502,285.40970760065,294.32876096318,304.37698984459,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,368.95121675679,379.48299988042,392.4383479509,405.83598431812,417.42065019394,428.11456140098,441.49314144476,457.84473927605,470.92601754108,490.54793493862,505.97733342682,523.2511306012],description:"Paul Erlich's Shrutar tuning (from 9th fret) tempered with Dave Keenan"},shrutar_temp:{frequencies:[261.6255653006,269.67683152447,277.97586744827,286.53029793775,295.34798250635,304.4370214407,313.80576690868,327.74897996102,337.83512841993,348.23166805304,358.94815083964,369.99442271164,381.38063259971,393.11724175776,405.21503337437,417.68512248001,430.53896367224,443.78837151315,463.50705251482,477.77102045752,492.47394780842,507.62934310616,523.2511306012],description:"Shrutar temperament, 11-limit, g=52.474, 1/2 oct."},shrutart:{frequencies:[261.6255653006,269.83675183105,278.27349931787,286.14641333958,294.32706056425,305.2349557921,313.94319125793,327.02936607233,337.2932679302,348.82502010853,358.79758764604,369.99442271164,381.540672377,392.44854854484,405.86600994967,418.6042204156,436.0530078362,448.49343183014,465.11480315564,478.41198231361,491.94721442498,507.32849364948,523.2511306012],description:"Paul Erlich's 'Shrutar' tuning tempered by Dave Keenan, TL 29-12-2000"},siamese:{frequencies:[261.6255653006,269.26067151764,288.95340229325,296.22023396764,319.13574119147,352.26720984209,362.5475414329,388.79334481031,400.18585940536,429.40436513853,443.77760270734,473.98350631811,523.2511306012],description:"Siamese Tuning, after Clem Fortuna's Microtonal Guide"},silbermann1:{frequencies:[261.6255653006,275.15551885617,293.66476791741,312.53552595124,327.77163799145,349.82028288879,367.9112241576,391.99543598175,411.56972129721,438.75957425603,467.74568907204,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 1"},silbermann2:{frequencies:[261.6255653006,275.00020270933,293.00227310437,312.18279369479,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 2, 1/6 Pyth. comma meantone"},silbermann2a:{frequencies:[261.6255653006,275.00020270933,293.00227310437,310.77584116741,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Modified Silbermann's temperament nr. 2, also used by Hinsz in Midwolda"},silver:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.53543886896,349.23174545031,369.98176232374,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating chromatic scale, A.L.Leigh Silver JASA 29/4, 476-481, 1957"},silver_10:{frequencies:[261.6255653006,270.26884019355,294.27266239927,320.41022551991,330.99364634362,360.39280035711,392.40094712608,405.36462386145,441.36692569059,480.56953386201,523.2511306012],description:"Ten-tone MOS from 350.9 cents"},silver_11:{frequencies:[261.6255653006,277.73657748574,294.83971256733,315.81001885226,335.25773244276,355.90304440354,381.21644531515,404.69191411574,429.61301214396,460.16899244324,488.50639225338,523.2511306012],description:"Eleven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_11a:{frequencies:[261.6255653006,272.21316796874,283.22923537857,314.22802528801,326.94437231289,340.17533123945,377.40674067136,392.67983758722,408.5710143206,453.28817432381,471.63208149661,523.2511306012],description:"Eleven-tone MOS from 317.17 cents"},silver_11b:{frequencies:[261.6255653006,281.48899567641,302.85877036442,316.87090334834,340.92873240472,366.81310701257,383.78194911277,412.91987382947,444.27004083312,464.82473992747,500.11279777071,523.2511306012],description:"Eleven-tone MOS from 331.67 cents"},silver_7:{frequencies:[261.6255653006,277.73649727228,315.81000061035,335.2576162513,381.21640127531,404.69175048432,460.16888612163,523.2511306012],description:"Seven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_8:{frequencies:[261.6255653006,288.49477506296,306.46277751246,337.93681424842,358.98416079003,395.852196628,420.50662316693,492.57276348379,523.2511306012],description:"Eight-tone MOS from 273.85 cents"},silver_9:{frequencies:[261.6255653006,294.18258755347,307.6617709921,345.94759796409,361.79860795042,406.82129262791,425.46148093979,478.40645551359,500.32661205896,523.2511306012],description:"Nine-tone MOS from 280.61 cents"},silvermean:{frequencies:[261.6255653006,286.15296204753,327.03195662575,345.42750418595,392.4383479509,416.96574469783,474.19633710734,523.2511306012],description:"First 6 approximants to the Silver Mean, 1+ sqr(2) reduced by 2/1"},simonton:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Simonton Integral Ratio Scale, JASA 25/6 (1953): A new integral ratio scale"},sims:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Ezra Sims' 18-tone mode"},sims2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Sims II"},sims_24:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.97716313189,283.42769574232,286.15296204753,294.32876096318,302.50455987882,305.22982618403,310.68035879446,316.13089140489,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"See his article, Reflections on This and That, 1991 p.93-106"},sin:{frequencies:[261.6255653006,275.08939827539,302.09917071192,334.63165645627,369.99442271164,407.01712569342,445.10399729103,483.9175316883,523.2511306012,562.97086325858,602.98541169118,643.23087116255,683.66056756853,724.23972686276,764.94197926416,805.74682982871,846.63811574624,887.6028851904,928.63083777952,969.71346974542,1010.84345850104,1052.01529432917],description:"1/sin(2pi/n), n=4..25"},sinemod12:{frequencies:[261.6255653006,270.6035983646,282.0485507085,292.16840832754,301.82804372114,314.42520179993,326.24260278214,336.76433478807,350.4641458176,364.21811789193,375.86233664064,390.61306119732,406.50371126161,419.61372202861,435.38454314112,453.55584308858,468.551249676,485.36279478778,505.89080731022,523.2511306012],description:"Sine modulated F=12, A=-.08203754"},sinemod8:{frequencies:[261.6255653006,272.43905323978,281.98404270447,290.99567087708,301.68076007415,314.40050256998,326.99158834066,337.97331861211,348.96407538813,362.38276875396,377.76595534172,392.29216556304,405.04934945717,418.6525822649,435.418746849,453.77727371169,470.43955130022,485.47382867757,502.48255971303,523.2511306012],description:"Sine modulated F=8, A=.11364155. Deviation minimal3/2, 4/3, 5/4, 6/5, 5/3, 8/5"},singapore:{frequencies:[261.6255653006,291.46787011619,321.35550581422,354.51258839996,385.70651737906,428.95813651779,462.1422075194,523.2511306012],description:"An observed xylophone tuning from Singapore"},sintemp6:{frequencies:[261.6255653006,277.18263097687,292.42974339757,312.08834713741,327.870830746,349.91196330865,369.15973155124,391.11111150212,416.11779639122,437.6550518996,467.60417912673,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/6 Pyth, one cycle, f0=-90 degrees"},sintemp6a:{frequencies:[261.6255653006,276.17281343288,293.21211353711,310.64741311165,328.42667470471,349.22823143301,368.43838932195,391.77416758435,414.19655102258,438.82595961933,465.90062756558,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/12 Pyth, one cycle, f0= D-A"},sintemp_19:{frequencies:[261.6255653006,272.86445838226,281.30973389888,292.50627485027,304.14845459111,313.56198179795,327.03195662575,338.65502209741,350.02113164026,365.30494475029,376.98581738134,391.19763056219,407.47965586966,419.94695489748,437.42555500456,453.91586039553,468.43012697388,488.88431353627,505.29249383438,523.2511306012],description:"Sine modulated thirds, A=7.366 cents, one cycle over fifths, f0=90 degrees"},sintemp_7:{frequencies:[261.6255653006,291.06608881088,319.67397341855,351.09362859375,390.60192440975,432.07134328681,473.03044489876,523.2511306012],description:"Sine modulated fifths, A=8.12 cents, one cycle, f0=90 degrees"},slen_pel:{frequencies:[261.6255653006,261.6255653006,283.17034563789,298.45295203849,338.50336851425,364.68988616898,346.01554587335,389.06292924114,398.38689497567,420.13030572059,455.51656649021,493.31307433255,523.2511306012],description:"Pelog white, Slendro black"},slen_pel16:{frequencies:[261.6255653006,261.6255653006,285.30470202322,285.30470202322,297.93622032612,311.12698372208,339.28638158975,386.37547528213,386.37547528213,403.48177901006,421.34544350737,440,523.2511306012],description:"16-tET Slendro and Pelog"},slen_pel23:{frequencies:[261.6255653006,261.6255653006,295.14355885465,295.14355885465,286.38154466424,343.14246862785,313.47984535337,398.94762483098,398.94762483098,387.10394860926,450.05828708186,423.73315704439,523.2511306012],description:"23-tET Slendro and Pelog"},slen_pel_jc:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,279.06726965397,341.71502406609,348.83408706747,392.4383479509,392.4383479509,392.4383479509,448.50096908674,418.60090448096,523.2511306012],description:"Slendro/JC PELOG S1c,P1c#,S2d,eb,P2e,S3f,P3f#,S4g,ab,P4a,S5bb,P5b"},slen_pel_schmidt:{frequencies:[261.6255653006,261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,392.4383479509,457.84473927605,457.84473927605,490.54793493862,523.2511306012],description:"Dan Schmidt (Pelog white, Slendro black)"},slendro:{frequencies:[261.6255653006,298.45295203849,346.01554587335,398.38689497567,455.51656649021,523.2511306012],description:"Observed Javanese Slendro scale, Helmholtz/Ellis p. 518, nr.94"},slendro10:{frequencies:[261.6255653006,304.21577360535,342.24274530602,391.67780832635,463.92905474816,523.2511306012],description:"Low gender from Singaraja (banjar Lod Peken), Bali. 1/1=172 Hz. McPhee, 1966."},slendro11:{frequencies:[261.6255653006,299.11221417218,343.62760815601,387.36203100102,452.96366529656,523.2511306012],description:"Low gender from Sawan, Bali. 1/1=167.5 Hz. McPhee, 1966."},slendro2:{frequencies:[261.6255653006,299.13295468097,343.58614396263,395.91119354826,450.08870388136,523.2511306012],description:"Gamelan slendro from Ranchaiyuh, distr. Tanggerang, Batavia. 1/1=282.5 Hz"},slendro3:{frequencies:[261.6255653006,298.44694115772,339.14425131559,391.46936437571,453.48431318771,522.28214737536],description:"Gamelan kodok ngorek. 1/1=270 Hz"},slendro4:{frequencies:[261.6255653006,294.5074669504,344.54514337401,400.3014113889,467.49486258632,523.2511306012],description:"Low gender in saih lima from Kuta, Bali. 1/1=183 Hz. McPhee, 1966"},slendro5_1:{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7; from Lou Harrison"},slendro5_2:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 2"},slendro5_4:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 4"},slendro6:{frequencies:[261.6255653006,295.05549864457,341.56671025356,398.25224940202,461.478427683,523.2511306012],description:"Low gender from Klandis, Bali. 1/1=180 Hz. McPhee, 1966"},slendro8:{frequencies:[261.6255653006,309.85821141747,350.78288084997,406.32350365121,467.71050779996,523.2511306012],description:"Low gender from Tabanan, Bali. 1/1=179 Hz. McPhee, 1966."},slendro9:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Low gender from Singaraja (banjar Panataran), Bali. 1/1=175 Hz. McPhee, 1966."},slendro_7_1:{frequencies:[261.6255653006,299.00064605783,341.71502406609,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 1, From HMSL Manual, also Lou Harrison, Jacques Dudon"},slendro_7_2:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 2, From Lou Harrison, Jacques Dudon's APTOS"},slendro_7_3:{frequencies:[261.6255653006,294.32876096318,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:'Septimal Slendro 3, Harrison, Dudon, called "MILLS" after Mills Gamelan'},slendro_7_4:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:'Septimal Slendro 4, from Lou Harrison, Jacques Dudon, called "NAT"'},slendro_7_5:{frequencies:[261.6255653006,305.22982618403,343.38355445704,400.61414686654,467.3831713443,523.2511306012],description:"Septimal Slendro 5, from Jacques Dudon"},slendro_7_6:{frequencies:[261.6255653006,299.00064605783,341.71502406609,390.53145607553,455.62003208812,523.2511306012],description:"Septimal Slendro 6, from Robert Walker"},slendro_a1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:`Dudon's Slendro A1, "Seven-Limit Slendro Mutations", 1/1 8:2'94 hexany 1.3.7.21`},slendro_a2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,448.50096908674,523.2511306012],description:`Dudon's Slendro A2 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_alv:{frequencies:[261.6255653006,299.00064605783,348.83408706747,406.97310157871,465.11211608996,523.2511306012],description:"Bill Alves, slendro for Gender Barung, 1/1 vol.9 no.4, 1997. 1/1=282.86"},slendro_ang:{frequencies:[261.6255653006,299.00064605783,340.82516392797,388.43396508487,445.83123341082,523.2511306012],description:"Gamelan Angklung Sangsit, North Bali. 1/1=294 Hz"},slendro_av:{frequencies:[261.6255653006,298.97057995496,344.02264297658,395.86362945285,454.20288100724,525.67465946865],description:"Average of 30 measured slendro gamelans, W. Surjodiningrat et al., 1993."},slendro_dudon:{frequencies:[261.6255653006,305.22982618403,348.83408706747,399.70572476481,457.84473927605,523.2511306012],description:'Dudon\'s Slendro from "Fleurs de lumie`re"'},slendro_gum:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.92601754108,525.62941881859],description:"Gumbeng, bamboo idiochord from Banyumas. 1/1=440 Hz"},slendro_ky1:{frequencies:[261.6255653006,297.58776037991,344.33874539242,394.68595744625,449.52853279627,523.2511306012],description:"Kyahi Kanyut Me`sem slendro, Mangku Nagaran, Solo. 1/1=291 Hz"},slendro_ky2:{frequencies:[261.6255653006,302.42139140287,345.87786599062,395.54249276388,453.1886900261,523.2511306012],description:"Kyahi Pengawe' sari, Paku Alaman, Jogya. 1/1=295 Hz"},slendro_laras:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012,598.00129211566,697.66817413493],description:'Lou Harrison, gamelan "Si Betty"'},slendro_m:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:`Dudon's Slendro M from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_madu:{frequencies:[261.6255653006,300.52885648597,345.61604384578,394.49404533893,447.94973572445,522.94897617031],description:"Sultan's gamelan Madoe kentir, Jogjakarta, Jaap Kunst"},slendro_mat:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,455.62003208812,457.84473927605,523.2511306012],description:`Dudon's Slendro Matrix from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_pa:{frequencies:[261.6255653006,304.19649364034,353.69443592699,411.24653512154,478.16333951147,523.2511306012],description:'"Blown fifth" primitive slendro, von Hornbostel'},slendro_pas:{frequencies:[261.6255653006,300.35531433711,343.03050002254,393.12919962609,450.54468214486,523.2511306012],description:"Gamelan slendro of regent of Pasoeroean, Jaap Kunst"},slendro_pb:{frequencies:[261.6255653006,304.72408298441,342.83241505062,399.30842833955,449.24533531117,523.2511306012],description:'"Blown fifth" medium slendro, von Hornbostel'},slendro_pc:{frequencies:[261.6255653006,299.48910562989,342.83241505062,392.44854854484,449.24533531117,523.2511306012],description:'"Blown fifth" modern slendro, von Hornbostel'},slendro_pliat:{frequencies:[261.6255653006,299.73468146833,339.98478643783,393.08060743874,447.03290350508,523.2511306012,599.46936293666,679.96957287566,786.16121487749,894.06580701017],description:"Gender wayang from Pliatan, South Bali (Slendro), 1/1=305.5 Hz"},slendro_q13:{frequencies:[261.6255653006,307.00725675226,360.2608752926,400.8015646157,470.32478922042,523.2511306012],description:"13-tET quasi slendro, Blackwood"},slendro_s1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,398.6675280771,457.84473927605,523.2511306012],description:`Dudon's Slendro S1 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_s2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,455.62003208812,523.2511306012],description:"Dudon's Slendro S2"},slendro_udan:{frequencies:[261.6255653006,305.22982618403,351.32575911795,402.50086969323,465.11211608996,523.2511306012],description:"Slendro Udan Mas (approx)"},slendro_wolf:{frequencies:[261.6255653006,298.18866107946,339.86157848985,395.0032340925,450.20632964813,523.2511306012],description:"Daniel Wolf's slendro. Tuning List 30 5 1997"},slendrob1:{frequencies:[261.6255653006,307.44024341205,355.66611281954,409.9203247543,476.83364134848,523.2511306012],description:"Gamelan miring of Musadikrama, desa Katur, Bajanegara. 1/1=434 Hz"},slendrob2:{frequencies:[261.6255653006,307.55978097874,346.50416420081,398.42969909174,449.35693171058,523.2511306012],description:"Gamelan miring from Bajanegara. 1/1=262 Hz"},slendrob3:{frequencies:[261.6255653006,304.90191053936,342.27700149692,398.33972372326,447.51732140012,523.2511306012],description:"Gamelan miring from Ngumpak, Bajanegara. 1/1=266 Hz"},slendroc1:{frequencies:[261.6255653006,297.59222964268,344.42030317161,394.72197985873,449.50490455178,523.2511306012],description:"Kyahi Kanyut mesem slendro (Mangku Nagaran Solo). 1/1=291 Hz"},slendroc2:{frequencies:[261.6255653006,302.44445076078,346.01554587335,396.09235530397,453.15466093696,523.2511306012],description:"Kyahi Pengawe sari (Paku Alaman, Jogja). 1/1=295 Hz."},slendroc3:{frequencies:[261.6255653006,301.39807245198,344.42030317161,395.40657391157,451.84778706363,523.2511306012],description:"Gamelan slendro of R.M. Jayadipura, Jogja. 1/1=231 Hz"},slendroc4:{frequencies:[261.6255653006,299.14332201883,343.8239850859,396.09235530397,450.28451247858,523.2511306012],description:"Gamelan slendro, Rancha iyuh, Tanggerang, Batavia. 1/1=282.5 Hz"},slendroc5:{frequencies:[261.6255653006,299.83528893666,340.07120590121,393.12919962609,447.17417015401,523.2511306012],description:"Gender wayang from Pliatan, South Bali. 1/1=611 Hz"},slendroc6:{frequencies:[261.6255653006,296.73398952435,343.8239850859,396.7793260952,453.9405988926,527.19506190947,607.33963549452,696.44215167899,797.23415748628,918.4302691641,1071.58188326661],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},slendrod1:{frequencies:[261.6255653006,292.47977325983,340.6610152784,389.06292924114,444.85552088095,523.2511306012],description:"Gender wayang from Ubud (S. Bali). 1/1=347 Hz"},smith_eh:{frequencies:[261.6255653006,272.7117507892,292.30354792656,313.30283124826,326.5788018031,350.04044239751,364.87314355143,391.08587539224,407.65784362321,436.94425707006,468.33462614046,488.17995458879,523.2511306012],description:"Robert Smith's Equal Harmony temperament (1749)"},smith_mq:{frequencies:[261.6255653006,273.37438418823,292.50629623572,312.97714101186,327.03200500996,349.91910755601,365.63292511375,391.22148485648,408.79006910398,437.39894995248,468.01000388518,489.02693031834,523.2511306012],description:"Robert Smith approximation of quarter comma meantone fifth"},"scalamakesrc2\\smithgw-ball":{frequencies:[261.6255653006,267.07609791103,272.52663052146,274.70684356563,280.31310567921,286.15296204753,294.32876096318,300.46061014991,305.22982618403,306.59245933664,313.95067836072,320.49131749323,327.03195662575,333.84512238879,336.37572681506,343.38355445704,350.39138209902,357.69120255941,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,480.73697623985,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Ball 2 around tetrad lattice hole"},smithgw46:{frequencies:[261.6255653006,273.72380653152,313.47993226845,327.97605323154,364.46098649856,392.98113253789,436.69740466987,456.89141950378,523.2511306012],description:'Gene Ward Smith 46-tET subset "Star"'},smithgw46a:{frequencies:[261.6255653006,282.09853500802,313.47993226845,327.97605323154,375.61187043063,392.98113253789,436.69740466987,470.87026054824,523.2511306012],description:'46-tET version of "Star", alternative version'},smithgw72a:{frequencies:[261.6255653006,285.30470202322,299.37379946195,326.46944327063,342.56848033562,373.57357677338,391.99543598175,427.47405410759,435.78442404634,457.27406033445,498.66089874196,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72c:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72d:{frequencies:[261.6255653006,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72e:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72f:{frequencies:[261.6255653006,326.46944327063,349.22823143301,435.78442404634,466.16376151809,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72g:{frequencies:[261.6255653006,326.46944327063,349.22823143301,391.99543598175,419.32216217931,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72h:{frequencies:[261.6255653006,279.86396690685,314.13668154225,349.22823143301,391.99543598175,435.78442404634,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 09-01-2002"},smithgw72i:{frequencies:[261.6255653006,279.86396690685,293.66476791741,314.13668154225,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,470.6732130613,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset version of Duodene, TL 02-06-2002"},smithgw72j:{frequencies:[261.6255653006,274.52698453615,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"{225/224, 441/440} tempering of decad, 72-et version (2002)"},smithgw84:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:'Gene Ward Smith 84-tET subset, 11-limit temperament "Orwell", 2002'},smithgw_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,350.39138209902,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,490.54793493862,523.2511306012],description:"Gene Ward Smith chord analogue to periodicity blocks, TL 12-07-2002"},smithgw_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,299.00064605783,305.22982618403,320.49131749323,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,427.14378008261,448.50096908674,457.84473927605,478.40103369253,488.36772189445,512.57253609913,523.2511306012],description:"Gene Ward Smith symmetrical 7-limit JI version of Blackjack, TL 10-5-2002"},smithgw_45:{frequencies:[261.6255653006,267.02002970726,269.13627541126,274.68560334708,276.86260193655,282.57123920205,288.39758300936,290.68325478745,296.67686217097,299.02814898089,305.19382000629,311.48661940174,313.95528147508,320.42873367481,322.96826575344,329.62755691287,336.42415617173,339.09045868095,346.08217376006,348.82502010853,356.01745236555,363.35818557229,366.23795155866,373.78942366597,376.75185941212,384.52011812375,392.44854854484,395.55886785613,403.71490654806,406.9145164708,415.30469757995,423.86787605389,427.22720671064,436.03621571368,439.49198556474,448.5538823653,457.80262665414,461.43090443914,470.94516310483,474.67759826036,484.46499093218,494.45418731234,498.37294408452,508.64890891624,512.68016480935,523.2511306012],description:"Gene Ward Smith large limma repeating 5-tone MOS"},smithgw_58:{frequencies:[261.6255653006,264.89588486686,267.57160087561,269.80136421624,274.70684356563,279.06726965397,282.55561052465,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.49231810831,305.22982618403,310.07474405997,313.95067836072,317.12189733406,319.76457981184,323.76163705949,327.03195662575,332.97799220076,336.37572681506,340.54567384169,343.38355445704,348.83408706747,353.19451315581,356.76213450082,359.73515228832,366.27579142084,370.01329949656,373.75080757229,380.54627680087,383.71749577421,387.59343007496,392.4383479509,398.6675280771,401.98975747775,406.97310157871,411.12588832951,418.60090448096,423.83341578697,428.11456140098,431.68218274599,436.04260883433,441.49314144476,448.50096908674,452.23847716247,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,484.4917875937,490.54793493862,498.33441009638,507.3950357345,511.62332769895,516.79124009995,523.2511306012],description:"Gene Ward Smith 58-tone epimorphic superset of Partch's 43-tone scale"},smithgw_9:{frequencies:[261.6255653006,279.06726965397,305.22982618403,327.03195662575,348.83408706747,392.4383479509,418.60090448096,448.50096908674,490.54793493862,523.2511306012],description:'Gene Ward Smith "Miracle-Magic square" tuning, genus chromaticum of ji_12a'},"smithgw_al-baked":{frequencies:[261.6255653006,277.59364499865,293.85651796007,311.0721560172,330.05816364769,349.39467974592,369.86402907174,392.4383479509,415.42941801053,439.76742419786,466.60823379256,493.94455998605,522.88238970142],description:"Baked alaska, with beat ratios of 2 and 3/2"},"smithgw_al-fried":{frequencies:[261.6255653006,277.00141553195,293.28091128458,310.96067952124,329.23597434237,348.58531822795,369.59898601143,391.32048195179,414.31855981944,439.29480556849,465.11235566178,492.44721175277,522.13326741512],description:"Fried alaska, with octave-fifth brats of 1 and 2"},smithgw_asbru:{frequencies:[261.6255653006,275.52281548997,293.66476791741,313.00128725319,329.62755691287,351.33206601369,367.77883484915,391.99543598175,415.30469757995,440,468.97204376297,490.92584627687,523.2511306012],description:"Modified bifrost (2003)"},smithgw_bifrost:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,413.66634097248,437.39889945791,466.55882736321,489.02683710225,523.2511306012],description:"Six meantone fifths, four pure, two of sqrt(2048/2025 sqrt(5))"},smithgw_cauldron:{frequencies:[261.6255653006,275.03056468741,291.83931845209,312.58541512404,325.54230007562,350.31873582686,364.83969341757,390.77519652096,414.65779561271,435.90375768372,469.07960710644,486.243977751,523.2511306012],description:"Circulating temperament with two pure 9/7 thirds"},smithgw_ck:{frequencies:[195.99771799087,198.06437430898,200.15282320192,202.2632921446,203.72940721765,205.87758869102,208.04842120778,210.24214482145,211.76609376362,213.99901760782,216.25548480725,218.5357448459,220.11981156469,222.44081817627,224.78629944762,227.15651084977,228.80306427848,231.21563094,233.65363506284,235.34728316698,237.82885399313,240.33658984216,242.87076938222,244.63122826831,247.21069030843,249.81735238129,252.45149840587,254.28140507407,256.96262135434,259.67210915034,262.4101678886,264.31225911206,267.09924514556,269.91561641866,272.7616843206,274.73881033537,277.63573538138,280.56320805899,282.59688215652,285.57666497222,288.58786914203,291.63082264784,293.74472081062,296.84205135845,299.9720393359,303.13503255793,305.33231946532,308.55183127196,311.80529233825,315.09305703284,317.37702217863,320.72353853051,324.10533989702,327.52280172307,329.89686439088,333.37539375097,336.89059979959,339.33256534187,342.91058750208,346.52633537645,350.18021075922,352.71850659998,356.43767199462,360.19605541958,363.99406623991,366.6324923874,370.49837299068,374.40501441099,378.35285076765,381.09535716275,385.11373623244,389.17448849491,391.99543598174],description:"Catakleismic temperament, g=316.745, 11-limit"},smithgw_decab:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,439.53094970501,488.36772189445,523.2511306012],description:"(10/9) <==> (16/15) transform of decaa"},smithgw_decac:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,498.33441009638,523.2511306012],description:"inversion of decaa"},smithgw_decad:{frequencies:[261.6255653006,280.31310567921,311.45900631024,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,467.18850946536,498.33441009638,523.2511306012],description:"inversion of decab"},smithgw_diff13:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,313.95067836072,320.35783506196,336.37572681506,406.97310157871,427.32175665765,436.04260883433,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"mod 13 perfect difference set, 7-limit"},smithgw_dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},smithgw_exotic1:{frequencies:[261.6255653006,274.95996987324,293.39100498914,313.05750197389,327.96500300935,349.94905375768,367.78508905896,392.4383479509,411.12588832951,438.68435539504,468.09011223803,491.94750426812,523.2511306012],description:"Exotic temperament featuring four pure 14/11 thirds and two pure fifths"},smithgw_glumma:{frequencies:[261.6255653006,269.10058145205,299.00064605783,313.95067836072,327.03195662575,358.80077526939,373.75080757229,392.4383479509,436.04260883433,448.50096908674,457.84473927605,512.57253609913,523.2511306012],description:"Gene Smith's Glumma scale, 7-limit, 2002"},smithgw_gm:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:'Gene Ward Smith "Genesis Minus" periodicity block'},smithgw_graileq:{frequencies:[261.6255653006,274.83794140225,293.02845982215,312.42294214419,328.20064112269,350.39711148969,365.67350481015,391.53226450123,414.40482204179,438.61355268439,469.63029662389,490.10494633744,523.2511306012],description:"56% RMS grail + 44% JI grail"},smithgw_grailrms:{frequencies:[261.6255653006,274.64037495938,293.11160698959,312.82513967025,328.38692028068,350.6222941497,365.93760986436,391.94882001935,414.52240989365,438.39608269016,469.55771333591,490.068176414,523.2511306012],description:"RMS optimized Holy Grail"},smithgw_hahn12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Hahn-reduced 12 note scale, Fokker block 225/224, 126/125, 64/63"},smithgw_hahn15:{frequencies:[261.6255653006,279.06726965397,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Hahn-reduced 15 note scale"},smithgw_hahn16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Hahn-reduced 16 note scale"},smithgw_hahn19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 19 note scale"},smithgw_hahn22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 22 note scale"},smithgw_indianred:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"32805/32768 Hahn-reduced"},smithgw_klv:{frequencies:[261.6255653006,271.78681896552,282.34272472006,293.30861211826,314.10491445143,326.30440921209,338.97771913949,352.14324873572,377.11107157735,391.75765725694,406.97310157871,422.77949745352,452.75560414132,470.34014155688,488.60764618722,523.2511306012],description:"Variant of kleismic with 9/7 thirds, g=316.492"},smithgw_meandin:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,470.92601754108,504.56359022259,523.2511306012],description:"Gene Smith, inverted detempered 7-limit meantone"},smithgw_meanred:{frequencies:[261.6255653006,281.29980781121,291.99281841585,313.95067836072,325.57848126297,350.39138209902,363.36884069528,390.69417751556,420.46965851882,436.04260883433,468.83301301868,486.65469735975,523.2511306012],description:"171-et Hahn reduced rational Meantone[12]"},smithgw_meantune:{frequencies:[261.6255653006,273.55401844854,279.77233440758,292.56174910339,312.85829351777,327.16018629281,334.59705725462,349.85254391288,365.77071543428,374.29488261541,391.03456781852,418.40555295943,437.51985793188,468.14464283802,489.08159472971,500.47948461038,523.2511306012],description:"Meantune scale/temperament, Gene Ward Smith, 2003"},smithgw_mir22:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,285.40970760065,299.00064605783,305.22982618403,319.76457981184,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,428.11456140098,448.50096908674,457.84473927605,479.64686971777,490.54793493862,512.78610798918,523.2511306012],description:"11-limit Miracle[22]"},smithgw_mmt:{frequencies:[261.6255653006,273.37431312998,292.50627485027,307.38829724655,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.12588832951,437.39890198442,459.65271605653,489.02683710225,523.2511306012],description:"Modified meantone with 5/4, 14/11 and 44/35 major thirds, TL 17-03-2003"},smithgw_modmos12a:{frequencies:[261.6255653006,265.27772209197,292.31087910123,304.72408298441,326.59518553839,340.46429857933,364.90060015836,391.09077971329,407.69874723177,425.01198472693,455.51656649021,488.21056770985,523.2511306012],description:"A 12-note modmos in 50-et meantone"},smithgw_octoid:{frequencies:[261.6255653006,272.34559486824,274.88944875317,277.45706359738,280.04865972334,282.66446436432,285.30470202322,296.99497716113,299.76906949343,302.56907333554,305.39522895084,308.24778413898,311.12698372208,323.87531915696,326.90048829645,329.95391413777,333.03585868997,336.14659218049,339.28638158975,353.18853996009,356.48751029933,359.81729479041,363.17817915623,366.5704580819,369.99442271164,385.15483391523,388.75238658,392.38354231563,396.04861270515,399.74791910495,403.48177901006,420.01432465796,423.93748365756,427.89728706578,431.89407466632,435.9281969008,440,458.02886886968,462.30710409523,466.62530033172,470.98382811593,475.38306960714,479.82340237272,499.48402328631,504.14947188193,508.85849826899,513.6115065207,518.40891338474,523.2511306012],description:"Octoid temperament, g=16.096, oct=1/8, 11-limit"},smithgw_orw18r:{frequencies:[261.6255653006,269.10058145205,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,448.50096908674,457.84473927605,474.80195184183,490.54793493862,523.2511306012],description:'Rational version of two cycles of 9-tone "Orwell"'},smithgw_pel1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 1"},smithgw_pel2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 2"},smithgw_pel3:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 3"},smithgw_pk:{frequencies:[261.6255653006,271.01659746112,280.74472171431,290.822034715,313.8821415949,325.1489200649,336.82012073975,348.91025643633,376.57634157395,390.09352641046,404.09590743895,418.60090448096,451.79296003201,468.01003810189,484.80922990434,523.2511306012],description:"Parakleismic temperament, g=315.263, 5-limit"},smithgw_pris:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_prisa:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,439.53094970501,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_pum13marv:{frequencies:[261.6255653006,293.67396865289,305.56991629828,343.00138030143,326.66798000724,366.68389807519,349.22276077151,392.00157668785,407.88051296056,457.84473927605,436.04260883433,489.45661357347,549.41368713126,523.2511306012],description:"pum13 marvel tempered and in epimorphic order"},smithgw_qm3a:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode A, 72-tET, TL 04-01-2002"},smithgw_qm3b:{frequencies:[261.6255653006,279.86396690685,299.37379946195,326.46944327063,349.22823143301,373.57357677338,391.99543598175,419.32216217931,448.5538823653,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode B"},smithgw_ragasyn1:{frequencies:[261.6255653006,269.16210421872,290.69507255622,313.95067836072,322.99452506247,348.83408706747,363.36884069528,392.4383479509,403.74315632809,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Ragasyn 6561/6250 81/80 scale"},smithgw_rainbow:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.51268695591,327.03195662575,349.91912034749,365.63284274659,391.22147055517,412.03444522126,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Circulating 1/4-comma meantone, Gene Ward SMith"},smithgw_ratwell:{frequencies:[261.6255653006,275.62199471997,293.02063313667,310.07474405997,326.72451751701,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.57747881743,465.11211608996,489.99465727995,523.2511306012],description:"7-limit rational well-temperament"},smithgw_ratwolf:{frequencies:[261.6255653006,272.55669785235,292.25605339318,313.37920299881,326.47268679644,350.06888377949,364.69531895389,391.05410158062,407.39296674476,436.83777202739,468.410735204,487.98168129749,523.2511306012],description:"Eleven fifths of (418/5)^(1/11) and one 20/13 wolf, G.W. Smith 2003"},smithgw_rectoo:{frequencies:[261.6255653006,290.69507255622,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Hahn-reduced circle of fifths via <12 19 27 34| kernel"},smithgw_sc19:{frequencies:[261.6255653006,269.16210421872,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,508.60009894437,523.2511306012],description:"Fokker block from commas <81/80, 78732/78125>, Gene Ward Smith 2002"},smithgw_sch13:{frequencies:[261.6255653006,269.71217215021,278.04872701265,282.14859498561,290.86954990528,295.15846273282,304.2815407612,313.68660297237,318.31195648825,328.15068782436,332.98931632582,343.28171142549,353.89223299652,359.11042631209,370.21019888355,375.66900084958,387.28058594818,392.99109319609,405.13808832031,417.66053353744,423.81899742763,436.9188548657,443.36128543927,457.06517711961,471.19264083172,478.14044600934,492.91932687455,500.18749236202,515.64783010531,523.2511306012],description:"13-limit schismic temperament, g=704.3917, TL 31-10-2002"},smithgw_sch13a:{frequencies:[261.6255653006,266.49502311502,271.45511438723,280.18048669638,285.39529457963,294.56874561631,300.051354061,305.6360048159,315.46005229837,321.33149462105,331.66004360268,337.8330052901,344.12086009392,355.18192699392,361.79268541866,373.4217751344,380.37201938485,392.59830625439,399.90547017058,407.34863733398,420.4420328577,428.26743302475,442.03321824291,450.26048038501,458.64087358289,473.38295124548,482.19370453904,497.69284002863,506.95605959354,523.2511306012],description:"13-limit schismic temperament, g=702.660507, TL 31-10-2002"},smithgw_scj22a:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,301.39265122629,313.95067836072,327.03195662575,334.88072358477,348.83408706747,361.67118147155,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 15625/15552 = [6,5,22,37,-18,-6] catakleismic"},smithgw_scj22b:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"5120/5103 ^ 225/224 = [1,-8,-14,-10,25,-15] schismic candidate"},smithgw_scj22c:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 65625/65536 = [7,-3,827,7,-21] orwell candidate"},smithgw_secab:{frequencies:[261.6255653006,274.07613169002,291.39807132323,313.10572011471,348.73657263424,365.33268718488,392.54808236386,417.35759110361,437.21932894603,486.97408086388,523.2511306012],description:"{126/125, 176/175} tempering of decab, 328-et version"},smithgw_secac:{frequencies:[261.6255653006,281.11531641881,298.8821409504,313.10572011471,348.73657263424,374.71564313773,392.54808236386,417.35759110361,448.44857247831,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decac, 328-et version"},smithgw_secad:{frequencies:[261.6255653006,281.11531641881,313.10572011471,328.00618883132,348.73657263424,374.71564313773,392.54808236386,437.21932894603,469.78990700991,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decad, 328-et version"},smithgw_smalldi11:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,373.75080757229,423.93031414449,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Small diesic 11-note block, <10/9, 126/125, 1728/1715> commas"},smithgw_smalldi19a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,299.00064605783,305.22982618403,313.95067836072,317.94773560837,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,430.56093032327,436.04260883433,448.50096908674,457.84473927605,502.32108537715,508.71637697339,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 1728/1715> commas"},smithgw_smalldi19b:{frequencies:[261.6255653006,266.96486255163,274.70684356563,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,498.33441009638,512.78610798918,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 2401/2400> commas"},smithgw_smalldi19c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,313.95067836072,320.49131749323,327.03195662575,336.37572681506,343.38355445704,373.75080757229,381.53728273004,392.4383479509,400.61414686654,436.04260883433,448.50096908674,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"Small diesic 19-note scale containing glumma"},smithgw_smalldiglum19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,280.40333801024,286.95745534843,312.9293240034,320.24370022528,327.729041887,335.38934511627,343.22869944589,374.29355081838,383.0422478503,391.99543598175,401.15789496562,437.46578647972,447.69106452518,458.15534711532,468.86422071654,511.30005826145,523.2511306012],description:'Small diesic "glumma" variant of 19-note MOS, 31/120 version'},smithgw_smalldimos11:{frequencies:[261.6255653006,267.74077300753,305.78200836532,312.9293240034,320.24370022528,365.74467430283,374.29355081838,427.47405410759,437.46578647972,447.69106452518,511.30005826145,523.2511306012],description:"Small diesic 11-note MOS, 31/120 version"},smithgw_smalldimos19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,298.79793764201,305.78200836532,312.9293240034,320.24370022528,327.729041887,357.39105439675,365.74467430283,374.29355081838,383.0422478503,417.71053321823,427.47405410759,437.46578647972,447.69106452518,458.15534711532,499.62194879119,511.30005826145,523.2511306012],description:"Small diesic 19-note MOS, 31/120 version"},smithgw_star:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, untempered version'},smithgw_star2:{frequencies:[261.6255653006,282.55561052465,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, alternative untempered version'},starra:{frequencies:[261.6255653006,274.07613169002,294.49338559574,313.10572011471,328.00618883132,343.61575980934,374.71564313773,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrb:{frequencies:[261.6255653006,274.07613169002,287.1192112957,305.26548915336,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,479.82340237272,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrc:{frequencies:[261.6255653006,274.07613169002,287.1192112957,313.10572011471,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_tetra:{frequencies:[261.6255653006,274.84135386022,293.90210492181,314.2847539672,326.44746606412,342.93767672779,366.7210324511,392.15380743582,419.35039192746,435.57910814854,457.58200907672,489.31615916483,523.2511306012],description:"{225/224, 385/384} tempering of two-tetrachord 12-note scale"},smithgw_tr31:{frequencies:[261.6255653006,267.54129532085,292.57243455474,299.18791603519,305.95298478736,334.57791819083,342.14320575162,349.87955533643,391.26571058456,400.11279059885,409.15991580663,447.44088028055,457.55816161244,467.90420651233,511.68128147674,523.2511306012],description:"6/31 generator supermajor seconds tripentatonic scale"},smithgw_tr7_13:{frequencies:[261.6255653006,183.87449048025,346.05860897284,243.21533855007,457.74028507734,321.70694650116,605.46440189891,425.52973856044,299.06887661109,562.85871464284,395.58580335293,744.50714985079,523.2511306012],description:"81/80 ==> 28561/28672"},smithgw_tr7_13b:{frequencies:[261.6255653006,372.25357492539,395.58580335293,281.42935732142,299.06887661109,425.52973856044,302.73220094945,321.70694650116,457.74028507734,486.43067710015,346.05860897284,367.7489809605,523.2511306012],description:"reverse reduced 81/80 ==> 28561/28672"},smithgw_tr7_13r:{frequencies:[261.6255653006,367.7489809605,346.05860897284,486.43067710015,457.74028507734,321.70694650116,302.73220094945,425.52973856044,299.06887661109,281.42935732142,395.58580335293,372.25357492539,523.2511306012],description:"reduced 81/80 ==> 28561/28672"},smithgw_tra:{frequencies:[261.6255653006,128.35937755236,399.56478905052,196.03545836752,610.23096296248,299.39301413087,931.96857771927,457.24471305759,224.33452437931,698.32199734535,342.61245382262,1066.50464849657,523.2511306012],description:"81/80 ==> 1029/512"},smithgw_tre:{frequencies:[261.6255653006,256.71872396454,399.56476227799,392.07084290614,305.11544059319,299.39293769309,465.98419519089,457.24482979639,448.66910888407,349.16106442144,342.6124767791,533.2523889322,523.2511306012],description:"81/80 ==> 1029/512 ==> reduction"},smithgw_treb:{frequencies:[261.6255653006,266.6261944661,342.6124767791,349.16106442144,448.66910888407,457.24482979639,465.98419519089,299.39293769309,305.11544059319,392.07084290614,399.56476227799,513.43744792908,523.2511306012],description:"reversed 81/80 ==> 1029/512 ==> reduction"},smithgw_trx:{frequencies:[261.6255653006,490.17835855476,354.35176059633,331.954494127,479.94227969828,449.60690021487,325.02250210538,304.47902995326,285.23403465053,412.39349145653,386.32762147798,279.2776760715,523.2511306012],description:"reduced 3/2->7/6 5/4->11/6 scale"},smithgw_trxb:{frequencies:[261.6255653006,279.2776760715,386.32762147798,412.39349145653,285.23403465053,304.47902995326,325.02250210538,449.60690021487,479.94227969828,331.954494127,354.35176059633,490.17835855476,523.2511306012],description:"reversed reduced 3/2->7/6 5/4->11/6 scale"},smithgw_wa:{frequencies:[261.6255653006,273.6474362764,299.37379946195,313.13022722746,327.51877211613,349.22823143301,374.77430422696,391.99543598175,417.97870684853,437.18511000944,469.1652354389,500.26367760099,523.2511306012],description:"Wreckmeister A temperament, TL 2-6-2002"},smithgw_wa120:{frequencies:[261.6255653006,273.99891691894,298.79793764201,312.9293240034,327.729041887,349.22823143301,374.29355081838,391.99543598175,417.71053321823,437.46578647972,468.86422071654,499.62194879119,523.2511306012],description:"120-tET version of Wreckmeister A temperament"},smithgw_wb:{frequencies:[261.6255653006,280.76349612739,291.78605424516,313.13022722746,327.51877211613,349.22823143301,365.2755039332,391.99543598175,417.97870684853,437.18511000944,469.1652354389,487.58430040208,523.2511306012],description:"Wreckmeister B temperament, TL 2-6-2002"},smithgw_well1:{frequencies:[261.6255653006,275.92984511873,292.92635710626,310.42107575858,327.5229776175,349.2237102284,367.90646015831,391.734151992,413.8947676781,437.99072463899,465.63161363786,490.54194687775,523.2511306012],description:"Well-temperament, Gene Ward Smith (2005)"},smithgw_whelp1:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.05120395042,368.50381975103,390.45372436301,413.66634097248,438.25895612273,464.36382062247,491.65133958137,523.2511306012],description:"well-temperament with one pure third, Gene Ward Smith, 2003"},smithgw_whelp2:{frequencies:[261.6255653006,275.85000668176,292.43269265164,309.98104674077,327.03195662575,347.97308568611,368.21146504308,391.7894791814,413.34036955908,438.14417346548,464.48314871299,489.73685071229,523.2511306012],description:"well-temperament with two pure thirds"},smithgw_whelp3:{frequencies:[261.6255653006,275.96871294479,292.50627485027,310.03485655885,327.03195662575,349.46135677641,368.11883862276,391.73393619399,413.66634097248,436.82669499534,464.84945270756,489.66742197778,523.2511306012],description:"well-temperament with three pure thirds"},smithgw_wiz28:{frequencies:[261.6255653006,269.80136421624,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,508.71637697339,523.2511306012],description:"11-limit Wizard[28]"},smithgw_wiz34:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[34]"},smithgw_wiz38:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,285.40970760065,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,339.14425131559,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,403.65087217807,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,479.64686971777,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[38]"},smithgw_wreckpop:{frequencies:[261.6255653006,272.73569398658,292.31087910123,313.29104303136,326.59518553839,350.03605285217,364.90060015836,391.09077971329,419.16071913933,436.9606979923,455.51656649021,501.93603498211,523.2511306012],description:'"Wreckmeister" 13-limit meanpop (50-et) tempered thirds'},smithj12:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,331.11985608357,344.91651675372,363.36884069528,392.4383479509,408.78994578219,441.49314144476,459.88868900496,496.67978412536,523.2511306012],description:"J. Smith, 5-limit JI scale, MMM 21-3-2006"},smithj17:{frequencies:[261.6255653006,272.57820116223,283.17034563789,295.02492750576,308.97787266236,319.3201344739,332.68808325276,348.42227432308,363.00854876594,377.11473546037,392.90218486657,411.48414905414,425.25755219187,443.06044202496,464.01459698705,479.54632553791,499.62194879119,523.2511306012],description:"J. Smith 17-tone well temperament, MMM 12-2006"},smithrk_19:{frequencies:[261.6255653006,274.68253637698,286.11368885031,294.3308008075,305.19387818096,313.95878694534,327.0246436172,343.34529416761,348.83287827711,366.24211271841,381.48359653409,392.43970784476,406.92376081862,418.61050714007,436.03134720211,457.79213919624,470.93981233279,488.32112480698,508.64303280756,523.2511306012],description:"19 out of 612-tET by Roger K. Smith, 1978"},smithrk_mult:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:'Roger K. Smith, "Multitonic" scale, just version'},solar:{frequencies:[261.6255653006,394.58976180129,774.00176545642,2207.36533954793,5481.83445910426,34573.03685904828,65024.37680021134,105705.6559450381],description:"Solar system scale: 0=Pluto, 8=Mercury. 1/1=248.54 years period"},solemn:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Solemn 6"},songlines:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Songlines.DEM, Bill Thibault and Scott Gresham-Lancaster. 1992 ICMC (=rectsp6)"},sorge:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Sorge's Monochord (1756)"},sorge1:{frequencies:[261.6255653006,276.86979852503,293.00227310437,311.47852302926,328.88393162803,349.6228209638,369.57684148724,391.5530240856,415.30469757995,439.00737933323,466.69047534984,493.32589719545,523.2511306012],description:"Georg Andreas Sorge, 1744 (A)"},sorge2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.88393162803,348.83408706747,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Georg Andreas Sorge, 1744 (B)"},sorge3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Georg Andreas Sorge, well temperament, (1756, 1758)"},sparschuh:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,439.53094970501,465.69350623507,491.85606276513,523.2511306012],description:"Andreas Sparschuh WTC temperament, 1/1=C=250, modified Collatz sequence"},sparschuh2:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,438.48444744381,465.69350623507,491.85606276513,523.2511306012],description:"Modified Sparschuh temperament with A=419Hz by Tom Dent"},spec1_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,523.2511306012],description:"Spectrum sequence of 8/7: 1 to 27 reduced by 2/1"},spec1_17:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/6: 1 to 27 reduced by 2/1"},spec1_25:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 5/4: 1 to 25 reduced by 2/1"},spec1_33:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of 4/3: 1 to 29 reduced by 2/1"},spec1_4:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/5: 1 to 25 reduced by 2/1"},spec1_5:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 1.5: 1 to 27 reduced by 2/1"},specr2:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of sqrt(2): 1 to 29 reduced by 2/1"},specr3:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Spectrum sequence of sqrt(3): 1 to 31 reduced by 2/1"},spon_chal1:{frequencies:[261.6255653006,280.31310567921,285.40970760065,286.15296204753,348.83408706747,392.4383479509,420.46965851882,428.11456140098,429.2294430713,523.2511306012],description:"JC Spondeion, from discussions with George Kahrimanis about tritone of spondeion"},spon_chal2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,285.40970760065,348.83408706747,392.4383479509,413.43299207996,418.60090448096,428.11456140098,523.2511306012],description:"JC Spondeion II, 10 May 1997. Various tunings for the parhypatai and hence trito"},spon_mont:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Montford's Spondeion, a mixed septimal and undecimal pentatonic, 1923"},spon_terp:{frequencies:[261.6255653006,285.40970760065,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Subharm. 6-tone series, guess at Greek poet Terpander's, 6th c. BC & Spondeion, Winnington-Ingram (1928)"},stade:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.28772967674,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Organs in St. Cosmae, Stade; Magnuskerk, Anloo; H.K. Sluipwijk, modif. 1/4 mean"},stanhope:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.52264545758,465.11211608996,489.99465727995,523.2511306012],description:"Well temperament of Charles, third earl of Stanhope (1806)"},stanhope2:{frequencies:[261.6255653006,275.85537639807,293.11251278827,310.16223770573,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.66634097248,437.85193595173,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament (real version?) with 1/3 synt. comma temp."},stanhope_f:{frequencies:[261.6255653006,275.62199471997,292.46014274879,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,436.79202494356,465.11211608996,489.99465727995,523.2511306012],description:"Stanhope temperament, equal beating version by Farey (1807)"},stanhope_s:{frequencies:[261.6255653006,275.77758308753,293.11247215425,310.2497806633,327.03195662575,348.83408706747,367.7034443005,392.4383479509,413.66637442451,437.85181455341,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament, alt. version with 1/3 syntonic comma"},starling:{frequencies:[261.6255653006,278.9816419584,293.66476791741,313.14630527334,327.50195613664,349.22823143301,367.60851651046,391.99543598175,418.00016846495,437.16266336983,466.16376151809,490.69849857048,523.2511306012],description:"Starling temperament, Herman Miller (1999)"},stearns:{frequencies:[261.6255653006,299.00064605783,336.37572681506,366.27579142084,398.6675280771,448.50096908674,504.56359022259,523.2511306012],description:"Dan Stearns, guitar scale"},stearns2:{frequencies:[261.6255653006,280.31310567921,287.78812183066,299.00064605783,313.95067836072,317.68818643644,336.37572681506,340.11323489078,355.06326719367,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,429.81342870813,444.76346101102,448.50096908674,467.18850946536,470.92601754108,485.87604984397,497.08857407114,504.56359022259,523.2511306012],description:'Dan Stearns, scale for "At A Day Job" based on harmonics 10-20 and 14-28'},stearns3:{frequencies:[261.6255653006,304.11599009871,327.88291945286,364.30920726489,423.47641042702,470.52269644143,546.93995798074,607.70247408742,706.39900722312,784.8766959018],description:"Dan Stearns, trivalent version of Bohlen's Lambda scale"},stearns4:{frequencies:[261.6255653006,296.65550714972,336.37572681506,347.46339693852,393.986457405,446.73865184892,461.46412096988,523.2511306012],description:"Dan Stearns, 1/4-septimal comma temperament, tuning-math 2-12-2001"},steldek1:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,343.38355445704,353.19451315581,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 5 7 9 dekany"},steldek1s:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,339.14425131559,343.38355445704,353.19451315581,360.4025644447,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,482.88312345521,490.54793493862,494.47231841813,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated two out of 1 3 5 7 9 dekany"},steldek2:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Stellated two out of 1 3 5 7 11 dekany"},steldek2s:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,295.09524211152,299.7792935736,302.17752792219,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,349.7425091692,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,440.49202321019,449.66894036041,454.06089845559,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Superstellated two out of 1 3 5 7 11 dekany"},steleik1:{frequencies:[220,220.57291666667,224.58333333333,225,226.875,229.16666666667,232.03125,235.27777777778,238.21875,240.625,242.63020833333,243.08035714286,247.5,248.14453125,252.08333333333,252.65625,255.234375,256.66666666667,257.8125,262.5,264.6875,270.703125,272.25,275,277.29166666667,278.4375,280.72916666667,283.59375,288.75,294.09722222222,297.7734375,302.5,308.80208333333,309.375,311.953125,315,315.10416666667,317.625,320.83333333333,324.10714285714,324.84375,330,330.859375,336.11111111111,336.875,340.3125,343.75,346.5,346.61458333333,350,352.91666666667,353.57142857143,360.9375,366.66666666667,371.25,378.125,385,388.92857142857,392.12962962963,393.75,397.03125,401.04166666667,403.33333333333,412.5,415.9375,423.5,425.390625,427.77777777778,432.14285714286,433.125,440],description:"Stellated Eikosany 3 out of 1 3 5 7 9 11"},steleik1s:{frequencies:[123.47082531403,123.79236392162,125.33976847064,127.32928860509,129.9819821177,130.22313607339,131.308328874,132.59082945654,132.63467563031,133.69575303535,135.04621518722,136.42423779117,136.73429287706,138.90467847828,139.26640941182,141.47698733899,141.79852594658,143.24544968073,144.69237341488,145.8499124022,145.89814319334,147.3231438406,148.55083670594,148.82644122673,151.92699208562,154.33853164254,156.26776328807,156.6747105883,159.16161075637,160.43490364242,160.48795751267,162.05545822466,163.70908534941,165.05648522882,165.43161360434,165.73853682068,167.11969129419,168.80776898403,169.77238480679,173.63084809785,175.077771832,175.80123369908,178.26100404713,179.05681210091,180.06162024963,181.89898372156,182.31239050275,185.20623797104,185.68854588243,189.06470126211,189.41547065221,190.99393290764,192.92316455317,195.33470411009,198.06778227459,200.54362955302,202.56932278083,204.25740047067,204.63635668676,208.35701771743,208.89961411773,212.21548100849,212.69778891987,214.8681745211,216.07394429955,217.03856012232,220.07531363843,220.98471576091,222.82625505891,227.89048812843,229.19271948917,231.50779746381,233.43702910934,233.87012192772,234.4016449321,236.33087657764,238.74241613455,241.07423537553,241.15395569146,243.083187337,246.94165062806],description:"Superstellated Eikosany 3 out of 1 3 5 7 9 11"},steleik2:{frequencies:[123.47082531403,124.49974885831,126.04313417474,126.11662871362,127.68005799519,128.74405847848,129.64436657973,130.41605923794,132.04518818306,132.96858110742,133.76006075687,135.81790784543,137.94006265552,138.64744759221,140.44806379471,141.47698733899,144.0492961997,145.92006628022,146.26543921816,147.13606683255,148.16499037684,148.55083670594,151.25176100969,152.15206911093,154.33853164254,154.49287017418,155.62468607289,156.05340421634,157.14468676331,157.64578589202,158.45422581967,160.51207290824,160.9300730981,163.85607442716,164.62776708537,167.20007594608,169.77238480679,170.24007732692,171.65874463798,172.85915543964,173.88807898393,175.56007974339,176.56328019906,180.06162024963,181.09054379391,182.8317990227,183.92008354069,185.20623797104,186.74962328747,187.26408505961,190.14507098361,193.11608771773,194.02558263633,197.55332050245,198.06778227459,200.6400911353,201.66901467958,202.31209189476,203.72686176815,204.2880927923,205.78470885672,205.99049356557,208.95062745451,210.19438118936,214.01609721099,214.57343079747,216.07394429955,217.36009872991,217.87456050205,220.70410024883,224.71690207153,226.36317974239,229.30296129748,230.47887391952,234.08010632452,237.68133872951,239.0961086029,240.76810936236,243.77573203026,245.22677805425,246.94165062806],description:"Stellated Eikosany 3 out of 1 3 5 7 11 13"},steleik2s:{frequencies:[61.73541265702,61.89618196081,62.32902239411,62.70002847979,63.66464430255,64.65940436978,64.99099105886,65.83502990378,66.22690508177,66.31733781516,67.05419712422,67.52310759362,68.40003106886,68.56192463352,68.97003132776,69.45233923915,69.63320470592,70.8992629733,71.32128239576,72.34618670745,72.41853289415,72.94907159667,73.15003322642,73.66157192031,73.89646213689,74.27541835298,75.24003417574,75.43597176474,76.80753488774,77.16926582128,78.37503559973,79.58080537819,79.800036247,80.24397875634,80.46503654906,81.02772911234,81.51003702372,82.29378737972,82.71580680218,82.76403759332,84.40388449202,84.45309958502,84.8861924034,85.7024057919,86.21253915971,86.81542404893,87.05458499673,87.53888591601,87.7800398717,89.13050202357,90.52316611769,90.94949186079,92.60311898553,92.84427294122,94.05004271968,94.53235063106,94.83379307568,95.49696645383,95.7600434964,96.46158227659,96.55804385887,97.94560661931,98.52861618252,100.32004556766,100.58129568632,101.28466139042,101.88754627965,102.12870023534,103.45504699165,104.17850885872,105.33604784604,105.47988405157,106.10774050425,107.4857631082,108.03697214979,109.72504983963,111.41312752947,112.07630090762,112.86005126361,113.15395764711,114.2698743892,114.95005221294,115.75389873191,115.86965263064,116.71851455468,118.16543828883,118.23433941902,119.7000543705,120.57697784574,120.69755482359,121.54159366851,122.26505553558,123.47082531404],description:"Superstellated Eikosany 3 out of 1 3 5 7 11 13"},stelhex1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,327.03195662575,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 7 hexany, also dekatesserany, mandala, tetradekany"},stelhex2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,331.11985608357,353.19451315581,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 9 hexany"},stelhex3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,297.67175429757,339.14425131559,348.83408706747,358.80077526939,361.75386806997,372.08969287196,385.87079260796,434.10464168396,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on Archytas's Enharmonic"},stelhex4:{frequencies:[261.6255653006,269.10058145205,276.78916949353,279.06726965397,287.04062021552,297.67175429757,336.37572681506,348.83408706747,358.80077526939,361.75386806997,372.08969287196,382.72082695402,430.56093032327,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on the 1/1 35/36 16/15 4/3 tetrachord"},stelhex5:{frequencies:[261.6255653006,294.32876096318,305.22982618403,331.11985608357,343.38355445704,386.30649876417,392.4383479509,400.61414686654,441.49314144476,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 7 9 hexany, stellation is degenerate"},stelhex6:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,327.03195662575,337.2517052703,356.76213450082,359.73515228832,392.4383479509,408.78994578219,431.68218274599,449.66894036041,490.54793493862,494.63583439645,523.2511306012],description:"Stellated two out of 1 3 5 11 hexany, from The Giving, by Stephen J. Taylor"},stelpd1:{frequencies:[207.65234878997,208.19311011494,212.37172035338,214.14148468966,218.03496622947,219.00833661442,222.07265078927,222.48465941783,222.99030637105,224.84855892414,227.11975648903,229.43730502463,233.60889238872,237.93498298851,240.90917027586,242.2610735883,244.73312535961,245.28933700815,247.76700707894,249.83173213793,250.29524184505,254.84606442405,255.50972605016,256.96978162759,259.56543598746,262.81000393731,267.67685586207,272.54370778684,275.32476602956,277.59081348659,280.33067086646,281.06069865517,283.1622938045,285.52197958621,292.0111154859,297.32040849473,299.79807856552,302.82634198537,305.91640669951,306.61167126019,311.47852318496,312.28966517242,317.24664398468,317.96765908464,318.55758053007,321.21222703448,324.45679498433,327.0524493442,330.35600943859,333.10897618391,333.72698912674,340.67963473354,342.62637550345,346.08724798328,350.41333858307,356.90247448276,363.39161038245,367.09968803941,371.65051061841,374.7475982069,380.69597278161,385.45467244138,389.34815398119,392.59272193104,396.42721132631,399.73077142069,400.47238695209,401.51528379311,403.7684559805,407.88854226601,408.81556168025,415.30469757994],description:"Stellated two out of 1 3 5 7 9 11 pentadekany"},stelpd1s:{frequencies:[21.82676446456,21.88360499702,22.15715005948,22.2309638065,22.3228272933,22.50885085408,22.68892166091,22.91810268779,23.02041564622,23.14959867453,23.15196087848,23.34251199682,23.38581906917,23.43896865797,23.624449876,23.63429339678,23.87302363311,24.11662591508,24.35217522905,24.55511002263,24.61905562165,25.00983428231,25.20991295657,25.32245721084,25.46455854199,25.72440097609,25.78286552376,25.93612444091,26.04329850885,26.26032599642,26.30904645282,26.78739275196,26.85715158725,27.01062102489,27.2834555807,27.56185818867,27.62449877546,27.69643757435,28.01101439619,28.1360635676,28.29395393554,28.36115207614,28.41087110056,28.58266775121,28.64762835974,28.9399510981,29.17813999603,29.29871082246,29.46613202716,29.54286674598,29.7637697244,30.01180113877,30.06748166036,30.69388752829,30.99367756425,31.12334932909,31.25195821062,31.51239119571,31.65307151355,31.83069817748,32.15550122011,32.2285819047,32.41274522987,32.74014669684,32.82540749553,33.0742298264,33.34644570974,33.42223308636,33.48424093995,33.76327628112,34.09304532068,34.10431947588,34.37715403168,34.58149925455,34.7243980118,35.01376799523,35.07872860376,35.45144009517,35.80953544967,36.01416136652,36.17493887262,36.37794077427,36.74914425156,36.83266503394,36.92858343247,37.50234985274,37.51475142346,37.81486943485,37.88116146742,38.19683781298,38.26770393137,38.58660146413,38.90418666137,39.06494776328,39.39048899464,40.01573485169,40.28572738088,40.51593153734,40.92518337105,41.25258483802,41.26622656581,41.342787283,41.66927761416,42.01652159428,42.09447432451,42.2040953514,42.44093090331,42.61630665085,42.87400162681,42.9714425396,43.65352892912],description:"Superstellated two out of 1 3 5 7 9 11 pentadekany"},stelpent1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,406.97310157871,412.06026534844,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated one out of 1 3 5 7 9 pentany"},stelpent1s:{frequencies:[261.6255653006,271.31540105247,274.70684356563,275.93321340298,280.31310567921,282.55561052465,286.15296204753,288.32205155576,290.69507255622,294.32876096318,301.46155672497,305.22982618403,309.04519901133,313.95067836072,315.35224388912,320.35783506196,321.92208230347,327.03195662575,329.64821227876,336.37572681506,339.14425131559,343.38355445704,348.83408706747,353.19451315581,360.4025644447,366.27579142084,367.91095120397,373.75080757229,381.53728273004,386.30649876417,387.59343007496,392.4383479509,395.57785473451,403.65087217807,406.97310157871,411.88864507966,412.06026534844,420.46965851882,429.2294430713,436.04260883433,439.53094970501,441.49314144476,448.50096908674,452.19233508746,457.84473927605,470.92601754108,480.53675259294,482.88312345521,488.36772189445,490.54793493862,494.47231841813,498.33441009638,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated one out of 1 3 5 7 9 pentany"},steltet1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,436.04260883433,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 7 tetrany"},steltet1s:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,320.35783506196,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,429.2294430713,436.04260883433,439.53094970501,448.50096908674,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"Superstellated one out of 1 3 5 7 tetrany"},steltet2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,305.22982618403,327.03195662575,333.84512238879,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,436.04260883433,457.84473927605,476.92160341255,490.54793493862,523.2511306012],description:"Stellated three out of 1 3 5 7 tetrany"},steltet2s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Superstellated three out of 1 3 5 7 tetrany"},steltri1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 triany"},steltri2:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,408.78994578219,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 triany"},stevin:{frequencies:[261.6255653006,277.20445571159,293.66434538175,311.1256573916,329.66931111467,349.25319089654,369.99797100919,392.00714009679,415.41055144586,440.15068186507,466.27261682516,494.00597677606,523.2511306012],description:"Simon Stevin, monochord division of 10000 parts for 12-tET (1585)"},stopper:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767,554.79375523088,587.81844599272,622.80896314278,659.88233179115,699.16252826162,740.78092441407,784.8766959018],description:"Bernard Stopper, piano tuning with 19th root of 3 (1988)"},storbeck:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,358.80077526939,381.53728273004,387.59343007496,392.4383479509,403.65087217807,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Ulrich Storbeck, 2001"},strahle:{frequencies:[261.6255653006,278.94941459687,296.90543930973,315.65242990842,335.0021118691,355.12744448111,376.24442122187,398.15684412917,421.10213511252,444.85552088095,469.94877954106,496.17080790016,523.2511306012],description:"Strahle's Geometrical scale"},"sub24-12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharmonics 24-12"},sub24:{frequencies:[261.6255653006,10.90106522086,11.37502457829,11.89207115003,12.45836025241,13.08127826503,13.76976659477,14.53475362781,15.38973913533,16.35159783129,17.44170435337,18.68754037861,20.12504348466,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,52.32511306012,65.40639132515,87.20852176687,130.8127826503,261.6255653006],description:"Subharmonics 24-1"},sub40:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,475.68284600109,498.33441009638,523.2511306012],description:"sub 40-20"},sub48:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,502.32108537715,523.2511306012],description:"12 of sub 48 (Leven)"},sub50:{frequencies:[261.6255653006,272.52663052146,290.69507255622,311.45900631024,327.03195662575,344.24416486921,373.75080757229,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,523.2511306012],description:"12 of sub 50"},sub8:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Subharmonic series 1/16 - 1/8"},sumatra:{frequencies:[261.6255653006,266.79889483106,324.44528279699,356.96377863828,390.9602296356,474.47355835313,530.64156666967,639.28283484968,713.92755727656,784.8766959018],description:'"Archeological" tuning of Pasirah Rus orch. in Muaralakitan, Sumatra. 1/1=354 Hz'},super_10:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 10-tone scale"},super_11:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 11-tone scale"},super_12:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,494.18162334558,523.2511306012],description:"A superparticular 12-tone scale"},super_12_1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"Another superparticular 12-tone scale"},super_12_2:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,420.46965851882,448.50096908674,473.41768959156,498.33441009638,523.2511306012],description:"Another superparticular 12-tone scale"},super_13:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 13-tone scale"},super_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 14-tone scale"},super_15:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,334.29933343966,348.83408706747,363.36884069528,381.53728273004,399.70572476481,417.87416679957,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 15-tone scale"},super_17:{frequencies:[261.6255653006,274.08392555301,286.54228580542,299.00064605783,311.45900631024,323.91736656265,336.37572681506,348.83408706747,363.36884069528,377.90359432309,392.4383479509,411.12588832951,429.81342870813,448.50096908674,467.18850946536,485.87604984397,504.56359022259,523.2511306012],description:"Superparticular 17-tone scale"},super_19:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.11323489078,353.19451315581,366.27579142084,379.35706968587,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.57848126297,337.20628416522,348.83408706747,363.36884069528,377.90359432309,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Superparticular 19-tone scale"},super_22:{frequencies:[261.6255653006,270.96933548991,280.31310567921,289.65687586852,299.00064605783,308.34441624714,317.68818643644,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,406.45400323486,420.46965851882,434.48531380278,448.50096908674,463.45100138963,478.40103369253,493.35106599542,508.30109829831,523.2511306012],description:"Superparticular 22-tone scale"},super_22_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.16320258789,336.37572681506,347.58825104223,358.80077526939,370.01329949656,381.22582372373,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 22-tone scale"},super_24:{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 24-tone scale, inverse of Mans.ur 'Awad"},super_7:{frequencies:[261.6255653006,287.78812183066,313.95067836072,353.19451315581,392.4383479509,431.68218274599,470.92601754108,523.2511306012],description:"A superparticular 7-tone scale"},super_8:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"A superparticular 8 tone scale"},super_9:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 9-tone scale"},suppig:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friedrich Suppig's 19-tone JI scale. Calculus Musicus, Berlin 1722"},sur_7:{frequencies:[261.6255653006,280.40333801024,327.729041887,351.25128999693,383.0422478503,410.5345162762,479.82340237272,523.2511306012],description:"7-tone surupan"},sur_9:{frequencies:[261.6255653006,280.40333801024,305.78200836532,327.729041887,351.25128999693,383.0422478503,410.5345162762,447.69106452518,479.82340237272,523.2511306012],description:"Theoretical nine-tone surupan gamut"},sur_ajeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan ajeng"},sur_degung:{frequencies:[261.6255653006,322.09885310804,345.21700307457,396.55020354877,488.21056770985,523.2511306012],description:"Surupan degung"},sur_madenda:{frequencies:[261.6255653006,322.09885310804,345.21700307457,425.01198472693,488.21056770985,523.2511306012],description:"Surupan madenda"},sur_melog:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,410.5345162762,523.2511306012],description:"Surupan melog"},sur_miring:{frequencies:[261.6255653006,285.30470202322,305.78200836532,389.73770840504,417.71053321823,523.2511306012],description:"Surupan miring"},sur_x:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan tone-gender X (= unmodified nyorog)"},sur_y:{frequencies:[261.6255653006,280.40333801024,300.52885648597,383.0422478503,410.5345162762,523.2511306012],description:"Surupan tone-gender Y (= mode on pamiring)"},sverige:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012,554.36526195375,587.32953583482,622.25396744417,659.25511382574,698.45646286601,739.98884542327,783.9908719635,830.60939515989,880,932.32752303618,987.76660251225,1046.5022612024,1174.65907166964,1318.51022765149,1396.91292573202,1567.98174392701],description:"Scale on Swedish 50 crown banknote of some kind of violin."},syntonolydian:{frequencies:[261.6255653006,294.32876096318,331.11985608357,372.50983809402,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Greek Syntonolydian, also genus duplicatum medium, or ditonum (Al-Farabi)"},syrian:{frequencies:[261.6255653006,268.67837258085,275.62199471997,279.38237857051,286.74979536837,294.32876096318,302.10804307229,310.07474405997,314.30517589183,322.59351978942,326.6631048533,331.11985608357,339.85160932548,348.83408706747,358.05397697456,367.49599295996,372.50983809402,382.33306049116,392.4383479509,402.81072409638,413.43299207996,419.07356785577,430.12469305256,441.49314144476,453.13547910064,465.11211608996,477.40530263275,489.99465727995,496.67978412536,509.77741398822,523.2511306012],description:"After ^Sayh.'Ali ad-Darwis^ (Shaykh Darvish) from d'Erlanger vol.5, p.29"},szpak_24:{frequencies:[261.6255653006,270.98948203641,277.18263097687,287.10335517712,293.66476791741,304.17540907689,311.12698372208,322.26262012861,329.62755691287,341.42535271779,349.22823143301,361.7275606831,369.99442271164,383.23700075636,391.99543598175,406.02545869431,415.30469757995,430.16898885692,440,455.74816803176,466.16376151809,482.84836435151,493.88330125613,511.56002220218,523.2511306012],description:"Stephen Szpak's scale, TL 2-1-2004"},pagano_b:{frequencies:[261.6255653006,277.97716313189,289.55954492905,312.72430852337,333.57259575826,351.8148470888,370.63621750918,389.16802838464,416.96574469783,444.76346101102,463.29527188648,486.4600354808,523.2511306012],description:"Pat Pagano and David Beardsley, 17-limit scale, TL 27-2-2001"},palace:{frequencies:[261.6255653006,277.01530443593,294.32876096318,299.00064605783,336.37572681506,348.83408706747,373.75080757229,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Palace mode+"},palace2:{frequencies:[261.6255653006,277.01530443593,336.37572681506,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Byzantine Palace mode, 17-limit"},panpipe1:{frequencies:[261.6255653006,305.78200836532,346.61566493686,386.59871897734,424.03113209229,475.68400784708,523.2511306012],description:"Palina panpipe of Solomon Islands. 1/1=f+45c. From Ocora CD Guadalcanal"},panpipe2:{frequencies:[261.6255653006,301.39807245198,340.46429857933,389.512652082,435.70052664441,481.48922855473,540.45338572244,606.98892366383,675.83458963267,749.45240308975,819.17415016614,915.78156525194,979.24522642508,1073.44040298899,1178.73719255088,1360.28482360484],description:"Lalave panpipe of Solomon Islands. 1/1=f'+47c."},panpipe3:{frequencies:[261.6255653006,302.44445076078,341.44901934006,382.59999559751,433.19107626846,482.88183400971,542.01653249392,602.10016957865,677.78929781797,755.1012944609,822.018116801,906.30932187391,994.06270356141,1067.87449159209,1155.14617783291,1300.35790771888],description:"Tenaho panpipe of Solomon Islands. 1/1=f'+67c."},parachrom:{frequencies:[261.6255653006,274.52698453615,288.06460709314,349.22823143301,391.99543598175,411.32572372413,431.60923940535,523.2511306012],description:"Parachromatic, new genus 5 + 5 + 20 parts"},parakleismic:{frequencies:[261.6255653006,269.41173453909,271.00883762044,279.07425994419,280.72864356353,282.39283618632,290.79705467987,292.52093234567,301.22657042972,303.0122754386,312.03014360907,313.87989341557,323.22118988972,325.13728335605,327.06473376202,336.79842078181,338.79499972275,348.87778808468,350.94597487438,361.39038519337,363.53274806687,374.35175001315,376.5709514911,387.77797996035,390.07677146523,392.38919046486,404.06698135965,406.46233589795,418.55895395107,421.04021853379,433.57068509561,436.14094342919,449.12081866987,451.783257426,465.22865943552,467.98658728446,470.76086444006,484.77105399159,487.64483417146,502.15750307968,505.13434926963,520.16751901001,523.2511306012],description:"Parakleismic temperament, g=315.250913, 5-limit"},parizek:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone Linear Level tuning, 1/1=Ab"},parizek_13lqmt:{frequencies:[261.6255653006,272.70676208351,292.18581651805,313.05623198362,325.57848126297,348.83408706747,365.23227064756,391.32028997953,406.97310157871,436.04260883433,467.18850946536,486.97636086341,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_17lqmt:{frequencies:[261.6255653006,272.52663052146,291.99281841585,312.60407618638,327.03195662575,350.39138209902,364.70475555078,390.75509523297,408.78994578219,436.04260883433,467.18850946536,488.44386904122,523.2511306012],description:"To tune the scale by ear, please choose the intervals in the following order:"},parizek_7lmtd1:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"Use SET MIDDLE 62"},parizek_7lqmtd2:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,390.69417751556,418.60090448096,437.98922762377,468.83301301868,488.36772189445,523.2511306012],description:"Use SET MIDDLE 62"},parizek_cirot:{frequencies:[261.6255653006,273.76082553017,293.33333347996,307.98092841354,327.40170814054,348.04713286849,366.66693712906,392.88175996935,409.71484950008,438.01699797506,463.01593599647,491.10256480205,523.2511306012],description:"Overtempered circular tuning (1/1 is F)"},parizek_epi:{frequencies:[261.6255653006,283.42769574232,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"In The Epimoric World"},parizek_epi2:{frequencies:[261.6255653006,283.42769574232,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,523.2511306012,523.2511306012],description:"In the Epimoric World - extended (version for two keyboards)"},parizek_epi2a:{frequencies:[261.6255653006,283.42769574232,287.78812183066,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_ji1:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone septimal tuning, 2002."},parizek_jiweltmp:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,329.45441556372,348.83408706747,370.63621750918,392.4383479509,416.96574469783,440.63253103259,465.11211608996,494.18162334558,523.2511306012],description:"April 2003 - Petr Parizek"},jiwt2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,331.11985608357,348.83408706747,372.08969287196,392.4383479509,415.8649508569,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"June 2003 - Petr Parizek"},parizek_llt7:{frequencies:[261.6255653006,283.42769574232,327.03195662575,359.73515228832,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"7-tone mode of Linear Level Tuning 2000 (= wilson_helix)"},parizek_qmeb1:{frequencies:[261.6255653006,273.53155294581,293.066620053,305.25690181412,326.9069921792,350.33366042609,366.2083106197,392.1884190578,408.50877577745,437.87542071709,457.7197748295,488.61098601707,523.2511306012],description:"Equal beating quasi-meantone tuning no. 1 - F...A# (1/1 = 261.7Hz)(3/2 5/3 5/4 7/4 7/6)"},parizek_qmeb2:{frequencies:[261.6255653006,274.12423619715,293.39509530855,306.21121252767,327.1564453797,350.32795211486,366.55713600477,391.6914154272,409.44351174042,438.20041390279,457.4712730142,489.73875803795,523.2511306012],description:"Equal beating quasi-meantone tuning no. 2 - F...A# (1/1 = 262.7Hz)"},parizek_qmeb3:{frequencies:[261.6255653006,274.23252240717,293.57983281823,306.4052273004,327.28159934073,350.29865766202,366.78755898655,391.93906252094,409.53887392713,438.37260750749,457.59509656107,490.04864950866,523.2511306012],description:"Equal beating quasi-meantone tuning no. 3 - F...A#. 1/1 = 262Hz"},parizek_qmtp12:{frequencies:[261.6255653006,273.55480692456,293.00227310437,305.44101254122,326.6631048533,350.4133380576,366.39100206434,391.84790908124,408.48291326839,437.52264545758,457.47219685667,489.2574430773,523.2511306012],description:"12-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (F...A#)"},parizek_qmtp24:{frequencies:[261.6255653006,273.14323313659,280.64720643091,285.59764149034,293.00227310437,305.44101254122,313.83229199844,326.6631048533,335.63741195089,341.5578378819,350.4133380576,365.83975262993,375.89034660662,381.37064019061,391.84790908124,407.86833637529,419.07356785577,437.52264545758,448.86620556368,457.47219685667,469.33298761093,489.2574430773,502.69865025911,510.02774559919,523.2511306012],description:"24-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (Bbb...C##)"},parizek_syndiat:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,436.04260883433,441.49314144476,484.4917875937,490.54793493862,523.2511306012],description:"Petr Parizek, diatonic scale with syntonic alternatives"},parizek_syntonal:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Petr Parizek, Syntonic corrections in JI tonality, Jan. 2004"},parizek_temp19:{frequencies:[261.6255653006,276.69969455132,294.32876096318,310.68035879446,328.58088727969,349.51540364377,368.93292606842,392.4383479509,415.04954182698,438.10784970625,466.02053819169,492.87133091954,523.2511306012],description:"Petr Parizek, genus [3 3 19 19 19] well temperament"},"partch-barstow":{frequencies:[261.6255653006,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,348.83408706747,359.73515228832,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,470.92601754108,479.64686971777,490.54793493862,523.2511306012],description:"Guitar scale for Partch's Barstow (1941, 1968)"},"partch-greek":{frequencies:[261.6255653006,261.6255653006,271.31540105247,294.32876096318,279.06726965397,348.83408706747,313.95067836072,392.4383479509,392.4383479509,406.97310157871,418.60090448096,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white'},"partch-grm":{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" mixed'},"partch-indian":{frequencies:[261.6255653006,269.80136421624,277.97716313189,285.40970760065,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,383.71749577421,392.4383479509,406.97310157871,411.12588832951,428.11456140098,441.49314144476,457.84473927605,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"Partch's Indian Chromatic, Exposition of Monophony, 1933."},"partch-ur":{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch curved keyboard, published in Interval"},"partch_29-av":{frequencies:[261.6255653006,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,488.36772189445,498.33441009638,507.3950357345,523.2511306012],description:"29-tone JI scale from Partch's Adapted Viola 1928-30"},partch_29:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,523.2511306012],description:"Partch/Ptolemy 11-limit Diamond"},partch_37:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol.9(2)'},partch_39:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch Keyboard 39 tones, published in Interval"},partch_41:{frequencies:[261.6255653006,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,523.2511306012],description:"13-limit Diamond after Partch, Genesis of a Music, p 454, 2nd edition"},partch_41a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},partch_41comb:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,274.70684356563,279.06726965397,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,490.54793493862,498.33441009638,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"41-tone JI combination from Partch's 29-tone and 37-tone scales"},partch_43:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:"Harry Partch's 43-tone pure scale"},partch_43a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},patala:{frequencies:[261.6255653006,289.6217982776,320.24370022528,355.94891173479,393.58362272115,439.74591942221,480.6555937997,537.34060327431],description:"Observed patala tuning from Burma, Helmholtz/Ellis p. 518, nr.83"},pelog1:{frequencies:[261.6255653006,285.79952600623,313.83440569119,359.87690576543,393.35634555235,426.98050185716,482.04578814299,523.2511306012],description:"Gamelan Saih pitu from Ksatria, Den Pasar (South Bali). 1/1=312.5 Hz"},pelog10:{frequencies:[261.6255653006,290.16653606067,310.14521470005,342.49164912079,385.30310526088,418.60090448096,442.38504678101,523.2511306012],description:"Balinese saih 7 scale, Krobokan. 1/1=275 Hz. McPhee, 1966"},pelog11:{frequencies:[261.6255653006,289.11520789678,327.03195662575,352.6257619269,388.64667309147,441.73012112348,478.69895237627,523.2511306012],description:"Balinese saih pitu, gamelan luang, banjar Se`se'h. 1/1=276 Hz. McPhee, 1966"},pelog11i:{frequencies:[261.6255653006,267.83009854382,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,392.61532371972,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog12:{frequencies:[261.6255653006,284.41230790592,308.04300430555,358.68021049276,385.68672051706,409.31741667997,472.61392441399,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Tampak Gangsai, 1/1=310, McPhee"},pelog13:{frequencies:[261.6255653006,289.80062617913,323.61069924911,351.78575931905,394.45085229937,454.02098012766,494.27106657141,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Klungkung, 1/1=325. McPhee, 1966"},pelog14:{frequencies:[261.6255653006,287.66412867175,309.98289727559,347.18084494866,375.69927149802,402.97776645827,427.77639824032,523.2511306012],description:"Balinese saih pitu, suling gambuh, Tabanan, 1/1=211 Hz, McPhee, 1966"},pelog15:{frequencies:[261.6255653006,284.9387344858,307.6043148279,344.51683351465,375.60105909492,407.98046074103,427.4081017287,523.2511306012],description:"Balinese saih pitu, suling gambuh, Batuan, 1/1=202 Hz. McPhee, 1966"},pelog2:{frequencies:[261.6255653006,285.30470202322,314.92395982138,345.81573716922,388.6137256405,424.52127512829,466.97226207056,523.2511306012],description:"Bamboo gambang from Batu lulan (South Bali). 1/1=315 Hz"},pelog3:{frequencies:[261.6255653006,285.63448939555,315.83481057014,390.18821123181,421.34544350737,523.2511306012],description:"Gamelan Gong from Padangtegal, distr. Ubud (South Bali). 1/1=555 Hz"},pelog4:{frequencies:[261.6255653006,290.96323214696,317.29765457754,352.87817160549,385.03871768789,434.94616895528,470.49199937597,523.2511306012],description:"Hindu-Jav. demung, excavated in Banjarnegara. 1/1=427 Hz"},pelog5:{frequencies:[261.6255653006,284.64626913494,310.94732162256,358.21775774651,390.8649420513,427.47405410759,468.32288027948,523.2511306012],description:"Gamelan Kyahi Munggang (Paku Alaman, Jogja). 1/1=199.5 Hz"},pelog6:{frequencies:[261.6255653006,282.02769802256,315.83481057014,354.51258839996,386.37547528213,413.39000965417,523.2511306012],description:"Gamelan Semar pegulingan, Ubud (S. Bali). 1/1=263.5 Hz"},pelog7:{frequencies:[261.6255653006,281.2143451833,303.31920717687,353.89879686059,384.81637482457,412.43597848639,448.72664641273,523.2511306012],description:"Gamelan Kantjilbelik (kraton Jogja). Measured by Surjodiningrat, 1972."},pelog8:{frequencies:[261.6255653006,281.2143451833,305.0763174688,362.1707891162,386.59871897734,415.30469757995,456.83405152976,529.33101587613,573.91491069685,623.33318620372,730.64478690489,786.25839925218,840.74610520523,945.88853913022,1075.30214607265],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},pelog9:{frequencies:[261.6255653006,282.57123920205,305.19382000629,356.01745236555,384.52011812375,415.30469757995,448.5538823653,523.2511306012],description:"9-tET Pelog"},pelog9i:{frequencies:[261.6255653006,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog_24:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Subset of 24-tET (Sumatra?)"},pelog_a:{frequencies:[261.6255653006,280.7274598329,305.95868600104,363.84824628932,386.82209166041,411.72190027758,452.10885997356,523.2511306012],description:"Pelog, average class A. Kunst 1949"},pelog_alv:{frequencies:[261.6255653006,299.00064605783,313.95067836072,343.38355445704,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"Bill Alves JI Pelog, 1/1 vol. 9 no. 4, 1997. 1/1=293.33"},pelog_av:{frequencies:[261.6255653006,280.40333801024,305.78200836532,357.39105439675,385.26118901859,411.72190027758,452.89298412314,523.2511306012],description:'"Normalised Pelog", Kunst, 1949. Average of 39 Javanese gamelans'},pelog_b:{frequencies:[261.6255653006,280.07959041159,302.79405018898,354.30787302884,382.82105786018,408.64182041696,451.58686491179,523.2511306012],description:"Pelog, average class B. Kunst 1949"},pelog_c:{frequencies:[261.6255653006,279.91785681123,304.37225518229,350.84574289301,384.81637482457,410.29745071461,451.58686491179,523.2511306012],description:"Pelog, average class C. Kunst 1949"},pelog_he:{frequencies:[261.6255653006,283.17034563789,338.50336851425,364.68988616898,389.06292924114,420.13030572059,493.31307433255,523.2511306012],description:"Observed Javanese Pelog scale, Helmholtz/Ellis p. 518, nr.96"},pelog_jc:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"John Chalmers' Pelog, on keys C# E F# A B c#, like Olympos' Enharmonic on 4/3"},pelog_laras:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:'Lou Harrison, gamelan "Si Betty"'},pelog_me1:{frequencies:[261.6255653006,281.13654920971,305.96893643544,353.85975480175,389.33427481332,412.3928606827,454.07565526112,523.2511306012],description:"Gamelan Kyahi Kanyut Mesem pelog (Mangku Nagaran). 1/1=295 Hz"},pelog_me2:{frequencies:[261.6255653006,277.86440299076,299.96729002515,349.58586605592,383.41679241104,405.97081699752,447.47001910635,523.2511306012],description:"Gamelan Kyahi Bermara (kraton Jogja). 1/1=290 Hz"},pelog_me3:{frequencies:[261.6255653006,281.75056896146,306.90688773629,358.59164065877,385.12012728597,411.64865826518,457.38747412584,523.2511306012],description:"Gamelan Kyahi Pangasih (kraton Solo). 1/1=286 Hz"},pelog_pa:{frequencies:[261.6255653006,286.29520819723,313.29104303136,342.83241505062,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:'"Blown fifth" pelog, von Hornbostel, type a.'},pelog_pa2:{frequencies:[261.6255653006,286.29520819723,313.29104303136,353.69443592699,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:"New mixed gender Pelog"},pelog_pb:{frequencies:[261.6255653006,277.98432293805,304.19649364034,353.69443592699,387.04559340587,411.24653512154,450.02449304881,523.2511306012],description:'"Primitive" Pelog, step of blown semi-fourths, von Hornbostel, type b.'},pelog_pb2:{frequencies:[261.6255653006,277.50302994288,303.66981774726,353.69443592699,387.04559340587,410.5345162762,449.24533531117,523.2511306012],description:'"Primitive" Pelog, Kunst: Music in Java, p. 28'},pelog_schmidt:{frequencies:[261.6255653006,287.78812183066,313.95067836072,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Modern Pelog designed by Dan Schmidt and used by Berkeley Gamelan"},pelog_selun:{frequencies:[261.6255653006,281.10829462369,350.68958753059,378.52209447746,416.55977244877,523.2511306012,562.21664032682,701.37917506118,757.04418895493,833.11970794305,1046.5022612024,1124.43328065364],description:"Gamelan selunding from Kengetan, South Bali (Pelog), 1/1=141 Hz"},pelog_slen:{frequencies:[261.6255653006,289.4545544734,306.66641795878,334.42210013281,344.22141564971,354.30787302884,386.37547528213,397.69714089209,446.39994737251,459.48046426806,493.88330125613,523.2511306012],description:"W.P. Malm, pelog+slendro, Musical Cultures Of The Pacific, The Near East, And Asia. P: 1,3,5,6,8,10; S: 2,4,7,9"},pelog_str:{frequencies:[261.6255653006,282.73796785026,305.22982618403,329.86096249197,356.10146388137,384.83778957396,415.4517078616,448.97742116962,484.69365917187,523.80699136456],description:"JI Pelog with stretched 2/1 and extra tones between 2-3, 6-7. Wolf, XH 11, '87"},pelogic:{frequencies:[261.6255653006,268.93425429917,294.59920226397,322.71340889889,353.51061198674,363.38617257172,398.06486099125,436.0530078362,477.66644151787,523.2511306012],description:"Pelogic temperament, g=521.1, 5-limit"},pelogic2:{frequencies:[261.6255653006,252.56770712848,285.96465797334,276.06414495892,312.56802260838,301.74646235804,341.64630500046,386.82209166041,373.42974737602,422.80824892286,408.17001145418,462.1422075194,523.2511306012],description:"Pelogic temperament, g=677.0 in cycle of fifths order"},penta1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,331.11985608357,372.50983809402,376.74081403286,397.34382730029,423.83341578697,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Pentagonal scale 9/8 3/2 16/15 4/3 5/3"},penta2:{frequencies:[261.6255653006,267.07609791103,286.15296204753,305.22982618403,312.97980223949,333.84512238879,356.10146388137,363.36884069528,400.61414686654,436.04260883433,457.84473927605,476.92160341255,523.2511306012],description:"Pentagonal scale 7/4 4/3 15/8 32/21 6/5"},penta_opt:{frequencies:[261.6255653006,292.5084949701,327.03692214239,391.62201198054,436.95817401562,523.2511306012],description:"Optimally consonant major pentatonic, John deLaubenfels, 2001"},pentadekany:{frequencies:[261.6255653006,283.42769574232,299.7792935736,305.22982618403,327.03195662575,354.2846196779,359.73515228832,381.53728273004,389.71308164569,419.69101100305,425.14154361347,436.04260883433,457.84473927605,479.64686971777,495.99846754905,523.2511306012],description:"2)6 1.3.5.7.11.13 Pentadekany (1.3 tonic)"},pentadekany2:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,305.22982618403,327.03195662575,343.38355445704,359.73515228832,381.53728273004,392.4383479509,419.69101100305,436.04260883433,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"2)6 1.3.5.7.9.11 Pentadekany (1.3 tonic)"},pentadekany3:{frequencies:[261.6255653006,277.97716313189,278.79474302345,287.78812183066,291.4672313427,300.86940009569,305.77487944508,319.67373760167,359.73515228832,376.08675011961,405.51962621593,413.69542513157,430.86460285443,444.76346101102,506.89953276991,523.2511306012],description:"2)6 1.5.11.17.23.31 Pentadekany (1.5 tonic)"},pentatetra1:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,392.4383479509,413.09299784305,436.04260883433,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra2:{frequencies:[261.6255653006,275.39533189537,307.79478270659,327.03195662575,348.83408706747,392.4383479509,413.09299784305,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra3:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,392.4383479509,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatriad:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"4:5:6 Pentatriadic scale"},pentatriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"3:5:9 Pentatriadic scale"},pepper:{frequencies:[261.6255653006,274.70684356563,290.69507255622,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,367.91095120397,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Keenan Pepper's 17-tone jazz tuning, TL 07-06-2000"},pepper2:{frequencies:[261.6255653006,281.81099471089,295.05751399041,308.92668738628,332.76158224462,348.40303271111,375.28368107222,392.9238840789,423.23948674937,443.13385158124,463.96335069158,499.75992392917,523.2511306012],description:`Keenan Pepper's "Noble Fifth" with chromatic/diatonic semitone = Phi (12)`},peprmint:{frequencies:[261.6255653006,270.64528749638,281.81099405977,291.52662269553,295.0575145017,305.22982618403,308.92668738628,319.57714845986,332.76158147578,344.23376699744,348.40303331485,360.41446869983,375.28368085545,388.22184514393,392.92388339801,406.47020562703,423.23948723831,437.83096109824,443.13385158124,458.41119713782,463.9633498876,479.95880678291,499.75992479518,516.98949333115,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},"perkis-indian":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.01393146398,369.99442271164,377.90359432309,388.70083987518,400.13321751856,412.18367363396,425.14154361347,438.99882991118,453.48431318771,469.12170329763,485.27322596079,503.87145909745,523.2511306012],description:"Indian 22 Perkis"},"perrett-tt":{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Perrett Tierce-Tone"},perrett:{frequencies:[261.6255653006,274.70684356563,279.06726965397,348.83408706747,392.4383479509,412.06026534844,418.60090448096,523.2511306012],description:"Perrett / Tartini / Pachymeres Enharmonic"},perrett_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Perrett's 14-tone system (subscale of tierce-tone)"},perrett_chrom:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,392.4383479509,412.06026534844,441.49314144476,523.2511306012],description:"Perrett's Chromatic"},perry:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Robin Perry, Tuning List 22-9-'98"},perry2:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,415.27867508032,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Robin Perry, 7-limit scale, TL 22-10-2006"},perry3:{frequencies:[261.6255653006,277.97716313189,294.32876096318,307.79478270659,327.03195662575,348.83408706747,369.35373924791,370.63621750918,392.4383479509,418.60090448096,444.76346101102,465.11211608996,492.47165233054,523.2511306012],description:"Robin Perry, symmetrical 3,5,17 scale, TL 22-10-2006"},"persian-far":{frequencies:[261.6255653006,275.58617649731,282.84340331238,294.51413096332,310.22971009486,318.39923223688,331.53706992441,349.22823143301,362.58942698662,376.46181130035,391.99543598175,412.91271853531,423.78627283082,441.27260666252,464.81937009253,477.05982293263,496.7443381147,523.2511306012],description:"Hormoz Farhat, average of observed Persian tar and sehtar tunings (1966)"},"persian-vaz":{frequencies:[261.6255653006,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,329.62755691287,349.22823143301,359.46139971304,380.8360868427,391.99543598175,415.30469757995,427.47405410759,440,466.16376151809,479.82340237272,493.88330125613,523.2511306012],description:"Vaziri's Persian tuning, using quartertones"},persian:{frequencies:[261.6255653006,275.62199471997,282.55561052465,294.32876096318,310.07474405997,317.87506184023,331.11985608357,348.83408706747,363.36884069528,376.74081403286,392.4383479509,413.43299207996,423.83341578697,441.49314144476,465.11211608996,476.81259276034,496.67978412536,523.2511306012],description:"Persian Tar Scale, from Dariush Anooshfar, Internet Tuning List 2/10/94"},persian2:{frequencies:[261.6255653006,275.62199471997,288.32205155576,294.32876096318,310.07474405997,321.08592105074,331.11985608357,348.83408706747,367.49599295996,384.42940207435,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,489.99465727995,512.57253609913,523.2511306012],description:"Traditional Persian scale, from Mark Rankin"},phi1_13:{frequencies:[261.6255653006,272.27874348295,293.41755524936,305.36527715608,329.07281683115,342.47239171077,356.41758627629,384.088434771,399.72820043646,416.00480451705,448.3020273708,466.55651779723,502.7784067407,523.2511306012],description:"Pythagorean scale with (Phi + 1) / 2 as fifth"},phi_10:{frequencies:[261.6255653006,277.06593756944,293.41755524936,323.38703872151,342.47239171077,362.68389667063,399.72820043646,423.31898451752,448.3020273708,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_12:{frequencies:[261.6255653006,280.653851324,301.06608340242,314.41721066027,337.28508524374,352.24238645938,377.86132347501,405.34355110824,423.31898451752,454.10739278061,474.24531572837,508.73764640933,531.29821178855],description:"Non-Octave Pythagorean scale with Phi as fourth. Jacky Ligon TL 12-04-2001"},phi_13:{frequencies:[261.6255653006,277.06593756944,293.41755524936,305.36527715608,323.38703872151,342.47239171077,362.68389667063,377.45230514615,399.72820043646,423.31898451752,448.3020273708,466.55651779723,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_13a:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:"Non-Octave Pythagorean scale with Phi as fifth, Jacky Ligon TL 12-04-2001"},phi_13b:{frequencies:[261.6255653006,277.56939878091,287.90530191745,305.45065986668,316.82478268872,336.13253486432,356.61692887617,369.89633953852,392.4383479509,407.05164722964,431.8579526603,458.17598957099,475.23717379553,504.19880204444],description:"Non-Octave Pythagorean scale with 12 3/2s, Jacky Ligon, TL 12-04-2001"},phi_17:{frequencies:[261.6255653006,276.86436108535,292.99059544936,310.05629713556,328.11582814217,347.22745468775,367.4522682176,388.8548834608,411.50435256812,435.47307590797,460.83762934409,487.67984759381,516.08523529366,546.14543793146,577.9565447239,611.62018657326,647.24497389216,684.94478342154],description:"Phi + 1 equal division by 17, Brouncker (1653)"},phi_7b:{frequencies:[261.6255653006,277.06593756944,299.7954575021,323.38703872151,342.47239171077,369.42210382256,399.72820043646,423.31898451752],description:"Heinz Bohlen's Pythagorean scale with Phi as fifth (1999)"},phi_7be:{frequencies:[261.6255653006,277.18263097687,299.37379946195,323.3415889232,342.56848033562,369.99442271164,399.61607881612,423.37848741825],description:"36-tET approximation of phi_7b"},phi_8:{frequencies:[261.6255653006,280.010356995,292.01318753119,312.53354015396,325.93049860793,348.83408706747,373.34714284662,389.35091690288,416.71138708025],description:"Non-Octave Pythagorean scale with 4/3s, Jacky Ligon, TL 12-04-2001"},phi_8a:{frequencies:[261.6255653006,275.77662731691,284.90271245142,300.31281179658,310.2506767011,327.03195662575,344.72084112096,356.12824371673,375.39107678967],description:"Non-Octave Pythagorean scale with 5/4s, Jacky Ligon, TL 12-04-2001"},phillips_19:{frequencies:[261.6255653006,274.63272075836,286.12988535196,293.66476791741,305.42895910556,326.59518553839,329.62755691287,342.83241505062,349.22823143301,366.5907009274,384.81637482457,391.99543598175,407.69874723177,428.71043212875,440,457.62637091093,489.33987776603,493.88330125613,513.66823365307,523.2511306012],description:"Pauline Phillips, organ manual scale, TL 7-10-2002"},phillips_19a:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,326.62388782443,329.50688232588,342.79852229325,349.26020182051,366.55580177366,381.34192228364,391.95955371998,407.7704102616,427.96347506501,439.87918162894,457.62301915088,489.33808574423,493.65730140218,509.07699553894,523.2511306012],description:"Adaptation by Gene Ward Smith with more consonant chords, TL 25-10-2002"},phillips_22:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,343.38355445704,349.22797321314,367.91095120397,392.4383479509,407.76797091773,408.78994578219,416.96574469783,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"All-key 19-limit JI scale (2002), TL 21-10-2002"},phillips_ji:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,349.22797321314,367.91095120397,386.30649876417,392.4383479509,407.76797091773,408.78994578219,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:'Pauline Phillips, JI 0 #/b "C" scale (2002), TL 8-10-2002'},phryg_chromcon2:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Harmonic Conjunct Chromatic Phrygian"},phryg_chromconi:{frequencies:[261.6255653006,283.42769574232,348.83408706747,370.63621750918,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Conjunct Chromatic Phrygian"},phryg_chrominv:{frequencies:[261.6255653006,272.52663052146,283.42769574232,348.83408706747,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian"},phryg_chromt:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,324.77656382143,336.37572681506,362.25078272391,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,627.90135672144,649.55312764287,672.75145363011,724.50156544782,784.8766959018,819.00176963666,837.20180896192,856.22912280196,941.85203508216,1046.5022612024],description:"Phrygian Chromatic Tonos"},phryg_diat:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,392.4383479509,448.50096908674,483.00104363188,523.2511306012],description:"Schlesinger's Phrygian Harmonia, a subharmonic series through 13 from 24"},phryg_diatcon:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,448.50096908674,483.00104363188,523.2511306012],description:"A Phrygian Diatonic with its own trite synemmenon replacing paramese"},phryg_diatinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Conjunct Phrygian Harmonia with 17, the local Trite Synemmenon"},phryg_diatsinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,348.83408706747,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Schlesinger's Phrygian Harmonia, a harmonic series from 12 from 24"},phryg_enh:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the enharmonic genus"},phryg_enhcon:{frequencies:[261.6255653006,283.42769574232,288.87822835275,294.32876096318,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Harmonic Conjunct Enharmonic Phrygian"},phryg_enhinv:{frequencies:[261.6255653006,327.03195662575,337.93302184661,348.83408706747,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Schlesinger's Enharmonic Phrygian Harmonia"},phryg_enhinv2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,348.83408706747,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Inverted harmonic form of Schlesinger's Enharmonic Phrygian"},phryg_penta:{frequencies:[261.6255653006,270.64713651786,285.40970760065,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the pentachromatic genus"},phryg_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,392.4383479509,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,784.8766959018,856.22912280196,941.85203508216,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Phrygian Tonos"},phryg_tri1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the chromatic genus"},phryg_tri1inv:{frequencies:[261.6255653006,305.22982618403,327.03195662575,348.83408706747,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian Harmonia"},phryg_tri2:{frequencies:[261.6255653006,269.10058145205,285.40970760065,348.83408706747,392.4383479509,409.50088481833,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the second trichromatic genus"},phryg_tri3:{frequencies:[261.6255653006,269.10058145205,277.01530443593,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the first trichromatic genus"},phrygian:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,523.2511306012],description:"Old Phrygian ??"},phrygian_diat:{frequencies:[261.6255653006,277.01530443593,294.32876096318,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012,554.03060887186,588.65752192635,672.75145363011,697.66817413493,724.50156544782,753.48162806573,784.8766959018,856.22912280196,897.00193817349,941.85203508216,991.42319482333,1046.5022612024],description:"Phrygian Diatonic Tonos"},phrygian_enh:{frequencies:[261.6255653006,277.01530443593,294.32876096318,303.82323712328,308.80394592858,313.95067836072,348.83408706747,392.4383479509,400.78810003496,405.0976494977,409.50088481833,459.44001711325,523.2511306012],description:"Phrygian Enharmonic Tonos"},phrygian_harm:{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Phrygian Harmonia-Aliquot 24 (flute tuning)"},piano:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Enhanced Piano Total Gamut, see 1/1 vol. 8/2 January 1994"},piano7:{frequencies:[261.6255653006,275.93321340298,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Enhanced piano 7-limit"},pipedum_10:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,372.08969287196,396.89567239676,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"2048/2025 and 34171875/33554432 are homophonic intervals"},pipedum_10a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025 and 25/24, Manuel Op de Coul, 2001"},pipedum_10b:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"225/224, 64/63 and 25/24 are homophonic intervals"},pipedum_10c:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 49/48 are homophonic intervals"},pipedum_10d:{frequencies:[261.6255653006,279.06726965397,299.00064605783,318.93402246168,343.38355445704,372.08969287196,392.4383479509,425.24536328225,448.50096908674,488.36772189445,523.2511306012],description:"1029/1024, 2048/2025 and 64/63 are homophonic intervals"},pipedum_10e:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,367.91095120397,406.97310157871,429.2294430713,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025, 64/63 and 49/48 are homophonic intervals"},pipedum_10f:{frequencies:[261.6255653006,280.31310567921,294.32876096318,327.03195662575,348.83408706747,373.75080757229,392.4383479509,420.46965851882,465.11211608996,490.54793493862,523.2511306012],description:"225/224, 64/63 and 28/27 are homophonic intervals"},pipedum_10g:{frequencies:[261.6255653006,280.31310567921,299.00064605783,325.57848126297,348.83408706747,372.08969287196,398.6675280771,425.24536328225,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 2048/2025 are homophonic intervals"},pipedum_10h:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,373.75080757229,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 64/63 are homophonic intervals"},pipedum_10i:{frequencies:[261.6255653006,279.06726965397,294.32876096318,321.92208230347,343.38355445704,367.91095120397,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"225/224, 2048/2025 and 49/48 are homophonic intervals"},pipedum_10j:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"25/24, 28/27 and 49/48, Gene Ward Smith, 2002"},pipedum_10k:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.49131749323,343.38355445704,367.91095120397,394.1903048614,420.46965851882,455.80987376816,488.36772189445,523.2511306012],description:"2048/2025, 225/224 and 2401/2400"},pipedum_11:{frequencies:[261.6255653006,272.52663052146,282.55561052465,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"16/15 and 15625/15552 are homophonic intervals"},pipedum_11a:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,376.74081403286,381.53728273004,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 10/9, Gene Ward Smith, 2002"},pipedum_12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12a:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12b:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,320.49131749323,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,488.36772189445,523.2511306012],description:"64/63, 50/49 comma and 36/35 chroma"},pipedum_12c:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 36/35 are homophonic intervals"},pipedum_12d:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"50/49, 128/125 and 225/224 are homophonic intervals"},pipedum_12e:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,373.75080757229,392.4383479509,418.60090448096,439.53094970501,467.18850946536,500.55911728431,523.2511306012],description:"50/49, 225/224 and 3136/3125 are homophonic intervals"},pipedum_12f:{frequencies:[261.6255653006,273.74326726486,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,408.78994578219,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"128/125, 3136/3125 and 703125/702464 are homophonic intervals"},pipedum_12g:{frequencies:[261.6255653006,279.06726965397,286.15296204753,306.59245933664,327.03195662575,348.83408706747,366.27579142084,390.69417751556,408.78994578219,437.98922762377,457.84473927605,488.36772189445,523.2511306012],description:"50/49, 225/224 and 28672/28125 are homophonic intervals"},pipedum_12h:{frequencies:[261.6255653006,275.93321340298,291.02331101095,310.42486507835,330.74639366397,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.53496651643,465.11211608996,496.11959049595,523.2511306012],description:"2048/2025 and 67108864/66430125, Gene Ward Smith, 2004"},pipedum_12i:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,441.49314144476,465.11211608996,504.56359022259,523.2511306012],description:"64/63 and 6561/6272, Gene Ward Smith, 2004"},pipedum_12j:{frequencies:[261.6255653006,283.8170195002,285.83021674664,310.07474405997,336.37572681506,348.83408706747,378.42269266694,392.4383479509,413.43299207996,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"6561/6272 and 59049/57344"},pipedum_12k:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,523.2511306012],description:"64/63 and 729/686, Gene Ward Smith, 2004"},pipedum_12l:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,331.39238271409,348.83408706747,368.21375857121,392.4383479509,414.24047839262,441.49314144476,465.11211608996,497.08857407114,523.2511306012],description:"81/80, 361/360 and 513/512, Gene Ward Smith"},pipedum_13:{frequencies:[261.6255653006,276.76092858245,287.78812183066,309.14739649778,327.03195662575,345.95116072807,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051 are homophonic intervals. Op de Coul, 2001"},pipedum_13a:{frequencies:[261.6255653006,266.96486255163,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"15/14, 3136/3125, 2401/2400, Gene Ward Smith, 2002"},pipedum_13b:{frequencies:[261.6255653006,267.90457886781,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"15/14, 3136/3125, 6144/6125, Gene Ward Smith, 2002"},pipedum_13bp:{frequencies:[261.6255653006,282.55561052465,305.16005936662,336.45263027341,363.36884069528,392.4383479509,436.04260883433,470.92601754108,508.60009894437,545.05326104292,605.61473449213,654.0639132515,706.38902631162,784.8766959018],description:"78732/78125 and 250/243, twelfth based, Manuel Op de Coul, 2003"},pipedum_13bp2:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012,565.1112210493,627.90135672144,678.13346525916,726.73768139056,784.8766959018],description:"250/243 and 648/625, twelfth based, Manuel Op de Coul, 2003"},pipedum_13c:{frequencies:[261.6255653006,267.07609791103,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.57253609913,523.2511306012],description:"15/14, 2401/2400, 6144/6125, Gene Ward Smith, 2002"},pipedum_13d:{frequencies:[261.6255653006,281.04308772525,287.78812183066,309.14739649778,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"125/121 and 33275/32768, Joe Monzo, 2003"},pipedum_13e:{frequencies:[261.6255653006,276.76092858245,287.78812183066,304.4370214407,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051, Manuel Op de Coul, 2004"},pipedum_14:{frequencies:[261.6255653006,274.70684356563,284.76252005507,305.22982618403,320.49131749323,336.37572681506,348.83408706747,373.90653707544,392.4383479509,406.97310157871,427.14378008261,448.50096908674,480.73697623985,498.33441009638,523.2511306012],description:"81/80, 49/48 and 2401/2400, Paul Erlich, TL 17-1-2001"},pipedum_14a:{frequencies:[261.6255653006,274.70684356563,284.8811711051,305.22982618403,320.35783506196,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,427.32175665765,448.50096908674,480.53675259294,498.33441009638,523.2511306012],description:"81/80, 50/49 and 2401/2400, Paul Erlich, 2001"},pipedum_14b:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,313.95067836072,339.14425131559,353.19451315581,366.27579142084,392.4383479509,406.97310157871,418.60090448096,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 81/80 comma and 25/24 chroma"},pipedum_14c:{frequencies:[261.6255653006,280.31310567921,282.55561052465,305.22982618403,327.03195662575,336.37572681506,363.36884069528,366.27579142084,392.4383479509,403.65087217807,436.04260883433,467.18850946536,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 50/49 comma and 25/24 chroma"},pipedum_15:{frequencies:[261.6255653006,272.52663052146,290.69507255622,301.39265122629,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,454.2110508691,470.92601754108,502.32108537715,523.2511306012],description:"126/125, 128/125 and 875/864, 5-limit, Paul Erlich, 2001"},pipedum_15a:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,502.32108537715,523.2511306012],description:"Septimal version of pipedum_15, Manuel Op de Coul, 2001"},pipedum_15b:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,311.45900631024,327.03195662575,343.38355445704,357.69120255941,382.72082695402,398.6675280771,418.60090448096,439.53094970501,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"126/125, 128/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15c:{frequencies:[261.6255653006,274.70684356563,284.76252005507,299.00064605783,313.95067836072,327.03195662575,341.71502406609,358.80077526939,381.53728273004,400.61414686654,418.60090448096,436.04260883433,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"49/48, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15d:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,360.55273217989,379.68336007343,398.6675280771,418.60090448096,436.04260883433,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"64/63, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15e:{frequencies:[261.6255653006,273.37201925287,286.15296204753,299.00064605783,313.95067836072,332.22294006425,343.38355445704,358.80077526939,381.53728273004,398.6675280771,412.06026534844,436.04260883433,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"64/63, 875/864 and 1029/1024, Paul Erlich, 2001"},pipedum_15f:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,488.36772189445,490.54793493862,523.2511306012],description:"126/125, 64/63 comma and 28/27 chroma"},pipedum_15g:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"128/125 and 250/243"},pipedum_16:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,355.95315006884,373.75080757229,384.58958099188,400.61414686654,418.60090448096,439.53094970501,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"50/49, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_16a:{frequencies:[261.6255653006,272.52663052146,283.88190679319,301.39265122629,313.95067836072,327.03195662575,340.65828815182,354.85238349148,363.36884069528,385.78259356965,401.85686830172,418.60090448096,436.04260883433,454.2110508691,482.22824196207,502.32108537715,523.2511306012],description:"3125/3072 and 1990656/1953125, OdC 2004"},pipedum_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,465.11211608996,478.40103369253,508.71637697339,523.2511306012],description:"245/243, 64/63 and 525/512, Paul Erlich, 2001"},pipedum_17a:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,461.31528248922,478.40103369253,504.56359022259,523.2511306012],description:"245/243, 525/512 and 1728/1715, Paul Erlich, 2001"},pipedum_17b:{frequencies:[261.6255653006,264.89588486686,286.15296204753,294.32876096318,305.22982618403,327.03195662575,339.14425131559,343.38355445704,367.91095120397,381.53728273004,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"245/243, 64/63 comma and 25/24 chroma"},pipedum_17c:{frequencies:[261.6255653006,273.6806973752,285.83021674664,299.00064605783,310.07474405997,321.55899383997,336.37572681506,348.83408706747,364.90759650026,378.42269266694,392.4383479509,413.43299207996,428.74532511996,448.50096908674,465.11211608996,486.54346200035,504.56359022259,523.2511306012],description:"1605632/1594323 and 177147/175616, Manuel Op de Coul, 2002"},pipedum_17d:{frequencies:[261.6255653006,274.08392555301,284.23518205497,299.00064605783,308.34441624714,319.76457981184,336.37572681506,348.83408706747,365.44523407068,373.05867644715,392.4383479509,411.12588832951,426.35277308246,448.50096908674,465.11211608996,479.64686971777,504.56359022259,523.2511306012],description:"243/242, 99/98 and 64/63, Manuel Op de Coul, 2002"},pipedum_17e:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,310.07474405997,321.92208230347,336.37572681506,348.83408706747,362.16234259141,378.42269266694,395.66829320152,413.43299207996,429.2294430713,445.12682985172,465.11211608996,482.88312345521,504.56359022259,523.2511306012],description:"245/243, 1728/1715 and 32805/32768, Manuel Op de Coul, 2003"},pipedum_17f:{frequencies:[261.6255653006,269.80136421624,285.40970760065,294.32876096318,310.07474405997,319.76457981184,331.11985608357,348.83408706747,359.73515228832,380.54627680087,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,479.64686971777,507.3950357345,523.2511306012],description:"243/242 and 8192/8019, Manuel Op de Coul"},pipedum_17g:{frequencies:[261.6255653006,274.08392555301,285.40970760065,299.00064605783,305.22982618403,319.76457981184,336.37572681506,348.83408706747,359.73515228832,380.54627680087,392.4383479509,406.97310157871,428.11456140098,448.50096908674,457.84473927605,479.64686971777,499.46698830115,523.2511306012],description:"243/242, 896/891 and 99/98, Manuel Op de Coul"},pipedum_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,340.65828815182,350.39138209902,379.84156147346,390.69417751556,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 128/125, Paul Erlich, 2001"},pipedum_18a:{frequencies:[261.6255653006,269.10058145205,280.31310567921,293.02063313667,305.22982618403,313.95067836072,327.03195662575,341.85740532612,356.10146388137,366.27579142084,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 50/49, Paul Erlich, 2001"},pipedum_18b:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,346.20975655133,356.10146388137,373.75080757229,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 686/675, Paul Erlich, 2001"},pipedum_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,301.39265122629,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,401.85686830172,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"81/80 and 15625/15552 are homophonic intervals, inverse of Mandelbaum"},pipedum_19a:{frequencies:[261.6255653006,271.25338610366,282.55561052465,294.32876096318,301.39265122629,313.95067836072,327.03195662575,339.06673262958,353.19451315581,361.67118147155,376.74081403286,392.4383479509,408.78994578219,416.64520105522,434.00541776586,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"3125/3072 and 15625/15552 are homophonic intervals"},pipedum_19b:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"15625/15552 and 78732/78125, Paul Erlich, TL 19-2-2001"},pipedum_19c:{frequencies:[261.6255653006,269.10058145205,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19d:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19e:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19f:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,305.22982618403,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,448.50096908674,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19g:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,360.4025644447,379.84156147346,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19h:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,412.06026534844,415.27867508032,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"126/125, 81/80 comma and 49/48 chroma"},pipedum_19i:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.22982618403,321.92208230347,327.03195662575,343.38355445704,348.83408706747,367.91095120397,381.53728273004,392.4383479509,406.97310157871,429.2294430713,436.04260883433,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"225/224, 81/80 comma and 49/48 chroma"},pipedum_19j:{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.70607818954,358.95027559242,366.27579142084,373.75080757229,381.37837507376,410.22888639134,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"21/20, 3136/3125 and 2401/2400, Gene Ward Smith, 2002"},pipedum_19k:{frequencies:[261.6255653006,267.90457886781,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,357.69120255941,366.27579142084,373.75080757229,382.72082695402,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,510.98743222773,523.2511306012],description:"21/20, 3136/3125 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19l:{frequencies:[261.6255653006,267.07609791103,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.84512238879,358.80077526939,366.27579142084,373.75080757229,381.53728273004,410.05802887931,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.57253609913,523.2511306012],description:"21/20, 2401/2400 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19m:{frequencies:[261.6255653006,269.10058145205,293.02063313667,299.00064605783,305.22982618403,313.95067836072,317.94773560837,348.83408706747,358.80077526939,366.27579142084,373.75080757229,406.97310157871,418.60090448096,430.56093032327,436.04260883433,448.50096908674,488.36772189445,502.32108537715,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 16/15, Gene Ward Smith, 2002"},pipedum_19n:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,366.27579142084,373.75080757229,381.53728273004,392.4383479509,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"126/125, 2401/2400 and 16/15, Gene Ward Smith, 2002"},pipedum_19o:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,502.32108537715,523.2511306012],description:"225/224, 3136/3125 and 4375/4374, OdC 2000"},pipedum_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,284.8811711051,299.00064605783,305.22982618403,320.35783506196,327.03195662575,341.85740532612,348.83408706747,366.27579142084,373.75080757229,392.4383479509,400.44729382745,418.60090448096,427.32175665765,448.50096908674,457.84473927605,480.53675259294,488.36772189445,512.57253609913,523.2511306012],description:"36/35, 225/224 and 2401/2400, P. Erlich, 2001. Just PB version of miracle1"},pipedum_21a:{frequencies:[261.6255653006,265.7783520514,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,332.22294006425,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"1029/1024, 81/80 comma and 25/24 chroma"},pipedum_21b:{frequencies:[261.6255653006,267.07609791103,279.06726965397,284.8811711051,299.00064605783,305.22982618403,318.93402246168,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,398.6675280771,418.60090448096,427.32175665765,448.50096908674,457.84473927605,478.40103369253,488.36772189445,496.11959049595,523.2511306012],description:"36/35, 225/224 and 1029/1024, Gene Ward Smith, 2002"},pipedum_21c:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"First 128/125 and ampersand comma Fokker block"},pipedum_22:{frequencies:[261.6255653006,267.90457886781,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,365.77905168086,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"3125/3072 and 2109375/2097152 are homophonic intervals"},pipedum_22a:{frequencies:[261.6255653006,267.90457886781,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,381.01984550089,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"2048/2025 and 2109375/2097152 are homophonic intervals"},pipedum_22b:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,357.69120255941,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:'2025/2048, 245/243 and 64/63. P. Erlich "7-limit Indian", TL 19-12-2000'},pipedum_22b2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,448.50096908674,465.11211608996,478.40103369253,490.54793493862,504.56359022259,523.2511306012],description:"Version of pipedum_22b with other shape, Paul Erlich"},pipedum_22c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,512.57253609913,523.2511306012],description:"1728/1715, 64/63 and 50/49, Paul Erlich, 2001"},pipedum_22d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 64/63, Paul Erlich, 2001"},pipedum_22e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,384.42940207435,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 50/49, Paul Erlich, 2001"},pipedum_22f:{frequencies:[261.6255653006,269.10058145205,276.78916949353,290.69507255622,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,470.92601754108,494.58536650191,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 875/864, Paul Erlich, 2001"},pipedum_22g:{frequencies:[261.6255653006,267.07609791103,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,490.54793493862,512.57253609913,523.2511306012],description:"225/224, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_22h:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"225/224, 1728/1715 and 875/864, Paul Erlich, 2001"},pipedum_22i:{frequencies:[261.6255653006,269.10058145205,279.06726965397,288.32205155576,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,474.80195184183,490.54793493862,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 245/243, Paul Erlich, 2001"},pipedum_22j:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,299.00064605783,305.22982618403,320.35783506196,332.22294006425,336.37572681506,348.83408706747,353.19451315581,373.75080757229,387.59343007496,392.4383479509,406.97310157871,427.14378008261,436.04260883433,448.50096908674,465.11211608996,480.53675259294,498.33441009638,504.56359022259,523.2511306012],description:"50/49, 64/63 and 245/243, Gene Ward Smith, 2002"},pipedum_22k:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"121/120, 2048/2025 and 4125/4096, Manuel Op de Coul"},pipedum_22l:{frequencies:[261.6255653006,275.62199471997,284.23518205497,290.69507255622,303.18419419197,310.07474405997,319.76457981184,330.74639366397,341.08221846597,348.83408706747,363.82103303037,372.08969287196,387.59343007496,404.24559225596,413.43299207996,426.35277308246,440.99519155196,454.77629128796,465.11211608996,485.09471070715,496.11959049595,511.62332769895,523.2511306012],description:"121/120, 736/729, 100/99 and 2048/2025"},pipedum_23:{frequencies:[261.6255653006,271.25338610366,276.85245005354,287.04062021552,297.60371503945,302.80736724606,313.95067836072,325.50406332439,332.22294006425,344.44874425862,348.83408706747,363.36884069528,376.74081403286,384.51729174103,398.6675280771,413.33849311034,420.56578784176,436.04260883433,452.08897683944,461.42075008924,478.40103369253,496.00619173241,504.67894541011,523.2511306012],description:"6144/6125, 15625/1552 and 5103/5000, Manuel Op de Coul, 2003"},pipedum_24:{frequencies:[261.6255653006,267.57160087561,275.93321340298,285.40970760065,290.69507255622,299.7792935736,310.07474405997,319.76457981184,327.03195662575,338.26335715633,348.83408706747,356.76213450082,367.91095120397,380.54627680087,392.4383479509,401.35740131342,413.43299207996,426.35277308246,436.04260883433,449.66894036041,465.11211608996,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"121/120, 16384/16335 and 32805/32768. Manuel Op de Coul, 2001"},pipedum_24a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,321.92208230347,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,412.06026534844,418.60090448096,429.2294430713,436.04260883433,457.84473927605,470.92601754108,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"49/48, 81/80 and 128/125, Gene Ward Smith, 2002"},pipedum_24b:{frequencies:[261.6255653006,271.31540105247,275.62199471997,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,413.43299207996,434.59481110969,441.49314144476,457.84473927605,465.11211608996,482.33849075995,496.67978412536,515.07533168556,523.2511306012],description:"49/48, 81/80 and 531441/524288"},pipedum_25:{frequencies:[261.6255653006,268.26840191956,274.70684356563,281.29980781121,291.99281841585,299.00064605783,306.17666156322,313.95067836072,327.03195662575,335.33550239945,343.38355445704,351.62475976401,364.99102301981,373.75080757229,382.72082695402,392.4383479509,408.78994578219,418.60090448096,429.2294430713,439.53094970501,447.89271634391,467.18850946536,478.40103369253,490.54793493862,502.32108537715,523.2511306012],description:"65625/65536, 1029/1024 and 3125/3072, Manuel Op de Coul, 2003"},pipedum_26:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,292.89859205665,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,341.71502406609,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,400.61414686654,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,467.3831713443,478.40103369253,498.33441009638,512.57253609913,523.2511306012],description:"1029/1024, 1728/1715 and 50/49, Paul Erlich, 2001"},pipedum_26a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,306.59245933664,321.92208230347,325.57848126297,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,457.84473927605,459.88868900496,465.11211608996,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"50/49, 81/80 and 525/512, Gene Ward Smith, 2002"},pipedum_26b:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,290.69507255622,301.39265122629,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,446.50763144636,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"81/80 and 78125/73728, Gene Ward Smith, 2005"},pipedum_27:{frequencies:[261.6255653006,271.20240005245,278.95104005395,284.76252005507,292.89859205665,299.00064605783,307.54352165948,316.40280006119,325.44288006294,332.22294006425,341.71502406609,351.47831046798,358.80077526939,369.05222599138,379.68336007343,390.53145607553,398.6675280771,410.05802887931,418.60090448096,430.56093032327,442.86267118965,455.62003208812,468.63774729064,478.40103369253,492.06963465517,502.32108537715,516.67311638793,523.2511306012],description:"126/125, 1728/1715 and 4000/3969 are homophonic intervals, Paul Erlich"},pipedum_27a:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,508.71637697339,523.2511306012],description:"126/126, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27b:{frequencies:[261.6255653006,266.96486255163,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.22888639134,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 128/125, Paul Erlich, 2001"},pipedum_27c:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 686/675, Paul Erlich, 2001"},pipedum_27d:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 64/63, Paul Erlich, 2001"},pipedum_27e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,329.64821227876,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.27867508032,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 126/125 and 245/243, Paul Erlich, 2001"},pipedum_27f:{frequencies:[261.6255653006,267.07609791103,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.05802887931,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 128/125, Paul Erlich, 2001"},pipedum_27g:{frequencies:[261.6255653006,267.07609791103,274.59243005311,280.31310567921,290.81619550312,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.72988009104,488.36772189445,498.54204943392,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 686/675, Paul Erlich, 2001"},pipedum_27h:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27i:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.43792805463,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,329.51091606373,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.4517078616,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.69365917187,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 1728/1715 and 245/243, Paul Erlich, 2001"},pipedum_27j:{frequencies:[261.6255653006,269.16210421872,276.91574508099,282.55561052465,290.69507255622,299.06900468747,305.16005936662,313.95067836072,322.99452506247,329.57286411595,339.06673262958,348.83408706747,358.88280562497,366.19207123994,376.74081403286,387.59343007496,395.48743693914,406.88007915549,418.60090448096,423.83341578697,436.04260883433,448.60350703121,461.52624180165,470.92601754108,484.4917875937,498.44834114579,508.60009894437,523.2511306012],description:"78732/78125 and 390625000/387420489"},pipedum_27k:{frequencies:[261.6255653006,264.89588486686,275.62199471997,279.38237857051,290.69507255622,294.32876096318,298.00787047521,310.07474405997,313.95067836072,331.11985608357,344.52749339997,348.83408706747,353.19451315581,367.49599295996,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,418.60090448096,441.49314144476,447.01180571282,459.36999119996,465.11211608996,470.92601754108,496.67978412536,516.79124009995,523.2511306012],description:"67108864/66430125 and 25/24"},pipedum_28:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"393216/390625 and 16875/16384"},pipedum_29:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,288.44218574391,294.32876096318,300.33547037059,310.07474405997,316.40280006119,325.57848126297,332.22294006425,341.85740532612,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,400.44729382745,412.06026534844,420.46965851882,434.10464168396,442.96392008567,455.80987376816,465.11211608996,474.60420009179,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"5120/5103, 225/224 and 50421/50000, Manuel Op de Coul, 2003"},pipedum_29a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,317.94773560837,327.03195662575,339.14425131559,343.38355445704,348.83408706747,363.36884069528,366.27579142084,372.60080508745,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,441.49314144476,457.84473927605,470.92601754108,476.92160341255,490.54793493862,508.71637697339,515.07533168556,523.2511306012],description:"49/48, 55/54, 65/64, 91/90 and 100/99"},pipedum_31:{frequencies:[261.6255653006,271.62175694356,275.93321340298,281.68182201554,289.72987407313,294.32876096318,300.46061014991,310.42486507835,316.89204976748,321.92208230347,331.11985608357,338.01818641865,343.38355445704,356.50355598842,362.16234259141,367.91095120397,380.27045972098,386.30649876417,392.4383479509,407.43263541533,413.89982010446,422.52273302331,434.59481110969,441.49314144476,450.69091522486,465.63729761752,475.33807465122,482.88312345521,496.67978412536,507.02727962797,515.07533168556,523.2511306012],description:"81/80, 225/224 and 1029/1024 are homophonic intervals"},pipedum_31a:{frequencies:[261.6255653006,269.46602871384,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,329.20114651277,336.83253589231,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,411.50143314096,421.04066986538,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,482.22824196207,490.54793493862,502.32108537715,514.3767914262,523.2511306012],description:"393216/390625 and 2109375/2097152 are homophonic intervals"},pipedum_31b:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,327.03195662575,333.84512238879,339.14425131559,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,387.59343007496,392.4383479509,400.61414686654,406.97310157871,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"245/243, 1029/1024 comma and 25/24 chroma"},pipedum_31c:{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,334.88072358477,343.38355445704,348.83408706747,360.55273217989,366.27579142084,373.75080757229,384.58958099188,392.4383479509,398.6675280771,412.06026534844,418.60090448096,429.2294430713,439.53094970501,448.50096908674,457.84473927605,470.92601754108,480.73697623985,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"126/125, 225/224 and 1029/1024, Op de Coul"},pipedum_31d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,316.53463456122,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"1728/1715, 225/224 and 81/80"},pipedum_31e:{frequencies:[261.6255653006,267.07609791103,272.52663052146,276.85245005354,286.15296204753,290.69507255622,299.00064605783,305.22982618403,311.45900631024,317.94773560837,327.03195662575,332.22294006425,343.38355445704,348.83408706747,357.69120255941,363.36884069528,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,415.27867508032,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,476.92160341255,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:'81/80, 126/125 and 1029/1024, Gene Smith (2005) "Synstargam"'},pipedum_32:{frequencies:[261.6255653006,267.07609791103,270.30192333353,280.31310567921,286.15296204753,292.11448209019,299.00064605783,305.22982618403,311.5887808962,315.35224388912,325.57848126297,333.84512238879,337.87740416691,348.83408706747,356.10146388137,360.4025644447,367.91095120397,379.84156147346,384.42940207435,394.1903048614,406.97310157871,415.4517078616,420.46965851882,429.2294430713,443.14848838571,448.50096908674,457.84473927605,474.80195184183,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"225/224, 2048/2025 and 117649/116640"},pipedum_32a:{frequencies:[261.6255653006,268.26840191956,274.59243005311,280.31310567921,286.15296204753,292.89859205665,299.00064605783,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,341.71502406609,348.83408706747,356.10146388137,364.4960256705,372.08969287196,381.53728273004,390.53145607553,398.6675280771,406.97310157871,416.56688648057,425.24536328225,434.10464168396,438.17172313528,450.50320555588,459.88868900496,469.46970335923,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"589824/588245, 225/224 and 2048/2025"},pipedum_34:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,327.03195662575,334.88072358477,340.65828815182,348.83408706747,354.85238349148,363.36884069528,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,470.92601754108,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 393216/390625 are homophonic intervals"},pipedum_34a:{frequencies:[261.6255653006,264.89588486686,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,317.87506184023,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,441.49314144476,452.08897683944,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 2048/2025, Manuel Op de Coul, 2001"},pipedum_34b:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.7792935736,310.07474405997,313.95067836072,319.76457981184,327.03195662575,334.88072358477,342.49164912079,348.83408706747,356.76213450082,359.73515228832,367.91095120397,380.54627680087,383.71749577421,392.4383479509,399.70572476481,408.78994578219,418.60090448096,428.11456140098,436.04260883433,441.49314144476,449.66894036041,465.11211608996,470.92601754108,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"100/99, 243/242 and 5632/5625, Manuel Op de Coul"},pipedum_36:{frequencies:[261.6255653006,267.07609791103,269.10058145205,280.31310567921,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,400.61414686654,406.97310157871,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,467.3831713443,480.53675259294,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"1029/1024, 245/243 comma and 50/49 chroma, Gene Ward Smith, 2001"},pipedum_36a:{frequencies:[261.6255653006,264.89588486686,275.62199471997,275.93321340298,279.06726965397,290.69507255622,293.99679436797,294.32876096318,310.07474405997,310.42486507835,313.95067836072,327.03195662575,330.74639366397,331.11985608357,348.83408706747,349.22797321314,353.19451315581,367.91095120397,372.08969287196,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,413.89982010446,418.60090448096,436.04260883433,440.99519155196,441.49314144476,465.11211608996,465.63729761752,470.92601754108,490.54793493862,496.11959049595,496.67978412536,516.79124009995,523.2511306012],description:"1125/1024 and 531441/524288, Op de Coul"},pipedum_37:{frequencies:[261.6255653006,263.718569823,276.85245005354,279.06726965397,280.31310567921,290.69507255622,293.02063313667,299.00064605783,308.98710943476,311.45900631024,313.95067836072,325.57848126297,332.22294006425,333.70607818954,346.06556256693,348.83408706747,351.62475976401,353.19451315581,370.78453132171,373.75080757229,376.74081403286,390.69417751556,392.4383479509,400.44729382745,415.27867508032,418.60090448096,421.94971171681,436.04260883433,444.94143758605,448.50096908674,465.11211608996,467.18850946536,470.92601754108,494.37937509562,498.33441009638,502.32108537715,519.0983438504,523.2511306012],description:"250/243, 3136/3125 and 3125/3087, Gene Ward Smith, 2002"},pipedum_38:{frequencies:[261.6255653006,271.25338610366,272.52663052146,280.3771918945,282.55561052465,290.69507255622,292.95365699196,301.39265122629,302.80736724606,313.95067836072,315.42434088132,325.50406332439,327.03195662575,336.45263027341,339.06673262958,348.83408706747,350.47148986813,361.67118147155,363.36884069528,376.74081403286,378.50920905758,390.60487598927,392.4383479509,403.74315632809,406.88007915549,418.60090448096,420.56578784176,434.00541776586,436.04260883433,452.08897683944,454.2110508691,467.29531982417,470.92601754108,484.4917875937,488.25609498659,502.32108537715,504.67894541011,519.21702202686,523.2511306012],description:"81/80 and 1224440064/1220703125, Manuel Op de Coul, 2001"},pipedum_38a:{frequencies:[261.6255653006,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,294.32876096318,305.22982618403,306.59245933664,313.95067836072,321.92208230347,327.03195662575,329.64821227876,340.65828815182,343.38355445704,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,383.2405741708,390.69417751556,392.4383479509,408.78994578219,412.06026534844,418.60090448096,429.2294430713,436.04260883433,439.53094970501,457.84473927605,459.88868900496,470.92601754108,476.92160341255,488.36772189445,490.54793493862,510.98743222773,515.07533168556,523.2511306012],description:"50/49, 81/80 and 3125/3072, Gene Ward Smith, 2002"},pipedum_41:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,303.67253115248,308.34441624714,313.95067836072,320.49131749323,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.2846196779,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.40708707973,392.4383479509,400.61414686654,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"100/99 105/104 196/195 275/273 385/384, Paul Erlich, TL 3-11-2000"},pipedum_41a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,400.61414686654,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"pipedum_41 improved shape by Manuel Op de Coul, all intervals superparticular"},pipedum_41b:{frequencies:[261.6255653006,265.7783520514,271.31540105247,274.70684356563,279.06726965397,284.8811711051,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,504.56359022259,515.07533168556,523.2511306012],description:"pipedum_41 more improved shape by M. OdC, all intervals superparticular"},pipedum_41c:{frequencies:[261.6255653006,267.07609791103,271.31540105247,275.93321340298,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,315.35224388912,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,360.4025644447,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,398.6675280771,406.97310157871,410.05802887931,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,474.80195184183,480.53675259294,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"225/224, 245/243 and 1029/1024, Gene Ward Smith, 2002"},pipedum_41d:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,282.55561052465,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,317.51653791741,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,423.83341578697,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"3125/3072 and 32805/32768"},pipedum_43:{frequencies:[261.6255653006,269.10058145205,273.37201925287,274.70684356563,282.55561052465,286.15296204753,287.04062021552,290.69507255622,299.00064605783,305.22982618403,307.54352165948,313.95067836072,322.92069774245,327.03195662575,328.04642310345,332.22294006425,341.71502406609,343.38355445704,348.83408706747,358.80077526939,366.27579142084,369.05222599138,376.74081403286,379.68336007343,381.53728273004,392.4383479509,398.6675280771,410.05802887931,412.06026534844,418.60090448096,423.93031414449,430.56093032327,436.04260883433,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,492.06963465517,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 12288/12005, Gene Ward Smith, 2002"},pipedum_45:{frequencies:[261.6255653006,265.7783520514,267.07609791103,274.70684356563,279.06726965397,280.31310567921,284.8811711051,293.02063313667,294.32876096318,299.00064605783,303.74668805875,305.22982618403,313.95067836072,320.49131749323,325.57848126297,327.03195662575,336.37572681506,341.85740532612,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,372.08969287196,373.75080757229,384.58958099188,392.4383479509,398.6675280771,400.61414686654,406.97310157871,418.60090448096,420.46965851882,427.32175665765,436.04260883433,439.53094970501,448.50096908674,455.80987376816,457.84473927605,465.11211608996,478.40103369253,480.73697623985,488.36772189445,498.33441009638,512.78610798918,515.07533168556,523.2511306012],description:"81/80, 525/512 and 2401/2400, Gene Ward Smith, 2002"},scala205pipedum_45a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.99452506247,329.64821227876,336.37572681506,339.14425131559,345.98646186692,348.83408706747,356.10146388137,363.28578496026,366.27579142084,373.75080757229,376.82694590621,384.42940207435,392.4383479509,395.66829320152,403.65087217807,406.97310157871,415.27867508032,423.83341578697,427.14378008261,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 2401/2400 and 4375/4374, Gene Ward Smith"},pipedum_46:{frequencies:[261.6255653006,265.7783520514,270.41454913492,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,295.30928005711,300.46061014991,305.22982618403,310.07474405997,313.95067836072,320.49131749323,325.57848126297,327.03195662575,332.22294006425,339.14425131559,343.38355445704,348.83408706747,354.37113606854,360.55273217989,366.27579142084,372.08969287196,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.32175665765,429.2294430713,436.04260883433,442.96392008567,450.69091522486,457.84473927605,465.11211608996,470.92601754108,480.73697623985,488.36772189445,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"126/125, 1029/1024 and 5120/5103. Manuel Op de Coul, 2001"},pipedum_46a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,313.95067836072,320.35783506196,320.49131749323,327.03195662575,332.22294006425,336.37572681506,343.38355445704,348.83408706747,353.19451315581,358.80077526939,366.12324007081,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.14378008261,427.32175665765,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,470.92601754108,478.40103369253,488.36772189445,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"126/125, 1029/1024 and 245/243, Gene Ward Smith, 2002"},pipedum_46b:{frequencies:[261.6255653006,264.89588486686,271.25338610366,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,301.39265122629,302.80736724606,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,334.88072358477,339.06673262958,340.65828815182,348.83408706747,353.19451315581,361.67118147155,363.36884069528,372.08969287196,376.74081403286,381.45007420827,387.59343007496,392.4383479509,401.85686830172,403.74315632809,408.78994578219,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,452.08897683944,454.2110508691,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,508.60009894437,516.79124009995,523.2511306012],description:"2048/2025 and 78732/78125"},pipedum_46c:{frequencies:[261.6255653006,266.47048317654,271.31540105247,274.08392555301,279.06726965397,282.62020942966,287.78812183066,290.69507255622,297.67175429757,299.7792935736,306.97399661937,310.07474405997,313.95067836072,319.76457981184,325.57848126297,328.90071066361,332.22294006425,339.14425131559,342.60490694126,348.83408706747,355.29397756872,359.73515228832,363.36884069528,372.08969287196,374.72411696701,383.71749577421,387.59343007496,394.68085279633,399.70572476481,406.97310157871,411.12588832951,418.60090448096,426.35277308246,431.68218274599,436.04260883433,446.50763144636,449.66894036041,460.46099492906,465.11211608996,467.18850946536,479.64686971777,484.4917875937,496.11959049595,499.63215595601,511.62332769895,516.79124009995,523.2511306012],description:"126/125, 176/175, 385/384 and 896/891, Paul Erlich"},pipedum_46d:{frequencies:[261.6255653006,267.23182741418,272.79915715198,274.70684356563,278.36648688978,283.42769574232,287.78812183066,291.52562990638,297.59908052943,299.7792935736,303.67253115248,311.77046531655,313.95067836072,320.67819289702,324.7609013714,327.03195662575,334.03978426773,340.11323489078,343.04051394309,345.34574619679,354.2846196779,359.73515228832,366.27579142084,374.12455837986,376.74081403286,381.53728273004,389.71308164569,392.4383479509,402.90337056292,408.13588186894,411.12588832951,419.69101100305,425.14154361347,431.68218274599,439.53094970501,445.38637902364,448.50096908674,457.84473927605,467.65569797482,470.92601754108,479.64686971777,485.87604984397,490.54793493862,503.62921320365,510.16985233617,519.61744219425,523.2511306012],description:"91/90, 121/120, 126/125, 169/168 and 176/175"},pipedum_5:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"16/15 and 27/25"},pipedum_50:{frequencies:[261.6255653006,267.07609791103,269.10058145205,273.37201925287,274.70684356563,276.85245005354,284.76252005507,286.15296204753,290.69507255622,299.00064605783,300.46061014991,305.22982618403,307.54352165948,313.95067836072,316.40280006119,320.49131749323,327.03195662575,332.22294006425,333.84512238879,341.71502406609,343.38355445704,348.83408706747,358.80077526939,360.55273217989,361.60320006994,366.27579142084,373.75080757229,379.68336007343,381.53728273004,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.93031414449,427.14378008261,436.04260883433,445.12682985172,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,480.73697623985,484.4917875937,498.33441009638,500.76768358318,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 16807/16384, Gene Ward Smith, 2002"},pipedum_53:{frequencies:[261.6255653006,264.89588486686,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"15625/15552 and 32805/32768, Manuel Op de Coul, 2001"},pipedum_53a:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,276.85245005354,280.31310567921,282.55561052465,288.32205155576,290.69507255622,294.32876096318,299.00064605783,302.80736724606,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.99452506247,327.03195662575,332.22294006425,336.37572681506,339.14425131559,346.06556256693,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,387.59343007496,392.4383479509,398.6675280771,403.65087217807,406.97310157871,415.27867508032,418.60090448096,423.83341578697,430.56093032327,436.04260883433,441.49314144476,448.50096908674,454.2110508691,457.84473927605,467.18850946536,470.92601754108,480.53675259294,484.4917875937,490.54793493862,498.33441009638,504.56359022259,508.71637697339,519.0983438504,523.2511306012],description:"225/224, 1728/1715 and 4375/4374, Manuel Op de Coul, 2001"},pipedum_53b:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,274.70684356563,280.31310567921,286.03378130532,288.32205155576,290.69507255622,293.02063313667,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.92069774245,327.03195662575,333.70607818954,336.37572681506,341.85740532612,343.24053756638,348.83408706747,351.62475976401,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,389.3237578878,392.4383479509,400.44729382745,403.65087217807,406.97310157871,410.22888639134,418.60090448096,427.14378008261,430.56093032327,436.04260883433,439.53094970501,448.50096908674,457.65405008851,457.84473927605,467.18850946536,470.92601754108,478.60036745656,480.53675259294,488.36772189445,498.33441009638,502.32108537715,512.57253609913,512.78610798918,523.2511306012],description:"225/224, 1728/1715 and 3125/3087, Gene Ward Smith, 2002"},pipedum_55:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,293.02063313667,294.32876096318,296.75121990114,299.00064605783,305.22982618403,306.59245933664,313.95067836072,317.94773560837,320.49131749323,325.57848126297,327.03195662575,333.84512238879,336.37572681506,340.65828815182,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,367.91095120397,373.75080757229,376.74081403286,381.53728273004,390.69417751556,392.4383479509,400.61414686654,403.65087217807,406.97310157871,408.78994578219,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,445.12682985172,448.50096908674,457.84473927605,459.88868900496,470.92601754108,474.80195184183,476.92160341255,488.36772189445,490.54793493862,502.32108537715,504.56359022259,508.71637697339,520.92557002075,523.2511306012],description:"81/80, 686/675 and 6144/6125, Gene Ward Smith, 2002"},pipedum_58:{frequencies:[261.6255653006,264.29521392612,268.60224704195,271.31540105247,275.62199471997,277.50997462242,280.31310567921,284.8811711051,287.78812183066,292.35618725654,295.30928005711,297.33211566688,302.17752792219,305.22982618403,310.07474405997,313.23877206058,315.35224388912,320.49131749323,323.76163705949,328.90071066361,332.22294006425,337.63694353197,339.94971891247,343.38355445704,348.83408706747,352.39361856816,358.13632938927,361.75386806997,364.23184169193,370.01329949656,373.75080757229,379.84156147346,383.71749577421,389.80824967539,392.4383479509,396.44282088917,402.90337056292,406.97310157871,413.43299207996,417.65169608078,420.46965851882,427.32175665765,431.68218274599,438.53428088482,442.96392008567,445.99817350032,453.26629188329,457.84473927605,465.11211608996,469.85815809087,477.51510585235,480.73697623985,485.64245558924,493.35106599542,498.33441009638,506.45541529795,511.62332769895,515.07533168556,523.2511306012],description:"9801/9800, 2401/2400, 5120/5103 and 896/891"},pipedum_58a:{frequencies:[261.6255653006,265.65057399753,267.66008354786,270.48058443385,272.52663052146,277.4816601673,281.75060878526,285.40970760065,287.78812183066,293.02063313667,295.1673044417,297.30177875068,301.87565226992,305.22982618403,309.92566966379,313.95067836072,316.2506833304,322.00069575458,323.72860352852,327.03195662575,332.97799220076,338.10073054231,342.60490694126,344.24801655217,348.83408706747,352.18826098158,358.59168390851,362.25078272391,366.27579142084,368.95913055213,375.66747838035,379.50081999647,381.53728273004,388.47432423422,392.4383479509,399.57359064092,402.50086969323,406.97310157871,411.12588832951,418.60090448096,422.62591317789,428.25613367658,430.31002069022,436.04260883433,442.75095666255,450.80097405642,455.40098399577,457.84473927605,466.16918908107,469.58434797544,475.68284600109,483.00104363188,488.36772189445,495.88107146206,499.46698830115,503.12608711654,512.27383415502,516.54278277298,523.2511306012],description:"126/125, 144/143, 176/175, 196/195 and 364/363"},pipedum_5a:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:"27/25 and 81/80"},pipedum_64:{frequencies:[261.6255653006,267.90457886781,266.96486255163,273.37201925287,274.70684356563,273.74326726486,280.31310567921,280.42990280658,284.76252005507,286.15296204753,294.32876096318,300.05312833195,299.00064605783,300.46061014991,307.67166479351,306.59245933664,313.95067836072,312.84944830269,320.35783506196,320.49131749323,328.18310911307,327.03195662575,336.37572681506,336.5158833679,341.71502406609,343.38355445704,351.62475976401,348.83408706747,358.80077526939,358.95027559242,366.12324007081,366.27579142084,375.06641041494,373.75080757229,382.72082695402,384.58958099188,383.2405741708,392.4383479509,392.60186392921,398.6675280771,400.61414686654,412.06026534844,408.78994578219,418.60090448096,428.6473261885,427.14378008261,429.2294430713,439.53094970501,437.98922762377,448.50096908674,448.68784449053,455.62003208812,457.84473927605,468.83301301868,467.18850946536,478.40103369253,480.73697623985,488.16432009441,490.54793493862,502.32108537715,500.55911728431,512.57253609913,512.78610798918,520.70860810071,523.2511306012],description:"225/224 235298/234375 and 67108864/66706983"},pipedum_65:{frequencies:[261.6255653006,264.59711493117,267.38234771992,270.72462706642,273.0589090967,275.93321340298,279.06726965397,282.00481986086,285.20783756792,287.99181818792,291.26283636981,294.32876096318,297.67175429757,300.80514118491,303.39878788522,306.84479880935,310.42486507835,313.95067836072,317.25542234346,320.85881726391,323.62537374423,327.30111872997,331.11985608357,334.60532825287,338.40578383303,341.32363637087,345.20039866051,348.83408706747,352.79615324157,356.9123501364,360.9661694219,364.07854546226,367.91095120397,372.08969287196,376.00642648114,380.70650681216,383.98909091723,388.35044849308,392.4383479509,396.89567239676,401.07352157989,404.53171718029,409.58836364504,413.89982010446,418.60090448096,423.00722979129,427.81175635188,431.50049832564,436.89425455471,441.49314144476,446.50763144636,451.20771177737,455.09818182783,460.26719821402,465.11211608996,470.92601754108,475.8831335152,481.28822589586,485.43806061635,490.95167809495,496.11959049595,501.90799237931,507.60867574954,511.9854545563,517.80059799077,523.2511306012],description:"1216/1215, 32805/32768 and 39858075/39845888. Manuel Op de Coul, 2001"},pipedum_65a:{frequencies:[261.6255653006,264.89588486686,267.90457886781,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,286.08755565621,287.10624449997,290.69507255622,294.32876096318,298.00787047521,301.39265122629,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,319.0069383333,322.99452506247,327.03195662575,331.11985608357,334.88072358477,339.06673262958,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.60944457026,358.88280562497,363.36884069528,367.91095120397,372.08969287196,376.74081403286,381.45007420827,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,403.74315632809,408.78994578219,413.43299207996,418.60090448096,423.83341578697,429.13133348431,430.65936674996,436.04260883433,441.49314144476,446.50763144636,452.08897683944,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,478.51040749995,484.4917875937,490.54793493862,496.67978412536,502.32108537715,508.60009894437,510.98743222773,516.79124009995,523.2511306012],description:"78732/78125 and 32805/32768"},pipedum_67:{frequencies:[261.6255653006,262.79353657426,266.96486255163,267.07609791103,272.52663052146,274.70684356563,279.06726965397,280.31310567921,284.8811711051,286.15296204753,293.02063313667,294.32876096318,299.00064605783,299.12522966035,300.33547037059,305.22982618403,306.59245933664,311.45900631024,313.95067836072,320.35783506196,320.49131749323,325.57848126297,327.03195662575,332.22294006425,336.5158833679,339.00300006557,341.85740532612,343.38355445704,348.83408706747,350.39138209902,355.95315006884,360.55273217989,366.27579142084,367.91095120397,373.75080757229,373.90653707544,381.53728273004,384.58958099188,390.69417751556,392.4383479509,398.83363954714,400.44729382745,400.61414686654,406.97310157871,408.78994578219,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,439.53094970501,448.50096908674,448.68784449053,455.80987376816,457.84473927605,459.88868900496,465.11211608996,467.18850946536,474.60420009179,480.73697623985,488.36772189445,490.54793493862,498.33441009638,504.77382505185,512.78610798918,515.07533168556,520.92557002075,523.2511306012],description:"81/80, 1029/1024 and 9604/9375, Gene Ward Smith, 2002"},pipedum_68:{frequencies:[246.94165062806,250.86135936819,252.08626834948,253.99712636029,258.02882677871,259.28873315946,263.4044273366,264.58033995864,268.89201957278,272.13977824317,273.16014686758,276.57464870343,277.80935695657,282.21902928921,286.81815421096,288.0985923994,291.6998248044,292.67158592955,296.32998075367,301.03363124183,302.50352201937,307.30516522603,308.67706328508,311.01688942076,316.08531280392,317.49640795036,322.53603347338,324.11091644933,329.25553417075,333.37122834788,334.48181249092,338.66283514705,340.17472280396,345.71831087928,351.20590311546,352.77378661151,357.18345894416,358.5226927637,362.85303765756,368.76619827124,370.41247594209,376.29203905228,378.12940252422,384.13145653254,387.04324016806,388.93309973919,395.1066410049,396.87050993795,403.33802935916,409.74022030137,411.56941771343,414.86197305514,416.71403543485,423.32854393382,430.22723131644,432.1478885991,439.00737889433,441.15096961159,444.49497113051,451.55044686274,453.56629707195,460.95774783905,468.27453748728,470.36504881535,474.12796920588,476.24461192554,483.80405021008,491.68826436165,493.88330125612],description:"245/243, 2048/2025 and 2401/2400, Gene Ward Smith, 2002"},pipedum_7:{frequencies:[261.6255653006,290.69507255622,317.94773560837,347.75533582165,392.4383479509,429.2294430713,476.92160341255,523.2511306012],description:"81/80, 64/63 and 6144/6125, Manuel Op de Coul"},pipedum_72:{frequencies:[195.99771799087,198.44768946576,200.08100378235,201.59765279061,204.16428957382,205.79760389041,208.41771227328,209.06423252359,211.67753543014,214.37250405251,216.08748408493,217.77524221208,220.49743273973,222.31222642483,223.99739198957,226.79735938944,228.66400432268,231.52230437672,232.29359169288,235.19726158904,238.19167116946,240.09720453882,241.91718334873,244.99714748859,246.9571246685,250.10125472793,251.99706598826,254.07111591409,257.24700486302,258.04499557198,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,277.89028303104,279.99673998696,282.23671390685,285.83000540335,289.40288047089,290.3669896161,293.99657698631,296.41630189977,300.12150567352,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,321.55875607877,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.76148788545,342.99600648402,347.28345656507,348.44038753932,352.79589238357,357.28750675419,360.14580680822,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,385.87050729453,387.1559861548,391.99543598174],description:"225/224, 1029/1024 and 4375/4374, Gene Ward Smith, 2002"},pipedum_72a:{frequencies:[195.99771799087,197.5656997348,200.08100378235,201.59765279061,203.21043401293,205.79760389041,207.44398472154,209.99755499022,211.67753543014,213.41973736784,216.04686727389,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.84921063758,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.07883968176,240.09720453882,241.91718334873,244.99714748859,246.9571246685,248.93278166584,251.99706598826,254.07111591409,256.1036848414,259.25624072866,261.33029065449,264.65741241051,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.59197962872,279.99673998696,282.23671390685,285.83000540335,288.11664544658,290.30062001848,293.99657698631,296.3485496022,298.59492344758,302.46561418344,304.88533909691,308.7669811456,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.68405668822,342.99600648402,345.73997453589,348.36074402217,352.79589238357,355.69956227973,360.07811212314,362.95873702013,365.86240691629,370.52037737472,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"4375/4374, 2401/2400 and 15625/15552, Manuel Op de Coul, 2002"},pipedum_72b:{frequencies:[195.99771799087,197.5656997348,200.51849868858,202.12264667808,204.16428957382,205.79760389041,207.94510975112,209.60867062912,211.67753543014,213.41973736784,215.59748978996,218.74745311481,220.49743273973,222.7983318762,224.58071853121,226.79735938944,228.66400432268,230.99731048924,232.89852292125,235.19726158904,238.19167116946,240.62219842629,242.5471760137,244.99714748859,246.9571246685,249.53413170134,251.53040475495,254.07111591409,256.1036848414,259.87197430039,262.49694373777,264.59691928767,267.35799825143,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.4782275055,283.49669923679,285.83000540335,288.74663811155,291.12315365156,293.99657698631,296.3485496022,299.44095804161,301.83648570594,304.88533909691,309.37139797666,311.91766462667,314.99633248533,317.51630314521,320.82959790172,323.39623468494,326.66286331812,329.27616622466,332.71217560179,336.87107779681,340.19603908415,342.99600648402,346.49596573386,349.34778438187,352.79589238357,355.69956227973,359.32914964993,362.08404605941,367.49572123288,371.24567757199,374.30119755201,377.99559898239,381.10667387114,384.99551748207,388.16420486875,391.99543598174],description:"225/224, 3025/3024, 1375/1372 and 4375/4374"},pipedum_72b2:{frequencies:[195.99771799087,198.44768946576,200.45221158157,202.12264667808,204.16428957382,205.79760389041,207.87636756607,209.06423252359,211.67753543014,213.81569235368,215.59748978996,217.77524221208,220.49743273973,222.72467953508,223.99739198957,226.79735938944,228.66400432268,230.99731048924,233.3306166558,235.19726158904,237.57299150408,239.55276643329,241.97249134675,244.99714748859,246.39713118852,249.45164107929,251.99706598826,254.07111591409,257.24700486302,258.71698774795,261.33029065449,264.59691928767,267.2696154421,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.99673998696,282.23671390685,285.0875898049,287.46331971994,290.3669896161,293.99657698631,296.96623938011,298.66318931942,302.39647918591,304.88533909691,307.99641398565,311.81455134911,313.59634878539,317.51630314521,320.72353853051,323.39623468494,326.66286331812,329.27616622466,332.60218810572,335.99608798435,338.76148788545,342.99600648402,344.95598366393,348.44038753932,352.79589238357,356.35948725613,359.32914964993,362.95873702013,367.49572123288,369.59569678278,374.17746161893,376.31561854247,380.11678640654,383.28442629326,387.1559861548,391.99543598174],description:"Optimised version of pipedum_72b, Manuel Op de Coul"},pipedum_72c:{frequencies:[195.99771799087,197.5656997348,199.99767141926,201.59765279061,203.25689273127,205.79760389041,207.40499258293,209.99755499022,211.67753543014,213.41973736784,215.9974851328,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.79735938944,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.13304151982,239.99720570311,241.91718334873,244.99714748859,246.9571246685,248.88599109952,251.99706598826,254.07111591409,256.1036848414,259.19698215935,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.47678096998,279.99673998696,282.23671390685,285.83000540335,287.99664684373,290.3669896161,293.99657698631,296.41630189977,298.66318931942,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.32945236543,335.99608798435,338.76148788545,342.99600648402,345.59597621247,348.44038753932,352.79589238357,355.69956227973,359.99580855466,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"441/440, 2401/2400, 4375/4374 and 1375/1372"},pipedum_74:{frequencies:[174.6141157165,175.4667237034,177.38576834692,178.25190979393,182.45393315683,183.34482150233,186.25505676427,187.16450528362,187.6669026756,191.57662981467,192.51206257744,194.01568412944,194.96302633711,195.48635695375,199.55898939029,200.53339851817,202.72659239648,203.71646833592,208.51878075067,209.5369388598,210.56006844408,212.8629220163,213.90229175271,216.62558481901,218.9447197882,220.01378580279,221.73221043365,222.81488724241,228.06741644604,229.18102687791,231.68753416741,232.81882095533,233.95563160453,239.47078726834,240.6400782218,243.27191087578,244.4597620031,249.5526737115,250.2225369008,251.44432663176,253.4082404956,254.6455854199,259.95070178281,260.64847593833,261.92117357475,266.07865252038,267.37786469089,273.68089973525,275.01723225349,278.02504100089,279.3825851464,280.74675792544,285.20305567028,287.36494472201,291.02352619417,291.92629305093,292.44453950566,297.08651632321,299.33848408543,304.08988859472,305.57470250388,310.42509460711,311.94084213937,312.778171126,319.29438302446,320.85343762907,325.94634933747,328.4170796823,333.63004920107,334.22233086361,335.25910217568,339.52744722653,342.10112466906,347.53130125111,349.228231433],description:"81/80, 126/125 and 4194304/4117715, Gene Ward Smith, 2002"},pipedum_81:{frequencies:[116.54094037952,117.10998793997,118.96887663743,119.87068153322,121.77339076391,122.3679873985,122.96548733697,124.86529326377,124.9173204693,126.84728204574,127.4666535401,128.08904930934,130.12220882219,130.47149010419,131.10855792696,133.18964614802,133.83998621711,135.96443044277,136.62831926329,136.99506460939,139.16958944446,139.84912845542,140.53198552796,142.70319230145,142.76265196491,144.96832233798,145.6761754744,146.38748492496,148.71109579678,149.83835191653,152.21673845488,152.95998424812,153.70685917121,155.38792050603,156.14665058662,156.56578812502,159.82757537763,160.60798346053,163.08936263023,163.15731653133,163.95398311595,166.48705768503,167.29998277138,169.12970939431,169.95553805347,170.78539907912,173.96198680558,174.81141056928,175.66498190995,177.58619486403,178.45331495614,182.66008614586,183.55198109774,184.08675852442,184.44823100545,186.46550460723,187.37598070395,190.2709230686,191.19998031015,193.29109645065,194.23490063253,195.18331323328,199.78446922203,200.75997932566,202.95565127318,203.94664566416,204.94247889494,208.7543841667,209.77369268314,210.79797829194,213.10343383684,214.14397794737,217.45248350698,218.5142632116,218.60531082127,221.98274358004,223.06664369518,227.71386543882,228.32510768232,229.43997637218,231.94931574077,233.08188075904],description:"81/80, 126/125 and 17294403/16777216, Gene Ward Smith, 2002"},pipedum_87:{frequencies:[82.40688922822,83.34286871081,83.43697534357,84.3846545697,84.87648045204,85.84050961273,86.81548824043,86.91351598289,87.90068184343,87.99993493267,88.99944036648,90.43280025045,90.53491248218,91.56321025358,92.60318745646,92.70775038175,93.76072729966,93.86659726152,95.37834401414,96.46165360048,96.57057331432,97.66742427048,97.77770548075,98.88826707386,100.01144245297,100.59434720242,101.73690028175,101.85177654245,103.00861153527,104.17858588852,104.29621917947,105.48081821212,105.59992191921,107.30063701591,108.51936030054,108.64189497861,109.87585230429,111.12382494775,111.2493004581,112.5128727596,113.16864060272,114.45401281697,115.75398432057,115.88468797718,117.20090912458,117.3332465769,118.66592048864,120.5770670006,120.7132166429,122.0842803381,122.22213185094,123.61033384233,125.01430306622,125.15546301536,127.17112535219,128.61553813397,128.76076441909,130.22323236064,130.37027397433,131.85102276515,133.3485899373,133.49916054972,135.64920037567,135.80236872326,137.34481538037,138.90478118469,139.06162557262,140.6410909495,140.79989589228,143.06751602122,144.69248040072,144.85585997148,146.50113640572,146.66655822112,148.3324006108,150.01716367946,150.89152080363,152.60535042263,154.33864576076,154.51291730291,156.26787883277,156.4443287692,158.22122731818,160.76942266746,160.95095552387,162.7790404508,162.96284246792,164.81377845644],description:"67108864/66430125 and 15625/15552, Op de Coul"},pipedum_9:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,392.4383479509,420.46965851882,448.50096908674,490.54793493862,523.2511306012],description:"225/224, 49/48 and 36/35 are homophonic intervals"},pipedum_99:{frequencies:[41.20344461411,41.53307217102,41.72802550619,42.06184971024,42.3806858888,42.72949811834,42.92025480636,43.26361684482,43.60972577957,43.95034092172,44.14654780083,44.49972018324,44.86597302425,45.06626754668,45.407877738,45.78160512679,46.1478579678,46.35387519087,46.73538856693,47.08965098755,47.46636819545,47.68917200707,48.07068538313,48.45525086619,48.65129757643,49.0517197787,49.44413353693,49.83968660523,50.07363060743,50.47421965228,50.85682306656,51.275397742,51.50430576764,51.91634021378,52.34363519496,52.55541404861,52.975857361,53.41187264792,53.8391676291,54.07952105602,54.50191086522,54.93792615215,55.37742956136,55.62465022905,56.08246628032,56.50758118507,56.7598471725,57.22700640849,57.68482245975,58.14630103943,58.41923570866,58.86206373444,59.33296024432,59.82129736567,60.08835672891,60.56906358274,61.04214016905,61.31464972338,61.80516692116,62.29960825653,62.81236223395,63.06649685833,63.5710288332,64.0942471775,64.60700115492,64.89542526722,65.40229303827,65.92551138258,66.21982170125,66.7648408099,67.29895953638,67.80909742208,68.12738858153,68.67240769018,69.2217869517,69.77556124732,70.1030828504,70.63447648133,71.19955229318,71.53375801061,72.10602807469,72.68287629929,73.25056820286,73.57757966805,74.1662003054,74.77662170709,75.37483468075,75.67979623,76.30267521131,76.91309661301,77.25645865146,77.87451032067,78.48275164592,79.11061365909,79.4637860415,80.11780897188,80.75875144366,81.37091690649,81.75286629784,82.40688922822],description:"2401/2400, 3136/3125 and 4375/4374, Gene Ward Smith, 2002"},pipedum_9a:{frequencies:[261.6255653006,282.62020942966,305.22982618403,329.72357766794,356.10146388137,384.67750727926,415.4517078616,448.79042515914,484.69365917187,523.2511306012],description:"4375/4374, 2401/2400 and 21/20 are homophonic intervals"},pipedum_9b:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,357.20610515709,383.2405741708,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"128/125 and 2109375/2097152 are homophonic intervals"},pipedum_9c:{frequencies:[261.6255653006,285.40970760065,305.22982618403,332.97799220076,348.83408706747,392.4383479509,411.12588832951,448.50096908674,479.64686971777,523.2511306012],description:"49/48, 21/20, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9d:{frequencies:[261.6255653006,277.4816601673,308.34441624714,327.03195662575,346.85207520913,394.68085279633,418.60090448096,443.97065626768,493.35106599542,523.2511306012],description:"128/125, 36/35, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9e:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"21/20, 27/25 and 128/125"},polansky_ps:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4447.6346101102,327.03195662575,654.0639132515,981.09586987725,1308.127826503,1635.15978312875,1962.1917397545,2289.22369638025,2616.255653006,2943.28760963175,3270.3195662575,3597.35152288325,3924.383479509,4251.41543613475,4578.4473927605,4905.47934938625,5232.511306012,5559.54326263775,392.4383479509,784.8766959018,1177.3150438527,1569.7533918036,1962.1917397545,2354.6300877054,2747.0684356563,3139.5067836072,3531.9451315581,3924.383479509,4316.8218274599,4709.2601754108,5101.6985233617,5494.1368713126,5886.5752192635,6279.0135672144,6671.4519151653],description:"Three interlocking harmonic series on 1:5:3 by Larry Polansky in Psaltery"},poole:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Poole's double diatonic or dichordal scale"},porcupine:{frequencies:[261.6255653006,268.5059110196,275.56719913678,277.81869773502,285.12489766782,287.45448663717,295.01409284105,302.77250493809,305.24628043356,313.27378316024,315.83336022842,324.13928669805,332.66364612382,335.38164643474,344.20166244741,347.01393314922,356.13986022226,365.50578499276,368.49211923405,378.18288921726,381.27279846892,391.29968045081,401.5902538439,404.87141319969,415.51890206933,418.91386427268,429.93064777916,441.23715556831,444.84224659643,456.54090625717,460.27103529174,472.37544811397,484.79818817936,488.75918813348,501.6127950959,505.71118020326,519.01059820838,523.2511306012],description:"porcupine temperament, g=162.996, 5-limit"},portbag1:{frequencies:[261.6255653006,281.75060878526,311.64221749042,334.88072358477,376.74081403286,413.43299207996,457.84473927605,523.2511306012],description:"Portugese bagpipe tuning"},portbag2:{frequencies:[261.6255653006,274.70684356563,281.75060878526,310.07474405997,317.68818643644,343.38355445704,372.08969287196,392.4383479509,408.78994578219,482.37213602298,523.2511306012],description:"Portugese bagpipe tuning 2"},prelleur:{frequencies:[261.6255653006,276.42153822591,293.20376052703,310.91918875105,328.72923110101,349.43408698743,368.89538496172,391.53834819612,414.55891854195,438.90564190541,466.17878415199,492.19384741628,523.2511306012],description:"Peter Prelleur's well temperament (1731)"},preston:{frequencies:[261.6255653006,276.24946721727,293.45376109391,311.26733605541,328.91048112005,349.30075403587,368.79929095641,391.73834630677,413.67420227347,439.48064068428,466.20100528964,492.6657196346,523.2511306012],description:"Preston's equal beating temperament (1785)"},preston2:{frequencies:[261.6255653006,276.2302000593,293.37610901672,311.58628319174,328.97985807656,349.39999567988,368.9044325484,391.80273191286,413.67420227347,439.35140993827,466.62242981045,492.67053466508,523.2511306012],description:"Preston's theoretically correct well temperament"},prime_10:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,523.2511306012],description:"First 10 prime numbers reduced by 2/1"},prime_5:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,523.2511306012],description:'What Lou Harrison calls "the Prime Pentatonic", a widely used scale'},primes6:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1308.127826503,1831.3789571042,2877.8812183066,3401.1323489078],description:"First 6 primes"},prinz:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.49599295996,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Prinz well-tempermament (1808)"},prinz2:{frequencies:[261.6255653006,275.62199471997,291.81313052759,310.07474405997,327.03195662575,348.83408706747,367.49599295996,390.42584360243,413.43299207996,436.71344361716,465.11211608996,490.54793493862,523.2511306012],description:"Prinz equal beating temperament (1808)"},"prod13-2":{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"13-limit binary products [1 3 5 7 11 13]"},prod13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,331.11985608357,343.38355445704,345.42750418595,359.73515228832,367.91095120397,371.99885066179,392.4383479509,400.61414686654,404.70204632437,408.78994578219,425.14154361347,441.49314144476,449.66894036041,457.84473927605,478.28423656516,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"13-limit binary products [1 3 5 7 9 11 13]"},prod7d:{frequencies:[261.6255653006,265.7783520514,267.90457886781,273.37201925287,279.06726965397,286.15296204753,294.32876096318,299.00064605783,300.46061014991,306.59245933664,310.07474405997,318.93402246168,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,350.53737850823,357.69120255941,367.91095120397,372.08969287196,382.72082695402,390.53145607553,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,429.2294430713,441.49314144476,446.50763144636,455.62003208812,457.84473927605,465.11211608996,478.40103369253,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Double Cubic Corner 7-limit. Chalmers '96"},prod7s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Single Cubic Corner 7-limit"},prodq13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"13-limit Binary products and quotients. Chalmers '96"},prog_ennea:{frequencies:[261.6255653006,269.29177952703,285.30470202322,311.12698372208,349.22823143301,391.99543598175,403.48177901006,427.47405410759,466.16376151809,523.2511306012],description:"Progressive Enneatonic, 50+100+150+200 cents in each half (500 cents)"},prog_ennea1:{frequencies:[261.6255653006,269.10058145205,285.40970760065,310.68035879446,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prog_ennea2:{frequencies:[261.6255653006,269.55361273395,285.40970760065,321.08592105074,348.83408706747,392.4383479509,404.33041910093,428.11456140098,481.6288815761,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+200+150 cents in each half (500 cents)"},prog_ennea3:{frequencies:[261.6255653006,269.55361273395,285.40970760065,310.07474405997,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prooijen1:{frequencies:[261.6255653006,339.14425131559,366.27579142084,436.04260883433,470.92601754108,610.45965236807,726.73768139056,784.8766959018],description:"Kees van Prooijen, major mode of Bohlen-Pierce"},prooijen2:{frequencies:[261.6255653006,311.45900631024,336.37572681506,436.04260883433,470.92601754108,560.62621135843,726.73768139056,784.8766959018],description:"Kees van Prooijen, minor mode of Bohlen-Pierce"},"ps-dorian":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 4 of p. 115 based on Archytas's Enharmonic"},"ps-enh":{frequencies:[261.6255653006,266.38239376061,279.06726965397,348.83408706747,392.4383479509,399.57359064092,418.60090448096,523.2511306012],description:"Dorian mode of an Enharmonic genus found in Ptolemy's Harmonics"},"ps-hypod":{frequencies:[261.6255653006,294.32876096318,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Complex 7 of p. 115 based on Archytas's Enharmonic"},"ps-hypod2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 8 of p. 115 based on Archytas's Enharmonic"},"ps-mixol":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Complex 3 of p. 115 based on Archytas's Enharmonic"},ptolemy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Intense Diatonic Syntonon, also Zarlino's scale"},ptolemy_chrom:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,436.04260883433,523.2511306012],description:"Ptolemy Soft Chromatic"},ptolemy_ddiat:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Lyra tuning, Dorian mode, comb. of diatonon toniaion & diatonon ditoniaion"},ptolemy_diat:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ptolemy's Diatonon Ditoniaion & Archytas' Diatonic, also Lyra tuning"},ptolemy_diat2:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Dorian mode of a permutation of Ptolemy's Tonic Diatonic"},ptolemy_diat3:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,441.49314144476,470.92601754108,523.2511306012],description:"Dorian mode of the remaining permutation of Ptolemy's Intense Diatonic"},ptolemy_diat4:{frequencies:[261.6255653006,299.00064605783,310.07474405997,348.83408706747,392.4383479509,448.50096908674,465.11211608996,523.2511306012],description:"permuted Ptolemy's diatonic"},ptolemy_diat5:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Sterea lyra, Dorian, comb. of 2 Tonic Diatonic 4chords, also Archytas' diatonic"},ptolemy_diff:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,425.14154361347,490.54793493862,523.2511306012],description:"Difference tones of Intense Diatonic reduced by 2/1"},ptolemy_enh:{frequencies:[261.6255653006,267.43946675172,279.06726965397,348.83408706747,392.4383479509,401.15920012759,418.60090448096,523.2511306012],description:"Dorian mode of Ptolemy's Enharmonic"},ptolemy_exp:{frequencies:[261.6255653006,272.52663052146,275.93321340298,287.4304306281,290.69507255622,294.32876096318,306.59245933664,327.03195662575,340.65828815182,344.91651675372,348.83408706747,363.36884069528,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,431.14564594215,436.04260883433,441.49314144476,459.88868900496,490.54793493862,510.98743222773,517.37477513058,523.2511306012],description:"Intense Diatonic expanded: all interval combinations"},ptolemy_hom:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Equable Diatonic or Diatonon Homalon"},ptolemy_iast:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Ptolemy's Iastia or Lydia tuning, mixture of Tonic Diatonic & Intense Diatonic"},ptolemy_iastaiol:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,441.49314144476,465.11211608996,523.2511306012],description:"Ptolemy's kithara tuning, mixture of Tonic Diatonic and Ditone Diatonic"},ptolemy_ichrom:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,411.12588832951,448.50096908674,523.2511306012],description:"Dorian mode of Ptolemy's Intense Chromatic"},ptolemy_idiat:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Intense Diatonic (Diatonon Syntonon)"},ptolemy_imix:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ptolemy Intense Diatonic mixed with its inverse"},ptolemy_malak:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Ptolemy's Malaka lyra tuning, a mixture of Intense Chrom. & Tonic Diatonic"},ptolemy_malak2:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Malaka lyra, mixture of his Soft Chromatic and Tonic Diatonic."},ptolemy_mdiat:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,412.06026534844,457.84473927605,523.2511306012],description:"Ptolemy soft diatonic"},ptolemy_mdiat2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_mdiat3:{frequencies:[261.6255653006,299.00064605783,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_meta:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Metabolika lyra tuning, mixture of Soft Diatonic & Tonic Diatonic"},ptolemy_mix:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"All modes of Ptolemy Intense Diatonic mixed"},ptolemy_prod:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,484.4917875937,490.54793493862,523.2511306012],description:"Product of Intense Diatonic with its intervals"},ptolemy_tree:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Intense Diatonic with all their Farey parent fractions"},pygmie:{frequencies:[261.6255653006,299.00064605783,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"Pygmie scale"},pyle:{frequencies:[261.6255653006,277.19063644077,293.6461094938,311.15753660095,329.66944764997,349.23831768549,369.99228554622,391.93430587921,415.28070933274,439.96441988338,466.23108306565,493.99742571239,523.2511306012],description:"Howard Willet Pyle quasi equal temperament"},pyramid:{frequencies:[261.6255653006,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'This scale may also be called the "Wedding Cake"'},pyramid_down:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Upside-Down Wedding Cake (divorce cake)"},pyth_12:{frequencies:[261.6255653006,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747,372.50983809402,392.4383479509,419.07356785577,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"12-tone Pythagorean scale"},pyth_12s:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,326.6631048533,348.83408706747,367.49599295996,392.4383479509,419.07356785577,435.55080647107,471.45776383774,489.99465727995,523.2511306012],description:"Scale with major thirds flat by a schisma"},pyth_17:{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,471.45776383774,496.67978412536,523.2511306012],description:"17-tone Pythagorean scale"},pyth_17s:{frequencies:[261.6255653006,275.62199471997,279.06726965397,294.32876096318,310.07474405997,313.95067836072,331.11985608357,348.83408706747,367.49599295996,372.08969287196,392.4383479509,413.43299207996,418.60090448096,441.49314144476,465.11211608996,470.92601754108,496.67978412536,523.2511306012],description:"Schismatically altered 17-tone Pythagorean scale"},pyth_22:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"Pythagorean shrutis"},pyth_27:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,290.36720431405,294.32876096318,298.34436617857,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,397.79248823809,413.43299207996,419.07356785577,435.55080647107,441.49314144476,447.51654926786,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"27-tone Pythagorean scale"},pyth_31:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,283.19406633357,294.32876096318,298.34436617857,310.07474405997,314.30517589183,318.59332496145,326.6631048533,331.11985608357,335.63741195089,348.83408706747,353.59332287831,367.49599295996,372.50983809402,377.59208844475,392.4383479509,397.79248823809,413.43299207996,419.07356785577,424.79110016094,441.49314144476,447.51654926786,465.11211608996,471.45776383774,477.8899872033,489.99465727995,496.67978412536,503.45611792634,523.2511306012],description:"31-tone Pythagorean scale"},pyth_7a:{frequencies:[261.6255653006,277.97716313189,294.32876096318,312.72430852337,331.11985608357,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,469.08646278506,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided arithmetically"},pyth_7h:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided harmonically"},pyth_chrom:{frequencies:[261.6255653006,275.62199471997,294.32876096318,348.83408706747,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Dorian mode of the so-called Pythagorean chromatic, recorded by Gaudentius"},pyth_sev:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,291.47537246454,299.00064605783,306.7202061947,314.63906894008,322.76237975718,333.11471138804,341.71502406609,350.53737850823,359.58750736009,368.87129039875,380.70252730062,390.53145607553,400.61414686654,410.95715126868,421.56719060242,435.08860262928,446.32166408632,457.84473927605,469.66531573563,481.7910743145,497.2441172906,510.08190181294,523.2511306012],description:"26-tone Pythagorean scale based on 7/4"},pyth_sev_16:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,306.7202061947,314.63906894008,322.76237975718,350.53737850823,359.58750736009,368.87129039875,400.61414686654,410.95715126868,421.56719060242,457.84473927605,469.66531573563,481.7910743145,523.2511306012],description:'16-tone Pythagorean scale based on 7/4, "Armodue"'},pyth_third:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,287.66035117148,290.46272611903,297.43383186155,304.57224382623,311.88197767806,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,363.07840893547,371.79228894479,380.71530478279,389.85247209758,399.20893142792,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,453.84801015616,464.74036282794,475.89413097849,487.31559012197,499.0111642849,510.98743222773,523.2511306012],description:"Cycle of 5/4 thirds"}};o.prototype._tune=function(i,n=220){const e=new t;if(!e.isValidScale(i))throw new Error('not a valid tune.js scale name: "'+i+'". See http://abbernie.github.io/tune/scales.html');return e.loadScale(i),e.tonicize(n),this._asNumber()._withHap(r=>r.withValue(()=>e.note(r.value)).setContext(a(c({},r.context),{type:"frequency"})))};o.prototype.define("tune",(i,n)=>n.tune(i),{composable:!0,patternified:!0}); diff --git a/tutorial/assets/index.c0f5b494.js b/tutorial/assets/index.c0f5b494.js new file mode 100644 index 000000000..fdedb6470 --- /dev/null +++ b/tutorial/assets/index.c0f5b494.js @@ -0,0 +1 @@ +import{W as a,D as b}from"./index.5a47cda7.js";export{a as WebMidi,b as enableWebMidi}; diff --git a/tutorial/assets/index.dd197254.js b/tutorial/assets/index.dd197254.js new file mode 100644 index 000000000..d71a46f62 --- /dev/null +++ b/tutorial/assets/index.dd197254.js @@ -0,0 +1 @@ +var v=Object.defineProperty,A=Object.defineProperties;var T=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var f=(e,t,r)=>t in e?v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))C.call(t,r)&&f(e,r,t[r]);if(x)for(var r of x(t))b.call(t,r)&&f(e,r,t[r]);return e},w=(e,t)=>A(e,T(t));var u=(e,t,r)=>(f(e,typeof t!="symbol"?t+"":t,r),r);import{S as N,E as q,C as O}from"./index.5a47cda7.js";const M=e=>"("+e+")();",R=e=>URL.createObjectURL(new Blob([M(e)],{type:"text/javascript"})),S=e=>new Worker(R(e));class V{constructor(t,r,i=this.interval){u(this,"worker");u(this,"audioContext");u(this,"interval",.2);u(this,"lastEnd",0);this.audioContext=t,this.interval=i,this.worker=S(()=>{let n,o=null;const s=()=>{o&&(clearInterval(o),o=null)},a=()=>{if(s(),!n)throw new Error("no interval set! call worker.postMessage({interval}) before starting.");o=setInterval(()=>postMessage("tick"),n*1e3)};self.onmessage=function(l){l.data=="start"?a():l.data.interval?(n=l.data.interval,o&&a()):l.data=="stop"&&s()}}),this.worker.postMessage({interval:i}),this.worker.onmessage=n=>{if(n.data==="tick"){const o=this.lastEnd||this.audioContext.currentTime,s=this.audioContext.currentTime+this.interval;this.lastEnd=s,r(o,s)}}}start(){console.log("start..."),this.audioContext.resume(),this.worker.postMessage("start")}stop(){console.log("stop..."),this.worker.postMessage("stop")}}class j{constructor({audioContext:t,interval:r=.2,onEvent:i,latency:n=.2}){u(this,"worker");u(this,"pattern");this.worker=new V(t,(o,s)=>{this.pattern.query(new N(new q(o+n,s+n))).forEach(a=>{!a.part.begin.equals(a.whole.begin)||(a.context.onTrigger&&a.context.onTrigger(a.whole.begin,a,t.currentTime,1),i&&(i==null||i(a)))})},r)}start(){if(!this.pattern)throw new Error("Scheduler: no pattern set! call .setPattern first.");this.worker.start()}stop(){this.worker.stop()}setPattern(t){this.pattern=t}}const{Pattern:c,getFrequency:_,patternify2:F}=O;let d;const p=()=>(d||(d=new AudioContext),d),g=.2,I=(e,t,r,i,n,o,s)=>{const a=p().createGain();return a.gain.setValueAtTime(0,o),a.gain.linearRampToValueAtTime(n,o+e),a.gain.linearRampToValueAtTime(r*n,o+e+t),a.gain.setValueAtTime(r*n,s),a.gain.linearRampToValueAtTime(0,s+i),a};c.prototype.withAudioNode=function(e){return this._withHap(t=>t.setContext(w(h({},t.context),{createAudioNode:(r,i)=>{var n,o;return e(r,i,(o=(n=t.context).createAudioNode)==null?void 0:o.call(n,r,t))}})))};c.prototype._wave=function(e){return this.withAudioNode((t,r)=>{const i=p().createOscillator();i.type=e;const n=_(r);i.frequency.value=n;const o=t!=null?t:r.whole.begin.valueOf()+g,s=o+r.duration.valueOf();return i.start(o),i.stop(s),i})};c.prototype.adsr=function(e=.01,t=.05,r=1,i=.01){return this.withAudioNode((n,o,s)=>{var y;const a=((y=o.context)==null?void 0:y.velocity)||1,l=n!=null?n:o.whole.begin.valueOf()+g,k=l+o.duration.valueOf()+g,m=I(e,t,r,i,a,l,k);return s==null||s.connect(m),m})};c.prototype._filter=function(e="lowpass",t=1e3){return this.withAudioNode((r,i,n)=>{const o=p().createBiquadFilter();return o.type=e,o.frequency.value=t,n==null||n.connect(o),o})};c.prototype.filter=function(e,t){return F(c.prototype._filter)(reify(e),reify(t),this)};c.prototype.out=function(){const e=p().createGain();return e.gain.value=.1,e.connect(p().destination),this.withAudioNode((t,r,i)=>{i||console.warn("out: no source! call .osc() first"),i==null||i.connect(e)})._withHap(t=>{const r=(i,n)=>{var o,s;return(s=(o=n.context)==null?void 0:o.createAudioNode)==null?void 0:s.call(o,i,n)};return t.setContext(w(h({},t.context),{onTrigger:r}))})};c.prototype.define("wave",(e,t)=>t.wave(e),{patternified:!0});export{V as ClockWorker,j as Scheduler,p as getAudioContext}; diff --git a/tutorial/assets/index.f7e36124.js b/tutorial/assets/index.f7e36124.js deleted file mode 100644 index c42d9fb28..000000000 --- a/tutorial/assets/index.f7e36124.js +++ /dev/null @@ -1 +0,0 @@ -var Xe=Object.defineProperty,Ke=Object.defineProperties;var Qe=Object.getOwnPropertyDescriptors;var rt=Object.getOwnPropertySymbols;var Ye=Object.prototype.hasOwnProperty,Ze=Object.prototype.propertyIsEnumerable;var it=(n,t,e)=>t in n?Xe(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,l=(n,t)=>{for(var e in t||(t={}))Ye.call(t,e)&&it(n,e,t[e]);if(rt)for(var e of rt(t))Ze.call(t,e)&&it(n,e,t[e]);return n},p=(n,t)=>Ke(n,Qe(t));import{P as O,w as Je,x as We,y as rn,z as no,A as to,H as eo,B as oo}from"./index.a9d67b3c.js";const cn=(n,t)=>Array(Math.abs(t)+1).join(n);function ro(n,t,e){return function(...o){return console.warn(`${n} is deprecated. Use ${t}.`),e.apply(this,o)}}function jt(n){return n!==null&&typeof n=="object"&&typeof n.name=="string"}function It(n){return n!==null&&typeof n=="object"&&typeof n.step=="number"&&typeof n.alt=="number"}const St=[0,2,4,-1,1,3,5],Tt=St.map(n=>Math.floor(n*7/12));function xt(n){const{step:t,alt:e,oct:o,dir:r=1}=n,i=St[t]+7*e;if(o===void 0)return[r*i];const m=o-Tt[t]-4*e;return[r*i,r*m]}const io=[3,0,4,1,5,2,6];function Et(n){const[t,e,o]=n,r=io[mo(t)],i=Math.floor((t+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const m=e+4*i+Tt[r];return{step:r,alt:i,oct:m,dir:o}}function mo(n){const t=(n+1)%7;return t<0?7+t:t}const Ct={empty:!0,name:"",pc:"",acc:""},mt=new Map,so=n=>"CDEFGAB".charAt(n),ao=n=>n<0?cn("b",-n):cn("#",n),co=n=>n[0]==="b"?-n.length:n.length;function y(n){const t=mt.get(n);if(t)return t;const e=typeof n=="string"?lo(n):It(n)?y(fo(n)):jt(n)?y(n.name):Ct;return mt.set(n,e),e}const uo=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function Mo(n){const t=uo.exec(n);return[t[1].toUpperCase(),t[2].replace(/x/g,"##"),t[3],t[4]]}function Cn(n){return y(Et(n))}const Po=(n,t)=>(n%t+t)%t,xn=[0,2,4,5,7,9,11];function lo(n){const t=Mo(n);if(t[0]===""||t[3]!=="")return Ct;const e=t[0],o=t[1],r=t[2],i=(e.charCodeAt(0)+3)%7,m=co(o),s=r.length?+r:void 0,a=xt({step:i,alt:m,oct:s}),u=e+o+r,c=e+o,d=(xn[i]+m+120)%12,P=s===void 0?Po(xn[i]+m,12)-12*99:xn[i]+m+12*(s+1),b=P>=0&&P<=127?P:null,h=s===void 0?null:Math.pow(2,(P-69)/12)*440;return{empty:!1,acc:o,alt:m,chroma:d,coord:a,freq:h,height:P,letter:e,midi:b,name:u,oct:s,pc:c,step:i}}function fo(n){const{step:t,alt:e,oct:o}=n,r=so(t);if(!r)return"";const i=r+ao(e);return o||o===0?i+o:i}const _n={empty:!0,name:"",acc:""},ho="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",po="(AA|A|P|M|m|d|dd)([-+]?\\d+)",yo=new RegExp("^"+ho+"|"+po+"$");function bo(n){const t=yo.exec(`${n}`);return t===null?["",""]:t[1]?[t[1],t[2]]:[t[4],t[3]]}const st={};function $(n){return typeof n=="string"?st[n]||(st[n]=go(n)):It(n)?$(Ao(n)):jt(n)?$(n.name):_n}const at=[0,2,4,5,7,9,11],_t="PMMPPMM";function go(n){const t=bo(n);if(t[0]==="")return _n;const e=+t[0],o=t[1],r=(Math.abs(e)-1)%7,i=_t[r];if(i==="M"&&o==="P")return _n;const m=i==="M"?"majorable":"perfectable",s=""+e+o,a=e<0?-1:1,u=e===8||e===-8?e:a*(r+1),c=$o(m,o),d=Math.floor((Math.abs(e)-1)/7),P=a*(at[r]+c+12*d),b=(a*(at[r]+c)%12+12)%12,h=xt({step:r,alt:c,oct:d,dir:a});return{empty:!1,name:s,num:e,q:o,step:r,alt:c,dir:a,type:m,simple:u,semitones:P,chroma:b,coord:h,oct:d}}function On(n,t){const[e,o=0]=n,r=e*7+o*12<0,i=t||r?[-e,-o,-1]:[e,o,1];return $(Et(i))}function $o(n,t){return t==="M"&&n==="majorable"||t==="P"&&n==="perfectable"?0:t==="m"&&n==="majorable"?-1:/^A+$/.test(t)?t.length:/^d+$/.test(t)?-1*(n==="perfectable"?t.length:t.length+1):0}function Ao(n){const{step:t,alt:e,oct:o=0,dir:r}=n;if(!r)return"";const i=t+1+7*o,m=i===0?t+1:i,s=r<0?"-":"",a=_t[t]==="M"?"majorable":"perfectable";return s+m+vo(a,e)}function vo(n,t){return t===0?n==="majorable"?"M":"P":t===-1&&n==="majorable"?"m":t>0?cn("A",t):cn("d",n==="perfectable"?t:t+1)}function Mn(n,t){const e=y(n),o=$(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return Cn(m).name}function No(n,t){const e=y(n),o=y(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(m*7/12),a=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return On([m,s],a).name}function jo(n,t){const e=[];for(;t--;e[t]=t+n);return e}function Io(n,t){const e=[];for(;t--;e[t]=n-t);return e}function So(n,t){return nt===0||t)}const V={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},wt=n=>Number(n).toString(2),ct=n=>parseInt(n,2),xo=/^[01]{12}$/;function Vt(n){return xo.test(n)}const Eo=n=>typeof n=="number"&&n>=0&&n<=4095,Co=n=>n&&Vt(n.chroma),ut={[V.chroma]:V};function D(n){const t=Vt(n)?n:Eo(n)?wt(n):Array.isArray(n)?Oo(n):Co(n)?n.chroma:V.chroma;return ut[t]=ut[t]||Fo(t)}const _o=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function wo(n){const t=[];for(let e=0;e<12;e++)n.charAt(e)==="1"&&t.push(_o[e]);return t}function Vo(n,t=!0){const o=D(n).chroma.split("");return To(o.map((r,i)=>{const m=Pn(i,o);return t&&m[0]==="0"?null:m.join("")}))}function Dt(n){const t=D(n).setNum;return e=>{const o=D(e).setNum;return t&&t!==o&&(o&t)===o}}function Do(n){const t=D(n).setNum;return e=>{const o=D(e).setNum;return t&&t!==o&&(o|t)===o}}function ko(n){const t=n.split("");return t.map((e,o)=>Pn(o,t).join(""))}function Fo(n){const t=ct(n),e=ko(n).map(ct).filter(i=>i>=2048).sort()[0],o=wt(e),r=wo(n);return{empty:!1,name:"",setNum:t,chroma:n,normalized:o,intervals:r}}function Oo(n){if(n.length===0)return V.chroma;let t;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;oGo(r,i))}function Go(n,t){mn[t]=n}function Bo(n){const t=e=>n.indexOf(e)!==-1;return t("5A")?"Augmented":t("3M")?"Major":t("5d")?"Diminished":t("3m")?"Minor":"Unknown"}Ro.forEach(([n,t,e])=>qo(n.split(" "),e.split(" "),t));Rn.sort((n,t)=>n.setNum-t.setNum);const Lo=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],Ho=p(l({},V),{intervals:[],aliases:[]});let zn=[],U={};function Uo(){return zn.map(n=>n.name)}function kt(n){return U[n]||Ho}function Ft(){return zn.slice()}function Xo(n,t,e=[]){const o=p(l({},D(n)),{name:t,intervals:n,aliases:e});return zn.push(o),U[o.name]=o,U[o.setNum]=o,U[o.chroma]=o,o.aliases.forEach(r=>Ko(o,r)),o}function Ko(n,t){U[t]=n}Lo.forEach(([n,t,...e])=>Xo(n.split(" "),t,e));function Qo(){return"1P 2M 3M 4P 5P 6m 7m".split(" ")}const Ot=$,Yo=n=>$(n).name,Zo=n=>$(n).semitones,Jo=n=>$(n).q,Wo=n=>$(n).num;function nr(n){const t=$(n);return t.empty?"":t.simple+t.q}function tr(n){const t=$(n);if(t.empty)return"";const e=(7-t.step)%7,o=t.type==="perfectable"?-t.alt:-(t.alt+1);return $({step:e,alt:o,oct:t.oct,dir:t.dir}).name}const er=[1,2,2,3,3,4,5,5,6,6,7,7],or="P m M m M P d P m M m M".split(" ");function rr(n){const t=n<0?-1:1,e=Math.abs(n),o=e%12,r=Math.floor(e/12);return t*(er[o]+7*r)+or[o]}const ir=No,Rt=zt((n,t)=>[n[0]+t[0],n[1]+t[1]]),mr=n=>t=>Rt(n,t),sr=zt((n,t)=>[n[0]-t[0],n[1]-t[1]]);function ar(n,t){const e=Ot(n);if(e.empty)return"";const[o,r,i]=e.coord;return On([o+t,r,i]).name}var dt={names:Qo,get:Ot,name:Yo,num:Wo,semitones:Zo,quality:Jo,fromSemitones:rr,distance:ir,invert:tr,simplify:nr,add:Rt,addTo:mr,substract:sr,transposeFifths:ar};function zt(n){return(t,e)=>{const o=$(t).coord,r=$(e).coord;if(o&&r){const i=n(o,r);return On(i).name}}}const cr=Math.log(2),ur=Math.log(440);function qt(n){const t=12*(Math.log(n)-ur)/cr+69;return Math.round(t*100)/100}const dr="C C# D D# E F F# G G# A A# B".split(" "),Mr="C Db D Eb E F Gb G Ab A Bb B".split(" ");function q(n,t={}){if(isNaN(n)||n===-1/0||n===1/0)return"";n=Math.round(n);const o=(t.sharps===!0?dr:Mr)[n%12];if(t.pitchClass)return o;const r=Math.floor(n/12)-1;return o+r}const Pr=["C","D","E","F","G","A","B"],Gt=n=>n.name,Bt=n=>n.map(y).filter(t=>!t.empty);function lr(n){return n===void 0?Pr.slice():Array.isArray(n)?Bt(n).map(Gt):[]}const v=y,fr=n=>v(n).name,hr=n=>v(n).pc,pr=n=>v(n).acc,yr=n=>v(n).oct,br=n=>v(n).midi,gr=n=>v(n).freq,$r=n=>v(n).chroma;function Lt(n){return q(n)}function Ar(n){return q(qt(n))}function vr(n){return q(qt(n),{sharps:!0})}function Nr(n){return q(n,{sharps:!0})}const qn=Mn,jr=Mn,Ht=n=>t=>qn(t,n),Ir=Ht,Ut=n=>t=>qn(n,t),Sr=Ut;function Xt(n,t){const e=v(n);if(e.empty)return"";const[o,r]=e.coord;return Cn(r===void 0?[o+t]:[o+t,r]).name}const Tr=Xt,Gn=(n,t)=>n.height-t.height,xr=(n,t)=>t.height-n.height;function Kt(n,t){return t=t||Gn,Bt(n).sort(t).map(Gt)}function Qt(n){return Kt(n,Gn).filter((t,e,o)=>e===0||t!==o[e-1])}const Er=n=>{const t=v(n);return t.empty?"":q(t.midi||t.chroma,{sharps:t.alt>0,pitchClass:t.midi===null})};function Yt(n,t){const e=v(n);if(e.empty)return"";const o=v(t||q(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,m=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+m;return o.pc+s}var X={names:lr,get:v,name:fr,pitchClass:hr,accidentals:pr,octave:yr,midi:br,ascending:Gn,descending:xr,sortedNames:Kt,sortedUniqNames:Qt,fromMidi:Lt,fromMidiSharps:Nr,freq:gr,fromFreq:Ar,fromFreqSharps:vr,chroma:$r,transpose:qn,tr:jr,transposeBy:Ht,trBy:Ir,transposeFrom:Ut,trFrom:Sr,transposeFifths:Xt,trFifths:Tr,simplify:Er,enharmonic:Yt};Object.freeze([]);const Bn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],Mt=p(l({},V),{name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]}),Cr=Bn.map(_r),wn={};Cr.forEach(n=>{wn[n.name]=n,n.aliases.forEach(t=>{wn[t]=n})});function Zt(n){return typeof n=="string"?wn[n.toLowerCase()]||Mt:n&&n.name?Zt(n.name):Mt}function _r(n){const[t,e,o,r,i,m,s]=n,a=s?[s]:[],u=Number(e).toString(2),c=kt(r).intervals;return{empty:!1,intervals:c,modeNum:t,chroma:u,normalized:u,name:r,setNum:e,alt:o,triad:i,seventh:m,aliases:a}}function Jt(n){return(t,e)=>{const o=Zt(t);if(o.empty)return[];const r=Pn(o.modeNum,n),i=o.intervals.map(m=>Mn(e,m));return r.map((m,s)=>i[s]+m)}}Jt(Bn.map(n=>n[4]));Jt(Bn.map(n=>n[5]));const wr={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Wt(n){if(typeof n!="string")return["",""];const t=n.indexOf(" "),e=y(n.substring(0,t));if(e.empty){const r=y(n);return r.empty?["",n]:[r.name,""]}const o=n.substring(e.name.length+1);return[e.name,o.length?o:""]}const Vr=Uo;function x(n){const t=Array.isArray(n)?n:Wt(n),e=y(t[0]).name,o=kt(t[1]);if(o.empty)return wr;const r=o.name,i=e?o.intervals.map(s=>Mn(e,s)):[],m=e?e+" "+r:r;return p(l({},o),{name:m,type:r,tonic:e,notes:i})}const Dr=ro("Scale.scale","Scale.get",x);function kr(n){const t=x(n),e=Dt(t.chroma);return zo().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function Fr(n){const t=x(n),e=Do(t.chroma);return Ft().filter(o=>e(o.chroma)).map(o=>o.name)}function Or(n){const t=Dt(x(n).chroma);return Ft().filter(e=>t(e.chroma)).map(e=>e.name)}function ne(n){const t=n.map(r=>y(r).pc).filter(r=>r),e=t[0],o=Qt(t);return Pn(o.indexOf(e),o)}function Rr(n){const t=x(n);if(t.empty)return[];const e=t.tonic?t.notes:t.intervals;return Vo(t.chroma).map((o,r)=>{const i=x(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function zr(n){const t=Array.isArray(n)?ne(n):x(n).notes,e=t.map(o=>y(o).chroma);return o=>{const r=y(typeof o=="number"?Lt(o):o),i=r.height;if(i===void 0)return;const m=i%12,s=e.indexOf(m);if(s!==-1)return Yt(r.name,t[s])}}function qr(n){const t=zr(n);return(e,o)=>{const r=y(e).height,i=y(o).height;return r===void 0||i===void 0?[]:So(r,i).map(t).filter(m=>m)}}var Vn={get:x,names:Vr,extended:Fr,modeNames:Rr,reduced:Or,scaleChords:kr,scaleNotes:ne,tokenize:Wt,rangeOf:qr,scale:Dr};function te(n,t,e){let[o,r]=Vn.tokenize(n),{notes:i}=Vn.get(`${o} ${r}`);if(i=i.map(b=>X.get(b).pc),t=Number(t),isNaN(t))throw new Error(`scale offset "${t}" not a number`);const{pc:m,oct:s=3}=X.get(e),a=i.indexOf(m);if(a===-1)throw new Error(`note "${e}" is not in scale "${n}"`);let u=a,c=s,d=m;const P=Math.sign(t);for(;Math.abs(u-a)0&&d[0]==="C"&&(c+=P)}return d+c}O.prototype._transpose=function(n){return this._withHap(t=>{const e=isNaN(Number(n))?String(n):dt.fromSemitones(n);if(typeof t.value=="number"){const o=typeof e=="string"?dt.semitones(e)||0:e;return t.withValue(()=>t.value+o)}return t.withValue(()=>X.simplify(X.transpose(t.value,e)))})};O.prototype._scaleTranspose=function(n){return this._withHap(t=>{if(!t.context.scale)throw new Error("can only use scaleTranspose after .scale");if(typeof t.value!="string")throw new Error("can only use scaleTranspose with notes");return t.withValue(()=>te(t.context.scale,Number(n),t.value))})};O.prototype._scale=function(n){return this._withHap(t=>{let e=t.value;const o=Number(e);if(!isNaN(o)){let[r,i]=Vn.tokenize(n);const{pc:m,oct:s=3}=X.get(r);e=te(m+" "+i,o,m+s)}return t.withValue(()=>e).setContext(p(l({},t.context),{scale:n}))})};O.prototype.define("transpose",(n,t)=>t.transpose(n),{composable:!0,patternified:!0});O.prototype.define("scale",(n,t)=>t.scale(n),{composable:!0,patternified:!0});O.prototype.define("scaleTranspose",(n,t)=>t.scaleTranspose(n),{composable:!0,patternified:!0});var ee={},Ln={},Q={};Q.__esModule=!0;Q.getBestVoicing=void 0;function Gr(n){var t=n.chord,e=n.range,o=n.finder,r=n.picker,i=n.lastVoicing,m=o(t,e);return m.length?r(m,i):[]}Q.getBestVoicing=Gr;var ln={};const R=(n,t)=>Array(Math.abs(t)+1).join(n);function j(n,t,e){return function(...o){return console.warn(`${n} is deprecated. Use ${t}.`),e.apply(this,o)}}function Y(n){return n!==null&&typeof n=="object"&&typeof n.name=="string"}function Z(n){return n!==null&&typeof n=="object"&&typeof n.step=="number"&&typeof n.alt=="number"}const oe=[0,2,4,-1,1,3,5],re=oe.map(n=>Math.floor(n*7/12));function fn(n){const{step:t,alt:e,oct:o,dir:r=1}=n,i=oe[t]+7*e;if(o===void 0)return[r*i];const m=o-re[t]-4*e;return[r*i,r*m]}const Br=[3,0,4,1,5,2,6];function hn(n){const[t,e,o]=n,r=Br[Lr(t)],i=Math.floor((t+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const m=e+4*i+re[r];return{step:r,alt:i,oct:m,dir:o}}function Lr(n){const t=(n+1)%7;return t<0?7+t:t}const ie={empty:!0,name:"",pc:"",acc:""},Pt=new Map,Hn=n=>"CDEFGAB".charAt(n),G=n=>n<0?R("b",-n):R("#",n),J=n=>n[0]==="b"?-n.length:n.length;function M(n){const t=Pt.get(n);if(t)return t;const e=typeof n=="string"?Xr(n):Z(n)?M(Kr(n)):Y(n)?M(n.name):ie;return Pt.set(n,e),e}const Hr=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function pn(n){const t=Hr.exec(n);return[t[1].toUpperCase(),t[2].replace(/x/g,"##"),t[3],t[4]]}function K(n){return M(hn(n))}const Ur=(n,t)=>(n%t+t)%t,En=[0,2,4,5,7,9,11];function Xr(n){const t=pn(n);if(t[0]===""||t[3]!=="")return ie;const e=t[0],o=t[1],r=t[2],i=(e.charCodeAt(0)+3)%7,m=J(o),s=r.length?+r:void 0,a=fn({step:i,alt:m,oct:s}),u=e+o+r,c=e+o,d=(En[i]+m+120)%12,P=s===void 0?Ur(En[i]+m,12)-12*99:En[i]+m+12*(s+1),b=P>=0&&P<=127?P:null,h=s===void 0?null:Math.pow(2,(P-69)/12)*440;return{empty:!1,acc:o,alt:m,chroma:d,coord:a,freq:h,height:P,letter:e,midi:b,name:u,oct:s,pc:c,step:i}}function Kr(n){const{step:t,alt:e,oct:o}=n,r=Hn(t);if(!r)return"";const i=r+G(e);return o||o===0?i+o:i}const Dn={empty:!0,name:"",acc:""},Qr="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",Yr="(AA|A|P|M|m|d|dd)([-+]?\\d+)",Zr=new RegExp("^"+Qr+"|"+Yr+"$");function Un(n){const t=Zr.exec(`${n}`);return t===null?["",""]:t[1]?[t[1],t[2]]:[t[4],t[3]]}const lt={};function f(n){return typeof n=="string"?lt[n]||(lt[n]=Jr(n)):Z(n)?f(ni(n)):Y(n)?f(n.name):Dn}const ft=[0,2,4,5,7,9,11],me="PMMPPMM";function Jr(n){const t=Un(n);if(t[0]==="")return Dn;const e=+t[0],o=t[1],r=(Math.abs(e)-1)%7,i=me[r];if(i==="M"&&o==="P")return Dn;const m=i==="M"?"majorable":"perfectable",s=""+e+o,a=e<0?-1:1,u=e===8||e===-8?e:a*(r+1),c=Wr(m,o),d=Math.floor((Math.abs(e)-1)/7),P=a*(ft[r]+c+12*d),b=(a*(ft[r]+c)%12+12)%12,h=fn({step:r,alt:c,oct:d,dir:a});return{empty:!1,name:s,num:e,q:o,step:r,alt:c,dir:a,type:m,simple:u,semitones:P,chroma:b,coord:h,oct:d}}function W(n,t){const[e,o=0]=n,r=e*7+o*12<0,i=t||r?[-e,-o,-1]:[e,o,1];return f(hn(i))}function Wr(n,t){return t==="M"&&n==="majorable"||t==="P"&&n==="perfectable"?0:t==="m"&&n==="majorable"?-1:/^A+$/.test(t)?t.length:/^d+$/.test(t)?-1*(n==="perfectable"?t.length:t.length+1):0}function ni(n){const{step:t,alt:e,oct:o=0,dir:r}=n;if(!r)return"";const i=t+1+7*o,m=i===0?t+1:i,s=r<0?"-":"",a=me[t]==="M"?"majorable":"perfectable";return s+m+ti(a,e)}function ti(n,t){return t===0?n==="majorable"?"M":"P":t===-1&&n==="majorable"?"m":t>0?R("A",t):R("d",n==="perfectable"?t:t+1)}function g(n,t){const e=M(n),o=f(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return K(m).name}function B(n,t){const e=M(n),o=M(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,m=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(m*7/12),a=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return W([m,s],a).name}var se=Object.freeze(Object.defineProperty({__proto__:null,accToAlt:J,altToAcc:G,coordToInterval:W,coordToNote:K,decode:hn,deprecate:j,distance:B,encode:fn,fillStr:R,interval:f,isNamed:Y,isPitch:Z,note:M,stepToLetter:Hn,tokenizeInterval:Un,tokenizeNote:pn,transpose:g},Symbol.toStringTag,{value:"Module"}));const ht=(n,t)=>Array(t+1).join(n),ei=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function ae(n){const t=ei.exec(n);return t?[t[1],t[2],t[3]]:["","",""]}function un(n){const[t,e,o]=ae(n);if(e==="")return"";let r=4;for(let m=0;m96?e.toUpperCase()+i+(r+1):e+i+r}function ce(n){const t=M(n);if(t.empty||!t.oct&&t.oct!==0)return"";const{letter:e,acc:o,oct:r}=t,i=o[0]==="b"?o.replace(/b/g,"_"):o.replace(/#/g,"^"),m=r>4?e.toLowerCase():e,s=r===5?"":r>4?ht("'",r-5):ht(",",4-r);return i+m+s}function oi(n,t){return ce(g(un(n),t))}function ri(n,t){return B(un(n),un(t))}var ii={abcToScientificNotation:un,scientificToAbcNotation:ce,tokenize:ae,transpose:oi,distance:ri};function mi(n,t){const e=[];for(;t--;e[t]=t+n);return e}function si(n,t){const e=[];for(;t--;e[t]=n-t);return e}function ai(n,t){return nt===0||t)}function ue(n){return n.map(e=>M(e)).filter(e=>!e.empty).sort((e,o)=>e.height-o.height).map(e=>e.name)}function di(n){return ue(n).filter((t,e,o)=>e===0||t!==o[e-1])}function Mi(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function de(n){return n.length===0?[[]]:de(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}var Pi=Object.freeze(Object.defineProperty({__proto__:null,compact:ui,permutations:de,range:ai,rotate:ci,shuffle:Mi,sortedNoteNames:ue,sortedUniqNoteNames:di},Symbol.toStringTag,{value:"Module"}));function li(n,t){const e=[];for(;t--;e[t]=t+n);return e}function fi(n,t){const e=[];for(;t--;e[t]=n-t);return e}function yn(n,t){return nt===0||t)}function hi(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function Me(n){return n.length===0?[[]]:Me(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}var pi={compact:Xn,permutations:Me,range:yn,rotate:nn,shuffle:hi};const k={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},Kn=n=>Number(n).toString(2),pt=n=>parseInt(n,2),yi=/^[01]{12}$/;function Pe(n){return yi.test(n)}const bi=n=>typeof n=="number"&&n>=0&&n<=4095,gi=n=>n&&Pe(n.chroma),yt={[k.chroma]:k};function A(n){const t=Pe(n)?n:bi(n)?Kn(n):Array.isArray(n)?_i(n):gi(n)?n.chroma:k.chroma;return yt[t]=yt[t]||Ci(t)}const $i=j("Pcset.pcset","Pcset.get",A),Ai=n=>A(n).chroma,vi=n=>A(n).intervals,Ni=n=>A(n).setNum,ji=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Ii(n){const t=[];for(let e=0;e<12;e++)n.charAt(e)==="1"&&t.push(ji[e]);return t}function Si(){return yn(2048,4095).map(Kn)}function Qn(n,t=!0){const o=A(n).chroma.split("");return Xn(o.map((r,i)=>{const m=nn(i,o);return t&&m[0]==="0"?null:m.join("")}))}function Ti(n,t){return A(n).setNum===A(t).setNum}function bn(n){const t=A(n).setNum;return e=>{const o=A(e).setNum;return t&&t!==o&&(o&t)===o}}function gn(n){const t=A(n).setNum;return e=>{const o=A(e).setNum;return t&&t!==o&&(o|t)===o}}function le(n){const t=A(n);return e=>{const o=M(e);return t&&!o.empty&&t.chroma.charAt(o.chroma)==="1"}}function xi(n){const t=le(n);return e=>e.filter(t)}var fe={get:A,chroma:Ai,num:Ni,intervals:vi,chromas:Si,isSupersetOf:gn,isSubsetOf:bn,isNoteIncludedIn:le,isEqual:Ti,filter:xi,modes:Qn,pcset:$i};function Ei(n){const t=n.split("");return t.map((e,o)=>nn(o,t).join(""))}function Ci(n){const t=pt(n),e=Ei(n).map(pt).filter(i=>i>=2048).sort()[0],o=Kn(e),r=Ii(n);return{empty:!1,name:"",setNum:t,chroma:n,normalized:o,intervals:r}}function _i(n){if(n.length===0)return k.chroma;let t;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;on.name).filter(n=>n)}function Fi(){return L.map(n=>n.aliases[0]).filter(n=>n)}function Oi(){return Object.keys(_)}function H(){return L.slice()}const Ri=j("ChordType.entries","ChordType.all",H);function zi(){L=[],_={}}function he(n,t,e){const o=Gi(n),r=p(l({},A(n)),{name:e||"",quality:o,intervals:n,aliases:t});L.push(r),r.name&&(_[r.name]=r),_[r.setNum]=r,_[r.chroma]=r,r.aliases.forEach(i=>qi(r,i))}function qi(n,t){_[t]=n}function Gi(n){const t=e=>n.indexOf(e)!==-1;return t("5A")?"Augmented":t("3M")?"Major":t("5d")?"Diminished":t("3m")?"Minor":"Unknown"}wi.forEach(([n,t,e])=>he(n.split(" "),e.split(" "),t));L.sort((n,t)=>n.setNum-t.setNum);var pe={names:ki,symbols:Fi,get:Yn,all:H,add:he,removeAll:zi,keys:Oi,entries:Ri,chordType:Di};const Bi=n=>{const t=n.reduce((e,o)=>{const r=M(o).chroma;return r!==void 0&&(e[r]=e[r]||M(o).name),e},{});return e=>t[e]};function Li(n){const t=n.map(o=>M(o).pc).filter(o=>o);return M.length===0?[]:Hi(t,1).filter(o=>o.weight).sort((o,r)=>r.weight-o.weight).map(o=>o.name)}function Hi(n,t){const e=n[0],o=M(e).chroma,r=Bi(n),i=Qn(n,!1),m=[];return i.forEach((s,a)=>{H().filter(c=>c.chroma===s).forEach(c=>{const d=c.aliases[0],P=r(a);a!==o?m.push({weight:.5*t,name:`${P}${d}/${e}`}):m.push({weight:1*t,name:`${P}${d}`})})}),m}const Ui=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],Xi=p(l({},k),{intervals:[],aliases:[]});let $n=[],w={};function ye(){return $n.map(n=>n.name)}function An(n){return w[n]||Xi}const Ki=j("ScaleDictionary.scaleType","ScaleType.get",An);function tn(){return $n.slice()}const Qi=j("ScaleDictionary.entries","ScaleType.all",tn);function Yi(){return Object.keys(w)}function Zi(){$n=[],w={}}function be(n,t,e=[]){const o=p(l({},A(n)),{name:t,intervals:n,aliases:e});return $n.push(o),w[o.name]=o,w[o.setNum]=o,w[o.chroma]=o,o.aliases.forEach(r=>Ji(o,r)),o}function Ji(n,t){w[t]=n}Ui.forEach(([n,t,...e])=>be(n.split(" "),t,e));var ge={names:ye,get:An,all:tn,add:be,removeAll:Zi,keys:Yi,entries:Qi,scaleType:Ki};const kn={empty:!0,name:"",symbol:"",root:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},Wi=/^(6|64|7|9|11|13)$/;function vn(n){const[t,e,o,r]=pn(n);return t===""?["",n]:t==="A"&&r==="ug"?["","aug"]:!r&&(o==="4"||o==="5")?[t+e,o]:Wi.test(o)?[t+e,o+r]:[t+e+o,r]}function en(n){if(n==="")return kn;if(Array.isArray(n)&&n.length===2)return sn(n[1],n[0]);{const[t,e]=vn(n),o=sn(e,t);return o.empty?sn(n):o}}function sn(n,t,e){const o=Yn(n),r=M(t||""),i=M(e||"");if(o.empty||t&&r.empty||e&&i.empty)return kn;const m=B(r.pc,i.pc),s=o.intervals.indexOf(m)+1;if(!i.empty&&!s)return kn;const a=Array.from(o.intervals);for(let P=1;Pg(r,P));n=o.aliases.indexOf(n)!==-1?n:o.aliases[0];const c=`${r.empty?"":r.pc}${n}${i.empty||s<=1?"":"/"+i.pc}`,d=`${t?r.pc+" ":""}${o.name}${s>1&&e?" over "+i.pc:""}`;return p(l({},o),{name:d,symbol:c,type:o.name,root:i.name,intervals:a,rootDegree:s,tonic:r.name,notes:u})}const nm=j("Chord.chord","Chord.get",en);function tm(n,t){const[e,o]=vn(n);return e?g(e,t)+o:n}function em(n){const t=en(n),e=gn(t.chroma);return tn().filter(o=>e(o.chroma)).map(o=>o.name)}function om(n){const t=en(n),e=gn(t.chroma);return H().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}function rm(n){const t=en(n),e=bn(t.chroma);return H().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}var im={getChord:sn,get:en,detect:Li,chordScales:em,extended:om,reduced:rm,tokenize:vn,transpose:tm,chord:nm};const mm=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],Nn=[];mm.forEach(([n,t,e])=>lm(n,t,e));const sm={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function am(){return Nn.reduce((n,t)=>(t.names.forEach(e=>n.push(e)),n),[])}function cm(){return Nn.map(n=>n.shorthand)}const um=/^([^.]+)(\.*)$/;function Zn(n){const[t,e,o]=um.exec(n)||[],r=Nn.find(s=>s.shorthand===e||s.names.includes(e));if(!r)return sm;const i=fm(r.fraction,o.length),m=i[0]/i[1];return p(l({},r),{name:n,dots:o,value:m,fraction:i})}const dm=n=>Zn(n).value,Mm=n=>Zn(n).fraction;var Pm={names:am,shorthands:cm,get:Zn,value:dm,fraction:Mm};function lm(n,t,e){Nn.push({empty:!1,dots:"",name:"",value:1/n,fraction:n<1?[1/n,1]:[1,n],shorthand:t,names:e})}function fm(n,t){const e=Math.pow(2,t);let o=n[0]*e,r=n[1]*e;const i=o;for(let m=0;mf(n).name,ym=n=>f(n).semitones,bm=n=>f(n).q,gm=n=>f(n).num;function Ae(n){const t=f(n);return t.empty?"":t.simple+t.q}function $m(n){const t=f(n);if(t.empty)return"";const e=(7-t.step)%7,o=t.type==="perfectable"?-t.alt:-(t.alt+1);return f({step:e,alt:o,oct:t.oct,dir:t.dir}).name}const Am=[1,2,2,3,3,4,5,5,6,6,7,7],vm="P m M m M P d P m M m M".split(" ");function Nm(n){const t=n<0?-1:1,e=Math.abs(n),o=e%12,r=Math.floor(e/12);return t*(Am[o]+7*r)+vm[o]}const jm=B,ve=je((n,t)=>[n[0]+t[0],n[1]+t[1]]),Im=n=>t=>ve(n,t),Sm=je((n,t)=>[n[0]-t[0],n[1]-t[1]]);function Ne(n,t){const e=$e(n);if(e.empty)return"";const[o,r,i]=e.coord;return W([o+t,r,i]).name}var Tm={names:hm,get:$e,name:pm,num:gm,semitones:ym,quality:bm,fromSemitones:Nm,distance:jm,invert:$m,simplify:Ae,add:ve,addTo:Im,substract:Sm,transposeFifths:Ne};function je(n){return(t,e)=>{const o=f(t).coord,r=f(e).coord;if(o&&r){const i=n(o,r);return W(i).name}}}function Ie(n){return+n>=0&&+n<=127}function Se(n){if(Ie(n))return+n;const t=M(n);return t.empty?null:t.midi}function xm(n,t=440){return Math.pow(2,(n-69)/12)*t}const Em=Math.log(2),Cm=Math.log(440);function Jn(n){const t=12*(Math.log(n)-Cm)/Em+69;return Math.round(t*100)/100}const _m="C C# D D# E F F# G G# A A# B".split(" "),wm="C Db D Eb E F Gb G Ab A Bb B".split(" ");function C(n,t={}){if(isNaN(n)||n===-1/0||n===1/0)return"";n=Math.round(n);const o=(t.sharps===!0?_m:wm)[n%12];if(t.pitchClass)return o;const r=Math.floor(n/12)-1;return o+r}var Vm={isMidi:Ie,toMidi:Se,midiToFreq:xm,midiToNoteName:C,freqToMidi:Jn};const Dm=["C","D","E","F","G","A","B"],Te=n=>n.name,xe=n=>n.map(M).filter(t=>!t.empty);function km(n){return n===void 0?Dm.slice():Array.isArray(n)?xe(n).map(Te):[]}const N=M,Fm=n=>N(n).name,Om=n=>N(n).pc,Rm=n=>N(n).acc,zm=n=>N(n).oct,qm=n=>N(n).midi,Gm=n=>N(n).freq,Bm=n=>N(n).chroma;function Ee(n){return C(n)}function Lm(n){return C(Jn(n))}function Hm(n){return C(Jn(n),{sharps:!0})}function Um(n){return C(n,{sharps:!0})}const Wn=g,Xm=g,Ce=n=>t=>Wn(t,n),Km=Ce,_e=n=>t=>Wn(n,t),Qm=_e;function dn(n,t){const e=N(n);if(e.empty)return"";const[o,r]=e.coord;return K(r===void 0?[o+t]:[o+t,r]).name}const Ym=dn,nt=(n,t)=>n.height-t.height,Zm=(n,t)=>t.height-n.height;function we(n,t){return t=t||nt,xe(n).sort(t).map(Te)}function Ve(n){return we(n,nt).filter((t,e,o)=>e===0||t!==o[e-1])}const Jm=n=>{const t=N(n);return t.empty?"":C(t.midi||t.chroma,{sharps:t.alt>0,pitchClass:t.midi===null})};function De(n,t){const e=N(n);if(e.empty)return"";const o=N(t||C(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,m=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+m;return o.pc+s}var Wm={names:km,get:N,name:Fm,pitchClass:Om,accidentals:Rm,octave:zm,midi:qm,ascending:nt,descending:Zm,sortedNames:we,sortedUniqNames:Ve,fromMidi:Ee,fromMidiSharps:Um,freq:Gm,fromFreq:Lm,fromFreqSharps:Hm,chroma:Bm,transpose:Wn,tr:Xm,transposeBy:Ce,trBy:Km,transposeFrom:_e,trFrom:Qm,transposeFifths:dn,trFifths:Ym,simplify:Jm,enharmonic:De};const ke={empty:!0,name:"",chordType:""},bt={};function T(n){return typeof n=="string"?bt[n]||(bt[n]=ms(n)):typeof n=="number"?T(jn[n]||""):Z(n)?es(n):Y(n)?T(n.name):ke}const ns=j("RomanNumeral.romanNumeral","RomanNumeral.get",T);function ts(n=!0){return(n?jn:is).slice()}function es(n){return T(G(n.alt)+jn[n.step])}const os=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function rs(n){return os.exec(n)||["","","",""]}const Fe="I II III IV V VI VII",jn=Fe.split(" "),is=Fe.toLowerCase().split(" ");function ms(n){const[t,e,o,r]=rs(n);if(!o)return ke;const i=o.toUpperCase(),m=jn.indexOf(i),s=J(e),a=1;return{empty:!1,name:t,roman:o,interval:f({step:m,alt:s,dir:a}).name,acc:e,chordType:r,alt:s,step:m,major:o===i,oct:0,dir:a}}var ss={names:ts,get:T,romanNumeral:ns};const I=Object.freeze([]),Oe={type:"major",tonic:"",alteration:0,keySignature:""},an={tonic:"",grades:I,intervals:I,scale:I,chords:I,chordsHarmonicFunction:I,chordScales:I},as=p(l(l({},Oe),an),{type:"major",minorRelative:"",scale:I,secondaryDominants:I,secondaryDominantsMinorRelative:I,substituteDominants:I,substituteDominantsMinorRelative:I}),cs=p(l({},Oe),{type:"minor",relativeMajor:"",natural:an,harmonic:an,melodic:an}),gt=(n,t,e="")=>t.map((o,r)=>`${n[r]}${e}${o}`);function In(n,t,e,o){return r=>{const i=n.map(s=>T(s).interval||""),m=i.map(s=>g(r,s));return{tonic:r,grades:n,intervals:i,scale:m,chords:gt(m,t),chordsHarmonicFunction:e.slice(),chordScales:gt(m,o," ")}}}const Re=(n,t)=>{const e=M(n),o=M(t);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},us=In("I II III IV V VI VII".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),ds=In("I II bIII IV V bVI bVII".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),Ms=In("I II bIII IV V bVI VII".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),Ps=In("I II bIII IV V VI VII".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function ls(n){const t=M(n).pc;if(!t)return as;const e=us(t),o=Re("C",t),r=i=>{const m=T(i);return m.empty?"":g(n,m.interval)+m.chordType};return p(l({},e),{type:"major",minorRelative:g(t,"-3m"),alteration:o,keySignature:G(o),secondaryDominants:"- VI7 VII7 I7 II7 III7 -".split(" ").map(r),secondaryDominantsMinorRelative:"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ").map(r),substituteDominants:"- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ").map(r),substituteDominantsMinorRelative:"- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" ").map(r)})}function fs(n){const t=M(n).pc;if(!t)return cs;const e=Re("C",t)-3;return{type:"minor",tonic:t,relativeMajor:g(t,"3m"),alteration:e,keySignature:G(e),natural:ds(t),harmonic:Ms(t),melodic:Ps(t)}}function hs(n){return typeof n=="number"?dn("C",n):typeof n=="string"&&/^b+|#+$/.test(n)?dn("C",J(n)):null}var ps={majorKey:ls,majorTonicFromKeySignature:hs,minorKey:fs};const tt=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],$t=p(l({},k),{name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]}),et=tt.map($s),Fn={};et.forEach(n=>{Fn[n.name]=n,n.aliases.forEach(t=>{Fn[t]=n})});function F(n){return typeof n=="string"?Fn[n.toLowerCase()]||$t:n&&n.name?F(n.name):$t}const ys=j("Mode.mode","Mode.get",F);function ze(){return et.slice()}const bs=j("Mode.mode","Mode.all",ze);function gs(){return et.map(n=>n.name)}function $s(n){const[t,e,o,r,i,m,s]=n,a=s?[s]:[],u=Number(e).toString(2),c=An(r).intervals;return{empty:!1,intervals:c,modeNum:t,chroma:u,normalized:u,name:r,setNum:e,alt:o,triad:i,seventh:m,aliases:a}}function As(n,t){return F(n).intervals.map(e=>g(t,e))}function qe(n){return(t,e)=>{const o=F(t);if(o.empty)return[];const r=nn(o.modeNum,n),i=o.intervals.map(m=>g(e,m));return r.map((m,s)=>i[s]+m)}}const vs=qe(tt.map(n=>n[4])),Ns=qe(tt.map(n=>n[5]));function Ge(n,t){const e=F(t),o=F(n);return e.empty||o.empty?"":Ae(Ne("1P",o.alt-e.alt))}function js(n,t,e){return g(e,Ge(n,t))}var Is={get:F,names:gs,all:ze,distance:Ge,relativeTonic:js,notes:As,triads:vs,seventhChords:Ns,entries:bs,mode:ys};function Ss(n,t){return t.map(T).map(o=>g(n,f(o))+o.chordType)}function Ts(n,t){return t.map(e=>{const[o,r]=vn(e),i=B(n,o);return T(f(i)).name+r})}var xs={fromRomanNumerals:Ss,toRomanNumerals:Ts};function Be(n){const t=Xn(n.map(Se));return!n.length||t.length!==n.length?[]:t.reduce((e,o)=>{const r=e[e.length-1];return e.concat(yn(r,o).slice(1))},[t[0]])}function Es(n,t){return Be(n).map(e=>C(e,t))}var Cs={numeric:Be,chromatic:Es};const _s={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Le(n){if(typeof n!="string")return["",""];const t=n.indexOf(" "),e=M(n.substring(0,t));if(e.empty){const r=M(n);return r.empty?["",n]:[r.name,""]}const o=n.substring(e.name.length+1);return[e.name,o.length?o:""]}const ws=ye;function E(n){const t=Array.isArray(n)?n:Le(n),e=M(t[0]).name,o=An(t[1]);if(o.empty)return _s;const r=o.name,i=e?o.intervals.map(s=>g(e,s)):[],m=e?e+" "+r:r;return p(l({},o),{name:m,type:r,tonic:e,notes:i})}const Vs=j("Scale.scale","Scale.get",E);function Ds(n){const t=E(n),e=bn(t.chroma);return H().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function ks(n){const t=E(n),e=gn(t.chroma);return tn().filter(o=>e(o.chroma)).map(o=>o.name)}function Fs(n){const t=bn(E(n).chroma);return tn().filter(e=>t(e.chroma)).map(e=>e.name)}function He(n){const t=n.map(r=>M(r).pc).filter(r=>r),e=t[0],o=Ve(t);return nn(o.indexOf(e),o)}function Os(n){const t=E(n);if(t.empty)return[];const e=t.tonic?t.notes:t.intervals;return Qn(t.chroma).map((o,r)=>{const i=E(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function Rs(n){const t=Array.isArray(n)?He(n):E(n).notes,e=t.map(o=>M(o).chroma);return o=>{const r=M(typeof o=="number"?Ee(o):o),i=r.height;if(i===void 0)return;const m=i%12,s=e.indexOf(m);if(s!==-1)return De(r.name,t[s])}}function zs(n){const t=Rs(n);return(e,o)=>{const r=M(e).height,i=M(o).height;return r===void 0||i===void 0?[]:yn(r,i).map(t).filter(m=>m)}}var qs={get:E,names:ws,extended:ks,modeNames:Os,reduced:Fs,scaleChords:Ds,scaleNotes:He,tokenize:Le,rangeOf:zs,scale:Vs};const Gs={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Bs=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function Ls(){return Bs.slice()}const Hs=/^(\d?\d(?:\+\d)*)\/(\d)$/,At=new Map;function Us(n){const t=At.get(n);if(t)return t;const e=Ks(ot(n));return At.set(n,e),e}function ot(n){if(typeof n=="string"){const[i,m,s]=Hs.exec(n)||[];return ot([m,s])}const[t,e]=n,o=+e;if(typeof t=="number")return[t,o];const r=t.split("+").map(i=>+i);return r.length===1?[r[0],o]:[r,o]}var Xs={names:Ls,parse:ot,get:Us};function Ks([n,t]){const e=Array.isArray(n)?n.reduce((s,a)=>s+a,0):n,o=t;if(e===0||o===0)return Gs;const r=Array.isArray(n)?`${n.join("+")}/${t}`:`${n}/${t}`,i=Array.isArray(n)?n:[],m=o===4||o===2?"simple":o===8&&e%3===0?"compound":"irregular";return{empty:!1,name:r,type:m,upper:e,lower:o,additive:i}}const Qs=se,Ys=fe,Zs=pe,Js=ge;var Ws=Object.freeze(Object.defineProperty({__proto__:null,Array:Pi,Core:se,ChordDictionary:Zs,PcSet:Ys,ScaleDictionary:Js,Tonal:Qs,AbcNotation:ii,Chord:im,ChordType:pe,Collection:pi,DurationValue:Pm,Interval:Tm,Key:ps,Midi:Vm,Mode:Is,Note:Wm,Pcset:fe,Progression:xs,Range:Cs,RomanNumeral:ss,Scale:qs,ScaleType:ge,TimeSignature:Xs,accToAlt:J,altToAcc:G,coordToInterval:W,coordToNote:K,decode:hn,deprecate:j,distance:B,encode:fn,fillStr:R,interval:f,isNamed:Y,isPitch:Z,note:M,stepToLetter:Hn,tokenizeInterval:Un,tokenizeNote:pn,transpose:g},Symbol.toStringTag,{value:"Module"})),Ue=We(Ws),on={};on.__esModule=!0;on.tokenizeChord=void 0;function na(n){var t=(n||"").match(/^([A-G][b#]*)([^\/]*)[\/]?([A-G][b#]*)?$/);return t?t.slice(1):[]}on.tokenizeChord=na;ln.__esModule=!0;ln.voicingsInRange=void 0;var S=Ue,ta=Ln,ea=on;function oa(n,t,e){t===void 0&&(t=ta.lefthand),e===void 0&&(e=["D3","A4"]);var o=(0,ea.tokenizeChord)(n),r=o[0],i=o[1];if(!t[i])return[];var m=t[i].map(function(a){return a.split(" ")}),s=S.Range.chromatic(e);return m.reduce(function(a,u){var c=u.map(function(h){return S.Interval.substract(h,u[0])}),d=S.Note.transpose(r,u[0]),P=s.filter(function(h){return S.Note.chroma(h)===S.Note.chroma(d)}).filter(function(h){return S.Note.midi(S.Note.transpose(h,c[c.length-1]))<=S.Note.midi(e[1])}).map(function(h){return S.Note.enharmonic(h,d)}),b=P.map(function(h){return c.map(function(Tn){return S.Note.transpose(h,Tn)})});return a.concat(b)},[])}ln.voicingsInRange=oa;(function(n){var t=rn&&rn.__assign||function(){return t=Object.assign||function(s){for(var a,u=1,c=arguments.length;uia({chord:n,dictionary:sa,range:e,picker:ma,lastVoicing:t}),z=O;z.prototype.fmapNested=function(n){return new z(t=>this.query(t).map(e=>to(n(e)).query(t).map(o=>new eo(e.whole,e.part,o.value,o.context))).flat())};z.prototype.voicings=function(n){let t;return n!=null&&n.length||(n=["F3","A4"]),this.fmapNested(e=>(t=aa(e.value,t,n),oo(...t)._withContext(()=>({locations:e.context.locations||[]}))))};z.prototype._rootNotes=function(n=2){return this.fmap(t=>{const[e,o]=t.match(/^([a-gA-G][b#]?).*$/);return o+n})};z.prototype.define("voicings",(n,t)=>t.voicings(n),{composable:!0});z.prototype.define("rootNotes",(n,t)=>t.rootNotes(n),{composable:!0,patternified:!0}); diff --git a/tutorial/assets/index.1aa3ae22.js b/tutorial/assets/index.fb101d8b.js similarity index 90% rename from tutorial/assets/index.1aa3ae22.js rename to tutorial/assets/index.fb101d8b.js index e9a53f657..b53b9bb82 100644 --- a/tutorial/assets/index.1aa3ae22.js +++ b/tutorial/assets/index.fb101d8b.js @@ -1 +1 @@ -import{T as d}from"./index.a9d67b3c.js";import{T as A,o as T,a as k,u as E,d as N,f as O,g as I,t as j,k as q,l as x,m as B,b as D,c as F,n as _,q as v,r as C,j as z,h as H,p as S,e as U,s as G,i as J,v as K}from"./index.a9d67b3c.js";const f=()=>{document.getElementById("header").style="display:none"};function u(s){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const a=e=>{const o=d.getTransport().seconds;s(e,o),window.strudelAnimation=requestAnimationFrame(a)};requestAnimationFrame(a)}const g=function(s,a={}){const e=document.getElementById("code"),o="background-image:url("+s+");background-size:contain;";e.style=o;const{className:c}=e,i=(t,n)=>{({style:()=>e.style=o+";"+n,className:()=>e.className=n+" "+c})[t]()},r=Object.entries(a).filter(([t,n])=>typeof n=="function");Object.entries(a).filter(([t,n])=>typeof n=="string").forEach(([t,n])=>i(t,n)),r.length!==0&&u((t,n)=>r.forEach(([l,m])=>{i(l,m(n))}))},h=()=>{const s=document.getElementById("code");s&&(s.style="",s.className="grow relative")};export{A as Tone,T as adsr,k as amsynth,g as backgroundImage,E as cleanupDraw,h as cleanupUi,N as duosynth,O as fmsynth,I as getDefaultSynth,j as getDrawContext,f as hideHeader,q as highpass,x as lowpass,B as membrane,D as metal,F as monosynth,_ as noise,v as osc,C as out,z as piano,H as players,S as pluck,U as polysynth,G as sampler,J as synth,K as vol}; +import{T as d}from"./index.5a47cda7.js";import{T as A,o as T,a as k,u as E,d as N,f as O,g as I,t as j,k as q,l as x,m as B,b as D,c as F,n as _,q as v,r as C,j as z,h as H,p as S,e as U,s as G,i as J,v as K}from"./index.5a47cda7.js";const f=()=>{document.getElementById("header").style="display:none"};function u(s){window.strudelAnimation&&cancelAnimationFrame(window.strudelAnimation);const a=e=>{const o=d.getTransport().seconds;s(e,o),window.strudelAnimation=requestAnimationFrame(a)};requestAnimationFrame(a)}const g=function(s,a={}){const e=document.getElementById("code"),o="background-image:url("+s+");background-size:contain;";e.style=o;const{className:c}=e,i=(t,n)=>{({style:()=>e.style=o+";"+n,className:()=>e.className=n+" "+c})[t]()},r=Object.entries(a).filter(([t,n])=>typeof n=="function");Object.entries(a).filter(([t,n])=>typeof n=="string").forEach(([t,n])=>i(t,n)),r.length!==0&&u((t,n)=>r.forEach(([l,m])=>{i(l,m(n))}))},h=()=>{const s=document.getElementById("code");s&&(s.style="",s.className="grow relative")};export{A as Tone,T as adsr,k as amsynth,g as backgroundImage,E as cleanupDraw,h as cleanupUi,N as duosynth,O as fmsynth,I as getDefaultSynth,j as getDrawContext,f as hideHeader,q as highpass,x as lowpass,B as membrane,D as metal,F as monosynth,_ as noise,v as osc,C as out,z as piano,H as players,S as pluck,U as polysynth,G as sampler,J as synth,K as vol}; diff --git a/tutorial/assets/osc.b5070dcb.js b/tutorial/assets/osc.ca309656.js similarity index 98% rename from tutorial/assets/osc.b5070dcb.js rename to tutorial/assets/osc.ca309656.js index 3f580ecfc..a40590180 100644 --- a/tutorial/assets/osc.b5070dcb.js +++ b/tutorial/assets/osc.ca309656.js @@ -1 +1 @@ -var ot=Object.defineProperty,st=Object.defineProperties;var it=Object.getOwnPropertyDescriptors;var ke=Object.getOwnPropertySymbols;var at=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable;var be=(g,d,p)=>d in g?ot(g,d,{enumerable:!0,configurable:!0,writable:!0,value:p}):g[d]=p,Se=(g,d)=>{for(var p in d||(d={}))at.call(d,p)&&be(g,p,d[p]);if(ke)for(var p of ke(d))ut.call(d,p)&&be(g,p,d[p]);return g},Oe=(g,d)=>st(g,it(d));import{y as H,P as ct}from"./index.a9d67b3c.js";var Ee={exports:{}};(function(g,d){(function(p,u){g.exports=u()})(H,function(){function p(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),n.push.apply(n,t)}return n}function u(r){for(var e=1;e1&&e[e.length-1]==="/"&&(e=e.slice(0,e.length-1)),e.length>1&&e[0]!=="/"&&(e="/".concat(e)),e;throw new Error("OSC prepareAddress() needs addresses of type array or string")}function ae(r){if(!v(r))throw new Error("OSC prepareRegExPattern() needs strings");return r.replace(/\./g,"\\.").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!/g,"[^").replace(/\?/g,".").replace(/\*/g,".*")}var ue=function(){function r(){f(this,r),this.data=[],this.byteLength=0}return l(r,[{key:"add",value:function(e){if(te(e)||ne(e)||oe(e))return this;var n=e.pack();return this.byteLength+=n.byteLength,this.data.push(n),this}},{key:"merge",value:function(){var e=new Uint8Array(this.byteLength),n=0;return this.data.forEach(function(t){e.set(t,n),n+=t.byteLength}),e}}]),r}(),C=function(){function r(e){f(this,r),this.value=e,this.offset=0}return l(r,[{key:"pack",value:function(e,n){if(!e||!n)throw new Error("OSC Atomic cant't be packed without given method or byteLength");var t=new Uint8Array(n),o=new DataView(t.buffer);if(A(this.value))throw new Error("OSC Atomic cant't be encoded with empty value");return o[e](this.offset,this.value,!1),t}},{key:"unpack",value:function(e,n,t){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(!(e&&n&&t))throw new Error("OSC Atomic cant't be unpacked without given dataView, method or byteLength");if(!(e instanceof DataView))throw new Error("OSC Atomic expects an instance of type DataView");return this.value=e[n](o,!1),this.offset=o+t,this.offset}}]),r}(),U=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!b(t))throw new Error("OSC AtomicInt32 constructor expects value of type number");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setInt32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getInt32",4,o)}}]),n}(C),ce="utf-8";function De(r){if(se("Buffer"))return Buffer.from(r).toString(ce);if(se("TextDecoder"))return new TextDecoder(ce).decode(new Int8Array(r));for(var e="",n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicString expects an instance of type DataView");for(var i,s=o,a=[];s0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(f(this,r),!b(e)||!b(n))throw new Error("OSC Timetag constructor expects values of type integer number");this.seconds=e,this.fractions=n}return l(r,[{key:"timestamp",value:function(e){var n;if(typeof e=="number"){n=e/1e3;var t=Math.floor(n);return this.seconds=t+fe,this.fractions=Math.round(le*(n-t)),e}return 1e3*((n=this.seconds-fe)+Math.round(this.fractions/le))}}]),r}(),B=function(r){k(n,r);var e=y(n);function n(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Date.now();f(this,n);var o=new G;return t instanceof G?o=t:b(t)?o.timestamp(t):Ae(t)&&o.timestamp(t.getTime()),e.call(this,o)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicTimetag can not be encoded with empty value");var t=this.value,o=t.seconds,i=t.fractions,s=new Uint8Array(8),a=new DataView(s.buffer);return a.setInt32(0,o,!1),a.setInt32(4,i,!1),s}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicTimetag expects an instance of type DataView");var i=t.getUint32(o,!1),s=t.getUint32(o+4,!1);return this.value=new G(i,s),this.offset=o+8,this.offset}}]),n}(C),he=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!re(t))throw new Error("OSC AtomicBlob constructor expects value of type Uint8Array");return e.call(this,t)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicBlob can not be encoded with empty value");var t=V(this.value.byteLength),o=new Uint8Array(t+4);return new DataView(o.buffer).setInt32(0,this.value.byteLength,!1),o.set(this.value,4),o}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicBlob expects an instance of type DataView");var i=t.getInt32(o,!1);return this.value=new Uint8Array(t.buffer,o+4,i),this.offset=V(o+4+i),this.offset}}]),n}(C),pe=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat32 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat32",4,o)}}]),n}(C),de=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat64 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat64",8,o)}}]),n}(C),je=BigInt("9223372036854775807"),xe=BigInt("-9223372036854775808"),ge=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicInt64 constructor expects value of type BigInt");if(t&&(tje))throw new Error("OSC AtomicInt64 value is out of bounds");var o;return t&&(o=BigInt.asIntN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigInt64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigInt64",8,o)}}]),n}(C),Be=BigInt("18446744073709551615"),ve=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicUInt64 constructor expects value of type BigInt");if(t&&(t<0||t>Be))throw new Error("OSC AtomicUInt64 value is out of bounds");var o;return t&&(o=BigInt.asUintN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigUint64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigUint64",8,o)}}]),n}(C),Z=!0,q=!1,J=null,K=1/0,Q=function(){function r(e,n){var t=this;if(f(this,r),this.offset=0,this.address="",this.types="",this.args=[],!A(e)){if(!v(e)&&!D(e))throw new Error("OSC Message constructor first argument (address) must be a string or array");this.address=L(e)}if(!A(n)){if(!D(n))throw new Error("OSC Message constructor second argument (args) must be an array");n.forEach(function(o){return t.add(o.type,o.value)})}}return l(r,[{key:"add",value:function(e,n){if(A(e))throw new Error("OSC Message needs a valid OSC Atomic Data Type");e==="N"?this.args.push(J):e==="T"?this.args.push(Z):e==="F"?this.args.push(q):e==="I"?this.args.push(K):this.args.push(n),this.types+=e}},{key:"pack",value:function(){var e=this;if(this.address.length===0||this.address[0]!=="/")throw new Error("OSC Message has an invalid address");var n=new ue;if(n.add(new S(this.address)),n.add(new S(",".concat(this.types))),this.args.length>0){var t;if(this.args.length>this.types.length)throw new Error("OSC Message argument and type tag mismatch");this.args.forEach(function(o,i){var s=e.types[i];if(s==="i")t=new U(o);else if(s==="h")t=new ge(o);else if(s==="t")t=new ve(o);else if(s==="f")t=new pe(o);else if(s==="d")t=new de(o);else if(s==="s")t=new S(o);else if(s==="b")t=new he(o);else if(s==="T")t=Z;else if(s==="F")t=q;else if(s==="N")t=J;else{if(s!=="I")throw new Error("OSC Message found unknown argument type");t=K}n.add(t)})}return n.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Message expects an instance of type DataView.");var t=new S;t.unpack(e,n);var o=new S;if(o.unpack(e,t.offset),t.value.length===0||t.value[0]!=="/")throw new Error("OSC Message found malformed or missing address string");if(o.value.length===0&&o.value[0]!==",")throw new Error("OSC Message found malformed or missing type string");for(var i,s,a=o.offset,c=[],w=1;w0&&(o=a.shift()),a.length>0&&a[0]instanceof Array&&(i=a.shift()),t=e.call(this,o,i),a.length>0&&(t.types=a.map(function(w){return ie(w)}).join(""),t.args=a),t}return l(n,[{key:"add",value:function(t){m(h(n.prototype),"add",this).call(this,ie(t),t)}}]),n}(Q),_="#bundle",I=function(){function r(){var e=this;f(this,r),this.offset=0,this.timetag=new B,this.bundleElements=[];for(var n=arguments.length,t=new Array(n),o=0;o0&&(t[0]instanceof Date||b(t[0])?this.timetag=new B(t[0]):D(t[0])?(t[0].forEach(function(i){e.add(i)}),t.length>1&&(t[1]instanceof Date||b(t[1]))&&(this.timetag=new B(t[1]))):t.forEach(function(i){e.add(i)}))}return l(r,[{key:"timestamp",value:function(e){if(!b(e))throw new Error("OSC Bundle needs an integer for setting the timestamp");this.timetag=new B(e)}},{key:"add",value:function(e){if(!(e instanceof E||e instanceof r))throw new Error("OSC Bundle contains only Messages and Bundles");this.bundleElements.push(e)}},{key:"pack",value:function(){var e=new ue;return e.add(new S(_)),this.timetag||(this.timetag=new B),e.add(this.timetag),this.bundleElements.forEach(function(n){e.add(new U(n.pack().byteLength)),e.add(n)}),e.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Bundle expects an instance of type DataView");var t=new S;if(t.unpack(e,n),t.value!==_)throw new Error("OSC Bundle does not contain a valid #bundle head");var o=new B,i=o.unpack(e,t.offset);for(this.bundleElements=[];i1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Packet expects an instance of type DataView");if(e.byteLength%4!=0)throw new Error("OSC Packet byteLength has to be a multiple of four");var t,o=new S;return o.unpack(e,n),(t=o.value===_?new I:new E).unpack(e,n),this.offset=t.offset,this.value=t,this.offset}}]),r}(),Me={discardLateMessages:!1},He=function(){function r(e){f(this,r),this.options=u(u({},Me),e),this.addressHandlers=[],this.eventHandlers={open:[],error:[],close:[]},this.uuid=0}return l(r,[{key:"dispatch",value:function(e,n){var t=this;if(!(e instanceof M))throw new Error("OSC EventHander dispatch() accepts only arguments of type Packet");if(!e.value)throw new Error("OSC EventHander dispatch() can't read empty Packets");if(e.value instanceof I){var o=e.value;return o.bundleElements.forEach(function(s){if(s instanceof I){if(o.timetag.value.timestamp()1&&(s=n[1]);var a=null;if(n.length>2)if(b(n[2]))a=n[2];else{if(!(n[2]instanceof Date))throw new Error("OSC EventHandler timestamp has to be a number or Date");a=n[2].getTime()}var c=null;if(n.length>=3&&(c=n[3]),a){var w=Date.now();if(w>a&&!this.options.discardLateMessages)return this.call(i,s,c);var P=this;return setTimeout(function(){P.call(i,s,c)},a-w),!0}return this.call(i,s,c)}},{key:"on",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!j(n))throw new Error("OSC EventHandler callback has to be a function");this.uuid+=1;var t={id:this.uuid,callback:n};if(v(e)&&e in this.eventHandlers)return this.eventHandlers[e].push(t),this.uuid;var o=L(e);return o in this.addressHandlers||(this.addressHandlers[o]=[]),this.addressHandlers[o].push(t),this.uuid}},{key:"off",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!b(n))throw new Error("OSC EventHandler subscription id has to be a number");var t,o;return v(e)&&e in this.eventHandlers?(t=e,o=this.eventHandlers):(t=L(e),o=this.addressHandlers),t in o&&o[t].some(function(i,s){return i.id===n&&(o[t].splice(s,1),!0)})}}]),r}(),Te=0,Le=1,Ne=2,Ve=3,Ue=function(){function r(){throw f(this,r),new Error("DatagramPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options.open),n),o=t.port,i=t.exclusive;this.socketStatus=Te,this.socket.bind({address:t.host,port:o,exclusive:i},function(){e.socketStatus=Le,e.notify("open")})}},{key:"close",value:function(){var e=this;this.socketStatus=Ne,this.socket.close(function(){e.socketStatus=Ve,e.notify("close")})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=u(u({},this.options.send),n),o=t.port,i=t.host;this.socket.send(Buffer.from(e),0,e.byteLength,o,i)}}]),r}();typeof WebSocket!="undefined"?x=WebSocket:typeof MozWebSocket!="undefined"?x=MozWebSocket:typeof H!="undefined"?x=H.WebSocket||H.MozWebSocket:typeof window!="undefined"?x=window.WebSocket||window.MozWebSocket:typeof self!="undefined"&&(x=self.WebSocket||self.MozWebSocket);var X=void 0,we=x,_e=0,We=1,Re=2,Fe=3,W={udpServer:{host:"localhost",port:41234,exclusive:!1},udpClient:{host:"localhost",port:41235},wsServer:{host:"localhost",port:8080},receiver:"ws"};function ye(r,e){return u(u(u(u({},W),r),e),{},{udpServer:u(u(u({},W.udpServer),r.udpServer),e.udpServer),udpClient:u(u(u({},W.udpClient),r.udpClient),e.udpClient),wsServer:u(u(u({},W.wsServer),r.wsServer),e.wsServer)})}var ze=function(){function r(){throw f(this,r),new Error("BridgePlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ye(this.options,n);this.socketStatus=_e,this.socket.bind({address:t.udpServer.host,port:t.udpServer.port,exclusive:t.udpServer.exclusive},function(){var o={};t.wsServer.server?o.server=t.wsServer.server:o=t.wsServer,e.websocket=new X(o),e.websocket.binaryType="arraybuffer",e.websocket.on("listening",function(){e.socketStatus=We,e.notify("open")}),e.websocket.on("error",function(i){e.notify("error",i)}),e.websocket.on("connection",function(i){i.on("message",function(s,a){e.send(s,{receiver:"udp"}),e.notify(new Uint8Array(s),a)})})})}},{key:"close",value:function(){var e=this;this.socketStatus=Re,this.socket.close(function(){e.websocket.close(function(){e.socketStatus=Fe,e.notify("close")})})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=ye(this.options,n),o=t.receiver;if(o==="udp"){var i=e instanceof Buffer?e:Buffer.from(e);this.socket.send(i,0,i.byteLength,t.udpClient.port,t.udpClient.host)}else{if(o!=="ws")throw new Error("BridgePlugin can not send message to unknown receiver");this.websocket.clients.forEach(function(s){s.send(e,{binary:!0})})}}}]),r}(),Ge=-1,Ze=0,qe=1,Je=2,Ke=3,Qe={host:"localhost",port:8080,secure:!1,protocol:[]},me=function(){function r(e){if(f(this,r),!we)throw new Error("WebsocketClientPlugin can't find a WebSocket class");this.options=u(u({},Qe),e),this.socket=null,this.socketStatus=Ge,this.notify=function(){}}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s=t.secure,a=t.protocol;this.socket&&this.close();var c=s?"wss":"ws",w={address:i,family:c,port:o,size:0};this.socket=new we("".concat(c,"://").concat(i,":").concat(o),a),this.socket.binaryType="arraybuffer",this.socketStatus=Ze,this.socket.onopen=function(){e.socketStatus=qe,e.notify("open")},this.socket.onclose=function(){e.socketStatus=Ke,e.notify("close")},this.socket.onerror=function(P){e.notify("error",P)},this.socket.onmessage=function(P){e.notify(P.data,w)}}},{key:"close",value:function(){this.socketStatus=Je,this.socket.close()}},{key:"send",value:function(e){this.socket.send(e)}}]),r}(),Xe=0,Ye=1,$e=2,et=3,tt=function(){function r(e){throw f(this,r),new Error("WebsocketServerPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s={address:i,family:"wsserver",port:o,size:0};this.socket&&this.close(),t.server?this.socket=new X({server:t.server}):this.socket=new X({host:i,port:o}),this.socket.binaryType="arraybuffer",this.socketStatus=Xe,this.socket.on("listening",function(){e.socketStatus=Ye,e.notify("open")}),this.socket.on("error",function(a){e.notify("error",a)}),this.socket.on("connection",function(a){a.on("message",function(c){e.notify(new Uint8Array(c),s)})})}},{key:"close",value:function(){var e=this;this.socketStatus=$e,this.socket.close(function(){e.socketStatus=et,e.notify("close")})}},{key:"send",value:function(e){this.socket.clients.forEach(function(n){n.send(e,{binary:!0})})}}]),r}(),nt={discardLateMessages:!1,plugin:new me},O=function(){function r(e){if(f(this,r),e&&!z(e))throw new Error("OSC options argument has to be an object.");this.options=u(u({},nt),e),this.eventHandler=new He({discardLateMessages:this.options.discardLateMessages});var n=this.eventHandler;this.options.plugin&&this.options.plugin.registerNotify&&this.options.plugin.registerNotify(function(){return n.notify.apply(n,arguments)})}return l(r,[{key:"on",value:function(e,n){if(!v(e)||!j(n))throw new Error("OSC on() needs event- or address string and callback function");return this.eventHandler.on(e,n)}},{key:"off",value:function(e,n){if(!v(e)||!b(n))throw new Error("OSC off() needs string and number (subscriptionId) to unsubscribe");return this.eventHandler.off(e,n)}},{key:"open",value:function(e){if(e&&!z(e))throw new Error("OSC open() options argument needs to be an object");if(!this.options.plugin||!j(this.options.plugin.open))throw new Error("OSC Plugin API #open is not implemented!");return this.options.plugin.open(e)}},{key:"status",value:function(){if(!this.options.plugin||!j(this.options.plugin.status))throw new Error("OSC Plugin API #status is not implemented!");return this.options.plugin.status()}},{key:"close",value:function(){if(!this.options.plugin||!j(this.options.plugin.close))throw new Error("OSC Plugin API #close is not implemented!");return this.options.plugin.close()}},{key:"send",value:function(e,n){if(!this.options.plugin||!j(this.options.plugin.send))throw new Error("OSC Plugin API #send is not implemented!");if(!(e instanceof Q||e instanceof E||e instanceof I||e instanceof M))throw new Error("OSC send() needs Messages, Bundles or Packets");if(n&&!z(n))throw new Error("OSC send() options argument has to be an object");return this.options.plugin.send(e.pack(),n)}}]),r}();return O.STATUS={IS_NOT_INITIALIZED:-1,IS_CONNECTING:0,IS_OPEN:1,IS_CLOSING:2,IS_CLOSED:3},O.Packet=M,O.Bundle=I,O.Message=E,O.TypedMessage=Q,O.DatagramPlugin=Ue,O.WebsocketClientPlugin=me,O.WebsocketServerPlugin=tt,O.BridgePlugin=ze,O})})(Ee);var $=Ee.exports;const Ce=new $;Ce.open();const ft=.1;let Y=-1;ct.prototype.osc=function(){return this._withHap(g=>{const d=(p,u,f,N,l,R)=>{Y<0&&(Y=Date.now()-f*1e3);const k=Object.assign({},{cps:N,cycle:l,delta:R},u.value),h=Object.entries(k).flat(),T=Math.floor(Y+(p+ft)*1e3),F=new $.Message("/dirt/play",...h),y=new $.Bundle([F],T);y.timestamp(T),Ce.send(y)};return g.setContext(Oe(Se({},g.context),{onTrigger:d}))})}; +var ot=Object.defineProperty,st=Object.defineProperties;var it=Object.getOwnPropertyDescriptors;var ke=Object.getOwnPropertySymbols;var at=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable;var be=(g,d,p)=>d in g?ot(g,d,{enumerable:!0,configurable:!0,writable:!0,value:p}):g[d]=p,Se=(g,d)=>{for(var p in d||(d={}))at.call(d,p)&&be(g,p,d[p]);if(ke)for(var p of ke(d))ut.call(d,p)&&be(g,p,d[p]);return g},Oe=(g,d)=>st(g,it(d));import{y as H,P as ct}from"./index.5a47cda7.js";var Ee={exports:{}};(function(g,d){(function(p,u){g.exports=u()})(H,function(){function p(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),n.push.apply(n,t)}return n}function u(r){for(var e=1;e1&&e[e.length-1]==="/"&&(e=e.slice(0,e.length-1)),e.length>1&&e[0]!=="/"&&(e="/".concat(e)),e;throw new Error("OSC prepareAddress() needs addresses of type array or string")}function ae(r){if(!v(r))throw new Error("OSC prepareRegExPattern() needs strings");return r.replace(/\./g,"\\.").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!/g,"[^").replace(/\?/g,".").replace(/\*/g,".*")}var ue=function(){function r(){f(this,r),this.data=[],this.byteLength=0}return l(r,[{key:"add",value:function(e){if(te(e)||ne(e)||oe(e))return this;var n=e.pack();return this.byteLength+=n.byteLength,this.data.push(n),this}},{key:"merge",value:function(){var e=new Uint8Array(this.byteLength),n=0;return this.data.forEach(function(t){e.set(t,n),n+=t.byteLength}),e}}]),r}(),C=function(){function r(e){f(this,r),this.value=e,this.offset=0}return l(r,[{key:"pack",value:function(e,n){if(!e||!n)throw new Error("OSC Atomic cant't be packed without given method or byteLength");var t=new Uint8Array(n),o=new DataView(t.buffer);if(A(this.value))throw new Error("OSC Atomic cant't be encoded with empty value");return o[e](this.offset,this.value,!1),t}},{key:"unpack",value:function(e,n,t){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(!(e&&n&&t))throw new Error("OSC Atomic cant't be unpacked without given dataView, method or byteLength");if(!(e instanceof DataView))throw new Error("OSC Atomic expects an instance of type DataView");return this.value=e[n](o,!1),this.offset=o+t,this.offset}}]),r}(),U=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!b(t))throw new Error("OSC AtomicInt32 constructor expects value of type number");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setInt32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getInt32",4,o)}}]),n}(C),ce="utf-8";function De(r){if(se("Buffer"))return Buffer.from(r).toString(ce);if(se("TextDecoder"))return new TextDecoder(ce).decode(new Int8Array(r));for(var e="",n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicString expects an instance of type DataView");for(var i,s=o,a=[];s0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(f(this,r),!b(e)||!b(n))throw new Error("OSC Timetag constructor expects values of type integer number");this.seconds=e,this.fractions=n}return l(r,[{key:"timestamp",value:function(e){var n;if(typeof e=="number"){n=e/1e3;var t=Math.floor(n);return this.seconds=t+fe,this.fractions=Math.round(le*(n-t)),e}return 1e3*((n=this.seconds-fe)+Math.round(this.fractions/le))}}]),r}(),B=function(r){k(n,r);var e=y(n);function n(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Date.now();f(this,n);var o=new G;return t instanceof G?o=t:b(t)?o.timestamp(t):Ae(t)&&o.timestamp(t.getTime()),e.call(this,o)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicTimetag can not be encoded with empty value");var t=this.value,o=t.seconds,i=t.fractions,s=new Uint8Array(8),a=new DataView(s.buffer);return a.setInt32(0,o,!1),a.setInt32(4,i,!1),s}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicTimetag expects an instance of type DataView");var i=t.getUint32(o,!1),s=t.getUint32(o+4,!1);return this.value=new G(i,s),this.offset=o+8,this.offset}}]),n}(C),he=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!re(t))throw new Error("OSC AtomicBlob constructor expects value of type Uint8Array");return e.call(this,t)}return l(n,[{key:"pack",value:function(){if(A(this.value))throw new Error("OSC AtomicBlob can not be encoded with empty value");var t=V(this.value.byteLength),o=new Uint8Array(t+4);return new DataView(o.buffer).setInt32(0,this.value.byteLength,!1),o.set(this.value,4),o}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicBlob expects an instance of type DataView");var i=t.getInt32(o,!1);return this.value=new Uint8Array(t.buffer,o+4,i),this.offset=V(o+4+i),this.offset}}]),n}(C),pe=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat32 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat32",4,o)}}]),n}(C),de=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat64 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setFloat64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getFloat64",8,o)}}]),n}(C),je=BigInt("9223372036854775807"),xe=BigInt("-9223372036854775808"),ge=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicInt64 constructor expects value of type BigInt");if(t&&(tje))throw new Error("OSC AtomicInt64 value is out of bounds");var o;return t&&(o=BigInt.asIntN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigInt64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigInt64",8,o)}}]),n}(C),Be=BigInt("18446744073709551615"),ve=function(r){k(n,r);var e=y(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicUInt64 constructor expects value of type BigInt");if(t&&(t<0||t>Be))throw new Error("OSC AtomicUInt64 value is out of bounds");var o;return t&&(o=BigInt.asUintN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return m(h(n.prototype),"pack",this).call(this,"setBigUint64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return m(h(n.prototype),"unpack",this).call(this,t,"getBigUint64",8,o)}}]),n}(C),Z=!0,q=!1,J=null,K=1/0,Q=function(){function r(e,n){var t=this;if(f(this,r),this.offset=0,this.address="",this.types="",this.args=[],!A(e)){if(!v(e)&&!D(e))throw new Error("OSC Message constructor first argument (address) must be a string or array");this.address=L(e)}if(!A(n)){if(!D(n))throw new Error("OSC Message constructor second argument (args) must be an array");n.forEach(function(o){return t.add(o.type,o.value)})}}return l(r,[{key:"add",value:function(e,n){if(A(e))throw new Error("OSC Message needs a valid OSC Atomic Data Type");e==="N"?this.args.push(J):e==="T"?this.args.push(Z):e==="F"?this.args.push(q):e==="I"?this.args.push(K):this.args.push(n),this.types+=e}},{key:"pack",value:function(){var e=this;if(this.address.length===0||this.address[0]!=="/")throw new Error("OSC Message has an invalid address");var n=new ue;if(n.add(new S(this.address)),n.add(new S(",".concat(this.types))),this.args.length>0){var t;if(this.args.length>this.types.length)throw new Error("OSC Message argument and type tag mismatch");this.args.forEach(function(o,i){var s=e.types[i];if(s==="i")t=new U(o);else if(s==="h")t=new ge(o);else if(s==="t")t=new ve(o);else if(s==="f")t=new pe(o);else if(s==="d")t=new de(o);else if(s==="s")t=new S(o);else if(s==="b")t=new he(o);else if(s==="T")t=Z;else if(s==="F")t=q;else if(s==="N")t=J;else{if(s!=="I")throw new Error("OSC Message found unknown argument type");t=K}n.add(t)})}return n.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Message expects an instance of type DataView.");var t=new S;t.unpack(e,n);var o=new S;if(o.unpack(e,t.offset),t.value.length===0||t.value[0]!=="/")throw new Error("OSC Message found malformed or missing address string");if(o.value.length===0&&o.value[0]!==",")throw new Error("OSC Message found malformed or missing type string");for(var i,s,a=o.offset,c=[],w=1;w0&&(o=a.shift()),a.length>0&&a[0]instanceof Array&&(i=a.shift()),t=e.call(this,o,i),a.length>0&&(t.types=a.map(function(w){return ie(w)}).join(""),t.args=a),t}return l(n,[{key:"add",value:function(t){m(h(n.prototype),"add",this).call(this,ie(t),t)}}]),n}(Q),_="#bundle",I=function(){function r(){var e=this;f(this,r),this.offset=0,this.timetag=new B,this.bundleElements=[];for(var n=arguments.length,t=new Array(n),o=0;o0&&(t[0]instanceof Date||b(t[0])?this.timetag=new B(t[0]):D(t[0])?(t[0].forEach(function(i){e.add(i)}),t.length>1&&(t[1]instanceof Date||b(t[1]))&&(this.timetag=new B(t[1]))):t.forEach(function(i){e.add(i)}))}return l(r,[{key:"timestamp",value:function(e){if(!b(e))throw new Error("OSC Bundle needs an integer for setting the timestamp");this.timetag=new B(e)}},{key:"add",value:function(e){if(!(e instanceof E||e instanceof r))throw new Error("OSC Bundle contains only Messages and Bundles");this.bundleElements.push(e)}},{key:"pack",value:function(){var e=new ue;return e.add(new S(_)),this.timetag||(this.timetag=new B),e.add(this.timetag),this.bundleElements.forEach(function(n){e.add(new U(n.pack().byteLength)),e.add(n)}),e.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Bundle expects an instance of type DataView");var t=new S;if(t.unpack(e,n),t.value!==_)throw new Error("OSC Bundle does not contain a valid #bundle head");var o=new B,i=o.unpack(e,t.offset);for(this.bundleElements=[];i1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Packet expects an instance of type DataView");if(e.byteLength%4!=0)throw new Error("OSC Packet byteLength has to be a multiple of four");var t,o=new S;return o.unpack(e,n),(t=o.value===_?new I:new E).unpack(e,n),this.offset=t.offset,this.value=t,this.offset}}]),r}(),Me={discardLateMessages:!1},He=function(){function r(e){f(this,r),this.options=u(u({},Me),e),this.addressHandlers=[],this.eventHandlers={open:[],error:[],close:[]},this.uuid=0}return l(r,[{key:"dispatch",value:function(e,n){var t=this;if(!(e instanceof M))throw new Error("OSC EventHander dispatch() accepts only arguments of type Packet");if(!e.value)throw new Error("OSC EventHander dispatch() can't read empty Packets");if(e.value instanceof I){var o=e.value;return o.bundleElements.forEach(function(s){if(s instanceof I){if(o.timetag.value.timestamp()1&&(s=n[1]);var a=null;if(n.length>2)if(b(n[2]))a=n[2];else{if(!(n[2]instanceof Date))throw new Error("OSC EventHandler timestamp has to be a number or Date");a=n[2].getTime()}var c=null;if(n.length>=3&&(c=n[3]),a){var w=Date.now();if(w>a&&!this.options.discardLateMessages)return this.call(i,s,c);var P=this;return setTimeout(function(){P.call(i,s,c)},a-w),!0}return this.call(i,s,c)}},{key:"on",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!j(n))throw new Error("OSC EventHandler callback has to be a function");this.uuid+=1;var t={id:this.uuid,callback:n};if(v(e)&&e in this.eventHandlers)return this.eventHandlers[e].push(t),this.uuid;var o=L(e);return o in this.addressHandlers||(this.addressHandlers[o]=[]),this.addressHandlers[o].push(t),this.uuid}},{key:"off",value:function(e,n){if(!v(e)&&!D(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!b(n))throw new Error("OSC EventHandler subscription id has to be a number");var t,o;return v(e)&&e in this.eventHandlers?(t=e,o=this.eventHandlers):(t=L(e),o=this.addressHandlers),t in o&&o[t].some(function(i,s){return i.id===n&&(o[t].splice(s,1),!0)})}}]),r}(),Te=0,Le=1,Ne=2,Ve=3,Ue=function(){function r(){throw f(this,r),new Error("DatagramPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options.open),n),o=t.port,i=t.exclusive;this.socketStatus=Te,this.socket.bind({address:t.host,port:o,exclusive:i},function(){e.socketStatus=Le,e.notify("open")})}},{key:"close",value:function(){var e=this;this.socketStatus=Ne,this.socket.close(function(){e.socketStatus=Ve,e.notify("close")})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=u(u({},this.options.send),n),o=t.port,i=t.host;this.socket.send(Buffer.from(e),0,e.byteLength,o,i)}}]),r}();typeof WebSocket!="undefined"?x=WebSocket:typeof MozWebSocket!="undefined"?x=MozWebSocket:typeof H!="undefined"?x=H.WebSocket||H.MozWebSocket:typeof window!="undefined"?x=window.WebSocket||window.MozWebSocket:typeof self!="undefined"&&(x=self.WebSocket||self.MozWebSocket);var X=void 0,we=x,_e=0,We=1,Re=2,Fe=3,W={udpServer:{host:"localhost",port:41234,exclusive:!1},udpClient:{host:"localhost",port:41235},wsServer:{host:"localhost",port:8080},receiver:"ws"};function ye(r,e){return u(u(u(u({},W),r),e),{},{udpServer:u(u(u({},W.udpServer),r.udpServer),e.udpServer),udpClient:u(u(u({},W.udpClient),r.udpClient),e.udpClient),wsServer:u(u(u({},W.wsServer),r.wsServer),e.wsServer)})}var ze=function(){function r(){throw f(this,r),new Error("BridgePlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ye(this.options,n);this.socketStatus=_e,this.socket.bind({address:t.udpServer.host,port:t.udpServer.port,exclusive:t.udpServer.exclusive},function(){var o={};t.wsServer.server?o.server=t.wsServer.server:o=t.wsServer,e.websocket=new X(o),e.websocket.binaryType="arraybuffer",e.websocket.on("listening",function(){e.socketStatus=We,e.notify("open")}),e.websocket.on("error",function(i){e.notify("error",i)}),e.websocket.on("connection",function(i){i.on("message",function(s,a){e.send(s,{receiver:"udp"}),e.notify(new Uint8Array(s),a)})})})}},{key:"close",value:function(){var e=this;this.socketStatus=Re,this.socket.close(function(){e.websocket.close(function(){e.socketStatus=Fe,e.notify("close")})})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=ye(this.options,n),o=t.receiver;if(o==="udp"){var i=e instanceof Buffer?e:Buffer.from(e);this.socket.send(i,0,i.byteLength,t.udpClient.port,t.udpClient.host)}else{if(o!=="ws")throw new Error("BridgePlugin can not send message to unknown receiver");this.websocket.clients.forEach(function(s){s.send(e,{binary:!0})})}}}]),r}(),Ge=-1,Ze=0,qe=1,Je=2,Ke=3,Qe={host:"localhost",port:8080,secure:!1,protocol:[]},me=function(){function r(e){if(f(this,r),!we)throw new Error("WebsocketClientPlugin can't find a WebSocket class");this.options=u(u({},Qe),e),this.socket=null,this.socketStatus=Ge,this.notify=function(){}}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s=t.secure,a=t.protocol;this.socket&&this.close();var c=s?"wss":"ws",w={address:i,family:c,port:o,size:0};this.socket=new we("".concat(c,"://").concat(i,":").concat(o),a),this.socket.binaryType="arraybuffer",this.socketStatus=Ze,this.socket.onopen=function(){e.socketStatus=qe,e.notify("open")},this.socket.onclose=function(){e.socketStatus=Ke,e.notify("close")},this.socket.onerror=function(P){e.notify("error",P)},this.socket.onmessage=function(P){e.notify(P.data,w)}}},{key:"close",value:function(){this.socketStatus=Je,this.socket.close()}},{key:"send",value:function(e){this.socket.send(e)}}]),r}(),Xe=0,Ye=1,$e=2,et=3,tt=function(){function r(e){throw f(this,r),new Error("WebsocketServerPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s={address:i,family:"wsserver",port:o,size:0};this.socket&&this.close(),t.server?this.socket=new X({server:t.server}):this.socket=new X({host:i,port:o}),this.socket.binaryType="arraybuffer",this.socketStatus=Xe,this.socket.on("listening",function(){e.socketStatus=Ye,e.notify("open")}),this.socket.on("error",function(a){e.notify("error",a)}),this.socket.on("connection",function(a){a.on("message",function(c){e.notify(new Uint8Array(c),s)})})}},{key:"close",value:function(){var e=this;this.socketStatus=$e,this.socket.close(function(){e.socketStatus=et,e.notify("close")})}},{key:"send",value:function(e){this.socket.clients.forEach(function(n){n.send(e,{binary:!0})})}}]),r}(),nt={discardLateMessages:!1,plugin:new me},O=function(){function r(e){if(f(this,r),e&&!z(e))throw new Error("OSC options argument has to be an object.");this.options=u(u({},nt),e),this.eventHandler=new He({discardLateMessages:this.options.discardLateMessages});var n=this.eventHandler;this.options.plugin&&this.options.plugin.registerNotify&&this.options.plugin.registerNotify(function(){return n.notify.apply(n,arguments)})}return l(r,[{key:"on",value:function(e,n){if(!v(e)||!j(n))throw new Error("OSC on() needs event- or address string and callback function");return this.eventHandler.on(e,n)}},{key:"off",value:function(e,n){if(!v(e)||!b(n))throw new Error("OSC off() needs string and number (subscriptionId) to unsubscribe");return this.eventHandler.off(e,n)}},{key:"open",value:function(e){if(e&&!z(e))throw new Error("OSC open() options argument needs to be an object");if(!this.options.plugin||!j(this.options.plugin.open))throw new Error("OSC Plugin API #open is not implemented!");return this.options.plugin.open(e)}},{key:"status",value:function(){if(!this.options.plugin||!j(this.options.plugin.status))throw new Error("OSC Plugin API #status is not implemented!");return this.options.plugin.status()}},{key:"close",value:function(){if(!this.options.plugin||!j(this.options.plugin.close))throw new Error("OSC Plugin API #close is not implemented!");return this.options.plugin.close()}},{key:"send",value:function(e,n){if(!this.options.plugin||!j(this.options.plugin.send))throw new Error("OSC Plugin API #send is not implemented!");if(!(e instanceof Q||e instanceof E||e instanceof I||e instanceof M))throw new Error("OSC send() needs Messages, Bundles or Packets");if(n&&!z(n))throw new Error("OSC send() options argument has to be an object");return this.options.plugin.send(e.pack(),n)}}]),r}();return O.STATUS={IS_NOT_INITIALIZED:-1,IS_CONNECTING:0,IS_OPEN:1,IS_CLOSING:2,IS_CLOSED:3},O.Packet=M,O.Bundle=I,O.Message=E,O.TypedMessage=Q,O.DatagramPlugin=Ue,O.WebsocketClientPlugin=me,O.WebsocketServerPlugin=tt,O.BridgePlugin=ze,O})})(Ee);var $=Ee.exports;const Ce=new $;Ce.open();const ft=.1;let Y=-1;ct.prototype.osc=function(){return this._withHap(g=>{const d=(p,u,f,N)=>{const l=u.wholeOrPart().begin.valueOf(),R=u.duration.valueOf();Y<0&&(Y=Date.now()-f*1e3);const k=Object.assign({},{cps:N,cycle:l,delta:R},u.value),h=Object.entries(k).flat(),T=Math.floor(Y+(p+ft)*1e3),F=new $.Message("/dirt/play",...h),y=new $.Bundle([F],T);y.timestamp(T),Ce.send(y)};return g.setContext(Oe(Se({},g.context),{onTrigger:d}))})}; diff --git a/tutorial/index.html b/tutorial/index.html index dd66903d7..91f4147a0 100644 --- a/tutorial/index.html +++ b/tutorial/index.html @@ -9,8 +9,8 @@ Strudel Tutorial - - + +